wrangler 0.0.0-e64812e → 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 (291) 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 +190 -152
  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 +57 -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 +4017 -3363
  13. package/src/__tests__/d1.test.ts +72 -0
  14. package/src/__tests__/delete.test.ts +230 -0
  15. package/src/__tests__/deployments.test.ts +95 -0
  16. package/src/__tests__/dev.test.tsx +1480 -951
  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 +239 -233
  56. package/src/__tests__/init.test.ts +2869 -1603
  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.test.ts +2204 -735
  65. package/src/__tests__/parse.test.ts +252 -252
  66. package/src/__tests__/paths.test.ts +39 -0
  67. package/src/__tests__/publish.test.ts +7543 -5351
  68. package/src/__tests__/pubsub.test.ts +370 -0
  69. package/src/__tests__/queues.test.ts +371 -0
  70. package/src/__tests__/r2.test.ts +371 -228
  71. package/src/__tests__/route.test.ts +18 -18
  72. package/src/__tests__/secret.test.ts +622 -459
  73. package/src/__tests__/tail.test.ts +677 -567
  74. package/src/__tests__/test-old-node-version.js +31 -0
  75. package/src/__tests__/type-generation.test.ts +217 -0
  76. package/src/__tests__/user.test.ts +140 -116
  77. package/src/__tests__/utils-collectKeyValues.test.ts +47 -0
  78. package/src/__tests__/validate-dev-props.test.ts +56 -0
  79. package/src/__tests__/version.test.ts +35 -0
  80. package/src/__tests__/whoami.test.tsx +264 -91
  81. package/src/__tests__/worker-namespace.test.ts +326 -0
  82. package/src/abort.d.ts +1 -1
  83. package/src/api/dev.ts +208 -0
  84. package/src/api/index.ts +2 -0
  85. package/src/bundle-reporter.tsx +68 -0
  86. package/src/bundle.ts +746 -161
  87. package/src/cfetch/index.ts +120 -81
  88. package/src/cfetch/internal.ts +209 -91
  89. package/src/cli.ts +23 -8
  90. package/src/config/config.ts +236 -195
  91. package/src/config/diagnostics.ts +61 -61
  92. package/src/config/environment.ts +500 -357
  93. package/src/config/index.ts +310 -193
  94. package/src/config/validation-helpers.ts +379 -357
  95. package/src/config/validation.ts +1941 -1367
  96. package/src/config-cache.ts +81 -41
  97. package/src/create-worker-preview.ts +239 -142
  98. package/src/create-worker-upload-form.ts +305 -238
  99. package/src/d1/backups.tsx +218 -0
  100. package/src/d1/create.tsx +54 -0
  101. package/src/d1/delete.tsx +56 -0
  102. package/src/d1/execute.tsx +299 -0
  103. package/src/d1/formatTimeAgo.ts +14 -0
  104. package/src/d1/index.ts +76 -0
  105. package/src/d1/list.tsx +48 -0
  106. package/src/d1/options.ts +12 -0
  107. package/src/d1/types.tsx +14 -0
  108. package/src/d1/utils.ts +39 -0
  109. package/src/delete.ts +108 -0
  110. package/src/deployments.ts +74 -0
  111. package/src/deprecated/index.ts +438 -0
  112. package/src/dev/dev-vars.ts +20 -17
  113. package/src/dev/dev.tsx +520 -352
  114. package/src/dev/get-local-persistence-path.tsx +31 -0
  115. package/src/dev/local.tsx +697 -298
  116. package/src/dev/remote.tsx +591 -215
  117. package/src/dev/start-server.ts +513 -0
  118. package/src/dev/use-esbuild.ts +183 -97
  119. package/src/dev/validate-dev-props.ts +31 -0
  120. package/src/dev-registry.tsx +201 -0
  121. package/src/dev.tsx +869 -0
  122. package/src/dialogs.tsx +126 -98
  123. package/src/dispatch-namespace.ts +207 -0
  124. package/src/durable.ts +87 -87
  125. package/src/entry.ts +235 -228
  126. package/src/environment-variables.ts +38 -23
  127. package/src/errors.ts +6 -6
  128. package/src/git-client.ts +124 -0
  129. package/src/global-wrangler-config-path.ts +26 -0
  130. package/src/https-options.ts +84 -80
  131. package/src/index.tsx +627 -2807
  132. package/src/init.ts +970 -0
  133. package/src/inspect.ts +698 -593
  134. package/src/intl-polyfill.d.ts +123 -123
  135. package/src/is-ci.ts +14 -0
  136. package/src/is-interactive.ts +16 -0
  137. package/src/kv/helpers.ts +430 -0
  138. package/src/kv/index.ts +596 -0
  139. package/src/logger.ts +67 -41
  140. package/src/metrics/index.ts +5 -0
  141. package/src/metrics/metrics-config.ts +239 -0
  142. package/src/metrics/metrics-dispatcher.ts +96 -0
  143. package/src/metrics/metrics-usage-headers.ts +24 -0
  144. package/src/metrics/send-event.ts +94 -0
  145. package/src/miniflare-cli/assets.ts +215 -0
  146. package/src/miniflare-cli/index.ts +205 -33
  147. package/src/miniflare-cli/request-context.ts +18 -18
  148. package/src/module-collection.ts +221 -212
  149. package/src/open-in-browser.ts +4 -6
  150. package/src/package-manager.ts +173 -128
  151. package/src/pages/build.tsx +238 -0
  152. package/src/pages/constants.ts +18 -0
  153. package/src/pages/deployments.tsx +106 -0
  154. package/src/pages/dev.tsx +693 -0
  155. package/src/pages/errors.ts +66 -0
  156. package/src/pages/functions/buildPlugin.ts +110 -0
  157. package/src/pages/functions/buildWorker.ts +156 -0
  158. package/{pages → src/pages}/functions/filepath-routing.test.ts +113 -113
  159. package/src/pages/functions/filepath-routing.ts +189 -0
  160. package/src/pages/functions/identifiers.ts +78 -0
  161. package/src/pages/functions/routes-consolidation.test.ts +250 -0
  162. package/src/pages/functions/routes-consolidation.ts +73 -0
  163. package/src/pages/functions/routes-transformation.test.ts +282 -0
  164. package/src/pages/functions/routes-transformation.ts +115 -0
  165. package/src/pages/functions/routes-validation.test.ts +403 -0
  166. package/src/pages/functions/routes-validation.ts +202 -0
  167. package/src/pages/functions/routes.ts +151 -0
  168. package/src/pages/functions.tsx +82 -0
  169. package/src/pages/hash.tsx +13 -0
  170. package/src/pages/index.tsx +94 -0
  171. package/src/pages/projects.tsx +169 -0
  172. package/src/pages/publish.tsx +436 -0
  173. package/src/pages/types.ts +49 -0
  174. package/src/pages/upload.tsx +425 -0
  175. package/src/pages/utils.ts +12 -0
  176. package/src/parse.ts +209 -125
  177. package/src/paths.ts +53 -8
  178. package/src/proxy.ts +618 -394
  179. package/src/publish/index.ts +270 -0
  180. package/src/publish/publish.ts +1035 -0
  181. package/src/pubsub/index.ts +286 -0
  182. package/src/pubsub/pubsub-commands.tsx +624 -0
  183. package/src/queues/cli/commands/consumer/add.ts +71 -0
  184. package/src/queues/cli/commands/consumer/index.ts +22 -0
  185. package/src/queues/cli/commands/consumer/remove.ts +38 -0
  186. package/src/queues/cli/commands/create.ts +25 -0
  187. package/src/queues/cli/commands/delete.ts +26 -0
  188. package/src/queues/cli/commands/index.ts +33 -0
  189. package/src/queues/cli/commands/list.ts +25 -0
  190. package/src/queues/client.ts +135 -0
  191. package/src/r2/helpers.ts +131 -0
  192. package/src/r2/index.ts +277 -0
  193. package/src/routes.ts +140 -0
  194. package/src/secret/index.ts +379 -0
  195. package/src/selfsigned.d.ts +23 -23
  196. package/src/sites.tsx +280 -203
  197. package/src/tail/createTail.ts +315 -0
  198. package/src/tail/filters.ts +108 -110
  199. package/src/tail/index.ts +211 -296
  200. package/src/tail/printing.ts +86 -46
  201. package/src/type-generation.ts +159 -0
  202. package/src/update-check.ts +11 -11
  203. package/src/user/access.ts +69 -0
  204. package/src/user/choose-account.tsx +69 -0
  205. package/src/user/env-vars.ts +46 -0
  206. package/src/user/generate-auth-url.ts +33 -0
  207. package/src/user/generate-random-state.ts +16 -0
  208. package/src/user/index.ts +3 -0
  209. package/src/user/user.tsx +1192 -0
  210. package/src/utils/collectKeyValues.ts +14 -0
  211. package/src/whoami.tsx +141 -42
  212. package/src/worker.ts +168 -106
  213. package/src/yargs-types.ts +20 -0
  214. package/src/zones.ts +191 -0
  215. package/templates/__tests__/pages-dev-util.test.ts +128 -0
  216. package/templates/checked-fetch.js +17 -0
  217. package/templates/d1-beta-facade.js +174 -0
  218. package/templates/experimental-local-cache-stubs.js +27 -0
  219. package/templates/first-party-worker-module-facade.ts +18 -0
  220. package/templates/format-dev-errors.ts +32 -0
  221. package/templates/init-tests/test-jest-new-worker.js +25 -0
  222. package/templates/init-tests/test-vitest-new-worker.js +26 -0
  223. package/templates/middleware/common.ts +62 -0
  224. package/templates/middleware/loader-modules.ts +84 -0
  225. package/templates/middleware/loader-sw.ts +213 -0
  226. package/templates/middleware/middleware-pretty-error.ts +40 -0
  227. package/templates/middleware/middleware-scheduled.ts +15 -0
  228. package/templates/new-worker-scheduled.js +3 -3
  229. package/templates/new-worker-scheduled.ts +15 -15
  230. package/templates/new-worker.js +3 -3
  231. package/templates/new-worker.ts +15 -15
  232. package/templates/no-op-worker.js +10 -0
  233. package/templates/pages-dev-pipeline.ts +28 -0
  234. package/templates/pages-dev-util.ts +52 -0
  235. package/templates/pages-shim.ts +9 -0
  236. package/templates/pages-template-plugin.ts +171 -0
  237. package/templates/pages-template-worker.ts +189 -0
  238. package/templates/serve-static-assets.ts +63 -0
  239. package/templates/service-bindings-module-facade.js +54 -0
  240. package/templates/service-bindings-sw-facade.js +42 -0
  241. package/templates/tsconfig.json +96 -95
  242. package/wrangler-dist/cli.d.ts +892 -0
  243. package/wrangler-dist/cli.js +145674 -108957
  244. package/pages/functions/buildPlugin.ts +0 -105
  245. package/pages/functions/buildWorker.ts +0 -151
  246. package/pages/functions/filepath-routing.ts +0 -189
  247. package/pages/functions/identifiers.ts +0 -78
  248. package/pages/functions/routes.ts +0 -156
  249. package/pages/functions/template-plugin.ts +0 -147
  250. package/pages/functions/template-worker.ts +0 -143
  251. package/src/__tests__/helpers/faye-websocket.d.ts +0 -6
  252. package/src/kv.ts +0 -408
  253. package/src/miniflare-cli/enum-keys.ts +0 -17
  254. package/src/pages.tsx +0 -2038
  255. package/src/publish.ts +0 -583
  256. package/src/r2.ts +0 -50
  257. package/src/user.tsx +0 -1203
  258. package/templates/static-asset-facade.js +0 -47
  259. package/vendor/@cloudflare/kv-asset-handler/CHANGELOG.md +0 -332
  260. package/vendor/@cloudflare/kv-asset-handler/LICENSE_APACHE +0 -176
  261. package/vendor/@cloudflare/kv-asset-handler/LICENSE_MIT +0 -25
  262. package/vendor/@cloudflare/kv-asset-handler/README.md +0 -245
  263. package/vendor/@cloudflare/kv-asset-handler/dist/index.d.ts +0 -32
  264. package/vendor/@cloudflare/kv-asset-handler/dist/index.js +0 -354
  265. package/vendor/@cloudflare/kv-asset-handler/dist/mocks.d.ts +0 -13
  266. package/vendor/@cloudflare/kv-asset-handler/dist/mocks.js +0 -148
  267. package/vendor/@cloudflare/kv-asset-handler/dist/test/getAssetFromKV.d.ts +0 -1
  268. package/vendor/@cloudflare/kv-asset-handler/dist/test/getAssetFromKV.js +0 -436
  269. package/vendor/@cloudflare/kv-asset-handler/dist/test/mapRequestToAsset.d.ts +0 -1
  270. package/vendor/@cloudflare/kv-asset-handler/dist/test/mapRequestToAsset.js +0 -40
  271. package/vendor/@cloudflare/kv-asset-handler/dist/test/serveSinglePageApp.d.ts +0 -1
  272. package/vendor/@cloudflare/kv-asset-handler/dist/test/serveSinglePageApp.js +0 -42
  273. package/vendor/@cloudflare/kv-asset-handler/dist/types.d.ts +0 -26
  274. package/vendor/@cloudflare/kv-asset-handler/dist/types.js +0 -31
  275. package/vendor/@cloudflare/kv-asset-handler/package.json +0 -52
  276. package/vendor/@cloudflare/kv-asset-handler/src/index.ts +0 -296
  277. package/vendor/@cloudflare/kv-asset-handler/src/mocks.ts +0 -136
  278. package/vendor/@cloudflare/kv-asset-handler/src/test/getAssetFromKV.ts +0 -464
  279. package/vendor/@cloudflare/kv-asset-handler/src/test/mapRequestToAsset.ts +0 -33
  280. package/vendor/@cloudflare/kv-asset-handler/src/test/serveSinglePageApp.ts +0 -42
  281. package/vendor/@cloudflare/kv-asset-handler/src/types.ts +0 -39
  282. package/vendor/wrangler-mime/CHANGELOG.md +0 -289
  283. package/vendor/wrangler-mime/LICENSE +0 -21
  284. package/vendor/wrangler-mime/Mime.js +0 -97
  285. package/vendor/wrangler-mime/README.md +0 -187
  286. package/vendor/wrangler-mime/cli.js +0 -46
  287. package/vendor/wrangler-mime/index.js +0 -4
  288. package/vendor/wrangler-mime/lite.js +0 -4
  289. package/vendor/wrangler-mime/package.json +0 -52
  290. package/vendor/wrangler-mime/types/other.js +0 -1
  291. package/vendor/wrangler-mime/types/standard.js +0 -1
@@ -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/versions/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
+ ];