wrangler 0.0.0-e6733a3 → 0.0.0-e7a0cd5b

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 (302) hide show
  1. package/Cloudflare_CA.pem +18 -0
  2. package/README.md +47 -14
  3. package/bin/wrangler.js +160 -28
  4. package/kv-asset-handler.js +1 -0
  5. package/miniflare-dist/index.mjs +6316 -0
  6. package/package.json +190 -124
  7. package/src/__tests__/access.test.ts +25 -0
  8. package/src/__tests__/api-dev.test.ts +209 -0
  9. package/src/__tests__/api-devregistry.test.js +57 -0
  10. package/src/__tests__/api.test.ts +80 -0
  11. package/src/__tests__/config-cache-without-cache-dir.test.ts +38 -0
  12. package/src/__tests__/config-cache.test.ts +42 -0
  13. package/src/__tests__/configuration.test.ts +4028 -0
  14. package/src/__tests__/d1.test.ts +72 -0
  15. package/src/__tests__/delete.test.ts +230 -0
  16. package/src/__tests__/deployments.test.ts +95 -0
  17. package/src/__tests__/dev.test.tsx +1505 -62
  18. package/src/__tests__/dialogs.test.tsx +40 -0
  19. package/src/__tests__/generate.test.ts +235 -0
  20. package/src/__tests__/get-host-from-url.test.ts +16 -0
  21. package/src/__tests__/guess-worker-format.test.ts +85 -0
  22. package/src/__tests__/{clipboardy-mock.js → helpers/clipboardy-mock.js} +0 -0
  23. package/src/__tests__/helpers/cmd-shim.d.ts +11 -0
  24. package/src/__tests__/helpers/mock-account-id.ts +48 -0
  25. package/src/__tests__/helpers/mock-bin.ts +36 -0
  26. package/src/__tests__/helpers/mock-cfetch.ts +333 -0
  27. package/src/__tests__/helpers/mock-console.ts +106 -0
  28. package/src/__tests__/helpers/mock-dialogs.ts +153 -0
  29. package/src/__tests__/helpers/mock-get-zone-from-host.ts +8 -0
  30. package/src/__tests__/helpers/mock-http-server.ts +46 -0
  31. package/src/__tests__/helpers/mock-istty.ts +74 -0
  32. package/src/__tests__/helpers/mock-known-routes.ts +7 -0
  33. package/src/__tests__/helpers/mock-kv.ts +33 -0
  34. package/src/__tests__/helpers/mock-oauth-flow.ts +252 -0
  35. package/src/__tests__/helpers/mock-process.ts +39 -0
  36. package/src/__tests__/helpers/mock-stdin.ts +108 -0
  37. package/src/__tests__/helpers/mock-web-socket.ts +29 -0
  38. package/src/__tests__/helpers/msw/handlers/access.ts +13 -0
  39. package/src/__tests__/helpers/msw/handlers/deployments.ts +59 -0
  40. package/src/__tests__/helpers/msw/handlers/namespaces.ts +104 -0
  41. package/src/__tests__/helpers/msw/handlers/oauth.ts +36 -0
  42. package/src/__tests__/helpers/msw/handlers/r2.ts +80 -0
  43. package/src/__tests__/helpers/msw/handlers/script.ts +75 -0
  44. package/src/__tests__/helpers/msw/handlers/user.ts +63 -0
  45. package/src/__tests__/helpers/msw/handlers/zones.ts +22 -0
  46. package/src/__tests__/helpers/msw/index.ts +21 -0
  47. package/src/__tests__/helpers/run-in-tmp.ts +38 -0
  48. package/src/__tests__/helpers/run-wrangler.ts +16 -0
  49. package/src/__tests__/helpers/worker-scripts/child-wrangler.toml +1 -0
  50. package/src/__tests__/helpers/worker-scripts/hello-world-worker.js +5 -0
  51. package/src/__tests__/helpers/worker-scripts/hello-world-wrangler.toml +1 -0
  52. package/src/__tests__/helpers/worker-scripts/parent-worker.js +8 -0
  53. package/src/__tests__/helpers/worker-scripts/parent-wrangler.toml +5 -0
  54. package/src/__tests__/helpers/write-worker-source.ts +31 -0
  55. package/src/__tests__/helpers/write-wrangler-toml.ts +17 -0
  56. package/src/__tests__/https-options.test.ts +163 -0
  57. package/src/__tests__/index.test.ts +259 -284
  58. package/src/__tests__/init.test.ts +2900 -0
  59. package/src/__tests__/jest.setup.ts +190 -10
  60. package/src/__tests__/kv.test.ts +1668 -1091
  61. package/src/__tests__/logger.test.ts +141 -0
  62. package/src/__tests__/metrics.test.ts +450 -0
  63. package/src/__tests__/middleware.scheduled.test.ts +135 -0
  64. package/src/__tests__/middleware.test.ts +726 -0
  65. package/src/__tests__/package-manager.test.ts +353 -0
  66. package/src/__tests__/pages.test.ts +2223 -0
  67. package/src/__tests__/parse.test.ts +330 -0
  68. package/src/__tests__/paths.test.ts +39 -0
  69. package/src/__tests__/publish.test.ts +7660 -0
  70. package/src/__tests__/pubsub.test.ts +370 -0
  71. package/src/__tests__/queues.test.ts +371 -0
  72. package/src/__tests__/r2.test.ts +376 -0
  73. package/src/__tests__/route.test.ts +45 -0
  74. package/src/__tests__/secret.test.ts +644 -0
  75. package/src/__tests__/tail.test.ts +800 -0
  76. package/src/__tests__/test-old-node-version.js +31 -0
  77. package/src/__tests__/type-generation.test.ts +217 -0
  78. package/src/__tests__/user.test.ts +155 -0
  79. package/src/__tests__/utils-collectKeyValues.test.ts +47 -0
  80. package/src/__tests__/validate-dev-props.test.ts +56 -0
  81. package/src/__tests__/version.test.ts +35 -0
  82. package/src/__tests__/whoami.test.tsx +278 -0
  83. package/src/__tests__/worker-namespace.test.ts +326 -0
  84. package/src/abort.d.ts +3 -0
  85. package/src/api/dev.ts +208 -0
  86. package/src/api/index.ts +2 -0
  87. package/src/bundle-reporter.tsx +68 -0
  88. package/src/bundle.ts +785 -0
  89. package/src/cfetch/index.ts +128 -70
  90. package/src/cfetch/internal.ts +240 -46
  91. package/src/cli.ts +25 -6
  92. package/src/config/README.md +107 -0
  93. package/src/config/config.ts +275 -0
  94. package/src/config/diagnostics.ts +80 -0
  95. package/src/config/environment.ts +563 -0
  96. package/src/config/index.ts +342 -0
  97. package/src/config/validation-helpers.ts +597 -0
  98. package/src/config/validation.ts +2113 -0
  99. package/src/config-cache.ts +85 -0
  100. package/src/create-worker-preview.ts +282 -0
  101. package/src/create-worker-upload-form.ts +321 -0
  102. package/src/d1/backups.tsx +218 -0
  103. package/src/d1/create.tsx +54 -0
  104. package/src/d1/delete.tsx +56 -0
  105. package/src/d1/execute.tsx +299 -0
  106. package/src/d1/formatTimeAgo.ts +14 -0
  107. package/src/d1/index.ts +76 -0
  108. package/src/d1/list.tsx +48 -0
  109. package/src/d1/options.ts +12 -0
  110. package/src/d1/types.tsx +14 -0
  111. package/src/d1/utils.ts +39 -0
  112. package/src/delete.ts +108 -0
  113. package/src/deployments.ts +74 -0
  114. package/src/deprecated/index.ts +438 -0
  115. package/src/dev/dev-vars.ts +39 -0
  116. package/src/dev/dev.tsx +587 -0
  117. package/src/dev/get-local-persistence-path.tsx +31 -0
  118. package/src/dev/local.tsx +717 -0
  119. package/src/dev/remote.tsx +603 -0
  120. package/src/dev/start-server.ts +513 -0
  121. package/src/dev/use-esbuild.ts +204 -0
  122. package/src/dev/validate-dev-props.ts +31 -0
  123. package/src/dev-registry.tsx +201 -0
  124. package/src/dev.tsx +848 -750
  125. package/src/dialogs.tsx +146 -60
  126. package/src/dispatch-namespace.ts +207 -0
  127. package/src/durable.ts +102 -0
  128. package/src/entry.ts +329 -0
  129. package/src/environment-variables.ts +50 -0
  130. package/src/errors.ts +11 -0
  131. package/src/git-client.ts +124 -0
  132. package/src/global-wrangler-config-path.ts +26 -0
  133. package/src/https-options.ts +127 -0
  134. package/src/index.tsx +669 -1959
  135. package/src/init.ts +970 -0
  136. package/src/inspect.ts +720 -477
  137. package/src/intl-polyfill.d.ts +139 -0
  138. package/src/is-ci.ts +14 -0
  139. package/src/is-interactive.ts +16 -0
  140. package/src/kv/helpers.ts +430 -0
  141. package/src/kv/index.ts +596 -0
  142. package/src/logger.ts +92 -0
  143. package/src/metrics/index.ts +5 -0
  144. package/src/metrics/metrics-config.ts +239 -0
  145. package/src/metrics/metrics-dispatcher.ts +96 -0
  146. package/src/metrics/metrics-usage-headers.ts +24 -0
  147. package/src/metrics/send-event.ts +94 -0
  148. package/src/miniflare-cli/README.md +30 -0
  149. package/src/miniflare-cli/assets.ts +215 -0
  150. package/src/miniflare-cli/index.ts +213 -0
  151. package/src/miniflare-cli/request-context.ts +40 -0
  152. package/src/module-collection.ts +256 -53
  153. package/src/open-in-browser.ts +17 -0
  154. package/src/package-manager.ts +219 -0
  155. package/src/pages/build.tsx +238 -0
  156. package/src/pages/constants.ts +18 -0
  157. package/src/pages/deployments.tsx +106 -0
  158. package/src/pages/dev.tsx +693 -0
  159. package/src/pages/errors.ts +66 -0
  160. package/src/pages/functions/buildPlugin.ts +110 -0
  161. package/src/pages/functions/buildWorker.ts +156 -0
  162. package/src/pages/functions/filepath-routing.test.ts +234 -0
  163. package/src/pages/functions/filepath-routing.ts +189 -0
  164. package/src/pages/functions/identifiers.ts +78 -0
  165. package/src/pages/functions/routes-consolidation.test.ts +250 -0
  166. package/src/pages/functions/routes-consolidation.ts +73 -0
  167. package/src/pages/functions/routes-transformation.test.ts +282 -0
  168. package/src/pages/functions/routes-transformation.ts +115 -0
  169. package/src/pages/functions/routes-validation.test.ts +403 -0
  170. package/src/pages/functions/routes-validation.ts +202 -0
  171. package/src/pages/functions/routes.ts +151 -0
  172. package/src/pages/functions.tsx +82 -0
  173. package/src/pages/hash.tsx +13 -0
  174. package/src/pages/index.tsx +94 -0
  175. package/src/pages/projects.tsx +169 -0
  176. package/src/pages/publish.tsx +436 -0
  177. package/src/pages/types.ts +49 -0
  178. package/src/pages/upload.tsx +425 -0
  179. package/src/pages/utils.ts +12 -0
  180. package/src/parse.ts +286 -0
  181. package/src/paths.ts +71 -0
  182. package/src/proxy.ts +647 -252
  183. package/src/publish/index.ts +270 -0
  184. package/src/publish/publish.ts +1035 -0
  185. package/src/pubsub/index.ts +286 -0
  186. package/src/pubsub/pubsub-commands.tsx +624 -0
  187. package/src/queues/cli/commands/consumer/add.ts +71 -0
  188. package/src/queues/cli/commands/consumer/index.ts +22 -0
  189. package/src/queues/cli/commands/consumer/remove.ts +38 -0
  190. package/src/queues/cli/commands/create.ts +25 -0
  191. package/src/queues/cli/commands/delete.ts +26 -0
  192. package/src/queues/cli/commands/index.ts +33 -0
  193. package/src/queues/cli/commands/list.ts +25 -0
  194. package/src/queues/client.ts +135 -0
  195. package/src/r2/helpers.ts +131 -0
  196. package/src/r2/index.ts +277 -0
  197. package/src/routes.ts +140 -0
  198. package/src/secret/index.ts +379 -0
  199. package/src/selfsigned.d.ts +29 -0
  200. package/src/sites.tsx +357 -99
  201. package/src/tail/createTail.ts +315 -0
  202. package/src/tail/filters.ts +277 -0
  203. package/src/tail/index.ts +214 -0
  204. package/src/tail/printing.ts +107 -0
  205. package/src/type-generation.ts +159 -0
  206. package/src/update-check.ts +19 -0
  207. package/src/user/access.ts +69 -0
  208. package/src/user/choose-account.tsx +69 -0
  209. package/src/user/env-vars.ts +46 -0
  210. package/src/user/generate-auth-url.ts +33 -0
  211. package/src/user/generate-random-state.ts +16 -0
  212. package/src/user/index.ts +3 -0
  213. package/src/user/user.tsx +1192 -0
  214. package/src/utils/collectKeyValues.ts +14 -0
  215. package/src/whoami.tsx +169 -0
  216. package/src/worker.ts +242 -0
  217. package/src/yargs-types.ts +20 -0
  218. package/src/zones.ts +191 -0
  219. package/templates/__tests__/pages-dev-util.test.ts +128 -0
  220. package/templates/checked-fetch.js +17 -0
  221. package/templates/d1-beta-facade.js +174 -0
  222. package/templates/experimental-local-cache-stubs.js +27 -0
  223. package/templates/first-party-worker-module-facade.ts +18 -0
  224. package/templates/format-dev-errors.ts +32 -0
  225. package/templates/gitignore +171 -0
  226. package/templates/init-tests/test-jest-new-worker.js +25 -0
  227. package/templates/init-tests/test-vitest-new-worker.js +26 -0
  228. package/templates/middleware/common.ts +62 -0
  229. package/templates/middleware/loader-modules.ts +84 -0
  230. package/templates/middleware/loader-sw.ts +213 -0
  231. package/templates/middleware/middleware-pretty-error.ts +40 -0
  232. package/templates/middleware/middleware-scheduled.ts +15 -0
  233. package/templates/new-worker-scheduled.js +17 -0
  234. package/templates/new-worker-scheduled.ts +32 -0
  235. package/templates/new-worker.js +15 -0
  236. package/templates/new-worker.ts +30 -0
  237. package/templates/no-op-worker.js +10 -0
  238. package/templates/pages-dev-pipeline.ts +28 -0
  239. package/templates/pages-dev-util.ts +52 -0
  240. package/templates/pages-shim.ts +9 -0
  241. package/templates/pages-template-plugin.ts +171 -0
  242. package/templates/pages-template-worker.ts +189 -0
  243. package/templates/serve-static-assets.ts +63 -0
  244. package/templates/service-bindings-module-facade.js +54 -0
  245. package/templates/service-bindings-sw-facade.js +42 -0
  246. package/templates/tsconfig.json +106 -0
  247. package/wrangler-dist/cli.d.ts +892 -0
  248. package/wrangler-dist/cli.js +142402 -103276
  249. package/pages/functions/buildWorker.ts +0 -62
  250. package/pages/functions/filepath-routing.test.ts +0 -39
  251. package/pages/functions/filepath-routing.ts +0 -221
  252. package/pages/functions/identifiers.ts +0 -78
  253. package/pages/functions/routes.ts +0 -158
  254. package/pages/functions/template-worker.ts +0 -144
  255. package/src/__tests__/mock-cfetch.ts +0 -171
  256. package/src/__tests__/mock-dialogs.ts +0 -65
  257. package/src/__tests__/run-in-tmp.ts +0 -19
  258. package/src/__tests__/run-wrangler.ts +0 -32
  259. package/src/api/form_data.ts +0 -131
  260. package/src/api/preview.ts +0 -128
  261. package/src/api/worker.ts +0 -155
  262. package/src/config.ts +0 -487
  263. package/src/kv.tsx +0 -267
  264. package/src/pages.tsx +0 -1031
  265. package/src/publish.ts +0 -358
  266. package/src/tail.tsx +0 -73
  267. package/src/user.tsx +0 -1025
  268. package/static-asset-facade.js +0 -47
  269. package/vendor/@cloudflare/kv-asset-handler/CHANGELOG.md +0 -332
  270. package/vendor/@cloudflare/kv-asset-handler/LICENSE_APACHE +0 -176
  271. package/vendor/@cloudflare/kv-asset-handler/LICENSE_MIT +0 -25
  272. package/vendor/@cloudflare/kv-asset-handler/README.md +0 -245
  273. package/vendor/@cloudflare/kv-asset-handler/dist/index.d.ts +0 -32
  274. package/vendor/@cloudflare/kv-asset-handler/dist/index.js +0 -354
  275. package/vendor/@cloudflare/kv-asset-handler/dist/mocks.d.ts +0 -13
  276. package/vendor/@cloudflare/kv-asset-handler/dist/mocks.js +0 -148
  277. package/vendor/@cloudflare/kv-asset-handler/dist/test/getAssetFromKV.d.ts +0 -1
  278. package/vendor/@cloudflare/kv-asset-handler/dist/test/getAssetFromKV.js +0 -436
  279. package/vendor/@cloudflare/kv-asset-handler/dist/test/mapRequestToAsset.d.ts +0 -1
  280. package/vendor/@cloudflare/kv-asset-handler/dist/test/mapRequestToAsset.js +0 -40
  281. package/vendor/@cloudflare/kv-asset-handler/dist/test/serveSinglePageApp.d.ts +0 -1
  282. package/vendor/@cloudflare/kv-asset-handler/dist/test/serveSinglePageApp.js +0 -42
  283. package/vendor/@cloudflare/kv-asset-handler/dist/types.d.ts +0 -26
  284. package/vendor/@cloudflare/kv-asset-handler/dist/types.js +0 -31
  285. package/vendor/@cloudflare/kv-asset-handler/package.json +0 -52
  286. package/vendor/@cloudflare/kv-asset-handler/src/index.ts +0 -296
  287. package/vendor/@cloudflare/kv-asset-handler/src/mocks.ts +0 -136
  288. package/vendor/@cloudflare/kv-asset-handler/src/test/getAssetFromKV.ts +0 -464
  289. package/vendor/@cloudflare/kv-asset-handler/src/test/mapRequestToAsset.ts +0 -33
  290. package/vendor/@cloudflare/kv-asset-handler/src/test/serveSinglePageApp.ts +0 -42
  291. package/vendor/@cloudflare/kv-asset-handler/src/types.ts +0 -39
  292. package/vendor/wrangler-mime/CHANGELOG.md +0 -289
  293. package/vendor/wrangler-mime/LICENSE +0 -21
  294. package/vendor/wrangler-mime/Mime.js +0 -97
  295. package/vendor/wrangler-mime/README.md +0 -187
  296. package/vendor/wrangler-mime/cli.js +0 -46
  297. package/vendor/wrangler-mime/index.js +0 -4
  298. package/vendor/wrangler-mime/lite.js +0 -4
  299. package/vendor/wrangler-mime/package.json +0 -52
  300. package/vendor/wrangler-mime/types/other.js +0 -1
  301. package/vendor/wrangler-mime/types/standard.js +0 -1
  302. package/wrangler-dist/cli.js.map +0 -7
