@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/promises/queue.js
CHANGED
|
@@ -1,138 +1,117 @@
|
|
|
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_primordials_error = require('../primordials/error.js');
|
|
5
|
+
const require_primordials_promise = require('../primordials/promise.js');
|
|
6
|
+
|
|
7
|
+
//#region src/promises/queue.ts
|
|
8
|
+
/**
|
|
9
|
+
* @file Bounded concurrency promise queue. Exports the `PromiseQueue` class,
|
|
10
|
+
* which limits how many async tasks run simultaneously, supports an optional
|
|
11
|
+
* max queue length (new tasks beyond the cap are rejected with "Task dropped:
|
|
12
|
+
* queue length exceeded"), and exposes an idle-wait helper.
|
|
13
|
+
*/
|
|
14
|
+
var PromiseQueue = class {
|
|
15
|
+
queue = [];
|
|
16
|
+
running = 0;
|
|
17
|
+
idleResolvers = [];
|
|
18
|
+
maxConcurrency;
|
|
19
|
+
maxQueueLength;
|
|
20
|
+
/**
|
|
21
|
+
* Creates a new PromiseQueue.
|
|
22
|
+
*
|
|
23
|
+
* @param maxConcurrency - Maximum number of promises that can run
|
|
24
|
+
* concurrently.
|
|
25
|
+
* @param maxQueueLength - Maximum queue size; submissions past the cap reject
|
|
26
|
+
* with "Task dropped: queue length exceeded" instead of evicting a caller
|
|
27
|
+
* that has been waiting patiently. Callers must handle this rejection or
|
|
28
|
+
* they'll see an unhandled rejection.
|
|
29
|
+
*/
|
|
30
|
+
constructor(maxConcurrency, maxQueueLength) {
|
|
31
|
+
this.maxConcurrency = maxConcurrency;
|
|
32
|
+
this.maxQueueLength = maxQueueLength;
|
|
33
|
+
if (maxConcurrency < 1) throw new require_primordials_error.ErrorCtor("maxConcurrency must be at least 1");
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Add a task to the queue.
|
|
37
|
+
*
|
|
38
|
+
* @param fn - Async function to execute.
|
|
39
|
+
*
|
|
40
|
+
* @returns Promise that resolves with the function's result, or rejects with
|
|
41
|
+
* "Task dropped: queue length exceeded" if the queue is full.
|
|
42
|
+
*/
|
|
43
|
+
async add(fn) {
|
|
44
|
+
return await new require_primordials_promise.PromiseCtor((resolve, reject) => {
|
|
45
|
+
if (this.maxQueueLength !== void 0 && this.queue.length >= this.maxQueueLength) {
|
|
46
|
+
reject(new require_primordials_error.ErrorCtor("Task dropped: queue length exceeded"));
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const task = {
|
|
50
|
+
fn,
|
|
51
|
+
resolve,
|
|
52
|
+
reject
|
|
53
|
+
};
|
|
54
|
+
this.queue.push(task);
|
|
55
|
+
this.runNext();
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
runNext() {
|
|
59
|
+
if (this.running >= this.maxConcurrency || this.queue.length === 0) {
|
|
60
|
+
this.notifyIdleIfNeeded();
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
const task = this.queue.shift();
|
|
64
|
+
if (!task) return;
|
|
65
|
+
this.running++;
|
|
66
|
+
(async () => {
|
|
67
|
+
try {
|
|
68
|
+
const result = await task.fn();
|
|
69
|
+
task.resolve(result);
|
|
70
|
+
} catch (err) {
|
|
71
|
+
task.reject(err);
|
|
72
|
+
} finally {
|
|
73
|
+
this.running--;
|
|
74
|
+
this.runNext();
|
|
75
|
+
}
|
|
76
|
+
})();
|
|
77
|
+
}
|
|
78
|
+
notifyIdleIfNeeded() {
|
|
79
|
+
if (this.running === 0 && this.queue.length === 0) {
|
|
80
|
+
for (const resolve of this.idleResolvers) resolve();
|
|
81
|
+
this.idleResolvers = [];
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Wait for all queued and running tasks to complete.
|
|
86
|
+
*/
|
|
87
|
+
async onIdle() {
|
|
88
|
+
if (this.running === 0 && this.queue.length === 0) return;
|
|
89
|
+
return await new require_primordials_promise.PromiseCtor((resolve) => {
|
|
90
|
+
this.idleResolvers.push(resolve);
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Get the number of tasks currently running.
|
|
95
|
+
*/
|
|
96
|
+
get activeCount() {
|
|
97
|
+
return this.running;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Get the number of tasks waiting in the queue.
|
|
101
|
+
*/
|
|
102
|
+
get pendingCount() {
|
|
103
|
+
return this.queue.length;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Clear all pending tasks from the queue (does not affect running tasks)
|
|
107
|
+
*/
|
|
108
|
+
clear() {
|
|
109
|
+
const pending = this.queue;
|
|
110
|
+
this.queue = [];
|
|
111
|
+
for (const task of pending) task.reject(new require_primordials_error.ErrorCtor("Task cancelled: queue cleared"));
|
|
112
|
+
this.notifyIdleIfNeeded();
|
|
113
|
+
}
|
|
19
114
|
};
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
PromiseQueue: () => PromiseQueue
|
|
24
|
-
});
|
|
25
|
-
module.exports = __toCommonJS(queue_exports);
|
|
26
|
-
var import_error = require("../primordials/error");
|
|
27
|
-
var import_promise = require("../primordials/promise");
|
|
28
|
-
class PromiseQueue {
|
|
29
|
-
queue = [];
|
|
30
|
-
running = 0;
|
|
31
|
-
idleResolvers = [];
|
|
32
|
-
maxConcurrency;
|
|
33
|
-
maxQueueLength;
|
|
34
|
-
/**
|
|
35
|
-
* Creates a new PromiseQueue.
|
|
36
|
-
*
|
|
37
|
-
* @param maxConcurrency - Maximum number of promises that can run
|
|
38
|
-
* concurrently.
|
|
39
|
-
* @param maxQueueLength - Maximum queue size; submissions past the cap reject
|
|
40
|
-
* with "Task dropped: queue length exceeded" instead of evicting a caller
|
|
41
|
-
* that has been waiting patiently. Callers must handle this rejection or
|
|
42
|
-
* they'll see an unhandled rejection.
|
|
43
|
-
*/
|
|
44
|
-
constructor(maxConcurrency, maxQueueLength) {
|
|
45
|
-
this.maxConcurrency = maxConcurrency;
|
|
46
|
-
this.maxQueueLength = maxQueueLength;
|
|
47
|
-
if (maxConcurrency < 1) {
|
|
48
|
-
throw new import_error.ErrorCtor("maxConcurrency must be at least 1");
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Add a task to the queue.
|
|
53
|
-
*
|
|
54
|
-
* @param fn - Async function to execute.
|
|
55
|
-
*
|
|
56
|
-
* @returns Promise that resolves with the function's result, or rejects with
|
|
57
|
-
* "Task dropped: queue length exceeded" if the queue is full.
|
|
58
|
-
*/
|
|
59
|
-
async add(fn) {
|
|
60
|
-
return await new import_promise.PromiseCtor((resolve, reject) => {
|
|
61
|
-
if (this.maxQueueLength !== void 0 && this.queue.length >= this.maxQueueLength) {
|
|
62
|
-
reject(new import_error.ErrorCtor("Task dropped: queue length exceeded"));
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
const task = { fn, resolve, reject };
|
|
66
|
-
this.queue.push(task);
|
|
67
|
-
this.runNext();
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
runNext() {
|
|
71
|
-
if (this.running >= this.maxConcurrency || this.queue.length === 0) {
|
|
72
|
-
this.notifyIdleIfNeeded();
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
const task = this.queue.shift();
|
|
76
|
-
if (!task) {
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
this.running++;
|
|
80
|
-
(async () => {
|
|
81
|
-
try {
|
|
82
|
-
const result = await task.fn();
|
|
83
|
-
task.resolve(result);
|
|
84
|
-
} catch (err) {
|
|
85
|
-
task.reject(err);
|
|
86
|
-
} finally {
|
|
87
|
-
this.running--;
|
|
88
|
-
this.runNext();
|
|
89
|
-
}
|
|
90
|
-
})();
|
|
91
|
-
}
|
|
92
|
-
notifyIdleIfNeeded() {
|
|
93
|
-
if (this.running === 0 && this.queue.length === 0) {
|
|
94
|
-
for (const resolve of this.idleResolvers) {
|
|
95
|
-
resolve();
|
|
96
|
-
}
|
|
97
|
-
this.idleResolvers = [];
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Wait for all queued and running tasks to complete.
|
|
102
|
-
*/
|
|
103
|
-
async onIdle() {
|
|
104
|
-
if (this.running === 0 && this.queue.length === 0) {
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
107
|
-
return await new import_promise.PromiseCtor((resolve) => {
|
|
108
|
-
this.idleResolvers.push(resolve);
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Get the number of tasks currently running.
|
|
113
|
-
*/
|
|
114
|
-
get activeCount() {
|
|
115
|
-
return this.running;
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Get the number of tasks waiting in the queue.
|
|
119
|
-
*/
|
|
120
|
-
get pendingCount() {
|
|
121
|
-
return this.queue.length;
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Clear all pending tasks from the queue (does not affect running tasks)
|
|
125
|
-
*/
|
|
126
|
-
clear() {
|
|
127
|
-
const pending = this.queue;
|
|
128
|
-
this.queue = [];
|
|
129
|
-
for (const task of pending) {
|
|
130
|
-
task.reject(new import_error.ErrorCtor("Task cancelled: queue cleared"));
|
|
131
|
-
}
|
|
132
|
-
this.notifyIdleIfNeeded();
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
136
|
-
0 && (module.exports = {
|
|
137
|
-
PromiseQueue
|
|
138
|
-
});
|
|
115
|
+
|
|
116
|
+
//#endregion
|
|
117
|
+
exports.PromiseQueue = PromiseQueue;
|
|
@@ -1,49 +1,80 @@
|
|
|
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
|
-
|
|
2
|
+
/* Socket Lib - Built with rolldown */
|
|
3
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
|
+
const require_primordials_array = require('../primordials/array.js');
|
|
5
|
+
const require_primordials_promise = require('../primordials/promise.js');
|
|
6
|
+
|
|
7
|
+
//#region src/promises/resolvers.ts
|
|
8
|
+
/**
|
|
9
|
+
* @file ECMA-262 standalone async helpers — `withResolvers`
|
|
10
|
+
* (Promise.withResolvers) and `fromAsync` (Array.fromAsync). Both prefer the
|
|
11
|
+
* captured primordial when present, with a spec-equivalent fallback for older
|
|
12
|
+
* runtimes. Why this lives separate from `retry.ts` / `iterate.ts`: these are
|
|
13
|
+
* direct mirrors of standardized JS APIs, not Socket-specific helpers. They
|
|
14
|
+
* have no retry / concurrency surface to share with the rest of the module.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Drain an async iterable into an array, per [TC39
|
|
18
|
+
* Array.fromAsync](https://tc39.es/proposal-array-from-async/).
|
|
19
|
+
*
|
|
20
|
+
* Uses the `ArrayFromAsync` primordial (already bound) when available (Node
|
|
21
|
+
* 22+; V8 ≥ 12.0); otherwise falls back to a `for await…of` + push loop.
|
|
22
|
+
*
|
|
23
|
+
* Use this instead of the manual `const out = []; for await (const x of iter)
|
|
24
|
+
* out.push(x); return out` dance when collecting an async iterator's values.
|
|
25
|
+
*
|
|
26
|
+
* Like the native, this only handles the unary form (no `mapFn` / `thisArg`
|
|
27
|
+
* overload).
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ;```typescript
|
|
31
|
+
* import { glob } from 'node:fs/promises'
|
|
32
|
+
* const files = await fromAsync(glob('**\/*.ts', { cwd: '/tmp/proj' }))
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
const fromAsync = require_primordials_array.ArrayFromAsync !== void 0 ? require_primordials_array.ArrayFromAsync : async (source) => {
|
|
36
|
+
const out = [];
|
|
37
|
+
for await (const item of source) out.push(item);
|
|
38
|
+
return out;
|
|
35
39
|
};
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
40
|
+
/**
|
|
41
|
+
* Create a pending promise together with its `resolve` and `reject` handles as
|
|
42
|
+
* first-class values, per [ECMA-262
|
|
43
|
+
* §27.2.4.9](https://tc39.es/ecma262/#sec-promise.withResolvers).
|
|
44
|
+
*
|
|
45
|
+
* Uses the `PromiseWithResolvers` primordial (already bound) when available
|
|
46
|
+
* (Node 20.12+ / 21+ / 22+; V8 ≥ 12.0); otherwise falls back to a
|
|
47
|
+
* spec-equivalent `new Promise(executor)` that captures the handles via
|
|
48
|
+
* closure. The returned object always has own data properties `promise`,
|
|
49
|
+
* `resolve`, `reject` on `Object.prototype` — writable, enumerable, and
|
|
50
|
+
* configurable — matching the spec's `CreateDataPropertyOrThrow` steps.
|
|
51
|
+
*
|
|
52
|
+
* Use this instead of the manual `let resolve; const p = new Promise(r => {
|
|
53
|
+
* resolve = r })` dance for deferred-resolution patterns (event-driven bridges,
|
|
54
|
+
* adapter layers, handshake signaling) where the settle path lives outside the
|
|
55
|
+
* executor.
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ;```typescript
|
|
59
|
+
* const { promise, resolve, reject } = withResolvers<string>()
|
|
60
|
+
* emitter.once('ready', () => resolve('ok'))
|
|
61
|
+
* emitter.once('error', err => reject(err))
|
|
62
|
+
* const result = await promise
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
const withResolvers = require_primordials_promise.PromiseWithResolvers !== void 0 ? require_primordials_promise.PromiseWithResolvers : () => {
|
|
66
|
+
let resolve;
|
|
67
|
+
let reject;
|
|
68
|
+
return {
|
|
69
|
+
promise: new require_primordials_promise.PromiseCtor((res, rej) => {
|
|
70
|
+
resolve = res;
|
|
71
|
+
reject = rej;
|
|
72
|
+
}),
|
|
73
|
+
resolve,
|
|
74
|
+
reject
|
|
75
|
+
};
|
|
44
76
|
};
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
});
|
|
77
|
+
|
|
78
|
+
//#endregion
|
|
79
|
+
exports.fromAsync = fromAsync;
|
|
80
|
+
exports.withResolvers = withResolvers;
|
package/dist/promises/retry.js
CHANGED
|
@@ -1,104 +1,159 @@
|
|
|
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
|
-
|
|
2
|
+
/* Socket Lib - Built with rolldown */
|
|
3
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
|
+
const require_primordials_math = require('../primordials/math.js');
|
|
5
|
+
const require_constants_sentinels = require('../constants/sentinels.js');
|
|
6
|
+
const require_promises__internal = require('./_internal.js');
|
|
7
|
+
const require_promises_options = require('./options.js');
|
|
8
|
+
|
|
9
|
+
//#region src/promises/retry.ts
|
|
10
|
+
/**
|
|
11
|
+
* @file `pRetry` — exponential-backoff retry with optional jitter, abort-signal
|
|
12
|
+
* support, and an `onRetry` hook for customizing delays or canceling retries
|
|
13
|
+
* entirely. Cycles with `iterate.ts`: pRetry is called by pEach / pEachChunk
|
|
14
|
+
* / pFilter / pFilterChunk to apply per-item retry. ESM tolerates the cycle
|
|
15
|
+
* since both sides reference each other through functions only.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Retry an async function with exponential backoff.
|
|
19
|
+
*
|
|
20
|
+
* Attempts to execute a function multiple times with increasing delays between
|
|
21
|
+
* attempts. Implements exponential backoff with optional jitter to prevent
|
|
22
|
+
* thundering herd problems. Supports custom retry logic via `onRetry`
|
|
23
|
+
* callback.
|
|
24
|
+
*
|
|
25
|
+
* The delay calculation follows: `min(baseDelayMs * (backoffFactor ** attempt),
|
|
26
|
+
* maxDelayMs)` With jitter: adds random value between 0 and calculated delay.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* // Simple retry: 3 attempts with default backoff
|
|
30
|
+
* const data = await pRetry(async () => {
|
|
31
|
+
* return await fetchData()
|
|
32
|
+
* }, 3)
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* // Custom backoff strategy
|
|
36
|
+
* const result = await pRetry(
|
|
37
|
+
* async () => {
|
|
38
|
+
* return await unreliableOperation()
|
|
39
|
+
* },
|
|
40
|
+
* {
|
|
41
|
+
* retries: 5,
|
|
42
|
+
* baseDelayMs: 1000, // Start at 1 second
|
|
43
|
+
* backoffFactor: 2, // Double each time
|
|
44
|
+
* maxDelayMs: 30000, // Cap at 30 seconds
|
|
45
|
+
* jitter: true, // Add randomness
|
|
46
|
+
* },
|
|
47
|
+
* )
|
|
48
|
+
* // Delays: ~1s, ~2s, ~4s, ~8s, ~16s (each ± random jitter)
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* // With custom retry logic
|
|
52
|
+
* const data = await pRetry(
|
|
53
|
+
* async () => {
|
|
54
|
+
* return await apiCall()
|
|
55
|
+
* },
|
|
56
|
+
* {
|
|
57
|
+
* retries: 3,
|
|
58
|
+
* onRetry: (attempt, error, delay) => {
|
|
59
|
+
* console.log(`Attempt ${attempt} failed: ${error}`)
|
|
60
|
+
* console.log(`Waiting ${delay}ms before retry...`)
|
|
61
|
+
*
|
|
62
|
+
* // Cancel retries for client errors (4xx)
|
|
63
|
+
* if (error.statusCode >= 400 && error.statusCode < 500) {
|
|
64
|
+
* return false
|
|
65
|
+
* }
|
|
66
|
+
*
|
|
67
|
+
* // Use longer delay for rate limit errors
|
|
68
|
+
* if (error.statusCode === 429) {
|
|
69
|
+
* return 60000 // Wait 1 minute
|
|
70
|
+
* }
|
|
71
|
+
* },
|
|
72
|
+
* onRetryCancelOnFalse: true,
|
|
73
|
+
* },
|
|
74
|
+
* )
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* // With cancellation support
|
|
78
|
+
* const controller = new AbortController()
|
|
79
|
+
* setTimeout(() => controller.abort(), 5000) // Cancel after 5s
|
|
80
|
+
*
|
|
81
|
+
* const result = await pRetry(
|
|
82
|
+
* async ({ signal }) => {
|
|
83
|
+
* return await longRunningTask(signal)
|
|
84
|
+
* },
|
|
85
|
+
* {
|
|
86
|
+
* retries: 10,
|
|
87
|
+
* signal: controller.signal,
|
|
88
|
+
* },
|
|
89
|
+
* )
|
|
90
|
+
* // Returns undefined if aborted
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* // Pass arguments to callback
|
|
94
|
+
* const result = await pRetry(
|
|
95
|
+
* async (url, options) => {
|
|
96
|
+
* return await fetch(url, options)
|
|
97
|
+
* },
|
|
98
|
+
* {
|
|
99
|
+
* retries: 3,
|
|
100
|
+
* args: ['https://api.example.com', { method: 'POST' }],
|
|
101
|
+
* },
|
|
102
|
+
* )
|
|
103
|
+
*
|
|
104
|
+
* @template T - The return type of the callback function.
|
|
105
|
+
*
|
|
106
|
+
* @param callbackFn - Async function to retry.
|
|
107
|
+
* @param options - Retry count as number, or full retry options, or undefined.
|
|
108
|
+
*
|
|
109
|
+
* @returns Promise resolving to callback result, or `undefined` if aborted
|
|
110
|
+
*
|
|
111
|
+
* @throws {Error} The last error if all retry attempts fail
|
|
112
|
+
*/
|
|
113
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
31
114
|
async function pRetry(callbackFn, options) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
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
|
-
if (result === false && onRetryCancelOnFalse) {
|
|
74
|
-
break;
|
|
75
|
-
}
|
|
76
|
-
if (typeof result === "number" && result >= 0) {
|
|
77
|
-
waitTime = (0, import_math.MathMin)(result, maxDelayMs);
|
|
78
|
-
}
|
|
79
|
-
} catch (e2) {
|
|
80
|
-
if (onRetryRethrow) {
|
|
81
|
-
throw e2;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
try {
|
|
86
|
-
await timers.setTimeout(waitTime, void 0, { signal });
|
|
87
|
-
} catch {
|
|
88
|
-
return void 0;
|
|
89
|
-
}
|
|
90
|
-
if (signal?.aborted) {
|
|
91
|
-
return void 0;
|
|
92
|
-
}
|
|
93
|
-
delay = (0, import_math.MathMin)(delay * backoffFactor, maxDelayMs);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
if (error !== import_sentinels.UNDEFINED_TOKEN) {
|
|
97
|
-
throw error;
|
|
98
|
-
}
|
|
99
|
-
return void 0;
|
|
115
|
+
const { args, backoffFactor, baseDelayMs, jitter, maxDelayMs, onRetry, onRetryCancelOnFalse, onRetryRethrow, retries, signal } = /* @__PURE__ */ require_promises_options.normalizeRetryOptions(options);
|
|
116
|
+
if (signal?.aborted) return;
|
|
117
|
+
if (retries === 0) return await callbackFn(...args || [], { signal });
|
|
118
|
+
const timers = /* @__PURE__ */ require_promises__internal.getTimers();
|
|
119
|
+
let attempts = retries;
|
|
120
|
+
let delay = baseDelayMs;
|
|
121
|
+
let error = void 0;
|
|
122
|
+
while (attempts-- >= 0) {
|
|
123
|
+
/* c8 ignore start */
|
|
124
|
+
if (signal?.aborted) return;
|
|
125
|
+
/* c8 ignore stop */
|
|
126
|
+
try {
|
|
127
|
+
return await callbackFn(...args || [], { signal });
|
|
128
|
+
} catch (e) {
|
|
129
|
+
error = e;
|
|
130
|
+
if (attempts < 0) break;
|
|
131
|
+
let waitTime = delay;
|
|
132
|
+
if (jitter) waitTime += require_primordials_math.MathFloor(require_primordials_math.MathRandom() * delay);
|
|
133
|
+
waitTime = require_primordials_math.MathMin(waitTime, maxDelayMs);
|
|
134
|
+
/* c8 ignore start */
|
|
135
|
+
if (typeof onRetry === "function") try {
|
|
136
|
+
const result = onRetry(retries - attempts, e, waitTime);
|
|
137
|
+
if (result === false && onRetryCancelOnFalse) break;
|
|
138
|
+
if (typeof result === "number" && result >= 0) waitTime = require_primordials_math.MathMin(result, maxDelayMs);
|
|
139
|
+
} catch (e) {
|
|
140
|
+
if (onRetryRethrow) throw e;
|
|
141
|
+
}
|
|
142
|
+
/* c8 ignore stop */
|
|
143
|
+
try {
|
|
144
|
+
await timers.setTimeout(waitTime, void 0, { signal });
|
|
145
|
+
} catch {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
/* c8 ignore stop */
|
|
149
|
+
/* c8 ignore start */
|
|
150
|
+
if (signal?.aborted) return;
|
|
151
|
+
/* c8 ignore stop */
|
|
152
|
+
delay = require_primordials_math.MathMin(delay * backoffFactor, maxDelayMs);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
if (error !== void 0) throw error;
|
|
100
156
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
});
|
|
157
|
+
|
|
158
|
+
//#endregion
|
|
159
|
+
exports.pRetry = pRetry;
|
package/dist/promises/types.js
CHANGED
|
@@ -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 types_exports = {};
|
|
18
|
-
module.exports = __toCommonJS(types_exports);
|
|
2
|
+
/* Socket Lib - Built with rolldown */
|