wrangler 0.0.0-e95e5a0 → 0.0.0-e98613f8

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 (305) hide show
  1. package/Cloudflare_CA.pem +18 -0
  2. package/README.md +26 -4
  3. package/bin/wrangler.js +166 -34
  4. package/kv-asset-handler.js +1 -0
  5. package/miniflare-dist/index.mjs +1456 -21
  6. package/package.json +191 -148
  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 +30 -24
  13. package/src/__tests__/configuration.test.ts +3970 -3114
  14. package/src/__tests__/d1.test.ts +80 -0
  15. package/src/__tests__/delete.test.ts +263 -0
  16. package/src/__tests__/deployments.test.ts +91 -0
  17. package/src/__tests__/dev.test.tsx +1528 -737
  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 +68 -68
  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 +216 -94
  26. package/src/__tests__/helpers/mock-console.ts +58 -39
  27. package/src/__tests__/helpers/mock-dialogs.ts +114 -51
  28. package/src/__tests__/helpers/mock-get-zone-from-host.ts +8 -0
  29. package/src/__tests__/helpers/mock-http-server.ts +30 -30
  30. package/src/__tests__/helpers/mock-istty.ts +65 -18
  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 +229 -228
  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 +31 -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 +27 -28
  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 +16 -16
  54. package/src/__tests__/helpers/write-wrangler-toml.ts +9 -9
  55. package/src/__tests__/https-options.test.ts +142 -109
  56. package/src/__tests__/index.test.ts +246 -231
  57. package/src/__tests__/init.test.ts +2887 -1488
  58. package/src/__tests__/jest.setup.ts +163 -30
  59. package/src/__tests__/kv.test.ts +1660 -1439
  60. package/src/__tests__/logger.test.ts +100 -74
  61. package/src/__tests__/logout.test.ts +47 -0
  62. package/src/__tests__/metrics.test.ts +450 -0
  63. package/src/__tests__/middleware.scheduled.test.ts +135 -0
  64. package/src/__tests__/middleware.test.ts +726 -0
  65. package/src/__tests__/package-manager.test.ts +312 -165
  66. package/src/__tests__/pages-deployment-tail.test.ts +820 -0
  67. package/src/__tests__/pages.test.ts +2435 -322
  68. package/src/__tests__/parse.test.ts +253 -245
  69. package/src/__tests__/paths.test.ts +39 -0
  70. package/src/__tests__/publish.test.ts +7536 -4778
  71. package/src/__tests__/pubsub.test.ts +370 -0
  72. package/src/__tests__/queues.test.ts +522 -0
  73. package/src/__tests__/r2.test.ts +388 -209
  74. package/src/__tests__/route.test.ts +18 -18
  75. package/src/__tests__/secret.test.ts +624 -426
  76. package/src/__tests__/tail.test.ts +776 -567
  77. package/src/__tests__/test-old-node-version.js +31 -0
  78. package/src/__tests__/type-generation.test.ts +226 -0
  79. package/src/__tests__/user.test.ts +117 -119
  80. package/src/__tests__/utils-collectKeyValues.test.ts +47 -0
  81. package/src/__tests__/validate-dev-props.test.ts +56 -0
  82. package/src/__tests__/version.test.ts +35 -0
  83. package/src/__tests__/whoami.test.tsx +264 -91
  84. package/src/__tests__/worker-namespace.test.ts +326 -0
  85. package/src/abort.d.ts +3 -0
  86. package/src/api/dev.ts +210 -0
  87. package/src/api/index.ts +2 -0
  88. package/src/bundle-reporter.tsx +68 -0
  89. package/src/bundle.ts +789 -135
  90. package/src/cfetch/index.ts +123 -67
  91. package/src/cfetch/internal.ts +216 -90
  92. package/src/cli.ts +23 -8
  93. package/src/config/config.ts +236 -195
  94. package/src/config/diagnostics.ts +61 -61
  95. package/src/config/environment.ts +506 -339
  96. package/src/config/index.ts +309 -38
  97. package/src/config/validation-helpers.ts +379 -357
  98. package/src/config/validation.ts +1942 -1263
  99. package/src/config-cache.ts +81 -41
  100. package/src/create-worker-preview.ts +239 -132
  101. package/src/create-worker-upload-form.ts +300 -224
  102. package/src/d1/backups.tsx +223 -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 +101 -0
  109. package/src/d1/list.tsx +48 -0
  110. package/src/d1/migrations/apply.tsx +184 -0
  111. package/src/d1/migrations/create.tsx +77 -0
  112. package/src/d1/migrations/helpers.ts +147 -0
  113. package/src/d1/migrations/index.tsx +3 -0
  114. package/src/d1/migrations/list.tsx +79 -0
  115. package/src/d1/migrations/options.ts +18 -0
  116. package/src/d1/options.ts +22 -0
  117. package/src/d1/types.tsx +24 -0
  118. package/src/d1/utils.ts +48 -0
  119. package/src/delete.ts +108 -0
  120. package/src/deployments.ts +77 -0
  121. package/src/deprecated/index.ts +438 -0
  122. package/src/dev/dev-vars.ts +20 -17
  123. package/src/dev/dev.tsx +549 -353
  124. package/src/dev/get-local-persistence-path.tsx +31 -0
  125. package/src/dev/local.tsx +870 -292
  126. package/src/dev/remote.tsx +591 -201
  127. package/src/dev/start-server.ts +539 -0
  128. package/src/dev/use-esbuild.ts +183 -97
  129. package/src/dev/validate-dev-props.ts +31 -0
  130. package/src/dev-registry.tsx +201 -0
  131. package/src/dev.tsx +913 -0
  132. package/src/dialogs.tsx +146 -65
  133. package/src/dispatch-namespace.ts +207 -0
  134. package/src/durable.ts +102 -0
  135. package/src/entry.ts +248 -186
  136. package/src/environment-variables.ts +38 -23
  137. package/src/errors.ts +6 -6
  138. package/src/git-client.ts +135 -0
  139. package/src/global-wrangler-config-path.ts +26 -0
  140. package/src/https-options.ts +84 -80
  141. package/src/index.tsx +636 -2617
  142. package/src/init.ts +970 -0
  143. package/src/inspect.ts +706 -562
  144. package/src/intl-polyfill.d.ts +123 -123
  145. package/src/is-ci.ts +14 -0
  146. package/src/is-interactive.ts +16 -0
  147. package/src/kv/helpers.ts +430 -0
  148. package/src/kv/index.ts +596 -0
  149. package/src/logger.ts +67 -41
  150. package/src/metrics/index.ts +5 -0
  151. package/src/metrics/metrics-config.ts +239 -0
  152. package/src/metrics/metrics-dispatcher.ts +96 -0
  153. package/src/metrics/metrics-usage-headers.ts +24 -0
  154. package/src/metrics/send-event.ts +96 -0
  155. package/src/miniflare-cli/assets.ts +220 -0
  156. package/src/miniflare-cli/index.ts +205 -33
  157. package/src/miniflare-cli/request-context.ts +18 -18
  158. package/src/module-collection.ts +221 -212
  159. package/src/open-in-browser.ts +5 -14
  160. package/src/package-manager.ts +182 -90
  161. package/src/pages/build.tsx +270 -0
  162. package/src/pages/constants.ts +18 -0
  163. package/src/pages/deployment-tails.tsx +284 -0
  164. package/src/pages/deployments.tsx +84 -0
  165. package/src/pages/dev.tsx +706 -0
  166. package/src/pages/errors.ts +66 -0
  167. package/src/pages/functions/buildPlugin.ts +107 -0
  168. package/src/pages/functions/buildWorker.ts +166 -0
  169. package/{pages → src/pages}/functions/filepath-routing.test.ts +113 -113
  170. package/src/pages/functions/filepath-routing.ts +189 -0
  171. package/src/pages/functions/identifiers.ts +78 -0
  172. package/src/pages/functions/routes-consolidation.test.ts +250 -0
  173. package/src/pages/functions/routes-consolidation.ts +73 -0
  174. package/src/pages/functions/routes-transformation.test.ts +282 -0
  175. package/src/pages/functions/routes-transformation.ts +115 -0
  176. package/src/pages/functions/routes-validation.test.ts +403 -0
  177. package/src/pages/functions/routes-validation.ts +202 -0
  178. package/src/pages/functions/routes.ts +151 -0
  179. package/src/pages/functions.tsx +82 -0
  180. package/src/pages/hash.tsx +13 -0
  181. package/src/pages/index.tsx +102 -0
  182. package/src/pages/projects.tsx +169 -0
  183. package/src/pages/prompt-select-project.tsx +31 -0
  184. package/src/pages/publish.tsx +451 -0
  185. package/src/pages/types.ts +41 -0
  186. package/src/pages/upload.tsx +426 -0
  187. package/src/pages/utils.ts +23 -0
  188. package/src/parse.ts +223 -120
  189. package/src/paths.ts +53 -8
  190. package/src/proxy.ts +628 -383
  191. package/src/publish/index.ts +270 -0
  192. package/src/publish/publish.ts +1035 -0
  193. package/src/pubsub/index.ts +286 -0
  194. package/src/pubsub/pubsub-commands.tsx +624 -0
  195. package/src/queues/cli/commands/consumer/add.ts +71 -0
  196. package/src/queues/cli/commands/consumer/index.ts +22 -0
  197. package/src/queues/cli/commands/consumer/remove.ts +38 -0
  198. package/src/queues/cli/commands/create.ts +25 -0
  199. package/src/queues/cli/commands/delete.ts +26 -0
  200. package/src/queues/cli/commands/index.ts +36 -0
  201. package/src/queues/cli/commands/list.ts +25 -0
  202. package/src/queues/client.ts +135 -0
  203. package/src/queues/utils.ts +18 -0
  204. package/src/r2/constants.ts +4 -0
  205. package/src/r2/helpers.ts +131 -0
  206. package/src/r2/index.ts +289 -0
  207. package/src/routes.ts +140 -0
  208. package/src/secret/index.ts +378 -0
  209. package/src/selfsigned.d.ts +23 -23
  210. package/src/sites.tsx +281 -202
  211. package/src/tail/createTail.ts +379 -0
  212. package/src/tail/filters.ts +108 -110
  213. package/src/tail/index.ts +211 -296
  214. package/src/tail/printing.ts +86 -46
  215. package/src/type-generation.ts +173 -0
  216. package/src/update-check.ts +11 -11
  217. package/src/user/access.ts +69 -0
  218. package/src/user/choose-account.tsx +69 -0
  219. package/src/user/env-vars.ts +46 -0
  220. package/src/user/generate-auth-url.ts +33 -0
  221. package/src/user/generate-random-state.ts +16 -0
  222. package/src/user/index.ts +3 -0
  223. package/src/user/user.tsx +1198 -0
  224. package/src/utils/collectKeyValues.ts +14 -0
  225. package/src/whoami.tsx +141 -42
  226. package/src/worker.ts +174 -101
  227. package/src/yargs-types.ts +24 -0
  228. package/src/zones.ts +191 -0
  229. package/templates/__tests__/pages-dev-util.test.ts +128 -0
  230. package/templates/checked-fetch.js +17 -0
  231. package/templates/d1-beta-facade.js +205 -0
  232. package/templates/first-party-worker-module-facade.ts +18 -0
  233. package/templates/format-dev-errors.ts +32 -0
  234. package/templates/init-tests/test-jest-new-worker.js +25 -0
  235. package/templates/init-tests/test-vitest-new-worker.js +26 -0
  236. package/templates/middleware/common.ts +62 -0
  237. package/templates/middleware/loader-modules.ts +84 -0
  238. package/templates/middleware/loader-sw.ts +227 -0
  239. package/templates/middleware/middleware-miniflare3-json-error.ts +20 -0
  240. package/templates/middleware/middleware-pretty-error.ts +40 -0
  241. package/templates/middleware/middleware-scheduled.ts +15 -0
  242. package/templates/new-worker-scheduled.js +17 -0
  243. package/templates/new-worker-scheduled.ts +32 -0
  244. package/templates/new-worker.js +3 -3
  245. package/templates/new-worker.ts +18 -3
  246. package/templates/no-op-worker.js +10 -0
  247. package/templates/pages-dev-pipeline.ts +28 -0
  248. package/templates/pages-dev-util.ts +52 -0
  249. package/templates/pages-shim.ts +9 -0
  250. package/templates/pages-template-plugin.ts +171 -0
  251. package/templates/pages-template-worker.ts +189 -0
  252. package/templates/serve-static-assets.ts +63 -0
  253. package/templates/service-bindings-module-facade.js +54 -0
  254. package/templates/service-bindings-sw-facade.js +42 -0
  255. package/templates/tsconfig.json +96 -95
  256. package/wrangler-dist/cli.d.ts +893 -0
  257. package/wrangler-dist/cli.js +95201 -44118
  258. package/pages/functions/buildPlugin.ts +0 -92
  259. package/pages/functions/buildWorker.ts +0 -138
  260. package/pages/functions/filepath-routing.ts +0 -189
  261. package/pages/functions/identifiers.ts +0 -78
  262. package/pages/functions/routes.ts +0 -156
  263. package/pages/functions/template-plugin.ts +0 -146
  264. package/pages/functions/template-worker.ts +0 -143
  265. package/src/__tests__/helpers/faye-websocket.d.ts +0 -6
  266. package/src/kv.ts +0 -319
  267. package/src/miniflare-cli/enum-keys.ts +0 -17
  268. package/src/pages.tsx +0 -1866
  269. package/src/publish.ts +0 -469
  270. package/src/r2.ts +0 -50
  271. package/src/user.tsx +0 -1193
  272. package/templates/static-asset-facade.js +0 -47
  273. package/vendor/@cloudflare/kv-asset-handler/CHANGELOG.md +0 -332
  274. package/vendor/@cloudflare/kv-asset-handler/LICENSE_APACHE +0 -176
  275. package/vendor/@cloudflare/kv-asset-handler/LICENSE_MIT +0 -25
  276. package/vendor/@cloudflare/kv-asset-handler/README.md +0 -245
  277. package/vendor/@cloudflare/kv-asset-handler/dist/index.d.ts +0 -32
  278. package/vendor/@cloudflare/kv-asset-handler/dist/index.js +0 -354
  279. package/vendor/@cloudflare/kv-asset-handler/dist/mocks.d.ts +0 -13
  280. package/vendor/@cloudflare/kv-asset-handler/dist/mocks.js +0 -148
  281. package/vendor/@cloudflare/kv-asset-handler/dist/test/getAssetFromKV.d.ts +0 -1
  282. package/vendor/@cloudflare/kv-asset-handler/dist/test/getAssetFromKV.js +0 -436
  283. package/vendor/@cloudflare/kv-asset-handler/dist/test/mapRequestToAsset.d.ts +0 -1
  284. package/vendor/@cloudflare/kv-asset-handler/dist/test/mapRequestToAsset.js +0 -40
  285. package/vendor/@cloudflare/kv-asset-handler/dist/test/serveSinglePageApp.d.ts +0 -1
  286. package/vendor/@cloudflare/kv-asset-handler/dist/test/serveSinglePageApp.js +0 -42
  287. package/vendor/@cloudflare/kv-asset-handler/dist/types.d.ts +0 -26
  288. package/vendor/@cloudflare/kv-asset-handler/dist/types.js +0 -31
  289. package/vendor/@cloudflare/kv-asset-handler/package.json +0 -52
  290. package/vendor/@cloudflare/kv-asset-handler/src/index.ts +0 -296
  291. package/vendor/@cloudflare/kv-asset-handler/src/mocks.ts +0 -136
  292. package/vendor/@cloudflare/kv-asset-handler/src/test/getAssetFromKV.ts +0 -464
  293. package/vendor/@cloudflare/kv-asset-handler/src/test/mapRequestToAsset.ts +0 -33
  294. package/vendor/@cloudflare/kv-asset-handler/src/test/serveSinglePageApp.ts +0 -42
  295. package/vendor/@cloudflare/kv-asset-handler/src/types.ts +0 -39
  296. package/vendor/wrangler-mime/CHANGELOG.md +0 -289
  297. package/vendor/wrangler-mime/LICENSE +0 -21
  298. package/vendor/wrangler-mime/Mime.js +0 -97
  299. package/vendor/wrangler-mime/README.md +0 -187
  300. package/vendor/wrangler-mime/cli.js +0 -46
  301. package/vendor/wrangler-mime/index.js +0 -4
  302. package/vendor/wrangler-mime/lite.js +0 -4
  303. package/vendor/wrangler-mime/package.json +0 -52
  304. package/vendor/wrangler-mime/types/other.js +0 -1
  305. package/vendor/wrangler-mime/types/standard.js +0 -1
