@socketsecurity/lib 6.0.6 → 6.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +46 -1
- package/README.md +1 -1
- package/dist/ai/agent-context.d.mts +103 -0
- package/dist/ai/agent-context.js +157 -0
- package/dist/ai/backends.d.mts +83 -0
- package/dist/ai/backends.js +173 -0
- package/dist/ai/credentials.d.mts +49 -0
- package/dist/ai/credentials.js +82 -0
- package/dist/ai/discover.d.mts +6 -2
- package/dist/ai/discover.js +4 -3
- package/dist/ai/exec.d.mts +52 -0
- package/dist/ai/exec.js +92 -0
- package/dist/ai/http.d.mts +132 -0
- package/dist/ai/http.js +130 -0
- package/dist/ai/profiles.d.mts +41 -6
- package/dist/ai/profiles.js +52 -10
- package/dist/ai/route.d.mts +69 -0
- package/dist/ai/route.js +156 -0
- package/dist/ai/spawn.d.mts +10 -2
- package/dist/ai/spawn.js +56 -31
- package/dist/ai/subagent-status.d.mts +48 -0
- package/dist/ai/subagent-status.js +57 -0
- package/dist/ai/tier.d.mts +60 -0
- package/dist/ai/tier.js +53 -0
- package/dist/ai/types.d.mts +31 -6
- package/dist/ai/worktree.d.mts +6 -6
- package/dist/ai/worktree.js +5 -1
- package/dist/ansi/strip.d.ts +1 -1
- package/dist/ansi/strip.js +0 -2
- package/dist/archives/_internal.js +7 -9
- package/dist/archives/extract.js +1 -1
- package/dist/archives/tar.js +7 -7
- package/dist/archives/zip.js +5 -7
- package/dist/argv/flag-predicates.d.ts +12 -12
- package/dist/argv/flag-predicates.js +17 -17
- package/dist/argv/flag-types.d.ts +18 -18
- package/dist/argv/flag-types.js +4 -4
- package/dist/argv/parse.d.ts +20 -3
- package/dist/argv/parse.js +1 -1
- package/dist/arrays/_internal.js +11 -12
- package/dist/arrays/chunk.js +0 -1
- package/dist/arrays/join.d.ts +37 -3
- package/dist/arrays/join.js +47 -7
- package/dist/arrays/unique.js +0 -1
- package/dist/bin/_internal.d.ts +1 -1
- package/dist/bin/_internal.js +1 -1
- package/dist/bin/exec.js +2 -3
- package/dist/bin/find.js +17 -17
- package/dist/bin/prim.cjs +36175 -35861
- package/dist/bin/resolve.js +13 -14
- package/dist/bin/which.js +8 -8
- package/dist/cache/ttl/store.js +6 -6
- package/dist/checks/primordials-defaults.d.ts +3 -3
- package/dist/checks/primordials-defaults.js +3 -3
- package/dist/checks/primordials.js +4 -3
- package/dist/{bin → cli}/check-primordials.d.ts +18 -13
- package/dist/{bin → cli}/check-primordials.js +58 -55
- package/dist/{bin → cli}/check.js +3 -3
- package/dist/{bin → cli}/socket-lib.d.ts +1 -1
- package/dist/{bin → cli}/socket-lib.js +4 -4
- package/dist/colors/socket-palette.js +7 -9
- package/dist/compression/_internal.d.ts +12 -12
- package/dist/compression/_internal.js +18 -18
- package/dist/compression/brotli.d.ts +26 -27
- package/dist/compression/brotli.js +39 -35
- package/dist/compression/gzip.d.ts +23 -23
- package/dist/compression/gzip.js +46 -42
- package/dist/constants/agents.d.ts +3 -1
- package/dist/constants/agents.js +15 -11
- package/dist/constants/licenses.js +3 -3
- package/dist/constants/node.d.ts +23 -0
- package/dist/constants/node.js +47 -15
- package/dist/constants/packages.d.ts +3 -0
- package/dist/constants/packages.js +24 -29
- package/dist/constants/platform.d.ts +30 -3
- package/dist/constants/platform.js +72 -12
- package/dist/constants/runtime.d.ts +22 -0
- package/dist/constants/runtime.js +32 -0
- package/dist/constants/socket.d.ts +2 -6
- package/dist/constants/socket.js +12 -14
- package/dist/cover/code.js +10 -10
- package/dist/cover/formatters.js +5 -5
- package/dist/crypto/hash.d.ts +30 -2
- package/dist/crypto/hash.js +47 -13
- package/dist/debug/_internal.js +4 -6
- package/dist/debug/caller-info.js +3 -4
- package/dist/debug/namespace.d.ts +7 -0
- package/dist/debug/namespace.js +21 -12
- package/dist/debug/output.js +21 -24
- package/dist/debug/types.d.ts +4 -4
- package/dist/dlx/arborist.js +18 -8
- package/dist/dlx/binary-cache.js +15 -15
- package/dist/dlx/binary-download.d.ts +1 -1
- package/dist/dlx/binary-download.js +11 -11
- package/dist/dlx/binary-resolution.js +17 -15
- package/dist/dlx/binary-types.d.ts +5 -5
- package/dist/dlx/binary.js +5 -5
- package/dist/dlx/cache.js +1 -1
- package/dist/dlx/detect.d.ts +42 -25
- package/dist/dlx/detect.js +86 -77
- package/dist/dlx/dir.js +2 -2
- package/dist/dlx/firewall.d.ts +9 -1
- package/dist/dlx/firewall.js +1 -1
- package/dist/dlx/lockfile.d.ts +19 -18
- package/dist/dlx/lockfile.js +19 -16
- package/dist/dlx/manifest.d.ts +6 -6
- package/dist/dlx/manifest.js +5 -5
- package/dist/dlx/package.d.ts +10 -10
- package/dist/dlx/package.js +20 -16
- package/dist/dlx/packages.js +4 -4
- package/dist/dlx/paths.js +7 -7
- package/dist/dlx/spec.js +1 -1
- package/dist/dlx/types.d.ts +28 -27
- package/dist/eco/cargo/parse-lockfile.d.ts +2 -3
- package/dist/eco/cargo/parse-lockfile.js +5 -5
- package/dist/eco/manifest/analyze-lockfile.js +2 -2
- package/dist/eco/manifest/detect-format.js +5 -5
- package/dist/eco/manifest/find-packages.js +2 -2
- package/dist/eco/manifest/get-package-versions.js +2 -2
- package/dist/eco/manifest/get-package.js +2 -2
- package/dist/eco/manifest/parse-lockfile.js +2 -2
- package/dist/eco/manifest/parse-manifest.js +2 -2
- package/dist/eco/manifest/parse.js +2 -2
- package/dist/eco/npm/npm/exec.js +2 -2
- package/dist/eco/npm/npm/flags.js +7 -12
- package/dist/eco/npm/npm/parse-lockfile.d.ts +17 -18
- package/dist/eco/npm/npm/parse-lockfile.js +4 -4
- package/dist/eco/npm/parse-package-json.d.ts +11 -0
- package/dist/eco/npm/parse-package-json.js +3 -3
- package/dist/eco/npm/pnpm/exec.d.ts +1 -1
- package/dist/eco/npm/pnpm/exec.js +5 -5
- package/dist/eco/npm/pnpm/flags.js +0 -3
- package/dist/eco/npm/pnpm/parse-lockfile.d.ts +6 -4
- package/dist/eco/npm/pnpm/parse-lockfile.js +7 -7
- package/dist/eco/npm/script.js +9 -6
- package/dist/eco/npm/yarnpkg/yarn/exec.js +4 -4
- package/dist/eco/npm/yarnpkg/yarn/parse-lockfile.d.ts +3 -4
- package/dist/eco/npm/yarnpkg/yarn/parse-lockfile.js +9 -9
- package/dist/effects/pulse-frames.d.ts +3 -1
- package/dist/effects/shimmer-keyframes.d.ts +1 -1
- package/dist/effects/shimmer-terminal.d.ts +1 -1
- package/dist/env/boolean.js +0 -1
- package/dist/env/ci.js +0 -1
- package/dist/env/debug.js +0 -1
- package/dist/env/github-status.d.ts +51 -0
- package/dist/env/github-status.js +90 -0
- package/dist/env/github.js +0 -8
- package/dist/env/home.js +0 -1
- package/dist/env/locale.js +0 -3
- package/dist/env/node-auth-token.js +0 -1
- package/dist/env/node-env.js +0 -1
- package/dist/env/node-version-managers.d.ts +53 -0
- package/dist/env/node-version-managers.js +90 -0
- package/dist/env/npm.js +0 -5
- package/dist/env/number.js +0 -1
- package/dist/env/package-manager.js +3 -6
- package/dist/env/path.js +0 -1
- package/dist/env/pre-commit.js +1 -2
- package/dist/env/proxy.js +1 -1
- package/dist/env/rewire.d.ts +8 -6
- package/dist/env/rewire.js +16 -17
- package/dist/env/shell.js +0 -1
- package/dist/env/socket-cli.js +5 -18
- package/dist/env/socket-mcp.d.ts +114 -0
- package/dist/env/socket-mcp.js +146 -0
- package/dist/env/socket.d.ts +8 -109
- package/dist/env/socket.js +22 -167
- package/dist/env/string.js +0 -1
- package/dist/env/temp-dir.js +0 -3
- package/dist/env/term.js +0 -1
- package/dist/env/test.js +3 -6
- package/dist/env/windows.js +0 -4
- package/dist/env/xdg.js +0 -3
- package/dist/errors/predicates.js +1 -1
- package/dist/events/exit/_internal.d.ts +11 -9
- package/dist/events/exit/_internal.js +31 -35
- package/dist/events/exit/handler.js +3 -4
- package/dist/events/exit/intercept.js +4 -6
- package/dist/events/exit/lifecycle.js +16 -18
- package/dist/events/exit/signals.js +1 -2
- package/dist/events/exit/types.d.ts +6 -5
- package/dist/external/@npmcli/package-json.js +2 -2
- package/dist/external/@npmcli/promise-spawn.js +3 -1
- package/dist/external/npm-pack.js +2 -2
- package/dist/external/pico-pack.js +4 -2
- package/dist/external/which.js +3 -1
- package/dist/external-tools/bazel/asset-names.d.ts +1 -1
- package/dist/external-tools/bazel/asset-names.js +5 -2
- package/dist/external-tools/bazel/from-download.d.ts +1 -1
- package/dist/external-tools/bazel/from-download.js +5 -2
- package/dist/external-tools/bazel/read-bazel-version-file.js +1 -1
- package/dist/external-tools/bazel/resolve-bazel-version.js +4 -0
- package/dist/external-tools/bazel/resolve.d.ts +3 -3
- package/dist/external-tools/bazel/resolve.js +16 -8
- package/dist/external-tools/bazel/types.d.ts +1 -1
- package/dist/external-tools/cdxgen/asset-names.d.ts +1 -1
- package/dist/external-tools/cdxgen/asset-names.js +5 -2
- package/dist/external-tools/cdxgen/from-download.d.ts +1 -1
- package/dist/external-tools/cdxgen/from-download.js +7 -4
- package/dist/external-tools/cdxgen/from-vfs.js +1 -1
- package/dist/external-tools/cdxgen/resolve.d.ts +3 -3
- package/dist/external-tools/cdxgen/resolve.js +16 -8
- package/dist/external-tools/cdxgen/types.d.ts +1 -1
- package/dist/external-tools/from-download.d.ts +3 -3
- package/dist/external-tools/from-download.js +12 -6
- package/dist/external-tools/from-pip-venv.d.ts +1 -1
- package/dist/external-tools/from-pip-venv.js +12 -5
- package/dist/external-tools/janus/asset-names.d.ts +1 -1
- package/dist/external-tools/janus/asset-names.js +5 -2
- package/dist/external-tools/janus/from-download.d.ts +1 -1
- package/dist/external-tools/janus/from-download.js +5 -2
- package/dist/external-tools/janus/from-vfs.js +1 -1
- package/dist/external-tools/janus/resolve.d.ts +3 -3
- package/dist/external-tools/janus/resolve.js +16 -8
- package/dist/external-tools/janus/types.d.ts +1 -1
- package/dist/external-tools/jre/asset-names.d.ts +1 -1
- package/dist/external-tools/jre/asset-names.js +5 -2
- package/dist/external-tools/jre/detect-platform-arch.d.ts +10 -6
- package/dist/external-tools/jre/detect-platform-arch.js +29 -14
- package/dist/external-tools/jre/from-download.d.ts +1 -1
- package/dist/external-tools/jre/from-download.js +7 -4
- package/dist/external-tools/jre/from-java-home.js +2 -2
- package/dist/external-tools/jre/from-vfs.js +3 -3
- package/dist/external-tools/jre/resolve.d.ts +3 -3
- package/dist/external-tools/jre/resolve.js +16 -8
- package/dist/external-tools/jre/types.d.ts +1 -1
- package/dist/external-tools/manifest.d.ts +25 -7
- package/dist/external-tools/manifest.js +13 -13
- package/dist/external-tools/opengrep/asset-names.d.ts +1 -1
- package/dist/external-tools/opengrep/asset-names.js +5 -2
- package/dist/external-tools/opengrep/from-download.d.ts +1 -1
- package/dist/external-tools/opengrep/from-download.js +5 -2
- package/dist/external-tools/opengrep/from-vfs.js +1 -1
- package/dist/external-tools/opengrep/resolve.d.ts +3 -3
- package/dist/external-tools/opengrep/resolve.js +16 -8
- package/dist/external-tools/opengrep/types.d.ts +1 -1
- package/dist/external-tools/python/asset-names.d.ts +76 -0
- package/dist/external-tools/python/asset-names.js +111 -0
- package/dist/external-tools/python/dlx.d.ts +80 -0
- package/dist/external-tools/python/dlx.js +98 -0
- package/dist/external-tools/python/from-download.d.ts +53 -0
- package/dist/external-tools/python/from-download.js +75 -0
- package/dist/external-tools/python/from-path.d.ts +7 -0
- package/dist/external-tools/python/from-path.js +23 -0
- package/dist/external-tools/python/pin.d.ts +121 -0
- package/dist/external-tools/python/pin.js +176 -0
- package/dist/external-tools/python/pip-install.d.ts +75 -0
- package/dist/external-tools/python/pip-install.js +142 -0
- package/dist/external-tools/python/resolve.d.ts +42 -0
- package/dist/external-tools/python/resolve.js +66 -0
- package/dist/external-tools/python/types.d.ts +49 -0
- package/dist/external-tools/sbt/asset-names.d.ts +1 -1
- package/dist/external-tools/sbt/asset-names.js +5 -2
- package/dist/external-tools/sbt/from-download.d.ts +1 -1
- package/dist/external-tools/sbt/from-download.js +5 -2
- package/dist/external-tools/sbt/from-vfs.js +1 -1
- package/dist/external-tools/sbt/resolve.d.ts +3 -3
- package/dist/external-tools/sbt/resolve.js +16 -8
- package/dist/external-tools/sbt/types.d.ts +1 -1
- package/dist/external-tools/skillspector/from-dlx.d.ts +1 -1
- package/dist/external-tools/skillspector/from-dlx.js +10 -3
- package/dist/external-tools/skillspector/from-path.js +3 -5
- package/dist/external-tools/skillspector/from-vfs.js +1 -1
- package/dist/external-tools/skillspector/resolve.d.ts +2 -2
- package/dist/external-tools/skillspector/resolve.js +14 -6
- package/dist/external-tools/synp/asset-names.d.ts +1 -1
- package/dist/external-tools/synp/asset-names.js +6 -2
- package/dist/external-tools/synp/from-download.d.ts +1 -1
- package/dist/external-tools/synp/from-download.js +7 -4
- package/dist/external-tools/synp/from-vfs.js +1 -1
- package/dist/external-tools/synp/resolve.d.ts +3 -3
- package/dist/external-tools/synp/resolve.js +16 -8
- package/dist/external-tools/trivy/asset-names.d.ts +1 -1
- package/dist/external-tools/trivy/asset-names.js +5 -2
- package/dist/external-tools/trivy/from-download.d.ts +1 -1
- package/dist/external-tools/trivy/from-download.js +7 -4
- package/dist/external-tools/trivy/from-vfs.js +1 -1
- package/dist/external-tools/trivy/resolve.d.ts +3 -3
- package/dist/external-tools/trivy/resolve.js +16 -8
- package/dist/external-tools/trivy/types.d.ts +1 -1
- package/dist/external-tools/trufflehog/asset-names.d.ts +1 -1
- package/dist/external-tools/trufflehog/asset-names.js +5 -2
- package/dist/external-tools/trufflehog/from-download.d.ts +1 -1
- package/dist/external-tools/trufflehog/from-download.js +7 -4
- package/dist/external-tools/trufflehog/from-vfs.js +1 -1
- package/dist/external-tools/trufflehog/resolve.d.ts +3 -3
- package/dist/external-tools/trufflehog/resolve.js +16 -8
- package/dist/external-tools/trufflehog/types.d.ts +1 -1
- package/dist/fs/_internal.d.ts +1 -1
- package/dist/fs/_internal.js +7 -7
- package/dist/fs/access.js +5 -9
- package/dist/fs/allowed-dirs-cache.d.ts +47 -0
- package/dist/fs/allowed-dirs-cache.js +69 -0
- package/dist/fs/encoding.js +5 -7
- package/dist/fs/{find-up.js → find.js} +12 -14
- package/dist/fs/inspect.js +7 -13
- package/dist/fs/read-dir.js +7 -10
- package/dist/fs/read-file.js +8 -14
- package/dist/fs/read-json-cache.d.ts +13 -4
- package/dist/fs/read-json-cache.js +9 -6
- package/dist/fs/read-json.js +4 -6
- package/dist/fs/resolve-module.js +7 -3
- package/dist/fs/safe.d.ts +1 -1
- package/dist/fs/safe.js +13 -14
- package/dist/fs/unique.js +4 -5
- package/dist/fs/validate.js +1 -2
- package/dist/fs/write-json.js +4 -5
- package/dist/git/_internal.js +11 -11
- package/dist/git/changed.js +4 -4
- package/dist/git/repo.js +5 -7
- package/dist/git/staged.js +12 -4
- package/dist/git/tracked.d.ts +84 -0
- package/dist/git/tracked.js +163 -0
- package/dist/git/unstaged.js +12 -4
- package/dist/github/ghsa.js +2 -2
- package/dist/github/refs-cache.d.ts +1 -1
- package/dist/github/refs-cache.js +5 -5
- package/dist/github/refs-graphql.js +4 -0
- package/dist/github/refs-rest.js +9 -5
- package/dist/github/refs.js +15 -10
- package/dist/github/{fetch.js → request.js} +13 -2
- package/dist/github/token.js +1 -1
- package/dist/github/types.d.ts +1 -1
- package/dist/globs/_internal.js +8 -10
- package/dist/globs/match.js +13 -7
- package/dist/globs/matcher.d.ts +3 -3
- package/dist/globs/matcher.js +16 -14
- package/dist/globs/stream.js +1 -2
- package/dist/globs/types.d.ts +24 -24
- package/dist/http-request/_internal.d.ts +1 -1
- package/dist/http-request/browser.js +10 -4
- package/dist/http-request/checksum-file.d.ts +55 -0
- package/dist/http-request/checksum-file.js +95 -0
- package/dist/http-request/download-types.d.ts +15 -23
- package/dist/http-request/download.js +3 -3
- package/dist/http-request/{browser-fetch.d.ts → fetch/browser.d.ts} +2 -2
- package/dist/http-request/{browser-fetch.js → fetch/browser.js} +4 -4
- package/dist/http-request/headers.js +1 -2
- package/dist/http-request/request-attempt.js +38 -34
- package/dist/http-request/request-types.d.ts +2 -2
- package/dist/http-request/request.js +1 -1
- package/dist/http-request/user-agent.js +4 -5
- package/dist/integrity.d.ts +92 -18
- package/dist/integrity.js +125 -30
- package/dist/ipc/directory.js +2 -2
- package/dist/ipc/paths.js +1 -1
- package/dist/ipc/write.js +1 -1
- package/dist/ipc-cli/get.js +12 -12
- package/dist/json/edit.js +51 -44
- package/dist/json/format.js +1 -1
- package/dist/json/parse.d.ts +1 -1
- package/dist/json/parse.js +3 -7
- package/dist/logger/_internal.d.ts +4 -4
- package/dist/logger/_internal.js +3 -3
- package/dist/logger/colors.js +4 -3
- package/dist/logger/console-methods.d.ts +132 -0
- package/dist/logger/console-methods.js +169 -0
- package/dist/logger/console.d.ts +12 -0
- package/dist/logger/console.js +42 -11
- package/dist/logger/indentation-methods.d.ts +81 -0
- package/dist/logger/indentation-methods.js +121 -0
- package/dist/logger/node.d.ts +16 -338
- package/dist/logger/node.js +75 -608
- package/dist/logger/options.d.ts +39 -0
- package/dist/logger/options.js +47 -0
- package/dist/logger/semantic-methods.d.ts +63 -0
- package/dist/logger/semantic-methods.js +108 -0
- package/dist/logger/stream-methods.d.ts +63 -0
- package/dist/logger/stream-methods.js +101 -0
- package/dist/logger/stream.d.ts +37 -0
- package/dist/logger/stream.js +42 -0
- package/dist/logger/symbols-builder.js +9 -9
- package/dist/logger/symbols.d.ts +2 -25
- package/dist/logger/symbols.js +53 -74
- package/dist/logger/types.d.ts +1 -1
- package/dist/memo/types.d.ts +6 -6
- package/dist/native-messaging/host.d.ts +20 -0
- package/dist/native-messaging/host.js +120 -0
- package/dist/native-messaging/index.d.ts +5 -0
- package/dist/native-messaging/index.js +22 -0
- package/dist/native-messaging/install.d.ts +60 -0
- package/dist/native-messaging/install.js +144 -0
- package/dist/native-messaging/rate-limit.d.ts +69 -0
- package/dist/native-messaging/rate-limit.js +119 -0
- package/dist/native-messaging/run.d.ts +10 -0
- package/dist/native-messaging/run.js +17 -0
- package/dist/node/async-hooks.js +4 -3
- package/dist/node/child-process.js +4 -3
- package/dist/node/crypto.js +4 -3
- package/dist/node/events.js +4 -3
- package/dist/node/fs-promises.js +4 -3
- package/dist/node/fs.d.ts +22 -6
- package/dist/node/fs.js +17 -3
- package/dist/node/http.js +4 -3
- package/dist/node/https.js +4 -3
- package/dist/node/module.js +10 -6
- package/dist/node/os.d.ts +10 -2
- package/dist/node/os.js +12 -4
- package/dist/node/path.d.ts +11 -2
- package/dist/node/path.js +18 -4
- package/dist/node/timers-promises.js +4 -3
- package/dist/node/url.js +4 -3
- package/dist/node/util.js +4 -3
- package/dist/objects/getters.js +6 -8
- package/dist/objects/inspect.js +1 -4
- package/dist/objects/mutate.js +4 -5
- package/dist/objects/predicates.js +1 -5
- package/dist/objects/sort.js +3 -7
- package/dist/packages/edit-class.d.ts +2 -3
- package/dist/packages/edit-class.js +53 -48
- package/dist/packages/edit.js +12 -14
- package/dist/packages/exports.js +15 -21
- package/dist/packages/fetch.d.ts +16 -0
- package/dist/packages/fetch.js +81 -0
- package/dist/packages/find.d.ts +55 -0
- package/dist/packages/find.js +65 -0
- package/dist/packages/isolation.js +14 -14
- package/dist/packages/licenses.js +18 -18
- package/dist/packages/manifest.js +16 -19
- package/dist/packages/metadata-extensions.d.ts +14 -0
- package/dist/packages/metadata-extensions.js +43 -0
- package/dist/packages/normalize.js +6 -10
- package/dist/packages/provenance.js +17 -19
- package/dist/packages/read.d.ts +29 -0
- package/dist/packages/read.js +66 -0
- package/dist/packages/specs.d.ts +48 -1
- package/dist/packages/specs.js +75 -12
- package/dist/packages/tarball.d.ts +24 -0
- package/dist/packages/tarball.js +81 -0
- package/dist/packages/types.d.ts +22 -22
- package/dist/packages/validation.js +0 -3
- package/dist/paths/_internal.d.ts +2 -1
- package/dist/paths/_internal.js +7 -19
- package/dist/paths/conversion.js +5 -9
- package/dist/paths/dirnames.d.ts +1 -0
- package/dist/paths/dirnames.js +2 -0
- package/dist/paths/filenames.d.ts +0 -1
- package/dist/paths/filenames.js +0 -2
- package/dist/paths/normalize.js +4 -5
- package/dist/paths/packages.js +4 -7
- package/dist/paths/predicates.js +9 -16
- package/dist/paths/resolve.js +17 -25
- package/dist/paths/rewire.d.ts +5 -0
- package/dist/paths/rewire.js +3 -3
- package/dist/paths/socket.d.ts +74 -111
- package/dist/paths/socket.js +106 -139
- package/dist/paths/walk.d.ts +1 -1
- package/dist/paths/walk.js +4 -4
- package/dist/perf/report.js +2 -2
- package/dist/perf/types.d.ts +1 -1
- package/dist/pkg-ext/data.js +1 -1
- package/dist/primordials/array.js +9 -9
- package/dist/primordials/date.js +2 -2
- package/dist/primordials/error.js +3 -3
- package/dist/primordials/headers.d.ts +10 -0
- package/dist/primordials/headers.js +23 -0
- package/dist/primordials/intl.d.ts +13 -0
- package/dist/primordials/intl.js +26 -0
- package/dist/primordials/math.js +33 -33
- package/dist/primordials/number.js +9 -9
- package/dist/primordials/object.js +5 -5
- package/dist/primordials/process.d.ts +88 -0
- package/dist/primordials/process.js +132 -0
- package/dist/primordials/string.d.ts +2 -2
- package/dist/primordials/string.js +6 -6
- package/dist/primordials/symbol.js +3 -3
- package/dist/primordials/uncurry.d.ts +1 -2
- package/dist/primordials/uncurry.js +9 -9
- package/dist/process/abort.js +3 -3
- package/dist/process/lock-manager.js +8 -8
- package/dist/process/spawn/_internal.js +6 -8
- package/dist/process/spawn/child.js +20 -14
- package/dist/process/spawn/errors.js +3 -5
- package/dist/process/spawn/kill-tree.d.ts +53 -0
- package/dist/process/spawn/kill-tree.js +85 -0
- package/dist/process/spawn/stdio.js +0 -1
- package/dist/process/spawn/types.d.ts +5 -5
- package/dist/process/transient.js +2 -2
- package/dist/promises/_internal.d.ts +2 -1
- package/dist/promises/_internal.js +2 -6
- package/dist/promises/iterate.js +11 -15
- package/dist/promises/options.js +3 -6
- package/dist/promises/retry.js +4 -5
- package/dist/promises/timers.d.ts +30 -0
- package/dist/promises/timers.js +48 -0
- package/dist/regexps/spec.js +1 -1
- package/dist/releases/github-archives.d.ts +6 -6
- package/dist/releases/github-archives.js +3 -3
- package/dist/releases/github-asset-url.d.ts +1 -1
- package/dist/releases/github-asset-url.js +5 -5
- package/dist/releases/github-downloads.d.ts +1 -1
- package/dist/releases/github-downloads.js +3 -3
- package/dist/releases/github-listing.d.ts +12 -4
- package/dist/releases/github-listing.js +20 -7
- package/dist/releases/github-retry-config.js +1 -1
- package/dist/releases/github-types.d.ts +6 -6
- package/dist/releases/socket-btm-binary-naming.d.ts +107 -0
- package/dist/releases/socket-btm-binary-naming.js +155 -0
- package/dist/releases/socket-btm.d.ts +8 -115
- package/dist/releases/socket-btm.js +16 -159
- package/dist/schema/types.d.ts +4 -5
- package/dist/schema/validate.js +1 -1
- package/dist/sea/detect.js +6 -6
- package/dist/secrets/_internal.d.ts +2 -2
- package/dist/secrets/_internal.js +2 -2
- package/dist/secrets/compare.d.ts +45 -0
- package/dist/secrets/compare.js +61 -0
- package/dist/secrets/find.d.ts +2 -2
- package/dist/secrets/find.js +10 -4
- package/dist/secrets/keychain.d.ts +1 -1
- package/dist/secrets/keychain.js +6 -4
- package/dist/secrets/linux.js +40 -52
- package/dist/secrets/macos.d.ts +2 -3
- package/dist/secrets/macos.js +24 -33
- package/dist/secrets/rc.d.ts +4 -4
- package/dist/secrets/rc.js +27 -17
- package/dist/secrets/socket-api-token.d.ts +4 -4
- package/dist/secrets/socket-api-token.js +26 -9
- package/dist/secrets/windows.js +32 -37
- package/dist/shadow/skip.js +2 -2
- package/dist/shell/parse.d.ts +32 -0
- package/dist/shell/parse.js +60 -0
- package/dist/smol/detect.js +9 -10
- package/dist/smol/http.js +6 -7
- package/dist/smol/https.js +6 -7
- package/dist/smol/manifest.d.ts +1 -1
- package/dist/smol/manifest.js +6 -7
- package/dist/smol/path.d.ts +1 -1
- package/dist/smol/path.js +7 -8
- package/dist/smol/primordial.d.ts +4 -0
- package/dist/smol/primordial.js +6 -7
- package/dist/smol/purl.d.ts +1 -1
- package/dist/smol/purl.js +7 -8
- package/dist/smol/versions.js +6 -7
- package/dist/smol/vfs.js +6 -7
- package/dist/sorts/_internal.js +6 -8
- package/dist/sorts/natural.js +10 -12
- package/dist/sorts/semver.js +1 -2
- package/dist/sorts/strings.js +0 -1
- package/dist/sorts/types.d.ts +1 -1
- package/dist/spinner/create-spinner-class.d.ts +38 -0
- package/dist/spinner/create-spinner-class.js +302 -0
- package/dist/spinner/default.js +8 -9
- package/dist/spinner/spinner-internals.d.ts +36 -0
- package/dist/spinner/spinner-internals.js +105 -0
- package/dist/spinner/spinner-shimmer-methods.d.ts +54 -0
- package/dist/spinner/spinner-shimmer-methods.js +143 -0
- package/dist/spinner/spinner-status-methods.d.ts +40 -0
- package/dist/spinner/spinner-status-methods.js +133 -0
- package/dist/spinner/spinner.d.ts +8 -5
- package/dist/spinner/spinner.js +19 -706
- package/dist/spinner/types.d.ts +3 -1
- package/dist/spinner/with.d.ts +10 -0
- package/dist/spinner/with.js +16 -2
- package/dist/stdio/divider.js +1 -1
- package/dist/stdio/footer.js +3 -3
- package/dist/stdio/header.js +4 -4
- package/dist/stdio/progress.js +10 -6
- package/dist/stdio/prompts.d.ts +7 -5
- package/dist/stdio/prompts.js +7 -8
- package/dist/stdio/stdout.js +3 -3
- package/dist/streams/parallel.js +3 -5
- package/dist/streams/transform.js +2 -3
- package/dist/strings/format.js +2 -6
- package/dist/strings/predicates.js +0 -2
- package/dist/strings/search.js +1 -2
- package/dist/strings/transform.js +0 -3
- package/dist/strings/width.js +9 -10
- package/dist/tables/bordered.js +4 -3
- package/dist/tables/padding.js +1 -1
- package/dist/tables/simple.js +8 -5
- package/dist/temporal/instant.js +1 -1
- package/dist/temporal/slots.js +6 -6
- package/dist/temporal/system.js +9 -9
- package/dist/themes/context.d.ts +3 -2
- package/dist/themes/context.js +4 -5
- package/dist/themes/themes.js +15 -15
- package/dist/themes/types.d.ts +3 -3
- package/dist/url/assert-safe.d.ts +29 -0
- package/dist/url/assert-safe.js +54 -0
- package/dist/url/parse.js +0 -2
- package/dist/url/predicates.d.ts +31 -1
- package/dist/url/predicates.js +43 -3
- package/dist/url/search-params.js +3 -9
- package/dist/url/types.d.ts +9 -5
- package/dist/versions/_internal.js +3 -3
- package/dist/words/article.js +0 -1
- package/dist/words/capitalize.js +0 -1
- package/dist/words/pluralize.js +15 -5
- package/package.json +419 -216
- package/dist/external-tools/uv/asset-names.d.ts +0 -36
- package/dist/external-tools/uv/asset-names.js +0 -70
- package/dist/external-tools/uv/from-download.d.ts +0 -17
- package/dist/external-tools/uv/from-download.js +0 -47
- package/dist/external-tools/uv/from-path.d.ts +0 -5
- package/dist/external-tools/uv/from-path.js +0 -22
- package/dist/external-tools/uv/from-vfs.d.ts +0 -7
- package/dist/external-tools/uv/from-vfs.js +0 -26
- package/dist/external-tools/uv/resolve.d.ts +0 -25
- package/dist/external-tools/uv/resolve.js +0 -53
- package/dist/external-tools/uv/types.d.ts +0 -24
- package/dist/fs/path-cache.d.ts +0 -21
- package/dist/fs/path-cache.js +0 -34
- package/dist/http-request/checksums.d.ts +0 -69
- package/dist/http-request/checksums.js +0 -108
- package/dist/http-request/http-request.d.ts +0 -12
- package/dist/http-request/http-request.js +0 -11
- package/dist/packages/operations.d.ts +0 -113
- package/dist/packages/operations.js +0 -304
- package/dist/ssri/convert.d.ts +0 -48
- package/dist/ssri/convert.js +0 -69
- package/dist/ssri/parse.d.ts +0 -27
- package/dist/ssri/parse.js +0 -41
- package/dist/ssri/validate.d.ts +0 -41
- package/dist/ssri/validate.js +0 -56
- /package/dist/{bin → cli}/check.d.ts +0 -0
- /package/dist/external-tools/{uv → python}/types.js +0 -0
- /package/dist/fs/{find-up.d.ts → find.d.ts} +0 -0
- /package/dist/github/{fetch.d.ts → request.d.ts} +0 -0
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:
|
|
@@ -3,11 +3,13 @@
|
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
4
|
const require_primordials_error = require('../primordials/error.js');
|
|
5
5
|
const require_primordials_math = require('../primordials/math.js');
|
|
6
|
+
const require_primordials_string = require('../primordials/string.js');
|
|
6
7
|
const require_primordials_array = require('../primordials/array.js');
|
|
7
8
|
const require_primordials_date = require('../primordials/date.js');
|
|
8
9
|
const require_primordials_json = require('../primordials/json.js');
|
|
9
10
|
const require_primordials_promise = require('../primordials/promise.js');
|
|
10
|
-
const
|
|
11
|
+
const require_http_request_fetch_browser = require('./fetch/browser.js');
|
|
12
|
+
const require_primordials_headers = require('../primordials/headers.js');
|
|
11
13
|
|
|
12
14
|
//#region src/http-request/browser.ts
|
|
13
15
|
/**
|
|
@@ -74,6 +76,10 @@ function combineSignals(external, timeoutMs) {
|
|
|
74
76
|
};
|
|
75
77
|
}
|
|
76
78
|
async function attempt(url, options) {
|
|
79
|
+
options = {
|
|
80
|
+
__proto__: null,
|
|
81
|
+
...options
|
|
82
|
+
};
|
|
77
83
|
const method = options.method ?? "GET";
|
|
78
84
|
const init = { method };
|
|
79
85
|
if (options.headers) init.headers = options.headers;
|
|
@@ -89,7 +95,7 @@ async function attempt(url, options) {
|
|
|
89
95
|
timeout: options.timeout
|
|
90
96
|
});
|
|
91
97
|
try {
|
|
92
|
-
const response = await
|
|
98
|
+
const response = await require_http_request_fetch_browser.fetchResponse(url, init);
|
|
93
99
|
const buffer = await response.arrayBuffer();
|
|
94
100
|
if (options.maxResponseSize !== void 0 && buffer.byteLength > options.maxResponseSize) throw new require_primordials_error.ErrorCtor(`Response body (${buffer.byteLength} bytes) exceeds maxResponseSize (${options.maxResponseSize})`);
|
|
95
101
|
const body = new require_primordials_array.Uint8ArrayCtor(buffer);
|
|
@@ -136,8 +142,8 @@ function decodeText(bytes) {
|
|
|
136
142
|
}
|
|
137
143
|
function headersToRecord(headers) {
|
|
138
144
|
const out = {};
|
|
139
|
-
|
|
140
|
-
out[
|
|
145
|
+
require_primordials_headers.HeadersPrototypeForEach(headers, (value, key) => {
|
|
146
|
+
out[require_primordials_string.StringPrototypeToLowerCase(key)] = value;
|
|
141
147
|
});
|
|
142
148
|
return out;
|
|
143
149
|
}
|
|
@@ -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.
|
|
@@ -98,8 +98,8 @@ async function httpDownload(url, destPath, options) {
|
|
|
98
98
|
};
|
|
99
99
|
}
|
|
100
100
|
/* c8 ignore stop */
|
|
101
|
-
const crypto =
|
|
102
|
-
const fs =
|
|
101
|
+
const crypto = require_node_crypto.getNodeCrypto();
|
|
102
|
+
const fs = require_node_fs.getNodeFs();
|
|
103
103
|
const tempPath = `${destPath}.${crypto.randomBytes(6).toString("hex")}.download`;
|
|
104
104
|
if (fs.existsSync(tempPath)) await require_fs_safe.safeDelete(tempPath);
|
|
105
105
|
let lastError;
|
|
@@ -155,7 +155,7 @@ async function httpDownloadAttempt(url, destPath, options) {
|
|
|
155
155
|
const res = response.rawResponse;
|
|
156
156
|
/* c8 ignore next 3 */
|
|
157
157
|
if (!res) throw new require_primordials_error.ErrorCtor("Stream response missing rawResponse");
|
|
158
|
-
const { createWriteStream } =
|
|
158
|
+
const { createWriteStream } = require_node_fs.getNodeFs();
|
|
159
159
|
const totalSize = require_primordials_number.NumberParseInt(response.headers["content-length"] || "0", 10);
|
|
160
160
|
return await new require_primordials_promise.PromiseCtor((resolve, reject) => {
|
|
161
161
|
let downloadedSize = 0;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file Thin wrapper over the global `fetch()` so tests can mock the network
|
|
3
|
-
* layer via `vi.mock('@socketsecurity/lib/http-request/browser
|
|
3
|
+
* layer via `vi.mock('@socketsecurity/lib/http-request/fetch/browser')`
|
|
4
4
|
* without monkey-patching `globalThis.fetch` (which conflicts with the
|
|
5
5
|
* project's nock-based test setup). The wrapper itself is `c8 ignore`-marked
|
|
6
6
|
* because the body is a single uncoverable fetch call; coverage credit is
|
|
7
7
|
* preserved by the wider test suite that mocks this module and asserts the
|
|
8
8
|
* call shape.
|
|
9
9
|
*/
|
|
10
|
-
export declare function
|
|
10
|
+
export declare function fetchResponse(input: RequestInfo | URL, init?: RequestInit): Promise<Response>;
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
/* Socket Lib - Built with rolldown */
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
4
|
|
|
5
|
-
//#region src/http-request/browser
|
|
5
|
+
//#region src/http-request/fetch/browser.ts
|
|
6
6
|
/**
|
|
7
7
|
* @file Thin wrapper over the global `fetch()` so tests can mock the network
|
|
8
|
-
* layer via `vi.mock('@socketsecurity/lib/http-request/browser
|
|
8
|
+
* layer via `vi.mock('@socketsecurity/lib/http-request/fetch/browser')`
|
|
9
9
|
* without monkey-patching `globalThis.fetch` (which conflicts with the
|
|
10
10
|
* project's nock-based test setup). The wrapper itself is `c8 ignore`-marked
|
|
11
11
|
* because the body is a single uncoverable fetch call; coverage credit is
|
|
@@ -13,10 +13,10 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
13
13
|
* call shape.
|
|
14
14
|
*/
|
|
15
15
|
/* c8 ignore start - native fetch call; tests mock this module wholesale */
|
|
16
|
-
function
|
|
16
|
+
function fetchResponse(input, init) {
|
|
17
17
|
return fetch(input, init);
|
|
18
18
|
}
|
|
19
19
|
/* c8 ignore stop */
|
|
20
20
|
|
|
21
21
|
//#endregion
|
|
22
|
-
exports.
|
|
22
|
+
exports.fetchResponse = fetchResponse;
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
/* Socket Lib - Built with rolldown */
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
4
|
const require_primordials_number = require('../primordials/number.js');
|
|
5
|
+
const require_primordials_object = require('../primordials/object.js');
|
|
5
6
|
const require_primordials_array = require('../primordials/array.js');
|
|
6
7
|
const require_primordials_date = require('../primordials/date.js');
|
|
7
|
-
const require_primordials_object = require('../primordials/object.js');
|
|
8
8
|
const require_primordials_globals = require('../primordials/globals.js');
|
|
9
9
|
|
|
10
10
|
//#region src/http-request/headers.ts
|
|
@@ -37,7 +37,6 @@ const RETRY_AFTER_INT_RE = /^\d+$/;
|
|
|
37
37
|
*
|
|
38
38
|
* @returns The `Authorization` header value, e.g. `Basic <base64>`.
|
|
39
39
|
*/
|
|
40
|
-
/*@__NO_SIDE_EFFECTS__*/
|
|
41
40
|
function basicAuthHeader(token) {
|
|
42
41
|
return `Basic ${require_primordials_globals.btoa(`${token}:`)}`;
|
|
43
42
|
}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/* Socket Lib - Built with rolldown */
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
|
+
const require_primordials_buffer = require('../primordials/buffer.js');
|
|
4
5
|
const require_primordials_error = require('../primordials/error.js');
|
|
5
|
-
const require_primordials_date = require('../primordials/date.js');
|
|
6
6
|
const require_primordials_object = require('../primordials/object.js');
|
|
7
|
+
const require_primordials_date = require('../primordials/date.js');
|
|
7
8
|
const require_primordials_json = require('../primordials/json.js');
|
|
8
9
|
const require_primordials_promise = require('../primordials/promise.js');
|
|
10
|
+
const require_primordials_url = require('../primordials/url.js');
|
|
9
11
|
const require_node_http = require('../node/http.js');
|
|
10
12
|
const require_node_https = require('../node/https.js');
|
|
11
|
-
const require_primordials_url = require('../primordials/url.js');
|
|
12
13
|
const require_http_request_errors = require('./errors.js');
|
|
14
|
+
const require_http_request_response_reader = require('./response-reader.js');
|
|
13
15
|
const require_http_request_user_agent = require('./user-agent.js');
|
|
14
16
|
|
|
15
17
|
//#region src/http-request/request-attempt.ts
|
|
@@ -70,7 +72,7 @@ async function httpRequestAttempt(url, options) {
|
|
|
70
72
|
};
|
|
71
73
|
const parsedUrl = new require_primordials_url.URLCtor(url);
|
|
72
74
|
const isHttps = parsedUrl.protocol === "https:";
|
|
73
|
-
const httpModule = isHttps ?
|
|
75
|
+
const httpModule = isHttps ? require_node_https.getNodeHttps() : require_node_http.getNodeHttp();
|
|
74
76
|
const requestOptions = {
|
|
75
77
|
headers: mergedHeaders,
|
|
76
78
|
hostname: parsedUrl.hostname,
|
|
@@ -106,15 +108,15 @@ async function httpRequestAttempt(url, options) {
|
|
|
106
108
|
reject(new require_primordials_error.ErrorCtor(`Too many redirects (exceeded maximum: ${maxRedirects})`));
|
|
107
109
|
return;
|
|
108
110
|
}
|
|
109
|
-
const redirectUrl = res.headers.location.startsWith("http") ? res.headers.location : new
|
|
110
|
-
const redirectParsed = new
|
|
111
|
+
const redirectUrl = res.headers.location.startsWith("http") ? res.headers.location : new require_primordials_url.URLCtor(res.headers.location, url).toString();
|
|
112
|
+
const redirectParsed = new require_primordials_url.URLCtor(redirectUrl);
|
|
111
113
|
if (isHttps && redirectParsed.protocol !== "https:") {
|
|
112
114
|
settled = true;
|
|
113
115
|
reject(new require_primordials_error.ErrorCtor(`Redirect from HTTPS to HTTP is not allowed: ${redirectUrl}`));
|
|
114
116
|
return;
|
|
115
117
|
}
|
|
116
118
|
let redirectHeaders = headers;
|
|
117
|
-
if (new
|
|
119
|
+
if (new require_primordials_url.URLCtor(url).origin !== redirectParsed.origin) {
|
|
118
120
|
redirectHeaders = { __proto__: null };
|
|
119
121
|
const stripped = new Set([
|
|
120
122
|
"authorization",
|
|
@@ -148,7 +150,7 @@ async function httpRequestAttempt(url, options) {
|
|
|
148
150
|
status,
|
|
149
151
|
statusText
|
|
150
152
|
});
|
|
151
|
-
const emptyBody =
|
|
153
|
+
const emptyBody = require_primordials_buffer.BufferAlloc(0);
|
|
152
154
|
resolveOnce({
|
|
153
155
|
arrayBuffer: () => emptyBody.buffer,
|
|
154
156
|
body: emptyBody,
|
|
@@ -178,31 +180,33 @@ async function httpRequestAttempt(url, options) {
|
|
|
178
180
|
});
|
|
179
181
|
res.on("end", () => {
|
|
180
182
|
if (settled) return;
|
|
181
|
-
const
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
183
|
+
const rawBody = require_primordials_buffer.BufferConcat(chunks);
|
|
184
|
+
require_http_request_response_reader.decodeBody(rawBody, res.headers["content-encoding"]).catch(() => rawBody).then((responseBody) => {
|
|
185
|
+
const ok = res.statusCode !== void 0 && res.statusCode >= 200 && res.statusCode < 300;
|
|
186
|
+
const response = {
|
|
187
|
+
arrayBuffer() {
|
|
188
|
+
return responseBody.buffer.slice(responseBody.byteOffset, responseBody.byteOffset + responseBody.byteLength);
|
|
189
|
+
},
|
|
190
|
+
body: responseBody,
|
|
191
|
+
headers: res.headers,
|
|
192
|
+
json() {
|
|
193
|
+
return require_primordials_json.JSONParse(responseBody.toString("utf8"));
|
|
194
|
+
},
|
|
195
|
+
ok,
|
|
196
|
+
rawResponse: res,
|
|
197
|
+
status: res.statusCode || 0,
|
|
198
|
+
statusText: res.statusMessage || "",
|
|
199
|
+
text() {
|
|
200
|
+
return responseBody.toString("utf8");
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
emitResponse({
|
|
204
|
+
headers: res.headers,
|
|
205
|
+
status: res.statusCode,
|
|
206
|
+
statusText: res.statusMessage
|
|
207
|
+
});
|
|
208
|
+
resolveOnce(response);
|
|
204
209
|
});
|
|
205
|
-
resolveOnce(response);
|
|
206
210
|
});
|
|
207
211
|
res.on("error", (error) => {
|
|
208
212
|
rejectOnce(error);
|
|
@@ -217,12 +221,12 @@ async function httpRequestAttempt(url, options) {
|
|
|
217
221
|
});
|
|
218
222
|
if (body) {
|
|
219
223
|
if (typeof body === "object" && typeof body.pipe === "function") {
|
|
220
|
-
const
|
|
221
|
-
|
|
224
|
+
const bodyStream = body;
|
|
225
|
+
bodyStream.on("error", (err) => {
|
|
222
226
|
request.destroy();
|
|
223
227
|
rejectOnce(err);
|
|
224
228
|
});
|
|
225
|
-
|
|
229
|
+
bodyStream.pipe(request);
|
|
226
230
|
return;
|
|
227
231
|
}
|
|
228
232
|
request.write(body);
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* observability
|
|
9
9
|
* - `HttpRequestOptions` — the main request configuration interface
|
|
10
10
|
*/
|
|
11
|
-
import type { IncomingMessage } from 'node:http';
|
|
11
|
+
import type { IncomingHttpHeaders, IncomingMessage } from 'node:http';
|
|
12
12
|
import type { Readable } from 'node:stream';
|
|
13
13
|
/**
|
|
14
14
|
* IncomingMessage received as a response to a client request (http.request
|
|
@@ -35,7 +35,7 @@ export interface HttpHookRequestInfo {
|
|
|
35
35
|
export interface HttpHookResponseInfo {
|
|
36
36
|
duration: number;
|
|
37
37
|
error?: Error | undefined;
|
|
38
|
-
headers?:
|
|
38
|
+
headers?: IncomingHttpHeaders | undefined;
|
|
39
39
|
method: string;
|
|
40
40
|
status?: number | undefined;
|
|
41
41
|
statusText?: string | undefined;
|
|
@@ -4,9 +4,9 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
4
4
|
const require_primordials_error = require('../primordials/error.js');
|
|
5
5
|
const require_primordials_math = require('../primordials/math.js');
|
|
6
6
|
const require_primordials_number = require('../primordials/number.js');
|
|
7
|
+
const require_http_request_response_reader = require('./response-reader.js');
|
|
7
8
|
const require_http_request_request_attempt = require('./request-attempt.js');
|
|
8
9
|
const require_http_request_response_types = require('./response-types.js');
|
|
9
|
-
const require_http_request_response_reader = require('./response-reader.js');
|
|
10
10
|
let node_timers_promises = require("node:timers/promises");
|
|
11
11
|
|
|
12
12
|
//#region src/http-request/request.ts
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
4
4
|
const require_runtime = require('../_virtual/_rolldown/runtime.js');
|
|
5
5
|
const require_env_rewire = require('../env/rewire.js');
|
|
6
6
|
const require_constants_socket = require('../constants/socket.js');
|
|
7
|
-
const
|
|
7
|
+
const require_packages_specs = require('../packages/specs.js');
|
|
8
8
|
let node_process = require("node:process");
|
|
9
9
|
node_process = require_runtime.__toESM(node_process);
|
|
10
10
|
|
|
@@ -38,9 +38,8 @@ node_process = require_runtime.__toESM(node_process);
|
|
|
38
38
|
* // 'sdxgen/0.5.0 node/v22.10.0 darwin/arm64 embedded-by-foo/1'
|
|
39
39
|
* ```
|
|
40
40
|
*/
|
|
41
|
-
/*@__NO_SIDE_EFFECTS__*/
|
|
42
41
|
function buildUserAgent(pkg, caller) {
|
|
43
|
-
const base = `${
|
|
42
|
+
const base = `${require_packages_specs.pkgNameToSlug(pkg.name)}/${pkg.version} node/${node_process.default.version} ${node_process.default.platform}/${node_process.default.arch}`;
|
|
44
43
|
return caller ? `${base} ${caller}` : base;
|
|
45
44
|
}
|
|
46
45
|
let cachedBaseUserAgent;
|
|
@@ -66,12 +65,12 @@ let cachedBaseUserAgent;
|
|
|
66
65
|
* ```
|
|
67
66
|
*/
|
|
68
67
|
function getSocketCallerUserAgent() {
|
|
69
|
-
if (cachedBaseUserAgent === void 0) cachedBaseUserAgent =
|
|
68
|
+
if (cachedBaseUserAgent === void 0) cachedBaseUserAgent = buildUserAgent({
|
|
70
69
|
name: require_constants_socket.SOCKET_LIB_NAME,
|
|
71
70
|
version: require_constants_socket.SOCKET_LIB_VERSION
|
|
72
71
|
});
|
|
73
72
|
const caller = require_env_rewire.getEnvValue("SOCKET_CALLER_USER_AGENT");
|
|
74
|
-
return caller
|
|
73
|
+
return caller?.trim() ? `${cachedBaseUserAgent} ${caller}` : cachedBaseUserAgent;
|
|
75
74
|
}
|
|
76
75
|
|
|
77
76
|
//#endregion
|