@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,111 +1,109 @@
|
|
|
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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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_math = require('../primordials/math.js');
|
|
6
|
+
const require_primordials_number = require('../primordials/number.js');
|
|
7
|
+
const require_http_request_request_attempt = require('./request-attempt.js');
|
|
8
|
+
const require_http_request_response_types = require('./response-types.js');
|
|
9
|
+
const require_http_request_response_reader = require('./response-reader.js');
|
|
10
|
+
let node_timers_promises = require("node:timers/promises");
|
|
11
|
+
|
|
12
|
+
//#region src/http-request/request.ts
|
|
13
|
+
/**
|
|
14
|
+
* @file Core HTTP/HTTPS request loop — the retry orchestrator. `httpRequest` is
|
|
15
|
+
* the main entry point: it wraps `httpRequestAttempt` with retry /
|
|
16
|
+
* exponential-backoff logic and an optional `onRetry` callback. Heavy lifting
|
|
17
|
+
* lives in sibling leaves and is re-exported here so existing
|
|
18
|
+
* `http-request/request` importers keep working unchanged:
|
|
19
|
+
*
|
|
20
|
+
* - `httpRequestAttempt` — single attempt + redirect chasing —
|
|
21
|
+
* `./request-attempt`
|
|
22
|
+
* - `readIncomingResponse` — IncomingMessage → HttpResponse —
|
|
23
|
+
* `./response-reader`
|
|
24
|
+
*/
|
|
25
|
+
/**
|
|
26
|
+
* Make an HTTP/HTTPS request with retry logic and redirect support. Provides a
|
|
27
|
+
* fetch-like API using Node.js native http/https modules.
|
|
28
|
+
*
|
|
29
|
+
* This is the main entry point for making HTTP requests. It handles retries,
|
|
30
|
+
* redirects, timeouts, and provides a fetch-compatible response interface.
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ;```ts
|
|
34
|
+
* // Simple GET request
|
|
35
|
+
* const response = await httpRequest('https://api.example.com/data')
|
|
36
|
+
* const data = response.json()
|
|
37
|
+
*
|
|
38
|
+
* // POST with JSON body
|
|
39
|
+
* const response = await httpRequest('https://api.example.com/users', {
|
|
40
|
+
* method: 'POST',
|
|
41
|
+
* headers: { 'Content-Type': 'application/json' },
|
|
42
|
+
* body: JSON.stringify({ name: 'Alice', email: 'alice@example.com' }),
|
|
43
|
+
* })
|
|
44
|
+
*
|
|
45
|
+
* // With retries and timeout
|
|
46
|
+
* const response = await httpRequest('https://api.example.com/data', {
|
|
47
|
+
* retries: 3,
|
|
48
|
+
* retryDelay: 1000,
|
|
49
|
+
* timeout: 60000,
|
|
50
|
+
* })
|
|
51
|
+
*
|
|
52
|
+
* // Don't follow redirects
|
|
53
|
+
* const response = await httpRequest('https://example.com/redirect', {
|
|
54
|
+
* followRedirects: false,
|
|
55
|
+
* })
|
|
56
|
+
* console.log(response.status) // 301, 302, etc.
|
|
57
|
+
* ```
|
|
58
|
+
*
|
|
59
|
+
* @param url - The URL to request (must start with http:// or https://)
|
|
60
|
+
* @param options - Request configuration options.
|
|
61
|
+
*
|
|
62
|
+
* @returns Promise resolving to response object with `.json()`, `.text()`, etc.
|
|
63
|
+
*
|
|
64
|
+
* @throws {Error} When all retries are exhausted, timeout occurs, or
|
|
65
|
+
* non-retryable error happens.
|
|
66
|
+
*/
|
|
36
67
|
async function httpRequest(url, options) {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
timeout
|
|
74
|
-
};
|
|
75
|
-
let lastError;
|
|
76
|
-
for (let attempt = 0; attempt <= retries; attempt++) {
|
|
77
|
-
try {
|
|
78
|
-
const response = await (0, import_request_attempt.httpRequestAttempt)(url, attemptOpts);
|
|
79
|
-
if (throwOnError && !response.ok) {
|
|
80
|
-
throw new import_response_types.HttpResponseError(response);
|
|
81
|
-
}
|
|
82
|
-
return response;
|
|
83
|
-
} catch (e) {
|
|
84
|
-
lastError = e;
|
|
85
|
-
if (attempt === retries) {
|
|
86
|
-
break;
|
|
87
|
-
}
|
|
88
|
-
if (signal?.aborted) {
|
|
89
|
-
break;
|
|
90
|
-
}
|
|
91
|
-
const delayMs = retryDelay * 2 ** attempt;
|
|
92
|
-
if (onRetry) {
|
|
93
|
-
const retryResult = onRetry(attempt + 1, e, delayMs);
|
|
94
|
-
if (retryResult === false) {
|
|
95
|
-
break;
|
|
96
|
-
}
|
|
97
|
-
const actualDelay = typeof retryResult === "number" && !(0, import_number.NumberIsNaN)(retryResult) ? (0, import_math.MathMax)(0, retryResult) : delayMs;
|
|
98
|
-
await (0, import_promises.setTimeout)(actualDelay);
|
|
99
|
-
} else {
|
|
100
|
-
await (0, import_promises.setTimeout)(delayMs);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
throw lastError || new import_error.ErrorCtor("Request failed after retries");
|
|
68
|
+
const { body, ca, followRedirects = true, headers = {}, hooks, maxRedirects = 5, maxResponseSize, method = "GET", onRetry, retries = 0, retryDelay = 1e3, signal, stream = false, throwOnError = false, timeout = 3e4 } = {
|
|
69
|
+
__proto__: null,
|
|
70
|
+
...options
|
|
71
|
+
};
|
|
72
|
+
const isStreamBody = body !== void 0 && typeof body === "object" && typeof body.pipe === "function";
|
|
73
|
+
if (isStreamBody && retries > 0) throw new require_primordials_error.ErrorCtor("Streaming body (Readable/FormData) cannot be used with retries. Streams are consumed on first attempt and cannot be replayed. Set retries: 0 or buffer the body as a string/Buffer.");
|
|
74
|
+
const attemptOpts = {
|
|
75
|
+
body,
|
|
76
|
+
ca,
|
|
77
|
+
followRedirects: isStreamBody ? false : followRedirects,
|
|
78
|
+
headers,
|
|
79
|
+
hooks,
|
|
80
|
+
maxRedirects,
|
|
81
|
+
maxResponseSize,
|
|
82
|
+
method,
|
|
83
|
+
signal,
|
|
84
|
+
stream,
|
|
85
|
+
timeout
|
|
86
|
+
};
|
|
87
|
+
let lastError;
|
|
88
|
+
for (let attempt = 0; attempt <= retries; attempt++) try {
|
|
89
|
+
const response = await require_http_request_request_attempt.httpRequestAttempt(url, attemptOpts);
|
|
90
|
+
if (throwOnError && !response.ok) throw new require_http_request_response_types.HttpResponseError(response);
|
|
91
|
+
return response;
|
|
92
|
+
} catch (e) {
|
|
93
|
+
lastError = e;
|
|
94
|
+
if (attempt === retries) break;
|
|
95
|
+
if (signal?.aborted) break;
|
|
96
|
+
const delayMs = retryDelay * 2 ** attempt;
|
|
97
|
+
if (onRetry) {
|
|
98
|
+
const retryResult = onRetry(attempt + 1, e, delayMs);
|
|
99
|
+
if (retryResult === false) break;
|
|
100
|
+
await (0, node_timers_promises.setTimeout)(typeof retryResult === "number" && !require_primordials_number.NumberIsNaN(retryResult) ? require_primordials_math.MathMax(0, retryResult) : delayMs);
|
|
101
|
+
} else await (0, node_timers_promises.setTimeout)(delayMs);
|
|
102
|
+
}
|
|
103
|
+
throw lastError || new require_primordials_error.ErrorCtor("Request failed after retries");
|
|
105
104
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
});
|
|
105
|
+
|
|
106
|
+
//#endregion
|
|
107
|
+
exports.httpRequest = httpRequest;
|
|
108
|
+
exports.httpRequestAttempt = require_http_request_request_attempt.httpRequestAttempt;
|
|
109
|
+
exports.readIncomingResponse = require_http_request_response_reader.readIncomingResponse;
|
|
@@ -1,54 +1,50 @@
|
|
|
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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
2
|
+
/* Socket Lib - Built with rolldown */
|
|
3
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
|
+
const require_primordials_buffer = require('../primordials/buffer.js');
|
|
5
|
+
const require_primordials_json = require('../primordials/json.js');
|
|
6
|
+
|
|
7
|
+
//#region src/http-request/response-reader.ts
|
|
8
|
+
/**
|
|
9
|
+
* @file Read a raw Node `IncomingMessage` into our `HttpResponse` shape. Split
|
|
10
|
+
* out of `http-request/request.ts` for size hygiene. Useful when a caller
|
|
11
|
+
* already has an `IncomingMessage` from code that bypasses `httpRequest()`
|
|
12
|
+
* (e.g., multipart uploads via `http.request()` directly, or third-party HTTP
|
|
13
|
+
* libraries) and wants the same fetch-like body accessors.
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Read and buffer a client-side IncomingResponse into an HttpResponse.
|
|
17
|
+
*
|
|
18
|
+
* Useful when you have a raw response from code that bypasses `httpRequest()`
|
|
19
|
+
* (e.g., multipart form-data uploads via `http.request()`, or responses from
|
|
20
|
+
* third-party HTTP libraries) and need to convert it into the standard
|
|
21
|
+
* HttpResponse interface.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ;```typescript
|
|
25
|
+
* const raw = await makeRawRequest('https://example.com/api')
|
|
26
|
+
* const response = await readIncomingResponse(raw)
|
|
27
|
+
* console.log(response.status, response.body.toString('utf8'))
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
28
30
|
async function readIncomingResponse(msg) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
rawResponse: msg,
|
|
46
|
-
status,
|
|
47
|
-
statusText,
|
|
48
|
-
text: () => body.toString("utf8")
|
|
49
|
-
};
|
|
31
|
+
const chunks = [];
|
|
32
|
+
for await (const chunk of msg) chunks.push(chunk);
|
|
33
|
+
const body = require_primordials_buffer.BufferConcat(chunks);
|
|
34
|
+
const status = msg.statusCode ?? 0;
|
|
35
|
+
const statusText = msg.statusMessage ?? "";
|
|
36
|
+
return {
|
|
37
|
+
arrayBuffer: () => body.buffer.slice(body.byteOffset, body.byteOffset + body.byteLength),
|
|
38
|
+
body,
|
|
39
|
+
headers: msg.headers,
|
|
40
|
+
json: () => require_primordials_json.JSONParse(body.toString("utf8")),
|
|
41
|
+
ok: status >= 200 && status < 300,
|
|
42
|
+
rawResponse: msg,
|
|
43
|
+
status,
|
|
44
|
+
statusText,
|
|
45
|
+
text: () => body.toString("utf8")
|
|
46
|
+
};
|
|
50
47
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
});
|
|
48
|
+
|
|
49
|
+
//#endregion
|
|
50
|
+
exports.readIncomingResponse = readIncomingResponse;
|
|
@@ -1,40 +1,24 @@
|
|
|
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
|
+
|
|
5
|
+
//#region src/http-request/response-types.ts
|
|
6
|
+
/**
|
|
7
|
+
* Error thrown when an HTTP response has a non-2xx status code and
|
|
8
|
+
* `throwOnError` is enabled. Carries the full `HttpResponse` so callers can
|
|
9
|
+
* inspect status, headers, and body.
|
|
10
|
+
*/
|
|
11
|
+
var HttpResponseError = class HttpResponseError extends Error {
|
|
12
|
+
response;
|
|
13
|
+
constructor(response, message) {
|
|
14
|
+
const statusCode = response.status ?? "unknown";
|
|
15
|
+
const statusMessage = response.statusText || "No status message";
|
|
16
|
+
super(message ?? `HTTP ${statusCode}: ${statusMessage}`);
|
|
17
|
+
this.name = "HttpResponseError";
|
|
18
|
+
this.response = response;
|
|
19
|
+
Error.captureStackTrace(this, HttpResponseError);
|
|
20
|
+
}
|
|
19
21
|
};
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
HttpResponseError: () => HttpResponseError
|
|
24
|
-
});
|
|
25
|
-
module.exports = __toCommonJS(response_types_exports);
|
|
26
|
-
class HttpResponseError extends Error {
|
|
27
|
-
response;
|
|
28
|
-
constructor(response, message) {
|
|
29
|
-
const statusCode = response.status ?? "unknown";
|
|
30
|
-
const statusMessage = response.statusText || "No status message";
|
|
31
|
-
super(message ?? `HTTP ${statusCode}: ${statusMessage}`);
|
|
32
|
-
this.name = "HttpResponseError";
|
|
33
|
-
this.response = response;
|
|
34
|
-
Error.captureStackTrace(this, HttpResponseError);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
38
|
-
0 && (module.exports = {
|
|
39
|
-
HttpResponseError
|
|
40
|
-
});
|
|
22
|
+
|
|
23
|
+
//#endregion
|
|
24
|
+
exports.HttpResponseError = HttpResponseError;
|
|
@@ -1,61 +1,79 @@
|
|
|
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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
)
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
2
|
+
/* Socket Lib - Built with rolldown */
|
|
3
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
|
+
const require_runtime = require('../_virtual/_rolldown/runtime.js');
|
|
5
|
+
const require_env_rewire = require('../env/rewire.js');
|
|
6
|
+
const require_constants_socket = require('../constants/socket.js');
|
|
7
|
+
const require_packages_operations = require('../packages/operations.js');
|
|
8
|
+
let node_process = require("node:process");
|
|
9
|
+
node_process = require_runtime.__toESM(node_process);
|
|
10
|
+
|
|
11
|
+
//#region src/http-request/user-agent.ts
|
|
12
|
+
/**
|
|
13
|
+
* @file User-Agent header generation for socket-lib's outbound HTTP requests.
|
|
14
|
+
* Three-token format aligned with socket-cli's `getCliUserAgent` and
|
|
15
|
+
* coana-tech-cli's `configureAxiosUserAgent`: `<slug>/<version>
|
|
16
|
+
* node/<node-version> <platform>/<arch>` e.g. `socketsecurity-lib/6.0.0
|
|
17
|
+
* node/v22.10.0 darwin/arm64` Downstream callers (sdxgen SEA binary, fleet
|
|
18
|
+
* CLIs, etc.) can identify themselves via the `SOCKET_CALLER_USER_AGENT` env
|
|
19
|
+
* var, which is appended to the lib's own UA so the server still sees the lib
|
|
20
|
+
* identifier. @example import { getSocketCallerUserAgent } from
|
|
21
|
+
* '@socketsecurity/lib/http-request/user-agent'
|
|
22
|
+
* request.setHeader('User-Agent', getSocketCallerUserAgent())
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* Compose a three-token User-Agent string from a `{ name, version }` pair,
|
|
26
|
+
* optionally appending a caller-supplied identifier.
|
|
27
|
+
*
|
|
28
|
+
* Used directly by socket-lib's own outbound requests (via
|
|
29
|
+
* `getSocketCallerUserAgent`) and exported for sibling packages (socket-cli,
|
|
30
|
+
* socket-sdk-js) so the fleet emits one canonical UA shape.
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ;```typescript
|
|
34
|
+
* buildUserAgent({ name: '@socketsecurity/lib', version: '6.0.0' })
|
|
35
|
+
* // 'socketsecurity-lib/6.0.0 node/v22.10.0 darwin/arm64'
|
|
36
|
+
*
|
|
37
|
+
* buildUserAgent({ name: 'sdxgen', version: '0.5.0' }, 'embedded-by-foo/1')
|
|
38
|
+
* // 'sdxgen/0.5.0 node/v22.10.0 darwin/arm64 embedded-by-foo/1'
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
42
42
|
function buildUserAgent(pkg, caller) {
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
const base = `${/* @__PURE__ */ require_packages_operations.pkgNameToSlug(pkg.name)}/${pkg.version} node/${node_process.default.version} ${node_process.default.platform}/${node_process.default.arch}`;
|
|
44
|
+
return caller ? `${base} ${caller}` : base;
|
|
45
45
|
}
|
|
46
46
|
let cachedBaseUserAgent;
|
|
47
|
+
/**
|
|
48
|
+
* User-Agent header for socket-lib's own outbound HTTP requests.
|
|
49
|
+
*
|
|
50
|
+
* Composes the lib's base UA (lazily cached — name, lib version, node version,
|
|
51
|
+
* platform, and arch are stable for the process lifetime) with the
|
|
52
|
+
* caller-supplied identifier from `SOCKET_CALLER_USER_AGENT` (re-read every
|
|
53
|
+
* call so child-process / test-stub changes propagate).
|
|
54
|
+
*
|
|
55
|
+
* Empty or whitespace-only env values are treated as unset.
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ;```typescript
|
|
59
|
+
* // No env override:
|
|
60
|
+
* getSocketCallerUserAgent()
|
|
61
|
+
* // 'socketsecurity-lib/6.0.0 node/v22.10.0 darwin/arm64'
|
|
62
|
+
*
|
|
63
|
+
* // With SOCKET_CALLER_USER_AGENT='sdxgen/0.5.0':
|
|
64
|
+
* getSocketCallerUserAgent()
|
|
65
|
+
* // 'socketsecurity-lib/6.0.0 node/v22.10.0 darwin/arm64 sdxgen/0.5.0'
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
47
68
|
function getSocketCallerUserAgent() {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
const caller = (0, import_rewire.getEnvValue)("SOCKET_CALLER_USER_AGENT");
|
|
55
|
-
return caller && caller.trim() ? `${cachedBaseUserAgent} ${caller}` : cachedBaseUserAgent;
|
|
69
|
+
if (cachedBaseUserAgent === void 0) cachedBaseUserAgent = /* @__PURE__ */ buildUserAgent({
|
|
70
|
+
name: require_constants_socket.SOCKET_LIB_NAME,
|
|
71
|
+
version: require_constants_socket.SOCKET_LIB_VERSION
|
|
72
|
+
});
|
|
73
|
+
const caller = require_env_rewire.getEnvValue("SOCKET_CALLER_USER_AGENT");
|
|
74
|
+
return caller && caller.trim() ? `${cachedBaseUserAgent} ${caller}` : cachedBaseUserAgent;
|
|
56
75
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
});
|
|
76
|
+
|
|
77
|
+
//#endregion
|
|
78
|
+
exports.buildUserAgent = buildUserAgent;
|
|
79
|
+
exports.getSocketCallerUserAgent = getSocketCallerUserAgent;
|