wrangler 0.0.0-e3ce82b → 0.0.0-e41c7e41

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 (264) hide show
  1. package/README.md +23 -3
  2. package/bin/wrangler.js +150 -62
  3. package/kv-asset-handler.js +1 -0
  4. package/miniflare-dist/index.mjs +1451 -21
  5. package/package.json +191 -153
  6. package/src/__tests__/access.test.ts +25 -0
  7. package/src/__tests__/api-dev.test.ts +209 -0
  8. package/src/__tests__/api-devregistry.test.js +56 -0
  9. package/src/__tests__/api.test.ts +80 -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 +3970 -3476
  13. package/src/__tests__/d1.test.ts +80 -0
  14. package/src/__tests__/delete.test.ts +230 -0
  15. package/src/__tests__/deployments.test.ts +91 -0
  16. package/src/__tests__/dev.test.tsx +1508 -955
  17. package/src/__tests__/dialogs.test.tsx +40 -0
  18. package/src/__tests__/generate.test.ts +235 -0
  19. package/src/__tests__/get-host-from-url.test.ts +16 -0
  20. package/src/__tests__/guess-worker-format.test.ts +68 -68
  21. package/src/__tests__/helpers/cmd-shim.d.ts +6 -6
  22. package/src/__tests__/helpers/mock-account-id.ts +24 -24
  23. package/src/__tests__/helpers/mock-bin.ts +20 -20
  24. package/src/__tests__/helpers/mock-cfetch.ts +216 -94
  25. package/src/__tests__/helpers/mock-console.ts +58 -39
  26. package/src/__tests__/helpers/mock-dialogs.ts +94 -71
  27. package/src/__tests__/helpers/mock-get-zone-from-host.ts +8 -0
  28. package/src/__tests__/helpers/mock-http-server.ts +30 -30
  29. package/src/__tests__/helpers/mock-istty.ts +65 -18
  30. package/src/__tests__/helpers/mock-known-routes.ts +7 -0
  31. package/src/__tests__/helpers/mock-kv.ts +27 -27
  32. package/src/__tests__/helpers/mock-oauth-flow.ts +225 -228
  33. package/src/__tests__/helpers/mock-process.ts +39 -0
  34. package/src/__tests__/helpers/mock-stdin.ts +82 -77
  35. package/src/__tests__/helpers/mock-web-socket.ts +21 -21
  36. package/src/__tests__/helpers/msw/handlers/access.ts +13 -0
  37. package/src/__tests__/helpers/msw/handlers/deployments.ts +59 -0
  38. package/src/__tests__/helpers/msw/handlers/namespaces.ts +104 -0
  39. package/src/__tests__/helpers/msw/handlers/oauth.ts +36 -0
  40. package/src/__tests__/helpers/msw/handlers/r2.ts +80 -0
  41. package/src/__tests__/helpers/msw/handlers/script.ts +75 -0
  42. package/src/__tests__/helpers/msw/handlers/user.ts +63 -0
  43. package/src/__tests__/helpers/msw/handlers/zones.ts +22 -0
  44. package/src/__tests__/helpers/msw/index.ts +21 -0
  45. package/src/__tests__/helpers/run-in-tmp.ts +27 -28
  46. package/src/__tests__/helpers/run-wrangler.ts +8 -8
  47. package/src/__tests__/helpers/worker-scripts/child-wrangler.toml +1 -0
  48. package/src/__tests__/helpers/worker-scripts/hello-world-worker.js +5 -0
  49. package/src/__tests__/helpers/worker-scripts/hello-world-wrangler.toml +1 -0
  50. package/src/__tests__/helpers/worker-scripts/parent-worker.js +8 -0
  51. package/src/__tests__/helpers/worker-scripts/parent-wrangler.toml +5 -0
  52. package/src/__tests__/helpers/write-worker-source.ts +16 -16
  53. package/src/__tests__/helpers/write-wrangler-toml.ts +9 -9
  54. package/src/__tests__/https-options.test.ts +142 -109
  55. package/src/__tests__/index.test.ts +241 -234
  56. package/src/__tests__/init.test.ts +2869 -1606
  57. package/src/__tests__/jest.setup.ts +159 -34
  58. package/src/__tests__/kv.test.ts +1660 -1466
  59. package/src/__tests__/logger.test.ts +100 -74
  60. package/src/__tests__/metrics.test.ts +450 -0
  61. package/src/__tests__/middleware.scheduled.test.ts +135 -0
  62. package/src/__tests__/middleware.test.ts +726 -0
  63. package/src/__tests__/package-manager.test.ts +303 -303
  64. package/src/__tests__/pages-deployment-tail.test.ts +820 -0
  65. package/src/__tests__/pages.test.ts +2423 -735
  66. package/src/__tests__/parse.test.ts +252 -252
  67. package/src/__tests__/paths.test.ts +39 -0
  68. package/src/__tests__/publish.test.ts +7505 -5627
  69. package/src/__tests__/pubsub.test.ts +370 -0
  70. package/src/__tests__/queues.test.ts +371 -0
  71. package/src/__tests__/r2.test.ts +388 -228
  72. package/src/__tests__/route.test.ts +18 -18
  73. package/src/__tests__/secret.test.ts +622 -459
  74. package/src/__tests__/tail.test.ts +677 -567
  75. package/src/__tests__/test-old-node-version.js +31 -0
  76. package/src/__tests__/type-generation.test.ts +226 -0
  77. package/src/__tests__/user.test.ts +140 -116
  78. package/src/__tests__/utils-collectKeyValues.test.ts +47 -0
  79. package/src/__tests__/validate-dev-props.test.ts +56 -0
  80. package/src/__tests__/version.test.ts +35 -0
  81. package/src/__tests__/whoami.test.tsx +264 -125
  82. package/src/__tests__/worker-namespace.test.ts +326 -0
  83. package/src/abort.d.ts +1 -1
  84. package/src/api/dev.ts +210 -0
  85. package/src/api/index.ts +2 -0
  86. package/src/bundle-reporter.tsx +68 -0
  87. package/src/bundle.ts +785 -159
  88. package/src/cfetch/index.ts +120 -81
  89. package/src/cfetch/internal.ts +207 -86
  90. package/src/cli.ts +23 -8
  91. package/src/config/config.ts +236 -195
  92. package/src/config/diagnostics.ts +61 -61
  93. package/src/config/environment.ts +498 -357
  94. package/src/config/index.ts +302 -193
  95. package/src/config/validation-helpers.ts +379 -366
  96. package/src/config/validation.ts +1931 -1376
  97. package/src/config-cache.ts +81 -41
  98. package/src/create-worker-preview.ts +239 -142
  99. package/src/create-worker-upload-form.ts +300 -238
  100. package/src/d1/backups.tsx +218 -0
  101. package/src/d1/constants.ts +2 -0
  102. package/src/d1/create.tsx +63 -0
  103. package/src/d1/delete.tsx +56 -0
  104. package/src/d1/execute.tsx +352 -0
  105. package/src/d1/formatTimeAgo.ts +14 -0
  106. package/src/d1/index.ts +99 -0
  107. package/src/d1/list.tsx +48 -0
  108. package/src/d1/migrations.tsx +446 -0
  109. package/src/d1/options.ts +22 -0
  110. package/src/d1/types.tsx +24 -0
  111. package/src/d1/utils.ts +48 -0
  112. package/src/delete.ts +108 -0
  113. package/src/deployments.ts +77 -0
  114. package/src/deprecated/index.ts +438 -0
  115. package/src/dev/dev-vars.ts +20 -17
  116. package/src/dev/dev.tsx +522 -333
  117. package/src/dev/get-local-persistence-path.tsx +31 -0
  118. package/src/dev/local.tsx +866 -302
  119. package/src/dev/remote.tsx +591 -225
  120. package/src/dev/start-server.ts +538 -0
  121. package/src/dev/use-esbuild.ts +183 -97
  122. package/src/dev/validate-dev-props.ts +31 -0
  123. package/src/dev-registry.tsx +201 -0
  124. package/src/dev.tsx +905 -0
  125. package/src/dialogs.tsx +132 -99
  126. package/src/dispatch-namespace.ts +207 -0
  127. package/src/durable.ts +87 -87
  128. package/src/entry.ts +235 -228
  129. package/src/environment-variables.ts +38 -23
  130. package/src/errors.ts +6 -6
  131. package/src/git-client.ts +124 -0
  132. package/src/global-wrangler-config-path.ts +26 -0
  133. package/src/https-options.ts +84 -80
  134. package/src/index.tsx +625 -2789
  135. package/src/init.ts +970 -0
  136. package/src/inspect.ts +698 -593
  137. package/src/intl-polyfill.d.ts +123 -123
  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 +67 -41
  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 +96 -0
  148. package/src/miniflare-cli/assets.ts +215 -0
  149. package/src/miniflare-cli/index.ts +205 -33
  150. package/src/miniflare-cli/request-context.ts +18 -18
  151. package/src/module-collection.ts +221 -212
  152. package/src/open-in-browser.ts +4 -6
  153. package/src/package-manager.ts +173 -128
  154. package/src/pages/build.tsx +270 -0
  155. package/src/pages/constants.ts +18 -0
  156. package/src/pages/deployment-tails.tsx +284 -0
  157. package/src/pages/deployments.tsx +84 -0
  158. package/src/pages/dev.tsx +708 -0
  159. package/src/pages/errors.ts +66 -0
  160. package/src/pages/functions/buildPlugin.ts +107 -0
  161. package/src/pages/functions/buildWorker.ts +166 -0
  162. package/{pages → src/pages}/functions/filepath-routing.test.ts +113 -113
  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 +102 -0
  175. package/src/pages/projects.tsx +169 -0
  176. package/src/pages/prompt-select-project.tsx +31 -0
  177. package/src/pages/publish.tsx +451 -0
  178. package/src/pages/types.ts +41 -0
  179. package/src/pages/upload.tsx +426 -0
  180. package/src/pages/utils.ts +23 -0
  181. package/src/parse.ts +208 -125
  182. package/src/paths.ts +53 -8
  183. package/src/proxy.ts +618 -407
  184. package/src/publish/index.ts +270 -0
  185. package/src/publish/publish.ts +1035 -0
  186. package/src/pubsub/index.ts +286 -0
  187. package/src/pubsub/pubsub-commands.tsx +624 -0
  188. package/src/queues/cli/commands/consumer/add.ts +71 -0
  189. package/src/queues/cli/commands/consumer/index.ts +22 -0
  190. package/src/queues/cli/commands/consumer/remove.ts +38 -0
  191. package/src/queues/cli/commands/create.ts +25 -0
  192. package/src/queues/cli/commands/delete.ts +26 -0
  193. package/src/queues/cli/commands/index.ts +33 -0
  194. package/src/queues/cli/commands/list.ts +25 -0
  195. package/src/queues/client.ts +135 -0
  196. package/src/r2/constants.ts +4 -0
  197. package/src/r2/helpers.ts +131 -0
  198. package/src/r2/index.ts +289 -0
  199. package/src/routes.ts +140 -0
  200. package/src/secret/index.ts +378 -0
  201. package/src/selfsigned.d.ts +23 -23
  202. package/src/sites.tsx +273 -227
  203. package/src/tail/createTail.ts +379 -0
  204. package/src/tail/filters.ts +108 -110
  205. package/src/tail/index.ts +211 -296
  206. package/src/tail/printing.ts +86 -46
  207. package/src/type-generation.ts +173 -0
  208. package/src/update-check.ts +11 -11
  209. package/src/user/access.ts +69 -0
  210. package/src/user/choose-account.tsx +69 -0
  211. package/src/user/env-vars.ts +46 -0
  212. package/src/user/generate-auth-url.ts +33 -0
  213. package/src/user/generate-random-state.ts +16 -0
  214. package/src/user/index.ts +3 -0
  215. package/src/user/user.tsx +1192 -0
  216. package/src/utils/collectKeyValues.ts +14 -0
  217. package/src/whoami.tsx +141 -43
  218. package/src/worker.ts +171 -107
  219. package/src/yargs-types.ts +24 -0
  220. package/src/zones.ts +158 -40
  221. package/templates/__tests__/pages-dev-util.test.ts +128 -0
  222. package/templates/checked-fetch.js +17 -0
  223. package/templates/d1-beta-facade.js +205 -0
  224. package/templates/first-party-worker-module-facade.ts +18 -0
  225. package/templates/format-dev-errors.ts +32 -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 +227 -0
  231. package/templates/middleware/middleware-miniflare3-json-error.ts +20 -0
  232. package/templates/middleware/middleware-pretty-error.ts +40 -0
  233. package/templates/middleware/middleware-scheduled.ts +15 -0
  234. package/templates/new-worker-scheduled.js +3 -3
  235. package/templates/new-worker-scheduled.ts +15 -15
  236. package/templates/new-worker.js +3 -3
  237. package/templates/new-worker.ts +15 -15
  238. package/templates/no-op-worker.js +10 -0
  239. package/templates/pages-dev-pipeline.ts +28 -0
  240. package/templates/pages-dev-util.ts +52 -0
  241. package/templates/pages-shim.ts +9 -0
  242. package/templates/pages-template-plugin.ts +171 -0
  243. package/templates/pages-template-worker.ts +189 -0
  244. package/templates/serve-static-assets.ts +63 -0
  245. package/templates/service-bindings-module-facade.js +54 -0
  246. package/templates/service-bindings-sw-facade.js +42 -0
  247. package/templates/tsconfig.json +96 -95
  248. package/wrangler-dist/cli.d.ts +893 -0
  249. package/wrangler-dist/cli.js +146109 -108690
  250. package/pages/functions/buildPlugin.ts +0 -105
  251. package/pages/functions/buildWorker.ts +0 -151
  252. package/pages/functions/filepath-routing.ts +0 -189
  253. package/pages/functions/identifiers.ts +0 -78
  254. package/pages/functions/routes.ts +0 -156
  255. package/pages/functions/template-plugin.ts +0 -147
  256. package/pages/functions/template-worker.ts +0 -143
  257. package/src/__tests__/helpers/faye-websocket.d.ts +0 -6
  258. package/src/kv.ts +0 -408
  259. package/src/miniflare-cli/enum-keys.ts +0 -17
  260. package/src/pages.tsx +0 -2093
  261. package/src/publish.ts +0 -721
  262. package/src/r2.ts +0 -50
  263. package/src/user.tsx +0 -1214
  264. package/templates/static-asset-facade.js +0 -43
