wrangler 0.0.0-e30d1013 → 0.0.0-e311bbbf
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/README.md +3 -3
- package/bin/wrangler.js +30 -10
- package/miniflare-dist/index.mjs +126 -74
- package/package.json +26 -19
- package/src/__tests__/api-dev.test.ts +65 -36
- package/src/__tests__/api-devregistry.test.ts +121 -0
- package/src/__tests__/api.test.ts +27 -5
- package/src/__tests__/configuration.test.ts +567 -39
- package/src/__tests__/d1/d1.test.ts +82 -0
- package/src/__tests__/d1/execute.test.ts +66 -0
- package/src/__tests__/d1/migrate.test.ts +157 -0
- package/src/__tests__/d1/splitter.test.ts +255 -0
- package/src/__tests__/delete.test.ts +91 -49
- package/src/__tests__/deployments.test.ts +330 -52
- package/src/__tests__/dev.test.tsx +198 -90
- package/src/__tests__/generate.test.ts +8 -5
- package/src/__tests__/guess-worker-format.test.ts +35 -0
- package/src/__tests__/helpers/end-event-loop.ts +6 -0
- package/src/__tests__/helpers/mock-auth-domain.ts +20 -0
- package/src/__tests__/helpers/mock-console.ts +6 -0
- package/src/__tests__/helpers/mock-dialogs.ts +71 -85
- package/src/__tests__/helpers/mock-get-pages-upload-token.ts +25 -0
- package/src/__tests__/helpers/mock-get-zone-from-host.ts +8 -5
- package/src/__tests__/helpers/mock-known-routes.ts +7 -2
- package/src/__tests__/helpers/mock-kv.ts +29 -16
- package/src/__tests__/helpers/mock-oauth-flow.ts +103 -92
- package/src/__tests__/helpers/mock-process.ts +8 -13
- package/src/__tests__/helpers/mock-set-timeout.ts +16 -0
- package/src/__tests__/helpers/msw/blob-worker.cjs +19 -0
- package/src/__tests__/helpers/msw/handlers/deployments.ts +127 -26
- package/src/__tests__/helpers/msw/handlers/namespaces.ts +18 -41
- package/src/__tests__/helpers/msw/handlers/oauth.ts +13 -18
- package/src/__tests__/helpers/msw/handlers/r2.ts +14 -34
- package/src/__tests__/helpers/msw/handlers/script.ts +9 -28
- package/src/__tests__/helpers/msw/handlers/user.ts +13 -24
- package/src/__tests__/helpers/msw/handlers/zones.ts +6 -8
- package/src/__tests__/helpers/msw/index.ts +32 -1
- package/src/__tests__/helpers/msw/read-file-sync.js +61 -0
- package/src/__tests__/helpers/string-dynamic-values-matcher.ts +28 -0
- package/src/__tests__/helpers/worker-scripts/parent-worker.js +4 -1
- package/src/__tests__/index.test.ts +90 -72
- package/src/__tests__/init.test.ts +927 -631
- package/src/__tests__/jest.setup.ts +19 -42
- package/src/__tests__/kv.test.ts +355 -231
- package/src/__tests__/logger.test.ts +68 -2
- package/src/__tests__/logout.test.ts +47 -0
- package/src/__tests__/metrics.test.ts +94 -51
- package/src/__tests__/middleware.scheduled.test.ts +42 -32
- package/src/__tests__/middleware.test.ts +212 -122
- package/src/__tests__/mtls-certificates.test.ts +588 -0
- package/src/__tests__/pages/deployment-list.test.ts +80 -0
- package/src/__tests__/pages/functions-build.test.ts +452 -0
- package/src/__tests__/pages/pages.test.ts +81 -0
- package/src/__tests__/pages/project-create.test.ts +63 -0
- package/src/__tests__/pages/project-list.test.ts +110 -0
- package/src/__tests__/pages/project-upload.test.ts +500 -0
- package/src/__tests__/pages/publish.test.ts +2864 -0
- package/src/__tests__/pages-deployment-tail.test.ts +955 -0
- package/src/__tests__/parse.test.ts +106 -0
- package/src/__tests__/publish.test.ts +1620 -830
- package/src/__tests__/pubsub.test.ts +226 -100
- package/src/__tests__/queues.test.ts +237 -76
- package/src/__tests__/r2.test.ts +37 -56
- package/src/__tests__/secret.test.ts +179 -130
- package/src/__tests__/tail.test.ts +267 -109
- package/src/__tests__/test-old-node-version.js +3 -3
- package/src/__tests__/traverse-module-graph.test.ts +220 -0
- package/src/__tests__/tsconfig-sanity.ts +12 -0
- package/src/__tests__/tsconfig.json +8 -0
- package/src/__tests__/tsconfig.tsbuildinfo +1 -0
- package/src/__tests__/type-generation.test.ts +11 -2
- package/src/__tests__/user.test.ts +35 -72
- package/src/__tests__/whoami.test.tsx +8 -114
- package/src/__tests__/worker-namespace.test.ts +83 -69
- package/src/api/dev.ts +168 -60
- package/src/api/index.ts +10 -1
- package/src/api/mtls-certificate.ts +148 -0
- package/src/api/pages/create-worker-bundle-contents.ts +76 -0
- package/src/api/pages/index.ts +5 -0
- package/src/api/pages/publish.tsx +355 -0
- package/src/bundle.ts +221 -128
- package/src/cfetch/index.ts +0 -2
- package/src/cfetch/internal.ts +16 -21
- package/src/cli.ts +4 -4
- package/src/config/config.ts +14 -7
- package/src/config/environment.ts +73 -16
- package/src/config/index.ts +99 -30
- package/src/config/validation-helpers.ts +1 -1
- package/src/config/validation.ts +248 -9
- package/src/create-worker-preview.ts +19 -8
- package/src/create-worker-upload-form.ts +48 -5
- package/src/d1/backups.tsx +43 -42
- package/src/d1/create.tsx +26 -21
- package/src/d1/{delete.tsx → delete.ts} +11 -14
- package/src/d1/execute.tsx +183 -170
- package/src/d1/index.ts +7 -6
- package/src/d1/list.tsx +22 -10
- package/src/d1/migrations/apply.tsx +212 -0
- package/src/d1/migrations/create.tsx +79 -0
- package/src/d1/migrations/helpers.ts +172 -0
- package/src/d1/migrations/index.ts +3 -0
- package/src/d1/migrations/list.tsx +95 -0
- package/src/d1/migrations/options.ts +23 -0
- package/src/d1/options.ts +3 -3
- package/src/d1/splitter.ts +161 -0
- package/src/d1/{types.tsx → types.ts} +1 -0
- package/src/d1/utils.ts +2 -1
- package/src/delete.ts +8 -16
- package/src/deployments.ts +333 -42
- package/src/deprecated/index.ts +8 -302
- package/src/dev/dev.tsx +57 -44
- package/src/dev/local.tsx +248 -74
- package/src/dev/remote.tsx +32 -3
- package/src/dev/start-server.ts +81 -66
- package/src/dev/use-esbuild.ts +17 -18
- package/src/dev/validate-dev-props.ts +9 -0
- package/src/{dev-registry.tsx → dev-registry.ts} +2 -1
- package/src/dev.tsx +178 -117
- package/src/dialogs.ts +136 -0
- package/src/dispatch-namespace.ts +21 -17
- package/src/docs/index.ts +97 -0
- package/src/entry.ts +19 -11
- package/src/environment-variables/factory.ts +88 -0
- package/src/environment-variables/misc-variables.ts +30 -0
- package/src/generate/index.ts +298 -0
- package/src/git-client.ts +15 -4
- package/src/{index.tsx → index.ts} +134 -59
- package/src/init.ts +249 -187
- package/src/inspect.ts +16 -1
- package/src/jest.d.ts +4 -0
- package/src/kv/index.ts +15 -17
- package/src/logger.ts +32 -5
- package/src/metrics/metrics-config.ts +3 -3
- package/src/metrics/send-event.ts +6 -1
- package/src/miniflare-cli/assets.ts +64 -28
- package/src/miniflare-cli/index.ts +4 -7
- package/src/miniflare-cli/tsconfig.json +9 -0
- package/src/miniflare-cli/tsconfig.tsbuildinfo +1 -0
- package/src/miniflare-cli/types.ts +11 -0
- package/src/module-collection.ts +91 -25
- package/src/mtls-certificate/cli.ts +155 -0
- package/src/pages/build.ts +410 -0
- package/src/pages/buildFunctions.ts +140 -0
- package/src/pages/deployment-tails.ts +281 -0
- package/src/pages/deployments.tsx +11 -33
- package/src/pages/{dev.tsx → dev.ts} +147 -139
- package/src/pages/errors.ts +1 -0
- package/src/pages/functions/buildPlugin.ts +61 -54
- package/src/pages/functions/buildWorker.ts +159 -33
- package/src/pages/functions/tsconfig.json +8 -0
- package/src/pages/functions/tsconfig.tsbuildinfo +1 -0
- package/src/pages/{functions.tsx → functions.ts} +8 -4
- package/src/pages/{index.tsx → index.ts} +11 -3
- package/src/pages/projects.tsx +12 -22
- package/src/pages/prompt-select-project.tsx +31 -0
- package/src/pages/publish.tsx +46 -225
- package/src/pages/types.ts +6 -9
- package/src/pages/upload.tsx +58 -14
- package/src/pages/utils.ts +12 -1
- package/src/parse.ts +23 -1
- package/src/paths.ts +1 -1
- package/src/proxy.ts +5 -0
- package/src/publish/index.ts +20 -16
- package/src/publish/publish.ts +71 -46
- package/src/pubsub/{pubsub-commands.tsx → pubsub-commands.ts} +19 -20
- package/src/queues/cli/commands/consumer/add.ts +24 -24
- package/src/queues/cli/commands/consumer/index.ts +3 -6
- package/src/queues/cli/commands/consumer/remove.ts +11 -18
- package/src/queues/cli/commands/create.ts +8 -8
- package/src/queues/cli/commands/delete.ts +8 -8
- package/src/queues/cli/commands/index.ts +6 -4
- package/src/queues/cli/commands/list.ts +8 -8
- package/src/queues/client.ts +1 -0
- package/src/queues/utils.ts +18 -0
- package/src/r2/helpers.ts +1 -0
- package/src/r2/index.ts +28 -28
- package/src/secret/index.ts +14 -16
- package/src/{sites.tsx → sites.ts} +1 -1
- package/src/tail/createTail.ts +94 -3
- package/src/tail/filters.ts +1 -1
- package/src/tail/index.ts +8 -11
- package/src/tail/printing.ts +15 -0
- package/src/traverse-module-graph.ts +53 -0
- package/src/tsconfig-sanity.ts +16 -0
- package/src/type-generation.ts +28 -20
- package/src/user/access.ts +0 -1
- package/src/user/auth-variables.ts +113 -0
- package/src/user/choose-account.tsx +1 -31
- package/src/user/index.ts +0 -1
- package/src/user/{user.tsx → user.ts} +123 -82
- package/src/utils/render.ts +93 -0
- package/src/{whoami.tsx → whoami.ts} +37 -71
- package/src/worker.ts +30 -1
- package/src/yargs-types.ts +22 -5
- package/templates/__tests__/tsconfig-sanity.ts +12 -0
- package/templates/__tests__/tsconfig.json +8 -0
- package/templates/__tests__/tsconfig.tsbuildinfo +1 -0
- package/templates/checked-fetch.js +9 -3
- package/templates/d1-beta-facade.js +51 -3
- package/templates/facade.d.ts +14 -0
- package/templates/first-party-worker-module-facade.ts +4 -3
- package/templates/format-dev-errors.ts +8 -6
- package/templates/gitignore +1 -0
- package/templates/init-tests/test-jest-new-worker.js +3 -5
- package/templates/init-tests/test-vitest-new-worker.js +3 -5
- package/templates/init-tests/test-vitest-new-worker.ts +25 -0
- package/templates/middleware/loader-modules.ts +2 -2
- package/templates/middleware/loader-sw.ts +51 -31
- package/templates/middleware/middleware-miniflare3-json-error.ts +32 -0
- package/templates/new-worker.ts +3 -0
- package/templates/pages-dev-pipeline.ts +4 -1
- package/templates/pages-shim.ts +4 -1
- package/templates/pages-template-plugin.ts +19 -10
- package/templates/serve-static-assets.ts +17 -14
- package/templates/service-bindings-module-facade.js +1 -0
- package/templates/tsconfig-sanity.ts +11 -0
- package/templates/tsconfig.init.json +105 -0
- package/templates/tsconfig.json +5 -103
- package/templates/tsconfig.tsbuildinfo +1 -0
- package/wrangler-dist/cli.d.ts +820 -70
- package/wrangler-dist/cli.js +68161 -78780
- package/wrangler-dist/wasm-sync.wasm +0 -0
- package/src/__tests__/api-devregistry.test.js +0 -56
- package/src/__tests__/d1.test.ts +0 -74
- package/src/__tests__/dialogs.test.tsx +0 -40
- package/src/__tests__/helpers/mock-cfetch.ts +0 -333
- package/src/__tests__/pages.test.ts +0 -2387
- package/src/d1/migrations.tsx +0 -446
- package/src/dialogs.tsx +0 -169
- package/src/environment-variables.ts +0 -50
- package/src/pages/build.tsx +0 -270
- package/src/user/env-vars.ts +0 -46
- package/templates/experimental-local-cache-stubs.js +0 -27
- /package/src/{bundle-reporter.tsx → bundle-reporter.ts} +0 -0
- /package/src/dev/{get-local-persistence-path.tsx → get-local-persistence-path.ts} +0 -0
- /package/src/pages/{hash.tsx → hash.ts} +0 -0
package/src/config/config.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Environment, RawEnvironment } from "./environment";
|
|
2
|
+
import type { CamelCaseKey } from "yargs";
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* This is the static type definition for the configuration object.
|
|
@@ -17,7 +18,7 @@ import type { Environment, RawEnvironment } from "./environment";
|
|
|
17
18
|
*
|
|
18
19
|
* Legend for the annotations:
|
|
19
20
|
*
|
|
20
|
-
* - `@breaking`: the deprecation/optionality is a breaking change from
|
|
21
|
+
* - `@breaking`: the deprecation/optionality is a breaking change from Wrangler v1.
|
|
21
22
|
* - `@todo`: there's more work to be done (with details attached).
|
|
22
23
|
*/
|
|
23
24
|
export type Config = ConfigFields<DevConfig> & Environment;
|
|
@@ -31,7 +32,7 @@ export interface ConfigFields<Dev extends RawDevConfig> {
|
|
|
31
32
|
configPath: string | undefined;
|
|
32
33
|
|
|
33
34
|
/**
|
|
34
|
-
* A boolean to enable "legacy" style wrangler environments (from
|
|
35
|
+
* A boolean to enable "legacy" style wrangler environments (from Wrangler v1).
|
|
35
36
|
* These have been superseded by Services, but there may be projects that won't
|
|
36
37
|
* (or can't) use them. If you're using a legacy environment, you can set this
|
|
37
38
|
* to `true` to enable it.
|
|
@@ -95,7 +96,7 @@ export interface ConfigFields<Dev extends RawDevConfig> {
|
|
|
95
96
|
/**
|
|
96
97
|
* The location of your Worker script.
|
|
97
98
|
*
|
|
98
|
-
* @deprecated DO NOT use this (it's a holdover from
|
|
99
|
+
* @deprecated DO NOT use this (it's a holdover from Wrangler v1.x). Either use the top level `main` field, or pass the path to your entry file as a command line argument.
|
|
99
100
|
* @breaking
|
|
100
101
|
*/
|
|
101
102
|
"entry-point"?: string;
|
|
@@ -215,10 +216,10 @@ export interface DevConfig {
|
|
|
215
216
|
* Protocol that wrangler dev forwards requests on
|
|
216
217
|
*
|
|
217
218
|
* Setting this to `http` is not currently implemented.
|
|
218
|
-
* See https://github.com/cloudflare/
|
|
219
|
+
* See https://github.com/cloudflare/workers-sdk/issues/583
|
|
219
220
|
*
|
|
220
221
|
* @default `https`
|
|
221
|
-
* @todo this needs to be implemented https://github.com/cloudflare/
|
|
222
|
+
* @todo this needs to be implemented https://github.com/cloudflare/workers-sdk/issues/583
|
|
222
223
|
*/
|
|
223
224
|
upstream_protocol: "https" | "http";
|
|
224
225
|
|
|
@@ -232,7 +233,7 @@ export type RawDevConfig = Partial<DevConfig>;
|
|
|
232
233
|
|
|
233
234
|
export interface DeprecatedConfigFields {
|
|
234
235
|
/**
|
|
235
|
-
* The project "type". A holdover from
|
|
236
|
+
* The project "type". A holdover from Wrangler v1.x.
|
|
236
237
|
* Valid values were "webpack", "javascript", and "rust".
|
|
237
238
|
*
|
|
238
239
|
* @deprecated DO NOT USE THIS. Most common features now work out of the box with wrangler, including modules, jsx, typescript, etc. If you need anything more, use a custom build.
|
|
@@ -242,7 +243,7 @@ export interface DeprecatedConfigFields {
|
|
|
242
243
|
|
|
243
244
|
/**
|
|
244
245
|
* Path to the webpack config to use when building your worker.
|
|
245
|
-
* A holdover from
|
|
246
|
+
* A holdover from Wrangler v1.x, used with `type: "webpack"`.
|
|
246
247
|
*
|
|
247
248
|
* @deprecated DO NOT USE THIS. Most common features now work out of the box with wrangler, including modules, jsx, typescript, etc. If you need anything more, use a custom build.
|
|
248
249
|
* @breaking
|
|
@@ -273,3 +274,9 @@ interface EnvironmentMap {
|
|
|
273
274
|
[envName: string]: RawEnvironment;
|
|
274
275
|
};
|
|
275
276
|
}
|
|
277
|
+
|
|
278
|
+
// API dev only passes in camel-cased versions of keys, so ensure
|
|
279
|
+
// only camel-cased keys are used
|
|
280
|
+
export type OnlyCamelCase<T = Record<string, never>> = {
|
|
281
|
+
[key in keyof T as CamelCaseKey<key>]: T[key];
|
|
282
|
+
};
|
|
@@ -74,11 +74,17 @@ interface EnvironmentInheritable {
|
|
|
74
74
|
*/
|
|
75
75
|
main: string | undefined;
|
|
76
76
|
|
|
77
|
+
/**
|
|
78
|
+
* The directory in which module rules should be evaluated in a `--no-bundle` worker
|
|
79
|
+
* This defaults to dirname(main) when left undefined
|
|
80
|
+
*/
|
|
81
|
+
base_dir: string | undefined;
|
|
82
|
+
|
|
77
83
|
/**
|
|
78
84
|
* Whether we use <name>.<subdomain>.workers.dev to
|
|
79
85
|
* test and deploy your worker.
|
|
80
86
|
*
|
|
81
|
-
* @default `true` (This is a breaking change from
|
|
87
|
+
* @default `true` (This is a breaking change from Wrangler v1)
|
|
82
88
|
* @breaking
|
|
83
89
|
* @inheritable
|
|
84
90
|
*/
|
|
@@ -261,6 +267,17 @@ interface EnvironmentInheritable {
|
|
|
261
267
|
logpush: boolean | undefined;
|
|
262
268
|
}
|
|
263
269
|
|
|
270
|
+
export type DurableObjectBindings = {
|
|
271
|
+
/** The name of the binding used to refer to the Durable Object */
|
|
272
|
+
name: string;
|
|
273
|
+
/** The exported class name of the Durable Object */
|
|
274
|
+
class_name: string;
|
|
275
|
+
/** The script where the Durable Object is defined (if it's external to this worker) */
|
|
276
|
+
script_name?: string;
|
|
277
|
+
/** The service environment of the script_name to bind to */
|
|
278
|
+
environment?: string;
|
|
279
|
+
}[];
|
|
280
|
+
|
|
264
281
|
/**
|
|
265
282
|
* The `EnvironmentNonInheritable` interface declares all the configuration fields for an environment
|
|
266
283
|
* that cannot be inherited from the top-level environment, and must be defined specifically.
|
|
@@ -303,16 +320,7 @@ interface EnvironmentNonInheritable {
|
|
|
303
320
|
* @nonInheritable
|
|
304
321
|
*/
|
|
305
322
|
durable_objects: {
|
|
306
|
-
bindings:
|
|
307
|
-
/** The name of the binding used to refer to the Durable Object */
|
|
308
|
-
name: string;
|
|
309
|
-
/** The exported class name of the Durable Object */
|
|
310
|
-
class_name: string;
|
|
311
|
-
/** The script where the Durable Object is defined (if it's external to this worker) */
|
|
312
|
-
script_name?: string;
|
|
313
|
-
/** The service environment of the script_name to bind to */
|
|
314
|
-
environment?: string;
|
|
315
|
-
}[];
|
|
323
|
+
bindings: DurableObjectBindings;
|
|
316
324
|
};
|
|
317
325
|
|
|
318
326
|
/**
|
|
@@ -337,6 +345,24 @@ interface EnvironmentNonInheritable {
|
|
|
337
345
|
preview_id?: string;
|
|
338
346
|
}[];
|
|
339
347
|
|
|
348
|
+
/**
|
|
349
|
+
* These specify bindings to send email from inside your Worker.
|
|
350
|
+
*
|
|
351
|
+
* NOTE: This field is not automatically inherited from the top level environment,
|
|
352
|
+
* and so must be specified in every named environment.
|
|
353
|
+
*
|
|
354
|
+
* @default `[]`
|
|
355
|
+
* @nonInheritable
|
|
356
|
+
*/
|
|
357
|
+
send_email: {
|
|
358
|
+
/** The binding name used to refer to the this binding */
|
|
359
|
+
name: string;
|
|
360
|
+
/** If this binding should be restricted to a specific verified address */
|
|
361
|
+
destination_address?: string;
|
|
362
|
+
/** If this binding should be restricted to a set of verified addresses */
|
|
363
|
+
allowed_destination_addresses?: string[];
|
|
364
|
+
}[];
|
|
365
|
+
|
|
340
366
|
/**
|
|
341
367
|
* Specifies Queues that are bound to this Worker environment.
|
|
342
368
|
*
|
|
@@ -372,6 +398,9 @@ interface EnvironmentNonInheritable {
|
|
|
372
398
|
|
|
373
399
|
/** The queue to send messages that failed to be consumed. */
|
|
374
400
|
dead_letter_queue?: string;
|
|
401
|
+
|
|
402
|
+
/** The maximum number of concurrent consumer Worker invocations. Leaving this unset will allow your consumer to scale to the maximum concurrency needed to keep up with the message backlog. */
|
|
403
|
+
max_concurrency?: number | null;
|
|
375
404
|
}[];
|
|
376
405
|
};
|
|
377
406
|
|
|
@@ -439,13 +468,28 @@ interface EnvironmentNonInheritable {
|
|
|
439
468
|
}[]
|
|
440
469
|
| undefined;
|
|
441
470
|
|
|
471
|
+
/**
|
|
472
|
+
* Specifies analytics engine datasets that are bound to this Worker environment.
|
|
473
|
+
*
|
|
474
|
+
* NOTE: This field is not automatically inherited from the top level environment,
|
|
475
|
+
* and so must be specified in every named environment.
|
|
476
|
+
*
|
|
477
|
+
* @default `[]`
|
|
478
|
+
* @nonInheritable
|
|
479
|
+
*/
|
|
480
|
+
analytics_engine_datasets: {
|
|
481
|
+
/** The binding name used to refer to the dataset in the worker. */
|
|
482
|
+
binding: string;
|
|
483
|
+
/** The name of this dataset to write to. */
|
|
484
|
+
dataset?: string;
|
|
485
|
+
}[];
|
|
486
|
+
|
|
442
487
|
/**
|
|
443
488
|
* "Unsafe" tables for features that aren't directly supported by wrangler.
|
|
444
489
|
*
|
|
445
490
|
* NOTE: This field is not automatically inherited from the top level environment,
|
|
446
491
|
* and so must be specified in every named environment.
|
|
447
492
|
*
|
|
448
|
-
* @default `{ bindings: [] }`
|
|
449
493
|
* @nonInheritable
|
|
450
494
|
*/
|
|
451
495
|
unsafe: {
|
|
@@ -453,15 +497,28 @@ interface EnvironmentNonInheritable {
|
|
|
453
497
|
* A set of bindings that should be put into a Worker's upload metadata without changes. These
|
|
454
498
|
* can be used to implement bindings for features that haven't released and aren't supported
|
|
455
499
|
* directly by wrangler or miniflare.
|
|
456
|
-
*
|
|
457
|
-
* @default []
|
|
458
500
|
*/
|
|
459
|
-
bindings
|
|
501
|
+
bindings?: {
|
|
460
502
|
name: string;
|
|
461
503
|
type: string;
|
|
462
504
|
[key: string]: unknown;
|
|
463
505
|
}[];
|
|
506
|
+
|
|
507
|
+
/**
|
|
508
|
+
* Arbitrary key/value pairs that will be included in the uploaded metadata. Values specified
|
|
509
|
+
* here will always be applied to metadata last, so can add new or override existing fields.
|
|
510
|
+
*/
|
|
511
|
+
metadata?: {
|
|
512
|
+
[key: string]: string;
|
|
513
|
+
};
|
|
464
514
|
};
|
|
515
|
+
|
|
516
|
+
mtls_certificates: {
|
|
517
|
+
/** The binding name used to refer to the certificate in the worker */
|
|
518
|
+
binding: string;
|
|
519
|
+
/** The uuid of the uploaded mTLS certificate */
|
|
520
|
+
certificate_id: string;
|
|
521
|
+
}[];
|
|
465
522
|
}
|
|
466
523
|
|
|
467
524
|
/**
|
|
@@ -479,7 +536,7 @@ interface EnvironmentDeprecated {
|
|
|
479
536
|
/**
|
|
480
537
|
* Legacy way of defining KVNamespaces that is no longer supported.
|
|
481
538
|
*
|
|
482
|
-
* @deprecated DO NOT USE. This was a legacy bug from
|
|
539
|
+
* @deprecated DO NOT USE. This was a legacy bug from Wrangler v1, that we do not want to support.
|
|
483
540
|
*/
|
|
484
541
|
"kv-namespaces"?: string;
|
|
485
542
|
|
package/src/config/index.ts
CHANGED
|
@@ -2,12 +2,12 @@ import fs from "node:fs";
|
|
|
2
2
|
import dotenv from "dotenv";
|
|
3
3
|
import { findUpSync } from "find-up";
|
|
4
4
|
import { logger } from "../logger";
|
|
5
|
-
import { parseTOML, readFileSync } from "../parse";
|
|
5
|
+
import { parseJSONC, parseTOML, readFileSync } from "../parse";
|
|
6
6
|
import { removeD1BetaPrefix } from "../worker";
|
|
7
7
|
import { normalizeAndValidateConfig } from "./validation";
|
|
8
8
|
import type { CfWorkerInit } from "../worker";
|
|
9
|
-
import type {
|
|
10
|
-
import type {
|
|
9
|
+
import type { CommonYargsOptions } from "../yargs-types";
|
|
10
|
+
import type { Config, OnlyCamelCase, RawConfig } from "./config";
|
|
11
11
|
|
|
12
12
|
export type {
|
|
13
13
|
Config,
|
|
@@ -25,18 +25,21 @@ export type {
|
|
|
25
25
|
/**
|
|
26
26
|
* Get the Wrangler configuration; read it from the give `configPath` if available.
|
|
27
27
|
*/
|
|
28
|
-
|
|
28
|
+
|
|
29
|
+
export function readConfig<CommandArgs>(
|
|
29
30
|
configPath: string | undefined,
|
|
30
|
-
args
|
|
31
|
+
// Include command specific args as well as the wrangler global flags
|
|
32
|
+
args: CommandArgs & OnlyCamelCase<CommonYargsOptions>
|
|
31
33
|
): Config {
|
|
32
34
|
let rawConfig: RawConfig = {};
|
|
33
35
|
if (!configPath) {
|
|
34
|
-
configPath = findWranglerToml();
|
|
36
|
+
configPath = findWranglerToml(process.cwd(), args.experimentalJsonConfig);
|
|
35
37
|
}
|
|
36
|
-
|
|
37
38
|
// Load the configuration from disk if available
|
|
38
|
-
if (configPath) {
|
|
39
|
+
if (configPath?.endsWith("toml")) {
|
|
39
40
|
rawConfig = parseTOML(readFileSync(configPath), configPath);
|
|
41
|
+
} else if (configPath?.endsWith("json")) {
|
|
42
|
+
rawConfig = parseJSONC(readFileSync(configPath), configPath);
|
|
40
43
|
}
|
|
41
44
|
|
|
42
45
|
// Process the top-level configuration.
|
|
@@ -61,10 +64,16 @@ export function readConfig(
|
|
|
61
64
|
* from the current working directory.
|
|
62
65
|
*/
|
|
63
66
|
export function findWranglerToml(
|
|
64
|
-
referencePath: string = process.cwd()
|
|
67
|
+
referencePath: string = process.cwd(),
|
|
68
|
+
preferJson = false
|
|
65
69
|
): string | undefined {
|
|
66
|
-
|
|
67
|
-
|
|
70
|
+
if (preferJson) {
|
|
71
|
+
return (
|
|
72
|
+
findUpSync(`wrangler.json`, { cwd: referencePath }) ??
|
|
73
|
+
findUpSync(`wrangler.toml`, { cwd: referencePath })
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
return findUpSync(`wrangler.toml`, { cwd: referencePath });
|
|
68
77
|
}
|
|
69
78
|
|
|
70
79
|
/**
|
|
@@ -88,16 +97,19 @@ export function printBindings(bindings: CfWorkerInit["bindings"]) {
|
|
|
88
97
|
data_blobs,
|
|
89
98
|
durable_objects,
|
|
90
99
|
kv_namespaces,
|
|
100
|
+
send_email,
|
|
91
101
|
queues,
|
|
92
102
|
d1_databases,
|
|
93
103
|
r2_buckets,
|
|
94
104
|
logfwdr,
|
|
95
105
|
services,
|
|
106
|
+
analytics_engine_datasets,
|
|
96
107
|
text_blobs,
|
|
97
108
|
unsafe,
|
|
98
109
|
vars,
|
|
99
110
|
wasm_modules,
|
|
100
111
|
dispatch_namespaces,
|
|
112
|
+
mtls_certificates,
|
|
101
113
|
} = bindings;
|
|
102
114
|
|
|
103
115
|
if (data_blobs !== undefined && Object.keys(data_blobs).length > 0) {
|
|
@@ -144,6 +156,23 @@ export function printBindings(bindings: CfWorkerInit["bindings"]) {
|
|
|
144
156
|
});
|
|
145
157
|
}
|
|
146
158
|
|
|
159
|
+
if (send_email !== undefined && send_email.length > 0) {
|
|
160
|
+
output.push({
|
|
161
|
+
type: "Send Email",
|
|
162
|
+
entries: send_email.map(
|
|
163
|
+
({ name, destination_address, allowed_destination_addresses }) => {
|
|
164
|
+
return {
|
|
165
|
+
key: name,
|
|
166
|
+
value:
|
|
167
|
+
destination_address ||
|
|
168
|
+
allowed_destination_addresses?.join(", ") ||
|
|
169
|
+
"unrestricted",
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
),
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
|
|
147
176
|
if (queues !== undefined && queues.length > 0) {
|
|
148
177
|
output.push({
|
|
149
178
|
type: "Queues",
|
|
@@ -159,14 +188,22 @@ export function printBindings(bindings: CfWorkerInit["bindings"]) {
|
|
|
159
188
|
if (d1_databases !== undefined && d1_databases.length > 0) {
|
|
160
189
|
output.push({
|
|
161
190
|
type: "D1 Databases",
|
|
162
|
-
entries: d1_databases.map(
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
191
|
+
entries: d1_databases.map(
|
|
192
|
+
({ binding, database_name, database_id, preview_database_id }) => {
|
|
193
|
+
let databaseValue = `${database_id}`;
|
|
194
|
+
if (database_name) {
|
|
195
|
+
databaseValue = `${database_name} (${database_id})`;
|
|
196
|
+
}
|
|
197
|
+
//database_id is local when running `wrangler dev --local`
|
|
198
|
+
if (preview_database_id && database_id !== "local") {
|
|
199
|
+
databaseValue += `, Preview: (${preview_database_id})`;
|
|
200
|
+
}
|
|
201
|
+
return {
|
|
202
|
+
key: removeD1BetaPrefix(binding),
|
|
203
|
+
value: databaseValue,
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
),
|
|
170
207
|
});
|
|
171
208
|
}
|
|
172
209
|
|
|
@@ -211,6 +248,21 @@ export function printBindings(bindings: CfWorkerInit["bindings"]) {
|
|
|
211
248
|
});
|
|
212
249
|
}
|
|
213
250
|
|
|
251
|
+
if (
|
|
252
|
+
analytics_engine_datasets !== undefined &&
|
|
253
|
+
analytics_engine_datasets.length > 0
|
|
254
|
+
) {
|
|
255
|
+
output.push({
|
|
256
|
+
type: "Analytics Engine Datasets",
|
|
257
|
+
entries: analytics_engine_datasets.map(({ binding, dataset }) => {
|
|
258
|
+
return {
|
|
259
|
+
key: binding,
|
|
260
|
+
value: dataset ?? binding,
|
|
261
|
+
};
|
|
262
|
+
}),
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
|
|
214
266
|
if (text_blobs !== undefined && Object.keys(text_blobs).length > 0) {
|
|
215
267
|
output.push({
|
|
216
268
|
type: "Text Blobs",
|
|
@@ -221,10 +273,10 @@ export function printBindings(bindings: CfWorkerInit["bindings"]) {
|
|
|
221
273
|
});
|
|
222
274
|
}
|
|
223
275
|
|
|
224
|
-
if (unsafe !== undefined && unsafe.length > 0) {
|
|
276
|
+
if (unsafe?.bindings !== undefined && unsafe.bindings.length > 0) {
|
|
225
277
|
output.push({
|
|
226
278
|
type: "Unsafe",
|
|
227
|
-
entries: unsafe.map(({ name, type }) => ({
|
|
279
|
+
entries: unsafe.bindings.map(({ name, type }) => ({
|
|
228
280
|
key: type,
|
|
229
281
|
value: name,
|
|
230
282
|
})),
|
|
@@ -273,6 +325,28 @@ export function printBindings(bindings: CfWorkerInit["bindings"]) {
|
|
|
273
325
|
});
|
|
274
326
|
}
|
|
275
327
|
|
|
328
|
+
if (mtls_certificates !== undefined && mtls_certificates.length > 0) {
|
|
329
|
+
output.push({
|
|
330
|
+
type: "mTLS Certificates",
|
|
331
|
+
entries: mtls_certificates.map(({ binding, certificate_id }) => {
|
|
332
|
+
return {
|
|
333
|
+
key: binding,
|
|
334
|
+
value: certificate_id,
|
|
335
|
+
};
|
|
336
|
+
}),
|
|
337
|
+
});
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
if (unsafe?.metadata !== undefined) {
|
|
341
|
+
output.push({
|
|
342
|
+
type: "Unsafe Metadata",
|
|
343
|
+
entries: Object.entries(unsafe.metadata).map(([key, value]) => ({
|
|
344
|
+
key,
|
|
345
|
+
value: `${value}`,
|
|
346
|
+
})),
|
|
347
|
+
});
|
|
348
|
+
}
|
|
349
|
+
|
|
276
350
|
if (output.length === 0) {
|
|
277
351
|
return;
|
|
278
352
|
}
|
|
@@ -292,18 +366,13 @@ export function printBindings(bindings: CfWorkerInit["bindings"]) {
|
|
|
292
366
|
logger.log(message);
|
|
293
367
|
}
|
|
294
368
|
|
|
295
|
-
|
|
296
|
-
[key in keyof T as key | CamelCaseKey<key>]: T[key];
|
|
297
|
-
};
|
|
298
|
-
|
|
299
|
-
export function withConfig<T extends { config?: string }>(
|
|
369
|
+
export function withConfig<T>(
|
|
300
370
|
handler: (
|
|
301
|
-
t:
|
|
371
|
+
t: OnlyCamelCase<T & CommonYargsOptions> & { config: Config }
|
|
302
372
|
) => Promise<void>
|
|
303
373
|
) {
|
|
304
|
-
return (t:
|
|
305
|
-
|
|
306
|
-
return handler({ ...rest, config: readConfig(configPath, rest) });
|
|
374
|
+
return (t: OnlyCamelCase<T & CommonYargsOptions>) => {
|
|
375
|
+
return handler({ ...t, config: readConfig(t.config, t) });
|
|
307
376
|
};
|
|
308
377
|
}
|
|
309
378
|
|
|
@@ -550,7 +550,7 @@ export const getBindingNames = (value: unknown): string[] => {
|
|
|
550
550
|
} else if (isNamespaceList(value)) {
|
|
551
551
|
return value.map(({ binding }) => binding);
|
|
552
552
|
} else if (isRecord(value)) {
|
|
553
|
-
return Object.keys(value);
|
|
553
|
+
return Object.keys(value).filter((k) => value[k] !== undefined);
|
|
554
554
|
} else {
|
|
555
555
|
return [];
|
|
556
556
|
}
|