@socketsecurity/lib 6.0.3 → 6.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/dist/_virtual/_rolldown/runtime.js +45 -0
- package/dist/abort/signal.js +53 -59
- package/dist/ai/discover.js +110 -110
- package/dist/ai/profiles.js +94 -65
- package/dist/ai/spawn.js +172 -194
- package/dist/ai/types.js +1 -17
- package/dist/ai/worktree.js +160 -183
- package/dist/ansi/constants.js +16 -38
- package/dist/ansi/strip.js +44 -41
- package/dist/archives/_internal.js +64 -73
- package/dist/archives/detect.js +30 -43
- package/dist/archives/extract.js +43 -50
- package/dist/archives/tar.js +197 -228
- package/dist/archives/types.js +1 -17
- package/dist/archives/zip.js +85 -121
- package/dist/argv/flag-predicates.js +203 -101
- package/dist/argv/flag-types.js +96 -113
- package/dist/argv/parse-args-string.d.ts +16 -14
- package/dist/argv/parse-args-string.js +42 -39
- package/dist/argv/parse.js +145 -163
- package/dist/arrays/_internal.js +65 -48
- package/dist/arrays/chunk.js +51 -40
- package/dist/arrays/join.js +87 -35
- package/dist/arrays/predicates.js +46 -28
- package/dist/arrays/unique.js +45 -31
- package/dist/bin/_internal.js +34 -42
- package/dist/bin/check-primordials.js +175 -233
- package/dist/bin/check.js +51 -72
- package/dist/bin/exec.js +70 -74
- package/dist/bin/find.js +151 -134
- package/dist/bin/resolve.js +180 -246
- package/dist/bin/shadow.js +24 -33
- package/dist/bin/socket-lib.js +51 -73
- package/dist/bin/types.js +1 -17
- package/dist/bin/which.js +211 -146
- package/dist/cacache/_internal.js +25 -40
- package/dist/cacache/clear.js +79 -72
- package/dist/cacache/read.js +48 -46
- package/dist/cacache/tmp.js +29 -36
- package/dist/cacache/types.js +1 -17
- package/dist/cacache/write.js +43 -48
- package/dist/cache/ttl/store.js +232 -288
- package/dist/cache/ttl/types.js +1 -17
- package/dist/checks/primordials-defaults.js +83 -89
- package/dist/checks/primordials.js +225 -277
- package/dist/colors/convert.js +45 -37
- package/dist/colors/palette.js +88 -45
- package/dist/colors/socket-palette.js +74 -84
- package/dist/colors/types.js +1 -17
- package/dist/compression/_internal.js +57 -72
- package/dist/compression/brotli.js +94 -127
- package/dist/compression/gzip.js +95 -121
- package/dist/compression/types.js +1 -17
- package/dist/constants/agents.js +61 -113
- package/dist/constants/encoding.js +19 -42
- package/dist/constants/github.js +12 -30
- package/dist/constants/licenses.js +48 -63
- package/dist/constants/lifecycle-script-names.js +31 -45
- package/dist/constants/maintained-node-versions.js +22 -37
- package/dist/constants/node.js +226 -167
- package/dist/constants/package-default-node-range.js +16 -41
- package/dist/constants/package-default-socket-categories.js +12 -30
- package/dist/constants/packages.js +77 -126
- package/dist/constants/platform.js +27 -49
- package/dist/constants/sentinels.js +23 -48
- package/dist/constants/socket.js +42 -87
- package/dist/constants/testing.js +15 -34
- package/dist/constants/time.js +16 -36
- package/dist/constants/typescript.js +32 -52
- package/dist/cover/code.js +111 -142
- package/dist/cover/formatters.js +118 -101
- package/dist/cover/type.js +50 -76
- package/dist/cover/types.js +1 -17
- package/dist/crypto/hash.js +54 -46
- package/dist/debug/_internal.js +62 -71
- package/dist/debug/caller-info.js +53 -64
- package/dist/debug/namespace.js +80 -90
- package/dist/debug/output.js +172 -188
- package/dist/debug/types.js +1 -17
- package/dist/dlx/_internal.js +24 -43
- package/dist/dlx/arborist.js +162 -160
- package/dist/dlx/binary-cache.js +228 -200
- package/dist/dlx/binary-download.js +172 -211
- package/dist/dlx/binary-resolution.js +165 -157
- package/dist/dlx/binary-types.js +1 -17
- package/dist/dlx/binary.js +149 -189
- package/dist/dlx/cache.js +45 -30
- package/dist/dlx/detect.js +245 -159
- package/dist/dlx/dir.js +67 -51
- package/dist/dlx/firewall.js +62 -100
- package/dist/dlx/lockfile.js +122 -127
- package/dist/dlx/manifest.js +264 -274
- package/dist/dlx/package.js +241 -244
- package/dist/dlx/packages.js +99 -96
- package/dist/dlx/paths.js +73 -59
- package/dist/dlx/spec.js +52 -60
- package/dist/dlx/types.js +1 -17
- package/dist/eco/cargo/lockfile-format.js +19 -36
- package/dist/eco/cargo/manifest-format.js +17 -35
- package/dist/eco/cargo/parse-lockfile.js +210 -237
- package/dist/eco/manifest/analyze-lockfile.js +46 -63
- package/dist/eco/manifest/detect-format.js +66 -90
- package/dist/eco/manifest/find-packages.js +39 -64
- package/dist/eco/manifest/get-package-versions.js +27 -48
- package/dist/eco/manifest/get-package.js +21 -40
- package/dist/eco/manifest/manifest-error.js +14 -35
- package/dist/eco/manifest/parse-lockfile.js +40 -86
- package/dist/eco/manifest/parse-manifest.js +26 -43
- package/dist/eco/manifest/parse.js +26 -47
- package/dist/eco/manifest/types.js +1 -17
- package/dist/eco/npm/bun/exec.js +23 -32
- package/dist/eco/npm/manifest-format.js +21 -35
- package/dist/eco/npm/npm/exec.js +51 -61
- package/dist/eco/npm/npm/extract-package-name-from-path.js +28 -50
- package/dist/eco/npm/npm/flags.js +80 -52
- package/dist/eco/npm/npm/lockfile-format.js +21 -40
- package/dist/eco/npm/npm/parse-git-url.js +26 -40
- package/dist/eco/npm/npm/parse-lockfile.js +184 -210
- package/dist/eco/npm/parse-package-json.js +71 -102
- package/dist/eco/npm/pnpm/detect-pnpm-version.js +22 -43
- package/dist/eco/npm/pnpm/exec.js +51 -62
- package/dist/eco/npm/pnpm/flags.js +75 -68
- package/dist/eco/npm/pnpm/lockfile-format.js +19 -36
- package/dist/eco/npm/pnpm/parse-lockfile.js +235 -259
- package/dist/eco/npm/pnpm/parse-pnpm-package-id-v5.js +37 -47
- package/dist/eco/npm/pnpm/parse-pnpm-package-id-v6-v9.js +36 -49
- package/dist/eco/npm/script.js +82 -90
- package/dist/eco/npm/vlt/exec.js +24 -32
- package/dist/eco/npm/yarnpkg/yarn/exec.js +60 -59
- package/dist/eco/npm/yarnpkg/yarn/lockfile-format.js +20 -36
- package/dist/eco/npm/yarnpkg/yarn/parse-lockfile.js +194 -242
- package/dist/eco/npm/yarnpkg/yarn/parse-yarn-descriptor.js +37 -61
- package/dist/eco/purl.js +50 -60
- package/dist/eco/types.js +1 -17
- package/dist/effects/pulse-frames.js +64 -65
- package/dist/effects/shimmer-keyframes.js +71 -52
- package/dist/effects/shimmer-terminal.js +81 -50
- package/dist/effects/shimmer.js +290 -153
- package/dist/env/boolean.js +42 -43
- package/dist/env/case-insensitive.js +54 -39
- package/dist/env/ci.js +29 -31
- package/dist/env/debug.js +28 -31
- package/dist/env/github.js +144 -59
- package/dist/env/home.js +38 -31
- package/dist/env/locale.js +59 -39
- package/dist/env/node-auth-token.js +28 -31
- package/dist/env/node-env.js +28 -31
- package/dist/env/npm.js +94 -47
- package/dist/env/number.js +50 -51
- package/dist/env/package-manager.js +95 -83
- package/dist/env/path.js +28 -31
- package/dist/env/pre-commit.js +30 -32
- package/dist/env/proxy.js +121 -122
- package/dist/env/rewire.js +204 -96
- package/dist/env/shell.js +28 -31
- package/dist/env/socket-cli.js +233 -81
- package/dist/env/socket.js +521 -156
- package/dist/env/string.js +43 -44
- package/dist/env/temp-dir.js +59 -39
- package/dist/env/term.js +28 -31
- package/dist/env/test.js +65 -43
- package/dist/env/types.js +1 -17
- package/dist/env/windows.js +78 -43
- package/dist/env/xdg.js +62 -39
- package/dist/errors/message.js +40 -46
- package/dist/errors/predicates.js +61 -49
- package/dist/errors/stack.js +24 -36
- package/dist/events/exit/_internal.js +86 -103
- package/dist/events/exit/handler.js +48 -55
- package/dist/events/exit/intercept.js +49 -70
- package/dist/events/exit/lifecycle.js +92 -101
- package/dist/events/exit/signals.js +25 -31
- package/dist/events/exit/types.js +1 -17
- package/dist/events/warning/handler.js +43 -40
- package/dist/events/warning/suppress.js +111 -90
- package/dist/external/@npmcli/package-json/lib/read-package.js +132 -153
- package/dist/external/@npmcli/package-json/lib/sort.js +73 -105
- package/dist/external/@npmcli/package-json.js +12705 -15140
- package/dist/external/@npmcli/promise-spawn.js +451 -472
- package/dist/external/@sinclair/typebox/value.js +7443 -9002
- package/dist/external/@sinclair/typebox.js +7516 -7885
- package/dist/external/@socketregistry/is-unicode-supported.js +31 -39
- package/dist/external/@socketregistry/packageurl-js.js +6127 -7369
- package/dist/external/@socketregistry/yocto-spinner.js +394 -455
- package/dist/external/@yarnpkg/extensions.js +435 -1022
- package/dist/external/adm-zip.js +2313 -2673
- package/dist/external/debug.js +700 -687
- package/dist/external/external-pack.js +2658 -3171
- package/dist/external/fast-sort.js +124 -138
- package/dist/external/get-east-asian-width.js +70 -64
- package/dist/external/libnpmexec.js +28 -31
- package/dist/external/npm-pack.js +43617 -50137
- package/dist/external/p-map.js +198 -222
- package/dist/external/pico-pack.js +6735 -7304
- package/dist/external/pony-cause.js +143 -139
- package/dist/external/shell-quote.js +226 -0
- package/dist/external/spdx-pack.js +1283 -1403
- package/dist/external/streaming-iterables.js +835 -1052
- package/dist/external/tar-fs.js +2769 -3048
- package/dist/external/which.js +267 -251
- package/dist/external/yargs-parser.js +851 -1074
- package/dist/external-tools/bazel/asset-names.js +98 -90
- package/dist/external-tools/bazel/from-download.js +52 -46
- package/dist/external-tools/bazel/from-path.js +27 -38
- package/dist/external-tools/bazel/read-bazel-version-file.js +35 -57
- package/dist/external-tools/bazel/resolve-asset-url.js +24 -39
- package/dist/external-tools/bazel/resolve-bazel-version.js +34 -56
- package/dist/external-tools/bazel/resolve.js +44 -58
- package/dist/external-tools/bazel/types.js +1 -17
- package/dist/external-tools/cdxgen/asset-names.js +59 -66
- package/dist/external-tools/cdxgen/from-download.js +52 -80
- package/dist/external-tools/cdxgen/from-path.js +19 -37
- package/dist/external-tools/cdxgen/from-vfs.js +22 -43
- package/dist/external-tools/cdxgen/resolve.js +48 -63
- package/dist/external-tools/cdxgen/types.js +1 -17
- package/dist/external-tools/from-download.js +107 -67
- package/dist/external-tools/janus/asset-names.js +44 -51
- package/dist/external-tools/janus/from-download.js +45 -70
- package/dist/external-tools/janus/from-path.js +19 -37
- package/dist/external-tools/janus/from-vfs.js +22 -43
- package/dist/external-tools/janus/resolve.js +45 -63
- package/dist/external-tools/janus/types.js +1 -17
- package/dist/external-tools/jre/asset-names.js +109 -82
- package/dist/external-tools/jre/detect-platform-arch.js +25 -49
- package/dist/external-tools/jre/from-download.js +71 -67
- package/dist/external-tools/jre/from-java-home.js +27 -54
- package/dist/external-tools/jre/from-path.js +27 -49
- package/dist/external-tools/jre/from-vfs.js +39 -60
- package/dist/external-tools/jre/resolve.js +55 -68
- package/dist/external-tools/jre/types.js +1 -17
- package/dist/external-tools/manifest.js +130 -150
- package/dist/external-tools/opengrep/asset-names.js +60 -72
- package/dist/external-tools/opengrep/from-download.js +58 -80
- package/dist/external-tools/opengrep/from-path.js +19 -37
- package/dist/external-tools/opengrep/from-vfs.js +23 -43
- package/dist/external-tools/opengrep/resolve.js +43 -63
- package/dist/external-tools/opengrep/types.js +1 -17
- package/dist/external-tools/sbt/asset-names.js +21 -30
- package/dist/external-tools/sbt/from-download.js +50 -61
- package/dist/external-tools/sbt/from-path.js +23 -38
- package/dist/external-tools/sbt/from-vfs.js +30 -44
- package/dist/external-tools/sbt/resolve.js +45 -63
- package/dist/external-tools/sbt/types.js +1 -17
- package/dist/external-tools/synp/asset-names.js +11 -29
- package/dist/external-tools/synp/from-download.js +24 -41
- package/dist/external-tools/synp/from-path.js +19 -37
- package/dist/external-tools/synp/from-vfs.js +22 -43
- package/dist/external-tools/synp/resolve.js +43 -62
- package/dist/external-tools/synp/types.js +1 -17
- package/dist/external-tools/trivy/asset-names.js +51 -62
- package/dist/external-tools/trivy/from-download.js +42 -64
- package/dist/external-tools/trivy/from-path.js +19 -37
- package/dist/external-tools/trivy/from-vfs.js +22 -43
- package/dist/external-tools/trivy/resolve.js +43 -63
- package/dist/external-tools/trivy/types.js +1 -17
- package/dist/external-tools/trufflehog/asset-names.js +54 -66
- package/dist/external-tools/trufflehog/from-download.js +44 -62
- package/dist/external-tools/trufflehog/from-path.js +21 -37
- package/dist/external-tools/trufflehog/from-vfs.js +26 -43
- package/dist/external-tools/trufflehog/resolve.js +43 -63
- package/dist/external-tools/trufflehog/types.js +1 -17
- package/dist/external-tools/uv/asset-names.js +64 -74
- package/dist/external-tools/uv/from-download.js +44 -65
- package/dist/external-tools/uv/from-path.js +19 -37
- package/dist/external-tools/uv/from-vfs.js +22 -43
- package/dist/external-tools/uv/resolve.js +42 -63
- package/dist/external-tools/uv/types.js +1 -17
- package/dist/fs/_internal.js +40 -42
- package/dist/fs/access.js +57 -54
- package/dist/fs/encoding.js +80 -97
- package/dist/fs/find-up.js +126 -125
- package/dist/fs/inspect.js +168 -99
- package/dist/fs/path-cache.js +31 -32
- package/dist/fs/read-dir.js +102 -79
- package/dist/fs/read-file.js +177 -118
- package/dist/fs/read-json-cache.js +150 -134
- package/dist/fs/read-json.js +172 -187
- package/dist/fs/resolve-module.js +35 -58
- package/dist/fs/safe.js +278 -169
- package/dist/fs/types.js +1 -17
- package/dist/fs/unique.js +52 -48
- package/dist/fs/validate.js +56 -40
- package/dist/fs/write-json.js +109 -75
- package/dist/git/_internal.js +251 -216
- package/dist/git/changed.js +191 -74
- package/dist/git/repo.js +118 -104
- package/dist/git/staged.js +172 -62
- package/dist/git/types.js +1 -17
- package/dist/git/unstaged.js +175 -62
- package/dist/github/constants.js +25 -33
- package/dist/github/errors.js +46 -38
- package/dist/github/fetch.js +137 -82
- package/dist/github/ghsa.js +217 -151
- package/dist/github/refs-cache.js +54 -43
- package/dist/github/refs-graphql.js +97 -89
- package/dist/github/refs-rest.js +70 -101
- package/dist/github/refs.js +105 -64
- package/dist/github/token.js +96 -48
- package/dist/github/types.js +1 -17
- package/dist/globs/_internal.js +73 -82
- package/dist/globs/defaults.js +40 -59
- package/dist/globs/match.js +93 -77
- package/dist/globs/matcher.js +104 -92
- package/dist/globs/stream.js +43 -55
- package/dist/globs/types.js +1 -17
- package/dist/http-request/_internal.js +11 -38
- package/dist/http-request/browser-fetch.js +19 -29
- package/dist/http-request/browser.js +188 -206
- package/dist/http-request/checksums.js +101 -65
- package/dist/http-request/download-types.js +1 -17
- package/dist/http-request/download.js +195 -196
- package/dist/http-request/errors.js +39 -47
- package/dist/http-request/headers.js +95 -80
- package/dist/http-request/http-request.js +10 -35
- package/dist/http-request/node.js +71 -97
- package/dist/http-request/request-attempt.js +232 -285
- package/dist/http-request/request-types.js +1 -17
- package/dist/http-request/request.js +106 -108
- package/dist/http-request/response-reader.js +47 -51
- package/dist/http-request/response-types.js +22 -38
- package/dist/http-request/user-agent.js +73 -55
- package/dist/integrity.js +105 -106
- package/dist/ipc/_internal.js +34 -48
- package/dist/ipc/directory.js +55 -63
- package/dist/ipc/paths.js +52 -45
- package/dist/ipc/types.js +1 -17
- package/dist/ipc/write.js +81 -74
- package/dist/ipc-cli/get.js +29 -56
- package/dist/ipc-cli/types.js +1 -17
- package/dist/json/edit.js +182 -242
- package/dist/json/format.js +202 -103
- package/dist/json/parse.js +206 -109
- package/dist/json/types.js +1 -17
- package/dist/links/create.js +93 -60
- package/dist/links/types.js +1 -17
- package/dist/logger/_internal.js +109 -73
- package/dist/logger/browser.js +45 -56
- package/dist/logger/colors.js +31 -49
- package/dist/logger/console.js +89 -112
- package/dist/logger/default.js +19 -33
- package/dist/logger/logger.js +5 -29
- package/dist/logger/node.js +793 -854
- package/dist/logger/symbols-builder.js +54 -56
- package/dist/logger/symbols.js +135 -118
- package/dist/logger/types.js +1 -17
- package/dist/memo/_internal.js +39 -49
- package/dist/memo/async.js +133 -117
- package/dist/memo/clear.js +25 -34
- package/dist/memo/decorator.js +43 -37
- package/dist/memo/memoize.js +97 -88
- package/dist/memo/once.js +42 -41
- package/dist/memo/types.js +1 -17
- package/dist/memo/weak.js +45 -41
- package/dist/node/async-hooks.js +9 -30
- package/dist/node/child-process.js +9 -30
- package/dist/node/crypto.js +9 -30
- package/dist/node/events.js +9 -30
- package/dist/node/fs-promises.js +9 -30
- package/dist/node/fs.js +9 -30
- package/dist/node/http.js +9 -30
- package/dist/node/https.js +9 -30
- package/dist/node/module.js +20 -34
- package/dist/node/os.js +9 -30
- package/dist/node/path.js +9 -30
- package/dist/node/timers-promises.js +9 -30
- package/dist/node/url.js +9 -30
- package/dist/node/util.js +9 -30
- package/dist/objects/getters.js +185 -126
- package/dist/objects/inspect.js +85 -52
- package/dist/objects/mutate.js +96 -76
- package/dist/objects/predicates.js +112 -59
- package/dist/objects/sort.js +120 -76
- package/dist/objects/types.js +1 -17
- package/dist/packages/edit-class.js +198 -265
- package/dist/packages/edit.js +79 -86
- package/dist/packages/exports.js +146 -157
- package/dist/packages/isolation.js +159 -209
- package/dist/packages/licenses.js +207 -189
- package/dist/packages/manifest.js +134 -172
- package/dist/packages/normalize.js +91 -102
- package/dist/packages/operations.d.ts +2 -0
- package/dist/packages/operations.js +283 -254
- package/dist/packages/provenance.js +195 -245
- package/dist/packages/specs.js +94 -84
- package/dist/packages/types.js +1 -17
- package/dist/packages/validation.js +49 -50
- package/dist/paths/_internal.js +82 -86
- package/dist/paths/conversion.js +112 -65
- package/dist/paths/dirnames.js +17 -42
- package/dist/paths/exts.js +23 -54
- package/dist/paths/filenames.js +21 -50
- package/dist/paths/globs.js +15 -38
- package/dist/paths/normalize.js +215 -236
- package/dist/paths/packages.js +34 -49
- package/dist/paths/predicates.js +184 -106
- package/dist/paths/resolve.js +146 -128
- package/dist/paths/rewire.js +108 -72
- package/dist/paths/socket.js +252 -132
- package/dist/paths/walk.js +55 -60
- package/dist/perf/_internal.js +10 -28
- package/dist/perf/enabled.js +21 -30
- package/dist/perf/metrics.js +81 -67
- package/dist/perf/report.js +79 -80
- package/dist/perf/timer.js +180 -126
- package/dist/perf/types.js +1 -17
- package/dist/pkg-ext/data.js +29 -82
- package/dist/pkg-ext/types.js +1 -17
- package/dist/primordials/array.js +120 -198
- package/dist/primordials/buffer.js +28 -51
- package/dist/primordials/date.js +26 -51
- package/dist/primordials/error.js +33 -59
- package/dist/primordials/function.js +21 -41
- package/dist/primordials/globals.js +25 -48
- package/dist/primordials/json.js +14 -30
- package/dist/primordials/map-set.js +88 -152
- package/dist/primordials/math.js +59 -116
- package/dist/primordials/number.js +41 -76
- package/dist/primordials/object.js +56 -116
- package/dist/primordials/promise.js +28 -52
- package/dist/primordials/reflect.js +24 -52
- package/dist/primordials/regexp.js +25 -47
- package/dist/primordials/string.js +114 -167
- package/dist/primordials/symbol.js +40 -72
- package/dist/primordials/uncurry.js +38 -55
- package/dist/primordials/url.js +27 -66
- package/dist/process/_internal.js +7 -32
- package/dist/process/abort.js +29 -35
- package/dist/process/lock-instance.js +26 -30
- package/dist/process/lock-manager.js +279 -307
- package/dist/process/lock-types.js +1 -17
- package/dist/process/spawn/_internal.js +43 -55
- package/dist/process/spawn/child.js +172 -211
- package/dist/process/spawn/errors.js +116 -113
- package/dist/process/spawn/stdio.js +51 -35
- package/dist/process/spawn/types.js +1 -17
- package/dist/process/transient.js +49 -66
- package/dist/promises/_internal.js +31 -34
- package/dist/promises/iterate.js +238 -102
- package/dist/promises/options.js +123 -101
- package/dist/promises/queue.js +115 -136
- package/dist/promises/resolvers.js +77 -46
- package/dist/promises/retry.js +156 -101
- package/dist/promises/types.js +1 -17
- package/dist/regexps/escape.js +32 -30
- package/dist/regexps/hex.js +16 -33
- package/dist/regexps/spec.js +53 -81
- package/dist/releases/github-archives.js +127 -118
- package/dist/releases/github-asset-url.js +162 -146
- package/dist/releases/github-assets.js +37 -49
- package/dist/releases/github-auth.js +32 -48
- package/dist/releases/github-downloads.js +118 -138
- package/dist/releases/github-listing.js +175 -145
- package/dist/releases/github-retry-config.js +41 -47
- package/dist/releases/github-types.js +1 -17
- package/dist/releases/socket-btm.js +273 -192
- package/dist/schema/parse.js +35 -36
- package/dist/schema/types.js +1 -17
- package/dist/schema/validate.js +118 -99
- package/dist/sea/detect.js +57 -52
- package/dist/secrets/_internal.js +86 -67
- package/dist/secrets/find.js +96 -77
- package/dist/secrets/keychain.js +315 -309
- package/dist/secrets/linux.js +133 -135
- package/dist/secrets/macos.js +151 -147
- package/dist/secrets/rc.js +182 -181
- package/dist/secrets/socket-api-token.js +28 -43
- package/dist/secrets/types.js +1 -17
- package/dist/secrets/windows.js +184 -242
- package/dist/shadow/skip.js +51 -70
- package/dist/shadow/types.js +1 -17
- package/dist/shell/parse.d.ts +26 -0
- package/dist/shell/parse.js +35 -0
- package/dist/shell/quote.d.ts +19 -0
- package/dist/shell/quote.js +30 -0
- package/dist/smol/detect.js +67 -43
- package/dist/smol/http.js +33 -37
- package/dist/smol/https.js +31 -37
- package/dist/smol/manifest.js +33 -37
- package/dist/smol/path.js +33 -37
- package/dist/smol/primordial.js +35 -37
- package/dist/smol/purl.js +34 -37
- package/dist/smol/versions.js +31 -37
- package/dist/smol/vfs.js +46 -38
- package/dist/sorts/_internal.js +14 -40
- package/dist/sorts/natural.js +57 -64
- package/dist/sorts/semver.js +33 -43
- package/dist/sorts/strings.js +24 -30
- package/dist/sorts/types.js +1 -17
- package/dist/spinner/default.js +72 -63
- package/dist/spinner/format.js +86 -71
- package/dist/spinner/spinner.js +749 -797
- package/dist/spinner/types.js +1 -17
- package/dist/spinner/with.js +193 -137
- package/dist/ssri/convert.js +64 -47
- package/dist/ssri/parse.js +38 -37
- package/dist/ssri/validate.js +51 -34
- package/dist/stdio/_internal.js +50 -46
- package/dist/stdio/clear.js +208 -86
- package/dist/stdio/divider.js +170 -97
- package/dist/stdio/footer.js +116 -110
- package/dist/stdio/header.js +117 -90
- package/dist/stdio/progress.js +189 -218
- package/dist/stdio/prompts.js +244 -168
- package/dist/stdio/stderr.js +173 -78
- package/dist/stdio/stdout.js +177 -94
- package/dist/streams/parallel.js +58 -50
- package/dist/streams/transform.js +36 -45
- package/dist/strings/format.js +145 -63
- package/dist/strings/predicates.js +56 -34
- package/dist/strings/search.js +52 -42
- package/dist/strings/transform.js +113 -72
- package/dist/strings/types.js +1 -17
- package/dist/strings/width.js +89 -82
- package/dist/tables/bordered.js +81 -81
- package/dist/tables/padding.js +36 -46
- package/dist/tables/simple.js +62 -70
- package/dist/tables/types.js +1 -17
- package/dist/temporal/instant.js +72 -81
- package/dist/temporal/now.js +40 -31
- package/dist/temporal/slots.js +42 -36
- package/dist/temporal/system.js +36 -36
- package/dist/temporal/temporal.js +11 -41
- package/dist/themes/context.js +131 -69
- package/dist/themes/resolve.js +207 -132
- package/dist/themes/themes.js +225 -194
- package/dist/themes/types.js +1 -17
- package/dist/url/parse.js +48 -51
- package/dist/url/predicates.js +24 -31
- package/dist/url/search-params.js +133 -101
- package/dist/url/types.js +1 -17
- package/dist/versions/_internal.js +31 -33
- package/dist/versions/compare.js +80 -58
- package/dist/versions/modify.js +41 -39
- package/dist/versions/parse.js +88 -64
- package/dist/versions/range.js +58 -41
- package/dist/versions/types.js +1 -17
- package/dist/words/article.js +22 -30
- package/dist/words/capitalize.js +25 -34
- package/dist/words/pluralize.js +23 -31
- package/dist/words/types.js +1 -17
- package/package.json +17 -5
|
@@ -1,44 +1,62 @@
|
|
|
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
|
-
|
|
2
|
+
/* Socket Lib - Built with rolldown */
|
|
3
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
|
+
const require_primordials_json = require('../primordials/json.js');
|
|
5
|
+
const require_http_request_request = require('../http-request/request.js');
|
|
6
|
+
const require_github_constants = require('./constants.js');
|
|
7
|
+
const require_github_token = require('./token.js');
|
|
8
|
+
|
|
9
|
+
//#region src/github/refs-graphql.ts
|
|
10
|
+
/**
|
|
11
|
+
* @file Resolve a GitHub git ref via GraphQL. Split out of `github/refs.ts` for
|
|
12
|
+
* size hygiene. The fallback the REST tier-cascade calls when it detects the
|
|
13
|
+
* documented "200 + empty body" incident shape — GraphQL hits a different
|
|
14
|
+
* backend at GitHub (not the same Elasticsearch index as REST listings) and
|
|
15
|
+
* stays consistent through those incidents.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Resolve a ref to its commit SHA via GraphQL.
|
|
19
|
+
*
|
|
20
|
+
* Why this function exists: This is the fallback that `fetchRefSha` calls when
|
|
21
|
+
* the REST tier-cascade detects the "GitHub returned 200 + empty body" incident
|
|
22
|
+
* shape. GraphQL hits a different backend than REST listings, so it stays
|
|
23
|
+
* consistent through the kinds of incidents that produce empty REST responses.
|
|
24
|
+
*
|
|
25
|
+
* What it does: The REST cascade needs three separate calls (tag, branch,
|
|
26
|
+
* commit) because REST has no single "resolve any ref" endpoint. GraphQL DOES —
|
|
27
|
+
* `Repository.ref(qualifiedName)` resolves tags AND branches by their
|
|
28
|
+
* fully-qualified name, and `Repository.object(oid)` resolves a raw commit SHA.
|
|
29
|
+
* We bundle all three into ONE query using GraphQL aliases (`tagRef`,
|
|
30
|
+
* `branchRef`, `commit`) and pick whichever resolved.
|
|
31
|
+
*
|
|
32
|
+
* Annotated vs lightweight tags: In Git, a "lightweight tag" is just a name
|
|
33
|
+
* that points directly at a commit. An "annotated tag" is a separate object
|
|
34
|
+
* (with tagger info, message, etc.) that itself points at the commit. GraphQL's
|
|
35
|
+
* `Tag.target` field gives us the commit SHA for annotated tags in one shot —
|
|
36
|
+
* REST needs a _second_ HTTP call to dereference. The `... on Tag { target {
|
|
37
|
+
* oid } }` / `... on Commit { oid }` inline-fragments handle both shapes.
|
|
38
|
+
*
|
|
39
|
+
* Return contract:
|
|
40
|
+
*
|
|
41
|
+
* - Returns the SHA string when any form matches.
|
|
42
|
+
* - Returns `undefined` when the ref genuinely doesn't exist as a tag, branch, OR
|
|
43
|
+
* commit. The caller treats `undefined` the same as "REST cascade also
|
|
44
|
+
* failed" — a real "ref not found".
|
|
45
|
+
* - Returns `undefined` (not throws) on transport-level failures too: non-OK
|
|
46
|
+
* HTTP, empty GraphQL body, or JSON parse error. The REST cascade's "ref not
|
|
47
|
+
* found" message is more useful to the end user than a GraphQL transport
|
|
48
|
+
* error.
|
|
49
|
+
*/
|
|
30
50
|
async function fetchRefShaViaGraphQL(owner, repo, ref, options) {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
const query = `query($owner: String!, $repo: String!, $tag: String!, $branch: String!, $oid: GitObjectID!) {
|
|
51
|
+
const token = options.token || require_github_token.getGitHubToken();
|
|
52
|
+
const headers = {
|
|
53
|
+
Accept: "application/vnd.github.v3+json",
|
|
54
|
+
"Content-Type": "application/json",
|
|
55
|
+
"User-Agent": "socket-registry-github-client",
|
|
56
|
+
...options.headers
|
|
57
|
+
};
|
|
58
|
+
if (token) headers["Authorization"] = `Bearer ${token}`;
|
|
59
|
+
const query = `query($owner: String!, $repo: String!, $tag: String!, $branch: String!, $oid: GitObjectID!) {
|
|
42
60
|
repository(owner: $owner, name: $repo) {
|
|
43
61
|
tagRef: ref(qualifiedName: $tag) {
|
|
44
62
|
target {
|
|
@@ -56,54 +74,44 @@ async function fetchRefShaViaGraphQL(owner, repo, ref, options) {
|
|
|
56
74
|
}
|
|
57
75
|
}
|
|
58
76
|
}`;
|
|
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
|
-
const branchOid = repoData.branchRef?.target?.oid;
|
|
98
|
-
if (branchOid) {
|
|
99
|
-
return branchOid;
|
|
100
|
-
}
|
|
101
|
-
if (repoData.commit?.__typename === "Commit" && repoData.commit.oid) {
|
|
102
|
-
return repoData.commit.oid;
|
|
103
|
-
}
|
|
104
|
-
return void 0;
|
|
77
|
+
const oidArg = /^[a-f0-9]{40}$/i.test(ref) ? ref : "0000000000000000000000000000000000000000";
|
|
78
|
+
const response = await require_http_request_request.httpRequest(require_github_constants.GITHUB_GRAPHQL_URL, {
|
|
79
|
+
body: require_primordials_json.JSONStringify({
|
|
80
|
+
query,
|
|
81
|
+
variables: {
|
|
82
|
+
branch: `refs/heads/${ref}`,
|
|
83
|
+
oid: oidArg,
|
|
84
|
+
owner,
|
|
85
|
+
repo,
|
|
86
|
+
tag: `refs/tags/${ref}`
|
|
87
|
+
}
|
|
88
|
+
}),
|
|
89
|
+
headers,
|
|
90
|
+
method: "POST"
|
|
91
|
+
});
|
|
92
|
+
if (!response.ok || response.body.byteLength === 0) return;
|
|
93
|
+
let parsed;
|
|
94
|
+
try {
|
|
95
|
+
parsed = require_primordials_json.JSONParse(response.body.toString("utf8"));
|
|
96
|
+
} catch {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const repoData = parsed.data?.repository;
|
|
100
|
+
/* c8 ignore start */
|
|
101
|
+
if (!repoData) return;
|
|
102
|
+
/* c8 ignore stop */
|
|
103
|
+
const tagTarget = repoData.tagRef?.target;
|
|
104
|
+
if (tagTarget) {
|
|
105
|
+
/* c8 ignore start */
|
|
106
|
+
if (tagTarget.__typename === "Tag") return tagTarget.target?.oid ?? void 0;
|
|
107
|
+
if (tagTarget.__typename === "Commit") return tagTarget.oid ?? void 0;
|
|
108
|
+
}
|
|
109
|
+
const branchOid = repoData.branchRef?.target?.oid;
|
|
110
|
+
if (branchOid) return branchOid;
|
|
111
|
+
/* c8 ignore start */
|
|
112
|
+
if (repoData.commit?.__typename === "Commit" && repoData.commit.oid) return repoData.commit.oid;
|
|
113
|
+
/* c8 ignore stop */
|
|
105
114
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
});
|
|
115
|
+
|
|
116
|
+
//#endregion
|
|
117
|
+
exports.fetchRefShaViaGraphQL = fetchRefShaViaGraphQL;
|
package/dist/github/refs-rest.js
CHANGED
|
@@ -1,104 +1,73 @@
|
|
|
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
|
-
|
|
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_errors_message = require('../errors/message.js');
|
|
6
|
+
const require_github_constants = require('./constants.js');
|
|
7
|
+
const require_github_errors = require('./errors.js');
|
|
8
|
+
const require_github_fetch = require('./fetch.js');
|
|
9
|
+
const require_github_refs_graphql = require('./refs-graphql.js');
|
|
10
|
+
|
|
11
|
+
//#region src/github/refs-rest.ts
|
|
12
|
+
/**
|
|
13
|
+
* @file Resolve a GitHub git ref via REST tier-cascade. Split out of
|
|
14
|
+
* `github/refs.ts` for size hygiene. Walks tag → branch → commit endpoints in
|
|
15
|
+
* sequence; the first 200 OK wins. If any tier hits the documented
|
|
16
|
+
* 200-OK-empty-body incident shape, falls back to the GraphQL transport in
|
|
17
|
+
* `./refs-graphql`.
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* Fetch the SHA for a git ref from GitHub API. Internal helper that implements
|
|
21
|
+
* the multi-strategy ref resolution logic. Tries tags, branches, and direct
|
|
22
|
+
* commit lookups in sequence.
|
|
23
|
+
*
|
|
24
|
+
* @param owner - Repository owner.
|
|
25
|
+
* @param repo - Repository name.
|
|
26
|
+
* @param ref - Git reference to resolve.
|
|
27
|
+
* @param options - Resolution options with authentication token.
|
|
28
|
+
*
|
|
29
|
+
* @returns The full commit SHA
|
|
30
|
+
*
|
|
31
|
+
* @throws {Error} When ref cannot be resolved after all strategies fail
|
|
32
|
+
*/
|
|
32
33
|
async function fetchRefSha(owner, repo, ref, options) {
|
|
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
|
-
} catch (e3) {
|
|
70
|
-
note404(e3);
|
|
71
|
-
if (sawEmptyBody) {
|
|
72
|
-
let graphqlSha;
|
|
73
|
-
let graphqlErr;
|
|
74
|
-
try {
|
|
75
|
-
graphqlSha = await (0, import_refs_graphql.fetchRefShaViaGraphQL)(
|
|
76
|
-
owner,
|
|
77
|
-
repo,
|
|
78
|
-
ref,
|
|
79
|
-
fetchOptions
|
|
80
|
-
);
|
|
81
|
-
} catch (cause) {
|
|
82
|
-
graphqlErr = cause;
|
|
83
|
-
}
|
|
84
|
-
if (graphqlSha) {
|
|
85
|
-
return graphqlSha;
|
|
86
|
-
}
|
|
87
|
-
if (graphqlErr !== void 0) {
|
|
88
|
-
throw new import_error.ErrorCtor(
|
|
89
|
-
`Failed to resolve ref "${ref}" for ${owner}/${repo}: both REST and GraphQL backends degraded`,
|
|
90
|
-
{ cause: graphqlErr }
|
|
91
|
-
);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
throw new import_error.ErrorCtor(
|
|
95
|
-
`Failed to resolve ref "${ref}" for ${owner}/${repo}: ${(0, import_message.errorMessage)(e3)}`
|
|
96
|
-
);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
34
|
+
const fetchOptions = { token: options.token };
|
|
35
|
+
let sawEmptyBody = false;
|
|
36
|
+
const note404 = (e) => {
|
|
37
|
+
if (e instanceof require_github_errors.GitHubEmptyBodyError) sawEmptyBody = true;
|
|
38
|
+
return e;
|
|
39
|
+
};
|
|
40
|
+
try {
|
|
41
|
+
const tagData = await require_github_fetch.fetchGitHub(`${require_github_constants.GITHUB_API_BASE_URL}/repos/${owner}/${repo}/git/refs/tags/${ref}`, fetchOptions);
|
|
42
|
+
if (tagData.object.type === "tag") return (await require_github_fetch.fetchGitHub(tagData.object.url, fetchOptions)).object.sha;
|
|
43
|
+
return tagData.object.sha;
|
|
44
|
+
} catch (e) {
|
|
45
|
+
note404(e);
|
|
46
|
+
try {
|
|
47
|
+
return (await require_github_fetch.fetchGitHub(`${require_github_constants.GITHUB_API_BASE_URL}/repos/${owner}/${repo}/git/refs/heads/${ref}`, fetchOptions)).object.sha;
|
|
48
|
+
} catch (e2) {
|
|
49
|
+
note404(e2);
|
|
50
|
+
try {
|
|
51
|
+
return (await require_github_fetch.fetchGitHub(`${require_github_constants.GITHUB_API_BASE_URL}/repos/${owner}/${repo}/commits/${ref}`, fetchOptions)).sha;
|
|
52
|
+
} catch (e3) {
|
|
53
|
+
note404(e3);
|
|
54
|
+
if (sawEmptyBody) {
|
|
55
|
+
let graphqlSha;
|
|
56
|
+
let graphqlErr;
|
|
57
|
+
try {
|
|
58
|
+
graphqlSha = await require_github_refs_graphql.fetchRefShaViaGraphQL(owner, repo, ref, fetchOptions);
|
|
59
|
+
} catch (cause) {
|
|
60
|
+
graphqlErr = cause;
|
|
61
|
+
}
|
|
62
|
+
if (graphqlSha) return graphqlSha;
|
|
63
|
+
/* c8 ignore start */
|
|
64
|
+
if (graphqlErr !== void 0) throw new require_primordials_error.ErrorCtor(`Failed to resolve ref "${ref}" for ${owner}/${repo}: both REST and GraphQL backends degraded`, { cause: graphqlErr });
|
|
65
|
+
}
|
|
66
|
+
throw new require_primordials_error.ErrorCtor(`Failed to resolve ref "${ref}" for ${owner}/${repo}: ${require_errors_message.errorMessage(e3)}`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
100
70
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
});
|
|
71
|
+
|
|
72
|
+
//#endregion
|
|
73
|
+
exports.fetchRefSha = fetchRefSha;
|
package/dist/github/refs.js
CHANGED
|
@@ -1,67 +1,108 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/* Socket Lib - Built with
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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_github_refs_graphql = require('./refs-graphql.js');
|
|
6
|
+
const require_github_refs_rest = require('./refs-rest.js');
|
|
7
|
+
const require_github_refs_cache = require('./refs-cache.js');
|
|
8
|
+
let node_process = require("node:process");
|
|
9
|
+
node_process = require_runtime.__toESM(node_process);
|
|
10
|
+
|
|
11
|
+
//#region src/github/refs.ts
|
|
12
|
+
/**
|
|
13
|
+
* @file Resolve GitHub git refs (tag / branch / commit) to full commit SHAs.
|
|
14
|
+
* Two-tier strategy with cross-backend fallback:
|
|
15
|
+
*
|
|
16
|
+
* 1. REST cascade (`fetchRefSha`): tag → branch → commit. The first 200 OK wins.
|
|
17
|
+
* 2. GraphQL fallback (`fetchRefShaViaGraphQL`): fires only when the REST
|
|
18
|
+
* cascade hits the documented 200-OK-empty-body incident shape. GraphQL
|
|
19
|
+
* queries hit a different backend at GitHub, so it stays consistent
|
|
20
|
+
* through Elasticsearch outages that produce empty REST bodies. Caching: a
|
|
21
|
+
* `TtlCache` keyed by `${owner}/${repo}@${ref}` with a 5-minute TTL plus
|
|
22
|
+
* in-memory memoization. `clearRefCache()` clears the in-memory tier; the
|
|
23
|
+
* persistent disk tier survives so the cache warms quickly on the next
|
|
24
|
+
* run. Disable everything with the `DISABLE_GITHUB_CACHE` env var. Module
|
|
25
|
+
* shape: this file holds the public `resolveRefToSha` entry point.
|
|
26
|
+
* Supporting surface lives in sibling leaves and is re-exported here so
|
|
27
|
+
* existing `github/refs` importers keep working unchanged:
|
|
28
|
+
*
|
|
29
|
+
* - REST tier cascade — `./refs-rest`
|
|
30
|
+
* - GraphQL fallback — `./refs-graphql`
|
|
31
|
+
* - TtlCache singleton + clearRefCache — `./refs-cache`
|
|
32
|
+
*/
|
|
33
|
+
/**
|
|
34
|
+
* Resolve a git ref (tag, branch, or commit SHA) to its full commit SHA.
|
|
35
|
+
* Handles tags (annotated and lightweight), branches, and commit SHAs. Results
|
|
36
|
+
* are cached in-memory and on disk (with TTL) to minimize API calls.
|
|
37
|
+
*
|
|
38
|
+
* Resolution strategy:
|
|
39
|
+
*
|
|
40
|
+
* 1. Try as a tag (refs/tags/{ref})
|
|
41
|
+
* 2. If tag is annotated, dereference to get the commit SHA
|
|
42
|
+
* 3. If not a tag, try as a branch (refs/heads/{ref})
|
|
43
|
+
* 4. If not a branch, try as a commit SHA directly
|
|
44
|
+
*
|
|
45
|
+
* Caching behavior:
|
|
46
|
+
*
|
|
47
|
+
* - In-memory cache (Map) for immediate lookups
|
|
48
|
+
* - Persistent disk cache (cacache) for durability across runs
|
|
49
|
+
* - Default TTL: 5 minutes
|
|
50
|
+
* - Disable caching with `DISABLE_GITHUB_CACHE` env var
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ;```ts
|
|
54
|
+
* // Resolve a tag to commit SHA
|
|
55
|
+
* const sha = await resolveRefToSha('owner', 'repo', 'v1.0.0')
|
|
56
|
+
* console.log(sha) // 'a1b2c3d4e5f6...'
|
|
57
|
+
* ```
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ;```ts
|
|
61
|
+
* // Resolve a branch to latest commit SHA
|
|
62
|
+
* const sha = await resolveRefToSha('owner', 'repo', 'main')
|
|
63
|
+
* console.log(sha) // Latest commit on main branch
|
|
64
|
+
* ```
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* ;```ts
|
|
68
|
+
* // Resolve with custom token
|
|
69
|
+
* const sha = await resolveRefToSha('owner', 'repo', 'develop', {
|
|
70
|
+
* token: 'ghp_customtoken',
|
|
71
|
+
* })
|
|
72
|
+
* ```
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* ;```ts
|
|
76
|
+
* // Commit SHA passes through unchanged (but validates it exists)
|
|
77
|
+
* const sha = await resolveRefToSha('owner', 'repo', 'a1b2c3d4')
|
|
78
|
+
* console.log(sha) // Full 40-char SHA
|
|
79
|
+
* ```
|
|
80
|
+
*
|
|
81
|
+
* @param owner - Repository owner (user or organization name)
|
|
82
|
+
* @param repo - Repository name.
|
|
83
|
+
* @param ref - Git reference to resolve (tag name, branch name, or commit SHA)
|
|
84
|
+
* @param options - Resolution options including authentication token.
|
|
85
|
+
*
|
|
86
|
+
* @returns The full commit SHA (40-character hex string)
|
|
87
|
+
*
|
|
88
|
+
* @throws {Error} When ref cannot be resolved after trying all strategies
|
|
89
|
+
* @throws {GitHubRateLimitError} When API rate limit is exceeded
|
|
90
|
+
*/
|
|
46
91
|
async function resolveRefToSha(owner, repo, ref, options) {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
return await cache.getOrFetch(cacheKey, async () => {
|
|
57
|
-
return await (0, import_refs_rest.fetchRefSha)(owner, repo, ref, opts);
|
|
58
|
-
});
|
|
92
|
+
const opts = {
|
|
93
|
+
__proto__: null,
|
|
94
|
+
...options
|
|
95
|
+
};
|
|
96
|
+
const cacheKey = `${owner}/${repo}@${ref}`;
|
|
97
|
+
if (node_process.default.env["DISABLE_GITHUB_CACHE"]) return await require_github_refs_rest.fetchRefSha(owner, repo, ref, opts);
|
|
98
|
+
return await require_github_refs_cache.getGithubCache().getOrFetch(cacheKey, async () => {
|
|
99
|
+
return await require_github_refs_rest.fetchRefSha(owner, repo, ref, opts);
|
|
100
|
+
});
|
|
59
101
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
});
|
|
102
|
+
|
|
103
|
+
//#endregion
|
|
104
|
+
exports.clearRefCache = require_github_refs_cache.clearRefCache;
|
|
105
|
+
exports.fetchRefSha = require_github_refs_rest.fetchRefSha;
|
|
106
|
+
exports.fetchRefShaViaGraphQL = require_github_refs_graphql.fetchRefShaViaGraphQL;
|
|
107
|
+
exports.getGithubCache = require_github_refs_cache.getGithubCache;
|
|
108
|
+
exports.resolveRefToSha = resolveRefToSha;
|