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
@@ -0,0 +1,80 @@
1
+ import { mockAccountId } from "./helpers/mock-account-id";
2
+ import { mockConsoleMethods } from "./helpers/mock-console";
3
+ import { runWrangler } from "./helpers/run-wrangler";
4
+
5
+ function endEventLoop() {
6
+ return new Promise((resolve) => setImmediate(resolve));
7
+ }
8
+
9
+ describe("d1", () => {
10
+ const std = mockConsoleMethods();
11
+
12
+ mockAccountId();
13
+
14
+ it("should show help when no argument is passed", async () => {
15
+ await runWrangler("d1");
16
+ await endEventLoop();
17
+
18
+ expect(std.out).toMatchInlineSnapshot(`
19
+ "wrangler d1
20
+
21
+ 🗄 Interact with a D1 database
22
+
23
+ Commands:
24
+ wrangler d1 list List D1 databases
25
+ wrangler d1 create <name> Create D1 database
26
+ wrangler d1 delete <name> Delete D1 database
27
+ wrangler d1 backup Interact with D1 Backups
28
+ wrangler d1 execute <database> Executed command or SQL file
29
+ wrangler d1 migrations Interact with D1 Migrations
30
+
31
+ Flags:
32
+ -c, --config Path to .toml configuration file [string]
33
+ -e, --env Environment to use for operations and .env files [string]
34
+ -h, --help Show help [boolean]
35
+ -v, --version Show version number [boolean]
36
+
37
+ 🚧 D1 is currently in open alpha and is not recommended for production data and traffic.
38
+ Please report any bugs to https://github.com/cloudflare/wrangler2/issues/new/choose.
39
+ To request features, visit https://community.cloudflare.com/c/developers/d1.
40
+ To give feedback, visit https://discord.gg/cloudflaredev"
41
+ `);
42
+ });
43
+
44
+ it("should show help when an invalid argument is passed", async () => {
45
+ await expect(() => runWrangler("d1 asdf")).rejects.toThrow(
46
+ "Unknown argument: asdf"
47
+ );
48
+
49
+ expect(std.err).toMatchInlineSnapshot(`
50
+ "X [ERROR] Unknown argument: asdf
51
+
52
+ "
53
+ `);
54
+ expect(std.out).toMatchInlineSnapshot(`
55
+ "
56
+ wrangler d1
57
+
58
+ 🗄 Interact with a D1 database
59
+
60
+ Commands:
61
+ wrangler d1 list List D1 databases
62
+ wrangler d1 create <name> Create D1 database
63
+ wrangler d1 delete <name> Delete D1 database
64
+ wrangler d1 backup Interact with D1 Backups
65
+ wrangler d1 execute <database> Executed command or SQL file
66
+ wrangler d1 migrations Interact with D1 Migrations
67
+
68
+ Flags:
69
+ -c, --config Path to .toml configuration file [string]
70
+ -e, --env Environment to use for operations and .env files [string]
71
+ -h, --help Show help [boolean]
72
+ -v, --version Show version number [boolean]
73
+
74
+ 🚧 D1 is currently in open alpha and is not recommended for production data and traffic.
75
+ Please report any bugs to https://github.com/cloudflare/wrangler2/issues/new/choose.
76
+ To request features, visit https://community.cloudflare.com/c/developers/d1.
77
+ To give feedback, visit https://discord.gg/cloudflaredev"
78
+ `);
79
+ });
80
+ });
@@ -0,0 +1,263 @@
1
+ import { rest } from "msw";
2
+ import { mockAccountId, mockApiToken } from "./helpers/mock-account-id";
3
+ import { mockConsoleMethods } from "./helpers/mock-console";
4
+ import { mockConfirm } from "./helpers/mock-dialogs";
5
+ import { msw } from "./helpers/msw";
6
+ import { runInTempDir } from "./helpers/run-in-tmp";
7
+ import { runWrangler } from "./helpers/run-wrangler";
8
+ import writeWranglerToml from "./helpers/write-wrangler-toml";
9
+ import type { KVNamespaceInfo } from "../kv/helpers";
10
+
11
+ describe("delete", () => {
12
+ mockAccountId();
13
+ mockApiToken();
14
+ runInTempDir();
15
+
16
+ const std = mockConsoleMethods();
17
+
18
+ it("should delete an entire service by name", async () => {
19
+ mockConfirm({
20
+ text: `Are you sure you want to delete my-script? This action cannot be undone.`,
21
+ result: true,
22
+ });
23
+ mockListKVNamespacesRequest();
24
+ mockDeleteWorkerRequest({ name: "my-script" });
25
+ await runWrangler("delete --name my-script");
26
+
27
+ expect(std).toMatchInlineSnapshot(`
28
+ Object {
29
+ "debug": "",
30
+ "err": "",
31
+ "out": "Successfully deleted my-script",
32
+ "warn": "",
33
+ }
34
+ `);
35
+ });
36
+
37
+ it("should delete a script by configuration", async () => {
38
+ mockConfirm({
39
+ text: `Are you sure you want to delete test-name? This action cannot be undone.`,
40
+ result: true,
41
+ });
42
+ writeWranglerToml();
43
+ mockListKVNamespacesRequest();
44
+ mockDeleteWorkerRequest();
45
+ await runWrangler("delete");
46
+
47
+ expect(std).toMatchInlineSnapshot(`
48
+ Object {
49
+ "debug": "",
50
+ "err": "",
51
+ "out": "Successfully deleted test-name",
52
+ "warn": "",
53
+ }
54
+ `);
55
+ });
56
+
57
+ it("shouldn't delete a service when doing a --dry-run", async () => {
58
+ await runWrangler("delete --name xyz --dry-run");
59
+
60
+ expect(std).toMatchInlineSnapshot(`
61
+ Object {
62
+ "debug": "",
63
+ "err": "",
64
+ "out": "--dry-run: exiting now.",
65
+ "warn": "",
66
+ }
67
+ `);
68
+ });
69
+
70
+ it('shouldn\'t delete when the user says "no"', async () => {
71
+ mockConfirm({
72
+ text: `Are you sure you want to delete xyz? This action cannot be undone.`,
73
+ result: false,
74
+ });
75
+
76
+ await runWrangler("delete --name xyz");
77
+
78
+ expect(std).toMatchInlineSnapshot(`
79
+ Object {
80
+ "debug": "",
81
+ "err": "",
82
+ "out": "",
83
+ "warn": "",
84
+ }
85
+ `);
86
+ });
87
+
88
+ it("should delete a site namespace associated with a worker", async () => {
89
+ const kvNamespaces = [
90
+ {
91
+ title: "__my-script-workers_sites_assets",
92
+ id: "id-for-my-script-site-ns",
93
+ },
94
+ // this one isn't associated with the worker
95
+ {
96
+ title: "__test-name-workers_sites_assets",
97
+ id: "id-for-another-site-ns",
98
+ },
99
+ ];
100
+
101
+ mockConfirm({
102
+ text: `Are you sure you want to delete my-script? This action cannot be undone.`,
103
+ result: true,
104
+ });
105
+ mockListKVNamespacesRequest(...kvNamespaces);
106
+ // it should only try to delete the site namespace associated with this worker
107
+ msw.use(
108
+ rest.delete(
109
+ "*/accounts/:accountId/storage/kv/namespaces/id-for-my-script-site-ns",
110
+ (req, res, ctx) => {
111
+ expect(req.params.accountId).toEqual("some-account-id");
112
+ return res.once(
113
+ ctx.status(200),
114
+ ctx.json({ success: true, errors: [], messages: [], result: null })
115
+ );
116
+ }
117
+ )
118
+ );
119
+
120
+ mockDeleteWorkerRequest({ name: "my-script" });
121
+ await runWrangler("delete --name my-script");
122
+ expect(std).toMatchInlineSnapshot(`
123
+ Object {
124
+ "debug": "",
125
+ "err": "",
126
+ "out": "🌀 Deleted asset namespace for Workers Site \\"__my-script-workers_sites_assets\\"
127
+ Successfully deleted my-script",
128
+ "warn": "",
129
+ }
130
+ `);
131
+ });
132
+
133
+ it("should delete a site namespace associated with a worker, including it's preview namespace", async () => {
134
+ // This is the same test as the previous one, but it includes a preview namespace
135
+ const kvNamespaces = [
136
+ {
137
+ title: "__my-script-workers_sites_assets",
138
+ id: "id-for-my-script-site-ns",
139
+ },
140
+ // this is the preview namespace
141
+ {
142
+ title: "__my-script-workers_sites_assets_preview",
143
+ id: "id-for-my-script-site-preview-ns",
144
+ },
145
+
146
+ // this one isn't associated with the worker
147
+ {
148
+ title: "__test-name-workers_sites_assets",
149
+ id: "id-for-another-site-ns",
150
+ },
151
+ ];
152
+
153
+ mockConfirm({
154
+ text: `Are you sure you want to delete my-script? This action cannot be undone.`,
155
+ result: true,
156
+ });
157
+ mockListKVNamespacesRequest(...kvNamespaces);
158
+ // it should only try to delete the site namespace associated with this worker
159
+
160
+ msw.use(
161
+ rest.delete(
162
+ "*/accounts/:accountId/storage/kv/namespaces/id-for-my-script-site-ns",
163
+ (req, res, ctx) => {
164
+ expect(req.params.accountId).toEqual("some-account-id");
165
+ return res.once(
166
+ ctx.status(200),
167
+ ctx.json({
168
+ success: true,
169
+ errors: [],
170
+ messages: [],
171
+ result: {},
172
+ })
173
+ );
174
+ }
175
+ )
176
+ );
177
+
178
+ msw.use(
179
+ rest.delete(
180
+ "*/accounts/:accountId/storage/kv/namespaces/id-for-my-script-site-preview-ns",
181
+ (req, res, ctx) => {
182
+ expect(req.params.accountId).toEqual("some-account-id");
183
+ return res.once(
184
+ ctx.status(200),
185
+ ctx.json({
186
+ success: true,
187
+ errors: [],
188
+ messages: [],
189
+ result: {},
190
+ })
191
+ );
192
+ }
193
+ )
194
+ );
195
+
196
+ mockDeleteWorkerRequest({ name: "my-script" });
197
+ await runWrangler("delete --name my-script");
198
+ expect(std).toMatchInlineSnapshot(`
199
+ Object {
200
+ "debug": "",
201
+ "err": "",
202
+ "out": "🌀 Deleted asset namespace for Workers Site \\"__my-script-workers_sites_assets\\"
203
+ 🌀 Deleted asset namespace for Workers Site \\"__my-script-workers_sites_assets_preview\\"
204
+ Successfully deleted my-script",
205
+ "warn": "",
206
+ }
207
+ `);
208
+ });
209
+ });
210
+
211
+ /** Create a mock handler for the request to upload a worker script. */
212
+ function mockDeleteWorkerRequest(
213
+ options: {
214
+ name?: string;
215
+ env?: string;
216
+ legacyEnv?: boolean;
217
+ } = {}
218
+ ) {
219
+ const { env, legacyEnv, name } = options;
220
+ msw.use(
221
+ rest.delete(
222
+ "*/accounts/:accountId/workers/services/:scriptName",
223
+ (req, res, ctx) => {
224
+ expect(req.params.accountId).toEqual("some-account-id");
225
+ expect(req.params.scriptName).toEqual(
226
+ legacyEnv && env
227
+ ? `${name ?? "test-name"}-${env}`
228
+ : `${name ?? "test-name"}`
229
+ );
230
+
231
+ expect(req.url.searchParams.get("force")).toEqual("true");
232
+
233
+ return res.once(
234
+ ctx.status(200),
235
+ ctx.json({
236
+ success: true,
237
+ errors: [],
238
+ messages: [],
239
+ result: null,
240
+ })
241
+ );
242
+ }
243
+ )
244
+ );
245
+ }
246
+
247
+ /** Create a mock handler for the request to get a list of all KV namespaces. */
248
+ function mockListKVNamespacesRequest(...namespaces: KVNamespaceInfo[]) {
249
+ msw.use(
250
+ rest.get("*/accounts/:accountId/storage/kv/namespaces", (req, res, ctx) => {
251
+ expect(req.params.accountId).toEqual("some-account-id");
252
+ return res.once(
253
+ ctx.status(200),
254
+ ctx.json({
255
+ success: true,
256
+ errors: [],
257
+ messages: [],
258
+ result: namespaces,
259
+ })
260
+ );
261
+ })
262
+ );
263
+ }
@@ -0,0 +1,91 @@
1
+ // import * as fs from "fs";
2
+ // import * as TOML from "@iarna/toml";
3
+ import { rest } from "msw";
4
+ import { mockAccountId, mockApiToken } from "./helpers/mock-account-id";
5
+ import { mockConsoleMethods } from "./helpers/mock-console";
6
+ import {
7
+ msw,
8
+ mswSuccessOauthHandlers,
9
+ mswSuccessUserHandlers,
10
+ } from "./helpers/msw";
11
+ import { mswSuccessDeployments } from "./helpers/msw";
12
+ import { runInTempDir } from "./helpers/run-in-tmp";
13
+ import { runWrangler } from "./helpers/run-wrangler";
14
+
15
+ describe("deployments", () => {
16
+ const std = mockConsoleMethods();
17
+ runInTempDir();
18
+ mockAccountId();
19
+ mockApiToken();
20
+ runInTempDir();
21
+
22
+ beforeEach(() => {
23
+ msw.use(
24
+ ...mswSuccessDeployments,
25
+ ...mswSuccessOauthHandlers,
26
+ ...mswSuccessUserHandlers,
27
+ rest.get(
28
+ "*/accounts/:accountId/workers/services/:scriptName",
29
+ (request, response, context) => {
30
+ expect(["undefined", "somethingElse"]).toContain(
31
+ request.params.scriptName
32
+ );
33
+
34
+ return response.once(
35
+ context.status(200),
36
+ context.json({
37
+ success: true,
38
+ errors: [],
39
+ messages: [],
40
+ result: {
41
+ default_environment: {
42
+ script: {
43
+ tag: "MOCK-TAG",
44
+ },
45
+ },
46
+ },
47
+ })
48
+ );
49
+ }
50
+ )
51
+ );
52
+ });
53
+
54
+ it("should log deployments", async () => {
55
+ await runWrangler("deployments");
56
+ expect(std.out).toMatchInlineSnapshot(`
57
+ "🚧\`wrangler deployments\` is a beta command. Please report any issues to https://github.com/cloudflare/wrangler2/issues/new/choose
58
+
59
+
60
+ Deployment ID: Galaxy-Class
61
+ Created on: 2021-01-01T00:00:00.000000Z
62
+ Author: Jean-Luc-Picard@federation.org
63
+ Source: Wrangler
64
+
65
+ Deployment ID: Intrepid-Class
66
+ Created on: 2021-02-02T00:00:00.000000Z
67
+ Author: Kathryn-Janeway@federation.org
68
+ Source: Wrangler
69
+ 🟩 Active"
70
+ `);
71
+ });
72
+
73
+ it("should log deployments for script with passed in name option", async () => {
74
+ await runWrangler("deployments --name somethingElse");
75
+ expect(std.out).toMatchInlineSnapshot(`
76
+ "🚧\`wrangler deployments\` is a beta command. Please report any issues to https://github.com/cloudflare/wrangler2/issues/new/choose
77
+
78
+
79
+ Deployment ID: Galaxy-Class
80
+ Created on: 2021-01-01T00:00:00.000000Z
81
+ Author: Jean-Luc-Picard@federation.org
82
+ Source: Wrangler
83
+
84
+ Deployment ID: Intrepid-Class
85
+ Created on: 2021-02-02T00:00:00.000000Z
86
+ Author: Kathryn-Janeway@federation.org
87
+ Source: Wrangler
88
+ 🟩 Active"
89
+ `);
90
+ });
91
+ });