@socketsecurity/lib 6.0.5 → 6.0.7
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 +43 -0
- package/dist/ai/discover.d.mts +2 -2
- package/dist/ai/discover.js +6 -4
- package/dist/ai/spawn.js +10 -6
- package/dist/ai/types.d.mts +18 -6
- package/dist/ai/worktree.d.mts +6 -6
- package/dist/ai/worktree.js +12 -7
- 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 +6 -6
- package/dist/archives/zip.js +4 -6
- 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 +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 +43 -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/acorn-bindgen.cjs +769 -0
- package/dist/bin/acorn.wasm +0 -0
- package/dist/bin/exec.js +2 -3
- package/dist/bin/find.js +13 -13
- package/dist/bin/prim.cjs +39244 -0
- package/dist/bin/resolve.js +12 -13
- package/dist/bin/which.js +8 -8
- package/dist/cache/ttl/store.js +5 -5
- 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 +11 -11
- package/dist/{bin → cli}/check-primordials.js +56 -52
- package/dist/{bin → cli}/check.js +6 -5
- 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 +20 -19
- package/dist/compression/brotli.d.ts +25 -25
- package/dist/compression/brotli.js +37 -44
- package/dist/compression/gzip.d.ts +23 -23
- package/dist/compression/gzip.js +44 -52
- 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.js +22 -28
- 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.js +1 -1
- package/dist/cover/code.js +8 -8
- package/dist/cover/formatters.js +5 -5
- package/dist/crypto/hash.d.ts +26 -1
- package/dist/crypto/hash.js +43 -12
- package/dist/debug/_internal.js +4 -6
- package/dist/debug/caller-info.js +2 -3
- 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 +6 -6
- package/dist/dlx/binary-cache.js +14 -14
- package/dist/dlx/binary-download.d.ts +1 -1
- package/dist/dlx/binary-download.js +14 -13
- package/dist/dlx/binary-resolution.js +16 -14
- 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 +34 -25
- package/dist/dlx/detect.js +86 -77
- package/dist/dlx/dir.js +2 -2
- package/dist/dlx/firewall.d.ts +1 -1
- package/dist/dlx/lockfile.d.ts +19 -18
- package/dist/dlx/lockfile.js +16 -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 +16 -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 +1 -1
- package/dist/eco/cargo/parse-lockfile.js +2 -2
- package/dist/eco/manifest/analyze-lockfile.js +2 -2
- package/dist/eco/manifest/detect-format.js +4 -4
- 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 +14 -14
- package/dist/eco/npm/npm/parse-lockfile.js +3 -3
- 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 +1 -1
- package/dist/eco/npm/pnpm/parse-lockfile.js +4 -4
- package/dist/eco/npm/script.js +9 -6
- package/dist/eco/npm/yarnpkg/yarn/exec.js +3 -3
- package/dist/eco/npm/yarnpkg/yarn/parse-lockfile.d.ts +2 -2
- package/dist/eco/npm/yarnpkg/yarn/parse-lockfile.js +8 -8
- 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/rewire.d.ts +7 -6
- package/dist/env/rewire.js +15 -16
- 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 +1 -109
- package/dist/env/socket.js +12 -166
- 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/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/@sinclair/typebox/value.js +5 -1
- package/dist/external/@sinclair/typebox.js +5 -1
- package/dist/external/@socketregistry/packageurl-js.js +27 -0
- package/dist/external/npm-pack.js +2 -2
- package/dist/external-tools/bazel/read-bazel-version-file.js +1 -1
- package/dist/external-tools/bazel/resolve.js +2 -1
- package/dist/external-tools/bazel/types.d.ts +1 -1
- package/dist/external-tools/cdxgen/from-vfs.js +1 -1
- package/dist/external-tools/cdxgen/resolve.js +2 -1
- package/dist/external-tools/cdxgen/types.d.ts +1 -1
- package/dist/external-tools/from-download.d.ts +1 -1
- package/dist/external-tools/from-download.js +1 -1
- package/dist/external-tools/from-pip-venv.d.ts +73 -0
- package/dist/external-tools/from-pip-venv.js +98 -0
- package/dist/external-tools/janus/asset-names.js +1 -1
- package/dist/external-tools/janus/from-download.js +3 -5
- package/dist/external-tools/janus/from-vfs.js +1 -1
- package/dist/external-tools/janus/resolve.js +2 -1
- package/dist/external-tools/janus/types.d.ts +1 -1
- 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.js +2 -1
- package/dist/external-tools/jre/from-vfs.js +1 -1
- package/dist/external-tools/jre/resolve.js +2 -1
- package/dist/external-tools/jre/types.d.ts +1 -1
- package/dist/external-tools/manifest.d.ts +7 -7
- package/dist/external-tools/manifest.js +18 -16
- package/dist/external-tools/opengrep/from-vfs.js +1 -1
- package/dist/external-tools/opengrep/resolve.js +2 -1
- 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 +104 -0
- package/dist/external-tools/python/dlx.d.ts +80 -0
- package/dist/external-tools/python/dlx.js +87 -0
- package/dist/external-tools/python/from-download.d.ts +53 -0
- package/dist/external-tools/python/from-download.js +68 -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 +173 -0
- package/dist/external-tools/python/pip-install.d.ts +75 -0
- package/dist/external-tools/python/pip-install.js +139 -0
- package/dist/external-tools/python/resolve.d.ts +42 -0
- package/dist/external-tools/python/resolve.js +58 -0
- package/dist/external-tools/python/types.d.ts +49 -0
- package/dist/external-tools/sbt/from-vfs.js +1 -1
- package/dist/external-tools/sbt/resolve.js +2 -1
- package/dist/external-tools/sbt/types.d.ts +1 -1
- package/dist/external-tools/skillspector/from-dlx.d.ts +24 -0
- package/dist/external-tools/skillspector/from-dlx.js +41 -0
- package/dist/external-tools/skillspector/from-path.d.ts +8 -0
- package/dist/external-tools/skillspector/from-path.js +30 -0
- package/dist/external-tools/skillspector/from-vfs.d.ts +8 -0
- package/dist/external-tools/skillspector/from-vfs.js +27 -0
- package/dist/external-tools/skillspector/resolve.d.ts +34 -0
- package/dist/external-tools/skillspector/resolve.js +53 -0
- package/dist/external-tools/skillspector/types.d.ts +24 -0
- package/dist/external-tools/skillspector/types.js +2 -0
- package/dist/external-tools/synp/from-download.js +2 -2
- package/dist/external-tools/synp/from-vfs.js +1 -1
- package/dist/external-tools/synp/resolve.js +2 -1
- package/dist/external-tools/trivy/from-vfs.js +1 -1
- package/dist/external-tools/trivy/resolve.js +2 -1
- package/dist/external-tools/trivy/types.d.ts +1 -1
- package/dist/external-tools/trufflehog/from-vfs.js +1 -1
- package/dist/external-tools/trufflehog/resolve.js +2 -1
- 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/{path-cache.js → allowed-dirs-cache.js} +1 -1
- package/dist/fs/encoding.js +5 -7
- package/dist/fs/{find-up.js → find.js} +11 -13
- 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 +6 -4
- package/dist/fs/read-json-cache.js +9 -6
- package/dist/fs/read-json.js +4 -6
- package/dist/fs/resolve-module.js +1 -1
- package/dist/fs/safe.d.ts +1 -1
- package/dist/fs/safe.js +12 -13
- 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 +12 -11
- package/dist/git/changed.js +4 -4
- package/dist/git/repo.js +3 -3
- package/dist/git/staged.js +4 -4
- package/dist/git/unstaged.js +4 -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-rest.js +5 -5
- 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 +7 -9
- package/dist/globs/match.js +6 -7
- package/dist/globs/matcher.d.ts +3 -3
- package/dist/globs/matcher.js +12 -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 +21 -13
- 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 +4 -4
- package/dist/http-request/headers.d.ts +32 -3
- package/dist/http-request/headers.js +41 -13
- package/dist/http-request/request-attempt.js +38 -33
- package/dist/http-request/request-types.d.ts +7 -2
- package/dist/http-request/request.js +33 -16
- package/dist/http-request/response-reader.d.ts +12 -1
- package/dist/http-request/response-reader.js +22 -2
- package/dist/http-request/user-agent.js +3 -4
- package/dist/integrity.d.ts +86 -18
- package/dist/integrity.js +119 -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 +13 -14
- package/dist/json/format.js +2 -2
- 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 +141 -0
- package/dist/native-messaging/rate-limit.d.ts +62 -0
- package/dist/native-messaging/rate-limit.js +115 -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.js +4 -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.js +4 -3
- package/dist/node/path.js +4 -3
- 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 +5 -7
- package/dist/objects/inspect.js +1 -4
- package/dist/objects/mutate.js +2 -3
- package/dist/objects/predicates.js +0 -4
- package/dist/objects/sort.js +3 -7
- package/dist/packages/edit-class.js +15 -16
- package/dist/packages/edit.js +12 -14
- package/dist/packages/exports.js +11 -17
- 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 +16 -16
- package/dist/packages/manifest.js +12 -15
- package/dist/packages/metadata-extensions.d.ts +14 -0
- package/dist/packages/metadata-extensions.js +43 -0
- package/dist/packages/normalize.js +5 -9
- package/dist/packages/provenance.d.ts +6 -0
- package/dist/packages/provenance.js +25 -18
- 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 +74 -11
- package/dist/packages/tarball.d.ts +24 -0
- package/dist/packages/tarball.js +79 -0
- package/dist/packages/types.d.ts +21 -20
- 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/filenames.d.ts +0 -1
- package/dist/paths/filenames.js +0 -2
- package/dist/paths/normalize.js +6 -5
- package/dist/paths/packages.js +4 -7
- package/dist/paths/predicates.js +9 -16
- package/dist/paths/resolve.js +11 -14
- package/dist/paths/rewire.js +3 -3
- package/dist/paths/socket.js +16 -16
- 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/string.d.ts +2 -2
- package/dist/primordials/string.js +6 -6
- package/dist/primordials/symbol.js +3 -3
- 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 +14 -14
- package/dist/process/spawn/errors.js +2 -4
- 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 +12 -16
- 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/releases/github-archives.d.ts +6 -6
- package/dist/releases/github-archives.js +2 -2
- 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 +11 -2
- 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 +1 -1
- package/dist/sea/detect.js +6 -6
- package/dist/secrets/_internal.d.ts +2 -2
- package/dist/secrets/_internal.js +5 -4
- package/dist/secrets/compare.d.ts +45 -0
- package/dist/secrets/compare.js +61 -0
- package/dist/secrets/keychain.js +9 -6
- package/dist/secrets/linux.js +25 -23
- package/dist/secrets/macos.d.ts +1 -1
- package/dist/secrets/macos.js +18 -16
- package/dist/secrets/rc.d.ts +2 -2
- package/dist/secrets/rc.js +15 -10
- package/dist/secrets/socket-api-token.d.ts +4 -4
- package/dist/secrets/socket-api-token.js +18 -9
- package/dist/secrets/windows.js +21 -17
- package/dist/shadow/skip.js +2 -2
- package/dist/shell/parse.d.ts +108 -1
- package/dist/shell/parse.js +168 -2
- 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 +101 -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 +4 -5
- package/dist/spinner/spinner.js +18 -705
- 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 +5 -5
- package/dist/stdio/prompts.d.ts +5 -3
- package/dist/stdio/prompts.js +6 -7
- 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 +4 -2
- package/dist/temporal/slots.js +7 -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/parse.js +0 -2
- package/dist/url/predicates.js +1 -2
- package/dist/url/search-params.js +3 -9
- package/dist/url/types.d.ts +5 -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.d.ts +24 -2
- package/dist/words/pluralize.js +47 -2
- package/dist/words/types.d.ts +25 -2
- package/package.json +289 -108
- 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 -52
- package/dist/external-tools/uv/types.d.ts +0 -24
- 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/{path-cache.d.ts → allowed-dirs-cache.d.ts} +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
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* Socket Lib - Built with rolldown */
|
|
3
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
|
+
const require_primordials_error = require('../primordials/error.js');
|
|
5
|
+
|
|
6
|
+
//#region src/releases/socket-btm-binary-naming.ts
|
|
7
|
+
/**
|
|
8
|
+
* Map Node.js platform to socket-btm asset platform naming. Identity mapping:
|
|
9
|
+
* asset names use `process.platform` verbatim (`darwin`, `linux`, `win32`) to
|
|
10
|
+
* align with pnpm's pack-app, the `--os` / `supportedArchitectures.os` config
|
|
11
|
+
* keys, and the `@pnpm/exe.<os>-<arch>` package convention.
|
|
12
|
+
*/
|
|
13
|
+
const PLATFORM_MAP = {
|
|
14
|
+
__proto__: null,
|
|
15
|
+
darwin: "darwin",
|
|
16
|
+
linux: "linux",
|
|
17
|
+
win32: "win32"
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Map Node.js arch to socket-btm asset arch naming.
|
|
21
|
+
*/
|
|
22
|
+
const ARCH_MAP = {
|
|
23
|
+
__proto__: null,
|
|
24
|
+
arm64: "arm64",
|
|
25
|
+
x64: "x64"
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Get asset name for a socket-btm binary.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ;```typescript
|
|
32
|
+
* getBinaryAssetName('lief', 'linux', 'x64', 'musl')
|
|
33
|
+
* // 'lief-linux-x64-musl'
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* @param binaryBaseName - Binary basename (e.g., 'binject', 'node')
|
|
37
|
+
* @param platform - Target platform.
|
|
38
|
+
* @param arch - Target architecture.
|
|
39
|
+
* @param libc - Linux libc variant (optional)
|
|
40
|
+
*
|
|
41
|
+
* @returns Asset name (e.g., 'binject-darwin-arm64', 'node-linux-x64-musl')
|
|
42
|
+
*/
|
|
43
|
+
function getBinaryAssetName(binaryBaseName, platform, arch, libc) {
|
|
44
|
+
const mappedArch = ARCH_MAP[arch];
|
|
45
|
+
if (!mappedArch) throw new require_primordials_error.ErrorCtor(`Unsupported architecture: ${arch}`);
|
|
46
|
+
const muslSuffix = platform === "linux" && libc === "musl" ? "-musl" : "";
|
|
47
|
+
const ext = platform === "win32" ? ".exe" : "";
|
|
48
|
+
if (platform === "darwin") return `${binaryBaseName}-darwin-${mappedArch}${ext}`;
|
|
49
|
+
if (platform === "linux") return `${binaryBaseName}-linux-${mappedArch}${muslSuffix}${ext}`;
|
|
50
|
+
if (platform === "win32") return `${binaryBaseName}-win32-${mappedArch}${ext}`;
|
|
51
|
+
throw new require_primordials_error.ErrorCtor(`Unsupported platform: ${platform}`);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Get binary filename for output.
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ;```typescript
|
|
58
|
+
* getBinaryName('node', 'win32') // 'node.exe'
|
|
59
|
+
* getBinaryName('node', 'linux') // 'node'
|
|
60
|
+
* ```
|
|
61
|
+
*
|
|
62
|
+
* @param binaryBaseName - Binary basename (e.g., 'node', 'binject')
|
|
63
|
+
* @param platform - Target platform.
|
|
64
|
+
*
|
|
65
|
+
* @returns Binary filename (e.g., 'node', 'node.exe')
|
|
66
|
+
*/
|
|
67
|
+
function getBinaryName(binaryBaseName, platform) {
|
|
68
|
+
return platform === "win32" ? `${binaryBaseName}.exe` : binaryBaseName;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Get platform-arch identifier for directory structure and asset names.
|
|
72
|
+
*
|
|
73
|
+
* # Format: `<os>-<arch>[-<libc>]`
|
|
74
|
+
*
|
|
75
|
+
* The OS segment is `process.platform` verbatim: `darwin` / `linux` / `win32`.
|
|
76
|
+
* The arch segment is `process.arch` verbatim: `x64` / `arm64`. The optional
|
|
77
|
+
* libc suffix is `-musl` (Linux only; the glibc default is unsuffixed to match
|
|
78
|
+
* Node.js's own linuxstatic convention).
|
|
79
|
+
*
|
|
80
|
+
* # Why these specific conventions
|
|
81
|
+
*
|
|
82
|
+
* ## Why `win32`, not `win`
|
|
83
|
+
*
|
|
84
|
+
* `win32` is what `process.platform` returns on every Windows host. Every npm
|
|
85
|
+
* package whose install-time platform filter uses the standard `os` / `cpu` /
|
|
86
|
+
* `libc` manifest fields must match `process.platform` strings exactly (npm
|
|
87
|
+
* compares them verbatim — there's no shorthand layer). Using `win` internally
|
|
88
|
+
* here would have forced a translation every time we constructed an install
|
|
89
|
+
* filter or a target triple, and reviewers would have to remember "we
|
|
90
|
+
* abbreviate on disk but not in package filters." Since the two now match,
|
|
91
|
+
* there's no translation step to get wrong.
|
|
92
|
+
*
|
|
93
|
+
* Pnpm's pack-app (v11+) accepts `<os>-<arch>[-<libc>]` target strings and its
|
|
94
|
+
* shards are `@pnpm/exe.<os>-<arch>` (with `win32`, not `win` — see
|
|
95
|
+
* pnpm#11314). Our naming matches so asset names we emit can flow directly into
|
|
96
|
+
* pack-app's `--target` arg, `pnpm.app.targets` config, and
|
|
97
|
+
* sibling-package-name construction without a translation map.
|
|
98
|
+
*
|
|
99
|
+
* ## Why `-musl` is the suffix (and glibc is unsuffixed)
|
|
100
|
+
*
|
|
101
|
+
* Node.js's own linuxstatic tarballs historically used the unqualified `linux`
|
|
102
|
+
* for glibc and a separate download channel for musl. The pnpm ecosystem
|
|
103
|
+
* codified that as `linux-<arch>` (glibc, default) and `linux-<arch>-musl` (the
|
|
104
|
+
* libc outlier), matching the asymmetric reality of Linux distros — glibc is
|
|
105
|
+
* the majority case, musl is Alpine-and-similar. Adding `-glibc` for the
|
|
106
|
+
* default would be redundant noise in the name.
|
|
107
|
+
*
|
|
108
|
+
* ## Why libc is only appended for Linux
|
|
109
|
+
*
|
|
110
|
+
* MacOS and Windows have exactly one system libc each (Apple libSystem,
|
|
111
|
+
* Microsoft UCRT). A hypothetical `darwin-arm64-libsystem` conveys no
|
|
112
|
+
* information. Node.js, npm, and pnpm all treat libc as a Linux-only axis; we
|
|
113
|
+
* follow the same convention so callers don't have to special- case
|
|
114
|
+
* `'darwin-arm64'.startsWith('darwin-arm64')` style matches.
|
|
115
|
+
*
|
|
116
|
+
* ## Why this function exists at all (vs. inlining)
|
|
117
|
+
*
|
|
118
|
+
* Two upstream APIs that socket-btm consumers end up calling — the npm manifest
|
|
119
|
+
* filter (`os`/`cpu`/`libc`) and pnpm's pack-app `--target` — both need the
|
|
120
|
+
* exact same triple format. Centralizing the construction here means a future
|
|
121
|
+
* schema change (e.g. Node introducing `riscv64`) gets one edit, and the error
|
|
122
|
+
* message for an unsupported platform is uniform across downloaders, pack-app
|
|
123
|
+
* invocations, and the `@socketbin/*` resolver logic.
|
|
124
|
+
*
|
|
125
|
+
* @example
|
|
126
|
+
* ;```typescript
|
|
127
|
+
* getPlatformArch('linux', 'x64', 'musl') // 'linux-x64-musl'
|
|
128
|
+
* getPlatformArch('darwin', 'arm64') // 'darwin-arm64'
|
|
129
|
+
* getPlatformArch('win32', 'x64') // 'win32-x64'
|
|
130
|
+
* getPlatformArch('darwin', 'x64', 'musl') // 'darwin-x64' — libc ignored
|
|
131
|
+
* ```
|
|
132
|
+
*
|
|
133
|
+
* @param platform - Target platform.
|
|
134
|
+
* @param arch - Target architecture.
|
|
135
|
+
* @param libc - Linux libc variant (optional; non-linux platforms ignore)
|
|
136
|
+
*
|
|
137
|
+
* @returns Platform-arch identifier (e.g., 'darwin-arm64', 'linux-x64-musl',
|
|
138
|
+
* 'win32-x64')
|
|
139
|
+
*/
|
|
140
|
+
function getPlatformArch(platform, arch, libc) {
|
|
141
|
+
/* c8 ignore start - Unsupported-platform/arch arms fire only on inputs
|
|
142
|
+
outside the PLATFORM_MAP / ARCH_MAP keysets; the musl-suffix arm fires
|
|
143
|
+
only on linux+musl combos. */
|
|
144
|
+
const mappedPlatform = PLATFORM_MAP[platform];
|
|
145
|
+
if (!mappedPlatform) throw new require_primordials_error.ErrorCtor(`Unsupported platform: ${platform}`);
|
|
146
|
+
const mappedArch = ARCH_MAP[arch];
|
|
147
|
+
if (!mappedArch) throw new require_primordials_error.ErrorCtor(`Unsupported architecture: ${arch}`);
|
|
148
|
+
return `${mappedPlatform}-${mappedArch}${platform === "linux" && libc === "musl" ? "-musl" : ""}`;
|
|
149
|
+
/* c8 ignore stop */
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
//#endregion
|
|
153
|
+
exports.getBinaryAssetName = getBinaryAssetName;
|
|
154
|
+
exports.getBinaryName = getBinaryName;
|
|
155
|
+
exports.getPlatformArch = getPlatformArch;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file Socket-btm release download utilities.
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
4
|
+
import type { Arch, Libc, Platform } from '../constants/platform';
|
|
5
|
+
import { getBinaryAssetName, getBinaryName, getPlatformArch } from './socket-btm-binary-naming';
|
|
5
6
|
import type { AssetPattern } from './github-types';
|
|
6
7
|
export type { Arch, Libc, Platform };
|
|
8
|
+
export { getBinaryAssetName, getBinaryName, getPlatformArch };
|
|
7
9
|
/**
|
|
8
10
|
* Socket-btm GitHub repository configuration.
|
|
9
11
|
*/
|
|
@@ -22,7 +24,7 @@ export interface SocketBtmAssetConfig {
|
|
|
22
24
|
/**
|
|
23
25
|
* @internal Discriminator fields
|
|
24
26
|
*/
|
|
25
|
-
bin?: never;
|
|
27
|
+
bin?: never | undefined;
|
|
26
28
|
/**
|
|
27
29
|
* Working directory (defaults to process.cwd()).
|
|
28
30
|
*/
|
|
@@ -34,7 +36,7 @@ export interface SocketBtmAssetConfig {
|
|
|
34
36
|
/**
|
|
35
37
|
* @internal Discriminator fields
|
|
36
38
|
*/
|
|
37
|
-
libc?: never;
|
|
39
|
+
libc?: never | undefined;
|
|
38
40
|
/**
|
|
39
41
|
* Output filename. @default resolved asset name.
|
|
40
42
|
*/
|
|
@@ -54,11 +56,11 @@ export interface SocketBtmAssetConfig {
|
|
|
54
56
|
/**
|
|
55
57
|
* @internal Discriminator fields
|
|
56
58
|
*/
|
|
57
|
-
targetArch?: never;
|
|
59
|
+
targetArch?: never | undefined;
|
|
58
60
|
/**
|
|
59
61
|
* @internal Discriminator fields
|
|
60
62
|
*/
|
|
61
|
-
targetPlatform?: never;
|
|
63
|
+
targetPlatform?: never | undefined;
|
|
62
64
|
}
|
|
63
65
|
/**
|
|
64
66
|
* Configuration for downloading socket-btm binary releases.
|
|
@@ -67,7 +69,7 @@ export interface SocketBtmBinaryConfig {
|
|
|
67
69
|
/**
|
|
68
70
|
* @internal Discriminator field
|
|
69
71
|
*/
|
|
70
|
-
asset?: never;
|
|
72
|
+
asset?: never | undefined;
|
|
71
73
|
/**
|
|
72
74
|
* Binary/executable name (without extension). @default tool.
|
|
73
75
|
*/
|
|
@@ -138,112 +140,3 @@ export declare function detectLibc(): Libc | undefined;
|
|
|
138
140
|
* @returns Path to the downloaded file
|
|
139
141
|
*/
|
|
140
142
|
export declare function downloadSocketBtmRelease(tool: string, options: SocketBtmReleaseConfig | undefined): Promise<string>;
|
|
141
|
-
/**
|
|
142
|
-
* Get asset name for a socket-btm binary.
|
|
143
|
-
*
|
|
144
|
-
* @example
|
|
145
|
-
* ;```typescript
|
|
146
|
-
* getBinaryAssetName('lief', 'linux', 'x64', 'musl')
|
|
147
|
-
* // 'lief-linux-x64-musl'
|
|
148
|
-
* ```
|
|
149
|
-
*
|
|
150
|
-
* @param binaryBaseName - Binary basename (e.g., 'binject', 'node')
|
|
151
|
-
* @param platform - Target platform.
|
|
152
|
-
* @param arch - Target architecture.
|
|
153
|
-
* @param libc - Linux libc variant (optional)
|
|
154
|
-
*
|
|
155
|
-
* @returns Asset name (e.g., 'binject-darwin-arm64', 'node-linux-x64-musl')
|
|
156
|
-
*/
|
|
157
|
-
export declare function getBinaryAssetName(binaryBaseName: string, platform: Platform, arch: Arch, libc?: Libc | undefined): string;
|
|
158
|
-
/**
|
|
159
|
-
* Get binary filename for output.
|
|
160
|
-
*
|
|
161
|
-
* @example
|
|
162
|
-
* ;```typescript
|
|
163
|
-
* getBinaryName('node', 'win32') // 'node.exe'
|
|
164
|
-
* getBinaryName('node', 'linux') // 'node'
|
|
165
|
-
* ```
|
|
166
|
-
*
|
|
167
|
-
* @param binaryBaseName - Binary basename (e.g., 'node', 'binject')
|
|
168
|
-
* @param platform - Target platform.
|
|
169
|
-
*
|
|
170
|
-
* @returns Binary filename (e.g., 'node', 'node.exe')
|
|
171
|
-
*/
|
|
172
|
-
export declare function getBinaryName(binaryBaseName: string, platform: Platform): string;
|
|
173
|
-
/**
|
|
174
|
-
* Lazily load the fs module to avoid Webpack errors. Uses non-'node:' prefixed
|
|
175
|
-
* require to prevent Webpack bundling issues.
|
|
176
|
-
*
|
|
177
|
-
* @private
|
|
178
|
-
*/
|
|
179
|
-
/**
|
|
180
|
-
* Get platform-arch identifier for directory structure and asset names.
|
|
181
|
-
*
|
|
182
|
-
* # Format: `<os>-<arch>[-<libc>]`
|
|
183
|
-
*
|
|
184
|
-
* The OS segment is `process.platform` verbatim: `darwin` / `linux` / `win32`.
|
|
185
|
-
* The arch segment is `process.arch` verbatim: `x64` / `arm64`. The optional
|
|
186
|
-
* libc suffix is `-musl` (Linux only; the glibc default is unsuffixed to match
|
|
187
|
-
* Node.js's own linuxstatic convention).
|
|
188
|
-
*
|
|
189
|
-
* # Why these specific conventions
|
|
190
|
-
*
|
|
191
|
-
* ## Why `win32`, not `win`
|
|
192
|
-
*
|
|
193
|
-
* `win32` is what `process.platform` returns on every Windows host. Every npm
|
|
194
|
-
* package whose install-time platform filter uses the standard `os` / `cpu` /
|
|
195
|
-
* `libc` manifest fields must match `process.platform` strings exactly (npm
|
|
196
|
-
* compares them verbatim — there's no shorthand layer). Using `win` internally
|
|
197
|
-
* here would have forced a translation every time we constructed an install
|
|
198
|
-
* filter or a target triple, and reviewers would have to remember "we
|
|
199
|
-
* abbreviate on disk but not in package filters." Since the two now match,
|
|
200
|
-
* there's no translation step to get wrong.
|
|
201
|
-
*
|
|
202
|
-
* Pnpm's pack-app (v11+) accepts `<os>-<arch>[-<libc>]` target strings and its
|
|
203
|
-
* shards are `@pnpm/exe.<os>-<arch>` (with `win32`, not `win` — see
|
|
204
|
-
* pnpm#11314). Our naming matches so asset names we emit can flow directly into
|
|
205
|
-
* pack-app's `--target` arg, `pnpm.app.targets` config, and
|
|
206
|
-
* sibling-package-name construction without a translation map.
|
|
207
|
-
*
|
|
208
|
-
* ## Why `-musl` is the suffix (and glibc is unsuffixed)
|
|
209
|
-
*
|
|
210
|
-
* Node.js's own linuxstatic tarballs historically used the unqualified `linux`
|
|
211
|
-
* for glibc and a separate download channel for musl. The pnpm ecosystem
|
|
212
|
-
* codified that as `linux-<arch>` (glibc, default) and `linux-<arch>-musl` (the
|
|
213
|
-
* libc outlier), matching the asymmetric reality of Linux distros — glibc is
|
|
214
|
-
* the majority case, musl is Alpine-and-similar. Adding `-glibc` for the
|
|
215
|
-
* default would be redundant noise in the name.
|
|
216
|
-
*
|
|
217
|
-
* ## Why libc is only appended for Linux
|
|
218
|
-
*
|
|
219
|
-
* MacOS and Windows have exactly one system libc each (Apple libSystem,
|
|
220
|
-
* Microsoft UCRT). A hypothetical `darwin-arm64-libsystem` conveys no
|
|
221
|
-
* information. Node.js, npm, and pnpm all treat libc as a Linux-only axis; we
|
|
222
|
-
* follow the same convention so callers don't have to special- case
|
|
223
|
-
* `'darwin-arm64'.startsWith('darwin-arm64')` style matches.
|
|
224
|
-
*
|
|
225
|
-
* ## Why this function exists at all (vs. inlining)
|
|
226
|
-
*
|
|
227
|
-
* Two upstream APIs that socket-btm consumers end up calling — the npm manifest
|
|
228
|
-
* filter (`os`/`cpu`/`libc`) and pnpm's pack-app `--target` — both need the
|
|
229
|
-
* exact same triple format. Centralizing the construction here means a future
|
|
230
|
-
* schema change (e.g. Node introducing `riscv64`) gets one edit, and the error
|
|
231
|
-
* message for an unsupported platform is uniform across downloaders, pack-app
|
|
232
|
-
* invocations, and the `@socketbin/*` resolver logic.
|
|
233
|
-
*
|
|
234
|
-
* @example
|
|
235
|
-
* ;```typescript
|
|
236
|
-
* getPlatformArch('linux', 'x64', 'musl') // 'linux-x64-musl'
|
|
237
|
-
* getPlatformArch('darwin', 'arm64') // 'darwin-arm64'
|
|
238
|
-
* getPlatformArch('win32', 'x64') // 'win32-x64'
|
|
239
|
-
* getPlatformArch('darwin', 'x64', 'musl') // 'darwin-x64' — libc ignored
|
|
240
|
-
* ```
|
|
241
|
-
*
|
|
242
|
-
* @param platform - Target platform.
|
|
243
|
-
* @param arch - Target architecture.
|
|
244
|
-
* @param libc - Linux libc variant (optional; non-linux platforms ignore)
|
|
245
|
-
*
|
|
246
|
-
* @returns Platform-arch identifier (e.g., 'darwin-arm64', 'linux-x64-musl',
|
|
247
|
-
* 'win32-x64')
|
|
248
|
-
*/
|
|
249
|
-
export declare function getPlatformArch(platform: Platform, arch: Arch, libc?: Libc | undefined): string;
|
|
@@ -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
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
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/* Socket Lib - Built with rolldown */
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
|
+
const require_primordials_map_set = require('../primordials/map-set.js');
|
|
4
5
|
|
|
5
6
|
//#region src/secrets/_internal.ts
|
|
6
7
|
/**
|
|
7
8
|
* @file Private internals for `secrets/` — process-scoped read cache for the
|
|
8
9
|
* keychain backend. Underscore-prefixed and skipped by the export generator
|
|
9
10
|
* (`dist/**\/_*` ignore pattern in
|
|
10
|
-
* `scripts/
|
|
11
|
-
* 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`
|
|
12
13
|
* call shells out to the OS credential CLI (`security`, `secret-tool`,
|
|
13
14
|
* PowerShell). On macOS, the first read of a given entry by a new binary path
|
|
14
15
|
* triggers a Keychain auth prompt unless the entry was written with `-A -T
|
|
@@ -29,8 +30,8 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
29
30
|
* undefined (entry missing), `undefined` is cached too — callers that want a
|
|
30
31
|
* re-check after creating the entry must call `invalidate`.
|
|
31
32
|
*/
|
|
32
|
-
const valueCache =
|
|
33
|
-
const inflight =
|
|
33
|
+
const valueCache = new require_primordials_map_set.MapCtor();
|
|
34
|
+
const inflight = new require_primordials_map_set.MapCtor();
|
|
34
35
|
function cacheKey(service, account) {
|
|
35
36
|
return `${service} ${account}`;
|
|
36
37
|
}
|
|
@@ -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;
|