@socketsecurity/lib 6.0.2 → 6.0.4
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 +34 -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.d.mts +48 -25
- package/dist/ai/profiles.js +95 -59
- package/dist/ai/spawn.d.mts +2 -2
- package/dist/ai/spawn.js +172 -194
- package/dist/ai/types.d.mts +3 -3
- package/dist/ai/types.js +1 -17
- package/dist/ai/worktree.d.mts +2 -2
- 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 -167
- 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.d.ts +32 -0
- package/dist/fs/access.js +66 -0
- package/dist/fs/encoding.js +80 -97
- package/dist/fs/find-up.js +126 -147
- 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.d.ts +57 -0
- package/dist/fs/resolve-module.js +40 -0
- 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 -43
- 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 +794 -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.d.ts +40 -0
- package/dist/paths/walk.js +58 -0
- 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.d.ts +8 -2
- package/dist/promises/_internal.js +31 -38
- 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 -155
- 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 -154
- package/dist/releases/github-retry-config.d.ts +31 -0
- package/dist/releases/github-retry-config.js +46 -0
- 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.d.ts +51 -0
- package/dist/smol/path.js +38 -0
- 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 +42 -5
package/dist/dlx/manifest.js
CHANGED
|
@@ -1,281 +1,271 @@
|
|
|
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
|
-
const
|
|
42
|
-
const
|
|
2
|
+
/* Socket Lib - Built with rolldown */
|
|
3
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
|
+
const require_node_fs = require('../node/fs.js');
|
|
5
|
+
const require_node_path = require('../node/path.js');
|
|
6
|
+
const require_primordials_date = require('../primordials/date.js');
|
|
7
|
+
const require_primordials_object = require('../primordials/object.js');
|
|
8
|
+
const require_primordials_json = require('../primordials/json.js');
|
|
9
|
+
const require_errors_message = require('../errors/message.js');
|
|
10
|
+
const require_logger_default = require('../logger/default.js');
|
|
11
|
+
const require_paths_socket = require('../paths/socket.js');
|
|
12
|
+
const require_fs_safe = require('../fs/safe.js');
|
|
13
|
+
const require_process_lock_instance = require('../process/lock-instance.js');
|
|
14
|
+
const require_fs_read_file = require('../fs/read-file.js');
|
|
15
|
+
|
|
16
|
+
//#region src/dlx/manifest.ts
|
|
17
|
+
/**
|
|
18
|
+
* @file DLX manifest storage utilities. Manages persistent caching of DLX
|
|
19
|
+
* package and binary metadata with TTL support and atomic file operations.
|
|
20
|
+
* Primary API (on {@link DlxManifest}):
|
|
21
|
+
*
|
|
22
|
+
* - `getManifestEntry(spec)` — retrieve a manifest entry by spec
|
|
23
|
+
* - `setPackageEntry(spec, key, details)` — store npm package metadata
|
|
24
|
+
* - `setBinaryEntry(spec, key, details)` — store binary download metadata
|
|
25
|
+
* - `getAllPackages()` — enumerate cached package names
|
|
26
|
+
* - `clear(name)` / `clearAll()` — eviction
|
|
27
|
+
* - `isFresh(record, ttlMs)` — TTL check The bare `get(name)` / `set(name,
|
|
28
|
+
* record)` methods are deprecated legacy shims kept for backward
|
|
29
|
+
* compatibility with pre-5.x callers. Features:
|
|
30
|
+
* - TTL-based cache expiration
|
|
31
|
+
* - Atomic file operations with locking
|
|
32
|
+
* - JSON-based persistent storage
|
|
33
|
+
* - Error-resistant implementation Storage Format:
|
|
34
|
+
* - Stores in ~/.socket/_dlx/.dlx-manifest.json
|
|
35
|
+
* - Per-spec manifest entries with timestamps
|
|
36
|
+
* - Thread-safe operations using process lock utility Usage:
|
|
37
|
+
* - Update check caching
|
|
38
|
+
* - Binary metadata tracking
|
|
39
|
+
* - Rate limiting registry requests
|
|
40
|
+
*/
|
|
41
|
+
const fs = /* @__PURE__ */ require_node_fs.getNodeFs();
|
|
42
|
+
const path = /* @__PURE__ */ require_node_path.getNodePath();
|
|
43
|
+
const logger = require_logger_default.getDefaultLogger();
|
|
44
|
+
/**
|
|
45
|
+
* Manifest file name.
|
|
46
|
+
*/
|
|
43
47
|
const MANIFEST_FILE_NAME = ".dlx-manifest.json";
|
|
48
|
+
/**
|
|
49
|
+
* Type guard for binary entries.
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ;```typescript
|
|
53
|
+
* const entry = manifest.getManifestEntry('https://example.com/tool')
|
|
54
|
+
* if (entry && isBinaryEntry(entry)) {
|
|
55
|
+
* console.log(entry.details.integrity)
|
|
56
|
+
* }
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
44
59
|
function isBinaryEntry(entry) {
|
|
45
|
-
|
|
60
|
+
return entry.type === "binary";
|
|
46
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Type guard for package entries.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ;```typescript
|
|
67
|
+
* const entry = manifest.getManifestEntry('@socketsecurity/cli@^2.0.0')
|
|
68
|
+
* if (entry && isPackageEntry(entry)) {
|
|
69
|
+
* console.log(entry.details.installed_version)
|
|
70
|
+
* }
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
47
73
|
function isPackageEntry(entry) {
|
|
48
|
-
|
|
49
|
-
}
|
|
50
|
-
class DlxManifest {
|
|
51
|
-
manifestPath;
|
|
52
|
-
lockPath;
|
|
53
|
-
constructor(options = {}) {
|
|
54
|
-
this.manifestPath = options.manifestPath ?? path.join((0, import_socket.getSocketDlxDir)(), MANIFEST_FILE_NAME);
|
|
55
|
-
this.lockPath = `${this.manifestPath}.lock`;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Read the entire manifest file.
|
|
59
|
-
*
|
|
60
|
-
* @private
|
|
61
|
-
*/
|
|
62
|
-
readManifest() {
|
|
63
|
-
try {
|
|
64
|
-
if (!fs.existsSync(this.manifestPath)) {
|
|
65
|
-
return { __proto__: null };
|
|
66
|
-
}
|
|
67
|
-
const rawContent = (0, import_read_file.readFileUtf8Sync)(this.manifestPath);
|
|
68
|
-
const content = (typeof rawContent === "string" ? rawContent : (
|
|
69
|
-
/* c8 ignore next - readFileUtf8Sync returns string in tests; Buffer fallback. */
|
|
70
|
-
rawContent.toString("utf8")
|
|
71
|
-
)).trim();
|
|
72
|
-
if (!content) {
|
|
73
|
-
return { __proto__: null };
|
|
74
|
-
}
|
|
75
|
-
return (0, import_json.JSONParse)(content);
|
|
76
|
-
} catch (e) {
|
|
77
|
-
logger.warn(`Failed to read manifest: ${(0, import_message.errorMessage)(e)}`);
|
|
78
|
-
return { __proto__: null };
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Write the manifest file atomically.
|
|
83
|
-
*
|
|
84
|
-
* @private
|
|
85
|
-
*/
|
|
86
|
-
async writeManifest(data) {
|
|
87
|
-
const manifestDir = path.dirname(this.manifestPath);
|
|
88
|
-
try {
|
|
89
|
-
(0, import_safe.safeMkdirSync)(manifestDir, { recursive: true });
|
|
90
|
-
} catch (e) {
|
|
91
|
-
logger.warn(`Failed to create manifest directory: ${(0, import_message.errorMessage)(e)}`);
|
|
92
|
-
}
|
|
93
|
-
const content = (0, import_json.JSONStringify)(data, void 0, 2);
|
|
94
|
-
const tempPath = `${this.manifestPath}.tmp`;
|
|
95
|
-
try {
|
|
96
|
-
fs.writeFileSync(tempPath, content, "utf8");
|
|
97
|
-
fs.renameSync(tempPath, this.manifestPath);
|
|
98
|
-
} catch (e) {
|
|
99
|
-
try {
|
|
100
|
-
if (fs.existsSync(tempPath)) {
|
|
101
|
-
(0, import_safe.safeDeleteSync)(tempPath);
|
|
102
|
-
}
|
|
103
|
-
} catch {
|
|
104
|
-
}
|
|
105
|
-
throw e;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Clear cached data for a specific entry.
|
|
110
|
-
*/
|
|
111
|
-
async clear(name) {
|
|
112
|
-
await import_lock_instance.processLock.withLock(this.lockPath, async () => {
|
|
113
|
-
try {
|
|
114
|
-
if (!fs.existsSync(this.manifestPath)) {
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
const content = fs.readFileSync(this.manifestPath, "utf8");
|
|
118
|
-
if (!content.trim()) {
|
|
119
|
-
return;
|
|
120
|
-
}
|
|
121
|
-
const data = (0, import_json.JSONParse)(content);
|
|
122
|
-
delete data[name];
|
|
123
|
-
await this.writeManifest(data);
|
|
124
|
-
} catch (e) {
|
|
125
|
-
logger.warn(`Failed to clear cache for ${name}: ${(0, import_message.errorMessage)(e)}`);
|
|
126
|
-
}
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Clear all cached data.
|
|
131
|
-
*/
|
|
132
|
-
async clearAll() {
|
|
133
|
-
await import_lock_instance.processLock.withLock(this.lockPath, async () => {
|
|
134
|
-
try {
|
|
135
|
-
if (fs.existsSync(this.manifestPath)) {
|
|
136
|
-
(0, import_safe.safeDeleteSync)(this.manifestPath);
|
|
137
|
-
}
|
|
138
|
-
} catch (e) {
|
|
139
|
-
logger.warn(`Failed to clear all cache: ${(0, import_message.errorMessage)(e)}`);
|
|
140
|
-
}
|
|
141
|
-
});
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Get cached update information for a package (legacy format).
|
|
145
|
-
*
|
|
146
|
-
* @deprecated Use getManifestEntry() for new code.
|
|
147
|
-
*/
|
|
148
|
-
get(name) {
|
|
149
|
-
const data = this.readManifest();
|
|
150
|
-
const entry = data[name];
|
|
151
|
-
if (entry && !("type" in entry)) {
|
|
152
|
-
return entry;
|
|
153
|
-
}
|
|
154
|
-
return void 0;
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Get all cached package names.
|
|
158
|
-
*/
|
|
159
|
-
getAllPackages() {
|
|
160
|
-
try {
|
|
161
|
-
if (!fs.existsSync(this.manifestPath)) {
|
|
162
|
-
return [];
|
|
163
|
-
}
|
|
164
|
-
const rawContent = (0, import_read_file.readFileUtf8Sync)(this.manifestPath);
|
|
165
|
-
const content = (typeof rawContent === "string" ? rawContent : (
|
|
166
|
-
/* c8 ignore next - readFileUtf8Sync returns string in tests; Buffer fallback. */
|
|
167
|
-
rawContent.toString("utf8")
|
|
168
|
-
)).trim();
|
|
169
|
-
if (!content) {
|
|
170
|
-
return [];
|
|
171
|
-
}
|
|
172
|
-
const data = (0, import_json.JSONParse)(content);
|
|
173
|
-
return (0, import_object.ObjectKeys)(data);
|
|
174
|
-
} catch (e) {
|
|
175
|
-
logger.warn(`Failed to get package list: ${(0, import_message.errorMessage)(e)}`);
|
|
176
|
-
return [];
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* Get a manifest entry by spec (e.g., "@socketsecurity/cli@^2.0.11").
|
|
181
|
-
*/
|
|
182
|
-
getManifestEntry(spec) {
|
|
183
|
-
const data = this.readManifest();
|
|
184
|
-
const entry = data[spec];
|
|
185
|
-
if (entry && "type" in entry) {
|
|
186
|
-
return entry;
|
|
187
|
-
}
|
|
188
|
-
return void 0;
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* Check if cached data is fresh based on TTL.
|
|
192
|
-
*/
|
|
193
|
-
isFresh(record, ttlMs) {
|
|
194
|
-
if (!record) {
|
|
195
|
-
return false;
|
|
196
|
-
}
|
|
197
|
-
const age = (0, import_date.DateNow)() - record.timestampFetch;
|
|
198
|
-
return age < ttlMs;
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* Store update information for a package (legacy format).
|
|
202
|
-
*
|
|
203
|
-
* @deprecated Use setPackageEntry() for new code.
|
|
204
|
-
*/
|
|
205
|
-
async set(name, record) {
|
|
206
|
-
await import_lock_instance.processLock.withLock(this.lockPath, async () => {
|
|
207
|
-
let data = {
|
|
208
|
-
__proto__: null
|
|
209
|
-
};
|
|
210
|
-
try {
|
|
211
|
-
if (fs.existsSync(this.manifestPath)) {
|
|
212
|
-
const content2 = fs.readFileSync(this.manifestPath, "utf8");
|
|
213
|
-
if (content2.trim()) {
|
|
214
|
-
data = (0, import_json.JSONParse)(content2);
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
} catch (e) {
|
|
218
|
-
logger.warn(`Failed to read existing manifest: ${(0, import_message.errorMessage)(e)}`);
|
|
219
|
-
}
|
|
220
|
-
data[name] = record;
|
|
221
|
-
const manifestDir = path.dirname(this.manifestPath);
|
|
222
|
-
try {
|
|
223
|
-
(0, import_safe.safeMkdirSync)(manifestDir, { recursive: true });
|
|
224
|
-
} catch (e) {
|
|
225
|
-
logger.warn(`Failed to create manifest directory: ${(0, import_message.errorMessage)(e)}`);
|
|
226
|
-
}
|
|
227
|
-
const content = (0, import_json.JSONStringify)(data, null, 2);
|
|
228
|
-
const tempPath = `${this.manifestPath}.tmp`;
|
|
229
|
-
try {
|
|
230
|
-
fs.writeFileSync(tempPath, content, "utf8");
|
|
231
|
-
fs.renameSync(tempPath, this.manifestPath);
|
|
232
|
-
} catch (e) {
|
|
233
|
-
try {
|
|
234
|
-
if (fs.existsSync(tempPath)) {
|
|
235
|
-
(0, import_safe.safeDeleteSync)(tempPath);
|
|
236
|
-
}
|
|
237
|
-
} catch {
|
|
238
|
-
}
|
|
239
|
-
throw e;
|
|
240
|
-
}
|
|
241
|
-
});
|
|
242
|
-
}
|
|
243
|
-
/**
|
|
244
|
-
* Set a binary manifest entry.
|
|
245
|
-
*/
|
|
246
|
-
async setBinaryEntry(spec, cacheKey, details) {
|
|
247
|
-
await import_lock_instance.processLock.withLock(this.lockPath, async () => {
|
|
248
|
-
const data = this.readManifest();
|
|
249
|
-
data[spec] = {
|
|
250
|
-
type: "binary",
|
|
251
|
-
cache_key: cacheKey,
|
|
252
|
-
timestamp: Date.now(),
|
|
253
|
-
details
|
|
254
|
-
};
|
|
255
|
-
await this.writeManifest(data);
|
|
256
|
-
});
|
|
257
|
-
}
|
|
258
|
-
/**
|
|
259
|
-
* Set a package manifest entry.
|
|
260
|
-
*/
|
|
261
|
-
async setPackageEntry(spec, cacheKey, details) {
|
|
262
|
-
await import_lock_instance.processLock.withLock(this.lockPath, async () => {
|
|
263
|
-
const data = this.readManifest();
|
|
264
|
-
data[spec] = {
|
|
265
|
-
type: "package",
|
|
266
|
-
cache_key: cacheKey,
|
|
267
|
-
timestamp: Date.now(),
|
|
268
|
-
details
|
|
269
|
-
};
|
|
270
|
-
await this.writeManifest(data);
|
|
271
|
-
});
|
|
272
|
-
}
|
|
74
|
+
return entry.type === "package";
|
|
273
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* DLX manifest storage manager with atomic operations. Supports both legacy
|
|
78
|
+
* format (package name keys) and new unified manifest format (spec keys).
|
|
79
|
+
*/
|
|
80
|
+
var DlxManifest = class {
|
|
81
|
+
manifestPath;
|
|
82
|
+
lockPath;
|
|
83
|
+
constructor(options = {}) {
|
|
84
|
+
this.manifestPath = options.manifestPath ?? path.join(require_paths_socket.getSocketDlxDir(), MANIFEST_FILE_NAME);
|
|
85
|
+
this.lockPath = `${this.manifestPath}.lock`;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Read the entire manifest file.
|
|
89
|
+
*
|
|
90
|
+
* @private
|
|
91
|
+
*/
|
|
92
|
+
readManifest() {
|
|
93
|
+
try {
|
|
94
|
+
if (!fs.existsSync(this.manifestPath)) return { __proto__: null };
|
|
95
|
+
const rawContent = /* @__PURE__ */ require_fs_read_file.readFileUtf8Sync(this.manifestPath);
|
|
96
|
+
const content = (typeof rawContent === "string" ? rawContent : rawContent.toString("utf8")).trim();
|
|
97
|
+
if (!content) return { __proto__: null };
|
|
98
|
+
return require_primordials_json.JSONParse(content);
|
|
99
|
+
} catch (e) {
|
|
100
|
+
logger.warn(`Failed to read manifest: ${require_errors_message.errorMessage(e)}`);
|
|
101
|
+
return { __proto__: null };
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Write the manifest file atomically.
|
|
106
|
+
*
|
|
107
|
+
* @private
|
|
108
|
+
*/
|
|
109
|
+
async writeManifest(data) {
|
|
110
|
+
const manifestDir = path.dirname(this.manifestPath);
|
|
111
|
+
try {
|
|
112
|
+
require_fs_safe.safeMkdirSync(manifestDir, { recursive: true });
|
|
113
|
+
} catch (e) {
|
|
114
|
+
logger.warn(`Failed to create manifest directory: ${require_errors_message.errorMessage(e)}`);
|
|
115
|
+
}
|
|
116
|
+
/* c8 ignore stop */
|
|
117
|
+
const content = require_primordials_json.JSONStringify(data, void 0, 2);
|
|
118
|
+
const tempPath = `${this.manifestPath}.tmp`;
|
|
119
|
+
try {
|
|
120
|
+
fs.writeFileSync(tempPath, content, "utf8");
|
|
121
|
+
fs.renameSync(tempPath, this.manifestPath);
|
|
122
|
+
} catch (e) {
|
|
123
|
+
try {
|
|
124
|
+
if (fs.existsSync(tempPath)) require_fs_safe.safeDeleteSync(tempPath);
|
|
125
|
+
} catch {}
|
|
126
|
+
throw e;
|
|
127
|
+
}
|
|
128
|
+
/* c8 ignore stop */
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Clear cached data for a specific entry.
|
|
132
|
+
*/
|
|
133
|
+
async clear(name) {
|
|
134
|
+
await require_process_lock_instance.processLock.withLock(this.lockPath, async () => {
|
|
135
|
+
try {
|
|
136
|
+
if (!fs.existsSync(this.manifestPath)) return;
|
|
137
|
+
const content = fs.readFileSync(this.manifestPath, "utf8");
|
|
138
|
+
if (!content.trim()) return;
|
|
139
|
+
const data = require_primordials_json.JSONParse(content);
|
|
140
|
+
delete data[name];
|
|
141
|
+
await this.writeManifest(data);
|
|
142
|
+
} catch (e) {
|
|
143
|
+
logger.warn(`Failed to clear cache for ${name}: ${require_errors_message.errorMessage(e)}`);
|
|
144
|
+
}
|
|
145
|
+
/* c8 ignore stop */
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Clear all cached data.
|
|
150
|
+
*/
|
|
151
|
+
async clearAll() {
|
|
152
|
+
await require_process_lock_instance.processLock.withLock(this.lockPath, async () => {
|
|
153
|
+
try {
|
|
154
|
+
if (fs.existsSync(this.manifestPath)) require_fs_safe.safeDeleteSync(this.manifestPath);
|
|
155
|
+
} catch (e) {
|
|
156
|
+
logger.warn(`Failed to clear all cache: ${require_errors_message.errorMessage(e)}`);
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Get cached update information for a package (legacy format).
|
|
162
|
+
*
|
|
163
|
+
* @deprecated Use getManifestEntry() for new code.
|
|
164
|
+
*/
|
|
165
|
+
get(name) {
|
|
166
|
+
const entry = this.readManifest()[name];
|
|
167
|
+
if (entry && !("type" in entry)) return entry;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Get all cached package names.
|
|
171
|
+
*/
|
|
172
|
+
getAllPackages() {
|
|
173
|
+
try {
|
|
174
|
+
if (!fs.existsSync(this.manifestPath)) return [];
|
|
175
|
+
const rawContent = /* @__PURE__ */ require_fs_read_file.readFileUtf8Sync(this.manifestPath);
|
|
176
|
+
const content = (typeof rawContent === "string" ? rawContent : rawContent.toString("utf8")).trim();
|
|
177
|
+
if (!content) return [];
|
|
178
|
+
return require_primordials_object.ObjectKeys(require_primordials_json.JSONParse(content));
|
|
179
|
+
} catch (e) {
|
|
180
|
+
logger.warn(`Failed to get package list: ${require_errors_message.errorMessage(e)}`);
|
|
181
|
+
return [];
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Get a manifest entry by spec (e.g., "@socketsecurity/cli@^2.0.11").
|
|
186
|
+
*/
|
|
187
|
+
getManifestEntry(spec) {
|
|
188
|
+
const entry = this.readManifest()[spec];
|
|
189
|
+
if (entry && "type" in entry) return entry;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Check if cached data is fresh based on TTL.
|
|
193
|
+
*/
|
|
194
|
+
isFresh(record, ttlMs) {
|
|
195
|
+
if (!record) return false;
|
|
196
|
+
return require_primordials_date.DateNow() - record.timestampFetch < ttlMs;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Store update information for a package (legacy format).
|
|
200
|
+
*
|
|
201
|
+
* @deprecated Use setPackageEntry() for new code.
|
|
202
|
+
*/
|
|
203
|
+
async set(name, record) {
|
|
204
|
+
await require_process_lock_instance.processLock.withLock(this.lockPath, async () => {
|
|
205
|
+
let data = { __proto__: null };
|
|
206
|
+
try {
|
|
207
|
+
if (fs.existsSync(this.manifestPath)) {
|
|
208
|
+
const content = fs.readFileSync(this.manifestPath, "utf8");
|
|
209
|
+
if (content.trim()) data = require_primordials_json.JSONParse(content);
|
|
210
|
+
}
|
|
211
|
+
} catch (e) {
|
|
212
|
+
logger.warn(`Failed to read existing manifest: ${require_errors_message.errorMessage(e)}`);
|
|
213
|
+
}
|
|
214
|
+
data[name] = record;
|
|
215
|
+
const manifestDir = path.dirname(this.manifestPath);
|
|
216
|
+
try {
|
|
217
|
+
require_fs_safe.safeMkdirSync(manifestDir, { recursive: true });
|
|
218
|
+
} catch (e) {
|
|
219
|
+
logger.warn(`Failed to create manifest directory: ${require_errors_message.errorMessage(e)}`);
|
|
220
|
+
}
|
|
221
|
+
const content = require_primordials_json.JSONStringify(data, null, 2);
|
|
222
|
+
const tempPath = `${this.manifestPath}.tmp`;
|
|
223
|
+
try {
|
|
224
|
+
fs.writeFileSync(tempPath, content, "utf8");
|
|
225
|
+
fs.renameSync(tempPath, this.manifestPath);
|
|
226
|
+
} catch (e) {
|
|
227
|
+
try {
|
|
228
|
+
if (fs.existsSync(tempPath)) require_fs_safe.safeDeleteSync(tempPath);
|
|
229
|
+
} catch {}
|
|
230
|
+
throw e;
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Set a binary manifest entry.
|
|
236
|
+
*/
|
|
237
|
+
async setBinaryEntry(spec, cacheKey, details) {
|
|
238
|
+
await require_process_lock_instance.processLock.withLock(this.lockPath, async () => {
|
|
239
|
+
const data = this.readManifest();
|
|
240
|
+
data[spec] = {
|
|
241
|
+
type: "binary",
|
|
242
|
+
cache_key: cacheKey,
|
|
243
|
+
timestamp: Date.now(),
|
|
244
|
+
details
|
|
245
|
+
};
|
|
246
|
+
await this.writeManifest(data);
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Set a package manifest entry.
|
|
251
|
+
*/
|
|
252
|
+
async setPackageEntry(spec, cacheKey, details) {
|
|
253
|
+
await require_process_lock_instance.processLock.withLock(this.lockPath, async () => {
|
|
254
|
+
const data = this.readManifest();
|
|
255
|
+
data[spec] = {
|
|
256
|
+
type: "package",
|
|
257
|
+
cache_key: cacheKey,
|
|
258
|
+
timestamp: Date.now(),
|
|
259
|
+
details
|
|
260
|
+
};
|
|
261
|
+
await this.writeManifest(data);
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
};
|
|
274
265
|
const dlxManifest = new DlxManifest();
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
});
|
|
266
|
+
|
|
267
|
+
//#endregion
|
|
268
|
+
exports.DlxManifest = DlxManifest;
|
|
269
|
+
exports.dlxManifest = dlxManifest;
|
|
270
|
+
exports.isBinaryEntry = isBinaryEntry;
|
|
271
|
+
exports.isPackageEntry = isPackageEntry;
|