@socketsecurity/lib 6.0.6 → 6.0.8
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 +46 -1
- package/README.md +1 -1
- package/dist/ai/agent-context.d.mts +103 -0
- package/dist/ai/agent-context.js +157 -0
- package/dist/ai/backends.d.mts +83 -0
- package/dist/ai/backends.js +173 -0
- package/dist/ai/credentials.d.mts +49 -0
- package/dist/ai/credentials.js +82 -0
- package/dist/ai/discover.d.mts +6 -2
- package/dist/ai/discover.js +4 -3
- package/dist/ai/exec.d.mts +52 -0
- package/dist/ai/exec.js +92 -0
- package/dist/ai/http.d.mts +132 -0
- package/dist/ai/http.js +130 -0
- package/dist/ai/profiles.d.mts +41 -6
- package/dist/ai/profiles.js +52 -10
- package/dist/ai/route.d.mts +69 -0
- package/dist/ai/route.js +156 -0
- package/dist/ai/spawn.d.mts +10 -2
- package/dist/ai/spawn.js +56 -31
- package/dist/ai/subagent-status.d.mts +48 -0
- package/dist/ai/subagent-status.js +57 -0
- package/dist/ai/tier.d.mts +60 -0
- package/dist/ai/tier.js +53 -0
- package/dist/ai/types.d.mts +31 -6
- package/dist/ai/worktree.d.mts +6 -6
- package/dist/ai/worktree.js +5 -1
- package/dist/ansi/strip.d.ts +1 -1
- package/dist/ansi/strip.js +0 -2
- package/dist/archives/_internal.js +7 -9
- package/dist/archives/extract.js +1 -1
- package/dist/archives/tar.js +7 -7
- package/dist/archives/zip.js +5 -7
- package/dist/argv/flag-predicates.d.ts +12 -12
- package/dist/argv/flag-predicates.js +17 -17
- package/dist/argv/flag-types.d.ts +18 -18
- package/dist/argv/flag-types.js +4 -4
- package/dist/argv/parse.d.ts +20 -3
- package/dist/argv/parse.js +1 -1
- package/dist/arrays/_internal.js +11 -12
- package/dist/arrays/chunk.js +0 -1
- package/dist/arrays/join.d.ts +37 -3
- package/dist/arrays/join.js +47 -7
- package/dist/arrays/unique.js +0 -1
- package/dist/bin/_internal.d.ts +1 -1
- package/dist/bin/_internal.js +1 -1
- package/dist/bin/exec.js +2 -3
- package/dist/bin/find.js +17 -17
- package/dist/bin/prim.cjs +36175 -35861
- package/dist/bin/resolve.js +13 -14
- package/dist/bin/which.js +8 -8
- package/dist/cache/ttl/store.js +6 -6
- package/dist/checks/primordials-defaults.d.ts +3 -3
- package/dist/checks/primordials-defaults.js +3 -3
- package/dist/checks/primordials.js +4 -3
- package/dist/{bin → cli}/check-primordials.d.ts +18 -13
- package/dist/{bin → cli}/check-primordials.js +58 -55
- package/dist/{bin → cli}/check.js +3 -3
- package/dist/{bin → cli}/socket-lib.d.ts +1 -1
- package/dist/{bin → cli}/socket-lib.js +4 -4
- package/dist/colors/socket-palette.js +7 -9
- package/dist/compression/_internal.d.ts +12 -12
- package/dist/compression/_internal.js +18 -18
- package/dist/compression/brotli.d.ts +26 -27
- package/dist/compression/brotli.js +39 -35
- package/dist/compression/gzip.d.ts +23 -23
- package/dist/compression/gzip.js +46 -42
- package/dist/constants/agents.d.ts +3 -1
- package/dist/constants/agents.js +15 -11
- package/dist/constants/licenses.js +3 -3
- package/dist/constants/node.d.ts +23 -0
- package/dist/constants/node.js +47 -15
- package/dist/constants/packages.d.ts +3 -0
- package/dist/constants/packages.js +24 -29
- package/dist/constants/platform.d.ts +30 -3
- package/dist/constants/platform.js +72 -12
- package/dist/constants/runtime.d.ts +22 -0
- package/dist/constants/runtime.js +32 -0
- package/dist/constants/socket.d.ts +2 -6
- package/dist/constants/socket.js +12 -14
- package/dist/cover/code.js +10 -10
- package/dist/cover/formatters.js +5 -5
- package/dist/crypto/hash.d.ts +30 -2
- package/dist/crypto/hash.js +47 -13
- package/dist/debug/_internal.js +4 -6
- package/dist/debug/caller-info.js +3 -4
- package/dist/debug/namespace.d.ts +7 -0
- package/dist/debug/namespace.js +21 -12
- package/dist/debug/output.js +21 -24
- package/dist/debug/types.d.ts +4 -4
- package/dist/dlx/arborist.js +18 -8
- package/dist/dlx/binary-cache.js +15 -15
- package/dist/dlx/binary-download.d.ts +1 -1
- package/dist/dlx/binary-download.js +11 -11
- package/dist/dlx/binary-resolution.js +17 -15
- package/dist/dlx/binary-types.d.ts +5 -5
- package/dist/dlx/binary.js +5 -5
- package/dist/dlx/cache.js +1 -1
- package/dist/dlx/detect.d.ts +42 -25
- package/dist/dlx/detect.js +86 -77
- package/dist/dlx/dir.js +2 -2
- package/dist/dlx/firewall.d.ts +9 -1
- package/dist/dlx/firewall.js +1 -1
- package/dist/dlx/lockfile.d.ts +19 -18
- package/dist/dlx/lockfile.js +19 -16
- package/dist/dlx/manifest.d.ts +6 -6
- package/dist/dlx/manifest.js +5 -5
- package/dist/dlx/package.d.ts +10 -10
- package/dist/dlx/package.js +20 -16
- package/dist/dlx/packages.js +4 -4
- package/dist/dlx/paths.js +7 -7
- package/dist/dlx/spec.js +1 -1
- package/dist/dlx/types.d.ts +28 -27
- package/dist/eco/cargo/parse-lockfile.d.ts +2 -3
- package/dist/eco/cargo/parse-lockfile.js +5 -5
- package/dist/eco/manifest/analyze-lockfile.js +2 -2
- package/dist/eco/manifest/detect-format.js +5 -5
- package/dist/eco/manifest/find-packages.js +2 -2
- package/dist/eco/manifest/get-package-versions.js +2 -2
- package/dist/eco/manifest/get-package.js +2 -2
- package/dist/eco/manifest/parse-lockfile.js +2 -2
- package/dist/eco/manifest/parse-manifest.js +2 -2
- package/dist/eco/manifest/parse.js +2 -2
- package/dist/eco/npm/npm/exec.js +2 -2
- package/dist/eco/npm/npm/flags.js +7 -12
- package/dist/eco/npm/npm/parse-lockfile.d.ts +17 -18
- package/dist/eco/npm/npm/parse-lockfile.js +4 -4
- package/dist/eco/npm/parse-package-json.d.ts +11 -0
- package/dist/eco/npm/parse-package-json.js +3 -3
- package/dist/eco/npm/pnpm/exec.d.ts +1 -1
- package/dist/eco/npm/pnpm/exec.js +5 -5
- package/dist/eco/npm/pnpm/flags.js +0 -3
- package/dist/eco/npm/pnpm/parse-lockfile.d.ts +6 -4
- package/dist/eco/npm/pnpm/parse-lockfile.js +7 -7
- package/dist/eco/npm/script.js +9 -6
- package/dist/eco/npm/yarnpkg/yarn/exec.js +4 -4
- package/dist/eco/npm/yarnpkg/yarn/parse-lockfile.d.ts +3 -4
- package/dist/eco/npm/yarnpkg/yarn/parse-lockfile.js +9 -9
- package/dist/effects/pulse-frames.d.ts +3 -1
- package/dist/effects/shimmer-keyframes.d.ts +1 -1
- package/dist/effects/shimmer-terminal.d.ts +1 -1
- package/dist/env/boolean.js +0 -1
- package/dist/env/ci.js +0 -1
- package/dist/env/debug.js +0 -1
- package/dist/env/github-status.d.ts +51 -0
- package/dist/env/github-status.js +90 -0
- package/dist/env/github.js +0 -8
- package/dist/env/home.js +0 -1
- package/dist/env/locale.js +0 -3
- package/dist/env/node-auth-token.js +0 -1
- package/dist/env/node-env.js +0 -1
- package/dist/env/node-version-managers.d.ts +53 -0
- package/dist/env/node-version-managers.js +90 -0
- package/dist/env/npm.js +0 -5
- package/dist/env/number.js +0 -1
- package/dist/env/package-manager.js +3 -6
- package/dist/env/path.js +0 -1
- package/dist/env/pre-commit.js +1 -2
- package/dist/env/proxy.js +1 -1
- package/dist/env/rewire.d.ts +8 -6
- package/dist/env/rewire.js +16 -17
- package/dist/env/shell.js +0 -1
- package/dist/env/socket-cli.js +5 -18
- package/dist/env/socket-mcp.d.ts +114 -0
- package/dist/env/socket-mcp.js +146 -0
- package/dist/env/socket.d.ts +8 -109
- package/dist/env/socket.js +22 -167
- package/dist/env/string.js +0 -1
- package/dist/env/temp-dir.js +0 -3
- package/dist/env/term.js +0 -1
- package/dist/env/test.js +3 -6
- package/dist/env/windows.js +0 -4
- package/dist/env/xdg.js +0 -3
- package/dist/errors/predicates.js +1 -1
- package/dist/events/exit/_internal.d.ts +11 -9
- package/dist/events/exit/_internal.js +31 -35
- package/dist/events/exit/handler.js +3 -4
- package/dist/events/exit/intercept.js +4 -6
- package/dist/events/exit/lifecycle.js +16 -18
- package/dist/events/exit/signals.js +1 -2
- package/dist/events/exit/types.d.ts +6 -5
- package/dist/external/@npmcli/package-json.js +2 -2
- package/dist/external/@npmcli/promise-spawn.js +3 -1
- package/dist/external/npm-pack.js +2 -2
- package/dist/external/pico-pack.js +4 -2
- package/dist/external/which.js +3 -1
- package/dist/external-tools/bazel/asset-names.d.ts +1 -1
- package/dist/external-tools/bazel/asset-names.js +5 -2
- package/dist/external-tools/bazel/from-download.d.ts +1 -1
- package/dist/external-tools/bazel/from-download.js +5 -2
- package/dist/external-tools/bazel/read-bazel-version-file.js +1 -1
- package/dist/external-tools/bazel/resolve-bazel-version.js +4 -0
- package/dist/external-tools/bazel/resolve.d.ts +3 -3
- package/dist/external-tools/bazel/resolve.js +16 -8
- package/dist/external-tools/bazel/types.d.ts +1 -1
- package/dist/external-tools/cdxgen/asset-names.d.ts +1 -1
- package/dist/external-tools/cdxgen/asset-names.js +5 -2
- package/dist/external-tools/cdxgen/from-download.d.ts +1 -1
- package/dist/external-tools/cdxgen/from-download.js +7 -4
- package/dist/external-tools/cdxgen/from-vfs.js +1 -1
- package/dist/external-tools/cdxgen/resolve.d.ts +3 -3
- package/dist/external-tools/cdxgen/resolve.js +16 -8
- package/dist/external-tools/cdxgen/types.d.ts +1 -1
- package/dist/external-tools/from-download.d.ts +3 -3
- package/dist/external-tools/from-download.js +12 -6
- package/dist/external-tools/from-pip-venv.d.ts +1 -1
- package/dist/external-tools/from-pip-venv.js +12 -5
- package/dist/external-tools/janus/asset-names.d.ts +1 -1
- package/dist/external-tools/janus/asset-names.js +5 -2
- package/dist/external-tools/janus/from-download.d.ts +1 -1
- package/dist/external-tools/janus/from-download.js +5 -2
- package/dist/external-tools/janus/from-vfs.js +1 -1
- package/dist/external-tools/janus/resolve.d.ts +3 -3
- package/dist/external-tools/janus/resolve.js +16 -8
- package/dist/external-tools/janus/types.d.ts +1 -1
- package/dist/external-tools/jre/asset-names.d.ts +1 -1
- package/dist/external-tools/jre/asset-names.js +5 -2
- package/dist/external-tools/jre/detect-platform-arch.d.ts +10 -6
- package/dist/external-tools/jre/detect-platform-arch.js +29 -14
- package/dist/external-tools/jre/from-download.d.ts +1 -1
- package/dist/external-tools/jre/from-download.js +7 -4
- package/dist/external-tools/jre/from-java-home.js +2 -2
- package/dist/external-tools/jre/from-vfs.js +3 -3
- package/dist/external-tools/jre/resolve.d.ts +3 -3
- package/dist/external-tools/jre/resolve.js +16 -8
- package/dist/external-tools/jre/types.d.ts +1 -1
- package/dist/external-tools/manifest.d.ts +25 -7
- package/dist/external-tools/manifest.js +13 -13
- package/dist/external-tools/opengrep/asset-names.d.ts +1 -1
- package/dist/external-tools/opengrep/asset-names.js +5 -2
- package/dist/external-tools/opengrep/from-download.d.ts +1 -1
- package/dist/external-tools/opengrep/from-download.js +5 -2
- package/dist/external-tools/opengrep/from-vfs.js +1 -1
- package/dist/external-tools/opengrep/resolve.d.ts +3 -3
- package/dist/external-tools/opengrep/resolve.js +16 -8
- package/dist/external-tools/opengrep/types.d.ts +1 -1
- package/dist/external-tools/python/asset-names.d.ts +76 -0
- package/dist/external-tools/python/asset-names.js +111 -0
- package/dist/external-tools/python/dlx.d.ts +80 -0
- package/dist/external-tools/python/dlx.js +98 -0
- package/dist/external-tools/python/from-download.d.ts +53 -0
- package/dist/external-tools/python/from-download.js +75 -0
- package/dist/external-tools/python/from-path.d.ts +7 -0
- package/dist/external-tools/python/from-path.js +23 -0
- package/dist/external-tools/python/pin.d.ts +121 -0
- package/dist/external-tools/python/pin.js +176 -0
- package/dist/external-tools/python/pip-install.d.ts +75 -0
- package/dist/external-tools/python/pip-install.js +142 -0
- package/dist/external-tools/python/resolve.d.ts +42 -0
- package/dist/external-tools/python/resolve.js +66 -0
- package/dist/external-tools/python/types.d.ts +49 -0
- package/dist/external-tools/sbt/asset-names.d.ts +1 -1
- package/dist/external-tools/sbt/asset-names.js +5 -2
- package/dist/external-tools/sbt/from-download.d.ts +1 -1
- package/dist/external-tools/sbt/from-download.js +5 -2
- package/dist/external-tools/sbt/from-vfs.js +1 -1
- package/dist/external-tools/sbt/resolve.d.ts +3 -3
- package/dist/external-tools/sbt/resolve.js +16 -8
- package/dist/external-tools/sbt/types.d.ts +1 -1
- package/dist/external-tools/skillspector/from-dlx.d.ts +1 -1
- package/dist/external-tools/skillspector/from-dlx.js +10 -3
- package/dist/external-tools/skillspector/from-path.js +3 -5
- package/dist/external-tools/skillspector/from-vfs.js +1 -1
- package/dist/external-tools/skillspector/resolve.d.ts +2 -2
- package/dist/external-tools/skillspector/resolve.js +14 -6
- package/dist/external-tools/synp/asset-names.d.ts +1 -1
- package/dist/external-tools/synp/asset-names.js +6 -2
- package/dist/external-tools/synp/from-download.d.ts +1 -1
- package/dist/external-tools/synp/from-download.js +7 -4
- package/dist/external-tools/synp/from-vfs.js +1 -1
- package/dist/external-tools/synp/resolve.d.ts +3 -3
- package/dist/external-tools/synp/resolve.js +16 -8
- package/dist/external-tools/trivy/asset-names.d.ts +1 -1
- package/dist/external-tools/trivy/asset-names.js +5 -2
- package/dist/external-tools/trivy/from-download.d.ts +1 -1
- package/dist/external-tools/trivy/from-download.js +7 -4
- package/dist/external-tools/trivy/from-vfs.js +1 -1
- package/dist/external-tools/trivy/resolve.d.ts +3 -3
- package/dist/external-tools/trivy/resolve.js +16 -8
- package/dist/external-tools/trivy/types.d.ts +1 -1
- package/dist/external-tools/trufflehog/asset-names.d.ts +1 -1
- package/dist/external-tools/trufflehog/asset-names.js +5 -2
- package/dist/external-tools/trufflehog/from-download.d.ts +1 -1
- package/dist/external-tools/trufflehog/from-download.js +7 -4
- package/dist/external-tools/trufflehog/from-vfs.js +1 -1
- package/dist/external-tools/trufflehog/resolve.d.ts +3 -3
- package/dist/external-tools/trufflehog/resolve.js +16 -8
- package/dist/external-tools/trufflehog/types.d.ts +1 -1
- package/dist/fs/_internal.d.ts +1 -1
- package/dist/fs/_internal.js +7 -7
- package/dist/fs/access.js +5 -9
- package/dist/fs/allowed-dirs-cache.d.ts +47 -0
- package/dist/fs/allowed-dirs-cache.js +69 -0
- package/dist/fs/encoding.js +5 -7
- package/dist/fs/{find-up.js → find.js} +12 -14
- package/dist/fs/inspect.js +7 -13
- package/dist/fs/read-dir.js +7 -10
- package/dist/fs/read-file.js +8 -14
- package/dist/fs/read-json-cache.d.ts +13 -4
- package/dist/fs/read-json-cache.js +9 -6
- package/dist/fs/read-json.js +4 -6
- package/dist/fs/resolve-module.js +7 -3
- package/dist/fs/safe.d.ts +1 -1
- package/dist/fs/safe.js +13 -14
- package/dist/fs/unique.js +4 -5
- package/dist/fs/validate.js +1 -2
- package/dist/fs/write-json.js +4 -5
- package/dist/git/_internal.js +11 -11
- package/dist/git/changed.js +4 -4
- package/dist/git/repo.js +5 -7
- package/dist/git/staged.js +12 -4
- package/dist/git/tracked.d.ts +84 -0
- package/dist/git/tracked.js +163 -0
- package/dist/git/unstaged.js +12 -4
- package/dist/github/ghsa.js +2 -2
- package/dist/github/refs-cache.d.ts +1 -1
- package/dist/github/refs-cache.js +5 -5
- package/dist/github/refs-graphql.js +4 -0
- package/dist/github/refs-rest.js +9 -5
- package/dist/github/refs.js +15 -10
- package/dist/github/{fetch.js → request.js} +13 -2
- package/dist/github/token.js +1 -1
- package/dist/github/types.d.ts +1 -1
- package/dist/globs/_internal.js +8 -10
- package/dist/globs/match.js +13 -7
- package/dist/globs/matcher.d.ts +3 -3
- package/dist/globs/matcher.js +16 -14
- package/dist/globs/stream.js +1 -2
- package/dist/globs/types.d.ts +24 -24
- package/dist/http-request/_internal.d.ts +1 -1
- package/dist/http-request/browser.js +10 -4
- package/dist/http-request/checksum-file.d.ts +55 -0
- package/dist/http-request/checksum-file.js +95 -0
- package/dist/http-request/download-types.d.ts +15 -23
- package/dist/http-request/download.js +3 -3
- package/dist/http-request/{browser-fetch.d.ts → fetch/browser.d.ts} +2 -2
- package/dist/http-request/{browser-fetch.js → fetch/browser.js} +4 -4
- package/dist/http-request/headers.js +1 -2
- package/dist/http-request/request-attempt.js +38 -34
- package/dist/http-request/request-types.d.ts +2 -2
- package/dist/http-request/request.js +1 -1
- package/dist/http-request/user-agent.js +4 -5
- package/dist/integrity.d.ts +92 -18
- package/dist/integrity.js +125 -30
- package/dist/ipc/directory.js +2 -2
- package/dist/ipc/paths.js +1 -1
- package/dist/ipc/write.js +1 -1
- package/dist/ipc-cli/get.js +12 -12
- package/dist/json/edit.js +51 -44
- package/dist/json/format.js +1 -1
- package/dist/json/parse.d.ts +1 -1
- package/dist/json/parse.js +3 -7
- package/dist/logger/_internal.d.ts +4 -4
- package/dist/logger/_internal.js +3 -3
- package/dist/logger/colors.js +4 -3
- package/dist/logger/console-methods.d.ts +132 -0
- package/dist/logger/console-methods.js +169 -0
- package/dist/logger/console.d.ts +12 -0
- package/dist/logger/console.js +42 -11
- package/dist/logger/indentation-methods.d.ts +81 -0
- package/dist/logger/indentation-methods.js +121 -0
- package/dist/logger/node.d.ts +16 -338
- package/dist/logger/node.js +75 -608
- package/dist/logger/options.d.ts +39 -0
- package/dist/logger/options.js +47 -0
- package/dist/logger/semantic-methods.d.ts +63 -0
- package/dist/logger/semantic-methods.js +108 -0
- package/dist/logger/stream-methods.d.ts +63 -0
- package/dist/logger/stream-methods.js +101 -0
- package/dist/logger/stream.d.ts +37 -0
- package/dist/logger/stream.js +42 -0
- package/dist/logger/symbols-builder.js +9 -9
- package/dist/logger/symbols.d.ts +2 -25
- package/dist/logger/symbols.js +53 -74
- package/dist/logger/types.d.ts +1 -1
- package/dist/memo/types.d.ts +6 -6
- package/dist/native-messaging/host.d.ts +20 -0
- package/dist/native-messaging/host.js +120 -0
- package/dist/native-messaging/index.d.ts +5 -0
- package/dist/native-messaging/index.js +22 -0
- package/dist/native-messaging/install.d.ts +60 -0
- package/dist/native-messaging/install.js +144 -0
- package/dist/native-messaging/rate-limit.d.ts +69 -0
- package/dist/native-messaging/rate-limit.js +119 -0
- package/dist/native-messaging/run.d.ts +10 -0
- package/dist/native-messaging/run.js +17 -0
- package/dist/node/async-hooks.js +4 -3
- package/dist/node/child-process.js +4 -3
- package/dist/node/crypto.js +4 -3
- package/dist/node/events.js +4 -3
- package/dist/node/fs-promises.js +4 -3
- package/dist/node/fs.d.ts +22 -6
- package/dist/node/fs.js +17 -3
- package/dist/node/http.js +4 -3
- package/dist/node/https.js +4 -3
- package/dist/node/module.js +10 -6
- package/dist/node/os.d.ts +10 -2
- package/dist/node/os.js +12 -4
- package/dist/node/path.d.ts +11 -2
- package/dist/node/path.js +18 -4
- package/dist/node/timers-promises.js +4 -3
- package/dist/node/url.js +4 -3
- package/dist/node/util.js +4 -3
- package/dist/objects/getters.js +6 -8
- package/dist/objects/inspect.js +1 -4
- package/dist/objects/mutate.js +4 -5
- package/dist/objects/predicates.js +1 -5
- package/dist/objects/sort.js +3 -7
- package/dist/packages/edit-class.d.ts +2 -3
- package/dist/packages/edit-class.js +53 -48
- package/dist/packages/edit.js +12 -14
- package/dist/packages/exports.js +15 -21
- package/dist/packages/fetch.d.ts +16 -0
- package/dist/packages/fetch.js +81 -0
- package/dist/packages/find.d.ts +55 -0
- package/dist/packages/find.js +65 -0
- package/dist/packages/isolation.js +14 -14
- package/dist/packages/licenses.js +18 -18
- package/dist/packages/manifest.js +16 -19
- package/dist/packages/metadata-extensions.d.ts +14 -0
- package/dist/packages/metadata-extensions.js +43 -0
- package/dist/packages/normalize.js +6 -10
- package/dist/packages/provenance.js +17 -19
- package/dist/packages/read.d.ts +29 -0
- package/dist/packages/read.js +66 -0
- package/dist/packages/specs.d.ts +48 -1
- package/dist/packages/specs.js +75 -12
- package/dist/packages/tarball.d.ts +24 -0
- package/dist/packages/tarball.js +81 -0
- package/dist/packages/types.d.ts +22 -22
- package/dist/packages/validation.js +0 -3
- package/dist/paths/_internal.d.ts +2 -1
- package/dist/paths/_internal.js +7 -19
- package/dist/paths/conversion.js +5 -9
- package/dist/paths/dirnames.d.ts +1 -0
- package/dist/paths/dirnames.js +2 -0
- package/dist/paths/filenames.d.ts +0 -1
- package/dist/paths/filenames.js +0 -2
- package/dist/paths/normalize.js +4 -5
- package/dist/paths/packages.js +4 -7
- package/dist/paths/predicates.js +9 -16
- package/dist/paths/resolve.js +17 -25
- package/dist/paths/rewire.d.ts +5 -0
- package/dist/paths/rewire.js +3 -3
- package/dist/paths/socket.d.ts +74 -111
- package/dist/paths/socket.js +106 -139
- package/dist/paths/walk.d.ts +1 -1
- package/dist/paths/walk.js +4 -4
- package/dist/perf/report.js +2 -2
- package/dist/perf/types.d.ts +1 -1
- package/dist/pkg-ext/data.js +1 -1
- package/dist/primordials/array.js +9 -9
- package/dist/primordials/date.js +2 -2
- package/dist/primordials/error.js +3 -3
- package/dist/primordials/headers.d.ts +10 -0
- package/dist/primordials/headers.js +23 -0
- package/dist/primordials/intl.d.ts +13 -0
- package/dist/primordials/intl.js +26 -0
- package/dist/primordials/math.js +33 -33
- package/dist/primordials/number.js +9 -9
- package/dist/primordials/object.js +5 -5
- package/dist/primordials/process.d.ts +88 -0
- package/dist/primordials/process.js +132 -0
- package/dist/primordials/string.d.ts +2 -2
- package/dist/primordials/string.js +6 -6
- package/dist/primordials/symbol.js +3 -3
- package/dist/primordials/uncurry.d.ts +1 -2
- package/dist/primordials/uncurry.js +9 -9
- package/dist/process/abort.js +3 -3
- package/dist/process/lock-manager.js +8 -8
- package/dist/process/spawn/_internal.js +6 -8
- package/dist/process/spawn/child.js +20 -14
- package/dist/process/spawn/errors.js +3 -5
- package/dist/process/spawn/kill-tree.d.ts +53 -0
- package/dist/process/spawn/kill-tree.js +85 -0
- package/dist/process/spawn/stdio.js +0 -1
- package/dist/process/spawn/types.d.ts +5 -5
- package/dist/process/transient.js +2 -2
- package/dist/promises/_internal.d.ts +2 -1
- package/dist/promises/_internal.js +2 -6
- package/dist/promises/iterate.js +11 -15
- package/dist/promises/options.js +3 -6
- package/dist/promises/retry.js +4 -5
- package/dist/promises/timers.d.ts +30 -0
- package/dist/promises/timers.js +48 -0
- package/dist/regexps/spec.js +1 -1
- package/dist/releases/github-archives.d.ts +6 -6
- package/dist/releases/github-archives.js +3 -3
- package/dist/releases/github-asset-url.d.ts +1 -1
- package/dist/releases/github-asset-url.js +5 -5
- package/dist/releases/github-downloads.d.ts +1 -1
- package/dist/releases/github-downloads.js +3 -3
- package/dist/releases/github-listing.d.ts +12 -4
- package/dist/releases/github-listing.js +20 -7
- package/dist/releases/github-retry-config.js +1 -1
- package/dist/releases/github-types.d.ts +6 -6
- package/dist/releases/socket-btm-binary-naming.d.ts +107 -0
- package/dist/releases/socket-btm-binary-naming.js +155 -0
- package/dist/releases/socket-btm.d.ts +8 -115
- package/dist/releases/socket-btm.js +16 -159
- package/dist/schema/types.d.ts +4 -5
- package/dist/schema/validate.js +1 -1
- package/dist/sea/detect.js +6 -6
- package/dist/secrets/_internal.d.ts +2 -2
- package/dist/secrets/_internal.js +2 -2
- package/dist/secrets/compare.d.ts +45 -0
- package/dist/secrets/compare.js +61 -0
- package/dist/secrets/find.d.ts +2 -2
- package/dist/secrets/find.js +10 -4
- package/dist/secrets/keychain.d.ts +1 -1
- package/dist/secrets/keychain.js +6 -4
- package/dist/secrets/linux.js +40 -52
- package/dist/secrets/macos.d.ts +2 -3
- package/dist/secrets/macos.js +24 -33
- package/dist/secrets/rc.d.ts +4 -4
- package/dist/secrets/rc.js +27 -17
- package/dist/secrets/socket-api-token.d.ts +4 -4
- package/dist/secrets/socket-api-token.js +26 -9
- package/dist/secrets/windows.js +32 -37
- package/dist/shadow/skip.js +2 -2
- package/dist/shell/parse.d.ts +32 -0
- package/dist/shell/parse.js +60 -0
- package/dist/smol/detect.js +9 -10
- package/dist/smol/http.js +6 -7
- package/dist/smol/https.js +6 -7
- package/dist/smol/manifest.d.ts +1 -1
- package/dist/smol/manifest.js +6 -7
- package/dist/smol/path.d.ts +1 -1
- package/dist/smol/path.js +7 -8
- package/dist/smol/primordial.d.ts +4 -0
- package/dist/smol/primordial.js +6 -7
- package/dist/smol/purl.d.ts +1 -1
- package/dist/smol/purl.js +7 -8
- package/dist/smol/versions.js +6 -7
- package/dist/smol/vfs.js +6 -7
- package/dist/sorts/_internal.js +6 -8
- package/dist/sorts/natural.js +10 -12
- package/dist/sorts/semver.js +1 -2
- package/dist/sorts/strings.js +0 -1
- package/dist/sorts/types.d.ts +1 -1
- package/dist/spinner/create-spinner-class.d.ts +38 -0
- package/dist/spinner/create-spinner-class.js +302 -0
- package/dist/spinner/default.js +8 -9
- package/dist/spinner/spinner-internals.d.ts +36 -0
- package/dist/spinner/spinner-internals.js +105 -0
- package/dist/spinner/spinner-shimmer-methods.d.ts +54 -0
- package/dist/spinner/spinner-shimmer-methods.js +143 -0
- package/dist/spinner/spinner-status-methods.d.ts +40 -0
- package/dist/spinner/spinner-status-methods.js +133 -0
- package/dist/spinner/spinner.d.ts +8 -5
- package/dist/spinner/spinner.js +19 -706
- package/dist/spinner/types.d.ts +3 -1
- package/dist/spinner/with.d.ts +10 -0
- package/dist/spinner/with.js +16 -2
- package/dist/stdio/divider.js +1 -1
- package/dist/stdio/footer.js +3 -3
- package/dist/stdio/header.js +4 -4
- package/dist/stdio/progress.js +10 -6
- package/dist/stdio/prompts.d.ts +7 -5
- package/dist/stdio/prompts.js +7 -8
- package/dist/stdio/stdout.js +3 -3
- package/dist/streams/parallel.js +3 -5
- package/dist/streams/transform.js +2 -3
- package/dist/strings/format.js +2 -6
- package/dist/strings/predicates.js +0 -2
- package/dist/strings/search.js +1 -2
- package/dist/strings/transform.js +0 -3
- package/dist/strings/width.js +9 -10
- package/dist/tables/bordered.js +4 -3
- package/dist/tables/padding.js +1 -1
- package/dist/tables/simple.js +8 -5
- package/dist/temporal/instant.js +1 -1
- package/dist/temporal/slots.js +6 -6
- package/dist/temporal/system.js +9 -9
- package/dist/themes/context.d.ts +3 -2
- package/dist/themes/context.js +4 -5
- package/dist/themes/themes.js +15 -15
- package/dist/themes/types.d.ts +3 -3
- package/dist/url/assert-safe.d.ts +29 -0
- package/dist/url/assert-safe.js +54 -0
- package/dist/url/parse.js +0 -2
- package/dist/url/predicates.d.ts +31 -1
- package/dist/url/predicates.js +43 -3
- package/dist/url/search-params.js +3 -9
- package/dist/url/types.d.ts +9 -5
- package/dist/versions/_internal.js +3 -3
- package/dist/words/article.js +0 -1
- package/dist/words/capitalize.js +0 -1
- package/dist/words/pluralize.js +15 -5
- package/package.json +419 -216
- package/dist/external-tools/uv/asset-names.d.ts +0 -36
- package/dist/external-tools/uv/asset-names.js +0 -70
- package/dist/external-tools/uv/from-download.d.ts +0 -17
- package/dist/external-tools/uv/from-download.js +0 -47
- package/dist/external-tools/uv/from-path.d.ts +0 -5
- package/dist/external-tools/uv/from-path.js +0 -22
- package/dist/external-tools/uv/from-vfs.d.ts +0 -7
- package/dist/external-tools/uv/from-vfs.js +0 -26
- package/dist/external-tools/uv/resolve.d.ts +0 -25
- package/dist/external-tools/uv/resolve.js +0 -53
- package/dist/external-tools/uv/types.d.ts +0 -24
- package/dist/fs/path-cache.d.ts +0 -21
- package/dist/fs/path-cache.js +0 -34
- package/dist/http-request/checksums.d.ts +0 -69
- package/dist/http-request/checksums.js +0 -108
- package/dist/http-request/http-request.d.ts +0 -12
- package/dist/http-request/http-request.js +0 -11
- package/dist/packages/operations.d.ts +0 -113
- package/dist/packages/operations.js +0 -304
- package/dist/ssri/convert.d.ts +0 -48
- package/dist/ssri/convert.js +0 -69
- package/dist/ssri/parse.d.ts +0 -27
- package/dist/ssri/parse.js +0 -41
- package/dist/ssri/validate.d.ts +0 -41
- package/dist/ssri/validate.js +0 -56
- /package/dist/{bin → cli}/check.d.ts +0 -0
- /package/dist/external-tools/{uv → python}/types.js +0 -0
- /package/dist/fs/{find-up.d.ts → find.d.ts} +0 -0
- /package/dist/github/{fetch.d.ts → request.d.ts} +0 -0
|
@@ -7,6 +7,7 @@ const require_node_fs = require('../node/fs.js');
|
|
|
7
7
|
const require_releases_github_asset_url = require('./github-asset-url.js');
|
|
8
8
|
const require_releases_github_listing = require('./github-listing.js');
|
|
9
9
|
const require_releases_github_downloads = require('./github-downloads.js');
|
|
10
|
+
const require_releases_socket_btm_binary_naming = require('./socket-btm-binary-naming.js');
|
|
10
11
|
|
|
11
12
|
//#region src/releases/socket-btm.ts
|
|
12
13
|
/**
|
|
@@ -20,26 +21,6 @@ const SOCKET_BTM_REPO = {
|
|
|
20
21
|
repo: "socket-btm"
|
|
21
22
|
};
|
|
22
23
|
/**
|
|
23
|
-
* Map Node.js platform to socket-btm asset platform naming. Identity mapping:
|
|
24
|
-
* asset names use `process.platform` verbatim (`darwin`, `linux`, `win32`) to
|
|
25
|
-
* align with pnpm's pack-app, the `--os` / `supportedArchitectures.os` config
|
|
26
|
-
* keys, and the `@pnpm/exe.<os>-<arch>` package convention.
|
|
27
|
-
*/
|
|
28
|
-
const PLATFORM_MAP = {
|
|
29
|
-
__proto__: null,
|
|
30
|
-
darwin: "darwin",
|
|
31
|
-
linux: "linux",
|
|
32
|
-
win32: "win32"
|
|
33
|
-
};
|
|
34
|
-
/**
|
|
35
|
-
* Map Node.js arch to socket-btm asset arch naming.
|
|
36
|
-
*/
|
|
37
|
-
const ARCH_MAP = {
|
|
38
|
-
__proto__: null,
|
|
39
|
-
arm64: "arm64",
|
|
40
|
-
x64: "x64"
|
|
41
|
-
};
|
|
42
|
-
/**
|
|
43
24
|
* Detect the libc variant (musl or glibc) on Linux systems. Returns undefined
|
|
44
25
|
* for non-Linux platforms.
|
|
45
26
|
*
|
|
@@ -53,17 +34,21 @@ const ARCH_MAP = {
|
|
|
53
34
|
*/
|
|
54
35
|
function detectLibc() {
|
|
55
36
|
/* c8 ignore next 3 */
|
|
56
|
-
if (require_constants_platform.
|
|
37
|
+
if (require_constants_platform.getOs() !== "linux") return;
|
|
57
38
|
/* c8 ignore start - Linux-only musl/glibc detection; tested on
|
|
58
39
|
Linux runners. macOS/Windows runners take the early-return above. */
|
|
59
40
|
try {
|
|
60
|
-
const fs =
|
|
61
|
-
|
|
41
|
+
const fs = require_node_fs.getNodeFs();
|
|
42
|
+
const muslPaths = [
|
|
62
43
|
"/lib/ld-musl-x86_64.so.1",
|
|
63
44
|
"/lib/ld-musl-aarch64.so.1",
|
|
64
45
|
"/usr/lib/ld-musl-x86_64.so.1",
|
|
65
46
|
"/usr/lib/ld-musl-aarch64.so.1"
|
|
66
|
-
]
|
|
47
|
+
];
|
|
48
|
+
for (let i = 0, { length } = muslPaths; i < length; i += 1) {
|
|
49
|
+
const path = muslPaths[i];
|
|
50
|
+
if (fs.existsSync(path)) return "musl";
|
|
51
|
+
}
|
|
67
52
|
return "glibc";
|
|
68
53
|
} catch {
|
|
69
54
|
return "glibc";
|
|
@@ -127,14 +112,14 @@ async function downloadSocketBtmRelease(tool, options) {
|
|
|
127
112
|
removeMacOSQuarantine
|
|
128
113
|
};
|
|
129
114
|
} else {
|
|
130
|
-
const { bin, libc = detectLibc(), removeMacOSQuarantine = true, targetArch = require_constants_platform.getArch(), targetPlatform = require_constants_platform.
|
|
115
|
+
const { bin, libc = detectLibc(), removeMacOSQuarantine = true, targetArch = require_constants_platform.getArch(), targetPlatform = require_constants_platform.getOs() } = {
|
|
131
116
|
__proto__: null,
|
|
132
117
|
...options
|
|
133
118
|
};
|
|
134
119
|
const baseName = bin || tool;
|
|
135
|
-
const assetName = getBinaryAssetName(baseName, targetPlatform, targetArch, libc);
|
|
136
|
-
const platformArch = getPlatformArch(targetPlatform, targetArch, libc);
|
|
137
|
-
const binaryName = getBinaryName(baseName, targetPlatform);
|
|
120
|
+
const assetName = require_releases_socket_btm_binary_naming.getBinaryAssetName(baseName, targetPlatform, targetArch, libc);
|
|
121
|
+
const platformArch = require_releases_socket_btm_binary_naming.getPlatformArch(targetPlatform, targetArch, libc);
|
|
122
|
+
const binaryName = require_releases_socket_btm_binary_naming.getBinaryName(baseName, targetPlatform);
|
|
138
123
|
downloadConfig = {
|
|
139
124
|
owner: SOCKET_BTM_REPO.owner,
|
|
140
125
|
repo: SOCKET_BTM_REPO.repo,
|
|
@@ -152,139 +137,11 @@ async function downloadSocketBtmRelease(tool, options) {
|
|
|
152
137
|
}
|
|
153
138
|
return await require_releases_github_downloads.downloadGitHubRelease(downloadConfig);
|
|
154
139
|
}
|
|
155
|
-
/**
|
|
156
|
-
* Get asset name for a socket-btm binary.
|
|
157
|
-
*
|
|
158
|
-
* @example
|
|
159
|
-
* ;```typescript
|
|
160
|
-
* getBinaryAssetName('lief', 'linux', 'x64', 'musl')
|
|
161
|
-
* // 'lief-linux-x64-musl'
|
|
162
|
-
* ```
|
|
163
|
-
*
|
|
164
|
-
* @param binaryBaseName - Binary basename (e.g., 'binject', 'node')
|
|
165
|
-
* @param platform - Target platform.
|
|
166
|
-
* @param arch - Target architecture.
|
|
167
|
-
* @param libc - Linux libc variant (optional)
|
|
168
|
-
*
|
|
169
|
-
* @returns Asset name (e.g., 'binject-darwin-arm64', 'node-linux-x64-musl')
|
|
170
|
-
*/
|
|
171
|
-
function getBinaryAssetName(binaryBaseName, platform, arch, libc) {
|
|
172
|
-
const mappedArch = ARCH_MAP[arch];
|
|
173
|
-
if (!mappedArch) throw new require_primordials_error.ErrorCtor(`Unsupported architecture: ${arch}`);
|
|
174
|
-
const muslSuffix = platform === "linux" && libc === "musl" ? "-musl" : "";
|
|
175
|
-
const ext = platform === "win32" ? ".exe" : "";
|
|
176
|
-
if (platform === "darwin") return `${binaryBaseName}-darwin-${mappedArch}${ext}`;
|
|
177
|
-
if (platform === "linux") return `${binaryBaseName}-linux-${mappedArch}${muslSuffix}${ext}`;
|
|
178
|
-
if (platform === "win32") return `${binaryBaseName}-win32-${mappedArch}${ext}`;
|
|
179
|
-
throw new require_primordials_error.ErrorCtor(`Unsupported platform: ${platform}`);
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* Get binary filename for output.
|
|
183
|
-
*
|
|
184
|
-
* @example
|
|
185
|
-
* ;```typescript
|
|
186
|
-
* getBinaryName('node', 'win32') // 'node.exe'
|
|
187
|
-
* getBinaryName('node', 'linux') // 'node'
|
|
188
|
-
* ```
|
|
189
|
-
*
|
|
190
|
-
* @param binaryBaseName - Binary basename (e.g., 'node', 'binject')
|
|
191
|
-
* @param platform - Target platform.
|
|
192
|
-
*
|
|
193
|
-
* @returns Binary filename (e.g., 'node', 'node.exe')
|
|
194
|
-
*/
|
|
195
|
-
function getBinaryName(binaryBaseName, platform) {
|
|
196
|
-
return platform === "win32" ? `${binaryBaseName}.exe` : binaryBaseName;
|
|
197
|
-
}
|
|
198
|
-
/**
|
|
199
|
-
* Lazily load the fs module to avoid Webpack errors. Uses non-'node:' prefixed
|
|
200
|
-
* require to prevent Webpack bundling issues.
|
|
201
|
-
*
|
|
202
|
-
* @private
|
|
203
|
-
*/
|
|
204
|
-
/**
|
|
205
|
-
* Get platform-arch identifier for directory structure and asset names.
|
|
206
|
-
*
|
|
207
|
-
* # Format: `<os>-<arch>[-<libc>]`
|
|
208
|
-
*
|
|
209
|
-
* The OS segment is `process.platform` verbatim: `darwin` / `linux` / `win32`.
|
|
210
|
-
* The arch segment is `process.arch` verbatim: `x64` / `arm64`. The optional
|
|
211
|
-
* libc suffix is `-musl` (Linux only; the glibc default is unsuffixed to match
|
|
212
|
-
* Node.js's own linuxstatic convention).
|
|
213
|
-
*
|
|
214
|
-
* # Why these specific conventions
|
|
215
|
-
*
|
|
216
|
-
* ## Why `win32`, not `win`
|
|
217
|
-
*
|
|
218
|
-
* `win32` is what `process.platform` returns on every Windows host. Every npm
|
|
219
|
-
* package whose install-time platform filter uses the standard `os` / `cpu` /
|
|
220
|
-
* `libc` manifest fields must match `process.platform` strings exactly (npm
|
|
221
|
-
* compares them verbatim — there's no shorthand layer). Using `win` internally
|
|
222
|
-
* here would have forced a translation every time we constructed an install
|
|
223
|
-
* filter or a target triple, and reviewers would have to remember "we
|
|
224
|
-
* abbreviate on disk but not in package filters." Since the two now match,
|
|
225
|
-
* there's no translation step to get wrong.
|
|
226
|
-
*
|
|
227
|
-
* Pnpm's pack-app (v11+) accepts `<os>-<arch>[-<libc>]` target strings and its
|
|
228
|
-
* shards are `@pnpm/exe.<os>-<arch>` (with `win32`, not `win` — see
|
|
229
|
-
* pnpm#11314). Our naming matches so asset names we emit can flow directly into
|
|
230
|
-
* pack-app's `--target` arg, `pnpm.app.targets` config, and
|
|
231
|
-
* sibling-package-name construction without a translation map.
|
|
232
|
-
*
|
|
233
|
-
* ## Why `-musl` is the suffix (and glibc is unsuffixed)
|
|
234
|
-
*
|
|
235
|
-
* Node.js's own linuxstatic tarballs historically used the unqualified `linux`
|
|
236
|
-
* for glibc and a separate download channel for musl. The pnpm ecosystem
|
|
237
|
-
* codified that as `linux-<arch>` (glibc, default) and `linux-<arch>-musl` (the
|
|
238
|
-
* libc outlier), matching the asymmetric reality of Linux distros — glibc is
|
|
239
|
-
* the majority case, musl is Alpine-and-similar. Adding `-glibc` for the
|
|
240
|
-
* default would be redundant noise in the name.
|
|
241
|
-
*
|
|
242
|
-
* ## Why libc is only appended for Linux
|
|
243
|
-
*
|
|
244
|
-
* MacOS and Windows have exactly one system libc each (Apple libSystem,
|
|
245
|
-
* Microsoft UCRT). A hypothetical `darwin-arm64-libsystem` conveys no
|
|
246
|
-
* information. Node.js, npm, and pnpm all treat libc as a Linux-only axis; we
|
|
247
|
-
* follow the same convention so callers don't have to special- case
|
|
248
|
-
* `'darwin-arm64'.startsWith('darwin-arm64')` style matches.
|
|
249
|
-
*
|
|
250
|
-
* ## Why this function exists at all (vs. inlining)
|
|
251
|
-
*
|
|
252
|
-
* Two upstream APIs that socket-btm consumers end up calling — the npm manifest
|
|
253
|
-
* filter (`os`/`cpu`/`libc`) and pnpm's pack-app `--target` — both need the
|
|
254
|
-
* exact same triple format. Centralizing the construction here means a future
|
|
255
|
-
* schema change (e.g. Node introducing `riscv64`) gets one edit, and the error
|
|
256
|
-
* message for an unsupported platform is uniform across downloaders, pack-app
|
|
257
|
-
* invocations, and the `@socketbin/*` resolver logic.
|
|
258
|
-
*
|
|
259
|
-
* @example
|
|
260
|
-
* ;```typescript
|
|
261
|
-
* getPlatformArch('linux', 'x64', 'musl') // 'linux-x64-musl'
|
|
262
|
-
* getPlatformArch('darwin', 'arm64') // 'darwin-arm64'
|
|
263
|
-
* getPlatformArch('win32', 'x64') // 'win32-x64'
|
|
264
|
-
* getPlatformArch('darwin', 'x64', 'musl') // 'darwin-x64' — libc ignored
|
|
265
|
-
* ```
|
|
266
|
-
*
|
|
267
|
-
* @param platform - Target platform.
|
|
268
|
-
* @param arch - Target architecture.
|
|
269
|
-
* @param libc - Linux libc variant (optional; non-linux platforms ignore)
|
|
270
|
-
*
|
|
271
|
-
* @returns Platform-arch identifier (e.g., 'darwin-arm64', 'linux-x64-musl',
|
|
272
|
-
* 'win32-x64')
|
|
273
|
-
*/
|
|
274
|
-
function getPlatformArch(platform, arch, libc) {
|
|
275
|
-
/* c8 ignore start */
|
|
276
|
-
const mappedPlatform = PLATFORM_MAP[platform];
|
|
277
|
-
if (!mappedPlatform) throw new require_primordials_error.ErrorCtor(`Unsupported platform: ${platform}`);
|
|
278
|
-
const mappedArch = ARCH_MAP[arch];
|
|
279
|
-
if (!mappedArch) throw new require_primordials_error.ErrorCtor(`Unsupported architecture: ${arch}`);
|
|
280
|
-
return `${mappedPlatform}-${mappedArch}${platform === "linux" && libc === "musl" ? "-musl" : ""}`;
|
|
281
|
-
/* c8 ignore stop */
|
|
282
|
-
}
|
|
283
140
|
|
|
284
141
|
//#endregion
|
|
285
142
|
exports.SOCKET_BTM_REPO = SOCKET_BTM_REPO;
|
|
286
143
|
exports.detectLibc = detectLibc;
|
|
287
144
|
exports.downloadSocketBtmRelease = downloadSocketBtmRelease;
|
|
288
|
-
exports.getBinaryAssetName = getBinaryAssetName;
|
|
289
|
-
exports.getBinaryName = getBinaryName;
|
|
290
|
-
exports.getPlatformArch = getPlatformArch;
|
|
145
|
+
exports.getBinaryAssetName = require_releases_socket_btm_binary_naming.getBinaryAssetName;
|
|
146
|
+
exports.getBinaryName = require_releases_socket_btm_binary_naming.getBinaryName;
|
|
147
|
+
exports.getPlatformArch = require_releases_socket_btm_binary_naming.getPlatformArch;
|
package/dist/schema/types.d.ts
CHANGED
|
@@ -24,7 +24,7 @@ export interface ParseResult<T> {
|
|
|
24
24
|
/**
|
|
25
25
|
* Error information (only present when `success` is `false`)
|
|
26
26
|
*/
|
|
27
|
-
error?: unknown;
|
|
27
|
+
error?: unknown | undefined;
|
|
28
28
|
}
|
|
29
29
|
/**
|
|
30
30
|
* Zod-shaped duck-type for any validator exposing `safeParse` / `parse`.
|
|
@@ -62,7 +62,7 @@ export interface Schema<T = unknown> {
|
|
|
62
62
|
*
|
|
63
63
|
* @internal
|
|
64
64
|
*/
|
|
65
|
-
interface ZodV4LikeSchema<O = unknown> {
|
|
65
|
+
export interface ZodV4LikeSchema<O = unknown> {
|
|
66
66
|
_zod: {
|
|
67
67
|
output: O;
|
|
68
68
|
};
|
|
@@ -74,7 +74,7 @@ interface ZodV4LikeSchema<O = unknown> {
|
|
|
74
74
|
*
|
|
75
75
|
* @internal
|
|
76
76
|
*/
|
|
77
|
-
interface ZodV3LikeSchema<O = unknown> {
|
|
77
|
+
export interface ZodV3LikeSchema<O = unknown> {
|
|
78
78
|
_output: O;
|
|
79
79
|
safeParse(data: unknown): unknown;
|
|
80
80
|
}
|
|
@@ -85,7 +85,7 @@ interface ZodV3LikeSchema<O = unknown> {
|
|
|
85
85
|
*
|
|
86
86
|
* @internal
|
|
87
87
|
*/
|
|
88
|
-
interface TypeBoxLikeSchema {
|
|
88
|
+
export interface TypeBoxLikeSchema {
|
|
89
89
|
static: unknown;
|
|
90
90
|
}
|
|
91
91
|
/**
|
|
@@ -130,4 +130,3 @@ export type ValidateResult<T> = {
|
|
|
130
130
|
ok: false;
|
|
131
131
|
errors: ValidationIssue[];
|
|
132
132
|
};
|
|
133
|
-
export {};
|
package/dist/schema/validate.js
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
4
|
const require_primordials_error = require('../primordials/error.js');
|
|
5
5
|
const require_primordials_number = require('../primordials/number.js');
|
|
6
|
-
const require_primordials_array = require('../primordials/array.js');
|
|
7
6
|
const require_primordials_object = require('../primordials/object.js');
|
|
7
|
+
const require_primordials_array = require('../primordials/array.js');
|
|
8
8
|
|
|
9
9
|
//#region src/schema/validate.ts
|
|
10
10
|
/**
|
package/dist/sea/detect.js
CHANGED
|
@@ -23,7 +23,7 @@ node_process = require_runtime.__toESM(node_process);
|
|
|
23
23
|
/**
|
|
24
24
|
* Cached SEA detection result.
|
|
25
25
|
*/
|
|
26
|
-
let
|
|
26
|
+
let isSeaCache;
|
|
27
27
|
/**
|
|
28
28
|
* Get the current SEA binary path. Only valid when running as a SEA binary.
|
|
29
29
|
*
|
|
@@ -36,7 +36,7 @@ let _isSea;
|
|
|
36
36
|
* ```
|
|
37
37
|
*/
|
|
38
38
|
function getSeaBinaryPath() {
|
|
39
|
-
return isSeaBinary() && node_process.default.argv[0] ?
|
|
39
|
+
return isSeaBinary() && node_process.default.argv[0] ? require_paths_normalize.normalizePath(node_process.default.argv[0]) : void 0;
|
|
40
40
|
}
|
|
41
41
|
/**
|
|
42
42
|
* Detect if the current process is running as a SEA binary. Uses Node.js 24+
|
|
@@ -50,12 +50,12 @@ function getSeaBinaryPath() {
|
|
|
50
50
|
* ```
|
|
51
51
|
*/
|
|
52
52
|
function isSeaBinary() {
|
|
53
|
-
if (
|
|
54
|
-
|
|
53
|
+
if (isSeaCache === void 0) try {
|
|
54
|
+
isSeaCache = require("node:sea").isSea();
|
|
55
55
|
} catch {
|
|
56
|
-
|
|
56
|
+
isSeaCache = false;
|
|
57
57
|
}
|
|
58
|
-
return
|
|
58
|
+
return isSeaCache ?? false;
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
//#endregion
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* @file Private internals for `secrets/` — process-scoped read cache for the
|
|
3
3
|
* keychain backend. Underscore-prefixed and skipped by the export generator
|
|
4
4
|
* (`dist/**\/_*` ignore pattern in
|
|
5
|
-
* `scripts/
|
|
6
|
-
* the public API surface. Imported by `./keychain.ts`. Every `readSecret`
|
|
5
|
+
* `scripts/post-build/make-package-exports.mts`) so this module is NOT part
|
|
6
|
+
* of the public API surface. Imported by `./keychain.ts`. Every `readSecret`
|
|
7
7
|
* call shells out to the OS credential CLI (`security`, `secret-tool`,
|
|
8
8
|
* PowerShell). On macOS, the first read of a given entry by a new binary path
|
|
9
9
|
* triggers a Keychain auth prompt unless the entry was written with `-A -T
|
|
@@ -8,8 +8,8 @@ const require_primordials_map_set = require('../primordials/map-set.js');
|
|
|
8
8
|
* @file Private internals for `secrets/` — process-scoped read cache for the
|
|
9
9
|
* keychain backend. Underscore-prefixed and skipped by the export generator
|
|
10
10
|
* (`dist/**\/_*` ignore pattern in
|
|
11
|
-
* `scripts/
|
|
12
|
-
* the public API surface. Imported by `./keychain.ts`. Every `readSecret`
|
|
11
|
+
* `scripts/post-build/make-package-exports.mts`) so this module is NOT part
|
|
12
|
+
* of the public API surface. Imported by `./keychain.ts`. Every `readSecret`
|
|
13
13
|
* call shells out to the OS credential CLI (`security`, `secret-tool`,
|
|
14
14
|
* PowerShell). On macOS, the first read of a given entry by a new binary path
|
|
15
15
|
* triggers a Keychain auth prompt unless the entry was written with `-A -T
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Constant-time secret comparison. Wraps Node's `crypto.timingSafeEqual`
|
|
3
|
+
* so every secret comparison in the codebase runs through one helper that
|
|
4
|
+
* refuses to short-circuit on the first mismatched byte. Why this matters:
|
|
5
|
+
*
|
|
6
|
+
* - `===` / `!==` on JS strings short-circuits at the first byte mismatch. An
|
|
7
|
+
* attacker who can measure server response time can binary-search the
|
|
8
|
+
* secret one byte at a time: `'a000...'`, `'b000...'`, … until the response
|
|
9
|
+
* slows down at the right first byte, then on to byte 2. Same trap for
|
|
10
|
+
* `Buffer.compare` and `==`.
|
|
11
|
+
* - `crypto.timingSafeEqual` runs in O(n) regardless of where the first
|
|
12
|
+
* mismatch is. Each iteration is the same cost so the timing channel
|
|
13
|
+
* carries no information about which byte mismatched. Use whenever
|
|
14
|
+
* comparing two values that include a secret (session token, API key, MAC,
|
|
15
|
+
* expected-hash). Don't use for path strings or other non-secret
|
|
16
|
+
* comparisons — `===` is fine there and faster. Patterned after pilcrow's
|
|
17
|
+
* `crypto.go::constantTimeCompare`, the canonical shape in
|
|
18
|
+
* passwordless-example.auth.pilcrowonpaper.com — wrap once, use everywhere,
|
|
19
|
+
* never byte-compare a secret directly.
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* Compare two secrets in constant time. Returns `true` when the inputs are
|
|
23
|
+
* byte-equal. Returns `false` when they differ **or** when the byte-lengths
|
|
24
|
+
* differ. Never throws.
|
|
25
|
+
*
|
|
26
|
+
* Length mismatch handling: `timingSafeEqual` itself throws on length mismatch
|
|
27
|
+
* (it can't preserve the timing-safety contract across differently- sized
|
|
28
|
+
* buffers). We catch that and return `false` so callers don't need a length
|
|
29
|
+
* pre-check.
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ;```typescript
|
|
33
|
+
* import { compareSecrets } from '@socketsecurity/lib/secrets/compare'
|
|
34
|
+
*
|
|
35
|
+
* if (!compareSecrets(presentedToken, storedToken)) {
|
|
36
|
+
* throw new Error('invalid token')
|
|
37
|
+
* }
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* @param a - First secret (string or Buffer).
|
|
41
|
+
* @param b - Second secret (string or Buffer).
|
|
42
|
+
*
|
|
43
|
+
* @returns `true` when `a` and `b` are byte-equal; `false` otherwise.
|
|
44
|
+
*/
|
|
45
|
+
export declare function compareSecrets(a: Buffer | string, b: Buffer | string): boolean;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* Socket Lib - Built with rolldown */
|
|
3
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
|
+
const require_runtime = require('../_virtual/_rolldown/runtime.js');
|
|
5
|
+
let node_crypto = require("node:crypto");
|
|
6
|
+
node_crypto = require_runtime.__toESM(node_crypto);
|
|
7
|
+
|
|
8
|
+
//#region src/secrets/compare.ts
|
|
9
|
+
/**
|
|
10
|
+
* @file Constant-time secret comparison. Wraps Node's `crypto.timingSafeEqual`
|
|
11
|
+
* so every secret comparison in the codebase runs through one helper that
|
|
12
|
+
* refuses to short-circuit on the first mismatched byte. Why this matters:
|
|
13
|
+
*
|
|
14
|
+
* - `===` / `!==` on JS strings short-circuits at the first byte mismatch. An
|
|
15
|
+
* attacker who can measure server response time can binary-search the
|
|
16
|
+
* secret one byte at a time: `'a000...'`, `'b000...'`, … until the response
|
|
17
|
+
* slows down at the right first byte, then on to byte 2. Same trap for
|
|
18
|
+
* `Buffer.compare` and `==`.
|
|
19
|
+
* - `crypto.timingSafeEqual` runs in O(n) regardless of where the first
|
|
20
|
+
* mismatch is. Each iteration is the same cost so the timing channel
|
|
21
|
+
* carries no information about which byte mismatched. Use whenever
|
|
22
|
+
* comparing two values that include a secret (session token, API key, MAC,
|
|
23
|
+
* expected-hash). Don't use for path strings or other non-secret
|
|
24
|
+
* comparisons — `===` is fine there and faster. Patterned after pilcrow's
|
|
25
|
+
* `crypto.go::constantTimeCompare`, the canonical shape in
|
|
26
|
+
* passwordless-example.auth.pilcrowonpaper.com — wrap once, use everywhere,
|
|
27
|
+
* never byte-compare a secret directly.
|
|
28
|
+
*/
|
|
29
|
+
/**
|
|
30
|
+
* Compare two secrets in constant time. Returns `true` when the inputs are
|
|
31
|
+
* byte-equal. Returns `false` when they differ **or** when the byte-lengths
|
|
32
|
+
* differ. Never throws.
|
|
33
|
+
*
|
|
34
|
+
* Length mismatch handling: `timingSafeEqual` itself throws on length mismatch
|
|
35
|
+
* (it can't preserve the timing-safety contract across differently- sized
|
|
36
|
+
* buffers). We catch that and return `false` so callers don't need a length
|
|
37
|
+
* pre-check.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ;```typescript
|
|
41
|
+
* import { compareSecrets } from '@socketsecurity/lib/secrets/compare'
|
|
42
|
+
*
|
|
43
|
+
* if (!compareSecrets(presentedToken, storedToken)) {
|
|
44
|
+
* throw new Error('invalid token')
|
|
45
|
+
* }
|
|
46
|
+
* ```
|
|
47
|
+
*
|
|
48
|
+
* @param a - First secret (string or Buffer).
|
|
49
|
+
* @param b - Second secret (string or Buffer).
|
|
50
|
+
*
|
|
51
|
+
* @returns `true` when `a` and `b` are byte-equal; `false` otherwise.
|
|
52
|
+
*/
|
|
53
|
+
function compareSecrets(a, b) {
|
|
54
|
+
const ab = typeof a === "string" ? Buffer.from(a, "utf8") : a;
|
|
55
|
+
const bb = typeof b === "string" ? Buffer.from(b, "utf8") : b;
|
|
56
|
+
if (ab.length !== bb.length) return false;
|
|
57
|
+
return node_crypto.default.timingSafeEqual(ab, bb);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
//#endregion
|
|
61
|
+
exports.compareSecrets = compareSecrets;
|
package/dist/secrets/find.d.ts
CHANGED
|
@@ -71,9 +71,9 @@ export declare function readEnv(name: string): string | undefined;
|
|
|
71
71
|
* `undefined` when neither source has the value — the caller's signal to prompt
|
|
72
72
|
* the user or surface a setup hint.
|
|
73
73
|
*/
|
|
74
|
-
export declare function resolve(
|
|
74
|
+
export declare function resolve(options: ResolveOptions): Promise<ResolveResult | undefined>;
|
|
75
75
|
/**
|
|
76
76
|
* Sync variant for non-async callers (hook initializers, schema validators that
|
|
77
77
|
* run before any `await` machinery exists).
|
|
78
78
|
*/
|
|
79
|
-
export declare function resolveSync(
|
|
79
|
+
export declare function resolveSync(options: ResolveOptions): ResolveResult | undefined;
|
package/dist/secrets/find.js
CHANGED
|
@@ -42,8 +42,11 @@ function readEnv(name) {
|
|
|
42
42
|
* `undefined` when neither source has the value — the caller's signal to prompt
|
|
43
43
|
* the user or surface a setup hint.
|
|
44
44
|
*/
|
|
45
|
-
async function resolve(
|
|
46
|
-
const { accounts, allowEnvOnly, service } =
|
|
45
|
+
async function resolve(options) {
|
|
46
|
+
const { accounts, allowEnvOnly, service } = {
|
|
47
|
+
__proto__: null,
|
|
48
|
+
...options
|
|
49
|
+
};
|
|
47
50
|
for (let i = 0, { length } = accounts; i < length; i += 1) {
|
|
48
51
|
const account = accounts[i];
|
|
49
52
|
const fromEnv = readEnv(account);
|
|
@@ -71,8 +74,11 @@ async function resolve(opts) {
|
|
|
71
74
|
* Sync variant for non-async callers (hook initializers, schema validators that
|
|
72
75
|
* run before any `await` machinery exists).
|
|
73
76
|
*/
|
|
74
|
-
function resolveSync(
|
|
75
|
-
const { accounts, allowEnvOnly, service } =
|
|
77
|
+
function resolveSync(options) {
|
|
78
|
+
const { accounts, allowEnvOnly, service } = {
|
|
79
|
+
__proto__: null,
|
|
80
|
+
...options
|
|
81
|
+
};
|
|
76
82
|
for (let i = 0, { length } = accounts; i < length; i += 1) {
|
|
77
83
|
const account = accounts[i];
|
|
78
84
|
const fromEnv = readEnv(account);
|
|
@@ -46,7 +46,7 @@ export declare function deleteSecretFromSlotsSync({ service, accounts, }: Delete
|
|
|
46
46
|
export declare function deleteSecretSync({ service, account, }: DeleteOptions): 'removed' | 'absent';
|
|
47
47
|
export type { BackendAvailability, SecretDeleteResult, SecretWriteResult, } from './types';
|
|
48
48
|
export type { SecretSlot } from './types';
|
|
49
|
-
type Platform = 'darwin' | 'linux' | 'win32' | 'other';
|
|
49
|
+
export type Platform = 'darwin' | 'linux' | 'win32' | 'other';
|
|
50
50
|
/**
|
|
51
51
|
* Resolve the current OS to one of our four backend categories.
|
|
52
52
|
*
|
package/dist/secrets/keychain.js
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/* Socket Lib - Built with rolldown */
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
|
+
const require_runtime = require('../_virtual/_rolldown/runtime.js');
|
|
4
5
|
const require_primordials_error = require('../primordials/error.js');
|
|
5
6
|
const require_secrets__internal = require('./_internal.js');
|
|
6
7
|
const require_secrets_macos = require('./macos.js');
|
|
7
8
|
const require_secrets_linux = require('./linux.js');
|
|
8
9
|
const require_secrets_windows = require('./windows.js');
|
|
9
10
|
let node_os = require("node:os");
|
|
11
|
+
node_os = require_runtime.__toESM(node_os);
|
|
10
12
|
|
|
11
13
|
//#region src/secrets/keychain.ts
|
|
12
14
|
/**
|
|
@@ -118,7 +120,7 @@ function deleteSecretSync({ service, account }) {
|
|
|
118
120
|
* @internal
|
|
119
121
|
*/
|
|
120
122
|
function detectPlatform() {
|
|
121
|
-
const p =
|
|
123
|
+
const p = node_os.default.platform();
|
|
122
124
|
if (p === "darwin" || p === "linux" || p === "win32") return p;
|
|
123
125
|
return "other";
|
|
124
126
|
}
|
|
@@ -150,7 +152,7 @@ function getBackendAvailability() {
|
|
|
150
152
|
default: return {
|
|
151
153
|
available: false,
|
|
152
154
|
toolName: "n/a",
|
|
153
|
-
installHint: `Platform ${
|
|
155
|
+
installHint: `Platform ${node_os.default.platform()} is not supported.`
|
|
154
156
|
};
|
|
155
157
|
}
|
|
156
158
|
}
|
|
@@ -231,7 +233,7 @@ function readSecretSync({ service, account }) {
|
|
|
231
233
|
async function writeSecret({ service, account, value, label }) {
|
|
232
234
|
if (!value || typeof value !== "string") throw new require_primordials_error.TypeErrorCtor("writeSecret: value must be a non-empty string");
|
|
233
235
|
const platform_ = detectPlatform();
|
|
234
|
-
if (platform_ === "other") throw new require_primordials_error.ErrorCtor(`Unsupported platform: ${
|
|
236
|
+
if (platform_ === "other") throw new require_primordials_error.ErrorCtor(`Unsupported platform: ${node_os.default.platform()}. Secret storage requires macOS, Linux, or Windows.`);
|
|
235
237
|
if (await readSecret({
|
|
236
238
|
service,
|
|
237
239
|
account
|
|
@@ -254,7 +256,7 @@ async function writeSecret({ service, account, value, label }) {
|
|
|
254
256
|
function writeSecretSync({ service, account, value, label }) {
|
|
255
257
|
if (!value || typeof value !== "string") throw new require_primordials_error.TypeErrorCtor("writeSecret: value must be a non-empty string");
|
|
256
258
|
const platform_ = detectPlatform();
|
|
257
|
-
if (platform_ === "other") throw new require_primordials_error.ErrorCtor(`Unsupported platform: ${
|
|
259
|
+
if (platform_ === "other") throw new require_primordials_error.ErrorCtor(`Unsupported platform: ${node_os.default.platform()}. Secret storage requires macOS, Linux, or Windows.`);
|
|
258
260
|
if (readSecretSync({
|
|
259
261
|
service,
|
|
260
262
|
account
|