wrangler 0.0.0-e452a35 → 0.0.0-e4ca780f

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 (359) hide show
  1. package/README.md +24 -4
  2. package/bin/wrangler.js +170 -62
  3. package/kv-asset-handler.js +1 -0
  4. package/miniflare-dist/index.mjs +1590 -81
  5. package/package.json +198 -152
  6. package/src/__tests__/access.test.ts +25 -0
  7. package/src/__tests__/api-dev.test.ts +238 -0
  8. package/src/__tests__/api-devregistry.test.ts +121 -0
  9. package/src/__tests__/api.test.ts +102 -0
  10. package/src/__tests__/config-cache-without-cache-dir.test.ts +38 -0
  11. package/src/__tests__/config-cache.test.ts +30 -24
  12. package/src/__tests__/configuration.test.ts +4498 -3321
  13. package/src/__tests__/d1/d1.test.ts +82 -0
  14. package/src/__tests__/d1/execute.test.ts +66 -0
  15. package/src/__tests__/d1/migrate.test.ts +157 -0
  16. package/src/__tests__/d1/splitter.test.ts +255 -0
  17. package/src/__tests__/delete.test.ts +272 -0
  18. package/src/__tests__/deployments.test.ts +369 -0
  19. package/src/__tests__/dev.test.tsx +1592 -874
  20. package/src/__tests__/generate.test.ts +237 -0
  21. package/src/__tests__/get-host-from-url.test.ts +16 -0
  22. package/src/__tests__/guess-worker-format.test.ts +103 -68
  23. package/src/__tests__/helpers/cmd-shim.d.ts +6 -6
  24. package/src/__tests__/helpers/end-event-loop.ts +6 -0
  25. package/src/__tests__/helpers/mock-account-id.ts +24 -24
  26. package/src/__tests__/helpers/mock-auth-domain.ts +20 -0
  27. package/src/__tests__/helpers/mock-bin.ts +20 -20
  28. package/src/__tests__/helpers/mock-console.ts +64 -39
  29. package/src/__tests__/helpers/mock-dialogs.ts +104 -55
  30. package/src/__tests__/helpers/mock-get-pages-upload-token.ts +25 -0
  31. package/src/__tests__/helpers/mock-get-zone-from-host.ts +11 -0
  32. package/src/__tests__/helpers/mock-http-server.ts +30 -30
  33. package/src/__tests__/helpers/mock-istty.ts +65 -18
  34. package/src/__tests__/helpers/mock-known-routes.ts +12 -0
  35. package/src/__tests__/helpers/mock-kv.ts +41 -28
  36. package/src/__tests__/helpers/mock-oauth-flow.ts +241 -233
  37. package/src/__tests__/helpers/mock-process.ts +34 -0
  38. package/src/__tests__/helpers/mock-set-timeout.ts +16 -0
  39. package/src/__tests__/helpers/mock-stdin.ts +82 -77
  40. package/src/__tests__/helpers/mock-web-socket.ts +21 -21
  41. package/src/__tests__/helpers/msw/blob-worker.cjs +19 -0
  42. package/src/__tests__/helpers/msw/handlers/access.ts +13 -0
  43. package/src/__tests__/helpers/msw/handlers/deployments.ts +160 -0
  44. package/src/__tests__/helpers/msw/handlers/namespaces.ts +81 -0
  45. package/src/__tests__/helpers/msw/handlers/oauth.ts +31 -0
  46. package/src/__tests__/helpers/msw/handlers/r2.ts +60 -0
  47. package/src/__tests__/helpers/msw/handlers/script.ts +56 -0
  48. package/src/__tests__/helpers/msw/handlers/user.ts +52 -0
  49. package/src/__tests__/helpers/msw/handlers/zones.ts +20 -0
  50. package/src/__tests__/helpers/msw/index.ts +52 -0
  51. package/src/__tests__/helpers/msw/read-file-sync.js +61 -0
  52. package/src/__tests__/helpers/run-in-tmp.ts +27 -28
  53. package/src/__tests__/helpers/run-wrangler.ts +8 -8
  54. package/src/__tests__/helpers/string-dynamic-values-matcher.ts +28 -0
  55. package/src/__tests__/helpers/worker-scripts/child-wrangler.toml +1 -0
  56. package/src/__tests__/helpers/worker-scripts/hello-world-worker.js +5 -0
  57. package/src/__tests__/helpers/worker-scripts/hello-world-wrangler.toml +1 -0
  58. package/src/__tests__/helpers/worker-scripts/parent-worker.js +11 -0
  59. package/src/__tests__/helpers/worker-scripts/parent-wrangler.toml +5 -0
  60. package/src/__tests__/helpers/write-worker-source.ts +16 -16
  61. package/src/__tests__/helpers/write-wrangler-toml.ts +9 -9
  62. package/src/__tests__/https-options.test.ts +142 -109
  63. package/src/__tests__/index.test.ts +260 -236
  64. package/src/__tests__/init.test.ts +3167 -1528
  65. package/src/__tests__/jest.setup.ts +152 -50
  66. package/src/__tests__/kv.test.ts +1789 -1471
  67. package/src/__tests__/logger.test.ts +167 -75
  68. package/src/__tests__/logout.test.ts +47 -0
  69. package/src/__tests__/metrics.test.ts +493 -0
  70. package/src/__tests__/middleware.scheduled.test.ts +145 -0
  71. package/src/__tests__/middleware.test.ts +816 -0
  72. package/src/__tests__/mtls-certificates.test.ts +588 -0
  73. package/src/__tests__/package-manager.test.ts +312 -165
  74. package/src/__tests__/pages/deployment-list.test.ts +80 -0
  75. package/src/__tests__/pages/functions-build.test.ts +452 -0
  76. package/src/__tests__/pages/pages.test.ts +81 -0
  77. package/src/__tests__/pages/project-create.test.ts +63 -0
  78. package/src/__tests__/pages/project-list.test.ts +110 -0
  79. package/src/__tests__/pages/project-upload.test.ts +500 -0
  80. package/src/__tests__/pages/publish.test.ts +2864 -0
  81. package/src/__tests__/pages-deployment-tail.test.ts +955 -0
  82. package/src/__tests__/parse.test.ts +358 -252
  83. package/src/__tests__/paths.test.ts +39 -0
  84. package/src/__tests__/publish.test.ts +8310 -5355
  85. package/src/__tests__/pubsub.test.ts +496 -0
  86. package/src/__tests__/queues.test.ts +532 -0
  87. package/src/__tests__/r2.test.ts +369 -228
  88. package/src/__tests__/route.test.ts +18 -18
  89. package/src/__tests__/secret.test.ts +681 -469
  90. package/src/__tests__/tail.test.ts +835 -567
  91. package/src/__tests__/test-old-node-version.js +31 -0
  92. package/src/__tests__/traverse-module-graph.test.ts +220 -0
  93. package/src/__tests__/tsconfig-sanity.ts +12 -0
  94. package/src/__tests__/tsconfig.json +8 -0
  95. package/src/__tests__/tsconfig.tsbuildinfo +1 -0
  96. package/src/__tests__/type-generation.test.ts +234 -0
  97. package/src/__tests__/user.test.ts +107 -120
  98. package/src/__tests__/utils-collectKeyValues.test.ts +47 -0
  99. package/src/__tests__/validate-dev-props.test.ts +56 -0
  100. package/src/__tests__/version.test.ts +35 -0
  101. package/src/__tests__/whoami.test.tsx +165 -98
  102. package/src/__tests__/worker-namespace.test.ts +340 -0
  103. package/src/abort.d.ts +1 -1
  104. package/src/api/dev.ts +316 -0
  105. package/src/api/index.ts +11 -0
  106. package/src/api/mtls-certificate.ts +148 -0
  107. package/src/api/pages/create-worker-bundle-contents.ts +76 -0
  108. package/src/api/pages/index.ts +5 -0
  109. package/src/api/pages/publish.tsx +355 -0
  110. package/src/bundle-reporter.ts +68 -0
  111. package/src/bundle.ts +869 -161
  112. package/src/cfetch/index.ts +120 -83
  113. package/src/cfetch/internal.ts +214 -95
  114. package/src/cli.ts +23 -8
  115. package/src/config/config.ts +244 -196
  116. package/src/config/diagnostics.ts +61 -61
  117. package/src/config/environment.ts +555 -357
  118. package/src/config/index.ts +374 -196
  119. package/src/config/validation-helpers.ts +379 -357
  120. package/src/config/validation.ts +2170 -1358
  121. package/src/config-cache.ts +81 -41
  122. package/src/create-worker-preview.ts +250 -142
  123. package/src/create-worker-upload-form.ts +343 -238
  124. package/src/d1/backups.tsx +219 -0
  125. package/src/d1/constants.ts +2 -0
  126. package/src/d1/create.tsx +68 -0
  127. package/src/d1/delete.ts +53 -0
  128. package/src/d1/execute.tsx +357 -0
  129. package/src/d1/formatTimeAgo.ts +14 -0
  130. package/src/d1/index.ts +100 -0
  131. package/src/d1/list.tsx +60 -0
  132. package/src/d1/migrations/apply.tsx +212 -0
  133. package/src/d1/migrations/create.tsx +79 -0
  134. package/src/d1/migrations/helpers.ts +172 -0
  135. package/src/d1/migrations/index.ts +3 -0
  136. package/src/d1/migrations/list.tsx +95 -0
  137. package/src/d1/migrations/options.ts +23 -0
  138. package/src/d1/options.ts +22 -0
  139. package/src/d1/splitter.ts +161 -0
  140. package/src/d1/types.ts +25 -0
  141. package/src/d1/utils.ts +49 -0
  142. package/src/delete.ts +100 -0
  143. package/src/deployments.ts +368 -0
  144. package/src/deprecated/index.ts +144 -0
  145. package/src/dev/dev-vars.ts +20 -17
  146. package/src/dev/dev.tsx +533 -355
  147. package/src/dev/get-local-persistence-path.ts +31 -0
  148. package/src/dev/local.tsx +900 -298
  149. package/src/dev/remote.tsx +620 -215
  150. package/src/dev/start-server.ts +534 -0
  151. package/src/dev/use-esbuild.ts +182 -97
  152. package/src/dev/validate-dev-props.ts +40 -0
  153. package/src/dev-registry.ts +202 -0
  154. package/src/dev.tsx +929 -0
  155. package/src/dialogs.ts +136 -0
  156. package/src/dispatch-namespace.ts +211 -0
  157. package/src/docs/index.ts +97 -0
  158. package/src/durable.ts +87 -87
  159. package/src/entry.ts +246 -231
  160. package/src/environment-variables/factory.ts +88 -0
  161. package/src/environment-variables/misc-variables.ts +30 -0
  162. package/src/errors.ts +6 -6
  163. package/src/generate/index.ts +298 -0
  164. package/src/git-client.ts +135 -0
  165. package/src/global-wrangler-config-path.ts +26 -0
  166. package/src/https-options.ts +84 -80
  167. package/src/index.ts +758 -0
  168. package/src/init.ts +1032 -0
  169. package/src/inspect.ts +713 -593
  170. package/src/intl-polyfill.d.ts +123 -123
  171. package/src/is-ci.ts +14 -0
  172. package/src/is-interactive.ts +16 -0
  173. package/src/jest.d.ts +4 -0
  174. package/src/kv/helpers.ts +430 -0
  175. package/src/kv/index.ts +594 -0
  176. package/src/logger.ts +96 -43
  177. package/src/metrics/index.ts +5 -0
  178. package/src/metrics/metrics-config.ts +239 -0
  179. package/src/metrics/metrics-dispatcher.ts +96 -0
  180. package/src/metrics/metrics-usage-headers.ts +24 -0
  181. package/src/metrics/send-event.ts +99 -0
  182. package/src/miniflare-cli/assets.ts +251 -0
  183. package/src/miniflare-cli/index.ts +202 -33
  184. package/src/miniflare-cli/request-context.ts +18 -18
  185. package/src/miniflare-cli/tsconfig.json +9 -0
  186. package/src/miniflare-cli/tsconfig.tsbuildinfo +1 -0
  187. package/src/miniflare-cli/types.ts +11 -0
  188. package/src/module-collection.ts +290 -215
  189. package/src/mtls-certificate/cli.ts +155 -0
  190. package/src/open-in-browser.ts +4 -6
  191. package/src/package-manager.ts +182 -90
  192. package/src/pages/build.ts +410 -0
  193. package/src/pages/buildFunctions.ts +140 -0
  194. package/src/pages/constants.ts +18 -0
  195. package/src/pages/deployment-tails.ts +281 -0
  196. package/src/pages/deployments.tsx +84 -0
  197. package/src/pages/dev.ts +716 -0
  198. package/src/pages/errors.ts +67 -0
  199. package/src/pages/functions/buildPlugin.ts +113 -0
  200. package/src/pages/functions/buildWorker.ts +291 -0
  201. package/{pages → src/pages}/functions/filepath-routing.test.ts +113 -113
  202. package/src/pages/functions/filepath-routing.ts +189 -0
  203. package/src/pages/functions/identifiers.ts +78 -0
  204. package/src/pages/functions/routes-consolidation.test.ts +250 -0
  205. package/src/pages/functions/routes-consolidation.ts +73 -0
  206. package/src/pages/functions/routes-transformation.test.ts +282 -0
  207. package/src/pages/functions/routes-transformation.ts +115 -0
  208. package/src/pages/functions/routes-validation.test.ts +403 -0
  209. package/src/pages/functions/routes-validation.ts +202 -0
  210. package/src/pages/functions/routes.ts +151 -0
  211. package/src/pages/functions/tsconfig.json +8 -0
  212. package/src/pages/functions/tsconfig.tsbuildinfo +1 -0
  213. package/src/pages/functions.ts +86 -0
  214. package/src/pages/hash.ts +13 -0
  215. package/src/pages/index.ts +102 -0
  216. package/src/pages/projects.tsx +159 -0
  217. package/src/pages/prompt-select-project.tsx +31 -0
  218. package/src/pages/publish.tsx +267 -0
  219. package/src/pages/types.ts +46 -0
  220. package/src/pages/upload.tsx +469 -0
  221. package/src/pages/utils.ts +23 -0
  222. package/src/parse.ts +232 -126
  223. package/src/paths.ts +53 -8
  224. package/src/proxy.ts +623 -394
  225. package/src/publish/index.ts +274 -0
  226. package/src/publish/publish.ts +1060 -0
  227. package/src/pubsub/index.ts +286 -0
  228. package/src/pubsub/pubsub-commands.ts +623 -0
  229. package/src/queues/cli/commands/consumer/add.ts +71 -0
  230. package/src/queues/cli/commands/consumer/index.ts +19 -0
  231. package/src/queues/cli/commands/consumer/remove.ts +31 -0
  232. package/src/queues/cli/commands/create.ts +25 -0
  233. package/src/queues/cli/commands/delete.ts +26 -0
  234. package/src/queues/cli/commands/index.ts +35 -0
  235. package/src/queues/cli/commands/list.ts +25 -0
  236. package/src/queues/client.ts +136 -0
  237. package/src/queues/utils.ts +18 -0
  238. package/src/r2/constants.ts +4 -0
  239. package/src/r2/helpers.ts +132 -0
  240. package/src/r2/index.ts +289 -0
  241. package/src/routes.ts +140 -0
  242. package/src/secret/index.ts +376 -0
  243. package/src/selfsigned.d.ts +23 -23
  244. package/src/sites.ts +372 -0
  245. package/src/tail/createTail.ts +406 -0
  246. package/src/tail/filters.ts +109 -111
  247. package/src/tail/index.ts +208 -296
  248. package/src/tail/printing.ts +101 -46
  249. package/src/traverse-module-graph.ts +53 -0
  250. package/src/tsconfig-sanity.ts +16 -0
  251. package/src/type-generation.ts +181 -0
  252. package/src/update-check.ts +11 -11
  253. package/src/user/access.ts +68 -0
  254. package/src/user/auth-variables.ts +113 -0
  255. package/src/user/choose-account.tsx +39 -0
  256. package/src/user/generate-auth-url.ts +33 -0
  257. package/src/user/generate-random-state.ts +16 -0
  258. package/src/user/index.ts +2 -0
  259. package/src/user/user.ts +1233 -0
  260. package/src/utils/collectKeyValues.ts +14 -0
  261. package/src/utils/render.ts +93 -0
  262. package/src/whoami.ts +135 -0
  263. package/src/worker.ts +200 -106
  264. package/src/yargs-types.ts +37 -0
  265. package/src/zones.ts +191 -0
  266. package/templates/__tests__/pages-dev-util.test.ts +128 -0
  267. package/templates/__tests__/tsconfig-sanity.ts +12 -0
  268. package/templates/__tests__/tsconfig.json +8 -0
  269. package/templates/__tests__/tsconfig.tsbuildinfo +1 -0
  270. package/templates/checked-fetch.js +23 -0
  271. package/templates/d1-beta-facade.js +244 -0
  272. package/templates/facade.d.ts +14 -0
  273. package/templates/first-party-worker-module-facade.ts +19 -0
  274. package/templates/format-dev-errors.ts +34 -0
  275. package/templates/gitignore +1 -0
  276. package/templates/init-tests/test-jest-new-worker.js +23 -0
  277. package/templates/init-tests/test-vitest-new-worker.js +24 -0
  278. package/templates/init-tests/test-vitest-new-worker.ts +25 -0
  279. package/templates/middleware/common.ts +62 -0
  280. package/templates/middleware/loader-modules.ts +84 -0
  281. package/templates/middleware/loader-sw.ts +233 -0
  282. package/templates/middleware/middleware-miniflare3-json-error.ts +32 -0
  283. package/templates/middleware/middleware-pretty-error.ts +40 -0
  284. package/templates/middleware/middleware-scheduled.ts +15 -0
  285. package/templates/new-worker-scheduled.js +17 -0
  286. package/templates/new-worker-scheduled.ts +32 -0
  287. package/templates/new-worker.js +3 -3
  288. package/templates/new-worker.ts +18 -15
  289. package/templates/no-op-worker.js +10 -0
  290. package/templates/pages-dev-pipeline.ts +31 -0
  291. package/templates/pages-dev-util.ts +52 -0
  292. package/templates/pages-shim.ts +12 -0
  293. package/templates/pages-template-plugin.ts +180 -0
  294. package/templates/pages-template-worker.ts +189 -0
  295. package/templates/serve-static-assets.ts +66 -0
  296. package/templates/service-bindings-module-facade.js +55 -0
  297. package/templates/service-bindings-sw-facade.js +42 -0
  298. package/templates/tsconfig-sanity.ts +11 -0
  299. package/templates/tsconfig.init.json +105 -0
  300. package/templates/tsconfig.json +6 -103
  301. package/templates/tsconfig.tsbuildinfo +1 -0
  302. package/wrangler-dist/cli.d.ts +1641 -0
  303. package/wrangler-dist/cli.js +138434 -111674
  304. package/wrangler-dist/wasm-sync.wasm +0 -0
  305. package/pages/functions/buildPlugin.ts +0 -105
  306. package/pages/functions/buildWorker.ts +0 -151
  307. package/pages/functions/filepath-routing.ts +0 -189
  308. package/pages/functions/identifiers.ts +0 -78
  309. package/pages/functions/routes.ts +0 -156
  310. package/pages/functions/template-plugin.ts +0 -147
  311. package/pages/functions/template-worker.ts +0 -143
  312. package/src/__tests__/helpers/faye-websocket.d.ts +0 -6
  313. package/src/__tests__/helpers/mock-cfetch.ts +0 -211
  314. package/src/__tests__/pages.test.ts +0 -657
  315. package/src/dialogs.tsx +0 -87
  316. package/src/environment-variables.ts +0 -35
  317. package/src/index.tsx +0 -2789
  318. package/src/kv.ts +0 -408
  319. package/src/miniflare-cli/enum-keys.ts +0 -17
  320. package/src/pages.tsx +0 -2027
  321. package/src/publish.ts +0 -583
  322. package/src/r2.ts +0 -50
  323. package/src/sites.tsx +0 -295
  324. package/src/user.tsx +0 -1203
  325. package/src/whoami.tsx +0 -70
  326. package/templates/static-asset-facade.js +0 -47
  327. package/vendor/@cloudflare/kv-asset-handler/CHANGELOG.md +0 -332
  328. package/vendor/@cloudflare/kv-asset-handler/LICENSE_APACHE +0 -176
  329. package/vendor/@cloudflare/kv-asset-handler/LICENSE_MIT +0 -25
  330. package/vendor/@cloudflare/kv-asset-handler/README.md +0 -245
  331. package/vendor/@cloudflare/kv-asset-handler/dist/index.d.ts +0 -32
  332. package/vendor/@cloudflare/kv-asset-handler/dist/index.js +0 -354
  333. package/vendor/@cloudflare/kv-asset-handler/dist/mocks.d.ts +0 -13
  334. package/vendor/@cloudflare/kv-asset-handler/dist/mocks.js +0 -148
  335. package/vendor/@cloudflare/kv-asset-handler/dist/test/getAssetFromKV.d.ts +0 -1
  336. package/vendor/@cloudflare/kv-asset-handler/dist/test/getAssetFromKV.js +0 -436
  337. package/vendor/@cloudflare/kv-asset-handler/dist/test/mapRequestToAsset.d.ts +0 -1
  338. package/vendor/@cloudflare/kv-asset-handler/dist/test/mapRequestToAsset.js +0 -40
  339. package/vendor/@cloudflare/kv-asset-handler/dist/test/serveSinglePageApp.d.ts +0 -1
  340. package/vendor/@cloudflare/kv-asset-handler/dist/test/serveSinglePageApp.js +0 -42
  341. package/vendor/@cloudflare/kv-asset-handler/dist/types.d.ts +0 -26
  342. package/vendor/@cloudflare/kv-asset-handler/dist/types.js +0 -31
  343. package/vendor/@cloudflare/kv-asset-handler/package.json +0 -52
  344. package/vendor/@cloudflare/kv-asset-handler/src/index.ts +0 -296
  345. package/vendor/@cloudflare/kv-asset-handler/src/mocks.ts +0 -136
  346. package/vendor/@cloudflare/kv-asset-handler/src/test/getAssetFromKV.ts +0 -464
  347. package/vendor/@cloudflare/kv-asset-handler/src/test/mapRequestToAsset.ts +0 -33
  348. package/vendor/@cloudflare/kv-asset-handler/src/test/serveSinglePageApp.ts +0 -42
  349. package/vendor/@cloudflare/kv-asset-handler/src/types.ts +0 -39
  350. package/vendor/wrangler-mime/CHANGELOG.md +0 -289
  351. package/vendor/wrangler-mime/LICENSE +0 -21
  352. package/vendor/wrangler-mime/Mime.js +0 -97
  353. package/vendor/wrangler-mime/README.md +0 -187
  354. package/vendor/wrangler-mime/cli.js +0 -46
  355. package/vendor/wrangler-mime/index.js +0 -4
  356. package/vendor/wrangler-mime/lite.js +0 -4
  357. package/vendor/wrangler-mime/package.json +0 -52
  358. package/vendor/wrangler-mime/types/other.js +0 -1
  359. package/vendor/wrangler-mime/types/standard.js +0 -1
