Skip to content

Commit 33460d5

Browse files
committed
refactor: upgrade @socketsecurity/lib to v3.0.3 and migrate logger/spinner API
Upgrade @socketsecurity/lib from v2.10.4 to v3.0.3, adopting the new factory-based API for logger and spinner instances. This migration addresses breaking changes in v3.x where named exports were replaced with factory functions. Key changes: - Replace `import { logger }` with `import { getDefaultLogger }` across 223+ files - Replace `import { spinner }` with `import { getDefaultSpinner }` across codebase - Hoist logger/spinner instances to highest relevant scope for efficiency - Update ESLint config to relax n/no-extraneous-import rule for config/script files - Update pnpm-lock.yaml to reflect v3.0.3 dependency resolution
1 parent 2359d33 commit 33460d5

File tree

311 files changed

+4835
-4375
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

311 files changed

+4835
-4375
lines changed

packages/bootstrap/src/bootstrap-npm.mts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
// Load Intl polyfill FIRST for ICU-disabled builds.
99
import '@socketsecurity/cli/src/polyfills/intl-stub/index.mts'
1010

11-
import { logger } from '@socketsecurity/lib/logger'
11+
import { getDefaultLogger } from '@socketsecurity/lib/logger'
1212

1313
import { findAndExecuteCli, getArgs } from './shared/bootstrap-shared.mjs'
1414

@@ -24,6 +24,6 @@ main()
2424
process.exit(exitCode)
2525
})
2626
.catch((e) => {
27-
logger.error(`Bootstrap error: ${e instanceof Error ? e.message : String(e)}`)
27+
getDefaultLogger().error(`Bootstrap error: ${e instanceof Error ? e.message : String(e)}`)
2828
process.exit(1)
2929
})

packages/bootstrap/src/shared/bootstrap-shared.mjs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { which } from '@socketsecurity/lib/bin'
1111
import { SOCKET_IPC_HANDSHAKE } from '@socketsecurity/lib/constants/socket'
1212
import { downloadPackage } from '@socketsecurity/lib/dlx-package'
1313
import { envAsBoolean } from '@socketsecurity/lib/env'
14-
import { logger } from '@socketsecurity/lib/logger'
14+
import { getDefaultLogger } from '@socketsecurity/lib/logger'
1515
import { Spinner, withSpinner } from '@socketsecurity/lib/spinner'
1616
import { spawn } from '@socketsecurity/lib/spawn'
1717
import { gte } from 'semver'
@@ -161,9 +161,9 @@ export async function downloadCli() {
161161
try {
162162
mkdirSync(SOCKET_DLX_DIR, { recursive: true })
163163
} catch (e) {
164-
logger.error('Failed to create Socket directory')
165-
logger.error(` Error: ${e instanceof Error ? e.message : String(e)}`)
166-
logger.error(` Path: ${SOCKET_DLX_DIR}`)
164+
getDefaultLogger().error('Failed to create Socket directory')
165+
getDefaultLogger().error(` Error: ${e instanceof Error ? e.message : String(e)}`)
166+
getDefaultLogger().error(` Path: ${SOCKET_DLX_DIR}`)
167167
process.exit(1)
168168
}
169169

@@ -181,18 +181,18 @@ export async function downloadCli() {
181181
}),
182182
})
183183

184-
logger.log('')
184+
getDefaultLogger().log('')
185185

186186
return result
187187
} catch (e) {
188-
logger.error('Failed to download Socket CLI')
189-
logger.error(` Error: ${e instanceof Error ? e.message : String(e)}`)
190-
logger.error('')
191-
logger.error('This may be a temporary issue. Please try:')
192-
logger.error(' 1. Check your internet connection')
193-
logger.error(' 2. Try running the command again')
194-
logger.error(` 3. Manually create directory: mkdir -p "${SOCKET_DLX_DIR}"`)
195-
logger.error(` 4. Report issue at: ${SOCKET_CLI_ISSUES_URL}`)
188+
getDefaultLogger().error('Failed to download Socket CLI')
189+
getDefaultLogger().error(` Error: ${e instanceof Error ? e.message : String(e)}`)
190+
getDefaultLogger().error('')
191+
getDefaultLogger().error('This may be a temporary issue. Please try:')
192+
getDefaultLogger().error(' 1. Check your internet connection')
193+
getDefaultLogger().error(' 2. Try running the command again')
194+
getDefaultLogger().error(` 3. Manually create directory: mkdir -p "${SOCKET_DLX_DIR}"`)
195+
getDefaultLogger().error(` 4. Report issue at: ${SOCKET_CLI_ISSUES_URL}`)
196196
process.exit(1)
197197
}
198198
}
@@ -215,8 +215,8 @@ export async function findAndExecuteCli(args) {
215215
}
216216