@@ -2,248 +2,263 @@ import { getPackageManager } from "../package-manager";
2
2
  import { mockConsoleMethods } from "./helpers/mock-console";
3
3
  import { runInTempDir } from "./helpers/run-in-tmp";
4
4
  import { runWrangler } from "./helpers/run-wrangler";
5
+ import { writeWorkerSource } from "./helpers/write-worker-source";
6
+ import writeWranglerToml from "./helpers/write-wrangler-toml";
5
7
  import type { PackageManager } from "../package-manager";
6
8
 
7
9
  describe("wrangler", () => {
8
- let mockPackageManager: PackageManager;
9
- runInTempDir();
10
-
11
- beforeEach(() => {
12
- mockPackageManager = {
13
- cwd: process.cwd(),
14
- // @ts-expect-error we're making a fake package manager here
15
- type: "mockpm",
16
- addDevDeps: jest.fn(),
17
- install: jest.fn(),
18
- };
19
- (getPackageManager as jest.Mock).mockResolvedValue(mockPackageManager);
20
- });
21
-
22
- const std = mockConsoleMethods();
23
-
24
- describe("no command", () => {
25
- it("should display a list of available commands", async () => {
26
- await runWrangler();
27
-
28
- expect(std.out).toMatchInlineSnapshot(`
29
- "wrangler
30
-
31
- Commands:
32
- wrangler init [name] 📥 Create a wrangler.toml configuration file
33
- wrangler dev [script] 👂 Start a local server for developing your worker
34
- wrangler publish [script] 🆙 Publish your Worker to Cloudflare.
35
- wrangler tail [name] 🦚 Starts a log tailing session for a published Worker.
36
- wrangler secret 🤫 Generate a secret that can be referenced in the worker script
37
- wrangler kv:namespace 🗂️ Interact with your Workers KV Namespaces
38
- wrangler kv:key 🔑 Individually manage Workers KV key-value pairs
39
- wrangler kv:bulk 💪 Interact with multiple Workers KV key-value pairs at once
40
- wrangler pages ⚡️ Configure Cloudflare Pages
41
- wrangler r2 📦 Interact with an R2 store
42
- wrangler login 🔓 Login to Cloudflare
43
- wrangler logout 🚪 Logout from Cloudflare
44
- wrangler whoami 🕵️ Retrieve your user info and test your auth config
45
-
46
- Flags:
47
- -c, --config Path to .toml configuration file [string]
48
- -h, --help Show help [boolean]
49
- -v, --version Show version number [boolean]
50
- --legacy-env Use legacy environments [boolean]"
51
- `);
52
-
53
- expect(std.err).toMatchInlineSnapshot(`""`);
54
- });
55
- });
56
-
57
- describe("invalid command", () => {
58
- it("should display an error", async () => {
59
- await expect(
60
- runWrangler("invalid-command")
61
- ).rejects.toThrowErrorMatchingInlineSnapshot(
62
- `"Unknown argument: invalid-command"`
63
- );
64
-
65
- expect(std.out).toMatchInlineSnapshot(`
66
- "
67
- "
68
- `);
69
- expect(std.err).toMatchInlineSnapshot(`
70
- "wrangler
71
-
72
- Commands:
73
- wrangler init [name] 📥 Create a wrangler.toml configuration file
74
- wrangler dev [script] 👂 Start a local server for developing your worker
75
- wrangler publish [script] 🆙 Publish your Worker to Cloudflare.
76
- wrangler tail [name] 🦚 Starts a log tailing session for a published Worker.
77
- wrangler secret 🤫 Generate a secret that can be referenced in the worker script
78
- wrangler kv:namespace 🗂️ Interact with your Workers KV Namespaces
79
- wrangler kv:key 🔑 Individually manage Workers KV key-value pairs
80
- wrangler kv:bulk 💪 Interact with multiple Workers KV key-value pairs at once
81
- wrangler pages ⚡️ Configure Cloudflare Pages
82
- wrangler r2 📦 Interact with an R2 store
83
- wrangler login 🔓 Login to Cloudflare
84
- wrangler logout 🚪 Logout from Cloudflare
85
- wrangler whoami 🕵️ Retrieve your user info and test your auth config
86
-
87
- Flags:
88
- -c, --config Path to .toml configuration file [string]
89
- -h, --help Show help [boolean]
90
- -v, --version Show version number [boolean]
91
- --legacy-env Use legacy environments [boolean]
92
- X [ERROR] Unknown argument: invalid-command
93
-
94
- "
95
- `);
96
- });
97
- });
98
-
99
- describe("preview", () => {
100
- it("should throw an error if the deprecated command is used with positional arguments", async () => {
101
- await expect(runWrangler("preview GET")).rejects
102
- .toThrowErrorMatchingInlineSnapshot(`
10
+ let mockPackageManager: PackageManager;
11
+ runInTempDir();
12
+
13
+ beforeEach(() => {
14
+ mockPackageManager = {
15
+ cwd: process.cwd(),
16
+ // @ts-expect-error we're making a fake package manager here
17
+ type: "mockpm",
18
+ addDevDeps: jest.fn(),
19
+ install: jest.fn(),
20
+ };
21
+ (getPackageManager as jest.Mock).mockResolvedValue(mockPackageManager);
22
+ });
23
+
24
+ const std = mockConsoleMethods();
25
+
26
+ describe("no command", () => {
27
+ it("should display a list of available commands", async () => {
28
+ await runWrangler();
29
+
30
+ expect(std.out).toMatchInlineSnapshot(`
31
+ "wrangler
32
+
33
+ Commands:
34
+ wrangler init [name] 📥 Create a wrangler.toml configuration file
35
+ wrangler dev [script] 👂 Start a local server for developing your worker
36
+ wrangler publish [script] 🆙 Publish your Worker to Cloudflare.
37
+ wrangler delete [script] 🗑 Delete your Worker from Cloudflare.
38
+ wrangler tail [worker] 🦚 Starts a log tailing session for a published Worker.
39
+ wrangler secret 🤫 Generate a secret that can be referenced in a Worker
40
+ wrangler secret:bulk <json> 🗄️ Bulk upload secrets for a Worker
41
+ wrangler kv:namespace 🗂️ Interact with your Workers KV Namespaces
42
+ wrangler kv:key 🔑 Individually manage Workers KV key-value pairs
43
+ wrangler kv:bulk 💪 Interact with multiple Workers KV key-value pairs at once
44
+ wrangler pages ⚡️ Configure Cloudflare Pages
45
+ wrangler queues 🇶 Configure Workers Queues
46
+ wrangler r2 📦 Interact with an R2 store
47
+ wrangler dispatch-namespace 📦 Interact with a dispatch namespace
48
+ wrangler d1 🗄 Interact with a D1 database
49
+ wrangler pubsub 📮 Interact and manage Pub/Sub Brokers
50
+ wrangler login 🔓 Login to Cloudflare
51
+ wrangler logout 🚪 Logout from Cloudflare
52
+ wrangler whoami 🕵️ Retrieve your user info and test your auth config
53
+ wrangler types 📝 Generate types from bindings & module rules in config
54
+ wrangler deployments 🚢 Displays the 10 most recent deployments for a worker
55
+
56
+ Flags:
57
+ -c, --config Path to .toml configuration file [string]
58
+ -e, --env Environment to use for operations and .env files [string]
59
+ -h, --help Show help [boolean]
60
+ -v, --version Show version number [boolean]"
61
+ `);
62
+
63
+ expect(std.err).toMatchInlineSnapshot(`""`);
64
+ });
65
+ });
66
+
67
+ describe("invalid command", () => {
68
+ it("should display an error", async () => {
69
+ await expect(
70
+ runWrangler("invalid-command")
71
+ ).rejects.toThrowErrorMatchingInlineSnapshot(
72
+ `"Unknown argument: invalid-command"`
73
+ );
74
+
75
+ expect(std.out).toMatchInlineSnapshot(`
76
+ "
77
+ wrangler
78
+
79
+ Commands:
80
+ wrangler init [name] 📥 Create a wrangler.toml configuration file
81
+ wrangler dev [script] 👂 Start a local server for developing your worker
82
+ wrangler publish [script] 🆙 Publish your Worker to Cloudflare.
83
+ wrangler delete [script] 🗑 Delete your Worker from Cloudflare.
84
+ wrangler tail [worker] 🦚 Starts a log tailing session for a published Worker.
85
+ wrangler secret 🤫 Generate a secret that can be referenced in a Worker
86
+ wrangler secret:bulk <json> 🗄️ Bulk upload secrets for a Worker
87
+ wrangler kv:namespace 🗂️ Interact with your Workers KV Namespaces
88
+ wrangler kv:key 🔑 Individually manage Workers KV key-value pairs
89
+ wrangler kv:bulk 💪 Interact with multiple Workers KV key-value pairs at once
90
+ wrangler pages ⚡️ Configure Cloudflare Pages
91
+ wrangler queues 🇶 Configure Workers Queues
92
+ wrangler r2 📦 Interact with an R2 store
93
+ wrangler dispatch-namespace 📦 Interact with a dispatch namespace
94
+ wrangler d1 🗄 Interact with a D1 database
95
+ wrangler pubsub 📮 Interact and manage Pub/Sub Brokers
96
+ wrangler login 🔓 Login to Cloudflare
97
+ wrangler logout 🚪 Logout from Cloudflare
98
+ wrangler whoami 🕵️ Retrieve your user info and test your auth config
99
+ wrangler types 📝 Generate types from bindings & module rules in config
100
+ wrangler deployments 🚢 Displays the 10 most recent deployments for a worker
101
+
102
+ Flags:
103
+ -c, --config Path to .toml configuration file [string]
104
+ -e, --env Environment to use for operations and .env files [string]
105
+ -h, --help Show help [boolean]
106
+ -v, --version Show version number [boolean]"
107
+ `);
108
+ expect(std.err).toMatchInlineSnapshot(`
109
+ "X [ERROR] Unknown argument: invalid-command
110
+
111
+ "
112
+ `);
113
+ });
114
+ });
115
+
116
+ describe("preview", () => {
117
+ it("should throw an error if the deprecated command is used with positional arguments", async () => {
118
+ await expect(runWrangler("preview GET")).rejects
119
+ .toThrowErrorMatchingInlineSnapshot(`
103
120
  "Deprecation:
104
121
  The \`wrangler preview\` command has been deprecated.
105
122
  Try using \`wrangler dev\` to to try out a worker during development.
106
123
  "
107
124
  `);
108
- await expect(runWrangler(`preview GET "SomeBody"`)).rejects
109
- .toThrowErrorMatchingInlineSnapshot(`
125
+ await expect(runWrangler(`preview GET "SomeBody"`)).rejects
126
+ .toThrowErrorMatchingInlineSnapshot(`
110
127
  "Deprecation:
111
128
  The \`wrangler preview\` command has been deprecated.
112
129
  Try using \`wrangler dev\` to to try out a worker during development.
113
130
  "
114
131
  `);
115
- });
116
- });
117
-
118
- describe("subcommand implicit help ran on incomplete command execution", () => {
119
- function endEventLoop() {
120
- return new Promise((resolve) => setImmediate(resolve));
121
- }
122
- it("no subcommand for 'secret' should display a list of available subcommands", async () => {
123
- await runWrangler("secret");
124
- await endEventLoop();
125
- expect(std.out).toMatchInlineSnapshot(`
126
- "wrangler secret
127
-
128
- 🤫 Generate a secret that can be referenced in the worker script
129
-
130
- Commands:
131
- wrangler secret put <key> Create or update a secret variable for a script
132
- wrangler secret delete <key> Delete a secret variable from a script
133
- wrangler secret list List all secrets for a script
134
-
135
- Flags:
136
- -c, --config Path to .toml configuration file [string]
137
- -h, --help Show help [boolean]
138
- -v, --version Show version number [boolean]
139
- --legacy-env Use legacy environments [boolean]"
140
- `);
141
- });
142
-
143
- it("no subcommand 'kv:namespace' should display a list of available subcommands", async () => {
144
- await runWrangler("kv:namespace");
145
- await endEventLoop();
146
- expect(std.out).toMatchInlineSnapshot(`
147
- "wrangler kv:namespace
148
-
149
- 🗂️ Interact with your Workers KV Namespaces
150
-
151
- Commands:
152
- wrangler kv:namespace create <namespace> Create a new namespace
153
- wrangler kv:namespace list Outputs a list of all KV namespaces associated with your account id.
154
- wrangler kv:namespace delete Deletes a given namespace.
155
-
156
- Flags:
157
- -c, --config Path to .toml configuration file [string]
158
- -h, --help Show help [boolean]
159
- -v, --version Show version number [boolean]
160
- --legacy-env Use legacy environments [boolean]"
161
- `);
162
- });
163
-
164
- it("no subcommand 'kv:key' should display a list of available subcommands", async () => {
165
- await runWrangler("kv:key");
166
- await endEventLoop();
167
- expect(std.out).toMatchInlineSnapshot(`
168
- "wrangler kv:key
169
-
170
- 🔑 Individually manage Workers KV key-value pairs
171
-
172
- Commands:
173
- wrangler kv:key put <key> [value] Writes a single key/value pair to the given namespace.
174
- wrangler kv:key list Outputs a list of all keys in a given namespace.
175
- wrangler kv:key get <key> Reads a single value by key from the given namespace.
176
- wrangler kv:key delete <key> Removes a single key value pair from the given namespace.
177
-
178
- Flags:
179
- -c, --config Path to .toml configuration file [string]
180
- -h, --help Show help [boolean]
181
- -v, --version Show version number [boolean]
182
- --legacy-env Use legacy environments [boolean]"
183
- `);
184
- });
185
-
186
- it("no subcommand 'kv:bulk' should display a list of available subcommands", async () => {
187
- await runWrangler("kv:bulk");
188
- await endEventLoop();
189
- expect(std.out).toMatchInlineSnapshot(`
190
- "wrangler kv:bulk
191
-
192
- 💪 Interact with multiple Workers KV key-value pairs at once
193
-
194
- Commands:
195
- wrangler kv:bulk put <filename> Upload multiple key-value pairs to a namespace
196
- wrangler kv:bulk delete <filename> Delete multiple key-value pairs from a namespace
197
-
198
- Flags:
199
- -c, --config Path to .toml configuration file [string]
200
- -h, --help Show help [boolean]
201
- -v, --version Show version number [boolean]
202
- --legacy-env Use legacy environments [boolean]"
203
- `);
204
- });
205
- it("no subcommand 'r2' should display a list of available subcommands", async () => {
206
- await runWrangler("r2");
207
- await endEventLoop();
208
- expect(std.out).toMatchInlineSnapshot(`
209
- "wrangler r2
210
-
211
- 📦 Interact with an R2 store
212
-
213
- Commands:
214
- wrangler r2 bucket Manage R2 buckets
215
-
216
- Flags:
217
- -c, --config Path to .toml configuration file [string]
218
- -h, --help Show help [boolean]
219
- -v, --version Show version number [boolean]
220
- --legacy-env Use legacy environments [boolean]"
221
- `);
222
- });
223
- });
224
- describe("Deprecated commands", () => {
225
- it("should print a deprecation message for 'generate'", async () => {
226
- await runWrangler("generate").catch((err) => {
227
- expect(err.message).toMatchInlineSnapshot(`
228
- "Deprecation:
229
- \`wrangler generate\` has been deprecated.
230
- Try running \`wrangler init\` to generate a basic Worker, or cloning the template repository instead:
231
-
232
- \`\`\`
233
- git clone https://github.com/cloudflare/worker-template
234
- \`\`\`
235
-
236
- Please refer to https://developers.cloudflare.com/workers/wrangler/deprecations/#generate for more information."
237
- `);
238
- });
239
- });
240
- it("should print a deprecation message for 'build'", async () => {
241
- await runWrangler("build").catch((err) => {
242
- expect(err.message).toMatchInlineSnapshot(`
243
- "Deprecation:
244
- \`wrangler build\` has been deprecated, please refer to https://github.com/cloudflare/wrangler2/blob/main/docs/deprecations.md#build for alternatives"
245
- `);
246
- });
247
- });
248
- });
132
+ });
133
+ });
134
+
135
+ describe("subcommand implicit help ran on incomplete command execution", () => {
136
+ it("no subcommand for 'secret' should display a list of available subcommands", async () => {
137
+ await runWrangler("secret");
138
+ await endEventLoop();
139
+ expect(std.out).toMatchInlineSnapshot(`
140
+ "wrangler secret
141
+
142
+ 🤫 Generate a secret that can be referenced in a Worker
143
+
144
+ Commands:
145
+ wrangler secret put <key> Create or update a secret variable for a Worker
146
+ wrangler secret delete <key> Delete a secret variable from a Worker
147
+ wrangler secret list List all secrets for a Worker
148
+
149
+ Flags:
150
+ -c, --config Path to .toml configuration file [string]
151
+ -e, --env Environment to use for operations and .env files [string]
152
+ -h, --help Show help [boolean]
153
+ -v, --version Show version number [boolean]"
154
+ `);
155
+ });
156
+
157
+ it("no subcommand 'kv:namespace' should display a list of available subcommands", async () => {
158
+ await runWrangler("kv:namespace");
159
+ await endEventLoop();
160
+ expect(std.out).toMatchInlineSnapshot(`
161
+ "wrangler kv:namespace
162
+
163
+ 🗂️ Interact with your Workers KV Namespaces
164
+
165
+ Commands:
166
+ wrangler kv:namespace create <namespace> Create a new namespace
167
+ wrangler kv:namespace list Outputs a list of all KV namespaces associated with your account id.
168
+ wrangler kv:namespace delete Deletes a given namespace.
169
+
170
+ Flags:
171
+ -c, --config Path to .toml configuration file [string]
172
+ -e, --env Environment to use for operations and .env files [string]
173
+ -h, --help Show help [boolean]
174
+ -v, --version Show version number [boolean]"
175
+ `);
176
+ });
177
+
178
+ it("no subcommand 'kv:key' should display a list of available subcommands", async () => {
179
+ await runWrangler("kv:key");
180
+ await endEventLoop();
181
+ expect(std.out).toMatchInlineSnapshot(`
182
+ "wrangler kv:key
183
+
184
+ 🔑 Individually manage Workers KV key-value pairs
185
+
186
+ Commands:
187
+ wrangler kv:key put <key> [value] Writes a single key/value pair to the given namespace.
188
+ wrangler kv:key list Outputs a list of all keys in a given namespace.
189
+ wrangler kv:key get <key> Reads a single value by key from the given namespace.
190
+ wrangler kv:key delete <key> Removes a single key value pair from the given namespace.
191
+
192
+ Flags:
193
+ -c, --config Path to .toml configuration file [string]
194
+ -e, --env Environment to use for operations and .env files [string]
195
+ -h, --help Show help [boolean]
196
+ -v, --version Show version number [boolean]"
197
+ `);
198
+ });
199
+
200
+ it("no subcommand 'kv:bulk' should display a list of available subcommands", async () => {
201
+ await runWrangler("kv:bulk");
202
+ await endEventLoop();
203
+ expect(std.out).toMatchInlineSnapshot(`
204
+ "wrangler kv:bulk
205
+
206
+ 💪 Interact with multiple Workers KV key-value pairs at once
207
+
208
+ Commands:
209
+ wrangler kv:bulk put <filename> Upload multiple key-value pairs to a namespace
210
+ wrangler kv:bulk delete <filename> Delete multiple key-value pairs from a namespace
211
+
212
+ Flags:
213
+ -c, --config Path to .toml configuration file [string]
214
+ -e, --env Environment to use for operations and .env files [string]
215
+ -h, --help Show help [boolean]
216
+ -v, --version Show version number [boolean]"
217
+ `);
218
+ });
219
+
220
+ it("no subcommand 'r2' should display a list of available subcommands", async () => {
221
+ await runWrangler("r2");
222
+ await endEventLoop();
223
+ expect(std.out).toMatchInlineSnapshot(`
224
+ "wrangler r2
225
+
226
+ 📦 Interact with an R2 store
227
+
228
+ Commands:
229
+ wrangler r2 object Manage R2 objects
230
+ wrangler r2 bucket Manage R2 buckets
231
+
232
+ Flags:
233
+ -c, --config Path to .toml configuration file [string]
234
+ -e, --env Environment to use for operations and .env files [string]
235
+ -h, --help Show help [boolean]
236
+ -v, --version Show version number [boolean]"
237
+ `);
238
+ });
239
+ });
240
+
241
+ it("should print a deprecation message for 'build' and then try to run `publish --dry-run --outdir`", async () => {
242
+ writeWranglerToml({
243
+ main: "index.js",
244
+ });
245
+ writeWorkerSource();
246
+ await runWrangler("build");
247
+ await endEventLoop();
248
+ expect(std.out).toMatchInlineSnapshot(`
249
+ "▲ [WARNING] Deprecation: \`wrangler build\` has been deprecated.
250
+
251
+ Please refer to https://developers.cloudflare.com/workers/wrangler/migration/deprecations/#build
252
+ for more information.
253
+ Attempting to run \`wrangler publish --dry-run --outdir=dist\` for you instead:
254
+
255
+
256
+ Total Upload: xx KiB / gzip: xx KiB
257
+ --dry-run: exiting now."
258
+ `);
259
+ });
249
260
  });
261
+
262
+ function endEventLoop() {
263
+ return new Promise((resolve) => setImmediate(resolve));
264
+ }