@pnpm/exe 11.0.6 → 11.0.7
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/dist/node-gyp-bin/node-gyp +0 -0
- package/dist/node-gyp-bin/node-gyp.cmd +0 -0
- package/dist/node_modules/node-gyp/.release-please-manifest.json +1 -1
- package/dist/node_modules/node-gyp/bin/node-gyp.js +0 -0
- package/dist/node_modules/node-gyp/gyp/.release-please-manifest.json +1 -1
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSVersion.py +11 -3
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/__init__.py +2 -3
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs.py +1 -1
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py +2 -1
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja_test.py +26 -16
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/mac_tool.py +1 -1
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py +1 -1
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/simple_copy.py +2 -2
- package/dist/node_modules/node-gyp/gyp/pylib/packaging/metadata.py +3 -20
- package/dist/node_modules/node-gyp/gyp/pylib/packaging/tags.py +2 -14
- package/dist/node_modules/node-gyp/gyp/pyproject.toml +5 -3
- package/dist/node_modules/node-gyp/lib/download.js +55 -8
- package/dist/node_modules/node-gyp/lib/find-visualstudio.js +1 -1
- package/dist/node_modules/node-gyp/lib/process-release.js +17 -19
- package/dist/node_modules/node-gyp/package.json +3 -3
- package/dist/node_modules/{safer-buffer → undici}/LICENSE +1 -1
- package/dist/node_modules/undici/index-fetch.js +35 -0
- package/dist/node_modules/undici/index.js +169 -0
- package/dist/node_modules/undici/lib/api/abort-signal.js +57 -0
- package/dist/node_modules/undici/lib/api/api-connect.js +108 -0
- package/dist/node_modules/undici/lib/api/api-pipeline.js +251 -0
- package/dist/node_modules/undici/lib/api/api-request.js +214 -0
- package/dist/node_modules/undici/lib/api/api-stream.js +220 -0
- package/dist/node_modules/undici/lib/api/api-upgrade.js +108 -0
- package/dist/node_modules/undici/lib/api/index.js +7 -0
- package/dist/node_modules/undici/lib/api/readable.js +385 -0
- package/dist/node_modules/undici/lib/api/util.js +93 -0
- package/dist/node_modules/undici/lib/core/connect.js +240 -0
- package/dist/node_modules/undici/lib/core/constants.js +118 -0
- package/dist/node_modules/undici/lib/core/diagnostics.js +202 -0
- package/dist/node_modules/undici/lib/core/errors.js +425 -0
- package/dist/node_modules/undici/lib/core/request.js +405 -0
- package/dist/node_modules/undici/lib/core/symbols.js +67 -0
- package/dist/node_modules/undici/lib/core/tree.js +152 -0
- package/dist/node_modules/undici/lib/core/util.js +719 -0
- package/dist/node_modules/undici/lib/dispatcher/agent.js +130 -0
- package/dist/node_modules/undici/lib/dispatcher/balanced-pool.js +209 -0
- package/dist/node_modules/undici/lib/dispatcher/client-h1.js +1370 -0
- package/dist/node_modules/undici/lib/dispatcher/client-h2.js +744 -0
- package/dist/node_modules/undici/lib/dispatcher/client.js +623 -0
- package/dist/node_modules/undici/lib/dispatcher/dispatcher-base.js +198 -0
- package/dist/node_modules/undici/lib/dispatcher/dispatcher.js +65 -0
- package/dist/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +160 -0
- package/dist/node_modules/undici/lib/dispatcher/fixed-queue.js +117 -0
- package/dist/node_modules/undici/lib/dispatcher/pool-base.js +194 -0
- package/dist/node_modules/undici/lib/dispatcher/pool-stats.js +34 -0
- package/dist/node_modules/undici/lib/dispatcher/pool.js +107 -0
- package/dist/node_modules/undici/lib/dispatcher/proxy-agent.js +274 -0
- package/dist/node_modules/undici/lib/dispatcher/retry-agent.js +35 -0
- package/dist/node_modules/undici/lib/global.js +32 -0
- package/dist/node_modules/undici/lib/handler/decorator-handler.js +44 -0
- package/dist/node_modules/undici/lib/handler/redirect-handler.js +232 -0
- package/dist/node_modules/undici/lib/handler/retry-handler.js +374 -0
- package/dist/node_modules/undici/lib/interceptor/dns.js +375 -0
- package/dist/node_modules/undici/lib/interceptor/dump.js +123 -0
- package/dist/node_modules/undici/lib/interceptor/redirect-interceptor.js +21 -0
- package/dist/node_modules/undici/lib/interceptor/redirect.js +24 -0
- package/dist/node_modules/undici/lib/interceptor/response-error.js +86 -0
- package/dist/node_modules/undici/lib/interceptor/retry.js +19 -0
- package/dist/node_modules/undici/lib/llhttp/.gitkeep +0 -0
- package/dist/node_modules/undici/lib/llhttp/constants.js +278 -0
- package/dist/node_modules/undici/lib/llhttp/llhttp-wasm.js +5 -0
- package/dist/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +5 -0
- package/dist/node_modules/undici/lib/llhttp/utils.js +15 -0
- package/dist/node_modules/undici/lib/mock/mock-agent.js +160 -0
- package/dist/node_modules/undici/lib/mock/mock-client.js +59 -0
- package/dist/node_modules/undici/lib/mock/mock-errors.js +28 -0
- package/dist/node_modules/undici/lib/mock/mock-interceptor.js +207 -0
- package/dist/node_modules/undici/lib/mock/mock-pool.js +59 -0
- package/dist/node_modules/undici/lib/mock/mock-symbols.js +23 -0
- package/dist/node_modules/undici/lib/mock/mock-utils.js +367 -0
- package/dist/node_modules/undici/lib/mock/pending-interceptors-formatter.js +43 -0
- package/dist/node_modules/undici/lib/mock/pluralizer.js +29 -0
- package/dist/node_modules/undici/lib/util/timers.js +423 -0
- package/dist/node_modules/undici/lib/web/cache/cache.js +859 -0
- package/dist/node_modules/undici/lib/web/cache/cachestorage.js +152 -0
- package/dist/node_modules/undici/lib/web/cache/symbols.js +5 -0
- package/dist/node_modules/undici/lib/web/cache/util.js +45 -0
- package/dist/node_modules/undici/lib/web/cookies/constants.js +12 -0
- package/dist/node_modules/undici/lib/web/cookies/index.js +184 -0
- package/dist/node_modules/undici/lib/web/cookies/parse.js +317 -0
- package/dist/node_modules/undici/lib/web/cookies/util.js +282 -0
- package/dist/node_modules/undici/lib/web/eventsource/eventsource-stream.js +398 -0
- package/dist/node_modules/undici/lib/web/eventsource/eventsource.js +480 -0
- package/dist/node_modules/undici/lib/web/eventsource/util.js +37 -0
- package/dist/node_modules/{@npmcli/redact → undici/lib/web/fetch}/LICENSE +1 -1
- package/dist/node_modules/undici/lib/web/fetch/body.js +529 -0
- package/dist/node_modules/undici/lib/web/fetch/constants.js +124 -0
- package/dist/node_modules/undici/lib/web/fetch/data-url.js +744 -0
- package/dist/node_modules/undici/lib/web/fetch/dispatcher-weakref.js +46 -0
- package/dist/node_modules/undici/lib/web/fetch/file.js +126 -0
- package/dist/node_modules/undici/lib/web/fetch/formdata-parser.js +474 -0
- package/dist/node_modules/undici/lib/web/fetch/formdata.js +252 -0
- package/dist/node_modules/undici/lib/web/fetch/global.js +40 -0
- package/dist/node_modules/undici/lib/web/fetch/headers.js +687 -0
- package/dist/node_modules/undici/lib/web/fetch/index.js +2272 -0
- package/dist/node_modules/undici/lib/web/fetch/request.js +1037 -0
- package/dist/node_modules/undici/lib/web/fetch/response.js +610 -0
- package/dist/node_modules/undici/lib/web/fetch/symbols.js +9 -0
- package/dist/node_modules/undici/lib/web/fetch/util.js +1632 -0
- package/dist/node_modules/undici/lib/web/fetch/webidl.js +695 -0
- package/dist/node_modules/undici/lib/web/fileapi/encoding.js +290 -0
- package/dist/node_modules/undici/lib/web/fileapi/filereader.js +344 -0
- package/dist/node_modules/undici/lib/web/fileapi/progressevent.js +78 -0
- package/dist/node_modules/undici/lib/web/fileapi/symbols.js +10 -0
- package/dist/node_modules/undici/lib/web/fileapi/util.js +391 -0
- package/dist/node_modules/undici/lib/web/websocket/connection.js +371 -0
- package/dist/node_modules/undici/lib/web/websocket/constants.js +66 -0
- package/dist/node_modules/undici/lib/web/websocket/events.js +329 -0
- package/dist/node_modules/undici/lib/web/websocket/frame.js +96 -0
- package/dist/node_modules/undici/lib/web/websocket/permessage-deflate.js +100 -0
- package/dist/node_modules/undici/lib/web/websocket/receiver.js +490 -0
- package/dist/node_modules/undici/lib/web/websocket/sender.js +104 -0
- package/dist/node_modules/undici/lib/web/websocket/symbols.js +12 -0
- package/dist/node_modules/undici/lib/web/websocket/util.js +322 -0
- package/dist/node_modules/undici/lib/web/websocket/websocket.js +592 -0
- package/dist/node_modules/undici/package.json +160 -0
- package/dist/node_modules/undici/scripts/strip-comments.js +8 -0
- package/dist/node_modules/yallist/package.json +51 -12
- package/dist/pnpm.mjs +4468 -3877
- package/dist/worker.js +70 -67
- package/package.json +21 -13
- package/setup.js +17 -3
- package/dist/node_modules/@gar/promise-retry/LICENSE +0 -20
- package/dist/node_modules/@gar/promise-retry/lib/index.js +0 -62
- package/dist/node_modules/@gar/promise-retry/lib/retry.js +0 -109
- package/dist/node_modules/@gar/promise-retry/package.json +0 -45
- package/dist/node_modules/@npmcli/agent/lib/agents.js +0 -206
- package/dist/node_modules/@npmcli/agent/lib/dns.js +0 -53
- package/dist/node_modules/@npmcli/agent/lib/errors.js +0 -61
- package/dist/node_modules/@npmcli/agent/lib/index.js +0 -56
- package/dist/node_modules/@npmcli/agent/lib/options.js +0 -86
- package/dist/node_modules/@npmcli/agent/lib/proxy.js +0 -88
- package/dist/node_modules/@npmcli/agent/package.json +0 -60
- package/dist/node_modules/@npmcli/fs/lib/common/get-options.js +0 -20
- package/dist/node_modules/@npmcli/fs/lib/common/node.js +0 -9
- package/dist/node_modules/@npmcli/fs/lib/cp/LICENSE +0 -15
- package/dist/node_modules/@npmcli/fs/lib/cp/errors.js +0 -129
- package/dist/node_modules/@npmcli/fs/lib/cp/index.js +0 -22
- package/dist/node_modules/@npmcli/fs/lib/cp/polyfill.js +0 -428
- package/dist/node_modules/@npmcli/fs/lib/index.js +0 -13
- package/dist/node_modules/@npmcli/fs/lib/move-file.js +0 -78
- package/dist/node_modules/@npmcli/fs/lib/readdir-scoped.js +0 -20
- package/dist/node_modules/@npmcli/fs/lib/with-temp-dir.js +0 -39
- package/dist/node_modules/@npmcli/fs/package.json +0 -54
- package/dist/node_modules/@npmcli/redact/lib/deep-map.js +0 -71
- package/dist/node_modules/@npmcli/redact/lib/error.js +0 -28
- package/dist/node_modules/@npmcli/redact/lib/index.js +0 -44
- package/dist/node_modules/@npmcli/redact/lib/matchers.js +0 -88
- package/dist/node_modules/@npmcli/redact/lib/server.js +0 -59
- package/dist/node_modules/@npmcli/redact/lib/utils.js +0 -202
- package/dist/node_modules/@npmcli/redact/package.json +0 -52
- package/dist/node_modules/agent-base/LICENSE +0 -22
- package/dist/node_modules/agent-base/dist/helpers.js +0 -66
- package/dist/node_modules/agent-base/dist/index.js +0 -178
- package/dist/node_modules/agent-base/package.json +0 -46
- package/dist/node_modules/balanced-match/dist/commonjs/index.js +0 -59
- package/dist/node_modules/balanced-match/dist/esm/index.js +0 -54
- package/dist/node_modules/balanced-match/package.json +0 -68
- package/dist/node_modules/brace-expansion/LICENSE +0 -23
- package/dist/node_modules/brace-expansion/dist/commonjs/index.js +0 -201
- package/dist/node_modules/brace-expansion/dist/commonjs/package.json +0 -3
- package/dist/node_modules/brace-expansion/dist/esm/index.js +0 -197
- package/dist/node_modules/brace-expansion/dist/esm/package.json +0 -3
- package/dist/node_modules/brace-expansion/package.json +0 -64
- package/dist/node_modules/cacache/lib/content/path.js +0 -29
- package/dist/node_modules/cacache/lib/content/read.js +0 -165
- package/dist/node_modules/cacache/lib/content/rm.js +0 -18
- package/dist/node_modules/cacache/lib/content/write.js +0 -206
- package/dist/node_modules/cacache/lib/entry-index.js +0 -336
- package/dist/node_modules/cacache/lib/get.js +0 -170
- package/dist/node_modules/cacache/lib/index.js +0 -42
- package/dist/node_modules/cacache/lib/memoization.js +0 -72
- package/dist/node_modules/cacache/lib/put.js +0 -80
- package/dist/node_modules/cacache/lib/rm.js +0 -31
- package/dist/node_modules/cacache/lib/util/glob.js +0 -7
- package/dist/node_modules/cacache/lib/util/hash-to-segments.js +0 -7
- package/dist/node_modules/cacache/lib/util/tmp.js +0 -32
- package/dist/node_modules/cacache/lib/verify.js +0 -258
- package/dist/node_modules/cacache/package.json +0 -81
- package/dist/node_modules/debug/LICENSE +0 -20
- package/dist/node_modules/debug/package.json +0 -64
- package/dist/node_modules/debug/src/browser.js +0 -272
- package/dist/node_modules/debug/src/common.js +0 -292
- package/dist/node_modules/debug/src/index.js +0 -10
- package/dist/node_modules/debug/src/node.js +0 -263
- package/dist/node_modules/fs-minipass/LICENSE +0 -15
- package/dist/node_modules/fs-minipass/lib/index.js +0 -443
- package/dist/node_modules/fs-minipass/package.json +0 -54
- package/dist/node_modules/glob/dist/commonjs/glob.js +0 -248
- package/dist/node_modules/glob/dist/commonjs/has-magic.js +0 -27
- package/dist/node_modules/glob/dist/commonjs/ignore.js +0 -119
- package/dist/node_modules/glob/dist/commonjs/index.js +0 -68
- package/dist/node_modules/glob/dist/commonjs/index.min.js +0 -4
- package/dist/node_modules/glob/dist/commonjs/package.json +0 -3
- package/dist/node_modules/glob/dist/commonjs/pattern.js +0 -223
- package/dist/node_modules/glob/dist/commonjs/processor.js +0 -301
- package/dist/node_modules/glob/dist/commonjs/walker.js +0 -387
- package/dist/node_modules/glob/dist/esm/glob.js +0 -244
- package/dist/node_modules/glob/dist/esm/has-magic.js +0 -23
- package/dist/node_modules/glob/dist/esm/ignore.js +0 -115
- package/dist/node_modules/glob/dist/esm/index.js +0 -55
- package/dist/node_modules/glob/dist/esm/index.min.js +0 -4
- package/dist/node_modules/glob/dist/esm/package.json +0 -3
- package/dist/node_modules/glob/dist/esm/pattern.js +0 -219
- package/dist/node_modules/glob/dist/esm/processor.js +0 -294
- package/dist/node_modules/glob/dist/esm/walker.js +0 -381
- package/dist/node_modules/glob/package.json +0 -98
- package/dist/node_modules/http-cache-semantics/LICENSE +0 -9
- package/dist/node_modules/http-cache-semantics/index.js +0 -928
- package/dist/node_modules/http-cache-semantics/package.json +0 -22
- package/dist/node_modules/http-proxy-agent/LICENSE +0 -22
- package/dist/node_modules/http-proxy-agent/dist/index.js +0 -148
- package/dist/node_modules/http-proxy-agent/package.json +0 -47
- package/dist/node_modules/https-proxy-agent/LICENSE +0 -22
- package/dist/node_modules/https-proxy-agent/dist/index.js +0 -180
- package/dist/node_modules/https-proxy-agent/dist/parse-proxy-response.js +0 -101
- package/dist/node_modules/https-proxy-agent/package.json +0 -50
- package/dist/node_modules/iconv-lite/LICENSE +0 -21
- package/dist/node_modules/iconv-lite/encodings/dbcs-codec.js +0 -532
- package/dist/node_modules/iconv-lite/encodings/dbcs-data.js +0 -185
- package/dist/node_modules/iconv-lite/encodings/index.js +0 -23
- package/dist/node_modules/iconv-lite/encodings/internal.js +0 -218
- package/dist/node_modules/iconv-lite/encodings/sbcs-codec.js +0 -75
- package/dist/node_modules/iconv-lite/encodings/sbcs-data-generated.js +0 -451
- package/dist/node_modules/iconv-lite/encodings/sbcs-data.js +0 -178
- package/dist/node_modules/iconv-lite/encodings/tables/big5-added.json +0 -122
- package/dist/node_modules/iconv-lite/encodings/tables/cp936.json +0 -264
- package/dist/node_modules/iconv-lite/encodings/tables/cp949.json +0 -273
- package/dist/node_modules/iconv-lite/encodings/tables/cp950.json +0 -177
- package/dist/node_modules/iconv-lite/encodings/tables/eucjp.json +0 -182
- package/dist/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +0 -1
- package/dist/node_modules/iconv-lite/encodings/tables/gbk-added.json +0 -56
- package/dist/node_modules/iconv-lite/encodings/tables/shiftjis.json +0 -125
- package/dist/node_modules/iconv-lite/encodings/utf16.js +0 -187
- package/dist/node_modules/iconv-lite/encodings/utf32.js +0 -307
- package/dist/node_modules/iconv-lite/encodings/utf7.js +0 -283
- package/dist/node_modules/iconv-lite/lib/bom-handling.js +0 -48
- package/dist/node_modules/iconv-lite/lib/helpers/merge-exports.js +0 -13
- package/dist/node_modules/iconv-lite/lib/index.js +0 -182
- package/dist/node_modules/iconv-lite/lib/streams.js +0 -105
- package/dist/node_modules/iconv-lite/package.json +0 -70
- package/dist/node_modules/ip-address/LICENSE +0 -19
- package/dist/node_modules/ip-address/dist/address-error.js +0 -12
- package/dist/node_modules/ip-address/dist/common.js +0 -46
- package/dist/node_modules/ip-address/dist/ip-address.js +0 -35
- package/dist/node_modules/ip-address/dist/ipv4.js +0 -360
- package/dist/node_modules/ip-address/dist/ipv6.js +0 -1003
- package/dist/node_modules/ip-address/dist/v4/constants.js +0 -8
- package/dist/node_modules/ip-address/dist/v6/constants.js +0 -76
- package/dist/node_modules/ip-address/dist/v6/helpers.js +0 -45
- package/dist/node_modules/ip-address/dist/v6/regular-expressions.js +0 -95
- package/dist/node_modules/ip-address/package.json +0 -78
- package/dist/node_modules/lru-cache/dist/commonjs/diagnostics-channel.js +0 -10
- package/dist/node_modules/lru-cache/dist/commonjs/index.js +0 -1692
- package/dist/node_modules/lru-cache/dist/commonjs/index.min.js +0 -2
- package/dist/node_modules/lru-cache/dist/commonjs/package.json +0 -3
- package/dist/node_modules/lru-cache/dist/esm/browser/diagnostics-channel.js +0 -4
- package/dist/node_modules/lru-cache/dist/esm/browser/index.js +0 -1688
- package/dist/node_modules/lru-cache/dist/esm/browser/index.min.js +0 -2
- package/dist/node_modules/lru-cache/dist/esm/diagnostics-channel.js +0 -19
- package/dist/node_modules/lru-cache/dist/esm/index.js +0 -1688
- package/dist/node_modules/lru-cache/dist/esm/index.min.js +0 -2
- package/dist/node_modules/lru-cache/dist/esm/node/diagnostics-channel.js +0 -7
- package/dist/node_modules/lru-cache/dist/esm/node/index.js +0 -1688
- package/dist/node_modules/lru-cache/dist/esm/node/index.min.js +0 -2
- package/dist/node_modules/lru-cache/dist/esm/package.json +0 -3
- package/dist/node_modules/lru-cache/package.json +0 -126
- package/dist/node_modules/make-fetch-happen/LICENSE +0 -16
- package/dist/node_modules/make-fetch-happen/lib/cache/entry.js +0 -471
- package/dist/node_modules/make-fetch-happen/lib/cache/errors.js +0 -11
- package/dist/node_modules/make-fetch-happen/lib/cache/index.js +0 -49
- package/dist/node_modules/make-fetch-happen/lib/cache/key.js +0 -17
- package/dist/node_modules/make-fetch-happen/lib/cache/policy.js +0 -161
- package/dist/node_modules/make-fetch-happen/lib/fetch.js +0 -118
- package/dist/node_modules/make-fetch-happen/lib/index.js +0 -41
- package/dist/node_modules/make-fetch-happen/lib/options.js +0 -59
- package/dist/node_modules/make-fetch-happen/lib/pipeline.js +0 -41
- package/dist/node_modules/make-fetch-happen/lib/remote.js +0 -134
- package/dist/node_modules/make-fetch-happen/package.json +0 -75
- package/dist/node_modules/minimatch/dist/commonjs/assert-valid-pattern.js +0 -14
- package/dist/node_modules/minimatch/dist/commonjs/ast.js +0 -845
- package/dist/node_modules/minimatch/dist/commonjs/brace-expressions.js +0 -150
- package/dist/node_modules/minimatch/dist/commonjs/escape.js +0 -30
- package/dist/node_modules/minimatch/dist/commonjs/index.js +0 -1127
- package/dist/node_modules/minimatch/dist/commonjs/package.json +0 -3
- package/dist/node_modules/minimatch/dist/commonjs/unescape.js +0 -38
- package/dist/node_modules/minimatch/dist/esm/assert-valid-pattern.js +0 -10
- package/dist/node_modules/minimatch/dist/esm/ast.js +0 -841
- package/dist/node_modules/minimatch/dist/esm/brace-expressions.js +0 -146
- package/dist/node_modules/minimatch/dist/esm/escape.js +0 -26
- package/dist/node_modules/minimatch/dist/esm/index.js +0 -1114
- package/dist/node_modules/minimatch/dist/esm/package.json +0 -3
- package/dist/node_modules/minimatch/dist/esm/unescape.js +0 -34
- package/dist/node_modules/minimatch/package.json +0 -73
- package/dist/node_modules/minipass-collect/LICENSE +0 -15
- package/dist/node_modules/minipass-collect/index.js +0 -71
- package/dist/node_modules/minipass-collect/package.json +0 -30
- package/dist/node_modules/minipass-fetch/LICENSE +0 -28
- package/dist/node_modules/minipass-fetch/lib/abort-error.js +0 -17
- package/dist/node_modules/minipass-fetch/lib/blob.js +0 -97
- package/dist/node_modules/minipass-fetch/lib/body.js +0 -360
- package/dist/node_modules/minipass-fetch/lib/fetch-error.js +0 -32
- package/dist/node_modules/minipass-fetch/lib/headers.js +0 -267
- package/dist/node_modules/minipass-fetch/lib/index.js +0 -376
- package/dist/node_modules/minipass-fetch/lib/request.js +0 -282
- package/dist/node_modules/minipass-fetch/lib/response.js +0 -90
- package/dist/node_modules/minipass-fetch/package.json +0 -70
- package/dist/node_modules/minipass-flush/index.js +0 -39
- package/dist/node_modules/minipass-flush/node_modules/minipass/LICENSE +0 -15
- package/dist/node_modules/minipass-flush/node_modules/minipass/index.js +0 -649
- package/dist/node_modules/minipass-flush/node_modules/minipass/package.json +0 -56
- package/dist/node_modules/minipass-flush/package.json +0 -42
- package/dist/node_modules/minipass-pipeline/LICENSE +0 -15
- package/dist/node_modules/minipass-pipeline/index.js +0 -128
- package/dist/node_modules/minipass-pipeline/node_modules/minipass/LICENSE +0 -15
- package/dist/node_modules/minipass-pipeline/node_modules/minipass/index.js +0 -649
- package/dist/node_modules/minipass-pipeline/node_modules/minipass/package.json +0 -56
- package/dist/node_modules/minipass-pipeline/package.json +0 -29
- package/dist/node_modules/minipass-sized/LICENSE +0 -15
- package/dist/node_modules/minipass-sized/dist/commonjs/index.js +0 -69
- package/dist/node_modules/minipass-sized/dist/commonjs/package.json +0 -3
- package/dist/node_modules/minipass-sized/dist/esm/index.js +0 -64
- package/dist/node_modules/minipass-sized/dist/esm/package.json +0 -3
- package/dist/node_modules/minipass-sized/package.json +0 -69
- package/dist/node_modules/ms/index.js +0 -162
- package/dist/node_modules/ms/package.json +0 -38
- package/dist/node_modules/negotiator/LICENSE +0 -24
- package/dist/node_modules/negotiator/index.js +0 -83
- package/dist/node_modules/negotiator/lib/charset.js +0 -169
- package/dist/node_modules/negotiator/lib/encoding.js +0 -205
- package/dist/node_modules/negotiator/lib/language.js +0 -179
- package/dist/node_modules/negotiator/lib/mediaType.js +0 -294
- package/dist/node_modules/negotiator/package.json +0 -43
- package/dist/node_modules/p-map/index.js +0 -283
- package/dist/node_modules/p-map/license +0 -9
- package/dist/node_modules/p-map/package.json +0 -57
- package/dist/node_modules/path-scurry/dist/commonjs/index.js +0 -2018
- package/dist/node_modules/path-scurry/dist/commonjs/package.json +0 -3
- package/dist/node_modules/path-scurry/dist/esm/index.js +0 -1983
- package/dist/node_modules/path-scurry/dist/esm/package.json +0 -3
- package/dist/node_modules/path-scurry/package.json +0 -72
- package/dist/node_modules/safer-buffer/dangerous.js +0 -58
- package/dist/node_modules/safer-buffer/package.json +0 -34
- package/dist/node_modules/safer-buffer/safer.js +0 -77
- package/dist/node_modules/safer-buffer/tests.js +0 -406
- package/dist/node_modules/smart-buffer/.prettierrc.yaml +0 -5
- package/dist/node_modules/smart-buffer/LICENSE +0 -20
- package/dist/node_modules/smart-buffer/build/smartbuffer.js +0 -1233
- package/dist/node_modules/smart-buffer/build/utils.js +0 -108
- package/dist/node_modules/smart-buffer/package.json +0 -79
- package/dist/node_modules/socks/.eslintrc.cjs +0 -11
- package/dist/node_modules/socks/.prettierrc.yaml +0 -7
- package/dist/node_modules/socks/LICENSE +0 -20
- package/dist/node_modules/socks/build/client/socksclient.js +0 -793
- package/dist/node_modules/socks/build/common/constants.js +0 -108
- package/dist/node_modules/socks/build/common/helpers.js +0 -167
- package/dist/node_modules/socks/build/common/receivebuffer.js +0 -43
- package/dist/node_modules/socks/build/common/util.js +0 -25
- package/dist/node_modules/socks/build/index.js +0 -18
- package/dist/node_modules/socks/package.json +0 -58
- package/dist/node_modules/socks-proxy-agent/LICENSE +0 -22
- package/dist/node_modules/socks-proxy-agent/dist/index.js +0 -195
- package/dist/node_modules/socks-proxy-agent/package.json +0 -142
- package/dist/node_modules/ssri/lib/index.js +0 -550
- package/dist/node_modules/ssri/package.json +0 -66
- package/dist/node_modules/tar/node_modules/yallist/dist/commonjs/package.json +0 -3
- package/dist/node_modules/tar/node_modules/yallist/dist/esm/package.json +0 -3
- package/dist/node_modules/tar/node_modules/yallist/package.json +0 -68
- package/dist/node_modules/yallist/LICENSE +0 -15
- package/dist/node_modules/yallist/iterator.js +0 -8
- package/dist/node_modules/yallist/yallist.js +0 -426
- /package/dist/node_modules/{tar/node_modules/yallist → yallist}/dist/commonjs/index.js +0 -0
- /package/dist/node_modules/{balanced-match → yallist}/dist/commonjs/package.json +0 -0
- /package/dist/node_modules/{tar/node_modules/yallist → yallist}/dist/esm/index.js +0 -0
- /package/dist/node_modules/{balanced-match → yallist}/dist/esm/package.json +0 -0
|
@@ -1,206 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const events = require('events')
|
|
4
|
-
|
|
5
|
-
const contentPath = require('./path')
|
|
6
|
-
const fs = require('fs/promises')
|
|
7
|
-
const { moveFile } = require('@npmcli/fs')
|
|
8
|
-
const { Minipass } = require('minipass')
|
|
9
|
-
const Pipeline = require('minipass-pipeline')
|
|
10
|
-
const Flush = require('minipass-flush')
|
|
11
|
-
const path = require('path')
|
|
12
|
-
const ssri = require('ssri')
|
|
13
|
-
const { tmpName } = require('../util/tmp')
|
|
14
|
-
const fsm = require('fs-minipass')
|
|
15
|
-
|
|
16
|
-
module.exports = write
|
|
17
|
-
|
|
18
|
-
// Cache of move operations in process so we don't duplicate
|
|
19
|
-
const moveOperations = new Map()
|
|
20
|
-
|
|
21
|
-
async function write (cache, data, opts = {}) {
|
|
22
|
-
const { algorithms, size, integrity } = opts
|
|
23
|
-
|
|
24
|
-
if (typeof size === 'number' && data.length !== size) {
|
|
25
|
-
throw sizeError(size, data.length)
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
const sri = ssri.fromData(data, algorithms ? { algorithms } : {})
|
|
29
|
-
if (integrity && !ssri.checkData(data, integrity, opts)) {
|
|
30
|
-
throw checksumError(integrity, sri)
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
for (const algo in sri) {
|
|
34
|
-
const tmp = await makeTmp(cache, opts)
|
|
35
|
-
const hash = sri[algo].toString()
|
|
36
|
-
try {
|
|
37
|
-
await fs.writeFile(tmp.target, data, { flag: 'wx' })
|
|
38
|
-
await moveToDestination(tmp, cache, hash, opts)
|
|
39
|
-
} finally {
|
|
40
|
-
if (!tmp.moved) {
|
|
41
|
-
await fs.rm(tmp.target, { recursive: true, force: true })
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
return { integrity: sri, size: data.length }
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
module.exports.stream = writeStream
|
|
49
|
-
|
|
50
|
-
// writes proxied to the 'inputStream' that is passed to the Promise
|
|
51
|
-
// 'end' is deferred until content is handled.
|
|
52
|
-
class CacacheWriteStream extends Flush {
|
|
53
|
-
constructor (cache, opts) {
|
|
54
|
-
super()
|
|
55
|
-
this.opts = opts
|
|
56
|
-
this.cache = cache
|
|
57
|
-
this.inputStream = new Minipass()
|
|
58
|
-
this.inputStream.on('error', er => this.emit('error', er))
|
|
59
|
-
this.inputStream.on('drain', () => this.emit('drain'))
|
|
60
|
-
this.handleContentP = null
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
write (chunk, encoding, cb) {
|
|
64
|
-
if (!this.handleContentP) {
|
|
65
|
-
this.handleContentP = handleContent(
|
|
66
|
-
this.inputStream,
|
|
67
|
-
this.cache,
|
|
68
|
-
this.opts
|
|
69
|
-
)
|
|
70
|
-
this.handleContentP.catch(error => this.emit('error', error))
|
|
71
|
-
}
|
|
72
|
-
return this.inputStream.write(chunk, encoding, cb)
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
flush (cb) {
|
|
76
|
-
this.inputStream.end(() => {
|
|
77
|
-
if (!this.handleContentP) {
|
|
78
|
-
const e = new Error('Cache input stream was empty')
|
|
79
|
-
e.code = 'ENODATA'
|
|
80
|
-
// empty streams are probably emitting end right away.
|
|
81
|
-
// defer this one tick by rejecting a promise on it.
|
|
82
|
-
return Promise.reject(e).catch(cb)
|
|
83
|
-
}
|
|
84
|
-
// eslint-disable-next-line promise/catch-or-return
|
|
85
|
-
this.handleContentP.then(
|
|
86
|
-
(res) => {
|
|
87
|
-
res.integrity && this.emit('integrity', res.integrity)
|
|
88
|
-
// eslint-disable-next-line promise/always-return
|
|
89
|
-
res.size !== null && this.emit('size', res.size)
|
|
90
|
-
cb()
|
|
91
|
-
},
|
|
92
|
-
(er) => cb(er)
|
|
93
|
-
)
|
|
94
|
-
})
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
function writeStream (cache, opts = {}) {
|
|
99
|
-
return new CacacheWriteStream(cache, opts)
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
async function handleContent (inputStream, cache, opts) {
|
|
103
|
-
const tmp = await makeTmp(cache, opts)
|
|
104
|
-
try {
|
|
105
|
-
const res = await pipeToTmp(inputStream, cache, tmp.target, opts)
|
|
106
|
-
await moveToDestination(
|
|
107
|
-
tmp,
|
|
108
|
-
cache,
|
|
109
|
-
res.integrity,
|
|
110
|
-
opts
|
|
111
|
-
)
|
|
112
|
-
return res
|
|
113
|
-
} finally {
|
|
114
|
-
if (!tmp.moved) {
|
|
115
|
-
await fs.rm(tmp.target, { recursive: true, force: true })
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
async function pipeToTmp (inputStream, cache, tmpTarget, opts) {
|
|
121
|
-
const outStream = new fsm.WriteStream(tmpTarget, {
|
|
122
|
-
flags: 'wx',
|
|
123
|
-
})
|
|
124
|
-
|
|
125
|
-
if (opts.integrityEmitter) {
|
|
126
|
-
// we need to create these all simultaneously since they can fire in any order
|
|
127
|
-
const [integrity, size] = await Promise.all([
|
|
128
|
-
events.once(opts.integrityEmitter, 'integrity').then(res => res[0]),
|
|
129
|
-
events.once(opts.integrityEmitter, 'size').then(res => res[0]),
|
|
130
|
-
new Pipeline(inputStream, outStream).promise(),
|
|
131
|
-
])
|
|
132
|
-
return { integrity, size }
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
let integrity
|
|
136
|
-
let size
|
|
137
|
-
const hashStream = ssri.integrityStream({
|
|
138
|
-
integrity: opts.integrity,
|
|
139
|
-
algorithms: opts.algorithms,
|
|
140
|
-
size: opts.size,
|
|
141
|
-
})
|
|
142
|
-
hashStream.on('integrity', i => {
|
|
143
|
-
integrity = i
|
|
144
|
-
})
|
|
145
|
-
hashStream.on('size', s => {
|
|
146
|
-
size = s
|
|
147
|
-
})
|
|
148
|
-
|
|
149
|
-
const pipeline = new Pipeline(inputStream, hashStream, outStream)
|
|
150
|
-
await pipeline.promise()
|
|
151
|
-
return { integrity, size }
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
async function makeTmp (cache, opts) {
|
|
155
|
-
const tmpTarget = tmpName(cache, opts.tmpPrefix)
|
|
156
|
-
await fs.mkdir(path.dirname(tmpTarget), { recursive: true })
|
|
157
|
-
return {
|
|
158
|
-
target: tmpTarget,
|
|
159
|
-
moved: false,
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
async function moveToDestination (tmp, cache, sri) {
|
|
164
|
-
const destination = contentPath(cache, sri)
|
|
165
|
-
const destDir = path.dirname(destination)
|
|
166
|
-
if (moveOperations.has(destination)) {
|
|
167
|
-
return moveOperations.get(destination)
|
|
168
|
-
}
|
|
169
|
-
moveOperations.set(
|
|
170
|
-
destination,
|
|
171
|
-
fs.mkdir(destDir, { recursive: true })
|
|
172
|
-
.then(async () => {
|
|
173
|
-
await moveFile(tmp.target, destination, { overwrite: false })
|
|
174
|
-
tmp.moved = true
|
|
175
|
-
return tmp.moved
|
|
176
|
-
})
|
|
177
|
-
.catch(err => {
|
|
178
|
-
if (!err.message.startsWith('The destination file exists')) {
|
|
179
|
-
throw Object.assign(err, { code: 'EEXIST' })
|
|
180
|
-
}
|
|
181
|
-
}).finally(() => {
|
|
182
|
-
moveOperations.delete(destination)
|
|
183
|
-
})
|
|
184
|
-
|
|
185
|
-
)
|
|
186
|
-
return moveOperations.get(destination)
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
function sizeError (expected, found) {
|
|
190
|
-
/* eslint-disable-next-line max-len */
|
|
191
|
-
const err = new Error(`Bad data size: expected inserted data to be ${expected} bytes, but got ${found} instead`)
|
|
192
|
-
err.expected = expected
|
|
193
|
-
err.found = found
|
|
194
|
-
err.code = 'EBADSIZE'
|
|
195
|
-
return err
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
function checksumError (expected, found) {
|
|
199
|
-
const err = new Error(`Integrity check failed:
|
|
200
|
-
Wanted: ${expected}
|
|
201
|
-
Found: ${found}`)
|
|
202
|
-
err.code = 'EINTEGRITY'
|
|
203
|
-
err.expected = expected
|
|
204
|
-
err.found = found
|
|
205
|
-
return err
|
|
206
|
-
}
|
|
@@ -1,336 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const crypto = require('crypto')
|
|
4
|
-
const {
|
|
5
|
-
appendFile,
|
|
6
|
-
mkdir,
|
|
7
|
-
readFile,
|
|
8
|
-
readdir,
|
|
9
|
-
rm,
|
|
10
|
-
writeFile,
|
|
11
|
-
} = require('fs/promises')
|
|
12
|
-
const { Minipass } = require('minipass')
|
|
13
|
-
const path = require('path')
|
|
14
|
-
const ssri = require('ssri')
|
|
15
|
-
const { tmpName } = require('./util/tmp')
|
|
16
|
-
|
|
17
|
-
const contentPath = require('./content/path')
|
|
18
|
-
const hashToSegments = require('./util/hash-to-segments')
|
|
19
|
-
const indexV = require('../package.json')['cache-version'].index
|
|
20
|
-
const { moveFile } = require('@npmcli/fs')
|
|
21
|
-
|
|
22
|
-
const lsStreamConcurrency = 5
|
|
23
|
-
|
|
24
|
-
module.exports.NotFoundError = class NotFoundError extends Error {
|
|
25
|
-
constructor (cache, key) {
|
|
26
|
-
super(`No cache entry for ${key} found in ${cache}`)
|
|
27
|
-
this.code = 'ENOENT'
|
|
28
|
-
this.cache = cache
|
|
29
|
-
this.key = key
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
module.exports.compact = compact
|
|
34
|
-
|
|
35
|
-
async function compact (cache, key, matchFn, opts = {}) {
|
|
36
|
-
const bucket = bucketPath(cache, key)
|
|
37
|
-
const entries = await bucketEntries(bucket)
|
|
38
|
-
const newEntries = []
|
|
39
|
-
// we loop backwards because the bottom-most result is the newest
|
|
40
|
-
// since we add new entries with appendFile
|
|
41
|
-
for (let i = entries.length - 1; i >= 0; --i) {
|
|
42
|
-
const entry = entries[i]
|
|
43
|
-
// a null integrity could mean either a delete was appended
|
|
44
|
-
// or the user has simply stored an index that does not map
|
|
45
|
-
// to any content. we determine if the user wants to keep the
|
|
46
|
-
// null integrity based on the validateEntry function passed in options.
|
|
47
|
-
// if the integrity is null and no validateEntry is provided, we break
|
|
48
|
-
// as we consider the null integrity to be a deletion of everything
|
|
49
|
-
// that came before it.
|
|
50
|
-
if (entry.integrity === null && !opts.validateEntry) {
|
|
51
|
-
break
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// if this entry is valid, and it is either the first entry or
|
|
55
|
-
// the newEntries array doesn't already include an entry that
|
|
56
|
-
// matches this one based on the provided matchFn, then we add
|
|
57
|
-
// it to the beginning of our list
|
|
58
|
-
if ((!opts.validateEntry || opts.validateEntry(entry) === true) &&
|
|
59
|
-
(newEntries.length === 0 ||
|
|
60
|
-
!newEntries.find((oldEntry) => matchFn(oldEntry, entry)))) {
|
|
61
|
-
newEntries.unshift(entry)
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
const newIndex = '\n' + newEntries.map((entry) => {
|
|
66
|
-
const stringified = JSON.stringify(entry)
|
|
67
|
-
const hash = hashEntry(stringified)
|
|
68
|
-
return `${hash}\t${stringified}`
|
|
69
|
-
}).join('\n')
|
|
70
|
-
|
|
71
|
-
const setup = async () => {
|
|
72
|
-
const target = tmpName(cache, opts.tmpPrefix)
|
|
73
|
-
await mkdir(path.dirname(target), { recursive: true })
|
|
74
|
-
return {
|
|
75
|
-
target,
|
|
76
|
-
moved: false,
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
const teardown = async (tmp) => {
|
|
81
|
-
if (!tmp.moved) {
|
|
82
|
-
return rm(tmp.target, { recursive: true, force: true })
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
const write = async (tmp) => {
|
|
87
|
-
await writeFile(tmp.target, newIndex, { flag: 'wx' })
|
|
88
|
-
await mkdir(path.dirname(bucket), { recursive: true })
|
|
89
|
-
// we use @npmcli/move-file directly here because we
|
|
90
|
-
// want to overwrite the existing file
|
|
91
|
-
await moveFile(tmp.target, bucket)
|
|
92
|
-
tmp.moved = true
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
// write the file atomically
|
|
96
|
-
const tmp = await setup()
|
|
97
|
-
try {
|
|
98
|
-
await write(tmp)
|
|
99
|
-
} finally {
|
|
100
|
-
await teardown(tmp)
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
// we reverse the list we generated such that the newest
|
|
104
|
-
// entries come first in order to make looping through them easier
|
|
105
|
-
// the true passed to formatEntry tells it to keep null
|
|
106
|
-
// integrity values, if they made it this far it's because
|
|
107
|
-
// validateEntry returned true, and as such we should return it
|
|
108
|
-
return newEntries.reverse().map((entry) => formatEntry(cache, entry, true))
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
module.exports.insert = insert
|
|
112
|
-
|
|
113
|
-
async function insert (cache, key, integrity, opts = {}) {
|
|
114
|
-
const { metadata, size, time } = opts
|
|
115
|
-
const bucket = bucketPath(cache, key)
|
|
116
|
-
const entry = {
|
|
117
|
-
key,
|
|
118
|
-
integrity: integrity && ssri.stringify(integrity),
|
|
119
|
-
time: time || Date.now(),
|
|
120
|
-
size,
|
|
121
|
-
metadata,
|
|
122
|
-
}
|
|
123
|
-
try {
|
|
124
|
-
await mkdir(path.dirname(bucket), { recursive: true })
|
|
125
|
-
const stringified = JSON.stringify(entry)
|
|
126
|
-
// NOTE - Cleverness ahoy!
|
|
127
|
-
//
|
|
128
|
-
// This works because it's tremendously unlikely for an entry to corrupt
|
|
129
|
-
// another while still preserving the string length of the JSON in
|
|
130
|
-
// question. So, we just slap the length in there and verify it on read.
|
|
131
|
-
//
|
|
132
|
-
// Thanks to @isaacs for the whiteboarding session that ended up with
|
|
133
|
-
// this.
|
|
134
|
-
await appendFile(bucket, `\n${hashEntry(stringified)}\t${stringified}`)
|
|
135
|
-
} catch (err) {
|
|
136
|
-
if (err.code === 'ENOENT') {
|
|
137
|
-
return undefined
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
throw err
|
|
141
|
-
}
|
|
142
|
-
return formatEntry(cache, entry)
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
module.exports.find = find
|
|
146
|
-
|
|
147
|
-
async function find (cache, key) {
|
|
148
|
-
const bucket = bucketPath(cache, key)
|
|
149
|
-
try {
|
|
150
|
-
const entries = await bucketEntries(bucket)
|
|
151
|
-
return entries.reduce((latest, next) => {
|
|
152
|
-
if (next && next.key === key) {
|
|
153
|
-
return formatEntry(cache, next)
|
|
154
|
-
} else {
|
|
155
|
-
return latest
|
|
156
|
-
}
|
|
157
|
-
}, null)
|
|
158
|
-
} catch (err) {
|
|
159
|
-
if (err.code === 'ENOENT') {
|
|
160
|
-
return null
|
|
161
|
-
} else {
|
|
162
|
-
throw err
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
module.exports.delete = del
|
|
168
|
-
|
|
169
|
-
function del (cache, key, opts = {}) {
|
|
170
|
-
if (!opts.removeFully) {
|
|
171
|
-
return insert(cache, key, null, opts)
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
const bucket = bucketPath(cache, key)
|
|
175
|
-
return rm(bucket, { recursive: true, force: true })
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
module.exports.lsStream = lsStream
|
|
179
|
-
|
|
180
|
-
function lsStream (cache) {
|
|
181
|
-
const indexDir = bucketDir(cache)
|
|
182
|
-
const stream = new Minipass({ objectMode: true })
|
|
183
|
-
|
|
184
|
-
// Set all this up to run on the stream and then just return the stream
|
|
185
|
-
Promise.resolve().then(async () => {
|
|
186
|
-
const { default: pMap } = await import('p-map')
|
|
187
|
-
const buckets = await readdirOrEmpty(indexDir)
|
|
188
|
-
await pMap(buckets, async (bucket) => {
|
|
189
|
-
const bucketPath = path.join(indexDir, bucket)
|
|
190
|
-
const subbuckets = await readdirOrEmpty(bucketPath)
|
|
191
|
-
await pMap(subbuckets, async (subbucket) => {
|
|
192
|
-
const subbucketPath = path.join(bucketPath, subbucket)
|
|
193
|
-
|
|
194
|
-
// "/cachename/<bucket 0xFF>/<bucket 0xFF>./*"
|
|
195
|
-
const subbucketEntries = await readdirOrEmpty(subbucketPath)
|
|
196
|
-
await pMap(subbucketEntries, async (entry) => {
|
|
197
|
-
const entryPath = path.join(subbucketPath, entry)
|
|
198
|
-
try {
|
|
199
|
-
const entries = await bucketEntries(entryPath)
|
|
200
|
-
// using a Map here prevents duplicate keys from showing up
|
|
201
|
-
// twice, I guess?
|
|
202
|
-
const reduced = entries.reduce((acc, entry) => {
|
|
203
|
-
acc.set(entry.key, entry)
|
|
204
|
-
return acc
|
|
205
|
-
}, new Map())
|
|
206
|
-
// reduced is a map of key => entry
|
|
207
|
-
for (const entry of reduced.values()) {
|
|
208
|
-
const formatted = formatEntry(cache, entry)
|
|
209
|
-
if (formatted) {
|
|
210
|
-
stream.write(formatted)
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
} catch (err) {
|
|
214
|
-
if (err.code === 'ENOENT') {
|
|
215
|
-
return undefined
|
|
216
|
-
}
|
|
217
|
-
throw err
|
|
218
|
-
}
|
|
219
|
-
},
|
|
220
|
-
{ concurrency: lsStreamConcurrency })
|
|
221
|
-
},
|
|
222
|
-
{ concurrency: lsStreamConcurrency })
|
|
223
|
-
},
|
|
224
|
-
{ concurrency: lsStreamConcurrency })
|
|
225
|
-
stream.end()
|
|
226
|
-
return stream
|
|
227
|
-
}).catch(err => stream.emit('error', err))
|
|
228
|
-
|
|
229
|
-
return stream
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
module.exports.ls = ls
|
|
233
|
-
|
|
234
|
-
async function ls (cache) {
|
|
235
|
-
const entries = await lsStream(cache).collect()
|
|
236
|
-
return entries.reduce((acc, xs) => {
|
|
237
|
-
acc[xs.key] = xs
|
|
238
|
-
return acc
|
|
239
|
-
}, {})
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
module.exports.bucketEntries = bucketEntries
|
|
243
|
-
|
|
244
|
-
async function bucketEntries (bucket, filter) {
|
|
245
|
-
const data = await readFile(bucket, 'utf8')
|
|
246
|
-
return _bucketEntries(data, filter)
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
function _bucketEntries (data) {
|
|
250
|
-
const entries = []
|
|
251
|
-
data.split('\n').forEach((entry) => {
|
|
252
|
-
if (!entry) {
|
|
253
|
-
return
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
const pieces = entry.split('\t')
|
|
257
|
-
if (!pieces[1] || hashEntry(pieces[1]) !== pieces[0]) {
|
|
258
|
-
// Hash is no good! Corruption or malice? Doesn't matter!
|
|
259
|
-
// EJECT EJECT
|
|
260
|
-
return
|
|
261
|
-
}
|
|
262
|
-
let obj
|
|
263
|
-
try {
|
|
264
|
-
obj = JSON.parse(pieces[1])
|
|
265
|
-
} catch (_) {
|
|
266
|
-
// eslint-ignore-next-line no-empty-block
|
|
267
|
-
}
|
|
268
|
-
// coverage disabled here, no need to test with an entry that parses to something falsey
|
|
269
|
-
// istanbul ignore else
|
|
270
|
-
if (obj) {
|
|
271
|
-
entries.push(obj)
|
|
272
|
-
}
|
|
273
|
-
})
|
|
274
|
-
return entries
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
module.exports.bucketDir = bucketDir
|
|
278
|
-
|
|
279
|
-
function bucketDir (cache) {
|
|
280
|
-
return path.join(cache, `index-v${indexV}`)
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
module.exports.bucketPath = bucketPath
|
|
284
|
-
|
|
285
|
-
function bucketPath (cache, key) {
|
|
286
|
-
const hashed = hashKey(key)
|
|
287
|
-
return path.join.apply(
|
|
288
|
-
path,
|
|
289
|
-
[bucketDir(cache)].concat(hashToSegments(hashed))
|
|
290
|
-
)
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
module.exports.hashKey = hashKey
|
|
294
|
-
|
|
295
|
-
function hashKey (key) {
|
|
296
|
-
return hash(key, 'sha256')
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
module.exports.hashEntry = hashEntry
|
|
300
|
-
|
|
301
|
-
function hashEntry (str) {
|
|
302
|
-
return hash(str, 'sha1')
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
function hash (str, digest) {
|
|
306
|
-
return crypto
|
|
307
|
-
.createHash(digest)
|
|
308
|
-
.update(str)
|
|
309
|
-
.digest('hex')
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
function formatEntry (cache, entry, keepAll) {
|
|
313
|
-
// Treat null digests as deletions. They'll shadow any previous entries.
|
|
314
|
-
if (!entry.integrity && !keepAll) {
|
|
315
|
-
return null
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
return {
|
|
319
|
-
key: entry.key,
|
|
320
|
-
integrity: entry.integrity,
|
|
321
|
-
path: entry.integrity ? contentPath(cache, entry.integrity) : undefined,
|
|
322
|
-
size: entry.size,
|
|
323
|
-
time: entry.time,
|
|
324
|
-
metadata: entry.metadata,
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
function readdirOrEmpty (dir) {
|
|
329
|
-
return readdir(dir).catch((err) => {
|
|
330
|
-
if (err.code === 'ENOENT' || err.code === 'ENOTDIR') {
|
|
331
|
-
return []
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
throw err
|
|
335
|
-
})
|
|
336
|
-
}
|
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const Collect = require('minipass-collect')
|
|
4
|
-
const { Minipass } = require('minipass')
|
|
5
|
-
const Pipeline = require('minipass-pipeline')
|
|
6
|
-
|
|
7
|
-
const index = require('./entry-index')
|
|
8
|
-
const memo = require('./memoization')
|
|
9
|
-
const read = require('./content/read')
|
|
10
|
-
|
|
11
|
-
async function getData (cache, key, opts = {}) {
|
|
12
|
-
const { integrity, memoize, size } = opts
|
|
13
|
-
const memoized = memo.get(cache, key, opts)
|
|
14
|
-
if (memoized && memoize !== false) {
|
|
15
|
-
return {
|
|
16
|
-
metadata: memoized.entry.metadata,
|
|
17
|
-
data: memoized.data,
|
|
18
|
-
integrity: memoized.entry.integrity,
|
|
19
|
-
size: memoized.entry.size,
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
const entry = await index.find(cache, key, opts)
|
|
24
|
-
if (!entry) {
|
|
25
|
-
throw new index.NotFoundError(cache, key)
|
|
26
|
-
}
|
|
27
|
-
const data = await read(cache, entry.integrity, { integrity, size })
|
|
28
|
-
if (memoize) {
|
|
29
|
-
memo.put(cache, entry, data, opts)
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
return {
|
|
33
|
-
data,
|
|
34
|
-
metadata: entry.metadata,
|
|
35
|
-
size: entry.size,
|
|
36
|
-
integrity: entry.integrity,
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
module.exports = getData
|
|
40
|
-
|
|
41
|
-
async function getDataByDigest (cache, key, opts = {}) {
|
|
42
|
-
const { integrity, memoize, size } = opts
|
|
43
|
-
const memoized = memo.get.byDigest(cache, key, opts)
|
|
44
|
-
if (memoized && memoize !== false) {
|
|
45
|
-
return memoized
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
const res = await read(cache, key, { integrity, size })
|
|
49
|
-
if (memoize) {
|
|
50
|
-
memo.put.byDigest(cache, key, res, opts)
|
|
51
|
-
}
|
|
52
|
-
return res
|
|
53
|
-
}
|
|
54
|
-
module.exports.byDigest = getDataByDigest
|
|
55
|
-
|
|
56
|
-
const getMemoizedStream = (memoized) => {
|
|
57
|
-
const stream = new Minipass()
|
|
58
|
-
stream.on('newListener', function (ev, cb) {
|
|
59
|
-
ev === 'metadata' && cb(memoized.entry.metadata)
|
|
60
|
-
ev === 'integrity' && cb(memoized.entry.integrity)
|
|
61
|
-
ev === 'size' && cb(memoized.entry.size)
|
|
62
|
-
})
|
|
63
|
-
stream.end(memoized.data)
|
|
64
|
-
return stream
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
function getStream (cache, key, opts = {}) {
|
|
68
|
-
const { memoize, size } = opts
|
|
69
|
-
const memoized = memo.get(cache, key, opts)
|
|
70
|
-
if (memoized && memoize !== false) {
|
|
71
|
-
return getMemoizedStream(memoized)
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
const stream = new Pipeline()
|
|
75
|
-
// Set all this up to run on the stream and then just return the stream
|
|
76
|
-
Promise.resolve().then(async () => {
|
|
77
|
-
const entry = await index.find(cache, key)
|
|
78
|
-
if (!entry) {
|
|
79
|
-
throw new index.NotFoundError(cache, key)
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
stream.emit('metadata', entry.metadata)
|
|
83
|
-
stream.emit('integrity', entry.integrity)
|
|
84
|
-
stream.emit('size', entry.size)
|
|
85
|
-
stream.on('newListener', function (ev, cb) {
|
|
86
|
-
ev === 'metadata' && cb(entry.metadata)
|
|
87
|
-
ev === 'integrity' && cb(entry.integrity)
|
|
88
|
-
ev === 'size' && cb(entry.size)
|
|
89
|
-
})
|
|
90
|
-
|
|
91
|
-
const src = read.readStream(
|
|
92
|
-
cache,
|
|
93
|
-
entry.integrity,
|
|
94
|
-
{ ...opts, size: typeof size !== 'number' ? entry.size : size }
|
|
95
|
-
)
|
|
96
|
-
|
|
97
|
-
if (memoize) {
|
|
98
|
-
const memoStream = new Collect.PassThrough()
|
|
99
|
-
memoStream.on('collect', data => memo.put(cache, entry, data, opts))
|
|
100
|
-
stream.unshift(memoStream)
|
|
101
|
-
}
|
|
102
|
-
stream.unshift(src)
|
|
103
|
-
return stream
|
|
104
|
-
}).catch((err) => stream.emit('error', err))
|
|
105
|
-
|
|
106
|
-
return stream
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
module.exports.stream = getStream
|
|
110
|
-
|
|
111
|
-
function getStreamDigest (cache, integrity, opts = {}) {
|
|
112
|
-
const { memoize } = opts
|
|
113
|
-
const memoized = memo.get.byDigest(cache, integrity, opts)
|
|
114
|
-
if (memoized && memoize !== false) {
|
|
115
|
-
const stream = new Minipass()
|
|
116
|
-
stream.end(memoized)
|
|
117
|
-
return stream
|
|
118
|
-
} else {
|
|
119
|
-
const stream = read.readStream(cache, integrity, opts)
|
|
120
|
-
if (!memoize) {
|
|
121
|
-
return stream
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
const memoStream = new Collect.PassThrough()
|
|
125
|
-
memoStream.on('collect', data => memo.put.byDigest(
|
|
126
|
-
cache,
|
|
127
|
-
integrity,
|
|
128
|
-
data,
|
|
129
|
-
opts
|
|
130
|
-
))
|
|
131
|
-
return new Pipeline(stream, memoStream)
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
module.exports.stream.byDigest = getStreamDigest
|
|
136
|
-
|
|
137
|
-
function info (cache, key, opts = {}) {
|
|
138
|
-
const { memoize } = opts
|
|
139
|
-
const memoized = memo.get(cache, key, opts)
|
|
140
|
-
if (memoized && memoize !== false) {
|
|
141
|
-
return Promise.resolve(memoized.entry)
|
|
142
|
-
} else {
|
|
143
|
-
return index.find(cache, key)
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
module.exports.info = info
|
|
147
|
-
|
|
148
|
-
async function copy (cache, key, dest, opts = {}) {
|
|
149
|
-
const entry = await index.find(cache, key, opts)
|
|
150
|
-
if (!entry) {
|
|
151
|
-
throw new index.NotFoundError(cache, key)
|
|
152
|
-
}
|
|
153
|
-
await read.copy(cache, entry.integrity, dest, opts)
|
|
154
|
-
return {
|
|
155
|
-
metadata: entry.metadata,
|
|
156
|
-
size: entry.size,
|
|
157
|
-
integrity: entry.integrity,
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
module.exports.copy = copy
|
|
162
|
-
|
|
163
|
-
async function copyByDigest (cache, key, dest, opts = {}) {
|
|
164
|
-
await read.copy(cache, key, dest, opts)
|
|
165
|
-
return key
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
module.exports.copy.byDigest = copyByDigest
|
|
169
|
-
|
|
170
|
-
module.exports.hasContent = read.hasContent
|