wrangler 0.0.0-e322475 → 0.0.0-e33294b0

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 (324) hide show
  1. package/README.md +24 -4
  2. package/bin/wrangler.js +170 -62
  3. package/miniflare-dist/index.mjs +1499 -34
  4. package/package.json +193 -156
  5. package/src/__tests__/access.test.ts +25 -0
  6. package/src/__tests__/api-dev.test.ts +238 -0
  7. package/src/__tests__/api-devregistry.test.js +64 -0
  8. package/src/__tests__/api.test.ts +80 -0
  9. package/src/__tests__/config-cache-without-cache-dir.test.ts +38 -0
  10. package/src/__tests__/config-cache.test.ts +30 -24
  11. package/src/__tests__/configuration.test.ts +4222 -3537
  12. package/src/__tests__/d1/d1.test.ts +82 -0
  13. package/src/__tests__/d1/execute.test.ts +64 -0
  14. package/src/__tests__/d1/migrate.test.ts +155 -0
  15. package/src/__tests__/d1/splitter.test.ts +255 -0
  16. package/src/__tests__/delete.test.ts +266 -0
  17. package/src/__tests__/deployments.test.ts +129 -0
  18. package/src/__tests__/dev.test.tsx +1560 -1028
  19. package/src/__tests__/generate.test.ts +238 -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/end-event-loop.ts +6 -0
  24. package/src/__tests__/helpers/mock-account-id.ts +24 -24
  25. package/src/__tests__/helpers/mock-auth-domain.ts +20 -0
  26. package/src/__tests__/helpers/mock-bin.ts +20 -20
  27. package/src/__tests__/helpers/mock-console.ts +51 -42
  28. package/src/__tests__/helpers/mock-dialogs.ts +88 -102
  29. package/src/__tests__/helpers/mock-get-pages-upload-token.ts +25 -0
  30. package/src/__tests__/helpers/mock-get-zone-from-host.ts +11 -0
  31. package/src/__tests__/helpers/mock-http-server.ts +30 -30
  32. package/src/__tests__/helpers/mock-istty.ts +65 -18
  33. package/src/__tests__/helpers/mock-known-routes.ts +12 -0
  34. package/src/__tests__/helpers/mock-kv.ts +41 -28
  35. package/src/__tests__/helpers/mock-oauth-flow.ts +241 -233
  36. package/src/__tests__/helpers/mock-process.ts +23 -13
  37. package/src/__tests__/helpers/mock-set-timeout.ts +16 -0
  38. package/src/__tests__/helpers/mock-stdin.ts +82 -77
  39. package/src/__tests__/helpers/mock-web-socket.ts +21 -21
  40. package/src/__tests__/helpers/msw/blob-worker.cjs +19 -0
  41. package/src/__tests__/helpers/msw/handlers/access.ts +13 -0
  42. package/src/__tests__/helpers/msw/handlers/deployments.ts +93 -0
  43. package/src/__tests__/helpers/msw/handlers/namespaces.ts +81 -0
  44. package/src/__tests__/helpers/msw/handlers/oauth.ts +31 -0
  45. package/src/__tests__/helpers/msw/handlers/r2.ts +60 -0
  46. package/src/__tests__/helpers/msw/handlers/script.ts +56 -0
  47. package/src/__tests__/helpers/msw/handlers/user.ts +52 -0
  48. package/src/__tests__/helpers/msw/handlers/zones.ts +20 -0
  49. package/src/__tests__/helpers/msw/index.ts +50 -0
  50. package/src/__tests__/helpers/msw/read-file-sync.js +61 -0
  51. package/src/__tests__/helpers/run-in-tmp.ts +27 -28
  52. package/src/__tests__/helpers/run-wrangler.ts +8 -8
  53. package/src/__tests__/helpers/string-dynamic-values-matcher.ts +28 -0
  54. package/src/__tests__/helpers/worker-scripts/child-wrangler.toml +1 -0
  55. package/src/__tests__/helpers/worker-scripts/hello-world-worker.js +5 -0
  56. package/src/__tests__/helpers/worker-scripts/hello-world-wrangler.toml +1 -0
  57. package/src/__tests__/helpers/worker-scripts/parent-worker.js +8 -0
  58. package/src/__tests__/helpers/worker-scripts/parent-wrangler.toml +5 -0
  59. package/src/__tests__/helpers/write-worker-source.ts +16 -16
  60. package/src/__tests__/helpers/write-wrangler-toml.ts +9 -9
  61. package/src/__tests__/https-options.test.ts +142 -109
  62. package/src/__tests__/index.test.ts +254 -238
  63. package/src/__tests__/init.test.ts +3097 -1925
  64. package/src/__tests__/jest.setup.ts +143 -75
  65. package/src/__tests__/kv.test.ts +1788 -1509
  66. package/src/__tests__/logger.test.ts +96 -96
  67. package/src/__tests__/logout.test.ts +47 -0
  68. package/src/__tests__/metrics.test.ts +493 -0
  69. package/src/__tests__/middleware.scheduled.test.ts +145 -0
  70. package/src/__tests__/middleware.test.ts +815 -0
  71. package/src/__tests__/mtls-certificates.test.ts +585 -0
  72. package/src/__tests__/package-manager.test.ts +303 -303
  73. package/src/__tests__/pages/deployment-list.test.ts +78 -0
  74. package/src/__tests__/pages/functions-build.test.ts +402 -0
  75. package/src/__tests__/pages/pages.test.ts +81 -0
  76. package/src/__tests__/pages/project-create.test.ts +63 -0
  77. package/src/__tests__/pages/project-list.test.ts +108 -0
  78. package/src/__tests__/pages/project-upload.test.ts +481 -0
  79. package/src/__tests__/pages/publish.test.ts +2745 -0
  80. package/src/__tests__/pages-deployment-tail.test.ts +955 -0
  81. package/src/__tests__/parse.test.ts +358 -252
  82. package/src/__tests__/paths.test.ts +39 -0
  83. package/src/__tests__/publish.test.ts +8002 -6010
  84. package/src/__tests__/pubsub.test.ts +493 -0
  85. package/src/__tests__/queues.test.ts +529 -0
  86. package/src/__tests__/r2.test.ts +369 -228
  87. package/src/__tests__/route.test.ts +18 -18
  88. package/src/__tests__/secret.test.ts +681 -469
  89. package/src/__tests__/tail.test.ts +835 -567
  90. package/src/__tests__/test-old-node-version.js +31 -0
  91. package/src/__tests__/tsconfig-sanity.ts +12 -0
  92. package/src/__tests__/tsconfig.json +8 -0
  93. package/src/__tests__/tsconfig.tsbuildinfo +1 -0
  94. package/src/__tests__/type-generation.test.ts +233 -0
  95. package/src/__tests__/user.test.ts +107 -121
  96. package/src/__tests__/utils-collectKeyValues.test.ts +47 -0
  97. package/src/__tests__/validate-dev-props.test.ts +56 -0
  98. package/src/__tests__/version.test.ts +35 -0
  99. package/src/__tests__/whoami.test.tsx +165 -132
  100. package/src/__tests__/worker-namespace.test.ts +339 -0
  101. package/src/abort.d.ts +1 -1
  102. package/src/api/dev.ts +328 -0
  103. package/src/api/index.ts +11 -0
  104. package/src/api/mtls-certificate.ts +148 -0
  105. package/src/api/pages/create-worker-bundle-contents.ts +75 -0
  106. package/src/api/pages/index.ts +5 -0
  107. package/src/api/pages/publish.tsx +368 -0
  108. package/src/bundle-reporter.ts +68 -0
  109. package/src/bundle.ts +839 -167
  110. package/src/cfetch/index.ts +120 -83
  111. package/src/cfetch/internal.ts +208 -92
  112. package/src/cli.ts +23 -8
  113. package/src/config/config.ts +244 -205
  114. package/src/config/diagnostics.ts +61 -61
  115. package/src/config/environment.ts +523 -357
  116. package/src/config/index.ts +346 -196
  117. package/src/config/validation-helpers.ts +379 -366
  118. package/src/config/validation.ts +2020 -1402
  119. package/src/config-cache.ts +81 -41
  120. package/src/create-worker-preview.ts +239 -142
  121. package/src/create-worker-upload-form.ts +318 -238
  122. package/src/d1/backups.tsx +215 -0
  123. package/src/d1/constants.ts +2 -0
  124. package/src/d1/create.tsx +64 -0
  125. package/src/d1/delete.ts +53 -0
  126. package/src/d1/execute.tsx +354 -0
  127. package/src/d1/formatTimeAgo.ts +14 -0
  128. package/src/d1/index.ts +100 -0
  129. package/src/d1/list.tsx +60 -0
  130. package/src/d1/migrations/apply.tsx +206 -0
  131. package/src/d1/migrations/create.tsx +76 -0
  132. package/src/d1/migrations/helpers.ts +172 -0
  133. package/src/d1/migrations/index.ts +3 -0
  134. package/src/d1/migrations/list.tsx +92 -0
  135. package/src/d1/migrations/options.ts +23 -0
  136. package/src/d1/options.ts +22 -0
  137. package/src/d1/splitter.ts +161 -0
  138. package/src/d1/types.ts +25 -0
  139. package/src/d1/utils.ts +49 -0
  140. package/src/delete.ts +100 -0
  141. package/src/deployments.ts +116 -0
  142. package/src/deprecated/index.ts +144 -0
  143. package/src/dev/dev-vars.ts +20 -17
  144. package/src/dev/dev.tsx +530 -329
  145. package/src/dev/get-local-persistence-path.ts +31 -0
  146. package/src/dev/local.tsx +903 -301
  147. package/src/dev/remote.tsx +619 -236
  148. package/src/dev/start-server.ts +538 -0
  149. package/src/dev/use-esbuild.ts +184 -91
  150. package/src/dev/validate-dev-props.ts +31 -0
  151. package/src/dev-registry.ts +201 -0
  152. package/src/dev.tsx +914 -0
  153. package/src/dialogs.ts +136 -0
  154. package/src/dispatch-namespace.ts +211 -0
  155. package/src/docs/index.ts +97 -0
  156. package/src/durable.ts +87 -87
  157. package/src/entry.ts +236 -236
  158. package/src/environment-variables/factory.ts +88 -0
  159. package/src/environment-variables/misc-variables.ts +30 -0
  160. package/src/errors.ts +6 -6
  161. package/src/generate/index.ts +298 -0
  162. package/src/git-client.ts +112 -19
  163. package/src/global-wrangler-config-path.ts +26 -0
  164. package/src/https-options.ts +84 -80
  165. package/src/index.ts +705 -0
  166. package/src/init.ts +1022 -0
  167. package/src/inspect.ts +698 -593
  168. package/src/intl-polyfill.d.ts +123 -123
  169. package/src/is-ci.ts +14 -0
  170. package/src/is-interactive.ts +16 -0
  171. package/src/jest.d.ts +4 -0
  172. package/src/kv/helpers.ts +430 -0
  173. package/src/kv/index.ts +594 -0
  174. package/src/logger.ts +77 -46
  175. package/src/metrics/index.ts +5 -0
  176. package/src/metrics/metrics-config.ts +239 -0
  177. package/src/metrics/metrics-dispatcher.ts +96 -0
  178. package/src/metrics/metrics-usage-headers.ts +24 -0
  179. package/src/metrics/send-event.ts +98 -0
  180. package/src/miniflare-cli/assets.ts +250 -0
  181. package/src/miniflare-cli/index.ts +202 -33
  182. package/src/miniflare-cli/request-context.ts +18 -18
  183. package/src/miniflare-cli/tsconfig.json +9 -0
  184. package/src/miniflare-cli/tsconfig.tsbuildinfo +1 -0
  185. package/src/miniflare-cli/types.ts +11 -0
  186. package/src/module-collection.ts +221 -212
  187. package/src/mtls-certificate/cli.ts +155 -0
  188. package/src/open-in-browser.ts +4 -4
  189. package/src/package-manager.ts +173 -128
  190. package/src/pages/build.ts +232 -0
  191. package/src/pages/buildFunctions.ts +130 -0
  192. package/src/pages/constants.ts +18 -0
  193. package/src/pages/deployment-tails.ts +281 -0
  194. package/src/pages/deployments.tsx +86 -0
  195. package/src/pages/dev.ts +716 -0
  196. package/src/pages/errors.ts +66 -0
  197. package/src/pages/functions/buildPlugin.ts +90 -0
  198. package/src/pages/functions/buildWorker.ts +288 -0
  199. package/{pages → src/pages}/functions/filepath-routing.test.ts +113 -113
  200. package/src/pages/functions/filepath-routing.ts +189 -0
  201. package/src/pages/functions/identifiers.ts +78 -0
  202. package/src/pages/functions/routes-consolidation.test.ts +250 -0
  203. package/src/pages/functions/routes-consolidation.ts +73 -0
  204. package/src/pages/functions/routes-transformation.test.ts +282 -0
  205. package/src/pages/functions/routes-transformation.ts +115 -0
  206. package/src/pages/functions/routes-validation.test.ts +403 -0
  207. package/src/pages/functions/routes-validation.ts +202 -0
  208. package/src/pages/functions/routes.ts +151 -0
  209. package/src/pages/functions/tsconfig.json +8 -0
  210. package/src/pages/functions/tsconfig.tsbuildinfo +1 -0
  211. package/src/pages/functions.ts +86 -0
  212. package/src/pages/hash.ts +13 -0
  213. package/src/pages/index.ts +102 -0
  214. package/src/pages/projects.tsx +162 -0
  215. package/src/pages/prompt-select-project.tsx +31 -0
  216. package/src/pages/publish.tsx +276 -0
  217. package/src/pages/types.ts +46 -0
  218. package/src/pages/upload.tsx +449 -0
  219. package/src/pages/utils.ts +23 -0
  220. package/src/parse.ts +225 -139
  221. package/src/paths.ts +53 -8
  222. package/src/proxy.ts +623 -405
  223. package/src/publish/index.ts +274 -0
  224. package/src/publish/publish.ts +1065 -0
  225. package/src/pubsub/index.ts +286 -0
  226. package/src/pubsub/pubsub-commands.ts +623 -0
  227. package/src/queues/cli/commands/consumer/add.ts +65 -0
  228. package/src/queues/cli/commands/consumer/index.ts +19 -0
  229. package/src/queues/cli/commands/consumer/remove.ts +31 -0
  230. package/src/queues/cli/commands/create.ts +25 -0
  231. package/src/queues/cli/commands/delete.ts +26 -0
  232. package/src/queues/cli/commands/index.ts +35 -0
  233. package/src/queues/cli/commands/list.ts +25 -0
  234. package/src/queues/client.ts +135 -0
  235. package/src/queues/utils.ts +18 -0
  236. package/src/r2/constants.ts +4 -0
  237. package/src/r2/helpers.ts +131 -0
  238. package/src/r2/index.ts +289 -0
  239. package/src/routes.ts +140 -0
  240. package/src/secret/index.ts +375 -0
  241. package/src/selfsigned.d.ts +23 -23
  242. package/src/sites.ts +372 -0
  243. package/src/tail/createTail.ts +406 -0
  244. package/src/tail/filters.ts +109 -111
  245. package/src/tail/index.ts +208 -296
  246. package/src/tail/printing.ts +101 -46
  247. package/src/tsconfig-sanity.ts +16 -0
  248. package/src/type-generation.ts +181 -0
  249. package/src/update-check.ts +11 -11
  250. package/src/user/access.ts +68 -0
  251. package/src/user/auth-variables.ts +113 -0
  252. package/src/user/choose-account.tsx +39 -0
  253. package/src/user/generate-auth-url.ts +33 -0
  254. package/src/user/generate-random-state.ts +16 -0
  255. package/src/user/index.ts +2 -0
  256. package/src/user/user.ts +1233 -0
  257. package/src/utils/collectKeyValues.ts +14 -0
  258. package/src/whoami.ts +135 -0
  259. package/src/worker.ts +183 -107
  260. package/src/yargs-types.ts +37 -0
  261. package/src/zones.ts +158 -40
  262. package/templates/__tests__/pages-dev-util.test.ts +128 -0
  263. package/templates/__tests__/tsconfig-sanity.ts +12 -0
  264. package/templates/__tests__/tsconfig.json +8 -0
  265. package/templates/__tests__/tsconfig.tsbuildinfo +1 -0
  266. package/templates/checked-fetch.js +23 -0
  267. package/templates/d1-beta-facade.js +241 -0
  268. package/templates/facade.d.ts +14 -0
  269. package/templates/first-party-worker-module-facade.ts +19 -0
  270. package/templates/format-dev-errors.ts +34 -0
  271. package/templates/init-tests/test-jest-new-worker.js +23 -0
  272. package/templates/init-tests/test-vitest-new-worker.js +24 -0
  273. package/templates/init-tests/test-vitest-new-worker.ts +25 -0
  274. package/templates/middleware/common.ts +62 -0
  275. package/templates/middleware/loader-modules.ts +84 -0
  276. package/templates/middleware/loader-sw.ts +233 -0
  277. package/templates/middleware/middleware-miniflare3-json-error.ts +20 -0
  278. package/templates/middleware/middleware-pretty-error.ts +40 -0
  279. package/templates/middleware/middleware-scheduled.ts +15 -0
  280. package/templates/new-worker-scheduled.js +3 -3
  281. package/templates/new-worker-scheduled.ts +15 -15
  282. package/templates/new-worker.js +3 -3
  283. package/templates/new-worker.ts +18 -15
  284. package/templates/no-op-worker.js +8 -8
  285. package/templates/pages-dev-pipeline.ts +31 -0
  286. package/templates/pages-dev-util.ts +52 -0
  287. package/templates/pages-shim.ts +12 -0
  288. package/templates/pages-template-plugin.ts +176 -0
  289. package/templates/pages-template-worker.ts +189 -0
  290. package/templates/serve-static-assets.ts +66 -0
  291. package/templates/service-bindings-module-facade.js +55 -0
  292. package/templates/service-bindings-sw-facade.js +42 -0
  293. package/templates/tsconfig-sanity.ts +11 -0
  294. package/templates/tsconfig.init.json +106 -0
  295. package/templates/tsconfig.json +6 -103
  296. package/templates/tsconfig.tsbuildinfo +1 -0
  297. package/wrangler-dist/cli.d.ts +1108 -0
  298. package/wrangler-dist/cli.js +131192 -112380
  299. package/wrangler-dist/wasm-sync.wasm +0 -0
  300. package/pages/functions/buildPlugin.ts +0 -105
  301. package/pages/functions/buildWorker.ts +0 -151
  302. package/pages/functions/filepath-routing.ts +0 -189
  303. package/pages/functions/identifiers.ts +0 -78
  304. package/pages/functions/routes.ts +0 -156
  305. package/pages/functions/template-plugin.ts +0 -147
  306. package/pages/functions/template-worker.ts +0 -143
  307. package/src/__tests__/helpers/faye-websocket.d.ts +0 -6
  308. package/src/__tests__/helpers/mock-cfetch.ts +0 -211
  309. package/src/__tests__/pages.test.ts +0 -754
  310. package/src/bundle-reporter.tsx +0 -29
  311. package/src/dialogs.tsx +0 -135
  312. package/src/environment-variables.ts +0 -35
  313. package/src/generate-auth-url.ts +0 -33
  314. package/src/generate-random-state.ts +0 -16
  315. package/src/index.tsx +0 -2896
  316. package/src/kv.ts +0 -408
  317. package/src/miniflare-cli/enum-keys.ts +0 -17
  318. package/src/pages.tsx +0 -2093
  319. package/src/publish.ts +0 -739
  320. package/src/r2.ts +0 -50
  321. package/src/sites.tsx +0 -368
  322. package/src/user.tsx +0 -1202
  323. package/src/whoami.tsx +0 -71
  324. package/templates/static-asset-facade.js +0 -43
