@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
|
@@ -68,5 +68,5 @@ export declare function fetchReleaseAssetsViaGraphQL(owner: string, repo: string
|
|
|
68
68
|
* false.
|
|
69
69
|
*/
|
|
70
70
|
export declare function getReleaseAssetUrl(tag: string, assetPattern: string | AssetPattern, repoConfig: RepoConfig, options?: {
|
|
71
|
-
nothrow?: boolean;
|
|
71
|
+
nothrow?: boolean | undefined;
|
|
72
72
|
}): Promise<string | undefined>;
|
|
@@ -123,10 +123,10 @@ async function getReleaseAssetUrl(tag, assetPattern, repoConfig, options = {}) {
|
|
|
123
123
|
/* c8 ignore start */
|
|
124
124
|
const isMatch = typeof assetPattern === "string" && !assetPattern.includes("*") && !assetPattern.includes("{") ? (input) => input === assetPattern : require_releases_github_assets.createAssetMatcher(assetPattern);
|
|
125
125
|
/* c8 ignore stop */
|
|
126
|
-
const assets = await
|
|
126
|
+
const assets = await require_promises_retry.pRetry(async () => {
|
|
127
127
|
const response = await require_http_request_request.httpRequest(`https://api.github.com/repos/${owner}/${repo}/releases/tags/${tag}`, { headers: require_releases_github_auth.getAuthHeaders() });
|
|
128
128
|
if (!response.ok) throw new require_primordials_error.ErrorCtor(`Failed to fetch ${owner}/${repo} release ${tag}: ${response.status}`);
|
|
129
|
-
let
|
|
129
|
+
let resolvedAssets;
|
|
130
130
|
if (response.body.byteLength === 0) {
|
|
131
131
|
let fallbackAssets;
|
|
132
132
|
try {
|
|
@@ -142,7 +142,7 @@ async function getReleaseAssetUrl(tag, assetPattern, repoConfig, options = {}) {
|
|
|
142
142
|
if (nothrow) return;
|
|
143
143
|
throw new require_primordials_error.ErrorCtor(`Release ${tag} not found in ${owner}/${repo}`);
|
|
144
144
|
}
|
|
145
|
-
|
|
145
|
+
resolvedAssets = fallbackAssets;
|
|
146
146
|
} else {
|
|
147
147
|
let release;
|
|
148
148
|
try {
|
|
@@ -151,9 +151,9 @@ async function getReleaseAssetUrl(tag, assetPattern, repoConfig, options = {}) {
|
|
|
151
151
|
throw new require_primordials_error.ErrorCtor(`Failed to parse ${owner}/${repo} release ${tag} response`, { cause });
|
|
152
152
|
}
|
|
153
153
|
if (!require_primordials_array.ArrayIsArray(release.assets)) throw new require_primordials_error.ErrorCtor(`Release ${tag} has no assets in ${owner}/${repo}`);
|
|
154
|
-
|
|
154
|
+
resolvedAssets = release.assets;
|
|
155
155
|
}
|
|
156
|
-
return
|
|
156
|
+
return resolvedAssets;
|
|
157
157
|
}, require_releases_github_retry_config.GITHUB_RETRY_CONFIG);
|
|
158
158
|
if (!assets) {
|
|
159
159
|
if (nothrow) return;
|
|
@@ -43,5 +43,5 @@ export declare function downloadGitHubRelease(config: DownloadGitHubReleaseConfi
|
|
|
43
43
|
* @param options - Additional options.
|
|
44
44
|
*/
|
|
45
45
|
export declare function downloadReleaseAsset(tag: string, assetPattern: string | AssetPattern, outputPath: string, repoConfig: RepoConfig, options?: {
|
|
46
|
-
quiet?: boolean;
|
|
46
|
+
quiet?: boolean | undefined;
|
|
47
47
|
}): Promise<void>;
|
|
@@ -52,11 +52,11 @@ async function downloadGitHubRelease(config) {
|
|
|
52
52
|
if (!latestTag) throw new require_primordials_error.ErrorCtor(`No ${toolPrefix} release found in ${owner}/${repo}`);
|
|
53
53
|
tag = latestTag;
|
|
54
54
|
} else throw new require_primordials_error.ErrorCtor("Either toolPrefix or tag must be provided");
|
|
55
|
-
const path =
|
|
55
|
+
const path = require_node_path.getNodePath();
|
|
56
56
|
const binaryDir = path.isAbsolute(downloadDir) ? downloadDir : path.join(cwd, downloadDir);
|
|
57
57
|
const binaryPath = path.join(binaryDir, binaryName);
|
|
58
58
|
const versionPath = path.join(binaryDir, ".version");
|
|
59
|
-
const fs =
|
|
59
|
+
const fs = require_node_fs.getNodeFs();
|
|
60
60
|
if (fs.existsSync(versionPath) && fs.existsSync(binaryPath)) {
|
|
61
61
|
if ((await fs.promises.readFile(versionPath, "utf8")).trim() === tag && fs.existsSync(binaryPath)) {
|
|
62
62
|
if (!quiet) logger.info(`Using cached ${toolName} (${platformArch}): ${binaryPath}`);
|
|
@@ -109,7 +109,7 @@ async function downloadReleaseAsset(tag, assetPattern, outputPath, repoConfig, o
|
|
|
109
109
|
repo
|
|
110
110
|
});
|
|
111
111
|
if (!downloadUrl) throw new require_primordials_error.ErrorCtor(`Asset ${typeof assetPattern === "string" ? assetPattern : "matching pattern"} not found in release ${tag}`);
|
|
112
|
-
await require_fs_safe.safeMkdir(
|
|
112
|
+
await require_fs_safe.safeMkdir(require_node_path.getNodePath().dirname(outputPath));
|
|
113
113
|
await require_http_request_download.httpDownload(downloadUrl, outputPath, {
|
|
114
114
|
logger: quiet ? void 0 : logger,
|
|
115
115
|
progressInterval: 10,
|
|
@@ -17,7 +17,7 @@ import type { AssetPattern, RepoConfig } from './github-types';
|
|
|
17
17
|
* output to this shape so downstream code is unaware of which transport
|
|
18
18
|
* produced the data.
|
|
19
19
|
*/
|
|
20
|
-
interface ReleaseRow {
|
|
20
|
+
export interface ReleaseRow {
|
|
21
21
|
tag_name: string;
|
|
22
22
|
published_at: string;
|
|
23
23
|
assets: Array<{
|
|
@@ -99,7 +99,15 @@ export declare function fetchReleasesViaRest(owner: string, repo: string): Promi
|
|
|
99
99
|
* false.
|
|
100
100
|
*/
|
|
101
101
|
export declare function getLatestRelease(toolPrefix: string, repoConfig: RepoConfig, options?: {
|
|
102
|
-
assetPattern?: AssetPattern;
|
|
103
|
-
nothrow?: boolean;
|
|
102
|
+
assetPattern?: AssetPattern | undefined;
|
|
103
|
+
nothrow?: boolean | undefined;
|
|
104
104
|
}): Promise<string | undefined>;
|
|
105
|
-
|
|
105
|
+
/**
|
|
106
|
+
* Normalize an `httpRequest` response body to a parsed value. `body` may be a
|
|
107
|
+
* Buffer / string (older paths) OR — depending on the response's content-type
|
|
108
|
+
* handling — an already-parsed object/array. Calling `body.toString('utf8')` +
|
|
109
|
+
* JSON.parse on an already-parsed object yields `"[object Object]"` and throws
|
|
110
|
+
* (the "Failed to parse … releases response" build failure). Pass through
|
|
111
|
+
* non-string/Buffer bodies; parse the rest. Throws on genuine parse failure.
|
|
112
|
+
*/
|
|
113
|
+
export declare function parseResponseBody(body: unknown): unknown;
|
|
@@ -75,7 +75,7 @@ async function fetchReleasesViaGraphQL(owner, repo) {
|
|
|
75
75
|
if (!response.ok) throw new require_primordials_error.ErrorCtor(`Failed to fetch ${owner}/${repo} releases (GraphQL): ${response.status}`);
|
|
76
76
|
let parsed;
|
|
77
77
|
try {
|
|
78
|
-
parsed =
|
|
78
|
+
parsed = parseResponseBody(response.body);
|
|
79
79
|
} catch (cause) {
|
|
80
80
|
throw new require_primordials_error.ErrorCtor(`Failed to parse GitHub GraphQL response for ${owner}/${repo} releases`, { cause });
|
|
81
81
|
}
|
|
@@ -115,15 +115,15 @@ async function fetchReleasesViaGraphQL(owner, repo) {
|
|
|
115
115
|
async function fetchReleasesViaRest(owner, repo) {
|
|
116
116
|
const response = await require_http_request_request.httpRequest(`https://api.github.com/repos/${owner}/${repo}/releases?per_page=100`, { headers: require_releases_github_auth.getAuthHeaders() });
|
|
117
117
|
if (!response.ok) throw new require_primordials_error.ErrorCtor(`Failed to fetch ${owner}/${repo} releases: ${response.status}`);
|
|
118
|
-
const
|
|
119
|
-
if (
|
|
118
|
+
const body = response.body;
|
|
119
|
+
if (Buffer.isBuffer(body) && body.length === 0 || typeof body === "string" && body.length === 0) return [];
|
|
120
120
|
let parsed;
|
|
121
121
|
try {
|
|
122
|
-
parsed =
|
|
122
|
+
parsed = parseResponseBody(body);
|
|
123
123
|
} catch (cause) {
|
|
124
124
|
throw new require_primordials_error.ErrorCtor(`Failed to parse ${owner}/${repo} releases response`, { cause });
|
|
125
125
|
}
|
|
126
|
-
/* c8 ignore start */
|
|
126
|
+
/* c8 ignore start - non-array fallback only reachable via the GraphQL path's shape, not REST */
|
|
127
127
|
return require_primordials_array.ArrayIsArray(parsed) ? parsed : [];
|
|
128
128
|
/* c8 ignore stop */
|
|
129
129
|
}
|
|
@@ -157,7 +157,7 @@ async function getLatestRelease(toolPrefix, repoConfig, options = {}) {
|
|
|
157
157
|
const { assetPattern, nothrow = false } = options;
|
|
158
158
|
const { owner, repo } = repoConfig;
|
|
159
159
|
const isMatch = assetPattern ? require_releases_github_assets.createAssetMatcher(assetPattern) : void 0;
|
|
160
|
-
return await
|
|
160
|
+
return await require_promises_retry.pRetry(async () => {
|
|
161
161
|
let releases = await fetchReleasesViaRest(owner, repo);
|
|
162
162
|
if (releases.length === 0) {
|
|
163
163
|
let graphqlReleases;
|
|
@@ -185,8 +185,21 @@ async function getLatestRelease(toolPrefix, repoConfig, options = {}) {
|
|
|
185
185
|
return matchingReleases[0].tag_name;
|
|
186
186
|
}, require_releases_github_retry_config.GITHUB_RETRY_CONFIG) ?? void 0;
|
|
187
187
|
}
|
|
188
|
+
/**
|
|
189
|
+
* Normalize an `httpRequest` response body to a parsed value. `body` may be a
|
|
190
|
+
* Buffer / string (older paths) OR — depending on the response's content-type
|
|
191
|
+
* handling — an already-parsed object/array. Calling `body.toString('utf8')` +
|
|
192
|
+
* JSON.parse on an already-parsed object yields `"[object Object]"` and throws
|
|
193
|
+
* (the "Failed to parse … releases response" build failure). Pass through
|
|
194
|
+
* non-string/Buffer bodies; parse the rest. Throws on genuine parse failure.
|
|
195
|
+
*/
|
|
196
|
+
function parseResponseBody(body) {
|
|
197
|
+
if (body !== null && typeof body === "object" && !Buffer.isBuffer(body)) return body;
|
|
198
|
+
return require_primordials_json.JSONParse(Buffer.isBuffer(body) ? body.toString("utf8") : typeof body === "string" ? body : String(body));
|
|
199
|
+
}
|
|
188
200
|
|
|
189
201
|
//#endregion
|
|
190
202
|
exports.fetchReleasesViaGraphQL = fetchReleasesViaGraphQL;
|
|
191
203
|
exports.fetchReleasesViaRest = fetchReleasesViaRest;
|
|
192
|
-
exports.getLatestRelease = getLatestRelease;
|
|
204
|
+
exports.getLatestRelease = getLatestRelease;
|
|
205
|
+
exports.parseResponseBody = parseResponseBody;
|
|
@@ -31,7 +31,7 @@ const DEFAULT_BASE_DELAY_MS = 5e3;
|
|
|
31
31
|
* @returns The configured base delay in milliseconds.
|
|
32
32
|
*/
|
|
33
33
|
function resolveBaseDelayMs() {
|
|
34
|
-
return
|
|
34
|
+
return require_env_number.envAsNumber(require_env_rewire.getEnvValue("SOCKET_GITHUB_RETRY_BASE_DELAY_MS"), DEFAULT_BASE_DELAY_MS);
|
|
35
35
|
}
|
|
36
36
|
const GITHUB_RETRY_CONFIG = require_primordials_object.ObjectFreeze({
|
|
37
37
|
__proto__: null,
|
|
@@ -39,11 +39,11 @@ export interface DownloadGitHubReleaseConfig {
|
|
|
39
39
|
/**
|
|
40
40
|
* Working directory (defaults to process.cwd()).
|
|
41
41
|
*/
|
|
42
|
-
cwd?: string;
|
|
42
|
+
cwd?: string | undefined;
|
|
43
43
|
/**
|
|
44
44
|
* Download destination directory. @default 'build/downloaded'
|
|
45
45
|
*/
|
|
46
|
-
downloadDir?: string;
|
|
46
|
+
downloadDir?: string | undefined;
|
|
47
47
|
/**
|
|
48
48
|
* GitHub repository owner/organization.
|
|
49
49
|
*/
|
|
@@ -55,11 +55,11 @@ export interface DownloadGitHubReleaseConfig {
|
|
|
55
55
|
/**
|
|
56
56
|
* Suppress log messages. @default false.
|
|
57
57
|
*/
|
|
58
|
-
quiet?: boolean;
|
|
58
|
+
quiet?: boolean | undefined;
|
|
59
59
|
/**
|
|
60
60
|
* Remove macOS quarantine attribute after download. @default true.
|
|
61
61
|
*/
|
|
62
|
-
removeMacOSQuarantine?: boolean;
|
|
62
|
+
removeMacOSQuarantine?: boolean | undefined;
|
|
63
63
|
/**
|
|
64
64
|
* GitHub repository name.
|
|
65
65
|
*/
|
|
@@ -67,7 +67,7 @@ export interface DownloadGitHubReleaseConfig {
|
|
|
67
67
|
/**
|
|
68
68
|
* Specific release tag to download.
|
|
69
69
|
*/
|
|
70
|
-
tag?: string;
|
|
70
|
+
tag?: string | undefined;
|
|
71
71
|
/**
|
|
72
72
|
* Tool name for directory structure.
|
|
73
73
|
*/
|
|
@@ -75,7 +75,7 @@ export interface DownloadGitHubReleaseConfig {
|
|
|
75
75
|
/**
|
|
76
76
|
* Tool prefix for finding latest release.
|
|
77
77
|
*/
|
|
78
|
-
toolPrefix?: string;
|
|
78
|
+
toolPrefix?: string | undefined;
|
|
79
79
|
}
|
|
80
80
|
/**
|
|
81
81
|
* Configuration for repository access.
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Socket-btm binary asset/platform-arch naming helpers.
|
|
3
|
+
*/
|
|
4
|
+
import type { Arch, Libc, Platform } from '../constants/platform';
|
|
5
|
+
/**
|
|
6
|
+
* Get asset name for a socket-btm binary.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ;```typescript
|
|
10
|
+
* getBinaryAssetName('lief', 'linux', 'x64', 'musl')
|
|
11
|
+
* // 'lief-linux-x64-musl'
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* @param binaryBaseName - Binary basename (e.g., 'binject', 'node')
|
|
15
|
+
* @param platform - Target platform.
|
|
16
|
+
* @param arch - Target architecture.
|
|
17
|
+
* @param libc - Linux libc variant (optional)
|
|
18
|
+
*
|
|
19
|
+
* @returns Asset name (e.g., 'binject-darwin-arm64', 'node-linux-x64-musl')
|
|
20
|
+
*/
|
|
21
|
+
export declare function getBinaryAssetName(binaryBaseName: string, platform: Platform, arch: Arch, libc?: Libc | undefined): string;
|
|
22
|
+
/**
|
|
23
|
+
* Get binary filename for output.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ;```typescript
|
|
27
|
+
* getBinaryName('node', 'win32') // 'node.exe'
|
|
28
|
+
* getBinaryName('node', 'linux') // 'node'
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* @param binaryBaseName - Binary basename (e.g., 'node', 'binject')
|
|
32
|
+
* @param platform - Target platform.
|
|
33
|
+
*
|
|
34
|
+
* @returns Binary filename (e.g., 'node', 'node.exe')
|
|
35
|
+
*/
|
|
36
|
+
export declare function getBinaryName(binaryBaseName: string, platform: Platform): string;
|
|
37
|
+
/**
|
|
38
|
+
* Get platform-arch identifier for directory structure and asset names.
|
|
39
|
+
*
|
|
40
|
+
* # Format: `<os>-<arch>[-<libc>]`
|
|
41
|
+
*
|
|
42
|
+
* The OS segment is `process.platform` verbatim: `darwin` / `linux` / `win32`.
|
|
43
|
+
* The arch segment is `process.arch` verbatim: `x64` / `arm64`. The optional
|
|
44
|
+
* libc suffix is `-musl` (Linux only; the glibc default is unsuffixed to match
|
|
45
|
+
* Node.js's own linuxstatic convention).
|
|
46
|
+
*
|
|
47
|
+
* # Why these specific conventions
|
|
48
|
+
*
|
|
49
|
+
* ## Why `win32`, not `win`
|
|
50
|
+
*
|
|
51
|
+
* `win32` is what `process.platform` returns on every Windows host. Every npm
|
|
52
|
+
* package whose install-time platform filter uses the standard `os` / `cpu` /
|
|
53
|
+
* `libc` manifest fields must match `process.platform` strings exactly (npm
|
|
54
|
+
* compares them verbatim — there's no shorthand layer). Using `win` internally
|
|
55
|
+
* here would have forced a translation every time we constructed an install
|
|
56
|
+
* filter or a target triple, and reviewers would have to remember "we
|
|
57
|
+
* abbreviate on disk but not in package filters." Since the two now match,
|
|
58
|
+
* there's no translation step to get wrong.
|
|
59
|
+
*
|
|
60
|
+
* Pnpm's pack-app (v11+) accepts `<os>-<arch>[-<libc>]` target strings and its
|
|
61
|
+
* shards are `@pnpm/exe.<os>-<arch>` (with `win32`, not `win` — see
|
|
62
|
+
* pnpm#11314). Our naming matches so asset names we emit can flow directly into
|
|
63
|
+
* pack-app's `--target` arg, `pnpm.app.targets` config, and
|
|
64
|
+
* sibling-package-name construction without a translation map.
|
|
65
|
+
*
|
|
66
|
+
* ## Why `-musl` is the suffix (and glibc is unsuffixed)
|
|
67
|
+
*
|
|
68
|
+
* Node.js's own linuxstatic tarballs historically used the unqualified `linux`
|
|
69
|
+
* for glibc and a separate download channel for musl. The pnpm ecosystem
|
|
70
|
+
* codified that as `linux-<arch>` (glibc, default) and `linux-<arch>-musl` (the
|
|
71
|
+
* libc outlier), matching the asymmetric reality of Linux distros — glibc is
|
|
72
|
+
* the majority case, musl is Alpine-and-similar. Adding `-glibc` for the
|
|
73
|
+
* default would be redundant noise in the name.
|
|
74
|
+
*
|
|
75
|
+
* ## Why libc is only appended for Linux
|
|
76
|
+
*
|
|
77
|
+
* MacOS and Windows have exactly one system libc each (Apple libSystem,
|
|
78
|
+
* Microsoft UCRT). A hypothetical `darwin-arm64-libsystem` conveys no
|
|
79
|
+
* information. Node.js, npm, and pnpm all treat libc as a Linux-only axis; we
|
|
80
|
+
* follow the same convention so callers don't have to special- case
|
|
81
|
+
* `'darwin-arm64'.startsWith('darwin-arm64')` style matches.
|
|
82
|
+
*
|
|
83
|
+
* ## Why this function exists at all (vs. inlining)
|
|
84
|
+
*
|
|
85
|
+
* Two upstream APIs that socket-btm consumers end up calling — the npm manifest
|
|
86
|
+
* filter (`os`/`cpu`/`libc`) and pnpm's pack-app `--target` — both need the
|
|
87
|
+
* exact same triple format. Centralizing the construction here means a future
|
|
88
|
+
* schema change (e.g. Node introducing `riscv64`) gets one edit, and the error
|
|
89
|
+
* message for an unsupported platform is uniform across downloaders, pack-app
|
|
90
|
+
* invocations, and the `@socketbin/*` resolver logic.
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* ;```typescript
|
|
94
|
+
* getPlatformArch('linux', 'x64', 'musl') // 'linux-x64-musl'
|
|
95
|
+
* getPlatformArch('darwin', 'arm64') // 'darwin-arm64'
|
|
96
|
+
* getPlatformArch('win32', 'x64') // 'win32-x64'
|
|
97
|
+
* getPlatformArch('darwin', 'x64', 'musl') // 'darwin-x64' — libc ignored
|
|
98
|
+
* ```
|
|
99
|
+
*
|
|
100
|
+
* @param platform - Target platform.
|
|
101
|
+
* @param arch - Target architecture.
|
|
102
|
+
* @param libc - Linux libc variant (optional; non-linux platforms ignore)
|
|
103
|
+
*
|
|
104
|
+
* @returns Platform-arch identifier (e.g., 'darwin-arm64', 'linux-x64-musl',
|
|
105
|
+
* 'win32-x64')
|
|
106
|
+
*/
|
|
107
|
+
export declare function getPlatformArch(platform: Platform, arch: Arch, libc?: Libc | undefined): string;
|
|
@@ -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;
|