wrangler 0.0.0-e3e3243 → 0.0.0-e41c7e41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (304) hide show
  1. package/Cloudflare_CA.pem +18 -0
  2. package/README.md +47 -14
  3. package/bin/wrangler.js +154 -31
  4. package/kv-asset-handler.js +1 -0
  5. package/miniflare-dist/index.mjs +6258 -21
  6. package/package.json +191 -141
  7. package/src/__tests__/access.test.ts +25 -0
  8. package/src/__tests__/api-dev.test.ts +209 -0
  9. package/src/__tests__/api-devregistry.test.js +56 -0
  10. package/src/__tests__/api.test.ts +80 -0
  11. package/src/__tests__/config-cache-without-cache-dir.test.ts +38 -0
  12. package/src/__tests__/config-cache.test.ts +42 -0
  13. package/src/__tests__/configuration.test.ts +3971 -2810
  14. package/src/__tests__/d1.test.ts +80 -0
  15. package/src/__tests__/delete.test.ts +230 -0
  16. package/src/__tests__/deployments.test.ts +91 -0
  17. package/src/__tests__/dev.test.tsx +1521 -526
  18. package/src/__tests__/dialogs.test.tsx +40 -0
  19. package/src/__tests__/generate.test.ts +235 -0
  20. package/src/__tests__/get-host-from-url.test.ts +16 -0
  21. package/src/__tests__/guess-worker-format.test.ts +74 -57
  22. package/src/__tests__/helpers/cmd-shim.d.ts +6 -6
  23. package/src/__tests__/helpers/mock-account-id.ts +24 -24
  24. package/src/__tests__/helpers/mock-bin.ts +20 -20
  25. package/src/__tests__/helpers/mock-cfetch.ts +219 -93
  26. package/src/__tests__/helpers/mock-console.ts +68 -32
  27. package/src/__tests__/helpers/mock-dialogs.ts +121 -33
  28. package/src/__tests__/helpers/mock-get-zone-from-host.ts +8 -0
  29. package/src/__tests__/helpers/mock-http-server.ts +46 -0
  30. package/src/__tests__/helpers/mock-istty.ts +74 -0
  31. package/src/__tests__/helpers/mock-known-routes.ts +7 -0
  32. package/src/__tests__/helpers/mock-kv.ts +27 -27
  33. package/src/__tests__/helpers/mock-oauth-flow.ts +252 -0
  34. package/src/__tests__/helpers/mock-process.ts +39 -0
  35. package/src/__tests__/helpers/mock-stdin.ts +82 -77
  36. package/src/__tests__/helpers/mock-web-socket.ts +21 -21
  37. package/src/__tests__/helpers/msw/handlers/access.ts +13 -0
  38. package/src/__tests__/helpers/msw/handlers/deployments.ts +59 -0
  39. package/src/__tests__/helpers/msw/handlers/namespaces.ts +104 -0
  40. package/src/__tests__/helpers/msw/handlers/oauth.ts +36 -0
  41. package/src/__tests__/helpers/msw/handlers/r2.ts +80 -0
  42. package/src/__tests__/helpers/msw/handlers/script.ts +75 -0
  43. package/src/__tests__/helpers/msw/handlers/user.ts +63 -0
  44. package/src/__tests__/helpers/msw/handlers/zones.ts +22 -0
  45. package/src/__tests__/helpers/msw/index.ts +21 -0
  46. package/src/__tests__/helpers/run-in-tmp.ts +28 -22
  47. package/src/__tests__/helpers/run-wrangler.ts +8 -8
  48. package/src/__tests__/helpers/worker-scripts/child-wrangler.toml +1 -0
  49. package/src/__tests__/helpers/worker-scripts/hello-world-worker.js +5 -0
  50. package/src/__tests__/helpers/worker-scripts/hello-world-wrangler.toml +1 -0
  51. package/src/__tests__/helpers/worker-scripts/parent-worker.js +8 -0
  52. package/src/__tests__/helpers/worker-scripts/parent-wrangler.toml +5 -0
  53. package/src/__tests__/helpers/write-worker-source.ts +31 -0
  54. package/src/__tests__/helpers/write-wrangler-toml.ts +9 -9
  55. package/src/__tests__/https-options.test.ts +144 -108
  56. package/src/__tests__/index.test.ts +248 -967
  57. package/src/__tests__/init.test.ts +2900 -0
  58. package/src/__tests__/jest.setup.ts +167 -34
  59. package/src/__tests__/kv.test.ts +1661 -1366
  60. package/src/__tests__/logger.test.ts +141 -0
  61. package/src/__tests__/metrics.test.ts +450 -0
  62. package/src/__tests__/middleware.scheduled.test.ts +135 -0
  63. package/src/__tests__/middleware.test.ts +726 -0
  64. package/src/__tests__/package-manager.test.ts +312 -165
  65. package/src/__tests__/pages-deployment-tail.test.ts +820 -0
  66. package/src/__tests__/pages.test.ts +2437 -77
  67. package/src/__tests__/parse.test.ts +253 -245
  68. package/src/__tests__/paths.test.ts +39 -0
  69. package/src/__tests__/publish.test.ts +7569 -3445
  70. package/src/__tests__/pubsub.test.ts +370 -0
  71. package/src/__tests__/queues.test.ts +371 -0
  72. package/src/__tests__/r2.test.ts +388 -193
  73. package/src/__tests__/route.test.ts +22 -22
  74. package/src/__tests__/secret.test.ts +626 -407
  75. package/src/__tests__/tail.test.ts +680 -442
  76. package/src/__tests__/test-old-node-version.js +31 -0
  77. package/src/__tests__/type-generation.test.ts +226 -0
  78. package/src/__tests__/user.test.ts +155 -0
  79. package/src/__tests__/utils-collectKeyValues.test.ts +47 -0
  80. package/src/__tests__/validate-dev-props.test.ts +56 -0
  81. package/src/__tests__/version.test.ts +35 -0
  82. package/src/__tests__/whoami.test.tsx +266 -88
  83. package/src/__tests__/worker-namespace.test.ts +326 -0
  84. package/src/abort.d.ts +3 -0
  85. package/src/api/dev.ts +210 -0
  86. package/src/api/index.ts +2 -0
  87. package/src/bundle-reporter.tsx +68 -0
  88. package/src/bundle.ts +791 -123
  89. package/src/cfetch/index.ts +123 -67
  90. package/src/cfetch/internal.ts +216 -92
  91. package/src/cli.ts +23 -14
  92. package/src/config/README.md +1 -1
  93. package/src/config/config.ts +236 -179
  94. package/src/config/diagnostics.ts +61 -61
  95. package/src/config/environment.ts +506 -316
  96. package/src/config/index.ts +310 -38
  97. package/src/config/validation-helpers.ts +385 -342
  98. package/src/config/validation.ts +1970 -1099
  99. package/src/config-cache.ts +85 -0
  100. package/src/create-worker-preview.ts +240 -124
  101. package/src/create-worker-upload-form.ts +300 -201
  102. package/src/d1/backups.tsx +218 -0
  103. package/src/d1/constants.ts +2 -0
  104. package/src/d1/create.tsx +63 -0
  105. package/src/d1/delete.tsx +56 -0
  106. package/src/d1/execute.tsx +352 -0
  107. package/src/d1/formatTimeAgo.ts +14 -0
  108. package/src/d1/index.ts +99 -0
  109. package/src/d1/list.tsx +48 -0
  110. package/src/d1/migrations.tsx +446 -0
  111. package/src/d1/options.ts +22 -0
  112. package/src/d1/types.tsx +24 -0
  113. package/src/d1/utils.ts +48 -0
  114. package/src/delete.ts +108 -0
  115. package/src/deployments.ts +77 -0
  116. package/src/deprecated/index.ts +438 -0
  117. package/src/dev/dev-vars.ts +39 -0
  118. package/src/dev/dev.tsx +526 -328
  119. package/src/dev/get-local-persistence-path.tsx +31 -0
  120. package/src/dev/local.tsx +867 -213
  121. package/src/dev/remote.tsx +592 -192
  122. package/src/dev/start-server.ts +538 -0
  123. package/src/dev/use-esbuild.ts +184 -84
  124. package/src/dev/validate-dev-props.ts +31 -0
  125. package/src/dev-registry.tsx +201 -0
  126. package/src/dev.tsx +905 -0
  127. package/src/dialogs.tsx +150 -59
  128. package/src/dispatch-namespace.ts +207 -0
  129. package/src/durable.ts +102 -0
  130. package/src/entry.ts +260 -171
  131. package/src/environment-variables.ts +40 -23
  132. package/src/errors.ts +11 -0
  133. package/src/git-client.ts +124 -0
  134. package/src/global-wrangler-config-path.ts +26 -0
  135. package/src/https-options.ts +85 -80
  136. package/src/index.tsx +634 -2341
  137. package/src/init.ts +970 -0
  138. package/src/inspect.ts +707 -557
  139. package/src/intl-polyfill.d.ts +123 -123
  140. package/src/is-ci.ts +14 -0
  141. package/src/is-interactive.ts +16 -0
  142. package/src/kv/helpers.ts +430 -0
  143. package/src/kv/index.ts +596 -0
  144. package/src/logger.ts +92 -0
  145. package/src/metrics/index.ts +5 -0
  146. package/src/metrics/metrics-config.ts +239 -0
  147. package/src/metrics/metrics-dispatcher.ts +96 -0
  148. package/src/metrics/metrics-usage-headers.ts +24 -0
  149. package/src/metrics/send-event.ts +96 -0
  150. package/src/miniflare-cli/assets.ts +215 -0
  151. package/src/miniflare-cli/index.ts +206 -30
  152. package/src/miniflare-cli/request-context.ts +40 -0
  153. package/src/module-collection.ts +222 -213
  154. package/src/open-in-browser.ts +8 -16
  155. package/src/package-manager.ts +183 -90
  156. package/src/pages/build.tsx +270 -0
  157. package/src/pages/constants.ts +18 -0
  158. package/src/pages/deployment-tails.tsx +284 -0
  159. package/src/pages/deployments.tsx +84 -0
  160. package/src/pages/dev.tsx +708 -0
  161. package/src/pages/errors.ts +66 -0
  162. package/src/pages/functions/buildPlugin.ts +107 -0
  163. package/src/pages/functions/buildWorker.ts +166 -0
  164. package/src/pages/functions/filepath-routing.test.ts +234 -0
  165. package/src/pages/functions/filepath-routing.ts +189 -0
  166. package/src/pages/functions/identifiers.ts +78 -0
  167. package/src/pages/functions/routes-consolidation.test.ts +250 -0
  168. package/src/pages/functions/routes-consolidation.ts +73 -0
  169. package/src/pages/functions/routes-transformation.test.ts +282 -0
  170. package/src/pages/functions/routes-transformation.ts +115 -0
  171. package/src/pages/functions/routes-validation.test.ts +403 -0
  172. package/src/pages/functions/routes-validation.ts +202 -0
  173. package/src/pages/functions/routes.ts +151 -0
  174. package/src/pages/functions.tsx +82 -0
  175. package/src/pages/hash.tsx +13 -0
  176. package/src/pages/index.tsx +102 -0
  177. package/src/pages/projects.tsx +169 -0
  178. package/src/pages/prompt-select-project.tsx +31 -0
  179. package/src/pages/publish.tsx +451 -0
  180. package/src/pages/types.ts +41 -0
  181. package/src/pages/upload.tsx +426 -0
  182. package/src/pages/utils.ts +23 -0
  183. package/src/parse.ts +224 -121
  184. package/src/paths.ts +53 -8
  185. package/src/proxy.ts +624 -375
  186. package/src/publish/index.ts +270 -0
  187. package/src/publish/publish.ts +1035 -0
  188. package/src/pubsub/index.ts +286 -0
  189. package/src/pubsub/pubsub-commands.tsx +624 -0
  190. package/src/queues/cli/commands/consumer/add.ts +71 -0
  191. package/src/queues/cli/commands/consumer/index.ts +22 -0
  192. package/src/queues/cli/commands/consumer/remove.ts +38 -0
  193. package/src/queues/cli/commands/create.ts +25 -0
  194. package/src/queues/cli/commands/delete.ts +26 -0
  195. package/src/queues/cli/commands/index.ts +33 -0
  196. package/src/queues/cli/commands/list.ts +25 -0
  197. package/src/queues/client.ts +135 -0
  198. package/src/r2/constants.ts +4 -0
  199. package/src/r2/helpers.ts +131 -0
  200. package/src/r2/index.ts +289 -0
  201. package/src/routes.ts +140 -0
  202. package/src/secret/index.ts +378 -0
  203. package/src/selfsigned.d.ts +23 -23
  204. package/src/sites.tsx +283 -191
  205. package/src/tail/createTail.ts +379 -0
  206. package/src/tail/filters.ts +108 -110
  207. package/src/tail/index.ts +211 -296
  208. package/src/tail/printing.ts +92 -47
  209. package/src/type-generation.ts +173 -0
  210. package/src/update-check.ts +19 -0
  211. package/src/user/access.ts +69 -0
  212. package/src/user/choose-account.tsx +69 -0
  213. package/src/user/env-vars.ts +46 -0
  214. package/src/user/generate-auth-url.ts +33 -0
  215. package/src/user/generate-random-state.ts +16 -0
  216. package/src/user/index.ts +3 -0
  217. package/src/user/user.tsx +1192 -0
  218. package/src/utils/collectKeyValues.ts +14 -0
  219. package/src/whoami.tsx +142 -42
  220. package/src/worker.ts +182 -100
  221. package/src/yargs-types.ts +24 -0
  222. package/src/zones.ts +191 -0
  223. package/templates/__tests__/pages-dev-util.test.ts +128 -0
  224. package/templates/checked-fetch.js +17 -0
  225. package/templates/d1-beta-facade.js +205 -0
  226. package/templates/first-party-worker-module-facade.ts +18 -0
  227. package/templates/format-dev-errors.ts +32 -0
  228. package/templates/gitignore +171 -0
  229. package/templates/init-tests/test-jest-new-worker.js +25 -0
  230. package/templates/init-tests/test-vitest-new-worker.js +26 -0
  231. package/templates/middleware/common.ts +62 -0
  232. package/templates/middleware/loader-modules.ts +84 -0
  233. package/templates/middleware/loader-sw.ts +227 -0
  234. package/templates/middleware/middleware-miniflare3-json-error.ts +20 -0
  235. package/templates/middleware/middleware-pretty-error.ts +40 -0
  236. package/templates/middleware/middleware-scheduled.ts +15 -0
  237. package/templates/new-worker-scheduled.js +17 -0
  238. package/templates/new-worker-scheduled.ts +32 -0
  239. package/templates/new-worker.js +3 -3
  240. package/templates/new-worker.ts +18 -3
  241. package/templates/no-op-worker.js +10 -0
  242. package/templates/pages-dev-pipeline.ts +28 -0
  243. package/templates/pages-dev-util.ts +52 -0
  244. package/templates/pages-shim.ts +9 -0
  245. package/templates/pages-template-plugin.ts +171 -0
  246. package/templates/pages-template-worker.ts +189 -0
  247. package/templates/serve-static-assets.ts +63 -0
  248. package/templates/service-bindings-module-facade.js +54 -0
  249. package/templates/service-bindings-sw-facade.js +42 -0
  250. package/templates/tsconfig.json +96 -95
  251. package/wrangler-dist/cli.d.ts +893 -0
  252. package/wrangler-dist/cli.js +116238 -94482
  253. package/miniflare-dist/index.mjs.map +0 -7
  254. package/pages/functions/buildWorker.ts +0 -62
  255. package/pages/functions/filepath-routing.test.ts +0 -223
  256. package/pages/functions/filepath-routing.ts +0 -181
  257. package/pages/functions/identifiers.ts +0 -78
  258. package/pages/functions/routes.ts +0 -151
  259. package/pages/functions/template-worker.ts +0 -130
  260. package/src/__tests__/helpers/faye-websocket.d.ts +0 -6
  261. package/src/__tests__/logout.test.ts +0 -52
  262. package/src/__tests__/sentry.test.ts +0 -146
  263. package/src/kv.ts +0 -319
  264. package/src/miniflare-cli/enum-keys.ts +0 -17
  265. package/src/pages.tsx +0 -1061
  266. package/src/publish.ts +0 -350
  267. package/src/r2.ts +0 -50
  268. package/src/reporting.ts +0 -131
  269. package/src/user.tsx +0 -1127
  270. package/templates/static-asset-facade.js +0 -47
  271. package/vendor/@cloudflare/kv-asset-handler/CHANGELOG.md +0 -332
  272. package/vendor/@cloudflare/kv-asset-handler/LICENSE_APACHE +0 -176
  273. package/vendor/@cloudflare/kv-asset-handler/LICENSE_MIT +0 -25
  274. package/vendor/@cloudflare/kv-asset-handler/README.md +0 -245
  275. package/vendor/@cloudflare/kv-asset-handler/dist/index.d.ts +0 -32
  276. package/vendor/@cloudflare/kv-asset-handler/dist/index.js +0 -354
  277. package/vendor/@cloudflare/kv-asset-handler/dist/mocks.d.ts +0 -13
  278. package/vendor/@cloudflare/kv-asset-handler/dist/mocks.js +0 -148
  279. package/vendor/@cloudflare/kv-asset-handler/dist/test/getAssetFromKV.d.ts +0 -1
  280. package/vendor/@cloudflare/kv-asset-handler/dist/test/getAssetFromKV.js +0 -436
  281. package/vendor/@cloudflare/kv-asset-handler/dist/test/mapRequestToAsset.d.ts +0 -1
  282. package/vendor/@cloudflare/kv-asset-handler/dist/test/mapRequestToAsset.js +0 -40
  283. package/vendor/@cloudflare/kv-asset-handler/dist/test/serveSinglePageApp.d.ts +0 -1
  284. package/vendor/@cloudflare/kv-asset-handler/dist/test/serveSinglePageApp.js +0 -42
  285. package/vendor/@cloudflare/kv-asset-handler/dist/types.d.ts +0 -26
  286. package/vendor/@cloudflare/kv-asset-handler/dist/types.js +0 -31
  287. package/vendor/@cloudflare/kv-asset-handler/package.json +0 -52
  288. package/vendor/@cloudflare/kv-asset-handler/src/index.ts +0 -296
  289. package/vendor/@cloudflare/kv-asset-handler/src/mocks.ts +0 -136
  290. package/vendor/@cloudflare/kv-asset-handler/src/test/getAssetFromKV.ts +0 -464
  291. package/vendor/@cloudflare/kv-asset-handler/src/test/mapRequestToAsset.ts +0 -33
  292. package/vendor/@cloudflare/kv-asset-handler/src/test/serveSinglePageApp.ts +0 -42
  293. package/vendor/@cloudflare/kv-asset-handler/src/types.ts +0 -39
  294. package/vendor/wrangler-mime/CHANGELOG.md +0 -289
  295. package/vendor/wrangler-mime/LICENSE +0 -21
  296. package/vendor/wrangler-mime/Mime.js +0 -97
  297. package/vendor/wrangler-mime/README.md +0 -187
  298. package/vendor/wrangler-mime/cli.js +0 -46
  299. package/vendor/wrangler-mime/index.js +0 -4
  300. package/vendor/wrangler-mime/lite.js +0 -4
  301. package/vendor/wrangler-mime/package.json +0 -52
  302. package/vendor/wrangler-mime/types/other.js +0 -1
  303. package/vendor/wrangler-mime/types/standard.js +0 -1
  304. package/wrangler-dist/cli.js.map +0 -7
