wrangler 0.0.0-ffa01a7d → 0.0.0-ffafe8ad
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/package.json +19 -6
- package/templates/init-tests/test-vitest-new-worker.js +1 -1
- package/templates/init-tests/test-vitest-new-worker.ts +1 -1
- package/templates/middleware/loader-modules.ts +3 -4
- package/templates/middleware/loader-sw.ts +4 -3
- package/templates/middleware/middleware-serve-static-assets.ts +5 -5
- package/templates/pages-dev-pipeline.ts +2 -1
- package/templates/startDevWorker/InspectorProxyWorker.ts +13 -4
- package/templates/startDevWorker/ProxyWorker.ts +78 -38
- package/wrangler-dist/InspectorProxyWorker.js +4 -0
- package/wrangler-dist/InspectorProxyWorker.js.map +1 -1
- package/wrangler-dist/ProxyWorker.js +49 -23
- package/wrangler-dist/ProxyWorker.js.map +1 -1
- package/wrangler-dist/cli.d.ts +407 -59
- package/wrangler-dist/cli.js +25173 -17118
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wrangler",
|
|
3
|
-
"version": "0.0.0-
|
|
3
|
+
"version": "0.0.0-ffafe8ad",
|
|
4
4
|
"description": "Command-line interface for all things Cloudflare Workers",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"wrangler",
|
|
@@ -84,7 +84,6 @@
|
|
|
84
84
|
},
|
|
85
85
|
"dependencies": {
|
|
86
86
|
"@cloudflare/kv-asset-handler": "^0.2.0",
|
|
87
|
-
"@cspotcode/source-map-support": "0.8.1",
|
|
88
87
|
"@esbuild-plugins/node-globals-polyfill": "^0.2.3",
|
|
89
88
|
"@esbuild-plugins/node-modules-polyfill": "^0.2.2",
|
|
90
89
|
"blake3-wasm": "^2.1.5",
|
|
@@ -92,17 +91,19 @@
|
|
|
92
91
|
"esbuild": "0.17.19",
|
|
93
92
|
"nanoid": "^3.3.3",
|
|
94
93
|
"path-to-regexp": "^6.2.0",
|
|
94
|
+
"resolve": "^1.22.8",
|
|
95
95
|
"resolve.exports": "^2.0.2",
|
|
96
96
|
"selfsigned": "^2.0.1",
|
|
97
97
|
"source-map": "0.6.1",
|
|
98
98
|
"xxhash-wasm": "^1.0.1",
|
|
99
|
-
"miniflare": "3.
|
|
99
|
+
"miniflare": "3.20240129.1"
|
|
100
100
|
},
|
|
101
101
|
"devDependencies": {
|
|
102
102
|
"@cloudflare/ai": "^1.0.35",
|
|
103
103
|
"@cloudflare/eslint-config-worker": "*",
|
|
104
104
|
"@cloudflare/types": "^6.18.4",
|
|
105
105
|
"@cloudflare/workers-types": "^4.20230914.0",
|
|
106
|
+
"@cspotcode/source-map-support": "0.8.1",
|
|
106
107
|
"@iarna/toml": "^3.0.0",
|
|
107
108
|
"@microsoft/api-extractor": "^7.28.3",
|
|
108
109
|
"@sentry/node": "^7.86.0",
|
|
@@ -120,6 +121,7 @@
|
|
|
120
121
|
"@types/minimatch": "^5.1.2",
|
|
121
122
|
"@types/prompts": "^2.0.14",
|
|
122
123
|
"@types/react": "^17.0.37",
|
|
124
|
+
"@types/resolve": "^1.20.6",
|
|
123
125
|
"@types/serve-static": "^1.13.10",
|
|
124
126
|
"@types/shell-quote": "^1.7.2",
|
|
125
127
|
"@types/signal-exit": "^3.0.1",
|
|
@@ -178,22 +180,33 @@
|
|
|
178
180
|
"supports-color": "^9.2.2",
|
|
179
181
|
"timeago.js": "^4.0.2",
|
|
180
182
|
"ts-dedent": "^2.2.0",
|
|
181
|
-
"undici": "5.
|
|
183
|
+
"undici": "5.28.2",
|
|
182
184
|
"update-check": "^1.5.4",
|
|
183
185
|
"ws": "^8.5.0",
|
|
184
186
|
"xdg-app-paths": "^8.3.0",
|
|
185
187
|
"yargs": "^17.7.2",
|
|
186
188
|
"yoga-layout": "file:../../vendor/yoga-layout-2.0.0-beta.1.tgz",
|
|
187
|
-
"@cloudflare/cli": "1.
|
|
188
|
-
"@cloudflare/pages-shared": "^0.11.
|
|
189
|
+
"@cloudflare/cli": "1.1.1",
|
|
190
|
+
"@cloudflare/pages-shared": "^0.11.11",
|
|
189
191
|
"@cloudflare/workers-tsconfig": "0.0.0"
|
|
190
192
|
},
|
|
191
193
|
"optionalDependencies": {
|
|
192
194
|
"fsevents": "~2.3.2"
|
|
193
195
|
},
|
|
196
|
+
"peerDependencies": {
|
|
197
|
+
"@cloudflare/workers-types": "^4.20230914.0"
|
|
198
|
+
},
|
|
199
|
+
"peerDependenciesMeta": {
|
|
200
|
+
"@cloudflare/workers-types": {
|
|
201
|
+
"optional": true
|
|
202
|
+
}
|
|
203
|
+
},
|
|
194
204
|
"engines": {
|
|
195
205
|
"node": ">=16.17.0"
|
|
196
206
|
},
|
|
207
|
+
"workers-sdk": {
|
|
208
|
+
"prerelease": true
|
|
209
|
+
},
|
|
197
210
|
"scripts": {
|
|
198
211
|
"assert-git-version": "node -r esbuild-register scripts/assert-git-version.ts",
|
|
199
212
|
"build": "pnpm run clean && pnpm run bundle && pnpm run emit-types",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { afterAll, beforeAll, describe, expect, it } from "vitest";
|
|
1
2
|
import { unstable_dev } from "wrangler";
|
|
2
3
|
import type { UnstableDevWorker } from "wrangler";
|
|
3
|
-
import { describe, expect, it, beforeAll, afterAll } from "vitest";
|
|
4
4
|
|
|
5
5
|
describe("Worker", () => {
|
|
6
6
|
let worker: UnstableDevWorker;
|
|
@@ -4,15 +4,14 @@
|
|
|
4
4
|
// // through wrangler, or we can potentially let users directly add them as a sort
|
|
5
5
|
// // of "plugin" system.
|
|
6
6
|
|
|
7
|
+
import worker from "__ENTRY_POINT__";
|
|
7
8
|
import {
|
|
8
|
-
Dispatcher,
|
|
9
|
-
Middleware,
|
|
10
9
|
__facade_invoke__,
|
|
11
10
|
__facade_register__,
|
|
11
|
+
Dispatcher,
|
|
12
|
+
Middleware,
|
|
12
13
|
} from "./common";
|
|
13
14
|
|
|
14
|
-
import worker from "__ENTRY_POINT__";
|
|
15
|
-
|
|
16
15
|
// We need to preserve all of the exports from the worker
|
|
17
16
|
export * from "__ENTRY_POINT__";
|
|
18
17
|
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
|
+
__facade_invoke__,
|
|
3
|
+
__facade_register__,
|
|
4
|
+
__facade_registerInternal__,
|
|
2
5
|
Awaitable,
|
|
3
6
|
Dispatcher,
|
|
4
7
|
IncomingRequest,
|
|
5
8
|
Middleware,
|
|
6
|
-
__facade_invoke__,
|
|
7
|
-
__facade_register__,
|
|
8
|
-
__facade_registerInternal__,
|
|
9
9
|
} from "./common";
|
|
10
|
+
|
|
10
11
|
export { __facade_register__, __facade_registerInternal__ };
|
|
11
12
|
|
|
12
13
|
// Miniflare 2's `EventTarget` follows the spec and doesn't allow exceptions to
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
/// <reference path="middleware-serve-static-assets.d.ts"/>
|
|
2
2
|
|
|
3
|
+
import manifest from "__STATIC_CONTENT_MANIFEST";
|
|
3
4
|
import {
|
|
4
5
|
getAssetFromKV,
|
|
5
|
-
NotFoundError,
|
|
6
6
|
MethodNotAllowedError,
|
|
7
|
+
NotFoundError,
|
|
7
8
|
serveSinglePageApp,
|
|
8
9
|
} from "@cloudflare/kv-asset-handler";
|
|
10
|
+
import { cacheControl, spaMode } from "config:middleware/serve-static-assets";
|
|
11
|
+
import type { Middleware } from "./common";
|
|
9
12
|
import type { Options } from "@cloudflare/kv-asset-handler";
|
|
10
|
-
import { spaMode, cacheControl } from "config:middleware/serve-static-assets";
|
|
11
13
|
import type * as kvAssetHandler from "@cloudflare/kv-asset-handler";
|
|
12
|
-
import manifest from "__STATIC_CONTENT_MANIFEST";
|
|
13
|
-
const ASSET_MANIFEST = JSON.parse(manifest);
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
const ASSET_MANIFEST = JSON.parse(manifest);
|
|
16
16
|
|
|
17
17
|
const staticAssets: Middleware = async (request, env, _ctx, middlewareCtx) => {
|
|
18
18
|
let options: Partial<Options> = {
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
// @ts-ignore entry point will get replaced
|
|
2
2
|
import worker from "__ENTRY_POINT__";
|
|
3
|
+
import { isRoutingRuleMatch } from "./pages-dev-util";
|
|
4
|
+
|
|
3
5
|
// @ts-ignore entry point will get replaced
|
|
4
6
|
export * from "__ENTRY_POINT__";
|
|
5
|
-
import { isRoutingRuleMatch } from "./pages-dev-util";
|
|
6
7
|
|
|
7
8
|
// @ts-ignore routes are injected
|
|
8
9
|
const routes = __ROUTES__;
|
|
@@ -5,10 +5,6 @@ import {
|
|
|
5
5
|
DevToolsCommandResponses,
|
|
6
6
|
DevToolsEvent,
|
|
7
7
|
DevToolsEvents,
|
|
8
|
-
type InspectorProxyWorkerIncomingWebSocketMessage,
|
|
9
|
-
type InspectorProxyWorkerOutgoingRequestBody,
|
|
10
|
-
type InspectorProxyWorkerOutgoingWebsocketMessage,
|
|
11
|
-
type ProxyData,
|
|
12
8
|
serialiseError,
|
|
13
9
|
} from "../../src/api/startDevWorker/events";
|
|
14
10
|
import {
|
|
@@ -18,6 +14,12 @@ import {
|
|
|
18
14
|
MaybePromise,
|
|
19
15
|
urlFromParts,
|
|
20
16
|
} from "../../src/api/startDevWorker/utils";
|
|
17
|
+
import type {
|
|
18
|
+
InspectorProxyWorkerIncomingWebSocketMessage,
|
|
19
|
+
InspectorProxyWorkerOutgoingRequestBody,
|
|
20
|
+
InspectorProxyWorkerOutgoingWebsocketMessage,
|
|
21
|
+
ProxyData,
|
|
22
|
+
} from "../../src/api/startDevWorker/events";
|
|
21
23
|
|
|
22
24
|
const ALLOWED_HOST_HOSTNAMES = ["127.0.0.1", "[::1]", "localhost"];
|
|
23
25
|
const ALLOWED_ORIGIN_HOSTNAMES = [
|
|
@@ -291,6 +293,13 @@ export class InspectorProxyWorker implements DurableObject {
|
|
|
291
293
|
|
|
292
294
|
this.sendDebugLog("NEW RUNTIME WEBSOCKET", runtimeWebSocketUrl);
|
|
293
295
|
|
|
296
|
+
// Make sure DevTools re-fetches script contents,
|
|
297
|
+
// and uses the newly created execution context
|
|
298
|
+
this.sendDevToolsMessage({
|
|
299
|
+
method: "Runtime.executionContextsCleared",
|
|
300
|
+
params: undefined,
|
|
301
|
+
});
|
|
302
|
+
|
|
294
303
|
const upgrade = await fetch(runtimeWebSocketUrl, {
|
|
295
304
|
headers: {
|
|
296
305
|
...this.proxyData.headers,
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import
|
|
1
|
+
import {
|
|
2
|
+
createDeferred,
|
|
3
|
+
DeferredPromise,
|
|
4
|
+
urlFromParts,
|
|
5
|
+
} from "../../src/api/startDevWorker/utils";
|
|
2
6
|
import type {
|
|
7
|
+
ProxyData,
|
|
3
8
|
ProxyWorkerIncomingRequestBody,
|
|
4
9
|
ProxyWorkerOutgoingRequestBody,
|
|
5
|
-
ProxyData,
|
|
6
10
|
} from "../../src/api/startDevWorker/events";
|
|
7
|
-
import {
|
|
8
|
-
DeferredPromise,
|
|
9
|
-
createDeferred,
|
|
10
|
-
} from "../../src/api/startDevWorker/utils";
|
|
11
11
|
|
|
12
12
|
interface Env {
|
|
13
13
|
PROXY_CONTROLLER: Fetcher;
|
|
@@ -37,6 +37,7 @@ export class ProxyWorker implements DurableObject {
|
|
|
37
37
|
|
|
38
38
|
proxyData?: ProxyData;
|
|
39
39
|
requestQueue = new Map<Request, DeferredPromise<Response>>();
|
|
40
|
+
requestRetryQueue = new Map<Request, DeferredPromise<Response>>();
|
|
40
41
|
|
|
41
42
|
fetch(request: Request) {
|
|
42
43
|
if (isRequestForLiveReloadWebsocket(request)) {
|
|
@@ -94,11 +95,22 @@ export class ProxyWorker implements DurableObject {
|
|
|
94
95
|
return new Response(null, { status: 204 });
|
|
95
96
|
}
|
|
96
97
|
|
|
98
|
+
/**
|
|
99
|
+
* Process requests that are being retried first, then process newer requests.
|
|
100
|
+
* Requests that are being retried are, by definition, older than requests which haven't been processed yet.
|
|
101
|
+
* We don't need to be more accurate than this re ordering, since the requests are being fired off synchronously.
|
|
102
|
+
*/
|
|
103
|
+
*getOrderedQueue() {
|
|
104
|
+
yield* this.requestRetryQueue;
|
|
105
|
+
yield* this.requestQueue;
|
|
106
|
+
}
|
|
107
|
+
|
|
97
108
|
processQueue() {
|
|
98
|
-
const { proxyData } = this; //
|
|
109
|
+
const { proxyData } = this; // store proxyData at the moment this function was called
|
|
99
110
|
if (proxyData === undefined) return;
|
|
100
111
|
|
|
101
|
-
for (const [request, deferredResponse] of this.
|
|
112
|
+
for (const [request, deferredResponse] of this.getOrderedQueue()) {
|
|
113
|
+
this.requestRetryQueue.delete(request);
|
|
102
114
|
this.requestQueue.delete(request);
|
|
103
115
|
|
|
104
116
|
const userWorkerUrl = new URL(request.url);
|
|
@@ -115,6 +127,8 @@ export class ProxyWorker implements DurableObject {
|
|
|
115
127
|
|
|
116
128
|
// merge proxyData headers with the request headers
|
|
117
129
|
for (const [key, value] of Object.entries(proxyData.headers ?? {})) {
|
|
130
|
+
if (value === undefined) continue;
|
|
131
|
+
|
|
118
132
|
if (key.toLowerCase() === "cookie") {
|
|
119
133
|
const existing = request.headers.get("cookie") ?? "";
|
|
120
134
|
headers.set("cookie", `${existing};${value}`);
|
|
@@ -123,8 +137,7 @@ export class ProxyWorker implements DurableObject {
|
|
|
123
137
|
}
|
|
124
138
|
}
|
|
125
139
|
|
|
126
|
-
// explicitly NOT await-ing this promise, we are in a loop and want to process the whole queue quickly
|
|
127
|
-
// if we decide to await, we should include a timeout (~100ms) in case the user worker has long-running/parellel requests
|
|
140
|
+
// explicitly NOT await-ing this promise, we are in a loop and want to process the whole queue quickly + synchronously
|
|
128
141
|
void fetch(userWorkerUrl, new Request(request, { headers }))
|
|
129
142
|
.then((res) => {
|
|
130
143
|
if (isHtmlResponse(res)) {
|
|
@@ -137,17 +150,55 @@ export class ProxyWorker implements DurableObject {
|
|
|
137
150
|
// errors here are network errors or from response post-processing
|
|
138
151
|
// to catch only network errors, use the 2nd param of the fetch.then()
|
|
139
152
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
153
|
+
// we have crossed an async boundary, so proxyData may have changed
|
|
154
|
+
// if proxyData.userWorkerUrl has changed, it means there is a new downstream UserWorker
|
|
155
|
+
// and that this error is stale since it was for a request to the old UserWorker
|
|
156
|
+
// so here we construct a newUserWorkerUrl so we can compare it to the (old) userWorkerUrl
|
|
157
|
+
const newUserWorkerUrl =
|
|
158
|
+
this.proxyData && urlFromParts(this.proxyData.userWorkerUrl);
|
|
159
|
+
|
|
160
|
+
// only report errors if the downstream proxy has NOT changed
|
|
161
|
+
if (userWorkerUrl.href === newUserWorkerUrl?.href) {
|
|
162
|
+
void sendMessageToProxyController(this.env, {
|
|
163
|
+
type: "error",
|
|
164
|
+
error: {
|
|
165
|
+
name: error.name,
|
|
166
|
+
message: error.message,
|
|
167
|
+
stack: error.stack,
|
|
168
|
+
cause: error.cause,
|
|
169
|
+
},
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
deferredResponse.reject(error);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
// if the request can be retried (subset of idempotent requests which have no body), requeue it
|
|
176
|
+
else if (request.method === "GET" || request.method === "HEAD") {
|
|
177
|
+
this.requestRetryQueue.set(request, deferredResponse);
|
|
178
|
+
// we would only end up here if the downstream UserWorker is chang*ing*
|
|
179
|
+
// i.e. we are in a `pause`d state and expecting a `play` message soon
|
|
180
|
+
// this request will be processed (retried) when the `play` message arrives
|
|
181
|
+
// for that reason, we do not need to call `this.processQueue` here
|
|
182
|
+
// (but, also, it can't hurt to call it since it bails when
|
|
183
|
+
// in a `pause`d state i.e. `this.proxyData` is undefined)
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
// if the request cannot be retried, respond with 503 Service Unavailable
|
|
187
|
+
// important to note, this is not an (unexpected) error -- it is an acceptable flow of local development
|
|
188
|
+
// it would be incorrect to retry non-idempotent requests
|
|
189
|
+
// and would require cloning all body streams to avoid stream reuse (which is inefficient but not out of the question in the future)
|
|
190
|
+
// this is a good enough UX for now since it solves the most common GET use-case
|
|
191
|
+
else {
|
|
192
|
+
deferredResponse.resolve(
|
|
193
|
+
new Response(
|
|
194
|
+
"Your worker restarted mid-request. Please try sending the request again. Only GET or HEAD requests are retried automatically.",
|
|
195
|
+
{
|
|
196
|
+
status: 503,
|
|
197
|
+
headers: { "Retry-After": "0" },
|
|
198
|
+
}
|
|
199
|
+
)
|
|
200
|
+
);
|
|
201
|
+
}
|
|
151
202
|
});
|
|
152
203
|
}
|
|
153
204
|
}
|
|
@@ -166,25 +217,14 @@ function isRequestForLiveReloadWebsocket(req: Request): boolean {
|
|
|
166
217
|
return isWebSocketUpgrade && websocketProtocol === LIVE_RELOAD_PROTOCOL;
|
|
167
218
|
}
|
|
168
219
|
|
|
169
|
-
|
|
220
|
+
function sendMessageToProxyController(
|
|
170
221
|
env: Env,
|
|
171
|
-
message: ProxyWorkerOutgoingRequestBody
|
|
172
|
-
retries = 3
|
|
222
|
+
message: ProxyWorkerOutgoingRequestBody
|
|
173
223
|
) {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
});
|
|
179
|
-
} catch (cause) {
|
|
180
|
-
if (retries > 0) {
|
|
181
|
-
return sendMessageToProxyController(env, message, retries - 1);
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
// no point sending an error message if we can't send this message
|
|
185
|
-
|
|
186
|
-
throw cause;
|
|
187
|
-
}
|
|
224
|
+
return env.PROXY_CONTROLLER.fetch("http://dummy", {
|
|
225
|
+
method: "POST",
|
|
226
|
+
body: JSON.stringify(message),
|
|
227
|
+
});
|
|
188
228
|
}
|
|
189
229
|
|
|
190
230
|
function insertLiveReloadScript(
|
|
@@ -216,6 +216,10 @@ var InspectorProxyWorker = class {
|
|
|
216
216
|
);
|
|
217
217
|
runtimeWebSocketUrl.protocol = this.proxyData.userWorkerUrl.protocol;
|
|
218
218
|
this.sendDebugLog("NEW RUNTIME WEBSOCKET", runtimeWebSocketUrl);
|
|
219
|
+
this.sendDevToolsMessage({
|
|
220
|
+
method: "Runtime.executionContextsCleared",
|
|
221
|
+
params: void 0
|
|
222
|
+
});
|
|
219
223
|
const upgrade = await fetch(runtimeWebSocketUrl, {
|
|
220
224
|
headers: {
|
|
221
225
|
...this.proxyData.headers,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../templates/startDevWorker/InspectorProxyWorker.ts", "../src/api/startDevWorker/events.ts", "../src/api/startDevWorker/utils.ts"],
|
|
4
|
-
"mappings": ";AAAA,OAAOA,aAAY;;;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["assert", "assert"]
|
|
6
6
|
}
|
|
@@ -15,6 +15,11 @@ function createDeferred(previousDeferred) {
|
|
|
15
15
|
reject
|
|
16
16
|
};
|
|
17
17
|
}
|
|
18
|
+
function urlFromParts(parts, base = "http://localhost") {
|
|
19
|
+
const url = new URL(base);
|
|
20
|
+
Object.assign(url, parts);
|
|
21
|
+
return url;
|
|
22
|
+
}
|
|
18
23
|
|
|
19
24
|
// templates/startDevWorker/ProxyWorker.ts
|
|
20
25
|
var LIVE_RELOAD_PROTOCOL = "WRANGLER_PROXYWORKER_LIVE_RELOAD_PROTOCOL";
|
|
@@ -32,6 +37,7 @@ var ProxyWorker = class {
|
|
|
32
37
|
}
|
|
33
38
|
proxyData;
|
|
34
39
|
requestQueue = /* @__PURE__ */ new Map();
|
|
40
|
+
requestRetryQueue = /* @__PURE__ */ new Map();
|
|
35
41
|
fetch(request) {
|
|
36
42
|
if (isRequestForLiveReloadWebsocket(request)) {
|
|
37
43
|
return this.handleLiveReloadWebSocket(request);
|
|
@@ -68,11 +74,21 @@ var ProxyWorker = class {
|
|
|
68
74
|
}
|
|
69
75
|
return new Response(null, { status: 204 });
|
|
70
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* Process requests that are being retried first, then process newer requests.
|
|
79
|
+
* Requests that are being retried are, by definition, older than requests which haven't been processed yet.
|
|
80
|
+
* We don't need to be more accurate than this re ordering, since the requests are being fired off synchronously.
|
|
81
|
+
*/
|
|
82
|
+
*getOrderedQueue() {
|
|
83
|
+
yield* this.requestRetryQueue;
|
|
84
|
+
yield* this.requestQueue;
|
|
85
|
+
}
|
|
71
86
|
processQueue() {
|
|
72
87
|
const { proxyData } = this;
|
|
73
88
|
if (proxyData === void 0)
|
|
74
89
|
return;
|
|
75
|
-
for (const [request, deferredResponse] of this.
|
|
90
|
+
for (const [request, deferredResponse] of this.getOrderedQueue()) {
|
|
91
|
+
this.requestRetryQueue.delete(request);
|
|
76
92
|
this.requestQueue.delete(request);
|
|
77
93
|
const userWorkerUrl = new URL(request.url);
|
|
78
94
|
const headers = new Headers(request.headers);
|
|
@@ -82,6 +98,8 @@ var ProxyWorker = class {
|
|
|
82
98
|
headers.set("MF-Original-URL", innerUrl.href);
|
|
83
99
|
headers.set("MF-Disable-Pretty-Error", "true");
|
|
84
100
|
for (const [key, value] of Object.entries(proxyData.headers ?? {})) {
|
|
101
|
+
if (value === void 0)
|
|
102
|
+
continue;
|
|
85
103
|
if (key.toLowerCase() === "cookie") {
|
|
86
104
|
const existing = request.headers.get("cookie") ?? "";
|
|
87
105
|
headers.set("cookie", `${existing};${value}`);
|
|
@@ -95,16 +113,31 @@ var ProxyWorker = class {
|
|
|
95
113
|
}
|
|
96
114
|
deferredResponse.resolve(res);
|
|
97
115
|
}).catch((error) => {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
116
|
+
const newUserWorkerUrl = this.proxyData && urlFromParts(this.proxyData.userWorkerUrl);
|
|
117
|
+
if (userWorkerUrl.href === newUserWorkerUrl?.href) {
|
|
118
|
+
void sendMessageToProxyController(this.env, {
|
|
119
|
+
type: "error",
|
|
120
|
+
error: {
|
|
121
|
+
name: error.name,
|
|
122
|
+
message: error.message,
|
|
123
|
+
stack: error.stack,
|
|
124
|
+
cause: error.cause
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
deferredResponse.reject(error);
|
|
128
|
+
} else if (request.method === "GET" || request.method === "HEAD") {
|
|
129
|
+
this.requestRetryQueue.set(request, deferredResponse);
|
|
130
|
+
} else {
|
|
131
|
+
deferredResponse.resolve(
|
|
132
|
+
new Response(
|
|
133
|
+
"Your worker restarted mid-request. Please try sending the request again. Only GET or HEAD requests are retried automatically.",
|
|
134
|
+
{
|
|
135
|
+
status: 503,
|
|
136
|
+
headers: { "Retry-After": "0" }
|
|
137
|
+
}
|
|
138
|
+
)
|
|
139
|
+
);
|
|
140
|
+
}
|
|
108
141
|
});
|
|
109
142
|
}
|
|
110
143
|
}
|
|
@@ -120,18 +153,11 @@ function isRequestForLiveReloadWebsocket(req) {
|
|
|
120
153
|
const isWebSocketUpgrade = req.headers.get("Upgrade") === "websocket";
|
|
121
154
|
return isWebSocketUpgrade && websocketProtocol === LIVE_RELOAD_PROTOCOL;
|
|
122
155
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
});
|
|
129
|
-
} catch (cause) {
|
|
130
|
-
if (retries > 0) {
|
|
131
|
-
return sendMessageToProxyController(env, message, retries - 1);
|
|
132
|
-
}
|
|
133
|
-
throw cause;
|
|
134
|
-
}
|
|
156
|
+
function sendMessageToProxyController(env, message) {
|
|
157
|
+
return env.PROXY_CONTROLLER.fetch("http://dummy", {
|
|
158
|
+
method: "POST",
|
|
159
|
+
body: JSON.stringify(message)
|
|
160
|
+
});
|
|
135
161
|
}
|
|
136
162
|
function insertLiveReloadScript(request, response, env, proxyData) {
|
|
137
163
|
const htmlRewriter = new HTMLRewriter();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/api/startDevWorker/utils.ts", "../templates/startDevWorker/ProxyWorker.ts"],
|
|
4
|
-
"mappings": ";AAAA,OAAO,YAAY;AASZ,SAAS,eACf,kBACqB;AACrB,MAAI,SAAS;AACb,QAAM,aAAa,IAAI,QAAW,CAAC,UAAU,YAAY;AACxD,cAAU;AACV,aAAS;AAAA,EACV,CAAC;AACD,SAAO,OAAO;AACd,SAAO,MAAM;AAIb,oBAAkB,QAAQ,UAAU;AAEpC,SAAO;AAAA,IACN,SAAS;AAAA,IACT;AAAA,IACA;AAAA,EACD;AACD;;;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|