wrangler 0.0.0-ce00a44c → 0.0.0-ce165ff11
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 +26 -38
- package/bin/wrangler.js +0 -28
- package/config-schema.json +653 -256
- package/package.json +57 -100
- package/templates/checked-fetch.js +1 -1
- package/templates/facade.d.ts +2 -2
- package/templates/gitignore +3 -0
- package/templates/init-tests/test-vitest-new-worker.ts +2 -2
- package/templates/middleware/loader-modules.ts +14 -13
- package/templates/middleware/middleware-mock-analytics-engine.d.ts +3 -0
- package/templates/middleware/middleware-mock-analytics-engine.ts +30 -0
- package/templates/middleware/middleware-patch-console-prefix.d.ts +3 -0
- package/templates/middleware/middleware-patch-console-prefix.ts +21 -0
- package/templates/middleware/middleware-scheduled.ts +15 -1
- package/templates/middleware/middleware-serve-static-assets.ts +2 -2
- package/templates/pages-template-plugin.ts +2 -2
- package/templates/pages-template-worker.ts +1 -1
- package/templates/startDevWorker/InspectorProxyWorker.ts +4 -1
- package/templates/startDevWorker/ProxyWorker.ts +30 -25
- package/templates/tsconfig.init.json +4 -87
- package/wrangler-dist/InspectorProxyWorker.js.map +1 -1
- package/wrangler-dist/ProxyWorker.js +25 -24
- package/wrangler-dist/ProxyWorker.js.map +1 -1
- package/wrangler-dist/cli.d.ts +3407 -687
- package/wrangler-dist/cli.js +148738 -151475
- package/Cloudflare_CA.pem +0 -18
- package/wrangler-dist/wasm-sync.wasm +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wrangler",
|
|
3
|
-
"version": "0.0.0-
|
|
3
|
+
"version": "0.0.0-ce165ff11",
|
|
4
4
|
"description": "Command-line interface for all things Cloudflare Workers",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"wrangler",
|
|
@@ -47,160 +47,117 @@
|
|
|
47
47
|
"wrangler-dist",
|
|
48
48
|
"templates",
|
|
49
49
|
"kv-asset-handler.js",
|
|
50
|
-
"Cloudflare_CA.pem",
|
|
51
50
|
"config-schema.json"
|
|
52
51
|
],
|
|
53
|
-
"jest": {
|
|
54
|
-
"moduleNameMapper": {
|
|
55
|
-
"clipboardy": "<rootDir>/src/__tests__/helpers/clipboardy-mock.js",
|
|
56
|
-
"miniflare/cli": "<rootDir>/../../node_modules/miniflare/dist/src/cli.js"
|
|
57
|
-
},
|
|
58
|
-
"restoreMocks": true,
|
|
59
|
-
"setupFilesAfterEnv": [
|
|
60
|
-
"<rootDir>/src/__tests__/jest.setup.ts"
|
|
61
|
-
],
|
|
62
|
-
"testRegex": "src/__tests__/.*\\.(test|spec)\\.[jt]sx?$",
|
|
63
|
-
"testTimeout": 50000,
|
|
64
|
-
"transform": {
|
|
65
|
-
"^.+\\.c?(t|j)sx?$": [
|
|
66
|
-
"esbuild-jest",
|
|
67
|
-
{
|
|
68
|
-
"sourcemap": true
|
|
69
|
-
}
|
|
70
|
-
]
|
|
71
|
-
},
|
|
72
|
-
"transformIgnorePatterns": [
|
|
73
|
-
"node_modules/.pnpm/(?!find-up|locate-path|p-locate|p-limit|p-timeout|p-queue|yocto-queue|path-exists|execa|strip-final-newline|npm-run-path|path-key|onetime|mimic-fn|human-signals|is-stream|get-port|supports-color|pretty-bytes|strip-ansi|ansi-regex)"
|
|
74
|
-
],
|
|
75
|
-
"snapshotFormat": {
|
|
76
|
-
"escapeString": true,
|
|
77
|
-
"printBasicPrototype": true
|
|
78
|
-
}
|
|
79
|
-
},
|
|
80
52
|
"dependencies": {
|
|
81
|
-
"@esbuild-plugins/node-globals-polyfill": "
|
|
82
|
-
"@esbuild-plugins/node-modules-polyfill": "
|
|
83
|
-
"blake3-wasm": "
|
|
84
|
-
"chokidar": "^3.5.3",
|
|
53
|
+
"@esbuild-plugins/node-globals-polyfill": "0.2.3",
|
|
54
|
+
"@esbuild-plugins/node-modules-polyfill": "0.2.2",
|
|
55
|
+
"blake3-wasm": "2.1.5",
|
|
85
56
|
"esbuild": "0.17.19",
|
|
86
|
-
"
|
|
87
|
-
"
|
|
88
|
-
"
|
|
89
|
-
"
|
|
90
|
-
"
|
|
91
|
-
"source-map": "0.6.1",
|
|
92
|
-
"ts-json-schema-generator": "^1.5.0",
|
|
93
|
-
"xxhash-wasm": "^1.0.1",
|
|
94
|
-
"@cloudflare/kv-asset-handler": "0.3.1",
|
|
95
|
-
"miniflare": "3.20240405.0"
|
|
57
|
+
"path-to-regexp": "6.3.0",
|
|
58
|
+
"unenv": "npm:unenv-nightly@2.0.0-20250109-100802-88ad671",
|
|
59
|
+
"workerd": "1.20241230.0",
|
|
60
|
+
"@cloudflare/kv-asset-handler": "0.3.4",
|
|
61
|
+
"miniflare": "0.0.0-ce165ff11"
|
|
96
62
|
},
|
|
97
63
|
"devDependencies": {
|
|
98
|
-
"@
|
|
99
|
-
"@cloudflare/
|
|
100
|
-
"@cloudflare/types": "^
|
|
101
|
-
"@cloudflare/workers-types": "^4.20240405.0",
|
|
64
|
+
"@aws-sdk/client-s3": "^3.721.0",
|
|
65
|
+
"@cloudflare/types": "6.18.4",
|
|
66
|
+
"@cloudflare/workers-types": "^4.20241230.0",
|
|
102
67
|
"@cspotcode/source-map-support": "0.8.1",
|
|
103
68
|
"@iarna/toml": "^3.0.0",
|
|
104
|
-
"@microsoft/api-extractor": "^7.
|
|
69
|
+
"@microsoft/api-extractor": "^7.47.0",
|
|
105
70
|
"@sentry/node": "^7.86.0",
|
|
106
71
|
"@sentry/types": "^7.86.0",
|
|
107
72
|
"@sentry/utils": "^7.86.0",
|
|
108
|
-
"@types/body-parser": "^1.19.2",
|
|
109
|
-
"@types/busboy": "^1.5.0",
|
|
110
73
|
"@types/command-exists": "^1.2.0",
|
|
111
|
-
"@types/
|
|
112
|
-
"@types/glob-to-regexp": "0.4.1",
|
|
74
|
+
"@types/glob-to-regexp": "^0.4.1",
|
|
113
75
|
"@types/is-ci": "^3.0.0",
|
|
114
76
|
"@types/javascript-time-ago": "^2.0.3",
|
|
115
|
-
"@types/
|
|
116
|
-
"@types/mime": "^2.0.3",
|
|
77
|
+
"@types/mime": "^3.0.4",
|
|
117
78
|
"@types/minimatch": "^5.1.2",
|
|
79
|
+
"@types/node": "^18.19.59",
|
|
118
80
|
"@types/prompts": "^2.0.14",
|
|
119
|
-
"@types/react": "^17.0.37",
|
|
120
81
|
"@types/resolve": "^1.20.6",
|
|
121
|
-
"@types/serve-static": "^1.13.10",
|
|
122
82
|
"@types/shell-quote": "^1.7.2",
|
|
123
83
|
"@types/signal-exit": "^3.0.1",
|
|
124
|
-
"@types/source-map-support": "^0.5.7",
|
|
125
84
|
"@types/supports-color": "^8.1.1",
|
|
126
|
-
"@types/ws": "^8.5.
|
|
127
|
-
"@types/yargs": "^17.0.
|
|
85
|
+
"@types/ws": "^8.5.7",
|
|
86
|
+
"@types/yargs": "^17.0.22",
|
|
87
|
+
"@vitest/ui": "~2.1.8",
|
|
128
88
|
"@webcontainer/env": "^1.1.0",
|
|
129
|
-
"
|
|
130
|
-
"
|
|
89
|
+
"chalk": "^5.2.0",
|
|
90
|
+
"chokidar": "^4.0.1",
|
|
131
91
|
"cli-table3": "^0.6.3",
|
|
132
|
-
"clipboardy": "^3.0.0",
|
|
133
92
|
"cmd-shim": "^4.1.0",
|
|
134
93
|
"command-exists": "^1.2.9",
|
|
135
|
-
"concurrently": "^
|
|
136
|
-
"
|
|
137
|
-
"
|
|
138
|
-
"
|
|
139
|
-
"esbuild-jest": "0.5.0",
|
|
94
|
+
"concurrently": "^8.2.2",
|
|
95
|
+
"date-fns": "^4.1.0",
|
|
96
|
+
"devtools-protocol": "^0.0.1182435",
|
|
97
|
+
"dotenv": "^16.3.1",
|
|
140
98
|
"execa": "^6.1.0",
|
|
141
|
-
"express": "^4.18.1",
|
|
142
|
-
"finalhandler": "^1.2.0",
|
|
143
99
|
"find-up": "^6.3.0",
|
|
144
|
-
"get-port": "^
|
|
145
|
-
"glob-to-regexp": "0.4.1",
|
|
146
|
-
"http-terminator": "^3.2.0",
|
|
100
|
+
"get-port": "^7.0.0",
|
|
101
|
+
"glob-to-regexp": "^0.4.1",
|
|
147
102
|
"https-proxy-agent": "7.0.2",
|
|
148
103
|
"ignore": "^5.2.0",
|
|
149
|
-
"ink": "^3.2.0",
|
|
150
|
-
"ink-select-input": "^4.2.1",
|
|
151
|
-
"ink-spinner": "^4.0.3",
|
|
152
|
-
"ink-table": "^3.0.0",
|
|
153
|
-
"ink-testing-library": "^2.1.0",
|
|
154
|
-
"ink-text-input": "^4.0.3",
|
|
155
104
|
"is-ci": "^3.0.1",
|
|
105
|
+
"itty-time": "^1.0.6",
|
|
156
106
|
"javascript-time-ago": "^2.5.4",
|
|
157
|
-
"
|
|
158
|
-
"jest-fetch-mock": "^3.0.3",
|
|
159
|
-
"jest-websocket-mock": "^2.5.0",
|
|
107
|
+
"md5-file": "5.0.0",
|
|
160
108
|
"mime": "^3.0.0",
|
|
161
109
|
"minimatch": "^5.1.0",
|
|
162
|
-
"
|
|
110
|
+
"mock-socket": "^9.3.1",
|
|
111
|
+
"msw": "2.4.3",
|
|
163
112
|
"open": "^8.4.0",
|
|
164
113
|
"p-queue": "^7.2.0",
|
|
165
114
|
"patch-console": "^1.0.0",
|
|
166
115
|
"pretty-bytes": "^6.0.0",
|
|
167
116
|
"prompts": "^2.4.2",
|
|
168
|
-
"
|
|
169
|
-
"
|
|
170
|
-
"
|
|
117
|
+
"resolve": "^1.22.8",
|
|
118
|
+
"rimraf": "^5.0.10",
|
|
119
|
+
"selfsigned": "^2.0.1",
|
|
171
120
|
"semiver": "^1.1.0",
|
|
172
|
-
"serve-static": "^1.15.0",
|
|
173
121
|
"shell-quote": "^1.8.1",
|
|
174
|
-
"shellac": "^0.8.0",
|
|
175
122
|
"signal-exit": "^3.0.7",
|
|
176
|
-
"
|
|
123
|
+
"source-map": "^0.6.1",
|
|
124
|
+
"strip-ansi": "^7.1.0",
|
|
177
125
|
"supports-color": "^9.2.2",
|
|
178
126
|
"timeago.js": "^4.0.2",
|
|
179
127
|
"ts-dedent": "^2.2.0",
|
|
180
|
-
"
|
|
128
|
+
"ts-json-schema-generator": "^1.5.0",
|
|
129
|
+
"typescript": "~5.6.3",
|
|
130
|
+
"undici": "^5.28.4",
|
|
181
131
|
"update-check": "^1.5.4",
|
|
182
|
-
"
|
|
132
|
+
"vitest": "~2.1.8",
|
|
133
|
+
"vitest-websocket-mock": "^0.4.0",
|
|
134
|
+
"ws": "^8.18.0",
|
|
183
135
|
"xdg-app-paths": "^8.3.0",
|
|
136
|
+
"xxhash-wasm": "^1.0.1",
|
|
184
137
|
"yargs": "^17.7.2",
|
|
185
|
-
"yoga-layout": "file:../../vendor/yoga-layout-2.0.0-beta.1.tgz",
|
|
186
138
|
"@cloudflare/cli": "1.1.1",
|
|
187
|
-
"@cloudflare/pages-shared": "^0.
|
|
139
|
+
"@cloudflare/pages-shared": "^0.13.2",
|
|
140
|
+
"@cloudflare/eslint-config-worker": "1.1.0",
|
|
141
|
+
"@cloudflare/workers-shared": "0.0.0-ce165ff11",
|
|
188
142
|
"@cloudflare/workers-tsconfig": "0.0.0"
|
|
189
143
|
},
|
|
190
|
-
"optionalDependencies": {
|
|
191
|
-
"fsevents": "~2.3.2"
|
|
192
|
-
},
|
|
193
144
|
"peerDependencies": {
|
|
194
|
-
"@cloudflare/workers-types": "^4.
|
|
145
|
+
"@cloudflare/workers-types": "^4.20241230.0"
|
|
195
146
|
},
|
|
196
147
|
"peerDependenciesMeta": {
|
|
197
148
|
"@cloudflare/workers-types": {
|
|
198
149
|
"optional": true
|
|
199
150
|
}
|
|
200
151
|
},
|
|
152
|
+
"optionalDependencies": {
|
|
153
|
+
"fsevents": "~2.3.2"
|
|
154
|
+
},
|
|
201
155
|
"engines": {
|
|
202
156
|
"node": ">=16.17.0"
|
|
203
157
|
},
|
|
158
|
+
"volta": {
|
|
159
|
+
"extends": "../../package.json"
|
|
160
|
+
},
|
|
204
161
|
"workers-sdk": {
|
|
205
162
|
"prerelease": true
|
|
206
163
|
},
|
|
@@ -208,17 +165,17 @@
|
|
|
208
165
|
"assert-git-version": "node -r esbuild-register scripts/assert-git-version.ts",
|
|
209
166
|
"build": "pnpm run clean && pnpm run bundle && pnpm run emit-types && pnpm run generate-json-schema",
|
|
210
167
|
"bundle": "node -r esbuild-register scripts/bundle.ts",
|
|
211
|
-
"check:lint": "eslint .",
|
|
168
|
+
"check:lint": "eslint . --max-warnings=0",
|
|
212
169
|
"check:type": "tsc",
|
|
213
170
|
"clean": "rimraf wrangler-dist miniflare-dist emitted-types",
|
|
214
171
|
"dev": "pnpm run clean && concurrently -c black,blue --kill-others-on-fail false \"pnpm run bundle --watch\" \"pnpm run check:type --watch --preserveWatchOutput\"",
|
|
215
172
|
"emit-types": "tsc -p tsconfig.emit.json && node -r esbuild-register scripts/emit-types.ts",
|
|
216
173
|
"generate-json-schema": "pnpm exec ts-json-schema-generator --no-type-check --path src/config/config.ts --type RawConfig --out config-schema.json",
|
|
217
174
|
"start": "pnpm run bundle && cross-env NODE_OPTIONS=--enable-source-maps ./bin/wrangler.js",
|
|
218
|
-
"test": "pnpm run assert-git-version &&
|
|
219
|
-
"test:ci": "pnpm run test",
|
|
175
|
+
"test": "dotenv -- pnpm run assert-git-version && dotenv -- vitest",
|
|
176
|
+
"test:ci": "pnpm run test run",
|
|
220
177
|
"test:debug": "pnpm run test --silent=false --verbose=true",
|
|
221
|
-
"test:e2e": "vitest -c ./e2e/vitest.config.
|
|
178
|
+
"test:e2e": "dotenv -- vitest -c ./e2e/vitest.config.mts",
|
|
222
179
|
"test:watch": "pnpm run test --testTimeout=50000 --watch",
|
|
223
180
|
"type:tests": "tsc -p ./src/__tests__/tsconfig.json && tsc -p ./e2e/tsconfig.json"
|
|
224
181
|
}
|
package/templates/facade.d.ts
CHANGED
|
@@ -3,10 +3,10 @@ declare module "__ENTRY_POINT__" {
|
|
|
3
3
|
import { WorkerEntrypoint } from "cloudflare:workers";
|
|
4
4
|
|
|
5
5
|
export type WorkerEntrypointConstructor = typeof WorkerEntrypoint;
|
|
6
|
-
export type WithMiddleware<T> = T & { middleware?: Middleware[] };
|
|
7
6
|
|
|
8
|
-
const worker:
|
|
7
|
+
const worker: ExportedHandler | WorkerEntrypointConstructor;
|
|
9
8
|
export default worker;
|
|
9
|
+
export const __INTERNAL_WRANGLER_MIDDLEWARE__: Middleware[];
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
declare module "__KV_ASSET_HANDLER__" {
|
package/templates/gitignore
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { afterAll, beforeAll, describe, expect, it } from "vitest";
|
|
2
2
|
import { unstable_dev } from "wrangler";
|
|
3
|
-
import type {
|
|
3
|
+
import type { Unstable_DevWorker } from "wrangler";
|
|
4
4
|
|
|
5
5
|
describe("Worker", () => {
|
|
6
|
-
let worker:
|
|
6
|
+
let worker: Unstable_DevWorker;
|
|
7
7
|
|
|
8
8
|
beforeAll(async () => {
|
|
9
9
|
worker = await unstable_dev("src/index.ts", {
|
|
@@ -3,12 +3,9 @@
|
|
|
3
3
|
// export dynamically through wrangler, or we can potentially let users directly
|
|
4
4
|
// add them as a sort of "plugin" system.
|
|
5
5
|
|
|
6
|
-
import ENTRY from "__ENTRY_POINT__";
|
|
6
|
+
import ENTRY, { __INTERNAL_WRANGLER_MIDDLEWARE__ } from "__ENTRY_POINT__";
|
|
7
7
|
import { __facade_invoke__, __facade_register__, Dispatcher } from "./common";
|
|
8
|
-
import type {
|
|
9
|
-
WithMiddleware,
|
|
10
|
-
WorkerEntrypointConstructor,
|
|
11
|
-
} from "__ENTRY_POINT__";
|
|
8
|
+
import type { WorkerEntrypointConstructor } from "__ENTRY_POINT__";
|
|
12
9
|
|
|
13
10
|
// Preserve all the exports from the worker
|
|
14
11
|
export * from "__ENTRY_POINT__";
|
|
@@ -33,15 +30,16 @@ class __Facade_ScheduledController__ implements ScheduledController {
|
|
|
33
30
|
}
|
|
34
31
|
}
|
|
35
32
|
|
|
36
|
-
function wrapExportedHandler(
|
|
37
|
-
worker: WithMiddleware<ExportedHandler>
|
|
38
|
-
): ExportedHandler {
|
|
33
|
+
function wrapExportedHandler(worker: ExportedHandler): ExportedHandler {
|
|
39
34
|
// If we don't have any middleware defined, just return the handler as is
|
|
40
|
-
if (
|
|
35
|
+
if (
|
|
36
|
+
__INTERNAL_WRANGLER_MIDDLEWARE__ === undefined ||
|
|
37
|
+
__INTERNAL_WRANGLER_MIDDLEWARE__.length === 0
|
|
38
|
+
) {
|
|
41
39
|
return worker;
|
|
42
40
|
}
|
|
43
41
|
// Otherwise, register all middleware once
|
|
44
|
-
for (const middleware of
|
|
42
|
+
for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) {
|
|
45
43
|
__facade_register__(middleware);
|
|
46
44
|
}
|
|
47
45
|
|
|
@@ -75,14 +73,17 @@ function wrapExportedHandler(
|
|
|
75
73
|
}
|
|
76
74
|
|
|
77
75
|
function wrapWorkerEntrypoint(
|
|
78
|
-
klass:
|
|
76
|
+
klass: WorkerEntrypointConstructor
|
|
79
77
|
): WorkerEntrypointConstructor {
|
|
80
78
|
// If we don't have any middleware defined, just return the handler as is
|
|
81
|
-
if (
|
|
79
|
+
if (
|
|
80
|
+
__INTERNAL_WRANGLER_MIDDLEWARE__ === undefined ||
|
|
81
|
+
__INTERNAL_WRANGLER_MIDDLEWARE__.length === 0
|
|
82
|
+
) {
|
|
82
83
|
return klass;
|
|
83
84
|
}
|
|
84
85
|
// Otherwise, register all middleware once
|
|
85
|
-
for (const middleware of
|
|
86
|
+
for (const middleware of __INTERNAL_WRANGLER_MIDDLEWARE__) {
|
|
86
87
|
__facade_register__(middleware);
|
|
87
88
|
}
|
|
88
89
|
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/// <reference path="middleware-mock-analytics-engine.d.ts"/>
|
|
2
|
+
|
|
3
|
+
import { bindings } from "config:middleware/mock-analytics-engine";
|
|
4
|
+
import type { Middleware } from "./common";
|
|
5
|
+
|
|
6
|
+
const bindingsEnv = Object.fromEntries(
|
|
7
|
+
bindings.map((binding) => [
|
|
8
|
+
binding,
|
|
9
|
+
{
|
|
10
|
+
writeDataPoint() {
|
|
11
|
+
// no op in dev
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
])
|
|
15
|
+
) satisfies Record<string, AnalyticsEngineDataset>;
|
|
16
|
+
|
|
17
|
+
const analyticsEngine: Middleware = async (
|
|
18
|
+
request,
|
|
19
|
+
env,
|
|
20
|
+
_ctx,
|
|
21
|
+
middlewareCtx
|
|
22
|
+
) => {
|
|
23
|
+
// we're going to directly modify env so it maintains referential equality
|
|
24
|
+
for (const binding of bindings) {
|
|
25
|
+
env[binding] ??= bindingsEnv[binding];
|
|
26
|
+
}
|
|
27
|
+
return await middlewareCtx.next(request, env);
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export default analyticsEngine;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/// <reference path="middleware-patch-console-prefix.d.ts"/>
|
|
2
|
+
|
|
3
|
+
import { prefix } from "config:middleware/patch-console-prefix";
|
|
4
|
+
import type { Middleware } from "./common";
|
|
5
|
+
|
|
6
|
+
// @ts-expect-error globalThis.console _does_ exist
|
|
7
|
+
globalThis.console = new Proxy(globalThis.console, {
|
|
8
|
+
get(target, p, receiver) {
|
|
9
|
+
if (p === "log" || p === "debug" || p === "info") {
|
|
10
|
+
return (...args: unknown[]) =>
|
|
11
|
+
Reflect.get(target, p, receiver)(prefix, ...args);
|
|
12
|
+
}
|
|
13
|
+
return Reflect.get(target, p, receiver);
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
const passthrough: Middleware = (request, env, _ctx, middlewareCtx) => {
|
|
18
|
+
return middlewareCtx.next(request, env);
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export default passthrough;
|
|
@@ -9,7 +9,21 @@ const scheduled: Middleware = async (request, env, _ctx, middlewareCtx) => {
|
|
|
9
9
|
|
|
10
10
|
return new Response("Ran scheduled event");
|
|
11
11
|
}
|
|
12
|
-
|
|
12
|
+
|
|
13
|
+
const resp = await middlewareCtx.next(request, env);
|
|
14
|
+
|
|
15
|
+
// If you open the `/__scheduled` page in a browser, the browser will automatically make a request to `/favicon.ico`.
|
|
16
|
+
// For scheduled Workers _without_ a fetch handler, this will result in a 500 response that clutters the log with unhelpful error messages.
|
|
17
|
+
// To avoid this, inject a 404 response to favicon.ico loads on the `/__scheduled` page
|
|
18
|
+
if (
|
|
19
|
+
request.headers.get("referer")?.endsWith("/__scheduled") &&
|
|
20
|
+
url.pathname === "/favicon.ico" &&
|
|
21
|
+
resp.status === 500
|
|
22
|
+
) {
|
|
23
|
+
return new Response(null, { status: 404 });
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return resp;
|
|
13
27
|
};
|
|
14
28
|
|
|
15
29
|
export default scheduled;
|
|
@@ -14,7 +14,7 @@ import type * as kvAssetHandler from "@cloudflare/kv-asset-handler";
|
|
|
14
14
|
|
|
15
15
|
const ASSET_MANIFEST = JSON.parse(manifest);
|
|
16
16
|
|
|
17
|
-
const staticAssets: Middleware = async (request, env,
|
|
17
|
+
const staticAssets: Middleware = async (request, env, ctx, middlewareCtx) => {
|
|
18
18
|
let options: Partial<Options> = {
|
|
19
19
|
ASSET_MANIFEST,
|
|
20
20
|
ASSET_NAMESPACE: env.__STATIC_CONTENT,
|
|
@@ -27,7 +27,7 @@ const staticAssets: Middleware = async (request, env, _ctx, middlewareCtx) => {
|
|
|
27
27
|
{
|
|
28
28
|
request,
|
|
29
29
|
waitUntil(promise) {
|
|
30
|
-
return
|
|
30
|
+
return ctx.waitUntil(promise);
|
|
31
31
|
},
|
|
32
32
|
},
|
|
33
33
|
options
|
|
@@ -41,14 +41,14 @@ type EventPluginContext<Env, P extends string, Data, PluginArgs> = {
|
|
|
41
41
|
declare type PagesFunction<
|
|
42
42
|
Env = unknown,
|
|
43
43
|
P extends string = string,
|
|
44
|
-
Data extends Record<string, unknown> = Record<string, unknown
|
|
44
|
+
Data extends Record<string, unknown> = Record<string, unknown>,
|
|
45
45
|
> = (context: EventContext<Env, P, Data>) => Response | Promise<Response>;
|
|
46
46
|
|
|
47
47
|
declare type PagesPluginFunction<
|
|
48
48
|
Env = unknown,
|
|
49
49
|
P extends string = string,
|
|
50
50
|
Data extends Record<string, unknown> = Record<string, unknown>,
|
|
51
|
-
PluginArgs = unknown
|
|
51
|
+
PluginArgs = unknown,
|
|
52
52
|
> = (
|
|
53
53
|
context: EventPluginContext<Env, P, Data, PluginArgs>
|
|
54
54
|
) => Response | Promise<Response>;
|
|
@@ -29,7 +29,7 @@ type EventContext<Env, P extends string, Data> = {
|
|
|
29
29
|
declare type PagesFunction<
|
|
30
30
|
Env = unknown,
|
|
31
31
|
P extends string = string,
|
|
32
|
-
Data extends Record<string, unknown> = Record<string, unknown
|
|
32
|
+
Data extends Record<string, unknown> = Record<string, unknown>,
|
|
33
33
|
> = (context: EventContext<Env, P, Data>) => Response | Promise<Response>;
|
|
34
34
|
/* end @cloudflare/workers-types */
|
|
35
35
|
|
|
@@ -60,7 +60,10 @@ function isDevToolsEvent<Method extends DevToolsEvents["method"]>(
|
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
export class InspectorProxyWorker implements DurableObject {
|
|
63
|
-
constructor(
|
|
63
|
+
constructor(
|
|
64
|
+
_state: DurableObjectState,
|
|
65
|
+
readonly env: Env
|
|
66
|
+
) {}
|
|
64
67
|
|
|
65
68
|
websockets: {
|
|
66
69
|
proxyController?: WebSocket;
|
|
@@ -33,7 +33,10 @@ export default {
|
|
|
33
33
|
} as ExportedHandler<Env, unknown, ProxyWorkerIncomingRequestBody>;
|
|
34
34
|
|
|
35
35
|
export class ProxyWorker implements DurableObject {
|
|
36
|
-
constructor(
|
|
36
|
+
constructor(
|
|
37
|
+
readonly state: DurableObjectState,
|
|
38
|
+
readonly env: Env
|
|
39
|
+
) {}
|
|
37
40
|
|
|
38
41
|
proxyData?: ProxyData;
|
|
39
42
|
requestQueue = new Map<Request, DeferredPromise<Response>>();
|
|
@@ -121,8 +124,10 @@ export class ProxyWorker implements DurableObject {
|
|
|
121
124
|
Object.assign(userWorkerUrl, proxyData.userWorkerUrl);
|
|
122
125
|
|
|
123
126
|
// set request.url in the UserWorker
|
|
124
|
-
const innerUrl =
|
|
125
|
-
|
|
127
|
+
const innerUrl = urlFromParts(
|
|
128
|
+
proxyData.userWorkerInnerUrlOverrides ?? {},
|
|
129
|
+
request.url
|
|
130
|
+
);
|
|
126
131
|
headers.set("MF-Original-URL", innerUrl.href);
|
|
127
132
|
headers.set("MF-Disable-Pretty-Error", "true"); // disables the UserWorker miniflare instance from rendering the pretty error -- instead the ProxyWorker miniflare instance will intercept the json error response and render the pretty error page
|
|
128
133
|
|
|
@@ -273,28 +278,7 @@ function insertLiveReloadScript(
|
|
|
273
278
|
websocketUrl.protocol =
|
|
274
279
|
websocketUrl.protocol === "http:" ? "ws:" : "wss:";
|
|
275
280
|
|
|
276
|
-
end.append(
|
|
277
|
-
`
|
|
278
|
-
<script>
|
|
279
|
-
(function() {
|
|
280
|
-
var ws;
|
|
281
|
-
function recover() {
|
|
282
|
-
ws = null;
|
|
283
|
-
setTimeout(initLiveReload, 100);
|
|
284
|
-
}
|
|
285
|
-
function initLiveReload() {
|
|
286
|
-
if (ws) return;
|
|
287
|
-
var origin = (location.protocol === "http:" ? "ws://" : "wss://") + location.host;
|
|
288
|
-
ws = new WebSocket(origin + "/cdn-cgi/live-reload", "${LIVE_RELOAD_PROTOCOL}");
|
|
289
|
-
ws.onclose = recover;
|
|
290
|
-
ws.onerror = recover;
|
|
291
|
-
ws.onmessage = location.reload.bind(location);
|
|
292
|
-
}
|
|
293
|
-
})();
|
|
294
|
-
</script>
|
|
295
|
-
`,
|
|
296
|
-
{ html: true }
|
|
297
|
-
);
|
|
281
|
+
end.append(liveReloadScript, { html: true });
|
|
298
282
|
}
|
|
299
283
|
},
|
|
300
284
|
});
|
|
@@ -302,6 +286,27 @@ function insertLiveReloadScript(
|
|
|
302
286
|
return htmlRewriter.transform(response);
|
|
303
287
|
}
|
|
304
288
|
|
|
289
|
+
const liveReloadScript = `
|
|
290
|
+
<script defer type="application/javascript">
|
|
291
|
+
(function() {
|
|
292
|
+
var ws;
|
|
293
|
+
function recover() {
|
|
294
|
+
ws = null;
|
|
295
|
+
setTimeout(initLiveReload, 100);
|
|
296
|
+
}
|
|
297
|
+
function initLiveReload() {
|
|
298
|
+
if (ws) return;
|
|
299
|
+
var origin = (location.protocol === "http:" ? "ws://" : "wss://") + location.host;
|
|
300
|
+
ws = new WebSocket(origin + "/cdn-cgi/live-reload", "${LIVE_RELOAD_PROTOCOL}");
|
|
301
|
+
ws.onclose = recover;
|
|
302
|
+
ws.onerror = recover;
|
|
303
|
+
ws.onmessage = location.reload.bind(location);
|
|
304
|
+
}
|
|
305
|
+
initLiveReload();
|
|
306
|
+
})();
|
|
307
|
+
</script>
|
|
308
|
+
`;
|
|
309
|
+
|
|
305
310
|
/**
|
|
306
311
|
* Rewrite references to URLs in request/response headers.
|
|
307
312
|
*
|