@@ -4,32 +4,32 @@ const ORIGINAL_STDIN = process.stdin;
4
4
  * Mock process.stdin so that we can pipe in text for non-interactive mode tests.
5
5
  */
6
6
  export function useMockStdin({ isTTY }: { isTTY: boolean }) {
7
- const mockStdin = new MockStdIn(isTTY);
7
+ const mockStdin = new MockStdIn(isTTY);
8
8
 
9
- beforeEach(() => {
10
- mockStdin.reset();
11
- Object.defineProperty(process, "stdin", {
12
- value: mockStdin,
13
- configurable: true,
14
- writable: false,
15
- });
16
- });
9
+ beforeEach(() => {
10
+ mockStdin.reset();
11
+ Object.defineProperty(process, "stdin", {
12
+ value: mockStdin,
13
+ configurable: true,
14
+ writable: false,
15
+ });
16
+ });
17
17
 
18
- afterEach(() => {
19
- Object.defineProperty(process, "stdin", {
20
- value: ORIGINAL_STDIN,
21
- configurable: true,
22
- writable: false,
23
- });
24
- });
18
+ afterEach(() => {
19
+ Object.defineProperty(process, "stdin", {
20
+ value: ORIGINAL_STDIN,
21
+ configurable: true,
22
+ writable: false,
23
+ });
24
+ });
25
25
 
26
- return mockStdin;
26
+ return mockStdin;
27
27
  }
