wrangler 0.0.0-e9c2b04a → 0.0.0-e9f8a2fa

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.
@@ -1,13 +1,13 @@
1
- import assert from "node:assert";
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;
@@ -33,10 +33,14 @@ export default {
33
33
  } as ExportedHandler<Env, unknown, ProxyWorkerIncomingRequestBody>;
34
34
 
35
35
  export class ProxyWorker implements DurableObject {
36
- constructor(readonly state: DurableObjectState, readonly env: Env) {}
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>>();
43
+ requestRetryQueue = new Map<Request, DeferredPromise<Response>>();
40
44
 
41
45
  fetch(request: Request) {
42
46
  if (isRequestForLiveReloadWebsocket(request)) {
@@ -94,17 +98,29 @@ export class ProxyWorker implements DurableObject {
94
98
  return new Response(null, { status: 204 });
95
99
  }
96
100
 
101
+ /**
102
+ * Process requests that are being retried first, then process newer requests.
103
+ * Requests that are being retried are, by definition, older than requests which haven't been processed yet.
104
+ * We don't need to be more accurate than this re ordering, since the requests are being fired off synchronously.
105
+ */
106
+ *getOrderedQueue() {
107
+ yield* this.requestRetryQueue;
108
+ yield* this.requestQueue;
109
+ }
110
+
97
111
  processQueue() {
98
- const { proxyData } = this; // destructuring is required to keep the type-narrowing (not undefined) in the .then callback and to ensure the same proxyData is used throughout each request
112
+ const { proxyData } = this; // store proxyData at the moment this function was called
99
113
  if (proxyData === undefined) return;
100
114
 
101
- for (const [request, deferredResponse] of this.requestQueue) {
115
+ for (const [request, deferredResponse] of this.getOrderedQueue()) {
116
+ this.requestRetryQueue.delete(request);
102
117
  this.requestQueue.delete(request);
103
118
 
104
- const userWorkerUrl = new URL(request.url);
119
+ const outerUrl = new URL(request.url);
105
120
  const headers = new Headers(request.headers);
106
121
 
107
122
  // override url parts for proxying
123
+ const userWorkerUrl = new URL(request.url);
108
124
  Object.assign(userWorkerUrl, proxyData.userWorkerUrl);
109
125
 
110
126
  // set request.url in the UserWorker
@@ -113,8 +129,17 @@ export class ProxyWorker implements DurableObject {
113
129
  headers.set("MF-Original-URL", innerUrl.href);
114
130
  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
115
131
 
132
+ // Preserve client `Accept-Encoding`, rather than using Worker's default
133
+ // of `Accept-Encoding: br, gzip`
134
+ const encoding = request.cf?.clientAcceptEncoding;
135
+ if (encoding !== undefined) headers.set("Accept-Encoding", encoding);
136
+
137
+ rewriteUrlRelatedHeaders(headers, outerUrl, innerUrl);
138
+
116
139
  // merge proxyData headers with the request headers
117
140
  for (const [key, value] of Object.entries(proxyData.headers ?? {})) {
141
+ if (value === undefined) continue;
142
+
118
143
  if (key.toLowerCase() === "cookie") {
119
144
  const existing = request.headers.get("cookie") ?? "";
120
145
  headers.set("cookie", `${existing};${value}`);
@@ -123,10 +148,12 @@ export class ProxyWorker implements DurableObject {
123
148
  }
124
149
  }
125
150
 
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
151
+ // explicitly NOT await-ing this promise, we are in a loop and want to process the whole queue quickly + synchronously
128
152
  void fetch(userWorkerUrl, new Request(request, { headers }))
129
153
  .then((res) => {
154
+ res = new Response(res.body, res);
155
+ rewriteUrlRelatedHeaders(res.headers, innerUrl, outerUrl);
156
+
130
157
  if (isHtmlResponse(res)) {
131
158
  res = insertLiveReloadScript(request, res, this.env, proxyData);
132
159
  }
@@ -137,17 +164,55 @@ export class ProxyWorker implements DurableObject {
137
164
  // errors here are network errors or from response post-processing
138
165
  // to catch only network errors, use the 2nd param of the fetch.then()
139
166
 
140
- void sendMessageToProxyController(this.env, {
141
- type: "error",
142
- error: {
143
- name: error.name,
144
- message: error.message,
145
- stack: error.stack,
146
- cause: error.cause,
147
- },
148
- });
149
-
150
- deferredResponse.reject(error);
167
+ // we have crossed an async boundary, so proxyData may have changed
168
+ // if proxyData.userWorkerUrl has changed, it means there is a new downstream UserWorker
169
+ // and that this error is stale since it was for a request to the old UserWorker
170
+ // so here we construct a newUserWorkerUrl so we can compare it to the (old) userWorkerUrl
171
+ const newUserWorkerUrl =
172
+ this.proxyData && urlFromParts(this.proxyData.userWorkerUrl);
173
+
174
+ // only report errors if the downstream proxy has NOT changed
175
+ if (userWorkerUrl.href === newUserWorkerUrl?.href) {
176
+ void sendMessageToProxyController(this.env, {
177
+ type: "error",
178
+ error: {
179
+ name: error.name,
180
+ message: error.message,
181
+ stack: error.stack,
182
+ cause: error.cause,
183
+ },
184
+ });
185
+
186
+ deferredResponse.reject(error);
187
+ }
188
+
189
+ // if the request can be retried (subset of idempotent requests which have no body), requeue it
190
+ else if (request.method === "GET" || request.method === "HEAD") {
191
+ this.requestRetryQueue.set(request, deferredResponse);
192
+ // we would only end up here if the downstream UserWorker is chang*ing*
193
+ // i.e. we are in a `pause`d state and expecting a `play` message soon
194
+ // this request will be processed (retried) when the `play` message arrives
195
+ // for that reason, we do not need to call `this.processQueue` here
196
+ // (but, also, it can't hurt to call it since it bails when
197
+ // in a `pause`d state i.e. `this.proxyData` is undefined)
198
+ }
199
+
200
+ // if the request cannot be retried, respond with 503 Service Unavailable
201
+ // important to note, this is not an (unexpected) error -- it is an acceptable flow of local development
202
+ // it would be incorrect to retry non-idempotent requests
203
+ // and would require cloning all body streams to avoid stream reuse (which is inefficient but not out of the question in the future)
204
+ // this is a good enough UX for now since it solves the most common GET use-case
205
+ else {
206
+ deferredResponse.resolve(
207
+ new Response(
208
+ "Your worker restarted mid-request. Please try sending the request again. Only GET or HEAD requests are retried automatically.",
209
+ {
210
+ status: 503,
211
+ headers: { "Retry-After": "0" },
212
+ }
213
+ )
214
+ );
215
+ }
151
216
  });
152
217
  }
153
218
  }
@@ -166,25 +231,14 @@ function isRequestForLiveReloadWebsocket(req: Request): boolean {
166
231
  return isWebSocketUpgrade && websocketProtocol === LIVE_RELOAD_PROTOCOL;
167
232
  }
168
233
 
169
- async function sendMessageToProxyController(
234
+ function sendMessageToProxyController(
170
235
  env: Env,
171
- message: ProxyWorkerOutgoingRequestBody,
172
- retries = 3
236
+ message: ProxyWorkerOutgoingRequestBody
173
237
  ) {
174
- try {
175
- await env.PROXY_CONTROLLER.fetch("http://dummy", {
176
- method: "POST",
177
- body: JSON.stringify(message),
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
- }
238
+ return env.PROXY_CONTROLLER.fetch("http://dummy", {
239
+ method: "POST",
240
+ body: JSON.stringify(message),
241
+ });
188
242
  }
189
243
 
190
244
  function insertLiveReloadScript(
@@ -250,3 +304,31 @@ function insertLiveReloadScript(
250
304
 
251
305
  return htmlRewriter.transform(response);
252
306
  }
307
+
308
+ /**
309
+ * Rewrite references to URLs in request/response headers.
310
+ *
311
+ * This function is used to map the URLs in headers like Origin and Access-Control-Allow-Origin
312
+ * so that this proxy is transparent to the Client Browser and User Worker.
313
+ */
314
+ function rewriteUrlRelatedHeaders(headers: Headers, from: URL, to: URL) {
315
+ const setCookie = headers.getAll("Set-Cookie");
316
+ headers.delete("Set-Cookie");
317
+ headers.forEach((value, key) => {
318
+ if (typeof value === "string" && value.includes(from.host)) {
319
+ headers.set(
320
+ key,
321
+ value.replaceAll(from.origin, to.origin).replaceAll(from.host, to.host)
322
+ );
323
+ }
324
+ });
325
+ for (const cookie of setCookie) {
326
+ headers.append(
327
+ "Set-Cookie",
328
+ cookie.replace(
329
+ new RegExp(`Domain=${from.hostname}($|;|,)`),
330
+ `Domain=${to.hostname}$1`
331
+ )
332
+ );
333
+ }
334
+ }
@@ -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": "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",
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,20 +74,37 @@ 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.requestQueue) {
90
+ for (const [request, deferredResponse] of this.getOrderedQueue()) {
91
+ this.requestRetryQueue.delete(request);
76
92
  this.requestQueue.delete(request);
77
- const userWorkerUrl = new URL(request.url);
93
+ const outerUrl = new URL(request.url);
78
94
  const headers = new Headers(request.headers);
95
+ const userWorkerUrl = new URL(request.url);
79
96
  Object.assign(userWorkerUrl, proxyData.userWorkerUrl);
80
97
  const innerUrl = new URL(request.url);
81
98
  Object.assign(innerUrl, proxyData.userWorkerInnerUrlOverrides);
82
99
  headers.set("MF-Original-URL", innerUrl.href);
83
100
  headers.set("MF-Disable-Pretty-Error", "true");
101
+ const encoding = request.cf?.clientAcceptEncoding;
102
+ if (encoding !== void 0)
103
+ headers.set("Accept-Encoding", encoding);
104
+ rewriteUrlRelatedHeaders(headers, outerUrl, innerUrl);
84
105
  for (const [key, value] of Object.entries(proxyData.headers ?? {})) {
106
+ if (value === void 0)
107
+ continue;
85
108
  if (key.toLowerCase() === "cookie") {
86
109
  const existing = request.headers.get("cookie") ?? "";
87
110
  headers.set("cookie", `${existing};${value}`);
@@ -90,21 +113,38 @@ var ProxyWorker = class {
90
113
  }
91
114
  }
92
115
  void fetch(userWorkerUrl, new Request(request, { headers })).then((res) => {
116
+ res = new Response(res.body, res);
117
+ rewriteUrlRelatedHeaders(res.headers, innerUrl, outerUrl);
93
118
  if (isHtmlResponse(res)) {
94
119
  res = insertLiveReloadScript(request, res, this.env, proxyData);
95
120
  }
96
121
  deferredResponse.resolve(res);
97
122
  }).catch((error) => {
98
- void sendMessageToProxyController(this.env, {
99
- type: "error",
100
- error: {
101
- name: error.name,
102
- message: error.message,
103
- stack: error.stack,
104
- cause: error.cause
105
- }
106
- });
107
- deferredResponse.reject(error);
123
+ const newUserWorkerUrl = this.proxyData && urlFromParts(this.proxyData.userWorkerUrl);
124
+ if (userWorkerUrl.href === newUserWorkerUrl?.href) {
125
+ void sendMessageToProxyController(this.env, {
126
+ type: "error",
127
+ error: {
128
+ name: error.name,
129
+ message: error.message,
130
+ stack: error.stack,
131
+ cause: error.cause
132
+ }
133
+ });
134
+ deferredResponse.reject(error);
135
+ } else if (request.method === "GET" || request.method === "HEAD") {
136
+ this.requestRetryQueue.set(request, deferredResponse);
137
+ } else {
138
+ deferredResponse.resolve(
139
+ new Response(
140
+ "Your worker restarted mid-request. Please try sending the request again. Only GET or HEAD requests are retried automatically.",
141
+ {
142
+ status: 503,
143
+ headers: { "Retry-After": "0" }
144
+ }
145
+ )
146
+ );
147
+ }
108
148
  });
109
149
  }
110
150
  }
@@ -120,18 +160,11 @@ function isRequestForLiveReloadWebsocket(req) {
120
160
  const isWebSocketUpgrade = req.headers.get("Upgrade") === "websocket";
121
161
  return isWebSocketUpgrade && websocketProtocol === LIVE_RELOAD_PROTOCOL;
122
162
  }
123
- async function sendMessageToProxyController(env, message, retries = 3) {
124
- try {
125
- await env.PROXY_CONTROLLER.fetch("http://dummy", {
126
- method: "POST",
127
- body: JSON.stringify(message)
128
- });
129
- } catch (cause) {
130
- if (retries > 0) {
131
- return sendMessageToProxyController(env, message, retries - 1);
132
- }
133
- throw cause;
134
- }
163
+ function sendMessageToProxyController(env, message) {
164
+ return env.PROXY_CONTROLLER.fetch("http://dummy", {
165
+ method: "POST",
166
+ body: JSON.stringify(message)
167
+ });
135
168
  }
136
169
  function insertLiveReloadScript(request, response, env, proxyData) {
137
170
  const htmlRewriter = new HTMLRewriter();
@@ -179,6 +212,27 @@ function insertLiveReloadScript(request, response, env, proxyData) {
179
212
  });
180
213
  return htmlRewriter.transform(response);
181
214
  }
215
+ function rewriteUrlRelatedHeaders(headers, from, to) {
216
+ const setCookie = headers.getAll("Set-Cookie");
217
+ headers.delete("Set-Cookie");
218
+ headers.forEach((value, key) => {
219
+ if (typeof value === "string" && value.includes(from.host)) {
220
+ headers.set(
221
+ key,
222
+ value.replaceAll(from.origin, to.origin).replaceAll(from.host, to.host)
223
+ );
224
+ }
225
+ });
226
+ for (const cookie of setCookie) {
227
+ headers.append(
228
+ "Set-Cookie",
229
+ cookie.replace(
230
+ new RegExp(`Domain=${from.hostname}($|;|,)`),
231
+ `Domain=${to.hostname}$1`
232
+ )
233
+ );
234
+ }
235
+ }
182
236
  export {
183
237
  ProxyWorker,
184
238
  ProxyWorker_default as default
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/api/startDevWorker/utils.ts", "../templates/startDevWorker/ProxyWorker.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }