wrangler 0.0.0-e30d1013 → 0.0.0-e311bbbf

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 (236) hide show
  1. package/README.md +3 -3
  2. package/bin/wrangler.js +30 -10
  3. package/miniflare-dist/index.mjs +126 -74
  4. package/package.json +26 -19
  5. package/src/__tests__/api-dev.test.ts +65 -36
  6. package/src/__tests__/api-devregistry.test.ts +121 -0
  7. package/src/__tests__/api.test.ts +27 -5
  8. package/src/__tests__/configuration.test.ts +567 -39
  9. package/src/__tests__/d1/d1.test.ts +82 -0
  10. package/src/__tests__/d1/execute.test.ts +66 -0
  11. package/src/__tests__/d1/migrate.test.ts +157 -0
  12. package/src/__tests__/d1/splitter.test.ts +255 -0
  13. package/src/__tests__/delete.test.ts +91 -49
  14. package/src/__tests__/deployments.test.ts +330 -52
  15. package/src/__tests__/dev.test.tsx +198 -90
  16. package/src/__tests__/generate.test.ts +8 -5
  17. package/src/__tests__/guess-worker-format.test.ts +35 -0
  18. package/src/__tests__/helpers/end-event-loop.ts +6 -0
  19. package/src/__tests__/helpers/mock-auth-domain.ts +20 -0
  20. package/src/__tests__/helpers/mock-console.ts +6 -0
  21. package/src/__tests__/helpers/mock-dialogs.ts +71 -85
  22. package/src/__tests__/helpers/mock-get-pages-upload-token.ts +25 -0
  23. package/src/__tests__/helpers/mock-get-zone-from-host.ts +8 -5
  24. package/src/__tests__/helpers/mock-known-routes.ts +7 -2
  25. package/src/__tests__/helpers/mock-kv.ts +29 -16
  26. package/src/__tests__/helpers/mock-oauth-flow.ts +103 -92
  27. package/src/__tests__/helpers/mock-process.ts +8 -13
  28. package/src/__tests__/helpers/mock-set-timeout.ts +16 -0
  29. package/src/__tests__/helpers/msw/blob-worker.cjs +19 -0
  30. package/src/__tests__/helpers/msw/handlers/deployments.ts +127 -26
  31. package/src/__tests__/helpers/msw/handlers/namespaces.ts +18 -41
  32. package/src/__tests__/helpers/msw/handlers/oauth.ts +13 -18
  33. package/src/__tests__/helpers/msw/handlers/r2.ts +14 -34
  34. package/src/__tests__/helpers/msw/handlers/script.ts +9 -28
  35. package/src/__tests__/helpers/msw/handlers/user.ts +13 -24
  36. package/src/__tests__/helpers/msw/handlers/zones.ts +6 -8
  37. package/src/__tests__/helpers/msw/index.ts +32 -1
  38. package/src/__tests__/helpers/msw/read-file-sync.js +61 -0
  39. package/src/__tests__/helpers/string-dynamic-values-matcher.ts +28 -0
  40. package/src/__tests__/helpers/worker-scripts/parent-worker.js +4 -1
  41. package/src/__tests__/index.test.ts +90 -72
  42. package/src/__tests__/init.test.ts +927 -631
  43. package/src/__tests__/jest.setup.ts +19 -42
  44. package/src/__tests__/kv.test.ts +355 -231
  45. package/src/__tests__/logger.test.ts +68 -2
  46. package/src/__tests__/logout.test.ts +47 -0
  47. package/src/__tests__/metrics.test.ts +94 -51
  48. package/src/__tests__/middleware.scheduled.test.ts +42 -32
  49. package/src/__tests__/middleware.test.ts +212 -122
  50. package/src/__tests__/mtls-certificates.test.ts +588 -0
  51. package/src/__tests__/pages/deployment-list.test.ts +80 -0
  52. package/src/__tests__/pages/functions-build.test.ts +452 -0
  53. package/src/__tests__/pages/pages.test.ts +81 -0
  54. package/src/__tests__/pages/project-create.test.ts +63 -0
  55. package/src/__tests__/pages/project-list.test.ts +110 -0
  56. package/src/__tests__/pages/project-upload.test.ts +500 -0
  57. package/src/__tests__/pages/publish.test.ts +2864 -0
  58. package/src/__tests__/pages-deployment-tail.test.ts +955 -0
  59. package/src/__tests__/parse.test.ts +106 -0
  60. package/src/__tests__/publish.test.ts +1620 -830
  61. package/src/__tests__/pubsub.test.ts +226 -100
  62. package/src/__tests__/queues.test.ts +237 -76
  63. package/src/__tests__/r2.test.ts +37 -56
  64. package/src/__tests__/secret.test.ts +179 -130
  65. package/src/__tests__/tail.test.ts +267 -109
  66. package/src/__tests__/test-old-node-version.js +3 -3
  67. package/src/__tests__/traverse-module-graph.test.ts +220 -0
  68. package/src/__tests__/tsconfig-sanity.ts +12 -0
  69. package/src/__tests__/tsconfig.json +8 -0
  70. package/src/__tests__/tsconfig.tsbuildinfo +1 -0
  71. package/src/__tests__/type-generation.test.ts +11 -2
  72. package/src/__tests__/user.test.ts +35 -72
  73. package/src/__tests__/whoami.test.tsx +8 -114
  74. package/src/__tests__/worker-namespace.test.ts +83 -69
  75. package/src/api/dev.ts +168 -60
  76. package/src/api/index.ts +10 -1
  77. package/src/api/mtls-certificate.ts +148 -0
  78. package/src/api/pages/create-worker-bundle-contents.ts +76 -0
  79. package/src/api/pages/index.ts +5 -0
  80. package/src/api/pages/publish.tsx +355 -0
  81. package/src/bundle.ts +221 -128
  82. package/src/cfetch/index.ts +0 -2
  83. package/src/cfetch/internal.ts +16 -21
  84. package/src/cli.ts +4 -4
  85. package/src/config/config.ts +14 -7
  86. package/src/config/environment.ts +73 -16
  87. package/src/config/index.ts +99 -30
  88. package/src/config/validation-helpers.ts +1 -1
  89. package/src/config/validation.ts +248 -9
  90. package/src/create-worker-preview.ts +19 -8
  91. package/src/create-worker-upload-form.ts +48 -5
  92. package/src/d1/backups.tsx +43 -42
  93. package/src/d1/create.tsx +26 -21
  94. package/src/d1/{delete.tsx → delete.ts} +11 -14
  95. package/src/d1/execute.tsx +183 -170
  96. package/src/d1/index.ts +7 -6
  97. package/src/d1/list.tsx +22 -10
  98. package/src/d1/migrations/apply.tsx +212 -0
  99. package/src/d1/migrations/create.tsx +79 -0
  100. package/src/d1/migrations/helpers.ts +172 -0
  101. package/src/d1/migrations/index.ts +3 -0
  102. package/src/d1/migrations/list.tsx +95 -0
  103. package/src/d1/migrations/options.ts +23 -0
  104. package/src/d1/options.ts +3 -3
  105. package/src/d1/splitter.ts +161 -0
  106. package/src/d1/{types.tsx → types.ts} +1 -0
  107. package/src/d1/utils.ts +2 -1
  108. package/src/delete.ts +8 -16
  109. package/src/deployments.ts +333 -42
  110. package/src/deprecated/index.ts +8 -302
  111. package/src/dev/dev.tsx +57 -44
  112. package/src/dev/local.tsx +248 -74
  113. package/src/dev/remote.tsx +32 -3
  114. package/src/dev/start-server.ts +81 -66
  115. package/src/dev/use-esbuild.ts +17 -18
  116. package/src/dev/validate-dev-props.ts +9 -0
  117. package/src/{dev-registry.tsx → dev-registry.ts} +2 -1
  118. package/src/dev.tsx +178 -117
  119. package/src/dialogs.ts +136 -0
  120. package/src/dispatch-namespace.ts +21 -17
  121. package/src/docs/index.ts +97 -0
  122. package/src/entry.ts +19 -11
  123. package/src/environment-variables/factory.ts +88 -0
  124. package/src/environment-variables/misc-variables.ts +30 -0
  125. package/src/generate/index.ts +298 -0
  126. package/src/git-client.ts +15 -4
  127. package/src/{index.tsx → index.ts} +134 -59
  128. package/src/init.ts +249 -187
  129. package/src/inspect.ts +16 -1
  130. package/src/jest.d.ts +4 -0
  131. package/src/kv/index.ts +15 -17
  132. package/src/logger.ts +32 -5
  133. package/src/metrics/metrics-config.ts +3 -3
  134. package/src/metrics/send-event.ts +6 -1
  135. package/src/miniflare-cli/assets.ts +64 -28
  136. package/src/miniflare-cli/index.ts +4 -7
  137. package/src/miniflare-cli/tsconfig.json +9 -0
  138. package/src/miniflare-cli/tsconfig.tsbuildinfo +1 -0
  139. package/src/miniflare-cli/types.ts +11 -0
  140. package/src/module-collection.ts +91 -25
  141. package/src/mtls-certificate/cli.ts +155 -0
  142. package/src/pages/build.ts +410 -0
  143. package/src/pages/buildFunctions.ts +140 -0
  144. package/src/pages/deployment-tails.ts +281 -0
  145. package/src/pages/deployments.tsx +11 -33
  146. package/src/pages/{dev.tsx → dev.ts} +147 -139
  147. package/src/pages/errors.ts +1 -0
  148. package/src/pages/functions/buildPlugin.ts +61 -54
  149. package/src/pages/functions/buildWorker.ts +159 -33
  150. package/src/pages/functions/tsconfig.json +8 -0
  151. package/src/pages/functions/tsconfig.tsbuildinfo +1 -0
  152. package/src/pages/{functions.tsx → functions.ts} +8 -4
  153. package/src/pages/{index.tsx → index.ts} +11 -3
  154. package/src/pages/projects.tsx +12 -22
  155. package/src/pages/prompt-select-project.tsx +31 -0
  156. package/src/pages/publish.tsx +46 -225
  157. package/src/pages/types.ts +6 -9
  158. package/src/pages/upload.tsx +58 -14
  159. package/src/pages/utils.ts +12 -1
  160. package/src/parse.ts +23 -1
  161. package/src/paths.ts +1 -1
  162. package/src/proxy.ts +5 -0
  163. package/src/publish/index.ts +20 -16
  164. package/src/publish/publish.ts +71 -46
  165. package/src/pubsub/{pubsub-commands.tsx → pubsub-commands.ts} +19 -20
  166. package/src/queues/cli/commands/consumer/add.ts +24 -24
  167. package/src/queues/cli/commands/consumer/index.ts +3 -6
  168. package/src/queues/cli/commands/consumer/remove.ts +11 -18
  169. package/src/queues/cli/commands/create.ts +8 -8
  170. package/src/queues/cli/commands/delete.ts +8 -8
  171. package/src/queues/cli/commands/index.ts +6 -4
  172. package/src/queues/cli/commands/list.ts +8 -8
  173. package/src/queues/client.ts +1 -0
  174. package/src/queues/utils.ts +18 -0
  175. package/src/r2/helpers.ts +1 -0
  176. package/src/r2/index.ts +28 -28
  177. package/src/secret/index.ts +14 -16
  178. package/src/{sites.tsx → sites.ts} +1 -1
  179. package/src/tail/createTail.ts +94 -3
  180. package/src/tail/filters.ts +1 -1
  181. package/src/tail/index.ts +8 -11
  182. package/src/tail/printing.ts +15 -0
  183. package/src/traverse-module-graph.ts +53 -0
  184. package/src/tsconfig-sanity.ts +16 -0
  185. package/src/type-generation.ts +28 -20
  186. package/src/user/access.ts +0 -1
  187. package/src/user/auth-variables.ts +113 -0
  188. package/src/user/choose-account.tsx +1 -31
  189. package/src/user/index.ts +0 -1
  190. package/src/user/{user.tsx → user.ts} +123 -82
  191. package/src/utils/render.ts +93 -0
  192. package/src/{whoami.tsx → whoami.ts} +37 -71
  193. package/src/worker.ts +30 -1
  194. package/src/yargs-types.ts +22 -5
  195. package/templates/__tests__/tsconfig-sanity.ts +12 -0
  196. package/templates/__tests__/tsconfig.json +8 -0
  197. package/templates/__tests__/tsconfig.tsbuildinfo +1 -0
  198. package/templates/checked-fetch.js +9 -3
  199. package/templates/d1-beta-facade.js +51 -3
  200. package/templates/facade.d.ts +14 -0
  201. package/templates/first-party-worker-module-facade.ts +4 -3
  202. package/templates/format-dev-errors.ts +8 -6
  203. package/templates/gitignore +1 -0
  204. package/templates/init-tests/test-jest-new-worker.js +3 -5
  205. package/templates/init-tests/test-vitest-new-worker.js +3 -5
  206. package/templates/init-tests/test-vitest-new-worker.ts +25 -0
  207. package/templates/middleware/loader-modules.ts +2 -2
  208. package/templates/middleware/loader-sw.ts +51 -31
  209. package/templates/middleware/middleware-miniflare3-json-error.ts +32 -0
  210. package/templates/new-worker.ts +3 -0
  211. package/templates/pages-dev-pipeline.ts +4 -1
  212. package/templates/pages-shim.ts +4 -1
  213. package/templates/pages-template-plugin.ts +19 -10
  214. package/templates/serve-static-assets.ts +17 -14
  215. package/templates/service-bindings-module-facade.js +1 -0
  216. package/templates/tsconfig-sanity.ts +11 -0
  217. package/templates/tsconfig.init.json +105 -0
  218. package/templates/tsconfig.json +5 -103
  219. package/templates/tsconfig.tsbuildinfo +1 -0
  220. package/wrangler-dist/cli.d.ts +820 -70
  221. package/wrangler-dist/cli.js +68161 -78780
  222. package/wrangler-dist/wasm-sync.wasm +0 -0
  223. package/src/__tests__/api-devregistry.test.js +0 -56
  224. package/src/__tests__/d1.test.ts +0 -74
  225. package/src/__tests__/dialogs.test.tsx +0 -40
  226. package/src/__tests__/helpers/mock-cfetch.ts +0 -333
  227. package/src/__tests__/pages.test.ts +0 -2387
  228. package/src/d1/migrations.tsx +0 -446
  229. package/src/dialogs.tsx +0 -169
  230. package/src/environment-variables.ts +0 -50
  231. package/src/pages/build.tsx +0 -270
  232. package/src/user/env-vars.ts +0 -46
  233. package/templates/experimental-local-cache-stubs.js +0 -27
  234. /package/src/{bundle-reporter.tsx → bundle-reporter.ts} +0 -0
  235. /package/src/dev/{get-local-persistence-path.tsx → get-local-persistence-path.ts} +0 -0
  236. /package/src/pages/{hash.tsx → hash.ts} +0 -0
