@socketsecurity/lib 3.2.3 → 3.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +30 -0
- package/README.md +31 -35
- package/dist/abort.js +1 -1
- package/dist/agent.js +11 -11
- package/dist/ansi.js +1 -1
- package/dist/argv/flags.js +1 -1
- package/dist/argv/parse.js +1 -1
- package/dist/arrays.js +1 -1
- package/dist/bin.js +5 -5
- package/dist/cacache.js +1 -1
- package/dist/cache-with-ttl.js +1 -1
- package/dist/constants/agents.js +1 -1
- package/dist/constants/core.js +1 -1
- package/dist/constants/encoding.js +1 -1
- package/dist/constants/github.js +1 -1
- package/dist/constants/licenses.js +1 -1
- package/dist/constants/node.js +2 -13
- package/dist/constants/packages.js +10 -25
- package/dist/constants/paths.js +1 -1
- package/dist/constants/platform.js +1 -1
- package/dist/constants/process.js +3 -7
- package/dist/constants/socket.js +1 -1
- package/dist/constants/testing.js +1 -1
- package/dist/constants/time.js +1 -1
- package/dist/constants/typescript.js +1 -1
- package/dist/cover/code.js +1 -1
- package/dist/cover/formatters.js +1 -1
- package/dist/cover/type.js +1 -1
- package/dist/cover/types.js +1 -1
- package/dist/debug.js +4 -4
- package/dist/dlx-binary.js +5 -5
- package/dist/dlx-manifest.js +1 -1
- package/dist/dlx-package.js +1 -1
- package/dist/dlx.js +1 -1
- package/dist/effects/pulse-frames.js +4 -4
- package/dist/effects/text-shimmer.js +2 -2
- package/dist/effects/types.js +1 -1
- package/dist/effects/ultra.js +1 -1
- package/dist/env/ci.js +3 -3
- package/dist/env/debug.js +2 -2
- package/dist/env/github.js +2 -2
- package/dist/env/helpers.js +1 -1
- package/dist/env/home.js +2 -2
- package/dist/env/locale.js +2 -2
- package/dist/env/node-auth-token.js +2 -2
- package/dist/env/node-env.js +2 -2
- package/dist/env/npm.js +2 -2
- package/dist/env/package-manager.js +2 -2
- package/dist/env/path.js +2 -2
- package/dist/env/pre-commit.js +3 -3
- package/dist/env/rewire.js +1 -1
- package/dist/env/shell.js +2 -2
- package/dist/env/socket-cli-shadow.js +3 -3
- package/dist/env/socket-cli.js +3 -3
- package/dist/env/socket.js +3 -3
- package/dist/env/temp-dir.js +2 -2
- package/dist/env/term.js +2 -2
- package/dist/env/test.js +4 -4
- package/dist/env/windows.js +2 -2
- package/dist/env/xdg.js +2 -2
- package/dist/env.js +1 -1
- package/dist/external/@inquirer/confirm.js +16 -15
- package/dist/external/@inquirer/input.js +16 -15
- package/dist/external/@inquirer/password.js +17 -16
- package/dist/external/@inquirer/search.js +18 -17
- package/dist/external/@inquirer/select.js +19 -18
- package/dist/external/@npmcli/package-json/lib/read-package.js +7 -1
- package/dist/external/@npmcli/package-json/lib/sort.js +6 -1
- package/dist/external/@npmcli/package-json.js +18 -0
- package/dist/external/@npmcli/promise-spawn.js +2 -1
- package/dist/external/@socketregistry/is-unicode-supported.js +2 -1
- package/dist/external/@socketregistry/packageurl-js.js +3 -2
- package/dist/external/@socketregistry/yocto-spinner.js +5 -4
- package/dist/external/@yarnpkg/extensions.js +2 -1
- package/dist/external/cacache.js +10 -9
- package/dist/external/debug.js +2 -5
- package/dist/external/del.js +3 -2
- package/dist/external/fast-glob.js +3 -2
- package/dist/external/fast-sort.js +2 -1
- package/dist/external/get-east-asian-width.js +2 -1
- package/dist/external/libnpmexec.js +6 -0
- package/dist/external/libnpmpack.js +64 -63
- package/dist/external/make-fetch-happen.js +16 -15
- package/dist/external/normalize-package-data.js +3 -2
- package/dist/external/npm-package-arg.js +3 -2
- package/dist/external/pacote.js +36 -35
- package/dist/external/picomatch.js +2 -1
- package/dist/external/semver.js +2 -1
- package/dist/external/spdx-correct.js +2 -1
- package/dist/external/spdx-expression-parse.js +2 -1
- package/dist/external/streaming-iterables.js +2 -1
- package/dist/external/validate-npm-package-name.js +2 -1
- package/dist/external/which.js +2 -1
- package/dist/external/yargs-parser.js +2 -1
- package/dist/external/yoctocolors-cjs.js +2 -1
- package/dist/external/zod.js +10 -9
- package/dist/fs.js +3 -3
- package/dist/functions.js +1 -1
- package/dist/git.js +2 -2
- package/dist/github.js +3 -3
- package/dist/globs.js +3 -3
- package/dist/http-request.js +1 -1
- package/dist/ipc.js +1 -1
- package/dist/json.js +1 -1
- package/dist/lifecycle-script-names.d.ts +2 -0
- package/dist/lifecycle-script-names.js +40 -0
- package/dist/links/index.js +1 -1
- package/dist/logger.d.ts +29 -4
- package/dist/logger.js +34 -5
- package/dist/maintained-node-versions.js +1 -1
- package/dist/memoization.js +1 -1
- package/dist/objects.js +2 -2
- package/dist/package-default-node-range.d.ts +2 -0
- package/dist/package-default-node-range.js +27 -0
- package/dist/package-default-socket-categories.d.ts +2 -0
- package/dist/package-default-socket-categories.js +25 -0
- package/dist/package-extensions.d.ts +2 -0
- package/dist/package-extensions.js +66 -0
- package/dist/packages/editable.js +1 -1
- package/dist/packages/exports.js +2 -2
- package/dist/packages/isolation.js +3 -3
- package/dist/packages/licenses.js +3 -3
- package/dist/packages/manifest.js +4 -4
- package/dist/packages/normalize.js +2 -2
- package/dist/packages/operations.js +6 -6
- package/dist/packages/paths.js +1 -1
- package/dist/packages/provenance.js +2 -2
- package/dist/packages/specs.js +1 -1
- package/dist/packages/validation.js +1 -1
- package/dist/packages.js +1 -1
- package/dist/path.js +2 -2
- package/dist/paths/rewire.js +1 -1
- package/dist/paths.js +15 -15
- package/dist/performance.js +1 -1
- package/dist/process-lock.js +1 -1
- package/dist/promise-queue.js +1 -1
- package/dist/promises.js +3 -3
- package/dist/regexps.js +1 -1
- package/dist/sea.js +1 -1
- package/dist/shadow.js +1 -1
- package/dist/signal-exit.js +1 -1
- package/dist/sorts.js +1 -1
- package/dist/spawn.js +2 -2
- package/dist/spinner.js +3 -3
- package/dist/ssri.js +1 -1
- package/dist/stdio/clear.js +1 -1
- package/dist/stdio/divider.js +1 -1
- package/dist/stdio/footer.js +1 -1
- package/dist/stdio/header.js +1 -1
- package/dist/stdio/mask.js +1 -1
- package/dist/stdio/progress.js +1 -1
- package/dist/stdio/prompts.js +2 -2
- package/dist/stdio/stderr.js +1 -1
- package/dist/stdio/stdout.js +1 -1
- package/dist/streams.js +1 -1
- package/dist/strings.js +1 -1
- package/dist/suppress-warnings.js +1 -1
- package/dist/tables.js +1 -1
- package/dist/temporary-executor.js +2 -2
- package/dist/themes/context.js +1 -1
- package/dist/themes/index.js +1 -1
- package/dist/themes/themes.js +1 -1
- package/dist/themes/types.js +1 -1
- package/dist/themes/utils.js +1 -1
- package/dist/types.js +1 -1
- package/dist/url.js +1 -1
- package/dist/utils/get-ipc.js +1 -1
- package/dist/validation/json-parser.js +1 -1
- package/dist/validation/types.js +1 -1
- package/dist/versions.js +1 -1
- package/dist/words.js +1 -1
- package/dist/zod.js +1 -1
- package/package.json +18 -2
- package/dist/abort.js.map +0 -7
- package/dist/agent.js.map +0 -7
- package/dist/ansi.js.map +0 -7
- package/dist/argv/flags.js.map +0 -7
- package/dist/argv/parse.js.map +0 -7
- package/dist/arrays.js.map +0 -7
- package/dist/bin.js.map +0 -7
- package/dist/cacache.js.map +0 -7
- package/dist/cache-with-ttl.js.map +0 -7
- package/dist/constants/agents.js.map +0 -7
- package/dist/constants/core.js.map +0 -7
- package/dist/constants/encoding.js.map +0 -7
- package/dist/constants/github.js.map +0 -7
- package/dist/constants/licenses.js.map +0 -7
- package/dist/constants/node.js.map +0 -7
- package/dist/constants/packages.js.map +0 -7
- package/dist/constants/paths.js.map +0 -7
- package/dist/constants/platform.js.map +0 -7
- package/dist/constants/process.js.map +0 -7
- package/dist/constants/socket.js.map +0 -7
- package/dist/constants/testing.js.map +0 -7
- package/dist/constants/time.js.map +0 -7
- package/dist/constants/typescript.js.map +0 -7
- package/dist/cover/code.js.map +0 -7
- package/dist/cover/formatters.js.map +0 -7
- package/dist/cover/type.js.map +0 -7
- package/dist/cover/types.js.map +0 -7
- package/dist/debug.js.map +0 -7
- package/dist/dlx-binary.js.map +0 -7
- package/dist/dlx-manifest.js.map +0 -7
- package/dist/dlx-package.js.map +0 -7
- package/dist/dlx.js.map +0 -7
- package/dist/effects/pulse-frames.js.map +0 -7
- package/dist/effects/text-shimmer.js.map +0 -7
- package/dist/effects/types.js.map +0 -7
- package/dist/effects/ultra.js.map +0 -7
- package/dist/env/ci.js.map +0 -7
- package/dist/env/debug.js.map +0 -7
- package/dist/env/github.js.map +0 -7
- package/dist/env/helpers.js.map +0 -7
- package/dist/env/home.js.map +0 -7
- package/dist/env/locale.js.map +0 -7
- package/dist/env/node-auth-token.js.map +0 -7
- package/dist/env/node-env.js.map +0 -7
- package/dist/env/npm.js.map +0 -7
- package/dist/env/package-manager.js.map +0 -7
- package/dist/env/path.js.map +0 -7
- package/dist/env/pre-commit.js.map +0 -7
- package/dist/env/rewire.js.map +0 -7
- package/dist/env/shell.js.map +0 -7
- package/dist/env/socket-cli-shadow.js.map +0 -7
- package/dist/env/socket-cli.js.map +0 -7
- package/dist/env/socket.js.map +0 -7
- package/dist/env/temp-dir.js.map +0 -7
- package/dist/env/term.js.map +0 -7
- package/dist/env/test.js.map +0 -7
- package/dist/env/windows.js.map +0 -7
- package/dist/env/xdg.js.map +0 -7
- package/dist/env.js.map +0 -7
- package/dist/external/@npmcli/package-json/index.js +0 -1
- package/dist/external/@socketregistry/is-unicode-supported.d.ts +0 -2
- package/dist/external/@socketregistry/yocto-spinner.d.ts +0 -12
- package/dist/external/@yarnpkg/extensions.d.ts +0 -4
- package/dist/external/cacache.d.ts +0 -86
- package/dist/external/debug.d.ts +0 -22
- package/dist/external/del.d.ts +0 -1
- package/dist/external/fast-sort.d.ts +0 -3
- package/dist/external/get-east-asian-width.d.ts +0 -5
- package/dist/external/libnpmexec.d.ts +0 -33
- package/dist/external/libnpmpack.d.ts +0 -2
- package/dist/external/make-fetch-happen.d.ts +0 -15
- package/dist/external/pacote.d.ts +0 -14
- package/dist/external/semver.d.ts +0 -2
- package/dist/external/yargs-parser.d.ts +0 -2
- package/dist/external/yoctocolors-cjs.d.ts +0 -52
- package/dist/external/zod.d.ts +0 -1
- package/dist/fs.js.map +0 -7
- package/dist/functions.js.map +0 -7
- package/dist/git.js.map +0 -7
- package/dist/github.js.map +0 -7
- package/dist/globs.js.map +0 -7
- package/dist/http-request.js.map +0 -7
- package/dist/ipc.js.map +0 -7
- package/dist/json.js.map +0 -7
- package/dist/links/index.js.map +0 -7
- package/dist/logger.js.map +0 -7
- package/dist/maintained-node-versions.js.map +0 -7
- package/dist/memoization.js.map +0 -7
- package/dist/objects.js.map +0 -7
- package/dist/packages/editable.js.map +0 -7
- package/dist/packages/exports.js.map +0 -7
- package/dist/packages/isolation.js.map +0 -7
- package/dist/packages/licenses.js.map +0 -7
- package/dist/packages/manifest.js.map +0 -7
- package/dist/packages/normalize.js.map +0 -7
- package/dist/packages/operations.js.map +0 -7
- package/dist/packages/paths.js.map +0 -7
- package/dist/packages/provenance.js.map +0 -7
- package/dist/packages/specs.js.map +0 -7
- package/dist/packages/validation.js.map +0 -7
- package/dist/packages.js.map +0 -7
- package/dist/path.js.map +0 -7
- package/dist/paths/rewire.js.map +0 -7
- package/dist/paths.js.map +0 -7
- package/dist/performance.js.map +0 -7
- package/dist/process-lock.js.map +0 -7
- package/dist/promise-queue.js.map +0 -7
- package/dist/promises.js.map +0 -7
- package/dist/regexps.js.map +0 -7
- package/dist/sea.js.map +0 -7
- package/dist/shadow.js.map +0 -7
- package/dist/signal-exit.js.map +0 -7
- package/dist/sorts.js.map +0 -7
- package/dist/spawn.js.map +0 -7
- package/dist/spinner.js.map +0 -7
- package/dist/ssri.js.map +0 -7
- package/dist/stdio/clear.js.map +0 -7
- package/dist/stdio/divider.js.map +0 -7
- package/dist/stdio/footer.js.map +0 -7
- package/dist/stdio/header.js.map +0 -7
- package/dist/stdio/mask.js.map +0 -7
- package/dist/stdio/progress.js.map +0 -7
- package/dist/stdio/prompts.js.map +0 -7
- package/dist/stdio/stderr.js.map +0 -7
- package/dist/stdio/stdout.js.map +0 -7
- package/dist/streams.js.map +0 -7
- package/dist/strings.js.map +0 -7
- package/dist/suppress-warnings.js.map +0 -7
- package/dist/tables.js.map +0 -7
- package/dist/temporary-executor.js.map +0 -7
- package/dist/themes/context.js.map +0 -7
- package/dist/themes/index.js.map +0 -7
- package/dist/themes/themes.js.map +0 -7
- package/dist/themes/types.js.map +0 -7
- package/dist/themes/utils.js.map +0 -7
- package/dist/types.js.map +0 -7
- package/dist/url.js.map +0 -7
- package/dist/utils/get-ipc.js.map +0 -7
- package/dist/validation/json-parser.js.map +0 -7
- package/dist/validation/types.js.map +0 -7
- package/dist/versions.js.map +0 -7
- package/dist/words.js.map +0 -7
- package/dist/zod.js.map +0 -7
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/env/pre-commit.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * PRE_COMMIT environment variable getter.\n * Whether running in a pre-commit hook context.\n */\n\nimport { envAsBoolean } from '#env/helpers'\nimport { getEnvValue } from '#env/rewire'\n\nexport function getPreCommit(): boolean {\n return envAsBoolean(getEnvValue('PRE_COMMIT'))\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,qBAA6B;AAC7B,oBAA4B;AAErB,SAAS,eAAwB;AACtC,aAAO,iCAAa,2BAAY,YAAY,CAAC;AAC/C;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/dist/env/rewire.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/env/rewire.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * @fileoverview Environment variable rewiring utilities for testing.\n * Uses AsyncLocalStorage for context-isolated overrides that work with concurrent tests.\n *\n * Features:\n * - Context-isolated overrides via withEnv() for advanced use cases\n * - Test-friendly setEnv/clearEnv/resetEnv that work in beforeEach/afterEach\n * - Compatible with vi.stubEnv() - reads from process.env as final fallback\n * - Thread-safe for concurrent test execution\n */\n\nimport { AsyncLocalStorage } from 'async_hooks'\n\ntype EnvOverrides = Map<string, string | undefined>\n\nconst envStorage = new AsyncLocalStorage<EnvOverrides>()\n\n// Per-test overrides (used by setEnv/clearEnv/resetEnv in test hooks)\n// Each test file gets its own instance due to Vitest's module isolation\nconst testOverrides = new Map<string, string | undefined>()\n\n/**\n * Get an environment variable value, checking overrides first.\n *\n * Resolution order:\n * 1. AsyncLocalStorage context (set via withEnv)\n * 2. Test overrides (set via setEnv in beforeEach)\n * 3. process.env (including vi.stubEnv modifications)\n *\n * @internal Used by env getters to support test rewiring\n */\nexport function getEnvValue(key: string): string | undefined {\n // Check AsyncLocalStorage context first (highest priority)\n const contextOverrides = envStorage.getStore()\n if (contextOverrides?.has(key)) {\n return contextOverrides.get(key)\n }\n\n // Check test overrides (set via setEnv in beforeEach)\n if (testOverrides.has(key)) {\n return testOverrides.get(key)\n }\n\n // Fall back to process.env (works with vi.stubEnv)\n return process.env[key]\n}\n\n/**\n * Set an environment variable override for testing.\n * This does not modify process.env, only affects env getters.\n *\n * Works in test hooks (beforeEach) without needing AsyncLocalStorage context.\n * Vitest's module isolation ensures each test file has independent overrides.\n *\n * @example\n * ```typescript\n * import { setEnv, resetEnv } from '#env/rewire'\n * import { getCI } from '#env/ci'\n *\n * beforeEach(() => {\n * setEnv('CI', '1')\n * })\n *\n * afterEach(() => {\n * resetEnv()\n * })\n *\n * it('should detect CI environment', () => {\n * expect(getCI()).toBe(true)\n * })\n * ```\n */\nexport function setEnv(key: string, value: string | undefined): void {\n testOverrides.set(key, value)\n}\n\n/**\n * Clear a specific environment variable override.\n */\nexport function clearEnv(key: string): void {\n testOverrides.delete(key)\n}\n\n/**\n * Clear all environment variable overrides.\n * Useful in afterEach hooks to ensure clean test state.\n *\n * @example\n * ```typescript\n * import { resetEnv } from '#env/rewire'\n *\n * afterEach(() => {\n * resetEnv()\n * })\n * ```\n */\nexport function resetEnv(): void {\n testOverrides.clear()\n}\n\n/**\n * Check if an environment variable has been overridden.\n */\nexport function hasOverride(key: string): boolean {\n const contextOverrides = envStorage.getStore()\n return contextOverrides?.has(key) || testOverrides.has(key)\n}\n\n/**\n * Run code with environment overrides in an isolated AsyncLocalStorage context.\n * Creates true context isolation - overrides don't leak to concurrent code.\n *\n * Useful for tests that need temporary overrides without affecting other tests\n * or for nested override scenarios.\n *\n * @example\n * ```typescript\n * import { withEnv } from '#env/rewire'\n * import { getCI } from '#env/ci'\n *\n * // Temporary override in isolated context\n * await withEnv({ CI: '1' }, async () => {\n * expect(getCI()).toBe(true)\n * })\n * expect(getCI()).toBe(false) // Override is gone\n * ```\n *\n * @example\n * ```typescript\n * // Nested overrides work correctly\n * setEnv('CI', '1') // Test-level override\n *\n * await withEnv({ CI: '0' }, async () => {\n * expect(getCI()).toBe(false) // Context override takes precedence\n * })\n *\n * expect(getCI()).toBe(true) // Back to test-level override\n * ```\n */\nexport async function withEnv<T>(\n overrides: Record<string, string | undefined>,\n fn: () => T | Promise<T>,\n): Promise<T> {\n const map = new Map(Object.entries(overrides))\n return await envStorage.run(map, fn)\n}\n\n/**\n * Synchronous version of withEnv for non-async code.\n *\n * @example\n * ```typescript\n * import { withEnvSync } from '#env/rewire'\n * import { getCI } from '#env/ci'\n *\n * const result = withEnvSync({ CI: '1' }, () => {\n * return getCI()\n * })\n * expect(result).toBe(true)\n * ```\n */\nexport function withEnvSync<T>(\n overrides: Record<string, string | undefined>,\n fn: () => T,\n): T {\n const map = new Map(Object.entries(overrides))\n return envStorage.run(map, fn)\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWA,yBAAkC;AAIlC,MAAM,aAAa,IAAI,qCAAgC;AAIvD,MAAM,gBAAgB,oBAAI,IAAgC;AAYnD,SAAS,YAAY,KAAiC;AAE3D,QAAM,mBAAmB,WAAW,SAAS;AAC7C,MAAI,kBAAkB,IAAI,GAAG,GAAG;AAC9B,WAAO,iBAAiB,IAAI,GAAG;AAAA,EACjC;AAGA,MAAI,cAAc,IAAI,GAAG,GAAG;AAC1B,WAAO,cAAc,IAAI,GAAG;AAAA,EAC9B;AAGA,SAAO,QAAQ,IAAI,GAAG;AACxB;AA2BO,SAAS,OAAO,KAAa,OAAiC;AACnE,gBAAc,IAAI,KAAK,KAAK;AAC9B;AAKO,SAAS,SAAS,KAAmB;AAC1C,gBAAc,OAAO,GAAG;AAC1B;AAeO,SAAS,WAAiB;AAC/B,gBAAc,MAAM;AACtB;AAKO,SAAS,YAAY,KAAsB;AAChD,QAAM,mBAAmB,WAAW,SAAS;AAC7C,SAAO,kBAAkB,IAAI,GAAG,KAAK,cAAc,IAAI,GAAG;AAC5D;AAiCA,eAAsB,QACpB,WACA,IACY;AACZ,QAAM,MAAM,IAAI,IAAI,OAAO,QAAQ,SAAS,CAAC;AAC7C,SAAO,MAAM,WAAW,IAAI,KAAK,EAAE;AACrC;AAgBO,SAAS,YACd,WACA,IACG;AACH,QAAM,MAAM,IAAI,IAAI,OAAO,QAAQ,SAAS,CAAC;AAC7C,SAAO,WAAW,IAAI,KAAK,EAAE;AAC/B;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/dist/env/shell.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/env/shell.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * SHELL environment variable getter.\n * Unix/macOS default shell path.\n */\n\nimport { getEnvValue } from '#env/rewire'\n\nexport function getShell(): string | undefined {\n return getEnvValue('SHELL')\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,oBAA4B;AAErB,SAAS,WAA+B;AAC7C,aAAO,2BAAY,OAAO;AAC5B;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/env/socket-cli-shadow.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * @fileoverview Socket CLI shadow mode environment variables.\n * Provides typed getters for SOCKET_CLI_SHADOW_* environment variables.\n */\n\nimport { envAsBoolean } from '#env/helpers'\nimport { getEnvValue } from '#env/rewire'\n\n/**\n * Controls Socket CLI shadow mode risk acceptance.\n *\n * @returns Whether to accept all risks in shadow mode\n */\nexport function getSocketCliShadowAcceptRisks(): boolean {\n return envAsBoolean(getEnvValue('SOCKET_CLI_SHADOW_ACCEPT_RISKS'))\n}\n\n/**\n * API token for Socket CLI shadow mode.\n *\n * @returns Shadow mode API token or undefined\n */\nexport function getSocketCliShadowApiToken(): string | undefined {\n return getEnvValue('SOCKET_CLI_SHADOW_API_TOKEN')\n}\n\n/**\n * Binary path for Socket CLI shadow mode.\n *\n * @returns Shadow mode binary path or undefined\n */\nexport function getSocketCliShadowBin(): string | undefined {\n return getEnvValue('SOCKET_CLI_SHADOW_BIN')\n}\n\n/**\n * Controls Socket CLI shadow mode progress display.\n *\n * @returns Whether to show progress in shadow mode\n */\nexport function getSocketCliShadowProgress(): boolean {\n return envAsBoolean(getEnvValue('SOCKET_CLI_SHADOW_PROGRESS'))\n}\n\n/**\n * Controls Socket CLI shadow mode silent operation.\n *\n * @returns Whether shadow mode should operate silently\n */\nexport function getSocketCliShadowSilent(): boolean {\n return envAsBoolean(getEnvValue('SOCKET_CLI_SHADOW_SILENT'))\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,qBAA6B;AAC7B,oBAA4B;AAOrB,SAAS,gCAAyC;AACvD,aAAO,iCAAa,2BAAY,gCAAgC,CAAC;AACnE;AAOO,SAAS,6BAAiD;AAC/D,aAAO,2BAAY,6BAA6B;AAClD;AAOO,SAAS,wBAA4C;AAC1D,aAAO,2BAAY,uBAAuB;AAC5C;AAOO,SAAS,6BAAsC;AACpD,aAAO,iCAAa,2BAAY,4BAA4B,CAAC;AAC/D;AAOO,SAAS,2BAAoC;AAClD,aAAO,iCAAa,2BAAY,0BAA0B,CAAC;AAC7D;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/env/socket-cli.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * @fileoverview Socket CLI environment variables.\n * Provides typed getters for SOCKET_CLI_* environment variables (excluding shadow).\n */\n\nimport { envAsBoolean, envAsNumber } from '#env/helpers'\nimport { getEnvValue } from '#env/rewire'\n\n/**\n * Whether to accept all Socket CLI risks (alternative name).\n *\n * @returns Whether to accept all risks\n */\nexport function getSocketCliAcceptRisks(): boolean {\n return envAsBoolean(getEnvValue('SOCKET_CLI_ACCEPT_RISKS'))\n}\n\n/**\n * Socket CLI API base URL (alternative name).\n * Checks SOCKET_CLI_API_BASE_URL first, then falls back to legacy SOCKET_SECURITY_API_BASE_URL.\n *\n * @returns API base URL or undefined\n */\nexport function getSocketCliApiBaseUrl(): string | undefined {\n return (\n getEnvValue('SOCKET_CLI_API_BASE_URL') ||\n getEnvValue('SOCKET_SECURITY_API_BASE_URL')\n )\n}\n\n/**\n * Proxy URL for Socket CLI API requests (alternative name).\n * Checks SOCKET_CLI_API_PROXY, SOCKET_SECURITY_API_PROXY, then standard proxy env vars.\n * Follows the same precedence as v1.x: HTTPS_PROXY \u2192 https_proxy \u2192 HTTP_PROXY \u2192 http_proxy.\n *\n * @returns API proxy URL or undefined\n */\nexport function getSocketCliApiProxy(): string | undefined {\n return (\n getEnvValue('SOCKET_CLI_API_PROXY') ||\n getEnvValue('SOCKET_SECURITY_API_PROXY') ||\n getEnvValue('HTTPS_PROXY') ||\n getEnvValue('https_proxy') ||\n getEnvValue('HTTP_PROXY') ||\n getEnvValue('http_proxy')\n )\n}\n\n/**\n * Timeout in milliseconds for Socket CLI API requests (alternative name).\n *\n * @returns API timeout in milliseconds\n */\nexport function getSocketCliApiTimeout(): number {\n return envAsNumber(getEnvValue('SOCKET_CLI_API_TIMEOUT'))\n}\n\n/**\n * Socket CLI API authentication token (alternative name).\n * Checks SOCKET_CLI_API_TOKEN, SOCKET_CLI_API_KEY, SOCKET_SECURITY_API_TOKEN, SOCKET_SECURITY_API_KEY.\n * Maintains full v1.x backward compatibility.\n *\n * @returns API token or undefined\n */\nexport function getSocketCliApiToken(): string | undefined {\n return (\n getEnvValue('SOCKET_CLI_API_TOKEN') ||\n getEnvValue('SOCKET_CLI_API_KEY') ||\n getEnvValue('SOCKET_SECURITY_API_TOKEN') ||\n getEnvValue('SOCKET_SECURITY_API_KEY')\n )\n}\n\n/**\n * Socket CLI configuration file path (alternative name).\n *\n * @returns Config file path or undefined\n */\nexport function getSocketCliConfig(): string | undefined {\n return getEnvValue('SOCKET_CLI_CONFIG')\n}\n\n/**\n * Controls Socket CLI fix mode.\n *\n * @returns Fix mode value or undefined\n */\nexport function getSocketCliFix(): string | undefined {\n return getEnvValue('SOCKET_CLI_FIX')\n}\n\n/**\n * Whether to skip Socket CLI API token requirement (alternative name).\n *\n * @returns Whether to skip API token requirement\n */\nexport function getSocketCliNoApiToken(): boolean {\n return envAsBoolean(getEnvValue('SOCKET_CLI_NO_API_TOKEN'))\n}\n\n/**\n * Controls Socket CLI optimization mode.\n *\n * @returns Whether optimization mode is enabled\n */\nexport function getSocketCliOptimize(): boolean {\n return envAsBoolean(getEnvValue('SOCKET_CLI_OPTIMIZE'))\n}\n\n/**\n * Socket CLI organization slug identifier (alternative name).\n * Checks SOCKET_CLI_ORG_SLUG first, then falls back to SOCKET_ORG_SLUG.\n *\n * @returns Organization slug or undefined\n */\nexport function getSocketCliOrgSlug(): string | undefined {\n return getEnvValue('SOCKET_CLI_ORG_SLUG') || getEnvValue('SOCKET_ORG_SLUG')\n}\n\n/**\n * Whether to view all Socket CLI risks (alternative name).\n *\n * @returns Whether to view all risks\n */\nexport function getSocketCliViewAllRisks(): boolean {\n return envAsBoolean(getEnvValue('SOCKET_CLI_VIEW_ALL_RISKS'))\n}\n\n/**\n * Socket CLI GitHub authentication token.\n * Checks SOCKET_CLI_GITHUB_TOKEN, SOCKET_SECURITY_GITHUB_PAT, then falls back to GITHUB_TOKEN.\n *\n * @returns GitHub token or undefined\n */\nexport function getSocketCliGithubToken(): string | undefined {\n return (\n getEnvValue('SOCKET_CLI_GITHUB_TOKEN') ||\n getEnvValue('SOCKET_SECURITY_GITHUB_PAT') ||\n getEnvValue('GITHUB_TOKEN')\n )\n}\n\n/**\n * Bootstrap package spec (e.g., @socketsecurity/cli@^2.0.11).\n * Set by bootstrap wrappers (SEA/smol/npm) to pass package spec to CLI.\n *\n * @returns Bootstrap package spec or undefined\n */\nexport function getSocketCliBootstrapSpec(): string | undefined {\n return getEnvValue('SOCKET_CLI_BOOTSTRAP_SPEC')\n}\n\n/**\n * Bootstrap cache directory path.\n * Set by bootstrap wrappers to pass dlx cache location to CLI.\n *\n * @returns Bootstrap cache directory or undefined\n */\nexport function getSocketCliBootstrapCacheDir(): string | undefined {\n return getEnvValue('SOCKET_CLI_BOOTSTRAP_CACHE_DIR')\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,qBAA0C;AAC1C,oBAA4B;AAOrB,SAAS,0BAAmC;AACjD,aAAO,iCAAa,2BAAY,yBAAyB,CAAC;AAC5D;AAQO,SAAS,yBAA6C;AAC3D,aACE,2BAAY,yBAAyB,SACrC,2BAAY,8BAA8B;AAE9C;AASO,SAAS,uBAA2C;AACzD,aACE,2BAAY,sBAAsB,SAClC,2BAAY,2BAA2B,SACvC,2BAAY,aAAa,SACzB,2BAAY,aAAa,SACzB,2BAAY,YAAY,SACxB,2BAAY,YAAY;AAE5B;AAOO,SAAS,yBAAiC;AAC/C,aAAO,gCAAY,2BAAY,wBAAwB,CAAC;AAC1D;AASO,SAAS,uBAA2C;AACzD,aACE,2BAAY,sBAAsB,SAClC,2BAAY,oBAAoB,SAChC,2BAAY,2BAA2B,SACvC,2BAAY,yBAAyB;AAEzC;AAOO,SAAS,qBAAyC;AACvD,aAAO,2BAAY,mBAAmB;AACxC;AAOO,SAAS,kBAAsC;AACpD,aAAO,2BAAY,gBAAgB;AACrC;AAOO,SAAS,yBAAkC;AAChD,aAAO,iCAAa,2BAAY,yBAAyB,CAAC;AAC5D;AAOO,SAAS,uBAAgC;AAC9C,aAAO,iCAAa,2BAAY,qBAAqB,CAAC;AACxD;AAQO,SAAS,sBAA0C;AACxD,aAAO,2BAAY,qBAAqB,SAAK,2BAAY,iBAAiB;AAC5E;AAOO,SAAS,2BAAoC;AAClD,aAAO,iCAAa,2BAAY,2BAA2B,CAAC;AAC9D;AAQO,SAAS,0BAA8C;AAC5D,aACE,2BAAY,yBAAyB,SACrC,2BAAY,4BAA4B,SACxC,2BAAY,cAAc;AAE9B;AAQO,SAAS,4BAAgD;AAC9D,aAAO,2BAAY,2BAA2B;AAChD;AAQO,SAAS,gCAAoD;AAClE,aAAO,2BAAY,gCAAgC;AACrD;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/dist/env/socket.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/env/socket.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * @fileoverview Socket Security environment variable getters.\n */\n\nimport { envAsBoolean, envAsNumber } from '#env/helpers'\nimport { getEnvValue } from '#env/rewire'\n\n/**\n * SOCKET_ACCEPT_RISKS environment variable getter.\n * Whether to accept all Socket Security risks.\n */\nexport function getSocketAcceptRisks(): boolean {\n return envAsBoolean(getEnvValue('SOCKET_ACCEPT_RISKS'))\n}\n\n/**\n * SOCKET_API_BASE_URL environment variable getter.\n * Socket Security API base URL.\n */\nexport function getSocketApiBaseUrl(): string | undefined {\n return getEnvValue('SOCKET_API_BASE_URL')\n}\n\n/**\n * SOCKET_API_PROXY environment variable getter.\n * Proxy URL for Socket Security API requests.\n */\nexport function getSocketApiProxy(): string | undefined {\n return getEnvValue('SOCKET_API_PROXY')\n}\n\n/**\n * SOCKET_API_TIMEOUT environment variable getter.\n * Timeout in milliseconds for Socket Security API requests.\n */\nexport function getSocketApiTimeout(): number {\n return envAsNumber(getEnvValue('SOCKET_API_TIMEOUT'))\n}\n\n/**\n * SOCKET_API_TOKEN environment variable getter.\n * Socket Security API authentication token.\n */\nexport function getSocketApiToken(): string | undefined {\n return getEnvValue('SOCKET_API_TOKEN')\n}\n\n/**\n * SOCKET_CACACHE_DIR environment variable getter.\n * Overrides the default Socket cacache directory location.\n */\nexport function getSocketCacacheDir(): string | undefined {\n return getEnvValue('SOCKET_CACACHE_DIR')\n}\n\n/**\n * SOCKET_CONFIG environment variable getter.\n * Socket Security configuration file path.\n */\nexport function getSocketConfig(): string | undefined {\n return getEnvValue('SOCKET_CONFIG')\n}\n\n/**\n * SOCKET_DEBUG environment variable getter.\n * Controls Socket-specific debug output.\n */\nexport function getSocketDebug(): string | undefined {\n return getEnvValue('SOCKET_DEBUG')\n}\n\n/**\n * SOCKET_DLX_DIR environment variable getter.\n * Overrides the default Socket DLX directory location.\n */\nexport function getSocketDlxDirEnv(): string | undefined {\n return getEnvValue('SOCKET_DLX_DIR')\n}\n\n/**\n * SOCKET_HOME environment variable getter.\n * Socket Security home directory path.\n */\nexport function getSocketHome(): string | undefined {\n return getEnvValue('SOCKET_HOME')\n}\n\n/**\n * SOCKET_NO_API_TOKEN environment variable getter.\n * Whether to skip Socket Security API token requirement.\n */\nexport function getSocketNoApiToken(): boolean {\n return envAsBoolean(getEnvValue('SOCKET_NO_API_TOKEN'))\n}\n\n/**\n * SOCKET_NPM_REGISTRY environment variable getter.\n * Socket NPM registry URL (alternative name).\n */\nexport function getSocketNpmRegistry(): string | undefined {\n return getEnvValue('SOCKET_NPM_REGISTRY')\n}\n\n/**\n * SOCKET_ORG_SLUG environment variable getter.\n * Socket Security organization slug identifier.\n */\nexport function getSocketOrgSlug(): string | undefined {\n return getEnvValue('SOCKET_ORG_SLUG')\n}\n\n/**\n * SOCKET_REGISTRY_URL environment variable getter.\n * Socket Registry URL for package installation.\n */\nexport function getSocketRegistryUrl(): string | undefined {\n return getEnvValue('SOCKET_REGISTRY_URL')\n}\n\n/**\n * SOCKET_VIEW_ALL_RISKS environment variable getter.\n * Whether to view all Socket Security risks.\n */\nexport function getSocketViewAllRisks(): boolean {\n return envAsBoolean(getEnvValue('SOCKET_VIEW_ALL_RISKS'))\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,qBAA0C;AAC1C,oBAA4B;AAMrB,SAAS,uBAAgC;AAC9C,aAAO,iCAAa,2BAAY,qBAAqB,CAAC;AACxD;AAMO,SAAS,sBAA0C;AACxD,aAAO,2BAAY,qBAAqB;AAC1C;AAMO,SAAS,oBAAwC;AACtD,aAAO,2BAAY,kBAAkB;AACvC;AAMO,SAAS,sBAA8B;AAC5C,aAAO,gCAAY,2BAAY,oBAAoB,CAAC;AACtD;AAMO,SAAS,oBAAwC;AACtD,aAAO,2BAAY,kBAAkB;AACvC;AAMO,SAAS,sBAA0C;AACxD,aAAO,2BAAY,oBAAoB;AACzC;AAMO,SAAS,kBAAsC;AACpD,aAAO,2BAAY,eAAe;AACpC;AAMO,SAAS,iBAAqC;AACnD,aAAO,2BAAY,cAAc;AACnC;AAMO,SAAS,qBAAyC;AACvD,aAAO,2BAAY,gBAAgB;AACrC;AAMO,SAAS,gBAAoC;AAClD,aAAO,2BAAY,aAAa;AAClC;AAMO,SAAS,sBAA+B;AAC7C,aAAO,iCAAa,2BAAY,qBAAqB,CAAC;AACxD;AAMO,SAAS,uBAA2C;AACzD,aAAO,2BAAY,qBAAqB;AAC1C;AAMO,SAAS,mBAAuC;AACrD,aAAO,2BAAY,iBAAiB;AACtC;AAMO,SAAS,uBAA2C;AACzD,aAAO,2BAAY,qBAAqB;AAC1C;AAMO,SAAS,wBAAiC;AAC/C,aAAO,iCAAa,2BAAY,uBAAuB,CAAC;AAC1D;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/dist/env/temp-dir.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/env/temp-dir.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * @fileoverview Temporary directory environment variable getters.\n * Different platforms use different environment variables for temp directories.\n */\n\nimport { getEnvValue } from '#env/rewire'\n\n/**\n * TMPDIR environment variable.\n * Unix/macOS temporary directory path.\n */\nexport function getTmpdir(): string | undefined {\n return getEnvValue('TMPDIR')\n}\n\n/**\n * TEMP environment variable.\n * Windows temporary directory path.\n */\nexport function getTemp(): string | undefined {\n return getEnvValue('TEMP')\n}\n\n/**\n * TMP environment variable.\n * Alternative temporary directory path.\n */\nexport function getTmp(): string | undefined {\n return getEnvValue('TMP')\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,oBAA4B;AAMrB,SAAS,YAAgC;AAC9C,aAAO,2BAAY,QAAQ;AAC7B;AAMO,SAAS,UAA8B;AAC5C,aAAO,2BAAY,MAAM;AAC3B;AAMO,SAAS,SAA6B;AAC3C,aAAO,2BAAY,KAAK;AAC1B;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/dist/env/term.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/env/term.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * TERM environment variable getter.\n * Terminal type identifier.\n */\n\nimport { getEnvValue } from '#env/rewire'\n\nexport function getTerm(): string | undefined {\n return getEnvValue('TERM')\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,oBAA4B;AAErB,SAAS,UAA8B;AAC5C,aAAO,2BAAY,MAAM;AAC3B;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/dist/env/test.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/env/test.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * @fileoverview Test environment variable getters and detection.\n * Provides access to test framework environment variables and utilities.\n */\n\nimport { envAsBoolean, envAsString } from '#env/helpers'\nimport { getNodeEnv } from '#env/node-env'\nimport { getEnvValue } from '#env/rewire'\n\n/**\n * JEST_WORKER_ID environment variable.\n * Set when running tests with Jest.\n */\nexport function getJestWorkerId(): string {\n return envAsString(getEnvValue('JEST_WORKER_ID'))\n}\n\n/**\n * VITEST environment variable.\n * Set when running tests with Vitest.\n */\nexport function getVitest(): boolean {\n return envAsBoolean(getEnvValue('VITEST'))\n}\n\n/**\n * Check if code is running in a test environment.\n * Checks NODE_ENV, VITEST, and JEST_WORKER_ID.\n */\nexport function isTest(): boolean {\n const nodeEnv = envAsString(getNodeEnv())\n return nodeEnv === 'test' || getVitest() || !!getJestWorkerId()\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,qBAA0C;AAC1C,sBAA2B;AAC3B,oBAA4B;AAMrB,SAAS,kBAA0B;AACxC,aAAO,gCAAY,2BAAY,gBAAgB,CAAC;AAClD;AAMO,SAAS,YAAqB;AACnC,aAAO,iCAAa,2BAAY,QAAQ,CAAC;AAC3C;AAMO,SAAS,SAAkB;AAChC,QAAM,cAAU,gCAAY,4BAAW,CAAC;AACxC,SAAO,YAAY,UAAU,UAAU,KAAK,CAAC,CAAC,gBAAgB;AAChE;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/dist/env/windows.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/env/windows.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * @fileoverview Windows environment variable getters.\n * Provides access to Windows-specific user directory paths.\n */\n\nimport { getEnvValue } from '#env/rewire'\n\n/**\n * APPDATA environment variable.\n * Points to the Application Data directory on Windows.\n */\nexport function getAppdata(): string | undefined {\n return getEnvValue('APPDATA')\n}\n\n/**\n * LOCALAPPDATA environment variable.\n * Points to the Local Application Data directory on Windows.\n */\nexport function getLocalappdata(): string | undefined {\n return getEnvValue('LOCALAPPDATA')\n}\n\n/**\n * USERPROFILE environment variable.\n * Windows user home directory path.\n */\nexport function getUserprofile(): string | undefined {\n return getEnvValue('USERPROFILE')\n}\n\n/**\n * COMSPEC environment variable.\n * Points to the Windows command processor (typically cmd.exe).\n */\nexport function getComspec(): string | undefined {\n return getEnvValue('COMSPEC')\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,oBAA4B;AAMrB,SAAS,aAAiC;AAC/C,aAAO,2BAAY,SAAS;AAC9B;AAMO,SAAS,kBAAsC;AACpD,aAAO,2BAAY,cAAc;AACnC;AAMO,SAAS,iBAAqC;AACnD,aAAO,2BAAY,aAAa;AAClC;AAMO,SAAS,aAAiC;AAC/C,aAAO,2BAAY,SAAS;AAC9B;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/dist/env/xdg.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/env/xdg.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * @fileoverview XDG Base Directory Specification environment variable getters.\n * Provides access to XDG user directories on Unix systems.\n */\n\nimport { getEnvValue } from '#env/rewire'\n\n/**\n * XDG_CACHE_HOME environment variable.\n * XDG Base Directory specification cache directory.\n */\nexport function getXdgCacheHome(): string | undefined {\n return getEnvValue('XDG_CACHE_HOME')\n}\n\n/**\n * XDG_CONFIG_HOME environment variable.\n * XDG Base Directory specification config directory.\n */\nexport function getXdgConfigHome(): string | undefined {\n return getEnvValue('XDG_CONFIG_HOME')\n}\n\n/**\n * XDG_DATA_HOME environment variable.\n * Points to the user's data directory on Unix systems.\n */\nexport function getXdgDataHome(): string | undefined {\n return getEnvValue('XDG_DATA_HOME')\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,oBAA4B;AAMrB,SAAS,kBAAsC;AACpD,aAAO,2BAAY,gBAAgB;AACrC;AAMO,SAAS,mBAAuC;AACrD,aAAO,2BAAY,iBAAiB;AACtC;AAMO,SAAS,iBAAqC;AACnD,aAAO,2BAAY,eAAe;AACpC;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/dist/env.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/env.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * @fileoverview Environment variable parsing and conversion utilities.\n * Provides type-safe conversion functions for boolean, number, and string values.\n */\n\nconst NumberCtor = Number\n// IMPORTANT: Do not use destructuring here - use direct assignment instead.\n// tsgo has a bug that incorrectly transpiles destructured exports, resulting in\n// `exports.SomeName = void 0;` which causes runtime errors.\n// See: https://github.com/SocketDev/socket-packageurl-js/issues/3\nconst NumberIsFinite = Number.isFinite\nconst NumberParseInt = Number.parseInt\nconst StringCtor = String\n\n// Common environment variables that have case sensitivity issues on Windows.\n// These are checked with case-insensitive matching when exact matches fail.\nconst caseInsensitiveKeys = new Set([\n 'APPDATA',\n 'COMSPEC',\n 'HOME',\n 'LOCALAPPDATA',\n 'PATH',\n 'PATHEXT',\n 'PROGRAMFILES',\n 'SYSTEMROOT',\n 'TEMP',\n 'TMP',\n 'USERPROFILE',\n 'WINDIR',\n])\n\n/**\n * Create a case-insensitive environment variable Proxy for Windows compatibility.\n * On Windows, environment variables are case-insensitive (PATH vs Path vs path).\n * This Proxy provides consistent access regardless of case, with priority given\n * to exact matches, then case-insensitive matches for known vars.\n *\n * **Use Cases:**\n * - Cross-platform test environments needing consistent env var access\n * - Windows compatibility when passing env to child processes\n * - Merging environment overrides while preserving case-insensitive lookups\n *\n * **Performance Note:**\n * Proxy operations have runtime overhead. Only use when Windows case-insensitive\n * access is required. For most use cases, process.env directly is sufficient.\n *\n * @param base - Base environment object (usually process.env)\n * @param overrides - Optional overrides to merge\n * @returns Proxy that handles case-insensitive env var access\n *\n * @example\n * // Create a Proxy with overrides\n * const env = createEnvProxy(process.env, { NODE_ENV: 'test' })\n * console.log(env.PATH) // Works with any case: PATH, Path, path\n * console.log(env.NODE_ENV) // 'test'\n *\n * @example\n * // Pass to child process spawn\n * import { createEnvProxy } from '@socketsecurity/lib/env'\n * import { spawn } from '@socketsecurity/lib/spawn'\n *\n * spawn('node', ['script.js'], {\n * env: createEnvProxy(process.env, { NODE_ENV: 'test' })\n * })\n */\nexport function createEnvProxy(\n base: NodeJS.ProcessEnv,\n overrides?: Record<string, string | undefined>,\n): NodeJS.ProcessEnv {\n return new Proxy(\n {},\n {\n get(_target, prop) {\n if (typeof prop !== 'string') {\n return undefined\n }\n\n // Priority 1: Check overrides for exact match.\n if (overrides && prop in overrides) {\n return overrides[prop]\n }\n\n // Priority 2: Check base for exact match.\n if (prop in base) {\n return base[prop]\n }\n\n // Priority 3: Case-insensitive lookup for known keys.\n const upperProp = prop.toUpperCase()\n if (caseInsensitiveKeys.has(upperProp)) {\n // Check overrides with case variations.\n if (overrides) {\n const key = findCaseInsensitiveEnvKey(overrides, upperProp)\n if (key !== undefined) {\n return overrides[key]\n }\n }\n // Check base with case variations.\n const key = findCaseInsensitiveEnvKey(base, upperProp)\n if (key !== undefined) {\n return base[key]\n }\n }\n\n return undefined\n },\n\n ownKeys(_target) {\n const keys = new Set<string>([\n ...Object.keys(base),\n ...(overrides ? Object.keys(overrides) : []),\n ])\n return [...keys]\n },\n\n getOwnPropertyDescriptor(_target, prop) {\n if (typeof prop !== 'string') {\n return undefined\n }\n\n // Use the same lookup logic as get().\n const value = this.get?.(_target, prop, _target)\n return value !== undefined\n ? {\n enumerable: true,\n configurable: true,\n writable: true,\n value,\n }\n : undefined\n },\n\n has(_target, prop) {\n if (typeof prop !== 'string') {\n return false\n }\n\n // Check overrides.\n if (overrides && prop in overrides) {\n return true\n }\n\n // Check base.\n if (prop in base) {\n return true\n }\n\n // Case-insensitive check.\n const upperProp = prop.toUpperCase()\n if (caseInsensitiveKeys.has(upperProp)) {\n if (\n overrides &&\n findCaseInsensitiveEnvKey(overrides, upperProp) !== undefined\n ) {\n return true\n }\n if (findCaseInsensitiveEnvKey(base, upperProp) !== undefined) {\n return true\n }\n }\n\n return false\n },\n\n set(_target, prop, value) {\n if (typeof prop === 'string' && overrides) {\n overrides[prop] = value\n return true\n }\n return false\n },\n },\n ) as NodeJS.ProcessEnv\n}\n\n/**\n * Convert an environment variable value to a boolean.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function envAsBoolean(value: unknown, defaultValue = false): boolean {\n if (typeof value === 'string') {\n const trimmed = value.trim()\n return trimmed === '1' || trimmed.toLowerCase() === 'true'\n }\n if (value === null || value === undefined) {\n return !!defaultValue\n }\n return !!value\n}\n\n/**\n * Convert an environment variable value to a number.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function envAsNumber(value: unknown, defaultValue = 0): number {\n const numOrNaN = NumberParseInt(String(value), 10)\n const numMayBeNegZero = NumberIsFinite(numOrNaN)\n ? numOrNaN\n : NumberCtor(defaultValue)\n // Ensure -0 is treated as 0.\n return numMayBeNegZero || 0\n}\n\n/**\n * Convert an environment variable value to a trimmed string.\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function envAsString(value: unknown, defaultValue = ''): string {\n if (typeof value === 'string') {\n return value.trim()\n }\n if (value === null || value === undefined) {\n return defaultValue === '' ? defaultValue : StringCtor(defaultValue).trim()\n }\n return StringCtor(value).trim()\n}\n\n/**\n * Find a case-insensitive environment variable key match.\n * Searches for an environment variable key that matches the given uppercase name,\n * using optimized fast-path checks to minimize expensive toUpperCase() calls.\n *\n * **Use Cases:**\n * - Finding PATH when env object has \"Path\" or \"path\"\n * - Cross-platform env var access where case may vary\n * - Custom case-insensitive env lookups\n *\n * **Performance:**\n * - Fast path: Checks length first (O(1)) before toUpperCase (expensive)\n * - Only converts to uppercase when length matches\n * - Early exit on first match\n *\n * @param env - Environment object or env-like record to search\n * @param upperEnvVarName - Uppercase environment variable name to find (e.g., 'PATH')\n * @returns The actual key from env that matches (e.g., 'Path'), or undefined\n *\n * @example\n * // Find PATH regardless of case\n * const envObj = { Path: 'C:\\\\Windows', NODE_ENV: 'test' }\n * const key = findCaseInsensitiveEnvKey(envObj, 'PATH')\n * console.log(key) // 'Path'\n * console.log(envObj[key]) // 'C:\\\\Windows'\n *\n * @example\n * // Not found returns undefined\n * const key = findCaseInsensitiveEnvKey({}, 'MISSING')\n * console.log(key) // undefined\n */\nexport function findCaseInsensitiveEnvKey(\n env: Record<string, string | undefined>,\n upperEnvVarName: string,\n): string | undefined {\n const targetLength = upperEnvVarName.length\n for (const key of Object.keys(env)) {\n // Fast path: bail early if lengths don't match.\n if (key.length !== targetLength) {\n continue\n }\n // Only call toUpperCase if length matches.\n if (key.toUpperCase() === upperEnvVarName) {\n return key\n }\n }\n return undefined\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["key"]
|
|
7
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
module.exports = require('@npmcli/package-json')
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
declare class YoctoSpinner {
|
|
2
|
-
constructor(options?: { text?: string })
|
|
3
|
-
start(text?: string): this
|
|
4
|
-
stop(): this
|
|
5
|
-
success(text?: string): this
|
|
6
|
-
error(text?: string): this
|
|
7
|
-
warning(text?: string): this
|
|
8
|
-
info(text?: string): this
|
|
9
|
-
clear(): this
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export = YoctoSpinner
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
declare namespace Cacache {
|
|
2
|
-
interface GetOptions {
|
|
3
|
-
integrity?: string | undefined
|
|
4
|
-
size?: number | undefined
|
|
5
|
-
memoize?: boolean | undefined
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
interface PutOptions {
|
|
9
|
-
integrity?: string | undefined
|
|
10
|
-
size?: number | undefined
|
|
11
|
-
metadata?: any | undefined
|
|
12
|
-
memoize?: boolean | undefined
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
interface CacheEntry {
|
|
16
|
-
data: Buffer
|
|
17
|
-
integrity: string
|
|
18
|
-
key: string
|
|
19
|
-
metadata?: any | undefined
|
|
20
|
-
path: string
|
|
21
|
-
size: number
|
|
22
|
-
time: number
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
interface LsEntry {
|
|
26
|
-
key: string
|
|
27
|
-
integrity: string
|
|
28
|
-
path: string
|
|
29
|
-
time: number
|
|
30
|
-
size: number
|
|
31
|
-
metadata?: any | undefined
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
declare const cacache: {
|
|
36
|
-
get: {
|
|
37
|
-
(
|
|
38
|
-
cache: string,
|
|
39
|
-
key: string,
|
|
40
|
-
options?: Cacache.GetOptions,
|
|
41
|
-
): Promise<Cacache.CacheEntry>
|
|
42
|
-
sync: (
|
|
43
|
-
cache: string,
|
|
44
|
-
key: string,
|
|
45
|
-
options?: Cacache.GetOptions,
|
|
46
|
-
) => Cacache.CacheEntry
|
|
47
|
-
}
|
|
48
|
-
put: {
|
|
49
|
-
(
|
|
50
|
-
cache: string,
|
|
51
|
-
key: string,
|
|
52
|
-
data: string | Buffer,
|
|
53
|
-
options?: Cacache.PutOptions,
|
|
54
|
-
): Promise<{ integrity: string; size: number }>
|
|
55
|
-
sync: (
|
|
56
|
-
cache: string,
|
|
57
|
-
key: string,
|
|
58
|
-
data: string | Buffer,
|
|
59
|
-
options?: Cacache.PutOptions,
|
|
60
|
-
) => { integrity: string; size: number }
|
|
61
|
-
}
|
|
62
|
-
rm: {
|
|
63
|
-
entry: {
|
|
64
|
-
(cache: string, key: string): Promise<void>
|
|
65
|
-
sync: (cache: string, key: string) => void
|
|
66
|
-
}
|
|
67
|
-
all: {
|
|
68
|
-
(cache: string): Promise<void>
|
|
69
|
-
sync: (cache: string) => void
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
ls: {
|
|
73
|
-
(cache: string): Promise<Record<string, Cacache.LsEntry>>
|
|
74
|
-
stream: (cache: string) => AsyncIterable<Cacache.LsEntry>
|
|
75
|
-
}
|
|
76
|
-
tmp: {
|
|
77
|
-
withTmp: (
|
|
78
|
-
cache: string,
|
|
79
|
-
opts: any,
|
|
80
|
-
callback: (tmpDirPath: string) => Promise<any>,
|
|
81
|
-
) => Promise<any>
|
|
82
|
-
}
|
|
83
|
-
[key: string]: any
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
export = cacache
|
package/dist/external/debug.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
interface Debug {
|
|
2
|
-
(namespace: string): DebugInstance
|
|
3
|
-
enable(namespaces: string): void
|
|
4
|
-
disable(): void
|
|
5
|
-
enabled(namespace: string): boolean
|
|
6
|
-
inspectOpts?: {
|
|
7
|
-
showHidden?: boolean | null
|
|
8
|
-
depth?: number | boolean | null
|
|
9
|
-
colors?: boolean
|
|
10
|
-
[key: string]: any
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
interface DebugInstance {
|
|
15
|
-
(...args: any[]): void
|
|
16
|
-
enabled: boolean
|
|
17
|
-
log: (...args: any[]) => void
|
|
18
|
-
namespace: string
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
declare const debug: Debug
|
|
22
|
-
export = debug
|
package/dist/external/del.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from 'del'
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Package manifest interface (subset of package.json)
|
|
3
|
-
*/
|
|
4
|
-
export interface PackageManifest {
|
|
5
|
-
name: string
|
|
6
|
-
bin?: string | Record<string, string>
|
|
7
|
-
_id?: string
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Get the binary name to execute from a package manifest.
|
|
12
|
-
* Uses npm's bin resolution strategy:
|
|
13
|
-
* 1. If all bin values are identical (aliases), use first key
|
|
14
|
-
* 2. Try unscoped package name (e.g., 'cli' from '@scope/cli')
|
|
15
|
-
* 3. Throw error if cannot determine
|
|
16
|
-
*
|
|
17
|
-
* @param manifest - Package manifest object
|
|
18
|
-
* @returns Binary name to execute
|
|
19
|
-
* @throws Error if binary cannot be determined
|
|
20
|
-
*
|
|
21
|
-
* @example
|
|
22
|
-
* ```typescript
|
|
23
|
-
* const manifest = { name: '@scope/pkg', bin: { 'pkg': './bin/cli.js' } }
|
|
24
|
-
* getBinFromManifest(manifest) // Returns 'pkg'
|
|
25
|
-
* ```
|
|
26
|
-
*/
|
|
27
|
-
export function getBinFromManifest(manifest: PackageManifest): string
|
|
28
|
-
|
|
29
|
-
declare const libnpmexec: {
|
|
30
|
-
getBinFromManifest: typeof getBinFromManifest
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export = libnpmexec
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
interface FetchOptions {
|
|
2
|
-
cache?: string
|
|
3
|
-
headers?: Record<string, string>
|
|
4
|
-
[key: string]: any
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
declare function makeFetchHappen(
|
|
8
|
-
url: string,
|
|
9
|
-
opts?: FetchOptions,
|
|
10
|
-
): Promise<Response>
|
|
11
|
-
declare namespace makeFetchHappen {
|
|
12
|
-
function defaults(opts: FetchOptions): typeof makeFetchHappen
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export = makeFetchHappen
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
declare class RegistryFetcher {
|
|
2
|
-
constructor(spec: string, opts?: any)
|
|
3
|
-
cache: string
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
declare const pacote: {
|
|
7
|
-
RegistryFetcher: typeof RegistryFetcher
|
|
8
|
-
extract(spec: string, dest: string, opts?: any): Promise<any>
|
|
9
|
-
manifest(spec: string, opts?: any): Promise<any>
|
|
10
|
-
packument(spec: string, opts?: any): Promise<any>
|
|
11
|
-
tarball(spec: string, opts?: any): Promise<Buffer>
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export = pacote
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
interface YoctoColors {
|
|
2
|
-
// Modifiers
|
|
3
|
-
reset: (text: string) => string
|
|
4
|
-
bold: (text: string) => string
|
|
5
|
-
dim: (text: string) => string
|
|
6
|
-
italic: (text: string) => string
|
|
7
|
-
underline: (text: string) => string
|
|
8
|
-
overline: (text: string) => string
|
|
9
|
-
inverse: (text: string) => string
|
|
10
|
-
hidden: (text: string) => string
|
|
11
|
-
strikethrough: (text: string) => string
|
|
12
|
-
|
|
13
|
-
// Colors
|
|
14
|
-
black: (text: string) => string
|
|
15
|
-
red: (text: string) => string
|
|
16
|
-
green: (text: string) => string
|
|
17
|
-
yellow: (text: string) => string
|
|
18
|
-
blue: (text: string) => string
|
|
19
|
-
magenta: (text: string) => string
|
|
20
|
-
cyan: (text: string) => string
|
|
21
|
-
white: (text: string) => string
|
|
22
|
-
gray: (text: string) => string
|
|
23
|
-
grey: (text: string) => string
|
|
24
|
-
|
|
25
|
-
// Bright colors
|
|
26
|
-
blackBright: (text: string) => string
|
|
27
|
-
redBright: (text: string) => string
|
|
28
|
-
greenBright: (text: string) => string
|
|
29
|
-
yellowBright: (text: string) => string
|
|
30
|
-
blueBright: (text: string) => string
|
|
31
|
-
magentaBright: (text: string) => string
|
|
32
|
-
cyanBright: (text: string) => string
|
|
33
|
-
whiteBright: (text: string) => string
|
|
34
|
-
|
|
35
|
-
// Background colors
|
|
36
|
-
bgBlack: (text: string) => string
|
|
37
|
-
bgRed: (text: string) => string
|
|
38
|
-
bgGreen: (text: string) => string
|
|
39
|
-
bgYellow: (text: string) => string
|
|
40
|
-
bgBlue: (text: string) => string
|
|
41
|
-
bgMagenta: (text: string) => string
|
|
42
|
-
bgCyan: (text: string) => string
|
|
43
|
-
bgWhite: (text: string) => string
|
|
44
|
-
|
|
45
|
-
// RGB colors
|
|
46
|
-
rgb: (r: number, g: number, b: number) => (text: string) => string
|
|
47
|
-
bgRgb: (r: number, g: number, b: number) => (text: string) => string
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
declare const yoctocolorsCjs: YoctoColors
|
|
51
|
-
|
|
52
|
-
export = yoctocolorsCjs
|
package/dist/external/zod.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from 'zod'
|
package/dist/fs.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/fs.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * @fileoverview File system utilities with cross-platform path handling.\n * Provides enhanced fs operations, glob matching, and directory traversal functions.\n */\n\nimport type { Abortable } from 'events'\n\nimport type {\n Dirent,\n MakeDirectoryOptions,\n ObjectEncodingOptions,\n OpenMode,\n PathLike,\n StatSyncOptions,\n WriteFileOptions,\n} from 'fs'\n\nimport { getAbortSignal } from '#constants/process'\n\nimport { isArray } from './arrays'\n\nconst abortSignal = getAbortSignal()\n\nimport { defaultIgnore, getGlobMatcher } from './globs'\nimport type { JsonReviver } from './json'\nimport { jsonParse } from './json'\nimport { objectFreeze, type Remap } from './objects'\nimport { normalizePath, pathLikeToString } from './path'\nimport { registerCacheInvalidation } from './paths/rewire'\nimport { naturalCompare } from './sorts'\n\n/**\n * Supported text encodings for Node.js Buffers.\n * Includes ASCII, UTF-8/16, base64, binary, and hexadecimal encodings.\n */\nexport type BufferEncoding =\n | 'ascii'\n | 'utf8'\n | 'utf-8'\n | 'utf16le'\n | 'ucs2'\n | 'ucs-2'\n | 'base64'\n | 'base64url'\n | 'latin1'\n | 'binary'\n | 'hex'\n\n/**\n * Represents any valid JSON content type.\n */\nexport type JsonContent = unknown\n\n/**\n * Options for asynchronous `findUp` operations.\n */\nexport interface FindUpOptions {\n /**\n * Starting directory for the search.\n * @default process.cwd()\n */\n cwd?: string | undefined\n /**\n * Only match directories, not files.\n * @default false\n */\n onlyDirectories?: boolean | undefined\n /**\n * Only match files, not directories.\n * @default true\n */\n onlyFiles?: boolean | undefined\n /**\n * Abort signal to cancel the search operation.\n */\n signal?: AbortSignal | undefined\n}\n\n/**\n * Options for synchronous `findUpSync` operations.\n */\nexport interface FindUpSyncOptions {\n /**\n * Starting directory for the search.\n * @default process.cwd()\n */\n cwd?: string | undefined\n /**\n * Directory to stop searching at (inclusive).\n * When provided, search will stop at this directory even if the root hasn't been reached.\n */\n stopAt?: string | undefined\n /**\n * Only match directories, not files.\n * @default false\n */\n onlyDirectories?: boolean | undefined\n /**\n * Only match files, not directories.\n * @default true\n */\n onlyFiles?: boolean | undefined\n}\n\n/**\n * Options for checking if a directory is empty.\n */\nexport interface IsDirEmptyOptions {\n /**\n * Glob patterns for files to ignore when checking emptiness.\n * Files matching these patterns are not counted.\n * @default defaultIgnore\n */\n ignore?: string[] | readonly string[] | undefined\n}\n\n/**\n * Options for read operations with abort support.\n */\nexport interface ReadOptions extends Abortable {\n /**\n * Character encoding to use for reading.\n * @default 'utf8'\n */\n encoding?: BufferEncoding | string | undefined\n /**\n * File system flag for reading behavior.\n * @default 'r'\n */\n flag?: string | undefined\n}\n\n/**\n * Options for reading directories with filtering and sorting.\n */\nexport interface ReadDirOptions {\n /**\n * Glob patterns for directories to ignore.\n * @default undefined\n */\n ignore?: string[] | readonly string[] | undefined\n /**\n * Include empty directories in results.\n * When `false`, empty directories are filtered out.\n * @default true\n */\n includeEmpty?: boolean | undefined\n /**\n * Sort directory names alphabetically using natural sort order.\n * @default true\n */\n sort?: boolean | undefined\n}\n\n/**\n * Options for reading files with encoding and abort support.\n * Can be either an options object, an encoding string, or null.\n */\nexport type ReadFileOptions =\n | Remap<\n ObjectEncodingOptions &\n Abortable & {\n flag?: OpenMode | undefined\n }\n >\n | BufferEncoding\n | null\n\n/**\n * Options for reading and parsing JSON files.\n */\nexport type ReadJsonOptions = Remap<\n ReadFileOptions & {\n /**\n * Whether to throw errors on parse failure.\n * When `false`, returns `undefined` on error instead of throwing.\n * @default true\n */\n throws?: boolean | undefined\n /**\n * JSON reviver function to transform parsed values.\n * Same as the second parameter to `JSON.parse()`.\n */\n reviver?: Parameters<typeof JSON.parse>[1] | undefined\n }\n>\n\n/**\n * Options for file/directory removal operations.\n */\nexport interface RemoveOptions {\n /**\n * Force deletion even outside normally safe directories.\n * When `false`, prevents deletion outside temp, cacache, and ~/.socket.\n * @default true for safe directories, false otherwise\n */\n force?: boolean | undefined\n /**\n * Maximum number of retry attempts on failure.\n * @default 3\n */\n maxRetries?: number | undefined\n /**\n * Recursively delete directories and contents.\n * @default true\n */\n recursive?: boolean | undefined\n /**\n * Delay in milliseconds between retry attempts.\n * @default 200\n */\n retryDelay?: number | undefined\n /**\n * Abort signal to cancel the operation.\n */\n signal?: AbortSignal | undefined\n}\n\n/**\n * Options for safe read operations that don't throw on errors.\n */\nexport interface SafeReadOptions extends ReadOptions {\n /**\n * Default value to return on read failure.\n * If not provided, `undefined` is returned on error.\n */\n defaultValue?: unknown | undefined\n}\n\n/**\n * Options for write operations with encoding and mode control.\n */\nexport interface WriteOptions extends Abortable {\n /**\n * Character encoding for writing.\n * @default 'utf8'\n */\n encoding?: BufferEncoding | string | undefined\n /**\n * File mode (permissions) to set.\n * Uses standard Unix permission bits (e.g., 0o644).\n * @default 0o666 (read/write for all, respecting umask)\n */\n mode?: number | undefined\n /**\n * File system flag for write behavior.\n * @default 'w' (create or truncate)\n */\n flag?: string | undefined\n}\n\n/**\n * Options for writing JSON files with formatting control.\n */\nexport interface WriteJsonOptions extends WriteOptions {\n /**\n * End-of-line sequence to use.\n * @default '\\n'\n * @example\n * ```ts\n * // Windows-style line endings\n * writeJson('data.json', data, { EOL: '\\r\\n' })\n * ```\n */\n EOL?: string | undefined\n /**\n * Whether to add a final newline at end of file.\n * @default true\n */\n finalEOL?: boolean | undefined\n /**\n * JSON replacer function to transform values during stringification.\n * Same as the second parameter to `JSON.stringify()`.\n */\n replacer?: JsonReviver | undefined\n /**\n * Number of spaces for indentation, or string to use for indentation.\n * @default 2\n * @example\n * ```ts\n * // Use tabs instead of spaces\n * writeJson('data.json', data, { spaces: '\\t' })\n *\n * // Use 4 spaces for indentation\n * writeJson('data.json', data, { spaces: 4 })\n * ```\n */\n spaces?: number | string | undefined\n}\n\nconst defaultRemoveOptions = objectFreeze({\n __proto__: null,\n force: true,\n maxRetries: 3,\n recursive: true,\n retryDelay: 200,\n})\n\nlet _fs: typeof import('fs') | undefined\n/**\n * Lazily load the fs module to avoid Webpack errors.\n * Uses non-'node:' prefixed require to prevent Webpack bundling issues.\n *\n * @returns The Node.js fs module\n * @private\n */\n/*@__NO_SIDE_EFFECTS__*/\nfunction getFs() {\n if (_fs === undefined) {\n // Use non-'node:' prefixed require to avoid Webpack errors.\n _fs = /*@__PURE__*/ require('node:fs')\n }\n return _fs as typeof import('fs')\n}\n\nlet _path: typeof import('path') | undefined\n/**\n * Lazily load the path module to avoid Webpack errors.\n * Uses non-'node:' prefixed require to prevent Webpack bundling issues.\n *\n * @returns The Node.js path module\n * @private\n */\n/*@__NO_SIDE_EFFECTS__*/\nfunction getPath() {\n if (_path === undefined) {\n // Use non-'node:' prefixed require to avoid Webpack errors.\n\n _path = /*@__PURE__*/ require('node:path')\n }\n return _path as typeof import('path')\n}\n\n/**\n * Process directory entries and filter for directories.\n * Filters entries to include only directories, optionally excluding empty ones.\n * Applies ignore patterns and natural sorting.\n *\n * @param dirents - Directory entries from readdir\n * @param dirname - Parent directory path\n * @param options - Filtering and sorting options\n * @returns Array of directory names, optionally sorted\n * @private\n */\n/*@__NO_SIDE_EFFECTS__*/\nfunction innerReadDirNames(\n dirents: Dirent[],\n dirname: string | undefined,\n options?: ReadDirOptions | undefined,\n): string[] {\n const {\n ignore,\n includeEmpty = true,\n sort = true,\n } = { __proto__: null, ...options } as ReadDirOptions\n const path = getPath()\n const names = dirents\n .filter(\n (d: Dirent) =>\n d.isDirectory() &&\n (includeEmpty ||\n !isDirEmptySync(path.join(dirname || d.parentPath, d.name), {\n ignore,\n })),\n )\n .map((d: Dirent) => d.name)\n return sort ? names.sort(naturalCompare) : names\n}\n\n/**\n * Stringify JSON with custom formatting options.\n * Formats JSON with configurable line endings and indentation.\n *\n * @param json - Value to stringify\n * @param EOL - End-of-line sequence\n * @param finalEOL - Whether to add final newline\n * @param replacer - JSON replacer function\n * @param spaces - Indentation spaces or string\n * @returns Formatted JSON string\n * @private\n */\n/*@__NO_SIDE_EFFECTS__*/\nfunction stringify(\n json: unknown,\n EOL: string,\n finalEOL: boolean,\n replacer: JsonReviver | undefined,\n spaces: number | string = 2,\n): string {\n const EOF = finalEOL ? EOL : ''\n const str = JSON.stringify(json, replacer, spaces)\n return `${str.replace(/\\n/g, EOL)}${EOF}`\n}\n\n/**\n * Find a file or directory by traversing up parent directories.\n * Searches from the starting directory upward to the filesystem root.\n * Useful for finding configuration files or project roots.\n *\n * @param name - Filename(s) to search for\n * @param options - Search options including cwd and type filters\n * @returns Normalized absolute path if found, undefined otherwise\n *\n * @example\n * ```ts\n * // Find package.json starting from current directory\n * const pkgPath = await findUp('package.json')\n *\n * // Find any of multiple config files\n * const configPath = await findUp(['.config.js', '.config.json'])\n *\n * // Find a directory instead of file\n * const nodeModules = await findUp('node_modules', { onlyDirectories: true })\n * ```\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport async function findUp(\n name: string | string[] | readonly string[],\n options?: FindUpOptions | undefined,\n): Promise<string | undefined> {\n const { cwd = process.cwd(), signal = abortSignal } = {\n __proto__: null,\n ...options,\n } as FindUpOptions\n let { onlyDirectories = false, onlyFiles = true } = {\n __proto__: null,\n ...options,\n } as FindUpOptions\n if (onlyDirectories) {\n onlyFiles = false\n }\n if (onlyFiles) {\n onlyDirectories = false\n }\n const fs = getFs()\n const path = getPath()\n let dir = path.resolve(cwd)\n const { root } = path.parse(dir)\n const names = isArray(name) ? name : [name as string]\n while (dir && dir !== root) {\n for (const n of names) {\n if (signal?.aborted) {\n return undefined\n }\n const thePath = path.join(dir, n)\n try {\n // eslint-disable-next-line no-await-in-loop\n const stats = await fs.promises.stat(thePath)\n if (!onlyDirectories && stats.isFile()) {\n return normalizePath(thePath)\n }\n if (!onlyFiles && stats.isDirectory()) {\n return normalizePath(thePath)\n }\n } catch {}\n }\n dir = path.dirname(dir)\n }\n return undefined\n}\n\n/**\n * Synchronously find a file or directory by traversing up parent directories.\n * Searches from the starting directory upward to the filesystem root or `stopAt` directory.\n * Useful for finding configuration files or project roots in synchronous contexts.\n *\n * @param name - Filename(s) to search for\n * @param options - Search options including cwd, stopAt, and type filters\n * @returns Normalized absolute path if found, undefined otherwise\n *\n * @example\n * ```ts\n * // Find package.json starting from current directory\n * const pkgPath = findUpSync('package.json')\n *\n * // Find .git directory but stop at home directory\n * const gitPath = findUpSync('.git', {\n * onlyDirectories: true,\n * stopAt: process.env.HOME\n * })\n *\n * // Find any of multiple config files\n * const configPath = findUpSync(['.eslintrc.js', '.eslintrc.json'])\n * ```\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function findUpSync(\n name: string | string[] | readonly string[],\n options?: FindUpSyncOptions | undefined,\n) {\n const { cwd = process.cwd(), stopAt } = {\n __proto__: null,\n ...options,\n } as FindUpSyncOptions\n let { onlyDirectories = false, onlyFiles = true } = {\n __proto__: null,\n ...options,\n } as FindUpSyncOptions\n if (onlyDirectories) {\n onlyFiles = false\n }\n if (onlyFiles) {\n onlyDirectories = false\n }\n const fs = getFs()\n const path = getPath()\n let dir = path.resolve(cwd)\n const { root } = path.parse(dir)\n const stopDir = stopAt ? path.resolve(stopAt) : undefined\n const names = isArray(name) ? name : [name as string]\n while (dir && dir !== root) {\n // Check if we should stop at this directory.\n if (stopDir && dir === stopDir) {\n // Check current directory but don't go up.\n for (const n of names) {\n const thePath = path.join(dir, n)\n try {\n const stats = fs.statSync(thePath)\n if (!onlyDirectories && stats.isFile()) {\n return normalizePath(thePath)\n }\n if (!onlyFiles && stats.isDirectory()) {\n return normalizePath(thePath)\n }\n } catch {}\n }\n return undefined\n }\n for (const n of names) {\n const thePath = path.join(dir, n)\n try {\n const stats = fs.statSync(thePath)\n if (!onlyDirectories && stats.isFile()) {\n return normalizePath(thePath)\n }\n if (!onlyFiles && stats.isDirectory()) {\n return normalizePath(thePath)\n }\n } catch {}\n }\n dir = path.dirname(dir)\n }\n return undefined\n}\n\n/**\n * Check if a path is a directory asynchronously.\n * Returns `true` for directories, `false` for files or non-existent paths.\n *\n * @param filepath - Path to check\n * @returns `true` if path is a directory, `false` otherwise\n *\n * @example\n * ```ts\n * if (await isDir('./src')) {\n * console.log('src is a directory')\n * }\n * ```\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport async function isDir(filepath: PathLike) {\n return !!(await safeStats(filepath))?.isDirectory()\n}\n\n/**\n * Check if a path is a directory synchronously.\n * Returns `true` for directories, `false` for files or non-existent paths.\n *\n * @param filepath - Path to check\n * @returns `true` if path is a directory, `false` otherwise\n *\n * @example\n * ```ts\n * if (isDirSync('./src')) {\n * console.log('src is a directory')\n * }\n * ```\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function isDirSync(filepath: PathLike) {\n return !!safeStatsSync(filepath)?.isDirectory()\n}\n\n/**\n * Check if a directory is empty synchronously.\n * A directory is considered empty if it contains no files after applying ignore patterns.\n * Uses glob patterns to filter ignored files.\n *\n * @param dirname - Directory path to check\n * @param options - Options including ignore patterns\n * @returns `true` if directory is empty (or doesn't exist), `false` otherwise\n *\n * @example\n * ```ts\n * // Check if directory is completely empty\n * isDirEmptySync('./build')\n *\n * // Check if directory is empty, ignoring .DS_Store files\n * isDirEmptySync('./cache', { ignore: ['.DS_Store'] })\n * ```\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function isDirEmptySync(\n dirname: PathLike,\n options?: IsDirEmptyOptions | undefined,\n) {\n const { ignore = defaultIgnore } = {\n __proto__: null,\n ...options,\n } as IsDirEmptyOptions\n const fs = getFs()\n try {\n const files = fs.readdirSync(dirname)\n const { length } = files\n if (length === 0) {\n return true\n }\n const matcher = getGlobMatcher(\n ignore as string[],\n {\n cwd: pathLikeToString(dirname),\n } as { cwd?: string; dot?: boolean; ignore?: string[]; nocase?: boolean },\n )\n let ignoredCount = 0\n for (let i = 0; i < length; i += 1) {\n const file = files[i]\n if (file && matcher(file)) {\n ignoredCount += 1\n }\n }\n return ignoredCount === length\n } catch {\n // Return false for non-existent paths or other errors.\n return false\n }\n}\n\n/**\n * Check if a path is a symbolic link synchronously.\n * Uses `lstat` to check the link itself, not the target.\n *\n * @param filepath - Path to check\n * @returns `true` if path is a symbolic link, `false` otherwise\n *\n * @example\n * ```ts\n * if (isSymLinkSync('./my-link')) {\n * console.log('Path is a symbolic link')\n * }\n * ```\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function isSymLinkSync(filepath: PathLike) {\n const fs = getFs()\n try {\n return fs.lstatSync(filepath).isSymbolicLink()\n } catch {}\n return false\n}\n\n/**\n * Result of file readability validation.\n * Contains lists of valid and invalid file paths.\n */\nexport interface ValidateFilesResult {\n /**\n * File paths that passed validation and are readable.\n */\n validPaths: string[]\n /**\n * File paths that failed validation (unreadable, permission denied, or non-existent).\n * Common with Yarn Berry PnP virtual filesystem, pnpm symlinks, or filesystem race conditions.\n */\n invalidPaths: string[]\n}\n\n/**\n * Validate that file paths are readable before processing.\n * Filters out files from glob results that cannot be accessed (common with\n * Yarn Berry PnP virtual filesystem, pnpm content-addressable store symlinks,\n * or filesystem race conditions in CI/CD environments).\n *\n * This defensive pattern prevents ENOENT errors when files exist in glob\n * results but are not accessible via standard filesystem operations.\n *\n * @param filepaths - Array of file paths to validate\n * @returns Object with `validPaths` (readable) and `invalidPaths` (unreadable)\n *\n * @example\n * ```ts\n * import { validateFiles } from '@socketsecurity/lib/fs'\n *\n * const files = ['package.json', '.pnp.cjs/virtual-file.json']\n * const { validPaths, invalidPaths } = validateFiles(files)\n *\n * console.log(`Valid: ${validPaths.length}`)\n * console.log(`Invalid: ${invalidPaths.length}`)\n * ```\n *\n * @example\n * ```ts\n * // Typical usage in Socket CLI commands\n * const packagePaths = await getPackageFilesForScan(targets)\n * const { validPaths } = validateFiles(packagePaths)\n * await sdk.uploadManifestFiles(orgSlug, validPaths)\n * ```\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function validateFiles(\n filepaths: string[] | readonly string[],\n): ValidateFilesResult {\n const fs = getFs()\n const validPaths: string[] = []\n const invalidPaths: string[] = []\n const { R_OK } = fs.constants\n\n for (const filepath of filepaths) {\n try {\n fs.accessSync(filepath, R_OK)\n validPaths.push(filepath)\n } catch {\n invalidPaths.push(filepath)\n }\n }\n\n return { __proto__: null, validPaths, invalidPaths } as ValidateFilesResult\n}\n\n/**\n * Read directory names asynchronously with filtering and sorting.\n * Returns only directory names (not files), with optional filtering for empty directories\n * and glob-based ignore patterns. Results are naturally sorted by default.\n *\n * @param dirname - Directory path to read\n * @param options - Options for filtering and sorting\n * @returns Array of directory names, empty array on error\n *\n * @example\n * ```ts\n * // Get all subdirectories, sorted naturally\n * const dirs = await readDirNames('./packages')\n *\n * // Get non-empty directories only\n * const nonEmpty = await readDirNames('./cache', { includeEmpty: false })\n *\n * // Get directories without sorting\n * const unsorted = await readDirNames('./src', { sort: false })\n * ```\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport async function readDirNames(\n dirname: PathLike,\n options?: ReadDirOptions | undefined,\n) {\n const fs = getFs()\n try {\n return innerReadDirNames(\n await fs.promises.readdir(dirname, {\n __proto__: null,\n encoding: 'utf8',\n withFileTypes: true,\n } as ObjectEncodingOptions & { withFileTypes: true }),\n String(dirname),\n options,\n )\n } catch {}\n return []\n}\n\n/**\n * Read directory names synchronously with filtering and sorting.\n * Returns only directory names (not files), with optional filtering for empty directories\n * and glob-based ignore patterns. Results are naturally sorted by default.\n *\n * @param dirname - Directory path to read\n * @param options - Options for filtering and sorting\n * @returns Array of directory names, empty array on error\n *\n * @example\n * ```ts\n * // Get all subdirectories, sorted naturally\n * const dirs = readDirNamesSync('./packages')\n *\n * // Get non-empty directories only, ignoring node_modules\n * const nonEmpty = readDirNamesSync('./src', {\n * includeEmpty: false,\n * ignore: ['node_modules']\n * })\n * ```\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function readDirNamesSync(dirname: PathLike, options?: ReadDirOptions) {\n const fs = getFs()\n try {\n return innerReadDirNames(\n fs.readdirSync(dirname, {\n __proto__: null,\n encoding: 'utf8',\n withFileTypes: true,\n } as ObjectEncodingOptions & { withFileTypes: true }),\n String(dirname),\n options,\n )\n } catch {}\n return []\n}\n\n/**\n * Read a file as binary data asynchronously.\n * Returns a Buffer without encoding the contents.\n * Useful for reading images, archives, or other binary formats.\n *\n * @param filepath - Path to file\n * @param options - Read options (encoding is forced to null for binary)\n * @returns Promise resolving to Buffer containing file contents\n *\n * @example\n * ```ts\n * // Read an image file\n * const imageBuffer = await readFileBinary('./image.png')\n *\n * // Read with abort signal\n * const buffer = await readFileBinary('./data.bin', { signal: abortSignal })\n * ```\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport async function readFileBinary(\n filepath: PathLike,\n options?: ReadFileOptions | undefined,\n) {\n // Don't specify encoding to get a Buffer.\n const opts = typeof options === 'string' ? { encoding: options } : options\n const fs = getFs()\n return await fs.promises.readFile(filepath, {\n signal: abortSignal,\n ...opts,\n encoding: null,\n })\n}\n\n/**\n * Read a file as UTF-8 text asynchronously.\n * Returns a string with the file contents decoded as UTF-8.\n * This is the most common way to read text files.\n *\n * @param filepath - Path to file\n * @param options - Read options including encoding and abort signal\n * @returns Promise resolving to string containing file contents\n *\n * @example\n * ```ts\n * // Read a text file\n * const content = await readFileUtf8('./README.md')\n *\n * // Read with custom encoding\n * const content = await readFileUtf8('./data.txt', { encoding: 'utf-8' })\n * ```\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport async function readFileUtf8(\n filepath: PathLike,\n options?: ReadFileOptions | undefined,\n) {\n const opts = typeof options === 'string' ? { encoding: options } : options\n const fs = getFs()\n return await fs.promises.readFile(filepath, {\n signal: abortSignal,\n ...opts,\n encoding: 'utf8',\n })\n}\n\n/**\n * Read a file as binary data synchronously.\n * Returns a Buffer without encoding the contents.\n * Useful for reading images, archives, or other binary formats.\n *\n * @param filepath - Path to file\n * @param options - Read options (encoding is forced to null for binary)\n * @returns Buffer containing file contents\n *\n * @example\n * ```ts\n * // Read an image file\n * const imageBuffer = readFileBinarySync('./logo.png')\n *\n * // Read a compressed file\n * const gzipData = readFileBinarySync('./archive.gz')\n * ```\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function readFileBinarySync(\n filepath: PathLike,\n options?: ReadFileOptions | undefined,\n) {\n // Don't specify encoding to get a Buffer\n const opts = typeof options === 'string' ? { encoding: options } : options\n const fs = getFs()\n return fs.readFileSync(filepath, {\n ...opts,\n encoding: null,\n } as ObjectEncodingOptions)\n}\n\n/**\n * Read a file as UTF-8 text synchronously.\n * Returns a string with the file contents decoded as UTF-8.\n * This is the most common way to read text files synchronously.\n *\n * @param filepath - Path to file\n * @param options - Read options including encoding\n * @returns String containing file contents\n *\n * @example\n * ```ts\n * // Read a configuration file\n * const config = readFileUtf8Sync('./config.txt')\n *\n * // Read with custom options\n * const data = readFileUtf8Sync('./data.txt', { encoding: 'utf8' })\n * ```\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function readFileUtf8Sync(\n filepath: PathLike,\n options?: ReadFileOptions | undefined,\n) {\n const opts = typeof options === 'string' ? { encoding: options } : options\n const fs = getFs()\n return fs.readFileSync(filepath, {\n ...opts,\n encoding: 'utf8',\n } as ObjectEncodingOptions)\n}\n\n/**\n * Read and parse a JSON file asynchronously.\n * Reads the file as UTF-8 text and parses it as JSON.\n * Optionally accepts a reviver function to transform parsed values.\n *\n * @param filepath - Path to JSON file\n * @param options - Read and parse options\n * @returns Promise resolving to parsed JSON value, or undefined if throws is false and an error occurs\n *\n * @example\n * ```ts\n * // Read and parse package.json\n * const pkg = await readJson('./package.json')\n *\n * // Read JSON with custom reviver\n * const data = await readJson('./data.json', {\n * reviver: (key, value) => {\n * if (key === 'date') return new Date(value)\n * return value\n * }\n * })\n *\n * // Don't throw on parse errors\n * const config = await readJson('./config.json', { throws: false })\n * if (config === undefined) {\n * console.log('Failed to parse config')\n * }\n * ```\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport async function readJson(\n filepath: PathLike,\n options?: ReadJsonOptions | string | undefined,\n) {\n const opts = typeof options === 'string' ? { encoding: options } : options\n const { reviver, throws, ...fsOptions } = {\n __proto__: null,\n ...opts,\n } as unknown as ReadJsonOptions\n const shouldThrow = throws === undefined || !!throws\n const fs = getFs()\n let content = ''\n try {\n content = await fs.promises.readFile(filepath, {\n __proto__: null,\n encoding: 'utf8',\n ...fsOptions,\n } as unknown as Parameters<typeof fs.promises.readFile>[1] & {\n encoding: string\n })\n } catch (e) {\n if (shouldThrow) {\n const code = (e as NodeJS.ErrnoException).code\n if (code === 'ENOENT') {\n throw new Error(\n `JSON file not found: ${filepath}\\n` +\n 'Ensure the file exists or create it with the expected structure.',\n { cause: e },\n )\n }\n if (code === 'EACCES' || code === 'EPERM') {\n throw new Error(\n `Permission denied reading JSON file: ${filepath}\\n` +\n 'Check file permissions or run with appropriate access.',\n { cause: e },\n )\n }\n throw e\n }\n return undefined\n }\n return jsonParse(content, {\n filepath: String(filepath),\n reviver,\n throws: shouldThrow,\n })\n}\n\n/**\n * Read and parse a JSON file synchronously.\n * Reads the file as UTF-8 text and parses it as JSON.\n * Optionally accepts a reviver function to transform parsed values.\n *\n * @param filepath - Path to JSON file\n * @param options - Read and parse options\n * @returns Parsed JSON value, or undefined if throws is false and an error occurs\n *\n * @example\n * ```ts\n * // Read and parse tsconfig.json\n * const tsconfig = readJsonSync('./tsconfig.json')\n *\n * // Read JSON with custom reviver\n * const data = readJsonSync('./data.json', {\n * reviver: (key, value) => {\n * if (typeof value === 'string' && /^\\d{4}-\\d{2}-\\d{2}/.test(value)) {\n * return new Date(value)\n * }\n * return value\n * }\n * })\n *\n * // Don't throw on parse errors\n * const config = readJsonSync('./config.json', { throws: false })\n * ```\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function readJsonSync(\n filepath: PathLike,\n options?: ReadJsonOptions | string | undefined,\n) {\n const opts = typeof options === 'string' ? { encoding: options } : options\n const { reviver, throws, ...fsOptions } = {\n __proto__: null,\n ...opts,\n } as unknown as ReadJsonOptions\n const shouldThrow = throws === undefined || !!throws\n const fs = getFs()\n let content = ''\n try {\n content = fs.readFileSync(filepath, {\n __proto__: null,\n encoding: 'utf8',\n ...fsOptions,\n } as unknown as Parameters<typeof fs.readFileSync>[1] & {\n encoding: string\n })\n } catch (e) {\n if (shouldThrow) {\n const code = (e as NodeJS.ErrnoException).code\n if (code === 'ENOENT') {\n throw new Error(\n `JSON file not found: ${filepath}\\n` +\n 'Ensure the file exists or create it with the expected structure.',\n { cause: e },\n )\n }\n if (code === 'EACCES' || code === 'EPERM') {\n throw new Error(\n `Permission denied reading JSON file: ${filepath}\\n` +\n 'Check file permissions or run with appropriate access.',\n { cause: e },\n )\n }\n throw e\n }\n return undefined\n }\n return jsonParse(content, {\n filepath: String(filepath),\n reviver,\n throws: shouldThrow,\n })\n}\n\n// Cache for resolved allowed directories\nlet _cachedAllowedDirs: string[] | undefined\n\n/**\n * Get resolved allowed directories for safe deletion with lazy caching.\n * These directories are resolved once and cached for the process lifetime.\n */\nfunction getAllowedDirectories(): string[] {\n if (_cachedAllowedDirs === undefined) {\n const path = getPath()\n const {\n getOsTmpDir,\n getSocketCacacheDir,\n getSocketUserDir,\n } = /*@__PURE__*/ require('#lib/paths')\n\n _cachedAllowedDirs = [\n path.resolve(getOsTmpDir()),\n path.resolve(getSocketCacacheDir()),\n path.resolve(getSocketUserDir()),\n ]\n }\n return _cachedAllowedDirs\n}\n\n/**\n * Invalidate the cached allowed directories.\n * Called automatically by the paths/rewire module when paths are overridden in tests.\n *\n * @internal Used for test rewiring\n */\nexport function invalidatePathCache(): void {\n _cachedAllowedDirs = undefined\n}\n\n// Register cache invalidation with the rewire module\nregisterCacheInvalidation(invalidatePathCache)\n\n/**\n * Safely delete a file or directory asynchronously with built-in protections.\n * Uses `del` for safer deletion that prevents removing cwd and above by default.\n * Automatically uses force: true for temp directory, cacache, and ~/.socket subdirectories.\n *\n * @param filepath - Path or array of paths to delete (supports glob patterns)\n * @param options - Deletion options including force, retries, and recursion\n * @throws {Error} When attempting to delete protected paths without force option\n *\n * @example\n * ```ts\n * // Delete a single file\n * await safeDelete('./temp-file.txt')\n *\n * // Delete a directory recursively\n * await safeDelete('./build', { recursive: true })\n *\n * // Delete multiple paths\n * await safeDelete(['./dist', './coverage'])\n *\n * // Delete with custom retry settings\n * await safeDelete('./flaky-dir', { maxRetries: 5, retryDelay: 500 })\n * ```\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport async function safeDelete(\n filepath: PathLike | PathLike[],\n options?: RemoveOptions | undefined,\n) {\n const del = /*@__PURE__*/ require('./external/del')\n const { deleteAsync } = del\n const opts = { __proto__: null, ...options } as RemoveOptions\n const patterns = isArray(filepath)\n ? filepath.map(pathLikeToString)\n : [pathLikeToString(filepath)]\n\n // Check if we're deleting within allowed directories.\n let shouldForce = opts.force !== false\n if (!shouldForce && patterns.length > 0) {\n const path = getPath()\n const allowedDirs = getAllowedDirectories()\n\n // Check if all patterns are within allowed directories.\n const allInAllowedDirs = patterns.every(pattern => {\n const resolvedPath = path.resolve(pattern)\n\n // Check each allowed directory\n for (const allowedDir of allowedDirs) {\n const isInAllowedDir =\n resolvedPath.startsWith(allowedDir + path.sep) ||\n resolvedPath === allowedDir\n const relativePath = path.relative(allowedDir, resolvedPath)\n const isGoingBackward = relativePath.startsWith('..')\n\n if (isInAllowedDir && !isGoingBackward) {\n return true\n }\n }\n\n return false\n })\n\n if (allInAllowedDirs) {\n shouldForce = true\n }\n }\n\n await deleteAsync(patterns, {\n concurrency: opts.maxRetries || defaultRemoveOptions.maxRetries,\n dryRun: false,\n force: shouldForce,\n onlyFiles: false,\n })\n}\n\n/**\n * Safely delete a file or directory synchronously with built-in protections.\n * Uses `del` for safer deletion that prevents removing cwd and above by default.\n * Automatically uses force: true for temp directory, cacache, and ~/.socket subdirectories.\n *\n * @param filepath - Path or array of paths to delete (supports glob patterns)\n * @param options - Deletion options including force, retries, and recursion\n * @throws {Error} When attempting to delete protected paths without force option\n *\n * @example\n * ```ts\n * // Delete a single file\n * safeDeleteSync('./temp-file.txt')\n *\n * // Delete a directory recursively\n * safeDeleteSync('./build', { recursive: true })\n *\n * // Delete multiple paths with globs\n * safeDeleteSync(['./dist/**', './coverage/**'])\n *\n * // Force delete a protected path (use with caution)\n * safeDeleteSync('./important', { force: true })\n * ```\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function safeDeleteSync(\n filepath: PathLike | PathLike[],\n options?: RemoveOptions | undefined,\n) {\n const del = /*@__PURE__*/ require('./external/del')\n const { deleteSync } = del\n const opts = { __proto__: null, ...options } as RemoveOptions\n const patterns = isArray(filepath)\n ? filepath.map(pathLikeToString)\n : [pathLikeToString(filepath)]\n\n // Check if we're deleting within allowed directories.\n let shouldForce = opts.force !== false\n if (!shouldForce && patterns.length > 0) {\n const path = getPath()\n const allowedDirs = getAllowedDirectories()\n\n // Check if all patterns are within allowed directories.\n const allInAllowedDirs = patterns.every(pattern => {\n const resolvedPath = path.resolve(pattern)\n\n // Check each allowed directory\n for (const allowedDir of allowedDirs) {\n const isInAllowedDir =\n resolvedPath.startsWith(allowedDir + path.sep) ||\n resolvedPath === allowedDir\n const relativePath = path.relative(allowedDir, resolvedPath)\n const isGoingBackward = relativePath.startsWith('..')\n\n if (isInAllowedDir && !isGoingBackward) {\n return true\n }\n }\n\n return false\n })\n\n if (allInAllowedDirs) {\n shouldForce = true\n }\n }\n\n deleteSync(patterns, {\n concurrency: opts.maxRetries || defaultRemoveOptions.maxRetries,\n dryRun: false,\n force: shouldForce,\n onlyFiles: false,\n })\n}\n\n/**\n * Safely create a directory asynchronously, ignoring EEXIST errors.\n * This function wraps fs.promises.mkdir and handles the race condition where\n * the directory might already exist, which is common in concurrent code.\n *\n * Unlike fs.promises.mkdir with recursive:true, this function:\n * - Silently ignores EEXIST errors (directory already exists)\n * - Re-throws all other errors (permissions, invalid path, etc.)\n * - Works reliably in multi-process/concurrent scenarios\n * - Defaults to recursive: true for convenient nested directory creation\n *\n * @param path - Directory path to create\n * @param options - Options including recursive (default: true) and mode settings\n * @returns Promise that resolves when directory is created or already exists\n *\n * @example\n * ```ts\n * // Create a directory recursively by default, no error if it exists\n * await safeMkdir('./config')\n *\n * // Create nested directories (recursive: true is the default)\n * await safeMkdir('./data/cache/temp')\n *\n * // Create with specific permissions\n * await safeMkdir('./secure', { mode: 0o700 })\n *\n * // Explicitly disable recursive behavior\n * await safeMkdir('./single-level', { recursive: false })\n * ```\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport async function safeMkdir(\n path: PathLike,\n options?: MakeDirectoryOptions | undefined,\n): Promise<void> {\n const fs = getFs()\n const opts = { __proto__: null, recursive: true, ...options }\n try {\n await fs.promises.mkdir(path, opts)\n } catch (e: unknown) {\n // Ignore EEXIST error - directory already exists.\n if (\n typeof e === 'object' &&\n e !== null &&\n 'code' in e &&\n e.code !== 'EEXIST'\n ) {\n throw e\n }\n }\n}\n\n/**\n * Safely create a directory synchronously, ignoring EEXIST errors.\n * This function wraps fs.mkdirSync and handles the race condition where\n * the directory might already exist, which is common in concurrent code.\n *\n * Unlike fs.mkdirSync with recursive:true, this function:\n * - Silently ignores EEXIST errors (directory already exists)\n * - Re-throws all other errors (permissions, invalid path, etc.)\n * - Works reliably in multi-process/concurrent scenarios\n * - Defaults to recursive: true for convenient nested directory creation\n *\n * @param path - Directory path to create\n * @param options - Options including recursive (default: true) and mode settings\n *\n * @example\n * ```ts\n * // Create a directory recursively by default, no error if it exists\n * safeMkdirSync('./config')\n *\n * // Create nested directories (recursive: true is the default)\n * safeMkdirSync('./data/cache/temp')\n *\n * // Create with specific permissions\n * safeMkdirSync('./secure', { mode: 0o700 })\n *\n * // Explicitly disable recursive behavior\n * safeMkdirSync('./single-level', { recursive: false })\n * ```\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function safeMkdirSync(\n path: PathLike,\n options?: MakeDirectoryOptions | undefined,\n): void {\n const fs = getFs()\n const opts = { __proto__: null, recursive: true, ...options }\n try {\n fs.mkdirSync(path, opts)\n } catch (e: unknown) {\n // Ignore EEXIST error - directory already exists.\n if (\n typeof e === 'object' &&\n e !== null &&\n 'code' in e &&\n e.code !== 'EEXIST'\n ) {\n throw e\n }\n }\n}\n\n/**\n * Safely read a file asynchronously, returning undefined on error.\n * Useful when you want to attempt reading a file without handling errors explicitly.\n * Returns undefined for any error (file not found, permission denied, etc.).\n *\n * @param filepath - Path to file\n * @param options - Read options including encoding and default value\n * @returns Promise resolving to file contents, or undefined on error\n *\n * @example\n * ```ts\n * // Try to read a file, get undefined if it doesn't exist\n * const content = await safeReadFile('./optional-config.txt')\n * if (content) {\n * console.log('Config found:', content)\n * }\n *\n * // Read with specific encoding\n * const data = await safeReadFile('./data.txt', { encoding: 'utf8' })\n * ```\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport async function safeReadFile(\n filepath: PathLike,\n options?: SafeReadOptions | undefined,\n) {\n const opts = typeof options === 'string' ? { encoding: options } : options\n const fs = getFs()\n try {\n return await fs.promises.readFile(filepath, {\n signal: abortSignal,\n ...opts,\n } as Abortable)\n } catch {}\n return undefined\n}\n\n/**\n * Safely read a file synchronously, returning undefined on error.\n * Useful when you want to attempt reading a file without handling errors explicitly.\n * Returns undefined for any error (file not found, permission denied, etc.).\n *\n * @param filepath - Path to file\n * @param options - Read options including encoding and default value\n * @returns File contents, or undefined on error\n *\n * @example\n * ```ts\n * // Try to read a config file\n * const config = safeReadFileSync('./config.txt')\n * if (config) {\n * console.log('Config loaded successfully')\n * }\n *\n * // Read binary file safely\n * const buffer = safeReadFileSync('./image.png', { encoding: null })\n * ```\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function safeReadFileSync(\n filepath: PathLike,\n options?: SafeReadOptions | undefined,\n) {\n const opts = typeof options === 'string' ? { encoding: options } : options\n const fs = getFs()\n try {\n return fs.readFileSync(filepath, {\n __proto__: null,\n ...opts,\n } as ObjectEncodingOptions)\n } catch {}\n return undefined\n}\n\n/**\n * Safely get file stats asynchronously, returning undefined on error.\n * Useful for checking file existence and properties without error handling.\n * Returns undefined for any error (file not found, permission denied, etc.).\n *\n * @param filepath - Path to check\n * @returns Promise resolving to Stats object, or undefined on error\n *\n * @example\n * ```ts\n * // Check if file exists and get its stats\n * const stats = await safeStats('./file.txt')\n * if (stats) {\n * console.log('File size:', stats.size)\n * console.log('Modified:', stats.mtime)\n * }\n * ```\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport async function safeStats(filepath: PathLike) {\n const fs = getFs()\n try {\n return await fs.promises.stat(filepath)\n } catch {}\n return undefined\n}\n\n/**\n * Safely get file stats synchronously, returning undefined on error.\n * Useful for checking file existence and properties without error handling.\n * Returns undefined for any error (file not found, permission denied, etc.).\n *\n * @param filepath - Path to check\n * @param options - Read options (currently unused but kept for API consistency)\n * @returns Stats object, or undefined on error\n *\n * @example\n * ```ts\n * // Check if file exists and get its size\n * const stats = safeStatsSync('./file.txt')\n * if (stats) {\n * console.log('File size:', stats.size)\n * console.log('Is directory:', stats.isDirectory())\n * }\n * ```\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function safeStatsSync(\n filepath: PathLike,\n options?: ReadFileOptions | undefined,\n) {\n const opts = typeof options === 'string' ? { encoding: options } : options\n const fs = getFs()\n try {\n return fs.statSync(filepath, {\n __proto__: null,\n throwIfNoEntry: false,\n ...opts,\n } as StatSyncOptions)\n } catch {}\n return undefined\n}\n\n/**\n * Generate a unique filepath by adding number suffix if the path exists.\n * Appends `-1`, `-2`, etc. before the file extension until a non-existent path is found.\n * Useful for creating files without overwriting existing ones.\n *\n * @param filepath - Desired file path\n * @returns Normalized unique filepath (original if it doesn't exist, or with number suffix)\n *\n * @example\n * ```ts\n * // If 'report.pdf' exists, returns 'report-1.pdf'\n * const uniquePath = uniqueSync('./report.pdf')\n *\n * // If 'data.json' and 'data-1.json' exist, returns 'data-2.json'\n * const path = uniqueSync('./data.json')\n *\n * // If 'backup' doesn't exist, returns 'backup' unchanged\n * const backupPath = uniqueSync('./backup')\n * ```\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function uniqueSync(filepath: PathLike): string {\n const fs = getFs()\n const path = getPath()\n const filepathStr = String(filepath)\n\n // If the file doesn't exist, return as is\n if (!fs.existsSync(filepathStr)) {\n return normalizePath(filepathStr)\n }\n\n const dirname = path.dirname(filepathStr)\n const ext = path.extname(filepathStr)\n const basename = path.basename(filepathStr, ext)\n\n let counter = 1\n let uniquePath: string\n do {\n uniquePath = path.join(dirname, `${basename}-${counter}${ext}`)\n counter++\n } while (fs.existsSync(uniquePath))\n\n return normalizePath(uniquePath)\n}\n\n/**\n * Write JSON content to a file asynchronously with formatting.\n * Stringifies the value with configurable indentation and line endings.\n * Automatically adds a final newline by default for POSIX compliance.\n *\n * @param filepath - Path to write to\n * @param jsonContent - Value to stringify and write\n * @param options - Write options including formatting and encoding\n * @returns Promise that resolves when write completes\n *\n * @example\n * ```ts\n * // Write formatted JSON with default 2-space indentation\n * await writeJson('./data.json', { name: 'example', version: '1.0.0' })\n *\n * // Write with custom indentation\n * await writeJson('./config.json', config, { spaces: 4 })\n *\n * // Write with tabs instead of spaces\n * await writeJson('./data.json', data, { spaces: '\\t' })\n *\n * // Write without final newline\n * await writeJson('./inline.json', obj, { finalEOL: false })\n *\n * // Write with Windows line endings\n * await writeJson('./win.json', data, { EOL: '\\r\\n' })\n * ```\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport async function writeJson(\n filepath: PathLike,\n jsonContent: unknown,\n options?: WriteJsonOptions | string,\n): Promise<void> {\n const opts = typeof options === 'string' ? { encoding: options } : options\n const { EOL, finalEOL, replacer, spaces, ...fsOptions } = {\n __proto__: null,\n ...opts,\n } as WriteJsonOptions\n const fs = getFs()\n const jsonString = stringify(\n jsonContent,\n EOL || '\\n',\n finalEOL !== undefined ? finalEOL : true,\n replacer,\n spaces,\n )\n await fs.promises.writeFile(filepath, jsonString, {\n encoding: 'utf8',\n ...fsOptions,\n __proto__: null,\n } as ObjectEncodingOptions)\n}\n\n/**\n * Write JSON content to a file synchronously with formatting.\n * Stringifies the value with configurable indentation and line endings.\n * Automatically adds a final newline by default for POSIX compliance.\n *\n * @param filepath - Path to write to\n * @param jsonContent - Value to stringify and write\n * @param options - Write options including formatting and encoding\n *\n * @example\n * ```ts\n * // Write formatted JSON with default 2-space indentation\n * writeJsonSync('./package.json', pkg)\n *\n * // Write with custom indentation\n * writeJsonSync('./tsconfig.json', tsconfig, { spaces: 4 })\n *\n * // Write with tabs for indentation\n * writeJsonSync('./data.json', data, { spaces: '\\t' })\n *\n * // Write compacted (no indentation)\n * writeJsonSync('./compact.json', data, { spaces: 0 })\n * ```\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function writeJsonSync(\n filepath: PathLike,\n jsonContent: unknown,\n options?: WriteJsonOptions | string | undefined,\n): void {\n const opts = typeof options === 'string' ? { encoding: options } : options\n const { EOL, finalEOL, replacer, spaces, ...fsOptions } = {\n __proto__: null,\n ...opts,\n }\n const fs = getFs()\n const jsonString = stringify(\n jsonContent,\n EOL || '\\n',\n finalEOL !== undefined ? finalEOL : true,\n replacer,\n spaces,\n )\n fs.writeFileSync(filepath, jsonString, {\n encoding: 'utf8',\n ...fsOptions,\n __proto__: null,\n } as WriteFileOptions)\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|