28
28
 
29
29
  const failCallback: (value: unknown) => void = () => {
30
- throw new Error(
31
- "TEST FAILURE: stdin callback called before being initialized."
32
- );
30
+ throw new Error(
31
+ "TEST FAILURE: stdin callback called before being initialized."
32
+ );
33
33
  };
34
34
 
35
35
  /**
@@ -37,67 +37,72 @@ const failCallback: (value: unknown) => void = () => {
37
37
  * into the wrangler process in non-interactive mode.
38
38
  */
39
39
  class MockStdIn {
40
- private endCallback = failCallback;
41
- private errorCallback = failCallback;
42
- private chunks: string[] = [];
43
- private error: Error | undefined;
40
+ private endCallback = failCallback;
41
+ private errorCallback = failCallback;
42
+ private chunks: string[] = [];
43
+ private error: Error | undefined;
44
44
 
45
- /**
46
- * Set this to true if you want the stdin stream to error.
47
- */
48
- throwError(error: Error) {
49
- this.error = error;
50
- }
45
+ /**
46
+ * Set this to true if you want the stdin stream to error.
47
+ */
48
+ throwError(error: Error) {
49
+ this.error = error;
50
+ }
51
51
 
52
- /**
53
- * Call this to clean out the chunks that are queued for sending.
54
- */
55
- reset() {
56
- this.chunks.length = 0;
57
- this.error = undefined;
58
- }
52
+ /**
53
+ * Call this to clean out the chunks that are queued for sending.
54
+ */
55
+ reset() {
56
+ this.chunks.length = 0;
57
+ this.error = undefined;
58
+ }
59
59
 
60
- /**
61
- * Queue up some chunks to be sent.
62
- */
63
- send(...chunks: string[]) {
64
- this.chunks.push(...chunks);
65
- }
60
+ /**
61
+ * Queue up some chunks to be sent.
62
+ */
63
+ send(...chunks: string[]) {
64
+ this.chunks.push(...chunks);
65
+ }
66
66
 
67
- constructor(
68
- /**
69
- * Used by wrangler to check whether stdin is interactive.
70
- */
71
- readonly isTTY: boolean
72
- ) {}
67
+ constructor(
68
+ /**
69
+ * Used by wrangler to check whether stdin is interactive.
70
+ */
71
+ readonly isTTY: boolean
72
+ ) {}
73
73
 
74
- /**
75
- * Used by wrangler to add event listeners.
76
- */
77
- on(eventName: string, callback: () => void) {
78
- switch (eventName) {
79
- case "readable":
80
- setImmediate(callback);
81
- break;
82
- case "end":
83
- this.endCallback = callback;
84
- break;
85
- case "error":
86
- this.errorCallback = callback;
87
- break;
88
- }
89
- }
74
+ /**
75
+ * Used by wrangler to add event listeners.
76
+ */
77
+ on(eventName: string, callback: () => void) {
78
+ switch (eventName) {
79
+ case "readable":
80
+ setImmediate(callback);
81
+ break;
82
+ case "end":
83
+ this.endCallback = callback;
84
+ break;
85
+ case "error":
86
+ this.errorCallback = callback;
87
+ break;
88
+ }
89
+ }
90
90
 
91
- /**
92
- * Used by wrangler to get the next chunk of data in the stream.
93
- */
94
- read() {
95
- if (this.error) {
96
- setImmediate(() => this.errorCallback(this.error));
97
- }
98
- if (this.chunks.length === 0) {
99
- setImmediate(this.endCallback);
100
- }
101
- return this.chunks.shift() ?? null;
102
- }
91
+ /**
92
+ * Used by wrangler to get the next chunk of data in the stream.
93
+ */
94
+ read() {
95
+ if (this.error) {
96
+ setImmediate(() => this.errorCallback(this.error));
97
+ }
98
+ if (this.chunks.length === 0) {
99
+ setImmediate(this.endCallback);
100
+ }
101
+ return this.chunks.shift() ?? null;
102
+ }
103
+
104
+ /**
105
+ * Used by Ink.js to set the encoding of the stdout.
106
+ */
107
+ setEncoding() {}
103
108
  }
