wrangler 0.0.0-e3e3243 → 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 (304) hide show
  1. package/Cloudflare_CA.pem +18 -0
  2. package/README.md +47 -14
  3. package/bin/wrangler.js +154 -31
  4. package/kv-asset-handler.js +1 -0
  5. package/miniflare-dist/index.mjs +6258 -21
  6. package/package.json +191 -141
  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 +56 -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 +3971 -2810
  14. package/src/__tests__/d1.test.ts +80 -0
  15. package/src/__tests__/delete.test.ts +230 -0
  16. package/src/__tests__/deployments.test.ts +91 -0
  17. package/src/__tests__/dev.test.tsx +1521 -526
  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 +74 -57
  22. package/src/__tests__/helpers/cmd-shim.d.ts +6 -6
  23. package/src/__tests__/helpers/mock-account-id.ts +24 -24
  24. package/src/__tests__/helpers/mock-bin.ts +20 -20
  25. package/src/__tests__/helpers/mock-cfetch.ts +219 -93
  26. package/src/__tests__/helpers/mock-console.ts +68 -32
  27. package/src/__tests__/helpers/mock-dialogs.ts +121 -33
  28. package/src/__tests__/helpers/mock-get-zone-from-host.ts +8 -0
  29. package/src/__tests__/helpers/mock-http-server.ts +46 -0
  30. package/src/__tests__/helpers/mock-istty.ts +74 -0
  31. package/src/__tests__/helpers/mock-known-routes.ts +7 -0
  32. package/src/__tests__/helpers/mock-kv.ts +27 -27
  33. package/src/__tests__/helpers/mock-oauth-flow.ts +252 -0
  34. package/src/__tests__/helpers/mock-process.ts +39 -0
  35. package/src/__tests__/helpers/mock-stdin.ts +82 -77
  36. package/src/__tests__/helpers/mock-web-socket.ts +21 -21
  37. package/src/__tests__/helpers/msw/handlers/access.ts +13 -0
  38. package/src/__tests__/helpers/msw/handlers/deployments.ts +59 -0
  39. package/src/__tests__/helpers/msw/handlers/namespaces.ts +104 -0
  40. package/src/__tests__/helpers/msw/handlers/oauth.ts +36 -0
  41. package/src/__tests__/helpers/msw/handlers/r2.ts +80 -0
  42. package/src/__tests__/helpers/msw/handlers/script.ts +75 -0
  43. package/src/__tests__/helpers/msw/handlers/user.ts +63 -0
  44. package/src/__tests__/helpers/msw/handlers/zones.ts +22 -0
  45. package/src/__tests__/helpers/msw/index.ts +21 -0
  46. package/src/__tests__/helpers/run-in-tmp.ts +28 -22
  47. package/src/__tests__/helpers/run-wrangler.ts +8 -8
  48. package/src/__tests__/helpers/worker-scripts/child-wrangler.toml +1 -0
  49. package/src/__tests__/helpers/worker-scripts/hello-world-worker.js +5 -0
  50. package/src/__tests__/helpers/worker-scripts/hello-world-wrangler.toml +1 -0
  51. package/src/__tests__/helpers/worker-scripts/parent-worker.js +8 -0
  52. package/src/__tests__/helpers/worker-scripts/parent-wrangler.toml +5 -0
  53. package/src/__tests__/helpers/write-worker-source.ts +31 -0
  54. package/src/__tests__/helpers/write-wrangler-toml.ts +9 -9
  55. package/src/__tests__/https-options.test.ts +144 -108
  56. package/src/__tests__/index.test.ts +248 -967
  57. package/src/__tests__/init.test.ts +2900 -0
  58. package/src/__tests__/jest.setup.ts +167 -34
  59. package/src/__tests__/kv.test.ts +1661 -1366
  60. package/src/__tests__/logger.test.ts +141 -0
  61. package/src/__tests__/metrics.test.ts +450 -0
  62. package/src/__tests__/middleware.scheduled.test.ts +135 -0
  63. package/src/__tests__/middleware.test.ts +726 -0
  64. package/src/__tests__/package-manager.test.ts +312 -165
  65. package/src/__tests__/pages-deployment-tail.test.ts +820 -0
  66. package/src/__tests__/pages.test.ts +2437 -77
  67. package/src/__tests__/parse.test.ts +253 -245
  68. package/src/__tests__/paths.test.ts +39 -0
  69. package/src/__tests__/publish.test.ts +7569 -3445
  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 +388 -193
  73. package/src/__tests__/route.test.ts +22 -22
  74. package/src/__tests__/secret.test.ts +626 -407
  75. package/src/__tests__/tail.test.ts +680 -442
  76. package/src/__tests__/test-old-node-version.js +31 -0
  77. package/src/__tests__/type-generation.test.ts +226 -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 +266 -88
  83. package/src/__tests__/worker-namespace.test.ts +326 -0
  84. package/src/abort.d.ts +3 -0
  85. package/src/api/dev.ts +210 -0
  86. package/src/api/index.ts +2 -0
  87. package/src/bundle-reporter.tsx +68 -0
  88. package/src/bundle.ts +791 -123
  89. package/src/cfetch/index.ts +123 -67
  90. package/src/cfetch/internal.ts +216 -92
  91. package/src/cli.ts +23 -14
  92. package/src/config/README.md +1 -1
  93. package/src/config/config.ts +236 -179
  94. package/src/config/diagnostics.ts +61 -61
  95. package/src/config/environment.ts +506 -316
  96. package/src/config/index.ts +310 -38
  97. package/src/config/validation-helpers.ts +385 -342
  98. package/src/config/validation.ts +1970 -1099
  99. package/src/config-cache.ts +85 -0
  100. package/src/create-worker-preview.ts +240 -124
  101. package/src/create-worker-upload-form.ts +300 -201
  102. package/src/d1/backups.tsx +218 -0
  103. package/src/d1/constants.ts +2 -0
  104. package/src/d1/create.tsx +63 -0
  105. package/src/d1/delete.tsx +56 -0
  106. package/src/d1/execute.tsx +352 -0
  107. package/src/d1/formatTimeAgo.ts +14 -0
  108. package/src/d1/index.ts +99 -0
  109. package/src/d1/list.tsx +48 -0
  110. package/src/d1/migrations.tsx +446 -0
  111. package/src/d1/options.ts +22 -0
  112. package/src/d1/types.tsx +24 -0
  113. package/src/d1/utils.ts +48 -0
  114. package/src/delete.ts +108 -0
  115. package/src/deployments.ts +77 -0
  116. package/src/deprecated/index.ts +438 -0
  117. package/src/dev/dev-vars.ts +39 -0
  118. package/src/dev/dev.tsx +526 -328
  119. package/src/dev/get-local-persistence-path.tsx +31 -0
  120. package/src/dev/local.tsx +867 -213
  121. package/src/dev/remote.tsx +592 -192
  122. package/src/dev/start-server.ts +538 -0
  123. package/src/dev/use-esbuild.ts +184 -84
  124. package/src/dev/validate-dev-props.ts +31 -0
  125. package/src/dev-registry.tsx +201 -0
  126. package/src/dev.tsx +905 -0
  127. package/src/dialogs.tsx +150 -59
  128. package/src/dispatch-namespace.ts +207 -0
  129. package/src/durable.ts +102 -0
  130. package/src/entry.ts +260 -171
  131. package/src/environment-variables.ts +40 -23
  132. package/src/errors.ts +11 -0
  133. package/src/git-client.ts +124 -0
  134. package/src/global-wrangler-config-path.ts +26 -0
  135. package/src/https-options.ts +85 -80
  136. package/src/index.tsx +634 -2341
  137. package/src/init.ts +970 -0
  138. package/src/inspect.ts +707 -557
  139. package/src/intl-polyfill.d.ts +123 -123
  140. package/src/is-ci.ts +14 -0
  141. package/src/is-interactive.ts +16 -0
  142. package/src/kv/helpers.ts +430 -0
  143. package/src/kv/index.ts +596 -0
  144. package/src/logger.ts +92 -0
  145. package/src/metrics/index.ts +5 -0
  146. package/src/metrics/metrics-config.ts +239 -0
  147. package/src/metrics/metrics-dispatcher.ts +96 -0
  148. package/src/metrics/metrics-usage-headers.ts +24 -0
  149. package/src/metrics/send-event.ts +96 -0
  150. package/src/miniflare-cli/assets.ts +215 -0
  151. package/src/miniflare-cli/index.ts +206 -30
  152. package/src/miniflare-cli/request-context.ts +40 -0
  153. package/src/module-collection.ts +222 -213
  154. package/src/open-in-browser.ts +8 -16
  155. package/src/package-manager.ts +183 -90
  156. package/src/pages/build.tsx +270 -0
  157. package/src/pages/constants.ts +18 -0
  158. package/src/pages/deployment-tails.tsx +284 -0
  159. package/src/pages/deployments.tsx +84 -0
  160. package/src/pages/dev.tsx +708 -0
  161. package/src/pages/errors.ts +66 -0
  162. package/src/pages/functions/buildPlugin.ts +107 -0
  163. package/src/pages/functions/buildWorker.ts +166 -0
  164. package/src/pages/functions/filepath-routing.test.ts +234 -0
  165. package/src/pages/functions/filepath-routing.ts +189 -0
  166. package/src/pages/functions/identifiers.ts +78 -0
  167. package/src/pages/functions/routes-consolidation.test.ts +250 -0
  168. package/src/pages/functions/routes-consolidation.ts +73 -0
  169. package/src/pages/functions/routes-transformation.test.ts +282 -0
  170. package/src/pages/functions/routes-transformation.ts +115 -0
  171. package/src/pages/functions/routes-validation.test.ts +403 -0
  172. package/src/pages/functions/routes-validation.ts +202 -0
  173. package/src/pages/functions/routes.ts +151 -0
  174. package/src/pages/functions.tsx +82 -0
  175. package/src/pages/hash.tsx +13 -0
  176. package/src/pages/index.tsx +102 -0
  177. package/src/pages/projects.tsx +169 -0
  178. package/src/pages/prompt-select-project.tsx +31 -0
  179. package/src/pages/publish.tsx +451 -0
  180. package/src/pages/types.ts +41 -0
  181. package/src/pages/upload.tsx +426 -0
  182. package/src/pages/utils.ts +23 -0
  183. package/src/parse.ts +224 -121
  184. package/src/paths.ts +53 -8
  185. package/src/proxy.ts +624 -375
  186. package/src/publish/index.ts +270 -0
  187. package/src/publish/publish.ts +1035 -0
  188. package/src/pubsub/index.ts +286 -0
  189. package/src/pubsub/pubsub-commands.tsx +624 -0
  190. package/src/queues/cli/commands/consumer/add.ts +71 -0
  191. package/src/queues/cli/commands/consumer/index.ts +22 -0
  192. package/src/queues/cli/commands/consumer/remove.ts +38 -0
  193. package/src/queues/cli/commands/create.ts +25 -0
  194. package/src/queues/cli/commands/delete.ts +26 -0
  195. package/src/queues/cli/commands/index.ts +33 -0
  196. package/src/queues/cli/commands/list.ts +25 -0
  197. package/src/queues/client.ts +135 -0
  198. package/src/r2/constants.ts +4 -0
  199. package/src/r2/helpers.ts +131 -0
  200. package/src/r2/index.ts +289 -0
  201. package/src/routes.ts +140 -0
  202. package/src/secret/index.ts +378 -0
  203. package/src/selfsigned.d.ts +23 -23
  204. package/src/sites.tsx +283 -191
  205. package/src/tail/createTail.ts +379 -0
  206. package/src/tail/filters.ts +108 -110
  207. package/src/tail/index.ts +211 -296
  208. package/src/tail/printing.ts +92 -47
  209. package/src/type-generation.ts +173 -0
  210. package/src/update-check.ts +19 -0
  211. package/src/user/access.ts +69 -0
  212. package/src/user/choose-account.tsx +69 -0
  213. package/src/user/env-vars.ts +46 -0
  214. package/src/user/generate-auth-url.ts +33 -0
  215. package/src/user/generate-random-state.ts +16 -0
  216. package/src/user/index.ts +3 -0
  217. package/src/user/user.tsx +1192 -0
  218. package/src/utils/collectKeyValues.ts +14 -0
  219. package/src/whoami.tsx +142 -42
  220. package/src/worker.ts +182 -100
  221. package/src/yargs-types.ts +24 -0
  222. package/src/zones.ts +191 -0
  223. package/templates/__tests__/pages-dev-util.test.ts +128 -0
  224. package/templates/checked-fetch.js +17 -0
  225. package/templates/d1-beta-facade.js +205 -0
  226. package/templates/first-party-worker-module-facade.ts +18 -0
  227. package/templates/format-dev-errors.ts +32 -0
  228. package/templates/gitignore +171 -0
  229. package/templates/init-tests/test-jest-new-worker.js +25 -0
  230. package/templates/init-tests/test-vitest-new-worker.js +26 -0
  231. package/templates/middleware/common.ts +62 -0
  232. package/templates/middleware/loader-modules.ts +84 -0
  233. package/templates/middleware/loader-sw.ts +227 -0
  234. package/templates/middleware/middleware-miniflare3-json-error.ts +20 -0
  235. package/templates/middleware/middleware-pretty-error.ts +40 -0
  236. package/templates/middleware/middleware-scheduled.ts +15 -0
  237. package/templates/new-worker-scheduled.js +17 -0
  238. package/templates/new-worker-scheduled.ts +32 -0
  239. package/templates/new-worker.js +3 -3
  240. package/templates/new-worker.ts +18 -3
  241. package/templates/no-op-worker.js +10 -0
  242. package/templates/pages-dev-pipeline.ts +28 -0
  243. package/templates/pages-dev-util.ts +52 -0
  244. package/templates/pages-shim.ts +9 -0
  245. package/templates/pages-template-plugin.ts +171 -0
  246. package/templates/pages-template-worker.ts +189 -0
  247. package/templates/serve-static-assets.ts +63 -0
  248. package/templates/service-bindings-module-facade.js +54 -0
  249. package/templates/service-bindings-sw-facade.js +42 -0
  250. package/templates/tsconfig.json +96 -95
  251. package/wrangler-dist/cli.d.ts +893 -0
  252. package/wrangler-dist/cli.js +116238 -94482
  253. package/miniflare-dist/index.mjs.map +0 -7
  254. package/pages/functions/buildWorker.ts +0 -62
  255. package/pages/functions/filepath-routing.test.ts +0 -223
  256. package/pages/functions/filepath-routing.ts +0 -181
  257. package/pages/functions/identifiers.ts +0 -78
  258. package/pages/functions/routes.ts +0 -151
  259. package/pages/functions/template-worker.ts +0 -130
  260. package/src/__tests__/helpers/faye-websocket.d.ts +0 -6
  261. package/src/__tests__/logout.test.ts +0 -52
  262. package/src/__tests__/sentry.test.ts +0 -146
  263. package/src/kv.ts +0 -319
  264. package/src/miniflare-cli/enum-keys.ts +0 -17
  265. package/src/pages.tsx +0 -1061
  266. package/src/publish.ts +0 -350
  267. package/src/r2.ts +0 -50
  268. package/src/reporting.ts +0 -131
  269. package/src/user.tsx +0 -1127
  270. package/templates/static-asset-facade.js +0 -47
  271. package/vendor/@cloudflare/kv-asset-handler/CHANGELOG.md +0 -332
  272. package/vendor/@cloudflare/kv-asset-handler/LICENSE_APACHE +0 -176
  273. package/vendor/@cloudflare/kv-asset-handler/LICENSE_MIT +0 -25
  274. package/vendor/@cloudflare/kv-asset-handler/README.md +0 -245
  275. package/vendor/@cloudflare/kv-asset-handler/dist/index.d.ts +0 -32
  276. package/vendor/@cloudflare/kv-asset-handler/dist/index.js +0 -354
  277. package/vendor/@cloudflare/kv-asset-handler/dist/mocks.d.ts +0 -13
  278. package/vendor/@cloudflare/kv-asset-handler/dist/mocks.js +0 -148
  279. package/vendor/@cloudflare/kv-asset-handler/dist/test/getAssetFromKV.d.ts +0 -1
  280. package/vendor/@cloudflare/kv-asset-handler/dist/test/getAssetFromKV.js +0 -436
  281. package/vendor/@cloudflare/kv-asset-handler/dist/test/mapRequestToAsset.d.ts +0 -1
  282. package/vendor/@cloudflare/kv-asset-handler/dist/test/mapRequestToAsset.js +0 -40
  283. package/vendor/@cloudflare/kv-asset-handler/dist/test/serveSinglePageApp.d.ts +0 -1
  284. package/vendor/@cloudflare/kv-asset-handler/dist/test/serveSinglePageApp.js +0 -42
  285. package/vendor/@cloudflare/kv-asset-handler/dist/types.d.ts +0 -26
  286. package/vendor/@cloudflare/kv-asset-handler/dist/types.js +0 -31
  287. package/vendor/@cloudflare/kv-asset-handler/package.json +0 -52
  288. package/vendor/@cloudflare/kv-asset-handler/src/index.ts +0 -296
  289. package/vendor/@cloudflare/kv-asset-handler/src/mocks.ts +0 -136
  290. package/vendor/@cloudflare/kv-asset-handler/src/test/getAssetFromKV.ts +0 -464
  291. package/vendor/@cloudflare/kv-asset-handler/src/test/mapRequestToAsset.ts +0 -33
  292. package/vendor/@cloudflare/kv-asset-handler/src/test/serveSinglePageApp.ts +0 -42
  293. package/vendor/@cloudflare/kv-asset-handler/src/types.ts +0 -39
  294. package/vendor/wrangler-mime/CHANGELOG.md +0 -289
  295. package/vendor/wrangler-mime/LICENSE +0 -21
  296. package/vendor/wrangler-mime/Mime.js +0 -97
  297. package/vendor/wrangler-mime/README.md +0 -187
  298. package/vendor/wrangler-mime/cli.js +0 -46
  299. package/vendor/wrangler-mime/index.js +0 -4
  300. package/vendor/wrangler-mime/lite.js +0 -4
  301. package/vendor/wrangler-mime/package.json +0 -52
  302. package/vendor/wrangler-mime/types/other.js +0 -1
  303. package/vendor/wrangler-mime/types/standard.js +0 -1
  304. package/wrangler-dist/cli.js.map +0 -7