217217
// If we can't find the CLI, exit with error.
218-
logger.error('Socket CLI installation failed')
219-
logger.error(' CLI entry point not found after installation')
220-
logger.error(` Looked in: ${cliEntry}`)
218+
getDefaultLogger().error('Socket CLI installation failed')
219+
getDefaultLogger().error(' CLI entry point not found after installation')
220+
getDefaultLogger().error(` Looked in: ${cliEntry}`)
221221
return 1
222222
}

packages/build-infra/lib/build-output.mjs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,45 +4,45 @@
44
* Provides consistent, pretty logging for build processes.
55
*/
66

7-
import { logger } from '@socketsecurity/lib/logger'
7+
import { getDefaultLogger } from '@socketsecurity/lib/logger'
88

99
/**
1010
* Print header.
1111
*/
1212
export function printHeader(message) {
13-
logger.step(message)
13+
getDefaultLogger().step(message)
1414
}
1515

1616
/**
1717
* Print step.
1818
*/
1919
export function printStep(message) {
20-
logger.substep(message)
20+
getDefaultLogger().substep(message)
2121
}
2222

2323
/**
2424
* Print substep.
2525
*/
2626
export function printSubstep(message) {
27-
logger.info(` ${message}`)
27+
getDefaultLogger().info(` ${message}`)
2828
}
2929

3030
/**
3131
* Print success message.
3232
*/
3333
export function printSuccess(message) {
34-
logger.success(message)
34+
getDefaultLogger().success(message)
3535
}
3636