@@ -0,0 +1,121 @@
1
+ import { fetch } from "undici";
2
+ import { unstable_dev } from "../api";
3
+
4
+ jest.unmock("undici");
5
+
6
+ /**
7
+ * a huge caveat to how testing multi-worker scripts works:
8
+ * you can't shutdown the first worker you spun up, or it'll kill the devRegistry
9
+ */
10
+ describe("multi-worker testing", () => {
11
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
12
+ let childWorker: any;
13
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
14
+ let parentWorker: any;
15
+
16
+ beforeAll(async () => {
17
+ childWorker = await unstable_dev(
18
+ "src/__tests__/helpers/worker-scripts/hello-world-worker.js",
19
+ {
20
+ config: "src/__tests__/helpers/worker-scripts/child-wrangler.toml",
21
+ experimental: {
22
+ disableExperimentalWarning: true,
23
+ },
24
+ }
25
+ );
26
+ parentWorker = await unstable_dev(
27
+ "src/__tests__/helpers/worker-scripts/parent-worker.js",
28
+ {
29
+ config: "src/__tests__/helpers/worker-scripts/parent-wrangler.toml",
30
+ experimental: {
31
+ disableExperimentalWarning: true,
32
+ },
33
+ }
34
+ );
35
+ });
36
+
37
+ afterAll(async () => {
38
+ await childWorker.stop();
39
+ await parentWorker.stop();
40
+ });
41
+
42
+ it("parentWorker and childWorker should be added devRegistry", async () => {
43
+ const resp = await fetch("http://localhost:6284/workers");
44
+ if (resp) {
45
+ const parsedResp = (await resp.json()) as {
46
+ parent: unknown;
47
+ child: unknown;
48
+ };
49
+ expect(parsedResp.parent).toBeTruthy();
50
+ expect(parsedResp.child).toBeTruthy();
51
+ }
52
+ });
53
+
54
+ it("childWorker should return Hello World itself", async () => {
55
+ const resp = await childWorker.fetch();
56
+ if (resp) {
57
+ const text = await resp.text();
58
+ expect(text).toMatchInlineSnapshot(`"Hello World!"`);
59
+ }
60
+ });
61
+
62
+ it("parentWorker should return Hello World by invoking the child worker", async () => {
63
+ const resp = await parentWorker.fetch();
64
+ if (resp) {
65
+ const parsedResp = await resp.text();
66
+ expect(parsedResp).toEqual("Parent worker sees: Hello World!");
67
+ }
68
+ });
69
+
70
+ it("should be able to stop and start the server with no warning logs", async () => {
71
+ // Spy on all the console methods
72
+ let logs = "";
73
+ (["debug", "info", "log", "warn", "error"] as const).forEach((method) =>
74
+ jest
75
+ .spyOn(console, method)
76
+ .mockImplementation((...args: unknown[]) => (logs += `\n${args}`))
77
+ );
78
+
79
+ // Spy on the std out that is written to by Miniflare 2
80
+ jest
81
+ .spyOn(process.stdout, "write")
82
+ .mockImplementation((chunk: unknown) => ((logs += `\n${chunk}`), true));
83
+
84
+ async function startWorker() {
85
+ return await unstable_dev(
86
+ "src/__tests__/helpers/worker-scripts/hello-world-worker.js",
87
+ {
88
+ // We need the wrangler.toml config to specify a Worker name
89
+ // otherwise unstable_dev will not register the worker with the DevRegistry
90
+ config: "src/__tests__/helpers/worker-scripts/child-wrangler.toml",
91
+ // We need debug logs because this is where the message is written if registering the worker fails.
92
+ logLevel: "debug",
93
+ experimental: {
94
+ disableExperimentalWarning: true,
95
+ },
96
+ }
97
+ );
98
+ }
99
+
100
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
101
+ let worker: any;
102
+ try {
103
+ worker = await startWorker();
104
+
105
+ // Stop the worker and start it again
106
+ await worker.stop();
107
+ await new Promise((r) => setTimeout(r, 2000));
108
+
109
+ worker = await startWorker();
110
+
111
+ const resp = await worker.fetch();
112
+ expect(resp).not.toBe(undefined);
113
+
114
+ expect(logs).not.toMatch(
115
+ /Failed to register worker in local service registry/
116
+ );
117
+ } finally {
118
+ await worker?.stop();
119
+ }
120
+ }, 10000);
121
+ });
@@ -0,0 +1,102 @@
1
+ import { Request } from "undici";
2
+ import { parseRequestInput } from "../api/dev";
3
+
4
+ describe("parseRequestInput for fetch on unstable dev", () => {
5
+ it("should allow no input to be passed in", () => {
6
+ const [input, _] = parseRequestInput("0.0.0.0", 8080);
7
+
8
+ expect(input).toMatchInlineSnapshot(`"http://0.0.0.0:8080/"`);
9
+ });
10
+
11
+ it("should allow string of pathname to be passed in", () => {
12
+ const [input, _] = parseRequestInput("0.0.0.0", 8080, "/test");
13
+
14
+ expect(input).toMatchInlineSnapshot(`"http://0.0.0.0:8080/test"`);
15
+ });
16
+
17
+ it("should allow string of pathname and querystring to be passed in", () => {
18
+ const [input, _] = parseRequestInput("0.0.0.0", 8080, "/test?q=testparam");
19
+
20
+ expect(input).toMatchInlineSnapshot(
21
+ `"http://0.0.0.0:8080/test?q=testparam"`
22
+ );
23
+ });
24
+
25
+ it("should allow full url to be passed in as string and stripped", () => {
26
+ const [input, _] = parseRequestInput(
27
+ "0.0.0.0",
28
+ 8080,
29
+ "http://cloudflare.com/test?q=testparam"
30
+ );
31
+
32
+ expect(input).toMatchInlineSnapshot(
33
+ `"http://0.0.0.0:8080/test?q=testparam"`
34
+ );
35
+ });
36
+
37
+ it("should allow URL object without pathname to be passed in and stripped", () => {
38
+ const [input, _] = parseRequestInput(
39
+ "0.0.0.0",
40
+ 8080,
41
+ new URL("http://cloudflare.com")
42
+ );
43
+
44
+ expect(input).toMatchInlineSnapshot(`"http://0.0.0.0:8080/"`);
45
+ });
46
+
47
+ it("should allow URL object with pathname to be passed in and stripped", () => {
48
+ const [input, _] = parseRequestInput(
49
+ "0.0.0.0",
50
+ 8080,
51
+ new URL("http://cloudflare.com/test")
52
+ );
53
+
54
+ expect(input).toMatchInlineSnapshot(`"http://0.0.0.0:8080/test"`);
55
+ });
56
+
57
+ it("should allow URL object with pathname and querystring to be passed in and stripped", () => {
58
+ const [input, _] = parseRequestInput(
59
+ "0.0.0.0",
60
+ 8080,
61
+ new URL("http://cloudflare.com/test?q=testparam")
62
+ );
63
+
64
+ expect(input).toMatchInlineSnapshot(
65
+ `"http://0.0.0.0:8080/test?q=testparam"`
66
+ );
67
+ });
68
+
69
+ it("should allow request object to be passed in", () => {
70
+ const [input, init] = parseRequestInput(
71
+ "0.0.0.0",
72
+ 8080,
73
+ new Request("http://cloudflare.com/test?q=testparam", { method: "POST" })
74
+ );
75
+
76
+ expect(init).toBeUndefined();
77
+ expect(input).toBeInstanceOf(Request);
78
+ // We don't expect the request to be modified
79
+ expect((input as Request).url).toMatchInlineSnapshot(
80
+ `"http://cloudflare.com/test?q=testparam"`
81
+ );
82
+ expect((input as Request).method).toMatchInlineSnapshot(`"POST"`);
83
+ });
84
+
85
+ it("should parse to give https url with localProtocol = https", () => {
86
+ const [input, _] = parseRequestInput("0.0.0.0", 8080, "/test", {}, "https");
87
+
88
+ expect(input).toMatchInlineSnapshot(`"https://0.0.0.0:8080/test"`);
89
+ });
90
+
91
+ it("should parse to give http url with localProtocol = http", () => {
92
+ const [input, _] = parseRequestInput("0.0.0.0", 8080, "/test", {}, "http");
93
+
94
+ expect(input).toMatchInlineSnapshot(`"http://0.0.0.0:8080/test"`);
95
+ });
96
+
97
+ it("should parse to give http url with localProtocol not set", () => {
98
+ const [input, _] = parseRequestInput("0.0.0.0", 8080, "/test", {});
99
+
100
+ expect(input).toMatchInlineSnapshot(`"http://0.0.0.0:8080/test"`);
101
+ });
102
+ });
@@ -0,0 +1,38 @@
1
+ import { getConfigCache, saveToConfigCache } from "../config-cache";
2
+ import { mockConsoleMethods } from "./helpers/mock-console";
3
+ import { runInTempDir } from "./helpers/run-in-tmp";
4
+
5
+ interface PagesConfigCache {
6
+ account_id: string;
7
+ pages_project_name: string;
8
+ }
9
+
10
+ describe("config cache", () => {
11
+ runInTempDir();
12
+ mockConsoleMethods();
13
+ // In this set of tests, we don't create a node_modules folder
14
+ const pagesConfigCacheFilename = "pages-config-cache.json";
15
+
16
+ it("should return an empty config if no file exists", () => {
17
+ expect(
18
+ getConfigCache<PagesConfigCache>(pagesConfigCacheFilename)
19
+ ).toMatchInlineSnapshot(`Object {}`);
20
+ });
21
+
22
+ it("should ignore attempts to cache values ", () => {
23
+ saveToConfigCache<PagesConfigCache>(pagesConfigCacheFilename, {
24
+ account_id: "some-account-id",
25
+ pages_project_name: "foo",
26
+ });
27
+ expect(getConfigCache<PagesConfigCache>(pagesConfigCacheFilename)).toEqual(
28
+ {}
29
+ );
30
+
31
+ saveToConfigCache<PagesConfigCache>(pagesConfigCacheFilename, {
32
+ pages_project_name: "bar",
33
+ });
34
+ expect(getConfigCache<PagesConfigCache>(pagesConfigCacheFilename)).toEqual(
35
+ {}
36
+ );
37
+ });
38
+ });
@@ -1,36 +1,42 @@
1
+ import { mkdirSync } from "node:fs";
1
2
  import { getConfigCache, saveToConfigCache } from "../config-cache";