@@ -0,0 +1,104 @@
1
+ import { rest } from "msw";
2
+
3
+ export const mswSuccessNamespacesHandlers = [
4
+ rest.post(
5
+ "*/accounts/:accountId/workers/dispatch/namespaces",
6
+ (_, response, context) => {
7
+ return response.once(
8
+ context.status(200),
9
+ context.json({
10
+ success: true,
11
+ errors: [],
12
+ messages: [],
13
+ result: {
14
+ namespace_id: "some-namespace-id",
15
+ namespace_name: "namespace-name",
16
+ created_on: "2022-06-29T14:30:08.16152Z",
17
+ created_by: "1fc1df98cc4420fe00367c3ab68c1639",
18
+ modified_on: "2022-06-29T14:30:08.16152Z",
19
+ modified_by: "1fc1df98cc4420fe00367c3ab68c1639",
20
+ },
21
+ })
22
+ );
23
+ }
24
+ ),
25
+ rest.delete(
26
+ "*/accounts/:accountId/workers/dispatch/namespaces/:namespaceName",
27
+ (_, response, context) => {
28
+ return response.once(
29
+ context.status(200),
30
+ context.json({
31
+ success: true,
32
+ errors: [],
33
+ messages: [],
34
+ result: null,
35
+ })
36
+ );
37
+ }
38
+ ),
39
+ rest.put(
40
+ "*/accounts/:accountId/workers/dispatch/namespaces/:namespaceName",
41
+ (_, response, context) => {
42
+ return response.once(
43
+ context.status(200),
44
+ context.json({
45
+ success: true,
46
+ errors: [],
47
+ messages: [],
48
+ result: {
49
+ namespace_id: "some-namespace-id",
50
+ namespace_name: "namespace-name",
51
+ created_on: "2022-06-29T14:30:08.16152Z",
52
+ created_by: "1fc1df98cc4420fe00367c3ab68c1639",
53
+ modified_on: "2022-06-29T14:30:08.16152Z",
54
+ modified_by: "1fc1df98cc4420fe00367c3ab68c1639",
55
+ },
56
+ })
57
+ );
58
+ }
59
+ ),
60
+ rest.get(
61
+ "*/accounts/:accountId/workers/dispatch/namespaces/:namespaceName",
62
+ (_, response, context) => {
63
+ return response.once(
64
+ context.status(200),
65
+ context.json({
66
+ success: true,
67
+ errors: [],
68
+ messages: [],
69
+ result: {
70
+ namespace_id: "some-namespace-id",
71
+ namespace_name: "namespace-name",
72
+ created_on: "2022-06-29T14:30:08.16152Z",
73
+ created_by: "1fc1df98cc4420fe00367c3ab68c1639",
74
+ modified_on: "2022-06-29T14:30:08.16152Z",
75
+ modified_by: "1fc1df98cc4420fe00367c3ab68c1639",
76
+ },
77
+ })
78
+ );
79
+ }
80
+ ),
81
+ rest.get(
82
+ "*/accounts/:accountId/workers/dispatch/namespaces",
83
+ (_, response, context) => {
84
+ return response.once(
85
+ context.status(200),
86
+ context.json({
87
+ success: true,
88
+ errors: [],
89
+ messages: [],
90
+ result: [
91
+ {
92
+ namespace_id: "some-namespace-id",
93
+ namespace_name: "namespace-name",
94
+ created_on: "2022-06-29T14:30:08.16152Z",
95
+ created_by: "1fc1df98cc4420fe00367c3ab68c1639",
96
+ modified_on: "2022-06-29T14:30:08.16152Z",
97
+ modified_by: "1fc1df98cc4420fe00367c3ab68c1639",
98
+ },
99
+ ],
100
+ })
101
+ );
102
+ }
103
+ ),
104
+ ];
@@ -0,0 +1,36 @@
1
+ import { rest } from "msw";
2
+
3
+ export const mswSuccessOauthHandlers = [
4
+ rest.all("*/oauth/callback", (_, response, context) => {
5
+ return response.once(
6
+ context.status(200),
7
+ context.json({
8
+ success: true,
9
+ errors: [],
10
+ messages: [],
11
+ code: "test-oauth-code",
12
+ })
13
+ );
14
+ }),
15
+ // revoke access token
16
+ rest.post(
17
+ "https://dash.cloudflare.com/oauth2/revoke",
18
+ (_, response, context) =>
19
+ response.once(context.status(200), context.text(""))
20
+ ),
21
+ // exchange (auth code | refresh token) for access token
22
+ rest.post(
23
+ "https://dash.cloudflare.com/oauth2/token",
24
+ (_, response, context) => {
25
+ return response.once(
26
+ context.status(200),
27
+ context.json({
28
+ access_token: "test-access-token",
29
+ expires_in: 100000,
30
+ refresh_token: "test-refresh-token",
31
+ scope: "account:read",
32
+ })
33
+ );
34
+ }
35
+ ),
36
+ ];
@@ -0,0 +1,80 @@
1
+ import { rest } from "msw";
2
+
3
+ export const mswSuccessR2handlers = [
4
+ // List endpoint r2Buckets
5
+ rest.get("*/accounts/:accountId/r2/buckets", (_, response, context) =>
6
+ response.once(
7
+ context.status(200),
8
+ context.json({
9
+ success: true,
10
+ errors: [],
11
+ messages: [],
12
+ result: {
13
+ buckets: [
14
+ { name: "bucket-1", creation_date: "01-01-2001" },
15
+ { name: "bucket-2", creation_date: "01-01-2001" },
16
+ ],
17
+ },
18
+ })
19
+ )
20
+ ),
21
+ rest.post("*/accounts/:accountId/r2/buckets", (_, response, context) =>
22
+ response.once(
23
+ context.status(200),
24
+ context.json({ success: true, errors: [], messages: [], result: {} })
25
+ )
26
+ ),
27
+ rest.put(
28
+ "*/accounts/:accountId/r2/buckets/:bucketName",
29
+ (_, response, context) =>
30
+ response.once(
31
+ context.status(200),
32
+ context.json({ success: true, errors: [], messages: [], result: {} })
33
+ )
34
+ ),
35
+ rest.delete(
36
+ "*/accounts/:accountId/r2/buckets/:bucketName",
37
+ (_, response, context) =>
38
+ response.once(
39
+ context.status(200),
40
+ context.json({ success: true, errors: [], messages: [], result: null })
41
+ )
42
+ ),
43
+ rest.get(
44
+ "*/accounts/:accountId/r2/buckets/:bucketName/objects/:objectName",
45
+ (_, response, context) => {
46
+ const imageBuffer = Buffer.from("wormhole-img.png");
47
+ return response.once(
48
+ context.set("Content-Length", imageBuffer.byteLength.toString()),
49
+ context.set("Content-Type", "image/png"),
50
+ context.status(200),
51
+ context.body(imageBuffer)
52
+ );
53
+ }
54
+ ),
55
+ rest.put(
56
+ "*/accounts/:accountId/r2/buckets/:bucketName/objects/:objectName",
57
+ (_, response, context) =>
58
+ response.once(
59
+ context.status(200),
60
+ context.json({
61
+ success: true,
62
+ errors: [],
63
+ messages: [],
64
+ result: {
65
+ accountId: "some-account-id",
66
+ bucketName: "bucketName-object-test",
67
+ objectName: "wormhole-img.png",
68
+ },
69
+ })
70
+ )
71
+ ),
72
+ rest.delete(
73
+ "*/accounts/:accountId/r2/buckets/:bucketName/objects/:objectName",
74
+ (_, response, context) =>
75
+ response.once(
76
+ context.status(200),
77
+ context.json({ success: true, errors: [], messages: [], result: null })
78
+ )
79
+ ),
80
+ ];
@@ -0,0 +1,75 @@
1
+ import { rest } from "msw";
2
+ import type { WorkerMetadata } from "../../../../create-worker-upload-form";
3
+
4
+ const bindings: Record<string, WorkerMetadata["bindings"]> = {
5
+ "durable-object": [
6
+ {
7
+ type: "durable_object_namespace",
8
+ name: "TestDO",
9
+ class_name: "TestDO",
10
+ },
11
+ ],
12
+ };
13
+ const scripts: Record<string, string> = {
14
+ websocket: `new WebSocket("ws://dummy")`,
15
+ response: `return new Response("ok")`,
16
+ };
17
+ function getBindings(scriptName: string) {
18
+ return scriptName.split("--").flatMap((part) => bindings[part] ?? []);
19
+ }
20
+ function getScript(scriptName: string) {
21
+ return `export default {fetch(request){
22
+ ${scriptName
23
+ .split("--")
24
+ .map((part) => scripts[part] ?? "")
25
+ .join(";\n")}
26
+ }}`;
27
+ }
28
+ export default [
29
+ rest.get(
30
+ "*/accounts/:accountId/workers/services/:scriptName/environments/:env/content",
31
+ ({ params: { scriptName } }, res, context) => {
32
+ return res(
33
+ context.status(200),
34
+ context.text(getScript(scriptName as string))
35
+ );
36
+ }
37
+ ),
38
+ rest.get(
39
+ "*/accounts/:accountId/workers/scripts/:scriptName",
40
+ ({ params: { scriptName } }, res, context) => {
41
+ return res(
42
+ context.status(200),
43
+ context.text(getScript(scriptName as string))
44
+ );
45
+ }
46
+ ),
47
+ rest.get(
48
+ "*/accounts/:accountId/workers/services/:scriptName/environments/:env/bindings",
49
+ ({ params: { scriptName } }, res, context) => {
50
+ return res(
51
+ context.status(200),
52
+ context.json({
53
+ success: true,
54
+ errors: [],
55
+ messages: [],
56
+ result: getBindings(scriptName as string),
57
+ })
58
+ );
59
+ }
60
+ ),
61
+ rest.get(
62
+ "*/accounts/:accountId/workers/scripts/:scriptName/bindings",
63
+ ({ params: { scriptName } }, res, context) => {
64
+ return res(
65
+ context.status(200),
66
+ context.json({
67
+ success: true,
68
+ errors: [],
69
+ messages: [],
70
+ result: getBindings(scriptName as string),
71
+ })
72
+ );
73
+ }
74
+ ),
75
+ ];
@@ -0,0 +1,63 @@
1
+ import { rest } from "msw";
2
+
3
+ export const mswSuccessUserHandlers = [
4
+ rest.get("*/user", (_, response, cxt) => {
5
+ return response.once(
6
+ cxt.status(200),
7
+ cxt.json({
8
+ success: true,
9
+ errors: [],
10
+ messages: [],
11
+ result: {
12
+ id: "7c5dae5552338874e5053f2534d2767a",
13
+ email: "user@example.com",
14
+ first_name: "John",
15
+ last_name: "Appleseed",
16
+ username: "cfuser12345",
17
+ telephone: "+1 123-123-1234",
18
+ country: "US",
19
+ zipcode: "12345",
20
+ created_on: "2014-01-01T05:20:00Z",
21
+ modified_on: "2014-01-01T05:20:00Z",
22
+ two_factor_authentication_enabled: false,
23
+ suspended: false,
24
+ },
25
+ })
26
+ );
27
+ }),
28
+ rest.get("*/accounts", (_, response, cxt) => {
29
+ return response.once(
30
+ cxt.status(200),
31
+ cxt.json({
32
+ success: true,
33
+ errors: [],
34
+ messages: [],
35
+ result: [
36
+ { name: "Account One", id: "account-1" },
37
+ { name: "Account Two", id: "account-2" },
38
+ { name: "Account Three", id: "account-3" },
39
+ ],
40
+ })
41
+ );
42
+ }),
43
+ rest.get("*/memberships", (_, response, context) => {
44
+ return response.once(
45
+ context.status(200),
46
+ context.json({
47
+ success: true,
48
+ errors: [],
49
+ messages: [],
50
+ result: [
51
+ {
52
+ id: "membership-id-1",
53
+ account: { id: "account-id-1", name: "My Personal Account" },
54
+ },
55
+ {
56
+ id: "membership-id-2",
57
+ account: { id: "account-id-2", name: "Enterprise Account" },
58
+ },
59
+ ],
60
+ })
61
+ );
62
+ }),
63
+ ];
@@ -0,0 +1,22 @@
1
+ import { rest } from "msw";
2
+
3
+ export default [
4
+ rest.get("*/zones", ({ url: { searchParams } }, res, context) => {
5
+ return res(
6
+ context.status(200),
7
+ context.json({
8
+ success: true,
9
+ errors: [],
10
+ messages: [],
11
+ result:
12
+ searchParams.get("name") === "exists.com"
13
+ ? [
14
+ {
15
+ id: "exists-com",
16
+ },
17
+ ]
18
+ : [],
19
+ })
20
+ );
21
+ }),
22
+ ];
@@ -0,0 +1,21 @@
1
+ import { setupServer } from "msw/node";
2
+ import { default as mswAccessHandlers } from "./handlers/access";
3
+ import { mswSuccessDeployments } from "./handlers/deployments";
4
+ import { mswSuccessNamespacesHandlers } from "./handlers/namespaces";
5
+ import { mswSuccessOauthHandlers } from "./handlers/oauth";
6
+ import { mswSuccessR2handlers } from "./handlers/r2";
7
+ import { default as mswSucessScriptHandlers } from "./handlers/script";
8
+ import { mswSuccessUserHandlers } from "./handlers/user";
9
+ import { default as mswZoneHandlers } from "./handlers/zones";
10
+ export const msw = setupServer();
11
+
12
+ export {
13
+ mswSuccessUserHandlers,
14
+ mswSuccessR2handlers,
15
+ mswSuccessOauthHandlers,
16
+ mswSuccessNamespacesHandlers,
17
+ mswSucessScriptHandlers,
18
+ mswZoneHandlers,
19
+ mswSuccessDeployments,
20
+ mswAccessHandlers,
21
+ };
@@ -0,0 +1,38 @@
1
+ import * as fs from "node:fs";
2
+ import os from "node:os";
3
+ import * as path from "node:path";
4
+ import { reinitialiseAuthTokens } from "../../user";
5
+
6
+ const originalCwd = process.cwd();
7
+
8
+ export function runInTempDir({ homedir } = { homedir: "./home" }) {
9
+ let tmpDir: string;
10
+
11
+ beforeEach(() => {
12
+ // Use realpath because the temporary path can point to a symlink rather than the actual path.
13
+ tmpDir = fs.realpathSync(
14
+ fs.mkdtempSync(path.join(os.tmpdir(), "wrangler-tests"))
15
+ );
16
+
17
+ process.chdir(tmpDir);
18
+ // The path that is returned from `homedir()` should be absolute.
19
+ const absHomedir = path.resolve(tmpDir, homedir);
20
+ // Override where the home directory is so that we can write our own user config,
21
+ // without destroying the real thing.
22
+ fs.mkdirSync(absHomedir, { recursive: true });
23
+ // Note it is very important that we use the "default" value from "node:os" (e.g. `import os from "node:os";`)
24
+ // rather than an alias to the module (e.g. `import * as os from "node:os";`).
25
+ // This is because the module gets transpiled so that the "method" `homedir()` gets converted to a
26
+ // getter that is not configurable (and so cannot be spied upon).
27
+ jest.spyOn(os, "homedir")?.mockReturnValue(absHomedir);
28
+ // Now that we have changed the home directory location, we must reinitialize the user auth state
29
+ reinitialiseAuthTokens();
30
+ });
31
+
32
+ afterEach(() => {
33
+ if (fs.existsSync(tmpDir)) {
34
+ process.chdir(originalCwd);
35
+ fs.rmSync(tmpDir, { recursive: true });
36
+ }
37
+ });
38
+ }
@@ -0,0 +1,16 @@
1
+ import { main } from "../../index";
2
+ import { normalizeSlashes, stripTimings } from "./mock-console";
3
+
4
+ /**
5
+ * A helper to 'run' wrangler commands for tests.
6
+ */
7
+ export async function runWrangler(cmd?: string) {
8
+ try {
9
+ await main(cmd?.split(" ") ?? []);
10
+ } catch (err) {
11
+ if (err instanceof Error) {
12
+ err.message = normalizeSlashes(stripTimings(err.message));
13
+ }
14
+ throw err;
15
+ }
16
+ }
@@ -0,0 +1 @@
1
+ name = 'child'
@@ -0,0 +1,5 @@
1
+ export default {
2
+ async fetch() {
3
+ return new Response("Hello World!");
4
+ },
5
+ };
@@ -0,0 +1 @@
1
+ name = 'hello-world'
@@ -0,0 +1,8 @@
1
+ export default {
2
+ async fetch(req, env) {
3
+ const resp = await env.CHILD.fetch(req);
4
+ const text = await resp.text();
5
+ console.log("text: ", text);
6
+ return new Response(`Parent worker sees: ${text}`);
7
+ },
8
+ };
@@ -0,0 +1,5 @@
1
+ name = 'parent'
2
+
3
+ [[services]]
4
+ binding = "CHILD"
5
+ service = 'child'
@@ -0,0 +1,31 @@
1
+ import fs from "node:fs";
2
+
3
+ /** Write a mock Worker script to disk. */
4
+ export function writeWorkerSource({
5
+ basePath = ".",
6
+ format = "js",
7
+ type = "esm",
8
+ }: {
9
+ basePath?: string;
10
+ format?: "js" | "ts" | "jsx" | "tsx" | "mjs";
11
+ type?: "esm" | "sw";
12
+ } = {}) {
13
+ if (basePath !== ".") {
14
+ fs.mkdirSync(basePath, { recursive: true });
15
+ }
16
+ fs.writeFileSync(
17
+ `${basePath}/index.${format}`,
18
+ type === "esm"
19
+ ? `import { foo } from "./another";
20
+ export default {
21
+ async fetch(request) {
22
+ return new Response('Hello' + foo);
23
+ },
24
+ };`
25
+ : `import { foo } from "./another";
26
+ addEventListener('fetch', event => {
27
+ event.respondWith(new Response('Hello' + foo));
28
+ })`
29
+ );
30
+ fs.writeFileSync(`${basePath}/another.${format}`, `export const foo = 100;`);
31
+ }
@@ -0,0 +1,17 @@
1
+ import * as fs from "fs";
2
+ import TOML from "@iarna/toml";
3
+ import type { RawConfig } from "../../config";
4
+
5
+ /** Write a mock wrangler.toml file to disk. */
6
+ export default function writeWranglerToml(config: RawConfig = {}) {
7
+ fs.writeFileSync(
8
+ "./wrangler.toml",
9
+ TOML.stringify({
10
+ compatibility_date: "2022-01-12",
11
+ name: "test-name",
12
+ ...(config as TOML.JsonMap),
13
+ }),
14
+
15
+ "utf-8"
16
+ );
17
+ }