@@ -4,26 +4,26 @@ import { WebSocket } from "mock-socket";
4
4
  * A version of the mock WebSocket that supports the methods that we use.
5
5
  */
6
6
  export class MockWebSocket extends WebSocket {
7
- on(event: string | symbol, listener: (...args: unknown[]) => void): this {
8
- switch (event) {
9
- case "message":
10
- this.onmessage = ({ data }) => {
11
- listener(data);
12
- };
13
- break;
14
- case "open":
15
- this.onopen = listener;
16
- break;
17
- case "close":
18
- this.onclose = listener;
19
- break;
20
- default:
21
- throw new Error("Unknown event type: " + event.toString());
22
- }
23
- return this;
24
- }
7
+ on(event: string | symbol, listener: (...args: unknown[]) => void): this {
8
+ switch (event) {
9
+ case "message":
10
+ this.onmessage = ({ data }) => {
11
+ listener(data);
12
+ };
13
+ break;
14
+ case "open":
15
+ this.onopen = listener;
16
+ break;
17
+ case "close":
18
+ this.onclose = listener;
19
+ break;
20
+ default:
21
+ throw new Error("Unknown event type: " + event.toString());
22
+ }
23
+ return this;
24
+ }
25
25
 
26
- terminate() {
27
- this.close();
28
- }
26
+ terminate() {
27
+ this.close();
28
+ }
29
29
  }