@@ -9,14 +9,17 @@ import { isBuildFailure } from "./bundle";
9
9
  import { loadDotEnv, readConfig } from "./config";
10
10
  import { d1 } from "./d1";
11
11
  import { deleteHandler, deleteOptions } from "./delete";
12
- import { deployments } from "./deployments";
12
+ import {
13
+ deployments,
14
+ commonDeploymentCMDSetup,
15
+ rollbackDeployment,
16
+ viewDeployment,
17
+ } from "./deployments";
13
18
  import {
14
19
  buildHandler,
15
20
  buildOptions,
16
21
  configHandler,
17
22
  noOpOptions,
18
- generateHandler,
19
- generateOptions,
20
23
  previewHandler,
21
24
  previewOptions,
22
25
  route,
@@ -26,10 +29,13 @@ import {
26
29
  } from "./deprecated";
27
30
  import { devHandler, devOptions } from "./dev";
28
31
  import { workerNamespaceCommands } from "./dispatch-namespace";
32
+ import { docsHandler, docsOptions } from "./docs";
33
+ import { generateHandler, generateOptions } from "./generate";
29
34
  import { initHandler, initOptions } from "./init";
30
35
  import { kvNamespace, kvKey, kvBulk } from "./kv";
31
36
  import { logBuildFailure, logger } from "./logger";
32
37
  import * as metrics from "./metrics";
38
+ import { mTlsCertificateCommands } from "./mtls-certificate/cli";
33
39
  import { pages } from "./pages";
34
40
  import { formatMessage, ParseError } from "./parse";
35
41
  import { publishOptions, publishHandler } from "./publish";
@@ -40,22 +46,13 @@ import { secret, secretBulkHandler, secretBulkOptions } from "./secret";
40
46
  import { tailOptions, tailHandler } from "./tail";
41
47
  import { generateTypes } from "./type-generation";
42
48
  import { updateCheck } from "./update-check";
43
- import {
44
- listScopes,
45
- login,
46
- logout,
47
- requireAuth,
48
- validateScopeKeys,
49
- } from "./user";
49
+ import { listScopes, login, logout, validateScopeKeys } from "./user";
50
50
  import { whoami } from "./whoami";
51
51
 
52
52
  import type { Config } from "./config";
53
- import type { CommonYargsOptions } from "./yargs-types";
54
- import type { ArgumentsCamelCase } from "yargs";
53
+ import type { CommonYargsArgv, CommonYargsOptions } from "./yargs-types";
55
54
  import type Yargs from "yargs";
56
55
 
57
- export type ConfigPath = string | undefined;
58
-
59
56
  const resetColor = "\x1b[0m";
60
57
  const fgGreenColor = "\x1b[32m";
61
58
  export const DEFAULT_LOCAL_PORT = 8787;
@@ -113,7 +110,7 @@ export async function printWranglerBanner() {
113
110
 
114
111
  export function isLegacyEnv(config: Config): boolean {
115
112
  // We only read from config here, because we've already accounted for
116
- // args["legacy-env"] in https://github.com/cloudflare/wrangler2/blob/b24aeb5722370c2e04bce97a84a1fa1e55725d79/packages/wrangler/src/config/validation.ts#L94-L98
113
+ // args["legacy-env"] in https://github.com/cloudflare/workers-sdk/blob/b24aeb5722370c2e04bce97a84a1fa1e55725d79/packages/wrangler/src/config/validation.ts#L94-L98
117
114
  return config.legacy_env;
118
115
  }
119
116
 
@@ -135,7 +132,7 @@ export function getScriptName(
135
132
  }
136
133
 
137
134
  /**
138
- * Alternative to the getScriptName() because special Legacy cases allowed "name", and "env" together in Wrangler1
135
+ * Alternative to the getScriptName() because special Legacy cases allowed "name", and "env" together in Wrangler v1
139
136
  */
140
137
  export function getLegacyScriptName(
141
138
  args: { name: string | undefined; env: string | undefined },
@@ -176,7 +173,7 @@ export class CommandLineArgsError extends Error {}
176
173
  export function createCLIParser(argv: string[]) {
177
174
  // Type check result against CommonYargsOptions to make sure we've included
178
175
  // all common options
179
- const wrangler: Yargs.Argv<CommonYargsOptions> = makeCLI(argv)
176
+ const wrangler: CommonYargsArgv = makeCLI(argv)
180
177
  .strict()
181
178
  // We handle errors ourselves in a try-catch around `yargs.parse`.
182
179
  // If you want the "help info" to be displayed then throw an instance of `CommandLineArgsError`.
@@ -212,6 +209,11 @@ export function createCLIParser(argv: string[]) {
212
209
  type: "string",
213
210
  requiresArg: true,
214
211
  })
212
+ .option("experimental-json-config", {
213
+ alias: "j",
214
+ describe: `Experimental: Support wrangler.json`,
215
+ type: "boolean",
216
+ })
215
217
  .check((args) => {
216
218
  // Grab locally specified env params from `.env` file
217
219
  const loaded = loadDotEnv(".env", args.env);
@@ -221,7 +223,10 @@ export function createCLIParser(argv: string[]) {
221
223
  return true;
222
224
  });
223
225
 
224
- wrangler.group(["config", "env", "help", "version"], "Flags:");
226
+ wrangler.group(
227
+ ["experimental-json-config", "config", "env", "help", "version"],
228
+ "Flags:"
229
+ );
225
230
  wrangler.help().alias("h", "help");
226
231
 
227
232
  // Default help command that supports the subcommands
@@ -264,24 +269,30 @@ export function createCLIParser(argv: string[]) {
264
269
  // I wish we could enforce this pattern, but this comment will have to do for now.
265
270
  // (It's also annoying that choices[] doesn't get inferred as an enum. 🤷‍♂.)
266
271
 
267
- // [DEPRECATED] generate
272
+ // docs
268
273
  wrangler.command(
269
- // we definitely want to move away from us cloning github templates
270
- // we can do something better here, let's see
271
- "generate [name] [template]",
272
- false,
273
- generateOptions,
274
- generateHandler
274
+ "docs [command]",
275
+ "📚 Open wrangler's docs in your browser",
276
+ docsOptions,
277
+ docsHandler
275
278
  );
276
279
 
277
280
  // init
278
281
  wrangler.command(
279
282
  "init [name]",
280
- "📥 Create a wrangler.toml configuration file",
283
+ "📥 Initialize a basic Worker project, including a wrangler.toml file",
281
284
  initOptions,
282
285
  initHandler
283
286
  );
284
287
 
288
+ // generate
289
+ wrangler.command(
290
+ "generate [name] [template]",
291
+ "✨ Generate a new Worker project from an existing Worker template. See https://github.com/cloudflare/templates",
292
+ generateOptions,
293
+ generateHandler
294
+ );
295
+
285
296
  // [DEPRECATED] build
286
297
  wrangler.command("build", false, buildOptions, buildHandler);
287
298
 
@@ -429,6 +440,15 @@ export function createCLIParser(argv: string[]) {
429
440
  }
430
441
  );
431
442
 
443
+ // mtls-certificate
444
+ wrangler.command(
445
+ "mtls-certificate",
446
+ "🪪 Manage certificates used for mTLS connections",
447
+ (mtlsYargs) => {
448
+ return mTlsCertificateCommands(mtlsYargs.command(subHelp));
449
+ }
450
+ );
451
+
432
452
  /**
433
453
  * User Group: login, logout, and whoami
434
454
  * TODO: group commands into User group similar to .group() for flags in yargs
@@ -445,6 +465,11 @@ export function createCLIParser(argv: string[]) {
445
465
  .option("scopes-list", {
446
466
  describe: "List all the available OAuth scopes with descriptions",
447
467
  })
468
+ .option("browser", {
469
+ default: true,
470
+ type: "boolean",
471
+ describe: "Automatically open the OAuth link in a browser",
472
+ })
448
473
  .option("scopes", {
449
474
  describe: "Pick the set of applicable OAuth scopes when logging in",
450
475
  array: true,
@@ -471,11 +496,11 @@ export function createCLIParser(argv: string[]) {
471
496
  `One of ${args.scopes} is not a valid authentication scope. Run "wrangler login --list-scopes" to see the valid scopes.`
472
497
  );
473
498
  }
474
- await login({ scopes: args.scopes });
499
+ await login({ scopes: args.scopes, browser: args.browser });
475
500
  return;
476
501
  }
477
- await login();
478
- const config = readConfig(args.config as ConfigPath, args);
502
+ await login({ browser: args.browser });
503
+ const config = readConfig(args.config, args);
479
504
  await metrics.sendMetricsEvent("login user", {
480
505
  sendMetrics: config.send_metrics,
481
506
  });
@@ -492,10 +517,10 @@ export function createCLIParser(argv: string[]) {
492
517
  "logout",
493
518
  "🚪 Logout from Cloudflare",
494
519
  () => {},
495
- async () => {
520
+ async (args) => {
496
521
  await printWranglerBanner();
497
522
  await logout();
498
- const config = readConfig(undefined, {});
523
+ const config = readConfig(undefined, args);
499
524
  await metrics.sendMetricsEvent("logout user", {
500
525
  sendMetrics: config.send_metrics,
501
526
  });
@@ -507,10 +532,10 @@ export function createCLIParser(argv: string[]) {
507
532
  "whoami",
508
533
  "🕵️ Retrieve your user info and test your auth config",
509
534
  () => {},
510
- async () => {
535
+ async (args) => {
511
536
  await printWranglerBanner();
512
537
  await whoami();
513
- const config = readConfig(undefined, {});
538
+ const config = readConfig(undefined, args);
514
539
  await metrics.sendMetricsEvent("view accounts", {
515
540
  sendMetrics: config.send_metrics,
516
541
  });
@@ -522,9 +547,9 @@ export function createCLIParser(argv: string[]) {
522
547
  "types",
523
548
  "📝 Generate types from bindings & module rules in config",
524
549
  () => {},
525
- async () => {
550
+ async (args) => {
526
551
  await printWranglerBanner();
527
- const config = readConfig(undefined, {});
552
+ const config = readConfig(undefined, args);
528
553
 
529
554
  const configBindings: Partial<Config> = {
530
555
  kv_namespaces: config.kv_namespaces ?? [],
@@ -538,9 +563,10 @@ export function createCLIParser(argv: string[]) {
538
563
  r2_buckets: config.r2_buckets,
539
564
  d1_databases: config.d1_databases,
540
565
  services: config.services,
566
+ analytics_engine_datasets: config.analytics_engine_datasets,
541
567
  dispatch_namespaces: config.dispatch_namespaces,
542
568
  logfwdr: config.logfwdr,
543
- unsafe: { bindings: config.unsafe?.bindings },
569
+ unsafe: config.unsafe,
544
570
  rules: config.rules,
545
571
  queues: config.queues,
546
572
  };
@@ -551,35 +577,84 @@ export function createCLIParser(argv: string[]) {
551
577
 
552
578
  //deployments
553
579
  const deploymentsWarning =
554
- "🚧`wrangler deployments` is a beta command. Please report any issues to https://github.com/cloudflare/wrangler2/issues/new/choose";
580
+ "🚧`wrangler deployments` is a beta command. Please report any issues to https://github.com/cloudflare/workers-sdk/issues/new/choose";
555
581
  wrangler.command(
556
582
  "deployments",
557
- false,
558
- // "🚢 Logs the 10 most recent deployments with 'Version ID', 'Version number','Author email', 'Created on' and 'Latest deploy'",
559
- (yargs) => {
583
+ "🚢 List and view details for deployments",
584
+ (yargs) =>
560
585
  yargs
561
586
  .option("name", {
562
587
  describe: "The name of your worker",
563
588
  type: "string",
564
589
  })
565
- .epilogue(deploymentsWarning);
566
- },
567
- async (deploymentsYargs: ArgumentsCamelCase<{ name: string }>) => {
568
- await printWranglerBanner();
569
- const config = readConfig(
570
- deploymentsYargs.config as ConfigPath,
571
- deploymentsYargs
572
- );
573
- const accountId = await requireAuth(config);
574
- const scriptName = getScriptName(
575
- { name: deploymentsYargs.name, env: undefined },
576
- config
577
- );
578
-
579
- logger.log(`${deploymentsWarning}\n`);
580
- await deployments(accountId, scriptName);
581
- }
590
+ .command(
591
+ "list",
592
+ "🚢 Displays the 10 most recent deployments for a worker",
593
+ async (listYargs) => listYargs,
594
+ async (listYargs) => {
595
+ const { accountId, scriptName, config } =
596
+ await commonDeploymentCMDSetup(listYargs, deploymentsWarning);
597
+ await deployments(accountId, scriptName, config);
598
+ }
599
+ )
600
+ .command(
601
+ "view [deployment-id]",
602
+ "🔍 View a deployment",
603
+ async (viewYargs) =>
604
+ viewYargs.positional("deployment-id", {
605
+ describe: "The ID of the deployment you want to inspect",
606
+ type: "string",
607
+ demandOption: false,
608
+ }),
609
+ async (viewYargs) => {
610
+ const { accountId, scriptName, config } =
611
+ await commonDeploymentCMDSetup(viewYargs, deploymentsWarning);
612
+
613
+ await viewDeployment(
614
+ accountId,
615
+ scriptName,
616
+ config,
617
+ viewYargs.deploymentId
618
+ );
619
+ }
620
+ )
621
+ .command(subHelp)
622
+ .epilogue(deploymentsWarning)
582
623
  );
624
+ const rollbackWarning =
625
+ "🚧`wrangler rollback` is a beta command. Please report any issues to https://github.com/cloudflare/workers-sdk/issues/new/choose";
626
+ wrangler
627
+ .command(
628
+ "rollback [deployment-id]",
629
+ "🔙 Rollback a deployment",
630
+ (rollbackYargs) =>
631
+ rollbackYargs
632
+ .positional("deployment-id", {
633
+ describe: "The ID of the deployment to rollback to",
634
+ type: "string",
635
+ demandOption: false,
636
+ })
637
+ .option("message", {
638
+ alias: "m",
639
+ describe:
640
+ "Skip confirmation and message prompts, uses provided argument as message",
641
+ type: "string",
642
+ default: undefined,
643
+ }),
644
+ async (rollbackYargs) => {
645
+ const { accountId, scriptName, config } =
646
+ await commonDeploymentCMDSetup(rollbackYargs, rollbackWarning);
647
+
648
+ await rollbackDeployment(
649
+ accountId,
650
+ scriptName,
651
+ config,
652
+ rollbackYargs.deploymentId,
653
+ rollbackYargs.message
654
+ );
655
+ }
656
+ )
657
+ .epilogue(rollbackWarning);
583
658
 
584
659
  // This set to false to allow overwrite of default behaviour
585
660
  wrangler.version(false);
@@ -617,7 +692,7 @@ export async function main(argv: string[]): Promise<void> {
617
692
  await createCLIParser([...argv, "--help"]).parse();
618
693
  } else if (e instanceof ParseError) {
619
694
  e.notes.push({
620
- text: "\nIf you think this is a bug, please open an issue at: https://github.com/cloudflare/wrangler2/issues/new/choose",
695
+ text: "\nIf you think this is a bug, please open an issue at: https://github.com/cloudflare/workers-sdk/issues/new/choose",
621
696
  });
622
697
  logger.log(formatMessage(e));
623
698
  } else if (
@@ -653,7 +728,7 @@ export async function main(argv: string[]): Promise<void> {
653
728
  logger.error(e instanceof Error ? e.message : e);
654
729
  logger.log(
655
730
  `${fgGreenColor}%s${resetColor}`,
656
- "If you think this is a bug then please create an issue at https://github.com/cloudflare/wrangler2/issues/new/choose"
731
+ "If you think this is a bug then please create an issue at https://github.com/cloudflare/workers-sdk/issues/new/choose"
657
732
  );
658
733
  }
659
734
  throw e;