wrangler 2.8.1 → 2.9.1

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.
Files changed (81) hide show
  1. package/miniflare-dist/index.mjs +1 -14
  2. package/package.json +2 -2
  3. package/src/__tests__/d1/d1.test.ts +11 -56
  4. package/src/__tests__/d1/migrate.test.ts +141 -0
  5. package/src/__tests__/dev.test.tsx +5 -4
  6. package/src/__tests__/generate.test.ts +1 -1
  7. package/src/__tests__/helpers/end-event-loop.ts +6 -0
  8. package/src/__tests__/helpers/mock-get-pages-upload-token.ts +25 -0
  9. package/src/__tests__/helpers/mock-set-timeout.ts +16 -0
  10. package/src/__tests__/index.test.ts +36 -32
  11. package/src/__tests__/init.test.ts +1 -1
  12. package/src/__tests__/kv.test.ts +55 -44
  13. package/src/__tests__/pages/deployment-list.test.ts +78 -0
  14. package/src/__tests__/pages/pages.test.ts +81 -0
  15. package/src/__tests__/pages/project-create.test.ts +63 -0
  16. package/src/__tests__/pages/project-list.test.ts +108 -0
  17. package/src/__tests__/pages/project-upload.test.ts +481 -0
  18. package/src/__tests__/pages/publish.test.ts +2221 -0
  19. package/src/__tests__/parse.test.ts +106 -0
  20. package/src/__tests__/pubsub.test.ts +15 -12
  21. package/src/__tests__/queues.test.ts +35 -28
  22. package/src/__tests__/r2.test.ts +25 -20
  23. package/src/__tests__/tsconfig.tsbuildinfo +1 -1
  24. package/src/__tests__/worker-namespace.test.ts +26 -21
  25. package/src/api/dev.ts +80 -11
  26. package/src/api/pages/publish.tsx +7 -4
  27. package/src/bundle.ts +1 -1
  28. package/src/config/config.ts +7 -0
  29. package/src/config/index.ts +24 -20
  30. package/src/d1/backups.tsx +20 -24
  31. package/src/d1/create.tsx +6 -5
  32. package/src/d1/delete.ts +7 -10
  33. package/src/d1/execute.tsx +83 -85
  34. package/src/d1/index.ts +5 -6
  35. package/src/d1/list.tsx +21 -9
  36. package/src/d1/migrations/apply.tsx +13 -9
  37. package/src/d1/migrations/create.tsx +9 -10
  38. package/src/d1/migrations/list.tsx +19 -9
  39. package/src/d1/migrations/options.ts +2 -2
  40. package/src/d1/options.ts +3 -3
  41. package/src/delete.ts +5 -8
  42. package/src/deprecated/index.ts +7 -8
  43. package/src/dev.tsx +42 -80
  44. package/src/dispatch-namespace.ts +20 -16
  45. package/src/docs/index.ts +7 -8
  46. package/src/generate/index.ts +5 -7
  47. package/src/index.ts +22 -21
  48. package/src/init.ts +5 -7
  49. package/src/kv/index.ts +15 -17
  50. package/src/miniflare-cli/tsconfig.tsbuildinfo +1 -1
  51. package/src/pages/build.ts +6 -4
  52. package/src/pages/deployment-tails.ts +7 -10
  53. package/src/pages/deployments.tsx +6 -4
  54. package/src/pages/dev.ts +15 -17
  55. package/src/pages/functions/tsconfig.tsbuildinfo +1 -1
  56. package/src/pages/functions.ts +8 -4
  57. package/src/pages/index.ts +3 -3
  58. package/src/pages/projects.tsx +7 -12
  59. package/src/pages/publish.tsx +6 -4
  60. package/src/pages/types.ts +5 -0
  61. package/src/pages/upload.tsx +6 -4
  62. package/src/parse.ts +23 -1
  63. package/src/publish/index.ts +19 -15
  64. package/src/publish/publish.ts +2 -2
  65. package/src/pubsub/pubsub-commands.ts +18 -19
  66. package/src/queues/cli/commands/consumer/add.ts +18 -24
  67. package/src/queues/cli/commands/consumer/index.ts +3 -6
  68. package/src/queues/cli/commands/consumer/remove.ts +11 -18
  69. package/src/queues/cli/commands/create.ts +8 -8
  70. package/src/queues/cli/commands/delete.ts +8 -8
  71. package/src/queues/cli/commands/index.ts +3 -4
  72. package/src/queues/cli/commands/list.ts +8 -8
  73. package/src/r2/index.ts +28 -28
  74. package/src/secret/index.ts +9 -14
  75. package/src/tail/index.ts +6 -8
  76. package/src/yargs-types.ts +18 -5
  77. package/templates/checked-fetch.js +9 -1
  78. package/templates/tsconfig.init.json +1 -1
  79. package/templates/tsconfig.tsbuildinfo +1 -1
  80. package/wrangler-dist/cli.js +2180 -1799
  81. package/src/__tests__/pages.test.ts +0 -2898