@@ -0,0 +1,371 @@
1
+ import { type QueueResponse, type PostConsumerBody } from "../queues/client";
2
+ import { mockAccountId, mockApiToken } from "./helpers/mock-account-id";
3
+ import { setMockResponse, unsetAllMocks } from "./helpers/mock-cfetch";
4
+ import { mockConsoleMethods } from "./helpers/mock-console";
5
+ import { runInTempDir } from "./helpers/run-in-tmp";
6
+ import { runWrangler } from "./helpers/run-wrangler";
7
+
8
+ describe("wrangler", () => {
9
+ mockAccountId();
10
+ mockApiToken();
11
+ runInTempDir();
12
+ const std = mockConsoleMethods();
13
+
14
+ afterEach(() => {
15
+ unsetAllMocks();
16
+ });
17
+
18
+ describe("queues", () => {
19
+ it("should show the correct help text", async () => {
20
+ await runWrangler("queues --help");
21
+ expect(std.err).toMatchInlineSnapshot(`""`);
22
+ expect(std.out).toMatchInlineSnapshot(`
23
+ "wrangler queues
24
+
25
+ 🇶 Configure Workers Queues
26
+
27
+ Commands:
28
+ wrangler queues list List Queues
29
+ wrangler queues create <name> Create a Queue
30
+ wrangler queues delete <name> Delete a Queue
31
+ wrangler queues consumer Configure Queue Consumers
32
+
33
+ Flags:
34
+ -c, --config Path to .toml configuration file [string]
35
+ -e, --env Environment to use for operations and .env files [string]
36
+ -h, --help Show help [boolean]
37
+ -v, --version Show version number [boolean]"
38
+ `);
39
+ });
40
+
41
+ describe("list", () => {
42
+ function mockListRequest(queues: QueueResponse[], page: number) {
43
+ const requests = { count: 0 };
44
+ setMockResponse(
45
+ "/accounts/:accountId/workers/queues",
46
+ ([_url, accountId], init, params) => {
47
+ requests.count++;
48
+ expect(params.get("page")).toEqual((page || 1).toString());
49
+ expect(accountId).toEqual("some-account-id");
50
+ expect(init).toEqual({});
51
+ return queues;
52
+ }
53
+ );
54
+ return requests;
55
+ }
56
+
57
+ it("should show the correct help text", async () => {
58
+ await runWrangler("queues list --help");
59
+ expect(std.err).toMatchInlineSnapshot(`""`);
60
+ expect(std.out).toMatchInlineSnapshot(`
61
+ "wrangler queues list
62
+
63
+ List Queues
64
+
65
+ Flags:
66
+ -c, --config Path to .toml configuration file [string]
67
+ -e, --env Environment to use for operations and .env files [string]
68
+ -h, --help Show help [boolean]
69
+ -v, --version Show version number [boolean]
70
+
71
+ Options:
72
+ --page Page number for pagination [number]"
73
+ `);
74
+ });
75
+
76
+ it("should list queues on page 1 with no --page", async () => {
77
+ const expectedQueues: QueueResponse[] = [
78
+ {
79
+ queue_name: "queue-1",
80
+ created_on: "01-01-2001",
81
+ modified_on: "01-01-2001",
82
+ },
83
+ {
84
+ queue_name: "queue-2",
85
+ created_on: "01-01-2001",
86
+ modified_on: "01-01-2001",
87
+ },
88
+ ];
89
+ const expectedPage = 1;
90
+ mockListRequest(expectedQueues, expectedPage);
91
+ await runWrangler("queues list");
92
+
93
+ expect(std.err).toMatchInlineSnapshot(`""`);
94
+ const buckets = JSON.parse(std.out);
95
+ expect(buckets).toEqual(expectedQueues);
96
+ });
97
+
98
+ it("should list queues using --page=2", async () => {
99
+ const expectedQueues: QueueResponse[] = [
100
+ {
101
+ queue_name: "queue-100",
102
+ created_on: "01-01-2001",
103
+ modified_on: "01-01-2001",
104
+ },
105
+ ];
106
+ const expectedPage = 2;
107
+ mockListRequest(expectedQueues, expectedPage);
108
+ await runWrangler("queues list --page=2");
109
+
110
+ expect(std.err).toMatchInlineSnapshot(`""`);
111
+ const buckets = JSON.parse(std.out);
112
+ expect(buckets).toEqual(expectedQueues);
113
+ });
114
+ });
115
+
116
+ describe("create", () => {
117
+ function mockCreateRequest(expectedQueueName: string) {
118
+ const requests = { count: 0 };
119
+ setMockResponse(
120
+ "/accounts/:accountId/workers/queues",
121
+ "POST",
122
+ ([_url, accountId], { body }) => {
123
+ expect(accountId).toEqual("some-account-id");
124
+ const queueName = JSON.parse(body as string).queue_name;
125
+ expect(queueName).toEqual(expectedQueueName);
126
+ requests.count += 1;
127
+ }
128
+ );
129
+ return requests;
130
+ }
131
+
132
+ it("should show the correct help text", async () => {
133
+ await runWrangler("queues create --help");
134
+ expect(std.err).toMatchInlineSnapshot(`""`);
135
+ expect(std.out).toMatchInlineSnapshot(`
136
+ "wrangler queues create <name>
137
+
138
+ Create a Queue
139
+
140
+ Positionals:
141
+ name The name of the queue [string] [required]
142
+
143
+ Flags:
144
+ -c, --config Path to .toml configuration file [string]
145
+ -e, --env Environment to use for operations and .env files [string]
146
+ -h, --help Show help [boolean]
147
+ -v, --version Show version number [boolean]"
148
+ `);
149
+ });
150
+
151
+ it("should create a queue", async () => {
152
+ const requests = mockCreateRequest("testQueue");
153
+ await runWrangler("queues create testQueue");
154
+ expect(std.out).toMatchInlineSnapshot(`
155
+ "Creating queue testQueue.
156
+ Created queue testQueue."
157
+ `);
158
+ expect(requests.count).toEqual(1);
159
+ });
160
+ });
161
+
162
+ describe("delete", () => {
163
+ function mockDeleteRequest(expectedQueueName: string) {
164
+ const requests = { count: 0 };
165
+ setMockResponse(
166
+ `/accounts/:accountId/workers/queues/${expectedQueueName}`,
167
+ "DELETE",
168
+ ([_url, accountId]) => {
169
+ expect(accountId).toEqual("some-account-id");
170
+ requests.count += 1;
171
+ }
172
+ );
173
+ return requests;
174
+ }
175
+
176
+ it("should show the correct help text", async () => {
177
+ await runWrangler("queues delete --help");
178
+ expect(std.err).toMatchInlineSnapshot(`""`);
179
+ expect(std.out).toMatchInlineSnapshot(`
180
+ "wrangler queues delete <name>
181
+
182
+ Delete a Queue
183
+
184
+ Positionals:
185
+ name The name of the queue [string] [required]
186
+
187
+ Flags:
188
+ -c, --config Path to .toml configuration file [string]
189
+ -e, --env Environment to use for operations and .env files [string]
190
+ -h, --help Show help [boolean]
191
+ -v, --version Show version number [boolean]"
192
+ `);
193
+ });
194
+
195
+ it("should delete a queue", async () => {
196
+ const requests = mockDeleteRequest("testQueue");
197
+ await runWrangler("queues delete testQueue");
198
+ expect(std.out).toMatchInlineSnapshot(`
199
+ "Deleting queue testQueue.
200
+ Deleted queue testQueue."
201
+ `);
202
+ expect(requests.count).toEqual(1);
203
+ });
204
+ });
205
+
206
+ describe("consumers", () => {
207
+ it("should show the correct help text", async () => {
208
+ await runWrangler("queues consumer --help");
209
+
210
+ expect(std.err).toMatchInlineSnapshot(`""`);
211
+ expect(std.out).toMatchInlineSnapshot(`
212
+ "wrangler queues consumer
213
+
214
+ Configure Queue Consumers
215
+
216
+ Commands:
217
+ wrangler queues consumer add <queue-name> <script-name> Add a Queue Consumer
218
+ wrangler queues consumer remove <queue-name> <script-name> Remove a Queue Consumer
219
+
220
+ Flags:
221
+ -c, --config Path to .toml configuration file [string]
222
+ -e, --env Environment to use for operations and .env files [string]
223
+ -h, --help Show help [boolean]
224
+ -v, --version Show version number [boolean]"
225
+ `);
226
+ });
227
+
228
+ describe("add", () => {
229
+ function mockPostRequest(
230
+ expectedQueueName: string,
231
+ expectedBody: PostConsumerBody
232
+ ) {
233
+ const requests = { count: 0 };
234
+ setMockResponse(
235
+ `/accounts/:accountId/workers/queues/${expectedQueueName}/consumers`,
236
+ "POST",
237
+ ([_url, accountId], { body }) => {
238
+ expect(accountId).toEqual("some-account-id");
239
+ expect(JSON.parse(body as string)).toEqual(expectedBody);
240
+ requests.count += 1;
241
+ }
242
+ );
243
+ return requests;
244
+ }
245
+
246
+ it("should show the correct help text", async () => {
247
+ await runWrangler("queues consumer add --help");
248
+ expect(std.err).toMatchInlineSnapshot(`""`);
249
+ expect(std.out).toMatchInlineSnapshot(`
250
+ "wrangler queues consumer add <queue-name> <script-name>
251
+
252
+ Add a Queue Consumer
253
+
254
+ Positionals:
255
+ queue-name Name of the queue to configure [string] [required]
256
+ script-name Name of the consumer script [string] [required]
257
+
258
+ Flags:
259
+ -c, --config Path to .toml configuration file [string]
260
+ -e, --env Environment to use for operations and .env files [string]
261
+ -h, --help Show help [boolean]
262
+ -v, --version Show version number [boolean]
263
+
264
+ Options:
265
+ --batch-size Maximum number of messages per batch [number]
266
+ --batch-timeout Maximum number of seconds to wait to fill a batch with messages [number]
267
+ --message-retries Maximum number of retries for each message [number]
268
+ --dead-letter-queue Queue to send messages that failed to be consumed [string]"
269
+ `);
270
+ });
271
+
272
+ it("should add a consumer using defaults", async () => {
273
+ const expectedBody: PostConsumerBody = {
274
+ script_name: "testScript",
275
+ environment_name: "",
276
+ settings: {
277
+ batch_size: undefined,
278
+ max_retries: undefined,
279
+ max_wait_time_ms: undefined,
280
+ },
281
+ dead_letter_queue: undefined,
282
+ };
283
+ mockPostRequest("testQueue", expectedBody);
284
+ await runWrangler("queues consumer add testQueue testScript");
285
+ expect(std.out).toMatchInlineSnapshot(`
286
+ "Adding consumer to queue testQueue.
287
+ Added consumer to queue testQueue."
288
+ `);
289
+ });
290
+
291
+ it("should add a consumer using custom values", async () => {
292
+ const expectedBody: PostConsumerBody = {
293
+ script_name: "testScript",
294
+ environment_name: "myEnv",
295
+ settings: {
296
+ batch_size: 20,
297
+ max_retries: 3,
298
+ max_wait_time_ms: 10 * 1000,
299
+ },
300
+ dead_letter_queue: "myDLQ",
301
+ };
302
+ mockPostRequest("testQueue", expectedBody);
303
+
304
+ await runWrangler(
305
+ "queues consumer add testQueue testScript --env myEnv --batch-size 20 --batch-timeout 10 --message-retries 3 --dead-letter-queue myDLQ"
306
+ );
307
+ expect(std.out).toMatchInlineSnapshot(`
308
+ "Adding consumer to queue testQueue.
309
+ Added consumer to queue testQueue."
310
+ `);
311
+ });
312
+ });
313
+
314
+ describe("delete", () => {
315
+ function mockDeleteRequest(
316
+ expectedQueueName: string,
317
+ expectedScriptName: string,
318
+ expectedEnvName?: string
319
+ ) {
320
+ let resource = `/accounts/:accountId/workers/queues/${expectedQueueName}/consumers/${expectedScriptName}`;
321
+ if (expectedEnvName !== undefined) {
322
+ resource += `/environments/${expectedEnvName}`;
323
+ }
324
+ setMockResponse(resource, "DELETE", ([_url, accountId]) => {
325
+ expect(accountId).toEqual("some-account-id");
326
+ });
327
+ }
328
+
329
+ it("should show the correct help text", async () => {
330
+ await runWrangler("queues consumer remove --help");
331
+ expect(std.err).toMatchInlineSnapshot(`""`);
332
+ expect(std.out).toMatchInlineSnapshot(`
333
+ "wrangler queues consumer remove <queue-name> <script-name>
334
+
335
+ Remove a Queue Consumer
336
+
337
+ Positionals:
338
+ queue-name Name of the queue to configure [string] [required]
339
+ script-name Name of the consumer script [string] [required]
340
+
341
+ Flags:
342
+ -c, --config Path to .toml configuration file [string]
343
+ -e, --env Environment to use for operations and .env files [string]
344
+ -h, --help Show help [boolean]
345
+ -v, --version Show version number [boolean]"
346
+ `);
347
+ });
348
+
349
+ it("should delete a consumer with no --env", async () => {
350
+ mockDeleteRequest("testQueue", "testScript");
351
+ await runWrangler("queues consumer remove testQueue testScript");
352
+ expect(std.out).toMatchInlineSnapshot(`
353
+ "Removing consumer from queue testQueue.
354
+ Removed consumer from queue testQueue."
355
+ `);
356
+ });
357
+
358
+ it("should delete a consumer with --env", async () => {
359
+ mockDeleteRequest("testQueue", "testScript", "myEnv");
360
+ await runWrangler(
361
+ "queues consumer remove testQueue testScript --env myEnv"
362
+ );
363
+ expect(std.out).toMatchInlineSnapshot(`
364
+ "Removing consumer from queue testQueue.
365
+ Removed consumer from queue testQueue."
366
+ `);
367
+ });
368
+ });
369
+ });
370
+ });
371
+ });