@@ -0,0 +1,266 @@
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 { useMockIsTTY } from "./helpers/mock-istty";
6
+ import { msw } from "./helpers/msw";
7
+ import { runInTempDir } from "./helpers/run-in-tmp";
8
+ import { runWrangler } from "./helpers/run-wrangler";
9
+ import writeWranglerToml from "./helpers/write-wrangler-toml";
10
+ import type { KVNamespaceInfo } from "../kv/helpers";
11
+ describe("delete", () => {
12
+ mockAccountId();
13
+ mockApiToken();
14
+ runInTempDir();
15
+ const { setIsTTY } = useMockIsTTY();
16
+ beforeEach(() => {
17
+ setIsTTY(true);
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
+ msw.use(
111
+ rest.delete(
112
+ "*/accounts/:accountId/storage/kv/namespaces/id-for-my-script-site-ns",
113
+ (req, res, ctx) => {
114
+ expect(req.params.accountId).toEqual("some-account-id");
115
+ return res.once(
116
+ ctx.status(200),
117
+ ctx.json({ success: true, errors: [], messages: [], result: null })
118
+ );
119
+ }
120
+ )
121
+ );
122
+
123
+ mockDeleteWorkerRequest({ name: "my-script" });
124
+ await runWrangler("delete --name my-script");
125
+ expect(std).toMatchInlineSnapshot(`
126
+ Object {
127
+ "debug": "",
128
+ "err": "",
129
+ "out": "🌀 Deleted asset namespace for Workers Site \\"__my-script-workers_sites_assets\\"
130
+ Successfully deleted my-script",
131
+ "warn": "",
132
+ }
133
+ `);
134
+ });
135
+
136
+ it("should delete a site namespace associated with a worker, including it's preview namespace", async () => {
137
+ // This is the same test as the previous one, but it includes a preview namespace
138
+ const kvNamespaces = [
139
+ {
140
+ title: "__my-script-workers_sites_assets",
141
+ id: "id-for-my-script-site-ns",
142
+ },
143
+ // this is the preview namespace
144
+ {
145
+ title: "__my-script-workers_sites_assets_preview",
146
+ id: "id-for-my-script-site-preview-ns",
147
+ },
148
+
149
+ // this one isn't associated with the worker
150
+ {
151
+ title: "__test-name-workers_sites_assets",
152
+ id: "id-for-another-site-ns",
153
+ },
154
+ ];
155
+
156
+ mockConfirm({
157
+ text: `Are you sure you want to delete my-script? This action cannot be undone.`,
158
+ result: true,
159
+ });
160
+ mockListKVNamespacesRequest(...kvNamespaces);
161
+ // it should only try to delete the site namespace associated with this worker
162
+
163
+ msw.use(
164
+ rest.delete(
165
+ "*/accounts/:accountId/storage/kv/namespaces/id-for-my-script-site-ns",
166
+ (req, res, ctx) => {
167
+ expect(req.params.accountId).toEqual("some-account-id");
168
+ return res.once(
169
+ ctx.status(200),
170
+ ctx.json({
171
+ success: true,
172
+ errors: [],
173
+ messages: [],
174
+ result: {},
175
+ })
176
+ );
177
+ }
178
+ )
179
+ );
180
+
181
+ msw.use(
182
+ rest.delete(
183
+ "*/accounts/:accountId/storage/kv/namespaces/id-for-my-script-site-preview-ns",
184
+ (req, res, ctx) => {
185
+ expect(req.params.accountId).toEqual("some-account-id");
186
+ return res.once(
187
+ ctx.status(200),
188
+ ctx.json({
189
+ success: true,
190
+ errors: [],
191
+ messages: [],
192
+ result: {},
193
+ })
194
+ );
195
+ }
196
+ )
197
+ );
198
+
199
+ mockDeleteWorkerRequest({ name: "my-script" });
200
+ await runWrangler("delete --name my-script");
201
+ expect(std).toMatchInlineSnapshot(`
202
+ Object {
203
+ "debug": "",
204
+ "err": "",
205
+ "out": "🌀 Deleted asset namespace for Workers Site \\"__my-script-workers_sites_assets\\"
206
+ 🌀 Deleted asset namespace for Workers Site \\"__my-script-workers_sites_assets_preview\\"
207
+ Successfully deleted my-script",
208
+ "warn": "",
209
+ }
210
+ `);
211
+ });
212
+ });
213
+
214
+ /** Create a mock handler for the request to upload a worker script. */
215
+ function mockDeleteWorkerRequest(
216
+ options: {
217
+ name?: string;
218
+ env?: string;
219
+ legacyEnv?: boolean;
220
+ } = {}
221
+ ) {
222
+ const { env, legacyEnv, name } = options;
223
+ msw.use(
224
+ rest.delete(
225
+ "*/accounts/:accountId/workers/services/:scriptName",
226
+ (req, res, ctx) => {
227
+ expect(req.params.accountId).toEqual("some-account-id");
228
+ expect(req.params.scriptName).toEqual(
229
+ legacyEnv && env
230
+ ? `${name ?? "test-name"}-${env}`
231
+ : `${name ?? "test-name"}`
232
+ );
233
+
234
+ expect(req.url.searchParams.get("force")).toEqual("true");
235
+
236
+ return res.once(
237
+ ctx.status(200),
238
+ ctx.json({
239
+ success: true,
240
+ errors: [],
241
+ messages: [],
242
+ result: null,
243
+ })
244
+ );
245
+ }
246
+ )
247
+ );
248
+ }
249
+
250
+ /** Create a mock handler for the request to get a list of all KV namespaces. */
251
+ function mockListKVNamespacesRequest(...namespaces: KVNamespaceInfo[]) {
252
+ msw.use(
253
+ rest.get("*/accounts/:accountId/storage/kv/namespaces", (req, res, ctx) => {
254
+ expect(req.params.accountId).toEqual("some-account-id");
255
+ return res.once(
256
+ ctx.status(200),
257
+ ctx.json({
258
+ success: true,
259
+ errors: [],
260
+ messages: [],
261
+ result: namespaces,
262
+ })
263
+ );
264
+ })
265
+ );
266
+ }
@@ -0,0 +1,129 @@
1
+ // import * as fs from "fs";
2
+ // import * as TOML from "@iarna/toml";
3
+ import * as fs from "node:fs";
4
+ import * as TOML from "@iarna/toml";
5
+ import { rest } from "msw";
6
+ import { mockAccountId, mockApiToken } from "./helpers/mock-account-id";
7
+ import { mockConsoleMethods } from "./helpers/mock-console";
8
+ import {
9
+ msw,
10
+ mswSuccessOauthHandlers,
11
+ mswSuccessUserHandlers,
12
+ } from "./helpers/msw";
13
+ import { mswSuccessDeployments } from "./helpers/msw";
14
+ import { runInTempDir } from "./helpers/run-in-tmp";
15
+ import { runWrangler } from "./helpers/run-wrangler";
16
+
17
+ describe("deployments", () => {
18
+ const std = mockConsoleMethods();
19
+ runInTempDir();
20
+ mockAccountId();
21
+ mockApiToken();
22
+ runInTempDir();
23
+
24
+ beforeEach(() => {
25
+ msw.use(
26
+ ...mswSuccessDeployments,
27
+ ...mswSuccessOauthHandlers,
28
+ ...mswSuccessUserHandlers,
29
+ rest.get(
30
+ "*/accounts/:accountId/workers/services/:scriptName",
31
+ (_, response, context) => {
32
+ return response.once(
33
+ context.status(200),
34
+ context.json({
35
+ success: true,
36
+ errors: [],
37
+ messages: [],
38
+ result: {
39
+ default_environment: {
40
+ script: {
41
+ tag: "MOCK-TAG",
42
+ },
43
+ },
44
+ },
45
+ })
46
+ );
47
+ }
48
+ )
49
+ );
50
+ });
51
+
52
+ it("should log deployments", async () => {
53
+ fs.writeFileSync(
54
+ "./wrangler.toml",
55
+ TOML.stringify({
56
+ compatibility_date: "2022-01-12",
57
+ name: "test-script-name",
58
+ first_party_worker: true,
59
+ }),
60
+ "utf-8"
61
+ );
62
+
63
+ await runWrangler("deployments");
64
+ expect(std.out).toMatchInlineSnapshot(`
65
+ "🚧\`wrangler deployments\` is a beta command. Please report any issues to https://github.com/cloudflare/workers-sdk/issues/new/choose
66
+
67
+
68
+ Deployment ID: Constitution-Class
69
+ Created on: 2021-01-01T00:00:00.000000Z
70
+ Author: Jean-Luc-Picard@federation.org
71
+ Trigger: Upload from Wrangler 🤠
72
+
73
+ Deployment ID: Intrepid-Class
74
+ Created on: 2021-02-02T00:00:00.000000Z
75
+ Author: Kathryn-Janeway@federation.org
76
+ Trigger: Rollback from Wrangler 🤠
77
+ Rollback from: MOCK-DEPLOYMENT-ID-1111
78
+
79
+ Deployment ID: Intrepid-Class
80
+ Created on: 2021-02-03T00:00:00.000000Z
81
+ Author: Kathryn-Janeway@federation.org
82
+ Trigger: Wrangler 🤠
83
+
84
+ Deployment ID: Galaxy-Class
85
+ Created on: 2021-01-04T00:00:00.000000Z
86
+ Author: Jean-Luc-Picard@federation.org
87
+ Trigger: Rollback from Wrangler 🤠
88
+ Rollback from: MOCK-DEPLOYMENT-ID-2222
89
+ 🟩 Active"
90
+ `);
91
+ });
92
+
93
+ it("should log deployments for script with passed in name option", async () => {
94
+ await runWrangler("deployments --name something-else");
95
+ expect(std.out).toMatchInlineSnapshot(`
96
+ "🚧\`wrangler deployments\` is a beta command. Please report any issues to https://github.com/cloudflare/workers-sdk/issues/new/choose
97
+
98
+
99
+ Deployment ID: Constitution-Class
100
+ Created on: 2021-01-01T00:00:00.000000Z
101
+ Author: Jean-Luc-Picard@federation.org
102
+ Trigger: Upload from Wrangler 🤠
103
+
104
+ Deployment ID: Intrepid-Class
105
+ Created on: 2021-02-02T00:00:00.000000Z
106
+ Author: Kathryn-Janeway@federation.org
107
+ Trigger: Rollback from Wrangler 🤠
108
+ Rollback from: MOCK-DEPLOYMENT-ID-1111
109
+
110
+ Deployment ID: Intrepid-Class
111
+ Created on: 2021-02-03T00:00:00.000000Z
112
+ Author: Kathryn-Janeway@federation.org
113
+ Trigger: Wrangler 🤠
114
+
115
+ Deployment ID: Galaxy-Class
116
+ Created on: 2021-01-04T00:00:00.000000Z
117
+ Author: Jean-Luc-Picard@federation.org
118
+ Trigger: Rollback from Wrangler 🤠
119
+ Rollback from: MOCK-DEPLOYMENT-ID-2222
120
+ 🟩 Active"
121
+ `);
122
+ });
123
+
124
+ it("should error on missing script name", async () => {
125
+ await expect(runWrangler("deployments")).rejects.toMatchInlineSnapshot(
126
+ `[Error: Required Worker name missing. Please specify the Worker name in wrangler.toml, or pass it as an argument with \`--name\`]`
127
+ );
128
+ });
129
+ });