wrangler 0.0.0-e7a0cd5b → 0.0.0-e7cf0caa

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.
Files changed (237) hide show
  1. package/README.md +3 -3
  2. package/bin/wrangler.js +30 -10
  3. package/miniflare-dist/index.mjs +126 -74
  4. package/package.json +27 -19
  5. package/src/__tests__/api-dev.test.ts +65 -36
  6. package/src/__tests__/api-devregistry.test.ts +121 -0
  7. package/src/__tests__/api.test.ts +27 -5
  8. package/src/__tests__/configuration.test.ts +567 -86
  9. package/src/__tests__/d1/d1.test.ts +82 -0
  10. package/src/__tests__/d1/execute.test.ts +66 -0
  11. package/src/__tests__/d1/migrate.test.ts +157 -0
  12. package/src/__tests__/d1/splitter.test.ts +255 -0
  13. package/src/__tests__/delete.test.ts +91 -49
  14. package/src/__tests__/deployments.test.ts +330 -56
  15. package/src/__tests__/dev.test.tsx +198 -90
  16. package/src/__tests__/generate.test.ts +12 -10
  17. package/src/__tests__/guess-worker-format.test.ts +35 -0
  18. package/src/__tests__/helpers/end-event-loop.ts +6 -0
  19. package/src/__tests__/helpers/mock-auth-domain.ts +20 -0
  20. package/src/__tests__/helpers/mock-console.ts +6 -0
  21. package/src/__tests__/helpers/mock-dialogs.ts +71 -85
  22. package/src/__tests__/helpers/mock-get-pages-upload-token.ts +25 -0
  23. package/src/__tests__/helpers/mock-get-zone-from-host.ts +8 -5
  24. package/src/__tests__/helpers/mock-known-routes.ts +7 -2
  25. package/src/__tests__/helpers/mock-kv.ts +29 -16
  26. package/src/__tests__/helpers/mock-oauth-flow.ts +103 -92
  27. package/src/__tests__/helpers/mock-process.ts +8 -13
  28. package/src/__tests__/helpers/mock-set-timeout.ts +16 -0
  29. package/src/__tests__/helpers/msw/blob-worker.cjs +19 -0
  30. package/src/__tests__/helpers/msw/handlers/deployments.ts +128 -27
  31. package/src/__tests__/helpers/msw/handlers/namespaces.ts +18 -41
  32. package/src/__tests__/helpers/msw/handlers/oauth.ts +13 -18
  33. package/src/__tests__/helpers/msw/handlers/r2.ts +14 -34
  34. package/src/__tests__/helpers/msw/handlers/script.ts +9 -28
  35. package/src/__tests__/helpers/msw/handlers/user.ts +13 -24
  36. package/src/__tests__/helpers/msw/handlers/zones.ts +6 -8
  37. package/src/__tests__/helpers/msw/index.ts +32 -1
  38. package/src/__tests__/helpers/msw/read-file-sync.js +61 -0
  39. package/src/__tests__/helpers/string-dynamic-values-matcher.ts +28 -0
  40. package/src/__tests__/helpers/worker-scripts/parent-worker.js +4 -1
  41. package/src/__tests__/index.test.ts +90 -72
  42. package/src/__tests__/init.test.ts +927 -631
  43. package/src/__tests__/jest.setup.ts +19 -42
  44. package/src/__tests__/kv.test.ts +355 -231
  45. package/src/__tests__/logger.test.ts +68 -2
  46. package/src/__tests__/logout.test.ts +47 -0
  47. package/src/__tests__/metrics.test.ts +94 -51
  48. package/src/__tests__/middleware.scheduled.test.ts +42 -32
  49. package/src/__tests__/middleware.test.ts +212 -122
  50. package/src/__tests__/mtls-certificates.test.ts +588 -0
  51. package/src/__tests__/pages/deployment-list.test.ts +80 -0
  52. package/src/__tests__/pages/functions-build.test.ts +452 -0
  53. package/src/__tests__/pages/pages.test.ts +81 -0
  54. package/src/__tests__/pages/project-create.test.ts +63 -0
  55. package/src/__tests__/pages/project-list.test.ts +110 -0
  56. package/src/__tests__/pages/project-upload.test.ts +500 -0
  57. package/src/__tests__/pages/publish.test.ts +2864 -0
  58. package/src/__tests__/pages-deployment-tail.test.ts +955 -0
  59. package/src/__tests__/parse.test.ts +106 -0
  60. package/src/__tests__/publish.test.ts +1615 -852
  61. package/src/__tests__/pubsub.test.ts +226 -100
  62. package/src/__tests__/queues.test.ts +238 -77
  63. package/src/__tests__/r2.test.ts +55 -57
  64. package/src/__tests__/secret.test.ts +179 -130
  65. package/src/__tests__/tail.test.ts +267 -109
  66. package/src/__tests__/test-old-node-version.js +3 -3
  67. package/src/__tests__/traverse-module-graph.test.ts +220 -0
  68. package/src/__tests__/tsconfig-sanity.ts +12 -0
  69. package/src/__tests__/tsconfig.json +8 -0
  70. package/src/__tests__/tsconfig.tsbuildinfo +1 -0
  71. package/src/__tests__/type-generation.test.ts +43 -26
  72. package/src/__tests__/user.test.ts +35 -72
  73. package/src/__tests__/whoami.test.tsx +8 -114
  74. package/src/__tests__/worker-namespace.test.ts +83 -69
  75. package/src/api/dev.ts +168 -60
  76. package/src/api/index.ts +10 -1
  77. package/src/api/mtls-certificate.ts +148 -0
  78. package/src/api/pages/create-worker-bundle-contents.ts +76 -0
  79. package/src/api/pages/index.ts +5 -0
  80. package/src/api/pages/publish.tsx +355 -0
  81. package/src/bundle.ts +263 -140
  82. package/src/cfetch/index.ts +0 -2
  83. package/src/cfetch/internal.ts +16 -21
  84. package/src/cli.ts +4 -4
  85. package/src/config/config.ts +14 -7
  86. package/src/config/environment.ts +79 -24
  87. package/src/config/index.ts +99 -38
  88. package/src/config/validation-helpers.ts +1 -1
  89. package/src/config/validation.ts +248 -19
  90. package/src/create-worker-preview.ts +19 -8
  91. package/src/create-worker-upload-form.ts +60 -22
  92. package/src/d1/backups.tsx +43 -42
  93. package/src/d1/constants.ts +2 -0
  94. package/src/d1/create.tsx +44 -30
  95. package/src/d1/{delete.tsx → delete.ts} +11 -14
  96. package/src/d1/execute.tsx +209 -151
  97. package/src/d1/index.ts +31 -7
  98. package/src/d1/list.tsx +22 -10
  99. package/src/d1/migrations/apply.tsx +212 -0
  100. package/src/d1/migrations/create.tsx +79 -0
  101. package/src/d1/migrations/helpers.ts +172 -0
  102. package/src/d1/migrations/index.ts +3 -0
  103. package/src/d1/migrations/list.tsx +95 -0
  104. package/src/d1/migrations/options.ts +23 -0
  105. package/src/d1/options.ts +12 -2
  106. package/src/d1/splitter.ts +161 -0
  107. package/src/d1/{types.tsx → types.ts} +11 -0
  108. package/src/d1/utils.ts +12 -2
  109. package/src/delete.ts +8 -16
  110. package/src/deployments.ts +340 -46
  111. package/src/deprecated/index.ts +8 -302
  112. package/src/dev/dev.tsx +57 -44
  113. package/src/dev/local.tsx +294 -91
  114. package/src/dev/remote.tsx +32 -3
  115. package/src/dev/start-server.ts +89 -68
  116. package/src/dev/use-esbuild.ts +17 -18
  117. package/src/dev/validate-dev-props.ts +9 -0
  118. package/src/{dev-registry.tsx → dev-registry.ts} +2 -1
  119. package/src/dev.tsx +178 -118
  120. package/src/dialogs.ts +136 -0
  121. package/src/dispatch-namespace.ts +21 -17
  122. package/src/docs/index.ts +97 -0
  123. package/src/entry.ts +19 -11
  124. package/src/environment-variables/factory.ts +88 -0
  125. package/src/environment-variables/misc-variables.ts +30 -0
  126. package/src/generate/index.ts +298 -0
  127. package/src/git-client.ts +15 -4
  128. package/src/{index.tsx → index.ts} +137 -63
  129. package/src/init.ts +249 -187
  130. package/src/inspect.ts +16 -1
  131. package/src/jest.d.ts +4 -0
  132. package/src/kv/index.ts +15 -17
  133. package/src/logger.ts +32 -5
  134. package/src/metrics/metrics-config.ts +3 -3
  135. package/src/metrics/send-event.ts +6 -1
  136. package/src/miniflare-cli/assets.ts +64 -28
  137. package/src/miniflare-cli/index.ts +4 -7
  138. package/src/miniflare-cli/tsconfig.json +9 -0
  139. package/src/miniflare-cli/tsconfig.tsbuildinfo +1 -0
  140. package/src/miniflare-cli/types.ts +11 -0
  141. package/src/module-collection.ts +91 -25
  142. package/src/mtls-certificate/cli.ts +155 -0
  143. package/src/pages/build.ts +410 -0
  144. package/src/pages/buildFunctions.ts +140 -0
  145. package/src/pages/deployment-tails.ts +281 -0
  146. package/src/pages/deployments.tsx +11 -33
  147. package/src/pages/{dev.tsx → dev.ts} +147 -124
  148. package/src/pages/errors.ts +1 -0
  149. package/src/pages/functions/buildPlugin.ts +72 -69
  150. package/src/pages/functions/buildWorker.ts +249 -114
  151. package/src/pages/functions/tsconfig.json +8 -0
  152. package/src/pages/functions/tsconfig.tsbuildinfo +1 -0
  153. package/src/pages/{functions.tsx → functions.ts} +8 -4
  154. package/src/pages/{index.tsx → index.ts} +11 -3
  155. package/src/pages/projects.tsx +12 -22
  156. package/src/pages/prompt-select-project.tsx +31 -0
  157. package/src/pages/publish.tsx +45 -214
  158. package/src/pages/types.ts +6 -9
  159. package/src/pages/upload.tsx +58 -14
  160. package/src/pages/utils.ts +14 -3
  161. package/src/parse.ts +23 -1
  162. package/src/paths.ts +1 -1
  163. package/src/proxy.ts +5 -0
  164. package/src/publish/index.ts +20 -16
  165. package/src/publish/publish.ts +72 -47
  166. package/src/pubsub/{pubsub-commands.tsx → pubsub-commands.ts} +19 -20
  167. package/src/queues/cli/commands/consumer/add.ts +24 -24
  168. package/src/queues/cli/commands/consumer/index.ts +3 -6
  169. package/src/queues/cli/commands/consumer/remove.ts +11 -18
  170. package/src/queues/cli/commands/create.ts +8 -8
  171. package/src/queues/cli/commands/delete.ts +8 -8
  172. package/src/queues/cli/commands/index.ts +6 -4
  173. package/src/queues/cli/commands/list.ts +8 -8
  174. package/src/queues/client.ts +1 -0
  175. package/src/queues/utils.ts +18 -0
  176. package/src/r2/constants.ts +4 -0
  177. package/src/r2/helpers.ts +1 -0
  178. package/src/r2/index.ts +40 -28
  179. package/src/secret/index.ts +14 -17
  180. package/src/{sites.tsx → sites.ts} +1 -1
  181. package/src/tail/createTail.ts +94 -3
  182. package/src/tail/filters.ts +1 -1
  183. package/src/tail/index.ts +8 -11
  184. package/src/tail/printing.ts +15 -0
  185. package/src/traverse-module-graph.ts +53 -0
  186. package/src/tsconfig-sanity.ts +16 -0
  187. package/src/type-generation.ts +79 -57
  188. package/src/user/access.ts +0 -1
  189. package/src/user/auth-variables.ts +113 -0
  190. package/src/user/choose-account.tsx +1 -31
  191. package/src/user/index.ts +0 -1
  192. package/src/user/{user.tsx → user.ts} +123 -82
  193. package/src/utils/render.ts +93 -0
  194. package/src/{whoami.tsx → whoami.ts} +37 -71
  195. package/src/worker.ts +35 -3
  196. package/src/yargs-types.ts +22 -5
  197. package/templates/__tests__/tsconfig-sanity.ts +12 -0
  198. package/templates/__tests__/tsconfig.json +8 -0
  199. package/templates/__tests__/tsconfig.tsbuildinfo +1 -0
  200. package/templates/checked-fetch.js +9 -3
  201. package/templates/d1-beta-facade.js +95 -25
  202. package/templates/facade.d.ts +14 -0
  203. package/templates/first-party-worker-module-facade.ts +4 -3
  204. package/templates/format-dev-errors.ts +8 -6
  205. package/templates/gitignore +1 -0
  206. package/templates/init-tests/test-jest-new-worker.js +3 -5
  207. package/templates/init-tests/test-vitest-new-worker.js +3 -5
  208. package/templates/init-tests/test-vitest-new-worker.ts +25 -0
  209. package/templates/middleware/loader-modules.ts +2 -2
  210. package/templates/middleware/loader-sw.ts +51 -31
  211. package/templates/middleware/middleware-miniflare3-json-error.ts +32 -0
  212. package/templates/new-worker.ts +3 -0
  213. package/templates/pages-dev-pipeline.ts +4 -1
  214. package/templates/pages-shim.ts +4 -1
  215. package/templates/pages-template-plugin.ts +19 -10
  216. package/templates/serve-static-assets.ts +17 -14
  217. package/templates/service-bindings-module-facade.js +1 -0
  218. package/templates/tsconfig-sanity.ts +11 -0
  219. package/templates/tsconfig.init.json +105 -0
  220. package/templates/tsconfig.json +5 -103
  221. package/templates/tsconfig.tsbuildinfo +1 -0
  222. package/wrangler-dist/cli.d.ts +826 -77
  223. package/wrangler-dist/cli.js +130734 -140838
  224. package/wrangler-dist/wasm-sync.wasm +0 -0
  225. package/src/__tests__/api-devregistry.test.js +0 -57
  226. package/src/__tests__/d1.test.ts +0 -72
  227. package/src/__tests__/dialogs.test.tsx +0 -40
  228. package/src/__tests__/helpers/mock-cfetch.ts +0 -333
  229. package/src/__tests__/pages.test.ts +0 -2223
  230. package/src/dialogs.tsx +0 -163
  231. package/src/environment-variables.ts +0 -50
  232. package/src/pages/build.tsx +0 -238
  233. package/src/user/env-vars.ts +0 -46
  234. package/templates/experimental-local-cache-stubs.js +0 -27
  235. /package/src/{bundle-reporter.tsx → bundle-reporter.ts} +0 -0
  236. /package/src/dev/{get-local-persistence-path.tsx → get-local-persistence-path.ts} +0 -0
  237. /package/src/pages/{hash.tsx → hash.ts} +0 -0
