@socketsecurity/lib 6.0.5 → 6.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +43 -0
- package/dist/ai/discover.d.mts +2 -2
- package/dist/ai/discover.js +6 -4
- package/dist/ai/spawn.js +10 -6
- package/dist/ai/types.d.mts +18 -6
- package/dist/ai/worktree.d.mts +6 -6
- package/dist/ai/worktree.js +12 -7
- package/dist/ansi/strip.d.ts +1 -1
- package/dist/ansi/strip.js +0 -2
- package/dist/archives/_internal.js +7 -9
- package/dist/archives/extract.js +1 -1
- package/dist/archives/tar.js +6 -6
- package/dist/archives/zip.js +4 -6
- package/dist/argv/flag-predicates.d.ts +12 -12
- package/dist/argv/flag-predicates.js +17 -17
- package/dist/argv/flag-types.d.ts +18 -18
- package/dist/argv/flag-types.js +4 -4
- package/dist/argv/parse.d.ts +1 -1
- package/dist/arrays/_internal.js +11 -12
- package/dist/arrays/chunk.js +0 -1
- package/dist/arrays/join.d.ts +37 -3
- package/dist/arrays/join.js +43 -7
- package/dist/arrays/unique.js +0 -1
- package/dist/bin/_internal.d.ts +1 -1
- package/dist/bin/_internal.js +1 -1
- package/dist/bin/acorn-bindgen.cjs +769 -0
- package/dist/bin/acorn.wasm +0 -0
- package/dist/bin/exec.js +2 -3
- package/dist/bin/find.js +13 -13
- package/dist/bin/prim.cjs +39244 -0
- package/dist/bin/resolve.js +12 -13
- package/dist/bin/which.js +8 -8
- package/dist/cache/ttl/store.js +5 -5
- package/dist/checks/primordials-defaults.d.ts +3 -3
- package/dist/checks/primordials-defaults.js +3 -3
- package/dist/checks/primordials.js +4 -3
- package/dist/{bin → cli}/check-primordials.d.ts +11 -11
- package/dist/{bin → cli}/check-primordials.js +56 -52
- package/dist/{bin → cli}/check.js +6 -5
- package/dist/{bin → cli}/socket-lib.d.ts +1 -1
- package/dist/{bin → cli}/socket-lib.js +4 -4
- package/dist/colors/socket-palette.js +7 -9
- package/dist/compression/_internal.d.ts +12 -12
- package/dist/compression/_internal.js +20 -19
- package/dist/compression/brotli.d.ts +25 -25
- package/dist/compression/brotli.js +37 -44
- package/dist/compression/gzip.d.ts +23 -23
- package/dist/compression/gzip.js +44 -52
- package/dist/constants/agents.d.ts +3 -1
- package/dist/constants/agents.js +15 -11
- package/dist/constants/licenses.js +3 -3
- package/dist/constants/node.d.ts +23 -0
- package/dist/constants/node.js +47 -15
- package/dist/constants/packages.js +22 -28
- package/dist/constants/platform.d.ts +30 -3
- package/dist/constants/platform.js +72 -12
- package/dist/constants/runtime.d.ts +22 -0
- package/dist/constants/runtime.js +32 -0
- package/dist/constants/socket.js +1 -1
- package/dist/cover/code.js +8 -8
- package/dist/cover/formatters.js +5 -5
- package/dist/crypto/hash.d.ts +26 -1
- package/dist/crypto/hash.js +43 -12
- package/dist/debug/_internal.js +4 -6
- package/dist/debug/caller-info.js +2 -3
- package/dist/debug/namespace.d.ts +7 -0
- package/dist/debug/namespace.js +21 -12
- package/dist/debug/output.js +21 -24
- package/dist/debug/types.d.ts +4 -4
- package/dist/dlx/arborist.js +6 -6
- package/dist/dlx/binary-cache.js +14 -14
- package/dist/dlx/binary-download.d.ts +1 -1
- package/dist/dlx/binary-download.js +14 -13
- package/dist/dlx/binary-resolution.js +16 -14
- package/dist/dlx/binary-types.d.ts +5 -5
- package/dist/dlx/binary.js +5 -5
- package/dist/dlx/cache.js +1 -1
- package/dist/dlx/detect.d.ts +34 -25
- package/dist/dlx/detect.js +86 -77
- package/dist/dlx/dir.js +2 -2
- package/dist/dlx/firewall.d.ts +1 -1
- package/dist/dlx/lockfile.d.ts +19 -18
- package/dist/dlx/lockfile.js +16 -16
- package/dist/dlx/manifest.d.ts +6 -6
- package/dist/dlx/manifest.js +5 -5
- package/dist/dlx/package.d.ts +10 -10
- package/dist/dlx/package.js +16 -16
- package/dist/dlx/packages.js +4 -4
- package/dist/dlx/paths.js +7 -7
- package/dist/dlx/spec.js +1 -1
- package/dist/dlx/types.d.ts +28 -27
- package/dist/eco/cargo/parse-lockfile.d.ts +1 -1
- package/dist/eco/cargo/parse-lockfile.js +2 -2
- package/dist/eco/manifest/analyze-lockfile.js +2 -2
- package/dist/eco/manifest/detect-format.js +4 -4
- package/dist/eco/manifest/find-packages.js +2 -2
- package/dist/eco/manifest/get-package-versions.js +2 -2
- package/dist/eco/manifest/get-package.js +2 -2
- package/dist/eco/manifest/parse-lockfile.js +2 -2
- package/dist/eco/manifest/parse-manifest.js +2 -2
- package/dist/eco/manifest/parse.js +2 -2
- package/dist/eco/npm/npm/exec.js +2 -2
- package/dist/eco/npm/npm/flags.js +7 -12
- package/dist/eco/npm/npm/parse-lockfile.d.ts +14 -14
- package/dist/eco/npm/npm/parse-lockfile.js +3 -3
- package/dist/eco/npm/parse-package-json.js +3 -3
- package/dist/eco/npm/pnpm/exec.d.ts +1 -1
- package/dist/eco/npm/pnpm/exec.js +5 -5
- package/dist/eco/npm/pnpm/flags.js +0 -3
- package/dist/eco/npm/pnpm/parse-lockfile.d.ts +1 -1
- package/dist/eco/npm/pnpm/parse-lockfile.js +4 -4
- package/dist/eco/npm/script.js +9 -6
- package/dist/eco/npm/yarnpkg/yarn/exec.js +3 -3
- package/dist/eco/npm/yarnpkg/yarn/parse-lockfile.d.ts +2 -2
- package/dist/eco/npm/yarnpkg/yarn/parse-lockfile.js +8 -8
- package/dist/effects/pulse-frames.d.ts +3 -1
- package/dist/effects/shimmer-keyframes.d.ts +1 -1
- package/dist/effects/shimmer-terminal.d.ts +1 -1
- package/dist/env/boolean.js +0 -1
- package/dist/env/ci.js +0 -1
- package/dist/env/debug.js +0 -1
- package/dist/env/github-status.d.ts +51 -0
- package/dist/env/github-status.js +90 -0
- package/dist/env/github.js +0 -8
- package/dist/env/home.js +0 -1
- package/dist/env/locale.js +0 -3
- package/dist/env/node-auth-token.js +0 -1
- package/dist/env/node-env.js +0 -1
- package/dist/env/node-version-managers.d.ts +53 -0
- package/dist/env/node-version-managers.js +90 -0
- package/dist/env/npm.js +0 -5
- package/dist/env/number.js +0 -1
- package/dist/env/package-manager.js +3 -6
- package/dist/env/path.js +0 -1
- package/dist/env/pre-commit.js +1 -2
- package/dist/env/rewire.d.ts +7 -6
- package/dist/env/rewire.js +15 -16
- package/dist/env/shell.js +0 -1
- package/dist/env/socket-cli.js +5 -18
- package/dist/env/socket-mcp.d.ts +114 -0
- package/dist/env/socket-mcp.js +146 -0
- package/dist/env/socket.d.ts +1 -109
- package/dist/env/socket.js +12 -166
- package/dist/env/string.js +0 -1
- package/dist/env/temp-dir.js +0 -3
- package/dist/env/term.js +0 -1
- package/dist/env/test.js +3 -6
- package/dist/env/windows.js +0 -4
- package/dist/env/xdg.js +0 -3
- package/dist/events/exit/_internal.d.ts +11 -9
- package/dist/events/exit/_internal.js +31 -35
- package/dist/events/exit/handler.js +3 -4
- package/dist/events/exit/intercept.js +4 -6
- package/dist/events/exit/lifecycle.js +16 -18
- package/dist/events/exit/signals.js +1 -2
- package/dist/events/exit/types.d.ts +6 -5
- package/dist/external/@npmcli/package-json.js +2 -2
- package/dist/external/@sinclair/typebox/value.js +5 -1
- package/dist/external/@sinclair/typebox.js +5 -1
- package/dist/external/@socketregistry/packageurl-js.js +27 -0
- package/dist/external/npm-pack.js +2 -2
- package/dist/external-tools/bazel/read-bazel-version-file.js +1 -1
- package/dist/external-tools/bazel/resolve.js +2 -1
- package/dist/external-tools/bazel/types.d.ts +1 -1
- package/dist/external-tools/cdxgen/from-vfs.js +1 -1
- package/dist/external-tools/cdxgen/resolve.js +2 -1
- package/dist/external-tools/cdxgen/types.d.ts +1 -1
- package/dist/external-tools/from-download.d.ts +1 -1
- package/dist/external-tools/from-download.js +1 -1
- package/dist/external-tools/from-pip-venv.d.ts +73 -0
- package/dist/external-tools/from-pip-venv.js +98 -0
- package/dist/external-tools/janus/asset-names.js +1 -1
- package/dist/external-tools/janus/from-download.js +3 -5
- package/dist/external-tools/janus/from-vfs.js +1 -1
- package/dist/external-tools/janus/resolve.js +2 -1
- package/dist/external-tools/janus/types.d.ts +1 -1
- package/dist/external-tools/jre/detect-platform-arch.d.ts +10 -6
- package/dist/external-tools/jre/detect-platform-arch.js +29 -14
- package/dist/external-tools/jre/from-download.js +2 -1
- package/dist/external-tools/jre/from-vfs.js +1 -1
- package/dist/external-tools/jre/resolve.js +2 -1
- package/dist/external-tools/jre/types.d.ts +1 -1
- package/dist/external-tools/manifest.d.ts +7 -7
- package/dist/external-tools/manifest.js +18 -16
- package/dist/external-tools/opengrep/from-vfs.js +1 -1
- package/dist/external-tools/opengrep/resolve.js +2 -1
- package/dist/external-tools/opengrep/types.d.ts +1 -1
- package/dist/external-tools/python/asset-names.d.ts +76 -0
- package/dist/external-tools/python/asset-names.js +104 -0
- package/dist/external-tools/python/dlx.d.ts +80 -0
- package/dist/external-tools/python/dlx.js +87 -0
- package/dist/external-tools/python/from-download.d.ts +53 -0
- package/dist/external-tools/python/from-download.js +68 -0
- package/dist/external-tools/python/from-path.d.ts +7 -0
- package/dist/external-tools/python/from-path.js +23 -0
- package/dist/external-tools/python/pin.d.ts +121 -0
- package/dist/external-tools/python/pin.js +173 -0
- package/dist/external-tools/python/pip-install.d.ts +75 -0
- package/dist/external-tools/python/pip-install.js +139 -0
- package/dist/external-tools/python/resolve.d.ts +42 -0
- package/dist/external-tools/python/resolve.js +58 -0
- package/dist/external-tools/python/types.d.ts +49 -0
- package/dist/external-tools/sbt/from-vfs.js +1 -1
- package/dist/external-tools/sbt/resolve.js +2 -1
- package/dist/external-tools/sbt/types.d.ts +1 -1
- package/dist/external-tools/skillspector/from-dlx.d.ts +24 -0
- package/dist/external-tools/skillspector/from-dlx.js +41 -0
- package/dist/external-tools/skillspector/from-path.d.ts +8 -0
- package/dist/external-tools/skillspector/from-path.js +30 -0
- package/dist/external-tools/skillspector/from-vfs.d.ts +8 -0
- package/dist/external-tools/skillspector/from-vfs.js +27 -0
- package/dist/external-tools/skillspector/resolve.d.ts +34 -0
- package/dist/external-tools/skillspector/resolve.js +53 -0
- package/dist/external-tools/skillspector/types.d.ts +24 -0
- package/dist/external-tools/skillspector/types.js +2 -0
- package/dist/external-tools/synp/from-download.js +2 -2
- package/dist/external-tools/synp/from-vfs.js +1 -1
- package/dist/external-tools/synp/resolve.js +2 -1
- package/dist/external-tools/trivy/from-vfs.js +1 -1
- package/dist/external-tools/trivy/resolve.js +2 -1
- package/dist/external-tools/trivy/types.d.ts +1 -1
- package/dist/external-tools/trufflehog/from-vfs.js +1 -1
- package/dist/external-tools/trufflehog/resolve.js +2 -1
- package/dist/external-tools/trufflehog/types.d.ts +1 -1
- package/dist/fs/_internal.d.ts +1 -1
- package/dist/fs/_internal.js +7 -7
- package/dist/fs/access.js +5 -9
- package/dist/fs/{path-cache.js → allowed-dirs-cache.js} +1 -1
- package/dist/fs/encoding.js +5 -7
- package/dist/fs/{find-up.js → find.js} +11 -13
- package/dist/fs/inspect.js +7 -13
- package/dist/fs/read-dir.js +7 -10
- package/dist/fs/read-file.js +8 -14
- package/dist/fs/read-json-cache.d.ts +6 -4
- package/dist/fs/read-json-cache.js +9 -6
- package/dist/fs/read-json.js +4 -6
- package/dist/fs/resolve-module.js +1 -1
- package/dist/fs/safe.d.ts +1 -1
- package/dist/fs/safe.js +12 -13
- package/dist/fs/unique.js +4 -5
- package/dist/fs/validate.js +1 -2
- package/dist/fs/write-json.js +4 -5
- package/dist/git/_internal.js +12 -11
- package/dist/git/changed.js +4 -4
- package/dist/git/repo.js +3 -3
- package/dist/git/staged.js +4 -4
- package/dist/git/unstaged.js +4 -4
- package/dist/github/ghsa.js +2 -2
- package/dist/github/refs-cache.d.ts +1 -1
- package/dist/github/refs-cache.js +5 -5
- package/dist/github/refs-rest.js +5 -5
- package/dist/github/{fetch.js → request.js} +13 -2
- package/dist/github/token.js +1 -1
- package/dist/github/types.d.ts +1 -1
- package/dist/globs/_internal.js +7 -9
- package/dist/globs/match.js +6 -7
- package/dist/globs/matcher.d.ts +3 -3
- package/dist/globs/matcher.js +12 -14
- package/dist/globs/stream.js +1 -2
- package/dist/globs/types.d.ts +24 -24
- package/dist/http-request/_internal.d.ts +1 -1
- package/dist/http-request/browser.js +21 -13
- package/dist/http-request/checksum-file.d.ts +55 -0
- package/dist/http-request/checksum-file.js +95 -0
- package/dist/http-request/download-types.d.ts +15 -23
- package/dist/http-request/download.js +4 -4
- package/dist/http-request/headers.d.ts +32 -3
- package/dist/http-request/headers.js +41 -13
- package/dist/http-request/request-attempt.js +38 -33
- package/dist/http-request/request-types.d.ts +7 -2
- package/dist/http-request/request.js +33 -16
- package/dist/http-request/response-reader.d.ts +12 -1
- package/dist/http-request/response-reader.js +22 -2
- package/dist/http-request/user-agent.js +3 -4
- package/dist/integrity.d.ts +86 -18
- package/dist/integrity.js +119 -30
- package/dist/ipc/directory.js +2 -2
- package/dist/ipc/paths.js +1 -1
- package/dist/ipc/write.js +1 -1
- package/dist/ipc-cli/get.js +12 -12
- package/dist/json/edit.js +13 -14
- package/dist/json/format.js +2 -2
- package/dist/json/parse.d.ts +1 -1
- package/dist/json/parse.js +3 -7
- package/dist/logger/_internal.d.ts +4 -4
- package/dist/logger/_internal.js +3 -3
- package/dist/logger/colors.js +4 -3
- package/dist/logger/console-methods.d.ts +132 -0
- package/dist/logger/console-methods.js +169 -0
- package/dist/logger/console.d.ts +12 -0
- package/dist/logger/console.js +42 -11
- package/dist/logger/indentation-methods.d.ts +81 -0
- package/dist/logger/indentation-methods.js +121 -0
- package/dist/logger/node.d.ts +16 -338
- package/dist/logger/node.js +75 -608
- package/dist/logger/options.d.ts +39 -0
- package/dist/logger/options.js +47 -0
- package/dist/logger/semantic-methods.d.ts +63 -0
- package/dist/logger/semantic-methods.js +108 -0
- package/dist/logger/stream-methods.d.ts +63 -0
- package/dist/logger/stream-methods.js +101 -0
- package/dist/logger/stream.d.ts +37 -0
- package/dist/logger/stream.js +42 -0
- package/dist/logger/symbols-builder.js +9 -9
- package/dist/logger/symbols.d.ts +2 -25
- package/dist/logger/symbols.js +53 -74
- package/dist/logger/types.d.ts +1 -1
- package/dist/memo/types.d.ts +6 -6
- package/dist/native-messaging/host.d.ts +20 -0
- package/dist/native-messaging/host.js +120 -0
- package/dist/native-messaging/index.d.ts +5 -0
- package/dist/native-messaging/index.js +22 -0
- package/dist/native-messaging/install.d.ts +60 -0
- package/dist/native-messaging/install.js +141 -0
- package/dist/native-messaging/rate-limit.d.ts +62 -0
- package/dist/native-messaging/rate-limit.js +115 -0
- package/dist/native-messaging/run.d.ts +10 -0
- package/dist/native-messaging/run.js +17 -0
- package/dist/node/async-hooks.js +4 -3
- package/dist/node/child-process.js +4 -3
- package/dist/node/crypto.js +4 -3
- package/dist/node/events.js +4 -3
- package/dist/node/fs-promises.js +4 -3
- package/dist/node/fs.js +4 -3
- package/dist/node/http.js +4 -3
- package/dist/node/https.js +4 -3
- package/dist/node/module.js +10 -6
- package/dist/node/os.js +4 -3
- package/dist/node/path.js +4 -3
- package/dist/node/timers-promises.js +4 -3
- package/dist/node/url.js +4 -3
- package/dist/node/util.js +4 -3
- package/dist/objects/getters.js +5 -7
- package/dist/objects/inspect.js +1 -4
- package/dist/objects/mutate.js +2 -3
- package/dist/objects/predicates.js +0 -4
- package/dist/objects/sort.js +3 -7
- package/dist/packages/edit-class.js +15 -16
- package/dist/packages/edit.js +12 -14
- package/dist/packages/exports.js +11 -17
- package/dist/packages/fetch.d.ts +16 -0
- package/dist/packages/fetch.js +81 -0
- package/dist/packages/find.d.ts +55 -0
- package/dist/packages/find.js +65 -0
- package/dist/packages/isolation.js +14 -14
- package/dist/packages/licenses.js +16 -16
- package/dist/packages/manifest.js +12 -15
- package/dist/packages/metadata-extensions.d.ts +14 -0
- package/dist/packages/metadata-extensions.js +43 -0
- package/dist/packages/normalize.js +5 -9
- package/dist/packages/provenance.d.ts +6 -0
- package/dist/packages/provenance.js +25 -18
- package/dist/packages/read.d.ts +29 -0
- package/dist/packages/read.js +66 -0
- package/dist/packages/specs.d.ts +48 -1
- package/dist/packages/specs.js +74 -11
- package/dist/packages/tarball.d.ts +24 -0
- package/dist/packages/tarball.js +79 -0
- package/dist/packages/types.d.ts +21 -20
- package/dist/packages/validation.js +0 -3
- package/dist/paths/_internal.d.ts +2 -1
- package/dist/paths/_internal.js +7 -19
- package/dist/paths/conversion.js +5 -9
- package/dist/paths/filenames.d.ts +0 -1
- package/dist/paths/filenames.js +0 -2
- package/dist/paths/normalize.js +6 -5
- package/dist/paths/packages.js +4 -7
- package/dist/paths/predicates.js +9 -16
- package/dist/paths/resolve.js +11 -14
- package/dist/paths/rewire.js +3 -3
- package/dist/paths/socket.js +16 -16
- package/dist/paths/walk.d.ts +1 -1
- package/dist/paths/walk.js +4 -4
- package/dist/perf/report.js +2 -2
- package/dist/perf/types.d.ts +1 -1
- package/dist/pkg-ext/data.js +1 -1
- package/dist/primordials/array.js +9 -9
- package/dist/primordials/date.js +2 -2
- package/dist/primordials/error.js +3 -3
- package/dist/primordials/headers.d.ts +10 -0
- package/dist/primordials/headers.js +23 -0
- package/dist/primordials/intl.d.ts +13 -0
- package/dist/primordials/intl.js +26 -0
- package/dist/primordials/math.js +33 -33
- package/dist/primordials/number.js +9 -9
- package/dist/primordials/object.js +5 -5
- package/dist/primordials/string.d.ts +2 -2
- package/dist/primordials/string.js +6 -6
- package/dist/primordials/symbol.js +3 -3
- package/dist/primordials/uncurry.js +9 -9
- package/dist/process/abort.js +3 -3
- package/dist/process/lock-manager.js +8 -8
- package/dist/process/spawn/_internal.js +6 -8
- package/dist/process/spawn/child.js +14 -14
- package/dist/process/spawn/errors.js +2 -4
- package/dist/process/spawn/kill-tree.d.ts +53 -0
- package/dist/process/spawn/kill-tree.js +85 -0
- package/dist/process/spawn/stdio.js +0 -1
- package/dist/process/spawn/types.d.ts +5 -5
- package/dist/process/transient.js +2 -2
- package/dist/promises/_internal.d.ts +2 -1
- package/dist/promises/_internal.js +2 -6
- package/dist/promises/iterate.js +12 -16
- package/dist/promises/options.js +3 -6
- package/dist/promises/retry.js +4 -5
- package/dist/promises/timers.d.ts +30 -0
- package/dist/promises/timers.js +48 -0
- package/dist/releases/github-archives.d.ts +6 -6
- package/dist/releases/github-archives.js +2 -2
- package/dist/releases/github-asset-url.d.ts +1 -1
- package/dist/releases/github-asset-url.js +5 -5
- package/dist/releases/github-downloads.d.ts +1 -1
- package/dist/releases/github-downloads.js +3 -3
- package/dist/releases/github-listing.d.ts +11 -2
- package/dist/releases/github-listing.js +20 -7
- package/dist/releases/github-retry-config.js +1 -1
- package/dist/releases/github-types.d.ts +6 -6
- package/dist/releases/socket-btm-binary-naming.d.ts +107 -0
- package/dist/releases/socket-btm-binary-naming.js +155 -0
- package/dist/releases/socket-btm.d.ts +8 -115
- package/dist/releases/socket-btm.js +16 -159
- package/dist/schema/types.d.ts +1 -1
- package/dist/sea/detect.js +6 -6
- package/dist/secrets/_internal.d.ts +2 -2
- package/dist/secrets/_internal.js +5 -4
- package/dist/secrets/compare.d.ts +45 -0
- package/dist/secrets/compare.js +61 -0
- package/dist/secrets/keychain.js +9 -6
- package/dist/secrets/linux.js +25 -23
- package/dist/secrets/macos.d.ts +1 -1
- package/dist/secrets/macos.js +18 -16
- package/dist/secrets/rc.d.ts +2 -2
- package/dist/secrets/rc.js +15 -10
- package/dist/secrets/socket-api-token.d.ts +4 -4
- package/dist/secrets/socket-api-token.js +18 -9
- package/dist/secrets/windows.js +21 -17
- package/dist/shadow/skip.js +2 -2
- package/dist/shell/parse.d.ts +108 -1
- package/dist/shell/parse.js +168 -2
- package/dist/smol/detect.js +9 -10
- package/dist/smol/http.js +6 -7
- package/dist/smol/https.js +6 -7
- package/dist/smol/manifest.d.ts +1 -1
- package/dist/smol/manifest.js +6 -7
- package/dist/smol/path.d.ts +1 -1
- package/dist/smol/path.js +7 -8
- package/dist/smol/primordial.d.ts +4 -0
- package/dist/smol/primordial.js +6 -7
- package/dist/smol/purl.d.ts +1 -1
- package/dist/smol/purl.js +7 -8
- package/dist/smol/versions.js +6 -7
- package/dist/smol/vfs.js +6 -7
- package/dist/sorts/_internal.js +6 -8
- package/dist/sorts/natural.js +10 -12
- package/dist/sorts/semver.js +1 -2
- package/dist/sorts/strings.js +0 -1
- package/dist/sorts/types.d.ts +1 -1
- package/dist/spinner/create-spinner-class.d.ts +38 -0
- package/dist/spinner/create-spinner-class.js +302 -0
- package/dist/spinner/default.js +8 -9
- package/dist/spinner/spinner-internals.d.ts +36 -0
- package/dist/spinner/spinner-internals.js +101 -0
- package/dist/spinner/spinner-shimmer-methods.d.ts +54 -0
- package/dist/spinner/spinner-shimmer-methods.js +143 -0
- package/dist/spinner/spinner-status-methods.d.ts +40 -0
- package/dist/spinner/spinner-status-methods.js +133 -0
- package/dist/spinner/spinner.d.ts +4 -5
- package/dist/spinner/spinner.js +18 -705
- package/dist/spinner/types.d.ts +3 -1
- package/dist/spinner/with.d.ts +10 -0
- package/dist/spinner/with.js +16 -2
- package/dist/stdio/divider.js +1 -1
- package/dist/stdio/footer.js +3 -3
- package/dist/stdio/header.js +4 -4
- package/dist/stdio/progress.js +5 -5
- package/dist/stdio/prompts.d.ts +5 -3
- package/dist/stdio/prompts.js +6 -7
- package/dist/stdio/stdout.js +3 -3
- package/dist/streams/parallel.js +3 -5
- package/dist/streams/transform.js +2 -3
- package/dist/strings/format.js +2 -6
- package/dist/strings/predicates.js +0 -2
- package/dist/strings/search.js +1 -2
- package/dist/strings/transform.js +0 -3
- package/dist/strings/width.js +9 -10
- package/dist/tables/bordered.js +4 -3
- package/dist/tables/padding.js +1 -1
- package/dist/tables/simple.js +8 -5
- package/dist/temporal/instant.js +4 -2
- package/dist/temporal/slots.js +7 -6
- package/dist/temporal/system.js +9 -9
- package/dist/themes/context.d.ts +3 -2
- package/dist/themes/context.js +4 -5
- package/dist/themes/themes.js +15 -15
- package/dist/themes/types.d.ts +3 -3
- package/dist/url/parse.js +0 -2
- package/dist/url/predicates.js +1 -2
- package/dist/url/search-params.js +3 -9
- package/dist/url/types.d.ts +5 -5
- package/dist/versions/_internal.js +3 -3
- package/dist/words/article.js +0 -1
- package/dist/words/capitalize.js +0 -1
- package/dist/words/pluralize.d.ts +24 -2
- package/dist/words/pluralize.js +47 -2
- package/dist/words/types.d.ts +25 -2
- package/package.json +289 -108
- package/dist/external-tools/uv/asset-names.d.ts +0 -36
- package/dist/external-tools/uv/asset-names.js +0 -70
- package/dist/external-tools/uv/from-download.d.ts +0 -17
- package/dist/external-tools/uv/from-download.js +0 -47
- package/dist/external-tools/uv/from-path.d.ts +0 -5
- package/dist/external-tools/uv/from-path.js +0 -22
- package/dist/external-tools/uv/from-vfs.d.ts +0 -7
- package/dist/external-tools/uv/from-vfs.js +0 -26
- package/dist/external-tools/uv/resolve.d.ts +0 -25
- package/dist/external-tools/uv/resolve.js +0 -52
- package/dist/external-tools/uv/types.d.ts +0 -24
- package/dist/http-request/checksums.d.ts +0 -69
- package/dist/http-request/checksums.js +0 -108
- package/dist/http-request/http-request.d.ts +0 -12
- package/dist/http-request/http-request.js +0 -11
- package/dist/packages/operations.d.ts +0 -113
- package/dist/packages/operations.js +0 -304
- package/dist/ssri/convert.d.ts +0 -48
- package/dist/ssri/convert.js +0 -69
- package/dist/ssri/parse.d.ts +0 -27
- package/dist/ssri/parse.js +0 -41
- package/dist/ssri/validate.d.ts +0 -41
- package/dist/ssri/validate.js +0 -56
- /package/dist/{bin → cli}/check.d.ts +0 -0
- /package/dist/external-tools/{uv → python}/types.js +0 -0
- /package/dist/fs/{path-cache.d.ts → allowed-dirs-cache.d.ts} +0 -0
- /package/dist/fs/{find-up.d.ts → find.d.ts} +0 -0
- /package/dist/github/{fetch.d.ts → request.d.ts} +0 -0
|
@@ -6,10 +6,11 @@ const require_primordials_date = require('../primordials/date.js');
|
|
|
6
6
|
const require_primordials_json = require('../primordials/json.js');
|
|
7
7
|
const require_errors_message = require('../errors/message.js');
|
|
8
8
|
const require_http_request_request = require('../http-request/request.js');
|
|
9
|
+
const require_env_github_status = require('../env/github-status.js');
|
|
9
10
|
const require_github_errors = require('./errors.js');
|
|
10
11
|
const require_github_token = require('./token.js');
|
|
11
12
|
|
|
12
|
-
//#region src/github/
|
|
13
|
+
//#region src/github/request.ts
|
|
13
14
|
/**
|
|
14
15
|
* @file Authenticated GitHub REST fetch. `fetchGitHub` is the single entry
|
|
15
16
|
* point that the rest of the github/ modules go through for REST calls. It
|
|
@@ -87,7 +88,7 @@ async function fetchGitHub(url, options) {
|
|
|
87
88
|
__proto__: null,
|
|
88
89
|
...options
|
|
89
90
|
};
|
|
90
|
-
const token = opts.token
|
|
91
|
+
const token = opts.token ?? require_github_token.getGitHubToken();
|
|
91
92
|
const headers = {
|
|
92
93
|
Accept: "application/vnd.github.v3+json",
|
|
93
94
|
"User-Agent": "socket-registry-github-client",
|
|
@@ -110,6 +111,16 @@ async function fetchGitHub(url, options) {
|
|
|
110
111
|
throw error;
|
|
111
112
|
}
|
|
112
113
|
}
|
|
114
|
+
if (response.status >= 500) {
|
|
115
|
+
/* c8 ignore start - External status probe, non-deterministic */
|
|
116
|
+
const ghStatus = await require_env_github_status.probeGitHubStatus(4e3).catch(() => void 0);
|
|
117
|
+
/* c8 ignore stop */
|
|
118
|
+
let statusNote = "";
|
|
119
|
+
if (ghStatus) if (ghStatus.status === "unknown") statusNote = " (githubstatus.com unreachable — could not confirm platform health)";
|
|
120
|
+
else if (ghStatus.degraded) statusNote = `\nGitHub platform status at time of failure:\n${ghStatus.components.map((c) => ` ${c.name}: ${c.status}`).join("\n")}`;
|
|
121
|
+
else statusNote = "\nGitHub platform status: all monitored components operational — this may be a transient issue or a request-specific error.";
|
|
122
|
+
throw new require_primordials_error.ErrorCtor(`GitHub API error ${response.status}: ${response.statusText}.${statusNote}`);
|
|
123
|
+
}
|
|
113
124
|
throw new require_primordials_error.ErrorCtor(`GitHub API error ${response.status}: ${response.statusText}`);
|
|
114
125
|
}
|
|
115
126
|
if (response.body.byteLength === 0) throw new require_github_errors.GitHubEmptyBodyError(url);
|
package/dist/github/token.js
CHANGED
|
@@ -34,7 +34,7 @@ const require_env_socket_cli = require('../env/socket-cli.js');
|
|
|
34
34
|
* @returns The first available GitHub token, or `undefined` if none found
|
|
35
35
|
*/
|
|
36
36
|
function getGitHubToken() {
|
|
37
|
-
return
|
|
37
|
+
return require_env_github.getGithubToken() || require_env_github.getGhToken() || require_env_socket_cli.getSocketCliGithubToken() || void 0;
|
|
38
38
|
}
|
|
39
39
|
/**
|
|
40
40
|
* Get GitHub authentication token from git config. Reads the `github.token`
|
package/dist/github/types.d.ts
CHANGED
package/dist/globs/_internal.js
CHANGED
|
@@ -18,17 +18,15 @@ const require_node_fs_promises = require('../node/fs-promises.js');
|
|
|
18
18
|
*/
|
|
19
19
|
const MATCHER_CACHE_MAX_SIZE = 100;
|
|
20
20
|
const matcherCache = new require_primordials_map_set.MapCtor();
|
|
21
|
-
let
|
|
22
|
-
let
|
|
23
|
-
/* @__NO_SIDE_EFFECTS__ */
|
|
21
|
+
let cachedFastGlob;
|
|
22
|
+
let cachedPicomatch;
|
|
24
23
|
function getFastGlob() {
|
|
25
|
-
if (
|
|
26
|
-
return
|
|
24
|
+
if (cachedFastGlob === void 0) cachedFastGlob = /*@__PURE__*/ require("../external/fast-glob.js");
|
|
25
|
+
return cachedFastGlob;
|
|
27
26
|
}
|
|
28
|
-
/* @__NO_SIDE_EFFECTS__ */
|
|
29
27
|
function getPicomatch() {
|
|
30
|
-
if (
|
|
31
|
-
return
|
|
28
|
+
if (cachedPicomatch === void 0) cachedPicomatch = /*@__PURE__*/ require("../external/picomatch.js");
|
|
29
|
+
return cachedPicomatch;
|
|
32
30
|
}
|
|
33
31
|
/**
|
|
34
32
|
* Glob results are normalized to forward slashes regardless of the backend
|
|
@@ -38,7 +36,7 @@ function getPicomatch() {
|
|
|
38
36
|
* this stays consistent with every other path-shaped string in the lib.
|
|
39
37
|
*/
|
|
40
38
|
function normalizeGlobResults(out) {
|
|
41
|
-
for (let i = 0; i < out.length; i += 1) out[i] =
|
|
39
|
+
for (let i = 0; i < out.length; i += 1) out[i] = require_paths_normalize.normalizePath(out[i]);
|
|
42
40
|
return out;
|
|
43
41
|
}
|
|
44
42
|
/**
|
package/dist/globs/match.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
/* Socket Lib - Built with rolldown */
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
4
|
const require_node_fs = require('../node/fs.js');
|
|
5
|
+
const require_primordials_object = require('../primordials/object.js');
|
|
5
6
|
const require_node_fs_promises = require('../node/fs-promises.js');
|
|
6
7
|
const require_globs__internal = require('./_internal.js');
|
|
7
8
|
const require_promises_resolvers = require('../promises/resolvers.js');
|
|
@@ -45,7 +46,7 @@ const require_promises_resolvers = require('../promises/resolvers.js');
|
|
|
45
46
|
*/
|
|
46
47
|
function canUseNodeFsGlob(options) {
|
|
47
48
|
if (!options) return true;
|
|
48
|
-
for (const key of
|
|
49
|
+
for (const key of require_primordials_object.ObjectKeys(options)) if (key !== "cwd" && key !== "ignore") return false;
|
|
49
50
|
return true;
|
|
50
51
|
}
|
|
51
52
|
/**
|
|
@@ -57,15 +58,14 @@ function canUseNodeFsGlob(options) {
|
|
|
57
58
|
* console.log(files) // ['src/index.ts', 'src/utils.ts']
|
|
58
59
|
* ```
|
|
59
60
|
*/
|
|
60
|
-
/* @__NO_SIDE_EFFECTS__ */
|
|
61
61
|
async function glob(patterns, options) {
|
|
62
62
|
const normalizedIgnore = require_globs__internal.normalizeIgnorePatterns(options?.ignore);
|
|
63
63
|
/* c8 ignore start */
|
|
64
|
-
if (canUseNodeFsGlob(options)) return require_globs__internal.normalizeGlobResults(await require_promises_resolvers.fromAsync(
|
|
64
|
+
if (canUseNodeFsGlob(options)) return require_globs__internal.normalizeGlobResults(await require_promises_resolvers.fromAsync(require_node_fs_promises.getNodeFsPromises().glob(patterns, {
|
|
65
65
|
...options?.cwd ? { cwd: options.cwd } : {},
|
|
66
66
|
...normalizedIgnore ? { exclude: normalizedIgnore } : {}
|
|
67
67
|
})));
|
|
68
|
-
return require_globs__internal.normalizeGlobResults(await
|
|
68
|
+
return require_globs__internal.normalizeGlobResults(await require_globs__internal.getFastGlob().glob(patterns, {
|
|
69
69
|
...options,
|
|
70
70
|
...normalizedIgnore ? { ignore: normalizedIgnore } : {}
|
|
71
71
|
}));
|
|
@@ -80,15 +80,14 @@ async function glob(patterns, options) {
|
|
|
80
80
|
* console.log(files) // ['package.json', 'tsconfig.json']
|
|
81
81
|
* ```
|
|
82
82
|
*/
|
|
83
|
-
/* @__NO_SIDE_EFFECTS__ */
|
|
84
83
|
function globSync(patterns, options) {
|
|
85
84
|
const normalizedIgnore = require_globs__internal.normalizeIgnorePatterns(options?.ignore);
|
|
86
85
|
/* c8 ignore start */
|
|
87
|
-
if (canUseNodeFsGlob(options)) return require_globs__internal.normalizeGlobResults([...
|
|
86
|
+
if (canUseNodeFsGlob(options)) return require_globs__internal.normalizeGlobResults([...require_node_fs.getNodeFs().globSync(patterns, {
|
|
88
87
|
...options?.cwd ? { cwd: options.cwd } : {},
|
|
89
88
|
...normalizedIgnore ? { exclude: normalizedIgnore } : {}
|
|
90
89
|
})]);
|
|
91
|
-
return require_globs__internal.normalizeGlobResults(
|
|
90
|
+
return require_globs__internal.normalizeGlobResults(require_globs__internal.getFastGlob().globSync(patterns, {
|
|
92
91
|
...options,
|
|
93
92
|
...normalizedIgnore ? { ignore: normalizedIgnore } : {}
|
|
94
93
|
}));
|
package/dist/globs/matcher.d.ts
CHANGED
|
@@ -30,9 +30,9 @@ import type { Pattern } from './types';
|
|
|
30
30
|
* ```
|
|
31
31
|
*/
|
|
32
32
|
export declare function getGlobMatcher(glob: Pattern | Pattern[], options?: {
|
|
33
|
-
dot?: boolean;
|
|
34
|
-
nocase?: boolean;
|
|
35
|
-
ignore?: string[];
|
|
33
|
+
dot?: boolean | undefined;
|
|
34
|
+
nocase?: boolean | undefined;
|
|
35
|
+
ignore?: string[] | undefined;
|
|
36
36
|
}): (path: string) => boolean;
|
|
37
37
|
/**
|
|
38
38
|
* Resolve `path.matchesGlob` (or `undefined` if the runtime predates it).
|
package/dist/globs/matcher.js
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
4
|
const require_primordials_string = require('../primordials/string.js');
|
|
5
5
|
const require_primordials_array = require('../primordials/array.js');
|
|
6
|
-
const require_primordials_object = require('../primordials/object.js');
|
|
7
6
|
const require_primordials_json = require('../primordials/json.js');
|
|
7
|
+
const require_primordials_object = require('../primordials/object.js');
|
|
8
8
|
const require_globs__internal = require('./_internal.js');
|
|
9
9
|
|
|
10
10
|
//#region src/globs/matcher.ts
|
|
@@ -14,8 +14,8 @@ const require_globs__internal = require('./_internal.js');
|
|
|
14
14
|
* `path.matchesGlob` for the rare case where the caller wants strict
|
|
15
15
|
* (`nocase: false`, `dot: false`) matching.
|
|
16
16
|
*/
|
|
17
|
-
let
|
|
18
|
-
let
|
|
17
|
+
let matchesGlobCache;
|
|
18
|
+
let matchesGlobProbed = false;
|
|
19
19
|
/**
|
|
20
20
|
* Return a glob-matcher function, memoized by pattern + options.
|
|
21
21
|
*
|
|
@@ -40,13 +40,12 @@ let _matchesGlobProbed = false;
|
|
|
40
40
|
* const isSource = getGlobMatcher(['src/**', '!**\/*.test.ts'])
|
|
41
41
|
* ```
|
|
42
42
|
*/
|
|
43
|
-
/* @__NO_SIDE_EFFECTS__ */
|
|
44
43
|
function getGlobMatcher(glob, options) {
|
|
45
44
|
const patterns = require_primordials_array.ArrayIsArray(glob) ? glob : [glob];
|
|
46
|
-
const sortedPatterns = [...patterns].
|
|
47
|
-
const sortedOptions = options ? require_primordials_object.ObjectKeys(options).
|
|
45
|
+
const sortedPatterns = [...patterns].toSorted();
|
|
46
|
+
const sortedOptions = options ? require_primordials_object.ObjectKeys(options).toSorted().map((k) => {
|
|
48
47
|
const value = options[k];
|
|
49
|
-
return `${k}:${require_primordials_json.JSONStringify(require_primordials_array.ArrayIsArray(value) ? [...value].
|
|
48
|
+
return `${k}:${require_primordials_json.JSONStringify(require_primordials_array.ArrayIsArray(value) ? [...value].toSorted() : value)}`;
|
|
50
49
|
}).join(",") : "";
|
|
51
50
|
const key = `${sortedPatterns.join("|")}:${sortedOptions}`;
|
|
52
51
|
const existing = require_globs__internal.matcherCache.get(key);
|
|
@@ -64,7 +63,7 @@ function getGlobMatcher(glob, options) {
|
|
|
64
63
|
let matcher;
|
|
65
64
|
/* c8 ignore start */
|
|
66
65
|
if (patterns.length === 1 && !require_primordials_string.StringPrototypeStartsWith(patterns[0], "!") && options !== void 0 && options.nocase === false && options.dot === false && (options.ignore === void 0 || options.ignore.length === 0)) {
|
|
67
|
-
const matchesGlob =
|
|
66
|
+
const matchesGlob = getMatchesGlob();
|
|
68
67
|
if (matchesGlob !== void 0) {
|
|
69
68
|
const pattern = patterns[0];
|
|
70
69
|
matcher = (p) => matchesGlob(p, pattern);
|
|
@@ -80,7 +79,7 @@ function getGlobMatcher(glob, options) {
|
|
|
80
79
|
...options,
|
|
81
80
|
...negativePatterns.length > 0 ? { ignore: negativePatterns } : {}
|
|
82
81
|
};
|
|
83
|
-
matcher =
|
|
82
|
+
matcher = require_globs__internal.getPicomatch()(positivePatterns.length > 0 ? positivePatterns : patterns, matchOptions);
|
|
84
83
|
}
|
|
85
84
|
require_globs__internal.matcherCache.set(key, matcher);
|
|
86
85
|
return matcher;
|
|
@@ -94,16 +93,15 @@ function getGlobMatcher(glob, options) {
|
|
|
94
93
|
*
|
|
95
94
|
* @internal
|
|
96
95
|
*/
|
|
97
|
-
/* @__NO_SIDE_EFFECTS__ */
|
|
98
96
|
function getMatchesGlob() {
|
|
99
|
-
if (!
|
|
97
|
+
if (!matchesGlobProbed) {
|
|
100
98
|
const fn = (/* @__PURE__ */ require("node:path")).matchesGlob;
|
|
101
99
|
/* c8 ignore start */
|
|
102
|
-
if (typeof fn === "function")
|
|
100
|
+
if (typeof fn === "function") matchesGlobCache = fn;
|
|
103
101
|
/* c8 ignore stop */
|
|
104
|
-
|
|
102
|
+
matchesGlobProbed = true;
|
|
105
103
|
}
|
|
106
|
-
return
|
|
104
|
+
return matchesGlobCache;
|
|
107
105
|
}
|
|
108
106
|
|
|
109
107
|
//#endregion
|
package/dist/globs/stream.js
CHANGED
|
@@ -23,7 +23,6 @@ const require_paths_globs = require('../paths/globs.js');
|
|
|
23
23
|
* }
|
|
24
24
|
* ```
|
|
25
25
|
*/
|
|
26
|
-
/* @__NO_SIDE_EFFECTS__ */
|
|
27
26
|
function globStreamLicenses(dirname, options) {
|
|
28
27
|
const { ignore: ignoreOpt, ignoreOriginals, recursive, ...globOptions } = {
|
|
29
28
|
__proto__: null,
|
|
@@ -31,7 +30,7 @@ function globStreamLicenses(dirname, options) {
|
|
|
31
30
|
};
|
|
32
31
|
const ignore = [...require_primordials_array.ArrayIsArray(ignoreOpt) ? require_globs__internal.normalizeIgnorePatterns(ignoreOpt) : require_globs_defaults.defaultIgnore, "**/*.{cjs,cts,js,json,mjs,mts,ts}"];
|
|
33
32
|
if (ignoreOriginals) ignore.push(require_paths_globs.LICENSE_ORIGINAL_GLOB_RECURSIVE);
|
|
34
|
-
return
|
|
33
|
+
return require_globs__internal.getFastGlob().globStream([recursive ? require_paths_globs.LICENSE_GLOB_RECURSIVE : require_paths_globs.LICENSE_GLOB], {
|
|
35
34
|
__proto__: null,
|
|
36
35
|
absolute: true,
|
|
37
36
|
caseSensitiveMatch: false,
|
package/dist/globs/types.d.ts
CHANGED
|
@@ -6,30 +6,30 @@
|
|
|
6
6
|
*/
|
|
7
7
|
export type Pattern = string;
|
|
8
8
|
export interface FastGlobOptions {
|
|
9
|
-
absolute?: boolean;
|
|
10
|
-
baseNameMatch?: boolean;
|
|
11
|
-
braceExpansion?: boolean;
|
|
12
|
-
caseSensitiveMatch?: boolean;
|
|
13
|
-
concurrency?: number;
|
|
14
|
-
cwd?: string;
|
|
15
|
-
deep?: number;
|
|
16
|
-
dot?: boolean;
|
|
17
|
-
extglob?: boolean;
|
|
18
|
-
followSymbolicLinks?: boolean;
|
|
19
|
-
fs?: unknown;
|
|
20
|
-
globstar?: boolean;
|
|
21
|
-
ignore?: string[];
|
|
22
|
-
ignoreFiles?: string[];
|
|
23
|
-
markDirectories?: boolean;
|
|
24
|
-
objectMode?: boolean;
|
|
25
|
-
onlyDirectories?: boolean;
|
|
26
|
-
onlyFiles?: boolean;
|
|
27
|
-
stats?: boolean;
|
|
28
|
-
suppressErrors?: boolean;
|
|
29
|
-
throwErrorOnBrokenSymbolicLink?: boolean;
|
|
30
|
-
unique?: boolean;
|
|
9
|
+
absolute?: boolean | undefined;
|
|
10
|
+
baseNameMatch?: boolean | undefined;
|
|
11
|
+
braceExpansion?: boolean | undefined;
|
|
12
|
+
caseSensitiveMatch?: boolean | undefined;
|
|
13
|
+
concurrency?: number | undefined;
|
|
14
|
+
cwd?: string | undefined;
|
|
15
|
+
deep?: number | undefined;
|
|
16
|
+
dot?: boolean | undefined;
|
|
17
|
+
extglob?: boolean | undefined;
|
|
18
|
+
followSymbolicLinks?: boolean | undefined;
|
|
19
|
+
fs?: unknown | undefined;
|
|
20
|
+
globstar?: boolean | undefined;
|
|
21
|
+
ignore?: string[] | undefined;
|
|
22
|
+
ignoreFiles?: string[] | undefined;
|
|
23
|
+
markDirectories?: boolean | undefined;
|
|
24
|
+
objectMode?: boolean | undefined;
|
|
25
|
+
onlyDirectories?: boolean | undefined;
|
|
26
|
+
onlyFiles?: boolean | undefined;
|
|
27
|
+
stats?: boolean | undefined;
|
|
28
|
+
suppressErrors?: boolean | undefined;
|
|
29
|
+
throwErrorOnBrokenSymbolicLink?: boolean | undefined;
|
|
30
|
+
unique?: boolean | undefined;
|
|
31
31
|
}
|
|
32
32
|
export interface GlobOptions extends FastGlobOptions {
|
|
33
|
-
ignoreOriginals?: boolean;
|
|
34
|
-
recursive?: boolean;
|
|
33
|
+
ignoreOriginals?: boolean | undefined;
|
|
34
|
+
recursive?: boolean | undefined;
|
|
35
35
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @file Private lazy loaders for the Node.js modules used by the
|
|
3
3
|
* `http-request/*` leaves. The `_` prefix keeps this module out of the
|
|
4
4
|
* generated package.json `exports` map (the `dist/**\/_*` ignore pattern in
|
|
5
|
-
* `scripts/
|
|
5
|
+
* `scripts/post-build/make-package-exports.mts` filters it out), so it is not
|
|
6
6
|
* part of the public surface — it exists only as a re-export shim so existing
|
|
7
7
|
* siblings keep working unchanged. New code should import the canonical
|
|
8
8
|
* helpers directly:
|
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/* Socket Lib - Built with rolldown */
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
|
+
const require_primordials_error = require('../primordials/error.js');
|
|
5
|
+
const require_primordials_math = require('../primordials/math.js');
|
|
6
|
+
const require_primordials_string = require('../primordials/string.js');
|
|
7
|
+
const require_primordials_array = require('../primordials/array.js');
|
|
8
|
+
const require_primordials_date = require('../primordials/date.js');
|
|
9
|
+
const require_primordials_json = require('../primordials/json.js');
|
|
10
|
+
const require_primordials_promise = require('../primordials/promise.js');
|
|
4
11
|
const require_http_request_browser_fetch = require('./browser-fetch.js');
|
|
12
|
+
const require_primordials_headers = require('../primordials/headers.js');
|
|
5
13
|
|
|
6
14
|
//#region src/http-request/browser.ts
|
|
7
15
|
/**
|
|
@@ -75,7 +83,7 @@ async function attempt(url, options) {
|
|
|
75
83
|
if (options.followRedirects === false) init.redirect = "manual";
|
|
76
84
|
const { signal, cleanup } = combineSignals(options.signal, options.timeout);
|
|
77
85
|
if (signal) init.signal = signal;
|
|
78
|
-
const startedAt =
|
|
86
|
+
const startedAt = require_primordials_date.DateNow();
|
|
79
87
|
if (options.hooks?.onRequest) options.hooks.onRequest({
|
|
80
88
|
method,
|
|
81
89
|
url,
|
|
@@ -85,13 +93,13 @@ async function attempt(url, options) {
|
|
|
85
93
|
try {
|
|
86
94
|
const response = await require_http_request_browser_fetch.doFetch(url, init);
|
|
87
95
|
const buffer = await response.arrayBuffer();
|
|
88
|
-
if (options.maxResponseSize !== void 0 && buffer.byteLength > options.maxResponseSize) throw new
|
|
89
|
-
const body = new
|
|
96
|
+
if (options.maxResponseSize !== void 0 && buffer.byteLength > options.maxResponseSize) throw new require_primordials_error.ErrorCtor(`Response body (${buffer.byteLength} bytes) exceeds maxResponseSize (${options.maxResponseSize})`);
|
|
97
|
+
const body = new require_primordials_array.Uint8ArrayCtor(buffer);
|
|
90
98
|
const headers = headersToRecord(response.headers);
|
|
91
99
|
if (options.hooks?.onResponse) options.hooks.onResponse({
|
|
92
100
|
method,
|
|
93
101
|
url,
|
|
94
|
-
duration:
|
|
102
|
+
duration: require_primordials_date.DateNow() - startedAt,
|
|
95
103
|
status: response.status,
|
|
96
104
|
statusText: response.statusText,
|
|
97
105
|
headers
|
|
@@ -110,15 +118,15 @@ async function attempt(url, options) {
|
|
|
110
118
|
return decodeText(body);
|
|
111
119
|
},
|
|
112
120
|
json() {
|
|
113
|
-
return
|
|
121
|
+
return require_primordials_json.JSONParse(decodeText(body));
|
|
114
122
|
}
|
|
115
123
|
};
|
|
116
124
|
} catch (err) {
|
|
117
125
|
if (options.hooks?.onResponse) options.hooks.onResponse({
|
|
118
126
|
method,
|
|
119
127
|
url,
|
|
120
|
-
duration:
|
|
121
|
-
error: err instanceof Error ? err : new
|
|
128
|
+
duration: require_primordials_date.DateNow() - startedAt,
|
|
129
|
+
error: err instanceof Error ? err : new require_primordials_error.ErrorCtor(String(err))
|
|
122
130
|
});
|
|
123
131
|
throw err;
|
|
124
132
|
} finally {
|
|
@@ -130,8 +138,8 @@ function decodeText(bytes) {
|
|
|
130
138
|
}
|
|
131
139
|
function headersToRecord(headers) {
|
|
132
140
|
const out = {};
|
|
133
|
-
|
|
134
|
-
out[
|
|
141
|
+
require_primordials_headers.HeadersPrototypeForEach(headers, (value, key) => {
|
|
142
|
+
out[require_primordials_string.StringPrototypeToLowerCase(key)] = value;
|
|
135
143
|
});
|
|
136
144
|
return out;
|
|
137
145
|
}
|
|
@@ -166,7 +174,7 @@ async function httpRequest(url, options) {
|
|
|
166
174
|
for (let i = 0; i < maxAttempts; i++) try {
|
|
167
175
|
const response = await attempt(url, opts);
|
|
168
176
|
if (response.status >= 500 && i + 1 < maxAttempts) {
|
|
169
|
-
await sleep(baseDelay *
|
|
177
|
+
await sleep(baseDelay * require_primordials_math.MathPow(2, i));
|
|
170
178
|
continue;
|
|
171
179
|
}
|
|
172
180
|
if (opts.throwOnError && !response.ok) throw new HttpResponseError(response);
|
|
@@ -175,11 +183,11 @@ async function httpRequest(url, options) {
|
|
|
175
183
|
lastError = err;
|
|
176
184
|
if (err instanceof HttpResponseError) throw err;
|
|
177
185
|
if (i + 1 < maxAttempts) {
|
|
178
|
-
await sleep(baseDelay *
|
|
186
|
+
await sleep(baseDelay * require_primordials_math.MathPow(2, i));
|
|
179
187
|
continue;
|
|
180
188
|
}
|
|
181
189
|
}
|
|
182
|
-
throw lastError instanceof Error ? lastError :
|
|
190
|
+
throw lastError instanceof Error ? lastError : new require_primordials_error.ErrorCtor(`HTTP request to ${url} failed`);
|
|
183
191
|
}
|
|
184
192
|
/**
|
|
185
193
|
* GET / POST a text endpoint. Throws `HttpResponseError` on non-2xx.
|
|
@@ -191,7 +199,7 @@ async function httpText(url, options) {
|
|
|
191
199
|
})).text();
|
|
192
200
|
}
|
|
193
201
|
function sleep(ms) {
|
|
194
|
-
return new
|
|
202
|
+
return new require_primordials_promise.PromiseCtor((resolve) => setTimeout(resolve, ms));
|
|
195
203
|
}
|
|
196
204
|
|
|
197
205
|
//#endregion
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Checksum file fetching + parsing for download verification.
|
|
3
|
+
* `parseChecksumFile` understands the three common text-file shapes:
|
|
4
|
+
*
|
|
5
|
+
* - BSD style: `SHA256 (filename) = hash`
|
|
6
|
+
* - GNU style: `hash filename` (two spaces)
|
|
7
|
+
* - Simple: `hash filename` (single space) Comment lines (`#…`) and blank lines
|
|
8
|
+
* are skipped. Each hex digest is converted to an SRI integrity string
|
|
9
|
+
* (`sha256-<base64>=`) so callers always work in the same format as
|
|
10
|
+
* `external-tools.json` and other integrity-string consumers.
|
|
11
|
+
* `fetchChecksumFile` is the URL helper — fetches via `httpRequest` and
|
|
12
|
+
* runs the body through `parseChecksumFile`.
|
|
13
|
+
*/
|
|
14
|
+
import type { ChecksumFile, FetchChecksumFileOptions } from './download-types';
|
|
15
|
+
/**
|
|
16
|
+
* Fetch and parse a checksums file from a URL.
|
|
17
|
+
*
|
|
18
|
+
* Returns a map of filenames to SRI integrity strings (`sha256-<base64>=`).
|
|
19
|
+
* Feed `httpDownload({ sha256 })` by converting back to hex via
|
|
20
|
+
* `integrityToChecksum()`; pass the SRI string through verbatim to consumers
|
|
21
|
+
* that accept SRI directly.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ;```ts
|
|
25
|
+
* import { integrityToChecksum } from '@socketsecurity/lib/integrity'
|
|
26
|
+
*
|
|
27
|
+
* const sums = await fetchChecksumFile(
|
|
28
|
+
* 'https://github.com/org/repo/releases/download/v1.0.0/checksums.txt',
|
|
29
|
+
* )
|
|
30
|
+
* await httpDownload(url, '/tmp/tool.tar.gz', {
|
|
31
|
+
* sha256: integrityToChecksum(sums['tool_linux.tar.gz']!),
|
|
32
|
+
* })
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare function fetchChecksumFile(url: string, options?: FetchChecksumFileOptions | undefined): Promise<ChecksumFile>;
|
|
36
|
+
/**
|
|
37
|
+
* Parse a checksums file text into a filename-to-integrity map.
|
|
38
|
+
*
|
|
39
|
+
* Supports standard checksums file formats: - BSD style: `SHA256 (filename) =
|
|
40
|
+
* hash` - GNU style: `hash filename` (two spaces) - Simple style: `hash
|
|
41
|
+
* filename` (single space)
|
|
42
|
+
*
|
|
43
|
+
* Lines starting with `#` are treated as comments and ignored. Empty lines are
|
|
44
|
+
* ignored. Each 64-char hex digest is converted to an SRI integrity string so
|
|
45
|
+
* the result is uniform regardless of source format.
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ;```ts
|
|
49
|
+
* const sums = parseChecksumFile(
|
|
50
|
+
* 'e3b0c44... file.zip\nSHA256 (other.tar.gz) = abc123...\n',
|
|
51
|
+
* )
|
|
52
|
+
* // sums['file.zip'] === 'sha256-47DEQpj8HBSa+/...'
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
export declare function parseChecksumFile(text: string): ChecksumFile;
|
|
@@ -0,0 +1,95 @@
|
|
|
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
|
+
const require_integrity = require('../integrity.js');
|
|
6
|
+
const require_primordials_string = require('../primordials/string.js');
|
|
7
|
+
const require_http_request_request = require('./request.js');
|
|
8
|
+
|
|
9
|
+
//#region src/http-request/checksum-file.ts
|
|
10
|
+
/**
|
|
11
|
+
* @file Checksum file fetching + parsing for download verification.
|
|
12
|
+
* `parseChecksumFile` understands the three common text-file shapes:
|
|
13
|
+
*
|
|
14
|
+
* - BSD style: `SHA256 (filename) = hash`
|
|
15
|
+
* - GNU style: `hash filename` (two spaces)
|
|
16
|
+
* - Simple: `hash filename` (single space) Comment lines (`#…`) and blank lines
|
|
17
|
+
* are skipped. Each hex digest is converted to an SRI integrity string
|
|
18
|
+
* (`sha256-<base64>=`) so callers always work in the same format as
|
|
19
|
+
* `external-tools.json` and other integrity-string consumers.
|
|
20
|
+
* `fetchChecksumFile` is the URL helper — fetches via `httpRequest` and
|
|
21
|
+
* runs the body through `parseChecksumFile`.
|
|
22
|
+
*/
|
|
23
|
+
const CHECKSUM_BSD_RE = /^SHA256\s+\((.+)\)\s+=\s+([a-fA-F0-9]{64})$/;
|
|
24
|
+
const CHECKSUM_GNU_RE = /^([a-fA-F0-9]{64})\s+(.+)$/;
|
|
25
|
+
/**
|
|
26
|
+
* Fetch and parse a checksums file from a URL.
|
|
27
|
+
*
|
|
28
|
+
* Returns a map of filenames to SRI integrity strings (`sha256-<base64>=`).
|
|
29
|
+
* Feed `httpDownload({ sha256 })` by converting back to hex via
|
|
30
|
+
* `integrityToChecksum()`; pass the SRI string through verbatim to consumers
|
|
31
|
+
* that accept SRI directly.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ;```ts
|
|
35
|
+
* import { integrityToChecksum } from '@socketsecurity/lib/integrity'
|
|
36
|
+
*
|
|
37
|
+
* const sums = await fetchChecksumFile(
|
|
38
|
+
* 'https://github.com/org/repo/releases/download/v1.0.0/checksums.txt',
|
|
39
|
+
* )
|
|
40
|
+
* await httpDownload(url, '/tmp/tool.tar.gz', {
|
|
41
|
+
* sha256: integrityToChecksum(sums['tool_linux.tar.gz']!),
|
|
42
|
+
* })
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
async function fetchChecksumFile(url, options) {
|
|
46
|
+
const { ca, headers = {}, timeout = 3e4 } = {
|
|
47
|
+
__proto__: null,
|
|
48
|
+
...options
|
|
49
|
+
};
|
|
50
|
+
const response = await require_http_request_request.httpRequest(url, {
|
|
51
|
+
ca,
|
|
52
|
+
headers,
|
|
53
|
+
timeout
|
|
54
|
+
});
|
|
55
|
+
if (!response.ok) throw new require_primordials_error.ErrorCtor(`Failed to fetch checksums from ${url}: ${response.status} ${response.statusText}`);
|
|
56
|
+
return parseChecksumFile(response.body.toString("utf8"));
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Parse a checksums file text into a filename-to-integrity map.
|
|
60
|
+
*
|
|
61
|
+
* Supports standard checksums file formats: - BSD style: `SHA256 (filename) =
|
|
62
|
+
* hash` - GNU style: `hash filename` (two spaces) - Simple style: `hash
|
|
63
|
+
* filename` (single space)
|
|
64
|
+
*
|
|
65
|
+
* Lines starting with `#` are treated as comments and ignored. Empty lines are
|
|
66
|
+
* ignored. Each 64-char hex digest is converted to an SRI integrity string so
|
|
67
|
+
* the result is uniform regardless of source format.
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ;```ts
|
|
71
|
+
* const sums = parseChecksumFile(
|
|
72
|
+
* 'e3b0c44... file.zip\nSHA256 (other.tar.gz) = abc123...\n',
|
|
73
|
+
* )
|
|
74
|
+
* // sums['file.zip'] === 'sha256-47DEQpj8HBSa+/...'
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
function parseChecksumFile(text) {
|
|
78
|
+
const result = { __proto__: null };
|
|
79
|
+
for (const line of require_primordials_string.StringPrototypeSplit(text, "\n")) {
|
|
80
|
+
const trimmed = line.trim();
|
|
81
|
+
if (!trimmed || require_primordials_string.StringPrototypeStartsWith(trimmed, "#")) continue;
|
|
82
|
+
const bsdMatch = CHECKSUM_BSD_RE.exec(trimmed);
|
|
83
|
+
if (bsdMatch) {
|
|
84
|
+
result[bsdMatch[1]] = require_integrity.checksumToIntegrity(bsdMatch[2].toLowerCase());
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
const gnuMatch = CHECKSUM_GNU_RE.exec(trimmed);
|
|
88
|
+
if (gnuMatch) result[gnuMatch[2]] = require_integrity.checksumToIntegrity(gnuMatch[1].toLowerCase());
|
|
89
|
+
}
|
|
90
|
+
return result;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
//#endregion
|
|
94
|
+
exports.fetchChecksumFile = fetchChecksumFile;
|
|
95
|
+
exports.parseChecksumFile = parseChecksumFile;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* `http-request/types.ts` for size hygiene.
|
|
4
4
|
*
|
|
5
5
|
* - `HttpDownloadOptions` / `HttpDownloadResult` — file-download surface
|
|
6
|
-
* - `
|
|
6
|
+
* - `ChecksumFile` / `FetchChecksumFileOptions` — checksum-file helpers
|
|
7
7
|
*/
|
|
8
8
|
import type { IncomingHttpHeaders } from 'node:http';
|
|
9
9
|
import type { Logger } from '../logger/node';
|
|
@@ -136,23 +136,14 @@ export interface HttpDownloadOptions {
|
|
|
136
136
|
* fail if the computed hash doesn't match. The hash should be a lowercase hex
|
|
137
137
|
* string (64 characters).
|
|
138
138
|
*
|
|
139
|
-
*
|
|
140
|
-
*
|
|
139
|
+
* Pair with `fetchChecksumFile()` + `integrityToChecksum()` when working from
|
|
140
|
+
* a checksums URL, since `fetchChecksumFile()` returns SRI strings.
|
|
141
141
|
*
|
|
142
142
|
* @example
|
|
143
143
|
* ;```ts
|
|
144
|
-
* // Verify download
|
|
144
|
+
* // Verify download with a sha256 hex digest
|
|
145
145
|
* await httpDownload('https://example.com/file.zip', '/tmp/file.zip', {
|
|
146
|
-
* sha256:
|
|
147
|
-
* 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855',
|
|
148
|
-
* })
|
|
149
|
-
*
|
|
150
|
-
* // Verify using checksums from a URL
|
|
151
|
-
* const checksums = await fetchChecksums(
|
|
152
|
-
* 'https://example.com/checksums.txt',
|
|
153
|
-
* )
|
|
154
|
-
* await httpDownload('https://example.com/file.zip', '/tmp/file.zip', {
|
|
155
|
-
* sha256: checksums['file.zip'],
|
|
146
|
+
* sha256: 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855',
|
|
156
147
|
* })
|
|
157
148
|
* ```
|
|
158
149
|
*/
|
|
@@ -189,23 +180,24 @@ export interface HttpDownloadResult {
|
|
|
189
180
|
statusText: string;
|
|
190
181
|
}
|
|
191
182
|
/**
|
|
192
|
-
* Map of filenames to
|
|
193
|
-
*
|
|
183
|
+
* Map of filenames to SRI integrity strings (`sha256-<base64>=`). Returned by
|
|
184
|
+
* `parseChecksumFile` / `fetchChecksumFile`. Pass through
|
|
185
|
+
* `integrityToChecksum()` to feed `httpDownload({ sha256 })`, or pass the SRI
|
|
186
|
+
* string directly to consumers that accept SRI.
|
|
194
187
|
*
|
|
195
188
|
* @example
|
|
196
189
|
* ;```ts
|
|
197
|
-
* const
|
|
198
|
-
* 'file.zip':
|
|
199
|
-
*
|
|
200
|
-
* 'other.tar.gz': 'abc123...',
|
|
190
|
+
* const sums: ChecksumFile = {
|
|
191
|
+
* 'file.zip': 'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=',
|
|
192
|
+
* 'other.tar.gz': 'sha256-...',
|
|
201
193
|
* }
|
|
202
194
|
* ```
|
|
203
195
|
*/
|
|
204
|
-
export type
|
|
196
|
+
export type ChecksumFile = Record<string, string>;
|
|
205
197
|
/**
|
|
206
|
-
* Options for fetching
|
|
198
|
+
* Options for fetching a checksum file from a URL.
|
|
207
199
|
*/
|
|
208
|
-
export interface
|
|
200
|
+
export interface FetchChecksumFileOptions {
|
|
209
201
|
/**
|
|
210
202
|
* Custom CA certificates for TLS connections. See `HttpRequestOptions.ca` for
|
|
211
203
|
* details.
|