@socketsecurity/lib 6.0.3 → 6.0.5
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 +22 -0
- package/dist/_virtual/_rolldown/runtime.js +45 -0
- package/dist/abort/signal.js +53 -59
- package/dist/ai/discover.js +110 -110
- package/dist/ai/profiles.js +94 -65
- package/dist/ai/spawn.js +172 -194
- package/dist/ai/types.js +1 -17
- package/dist/ai/worktree.js +160 -183
- package/dist/ansi/constants.js +16 -38
- package/dist/ansi/strip.js +44 -41
- package/dist/archives/_internal.js +64 -73
- package/dist/archives/detect.js +30 -43
- package/dist/archives/extract.js +43 -50
- package/dist/archives/tar.js +197 -228
- package/dist/archives/types.js +1 -17
- package/dist/archives/zip.js +85 -121
- package/dist/argv/flag-predicates.js +203 -101
- package/dist/argv/flag-types.js +96 -113
- package/dist/argv/parse-args-string.d.ts +16 -14
- package/dist/argv/parse-args-string.js +42 -39
- package/dist/argv/parse.js +145 -163
- package/dist/arrays/_internal.js +65 -48
- package/dist/arrays/chunk.js +51 -40
- package/dist/arrays/join.js +87 -35
- package/dist/arrays/predicates.js +46 -28
- package/dist/arrays/unique.js +45 -31
- package/dist/bin/_internal.js +34 -42
- package/dist/bin/check-primordials.js +175 -233
- package/dist/bin/check.js +51 -72
- package/dist/bin/exec.js +70 -74
- package/dist/bin/find.js +151 -134
- package/dist/bin/resolve.js +180 -246
- package/dist/bin/shadow.js +24 -33
- package/dist/bin/socket-lib.js +51 -73
- package/dist/bin/types.js +1 -17
- package/dist/bin/which.js +211 -146
- package/dist/cacache/_internal.js +25 -40
- package/dist/cacache/clear.js +79 -72
- package/dist/cacache/read.js +48 -46
- package/dist/cacache/tmp.js +29 -36
- package/dist/cacache/types.js +1 -17
- package/dist/cacache/write.js +43 -48
- package/dist/cache/ttl/store.js +232 -288
- package/dist/cache/ttl/types.js +1 -17
- package/dist/checks/primordials-defaults.js +83 -89
- package/dist/checks/primordials.js +225 -277
- package/dist/colors/convert.js +45 -37
- package/dist/colors/palette.js +88 -45
- package/dist/colors/socket-palette.js +74 -84
- package/dist/colors/types.js +1 -17
- package/dist/compression/_internal.js +57 -72
- package/dist/compression/brotli.js +94 -127
- package/dist/compression/gzip.js +95 -121
- package/dist/compression/types.js +1 -17
- package/dist/constants/agents.js +61 -113
- package/dist/constants/encoding.js +19 -42
- package/dist/constants/github.js +12 -30
- package/dist/constants/licenses.js +48 -63
- package/dist/constants/lifecycle-script-names.js +31 -45
- package/dist/constants/maintained-node-versions.js +22 -37
- package/dist/constants/node.js +226 -167
- package/dist/constants/package-default-node-range.js +16 -41
- package/dist/constants/package-default-socket-categories.js +12 -30
- package/dist/constants/packages.js +77 -126
- package/dist/constants/platform.js +27 -49
- package/dist/constants/sentinels.js +23 -48
- package/dist/constants/socket.js +42 -87
- package/dist/constants/testing.js +15 -34
- package/dist/constants/time.js +16 -36
- package/dist/constants/typescript.js +32 -52
- package/dist/cover/code.js +111 -142
- package/dist/cover/formatters.js +118 -101
- package/dist/cover/type.js +50 -76
- package/dist/cover/types.js +1 -17
- package/dist/crypto/hash.js +54 -46
- package/dist/debug/_internal.js +62 -71
- package/dist/debug/caller-info.js +53 -64
- package/dist/debug/namespace.js +80 -90
- package/dist/debug/output.js +172 -188
- package/dist/debug/types.js +1 -17
- package/dist/dlx/_internal.js +24 -43
- package/dist/dlx/arborist.js +162 -160
- package/dist/dlx/binary-cache.js +228 -200
- package/dist/dlx/binary-download.js +172 -211
- package/dist/dlx/binary-resolution.js +165 -157
- package/dist/dlx/binary-types.js +1 -17
- package/dist/dlx/binary.js +149 -189
- package/dist/dlx/cache.js +45 -30
- package/dist/dlx/detect.js +245 -159
- package/dist/dlx/dir.js +67 -51
- package/dist/dlx/firewall.js +62 -100
- package/dist/dlx/lockfile.js +122 -127
- package/dist/dlx/manifest.js +264 -274
- package/dist/dlx/package.js +241 -244
- package/dist/dlx/packages.js +99 -96
- package/dist/dlx/paths.js +73 -59
- package/dist/dlx/spec.js +52 -60
- package/dist/dlx/types.js +1 -17
- package/dist/eco/cargo/lockfile-format.js +19 -36
- package/dist/eco/cargo/manifest-format.js +17 -35
- package/dist/eco/cargo/parse-lockfile.js +210 -237
- package/dist/eco/manifest/analyze-lockfile.js +46 -63
- package/dist/eco/manifest/detect-format.js +66 -90
- package/dist/eco/manifest/find-packages.js +39 -64
- package/dist/eco/manifest/get-package-versions.js +27 -48
- package/dist/eco/manifest/get-package.js +21 -40
- package/dist/eco/manifest/manifest-error.js +14 -35
- package/dist/eco/manifest/parse-lockfile.js +40 -86
- package/dist/eco/manifest/parse-manifest.js +26 -43
- package/dist/eco/manifest/parse.js +26 -47
- package/dist/eco/manifest/types.js +1 -17
- package/dist/eco/npm/bun/exec.js +23 -32
- package/dist/eco/npm/manifest-format.js +21 -35
- package/dist/eco/npm/npm/exec.js +51 -61
- package/dist/eco/npm/npm/extract-package-name-from-path.js +28 -50
- package/dist/eco/npm/npm/flags.js +80 -52
- package/dist/eco/npm/npm/lockfile-format.js +21 -40
- package/dist/eco/npm/npm/parse-git-url.js +26 -40
- package/dist/eco/npm/npm/parse-lockfile.js +184 -210
- package/dist/eco/npm/parse-package-json.js +71 -102
- package/dist/eco/npm/pnpm/detect-pnpm-version.js +22 -43
- package/dist/eco/npm/pnpm/exec.js +51 -62
- package/dist/eco/npm/pnpm/flags.js +75 -68
- package/dist/eco/npm/pnpm/lockfile-format.js +19 -36
- package/dist/eco/npm/pnpm/parse-lockfile.js +235 -259
- package/dist/eco/npm/pnpm/parse-pnpm-package-id-v5.js +37 -47
- package/dist/eco/npm/pnpm/parse-pnpm-package-id-v6-v9.js +36 -49
- package/dist/eco/npm/script.js +82 -90
- package/dist/eco/npm/vlt/exec.js +24 -32
- package/dist/eco/npm/yarnpkg/yarn/exec.js +60 -59
- package/dist/eco/npm/yarnpkg/yarn/lockfile-format.js +20 -36
- package/dist/eco/npm/yarnpkg/yarn/parse-lockfile.js +194 -242
- package/dist/eco/npm/yarnpkg/yarn/parse-yarn-descriptor.js +37 -61
- package/dist/eco/purl.js +50 -60
- package/dist/eco/types.js +1 -17
- package/dist/effects/pulse-frames.js +64 -65
- package/dist/effects/shimmer-keyframes.js +71 -52
- package/dist/effects/shimmer-terminal.js +81 -50
- package/dist/effects/shimmer.js +290 -153
- package/dist/env/boolean.js +42 -43
- package/dist/env/case-insensitive.js +54 -39
- package/dist/env/ci.js +29 -31
- package/dist/env/debug.js +28 -31
- package/dist/env/github.js +144 -59
- package/dist/env/home.js +38 -31
- package/dist/env/locale.js +59 -39
- package/dist/env/node-auth-token.js +28 -31
- package/dist/env/node-env.js +28 -31
- package/dist/env/npm.js +94 -47
- package/dist/env/number.js +50 -51
- package/dist/env/package-manager.js +95 -83
- package/dist/env/path.js +28 -31
- package/dist/env/pre-commit.js +30 -32
- package/dist/env/proxy.js +121 -122
- package/dist/env/rewire.js +204 -96
- package/dist/env/shell.js +28 -31
- package/dist/env/socket-cli.js +233 -81
- package/dist/env/socket.js +521 -156
- package/dist/env/string.js +43 -44
- package/dist/env/temp-dir.js +59 -39
- package/dist/env/term.js +28 -31
- package/dist/env/test.js +65 -43
- package/dist/env/types.js +1 -17
- package/dist/env/windows.js +78 -43
- package/dist/env/xdg.js +62 -39
- package/dist/errors/message.js +40 -46
- package/dist/errors/predicates.js +61 -49
- package/dist/errors/stack.js +24 -36
- package/dist/events/exit/_internal.js +86 -103
- package/dist/events/exit/handler.js +48 -55
- package/dist/events/exit/intercept.js +49 -70
- package/dist/events/exit/lifecycle.js +92 -101
- package/dist/events/exit/signals.js +25 -31
- package/dist/events/exit/types.js +1 -17
- package/dist/events/warning/handler.js +43 -40
- package/dist/events/warning/suppress.js +111 -90
- package/dist/external/@npmcli/package-json/lib/read-package.js +132 -153
- package/dist/external/@npmcli/package-json/lib/sort.js +73 -105
- package/dist/external/@npmcli/package-json.js +12705 -15140
- package/dist/external/@npmcli/promise-spawn.js +451 -472
- package/dist/external/@sinclair/typebox/value.js +7443 -9002
- package/dist/external/@sinclair/typebox.js +7516 -7885
- package/dist/external/@socketregistry/is-unicode-supported.js +31 -39
- package/dist/external/@socketregistry/packageurl-js.js +6127 -7369
- package/dist/external/@socketregistry/yocto-spinner.js +394 -455
- package/dist/external/@yarnpkg/extensions.js +435 -1022
- package/dist/external/adm-zip.js +2313 -2673
- package/dist/external/debug.js +700 -687
- package/dist/external/external-pack.js +2658 -3171
- package/dist/external/fast-sort.js +124 -138
- package/dist/external/get-east-asian-width.js +70 -64
- package/dist/external/libnpmexec.js +28 -31
- package/dist/external/npm-pack.js +43617 -50137
- package/dist/external/p-map.js +198 -222
- package/dist/external/pico-pack.js +6735 -7304
- package/dist/external/pony-cause.js +143 -139
- package/dist/external/shell-quote.js +226 -0
- package/dist/external/spdx-pack.js +1283 -1403
- package/dist/external/streaming-iterables.js +835 -1052
- package/dist/external/tar-fs.js +2769 -3048
- package/dist/external/which.js +267 -251
- package/dist/external/yargs-parser.js +851 -1074
- package/dist/external-tools/bazel/asset-names.js +98 -90
- package/dist/external-tools/bazel/from-download.js +52 -46
- package/dist/external-tools/bazel/from-path.js +27 -38
- package/dist/external-tools/bazel/read-bazel-version-file.js +35 -57
- package/dist/external-tools/bazel/resolve-asset-url.js +24 -39
- package/dist/external-tools/bazel/resolve-bazel-version.js +34 -56
- package/dist/external-tools/bazel/resolve.js +44 -58
- package/dist/external-tools/bazel/types.js +1 -17
- package/dist/external-tools/cdxgen/asset-names.js +59 -66
- package/dist/external-tools/cdxgen/from-download.js +52 -80
- package/dist/external-tools/cdxgen/from-path.js +19 -37
- package/dist/external-tools/cdxgen/from-vfs.js +22 -43
- package/dist/external-tools/cdxgen/resolve.js +48 -63
- package/dist/external-tools/cdxgen/types.js +1 -17
- package/dist/external-tools/from-download.js +107 -67
- package/dist/external-tools/janus/asset-names.js +44 -51
- package/dist/external-tools/janus/from-download.js +45 -70
- package/dist/external-tools/janus/from-path.js +19 -37
- package/dist/external-tools/janus/from-vfs.js +22 -43
- package/dist/external-tools/janus/resolve.js +45 -63
- package/dist/external-tools/janus/types.js +1 -17
- package/dist/external-tools/jre/asset-names.js +109 -82
- package/dist/external-tools/jre/detect-platform-arch.js +25 -49
- package/dist/external-tools/jre/from-download.js +71 -67
- package/dist/external-tools/jre/from-java-home.js +27 -54
- package/dist/external-tools/jre/from-path.js +27 -49
- package/dist/external-tools/jre/from-vfs.js +39 -60
- package/dist/external-tools/jre/resolve.js +55 -68
- package/dist/external-tools/jre/types.js +1 -17
- package/dist/external-tools/manifest.js +130 -150
- package/dist/external-tools/opengrep/asset-names.js +60 -72
- package/dist/external-tools/opengrep/from-download.js +58 -80
- package/dist/external-tools/opengrep/from-path.js +19 -37
- package/dist/external-tools/opengrep/from-vfs.js +23 -43
- package/dist/external-tools/opengrep/resolve.js +43 -63
- package/dist/external-tools/opengrep/types.js +1 -17
- package/dist/external-tools/sbt/asset-names.js +21 -30
- package/dist/external-tools/sbt/from-download.js +50 -61
- package/dist/external-tools/sbt/from-path.js +23 -38
- package/dist/external-tools/sbt/from-vfs.js +30 -44
- package/dist/external-tools/sbt/resolve.js +45 -63
- package/dist/external-tools/sbt/types.js +1 -17
- package/dist/external-tools/synp/asset-names.js +11 -29
- package/dist/external-tools/synp/from-download.js +24 -41
- package/dist/external-tools/synp/from-path.js +19 -37
- package/dist/external-tools/synp/from-vfs.js +22 -43
- package/dist/external-tools/synp/resolve.js +43 -62
- package/dist/external-tools/synp/types.js +1 -17
- package/dist/external-tools/trivy/asset-names.js +51 -62
- package/dist/external-tools/trivy/from-download.js +42 -64
- package/dist/external-tools/trivy/from-path.js +19 -37
- package/dist/external-tools/trivy/from-vfs.js +22 -43
- package/dist/external-tools/trivy/resolve.js +43 -63
- package/dist/external-tools/trivy/types.js +1 -17
- package/dist/external-tools/trufflehog/asset-names.js +54 -66
- package/dist/external-tools/trufflehog/from-download.js +44 -62
- package/dist/external-tools/trufflehog/from-path.js +21 -37
- package/dist/external-tools/trufflehog/from-vfs.js +26 -43
- package/dist/external-tools/trufflehog/resolve.js +43 -63
- package/dist/external-tools/trufflehog/types.js +1 -17
- package/dist/external-tools/uv/asset-names.js +64 -74
- package/dist/external-tools/uv/from-download.js +44 -65
- package/dist/external-tools/uv/from-path.js +19 -37
- package/dist/external-tools/uv/from-vfs.js +22 -43
- package/dist/external-tools/uv/resolve.js +42 -63
- package/dist/external-tools/uv/types.js +1 -17
- package/dist/fs/_internal.js +40 -42
- package/dist/fs/access.js +57 -54
- package/dist/fs/encoding.js +80 -97
- package/dist/fs/find-up.js +126 -125
- package/dist/fs/inspect.js +168 -99
- package/dist/fs/path-cache.js +31 -32
- package/dist/fs/read-dir.js +102 -79
- package/dist/fs/read-file.js +177 -118
- package/dist/fs/read-json-cache.js +150 -134
- package/dist/fs/read-json.js +172 -187
- package/dist/fs/resolve-module.js +35 -58
- package/dist/fs/safe.js +278 -169
- package/dist/fs/types.js +1 -17
- package/dist/fs/unique.js +52 -48
- package/dist/fs/validate.js +56 -40
- package/dist/fs/write-json.js +109 -75
- package/dist/git/_internal.js +251 -216
- package/dist/git/changed.js +191 -74
- package/dist/git/repo.js +118 -104
- package/dist/git/staged.js +172 -62
- package/dist/git/types.js +1 -17
- package/dist/git/unstaged.js +175 -62
- package/dist/github/constants.js +25 -33
- package/dist/github/errors.js +46 -38
- package/dist/github/fetch.js +137 -82
- package/dist/github/ghsa.js +217 -151
- package/dist/github/refs-cache.js +54 -43
- package/dist/github/refs-graphql.js +97 -89
- package/dist/github/refs-rest.js +70 -101
- package/dist/github/refs.js +105 -64
- package/dist/github/token.js +96 -48
- package/dist/github/types.js +1 -17
- package/dist/globs/_internal.js +73 -82
- package/dist/globs/defaults.js +40 -59
- package/dist/globs/match.js +93 -77
- package/dist/globs/matcher.js +104 -92
- package/dist/globs/stream.js +43 -55
- package/dist/globs/types.js +1 -17
- package/dist/http-request/_internal.js +11 -38
- package/dist/http-request/browser-fetch.js +19 -29
- package/dist/http-request/browser.js +188 -206
- package/dist/http-request/checksums.js +101 -65
- package/dist/http-request/download-types.js +1 -17
- package/dist/http-request/download.js +195 -196
- package/dist/http-request/errors.js +39 -47
- package/dist/http-request/headers.js +95 -80
- package/dist/http-request/http-request.js +10 -35
- package/dist/http-request/node.js +71 -97
- package/dist/http-request/request-attempt.js +232 -285
- package/dist/http-request/request-types.js +1 -17
- package/dist/http-request/request.js +106 -108
- package/dist/http-request/response-reader.js +47 -51
- package/dist/http-request/response-types.js +22 -38
- package/dist/http-request/user-agent.js +73 -55
- package/dist/integrity.js +105 -106
- package/dist/ipc/_internal.js +34 -48
- package/dist/ipc/directory.js +55 -63
- package/dist/ipc/paths.js +52 -45
- package/dist/ipc/types.js +1 -17
- package/dist/ipc/write.js +81 -74
- package/dist/ipc-cli/get.js +29 -56
- package/dist/ipc-cli/types.js +1 -17
- package/dist/json/edit.js +182 -242
- package/dist/json/format.js +202 -103
- package/dist/json/parse.js +206 -109
- package/dist/json/types.js +1 -17
- package/dist/links/create.js +93 -60
- package/dist/links/types.js +1 -17
- package/dist/logger/_internal.js +109 -73
- package/dist/logger/browser.js +45 -56
- package/dist/logger/colors.js +31 -49
- package/dist/logger/console.js +89 -112
- package/dist/logger/default.js +19 -33
- package/dist/logger/logger.js +5 -29
- package/dist/logger/node.js +793 -854
- package/dist/logger/symbols-builder.js +54 -56
- package/dist/logger/symbols.js +135 -118
- package/dist/logger/types.js +1 -17
- package/dist/memo/_internal.js +39 -49
- package/dist/memo/async.js +133 -117
- package/dist/memo/clear.js +25 -34
- package/dist/memo/decorator.js +43 -37
- package/dist/memo/memoize.js +97 -88
- package/dist/memo/once.js +42 -41
- package/dist/memo/types.js +1 -17
- package/dist/memo/weak.js +45 -41
- package/dist/node/async-hooks.js +9 -30
- package/dist/node/child-process.js +9 -30
- package/dist/node/crypto.js +9 -30
- package/dist/node/events.js +9 -30
- package/dist/node/fs-promises.js +9 -30
- package/dist/node/fs.js +9 -30
- package/dist/node/http.js +9 -30
- package/dist/node/https.js +9 -30
- package/dist/node/module.js +20 -34
- package/dist/node/os.js +9 -30
- package/dist/node/path.js +9 -30
- package/dist/node/timers-promises.js +9 -30
- package/dist/node/url.js +9 -30
- package/dist/node/util.js +9 -30
- package/dist/objects/getters.js +185 -126
- package/dist/objects/inspect.js +85 -52
- package/dist/objects/mutate.js +96 -76
- package/dist/objects/predicates.js +112 -59
- package/dist/objects/sort.js +120 -76
- package/dist/objects/types.js +1 -17
- package/dist/packages/edit-class.js +198 -265
- package/dist/packages/edit.js +79 -86
- package/dist/packages/exports.js +146 -157
- package/dist/packages/isolation.js +159 -209
- package/dist/packages/licenses.js +207 -189
- package/dist/packages/manifest.js +134 -172
- package/dist/packages/normalize.js +91 -102
- package/dist/packages/operations.d.ts +2 -0
- package/dist/packages/operations.js +283 -254
- package/dist/packages/provenance.js +195 -245
- package/dist/packages/specs.js +94 -84
- package/dist/packages/types.js +1 -17
- package/dist/packages/validation.js +49 -50
- package/dist/paths/_internal.js +82 -86
- package/dist/paths/conversion.js +112 -65
- package/dist/paths/dirnames.js +17 -42
- package/dist/paths/exts.js +23 -54
- package/dist/paths/filenames.js +21 -50
- package/dist/paths/globs.js +15 -38
- package/dist/paths/normalize.js +215 -236
- package/dist/paths/packages.js +34 -49
- package/dist/paths/predicates.js +184 -106
- package/dist/paths/resolve.js +146 -128
- package/dist/paths/rewire.js +108 -72
- package/dist/paths/socket.js +252 -132
- package/dist/paths/walk.js +55 -60
- package/dist/perf/_internal.js +10 -28
- package/dist/perf/enabled.js +21 -30
- package/dist/perf/metrics.js +81 -67
- package/dist/perf/report.js +79 -80
- package/dist/perf/timer.js +180 -126
- package/dist/perf/types.js +1 -17
- package/dist/pkg-ext/data.js +29 -82
- package/dist/pkg-ext/types.js +1 -17
- package/dist/primordials/array.js +120 -198
- package/dist/primordials/buffer.js +28 -51
- package/dist/primordials/date.js +26 -51
- package/dist/primordials/error.js +33 -59
- package/dist/primordials/function.js +21 -41
- package/dist/primordials/globals.js +25 -48
- package/dist/primordials/json.js +14 -30
- package/dist/primordials/map-set.js +88 -152
- package/dist/primordials/math.js +59 -116
- package/dist/primordials/number.js +41 -76
- package/dist/primordials/object.js +56 -116
- package/dist/primordials/promise.js +28 -52
- package/dist/primordials/reflect.js +24 -52
- package/dist/primordials/regexp.js +25 -47
- package/dist/primordials/string.js +114 -167
- package/dist/primordials/symbol.js +40 -72
- package/dist/primordials/uncurry.js +38 -55
- package/dist/primordials/url.js +27 -66
- package/dist/process/_internal.js +7 -32
- package/dist/process/abort.js +29 -35
- package/dist/process/lock-instance.js +26 -30
- package/dist/process/lock-manager.js +279 -307
- package/dist/process/lock-types.js +1 -17
- package/dist/process/spawn/_internal.js +43 -55
- package/dist/process/spawn/child.js +172 -211
- package/dist/process/spawn/errors.js +116 -113
- package/dist/process/spawn/stdio.js +51 -35
- package/dist/process/spawn/types.js +1 -17
- package/dist/process/transient.js +49 -66
- package/dist/promises/_internal.js +31 -34
- package/dist/promises/iterate.js +238 -102
- package/dist/promises/options.js +123 -101
- package/dist/promises/queue.js +115 -136
- package/dist/promises/resolvers.js +77 -46
- package/dist/promises/retry.js +156 -101
- package/dist/promises/types.js +1 -17
- package/dist/regexps/escape.js +32 -30
- package/dist/regexps/hex.js +16 -33
- package/dist/regexps/spec.js +53 -81
- package/dist/releases/github-archives.js +127 -118
- package/dist/releases/github-asset-url.js +162 -146
- package/dist/releases/github-assets.js +37 -49
- package/dist/releases/github-auth.js +32 -48
- package/dist/releases/github-downloads.js +118 -138
- package/dist/releases/github-listing.js +175 -145
- package/dist/releases/github-retry-config.js +41 -47
- package/dist/releases/github-types.js +1 -17
- package/dist/releases/socket-btm.js +273 -192
- package/dist/schema/parse.js +35 -36
- package/dist/schema/types.js +1 -17
- package/dist/schema/validate.js +118 -99
- package/dist/sea/detect.js +57 -52
- package/dist/secrets/_internal.js +86 -67
- package/dist/secrets/find.js +96 -77
- package/dist/secrets/keychain.js +315 -309
- package/dist/secrets/linux.js +133 -135
- package/dist/secrets/macos.js +151 -147
- package/dist/secrets/rc.js +182 -181
- package/dist/secrets/socket-api-token.js +28 -43
- package/dist/secrets/types.js +1 -17
- package/dist/secrets/windows.js +184 -242
- package/dist/shadow/skip.js +51 -70
- package/dist/shadow/types.js +1 -17
- package/dist/shell/parse.d.ts +26 -0
- package/dist/shell/parse.js +35 -0
- package/dist/shell/quote.d.ts +19 -0
- package/dist/shell/quote.js +30 -0
- package/dist/smol/detect.js +67 -43
- package/dist/smol/http.js +33 -37
- package/dist/smol/https.js +31 -37
- package/dist/smol/manifest.js +33 -37
- package/dist/smol/path.js +33 -37
- package/dist/smol/primordial.js +35 -37
- package/dist/smol/purl.js +34 -37
- package/dist/smol/versions.js +31 -37
- package/dist/smol/vfs.js +46 -38
- package/dist/sorts/_internal.js +14 -40
- package/dist/sorts/natural.js +57 -64
- package/dist/sorts/semver.js +33 -43
- package/dist/sorts/strings.js +24 -30
- package/dist/sorts/types.js +1 -17
- package/dist/spinner/default.js +72 -63
- package/dist/spinner/format.js +86 -71
- package/dist/spinner/spinner.js +749 -797
- package/dist/spinner/types.js +1 -17
- package/dist/spinner/with.js +193 -137
- package/dist/ssri/convert.js +64 -47
- package/dist/ssri/parse.js +38 -37
- package/dist/ssri/validate.js +51 -34
- package/dist/stdio/_internal.js +50 -46
- package/dist/stdio/clear.js +208 -86
- package/dist/stdio/divider.js +170 -97
- package/dist/stdio/footer.js +116 -110
- package/dist/stdio/header.js +117 -90
- package/dist/stdio/progress.js +189 -218
- package/dist/stdio/prompts.js +244 -168
- package/dist/stdio/stderr.js +173 -78
- package/dist/stdio/stdout.js +177 -94
- package/dist/streams/parallel.js +58 -50
- package/dist/streams/transform.js +36 -45
- package/dist/strings/format.js +145 -63
- package/dist/strings/predicates.js +56 -34
- package/dist/strings/search.js +52 -42
- package/dist/strings/transform.js +113 -72
- package/dist/strings/types.js +1 -17
- package/dist/strings/width.js +89 -82
- package/dist/tables/bordered.js +81 -81
- package/dist/tables/padding.js +36 -46
- package/dist/tables/simple.js +62 -70
- package/dist/tables/types.js +1 -17
- package/dist/temporal/instant.js +72 -81
- package/dist/temporal/now.js +40 -31
- package/dist/temporal/slots.js +42 -36
- package/dist/temporal/system.js +36 -36
- package/dist/temporal/temporal.js +11 -41
- package/dist/themes/context.js +131 -69
- package/dist/themes/resolve.js +207 -132
- package/dist/themes/themes.js +225 -194
- package/dist/themes/types.js +1 -17
- package/dist/url/parse.js +48 -51
- package/dist/url/predicates.js +24 -31
- package/dist/url/search-params.js +133 -101
- package/dist/url/types.js +1 -17
- package/dist/versions/_internal.js +31 -33
- package/dist/versions/compare.js +80 -58
- package/dist/versions/modify.js +41 -39
- package/dist/versions/parse.js +88 -64
- package/dist/versions/range.js +58 -41
- package/dist/versions/types.js +1 -17
- package/dist/words/article.js +22 -30
- package/dist/words/capitalize.js +25 -34
- package/dist/words/pluralize.js +23 -31
- package/dist/words/types.js +1 -17
- package/package.json +17 -5
|
@@ -1,224 +1,206 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/* Socket Lib - Built with
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
2
|
+
/* Socket Lib - Built with rolldown */
|
|
3
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
|
+
const require_http_request_browser_fetch = require('./browser-fetch.js');
|
|
5
|
+
|
|
6
|
+
//#region src/http-request/browser.ts
|
|
7
|
+
/**
|
|
8
|
+
* @file Browser-safe HTTP request layer — mirrors the public surface of
|
|
9
|
+
* `@socketsecurity/lib/http-request` (`httpJson`, `httpText`, `httpRequest`,
|
|
10
|
+
* `HttpResponseError`) but uses the browser's `fetch` API instead of Node's
|
|
11
|
+
* `node:https`. Designed for Chrome MV3 service workers, content scripts,
|
|
12
|
+
* popups, and any other browser context that doesn't have `node:http` /
|
|
13
|
+
* `node:https` / `node:stream`. Consumers import from
|
|
14
|
+
* `@socketsecurity/lib/http-request/browser` directly, OR from
|
|
15
|
+
* `@socketsecurity/lib/http-request` inside a bundler that resolves the
|
|
16
|
+
* `browser` package.json conditional (rolldown, vite, esbuild) — the bundler
|
|
17
|
+
* picks this entry automatically. API parity with the Node side is the goal —
|
|
18
|
+
* same function names, same option shapes (where browsers can support them),
|
|
19
|
+
* same error shape. Caveats:
|
|
20
|
+
*
|
|
21
|
+
* - `HttpResponse.body` is `Uint8Array` here, vs Node's `Buffer`. Most callers
|
|
22
|
+
* use `arrayBuffer()` / `text()` / `json()` and don't care.
|
|
23
|
+
* - `HttpResponse.headers` is `Record<string, string>` here, vs Node's
|
|
24
|
+
* `IncomingHttpHeaders` (which has array-valued headers like `set-cookie`).
|
|
25
|
+
* Browser `fetch()` flattens repeated headers per spec.
|
|
26
|
+
* - Hooks (`onRequest` / `onResponse`) are not yet supported in the browser
|
|
27
|
+
* path. Add when needed.
|
|
28
|
+
*/
|
|
29
|
+
/**
|
|
30
|
+
* Browser-side HTTP error. Mirrors the Node-side `HttpResponseError` shape
|
|
31
|
+
* (same `.name`, same `.response.status/statusText` access pattern, same
|
|
32
|
+
* `instanceof` semantics) but constructs from a `BrowserHttpResponse` instead
|
|
33
|
+
* of a Node `HttpResponse`.
|
|
34
|
+
*/
|
|
35
|
+
var HttpResponseError = class extends Error {
|
|
36
|
+
response;
|
|
37
|
+
constructor(response, message) {
|
|
38
|
+
const statusCode = response.status ?? "unknown";
|
|
39
|
+
const statusMessage = response.statusText || "No status message";
|
|
40
|
+
super(message ?? `HTTP ${statusCode}: ${statusMessage}`);
|
|
41
|
+
this.name = "HttpResponseError";
|
|
42
|
+
this.response = response;
|
|
43
|
+
}
|
|
19
44
|
};
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
attempt: () => attempt,
|
|
25
|
-
combineSignals: () => combineSignals,
|
|
26
|
-
decodeText: () => decodeText,
|
|
27
|
-
headersToRecord: () => headersToRecord,
|
|
28
|
-
httpJson: () => httpJson,
|
|
29
|
-
httpRequest: () => httpRequest,
|
|
30
|
-
httpText: () => httpText,
|
|
31
|
-
sleep: () => sleep
|
|
32
|
-
});
|
|
33
|
-
module.exports = __toCommonJS(browser_exports);
|
|
34
|
-
var import_browser_fetch = require("./browser-fetch");
|
|
35
|
-
class HttpResponseError extends Error {
|
|
36
|
-
response;
|
|
37
|
-
constructor(response, message) {
|
|
38
|
-
const statusCode = response.status ?? "unknown";
|
|
39
|
-
const statusMessage = response.statusText || "No status message";
|
|
40
|
-
super(message ?? `HTTP ${statusCode}: ${statusMessage}`);
|
|
41
|
-
this.name = "HttpResponseError";
|
|
42
|
-
this.response = response;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
+
/**
|
|
46
|
+
* Combine an external `signal` with an internal `timeout`-driven
|
|
47
|
+
* AbortController so either can cancel the in-flight fetch.
|
|
48
|
+
*/
|
|
45
49
|
function combineSignals(external, timeoutMs) {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
if (external && externalListener) {
|
|
66
|
-
external.removeEventListener("abort", externalListener);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
};
|
|
50
|
+
if (!timeoutMs) return {
|
|
51
|
+
signal: external,
|
|
52
|
+
cleanup: () => {}
|
|
53
|
+
};
|
|
54
|
+
const controller = new AbortController();
|
|
55
|
+
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
56
|
+
let externalListener;
|
|
57
|
+
if (external) if (external.aborted) controller.abort();
|
|
58
|
+
else {
|
|
59
|
+
externalListener = () => controller.abort();
|
|
60
|
+
external.addEventListener("abort", externalListener);
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
signal: controller.signal,
|
|
64
|
+
cleanup: () => {
|
|
65
|
+
clearTimeout(timer);
|
|
66
|
+
if (external && externalListener) external.removeEventListener("abort", externalListener);
|
|
67
|
+
}
|
|
68
|
+
};
|
|
70
69
|
}
|
|
71
70
|
async function attempt(url, options) {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
return decodeText(body);
|
|
129
|
-
},
|
|
130
|
-
json() {
|
|
131
|
-
return JSON.parse(decodeText(body));
|
|
132
|
-
}
|
|
133
|
-
};
|
|
134
|
-
} catch (err) {
|
|
135
|
-
if (options.hooks?.onResponse) {
|
|
136
|
-
options.hooks.onResponse({
|
|
137
|
-
method,
|
|
138
|
-
url,
|
|
139
|
-
duration: Date.now() - startedAt,
|
|
140
|
-
error: err instanceof Error ? err : new Error(String(err))
|
|
141
|
-
});
|
|
142
|
-
}
|
|
143
|
-
throw err;
|
|
144
|
-
} finally {
|
|
145
|
-
cleanup();
|
|
146
|
-
}
|
|
71
|
+
const method = options.method ?? "GET";
|
|
72
|
+
const init = { method };
|
|
73
|
+
if (options.headers) init.headers = options.headers;
|
|
74
|
+
if (options.body !== void 0) init.body = options.body;
|
|
75
|
+
if (options.followRedirects === false) init.redirect = "manual";
|
|
76
|
+
const { signal, cleanup } = combineSignals(options.signal, options.timeout);
|
|
77
|
+
if (signal) init.signal = signal;
|
|
78
|
+
const startedAt = Date.now();
|
|
79
|
+
if (options.hooks?.onRequest) options.hooks.onRequest({
|
|
80
|
+
method,
|
|
81
|
+
url,
|
|
82
|
+
headers: options.headers,
|
|
83
|
+
timeout: options.timeout
|
|
84
|
+
});
|
|
85
|
+
try {
|
|
86
|
+
const response = await require_http_request_browser_fetch.doFetch(url, init);
|
|
87
|
+
const buffer = await response.arrayBuffer();
|
|
88
|
+
if (options.maxResponseSize !== void 0 && buffer.byteLength > options.maxResponseSize) throw new Error(`Response body (${buffer.byteLength} bytes) exceeds maxResponseSize (${options.maxResponseSize})`);
|
|
89
|
+
const body = new Uint8Array(buffer);
|
|
90
|
+
const headers = headersToRecord(response.headers);
|
|
91
|
+
if (options.hooks?.onResponse) options.hooks.onResponse({
|
|
92
|
+
method,
|
|
93
|
+
url,
|
|
94
|
+
duration: Date.now() - startedAt,
|
|
95
|
+
status: response.status,
|
|
96
|
+
statusText: response.statusText,
|
|
97
|
+
headers
|
|
98
|
+
});
|
|
99
|
+
return {
|
|
100
|
+
body,
|
|
101
|
+
headers,
|
|
102
|
+
status: response.status,
|
|
103
|
+
statusText: response.statusText,
|
|
104
|
+
ok: response.ok,
|
|
105
|
+
url: response.url,
|
|
106
|
+
arrayBuffer() {
|
|
107
|
+
return buffer;
|
|
108
|
+
},
|
|
109
|
+
text() {
|
|
110
|
+
return decodeText(body);
|
|
111
|
+
},
|
|
112
|
+
json() {
|
|
113
|
+
return JSON.parse(decodeText(body));
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
} catch (err) {
|
|
117
|
+
if (options.hooks?.onResponse) options.hooks.onResponse({
|
|
118
|
+
method,
|
|
119
|
+
url,
|
|
120
|
+
duration: Date.now() - startedAt,
|
|
121
|
+
error: err instanceof Error ? err : new Error(String(err))
|
|
122
|
+
});
|
|
123
|
+
throw err;
|
|
124
|
+
} finally {
|
|
125
|
+
cleanup();
|
|
126
|
+
}
|
|
147
127
|
}
|
|
148
128
|
function decodeText(bytes) {
|
|
149
|
-
|
|
129
|
+
return new TextDecoder("utf-8").decode(bytes);
|
|
150
130
|
}
|
|
151
131
|
function headersToRecord(headers) {
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
132
|
+
const out = {};
|
|
133
|
+
headers.forEach((value, key) => {
|
|
134
|
+
out[key.toLowerCase()] = value;
|
|
135
|
+
});
|
|
136
|
+
return out;
|
|
157
137
|
}
|
|
138
|
+
/**
|
|
139
|
+
* GET / POST a JSON endpoint. Automatically sets `Accept: application/json` and
|
|
140
|
+
* `Content-Type: application/json` (when a body is present). Throws
|
|
141
|
+
* `HttpResponseError` on non-2xx.
|
|
142
|
+
*/
|
|
158
143
|
async function httpJson(url, options) {
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
throwOnError: true
|
|
171
|
-
});
|
|
172
|
-
return response.json();
|
|
144
|
+
const opts = options ?? {};
|
|
145
|
+
const headers = {
|
|
146
|
+
Accept: "application/json",
|
|
147
|
+
...opts.headers ?? {}
|
|
148
|
+
};
|
|
149
|
+
if (opts.body !== void 0 && !("Content-Type" in headers)) headers["Content-Type"] = "application/json";
|
|
150
|
+
return (await httpRequest(url, {
|
|
151
|
+
...opts,
|
|
152
|
+
headers,
|
|
153
|
+
throwOnError: true
|
|
154
|
+
})).json();
|
|
173
155
|
}
|
|
156
|
+
/**
|
|
157
|
+
* Lower-level HTTP request. Use `httpJson` / `httpText` for the common cases.
|
|
158
|
+
* Returns the response unconditionally — callers inspect `.ok` or pass
|
|
159
|
+
* `throwOnError: true` to get a thrown `HttpResponseError` on non-2xx.
|
|
160
|
+
*/
|
|
174
161
|
async function httpRequest(url, options) {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
await sleep(baseDelay * Math.pow(2, i));
|
|
197
|
-
continue;
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
throw lastError instanceof Error ? lastError : new Error(`HTTP request to ${url} failed`);
|
|
162
|
+
const opts = options ?? {};
|
|
163
|
+
const maxAttempts = (opts.retries ?? 0) + 1;
|
|
164
|
+
const baseDelay = opts.retryDelay ?? 250;
|
|
165
|
+
let lastError;
|
|
166
|
+
for (let i = 0; i < maxAttempts; i++) try {
|
|
167
|
+
const response = await attempt(url, opts);
|
|
168
|
+
if (response.status >= 500 && i + 1 < maxAttempts) {
|
|
169
|
+
await sleep(baseDelay * Math.pow(2, i));
|
|
170
|
+
continue;
|
|
171
|
+
}
|
|
172
|
+
if (opts.throwOnError && !response.ok) throw new HttpResponseError(response);
|
|
173
|
+
return response;
|
|
174
|
+
} catch (err) {
|
|
175
|
+
lastError = err;
|
|
176
|
+
if (err instanceof HttpResponseError) throw err;
|
|
177
|
+
if (i + 1 < maxAttempts) {
|
|
178
|
+
await sleep(baseDelay * Math.pow(2, i));
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
throw lastError instanceof Error ? lastError : /* @__PURE__ */ new Error(`HTTP request to ${url} failed`);
|
|
202
183
|
}
|
|
184
|
+
/**
|
|
185
|
+
* GET / POST a text endpoint. Throws `HttpResponseError` on non-2xx.
|
|
186
|
+
*/
|
|
203
187
|
async function httpText(url, options) {
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
return response.text();
|
|
188
|
+
return (await httpRequest(url, {
|
|
189
|
+
...options ?? {},
|
|
190
|
+
throwOnError: true
|
|
191
|
+
})).text();
|
|
209
192
|
}
|
|
210
193
|
function sleep(ms) {
|
|
211
|
-
|
|
194
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
212
195
|
}
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
});
|
|
196
|
+
|
|
197
|
+
//#endregion
|
|
198
|
+
exports.HttpResponseError = HttpResponseError;
|
|
199
|
+
exports.attempt = attempt;
|
|
200
|
+
exports.combineSignals = combineSignals;
|
|
201
|
+
exports.decodeText = decodeText;
|
|
202
|
+
exports.headersToRecord = headersToRecord;
|
|
203
|
+
exports.httpJson = httpJson;
|
|
204
|
+
exports.httpRequest = httpRequest;
|
|
205
|
+
exports.httpText = httpText;
|
|
206
|
+
exports.sleep = sleep;
|
|
@@ -1,72 +1,108 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/* Socket Lib - Built with
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
__export(checksums_exports, {
|
|
23
|
-
fetchChecksums: () => fetchChecksums,
|
|
24
|
-
parseChecksums: () => parseChecksums
|
|
25
|
-
});
|
|
26
|
-
module.exports = __toCommonJS(checksums_exports);
|
|
27
|
-
var import_error = require("../primordials/error");
|
|
28
|
-
var import_string = require("../primordials/string");
|
|
29
|
-
var import_request = require("./request");
|
|
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_primordials_string = require('../primordials/string.js');
|
|
6
|
+
const require_http_request_request = require('./request.js');
|
|
7
|
+
|
|
8
|
+
//#region src/http-request/checksums.ts
|
|
9
|
+
/**
|
|
10
|
+
* @file Checksum file fetching + parsing for download verification.
|
|
11
|
+
* `parseChecksums` understands the three common file shapes:
|
|
12
|
+
*
|
|
13
|
+
* - BSD style: `SHA256 (filename) = hash`
|
|
14
|
+
* - GNU style: `hash filename` (two spaces)
|
|
15
|
+
* - Simple: `hash filename` (single space) Comment lines (`#…`) and blank lines
|
|
16
|
+
* are skipped. Hashes are lowercased. `fetchChecksums` is the URL helper —
|
|
17
|
+
* it fetches a checksums file via `httpRequest` and runs the body through
|
|
18
|
+
* `parseChecksums`. The pair lets `httpDownload({ sha256:
|
|
19
|
+
* checksums['file.zip'] })` keep the verification logic close to the
|
|
20
|
+
* manifest source.
|
|
21
|
+
*/
|
|
30
22
|
const CHECKSUM_BSD_RE = /^SHA256\s+\((.+)\)\s+=\s+([a-fA-F0-9]{64})$/;
|
|
31
23
|
const CHECKSUM_GNU_RE = /^([a-fA-F0-9]{64})\s+(.+)$/;
|
|
24
|
+
/**
|
|
25
|
+
* Fetch and parse a checksums file from a URL.
|
|
26
|
+
*
|
|
27
|
+
* This is useful for verifying downloads from GitHub releases which typically
|
|
28
|
+
* publish a checksums.txt file alongside release assets.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ;```ts
|
|
32
|
+
* // Fetch checksums from GitHub release
|
|
33
|
+
* const checksums = await fetchChecksums(
|
|
34
|
+
* 'https://github.com/org/repo/releases/download/v1.0.0/checksums.txt',
|
|
35
|
+
* )
|
|
36
|
+
*
|
|
37
|
+
* // Use with httpDownload
|
|
38
|
+
* await httpDownload(
|
|
39
|
+
* 'https://github.com/org/repo/releases/download/v1.0.0/tool_linux.tar.gz',
|
|
40
|
+
* '/tmp/tool.tar.gz',
|
|
41
|
+
* { sha256: checksums['tool_linux.tar.gz'] },
|
|
42
|
+
* )
|
|
43
|
+
* ```
|
|
44
|
+
*
|
|
45
|
+
* @param url - URL to the checksums file.
|
|
46
|
+
* @param options - Request options.
|
|
47
|
+
*
|
|
48
|
+
* @returns Map of filenames to lowercase SHA256 hashes
|
|
49
|
+
*
|
|
50
|
+
* @throws {Error} When the checksums file cannot be fetched
|
|
51
|
+
*/
|
|
32
52
|
async function fetchChecksums(url, options) {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
`Failed to fetch checksums from ${url}: ${response.status} ${response.statusText}`
|
|
45
|
-
);
|
|
46
|
-
}
|
|
47
|
-
return parseChecksums(response.body.toString("utf8"));
|
|
53
|
+
const { ca, headers = {}, timeout = 3e4 } = {
|
|
54
|
+
__proto__: null,
|
|
55
|
+
...options
|
|
56
|
+
};
|
|
57
|
+
const response = await require_http_request_request.httpRequest(url, {
|
|
58
|
+
ca,
|
|
59
|
+
headers,
|
|
60
|
+
timeout
|
|
61
|
+
});
|
|
62
|
+
if (!response.ok) throw new require_primordials_error.ErrorCtor(`Failed to fetch checksums from ${url}: ${response.status} ${response.statusText}`);
|
|
63
|
+
return parseChecksums(response.body.toString("utf8"));
|
|
48
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* Parse a checksums file text into a filename-to-hash map.
|
|
67
|
+
*
|
|
68
|
+
* Supports standard checksums file formats: - BSD style: "SHA256 (filename) =
|
|
69
|
+
* hash" - GNU style: "hash filename" (two spaces) - Simple style: "hash
|
|
70
|
+
* filename" (single space)
|
|
71
|
+
*
|
|
72
|
+
* Lines starting with '#' are treated as comments and ignored. Empty lines are
|
|
73
|
+
* ignored.
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```ts
|
|
77
|
+
* const text = `
|
|
78
|
+
* # SHA256 checksums
|
|
79
|
+
* e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 file.zip
|
|
80
|
+
* abc123def456... other.tar.gz
|
|
81
|
+
* `
|
|
82
|
+
* const checksums = parseChecksums(text)
|
|
83
|
+
* console.log(checksums['file.zip']) // 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'
|
|
84
|
+
* ```
|
|
85
|
+
*
|
|
86
|
+
* @param text - Raw text content of a checksums file.
|
|
87
|
+
*
|
|
88
|
+
* @returns Map of filenames to lowercase SHA256 hashes
|
|
89
|
+
*/
|
|
49
90
|
function parseChecksums(text) {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
checksums[gnuMatch[2]] = gnuMatch[1].toLowerCase();
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
return checksums;
|
|
91
|
+
const checksums = { __proto__: null };
|
|
92
|
+
for (const line of require_primordials_string.StringPrototypeSplit(text, "\n")) {
|
|
93
|
+
const trimmed = line.trim();
|
|
94
|
+
if (!trimmed || require_primordials_string.StringPrototypeStartsWith(trimmed, "#")) continue;
|
|
95
|
+
const bsdMatch = CHECKSUM_BSD_RE.exec(trimmed);
|
|
96
|
+
if (bsdMatch) {
|
|
97
|
+
checksums[bsdMatch[1]] = bsdMatch[2].toLowerCase();
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
const gnuMatch = CHECKSUM_GNU_RE.exec(trimmed);
|
|
101
|
+
if (gnuMatch) checksums[gnuMatch[2]] = gnuMatch[1].toLowerCase();
|
|
102
|
+
}
|
|
103
|
+
return checksums;
|
|
67
104
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
});
|
|
105
|
+
|
|
106
|
+
//#endregion
|
|
107
|
+
exports.fetchChecksums = fetchChecksums;
|
|
108
|
+
exports.parseChecksums = parseChecksums;
|
|
@@ -1,18 +1,2 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/* Socket Lib - Built with
|
|
3
|
-
"use strict";
|
|
4
|
-
var __defProp = Object.defineProperty;
|
|
5
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __copyProps = (to, from, except, desc) => {
|
|
9
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
10
|
-
for (let key of __getOwnPropNames(from))
|
|
11
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
12
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
13
|
-
}
|
|
14
|
-
return to;
|
|
15
|
-
};
|
|
16
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
17
|
-
var download_types_exports = {};
|
|
18
|
-
module.exports = __toCommonJS(download_types_exports);
|
|
2
|
+
/* Socket Lib - Built with rolldown */
|