@@ -0,0 +1,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,230 @@
1
+ import { mockAccountId, mockApiToken } from "./helpers/mock-account-id";
2
+ import { setMockResponse, unsetAllMocks } from "./helpers/mock-cfetch";
3
+ import { mockConsoleMethods } from "./helpers/mock-console";
4
+ import { mockConfirm } from "./helpers/mock-dialogs";
5
+ import { runInTempDir } from "./helpers/run-in-tmp";
6
+ import { runWrangler } from "./helpers/run-wrangler";
7
+ import writeWranglerToml from "./helpers/write-wrangler-toml";
8
+ import type { KVNamespaceInfo } from "../kv/helpers";
9
+
10
+ describe("delete", () => {
11
+ mockAccountId();
12
+ mockApiToken();
13
+ runInTempDir();
14
+
15
+ afterEach(() => {
16
+ unsetAllMocks();
17
+ });
18
+
19
+ const std = mockConsoleMethods();
20
+
21
+ it("should delete an entire service by name", async () => {
22
+ mockConfirm({
23
+ text: `Are you sure you want to delete my-script? This action cannot be undone.`,
24
+ result: true,
25
+ });
26
+ mockListKVNamespacesRequest();
27
+ mockDeleteWorkerRequest({ name: "my-script" });
28
+ await runWrangler("delete --name my-script");
29
+
30
+ expect(std).toMatchInlineSnapshot(`
31
+ Object {
32
+ "debug": "",
33
+ "err": "",
34
+ "out": "Successfully deleted my-script",
35
+ "warn": "",
36
+ }
37
+ `);
38
+ });
39
+
40
+ it("should delete a script by configuration", async () => {
41
+ mockConfirm({
42
+ text: `Are you sure you want to delete test-name? This action cannot be undone.`,
43
+ result: true,
44
+ });
45
+ writeWranglerToml();
46
+ mockListKVNamespacesRequest();
47
+ mockDeleteWorkerRequest();
48
+ await runWrangler("delete");
49
+
50
+ expect(std).toMatchInlineSnapshot(`
51
+ Object {
52
+ "debug": "",
53
+ "err": "",
54
+ "out": "Successfully deleted test-name",
55
+ "warn": "",
56
+ }
57
+ `);
58
+ });
59
+
60
+ it("shouldn't delete a service when doing a --dry-run", async () => {
61
+ await runWrangler("delete --name xyz --dry-run");
62
+
63
+ expect(std).toMatchInlineSnapshot(`
64
+ Object {
65
+ "debug": "",
66
+ "err": "",
67
+ "out": "--dry-run: exiting now.",
68
+ "warn": "",
69
+ }
70
+ `);
71
+ });
72
+
73
+ it('shouldn\'t delete when the user says "no"', async () => {
74
+ mockConfirm({
75
+ text: `Are you sure you want to delete xyz? This action cannot be undone.`,
76
+ result: false,
77
+ });
78
+
79
+ await runWrangler("delete --name xyz");
80
+
81
+ expect(std).toMatchInlineSnapshot(`
82
+ Object {
83
+ "debug": "",
84
+ "err": "",
85
+ "out": "",
86
+ "warn": "",
87
+ }
88
+ `);
89
+ });
90
+
91
+ it("should delete a site namespace associated with a worker", async () => {
92
+ const kvNamespaces = [
93
+ {
94
+ title: "__my-script-workers_sites_assets",
95
+ id: "id-for-my-script-site-ns",
96
+ },
97
+ // this one isn't associated with the worker
98
+ {
99
+ title: "__test-name-workers_sites_assets",
100
+ id: "id-for-another-site-ns",
101
+ },
102
+ ];
103
+
104
+ mockConfirm({
105
+ text: `Are you sure you want to delete my-script? This action cannot be undone.`,
106
+ result: true,
107
+ });
108
+ mockListKVNamespacesRequest(...kvNamespaces);
109
+ // it should only try to delete the site namespace associated with this worker
110
+ setMockResponse(
111
+ "/accounts/:accountId/storage/kv/namespaces/id-for-my-script-site-ns",
112
+ "DELETE",
113
+ ([_url, accountId]) => {
114
+ expect(accountId).toEqual("some-account-id");
115
+ return null;
116
+ }
117
+ );
118
+ mockDeleteWorkerRequest({ name: "my-script" });
119
+ await runWrangler("delete --name my-script");
120
+ expect(std).toMatchInlineSnapshot(`
121
+ Object {
122
+ "debug": "",
123
+ "err": "",
124
+ "out": "🌀 Deleted asset namespace for Workers Site \\"__my-script-workers_sites_assets\\"
125
+ Successfully deleted my-script",
126
+ "warn": "",
127
+ }
128
+ `);
129
+ });
130
+
131
+ it("should delete a site namespace associated with a worker, including it's preview namespace", async () => {
132
+ // This is the same test as the previous one, but it includes a preview namespace
133
+ const kvNamespaces = [
134
+ {
135
+ title: "__my-script-workers_sites_assets",
136
+ id: "id-for-my-script-site-ns",
137
+ },
138
+ // this is the preview namespace
139
+ {
140
+ title: "__my-script-workers_sites_assets_preview",
141
+ id: "id-for-my-script-site-preview-ns",
142
+ },
143
+
144
+ // this one isn't associated with the worker
145
+ {
146
+ title: "__test-name-workers_sites_assets",
147
+ id: "id-for-another-site-ns",
148
+ },
149
+ ];
150
+
151
+ mockConfirm({
152
+ text: `Are you sure you want to delete my-script? This action cannot be undone.`,
153
+ result: true,
154
+ });
155
+ mockListKVNamespacesRequest(...kvNamespaces);
156
+ // it should only try to delete the site namespace associated with this worker
157
+
158
+ setMockResponse(
159
+ "/accounts/:accountId/storage/kv/namespaces/id-for-my-script-site-ns",
160
+ "DELETE",
161
+ ([_url, accountId]) => {
162
+ expect(accountId).toEqual("some-account-id");
163
+ return null;
164
+ }
165
+ );
166
+
167
+ setMockResponse(
168
+ "/accounts/:accountId/storage/kv/namespaces/id-for-my-script-site-preview-ns",
169
+ "DELETE",
170
+ ([_url, accountId]) => {
171
+ expect(accountId).toEqual("some-account-id");
172
+ return null;
173
+ }
174
+ );
175
+
176
+ mockDeleteWorkerRequest({ name: "my-script" });
177
+ await runWrangler("delete --name my-script");
178
+ expect(std).toMatchInlineSnapshot(`
179
+ Object {
180
+ "debug": "",
181
+ "err": "",
182
+ "out": "🌀 Deleted asset namespace for Workers Site \\"__my-script-workers_sites_assets\\"
183
+ 🌀 Deleted asset namespace for Workers Site \\"__my-script-workers_sites_assets_preview\\"
184
+ Successfully deleted my-script",
185
+ "warn": "",
186
+ }
187
+ `);
188
+ });
189
+ });
190
+
191
+ /** Create a mock handler for the request to upload a worker script. */
192
+ function mockDeleteWorkerRequest(
193
+ options: {
194
+ name?: string;
195
+ env?: string;
196
+ legacyEnv?: boolean;
197
+ } = {}
198
+ ) {
199
+ const { env, legacyEnv, name } = options;
200
+ setMockResponse(
201
+ // there's no special handling for environments yet
202
+ "/accounts/:accountId/workers/services/:scriptName",
203
+ "DELETE",
204
+ async ([_url, accountId, scriptName], { method }, queryParams) => {
205
+ expect(accountId).toEqual("some-account-id");
206
+ expect(method).toEqual("DELETE");
207
+ expect(scriptName).toEqual(
208
+ legacyEnv && env
209
+ ? `${name || "test-name"}-${env}`
210
+ : `${name || "test-name"}`
211
+ );
212
+
213
+ expect(queryParams.get("force")).toEqual("true");
214
+
215
+ return null;
216
+ }
217
+ );
218
+ }
219
+
220
+ /** Create a mock handler for the request to get a list of all KV namespaces. */
221
+ function mockListKVNamespacesRequest(...namespaces: KVNamespaceInfo[]) {
222
+ setMockResponse(
223
+ "/accounts/:accountId/storage/kv/namespaces",
224
+ "GET",
225
+ ([_url, accountId]) => {
226
+ expect(accountId).toEqual("some-account-id");
227
+ return namespaces;
228
+ }
229
+ );
230
+ }
@@ -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
+ });