@@ -1,21 +1,13 @@
1
- import { type Argv } from "yargs";
2
1
  import { readConfig } from "../../../../config";
3
2
  import { logger } from "../../../../logger";
4
3
  import { postConsumer } from "../../../client";
5
- import type { CommonYargsOptions } from "../../../../yargs-types";
4
+ import type {
5
+ CommonYargsArgv,
6
+ StrictYargsOptionsToInterface,
7
+ } from "../../../../yargs-types";
6
8
  import type { PostConsumerBody } from "../../../client";
7
9
 
8
- type Args = CommonYargsOptions & {
9
- config?: string;
10
- ["queue-name"]: string;
11
- ["script-name"]: string;
12
- ["batch-size"]?: number;
13
- ["batch-timeout"]?: number;
14
- ["message-retries"]?: number;
15
- ["dead-letter-queue"]?: string;
16
- };
17
-
18
- export function options(yargs: Argv<CommonYargsOptions>): Argv<Args> {
10
+ export function options(yargs: CommonYargsArgv) {
19
11
  return yargs
20
12
  .positional("queue-name", {
21
13
  type: "string",
@@ -48,24 +40,26 @@ export function options(yargs: Argv<CommonYargsOptions>): Argv<Args> {
48
40
  });
49
41
  }
50
42
 
51
- export async function handler(args: Args) {
43
+ export async function handler(
44
+ args: StrictYargsOptionsToInterface<typeof options>
45
+ ) {
52
46
  const config = readConfig(args.config, args);
53
47
 
54
48
  const body: PostConsumerBody = {
55
- script_name: args["script-name"],
49
+ script_name: args.scriptName,
56
50
  // TODO(soon) is this still the correct usage of the environment?
57
- environment_name: args.env || "", // API expects empty string as default
51
+ environment_name: args.env ?? "", // API expects empty string as default
58
52
  settings: {
59
- batch_size: args["batch-size"],
60
- max_retries: args["message-retries"],
61
- max_wait_time_ms: args["batch-timeout"] // API expects milliseconds
62
- ? 1000 * args["batch-timeout"]
53
+ batch_size: args.batchSize,
54
+ max_retries: args.messageRetries,
55
+ max_wait_time_ms: args.batchTimeout // API expects milliseconds
56
+ ? 1000 * args.batchTimeout
63
57
  : undefined,
64
58
  },
65
- dead_letter_queue: args["dead-letter-queue"],
59
+ dead_letter_queue: args.deadLetterQueue,
66
60
  };
67
61
 
68
- logger.log(`Adding consumer to queue ${args["queue-name"]}.`);
69
- await postConsumer(config, args["queue-name"], body);
70
- logger.log(`Added consumer to queue ${args["queue-name"]}.`);
62
+ logger.log(`Adding consumer to queue ${args.queueName}.`);
63
+ await postConsumer(config, args.queueName, body);
64
+ logger.log(`Added consumer to queue ${args.queueName}.`);
71
65
  }
@@ -1,11 +1,8 @@
1
- import { type BuilderCallback } from "yargs";
2
- import { type CommonYargsOptions } from "../../../../yargs-types";
3
1
  import { options as addOptions, handler as addHandler } from "./add";
4
2
  import { options as removeOptions, handler as removeHandler } from "./remove";
3
+ import type { CommonYargsArgv } from "../../../../yargs-types";
5
4
 
6
- export const consumers: BuilderCallback<CommonYargsOptions, unknown> = (
7
- yargs
8
- ) => {
5
+ export function consumers(yargs: CommonYargsArgv) {
9
6
  yargs.command(
10
7
  "add <queue-name> <script-name>",
11
8
  "Add a Queue Consumer",
@@ -19,4 +16,4 @@ export const consumers: BuilderCallback<CommonYargsOptions, unknown> = (
19
16
  removeOptions,
20
17
  removeHandler
21
18
  );
22
- };
19
+ }
@@ -1,16 +1,12 @@
1
- import { type Argv } from "yargs";
2
1
  import { readConfig } from "../../../../config";
3
2
  import { logger } from "../../../../logger";
4
3
  import { deleteConsumer } from "../../../client";
5
- import type { CommonYargsOptions } from "../../../../yargs-types";
4
+ import type {
5
+ CommonYargsArgv,
6
+ StrictYargsOptionsToInterface,
7
+ } from "../../../../yargs-types";
6
8
 
7
- type Args = CommonYargsOptions & {
8
- config?: string;
9
- ["queue-name"]: string;
10
- ["script-name"]: string;
11
- };
12
-
13
- export function options(yargs: Argv<CommonYargsOptions>): Argv<Args> {
9
+ export function options(yargs: CommonYargsArgv) {
14
10
  return yargs
15
11
  .positional("queue-name", {
16
12
  type: "string",
@@ -24,15 +20,12 @@ export function options(yargs: Argv<CommonYargsOptions>): Argv<Args> {
24
20
  });
25
21
  }
26
22
 
27
- export async function handler(args: Args) {
23
+ export async function handler(
24
+ args: StrictYargsOptionsToInterface<typeof options>
25
+ ) {
28
26
  const config = readConfig(args.config, args);
29
27
 
30
- logger.log(`Removing consumer from queue ${args["queue-name"]}.`);
31
- await deleteConsumer(
32
- config,
33
- args["queue-name"],
34
- args["script-name"],
35
- args.env
36
- );
37
- logger.log(`Removed consumer from queue ${args["queue-name"]}.`);
28
+ logger.log(`Removing consumer from queue ${args.queueName}.`);
29
+ await deleteConsumer(config, args.queueName, args.scriptName, args.env);
30
+ logger.log(`Removed consumer from queue ${args.queueName}.`);
38
31
  }
@@ -1,14 +1,12 @@
1
- import { type Argv } from "yargs";
2
1
  import { readConfig } from "../../../config";
3
2
  import { logger } from "../../../logger";
4
3
  import { createQueue } from "../../client";
4
+ import type {
5
+ CommonYargsArgv,
6
+ StrictYargsOptionsToInterface,
7
+ } from "../../../yargs-types";
5
8
 
6
- interface Args {
7
- config?: string;
8
- name: string;
9
- }
10
-
11
- export function options(yargs: Argv): Argv<Args> {
9
+ export function options(yargs: CommonYargsArgv) {
12
10
  return yargs.positional("name", {
13
11
  type: "string",
14
12
  demandOption: true,
@@ -16,7 +14,9 @@ export function options(yargs: Argv): Argv<Args> {
16
14
  });
17
15
  }
18
16
 
19
- export async function handler(args: Args) {
17
+ export async function handler(
18
+ args: StrictYargsOptionsToInterface<typeof options>
19
+ ) {
20
20
  const config = readConfig(args.config, args);
21
21
 
22
22
  logger.log(`Creating queue ${args.name}.`);
@@ -1,14 +1,12 @@
1
- import { type Argv } from "yargs";
2
1
  import { readConfig } from "../../../config";
3
2
  import { logger } from "../../../logger";
4
3
  import { deleteQueue } from "../../client";
4
+ import type {
5
+ CommonYargsArgv,
6
+ StrictYargsOptionsToInterface,
7
+ } from "../../../yargs-types";
5
8
 
6
- interface Args {
7
- config?: string;
8
- name: string;
9
- }
10
-
11
- export function options(yargs: Argv): Argv<Args> {
9
+ export function options(yargs: CommonYargsArgv) {
12
10
  // TODO(soon) --force option
13
11
  return yargs.positional("name", {
14
12
  type: "string",
@@ -17,7 +15,9 @@ export function options(yargs: Argv): Argv<Args> {
17
15
  });
18
16
  }
19
17
 
20
- export async function handler(args: Args) {
18
+ export async function handler(
19
+ args: StrictYargsOptionsToInterface<typeof options>
20
+ ) {
21
21
  const config = readConfig(args.config, args);
22
22
 
23
23
  logger.log(`Deleting queue ${args.name}.`);
@@ -1,13 +1,12 @@
1
- import { type BuilderCallback } from "yargs";
2
- import { type CommonYargsOptions } from "../../../yargs-types";
3
1
  import { HandleUnauthorizedError } from "../../utils";
4
2
  import { consumers } from "./consumer";
5
3
 
6
4
  import { options as createOptions, handler as createHandler } from "./create";
7
5
  import { options as deleteOptions, handler as deleteHandler } from "./delete";
8
6
  import { options as listOptions, handler as listHandler } from "./list";
7
+ import type { CommonYargsArgv } from "../../../yargs-types";
9
8
 
10
- export const queues: BuilderCallback<CommonYargsOptions, unknown> = (yargs) => {
9
+ export function queues(yargs: CommonYargsArgv) {
11
10
  yargs.command("list", "List Queues", listOptions, listHandler);
12
11
 
13
12
  yargs.command(
@@ -33,4 +32,4 @@ export const queues: BuilderCallback<CommonYargsOptions, unknown> = (yargs) => {
33
32
  );
34
33
 
35
34
  yargs.fail(HandleUnauthorizedError);
36
- };
35
+ }
@@ -1,14 +1,12 @@
1
- import { type Argv } from "yargs";
2
1
  import { readConfig } from "../../../config";
3
2
  import { logger } from "../../../logger";
4
3
  import { listQueues } from "../../client";
4
+ import type {
5
+ CommonYargsArgv,
6
+ StrictYargsOptionsToInterface,
7
+ } from "../../../yargs-types";
5
8
 
6
- interface Args {
7
- config?: string;
8
- page?: number;
9
- }
10
-
11
- export function options(yargs: Argv): Argv<Args> {
9
+ export function options(yargs: CommonYargsArgv) {
12
10
  return yargs.options({
13
11
  page: {
14
12
  type: "number",
@@ -17,7 +15,9 @@ export function options(yargs: Argv): Argv<Args> {
17
15
  });
18
16
  }
19
17
 
20
- export async function handler(args: Args) {
18
+ export async function handler(
19
+ args: StrictYargsOptionsToInterface<typeof options>
20
+ ) {
21
21
  const config = readConfig(args.config, args);
22
22
 
23
23
  const queues = await listQueues(config, args.page);
package/src/r2/index.ts CHANGED
@@ -19,22 +19,23 @@ import {
19
19
  putR2Object,
20
20
  } from "./helpers";
21
21
 
22
- import type { ConfigPath } from "../index";
22
+ import type { CommonYargsArgv } from "../yargs-types";
23
23
  import type { Readable } from "node:stream";
24
- import type { BuilderCallback } from "yargs";
25
24
 
26
- export const r2: BuilderCallback<unknown, unknown> = (r2Yargs) => {
25
+ export function r2(r2Yargs: CommonYargsArgv) {
27
26
  return r2Yargs
28
27
  .command("object", "Manage R2 objects", (r2ObjectYargs) => {
29
28
  return r2ObjectYargs
30
29
  .command(
31
30
  "get <objectPath>",
32
31
  "Fetch an object from an R2 bucket",
33
- (Objectyargs) => {
34
- return Objectyargs.positional("objectPath", {
35
- describe: "The source object path in the form of {bucket}/{key}",
36
- type: "string",
37
- })
32
+ (objectArgs) => {
33
+ return objectArgs
34
+ .positional("objectPath", {
35
+ describe:
36
+ "The source object path in the form of {bucket}/{key}",
37
+ type: "string",
38
+ })
38
39
  .option("file", {
39
40
  describe: "The destination file to create",
40
41
  alias: "f",
@@ -51,10 +52,7 @@ export const r2: BuilderCallback<unknown, unknown> = (r2Yargs) => {
51
52
  });
52
53
  },
53
54
  async (objectGetYargs) => {
54
- const config = readConfig(
55
- objectGetYargs.config as ConfigPath,
56
- objectGetYargs
57
- );
55
+ const config = readConfig(objectGetYargs.config, objectGetYargs);
58
56
  const accountId = await requireAuth(config);
59
57
  const { objectPath, pipe } = objectGetYargs;
60
58
  const { bucket, key } = bucketAndKeyFromObjectPath(objectPath);
@@ -144,10 +142,7 @@ export const r2: BuilderCallback<unknown, unknown> = (r2Yargs) => {
144
142
  async (objectPutYargs) => {
145
143
  await printWranglerBanner();
146
144
 
147
- const config = readConfig(
148
- objectPutYargs.config as ConfigPath,
149
- objectPutYargs
150
- );
145
+ const config = readConfig(objectPutYargs.config, objectPutYargs);
151
146
  const accountId = await requireAuth(config);
152
147
  const { objectPath, file, pipe, ...options } = objectPutYargs;
153
148
  const { bucket, key } = bucketAndKeyFromObjectPath(objectPath);
@@ -210,7 +205,7 @@ export const r2: BuilderCallback<unknown, unknown> = (r2Yargs) => {
210
205
  const { objectPath } = args;
211
206
  await printWranglerBanner();
212
207
 
213
- const config = readConfig(args.config as ConfigPath, args);
208
+ const config = readConfig(args.config, args);
214
209
  const accountId = await requireAuth(config);
215
210
  const { bucket, key } = bucketAndKeyFromObjectPath(objectPath);
216
211
  logger.log(`Deleting object "${key}" from bucket "${bucket}".`);
@@ -235,7 +230,7 @@ export const r2: BuilderCallback<unknown, unknown> = (r2Yargs) => {
235
230
  async (args) => {
236
231
  await printWranglerBanner();
237
232
 
238
- const config = readConfig(args.config as ConfigPath, args);
233
+ const config = readConfig(args.config, args);
239
234
 
240
235
  const accountId = await requireAuth(config);
241
236
 
@@ -248,16 +243,21 @@ export const r2: BuilderCallback<unknown, unknown> = (r2Yargs) => {
248
243
  }
249
244
  );
250
245
 
251
- r2BucketYargs.command("list", "List R2 buckets", {}, async (args) => {
252
- const config = readConfig(args.config as ConfigPath, args);
246
+ r2BucketYargs.command(
247
+ "list",
248
+ "List R2 buckets",
249
+ (listArgs) => listArgs,
250
+ async (args) => {
251
+ const config = readConfig(args.config, args);
253
252
 
254
- const accountId = await requireAuth(config);
253
+ const accountId = await requireAuth(config);
255
254
 
256
- logger.log(JSON.stringify(await listR2Buckets(accountId), null, 2));
257
- await metrics.sendMetricsEvent("list r2 buckets", {
258
- sendMetrics: config.send_metrics,
259
- });
260
- });
255
+ logger.log(JSON.stringify(await listR2Buckets(accountId), null, 2));
256
+ await metrics.sendMetricsEvent("list r2 buckets", {
257
+ sendMetrics: config.send_metrics,
258
+ });
259
+ }
260
+ );
261
261
 
262
262
  r2BucketYargs.command(
263
263
  "delete <name>",
@@ -272,7 +272,7 @@ export const r2: BuilderCallback<unknown, unknown> = (r2Yargs) => {
272
272
  async (args) => {
273
273
  await printWranglerBanner();
274
274
 
275
- const config = readConfig(args.config as ConfigPath, args);
275
+ const config = readConfig(args.config, args);
276
276
 
277
277
  const accountId = await requireAuth(config);
278
278
 
@@ -286,4 +286,4 @@ export const r2: BuilderCallback<unknown, unknown> = (r2Yargs) => {
286
286
  );
287
287
  return r2BucketYargs;
288
288
  });
289
- };
289
+ }
@@ -13,14 +13,12 @@ import * as metrics from "../metrics";
13
13
  import { parseJSON, readFileSync } from "../parse";
14
14
  import { requireAuth } from "../user";
15
15
 
16
- import type { ConfigPath } from "../index";
17
16
  import type {
18
- CommonYargsOptions,
19
- YargsOptionsToInterface,
17
+ CommonYargsArgv,
18
+ StrictYargsOptionsToInterface,
20
19
  } from "../yargs-types";
21
- import type { Argv } from "yargs";
22
20
 
23
- export const secret = (secretYargs: Argv<CommonYargsOptions>) => {
21
+ export const secret = (secretYargs: CommonYargsArgv) => {
24
22
  return secretYargs
25
23
  .option("legacy-env", {
26
24
  type: "boolean",
@@ -44,7 +42,7 @@ export const secret = (secretYargs: Argv<CommonYargsOptions>) => {
44
42
  },
45
43
  async (args) => {
46
44
  await printWranglerBanner();
47
- const config = readConfig(args.config as ConfigPath, args);
45
+ const config = readConfig(args.config, args);
48
46
 
49
47
  const scriptName = getLegacyScriptName(args, config);
50
48
  if (!scriptName) {
@@ -172,7 +170,7 @@ export const secret = (secretYargs: Argv<CommonYargsOptions>) => {
172
170
  });
173
171
  },
174
172
  async (args) => {
175
- const config = readConfig(args.config as ConfigPath, args);
173
+ const config = readConfig(args.config, args);
176
174
 
177
175
  const scriptName = getLegacyScriptName(args, config);
178
176
  if (!scriptName) {
@@ -222,7 +220,7 @@ export const secret = (secretYargs: Argv<CommonYargsOptions>) => {
222
220
  });
223
221
  },
224
222
  async (args) => {
225
- const config = readConfig(args.config as ConfigPath, args);
223
+ const config = readConfig(args.config, args);
226
224
 
227
225
  const scriptName = getLegacyScriptName(args, config);
228
226
  if (!scriptName) {
@@ -246,7 +244,7 @@ export const secret = (secretYargs: Argv<CommonYargsOptions>) => {
246
244
  );
247
245
  };
248
246
 
249
- export const secretBulkOptions = (yargs: Argv<CommonYargsOptions>) => {
247
+ export const secretBulkOptions = (yargs: CommonYargsArgv) => {
250
248
  return yargs
251
249
  .positional("json", {
252
250
  describe: `The JSON file of key-value pairs to upload, in form {"key": value, ...}`,
@@ -301,14 +299,11 @@ function readFromStdin(): Promise<string> {
301
299
  });
302
300
  }
303
301
 
304
- type SecretBulkArgs = YargsOptionsToInterface<typeof secretBulkOptions>;
302
+ type SecretBulkArgs = StrictYargsOptionsToInterface<typeof secretBulkOptions>;
305
303
 
306
304
  export const secretBulkHandler = async (secretBulkArgs: SecretBulkArgs) => {
307
305
  await printWranglerBanner();
308
- const config = readConfig(
309
- secretBulkArgs.config as ConfigPath,
310
- secretBulkArgs
311
- );
306
+ const config = readConfig(secretBulkArgs.config, secretBulkArgs);
312
307
 
313
308
  const scriptName = getLegacyScriptName(secretBulkArgs, config);
314
309
  if (!scriptName) {
package/src/tail/index.ts CHANGED
@@ -20,16 +20,14 @@ import {
20
20
  translateCLICommandToFilterMessage,
21
21
  } from "./createTail";
22
22
  import type { WorkerMetadata } from "../create-worker-upload-form";
23
- import type { ConfigPath } from "../index";
24
23
  import type {
25
- CommonYargsOptions,
26
- YargsOptionsToInterface,
24
+ CommonYargsArgv,
25
+ StrictYargsOptionsToInterface,
27
26
  } from "../yargs-types";
28
27
  import type { TailCLIFilters } from "./createTail";
29
28
  import type { RawData } from "ws";
30
- import type { Argv } from "yargs";
31
29
 
32
- export function tailOptions(yargs: Argv<CommonYargsOptions>) {
30
+ export function tailOptions(yargs: CommonYargsArgv) {
33
31
  return yargs
34
32
  .positional("worker", {
35
33
  describe: "Name or route of the worker to tail",
@@ -86,13 +84,13 @@ export function tailOptions(yargs: Argv<CommonYargsOptions>) {
86
84
  });
87
85
  }
88
86
 
89
- type TailArgs = YargsOptionsToInterface<typeof tailOptions>;
87
+ type TailArgs = StrictYargsOptionsToInterface<typeof tailOptions>;
90
88
 
91
89
  export async function tailHandler(args: TailArgs) {
92
90
  if (args.format === "pretty") {
93
91
  await printWranglerBanner();
94
92
  }
95
- const config = readConfig(args.config as ConfigPath, args);
93
+ const config = readConfig(args.config, args);
96
94
  await metrics.sendMetricsEvent("begin log stream", {
97
95
  sendMetrics: config.send_metrics,
98
96
  });
@@ -121,7 +119,7 @@ export async function tailHandler(args: TailArgs) {
121
119
  status: args.status as ("ok" | "error" | "canceled")[] | undefined,
122
120
  header: args.header,
123
121
  method: args.method,
124
- samplingRate: args["sampling-rate"],
122
+ samplingRate: args.samplingRate,
125
123
  search: args.search,
126
124
  clientIp: args.ip,
127
125
  };
@@ -1,3 +1,4 @@
1
+ import type { OnlyCamelCase } from "./config/config";
1
2
  import type { ArgumentsCamelCase, Argv } from "yargs";
2
3
 
3
4
  /**
@@ -7,18 +8,30 @@ export interface CommonYargsOptions {
7
8
  v: boolean | undefined;
8
9
  config: string | undefined;
9
10
  env: string | undefined;
11
+ "experimental-json-config": boolean | undefined;
10
12
  }
11
13
 
14
+ export type CommonYargsArgv = Argv<CommonYargsOptions>;
15
+
12
16
  export type YargvToInterface<T> = T extends Argv<infer P>
13
17
  ? ArgumentsCamelCase<P>
14
18
  : never;
15
19
 
20
+ // See http://stackoverflow.com/questions/51465182/how-to-remove-index-signature-using-mapped-types
21
+ type RemoveIndex<T> = {
22
+ [K in keyof T as string extends K
23
+ ? never
24
+ : number extends K
25
+ ? never
26
+ : K]: T[K];
27
+ };
28
+
16
29
  /**
17
30
  * Given some Yargs Options function factory, extract the interface
18
- * that corresponds to the yargs arguments
31
+ * that corresponds to the yargs arguments, remove index types, and only allow camelCase
19
32
  */
20
- export type YargsOptionsToInterface<
21
- T extends (yargs: Argv<CommonYargsOptions>) => Argv
22
- > = T extends (yargs: Argv<CommonYargsOptions>) => Argv<infer P>
23
- ? ArgumentsCamelCase<P>
33
+ export type StrictYargsOptionsToInterface<
34
+ T extends (yargs: CommonYargsArgv) => Argv
35
+ > = T extends (yargs: CommonYargsArgv) => Argv<infer P>
36
+ ? OnlyCamelCase<RemoveIndex<ArgumentsCamelCase<P>>>
24
37
  : never;
@@ -1,7 +1,15 @@
1
1
  const urls = new Set();
2
2
 
3
3
  export function checkedFetch(request, init) {
4
- const url = new URL(new Request(request, init).url);
4
+ const url =
5
+ request instanceof URL
6
+ ? request
7
+ : new URL(
8
+ (typeof request === "string"
9
+ ? new Request(request, init)
10
+ : request
11
+ ).url
12
+ );
5
13
  if (url.port && url.port !== "443" && url.protocol === "https:") {
6
14
  if (!urls.has(url.toString())) {
7
15
  urls.add(url.toString());
@@ -35,7 +35,7 @@
35
35
  // "typeRoots": [], /* Specify multiple folders that act like `./node_modules/@types`. */
36
36
  "types": [
37
37
  "@cloudflare/workers-types",
38
- "jest"
38
+ "vitest"
39
39
  ] /* Specify type package names to be included without being referenced in a source file. */,
40
40
  // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
41
41
  "resolveJsonModule": true /* Enable importing .json files */,
@@ -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/@cloudflare/kv-asset-handler/dist/types.d.ts","../../../node_modules/@cloudflare/kv-asset-handler/dist/index.d.ts","./facade.d.ts","./first-party-worker-module-facade.ts","./format-dev-errors.ts","./new-worker-scheduled.ts","./new-worker.ts","./pages-dev-util.ts","./pages-dev-pipeline.ts","./pages-shim.ts","../../../node_modules/path-to-regexp/dist/index.d.ts","./pages-template-plugin.ts","./pages-template-worker.ts","./serve-static-assets.ts","./tsconfig-sanity.ts","./middleware/common.ts","./middleware/loader-modules.ts","./middleware/loader-sw.ts","./middleware/middleware-miniflare3-json-error.ts","./middleware/middleware-pretty-error.ts","./middleware/middleware-scheduled.ts","../node_modules/@cloudflare/workers-types/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},"f439ece97b03903d27a93c02f445d9abcff70232b88e70a2621fedcc9db1ffc8",{"version":"e8b2423b91be2951e7db3f6db2ec2cd3625235a950200a74a673b790ed8b4372","affectsGlobalScope":true},"8714b72b95c1f7f9245d32b8b291b21ef26e45d3df59e818f9197f6540e518b7","ad83ce0d12ff9d14ba6a9f43457ffc3d90e87f3e5f20e3fdebbb8409d931d478","ac0696673cb55b950db6fb25fe3ccd6b59c5eb570dc92bfcc4713013b6ed5d63","276b86bbfe5c329ac50a49825faa76788fddc67ff806fdd2880cb53187dfa691","cbfef832a9d473a7cce99f80fe8bda43d59ce81d1c6b5e929f43253f3878ce30","0704bdc9e66ede7a2183c419efdbb5f22c195952231e6c0b9cba526df2e8e2a4","dc4c974e076a16fdd706c84f0e7d30ae61bc0476d02860d88880bb5bd413cb7e","4cd5c66df96cc93d2ff073b6b507741b7de9002225152306bbe4ed79df3451c4","6e7936b20cd2022c2a71f9d780e7f87216c19fde5c18448aaff60059a46ae2e7","3267d7a7c896c2be4958055926940c89f3b4e6786a51335d77da1aa57ee6a33b","ecfcda58573d4cdbd5ecb0eb39a4c9439d40c5e0ca3200e5eafb1624a6117b8e",{"version":"bb652ceca49b7d127579d4c72f5e5adadf64109e91d97470b5ec82d363406e4e","affectsGlobalScope":true},"675d74367d696b7a52f2a515036acf36b2ef341c385d3944dc531d753b257e65","f165c6b3228ab46d02bb1f18a6352c1573382d992cc22342c46cb032c090c4af","7e14036c1239ea1554d89f96c1e0d234ae76cd70d295c83760bda4f0dc768e22",{"version":"8ec567ca02a6acc5fb4e6f6b2a302884009fc78a3246277b488a95c87d1fcaad","affectsGlobalScope":true},"b8773398f456dc4a0c00b988648b2354ae2453ebb5274742b7a7b364f8a0acc8","6c15d320a0c150eac09db4c9e75725fd24a33c78695c758d4eb09f64452b21b8","1e7ccb28ed0d8738d210b1216e3504049d0021df9deec7d5ee247f72db4d6fd9",{"version":"8dfb280945d90d2bf2397e23aa63d7daa3d7e032de526b259ea2baf08223bd69","affectsGlobalScope":true}],"options":{"allowSyntheticDefaultImports":true,"alwaysStrict":false,"esModuleInterop":true,"jsx":2,"module":1,"skipLibCheck":true,"strict":true,"target":99},"fileIdsList":[[54],[55],[56],[56,69],[69],[56,61],[64],[55,56]],"referencedMap":[[55,1],[56,2],[57,3],[58,3],[70,4],[71,5],[72,5],[73,5],[74,5],[62,6],[65,7],[66,7],[67,8]],"exportedModulesMap":[[55,1],[56,2],[57,3],[58,3],[70,4],[71,5],[72,5],[73,5],[74,5],[62,6],[65,7],[66,7],[67,8]],"semanticDiagnosticsPerFile":[55,54,64,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,75,56,57,58,69,70,71,72,73,74,59,60,62,61,63,65,66,67,68],"affectedFilesPendingEmit":[[55,1],[54,1],[64,1],[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[8,1],[9,1],[10,1],[75,1],[56,1],[57,1],[58,1],[69,1],[70,1],[71,1],[72,1],[73,1],[74,1],[59,1],[60,1],[62,1],[61,1],[63,1],[65,1],[66,1],[67,1],[68,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/@cloudflare/kv-asset-handler/dist/types.d.ts","../../../node_modules/@cloudflare/kv-asset-handler/dist/index.d.ts","./facade.d.ts","./first-party-worker-module-facade.ts","./format-dev-errors.ts","./new-worker-scheduled.ts","./new-worker.ts","./pages-dev-util.ts","./pages-dev-pipeline.ts","./pages-shim.ts","../../../node_modules/path-to-regexp/dist/index.d.ts","./pages-template-plugin.ts","./pages-template-worker.ts","./serve-static-assets.ts","./tsconfig-sanity.ts","./middleware/common.ts","./middleware/loader-modules.ts","./middleware/loader-sw.ts","./middleware/middleware-miniflare3-json-error.ts","./middleware/middleware-pretty-error.ts","./middleware/middleware-scheduled.ts","../../../node_modules/@cloudflare/workers-types/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},"f439ece97b03903d27a93c02f445d9abcff70232b88e70a2621fedcc9db1ffc8",{"version":"e8b2423b91be2951e7db3f6db2ec2cd3625235a950200a74a673b790ed8b4372","affectsGlobalScope":true},"8714b72b95c1f7f9245d32b8b291b21ef26e45d3df59e818f9197f6540e518b7","ad83ce0d12ff9d14ba6a9f43457ffc3d90e87f3e5f20e3fdebbb8409d931d478","ac0696673cb55b950db6fb25fe3ccd6b59c5eb570dc92bfcc4713013b6ed5d63","276b86bbfe5c329ac50a49825faa76788fddc67ff806fdd2880cb53187dfa691","cbfef832a9d473a7cce99f80fe8bda43d59ce81d1c6b5e929f43253f3878ce30","0704bdc9e66ede7a2183c419efdbb5f22c195952231e6c0b9cba526df2e8e2a4","dc4c974e076a16fdd706c84f0e7d30ae61bc0476d02860d88880bb5bd413cb7e","4cd5c66df96cc93d2ff073b6b507741b7de9002225152306bbe4ed79df3451c4","6e7936b20cd2022c2a71f9d780e7f87216c19fde5c18448aaff60059a46ae2e7","3267d7a7c896c2be4958055926940c89f3b4e6786a51335d77da1aa57ee6a33b","ecfcda58573d4cdbd5ecb0eb39a4c9439d40c5e0ca3200e5eafb1624a6117b8e",{"version":"bb652ceca49b7d127579d4c72f5e5adadf64109e91d97470b5ec82d363406e4e","affectsGlobalScope":true},"675d74367d696b7a52f2a515036acf36b2ef341c385d3944dc531d753b257e65","f165c6b3228ab46d02bb1f18a6352c1573382d992cc22342c46cb032c090c4af","7e14036c1239ea1554d89f96c1e0d234ae76cd70d295c83760bda4f0dc768e22",{"version":"8ec567ca02a6acc5fb4e6f6b2a302884009fc78a3246277b488a95c87d1fcaad","affectsGlobalScope":true},"b8773398f456dc4a0c00b988648b2354ae2453ebb5274742b7a7b364f8a0acc8","6c15d320a0c150eac09db4c9e75725fd24a33c78695c758d4eb09f64452b21b8","1e7ccb28ed0d8738d210b1216e3504049d0021df9deec7d5ee247f72db4d6fd9",{"version":"8dfb280945d90d2bf2397e23aa63d7daa3d7e032de526b259ea2baf08223bd69","affectsGlobalScope":true}],"options":{"allowSyntheticDefaultImports":true,"alwaysStrict":false,"esModuleInterop":true,"jsx":2,"module":1,"skipLibCheck":true,"strict":true,"target":99},"fileIdsList":[[54],[55],[56],[56,69],[69],[56,61],[64],[55,56]],"referencedMap":[[55,1],[56,2],[57,3],[58,3],[70,4],[71,5],[72,5],[73,5],[74,5],[62,6],[65,7],[66,7],[67,8]],"exportedModulesMap":[[55,1],[56,2],[57,3],[58,3],[70,4],[71,5],[72,5],[73,5],[74,5],[62,6],[65,7],[66,7],[67,8]],"semanticDiagnosticsPerFile":[55,54,75,64,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,56,57,58,69,70,71,72,73,74,59,60,62,61,63,65,66,67,68],"affectedFilesPendingEmit":[[55,1],[54,1],[75,1],[64,1],[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[8,1],[9,1],[10,1],[56,1],[57,1],[58,1],[69,1],[70,1],[71,1],[72,1],[73,1],[74,1],[59,1],[60,1],[62,1],[61,1],[63,1],[65,1],[66,1],[67,1],[68,1]]},"version":"4.8.4"}