wrangler 0.0.0-e3ce82b → 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 (264) hide show
  1. package/README.md +23 -3
  2. package/bin/wrangler.js +150 -62
  3. package/kv-asset-handler.js +1 -0
  4. package/miniflare-dist/index.mjs +1451 -21
  5. package/package.json +191 -153
  6. package/src/__tests__/access.test.ts +25 -0
  7. package/src/__tests__/api-dev.test.ts +209 -0
  8. package/src/__tests__/api-devregistry.test.js +56 -0
  9. package/src/__tests__/api.test.ts +80 -0
  10. package/src/__tests__/config-cache-without-cache-dir.test.ts +38 -0
  11. package/src/__tests__/config-cache.test.ts +30 -24
  12. package/src/__tests__/configuration.test.ts +3970 -3476
  13. package/src/__tests__/d1.test.ts +80 -0
  14. package/src/__tests__/delete.test.ts +230 -0
  15. package/src/__tests__/deployments.test.ts +91 -0
  16. package/src/__tests__/dev.test.tsx +1508 -955
  17. package/src/__tests__/dialogs.test.tsx +40 -0
  18. package/src/__tests__/generate.test.ts +235 -0
  19. package/src/__tests__/get-host-from-url.test.ts +16 -0
  20. package/src/__tests__/guess-worker-format.test.ts +68 -68
  21. package/src/__tests__/helpers/cmd-shim.d.ts +6 -6
  22. package/src/__tests__/helpers/mock-account-id.ts +24 -24
  23. package/src/__tests__/helpers/mock-bin.ts +20 -20
  24. package/src/__tests__/helpers/mock-cfetch.ts +216 -94
  25. package/src/__tests__/helpers/mock-console.ts +58 -39
  26. package/src/__tests__/helpers/mock-dialogs.ts +94 -71
  27. package/src/__tests__/helpers/mock-get-zone-from-host.ts +8 -0
  28. package/src/__tests__/helpers/mock-http-server.ts +30 -30
  29. package/src/__tests__/helpers/mock-istty.ts +65 -18
  30. package/src/__tests__/helpers/mock-known-routes.ts +7 -0
  31. package/src/__tests__/helpers/mock-kv.ts +27 -27
  32. package/src/__tests__/helpers/mock-oauth-flow.ts +225 -228
  33. package/src/__tests__/helpers/mock-process.ts +39 -0
  34. package/src/__tests__/helpers/mock-stdin.ts +82 -77
  35. package/src/__tests__/helpers/mock-web-socket.ts +21 -21
  36. package/src/__tests__/helpers/msw/handlers/access.ts +13 -0
  37. package/src/__tests__/helpers/msw/handlers/deployments.ts +59 -0
  38. package/src/__tests__/helpers/msw/handlers/namespaces.ts +104 -0
  39. package/src/__tests__/helpers/msw/handlers/oauth.ts +36 -0
  40. package/src/__tests__/helpers/msw/handlers/r2.ts +80 -0
  41. package/src/__tests__/helpers/msw/handlers/script.ts +75 -0
  42. package/src/__tests__/helpers/msw/handlers/user.ts +63 -0
  43. package/src/__tests__/helpers/msw/handlers/zones.ts +22 -0
  44. package/src/__tests__/helpers/msw/index.ts +21 -0
  45. package/src/__tests__/helpers/run-in-tmp.ts +27 -28
  46. package/src/__tests__/helpers/run-wrangler.ts +8 -8
  47. package/src/__tests__/helpers/worker-scripts/child-wrangler.toml +1 -0
  48. package/src/__tests__/helpers/worker-scripts/hello-world-worker.js +5 -0
  49. package/src/__tests__/helpers/worker-scripts/hello-world-wrangler.toml +1 -0
  50. package/src/__tests__/helpers/worker-scripts/parent-worker.js +8 -0
  51. package/src/__tests__/helpers/worker-scripts/parent-wrangler.toml +5 -0
  52. package/src/__tests__/helpers/write-worker-source.ts +16 -16
  53. package/src/__tests__/helpers/write-wrangler-toml.ts +9 -9
  54. package/src/__tests__/https-options.test.ts +142 -109
  55. package/src/__tests__/index.test.ts +241 -234
  56. package/src/__tests__/init.test.ts +2869 -1606
  57. package/src/__tests__/jest.setup.ts +159 -34
  58. package/src/__tests__/kv.test.ts +1660 -1466
  59. package/src/__tests__/logger.test.ts +100 -74
  60. package/src/__tests__/metrics.test.ts +450 -0
  61. package/src/__tests__/middleware.scheduled.test.ts +135 -0
  62. package/src/__tests__/middleware.test.ts +726 -0
  63. package/src/__tests__/package-manager.test.ts +303 -303
  64. package/src/__tests__/pages-deployment-tail.test.ts +820 -0
  65. package/src/__tests__/pages.test.ts +2423 -735
  66. package/src/__tests__/parse.test.ts +252 -252
  67. package/src/__tests__/paths.test.ts +39 -0
  68. package/src/__tests__/publish.test.ts +7505 -5627
  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 -228
  72. package/src/__tests__/route.test.ts +18 -18
  73. package/src/__tests__/secret.test.ts +622 -459
  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 +226 -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 -125
  82. package/src/__tests__/worker-namespace.test.ts +326 -0
  83. package/src/abort.d.ts +1 -1
  84. package/src/api/dev.ts +210 -0
  85. package/src/api/index.ts +2 -0
  86. package/src/bundle-reporter.tsx +68 -0
  87. package/src/bundle.ts +785 -159
  88. package/src/cfetch/index.ts +120 -81
  89. package/src/cfetch/internal.ts +207 -86
  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 +498 -357
  94. package/src/config/index.ts +302 -193
  95. package/src/config/validation-helpers.ts +379 -366
  96. package/src/config/validation.ts +1931 -1376
  97. package/src/config-cache.ts +81 -41
  98. package/src/create-worker-preview.ts +239 -142
  99. package/src/create-worker-upload-form.ts +300 -238
  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 +352 -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 -333
  117. package/src/dev/get-local-persistence-path.tsx +31 -0
  118. package/src/dev/local.tsx +866 -302
  119. package/src/dev/remote.tsx +591 -225
  120. package/src/dev/start-server.ts +538 -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 +905 -0
  125. package/src/dialogs.tsx +132 -99
  126. package/src/dispatch-namespace.ts +207 -0
  127. package/src/durable.ts +87 -87
  128. package/src/entry.ts +235 -228
  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 +625 -2789
  135. package/src/init.ts +970 -0
  136. package/src/inspect.ts +698 -593
  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 +96 -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 +4 -6
  153. package/src/package-manager.ts +173 -128
  154. package/src/pages/build.tsx +270 -0
  155. package/src/pages/constants.ts +18 -0
  156. package/src/pages/deployment-tails.tsx +284 -0
  157. package/src/pages/deployments.tsx +84 -0
  158. package/src/pages/dev.tsx +708 -0
  159. package/src/pages/errors.ts +66 -0
  160. package/src/pages/functions/buildPlugin.ts +107 -0
  161. package/src/pages/functions/buildWorker.ts +166 -0
  162. package/{pages → src/pages}/functions/filepath-routing.test.ts +113 -113
  163. package/src/pages/functions/filepath-routing.ts +189 -0
  164. package/src/pages/functions/identifiers.ts +78 -0
  165. package/src/pages/functions/routes-consolidation.test.ts +250 -0
  166. package/src/pages/functions/routes-consolidation.ts +73 -0
  167. package/src/pages/functions/routes-transformation.test.ts +282 -0
  168. package/src/pages/functions/routes-transformation.ts +115 -0
  169. package/src/pages/functions/routes-validation.test.ts +403 -0
  170. package/src/pages/functions/routes-validation.ts +202 -0
  171. package/src/pages/functions/routes.ts +151 -0
  172. package/src/pages/functions.tsx +82 -0
  173. package/src/pages/hash.tsx +13 -0
  174. package/src/pages/index.tsx +102 -0
  175. package/src/pages/projects.tsx +169 -0
  176. package/src/pages/prompt-select-project.tsx +31 -0
  177. package/src/pages/publish.tsx +451 -0
  178. package/src/pages/types.ts +41 -0
  179. package/src/pages/upload.tsx +426 -0
  180. package/src/pages/utils.ts +23 -0
  181. package/src/parse.ts +208 -125
  182. package/src/paths.ts +53 -8
  183. package/src/proxy.ts +618 -407
  184. package/src/publish/index.ts +270 -0
  185. package/src/publish/publish.ts +1035 -0
  186. package/src/pubsub/index.ts +286 -0
  187. package/src/pubsub/pubsub-commands.tsx +624 -0
  188. package/src/queues/cli/commands/consumer/add.ts +71 -0
  189. package/src/queues/cli/commands/consumer/index.ts +22 -0
  190. package/src/queues/cli/commands/consumer/remove.ts +38 -0
  191. package/src/queues/cli/commands/create.ts +25 -0
  192. package/src/queues/cli/commands/delete.ts +26 -0
  193. package/src/queues/cli/commands/index.ts +33 -0
  194. package/src/queues/cli/commands/list.ts +25 -0
  195. package/src/queues/client.ts +135 -0
  196. package/src/r2/constants.ts +4 -0
  197. package/src/r2/helpers.ts +131 -0
  198. package/src/r2/index.ts +289 -0
  199. package/src/routes.ts +140 -0
  200. package/src/secret/index.ts +378 -0
  201. package/src/selfsigned.d.ts +23 -23
  202. package/src/sites.tsx +273 -227
  203. package/src/tail/createTail.ts +379 -0
  204. package/src/tail/filters.ts +108 -110
  205. package/src/tail/index.ts +211 -296
  206. package/src/tail/printing.ts +86 -46
  207. package/src/type-generation.ts +173 -0
  208. package/src/update-check.ts +11 -11
  209. package/src/user/access.ts +69 -0
  210. package/src/user/choose-account.tsx +69 -0
  211. package/src/user/env-vars.ts +46 -0
  212. package/src/user/generate-auth-url.ts +33 -0
  213. package/src/user/generate-random-state.ts +16 -0
  214. package/src/user/index.ts +3 -0
  215. package/src/user/user.tsx +1192 -0
  216. package/src/utils/collectKeyValues.ts +14 -0
  217. package/src/whoami.tsx +141 -43
  218. package/src/worker.ts +171 -107
  219. package/src/yargs-types.ts +24 -0
  220. package/src/zones.ts +158 -40
  221. package/templates/__tests__/pages-dev-util.test.ts +128 -0
  222. package/templates/checked-fetch.js +17 -0
  223. package/templates/d1-beta-facade.js +205 -0
  224. package/templates/first-party-worker-module-facade.ts +18 -0
  225. package/templates/format-dev-errors.ts +32 -0
  226. package/templates/init-tests/test-jest-new-worker.js +25 -0
  227. package/templates/init-tests/test-vitest-new-worker.js +26 -0
  228. package/templates/middleware/common.ts +62 -0
  229. package/templates/middleware/loader-modules.ts +84 -0
  230. package/templates/middleware/loader-sw.ts +227 -0
  231. package/templates/middleware/middleware-miniflare3-json-error.ts +20 -0
  232. package/templates/middleware/middleware-pretty-error.ts +40 -0
  233. package/templates/middleware/middleware-scheduled.ts +15 -0
  234. package/templates/new-worker-scheduled.js +3 -3
  235. package/templates/new-worker-scheduled.ts +15 -15
  236. package/templates/new-worker.js +3 -3
  237. package/templates/new-worker.ts +15 -15
  238. package/templates/no-op-worker.js +10 -0
  239. package/templates/pages-dev-pipeline.ts +28 -0
  240. package/templates/pages-dev-util.ts +52 -0
  241. package/templates/pages-shim.ts +9 -0
  242. package/templates/pages-template-plugin.ts +171 -0
  243. package/templates/pages-template-worker.ts +189 -0
  244. package/templates/serve-static-assets.ts +63 -0
  245. package/templates/service-bindings-module-facade.js +54 -0
  246. package/templates/service-bindings-sw-facade.js +42 -0
  247. package/templates/tsconfig.json +96 -95
  248. package/wrangler-dist/cli.d.ts +893 -0
  249. package/wrangler-dist/cli.js +146109 -108690
  250. package/pages/functions/buildPlugin.ts +0 -105
  251. package/pages/functions/buildWorker.ts +0 -151
  252. package/pages/functions/filepath-routing.ts +0 -189
  253. package/pages/functions/identifiers.ts +0 -78
  254. package/pages/functions/routes.ts +0 -156
  255. package/pages/functions/template-plugin.ts +0 -147
  256. package/pages/functions/template-worker.ts +0 -143
  257. package/src/__tests__/helpers/faye-websocket.d.ts +0 -6
  258. package/src/kv.ts +0 -408
  259. package/src/miniflare-cli/enum-keys.ts +0 -17
  260. package/src/pages.tsx +0 -2093
  261. package/src/publish.ts +0 -721
  262. package/src/r2.ts +0 -50
  263. package/src/user.tsx +0 -1214
  264. package/templates/static-asset-facade.js +0 -43
@@ -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
+ });