3737
/**
3838
* Print error message.
3939
*/
4040
export function printError(message, error = null) {
41-
logger.error(message)
41+
getDefaultLogger().error(message)
4242
if (error) {
43-
logger.error(error.message)
43+
getDefaultLogger().error(error.message)
4444
if (error.stack) {
45-
logger.error(error.stack)
45+
getDefaultLogger().error(error.stack)
4646
}
4747
}
4848
}
@@ -51,5 +51,5 @@ export function printError(message, error = null) {
5151
* Print warning message.
5252
*/
5353
export function printWarning(message) {
54-
logger.warn(message)
54+
getDefaultLogger().warn(message)
5555
}

packages/build-infra/lib/extraction-cache.mjs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { createHash } from 'node:crypto'
1111
import { existsSync, mkdirSync, readFileSync } from 'node:fs'
1212
import path from 'node:path'
1313

14-
import { logger } from '@socketsecurity/lib/logger'
14+
import { getDefaultLogger } from '@socketsecurity/lib/logger'
1515

1616
/**
1717
* Check if extraction is needed based on source content hash.
@@ -72,7 +72,7 @@ export async function shouldExtract({
7272
}
7373

7474
// Cache hit!
75-
logger.log(`✓ Using cached ${outputPath}`)
75+
getDefaultLogger().log(`✓ Using cached ${outputPath}`)
7676
return false
7777
} catch {
7878
// Any error, regenerate.

packages/build-infra/lib/fetch-with-retry.mjs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* Automatically retries on network errors and 5xx server errors.
44
*/
55

6-
import { logger } from '@socketsecurity/lib/logger'
6+
import { getDefaultLogger } from '@socketsecurity/lib/logger'
77

88
/**
99
* Fetch with automatic retry on transient failures.
@@ -35,7 +35,7 @@ export async function fetchWithRetry(url, options = {}, retryOptions = {}) {
3535
// Success!
3636
if (response.ok) {
3737
if (attempt > 1 && !silent) {
38-
logger.log(`✓ Request succeeded on attempt ${attempt}`)
38+
getDefaultLogger().log(`✓ Request succeeded on attempt ${attempt}`)
3939
}
4040
return response
4141
}
@@ -62,10 +62,10 @@ export async function fetchWithRetry(url, options = {}, retryOptions = {}) {
6262
if (attempt < retries) {
6363
const delay = Math.min(initialDelay * 2 ** (attempt - 1), maxDelay)
6464
if (!silent) {
65-
logger.warn(
65+
getDefaultLogger().warn(
6666
`✗ Attempt ${attempt}/${retries} failed: ${response.status} ${response.statusText}`,
6767
)
68-
logger.log(` Retrying in ${delay}ms...`)
68+
getDefaultLogger().log(` Retrying in ${delay}ms...`)
6969
}
7070
await sleep(delay)
7171
}
@@ -78,8 +78,8 @@ export async function fetchWithRetry(url, options = {}, retryOptions = {}) {
7878
if (attempt < retries) {
7979
const delay = Math.min(initialDelay * 2 ** (attempt - 1), maxDelay)
8080
if (!silent) {
81-
logger.warn(`✗ Attempt ${attempt}/${retries} failed: ${error.message}`)
82-
logger.log(` Retrying in ${delay}ms...`)
81+
getDefaultLogger().warn(`✗ Attempt ${attempt}/${retries} failed: ${error.message}`)
82+
getDefaultLogger().log(` Retrying in ${delay}ms...`)
8383
}
8484
await sleep(delay)
8585
continue

packages/build-infra/lib/preflight-checks.mjs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* Provides a DRY way to run common pre-build validation checks.
44
*/
55

6-
import { logger } from '@socketsecurity/lib/logger'
6+
import { getDefaultLogger } from '@socketsecurity/lib/logger'
77

88
import { printError, printSuccess } from './build-output.mjs'
99
import {
@@ -41,8 +41,8 @@ export async function runPreflightChecks(options = {}) {
4141
const failures = []
4242

4343
if (!quiet) {
44-
logger.step('Running preflight checks')
45-
logger.log('')
44+
getDefaultLogger().step('Running preflight checks')
45+
getDefaultLogger().log('')
4646
}
4747

4848
// Check disk space.
@@ -95,10 +95,10 @@ export async function runPreflightChecks(options = {}) {
9595
if (!quiet) {
9696
if (!failures.length) {
9797
printSuccess('All preflight checks passed')
98-
logger.log('')
98+
getDefaultLogger().log('')
9999
} else {
100100
printError(`${failures.length} preflight check(s) failed`)
101-
logger.log('')
101+
getDefaultLogger().log('')
102102
}
103103
}
104104

@@ -119,9 +119,9 @@ export async function runPreflightChecksOrExit(options = {}) {
119119

120120
if (!result.passed) {
121121
if (!options.quiet) {
122-
logger.error('Preflight checks failed')
122+
getDefaultLogger().error('Preflight checks failed')
123123
for (const failure of result.failures) {
124-
logger.error(` - ${failure}`)
124+
getDefaultLogger().error(` - ${failure}`)
125125
}
126126
}
127127
process.exit(1)

packages/build-infra/lib/script-runner.mjs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*/
55

66
import { WIN32 } from '@socketsecurity/lib/constants/platform'
7-
import { logger } from '@socketsecurity/lib/logger'
7+
import { getDefaultLogger } from '@socketsecurity/lib/logger'
88
import { spawn } from '@socketsecurity/lib/spawn'
99

1010
/**
@@ -54,7 +54,7 @@ export async function runPnpmScriptAll(scriptName, args = [], options = {}) {
5454
export async function runSequence(commands, globalOptions = {}) {
5555
for (const { args = [], command, description, options = {} } of commands) {
5656
if (description) {
57-
logger.step(description)
57+
getDefaultLogger().step(description)
5858
}
5959

6060
const result = await spawn(command, args, {
@@ -117,7 +117,7 @@ export const pnpm = {
117117
* Run pnpm install with frozen lockfile.
118118
*/
119119
install: async (options = {}) => {
120-
logger.step('Installing dependencies')
120+
getDefaultLogger().step('Installing dependencies')
121121
return spawn('pnpm', ['install', '--frozen-lockfile'], {
122122
shell: WIN32,
123123
stdio: 'inherit',
@@ -129,7 +129,7 @@ export const pnpm = {
129129
* Build all packages or specific package.
130130
*/
131131
build: async (packageName = null, options = {}) => {
132-
logger.step(packageName ? `Building ${packageName}` : 'Building packages')
132+
getDefaultLogger().step(packageName ? `Building ${packageName}` : 'Building packages')
133133
const args = packageName
134134
? ['--filter', packageName, 'run', 'build']
135135
: ['run', '-r', 'build']
@@ -145,7 +145,7 @@ export const pnpm = {
145145
* Run tests in specific package or all packages.
146146
*/
147147
test: async (packageName = null, options = {}) => {
148-
logger.step(packageName ? `Testing ${packageName}` : 'Running tests')
148+
getDefaultLogger().step(packageName ? `Testing ${packageName}` : 'Running tests')
149149
const args = packageName
150150
? ['--filter', packageName, 'run', 'test']
151151
: ['run', '-r', 'test']

packages/cli-with-sentry/scripts/build.mjs

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import path from 'node:path'
99
import { fileURLToPath } from 'node:url'
1010

1111
import { WIN32 } from '@socketsecurity/lib/constants/platform'
12-
import { logger } from '@socketsecurity/lib/logger'
12+
import { getDefaultLogger } from '@socketsecurity/lib/logger'
1313
import { spawn } from '@socketsecurity/lib/spawn'
1414

1515
const __dirname = path.dirname(fileURLToPath(import.meta.url))
@@ -21,7 +21,7 @@ async function main() {
2121
const cliPath = path.join(rootPath, '..', 'cli')
2222

2323
// Build CLI bundle.
24-
logger.info('Building CLI bundle...')
24+
getDefaultLogger().info('Building CLI bundle...')
2525
let result = await spawn('node', ['.config/esbuild.config.mjs'], {
2626
shell: WIN32,
2727
stdio: 'inherit',
@@ -34,10 +34,10 @@ async function main() {
3434
if (result.code !== 0) {
3535
throw new Error(`CLI bundle build failed with exit code ${result.code}`)
3636
}
37-
logger.success('Built CLI bundle')
37+
getDefaultLogger().success('Built CLI bundle')
3838

3939
// Build index loader.
40-
logger.info('Building index loader...')
40+
getDefaultLogger().info('Building index loader...')
4141
result = await spawn('node', ['.config/esbuild.index.config.mjs'], {
4242
shell: WIN32,
4343
stdio: 'inherit',
@@ -46,10 +46,10 @@ async function main() {
4646
if (result.code !== 0) {
4747
throw new Error(`Index loader build failed with exit code ${result.code}`)
4848
}
49-
logger.success('Built index loader')
49+
getDefaultLogger().success('Built index loader')
5050

5151
// Build shadow npm inject.
52-
logger.info('Building shadow npm inject...')
52+
getDefaultLogger().info('Building shadow npm inject...')
5353
result = await spawn('node', ['.config/esbuild.inject.config.mjs'], {
5454
shell: WIN32,
5555
stdio: 'inherit',
@@ -58,10 +58,10 @@ async function main() {
5858
if (result.code !== 0) {
5959
throw new Error(`Shadow npm inject build failed with exit code ${result.code}`)
6060
}
61-
logger.success('Built shadow npm inject')
61+
getDefaultLogger().success('Built shadow npm inject')
6262

6363
// Compress CLI.
64-
logger.info('Compressing CLI...')
64+
getDefaultLogger().info('Compressing CLI...')
6565
result = await spawn('node', ['scripts/compress-cli.mjs'], {
6666
shell: WIN32,
6767
stdio: 'inherit',
@@ -70,17 +70,17 @@ async function main() {
7070
if (result.code !== 0) {
7171
throw new Error(`CLI compression failed with exit code ${result.code}`)
7272
}
73-
logger.success('Compressed CLI')
73+
getDefaultLogger().success('Compressed CLI')
7474

7575
// Copy data directory from packages/cli.
76-
logger.info('Copying data/ from packages/cli...')
76+
getDefaultLogger().info('Copying data/ from packages/cli...')
7777
await fs.cp(path.join(cliPath, 'data'), path.join(rootPath, 'data'), {
7878
recursive: true,
7979
})
80-
logger.success('Copied data/')
80+
getDefaultLogger().success('Copied data/')
8181

8282
// Copy files from repo root.
83-
logger.info('Copying files from repo root...')
83+
getDefaultLogger().info('Copying files from repo root...')
8484
const filesToCopy = [
8585
'CHANGELOG.md',
8686
'LICENSE',
@@ -90,9 +90,9 @@ async function main() {
9090
for (const file of filesToCopy) {
9191
await fs.cp(path.join(repoRoot, file), path.join(rootPath, file))
9292
}
93-
logger.success('Copied files from repo root')
93+
getDefaultLogger().success('Copied files from repo root')
9494
} catch (error) {
95-
logger.error(`Build failed: ${error.message}`)
95+
getDefaultLogger().error(`Build failed: ${error.message}`)
9696
process.exitCode = 1
9797
}
9898
}

0 commit comments

Comments
 (0)