wrangler 0.0.0-e2f9bb2 → 0.0.0-e30d1013

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