@@ -27,11 +27,12 @@ describe("workers change behaviour with middleware with wrangler dev", () => {
27
27
  `;
28
28
  fs.writeFileSync("index.js", scriptContent);
29
29
 
30
- const worker = await unstable_dev(
31
- "index.js",
32
- {},
33
- { disableExperimentalWarning: true }
34
- );
30
+ const worker = await unstable_dev("index.js", {
31
+ experimental: {
32
+ disableExperimentalWarning: true,
33
+ disableDevRegistry: true,
34
+ },
35
+ });
35
36
 
36
37
  const resp = await worker.fetch();
37
38
  let text;
@@ -50,18 +51,19 @@ describe("workers change behaviour with middleware with wrangler dev", () => {
50
51
  export default {
51
52
  middleware: [middleware],
52
53
  scheduled(controller, env, ctx) {
53
- console.log("Scheduled worker called");
54
+ // Scheduled worker called
54
55
  }
55
56
  }
56
57
  `;
57
58
 
58
59
  fs.writeFileSync("index.js", scriptContent);
59
60
 
60
- const worker = await unstable_dev(
61
- "index.js",
62
- {},
63
- { disableExperimentalWarning: true }
64
- );
61
+ const worker = await unstable_dev("index.js", {
62
+ experimental: {
63
+ disableExperimentalWarning: true,
64
+ disableDevRegistry: true,
65
+ },
66
+ });
65
67
 
66
68
  const resp = await worker.fetch();
67
69
  let text;
@@ -90,11 +92,12 @@ describe("workers change behaviour with middleware with wrangler dev", () => {
90
92
 
91
93
  fs.writeFileSync("index.js", scriptContent);
92
94
 
93
- const worker = await unstable_dev(
94
- "index.js",
95
- {},
96
- { disableExperimentalWarning: true }
97
- );
95
+ const worker = await unstable_dev("index.js", {
96
+ experimental: {
97
+ disableExperimentalWarning: true,
98
+ disableDevRegistry: true,
99
+ },
100
+ });
98
101
 
99
102
  const resp = await worker.fetch();
100
103
  let text;
@@ -121,11 +124,12 @@ describe("workers change behaviour with middleware with wrangler dev", () => {
121
124
  `;
122
125
  fs.writeFileSync("index.js", scriptContent);
123
126
 
124
- const worker = await unstable_dev(
125
- "index.js",
126
- {},
127
- { disableExperimentalWarning: true }
128
- );
127
+ const worker = await unstable_dev("index.js", {
128
+ experimental: {
129
+ disableExperimentalWarning: true,
130
+ disableDevRegistry: true,
131
+ },
132
+ });
129
133
 
130
134
  const resp = await worker.fetch();
131
135
  let text;
@@ -150,11 +154,12 @@ describe("workers change behaviour with middleware with wrangler dev", () => {
150
154
  `;
151
155
  fs.writeFileSync("index.js", scriptContent);
152
156
 
153
- const worker = await unstable_dev(
154
- "index.js",
155
- {},
156
- { disableExperimentalWarning: true }
157
- );
157
+ const worker = await unstable_dev("index.js", {
158
+ experimental: {
159
+ disableExperimentalWarning: true,
160
+ disableDevRegistry: true,
161
+ },
162
+ });
158
163
 
159
164
  const resp = await worker.fetch();
160
165
  let text;
@@ -173,17 +178,18 @@ describe("workers change behaviour with middleware with wrangler dev", () => {
173
178
  addMiddleware(middleware);
174
179
 
175
180
  addEventListener("scheduled", (event) => {
176
- console.log("Scheduled worker called");
181
+ // Scheduled worker called
177
182
  });
178
183
  `;
179
184
 
180
185
  fs.writeFileSync("index.js", scriptContent);
181
186
 
182
- const worker = await unstable_dev(
183
- "index.js",
184
- {},
185
- { disableExperimentalWarning: true }
186
- );
187
+ const worker = await unstable_dev("index.js", {
188
+ experimental: {
189
+ disableExperimentalWarning: true,
190
+ disableDevRegistry: true,
191
+ },
192
+ });
187
193
 
188
194
  const resp = await worker.fetch();
189
195
  let text;
@@ -211,11 +217,12 @@ describe("workers change behaviour with middleware with wrangler dev", () => {
211
217
 
212
218
  fs.writeFileSync("index.js", scriptContent);
213
219
 
214
- const worker = await unstable_dev(
215
- "index.js",
216
- {},
217
- { disableExperimentalWarning: true }
218
- );
220
+ const worker = await unstable_dev("index.js", {
221
+ experimental: {
222
+ disableExperimentalWarning: true,
223
+ disableDevRegistry: true,
224
+ },
225
+ });
219
226
 
220
227
  const resp = await worker.fetch();
221
228
  let text;
@@ -242,11 +249,12 @@ describe("unchanged functionality when wrapping with middleware", () => {
242
249
  `;
243
250
  fs.writeFileSync("index.js", scriptContent);
244
251
 
245
- const worker = await unstable_dev(
246
- "index.js",
247
- {},
248
- { disableExperimentalWarning: true }
249
- );
252
+ const worker = await unstable_dev("index.js", {
253
+ experimental: {
254
+ disableExperimentalWarning: true,
255
+ disableDevRegistry: true,
256
+ },
257
+ });
250
258
 
251
259
  const resp = await worker.fetch();
252
260
  if (resp) {
@@ -267,11 +275,12 @@ describe("unchanged functionality when wrapping with middleware", () => {
267
275
  `;
268
276
  fs.writeFileSync("index.js", scriptContent);
269
277
 
270
- const worker = await unstable_dev(
271
- "index.js",
272
- {},
273
- { disableExperimentalWarning: true }
274
- );
278
+ const worker = await unstable_dev("index.js", {
279
+ experimental: {
280
+ disableExperimentalWarning: true,
281
+ disableDevRegistry: true,
282
+ },
283
+ });
275
284
 
276
285
  const resp = await worker.fetch();
277
286
  let text;
@@ -295,11 +304,12 @@ describe("unchanged functionality when wrapping with middleware", () => {
295
304
  `;
296
305
  fs.writeFileSync("index.js", scriptContent);
297
306
 
298
- const worker = await unstable_dev(
299
- "index.js",
300
- {},
301
- { disableExperimentalWarning: true }
302
- );
307
+ const worker = await unstable_dev("index.js", {
308
+ experimental: {
309
+ disableExperimentalWarning: true,
310
+ disableDevRegistry: true,
311
+ },
312
+ });
303
313
 
304
314
  const resp = await worker.fetch();
305
315
  if (resp) {
@@ -328,11 +338,12 @@ describe("unchanged functionality when wrapping with middleware", () => {
328
338
  `;
329
339
  fs.writeFileSync("index.js", scriptContent);
330
340
 
331
- const worker = await unstable_dev(
332
- "index.js",
333
- {},
334
- { disableExperimentalWarning: true }
335
- );
341
+ const worker = await unstable_dev("index.js", {
342
+ experimental: {
343
+ disableExperimentalWarning: true,
344
+ disableDevRegistry: true,
345
+ },
346
+ });
336
347
 
337
348
  const resp = await worker.fetch();
338
349
  let text;
@@ -356,11 +367,12 @@ describe("unchanged functionality when wrapping with middleware", () => {
356
367
  `;
357
368
  fs.writeFileSync("index.js", scriptContent);
358
369
 
359
- const worker = await unstable_dev(
360
- "index.js",
361
- {},
362
- { disableExperimentalWarning: true }
363
- );
370
+ const worker = await unstable_dev("index.js", {
371
+ experimental: {
372
+ disableExperimentalWarning: true,
373
+ disableDevRegistry: true,
374
+ },
375
+ });
364
376
 
365
377
  const resp = await worker.fetch();
366
378
  const status = resp?.status;
@@ -396,11 +408,12 @@ describe("unchanged functionality when wrapping with middleware", () => {
396
408
  `;
397
409
  fs.writeFileSync("index.js", scriptContent);
398
410
 
399
- const worker = await unstable_dev(
400
- "index.js",
401
- {},
402
- { disableExperimentalWarning: true }
403
- );
411
+ const worker = await unstable_dev("index.js", {
412
+ experimental: {
413
+ disableExperimentalWarning: true,
414
+ disableDevRegistry: true,
415
+ },
416
+ });
404
417
 
405
418
  const resp = await worker.fetch();
406
419
  let text;
@@ -419,11 +432,12 @@ describe("unchanged functionality when wrapping with middleware", () => {
419
432
  `;
420
433
  fs.writeFileSync("index.js", scriptContent);
421
434
 
422
- const worker = await unstable_dev(
423
- "index.js",
424
- {},
425
- { disableExperimentalWarning: true }
426
- );
435
+ const worker = await unstable_dev("index.js", {
436
+ experimental: {
437
+ disableExperimentalWarning: true,
438
+ disableDevRegistry: true,
439
+ },
440
+ });
427
441
 
428
442
  const resp = await worker.fetch();
429
443
  if (resp) {
@@ -443,11 +457,12 @@ describe("unchanged functionality when wrapping with middleware", () => {
443
457
  `;
444
458
  fs.writeFileSync("index.js", scriptContent);
445
459
 
446
- const worker = await unstable_dev(
447
- "index.js",
448
- {},
449
- { disableExperimentalWarning: true }
450
- );
460
+ const worker = await unstable_dev("index.js", {
461
+ experimental: {
462
+ disableExperimentalWarning: true,
463
+ disableDevRegistry: true,
464
+ },
465
+ });
451
466
 
452
467
  const resp = await worker.fetch();
453
468
  let text;
@@ -470,11 +485,12 @@ describe("unchanged functionality when wrapping with middleware", () => {
470
485
  `;
471
486
  fs.writeFileSync("index.js", scriptContent);
472
487
 
473
- const worker = await unstable_dev(
474
- "index.js",
475
- {},
476
- { disableExperimentalWarning: true }
477
- );
488
+ const worker = await unstable_dev("index.js", {
489
+ experimental: {
490
+ disableExperimentalWarning: true,
491
+ disableDevRegistry: true,
492
+ },
493
+ });
478
494
 
479
495
  const resp = await worker.fetch();
480
496
  if (resp) {
@@ -502,11 +518,12 @@ describe("unchanged functionality when wrapping with middleware", () => {
502
518
  `;
503
519
  fs.writeFileSync("index.js", scriptContent);
504
520
 
505
- const worker = await unstable_dev(
506
- "index.js",
507
- {},
508
- { disableExperimentalWarning: true }
509
- );
521
+ const worker = await unstable_dev("index.js", {
522
+ experimental: {
523
+ disableExperimentalWarning: true,
524
+ disableDevRegistry: true,
525
+ },
526
+ });
510
527
 
511
528
  const resp = await worker.fetch();
512
529
  let text;
@@ -532,11 +549,12 @@ describe("unchanged functionality when wrapping with middleware", () => {
532
549
  `;
533
550
  fs.writeFileSync("index.js", scriptContent);
534
551
 
535
- const worker = await unstable_dev(
536
- "index.js",
537
- {},
538
- { disableExperimentalWarning: true }
539
- );
552
+ const worker = await unstable_dev("index.js", {
553
+ experimental: {
554
+ disableExperimentalWarning: true,
555
+ disableDevRegistry: true,
556
+ },
557
+ });
540
558
 
541
559
  const resp = await worker.fetch();
542
560
  let text;
@@ -563,11 +581,12 @@ describe("unchanged functionality when wrapping with middleware", () => {
563
581
  `;
564
582
  fs.writeFileSync("index.js", scriptContent);
565
583
 
566
- const worker = await unstable_dev(
567
- "index.js",
568
- {},
569
- { disableExperimentalWarning: true }
570
- );
584
+ const worker = await unstable_dev("index.js", {
585
+ experimental: {
586
+ disableExperimentalWarning: true,
587
+ disableDevRegistry: true,
588
+ },
589
+ });
571
590
 
572
591
  const resp = await worker.fetch();
573
592
  let text;
@@ -593,11 +612,12 @@ describe("unchanged functionality when wrapping with middleware", () => {
593
612
  `;
594
613
  fs.writeFileSync("index.js", scriptContent);
595
614
 
596
- const worker = await unstable_dev(
597
- "index.js",
598
- {},
599
- { disableExperimentalWarning: true }
600
- );
615
+ const worker = await unstable_dev("index.js", {
616
+ experimental: {
617
+ disableExperimentalWarning: true,
618
+ disableDevRegistry: true,
619
+ },
620
+ });
601
621
 
602
622
  const resp = await worker.fetch();
603
623
  let text;
@@ -624,11 +644,12 @@ describe("unchanged functionality when wrapping with middleware", () => {
624
644
  `;
625
645
  fs.writeFileSync("index.js", scriptContent);
626
646
 
627
- const worker = await unstable_dev(
628
- "index.js",
629
- {},
630
- { disableExperimentalWarning: true }
631
- );
647
+ const worker = await unstable_dev("index.js", {
648
+ experimental: {
649
+ disableExperimentalWarning: true,
650
+ disableDevRegistry: true,
651
+ },
652
+ });
632
653
 
633
654
  const resp = await worker.fetch();
634
655
  let text;
@@ -649,11 +670,12 @@ describe("unchanged functionality when wrapping with middleware", () => {
649
670
  `;
650
671
  fs.writeFileSync("index.js", scriptContent);
651
672
 
652
- const worker = await unstable_dev(
653
- "index.js",
654
- {},
655
- { disableExperimentalWarning: true }
656
- );
673
+ const worker = await unstable_dev("index.js", {
674
+ experimental: {
675
+ disableExperimentalWarning: true,
676
+ disableDevRegistry: true,
677
+ },
678
+ });
657
679
 
658
680
  const resp = await worker.fetch();
659
681
  const status = resp?.status;
@@ -680,11 +702,12 @@ describe("unchanged functionality when wrapping with middleware", () => {
680
702
  `;
681
703
  fs.writeFileSync("index.js", scriptContent);
682
704
 
683
- const worker = await unstable_dev(
684
- "index.js",
685
- {},
686
- { disableExperimentalWarning: true }
687
- );
705
+ const worker = await unstable_dev("index.js", {
706
+ experimental: {
707
+ disableExperimentalWarning: true,
708
+ disableDevRegistry: true,
709
+ },
710
+ });
688
711
 
689
712
  const resp = await worker.fetch();
690
713
  let text;
@@ -710,11 +733,12 @@ describe("unchanged functionality when wrapping with middleware", () => {
710
733
  `;
711
734
  fs.writeFileSync("index.js", scriptContent);
712
735
 
713
- const worker = await unstable_dev(
714
- "index.js",
715
- {},
716
- { disableExperimentalWarning: true }
717
- );
736
+ const worker = await unstable_dev("index.js", {
737
+ experimental: {
738
+ disableExperimentalWarning: true,
739
+ disableDevRegistry: true,
740
+ },
741
+ });
718
742
 
719
743
  const resp = await worker.fetch();
720
744
  let text;
@@ -724,3 +748,69 @@ describe("unchanged functionality when wrapping with middleware", () => {
724
748
  });
725
749
  });
726
750
  });
751
+
752
+ describe("multiple middleware", () => {
753
+ runInTempDir();
754
+ it("should respond correctly with D1 databases, scheduled testing, and formatted dev errors", async () => {
755
+ // Kitchen sink test to check interaction between multiple middlewares
756
+ const scriptContent = `
757
+ export default {
758
+ async fetch(request, env, ctx) {
759
+ const { pathname } = new URL(request.url);
760
+ if (pathname === "/setup") {
761
+ await env.DB.exec("CREATE TABLE IF NOT EXISTS test (id INTEGER PRIMARY KEY, value TEXT);");
762
+ return new Response(null, { status: 204 });
763
+ } else if (pathname === "/query") {
764
+ const rows = await env.DB.prepare("SELECT * FROM test;").all();
765
+ return Response.json(rows.results);
766
+ }
767
+ throw new Error("Not found!");
768
+ },
769
+ async scheduled(controller, env, ctx) {
770
+ const stmt = await env.DB.prepare("INSERT INTO test (id, value) VALUES (?, ?)");
771
+ await stmt.bind(1, "one").run();
772
+ }
773
+ }
774
+ `;
775
+ fs.writeFileSync("index.js", scriptContent);
776
+
777
+ const originalFormatErrors = process.env.FORMAT_WRANGLER_ERRORS;
778
+ process.env.FORMAT_WRANGLER_ERRORS = "true";
779
+
780
+ const worker = await unstable_dev("index.js", {
781
+ experimental: {
782
+ disableExperimentalWarning: true,
783
+ disableDevRegistry: true,
784
+ testScheduled: true,
785
+ d1Databases: [
786
+ {
787
+ binding: "DB",
788
+ database_name: "db",
789
+ database_id: "00000000-0000-0000-0000-000000000000",
790
+ },
791
+ ],
792
+ },
793
+ });
794
+
795
+ try {
796
+ let res = await worker.fetch("http://localhost/setup");
797
+ expect(res.status).toBe(204);
798
+
799
+ res = await worker.fetch("http://localhost/__scheduled");
800
+ expect(res.status).toBe(200);
801
+ expect(await res.text()).toBe("Ran scheduled event");
802
+
803
+ res = await worker.fetch("http://localhost/query");
804
+ expect(res.status).toBe(200);
805
+ expect(await res.json()).toEqual([{ id: 1, value: "one" }]);
806
+
807
+ res = await worker.fetch("http://localhost/bad");
808
+ expect(res.status).toBe(500);
809
+ expect(res.headers.get("Content-Type")).toBe("text/html");
810
+ expect(await res.text()).toContain("Error: Not found!");
811
+ } finally {
812
+ process.env.FORMAT_WRANGLER_ERRORS = originalFormatErrors;
813
+ await worker.stop();
814
+ }
815
+ });
816
+ });