wrangler 2.17.0 → 2.18.0

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/src/kv/helpers.ts CHANGED
@@ -8,7 +8,7 @@ import type { Config } from "../config";
8
8
  const API_MAX = 10000;
9
9
  // The const below are halved from the API's true capacity to help avoid
10
10
  // hammering it with large requests.
11
- const BATCH_KEY_MAX = API_MAX / 2;
11
+ export const BATCH_KEY_MAX = API_MAX / 2;
12
12
 
13
13
  type KvArgs = {
14
14
  binding?: string;
@@ -256,7 +256,7 @@ export async function deleteKVKeyValue(
256
256
  /**
257
257
  * Formatter for converting e.g. 5328 --> 5,328
258
258
  */
259
- const formatNumber = new Intl.NumberFormat("en-US", {
259
+ export const formatNumber = new Intl.NumberFormat("en-US", {
260
260
  notation: "standard",
261
261
  }).format;
262
262
 
@@ -279,7 +279,8 @@ export async function putKVBulkKeyValue(
279
279
  accountId: string,
280
280
  namespaceId: string,
281
281
  keyValues: KeyValue[],
282
- quiet = false
282
+ quiet = false,
283
+ abortSignal?: AbortSignal
283
284
  ) {
284
285
  for (let index = 0; index < keyValues.length; index += BATCH_KEY_MAX) {
285
286
  if (!quiet && keyValues.length > BATCH_KEY_MAX) {
@@ -292,7 +293,9 @@ export async function putKVBulkKeyValue(
292
293
  method: "PUT",
293
294
  body: JSON.stringify(keyValues.slice(index, index + BATCH_KEY_MAX)),
294
295
  headers: { "Content-Type": "application/json" },
295
- }
296
+ },
297
+ undefined,
298
+ abortSignal
296
299
  );
297
300
  }
298
301
 
@@ -1 +1 @@
1
- {"program":{"fileNames":["../../../../../node_modules/typescript/lib/lib.es5.d.ts","../../../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../../../node_modules/typescript/lib/lib.esnext.d.ts","../../../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../../../node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","../../../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/@iarna/toml/index.d.ts","../../../../../node_modules/@webcontainer/env/dist/environment.d.ts","../../../../../node_modules/@webcontainer/env/dist/url.d.ts","../../../../../node_modules/@webcontainer/env/dist/index.d.ts","../../../../../node_modules/buffer/index.d.ts","../../../../../node_modules/undici/types/header.d.ts","../../../../../node_modules/undici/types/readable.d.ts","../../../../../node_modules/@types/node/assert.d.ts","../../../../../node_modules/@types/node/assert/strict.d.ts","../../../../../node_modules/@types/node/globals.d.ts","../../../../../node_modules/@types/node/async_hooks.d.ts","../../../../../node_modules/@types/node/buffer.d.ts","../../../../../node_modules/@types/node/child_process.d.ts","../../../../../node_modules/@types/node/cluster.d.ts","../../../../../node_modules/@types/node/console.d.ts","../../../../../node_modules/@types/node/constants.d.ts","../../../../../node_modules/@types/node/crypto.d.ts","../../../../../node_modules/@types/node/dgram.d.ts","../../../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../../../node_modules/@types/node/dns.d.ts","../../../../../node_modules/@types/node/dns/promises.d.ts","../../../../../node_modules/@types/node/domain.d.ts","../../../../../node_modules/@types/node/events.d.ts","../../../../../node_modules/@types/node/fs.d.ts","../../../../../node_modules/@types/node/fs/promises.d.ts","../../../../../node_modules/@types/node/http.d.ts","../../../../../node_modules/@types/node/http2.d.ts","../../../../../node_modules/@types/node/https.d.ts","../../../../../node_modules/@types/node/inspector.d.ts","../../../../../node_modules/@types/node/module.d.ts","../../../../../node_modules/@types/node/net.d.ts","../../../../../node_modules/@types/node/os.d.ts","../../../../../node_modules/@types/node/path.d.ts","../../../../../node_modules/@types/node/perf_hooks.d.ts","../../../../../node_modules/@types/node/process.d.ts","../../../../../node_modules/@types/node/punycode.d.ts","../../../../../node_modules/@types/node/querystring.d.ts","../../../../../node_modules/@types/node/readline.d.ts","../../../../../node_modules/@types/node/repl.d.ts","../../../../../node_modules/@types/node/stream.d.ts","../../../../../node_modules/@types/node/stream/promises.d.ts","../../../../../node_modules/@types/node/stream/consumers.d.ts","../../../../../node_modules/@types/node/stream/web.d.ts","../../../../../node_modules/@types/node/string_decoder.d.ts","../../../../../node_modules/@types/node/timers.d.ts","../../../../../node_modules/@types/node/timers/promises.d.ts","../../../../../node_modules/@types/node/tls.d.ts","../../../../../node_modules/@types/node/trace_events.d.ts","../../../../../node_modules/@types/node/tty.d.ts","../../../../../node_modules/@types/node/url.d.ts","../../../../../node_modules/@types/node/util.d.ts","../../../../../node_modules/@types/node/v8.d.ts","../../../../../node_modules/@types/node/vm.d.ts","../../../../../node_modules/@types/node/wasi.d.ts","../../../../../node_modules/@types/node/worker_threads.d.ts","../../../../../node_modules/@types/node/zlib.d.ts","../../../../../node_modules/@types/node/globals.global.d.ts","../../../../../node_modules/@types/node/index.d.ts","../../../../../node_modules/undici/types/file.d.ts","../../../../../node_modules/undici/types/fetch.d.ts","../../../../../node_modules/undici/types/formdata.d.ts","../../../../../node_modules/undici/types/connector.d.ts","../../../../../node_modules/undici/types/client.d.ts","../../../../../node_modules/undici/types/errors.d.ts","../../../../../node_modules/undici/types/dispatcher.d.ts","../../../../../node_modules/undici/types/global-dispatcher.d.ts","../../../../../node_modules/undici/types/global-origin.d.ts","../../../../../node_modules/undici/types/pool-stats.d.ts","../../../../../node_modules/undici/types/pool.d.ts","../../../../../node_modules/undici/types/handlers.d.ts","../../../../../node_modules/undici/types/balanced-pool.d.ts","../../../../../node_modules/undici/types/agent.d.ts","../../../../../node_modules/undici/types/mock-interceptor.d.ts","../../../../../node_modules/undici/types/mock-agent.d.ts","../../../../../node_modules/undici/types/mock-client.d.ts","../../../../../node_modules/undici/types/mock-pool.d.ts","../../../../../node_modules/undici/types/mock-errors.d.ts","../../../../../node_modules/undici/types/proxy-agent.d.ts","../../../../../node_modules/undici/types/api.d.ts","../../../../../node_modules/undici/types/cookies.d.ts","../../../../../node_modules/undici/types/patch.d.ts","../../../../../node_modules/undici/types/filereader.d.ts","../../../../../node_modules/undici/types/diagnostics-channel.d.ts","../../../../../node_modules/undici/types/websocket.d.ts","../../../../../node_modules/undici/types/content-type.d.ts","../../../../../node_modules/undici/types/interceptors.d.ts","../../../../../node_modules/undici/index.d.ts","../../../node_modules/locate-path/index.d.ts","../../../node_modules/find-up/index.d.ts","../../../../../node_modules/ci-info/index.d.ts","../../../../../node_modules/@types/is-ci/index.d.ts","../../is-ci.ts","../../is-interactive.ts","../../../../../node_modules/chalk/types/index.d.ts","../../../../../node_modules/cli-table3/index.d.ts","../../../../../node_modules/esbuild/lib/main.d.ts","../../environment-variables/factory.ts","../../logger.ts","../../config-cache.ts","../../../../../node_modules/@types/prompts/index.d.ts","../../dialogs.ts","../../../../../node_modules/xdg-app-paths/dist/types/mod.d.ts","../../global-wrangler-config-path.ts","../../../../../node_modules/open/index.d.ts","../../open-in-browser.ts","../../../../../node_modules/jsonc-parser/lib/umd/main.d.ts","../../parse.ts","../../user/access.ts","../../environment-variables/misc-variables.ts","../../user/auth-variables.ts","../../../package.json","../../cfetch/internal.ts","../../cfetch/index.ts","../../user/choose-account.tsx","../../user/generate-auth-url.ts","../../user/generate-random-state.ts","../../user/user.ts","../../user/index.ts","../../__tests__/helpers/run-in-tmp.ts","../../paths.ts","./identifiers.ts","./routes.ts","./filepath-routing.ts","./filepath-routing.test.ts","../constants.ts","./routes-consolidation.ts","./routes-consolidation.test.ts","./routes-transformation.ts","./routes-transformation.test.ts","../../errors.ts","./routes-validation.ts","../errors.ts","./routes-validation.test.ts","../../intl-polyfill.d.ts","../../../../../node_modules/@types/jest/node_modules/chalk/index.d.ts","../../../../../node_modules/@sinclair/typebox/typebox.d.ts","../../../../../node_modules/@jest/schemas/build/index.d.ts","../../../../../node_modules/@types/jest/node_modules/pretty-format/build/index.d.ts","../../../../../node_modules/@types/jest/node_modules/jest-diff/build/index.d.ts","../../../../../node_modules/@types/jest/node_modules/jest-matcher-utils/build/index.d.ts","../../../../../node_modules/@types/jest/index.d.ts"],"fileInfos":[{"version":"f20c05dbfe50a208301d2a1da37b9931bce0466eb5a1f4fe240971b4ecc82b67","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9","746d62152361558ea6d6115cf0da4dd10ede041d14882ede3568bce5dc4b4f1f","d11a03592451da2d1065e09e61f4e2a9bf68f780f4f6623c18b57816a9679d17","aea179452def8a6152f98f63b191b84e7cbd69b0e248c91e61fb2e52328abe8c",{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"8cc8c5a3bac513368b0157f3d8b31cfdcfe78b56d3724f30f80ed9715e404af8","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"55f400eec64d17e888e278f4def2f254b41b89515d3b88ad75d5e05f019daddd","affectsGlobalScope":true},{"version":"181f1784c6c10b751631b24ce60c7f78b20665db4550b335be179217bacc0d5f","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"81cac4cbc92c0c839c70f8ffb94eb61e2d32dc1c3cf6d95844ca099463cf37ea","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"775d9c9fd150d5de79e0450f35bc8b8f94ae64e3eb5da12725ff2a649dccc777","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"6c55633c733c8378db65ac3da7a767c3cf2cf3057f0565a9124a16a3a2019e87","affectsGlobalScope":true},{"version":"fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe","affectsGlobalScope":true},{"version":"5b0ca94ec819d68d33da516306c15297acec88efeb0ae9e2b39f71dbd9685ef7","affectsGlobalScope":true},{"version":"34c839eaaa6d78c8674ae2c37af2236dee6831b13db7b4ef4df3ec889a04d4f2","affectsGlobalScope":true},{"version":"34478567f8a80171f88f2f30808beb7da15eac0538ae91282dd33dce928d98ed","affectsGlobalScope":true},{"version":"ab7d58e6161a550ff92e5aff755dc37fe896245348332cd5f1e1203479fe0ed1","affectsGlobalScope":true},{"version":"6bda95ea27a59a276e46043b7065b55bd4b316c25e70e29b572958fa77565d43","affectsGlobalScope":true},{"version":"aedb8de1abb2ff1095c153854a6df7deae4a5709c37297f9d6e9948b6806fa66","affectsGlobalScope":true},{"version":"a4da0551fd39b90ca7ce5f68fb55d4dc0c1396d589b612e1902f68ee090aaada","affectsGlobalScope":true},{"version":"11ffe3c281f375fff9ffdde8bbec7669b4dd671905509079f866f2354a788064","affectsGlobalScope":true},{"version":"52d1bb7ab7a3306fd0375c8bff560feed26ed676a5b0457fa8027b563aecb9a4","affectsGlobalScope":true},"72c6cda658c066bfd9f51a34a077648f11a0d8867050733f2cef365729043bf0","363f9ef6f21d68fb8daa0ec3127ea3fb2567c5583999d4846bdbbdeb6f386eb7","b49e007575f7087f2d8718cceea62a309dad06552d539c65d0bbd418b33a33b6","7a317ff3b65c289d4344ea7b6e0a9793168703a79bf1ee889b3ce379b58a54a3","4967529644e391115ca5592184d4b63980569adf60ee685f968fd59ab1557188","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","0589c85b507c2b90458bf7f87c2aebb0879a251fa119f2464350113d93113a32","0d5a2ee1fdfa82740e0103389b9efd6bfe145a20018a2da3c02b89666181f4d9","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"92d63add669d18ebc349efbacd88966d6f2ccdddfb1b880b2db98ae3aa7bf7c4","affectsGlobalScope":true},"ccc94049a9841fe47abe5baef6be9a38fc6228807974ae675fb15dc22531b4be",{"version":"9acfe4d1ff027015151ce81d60797b04b52bffe97ad8310bb0ec2e8fd61e1303","affectsGlobalScope":true},"95843d5cfafced8f3f8a5ce57d2335f0bcd361b9483587d12a25e4bd403b8216","afc6e96061af46bcff47246158caee7e056f5288783f2d83d6858cd25be1c565",{"version":"34f5bcac12b36d70304b73de5f5aab3bb91bd9919f984be80579ebcad03a624e","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","2f520601649a893e6a49a8851ebfcf4be8ce090dc1281c2a08a871cb04e8251f","f50c975ab7b50e25a69e3d8a3773894125b44e9698924105f23b812bf7488baf","2b8c764f856a1dd0a9a2bf23e5efddbff157de8138b0754010be561ae5fcaa90","76650408392bf49a8fbf3e2b6b302712a92d76af77b06e2da1cc8077359c4409","0af3121e68297b2247dd331c0d24dba599e50736a7517a5622d5591aae4a3122","6972fca26f6e9bd56197568d4379f99071a90766e06b4fcb5920a0130a9202be",{"version":"4a2628e95962c8ab756121faa3ac2ed348112ff7a87b5c286dd2cc3326546b4c","affectsGlobalScope":true},"80793b2277f31baa199234daed806fff0fb11491d1ebd3357e520c3558063f00","a049a59a02009fc023684fcfaf0ac526fe36c35dcc5d2b7d620c1750ba11b083","196fee5541bfd59699dab615fee2ae7a6f5fe0a6337bcbbfd656ebf1ae329a63","160cc6e3d06938535bc887754afe5798c22d81ce83a9792ebfe2371a70f2ffc2","4b9a003b5c556c96784132945bb41c655ea11273b1917f5c8d0c154dd5fd20dd","a458dc78104cc80048ac24fdc02fe6dce254838094c2f25641b3f954d9721241",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"eecd493fc62c4dba3d988e2d7dff63299bf12ab49f5c9021dfef8dcc1ff2089e","abc1c425b2ad6720433f40f1877abfa4223f0f3dd486c9c28c492179ca183cb6","945a841f9a591197154c85386bc5a1467d42d325104bb36db51bc566bbb240be","10c39ce1df102994b47d4bc0c71aa9a6aea76f4651a5ec51914431f50bc883a1",{"version":"8207e7e6db9aa5fc7e61c8f17ba74cf9c115d26f51f91ee93f790815a7ea9dfb","affectsGlobalScope":true},"9f1069b9e2c051737b1f9b4f1baf50e4a63385a6a89c32235549ae87fc3d5492","ee18f2da7a037c6ceeb112a084e485aead9ea166980bf433474559eac1b46553","29c2706fa0cc49a2bd90c83234da33d08bb9554ecec675e91c1f85087f5a5324","0acbf26bf958f9e80c1ffa587b74749d2697b75b484062d36e103c137c562bc3","d7838022c7dab596357a9604b9c6adffe37dc34085ce0779c958ce9545bd7139","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"a7971f9fb2a32ec7788ec6cda9d7a33c02023dfe9a62db2030ad1359649d8050","c33a6ea7147af60d8e98f1ac127047f4b0d4e2ce28b8f08ff3de07ca7cc00637",{"version":"b42b47e17b8ece2424ae8039feb944c2e3ba4b262986aebd582e51efbdca93dc","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","2408611d9b4146e35d1dbd1f443ccd8e187c74614a54b80300728277529dbf11","998a3de5237518c0b3ac00a11b3b4417affb008aa20aedee52f3fdae3cb86151","ad41008ffe077206e1811fc873f4d9005b5fd7f6ab52bb6118fef600815a5cb4",{"version":"daa2956e185fbca0591cb8cbe075c115301cbac7863092103f2aed6078dfb612","affectsGlobalScope":true},"badae0df9a8016ac36994b0a0e7b82ba6aaa3528e175a8c3cb161e4683eec03e","c3db860bcaaaeb3bbc23f353bbda1f8ab82756c8d5e973bebb3953cb09ea68f2","235a53595bd20b0b0eeb1a29cb2887c67c48375e92f03749b2488fbd46d0b1a0","bc09393cd4cd13f69cf1366d4236fbae5359bb550f0de4e15767e9a91d63dfb1","9c266243b01545e11d2733a55ad02b4c00ecdbda99c561cd1674f96e89cdc958","c71155c05fc76ff948a4759abc1cb9feec036509f500174bc18dad4c7827a60c",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"1503a452a67127e5c2da794d1c7c44344d5038373aae16c9b03ac964db159edd","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","db6c2d64e5c642b4e08a136a15ef7155452fc7072513ac5b18a03b8e8107fe45","d9bf99a360cb3dfdc87b7e4988d63115cb30bf180f2bcfd56f425d2aee49925f","2e98c8d346012b9ac4f372d5a0ba7930ec413e45822d52a833dcde4a1cca91eb","85b5d54fc8586dc83c99934f02df83954282725ffcbd6631d4aa0ec81afb8671","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","8b23b832eb8547e6ef837f2c86a2354bcc4a52f5a51b6f0c82da48dd71961bf1","80ad053918e96087d9da8d092ff9f90520c9fc199c8bfd9340266dd8f38f364e","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","cf01820a6625d372b406150fc8bbaaf82326dad57088a09d546df4619fcf4d2e","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","f436b69387a990543d96787d1671b601a1ca624c420edc53560cb3d742f132fb","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","e4da0dc0982bc3ecaed637009f74a847b8d3fe06cbcf9f5e83b8ce8b0ed5d393","51cac533b4031fe5d4fecef5635afac9c0dca87c11f5b325e49e1600a9c51117","8b5baae22d64e1c47b88bdf16025396940393cfa830c66d9f330c1701e91ba91","913754f9281683f22d98d0ba7796896cee30c302baefa3dda69f61af8de244d8","a3e5b8b86e7bd38d9afdc294875c4445c535319e288d3a13c1e2e41f9af934f2","07a8b121d8256d717a496d25387a6f6a1218a49cd3d9dc7acc210382b1425a98","c824a031b54133fd5630aa0b295668d8b26df8ce0fcd1df639f2b3baf048a510","091f417275a51ab3c47b949723e9e8a193012157ecc64a96e2d7b1505e82f395","e6d2c107b358421399671d5afc04f9a0993833121c74bcbd3648ac3a65770936","6a93055f8327fa93dd414b15b3722657ea7c12d6052367d4ff303af29aa0ac76","bf45a2498ec7911454362c65ef3c87b161d91490d2d96a554f3263886c0e3503","b9b2dd4fcc57e42ecb6a8ed962350415aadd4c04e899bbe37580d7e6e0b1deaa","65a8bb855c73a06382ee35ef73c97eb825d5a7d8958eaddeeea4838f17c8078f","5f7614d60b32dc66e5d665eafd10d7619eedca3a20f0e876e9ec73141735e364","368597e75744b2e15fc12bd72ac54a4601f6d9021c6ad8b51d428be4e2d7278d","d46671fe4a68752899ca1ebd86d30a5ec8b8f7bf8c237c5e5d25f3642afa0626","ea8b0f6227604e008a0a77929b3adb5090c34aea3a0a5de5b353952a7301c4ba","ac0e45806dfb87684696b8a268697c8e789c50e29fd285fec047830e773f9832","045748197508c31fd7bf7027b2b4a42f4c5f4f84ec39ce1e1af55ca779313456","06c179a5025fef9432eaf716e55cd080020d2710cd98bb0c3d4340e8c866ab59","beaf45afe4bc9ba652ab6d73240c5e88bc3f34b0e0161742fcf354459a7a3c3f","1d6ad485ca9dc7c5d9e2b61f20e4bd3facbeb4ef56af8f68d71ba6e4a9b9f6eb","9eecb248ca8e33c2b5b5674237bc2b8607f5662bcc03a3e025a55fbfdf069cdc","513f467aabe4b358a7a1e8391b6853bae204ab1e0eeab09278a3681a0e817873","be03812cb3791d3b9093f26988634caf1c71dfb1ab6c8aa4e760f5e353ef6f93","7c0ba9a5132b0fbdea735875c2990ceb36cdf2d617b0cb7e106c06b7cab53952","e4cd60d669bc6592b8bf26bfe3be5dd8a3c8038a2f86f74af9123033641c0a4c","8180a44d92e7f618789a4b26af4522321df8e8d4482445faf6d2cc6a85c95467","d1e35f1b3ee738c6cefabd665de7fcd72e3462b34c9f942fa685302d0be25922","f720a94058231196b81855293bbf4c6ee5226708e2c986d38f1fb9697f504f8a","f859c31fba1cc114d67a424b37b062534ee8813fb53dbb80e6fe40126bfdabb2","b7d3249cbee977a046efe0f325dc7f553f767b4a26c2360635b81ce800e7e913","539ea2f344e4fce2e77580cd7a5d7f4339926f589321231bc279960e3400772c","2e3343eebd7f317f0f12ebda5d455ece53c10b01df1cbc472c9a6425232bae2d","a4a4d800663fe45e65640e784a5973d7f56b544b7e2effbc478edc77610189f5","bb9bc38371e0c0d524420594c4128d4ec39c218f823c936e6b9892839b8ad126","1cf790bc4bef026b98cd90370d12d5d68cd845e7d055102a35ad2afa236c3d0c","e12caf7b64fa0c90bb21d5a29c17664c34a4b06cd432e4925bc4003b42e502d5","903456a035d80598a398c89af6fb6752c49703c4048af0c610fdebd2bcfd7b0c","cd95632585111aa5c5e76dc49b7781f8cdacc7660f8028c8482278c34c248fa0","ea97c663f8c9e5c5b33b008d036d901c342745cc9c0876e822d7f1ecbb87f8d0","64c55e5bbd1580a436bd34bee04f170ae2dca48cfc967fdf71aadf6171b27e64","da3ccf68e9f57491231c52b9127ec5d96c19fd4ee95a91fdb643bac31bc9a2f5","8526249c4486650b51b73ef9ae452fb6ef3254b2e73a1625c68889a9a3bfc070","44fef001b60bc425df2a36e532e867918012e5b50f5a6948c84974a25f93c99a","13756676a5ca4e5c4f0a75221a6f994a1c336cc99966a8c59fdb7ac5cbcd8f90","66d1ad7b4b9beb88809845c71ec64b8044b41700a436ec5136fcc5e0dfacdb05",{"version":"d50d5f2cc94307f9b6681ea4c48bbc28101faaaa87edfc64aab5a0a66414b586","affectsGlobalScope":true},"0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","d982cdd2610155b3cbcbfa62ccabcf2d2b739f821518ef113348d160ef0010d9","ffcc5500e77223169833fc6eb59b3a507944a1f89574e0a1276b0ea7fc22c4a4","22f13de9e2fe5f0f4724797abd3d34a1cdd6e47ef81fc4933fea3b8bf4ad524b","e3ba509d3dce019b3190ceb2f3fc88e2610ab717122dabd91a9efaa37804040d","cda0cb09b995489b7f4c57f168cd31b83dcbaa7aad49612734fb3c9c73f6e4f2",{"version":"1de1ad6a1929317171d8cfcd55bb2732257680c1bf89bcd53e1d46a4d8dbda22","affectsGlobalScope":true}],"options":{"allowSyntheticDefaultImports":true,"alwaysStrict":false,"esModuleInterop":true,"jsx":2,"module":1,"skipLibCheck":true,"strict":true,"target":99},"fileIdsList":[[104,189],[104],[104,143],[104,191,193],[104,191],[104,188,192],[104,190],[61,104],[64,104],[65,70,104],[66,76,77,84,93,103,104],[66,67,76,84,104],[68,104],[69,70,77,85,104],[70,93,100,104],[71,73,76,84,104],[72,104],[73,74,104],[75,76,104],[76,104],[76,77,78,93,103,104],[76,77,78,93,104],[79,84,93,103,104],[76,77,79,80,84,93,100,103,104],[79,81,93,100,103,104],[61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110],[76,82,104],[83,103,104],[73,76,84,93,104],[85,104],[86,104],[64,87,104],[88,102,104,108],[89,104],[90,104],[76,91,104],[91,92,104,106],[76,93,94,95,104],[93,95,104],[93,94,104],[96,104],[97,104],[76,98,99,104],[98,99,104],[70,84,100,104],[101,104],[84,102,104],[65,79,90,103,104],[70,104],[93,104,105],[104,106],[104,107],[65,70,76,78,87,93,103,104,106,108],[93,104,109],[93,104,111],[55,56,104],[66,104],[104,112,113,114,115,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,132,133,135,136,137,138,139],[103,104,118,122],[93,103,104,118],[100,103,104,115,118],[84,100,104],[104,111],[104,111,113],[84,103,104,115,118],[59,60,65,76,93,103,104,114,117],[59,104,116],[65,96,103,104,111,114,118],[65,104,111],[65,104,111,134],[104,111,112,113],[104,118],[104,118,125,126],[104,116,118,126,127],[104,117],[59,104,113,118],[104,118,122,126,127],[104,122],[103,104,116,118,121],[59,104,115,118,125],[65,93,104],[104,111,134],[93,104],[104,141],[77,85,86,104,171],[103,104,140,151,160,165],[61,103,104,140,151,160,162,164,171],[77,86,104,142,145,146,151],[104,145,146,147,151,153],[104,151],[104,150],[77,85,86,104,155],[104,144],[104,147,148,149,150],[104,151,157],[104,164],[104,178,184],[77,104,172,173,175,176],[78,86,104,149,173,175],[104,179],[104,178],[104,173,178,181],[86,104,173,175,178,179],[104,178,181,183,184,185],[104,178,181,183,185],[78,86,104,173,174],[54,77,86,104,149,151,159],[68,86,104],[66,104,140,151],[104,150,161,162],[104,163,166],[70,104,171],[104,167,170],[54,57,61,70,77,79,86,90,103,104,140,145,146,151,152,154,156,158,160,161,163,167,168,169]],"referencedMap":[[190,1],[189,2],[144,3],[194,4],[188,2],[192,5],[193,6],[191,7],[61,8],[62,8],[64,9],[65,10],[66,11],[67,12],[68,13],[69,14],[70,15],[71,16],[72,17],[73,18],[74,18],[75,19],[76,20],[77,21],[78,22],[63,2],[110,2],[79,23],[80,24],[81,25],[111,26],[82,27],[83,28],[84,29],[85,30],[86,31],[87,32],[88,33],[89,34],[90,35],[91,36],[92,37],[93,38],[95,39],[94,40],[96,41],[97,42],[98,43],[99,44],[100,45],[101,46],[102,47],[103,48],[104,49],[105,50],[106,51],[107,52],[108,53],[109,54],[153,55],[55,2],[57,56],[56,2],[58,2],[147,2],[143,2],[148,2],[149,2],[159,2],[157,57],[12,2],[11,2],[2,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[3,2],[4,2],[24,2],[21,2],[22,2],[23,2],[25,2],[26,2],[27,2],[5,2],[28,2],[29,2],[30,2],[31,2],[6,2],[32,2],[33,2],[34,2],[35,2],[7,2],[36,2],[41,2],[42,2],[37,2],[38,2],[39,2],[40,2],[8,2],[46,2],[43,2],[44,2],[45,2],[47,2],[9,2],[48,2],[49,2],[50,2],[51,2],[52,2],[1,2],[10,2],[53,2],[140,58],[125,59],[132,60],[124,59],[116,61],[115,62],[138,63],[133,64],[136,65],[118,66],[117,67],[113,68],[112,69],[135,70],[114,71],[119,72],[120,2],[123,72],[59,2],[139,72],[127,73],[128,74],[130,75],[126,76],[129,77],[134,63],[121,78],[122,79],[131,80],[60,81],[137,82],[155,2],[54,83],[142,84],[141,2],[164,2],[172,85],[166,86],[165,87],[152,88],[154,89],[150,90],[162,91],[183,2],[156,92],[187,2],[145,93],[146,2],[151,94],[158,95],[178,96],[185,97],[177,98],[176,99],[174,2],[180,100],[179,101],[182,102],[181,103],[186,104],[184,105],[175,106],[160,107],[173,108],[161,109],[163,110],[167,111],[168,2],[169,112],[171,113],[170,114]],"exportedModulesMap":[[190,1],[189,2],[144,3],[194,4],[188,2],[192,5],[193,6],[191,7],[61,8],[62,8],[64,9],[65,10],[66,11],[67,12],[68,13],[69,14],[70,15],[71,16],[72,17],[73,18],[74,18],[75,19],[76,20],[77,21],[78,22],[63,2],[110,2],[79,23],[80,24],[81,25],[111,26],[82,27],[83,28],[84,29],[85,30],[86,31],[87,32],[88,33],[89,34],[90,35],[91,36],[92,37],[93,38],[95,39],[94,40],[96,41],[97,42],[98,43],[99,44],[100,45],[101,46],[102,47],[103,48],[104,49],[105,50],[106,51],[107,52],[108,53],[109,54],[153,55],[55,2],[57,56],[56,2],[58,2],[147,2],[143,2],[148,2],[149,2],[159,2],[157,57],[12,2],[11,2],[2,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[3,2],[4,2],[24,2],[21,2],[22,2],[23,2],[25,2],[26,2],[27,2],[5,2],[28,2],[29,2],[30,2],[31,2],[6,2],[32,2],[33,2],[34,2],[35,2],[7,2],[36,2],[41,2],[42,2],[37,2],[38,2],[39,2],[40,2],[8,2],[46,2],[43,2],[44,2],[45,2],[47,2],[9,2],[48,2],[49,2],[50,2],[51,2],[52,2],[1,2],[10,2],[53,2],[140,58],[125,59],[132,60],[124,59],[116,61],[115,62],[138,63],[133,64],[136,65],[118,66],[117,67],[113,68],[112,69],[135,70],[114,71],[119,72],[120,2],[123,72],[59,2],[139,72],[127,73],[128,74],[130,75],[126,76],[129,77],[134,63],[121,78],[122,79],[131,80],[60,81],[137,82],[155,2],[54,83],[142,84],[141,2],[164,2],[172,85],[166,86],[165,87],[152,88],[154,89],[150,90],[162,91],[183,2],[156,92],[187,2],[145,93],[146,2],[151,94],[158,95],[178,96],[185,97],[177,98],[176,99],[174,2],[180,100],[179,101],[182,102],[181,103],[186,104],[184,105],[175,106],[160,107],[173,108],[161,109],[163,110],[167,111],[168,2],[169,112],[171,113],[170,114]],"semanticDiagnosticsPerFile":[190,189,144,194,188,192,193,191,61,62,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,63,110,79,80,81,111,82,83,84,85,86,87,88,89,90,91,92,93,95,94,96,97,98,99,100,101,102,103,104,105,106,107,108,109,153,55,57,56,58,147,143,148,149,159,157,12,11,2,13,14,15,16,17,18,19,20,3,4,24,21,22,23,25,26,27,5,28,29,30,31,6,32,33,34,35,7,36,41,42,37,38,39,40,8,46,43,44,45,47,9,48,49,50,51,52,1,10,53,140,125,132,124,116,115,138,133,136,118,117,113,112,135,114,119,120,123,59,139,127,128,130,126,129,134,121,122,131,60,137,155,54,142,141,164,172,166,165,152,154,150,162,183,156,187,145,146,151,158,178,185,177,176,174,180,179,182,181,186,184,175,160,173,161,163,167,168,169,171,170],"affectedFilesPendingEmit":[[190,1],[189,1],[144,1],[194,1],[188,1],[192,1],[193,1],[191,1],[61,1],[62,1],[64,1],[65,1],[66,1],[67,1],[68,1],[69,1],[70,1],[71,1],[72,1],[73,1],[74,1],[75,1],[76,1],[77,1],[78,1],[63,1],[110,1],[79,1],[80,1],[81,1],[111,1],[82,1],[83,1],[84,1],[85,1],[86,1],[87,1],[88,1],[89,1],[90,1],[91,1],[92,1],[93,1],[95,1],[94,1],[96,1],[97,1],[98,1],[99,1],[100,1],[101,1],[102,1],[103,1],[104,1],[105,1],[106,1],[107,1],[108,1],[109,1],[153,1],[55,1],[57,1],[56,1],[58,1],[147,1],[143,1],[148,1],[149,1],[159,1],[157,1],[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[8,1],[9,1],[10,1],[140,1],[125,1],[132,1],[124,1],[116,1],[115,1],[138,1],[133,1],[136,1],[118,1],[117,1],[113,1],[112,1],[135,1],[114,1],[119,1],[120,1],[123,1],[59,1],[139,1],[127,1],[128,1],[130,1],[126,1],[129,1],[134,1],[121,1],[122,1],[131,1],[60,1],[137,1],[155,1],[54,1],[142,1],[141,1],[164,1],[172,1],[166,1],[165,1],[152,1],[154,1],[150,1],[162,1],[183,1],[156,1],[187,1],[145,1],[146,1],[151,1],[158,1],[178,1],[185,1],[177,1],[176,1],[174,1],[180,1],[179,1],[182,1],[181,1],[186,1],[184,1],[175,1],[160,1],[173,1],[161,1],[163,1],[167,1],[168,1],[169,1],[171,1],[170,1]]},"version":"4.8.4"}
1
+ {"program":{"fileNames":["../../../../../node_modules/typescript/lib/lib.es5.d.ts","../../../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../../../node_modules/typescript/lib/lib.esnext.d.ts","../../../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../../../node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","../../../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/@iarna/toml/index.d.ts","../../../../../node_modules/@webcontainer/env/dist/environment.d.ts","../../../../../node_modules/@webcontainer/env/dist/url.d.ts","../../../../../node_modules/@webcontainer/env/dist/index.d.ts","../../../../../node_modules/buffer/index.d.ts","../../../../../node_modules/undici/types/header.d.ts","../../../../../node_modules/undici/types/readable.d.ts","../../../../../node_modules/@types/node/assert.d.ts","../../../../../node_modules/@types/node/assert/strict.d.ts","../../../../../node_modules/@types/node/globals.d.ts","../../../../../node_modules/@types/node/async_hooks.d.ts","../../../../../node_modules/@types/node/buffer.d.ts","../../../../../node_modules/@types/node/child_process.d.ts","../../../../../node_modules/@types/node/cluster.d.ts","../../../../../node_modules/@types/node/console.d.ts","../../../../../node_modules/@types/node/constants.d.ts","../../../../../node_modules/@types/node/crypto.d.ts","../../../../../node_modules/@types/node/dgram.d.ts","../../../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../../../node_modules/@types/node/dns.d.ts","../../../../../node_modules/@types/node/dns/promises.d.ts","../../../../../node_modules/@types/node/domain.d.ts","../../../../../node_modules/@types/node/events.d.ts","../../../../../node_modules/@types/node/fs.d.ts","../../../../../node_modules/@types/node/fs/promises.d.ts","../../../../../node_modules/@types/node/http.d.ts","../../../../../node_modules/@types/node/http2.d.ts","../../../../../node_modules/@types/node/https.d.ts","../../../../../node_modules/@types/node/inspector.d.ts","../../../../../node_modules/@types/node/module.d.ts","../../../../../node_modules/@types/node/net.d.ts","../../../../../node_modules/@types/node/os.d.ts","../../../../../node_modules/@types/node/path.d.ts","../../../../../node_modules/@types/node/perf_hooks.d.ts","../../../../../node_modules/@types/node/process.d.ts","../../../../../node_modules/@types/node/punycode.d.ts","../../../../../node_modules/@types/node/querystring.d.ts","../../../../../node_modules/@types/node/readline.d.ts","../../../../../node_modules/@types/node/repl.d.ts","../../../../../node_modules/@types/node/stream.d.ts","../../../../../node_modules/@types/node/stream/promises.d.ts","../../../../../node_modules/@types/node/stream/consumers.d.ts","../../../../../node_modules/@types/node/stream/web.d.ts","../../../../../node_modules/@types/node/string_decoder.d.ts","../../../../../node_modules/@types/node/timers.d.ts","../../../../../node_modules/@types/node/timers/promises.d.ts","../../../../../node_modules/@types/node/tls.d.ts","../../../../../node_modules/@types/node/trace_events.d.ts","../../../../../node_modules/@types/node/tty.d.ts","../../../../../node_modules/@types/node/url.d.ts","../../../../../node_modules/@types/node/util.d.ts","../../../../../node_modules/@types/node/v8.d.ts","../../../../../node_modules/@types/node/vm.d.ts","../../../../../node_modules/@types/node/wasi.d.ts","../../../../../node_modules/@types/node/worker_threads.d.ts","../../../../../node_modules/@types/node/zlib.d.ts","../../../../../node_modules/@types/node/globals.global.d.ts","../../../../../node_modules/@types/node/index.d.ts","../../../../../node_modules/undici/types/file.d.ts","../../../../../node_modules/undici/types/fetch.d.ts","../../../../../node_modules/undici/types/formdata.d.ts","../../../../../node_modules/undici/types/connector.d.ts","../../../../../node_modules/undici/types/client.d.ts","../../../../../node_modules/undici/types/errors.d.ts","../../../../../node_modules/undici/types/dispatcher.d.ts","../../../../../node_modules/undici/types/global-dispatcher.d.ts","../../../../../node_modules/undici/types/global-origin.d.ts","../../../../../node_modules/undici/types/pool-stats.d.ts","../../../../../node_modules/undici/types/pool.d.ts","../../../../../node_modules/undici/types/handlers.d.ts","../../../../../node_modules/undici/types/balanced-pool.d.ts","../../../../../node_modules/undici/types/agent.d.ts","../../../../../node_modules/undici/types/mock-interceptor.d.ts","../../../../../node_modules/undici/types/mock-agent.d.ts","../../../../../node_modules/undici/types/mock-client.d.ts","../../../../../node_modules/undici/types/mock-pool.d.ts","../../../../../node_modules/undici/types/mock-errors.d.ts","../../../../../node_modules/undici/types/proxy-agent.d.ts","../../../../../node_modules/undici/types/api.d.ts","../../../../../node_modules/undici/types/cookies.d.ts","../../../../../node_modules/undici/types/patch.d.ts","../../../../../node_modules/undici/types/filereader.d.ts","../../../../../node_modules/undici/types/diagnostics-channel.d.ts","../../../../../node_modules/undici/types/websocket.d.ts","../../../../../node_modules/undici/types/content-type.d.ts","../../../../../node_modules/undici/types/interceptors.d.ts","../../../../../node_modules/undici/index.d.ts","../../../node_modules/locate-path/index.d.ts","../../../node_modules/find-up/index.d.ts","../../../../../node_modules/ci-info/index.d.ts","../../../../../node_modules/@types/is-ci/index.d.ts","../../is-ci.ts","../../is-interactive.ts","../../../../../node_modules/chalk/types/index.d.ts","../../../../../node_modules/cli-table3/index.d.ts","../../../../../node_modules/esbuild/lib/main.d.ts","../../environment-variables/factory.ts","../../logger.ts","../../config-cache.ts","../../../../../node_modules/@types/prompts/index.d.ts","../../dialogs.ts","../../../../../node_modules/xdg-app-paths/dist/types/mod.d.ts","../../global-wrangler-config-path.ts","../../../../../node_modules/open/index.d.ts","../../open-in-browser.ts","../../../../../node_modules/jsonc-parser/lib/umd/main.d.ts","../../parse.ts","../../user/access.ts","../../environment-variables/misc-variables.ts","../../user/auth-variables.ts","../../../package.json","../../cfetch/internal.ts","../../cfetch/index.ts","../../user/choose-account.tsx","../../user/generate-auth-url.ts","../../user/generate-random-state.ts","../../user/user.ts","../../user/index.ts","../../__tests__/helpers/run-in-tmp.ts","../../paths.ts","./identifiers.ts","./routes.ts","./filepath-routing.ts","./filepath-routing.test.ts","../constants.ts","./routes-consolidation.ts","./routes-consolidation.test.ts","./routes-transformation.ts","./routes-transformation.test.ts","../../errors.ts","./routes-validation.ts","../errors.ts","./routes-validation.test.ts","../../intl-polyfill.d.ts","../../../../../node_modules/@types/jest/node_modules/chalk/index.d.ts","../../../../../node_modules/@sinclair/typebox/typebox.d.ts","../../../../../node_modules/@jest/schemas/build/index.d.ts","../../../../../node_modules/@types/jest/node_modules/pretty-format/build/index.d.ts","../../../../../node_modules/@types/jest/node_modules/jest-diff/build/index.d.ts","../../../../../node_modules/@types/jest/node_modules/jest-matcher-utils/build/index.d.ts","../../../../../node_modules/@types/jest/index.d.ts"],"fileInfos":[{"version":"f20c05dbfe50a208301d2a1da37b9931bce0466eb5a1f4fe240971b4ecc82b67","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9","746d62152361558ea6d6115cf0da4dd10ede041d14882ede3568bce5dc4b4f1f","d11a03592451da2d1065e09e61f4e2a9bf68f780f4f6623c18b57816a9679d17","aea179452def8a6152f98f63b191b84e7cbd69b0e248c91e61fb2e52328abe8c",{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"8cc8c5a3bac513368b0157f3d8b31cfdcfe78b56d3724f30f80ed9715e404af8","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"55f400eec64d17e888e278f4def2f254b41b89515d3b88ad75d5e05f019daddd","affectsGlobalScope":true},{"version":"181f1784c6c10b751631b24ce60c7f78b20665db4550b335be179217bacc0d5f","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"81cac4cbc92c0c839c70f8ffb94eb61e2d32dc1c3cf6d95844ca099463cf37ea","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"775d9c9fd150d5de79e0450f35bc8b8f94ae64e3eb5da12725ff2a649dccc777","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"6c55633c733c8378db65ac3da7a767c3cf2cf3057f0565a9124a16a3a2019e87","affectsGlobalScope":true},{"version":"fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe","affectsGlobalScope":true},{"version":"5b0ca94ec819d68d33da516306c15297acec88efeb0ae9e2b39f71dbd9685ef7","affectsGlobalScope":true},{"version":"34c839eaaa6d78c8674ae2c37af2236dee6831b13db7b4ef4df3ec889a04d4f2","affectsGlobalScope":true},{"version":"34478567f8a80171f88f2f30808beb7da15eac0538ae91282dd33dce928d98ed","affectsGlobalScope":true},{"version":"ab7d58e6161a550ff92e5aff755dc37fe896245348332cd5f1e1203479fe0ed1","affectsGlobalScope":true},{"version":"6bda95ea27a59a276e46043b7065b55bd4b316c25e70e29b572958fa77565d43","affectsGlobalScope":true},{"version":"aedb8de1abb2ff1095c153854a6df7deae4a5709c37297f9d6e9948b6806fa66","affectsGlobalScope":true},{"version":"a4da0551fd39b90ca7ce5f68fb55d4dc0c1396d589b612e1902f68ee090aaada","affectsGlobalScope":true},{"version":"11ffe3c281f375fff9ffdde8bbec7669b4dd671905509079f866f2354a788064","affectsGlobalScope":true},{"version":"52d1bb7ab7a3306fd0375c8bff560feed26ed676a5b0457fa8027b563aecb9a4","affectsGlobalScope":true},"72c6cda658c066bfd9f51a34a077648f11a0d8867050733f2cef365729043bf0","363f9ef6f21d68fb8daa0ec3127ea3fb2567c5583999d4846bdbbdeb6f386eb7","b49e007575f7087f2d8718cceea62a309dad06552d539c65d0bbd418b33a33b6","7a317ff3b65c289d4344ea7b6e0a9793168703a79bf1ee889b3ce379b58a54a3","4967529644e391115ca5592184d4b63980569adf60ee685f968fd59ab1557188","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","0589c85b507c2b90458bf7f87c2aebb0879a251fa119f2464350113d93113a32","0d5a2ee1fdfa82740e0103389b9efd6bfe145a20018a2da3c02b89666181f4d9","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"92d63add669d18ebc349efbacd88966d6f2ccdddfb1b880b2db98ae3aa7bf7c4","affectsGlobalScope":true},"ccc94049a9841fe47abe5baef6be9a38fc6228807974ae675fb15dc22531b4be",{"version":"9acfe4d1ff027015151ce81d60797b04b52bffe97ad8310bb0ec2e8fd61e1303","affectsGlobalScope":true},"95843d5cfafced8f3f8a5ce57d2335f0bcd361b9483587d12a25e4bd403b8216","afc6e96061af46bcff47246158caee7e056f5288783f2d83d6858cd25be1c565",{"version":"34f5bcac12b36d70304b73de5f5aab3bb91bd9919f984be80579ebcad03a624e","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","2f520601649a893e6a49a8851ebfcf4be8ce090dc1281c2a08a871cb04e8251f","f50c975ab7b50e25a69e3d8a3773894125b44e9698924105f23b812bf7488baf","2b8c764f856a1dd0a9a2bf23e5efddbff157de8138b0754010be561ae5fcaa90","76650408392bf49a8fbf3e2b6b302712a92d76af77b06e2da1cc8077359c4409","0af3121e68297b2247dd331c0d24dba599e50736a7517a5622d5591aae4a3122","6972fca26f6e9bd56197568d4379f99071a90766e06b4fcb5920a0130a9202be",{"version":"4a2628e95962c8ab756121faa3ac2ed348112ff7a87b5c286dd2cc3326546b4c","affectsGlobalScope":true},"80793b2277f31baa199234daed806fff0fb11491d1ebd3357e520c3558063f00","a049a59a02009fc023684fcfaf0ac526fe36c35dcc5d2b7d620c1750ba11b083","196fee5541bfd59699dab615fee2ae7a6f5fe0a6337bcbbfd656ebf1ae329a63","160cc6e3d06938535bc887754afe5798c22d81ce83a9792ebfe2371a70f2ffc2","4b9a003b5c556c96784132945bb41c655ea11273b1917f5c8d0c154dd5fd20dd","a458dc78104cc80048ac24fdc02fe6dce254838094c2f25641b3f954d9721241",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"eecd493fc62c4dba3d988e2d7dff63299bf12ab49f5c9021dfef8dcc1ff2089e","abc1c425b2ad6720433f40f1877abfa4223f0f3dd486c9c28c492179ca183cb6","945a841f9a591197154c85386bc5a1467d42d325104bb36db51bc566bbb240be","10c39ce1df102994b47d4bc0c71aa9a6aea76f4651a5ec51914431f50bc883a1",{"version":"8207e7e6db9aa5fc7e61c8f17ba74cf9c115d26f51f91ee93f790815a7ea9dfb","affectsGlobalScope":true},"9f1069b9e2c051737b1f9b4f1baf50e4a63385a6a89c32235549ae87fc3d5492","ee18f2da7a037c6ceeb112a084e485aead9ea166980bf433474559eac1b46553","29c2706fa0cc49a2bd90c83234da33d08bb9554ecec675e91c1f85087f5a5324","0acbf26bf958f9e80c1ffa587b74749d2697b75b484062d36e103c137c562bc3","d7838022c7dab596357a9604b9c6adffe37dc34085ce0779c958ce9545bd7139","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"a7971f9fb2a32ec7788ec6cda9d7a33c02023dfe9a62db2030ad1359649d8050","c33a6ea7147af60d8e98f1ac127047f4b0d4e2ce28b8f08ff3de07ca7cc00637",{"version":"b42b47e17b8ece2424ae8039feb944c2e3ba4b262986aebd582e51efbdca93dc","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","2408611d9b4146e35d1dbd1f443ccd8e187c74614a54b80300728277529dbf11","998a3de5237518c0b3ac00a11b3b4417affb008aa20aedee52f3fdae3cb86151","ad41008ffe077206e1811fc873f4d9005b5fd7f6ab52bb6118fef600815a5cb4",{"version":"daa2956e185fbca0591cb8cbe075c115301cbac7863092103f2aed6078dfb612","affectsGlobalScope":true},"badae0df9a8016ac36994b0a0e7b82ba6aaa3528e175a8c3cb161e4683eec03e","c3db860bcaaaeb3bbc23f353bbda1f8ab82756c8d5e973bebb3953cb09ea68f2","235a53595bd20b0b0eeb1a29cb2887c67c48375e92f03749b2488fbd46d0b1a0","bc09393cd4cd13f69cf1366d4236fbae5359bb550f0de4e15767e9a91d63dfb1","9c266243b01545e11d2733a55ad02b4c00ecdbda99c561cd1674f96e89cdc958","c71155c05fc76ff948a4759abc1cb9feec036509f500174bc18dad4c7827a60c",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"1503a452a67127e5c2da794d1c7c44344d5038373aae16c9b03ac964db159edd","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","db6c2d64e5c642b4e08a136a15ef7155452fc7072513ac5b18a03b8e8107fe45","d9bf99a360cb3dfdc87b7e4988d63115cb30bf180f2bcfd56f425d2aee49925f","2e98c8d346012b9ac4f372d5a0ba7930ec413e45822d52a833dcde4a1cca91eb","85b5d54fc8586dc83c99934f02df83954282725ffcbd6631d4aa0ec81afb8671","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","8b23b832eb8547e6ef837f2c86a2354bcc4a52f5a51b6f0c82da48dd71961bf1","80ad053918e96087d9da8d092ff9f90520c9fc199c8bfd9340266dd8f38f364e","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","cf01820a6625d372b406150fc8bbaaf82326dad57088a09d546df4619fcf4d2e","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","f436b69387a990543d96787d1671b601a1ca624c420edc53560cb3d742f132fb","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","e4da0dc0982bc3ecaed637009f74a847b8d3fe06cbcf9f5e83b8ce8b0ed5d393","51cac533b4031fe5d4fecef5635afac9c0dca87c11f5b325e49e1600a9c51117","8b5baae22d64e1c47b88bdf16025396940393cfa830c66d9f330c1701e91ba91","913754f9281683f22d98d0ba7796896cee30c302baefa3dda69f61af8de244d8","a3e5b8b86e7bd38d9afdc294875c4445c535319e288d3a13c1e2e41f9af934f2","07a8b121d8256d717a496d25387a6f6a1218a49cd3d9dc7acc210382b1425a98","c824a031b54133fd5630aa0b295668d8b26df8ce0fcd1df639f2b3baf048a510","091f417275a51ab3c47b949723e9e8a193012157ecc64a96e2d7b1505e82f395","e6d2c107b358421399671d5afc04f9a0993833121c74bcbd3648ac3a65770936","6a93055f8327fa93dd414b15b3722657ea7c12d6052367d4ff303af29aa0ac76","bf45a2498ec7911454362c65ef3c87b161d91490d2d96a554f3263886c0e3503","b9b2dd4fcc57e42ecb6a8ed962350415aadd4c04e899bbe37580d7e6e0b1deaa","65a8bb855c73a06382ee35ef73c97eb825d5a7d8958eaddeeea4838f17c8078f","5f7614d60b32dc66e5d665eafd10d7619eedca3a20f0e876e9ec73141735e364","368597e75744b2e15fc12bd72ac54a4601f6d9021c6ad8b51d428be4e2d7278d","d46671fe4a68752899ca1ebd86d30a5ec8b8f7bf8c237c5e5d25f3642afa0626","ea8b0f6227604e008a0a77929b3adb5090c34aea3a0a5de5b353952a7301c4ba","ac0e45806dfb87684696b8a268697c8e789c50e29fd285fec047830e773f9832","045748197508c31fd7bf7027b2b4a42f4c5f4f84ec39ce1e1af55ca779313456","06c179a5025fef9432eaf716e55cd080020d2710cd98bb0c3d4340e8c866ab59","beaf45afe4bc9ba652ab6d73240c5e88bc3f34b0e0161742fcf354459a7a3c3f","1d6ad485ca9dc7c5d9e2b61f20e4bd3facbeb4ef56af8f68d71ba6e4a9b9f6eb","9eecb248ca8e33c2b5b5674237bc2b8607f5662bcc03a3e025a55fbfdf069cdc","513f467aabe4b358a7a1e8391b6853bae204ab1e0eeab09278a3681a0e817873","27fa6d3f213ec974a6aac22a7922605587ccd37e22655b8a13ccbbabd1389ab2","7c0ba9a5132b0fbdea735875c2990ceb36cdf2d617b0cb7e106c06b7cab53952","e4cd60d669bc6592b8bf26bfe3be5dd8a3c8038a2f86f74af9123033641c0a4c","8180a44d92e7f618789a4b26af4522321df8e8d4482445faf6d2cc6a85c95467","d1e35f1b3ee738c6cefabd665de7fcd72e3462b34c9f942fa685302d0be25922","f720a94058231196b81855293bbf4c6ee5226708e2c986d38f1fb9697f504f8a","f859c31fba1cc114d67a424b37b062534ee8813fb53dbb80e6fe40126bfdabb2","b7d3249cbee977a046efe0f325dc7f553f767b4a26c2360635b81ce800e7e913","539ea2f344e4fce2e77580cd7a5d7f4339926f589321231bc279960e3400772c","2e3343eebd7f317f0f12ebda5d455ece53c10b01df1cbc472c9a6425232bae2d","a4a4d800663fe45e65640e784a5973d7f56b544b7e2effbc478edc77610189f5","bb9bc38371e0c0d524420594c4128d4ec39c218f823c936e6b9892839b8ad126","1cf790bc4bef026b98cd90370d12d5d68cd845e7d055102a35ad2afa236c3d0c","e12caf7b64fa0c90bb21d5a29c17664c34a4b06cd432e4925bc4003b42e502d5","903456a035d80598a398c89af6fb6752c49703c4048af0c610fdebd2bcfd7b0c","cd95632585111aa5c5e76dc49b7781f8cdacc7660f8028c8482278c34c248fa0","ea97c663f8c9e5c5b33b008d036d901c342745cc9c0876e822d7f1ecbb87f8d0","64c55e5bbd1580a436bd34bee04f170ae2dca48cfc967fdf71aadf6171b27e64","da3ccf68e9f57491231c52b9127ec5d96c19fd4ee95a91fdb643bac31bc9a2f5","8526249c4486650b51b73ef9ae452fb6ef3254b2e73a1625c68889a9a3bfc070","44fef001b60bc425df2a36e532e867918012e5b50f5a6948c84974a25f93c99a","13756676a5ca4e5c4f0a75221a6f994a1c336cc99966a8c59fdb7ac5cbcd8f90","66d1ad7b4b9beb88809845c71ec64b8044b41700a436ec5136fcc5e0dfacdb05",{"version":"d50d5f2cc94307f9b6681ea4c48bbc28101faaaa87edfc64aab5a0a66414b586","affectsGlobalScope":true},"0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","d982cdd2610155b3cbcbfa62ccabcf2d2b739f821518ef113348d160ef0010d9","ffcc5500e77223169833fc6eb59b3a507944a1f89574e0a1276b0ea7fc22c4a4","22f13de9e2fe5f0f4724797abd3d34a1cdd6e47ef81fc4933fea3b8bf4ad524b","e3ba509d3dce019b3190ceb2f3fc88e2610ab717122dabd91a9efaa37804040d","cda0cb09b995489b7f4c57f168cd31b83dcbaa7aad49612734fb3c9c73f6e4f2",{"version":"1de1ad6a1929317171d8cfcd55bb2732257680c1bf89bcd53e1d46a4d8dbda22","affectsGlobalScope":true}],"options":{"allowSyntheticDefaultImports":true,"alwaysStrict":false,"esModuleInterop":true,"jsx":2,"module":1,"skipLibCheck":true,"strict":true,"target":99},"fileIdsList":[[104,189],[104],[104,143],[104,191,193],[104,191],[104,188,192],[104,190],[61,104],[64,104],[65,70,104],[66,76,77,84,93,103,104],[66,67,76,84,104],[68,104],[69,70,77,85,104],[70,93,100,104],[71,73,76,84,104],[72,104],[73,74,104],[75,76,104],[76,104],[76,77,78,93,103,104],[76,77,78,93,104],[79,84,93,103,104],[76,77,79,80,84,93,100,103,104],[79,81,93,100,103,104],[61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110],[76,82,104],[83,103,104],[73,76,84,93,104],[85,104],[86,104],[64,87,104],[88,102,104,108],[89,104],[90,104],[76,91,104],[91,92,104,106],[76,93,94,95,104],[93,95,104],[93,94,104],[96,104],[97,104],[76,98,99,104],[98,99,104],[70,84,100,104],[101,104],[84,102,104],[65,79,90,103,104],[70,104],[93,104,105],[104,106],[104,107],[65,70,76,78,87,93,103,104,106,108],[93,104,109],[93,104,111],[55,56,104],[66,104],[104,112,113,114,115,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,132,133,135,136,137,138,139],[103,104,118,122],[93,103,104,118],[100,103,104,115,118],[84,100,104],[104,111],[104,111,113],[84,103,104,115,118],[59,60,65,76,93,103,104,114,117],[59,104,116],[65,96,103,104,111,114,118],[65,104,111],[65,104,111,134],[104,111,112,113],[104,118],[104,118,125,126],[104,116,118,126,127],[104,117],[59,104,113,118],[104,118,122,126,127],[104,122],[103,104,116,118,121],[59,104,115,118,125],[65,93,104],[104,111,134],[93,104],[104,141],[77,85,86,104,171],[103,104,140,151,160,165],[61,103,104,140,151,160,162,164,171],[77,86,104,142,145,146,151],[104,145,146,147,151,153],[104,151],[104,150],[77,85,86,104,155],[104,144],[104,147,148,149,150],[104,151,157],[104,164],[104,178,184],[77,104,172,173,175,176],[78,86,104,149,173,175],[104,179],[104,178],[104,173,178,181],[86,104,173,175,178,179],[104,178,181,183,184,185],[104,178,181,183,185],[78,86,104,173,174],[54,77,86,104,149,151,159],[68,86,104],[66,104,140,151],[104,150,161,162],[104,163,166],[70,104,171],[104,167,170],[54,57,61,70,77,79,86,90,103,104,140,145,146,151,152,154,156,158,160,161,163,167,168,169]],"referencedMap":[[190,1],[189,2],[144,3],[194,4],[188,2],[192,5],[193,6],[191,7],[61,8],[62,8],[64,9],[65,10],[66,11],[67,12],[68,13],[69,14],[70,15],[71,16],[72,17],[73,18],[74,18],[75,19],[76,20],[77,21],[78,22],[63,2],[110,2],[79,23],[80,24],[81,25],[111,26],[82,27],[83,28],[84,29],[85,30],[86,31],[87,32],[88,33],[89,34],[90,35],[91,36],[92,37],[93,38],[95,39],[94,40],[96,41],[97,42],[98,43],[99,44],[100,45],[101,46],[102,47],[103,48],[104,49],[105,50],[106,51],[107,52],[108,53],[109,54],[153,55],[55,2],[57,56],[56,2],[58,2],[147,2],[143,2],[148,2],[149,2],[159,2],[157,57],[12,2],[11,2],[2,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[3,2],[4,2],[24,2],[21,2],[22,2],[23,2],[25,2],[26,2],[27,2],[5,2],[28,2],[29,2],[30,2],[31,2],[6,2],[32,2],[33,2],[34,2],[35,2],[7,2],[36,2],[41,2],[42,2],[37,2],[38,2],[39,2],[40,2],[8,2],[46,2],[43,2],[44,2],[45,2],[47,2],[9,2],[48,2],[49,2],[50,2],[51,2],[52,2],[1,2],[10,2],[53,2],[140,58],[125,59],[132,60],[124,59],[116,61],[115,62],[138,63],[133,64],[136,65],[118,66],[117,67],[113,68],[112,69],[135,70],[114,71],[119,72],[120,2],[123,72],[59,2],[139,72],[127,73],[128,74],[130,75],[126,76],[129,77],[134,63],[121,78],[122,79],[131,80],[60,81],[137,82],[155,2],[54,83],[142,84],[141,2],[164,2],[172,85],[166,86],[165,87],[152,88],[154,89],[150,90],[162,91],[183,2],[156,92],[187,2],[145,93],[146,2],[151,94],[158,95],[178,96],[185,97],[177,98],[176,99],[174,2],[180,100],[179,101],[182,102],[181,103],[186,104],[184,105],[175,106],[160,107],[173,108],[161,109],[163,110],[167,111],[168,2],[169,112],[171,113],[170,114]],"exportedModulesMap":[[190,1],[189,2],[144,3],[194,4],[188,2],[192,5],[193,6],[191,7],[61,8],[62,8],[64,9],[65,10],[66,11],[67,12],[68,13],[69,14],[70,15],[71,16],[72,17],[73,18],[74,18],[75,19],[76,20],[77,21],[78,22],[63,2],[110,2],[79,23],[80,24],[81,25],[111,26],[82,27],[83,28],[84,29],[85,30],[86,31],[87,32],[88,33],[89,34],[90,35],[91,36],[92,37],[93,38],[95,39],[94,40],[96,41],[97,42],[98,43],[99,44],[100,45],[101,46],[102,47],[103,48],[104,49],[105,50],[106,51],[107,52],[108,53],[109,54],[153,55],[55,2],[57,56],[56,2],[58,2],[147,2],[143,2],[148,2],[149,2],[159,2],[157,57],[12,2],[11,2],[2,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[3,2],[4,2],[24,2],[21,2],[22,2],[23,2],[25,2],[26,2],[27,2],[5,2],[28,2],[29,2],[30,2],[31,2],[6,2],[32,2],[33,2],[34,2],[35,2],[7,2],[36,2],[41,2],[42,2],[37,2],[38,2],[39,2],[40,2],[8,2],[46,2],[43,2],[44,2],[45,2],[47,2],[9,2],[48,2],[49,2],[50,2],[51,2],[52,2],[1,2],[10,2],[53,2],[140,58],[125,59],[132,60],[124,59],[116,61],[115,62],[138,63],[133,64],[136,65],[118,66],[117,67],[113,68],[112,69],[135,70],[114,71],[119,72],[120,2],[123,72],[59,2],[139,72],[127,73],[128,74],[130,75],[126,76],[129,77],[134,63],[121,78],[122,79],[131,80],[60,81],[137,82],[155,2],[54,83],[142,84],[141,2],[164,2],[172,85],[166,86],[165,87],[152,88],[154,89],[150,90],[162,91],[183,2],[156,92],[187,2],[145,93],[146,2],[151,94],[158,95],[178,96],[185,97],[177,98],[176,99],[174,2],[180,100],[179,101],[182,102],[181,103],[186,104],[184,105],[175,106],[160,107],[173,108],[161,109],[163,110],[167,111],[168,2],[169,112],[171,113],[170,114]],"semanticDiagnosticsPerFile":[190,189,144,194,188,192,193,191,61,62,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,63,110,79,80,81,111,82,83,84,85,86,87,88,89,90,91,92,93,95,94,96,97,98,99,100,101,102,103,104,105,106,107,108,109,153,55,57,56,58,147,143,148,149,159,157,12,11,2,13,14,15,16,17,18,19,20,3,4,24,21,22,23,25,26,27,5,28,29,30,31,6,32,33,34,35,7,36,41,42,37,38,39,40,8,46,43,44,45,47,9,48,49,50,51,52,1,10,53,140,125,132,124,116,115,138,133,136,118,117,113,112,135,114,119,120,123,59,139,127,128,130,126,129,134,121,122,131,60,137,155,54,142,141,164,172,166,165,152,154,150,162,183,156,187,145,146,151,158,178,185,177,176,174,180,179,182,181,186,184,175,160,173,161,163,167,168,169,171,170],"affectedFilesPendingEmit":[[190,1],[189,1],[144,1],[194,1],[188,1],[192,1],[193,1],[191,1],[61,1],[62,1],[64,1],[65,1],[66,1],[67,1],[68,1],[69,1],[70,1],[71,1],[72,1],[73,1],[74,1],[75,1],[76,1],[77,1],[78,1],[63,1],[110,1],[79,1],[80,1],[81,1],[111,1],[82,1],[83,1],[84,1],[85,1],[86,1],[87,1],[88,1],[89,1],[90,1],[91,1],[92,1],[93,1],[95,1],[94,1],[96,1],[97,1],[98,1],[99,1],[100,1],[101,1],[102,1],[103,1],[104,1],[105,1],[106,1],[107,1],[108,1],[109,1],[153,1],[55,1],[57,1],[56,1],[58,1],[147,1],[143,1],[148,1],[149,1],[159,1],[157,1],[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[8,1],[9,1],[10,1],[140,1],[125,1],[132,1],[124,1],[116,1],[115,1],[138,1],[133,1],[136,1],[118,1],[117,1],[113,1],[112,1],[135,1],[114,1],[119,1],[120,1],[123,1],[59,1],[139,1],[127,1],[128,1],[130,1],[126,1],[129,1],[134,1],[121,1],[122,1],[131,1],[60,1],[137,1],[155,1],[54,1],[142,1],[141,1],[164,1],[172,1],[166,1],[165,1],[152,1],[154,1],[150,1],[162,1],[183,1],[156,1],[187,1],[145,1],[146,1],[151,1],[158,1],[178,1],[185,1],[177,1],[176,1],[174,1],[180,1],[179,1],[182,1],[181,1],[186,1],[184,1],[175,1],[160,1],[173,1],[161,1],[163,1],[167,1],[168,1],[169,1],[171,1],[170,1]]},"version":"4.8.4"}
package/src/sites.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import assert from "node:assert";
2
2
  import { readdir, readFile, stat } from "node:fs/promises";
3
3
  import * as path from "node:path";
4
+ import chalk from "chalk";
4
5
  import ignore from "ignore";
5
6
  import xxhash from "xxhash-wasm";
6
7
  import {
@@ -9,8 +10,10 @@ import {
9
10
  listKVNamespaces,
10
11
  putKVBulkKeyValue,
11
12
  deleteKVBulkKeyValue,
13
+ BATCH_KEY_MAX,
14
+ formatNumber,
12
15
  } from "./kv/helpers";
13
- import { logger } from "./logger";
16
+ import { logger, LOGGER_LEVELS } from "./logger";
14
17
  import type { Config } from "./config";
15
18
  import type { KeyValue } from "./kv/helpers";
16
19
  import type { XXHashAPI } from "xxhash-wasm";
@@ -92,6 +95,15 @@ async function createKVNamespaceIfNotAlreadyExisting(
92
95
  };
93
96
  }
94
97
 
98
+ const MAX_DIFF_LINES = 100;
99
+ const MAX_BUCKET_SIZE = 98 * 1000 * 1000;
100
+ const MAX_BUCKET_KEYS = BATCH_KEY_MAX;
101
+ const MAX_BATCH_OPERATIONS = 5;
102
+
103
+ function pluralise(count: number) {
104
+ return count === 1 ? "" : "s";
105
+ }
106
+
95
107
  /**
96
108
  * Upload the assets found within the `dirPath` directory to the sites assets KV namespace for
97
109
  * the worker given by `scriptName`.
@@ -116,13 +128,13 @@ export async function syncAssets(
116
128
  if (siteAssets === undefined) {
117
129
  return { manifest: undefined, namespace: undefined };
118
130
  }
119
-
120
131
  if (dryRun) {
121
132
  logger.log("(Note: doing a dry run, not uploading or deleting anything.)");
122
133
  return { manifest: undefined, namespace: undefined };
123
134
  }
124
135
  assert(accountId, "Missing accountId");
125
136
 
137
+ // Create assets namespace if it doesn't exist
126
138
  const title = `__${scriptName}-workers_sites_assets${
127
139
  preview ? "_preview" : ""
128
140
  }`;
@@ -131,55 +143,81 @@ export async function syncAssets(
131
143
  title,
132
144
  accountId
133
145
  );
134
-
135
- // let's get all the keys in this namespace
146
+ // Get all existing keys in asset namespace
147
+ logger.info("Fetching list of already uploaded assets...");
136
148
  const namespaceKeysResponse = await listKVNamespaceKeys(accountId, namespace);
137
149
  const namespaceKeys = new Set(namespaceKeysResponse.map((x) => x.name));
138
150
 
139
- const manifest: Record<string, string> = {};
140
-
141
- // A batch of uploads where each bucket has to be less than 98mb
142
- const uploadBuckets: KeyValue[][] = [];
143
- // The "live" bucket that we'll keep filling until it's just below 98mb
144
- let uploadBucket: KeyValue[] = [];
145
- // A size counter for the live bucket
146
- let uploadBucketSize = 0;
147
-
148
- const include = createPatternMatcher(siteAssets.includePatterns, false);
149
- const exclude = createPatternMatcher(siteAssets.excludePatterns, true);
150
- const hasher = await xxhash();
151
-
152
151
  const assetDirectory = path.join(
153
152
  siteAssets.baseDirectory,
154
153
  siteAssets.assetDirectory
155
154
  );
155
+ const include = createPatternMatcher(siteAssets.includePatterns, false);
156
+ const exclude = createPatternMatcher(siteAssets.excludePatterns, true);
157
+ const hasher = await xxhash();
158
+
159
+ // Find and validate all assets before we make any changes (can't store base64
160
+ // contents in memory for upload as users may have *lots* of files, and we
161
+ // don't want to OOM: https://github.com/cloudflare/workers-sdk/issues/2223)
162
+
163
+ const manifest: Record<string, string> = {};
164
+ type PathKey = [path: string, key: string];
165
+ // A batch of uploads where each bucket has to be less than 100 MiB and
166
+ // contain less than 10,000 keys (although we limit to 98 MB and 5000 keys)
167
+ const uploadBuckets: PathKey[][] = [];
168
+ // The "live" bucket we'll keep filling until it's just below the size limit
169
+ let uploadBucket: PathKey[] = [];
170
+ // Current size of the live bucket in bytes (just base64 encoded values)
171
+ let uploadBucketSize = 0;
172
+
173
+ let uploadCount = 0;
174
+ let skipCount = 0;
175
+
176
+ // Always log the first MAX_DIFF_LINES lines, then require the debug log level
177
+ let diffCount = 0;
178
+ function logDiff(line: string) {
179
+ const level = logger.loggerLevel;
180
+ if (LOGGER_LEVELS[level] >= LOGGER_LEVELS.debug) {
181
+ // If we're logging as debug level, we want *all* diff lines to be logged
182
+ // at debug level, not just the first MAX_DIFF_LINES
183
+ logger.debug(line);
184
+ } else if (diffCount < MAX_DIFF_LINES) {
185
+ // Otherwise, log the first MAX_DIFF_LINES diffs at info level...
186
+ logger.info(line);
187
+ } else if (diffCount === MAX_DIFF_LINES) {
188
+ // ...and warn when we start to truncate it
189
+ const msg =
190
+ " (truncating changed assets log, set `WRANGLER_LOG=debug` environment variable to see full diff)";
191
+ logger.info(chalk.dim(msg));
192
+ }
193
+ diffCount++;
194
+ }
195
+
196
+ logger.info("Building list of assets to upload...");
156
197
  for await (const absAssetFile of getFilesInFolder(assetDirectory)) {
157
198
  const assetFile = path.relative(assetDirectory, absAssetFile);
158
- if (!include(assetFile)) {
159
- continue;
160
- }
161
- if (exclude(assetFile)) {
162
- continue;
163
- }
199
+ if (!include(assetFile) || exclude(assetFile)) continue;
164
200
 
165
- logger.log(`Reading ${assetFile}...`);
166
201
  const content = await readFile(absAssetFile, "base64");
167
- await validateAssetSize(absAssetFile, assetFile);
168
- // while KV accepts files that are 25 MiB **before** b64 encoding
202
+ // While KV accepts files that are 25 MiB **before** b64 encoding
169
203
  // the overall bucket size must be below 100 MB **after** b64 encoding
170
- const assetSize = Buffer.from(content).length;
204
+ const assetSize = Buffer.byteLength(content);
205
+ await validateAssetSize(absAssetFile, assetFile);
171
206
  const assetKey = hashAsset(hasher, assetFile, content);
172
207
  validateAssetKey(assetKey);
173
208
 
174
- // now put each of the files into kv
175
209
  if (!namespaceKeys.has(assetKey)) {
176
- logger.log(`Uploading as ${assetKey}...`);
177
-
178
- // Check if adding this asset to the bucket would
179
- // push it over the 98 MiB limit KV bulk API limit
180
- if (uploadBucketSize + assetSize > 98 * 1000 * 1000) {
181
- // If so, move the current bucket into the batch,
182
- // and reset the counter/bucket
210
+ logDiff(
211
+ chalk.green(` + ${assetKey} (uploading new version of ${assetFile})`)
212
+ );
213
+
214
+ // Check if adding this asset to the bucket would push it over the KV
215
+ // bulk API limits
216
+ if (
217
+ uploadBucketSize + assetSize > MAX_BUCKET_SIZE ||
218
+ uploadBucket.length + 1 > MAX_BUCKET_KEYS
219
+ ) {
220
+ // If so, record the current bucket and reset it
183
221
  uploadBuckets.push(uploadBucket);
184
222
  uploadBucketSize = 0;
185
223
  uploadBucket = [];
@@ -187,13 +225,11 @@ export async function syncAssets(
187
225
 
188
226
  // Update the bucket and the size counter
189
227
  uploadBucketSize += assetSize;
190
- uploadBucket.push({
191
- key: assetKey,
192
- value: content,
193
- base64: true,
194
- });
228
+ uploadBucket.push([absAssetFile, assetKey]);
229
+ uploadCount++;
195
230
  } else {
196
- logger.log(`Skipping - already uploaded.`);
231
+ logDiff(chalk.dim(` = ${assetKey} (already uploaded ${assetFile})`));
232
+ skipCount++;
197
233
  }
198
234
 
199
235
  // Remove the key from the set so we know what we've already uploaded
@@ -203,23 +239,99 @@ export async function syncAssets(
203
239
  const manifestKey = urlSafe(path.relative(assetDirectory, absAssetFile));
204
240
  manifest[manifestKey] = assetKey;
205
241
  }
242
+ // Add the last (potentially only or empty) bucket to the batch
243
+ if (uploadBucket.length > 0) uploadBuckets.push(uploadBucket);
206
244
 
207
- // Add the last (potentially only) bucket to the batch
208
- uploadBuckets.push(uploadBucket);
209
-
210
- // keys now contains all the files we're deleting
211
245
  for (const key of namespaceKeys) {
212
- logger.log(`Deleting ${key} from the asset store...`);
246
+ logDiff(chalk.red(` - ${key} (removing as stale)`));
247
+ }
248
+
249
+ // Upload new assets, with 5 concurrent uploaders
250
+ if (uploadCount > 0) {
251
+ const s = pluralise(uploadCount);
252
+ logger.info(`Uploading ${formatNumber(uploadCount)} new asset${s}...`);
253
+ }
254
+ if (skipCount > 0) {
255
+ const s = pluralise(skipCount);
256
+ logger.info(
257
+ `Skipped uploading ${formatNumber(skipCount)} existing asset${s}.`
258
+ );
213
259
  }
260
+ let uploadedCount = 0;
261
+ const controller = new AbortController();
262
+ const uploaders = Array.from(Array(MAX_BATCH_OPERATIONS)).map(async () => {
263
+ while (!controller.signal.aborted) {
264
+ // Get the next bucket to upload. If there is none, stop this uploader.
265
+ // JavaScript is single(ish)-threaded, so we don't need to worry about
266
+ // parallel access here.
267
+ const nextBucket = uploadBuckets.shift();
268
+ if (nextBucket === undefined) break;
269
+
270
+ // Read all files in the bucket as base64
271
+ // TODO(perf): consider streaming the bulk upload body, rather than
272
+ // buffering all base64 contents then JSON-stringifying. This probably
273
+ // doesn't matter *too* much: we know buckets will be about 100MB, so
274
+ // with 5 uploaders, we could load about 500MB into memory (+ extra
275
+ // object keys/tags/copies/etc).
276
+ const bucket: KeyValue[] = [];
277
+ for (const [absAssetFile, assetKey] of nextBucket) {
278
+ bucket.push({
279
+ key: assetKey,
280
+ value: await readFile(absAssetFile, "base64"),
281
+ base64: true,
282
+ });
283
+ if (controller.signal.aborted) break;
284
+ }
214
285
 
215
- // upload each bucket in parallel
216
- const bucketsToPut = [];
217
- for (const bucket of uploadBuckets) {
218
- bucketsToPut.push(putKVBulkKeyValue(accountId, namespace, bucket));
286
+ // Upload the bucket to the KV namespace, suppressing logs, we do our own
287
+ try {
288
+ await putKVBulkKeyValue(
289
+ accountId,
290
+ namespace,
291
+ bucket,
292
+ /* quiet */ true,
293
+ controller.signal
294
+ );
295
+ } catch (e) {
296
+ // https://developer.mozilla.org/en-US/docs/Web/API/DOMException#error_names
297
+ // https://github.com/nodejs/undici/blob/a3efc9814447001a43a976f1c64adc41995df7e3/lib/core/errors.js#L89
298
+ if (
299
+ typeof e === "object" &&
300
+ e !== null &&
301
+ "name" in e &&
302
+ // @ts-expect-error `e.name` should be typed `unknown`, fixed in
303
+ // TypeScript 4.9
304
+ e.name === "AbortError"
305
+ ) {
306
+ break;
307
+ }
308
+ throw e;
309
+ }
310
+ uploadedCount += nextBucket.length;
311
+ const percent = Math.floor((100 * uploadedCount) / uploadCount);
312
+ logger.info(
313
+ `Uploaded ${percent}% [${formatNumber(
314
+ uploadedCount
315
+ )} out of ${formatNumber(uploadCount)}]`
316
+ );
317
+ }
318
+ });
319
+ try {
320
+ // Wait for all uploaders to complete, or one to fail
321
+ await Promise.all(uploaders);
322
+ } catch (e) {
323
+ // If any uploader fails, abort the others
324
+ logger.info(`Upload failed, aborting...`);
325
+ controller.abort();
326
+ throw e;
219
327
  }
220
- await Promise.all(bucketsToPut);
221
328
 
222
- // then delete all the assets that aren't used anymore
329
+ // Delete stale assets
330
+ const deleteCount = namespaceKeys.size;
331
+ if (deleteCount > 0) {
332
+ const s = pluralise(deleteCount);
333
+ logger.info(`Removing ${formatNumber(deleteCount)} stale asset${s}...`);
334
+ }
223
335
  await deleteKVBulkKeyValue(accountId, namespace, Array.from(namespaceKeys));
224
336
 
225
337
  logger.log("↗️ Done syncing assets");