@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
package/dist/env/pre-commit.js
CHANGED
|
@@ -1,35 +1,33 @@
|
|
|
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
|
-
// @__NO_SIDE_EFFECTS__
|
|
2
|
+
/* Socket Lib - Built with rolldown */
|
|
3
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
|
+
const require_env_boolean = require('./boolean.js');
|
|
5
|
+
const require_env_rewire = require('./rewire.js');
|
|
6
|
+
|
|
7
|
+
//#region src/env/pre-commit.ts
|
|
8
|
+
/**
|
|
9
|
+
* @file PRE_COMMIT environment variable getter. Exports `getPreCommit()`, a
|
|
10
|
+
* boolean coercion of `PRE_COMMIT` used to detect when code is running inside
|
|
11
|
+
* a pre-commit hook.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Returns whether the PRE_COMMIT environment variable is set to a truthy value.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ;```typescript
|
|
18
|
+
* import { getPreCommit } from '@socketsecurity/lib/env/pre-commit'
|
|
19
|
+
*
|
|
20
|
+
* if (getPreCommit()) {
|
|
21
|
+
* console.log('Running in pre-commit hook')
|
|
22
|
+
* }
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @returns `true` if running in a pre-commit hook, `false` otherwise
|
|
26
|
+
*/
|
|
27
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
29
28
|
function getPreCommit() {
|
|
30
|
-
|
|
29
|
+
return /* @__PURE__ */ require_env_boolean.envAsBoolean(require_env_rewire.getEnvValue("PRE_COMMIT"));
|
|
31
30
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
});
|
|
31
|
+
|
|
32
|
+
//#endregion
|
|
33
|
+
exports.getPreCommit = getPreCommit;
|
package/dist/env/proxy.js
CHANGED
|
@@ -1,126 +1,125 @@
|
|
|
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
|
-
var import_case_insensitive = require("./case-insensitive");
|
|
30
|
-
const caseInsensitiveKeys = new import_map_set.SetCtor([
|
|
31
|
-
"APPDATA",
|
|
32
|
-
"COMSPEC",
|
|
33
|
-
"HOME",
|
|
34
|
-
"LOCALAPPDATA",
|
|
35
|
-
"PATH",
|
|
36
|
-
"PATHEXT",
|
|
37
|
-
"PROGRAMFILES",
|
|
38
|
-
"SYSTEMROOT",
|
|
39
|
-
"TEMP",
|
|
40
|
-
"TMP",
|
|
41
|
-
"USERPROFILE",
|
|
42
|
-
"WINDIR"
|
|
2
|
+
/* Socket Lib - Built with rolldown */
|
|
3
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
|
+
const require_primordials_map_set = require('../primordials/map-set.js');
|
|
5
|
+
const require_primordials_object = require('../primordials/object.js');
|
|
6
|
+
const require_primordials_globals = require('../primordials/globals.js');
|
|
7
|
+
const require_env_case_insensitive = require('./case-insensitive.js');
|
|
8
|
+
|
|
9
|
+
//#region src/env/proxy.ts
|
|
10
|
+
/**
|
|
11
|
+
* @file `createEnvProxy` — wrap `process.env` (or any env-like record) in a
|
|
12
|
+
* Proxy that adds case-insensitive lookups for known-Windows-sensitive keys
|
|
13
|
+
* (PATH, APPDATA, etc.) and an `overrides` layer. Intended for cross-platform
|
|
14
|
+
* test harnesses and child-process spawn env normalization.
|
|
15
|
+
*/
|
|
16
|
+
const caseInsensitiveKeys = new require_primordials_map_set.SetCtor([
|
|
17
|
+
"APPDATA",
|
|
18
|
+
"COMSPEC",
|
|
19
|
+
"HOME",
|
|
20
|
+
"LOCALAPPDATA",
|
|
21
|
+
"PATH",
|
|
22
|
+
"PATHEXT",
|
|
23
|
+
"PROGRAMFILES",
|
|
24
|
+
"SYSTEMROOT",
|
|
25
|
+
"TEMP",
|
|
26
|
+
"TMP",
|
|
27
|
+
"USERPROFILE",
|
|
28
|
+
"WINDIR"
|
|
43
29
|
]);
|
|
30
|
+
/**
|
|
31
|
+
* Create a case-insensitive environment variable Proxy for Windows
|
|
32
|
+
* compatibility. On Windows, environment variables are case-insensitive (PATH
|
|
33
|
+
* vs Path vs path). This Proxy provides consistent access regardless of case,
|
|
34
|
+
* with priority given to exact matches, then case-insensitive matches for known
|
|
35
|
+
* vars.
|
|
36
|
+
*
|
|
37
|
+
* **Use Cases:**
|
|
38
|
+
*
|
|
39
|
+
* - Cross-platform test environments needing consistent env var access
|
|
40
|
+
* - Windows compatibility when passing env to child processes
|
|
41
|
+
* - Merging environment overrides while preserving case-insensitive lookups
|
|
42
|
+
*
|
|
43
|
+
* **Performance Note:** Proxy operations have runtime overhead. Only use when
|
|
44
|
+
* Windows case-insensitive access is required. For most use cases, process.env
|
|
45
|
+
* directly is sufficient.
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* // Create a Proxy with overrides
|
|
49
|
+
* const env = createEnvProxy(process.env, { NODE_ENV: 'test' })
|
|
50
|
+
* console.log(env.PATH) // Works with any case: PATH, Path, path
|
|
51
|
+
* console.log(env.NODE_ENV) // 'test'
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* // Pass to child process spawn
|
|
55
|
+
* import { createEnvProxy } from '@socketsecurity/lib/env/proxy'
|
|
56
|
+
* import { spawn } from '@socketsecurity/lib/spawn'
|
|
57
|
+
*
|
|
58
|
+
* spawn('node', ['script.js'], {
|
|
59
|
+
* env: createEnvProxy(process.env, { NODE_ENV: 'test' }),
|
|
60
|
+
* })
|
|
61
|
+
*
|
|
62
|
+
* @param base - Base environment object (usually process.env)
|
|
63
|
+
* @param overrides - Optional overrides to merge.
|
|
64
|
+
*
|
|
65
|
+
* @returns Proxy that handles case-insensitive env var access
|
|
66
|
+
*/
|
|
44
67
|
function createEnvProxy(base, overrides) {
|
|
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
|
-
|
|
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
|
-
if (prop in base) {
|
|
101
|
-
return true;
|
|
102
|
-
}
|
|
103
|
-
const upperProp = prop.toUpperCase();
|
|
104
|
-
if (caseInsensitiveKeys.has(upperProp)) {
|
|
105
|
-
if (overrides && (0, import_case_insensitive.findCaseInsensitiveEnvKey)(overrides, upperProp) !== void 0) {
|
|
106
|
-
return true;
|
|
107
|
-
}
|
|
108
|
-
if ((0, import_case_insensitive.findCaseInsensitiveEnvKey)(base, upperProp) !== void 0) {
|
|
109
|
-
return true;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
return false;
|
|
113
|
-
},
|
|
114
|
-
set(_target, prop, value) {
|
|
115
|
-
if (typeof prop === "string" && overrides) {
|
|
116
|
-
overrides[prop] = value;
|
|
117
|
-
return true;
|
|
118
|
-
}
|
|
119
|
-
return false;
|
|
120
|
-
}
|
|
121
|
-
});
|
|
68
|
+
function lookupEnvValue(prop) {
|
|
69
|
+
if (overrides && prop in overrides) return overrides[prop];
|
|
70
|
+
if (prop in base) return base[prop];
|
|
71
|
+
/* c8 ignore start */
|
|
72
|
+
const upperProp = prop.toUpperCase();
|
|
73
|
+
if (caseInsensitiveKeys.has(upperProp)) {
|
|
74
|
+
if (overrides) {
|
|
75
|
+
const key = require_env_case_insensitive.findCaseInsensitiveEnvKey(overrides, upperProp);
|
|
76
|
+
if (key !== void 0) return overrides[key];
|
|
77
|
+
}
|
|
78
|
+
const key = require_env_case_insensitive.findCaseInsensitiveEnvKey(base, upperProp);
|
|
79
|
+
if (key !== void 0) return base[key];
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/* c8 ignore stop */
|
|
83
|
+
return new require_primordials_globals.ProxyCtor({}, {
|
|
84
|
+
get(_target, prop) {
|
|
85
|
+
if (typeof prop !== "string") return;
|
|
86
|
+
return lookupEnvValue(prop);
|
|
87
|
+
},
|
|
88
|
+
ownKeys(_target) {
|
|
89
|
+
return [...new Set([...require_primordials_object.ObjectKeys(base), ...overrides ? require_primordials_object.ObjectKeys(overrides) : []])];
|
|
90
|
+
},
|
|
91
|
+
getOwnPropertyDescriptor(_target, prop) {
|
|
92
|
+
if (typeof prop !== "string") return;
|
|
93
|
+
const value = lookupEnvValue(prop);
|
|
94
|
+
return value !== void 0 ? {
|
|
95
|
+
enumerable: true,
|
|
96
|
+
configurable: true,
|
|
97
|
+
writable: true,
|
|
98
|
+
value
|
|
99
|
+
} : void 0;
|
|
100
|
+
},
|
|
101
|
+
has(_target, prop) {
|
|
102
|
+
/* c8 ignore start */
|
|
103
|
+
if (typeof prop !== "string") return false;
|
|
104
|
+
if (overrides && prop in overrides) return true;
|
|
105
|
+
if (prop in base) return true;
|
|
106
|
+
const upperProp = prop.toUpperCase();
|
|
107
|
+
if (caseInsensitiveKeys.has(upperProp)) {
|
|
108
|
+
if (overrides && require_env_case_insensitive.findCaseInsensitiveEnvKey(overrides, upperProp) !== void 0) return true;
|
|
109
|
+
if (require_env_case_insensitive.findCaseInsensitiveEnvKey(base, upperProp) !== void 0) return true;
|
|
110
|
+
}
|
|
111
|
+
return false;
|
|
112
|
+
/* c8 ignore stop */
|
|
113
|
+
},
|
|
114
|
+
set(_target, prop, value) {
|
|
115
|
+
if (typeof prop === "string" && overrides) {
|
|
116
|
+
overrides[prop] = value;
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
122
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
});
|
|
123
|
+
|
|
124
|
+
//#endregion
|
|
125
|
+
exports.createEnvProxy = createEnvProxy;
|
package/dist/env/rewire.js
CHANGED
|
@@ -1,120 +1,228 @@
|
|
|
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
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
24
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
25
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
26
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
27
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
28
|
-
mod
|
|
29
|
-
));
|
|
30
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
31
|
-
var rewire_exports = {};
|
|
32
|
-
__export(rewire_exports, {
|
|
33
|
-
clearEnv: () => clearEnv,
|
|
34
|
-
getAsyncHooks: () => getAsyncHooks,
|
|
35
|
-
getEnvValue: () => getEnvValue,
|
|
36
|
-
hasOverride: () => hasOverride,
|
|
37
|
-
isInEnv: () => isInEnv,
|
|
38
|
-
resetEnv: () => resetEnv,
|
|
39
|
-
setEnv: () => setEnv,
|
|
40
|
-
withEnv: () => withEnv,
|
|
41
|
-
withEnvSync: () => withEnvSync
|
|
42
|
-
});
|
|
43
|
-
module.exports = __toCommonJS(rewire_exports);
|
|
44
|
-
var import_node_process = __toESM(require("node:process"));
|
|
45
|
-
var import_predicates = require("../objects/predicates");
|
|
46
|
-
var import_boolean = require("./boolean");
|
|
47
|
-
var import_map_set = require("../primordials/map-set");
|
|
48
|
-
var import_object = require("../primordials/object");
|
|
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_primordials_map_set = require('../primordials/map-set.js');
|
|
6
|
+
const require_primordials_object = require('../primordials/object.js');
|
|
7
|
+
const require_objects_predicates = require('../objects/predicates.js');
|
|
8
|
+
const require_env_boolean = require('./boolean.js');
|
|
9
|
+
let node_process = require("node:process");
|
|
10
|
+
node_process = require_runtime.__toESM(node_process);
|
|
11
|
+
|
|
12
|
+
//#region src/env/rewire.ts
|
|
13
|
+
/**
|
|
14
|
+
* @file Environment variable rewiring utilities for testing. Uses
|
|
15
|
+
* AsyncLocalStorage for context-isolated overrides that work with concurrent
|
|
16
|
+
* tests. Features:
|
|
17
|
+
*
|
|
18
|
+
* - Context-isolated overrides via withEnv() for advanced use cases
|
|
19
|
+
* - Test-friendly setEnv/clearEnv/resetEnv that work in beforeEach/afterEach
|
|
20
|
+
* - Compatible with vi.stubEnv() - reads from process.env as final fallback
|
|
21
|
+
* - Thread-safe for concurrent test execution
|
|
22
|
+
*/
|
|
49
23
|
let _async_hooks;
|
|
50
|
-
|
|
24
|
+
/**
|
|
25
|
+
* Lazily load the async_hooks module to avoid Webpack errors.
|
|
26
|
+
*
|
|
27
|
+
* @private
|
|
28
|
+
*/
|
|
29
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
51
30
|
function getAsyncHooks() {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}
|
|
55
|
-
return _async_hooks;
|
|
31
|
+
if (_async_hooks === void 0) _async_hooks = /* @__PURE__ */ require("node:async_hooks");
|
|
32
|
+
return _async_hooks;
|
|
56
33
|
}
|
|
57
34
|
const { AsyncLocalStorage } = /* @__PURE__ */ getAsyncHooks();
|
|
58
35
|
const isolatedOverridesStorage = new AsyncLocalStorage();
|
|
59
|
-
const sharedOverridesSymbol = Symbol.for(
|
|
60
|
-
"@socketsecurity/lib/env/rewire/test-overrides"
|
|
61
|
-
);
|
|
36
|
+
const sharedOverridesSymbol = Symbol.for("@socketsecurity/lib/env/rewire/test-overrides");
|
|
62
37
|
const _globalThis = globalThis;
|
|
63
|
-
|
|
64
|
-
if (isVitestEnv && !_globalThis[sharedOverridesSymbol]) {
|
|
65
|
-
_globalThis[sharedOverridesSymbol] = new import_map_set.MapCtor();
|
|
66
|
-
}
|
|
38
|
+
if (/* @__PURE__ */ require_env_boolean.envAsBoolean(node_process.default.env["VITEST"]) && !_globalThis[sharedOverridesSymbol]) _globalThis[sharedOverridesSymbol] = new require_primordials_map_set.MapCtor();
|
|
67
39
|
const sharedOverrides = _globalThis[sharedOverridesSymbol];
|
|
40
|
+
/**
|
|
41
|
+
* Clear a specific environment variable override.
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ;```typescript
|
|
45
|
+
* import { setEnv, clearEnv } from '@socketsecurity/lib/env/rewire'
|
|
46
|
+
*
|
|
47
|
+
* setEnv('CI', '1')
|
|
48
|
+
* clearEnv('CI')
|
|
49
|
+
* ```
|
|
50
|
+
*
|
|
51
|
+
* @param key - The environment variable name to clear.
|
|
52
|
+
*/
|
|
68
53
|
function clearEnv(key) {
|
|
69
|
-
|
|
54
|
+
sharedOverrides?.delete(key);
|
|
70
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Get an environment variable value, checking overrides first.
|
|
58
|
+
*
|
|
59
|
+
* Resolution order: 1. Isolated overrides (temporary - set via
|
|
60
|
+
* withEnv/withEnvSync) 2. Shared overrides (persistent - set via setEnv in
|
|
61
|
+
* beforeEach) 3. process.env (including vi.stubEnv modifications)
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* ;```typescript
|
|
65
|
+
* import { getEnvValue } from '@socketsecurity/lib/env/rewire'
|
|
66
|
+
*
|
|
67
|
+
* const value = getEnvValue('NODE_ENV')
|
|
68
|
+
* // e.g. 'production' or undefined
|
|
69
|
+
* ```
|
|
70
|
+
*
|
|
71
|
+
* @internal Used by env getters to support test rewiring
|
|
72
|
+
*/
|
|
71
73
|
function getEnvValue(key) {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
if (sharedOverrides?.has(key)) {
|
|
77
|
-
return sharedOverrides.get(key);
|
|
78
|
-
}
|
|
79
|
-
return import_node_process.default.env[key];
|
|
74
|
+
const isolatedOverrides = isolatedOverridesStorage.getStore();
|
|
75
|
+
if (isolatedOverrides?.has(key)) return isolatedOverrides.get(key);
|
|
76
|
+
if (sharedOverrides?.has(key)) return sharedOverrides.get(key);
|
|
77
|
+
return node_process.default.env[key];
|
|
80
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* Check if an environment variable has been overridden.
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ;```typescript
|
|
84
|
+
* import { setEnv, hasOverride } from '@socketsecurity/lib/env/rewire'
|
|
85
|
+
*
|
|
86
|
+
* hasOverride('CI') // false
|
|
87
|
+
* setEnv('CI', '1')
|
|
88
|
+
* hasOverride('CI') // true
|
|
89
|
+
* ```
|
|
90
|
+
*
|
|
91
|
+
* @param key - The environment variable name to check.
|
|
92
|
+
*
|
|
93
|
+
* @returns `true` if the variable has been overridden, `false` otherwise
|
|
94
|
+
*/
|
|
81
95
|
function hasOverride(key) {
|
|
82
|
-
|
|
83
|
-
return !!(isolatedOverrides?.has(key) || sharedOverrides?.has(key));
|
|
96
|
+
return !!(isolatedOverridesStorage.getStore()?.has(key) || sharedOverrides?.has(key));
|
|
84
97
|
}
|
|
98
|
+
/**
|
|
99
|
+
* Check if an environment variable exists (has a key), checking overrides
|
|
100
|
+
* first.
|
|
101
|
+
*
|
|
102
|
+
* Resolution order: 1. Isolated overrides (temporary - set via
|
|
103
|
+
* withEnv/withEnvSync) 2. Shared overrides (persistent - set via setEnv in
|
|
104
|
+
* beforeEach) 3. process.env (including vi.stubEnv modifications)
|
|
105
|
+
*
|
|
106
|
+
* @example
|
|
107
|
+
* ;```typescript
|
|
108
|
+
* import { isInEnv } from '@socketsecurity/lib/env/rewire'
|
|
109
|
+
*
|
|
110
|
+
* isInEnv('PATH') // true (usually set)
|
|
111
|
+
* isInEnv('MISSING') // false
|
|
112
|
+
* ```
|
|
113
|
+
*
|
|
114
|
+
* @internal Used by env getters to check for key presence (not value truthiness)
|
|
115
|
+
*/
|
|
85
116
|
function isInEnv(key) {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
}
|
|
90
|
-
if (sharedOverrides?.has(key)) {
|
|
91
|
-
return true;
|
|
92
|
-
}
|
|
93
|
-
return (0, import_predicates.hasOwn)(import_node_process.default.env, key);
|
|
117
|
+
if (isolatedOverridesStorage.getStore()?.has(key)) return true;
|
|
118
|
+
if (sharedOverrides?.has(key)) return true;
|
|
119
|
+
return /* @__PURE__ */ require_objects_predicates.hasOwn(node_process.default.env, key);
|
|
94
120
|
}
|
|
121
|
+
/**
|
|
122
|
+
* Clear all environment variable overrides. Useful in afterEach hooks to ensure
|
|
123
|
+
* clean test state.
|
|
124
|
+
*
|
|
125
|
+
* @example
|
|
126
|
+
* ;```typescript
|
|
127
|
+
* import { resetEnv } from './rewire'
|
|
128
|
+
*
|
|
129
|
+
* afterEach(() => {
|
|
130
|
+
* resetEnv()
|
|
131
|
+
* })
|
|
132
|
+
* ```
|
|
133
|
+
*/
|
|
95
134
|
function resetEnv() {
|
|
96
|
-
|
|
135
|
+
sharedOverrides?.clear();
|
|
97
136
|
}
|
|
137
|
+
/**
|
|
138
|
+
* Set an environment variable override for testing. This does not modify
|
|
139
|
+
* process.env, only affects env getters.
|
|
140
|
+
*
|
|
141
|
+
* Works in test hooks (beforeEach) without needing AsyncLocalStorage context.
|
|
142
|
+
* Vitest's module isolation ensures each test file has independent overrides.
|
|
143
|
+
*
|
|
144
|
+
* @example
|
|
145
|
+
* ;```typescript
|
|
146
|
+
* import { setEnv, resetEnv } from './rewire'
|
|
147
|
+
* import { getCI } from './ci'
|
|
148
|
+
*
|
|
149
|
+
* beforeEach(() => {
|
|
150
|
+
* setEnv('CI', '1')
|
|
151
|
+
* })
|
|
152
|
+
*
|
|
153
|
+
* afterEach(() => {
|
|
154
|
+
* resetEnv()
|
|
155
|
+
* })
|
|
156
|
+
*
|
|
157
|
+
* it('should detect CI environment', () => {
|
|
158
|
+
* expect(getCI()).toBe(true)
|
|
159
|
+
* })
|
|
160
|
+
* ```
|
|
161
|
+
*/
|
|
98
162
|
function setEnv(key, value) {
|
|
99
|
-
|
|
163
|
+
sharedOverrides?.set(key, value);
|
|
100
164
|
}
|
|
165
|
+
/**
|
|
166
|
+
* Run code with environment overrides in an isolated AsyncLocalStorage context.
|
|
167
|
+
* Creates true context isolation - overrides don't leak to concurrent code.
|
|
168
|
+
*
|
|
169
|
+
* Useful for tests that need temporary overrides without affecting other tests
|
|
170
|
+
* or for nested override scenarios.
|
|
171
|
+
*
|
|
172
|
+
* @example
|
|
173
|
+
* ;```typescript
|
|
174
|
+
* import { withEnv } from './rewire'
|
|
175
|
+
* import { getCI } from './ci'
|
|
176
|
+
*
|
|
177
|
+
* // Temporary override in isolated context
|
|
178
|
+
* await withEnv({ CI: '1' }, async () => {
|
|
179
|
+
* expect(getCI()).toBe(true)
|
|
180
|
+
* })
|
|
181
|
+
* expect(getCI()).toBe(false) // Override is gone
|
|
182
|
+
* ```
|
|
183
|
+
*
|
|
184
|
+
* @example
|
|
185
|
+
* ;```typescript
|
|
186
|
+
* // Nested overrides work correctly
|
|
187
|
+
* setEnv('CI', '1') // Shared override (persistent)
|
|
188
|
+
*
|
|
189
|
+
* await withEnv({ CI: '0' }, async () => {
|
|
190
|
+
* expect(getCI()).toBe(false) // Isolated override takes precedence
|
|
191
|
+
* })
|
|
192
|
+
*
|
|
193
|
+
* expect(getCI()).toBe(true) // Back to shared override
|
|
194
|
+
* ```
|
|
195
|
+
*/
|
|
101
196
|
async function withEnv(overrides, fn) {
|
|
102
|
-
|
|
103
|
-
|
|
197
|
+
const map = new require_primordials_map_set.MapCtor(require_primordials_object.ObjectEntries(overrides));
|
|
198
|
+
return await isolatedOverridesStorage.run(map, fn);
|
|
104
199
|
}
|
|
200
|
+
/**
|
|
201
|
+
* Synchronous version of withEnv for non-async code.
|
|
202
|
+
*
|
|
203
|
+
* @example
|
|
204
|
+
* ;```typescript
|
|
205
|
+
* import { withEnvSync } from './rewire'
|
|
206
|
+
* import { getCI } from './ci'
|
|
207
|
+
*
|
|
208
|
+
* const result = withEnvSync({ CI: '1' }, () => {
|
|
209
|
+
* return getCI()
|
|
210
|
+
* })
|
|
211
|
+
* expect(result).toBe(true)
|
|
212
|
+
* ```
|
|
213
|
+
*/
|
|
105
214
|
function withEnvSync(overrides, fn) {
|
|
106
|
-
|
|
107
|
-
|
|
215
|
+
const map = new require_primordials_map_set.MapCtor(require_primordials_object.ObjectEntries(overrides));
|
|
216
|
+
return isolatedOverridesStorage.run(map, fn);
|
|
108
217
|
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
});
|
|
218
|
+
|
|
219
|
+
//#endregion
|
|
220
|
+
exports.clearEnv = clearEnv;
|
|
221
|
+
exports.getAsyncHooks = getAsyncHooks;
|
|
222
|
+
exports.getEnvValue = getEnvValue;
|
|
223
|
+
exports.hasOverride = hasOverride;
|
|
224
|
+
exports.isInEnv = isInEnv;
|
|
225
|
+
exports.resetEnv = resetEnv;
|
|
226
|
+
exports.setEnv = setEnv;
|
|
227
|
+
exports.withEnv = withEnv;
|
|
228
|
+
exports.withEnvSync = withEnvSync;
|