@socketsecurity/lib 6.0.6 → 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 +26 -1
- package/dist/ai/discover.d.mts +2 -2
- package/dist/ai/discover.js +3 -2
- package/dist/ai/spawn.js +2 -1
- package/dist/ai/types.d.mts +18 -6
- package/dist/ai/worktree.d.mts +6 -6
- package/dist/ai/worktree.js +1 -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 +6 -6
- package/dist/archives/zip.js +3 -5
- 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/exec.js +2 -3
- package/dist/bin/find.js +13 -13
- package/dist/bin/prim.cjs +22736 -22556
- 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 +55 -52
- 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 +17 -17
- package/dist/compression/brotli.d.ts +25 -25
- package/dist/compression/brotli.js +33 -33
- package/dist/compression/gzip.d.ts +23 -23
- package/dist/compression/gzip.js +40 -40
- 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 +11 -11
- 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 -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/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/npm-pack.js +2 -2
- package/dist/external-tools/bazel/read-bazel-version-file.js +1 -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/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/janus/from-vfs.js +1 -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-vfs.js +1 -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 +12 -12
- package/dist/external-tools/opengrep/from-vfs.js +1 -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/types.d.ts +1 -1
- package/dist/external-tools/skillspector/from-path.js +3 -5
- package/dist/external-tools/skillspector/from-vfs.js +1 -1
- package/dist/external-tools/synp/from-download.js +2 -2
- package/dist/external-tools/synp/from-vfs.js +1 -1
- package/dist/external-tools/trivy/from-vfs.js +1 -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/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 +10 -10
- 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 +4 -6
- 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 +4 -2
- 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/headers.js +0 -1
- package/dist/http-request/request-attempt.js +37 -33
- 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 +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.js +16 -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 +4 -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 +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/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 +2 -2
- package/dist/secrets/compare.d.ts +45 -0
- package/dist/secrets/compare.js +61 -0
- package/dist/secrets/keychain.js +6 -4
- package/dist/secrets/linux.js +19 -19
- package/dist/secrets/macos.d.ts +1 -1
- package/dist/secrets/macos.js +13 -13
- package/dist/secrets/rc.d.ts +2 -2
- package/dist/secrets/rc.js +6 -4
- package/dist/secrets/socket-api-token.d.ts +4 -4
- package/dist/secrets/socket-api-token.js +18 -9
- package/dist/secrets/windows.js +14 -13
- package/dist/shadow/skip.js +2 -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 +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/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.js +15 -5
- package/package.json +247 -106
- 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/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
package/dist/promises/iterate.js
CHANGED
|
@@ -67,13 +67,12 @@ const require_arrays_chunk = require('../arrays/chunk.js');
|
|
|
67
67
|
*
|
|
68
68
|
* @returns Promise that resolves when all items are processed
|
|
69
69
|
*/
|
|
70
|
-
/*@__NO_SIDE_EFFECTS__*/
|
|
71
70
|
async function pEach(array, callbackFn, options) {
|
|
72
|
-
const { concurrency, retries, signal } =
|
|
73
|
-
const chunks =
|
|
71
|
+
const { concurrency, retries, signal } = require_promises_options.normalizeIterationOptions(options);
|
|
72
|
+
const chunks = require_arrays_chunk.arrayChunk(array, concurrency);
|
|
74
73
|
for (const chunk of chunks) {
|
|
75
74
|
if (signal?.aborted) return;
|
|
76
|
-
await require_primordials_promise.PromiseAllSettled(chunk.map((item) =>
|
|
75
|
+
await require_primordials_promise.PromiseAllSettled(chunk.map((item) => require_promises_retry.pRetry((...args) => callbackFn(args[0]), {
|
|
77
76
|
...retries,
|
|
78
77
|
args: [item],
|
|
79
78
|
signal
|
|
@@ -133,15 +132,14 @@ async function pEach(array, callbackFn, options) {
|
|
|
133
132
|
*
|
|
134
133
|
* @returns Promise that resolves when all chunks are processed
|
|
135
134
|
*/
|
|
136
|
-
/*@__NO_SIDE_EFFECTS__*/
|
|
137
135
|
async function pEachChunk(array, callbackFn, options) {
|
|
138
136
|
const { chunkSize = 100, ...retryOpts } = options || {};
|
|
139
|
-
const chunks =
|
|
140
|
-
const normalizedRetryOpts =
|
|
137
|
+
const chunks = require_arrays_chunk.arrayChunk(array, chunkSize);
|
|
138
|
+
const normalizedRetryOpts = require_promises_options.normalizeRetryOptions(retryOpts);
|
|
141
139
|
const { signal } = normalizedRetryOpts;
|
|
142
140
|
for (const chunk of chunks) {
|
|
143
141
|
if (signal?.aborted) return;
|
|
144
|
-
await
|
|
142
|
+
await require_promises_retry.pRetry((...args) => callbackFn(args[0]), {
|
|
145
143
|
...normalizedRetryOpts,
|
|
146
144
|
args: [chunk]
|
|
147
145
|
});
|
|
@@ -194,10 +192,9 @@ async function pEachChunk(array, callbackFn, options) {
|
|
|
194
192
|
*
|
|
195
193
|
* @returns Promise resolving to filtered array
|
|
196
194
|
*/
|
|
197
|
-
/*@__NO_SIDE_EFFECTS__*/
|
|
198
195
|
async function pFilter(array, callbackFn, options) {
|
|
199
|
-
const iterOpts =
|
|
200
|
-
return (await
|
|
196
|
+
const iterOpts = require_promises_options.normalizeIterationOptions(options);
|
|
197
|
+
return (await pFilterChunk(require_arrays_chunk.arrayChunk(array, iterOpts.concurrency), callbackFn, iterOpts.retries)).flat();
|
|
201
198
|
}
|
|
202
199
|
/**
|
|
203
200
|
* Filter chunked arrays with an async predicate.
|
|
@@ -222,20 +219,19 @@ async function pFilter(array, callbackFn, options) {
|
|
|
222
219
|
*
|
|
223
220
|
* @returns Promise resolving to array of filtered chunks
|
|
224
221
|
*/
|
|
225
|
-
/*@__NO_SIDE_EFFECTS__*/
|
|
226
222
|
async function pFilterChunk(chunks, callbackFn, options) {
|
|
227
|
-
const retryOpts =
|
|
223
|
+
const retryOpts = require_promises_options.normalizeRetryOptions(options);
|
|
228
224
|
const { signal } = retryOpts;
|
|
229
225
|
const { length } = chunks;
|
|
230
226
|
const filteredChunks = Array(length);
|
|
231
227
|
for (let i = 0; i < length; i += 1) if (signal?.aborted) filteredChunks[i] = [];
|
|
232
228
|
else {
|
|
233
229
|
const chunk = chunks[i];
|
|
234
|
-
const predicateResults = (await require_primordials_promise.PromiseAllSettled(chunk.map((value) =>
|
|
230
|
+
const predicateResults = (await require_primordials_promise.PromiseAllSettled(chunk.map((value) => require_promises_retry.pRetry((...args) => callbackFn(args[0]), {
|
|
235
231
|
...retryOpts,
|
|
236
232
|
args: [value]
|
|
237
233
|
})))).map((r) => r.status === "fulfilled" ? r.value : false);
|
|
238
|
-
filteredChunks[i] = chunk.filter((
|
|
234
|
+
filteredChunks[i] = chunk.filter((_value, index) => predicateResults[index]);
|
|
239
235
|
}
|
|
240
236
|
return filteredChunks;
|
|
241
237
|
}
|
package/dist/promises/options.js
CHANGED
|
@@ -33,7 +33,6 @@ const require_promises__internal = require('./_internal.js');
|
|
|
33
33
|
*
|
|
34
34
|
* @returns Normalized options with concurrency, retries, and signal
|
|
35
35
|
*/
|
|
36
|
-
/*@__NO_SIDE_EFFECTS__*/
|
|
37
36
|
function normalizeIterationOptions(options) {
|
|
38
37
|
const { concurrency = 1, retries, signal = require_promises__internal.abortSignal } = {
|
|
39
38
|
__proto__: null,
|
|
@@ -42,9 +41,9 @@ function normalizeIterationOptions(options) {
|
|
|
42
41
|
return {
|
|
43
42
|
__proto__: null,
|
|
44
43
|
concurrency: require_primordials_math.MathMax(1, concurrency),
|
|
45
|
-
retries:
|
|
44
|
+
retries: normalizeRetryOptions({
|
|
46
45
|
signal,
|
|
47
|
-
|
|
46
|
+
...resolveRetryOptions(retries)
|
|
48
47
|
}),
|
|
49
48
|
signal
|
|
50
49
|
};
|
|
@@ -70,9 +69,8 @@ function normalizeIterationOptions(options) {
|
|
|
70
69
|
*
|
|
71
70
|
* @returns Normalized retry options with all properties set
|
|
72
71
|
*/
|
|
73
|
-
/*@__NO_SIDE_EFFECTS__*/
|
|
74
72
|
function normalizeRetryOptions(options) {
|
|
75
|
-
const { args = [], backoffFactor = 2, baseDelayMs = 200, jitter = true, maxDelayMs = 1e4, onRetry, onRetryCancelOnFalse = false, onRetryRethrow = false, retries = 0, signal = require_promises__internal.abortSignal } =
|
|
73
|
+
const { args = [], backoffFactor = 2, baseDelayMs = 200, jitter = true, maxDelayMs = 1e4, onRetry, onRetryCancelOnFalse = false, onRetryRethrow = false, retries = 0, signal = require_promises__internal.abortSignal } = resolveRetryOptions(options);
|
|
76
74
|
return {
|
|
77
75
|
args,
|
|
78
76
|
backoffFactor,
|
|
@@ -105,7 +103,6 @@ function normalizeRetryOptions(options) {
|
|
|
105
103
|
*
|
|
106
104
|
* @returns Resolved retry options with defaults for basic properties
|
|
107
105
|
*/
|
|
108
|
-
/*@__NO_SIDE_EFFECTS__*/
|
|
109
106
|
function resolveRetryOptions(options) {
|
|
110
107
|
const defaults = {
|
|
111
108
|
__proto__: null,
|
package/dist/promises/retry.js
CHANGED
|
@@ -110,12 +110,11 @@ const require_promises_options = require('./options.js');
|
|
|
110
110
|
*
|
|
111
111
|
* @throws {Error} The last error if all retry attempts fail
|
|
112
112
|
*/
|
|
113
|
-
/*@__NO_SIDE_EFFECTS__*/
|
|
114
113
|
async function pRetry(callbackFn, options) {
|
|
115
|
-
const { args, backoffFactor, baseDelayMs, jitter, maxDelayMs, onRetry, onRetryCancelOnFalse, onRetryRethrow, retries, signal } =
|
|
114
|
+
const { args, backoffFactor, baseDelayMs, jitter, maxDelayMs, onRetry, onRetryCancelOnFalse, onRetryRethrow, retries, signal } = require_promises_options.normalizeRetryOptions(options);
|
|
116
115
|
if (signal?.aborted) return;
|
|
117
116
|
if (retries === 0) return await callbackFn(...args || [], { signal });
|
|
118
|
-
const timers =
|
|
117
|
+
const timers = require_promises__internal.getTimers();
|
|
119
118
|
let attempts = retries;
|
|
120
119
|
let delay = baseDelayMs;
|
|
121
120
|
let error = void 0;
|
|
@@ -136,8 +135,8 @@ async function pRetry(callbackFn, options) {
|
|
|
136
135
|
const result = onRetry(retries - attempts, e, waitTime);
|
|
137
136
|
if (result === false && onRetryCancelOnFalse) break;
|
|
138
137
|
if (typeof result === "number" && result >= 0) waitTime = require_primordials_math.MathMin(result, maxDelayMs);
|
|
139
|
-
} catch (
|
|
140
|
-
if (onRetryRethrow) throw
|
|
138
|
+
} catch (onRetryError) {
|
|
139
|
+
if (onRetryRethrow) throw onRetryError;
|
|
141
140
|
}
|
|
142
141
|
/* c8 ignore stop */
|
|
143
142
|
try {
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Browser-compatible promise-based timer helpers. Uses
|
|
3
|
+
* `globalThis.setTimeout` / `globalThis.queueMicrotask` directly so every
|
|
4
|
+
* export works in browsers, Node.js, Deno, Bun, and Web Workers without
|
|
5
|
+
* importing `node:timers/promises`. In Node.js test environments with
|
|
6
|
+
* `vi.useFakeTimers()` / `clock.install()`, vitest/sinon replace
|
|
7
|
+
* `globalThis.setTimeout` before this module loads, so fake timers advance
|
|
8
|
+
* `sleep()` correctly — no special wiring needed. For Node-only
|
|
9
|
+
* abort-signal-aware delays see `promises/_internal.ts`.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Pause for `ms` milliseconds. Resolves with `undefined` when the timer fires.
|
|
13
|
+
* Negative values are clamped to 0.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* await sleep(100)
|
|
17
|
+
*/
|
|
18
|
+
export declare function sleep(ms: number): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Yield to the event loop once. Resolves after the current call stack and any
|
|
21
|
+
* already-queued microtasks have completed — equivalent to `setTimeout(fn, 0)`
|
|
22
|
+
* as described in
|
|
23
|
+
* https://developer.mozilla.org/en-US/docs/Web/API/Window/setTimeout#late_timeouts.
|
|
24
|
+
* Useful for flushing microtask queues in tests or giving the browser a repaint
|
|
25
|
+
* opportunity between heavy operations.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* await yieldToEventLoop()
|
|
29
|
+
*/
|
|
30
|
+
export declare function yieldToEventLoop(): Promise<void>;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* Socket Lib - Built with rolldown */
|
|
3
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
|
+
const require_primordials_promise = require('../primordials/promise.js');
|
|
5
|
+
|
|
6
|
+
//#region src/promises/timers.ts
|
|
7
|
+
/**
|
|
8
|
+
* @file Browser-compatible promise-based timer helpers. Uses
|
|
9
|
+
* `globalThis.setTimeout` / `globalThis.queueMicrotask` directly so every
|
|
10
|
+
* export works in browsers, Node.js, Deno, Bun, and Web Workers without
|
|
11
|
+
* importing `node:timers/promises`. In Node.js test environments with
|
|
12
|
+
* `vi.useFakeTimers()` / `clock.install()`, vitest/sinon replace
|
|
13
|
+
* `globalThis.setTimeout` before this module loads, so fake timers advance
|
|
14
|
+
* `sleep()` correctly — no special wiring needed. For Node-only
|
|
15
|
+
* abort-signal-aware delays see `promises/_internal.ts`.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Pause for `ms` milliseconds. Resolves with `undefined` when the timer fires.
|
|
19
|
+
* Negative values are clamped to 0.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* await sleep(100)
|
|
23
|
+
*/
|
|
24
|
+
function sleep(ms) {
|
|
25
|
+
return new require_primordials_promise.PromiseCtor((resolve) => {
|
|
26
|
+
setTimeout(resolve, ms > 0 ? ms : 0);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Yield to the event loop once. Resolves after the current call stack and any
|
|
31
|
+
* already-queued microtasks have completed — equivalent to `setTimeout(fn, 0)`
|
|
32
|
+
* as described in
|
|
33
|
+
* https://developer.mozilla.org/en-US/docs/Web/API/Window/setTimeout#late_timeouts.
|
|
34
|
+
* Useful for flushing microtask queues in tests or giving the browser a repaint
|
|
35
|
+
* opportunity between heavy operations.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* await yieldToEventLoop()
|
|
39
|
+
*/
|
|
40
|
+
function yieldToEventLoop() {
|
|
41
|
+
return new require_primordials_promise.PromiseCtor((resolve) => {
|
|
42
|
+
setTimeout(resolve, 0);
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
//#endregion
|
|
47
|
+
exports.sleep = sleep;
|
|
48
|
+
exports.yieldToEventLoop = yieldToEventLoop;
|
|
@@ -34,10 +34,10 @@ import type { AssetPattern, RepoConfig } from './github-types';
|
|
|
34
34
|
* @returns Path to the extraction directory
|
|
35
35
|
*/
|
|
36
36
|
export declare function downloadAndExtractArchive(tag: string, assetPattern: string | AssetPattern, outputDir: string, repoConfig: RepoConfig, options?: {
|
|
37
|
-
cleanup?: boolean;
|
|
38
|
-
format?: ArchiveFormat;
|
|
39
|
-
quiet?: boolean;
|
|
40
|
-
strip?: number;
|
|
37
|
+
cleanup?: boolean | undefined;
|
|
38
|
+
format?: ArchiveFormat | undefined;
|
|
39
|
+
quiet?: boolean | undefined;
|
|
40
|
+
strip?: number | undefined;
|
|
41
41
|
}): Promise<string>;
|
|
42
42
|
/**
|
|
43
43
|
* Download and extract a zip file from a GitHub release. Automatically handles
|
|
@@ -66,6 +66,6 @@ export declare function downloadAndExtractArchive(tag: string, assetPattern: str
|
|
|
66
66
|
* @returns Path to the extraction directory
|
|
67
67
|
*/
|
|
68
68
|
export declare function downloadAndExtractZip(tag: string, assetPattern: string | AssetPattern, outputDir: string, repoConfig: RepoConfig, options?: {
|
|
69
|
-
cleanup?: boolean;
|
|
70
|
-
quiet?: boolean;
|
|
69
|
+
cleanup?: boolean | undefined;
|
|
70
|
+
quiet?: boolean | undefined;
|
|
71
71
|
}): Promise<string>;
|
|
@@ -46,7 +46,7 @@ const logger = require_logger_default.getDefaultLogger();
|
|
|
46
46
|
*/
|
|
47
47
|
async function downloadAndExtractArchive(tag, assetPattern, outputDir, repoConfig, options = { __proto__: null }) {
|
|
48
48
|
const { cleanup = true, format, quiet = false, strip } = options;
|
|
49
|
-
const path =
|
|
49
|
+
const path = require_node_path.getNodePath();
|
|
50
50
|
await require_fs_safe.safeMkdir(outputDir);
|
|
51
51
|
let ext = ".archive";
|
|
52
52
|
if (format) ext = format === "tar.gz" ? ".tar.gz" : `.${format}`;
|
|
@@ -104,7 +104,7 @@ async function downloadAndExtractArchive(tag, assetPattern, outputDir, repoConfi
|
|
|
104
104
|
*/
|
|
105
105
|
async function downloadAndExtractZip(tag, assetPattern, outputDir, repoConfig, options = { __proto__: null }) {
|
|
106
106
|
const { cleanup = true, quiet = false } = options;
|
|
107
|
-
const path =
|
|
107
|
+
const path = require_node_path.getNodePath();
|
|
108
108
|
await require_fs_safe.safeMkdir(outputDir);
|
|
109
109
|
const zipPath = path.join(outputDir, "__temp_download__.zip");
|
|
110
110
|
if (!quiet) logger.info(`Downloading zip asset from release ${tag}...`);
|
|
@@ -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,
|
|
@@ -99,7 +99,16 @@ 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
|
+
/**
|
|
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;
|
|
105
114
|
export {};
|
|
@@ -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;
|