wrangler 0.0.0-e93063e9 → 0.0.0-e93d240f
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 +12 -14
- package/bin/wrangler.js +10 -76
- package/package.json +207 -194
- package/templates/__tests__/tsconfig.json +1 -1
- package/templates/checked-fetch.js +19 -6
- package/templates/facade.d.ts +4 -1
- package/templates/gitignore +1 -0
- package/templates/init-tests/test-vitest-new-worker.ts +1 -1
- package/templates/middleware/common.ts +9 -4
- package/templates/middleware/loader-modules.ts +64 -9
- package/templates/middleware/loader-sw.ts +2 -7
- package/templates/middleware/middleware-d1-beta.d.ts +3 -0
- package/templates/middleware/middleware-miniflare3-json-error.ts +18 -5
- package/templates/middleware/middleware-multiworker-dev.d.ts +4 -0
- package/templates/middleware/middleware-multiworker-dev.ts +59 -0
- package/templates/middleware/middleware-serve-static-assets.d.ts +6 -0
- package/templates/middleware/middleware-serve-static-assets.ts +56 -0
- package/templates/new-worker-scheduled.ts +1 -1
- package/templates/new-worker.ts +4 -1
- package/templates/pages-dev-util.ts +4 -1
- package/templates/pages-shim.ts +0 -3
- package/templates/pages-template-plugin.ts +19 -5
- package/templates/pages-template-worker.ts +11 -2
- package/templates/tsconfig.init.json +1 -2
- package/templates/tsconfig.json +1 -1
- package/wrangler-dist/cli.d.ts +909 -66
- package/wrangler-dist/cli.js +105289 -97941
- package/wrangler-dist/wasm-sync.wasm +0 -0
- package/import_meta_url.js +0 -3
- package/miniflare-config-stubs/.env.empty +0 -0
- package/miniflare-config-stubs/package.empty.json +0 -1
- package/miniflare-config-stubs/wrangler.empty.toml +0 -0
- package/miniflare-dist/index.mjs +0 -6364
- package/src/__tests__/access.test.ts +0 -25
- package/src/__tests__/api-dev.test.ts +0 -238
- package/src/__tests__/api-devregistry.test.js +0 -64
- package/src/__tests__/api.test.ts +0 -80
- package/src/__tests__/config-cache-without-cache-dir.test.ts +0 -38
- package/src/__tests__/config-cache.test.ts +0 -42
- package/src/__tests__/configuration.test.ts +0 -4163
- package/src/__tests__/d1/d1.test.ts +0 -123
- package/src/__tests__/d1/splitter.test.ts +0 -255
- package/src/__tests__/delete.test.ts +0 -266
- package/src/__tests__/deployments.test.ts +0 -105
- package/src/__tests__/dev.test.tsx +0 -1586
- package/src/__tests__/generate.test.ts +0 -238
- package/src/__tests__/get-host-from-url.test.ts +0 -16
- package/src/__tests__/guess-worker-format.test.ts +0 -85
- package/src/__tests__/helpers/clipboardy-mock.js +0 -4
- package/src/__tests__/helpers/cmd-shim.d.ts +0 -11
- package/src/__tests__/helpers/mock-account-id.ts +0 -48
- package/src/__tests__/helpers/mock-auth-domain.ts +0 -20
- package/src/__tests__/helpers/mock-bin.ts +0 -36
- package/src/__tests__/helpers/mock-cfetch.ts +0 -278
- package/src/__tests__/helpers/mock-console.ts +0 -106
- package/src/__tests__/helpers/mock-dialogs.ts +0 -137
- package/src/__tests__/helpers/mock-get-zone-from-host.ts +0 -8
- package/src/__tests__/helpers/mock-http-server.ts +0 -46
- package/src/__tests__/helpers/mock-istty.ts +0 -74
- package/src/__tests__/helpers/mock-known-routes.ts +0 -7
- package/src/__tests__/helpers/mock-kv.ts +0 -33
- package/src/__tests__/helpers/mock-oauth-flow.ts +0 -271
- package/src/__tests__/helpers/mock-process.ts +0 -34
- package/src/__tests__/helpers/mock-stdin.ts +0 -108
- package/src/__tests__/helpers/mock-web-socket.ts +0 -29
- package/src/__tests__/helpers/msw/blob-worker.cjs +0 -19
- package/src/__tests__/helpers/msw/handlers/access.ts +0 -13
- package/src/__tests__/helpers/msw/handlers/deployments.ts +0 -59
- package/src/__tests__/helpers/msw/handlers/namespaces.ts +0 -104
- package/src/__tests__/helpers/msw/handlers/oauth.ts +0 -31
- package/src/__tests__/helpers/msw/handlers/r2.ts +0 -80
- package/src/__tests__/helpers/msw/handlers/script.ts +0 -75
- package/src/__tests__/helpers/msw/handlers/user.ts +0 -63
- package/src/__tests__/helpers/msw/handlers/zones.ts +0 -22
- package/src/__tests__/helpers/msw/index.ts +0 -21
- package/src/__tests__/helpers/msw/read-file-sync.js +0 -61
- package/src/__tests__/helpers/run-in-tmp.ts +0 -38
- package/src/__tests__/helpers/run-wrangler.ts +0 -16
- package/src/__tests__/helpers/worker-scripts/child-wrangler.toml +0 -1
- package/src/__tests__/helpers/worker-scripts/hello-world-worker.js +0 -5
- package/src/__tests__/helpers/worker-scripts/hello-world-wrangler.toml +0 -1
- package/src/__tests__/helpers/worker-scripts/parent-worker.js +0 -8
- package/src/__tests__/helpers/worker-scripts/parent-wrangler.toml +0 -5
- package/src/__tests__/helpers/write-worker-source.ts +0 -31
- package/src/__tests__/helpers/write-wrangler-toml.ts +0 -17
- package/src/__tests__/https-options.test.ts +0 -163
- package/src/__tests__/index.test.ts +0 -268
- package/src/__tests__/init.test.ts +0 -3147
- package/src/__tests__/jest.setup.ts +0 -198
- package/src/__tests__/kv.test.ts +0 -1788
- package/src/__tests__/logger.test.ts +0 -141
- package/src/__tests__/logout.test.ts +0 -47
- package/src/__tests__/metrics.test.ts +0 -493
- package/src/__tests__/middleware.scheduled.test.ts +0 -145
- package/src/__tests__/middleware.test.ts +0 -750
- package/src/__tests__/package-manager.test.ts +0 -353
- package/src/__tests__/pages-deployment-tail.test.ts +0 -884
- package/src/__tests__/pages.test.ts +0 -2899
- package/src/__tests__/parse.test.ts +0 -330
- package/src/__tests__/paths.test.ts +0 -39
- package/src/__tests__/publish.test.ts +0 -7769
- package/src/__tests__/pubsub.test.ts +0 -490
- package/src/__tests__/queues.test.ts +0 -522
- package/src/__tests__/r2.test.ts +0 -393
- package/src/__tests__/route.test.ts +0 -45
- package/src/__tests__/secret.test.ts +0 -701
- package/src/__tests__/tail.test.ts +0 -905
- package/src/__tests__/test-old-node-version.js +0 -31
- package/src/__tests__/tsconfig-sanity.ts +0 -12
- package/src/__tests__/tsconfig.json +0 -8
- package/src/__tests__/tsconfig.tsbuildinfo +0 -1
- package/src/__tests__/type-generation.test.ts +0 -233
- package/src/__tests__/user.test.ts +0 -129
- package/src/__tests__/utils-collectKeyValues.test.ts +0 -47
- package/src/__tests__/validate-dev-props.test.ts +0 -56
- package/src/__tests__/version.test.ts +0 -35
- package/src/__tests__/whoami.test.tsx +0 -183
- package/src/__tests__/worker-namespace.test.ts +0 -326
- package/src/abort.d.ts +0 -3
- package/src/api/dev.ts +0 -247
- package/src/api/index.ts +0 -2
- package/src/bundle-reporter.ts +0 -68
- package/src/bundle.ts +0 -823
- package/src/cfetch/index.ts +0 -158
- package/src/cfetch/internal.ts +0 -261
- package/src/cli.ts +0 -28
- package/src/config/README.md +0 -107
- package/src/config/config.ts +0 -275
- package/src/config/diagnostics.ts +0 -80
- package/src/config/environment.ts +0 -577
- package/src/config/index.ts +0 -358
- package/src/config/validation-helpers.ts +0 -597
- package/src/config/validation.ts +0 -2151
- package/src/config-cache.ts +0 -85
- package/src/create-worker-preview.ts +0 -282
- package/src/create-worker-upload-form.ts +0 -325
- package/src/d1/backups.tsx +0 -223
- package/src/d1/constants.ts +0 -2
- package/src/d1/create.tsx +0 -63
- package/src/d1/delete.ts +0 -56
- package/src/d1/execute.tsx +0 -323
- package/src/d1/formatTimeAgo.ts +0 -14
- package/src/d1/index.ts +0 -101
- package/src/d1/list.tsx +0 -48
- package/src/d1/migrations/apply.tsx +0 -197
- package/src/d1/migrations/create.tsx +0 -77
- package/src/d1/migrations/helpers.ts +0 -147
- package/src/d1/migrations/index.ts +0 -3
- package/src/d1/migrations/list.tsx +0 -79
- package/src/d1/migrations/options.ts +0 -18
- package/src/d1/options.ts +0 -22
- package/src/d1/splitter.ts +0 -161
- package/src/d1/types.ts +0 -24
- package/src/d1/utils.ts +0 -48
- package/src/delete.ts +0 -103
- package/src/deployments.ts +0 -83
- package/src/deprecated/index.ts +0 -145
- package/src/dev/dev-vars.ts +0 -39
- package/src/dev/dev.tsx +0 -614
- package/src/dev/get-local-persistence-path.ts +0 -31
- package/src/dev/local.tsx +0 -932
- package/src/dev/remote.tsx +0 -630
- package/src/dev/start-server.ts +0 -543
- package/src/dev/use-esbuild.ts +0 -204
- package/src/dev/validate-dev-props.ts +0 -31
- package/src/dev-registry.ts +0 -201
- package/src/dev.tsx +0 -949
- package/src/dialogs.ts +0 -136
- package/src/dispatch-namespace.ts +0 -207
- package/src/docs/index.ts +0 -97
- package/src/durable.ts +0 -102
- package/src/entry.ts +0 -329
- package/src/environment-variables/factory.ts +0 -88
- package/src/environment-variables/misc-variables.ts +0 -30
- package/src/errors.ts +0 -11
- package/src/generate/index.ts +0 -300
- package/src/git-client.ts +0 -135
- package/src/global-wrangler-config-path.ts +0 -26
- package/src/https-options.ts +0 -127
- package/src/index.ts +0 -694
- package/src/init.ts +0 -1023
- package/src/inspect.ts +0 -767
- package/src/intl-polyfill.d.ts +0 -139
- package/src/is-ci.ts +0 -14
- package/src/is-interactive.ts +0 -16
- package/src/jest.d.ts +0 -4
- package/src/kv/helpers.ts +0 -430
- package/src/kv/index.ts +0 -596
- package/src/logger.ts +0 -104
- package/src/metrics/index.ts +0 -5
- package/src/metrics/metrics-config.ts +0 -239
- package/src/metrics/metrics-dispatcher.ts +0 -96
- package/src/metrics/metrics-usage-headers.ts +0 -24
- package/src/metrics/send-event.ts +0 -97
- package/src/miniflare-cli/README.md +0 -30
- package/src/miniflare-cli/assets.ts +0 -250
- package/src/miniflare-cli/index.ts +0 -210
- package/src/miniflare-cli/request-context.ts +0 -40
- package/src/miniflare-cli/tsconfig.json +0 -9
- package/src/miniflare-cli/tsconfig.tsbuildinfo +0 -1
- package/src/miniflare-cli/types.ts +0 -11
- package/src/module-collection.ts +0 -267
- package/src/open-in-browser.ts +0 -17
- package/src/package-manager.ts +0 -219
- package/src/pages/build.ts +0 -270
- package/src/pages/constants.ts +0 -18
- package/src/pages/deployment-tails.ts +0 -284
- package/src/pages/deployments.tsx +0 -84
- package/src/pages/dev.ts +0 -711
- package/src/pages/errors.ts +0 -66
- package/src/pages/functions/buildPlugin.ts +0 -107
- package/src/pages/functions/buildWorker.ts +0 -166
- package/src/pages/functions/filepath-routing.test.ts +0 -234
- package/src/pages/functions/filepath-routing.ts +0 -189
- package/src/pages/functions/identifiers.ts +0 -78
- package/src/pages/functions/routes-consolidation.test.ts +0 -250
- package/src/pages/functions/routes-consolidation.ts +0 -73
- package/src/pages/functions/routes-transformation.test.ts +0 -282
- package/src/pages/functions/routes-transformation.ts +0 -115
- package/src/pages/functions/routes-validation.test.ts +0 -403
- package/src/pages/functions/routes-validation.ts +0 -202
- package/src/pages/functions/routes.ts +0 -151
- package/src/pages/functions/tsconfig.json +0 -8
- package/src/pages/functions/tsconfig.tsbuildinfo +0 -1
- package/src/pages/functions.ts +0 -82
- package/src/pages/hash.ts +0 -13
- package/src/pages/index.ts +0 -102
- package/src/pages/projects.tsx +0 -167
- package/src/pages/prompt-select-project.tsx +0 -31
- package/src/pages/publish.tsx +0 -462
- package/src/pages/types.ts +0 -41
- package/src/pages/upload.tsx +0 -447
- package/src/pages/utils.ts +0 -23
- package/src/parse.ts +0 -286
- package/src/paths.ts +0 -71
- package/src/proxy.ts +0 -694
- package/src/publish/index.ts +0 -270
- package/src/publish/publish.ts +0 -1038
- package/src/pubsub/index.ts +0 -286
- package/src/pubsub/pubsub-commands.ts +0 -624
- package/src/queues/cli/commands/consumer/add.ts +0 -71
- package/src/queues/cli/commands/consumer/index.ts +0 -22
- package/src/queues/cli/commands/consumer/remove.ts +0 -38
- package/src/queues/cli/commands/create.ts +0 -25
- package/src/queues/cli/commands/delete.ts +0 -26
- package/src/queues/cli/commands/index.ts +0 -36
- package/src/queues/cli/commands/list.ts +0 -25
- package/src/queues/client.ts +0 -135
- package/src/queues/utils.ts +0 -18
- package/src/r2/constants.ts +0 -4
- package/src/r2/helpers.ts +0 -131
- package/src/r2/index.ts +0 -289
- package/src/routes.ts +0 -140
- package/src/secret/index.ts +0 -379
- package/src/selfsigned.d.ts +0 -29
- package/src/sites.ts +0 -372
- package/src/tail/createTail.ts +0 -379
- package/src/tail/filters.ts +0 -277
- package/src/tail/index.ts +0 -213
- package/src/tail/printing.ts +0 -107
- package/src/tsconfig-sanity.ts +0 -16
- package/src/type-generation.ts +0 -181
- package/src/update-check.ts +0 -19
- package/src/user/access.ts +0 -68
- package/src/user/auth-variables.ts +0 -113
- package/src/user/choose-account.tsx +0 -39
- package/src/user/generate-auth-url.ts +0 -33
- package/src/user/generate-random-state.ts +0 -16
- package/src/user/index.ts +0 -2
- package/src/user/user.ts +0 -1232
- package/src/utils/collectKeyValues.ts +0 -14
- package/src/whoami.ts +0 -135
- package/src/worker.ts +0 -251
- package/src/yargs-types.ts +0 -24
- package/src/zones.ts +0 -191
- package/templates/__tests__/tsconfig.tsbuildinfo +0 -1
- package/templates/d1-beta-facade.js +0 -241
- package/templates/first-party-worker-module-facade.ts +0 -19
- package/templates/format-dev-errors.ts +0 -33
- package/templates/serve-static-assets.ts +0 -65
- package/templates/service-bindings-module-facade.js +0 -54
- package/templates/service-bindings-sw-facade.js +0 -42
- package/templates/tsconfig.tsbuildinfo +0 -1
package/templates/facade.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
declare module "__ENTRY_POINT__" {
|
|
2
2
|
import type { Middleware } from "./middleware/common";
|
|
3
|
-
const worker: ExportedHandler & {
|
|
3
|
+
const worker: ExportedHandler & {
|
|
4
|
+
middleware?: Middleware[];
|
|
5
|
+
envWrappers: ((env: Record<string, unknown>) => Record<string, unknown>)[];
|
|
6
|
+
};
|
|
4
7
|
export default worker;
|
|
5
8
|
}
|
|
6
9
|
|
package/templates/gitignore
CHANGED
|
@@ -5,13 +5,18 @@ export type Dispatcher = (
|
|
|
5
5
|
init: { cron?: string }
|
|
6
6
|
) => Awaitable<void>;
|
|
7
7
|
|
|
8
|
+
export type IncomingRequest = Request<
|
|
9
|
+
unknown,
|
|
10
|
+
IncomingRequestCfProperties<unknown>
|
|
11
|
+
>;
|
|
12
|
+
|
|
8
13
|
export interface MiddlewareContext {
|
|
9
14
|
dispatch: Dispatcher;
|
|
10
|
-
next(request:
|
|
15
|
+
next(request: IncomingRequest, env: any): Awaitable<Response>;
|
|
11
16
|
}
|
|
12
17
|
|
|
13
18
|
export type Middleware = (
|
|
14
|
-
request:
|
|
19
|
+
request: IncomingRequest,
|
|
15
20
|
env: any,
|
|
16
21
|
ctx: ExecutionContext,
|
|
17
22
|
middlewareCtx: MiddlewareContext
|
|
@@ -32,7 +37,7 @@ export function __facade_registerInternal__(
|
|
|
32
37
|
}
|
|
33
38
|
|
|
34
39
|
function __facade_invokeChain__(
|
|
35
|
-
request:
|
|
40
|
+
request: IncomingRequest,
|
|
36
41
|
env: any,
|
|
37
42
|
ctx: ExecutionContext,
|
|
38
43
|
dispatch: Dispatcher,
|
|
@@ -49,7 +54,7 @@ function __facade_invokeChain__(
|
|
|
49
54
|
}
|
|
50
55
|
|
|
51
56
|
export function __facade_invoke__(
|
|
52
|
-
request:
|
|
57
|
+
request: IncomingRequest,
|
|
53
58
|
env: any,
|
|
54
59
|
ctx: ExecutionContext,
|
|
55
60
|
dispatch: Dispatcher,
|
|
@@ -36,17 +36,68 @@ class __Facade_ScheduledController__ implements ScheduledController {
|
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
const __facade_modules_fetch__:
|
|
40
|
-
|
|
39
|
+
const __facade_modules_fetch__: ExportedHandlerFetchHandler = function (
|
|
40
|
+
request,
|
|
41
|
+
env,
|
|
42
|
+
ctx
|
|
43
|
+
) {
|
|
44
|
+
if (worker.fetch === undefined)
|
|
45
|
+
throw new Error("Handler does not export a fetch() function.");
|
|
41
46
|
return worker.fetch(request, env, ctx);
|
|
42
47
|
};
|
|
43
48
|
|
|
44
|
-
|
|
45
|
-
|
|
49
|
+
function getMaskedEnv(rawEnv: unknown) {
|
|
50
|
+
let env = rawEnv as Record<string, unknown>;
|
|
51
|
+
if (worker.envWrappers && worker.envWrappers.length > 0) {
|
|
52
|
+
for (const wrapFn of worker.envWrappers) {
|
|
53
|
+
env = wrapFn(env);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return env;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* This type is here to cause a type error if a new export handler is added to
|
|
61
|
+
* `ExportHandler` without it being included in the `facade` below.
|
|
62
|
+
*/
|
|
63
|
+
type MissingExportHandlers = Omit<
|
|
64
|
+
Required<ExportedHandler>,
|
|
65
|
+
"tail" | "trace" | "scheduled" | "queue" | "test" | "email" | "fetch"
|
|
66
|
+
>;
|
|
67
|
+
|
|
68
|
+
let registeredMiddleware = false;
|
|
69
|
+
|
|
70
|
+
const facade: ExportedHandler<unknown> & MissingExportHandlers = {
|
|
71
|
+
...(worker.tail && {
|
|
72
|
+
tail: maskHandlerEnv(worker.tail),
|
|
73
|
+
}),
|
|
74
|
+
...(worker.trace && {
|
|
75
|
+
trace: maskHandlerEnv(worker.trace),
|
|
76
|
+
}),
|
|
77
|
+
...(worker.scheduled && {
|
|
78
|
+
scheduled: maskHandlerEnv(worker.scheduled),
|
|
79
|
+
}),
|
|
80
|
+
...(worker.queue && {
|
|
81
|
+
queue: maskHandlerEnv(worker.queue),
|
|
82
|
+
}),
|
|
83
|
+
...(worker.test && {
|
|
84
|
+
test: maskHandlerEnv(worker.test),
|
|
85
|
+
}),
|
|
86
|
+
...(worker.email && {
|
|
87
|
+
email: maskHandlerEnv(worker.email),
|
|
88
|
+
}),
|
|
89
|
+
|
|
90
|
+
fetch(request, rawEnv, ctx) {
|
|
91
|
+
const env = getMaskedEnv(rawEnv);
|
|
46
92
|
// Get the chain of middleware from the worker object
|
|
47
93
|
if (worker.middleware && worker.middleware.length > 0) {
|
|
48
|
-
|
|
49
|
-
|
|
94
|
+
// Make sure we only register middleware once:
|
|
95
|
+
// https://github.com/cloudflare/workers-sdk/issues/2386#issuecomment-1614715911
|
|
96
|
+
if (!registeredMiddleware) {
|
|
97
|
+
registeredMiddleware = true;
|
|
98
|
+
for (const middleware of worker.middleware) {
|
|
99
|
+
__facade_register__(middleware);
|
|
100
|
+
}
|
|
50
101
|
}
|
|
51
102
|
|
|
52
103
|
const __facade_modules_dispatch__: Dispatcher = function (type, init) {
|
|
@@ -71,12 +122,16 @@ const facade: ExportedHandler<unknown> = {
|
|
|
71
122
|
// We didn't have any middleware so we can skip the invocation chain,
|
|
72
123
|
// and just call the fetch handler directly
|
|
73
124
|
|
|
74
|
-
// We "don't care" if this is undefined as we want to have the same
|
|
125
|
+
// We "don't care" if this is undefined as we want to have the same behavior
|
|
75
126
|
// as if the worker completely bypassed middleware.
|
|
76
|
-
return
|
|
127
|
+
return __facade_modules_fetch__(request, env, ctx);
|
|
77
128
|
}
|
|
78
129
|
},
|
|
79
|
-
scheduled: worker.scheduled,
|
|
80
130
|
};
|
|
81
131
|
|
|
132
|
+
type HandlerFn<D, R> = (data: D, env: unknown, ctx: ExecutionContext) => R;
|
|
133
|
+
function maskHandlerEnv<D, R>(handler: HandlerFn<D, R>): HandlerFn<D, R> {
|
|
134
|
+
return (data, env, ctx) => handler(data, getMaskedEnv(env), ctx);
|
|
135
|
+
}
|
|
136
|
+
|
|
82
137
|
export default facade;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Awaitable,
|
|
3
3
|
Dispatcher,
|
|
4
|
+
IncomingRequest,
|
|
4
5
|
Middleware,
|
|
5
6
|
__facade_invoke__,
|
|
6
7
|
__facade_register__,
|
|
@@ -183,8 +184,6 @@ __facade__originalAddEventListener__("fetch", (event) => {
|
|
|
183
184
|
});
|
|
184
185
|
|
|
185
186
|
__FACADE_EVENT_TARGET__.dispatchEvent(facadeEvent);
|
|
186
|
-
// @ts-expect-error `waitUntil` types are currently broken, blocked on
|
|
187
|
-
// https://github.com/cloudflare/workerd/pull/191
|
|
188
187
|
event.waitUntil(Promise.all(facadeEvent[__facade_waitUntil__]));
|
|
189
188
|
}
|
|
190
189
|
};
|
|
@@ -197,8 +196,6 @@ __facade__originalAddEventListener__("fetch", (event) => {
|
|
|
197
196
|
|
|
198
197
|
__FACADE_EVENT_TARGET__.dispatchEvent(facadeEvent);
|
|
199
198
|
facadeEvent[__facade_dispatched__] = true;
|
|
200
|
-
// @ts-expect-error `waitUntil` types are currently broken, blocked on
|
|
201
|
-
// https://github.com/cloudflare/workerd/pull/191
|
|
202
199
|
event.waitUntil(Promise.all(facadeEvent[__facade_waitUntil__]));
|
|
203
200
|
|
|
204
201
|
const response = facadeEvent[__facade_response__];
|
|
@@ -210,7 +207,7 @@ __facade__originalAddEventListener__("fetch", (event) => {
|
|
|
210
207
|
|
|
211
208
|
event.respondWith(
|
|
212
209
|
__facade_invoke__(
|
|
213
|
-
event.request,
|
|
210
|
+
event.request as IncomingRequest,
|
|
214
211
|
globalThis,
|
|
215
212
|
ctx,
|
|
216
213
|
__facade_sw_dispatch__,
|
|
@@ -227,7 +224,5 @@ __facade__originalAddEventListener__("scheduled", (event) => {
|
|
|
227
224
|
});
|
|
228
225
|
|
|
229
226
|
__FACADE_EVENT_TARGET__.dispatchEvent(facadeEvent);
|
|
230
|
-
// @ts-expect-error `waitUntil` types are currently broken, blocked on
|
|
231
|
-
// https://github.com/cloudflare/workerd/pull/191
|
|
232
227
|
event.waitUntil(Promise.all(facadeEvent[__facade_waitUntil__]));
|
|
233
228
|
});
|
|
@@ -1,15 +1,27 @@
|
|
|
1
1
|
import type { Middleware } from "./common";
|
|
2
2
|
|
|
3
|
+
interface JsonError {
|
|
4
|
+
message?: string;
|
|
5
|
+
name?: string;
|
|
6
|
+
stack?: string;
|
|
7
|
+
cause?: JsonError;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
function reduceError(e: any): JsonError {
|
|
11
|
+
return {
|
|
12
|
+
name: e?.name,
|
|
13
|
+
message: e?.message ?? String(e),
|
|
14
|
+
stack: e?.stack,
|
|
15
|
+
cause: e?.cause === undefined ? undefined : reduceError(e.cause),
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
|
|
3
19
|
// See comment in `bundle.ts` for details on why this is needed
|
|
4
20
|
const jsonError: Middleware = async (request, env, _ctx, middlewareCtx) => {
|
|
5
21
|
try {
|
|
6
22
|
return await middlewareCtx.next(request, env);
|
|
7
23
|
} catch (e: any) {
|
|
8
|
-
const error =
|
|
9
|
-
name: e?.name,
|
|
10
|
-
message: e?.message ?? String(e),
|
|
11
|
-
stack: e?.stack,
|
|
12
|
-
};
|
|
24
|
+
const error = reduceError(e);
|
|
13
25
|
return Response.json(error, {
|
|
14
26
|
status: 500,
|
|
15
27
|
headers: { "MF-Experimental-Error-Stack": "true" },
|
|
@@ -18,3 +30,4 @@ const jsonError: Middleware = async (request, env, _ctx, middlewareCtx) => {
|
|
|
18
30
|
};
|
|
19
31
|
|
|
20
32
|
export default jsonError;
|
|
33
|
+
export const wrap = undefined;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
/// <reference path="middleware-multiworker-dev.d.ts"/>
|
|
3
|
+
|
|
4
|
+
import { workers } from "config:middleware/multiworker-dev";
|
|
5
|
+
import type { WorkerRegistry } from "../../src/dev-registry";
|
|
6
|
+
|
|
7
|
+
export function wrap(env: Record<string, unknown>) {
|
|
8
|
+
const facadeEnv = { ...env };
|
|
9
|
+
// For every Worker definition that's available,
|
|
10
|
+
// create a fetcher for it on the facade env.
|
|
11
|
+
// for const [name, binding] of env
|
|
12
|
+
// if Workers[name]
|
|
13
|
+
// const details = Workers[name];
|
|
14
|
+
|
|
15
|
+
for (const [name, details] of Object.entries(workers as WorkerRegistry)) {
|
|
16
|
+
if (details) {
|
|
17
|
+
facadeEnv[name] = {
|
|
18
|
+
async fetch(...reqArgs: Parameters<Fetcher["fetch"]>) {
|
|
19
|
+
const reqFromArgs = new Request(...reqArgs);
|
|
20
|
+
if (details.headers) {
|
|
21
|
+
for (const [key, value] of Object.entries(details.headers)) {
|
|
22
|
+
// In remote mode, you need to add a couple of headers
|
|
23
|
+
// to make sure it's talking to the 'dev' preview session
|
|
24
|
+
// (much like wrangler dev already does via proxy.ts)
|
|
25
|
+
reqFromArgs.headers.set(key, value);
|
|
26
|
+
}
|
|
27
|
+
return (env[name] as Fetcher).fetch(reqFromArgs);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const url = new URL(reqFromArgs.url);
|
|
31
|
+
if (details.protocol !== undefined) {
|
|
32
|
+
url.protocol = details.protocol;
|
|
33
|
+
}
|
|
34
|
+
if (details.host !== undefined) {
|
|
35
|
+
url.host = details.host;
|
|
36
|
+
}
|
|
37
|
+
if (details.port !== undefined) {
|
|
38
|
+
url.port = details.port.toString();
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const request = new Request(url.toString(), reqFromArgs);
|
|
42
|
+
return fetch(request);
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
} else {
|
|
46
|
+
// This means there's no dev binding available.
|
|
47
|
+
// Let's use whatever's available, or put a shim with a message.
|
|
48
|
+
facadeEnv[name] = facadeEnv[name] || {
|
|
49
|
+
async fetch() {
|
|
50
|
+
return new Response(
|
|
51
|
+
`You should start up wrangler dev --local on the ${name} worker`,
|
|
52
|
+
{ status: 404 }
|
|
53
|
+
);
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return facadeEnv;
|
|
59
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/// <reference path="middleware-serve-static-assets.d.ts"/>
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
getAssetFromKV,
|
|
5
|
+
NotFoundError,
|
|
6
|
+
MethodNotAllowedError,
|
|
7
|
+
serveSinglePageApp,
|
|
8
|
+
} from "@cloudflare/kv-asset-handler";
|
|
9
|
+
import type { Options } from "@cloudflare/kv-asset-handler";
|
|
10
|
+
import { spaMode, cacheControl } from "config:middleware/serve-static-assets";
|
|
11
|
+
import type * as kvAssetHandler from "@cloudflare/kv-asset-handler";
|
|
12
|
+
import manifest from "__STATIC_CONTENT_MANIFEST";
|
|
13
|
+
const ASSET_MANIFEST = JSON.parse(manifest);
|
|
14
|
+
|
|
15
|
+
import type { Middleware } from "./common";
|
|
16
|
+
|
|
17
|
+
const staticAssets: Middleware = async (request, env, _ctx, middlewareCtx) => {
|
|
18
|
+
let options: Partial<Options> = {
|
|
19
|
+
ASSET_MANIFEST,
|
|
20
|
+
ASSET_NAMESPACE: env.__STATIC_CONTENT,
|
|
21
|
+
cacheControl: cacheControl,
|
|
22
|
+
mapRequestToAsset: spaMode ? serveSinglePageApp : undefined,
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
try {
|
|
26
|
+
const page = await (getAssetFromKV as typeof kvAssetHandler.getAssetFromKV)(
|
|
27
|
+
{
|
|
28
|
+
request,
|
|
29
|
+
waitUntil(promise) {
|
|
30
|
+
return _ctx.waitUntil(promise);
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
options
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
// allow headers to be altered
|
|
37
|
+
const response = new Response(page.body, page);
|
|
38
|
+
|
|
39
|
+
response.headers.set("X-XSS-Protection", "1; mode=block");
|
|
40
|
+
response.headers.set("X-Content-Type-Options", "nosniff");
|
|
41
|
+
response.headers.set("X-Frame-Options", "DENY");
|
|
42
|
+
response.headers.set("Referrer-Policy", "unsafe-url");
|
|
43
|
+
response.headers.set("Feature-Policy", "none");
|
|
44
|
+
|
|
45
|
+
return response;
|
|
46
|
+
} catch (e) {
|
|
47
|
+
if (e instanceof NotFoundError || e instanceof MethodNotAllowedError) {
|
|
48
|
+
// if a known error is thrown then serve from actual worker
|
|
49
|
+
return await middlewareCtx.next(request, env);
|
|
50
|
+
}
|
|
51
|
+
// otherwise it's a real error, so throw it
|
|
52
|
+
throw e;
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
export default staticAssets;
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* - Run `curl "http://localhost:8787/cdn-cgi/mf/scheduled"` to trigger the scheduled event
|
|
6
6
|
* - Go back to the console to see what your worker has logged
|
|
7
7
|
* - Update the Cron trigger in wrangler.toml (see https://developers.cloudflare.com/workers/wrangler/configuration/#triggers)
|
|
8
|
-
* - Run `wrangler
|
|
8
|
+
* - Run `wrangler deploy --name my-worker` to deploy your worker
|
|
9
9
|
*
|
|
10
10
|
* Learn more at https://developers.cloudflare.com/workers/runtime-apis/scheduled-event/
|
|
11
11
|
*/
|
package/templates/new-worker.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* - Run `wrangler dev src/index.ts` in your terminal to start a development server
|
|
5
5
|
* - Open a browser tab at http://localhost:8787/ to see your worker in action
|
|
6
|
-
* - Run `wrangler
|
|
6
|
+
* - Run `wrangler deploy src/index.ts --name my-worker` to deploy your worker
|
|
7
7
|
*
|
|
8
8
|
* Learn more at https://developers.cloudflare.com/workers/
|
|
9
9
|
*/
|
|
@@ -17,6 +17,9 @@ export interface Env {
|
|
|
17
17
|
//
|
|
18
18
|
// Example binding to R2. Learn more at https://developers.cloudflare.com/workers/runtime-apis/r2/
|
|
19
19
|
// MY_BUCKET: R2Bucket;
|
|
20
|
+
//
|
|
21
|
+
// Example binding to a Service. Learn more at https://developers.cloudflare.com/workers/runtime-apis/service-bindings/
|
|
22
|
+
// MY_SERVICE: Fetcher;
|
|
20
23
|
}
|
|
21
24
|
|
|
22
25
|
export default {
|
|
@@ -45,7 +45,10 @@ function transformRoutingRuleToRegExp(rule: string): RegExp {
|
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
// /foo* => /foo.* => ^/foo.*$
|
|
48
|
-
|
|
48
|
+
// /*.* => /*\.* => /.*\..* => ^/.*\..*$
|
|
49
|
+
transformedRule = `^${transformedRule
|
|
50
|
+
.replaceAll(/\./g, "\\.")
|
|
51
|
+
.replaceAll(/\*/g, ".*")}$`;
|
|
49
52
|
|
|
50
53
|
// ^/foo.*$ => /^\/foo.*$/
|
|
51
54
|
return new RegExp(transformedRule);
|
package/templates/pages-shim.ts
CHANGED
|
@@ -3,9 +3,6 @@
|
|
|
3
3
|
|
|
4
4
|
export default <ExportedHandler<{ ASSETS: Fetcher }>>{
|
|
5
5
|
async fetch(request, env, context) {
|
|
6
|
-
// @ts-expect-error due to a bug in `@cloudflare/workers-types`, the `cf`
|
|
7
|
-
// types from the `request` parameter and `RequestInit` are incompatible.
|
|
8
|
-
// We'll get this fixed very soon.
|
|
9
6
|
const response = await env.ASSETS.fetch(request.url, request);
|
|
10
7
|
return new Response(response.body, response);
|
|
11
8
|
},
|
|
@@ -122,7 +122,8 @@ function* executeRequest(request: Request, relativePathname: string) {
|
|
|
122
122
|
export default function (pluginArgs: unknown) {
|
|
123
123
|
const onRequest: PagesPluginFunction = async (workerContext) => {
|
|
124
124
|
let { request } = workerContext;
|
|
125
|
-
const { env, next
|
|
125
|
+
const { env, next } = workerContext;
|
|
126
|
+
let { data } = workerContext;
|
|
126
127
|
|
|
127
128
|
const url = new URL(request.url);
|
|
128
129
|
// TODO: Replace this with something actually legible.
|
|
@@ -133,7 +134,11 @@ export default function (pluginArgs: unknown) {
|
|
|
133
134
|
const handlerIterator = executeRequest(request, relativePathname);
|
|
134
135
|
const pluginNext = async (input?: RequestInfo, init?: RequestInit) => {
|
|
135
136
|
if (input !== undefined) {
|
|
136
|
-
|
|
137
|
+
let url = input;
|
|
138
|
+
if (typeof input === "string") {
|
|
139
|
+
url = new URL(input, request.url).toString();
|
|
140
|
+
}
|
|
141
|
+
request = new Request(url, init);
|
|
137
142
|
}
|
|
138
143
|
|
|
139
144
|
const result = handlerIterator.next();
|
|
@@ -141,11 +146,20 @@ export default function (pluginArgs: unknown) {
|
|
|
141
146
|
if (result.done === false) {
|
|
142
147
|
const { handler, params, path } = result.value;
|
|
143
148
|
const context = {
|
|
144
|
-
request,
|
|
149
|
+
request: new Request(request.clone()),
|
|
145
150
|
functionPath: workerContext.functionPath + path,
|
|
146
151
|
next: pluginNext,
|
|
147
152
|
params,
|
|
148
|
-
data
|
|
153
|
+
get data() {
|
|
154
|
+
return data;
|
|
155
|
+
},
|
|
156
|
+
set data(value) {
|
|
157
|
+
if (typeof value !== "object" || value === null) {
|
|
158
|
+
throw new Error("context.data must be an object");
|
|
159
|
+
}
|
|
160
|
+
// user has overriden context.data, so we need to merge it with the existing data
|
|
161
|
+
data = value;
|
|
162
|
+
},
|
|
149
163
|
pluginArgs,
|
|
150
164
|
env,
|
|
151
165
|
waitUntil: workerContext.waitUntil.bind(workerContext),
|
|
@@ -157,7 +171,7 @@ export default function (pluginArgs: unknown) {
|
|
|
157
171
|
|
|
158
172
|
return cloneResponse(response);
|
|
159
173
|
} else {
|
|
160
|
-
return next();
|
|
174
|
+
return next(request);
|
|
161
175
|
}
|
|
162
176
|
};
|
|
163
177
|
|
|
@@ -120,7 +120,7 @@ export default {
|
|
|
120
120
|
) {
|
|
121
121
|
let request = originalRequest;
|
|
122
122
|
const handlerIterator = executeRequest(request);
|
|
123
|
-
|
|
123
|
+
let data = {}; // arbitrary data the user can set between functions
|
|
124
124
|
let isFailOpen = false;
|
|
125
125
|
|
|
126
126
|
const next = async (input?: RequestInfo, init?: RequestInit) => {
|
|
@@ -141,7 +141,16 @@ export default {
|
|
|
141
141
|
functionPath: path,
|
|
142
142
|
next,
|
|
143
143
|
params,
|
|
144
|
-
data
|
|
144
|
+
get data() {
|
|
145
|
+
return data;
|
|
146
|
+
},
|
|
147
|
+
set data(value) {
|
|
148
|
+
if (typeof value !== "object" || value === null) {
|
|
149
|
+
throw new Error("context.data must be an object");
|
|
150
|
+
}
|
|
151
|
+
// user has overriden context.data, so we need to merge it with the existing data
|
|
152
|
+
data = value;
|
|
153
|
+
},
|
|
145
154
|
env,
|
|
146
155
|
waitUntil: workerContext.waitUntil.bind(workerContext),
|
|
147
156
|
passThroughOnException: () => {
|
|
@@ -34,8 +34,7 @@
|
|
|
34
34
|
// "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
|
|
35
35
|
// "typeRoots": [], /* Specify multiple folders that act like `./node_modules/@types`. */
|
|
36
36
|
"types": [
|
|
37
|
-
"@cloudflare/workers-types"
|
|
38
|
-
"jest"
|
|
37
|
+
"@cloudflare/workers-types"
|
|
39
38
|
] /* Specify type package names to be included without being referenced in a source file. */,
|
|
40
39
|
// "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
|
|
41
40
|
"resolveJsonModule": true /* Enable importing .json files */,
|
package/templates/tsconfig.json
CHANGED