@@ -0,0 +1,13 @@
1
+ import { rest } from "msw";
2
+
3
+ export default [
4
+ rest.get("*access-protected.com*", (_, response, cxt) => {
5
+ return response.once(
6
+ cxt.status(302),
7
+ cxt.set("location", "access-protected-com.cloudflareaccess.com")
8
+ );
9
+ }),
10
+ rest.get("*not-access-protected.com*", (_, response, cxt) => {
11
+ return response.once(cxt.status(200), cxt.body("OK"));
12
+ }),
13
+ ];
@@ -0,0 +1,59 @@
1
+ import { rest } from "msw";
2
+
3
+ import type { DeploymentListRes } from "../../../../deployments";
4
+
5
+ export const mswSuccessDeployments = [
6
+ rest.get(
7
+ "*/accounts/:accountId/workers/deployments/by-script/:scriptTag",
8
+ (_, response, context) =>
9
+ response.once(
10
+ context.status(200),
11
+ context.json({
12
+ success: true,
13
+ errors: [],
14
+ messages: [],
15
+ result: {
16
+ latest: {
17
+ id: "Galaxy-Class",
18
+ number: "1701-E",
19
+ metadata: {
20
+ author_id: "Picard-Gamma-6-0-7-3",
21
+ author_email: "Jean-Luc-Picard@federation.org",
22
+ source: "wrangler",
23
+ created_on: "2021-01-01T00:00:00.000000Z",
24
+ modified_on: "2021-01-01T00:00:00.000000Z",
25
+ },
26
+ resources: {
27
+ script: "MOCK-TAG",
28
+ bindings: [],
29
+ },
30
+ },
31
+ items: [
32
+ {
33
+ id: "Galaxy-Class",
34
+ number: "1701-E",
35
+ metadata: {
36
+ author_id: "Picard-Gamma-6-0-7-3",
37
+ author_email: "Jean-Luc-Picard@federation.org",
38
+ source: "wrangler",
39
+ created_on: "2021-01-01T00:00:00.000000Z",
40
+ modified_on: "2021-01-01T00:00:00.000000Z",
41
+ },
42
+ },
43
+ {
44
+ id: "Intrepid-Class",
45
+ number: "NCC-74656",
46
+ metadata: {
47
+ author_id: "Kathryn-Jane-Gamma-6-0-7-3",
48
+ author_email: "Kathryn-Janeway@federation.org",
49
+ source: "wrangler",
50
+ created_on: "2021-02-02T00:00:00.000000Z",
51
+ modified_on: "2021-02-02T00:00:00.000000Z",
52
+ },
53
+ },
54
+ ],
55
+ } as DeploymentListRes,
56
+ })
57
+ )
58
+ ),
59
+ ];
@@ -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
+ ];