3
+ import { mockConsoleMethods } from "./helpers/mock-console";
2
4
  import { runInTempDir } from "./helpers/run-in-tmp";
3
5
 
4
6
  interface PagesConfigCache {
5
- account_id: string;
6
- pages_project_name: string;
7
+ account_id: string;
8
+ pages_project_name: string;
7
9
  }
8
10
 
9
11
  describe("config cache", () => {
10
- runInTempDir();
12
+ runInTempDir();
13
+ mockConsoleMethods();
14
+ beforeEach(() => {
15
+ mkdirSync("node_modules");
16
+ });
11
17
 
12
- const pagesConfigCacheFilename = "pages-config-cache.json";
18
+ const pagesConfigCacheFilename = "pages-config-cache.json";
13
19
 
14
- it("should return an empty config if no file exists", () => {
15
- expect(
16
- getConfigCache<PagesConfigCache>(pagesConfigCacheFilename)
17
- ).toMatchInlineSnapshot(`Object {}`);
18
- });
20
+ it("should return an empty config if no file exists", () => {
21
+ expect(
22
+ getConfigCache<PagesConfigCache>(pagesConfigCacheFilename)
23
+ ).toMatchInlineSnapshot(`Object {}`);
24
+ });
19
25
 
20
- it("should read and write values without overriding old ones", () => {
21
- saveToConfigCache<PagesConfigCache>(pagesConfigCacheFilename, {
22
- account_id: "some-account-id",
23
- pages_project_name: "foo",
24
- });
25
- expect(
26
- getConfigCache<PagesConfigCache>(pagesConfigCacheFilename).account_id
27
- ).toEqual("some-account-id");
26
+ it("should read and write values without overriding old ones", () => {
27
+ saveToConfigCache<PagesConfigCache>(pagesConfigCacheFilename, {
28
+ account_id: "some-account-id",
29
+ pages_project_name: "foo",
30
+ });
31
+ expect(
32
+ getConfigCache<PagesConfigCache>(pagesConfigCacheFilename).account_id
33
+ ).toEqual("some-account-id");
28
34
 
29
- saveToConfigCache<PagesConfigCache>(pagesConfigCacheFilename, {
30
- pages_project_name: "bar",
31
- });
32
- expect(
33
- getConfigCache<PagesConfigCache>(pagesConfigCacheFilename).account_id
34
- ).toEqual("some-account-id");
35
- });
35
+ saveToConfigCache<PagesConfigCache>(pagesConfigCacheFilename, {
36
+ pages_project_name: "bar",
37
+ });
38
+ expect(
39
+ getConfigCache<PagesConfigCache>(pagesConfigCacheFilename).account_id
40
+ ).toEqual("some-account-id");
41
+ });
36
42
  });