wrangler 0.0.0-e7a0cd5b → 0.0.0-e87ad068

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 (255) hide show
  1. package/README.md +3 -3
  2. package/bin/wrangler.js +30 -10
  3. package/miniflare-dist/index.mjs +254 -128
  4. package/package.json +27 -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 +797 -98
  9. package/src/__tests__/constellation.test.ts +371 -0
  10. package/src/__tests__/d1/d1.test.ts +82 -0
  11. package/src/__tests__/d1/execute.test.ts +66 -0
  12. package/src/__tests__/d1/migrate.test.ts +257 -0
  13. package/src/__tests__/d1/splitter.test.ts +255 -0
  14. package/src/__tests__/delete.test.ts +91 -49
  15. package/src/__tests__/deployments.test.ts +330 -56
  16. package/src/__tests__/dev.test.tsx +198 -90
  17. package/src/__tests__/generate.test.ts +12 -10
  18. package/src/__tests__/guess-worker-format.test.ts +35 -0
  19. package/src/__tests__/helpers/end-event-loop.ts +6 -0
  20. package/src/__tests__/helpers/mock-auth-domain.ts +20 -0
  21. package/src/__tests__/helpers/mock-console.ts +6 -0
  22. package/src/__tests__/helpers/mock-dialogs.ts +71 -85
  23. package/src/__tests__/helpers/mock-get-pages-upload-token.ts +25 -0
  24. package/src/__tests__/helpers/mock-get-zone-from-host.ts +8 -5
  25. package/src/__tests__/helpers/mock-known-routes.ts +7 -2
  26. package/src/__tests__/helpers/mock-kv.ts +29 -16
  27. package/src/__tests__/helpers/mock-oauth-flow.ts +103 -92
  28. package/src/__tests__/helpers/mock-process.ts +8 -13
  29. package/src/__tests__/helpers/mock-set-timeout.ts +16 -0
  30. package/src/__tests__/helpers/msw/blob-worker.cjs +19 -0
  31. package/src/__tests__/helpers/msw/handlers/deployments.ts +128 -27
  32. package/src/__tests__/helpers/msw/handlers/namespaces.ts +18 -41
  33. package/src/__tests__/helpers/msw/handlers/oauth.ts +13 -18
  34. package/src/__tests__/helpers/msw/handlers/r2.ts +14 -34
  35. package/src/__tests__/helpers/msw/handlers/script.ts +9 -28
  36. package/src/__tests__/helpers/msw/handlers/user.ts +13 -24
  37. package/src/__tests__/helpers/msw/handlers/zones.ts +6 -8
  38. package/src/__tests__/helpers/msw/index.ts +32 -1
  39. package/src/__tests__/helpers/msw/read-file-sync.js +61 -0
  40. package/src/__tests__/helpers/string-dynamic-values-matcher.ts +28 -0
  41. package/src/__tests__/helpers/worker-scripts/parent-worker.js +4 -1
  42. package/src/__tests__/index.test.ts +92 -72
  43. package/src/__tests__/init.test.ts +1033 -631
  44. package/src/__tests__/jest.setup.ts +19 -42
  45. package/src/__tests__/kv.test.ts +355 -231
  46. package/src/__tests__/logger.test.ts +68 -2
  47. package/src/__tests__/logout.test.ts +47 -0
  48. package/src/__tests__/metrics.test.ts +94 -51
  49. package/src/__tests__/middleware.scheduled.test.ts +42 -32
  50. package/src/__tests__/middleware.test.ts +212 -122
  51. package/src/__tests__/mtls-certificates.test.ts +589 -0
  52. package/src/__tests__/pages/deployment-list.test.ts +80 -0
  53. package/src/__tests__/pages/functions-build.test.ts +529 -0
  54. package/src/__tests__/pages/pages.test.ts +81 -0
  55. package/src/__tests__/pages/project-create.test.ts +63 -0
  56. package/src/__tests__/pages/project-list.test.ts +110 -0
  57. package/src/__tests__/pages/project-upload.test.ts +500 -0
  58. package/src/__tests__/pages/publish.test.ts +2864 -0
  59. package/src/__tests__/pages-deployment-tail.test.ts +957 -0
  60. package/src/__tests__/parse.test.ts +106 -0
  61. package/src/__tests__/publish.test.ts +2227 -1005
  62. package/src/__tests__/pubsub.test.ts +226 -100
  63. package/src/__tests__/queues.test.ts +238 -77
  64. package/src/__tests__/r2.test.ts +55 -57
  65. package/src/__tests__/secret.test.ts +179 -130
  66. package/src/__tests__/tail.test.ts +313 -113
  67. package/src/__tests__/test-old-node-version.js +3 -3
  68. package/src/__tests__/traverse-module-graph.test.ts +220 -0
  69. package/src/__tests__/tsconfig-sanity.ts +12 -0
  70. package/src/__tests__/tsconfig.json +8 -0
  71. package/src/__tests__/tsconfig.tsbuildinfo +1 -0
  72. package/src/__tests__/type-generation.test.ts +43 -26
  73. package/src/__tests__/unstableDev.test.ts +61 -0
  74. package/src/__tests__/user.test.ts +35 -72
  75. package/src/__tests__/whoami.test.tsx +8 -114
  76. package/src/__tests__/worker-namespace.test.ts +83 -69
  77. package/src/api/dev.ts +180 -60
  78. package/src/api/index.ts +10 -1
  79. package/src/api/mtls-certificate.ts +148 -0
  80. package/src/api/pages/create-worker-bundle-contents.ts +80 -0
  81. package/src/api/pages/index.ts +5 -0
  82. package/src/api/pages/publish.tsx +371 -0
  83. package/src/bundle.ts +315 -148
  84. package/src/cfetch/index.ts +0 -2
  85. package/src/cfetch/internal.ts +33 -33
  86. package/src/cli.ts +4 -4
  87. package/src/config/config.ts +14 -7
  88. package/src/config/environment.ts +120 -24
  89. package/src/config/index.ts +117 -35
  90. package/src/config/validation-helpers.ts +1 -1
  91. package/src/config/validation.ts +430 -19
  92. package/src/constellation/createProject.tsx +51 -0
  93. package/src/constellation/deleteProject.ts +51 -0
  94. package/src/constellation/deleteProjectModel.ts +76 -0
  95. package/src/constellation/index.ts +75 -0
  96. package/src/constellation/listCatalog.tsx +35 -0
  97. package/src/constellation/listModel.tsx +49 -0
  98. package/src/constellation/listProject.tsx +28 -0
  99. package/src/constellation/listRuntime.tsx +28 -0
  100. package/src/constellation/options.ts +17 -0
  101. package/src/constellation/types.ts +17 -0
  102. package/src/constellation/uploadModel.tsx +84 -0
  103. package/src/constellation/utils.ts +90 -0
  104. package/src/create-worker-preview.ts +19 -8
  105. package/src/create-worker-upload-form.ts +81 -18
  106. package/src/d1/backups.tsx +47 -46
  107. package/src/d1/constants.ts +5 -0
  108. package/src/d1/create.tsx +85 -37
  109. package/src/d1/{delete.tsx → delete.ts} +12 -15
  110. package/src/d1/execute.tsx +228 -156
  111. package/src/d1/index.ts +31 -7
  112. package/src/d1/list.tsx +27 -13
  113. package/src/d1/migrations/apply.tsx +235 -0
  114. package/src/d1/migrations/create.tsx +79 -0
  115. package/src/d1/migrations/helpers.ts +171 -0
  116. package/src/d1/migrations/index.ts +3 -0
  117. package/src/d1/migrations/list.tsx +95 -0
  118. package/src/d1/migrations/options.ts +23 -0
  119. package/src/d1/options.ts +12 -2
  120. package/src/d1/splitter.ts +161 -0
  121. package/src/d1/types.ts +32 -0
  122. package/src/d1/utils.ts +12 -2
  123. package/src/delete.ts +8 -16
  124. package/src/deployments.ts +340 -46
  125. package/src/deprecated/index.ts +8 -302
  126. package/src/dev/dev.tsx +66 -46
  127. package/src/dev/local.tsx +339 -104
  128. package/src/dev/remote.tsx +36 -3
  129. package/src/dev/start-server.ts +146 -101
  130. package/src/dev/use-esbuild.ts +82 -56
  131. package/src/dev/validate-dev-props.ts +9 -0
  132. package/src/{dev-registry.tsx → dev-registry.ts} +13 -1
  133. package/src/dev.tsx +202 -125
  134. package/src/dialogs.ts +136 -0
  135. package/src/dispatch-namespace.ts +21 -17
  136. package/src/docs/helpers.ts +50 -0
  137. package/src/docs/index.ts +54 -0
  138. package/src/entry.ts +26 -11
  139. package/src/environment-variables/factory.ts +89 -0
  140. package/src/environment-variables/misc-variables.ts +30 -0
  141. package/src/generate/index.ts +303 -0
  142. package/src/git-client.ts +15 -4
  143. package/src/{index.tsx → index.ts} +148 -63
  144. package/src/init.ts +301 -197
  145. package/src/inspect.ts +122 -6
  146. package/src/jest.d.ts +4 -0
  147. package/src/kv/helpers.ts +7 -4
  148. package/src/kv/index.ts +15 -17
  149. package/src/logger.ts +36 -5
  150. package/src/metrics/metrics-config.ts +3 -3
  151. package/src/metrics/send-event.ts +6 -1
  152. package/src/miniflare-cli/assets.ts +64 -28
  153. package/src/miniflare-cli/index.ts +6 -9
  154. package/src/miniflare-cli/tsconfig.json +9 -0
  155. package/src/miniflare-cli/tsconfig.tsbuildinfo +1 -0
  156. package/src/miniflare-cli/types.ts +11 -0
  157. package/src/module-collection.ts +92 -26
  158. package/src/mtls-certificate/cli.ts +155 -0
  159. package/src/pages/build.ts +423 -0
  160. package/src/pages/buildFunctions.ts +140 -0
  161. package/src/pages/deployment-tails.ts +281 -0
  162. package/src/pages/deployments.tsx +11 -33
  163. package/src/pages/{dev.tsx → dev.ts} +192 -126
  164. package/src/pages/errors.ts +1 -0
  165. package/src/pages/functions/buildPlugin.ts +73 -69
  166. package/src/pages/functions/buildWorker.ts +342 -117
  167. package/src/pages/functions/tsconfig.json +8 -0
  168. package/src/pages/functions/tsconfig.tsbuildinfo +1 -0
  169. package/src/pages/{functions.tsx → functions.ts} +8 -4
  170. package/src/pages/{index.tsx → index.ts} +11 -3
  171. package/src/pages/projects.tsx +12 -22
  172. package/src/pages/prompt-select-project.tsx +31 -0
  173. package/src/pages/publish.tsx +45 -214
  174. package/src/pages/types.ts +6 -9
  175. package/src/pages/upload.tsx +58 -14
  176. package/src/pages/utils.ts +14 -3
  177. package/src/parse.ts +23 -1
  178. package/src/paths.ts +1 -1
  179. package/src/proxy.ts +5 -0
  180. package/src/publish/index.ts +20 -16
  181. package/src/publish/publish.ts +81 -48
  182. package/src/pubsub/{pubsub-commands.tsx → pubsub-commands.ts} +19 -20
  183. package/src/queues/cli/commands/consumer/add.ts +24 -24
  184. package/src/queues/cli/commands/consumer/index.ts +3 -6
  185. package/src/queues/cli/commands/consumer/remove.ts +11 -18
  186. package/src/queues/cli/commands/create.ts +8 -8
  187. package/src/queues/cli/commands/delete.ts +8 -8
  188. package/src/queues/cli/commands/index.ts +6 -4
  189. package/src/queues/cli/commands/list.ts +8 -8
  190. package/src/queues/client.ts +1 -0
  191. package/src/queues/utils.ts +18 -0
  192. package/src/r2/constants.ts +4 -0
  193. package/src/r2/helpers.ts +1 -0
  194. package/src/r2/index.ts +40 -28
  195. package/src/secret/index.ts +18 -17
  196. package/src/{sites.tsx → sites.ts} +165 -53
  197. package/src/tail/createTail.ts +103 -3
  198. package/src/tail/filters.ts +1 -1
  199. package/src/tail/index.ts +8 -11
  200. package/src/tail/printing.ts +27 -0
  201. package/src/traverse-module-graph.ts +54 -0
  202. package/src/tsconfig-sanity.ts +16 -0
  203. package/src/type-generation.ts +85 -57
  204. package/src/user/access.ts +0 -1
  205. package/src/user/auth-variables.ts +113 -0
  206. package/src/user/choose-account.tsx +1 -31
  207. package/src/user/index.ts +0 -1
  208. package/src/user/{user.tsx → user.ts} +124 -82
  209. package/src/utils/render.ts +93 -0
  210. package/src/{whoami.tsx → whoami.ts} +37 -71
  211. package/src/worker.ts +61 -3
  212. package/src/yargs-types.ts +22 -5
  213. package/templates/__tests__/tsconfig-sanity.ts +12 -0
  214. package/templates/__tests__/tsconfig.json +8 -0
  215. package/templates/__tests__/tsconfig.tsbuildinfo +1 -0
  216. package/templates/checked-fetch.js +9 -3
  217. package/templates/d1-beta-facade.js +95 -25
  218. package/templates/facade.d.ts +14 -0
  219. package/templates/first-party-worker-module-facade.ts +4 -3
  220. package/templates/format-dev-errors.ts +8 -6
  221. package/templates/gitignore +1 -0
  222. package/templates/init-tests/test-jest-new-worker.js +3 -5
  223. package/templates/init-tests/test-vitest-new-worker.js +3 -5
  224. package/templates/init-tests/test-vitest-new-worker.ts +25 -0
  225. package/templates/middleware/loader-modules.ts +2 -2
  226. package/templates/middleware/loader-sw.ts +51 -31
  227. package/templates/middleware/middleware-miniflare3-json-error.ts +32 -0
  228. package/templates/new-worker.ts +3 -0
  229. package/templates/pages-dev-pipeline.ts +4 -1
  230. package/templates/pages-dev-util.ts +4 -1
  231. package/templates/pages-shim.ts +4 -1
  232. package/templates/pages-template-plugin.ts +19 -10
  233. package/templates/serve-static-assets.ts +17 -14
  234. package/templates/service-bindings-module-facade.js +1 -0
  235. package/templates/tsconfig-sanity.ts +11 -0
  236. package/templates/tsconfig.init.json +105 -0
  237. package/templates/tsconfig.json +5 -103
  238. package/templates/tsconfig.tsbuildinfo +1 -0
  239. package/wrangler-dist/cli.d.ts +902 -77
  240. package/wrangler-dist/cli.js +131685 -140615
  241. package/wrangler-dist/wasm-sync.wasm +0 -0
  242. package/src/__tests__/api-devregistry.test.js +0 -57
  243. package/src/__tests__/d1.test.ts +0 -72
  244. package/src/__tests__/dialogs.test.tsx +0 -40
  245. package/src/__tests__/helpers/mock-cfetch.ts +0 -333
  246. package/src/__tests__/pages.test.ts +0 -2223
  247. package/src/d1/types.tsx +0 -14
  248. package/src/dialogs.tsx +0 -163
  249. package/src/environment-variables.ts +0 -50
  250. package/src/pages/build.tsx +0 -238
  251. package/src/user/env-vars.ts +0 -46
  252. package/templates/experimental-local-cache-stubs.js +0 -27
  253. /package/src/{bundle-reporter.tsx → bundle-reporter.ts} +0 -0
  254. /package/src/dev/{get-local-persistence-path.tsx → get-local-persistence-path.ts} +0 -0
  255. /package/src/pages/{hash.tsx → hash.ts} +0 -0
@@ -1,16 +1,12 @@
1
- import { type Argv } from "yargs";
2
1
  import { readConfig } from "../../../../config";
3
2
  import { logger } from "../../../../logger";
4
3
  import { deleteConsumer } from "../../../client";
5
- import type { CommonYargsOptions } from "../../../../yargs-types";
4
+ import type {
5
+ CommonYargsArgv,
6
+ StrictYargsOptionsToInterface,
7
+ } from "../../../../yargs-types";
6
8
 
7
- type Args = CommonYargsOptions & {
8
- config?: string;
9
- ["queue-name"]: string;
10
- ["script-name"]: string;
11
- };
12
-
13
- export function options(yargs: Argv<CommonYargsOptions>): Argv<Args> {
9
+ export function options(yargs: CommonYargsArgv) {
14
10
  return yargs
15
11
  .positional("queue-name", {
16
12
  type: "string",
@@ -24,15 +20,12 @@ export function options(yargs: Argv<CommonYargsOptions>): Argv<Args> {
24
20
  });
25
21
  }
26
22
 
27
- export async function handler(args: Args) {
23
+ export async function handler(
24
+ args: StrictYargsOptionsToInterface<typeof options>
25
+ ) {
28
26
  const config = readConfig(args.config, args);
29
27
 
30
- logger.log(`Removing consumer from queue ${args["queue-name"]}.`);
31
- await deleteConsumer(
32
- config,
33
- args["queue-name"],
34
- args["script-name"],
35
- args.env
36
- );
37
- logger.log(`Removed consumer from queue ${args["queue-name"]}.`);
28
+ logger.log(`Removing consumer from queue ${args.queueName}.`);
29
+ await deleteConsumer(config, args.queueName, args.scriptName, args.env);
30
+ logger.log(`Removed consumer from queue ${args.queueName}.`);
38
31
  }
@@ -1,14 +1,12 @@
1
- import { type Argv } from "yargs";
2
1
  import { readConfig } from "../../../config";
3
2
  import { logger } from "../../../logger";
4
3
  import { createQueue } from "../../client";
4
+ import type {
5
+ CommonYargsArgv,
6
+ StrictYargsOptionsToInterface,
7
+ } from "../../../yargs-types";
5
8
 
6
- interface Args {
7
- config?: string;
8
- name: string;
9
- }
10
-
11
- export function options(yargs: Argv): Argv<Args> {
9
+ export function options(yargs: CommonYargsArgv) {
12
10
  return yargs.positional("name", {
13
11
  type: "string",
14
12
  demandOption: true,
@@ -16,7 +14,9 @@ export function options(yargs: Argv): Argv<Args> {
16
14
  });
17
15
  }
18
16
 
19
- export async function handler(args: Args) {
17
+ export async function handler(
18
+ args: StrictYargsOptionsToInterface<typeof options>
19
+ ) {
20
20
  const config = readConfig(args.config, args);
21
21
 
22
22
  logger.log(`Creating queue ${args.name}.`);
@@ -1,14 +1,12 @@
1
- import { type Argv } from "yargs";
2
1
  import { readConfig } from "../../../config";
3
2
  import { logger } from "../../../logger";
4
3
  import { deleteQueue } from "../../client";
4
+ import type {
5
+ CommonYargsArgv,
6
+ StrictYargsOptionsToInterface,
7
+ } from "../../../yargs-types";
5
8
 
6
- interface Args {
7
- config?: string;
8
- name: string;
9
- }
10
-
11
- export function options(yargs: Argv): Argv<Args> {
9
+ export function options(yargs: CommonYargsArgv) {
12
10
  // TODO(soon) --force option
13
11
  return yargs.positional("name", {
14
12
  type: "string",
@@ -17,7 +15,9 @@ export function options(yargs: Argv): Argv<Args> {
17
15
  });
18
16
  }
19
17
 
20
- export async function handler(args: Args) {
18
+ export async function handler(
19
+ args: StrictYargsOptionsToInterface<typeof options>
20
+ ) {
21
21
  const config = readConfig(args.config, args);
22
22
 
23
23
  logger.log(`Deleting queue ${args.name}.`);
@@ -1,12 +1,12 @@
1
- import { type BuilderCallback } from "yargs";
2
- import { type CommonYargsOptions } from "../../../yargs-types";
1
+ import { HandleUnauthorizedError } from "../../utils";
3
2
  import { consumers } from "./consumer";
4
3
 
5
4
  import { options as createOptions, handler as createHandler } from "./create";
6
5
  import { options as deleteOptions, handler as deleteHandler } from "./delete";
7
6
  import { options as listOptions, handler as listHandler } from "./list";
7
+ import type { CommonYargsArgv } from "../../../yargs-types";
8
8
 
9
- export const queues: BuilderCallback<CommonYargsOptions, unknown> = (yargs) => {
9
+ export function queues(yargs: CommonYargsArgv) {
10
10
  yargs.command("list", "List Queues", listOptions, listHandler);
11
11
 
12
12
  yargs.command(
@@ -30,4 +30,6 @@ export const queues: BuilderCallback<CommonYargsOptions, unknown> = (yargs) => {
30
30
  await consumers(consumersYargs);
31
31
  }
32
32
  );
33
- };
33
+
34
+ yargs.fail(HandleUnauthorizedError);
35
+ }
@@ -1,14 +1,12 @@
1
- import { type Argv } from "yargs";
2
1
  import { readConfig } from "../../../config";
3
2
  import { logger } from "../../../logger";
4
3
  import { listQueues } from "../../client";
4
+ import type {
5
+ CommonYargsArgv,
6
+ StrictYargsOptionsToInterface,
7
+ } from "../../../yargs-types";
5
8
 
6
- interface Args {
7
- config?: string;
8
- page?: number;
9
- }
10
-
11
- export function options(yargs: Argv): Argv<Args> {
9
+ export function options(yargs: CommonYargsArgv) {
12
10
  return yargs.options({
13
11
  page: {
14
12
  type: "number",
@@ -17,7 +15,9 @@ export function options(yargs: Argv): Argv<Args> {
17
15
  });
18
16
  }
19
17
 
20
- export async function handler(args: Args) {
18
+ export async function handler(
19
+ args: StrictYargsOptionsToInterface<typeof options>
20
+ ) {
21
21
  const config = readConfig(args.config, args);
22
22
 
23
23
  const queues = await listQueues(config, args.page);
@@ -90,6 +90,7 @@ export interface ConsumerSettings {
90
90
  batch_size?: number;
91
91
  max_retries?: number;
92
92
  max_wait_time_ms?: number;
93
+ max_concurrency?: number | null;
93
94
  }
94
95
 
95
96
  export interface ConsumerResponse extends PostConsumerBody {
@@ -0,0 +1,18 @@
1
+ import { logger } from "../logger";
2
+ import { type ParseError } from "../parse";
3
+ import { getAccountId } from "../user";
4
+
5
+ const isFetchError = (err: unknown): err is ParseError => err instanceof Error;
6
+
7
+ export const HandleUnauthorizedError = async (_msg: string, err: Error) => {
8
+ //@ts-expect-error non-standard property on Error
9
+ if (isFetchError(err) && err.code === 10023) {
10
+ const accountId = await getAccountId();
11
+ if (accountId) {
12
+ return logger.log(
13
+ `Queues is not currently enabled on this account. Go to https://dash.cloudflare.com/${accountId}/workers/queues to enable it.`
14
+ );
15
+ }
16
+ }
17
+ throw err;
18
+ };
@@ -0,0 +1,4 @@
1
+ /**
2
+ * The maximum file size we can upload using the V4 API.
3
+ */
4
+ export const MAX_UPLOAD_SIZE = 300 * 1024 * 1024;
package/src/r2/helpers.ts CHANGED
@@ -113,6 +113,7 @@ export async function putR2Object(
113
113
  body: object,
114
114
  headers,
115
115
  method: "PUT",
116
+ duplex: "half",
116
117
  }
117
118
  );
118
119
  }
package/src/r2/index.ts CHANGED
@@ -1,11 +1,14 @@
1
1
  import * as fs from "node:fs";
2
2
  import * as stream from "node:stream";
3
3
 
4
+ import prettyBytes from "pretty-bytes";
4
5
  import { readConfig } from "../config";
6
+ import { FatalError } from "../errors";
5
7
  import { CommandLineArgsError, printWranglerBanner } from "../index";
6
8
  import { logger } from "../logger";
7
9
  import * as metrics from "../metrics";
8
10
  import { requireAuth } from "../user";
11
+ import { MAX_UPLOAD_SIZE } from "./constants";
9
12
  import {
10
13
  bucketAndKeyFromObjectPath,
11
14
  createR2Bucket,
@@ -16,22 +19,23 @@ import {
16
19
  putR2Object,
17
20
  } from "./helpers";
18
21
 
19
- import type { ConfigPath } from "../index";
22
+ import type { CommonYargsArgv } from "../yargs-types";
20
23
  import type { Readable } from "node:stream";
21
- import type { BuilderCallback } from "yargs";
22
24
 
23
- export const r2: BuilderCallback<unknown, unknown> = (r2Yargs) => {
25
+ export function r2(r2Yargs: CommonYargsArgv) {
24
26
  return r2Yargs
25
27
  .command("object", "Manage R2 objects", (r2ObjectYargs) => {
26
28
  return r2ObjectYargs
27
29
  .command(
28
30
  "get <objectPath>",
29
31
  "Fetch an object from an R2 bucket",
30
- (Objectyargs) => {
31
- return Objectyargs.positional("objectPath", {
32
- describe: "The source object path in the form of {bucket}/{key}",
33
- type: "string",
34
- })
32
+ (objectArgs) => {
33
+ return objectArgs
34
+ .positional("objectPath", {
35
+ describe:
36
+ "The source object path in the form of {bucket}/{key}",
37
+ type: "string",
38
+ })
35
39
  .option("file", {
36
40
  describe: "The destination file to create",
37
41
  alias: "f",
@@ -48,10 +52,7 @@ export const r2: BuilderCallback<unknown, unknown> = (r2Yargs) => {
48
52
  });
49
53
  },
50
54
  async (objectGetYargs) => {
51
- const config = readConfig(
52
- objectGetYargs.config as ConfigPath,
53
- objectGetYargs
54
- );
55
+ const config = readConfig(objectGetYargs.config, objectGetYargs);
55
56
  const accountId = await requireAuth(config);
56
57
  const { objectPath, pipe } = objectGetYargs;
57
58
  const { bucket, key } = bucketAndKeyFromObjectPath(objectPath);
@@ -141,10 +142,7 @@ export const r2: BuilderCallback<unknown, unknown> = (r2Yargs) => {
141
142
  async (objectPutYargs) => {
142
143
  await printWranglerBanner();
143
144
 
144
- const config = readConfig(
145
- objectPutYargs.config as ConfigPath,
146
- objectPutYargs
147
- );
145
+ const config = readConfig(objectPutYargs.config, objectPutYargs);
148
146
  const accountId = await requireAuth(config);
149
147
  const { objectPath, file, pipe, ...options } = objectPutYargs;
150
148
  const { bucket, key } = bucketAndKeyFromObjectPath(objectPath);
@@ -176,6 +174,15 @@ export const r2: BuilderCallback<unknown, unknown> = (r2Yargs) => {
176
174
  objectSize = object.byteLength;
177
175
  }
178
176
 
177
+ if (objectSize > MAX_UPLOAD_SIZE) {
178
+ throw new FatalError(
179
+ `Error: Wrangler only supports uploading files up to ${prettyBytes(
180
+ MAX_UPLOAD_SIZE
181
+ )} in size\n${key} is ${prettyBytes(objectSize)} in size`,
182
+ 1
183
+ );
184
+ }
185
+
179
186
  logger.log(`Creating object "${key}" in bucket "${bucket}".`);
180
187
  await putR2Object(accountId, bucket, key, object, {
181
188
  ...options,
@@ -198,7 +205,7 @@ export const r2: BuilderCallback<unknown, unknown> = (r2Yargs) => {
198
205
  const { objectPath } = args;
199
206
  await printWranglerBanner();
200
207
 
201
- const config = readConfig(args.config as ConfigPath, args);
208
+ const config = readConfig(args.config, args);
202
209
  const accountId = await requireAuth(config);
203
210
  const { bucket, key } = bucketAndKeyFromObjectPath(objectPath);
204
211
  logger.log(`Deleting object "${key}" from bucket "${bucket}".`);
@@ -223,7 +230,7 @@ export const r2: BuilderCallback<unknown, unknown> = (r2Yargs) => {
223
230
  async (args) => {
224
231
  await printWranglerBanner();
225
232
 
226
- const config = readConfig(args.config as ConfigPath, args);
233
+ const config = readConfig(args.config, args);
227
234
 
228
235
  const accountId = await requireAuth(config);
229
236
 
@@ -236,16 +243,21 @@ export const r2: BuilderCallback<unknown, unknown> = (r2Yargs) => {
236
243
  }
237
244
  );
238
245
 
239
- r2BucketYargs.command("list", "List R2 buckets", {}, async (args) => {
240
- const config = readConfig(args.config as ConfigPath, args);
246
+ r2BucketYargs.command(
247
+ "list",
248
+ "List R2 buckets",
249
+ (listArgs) => listArgs,
250
+ async (args) => {
251
+ const config = readConfig(args.config, args);
241
252
 
242
- const accountId = await requireAuth(config);
253
+ const accountId = await requireAuth(config);
243
254
 
244
- logger.log(JSON.stringify(await listR2Buckets(accountId), null, 2));
245
- await metrics.sendMetricsEvent("list r2 buckets", {
246
- sendMetrics: config.send_metrics,
247
- });
248
- });
255
+ logger.log(JSON.stringify(await listR2Buckets(accountId), null, 2));
256
+ await metrics.sendMetricsEvent("list r2 buckets", {
257
+ sendMetrics: config.send_metrics,
258
+ });
259
+ }
260
+ );
249
261
 
250
262
  r2BucketYargs.command(
251
263
  "delete <name>",
@@ -260,7 +272,7 @@ export const r2: BuilderCallback<unknown, unknown> = (r2Yargs) => {
260
272
  async (args) => {
261
273
  await printWranglerBanner();
262
274
 
263
- const config = readConfig(args.config as ConfigPath, args);
275
+ const config = readConfig(args.config, args);
264
276
 
265
277
  const accountId = await requireAuth(config);
266
278
 
@@ -274,4 +286,4 @@ export const r2: BuilderCallback<unknown, unknown> = (r2Yargs) => {
274
286
  );
275
287
  return r2BucketYargs;
276
288
  });
277
- };
289
+ }
@@ -13,14 +13,12 @@ import * as metrics from "../metrics";
13
13
  import { parseJSON, readFileSync } from "../parse";
14
14
  import { requireAuth } from "../user";
15
15
 
16
- import type { ConfigPath } from "../index";
17
16
  import type {
18
- CommonYargsOptions,
19
- YargsOptionsToInterface,
17
+ CommonYargsArgv,
18
+ StrictYargsOptionsToInterface,
20
19
  } from "../yargs-types";
21
- import type { Argv } from "yargs";
22
20
 
23
- export const secret = (secretYargs: Argv<CommonYargsOptions>) => {
21
+ export const secret = (secretYargs: CommonYargsArgv) => {
24
22
  return secretYargs
25
23
  .option("legacy-env", {
26
24
  type: "boolean",
@@ -44,7 +42,7 @@ export const secret = (secretYargs: Argv<CommonYargsOptions>) => {
44
42
  },
45
43
  async (args) => {
46
44
  await printWranglerBanner();
47
- const config = readConfig(args.config as ConfigPath, args);
45
+ const config = readConfig(args.config, args);
48
46
 
49
47
  const scriptName = getLegacyScriptName(args, config);
50
48
  if (!scriptName) {
@@ -58,7 +56,7 @@ export const secret = (secretYargs: Argv<CommonYargsOptions>) => {
58
56
  const isInteractive = process.stdin.isTTY;
59
57
  const secretValue = trimTrailingWhitespace(
60
58
  isInteractive
61
- ? await prompt("Enter a secret value:", "password")
59
+ ? await prompt("Enter a secret value:", { isSecret: true })
62
60
  : await readFromStdin()
63
61
  );
64
62
 
@@ -102,19 +100,23 @@ export const secret = (secretYargs: Argv<CommonYargsOptions>) => {
102
100
  },
103
101
  bindings: {
104
102
  kv_namespaces: [],
103
+ send_email: [],
105
104
  vars: {},
106
- metadata_binding: undefined,
107
105
  durable_objects: { bindings: [] },
108
106
  queues: [],
109
107
  r2_buckets: [],
110
108
  d1_databases: [],
109
+ constellation: [],
111
110
  services: [],
111
+ analytics_engine_datasets: [],
112
112
  wasm_modules: {},
113
+ browser: undefined,
113
114
  text_blobs: {},
114
115
  data_blobs: {},
115
116
  dispatch_namespaces: [],
117
+ mtls_certificates: [],
116
118
  logfwdr: { schema: undefined, bindings: [] },
117
- unsafe: [],
119
+ unsafe: { bindings: undefined, metadata: undefined },
118
120
  },
119
121
  modules: [],
120
122
  migrations: undefined,
@@ -123,6 +125,8 @@ export const secret = (secretYargs: Argv<CommonYargsOptions>) => {
123
125
  usage_model: undefined,
124
126
  keepVars: false, // this doesn't matter since it's a new script anyway
125
127
  logpush: false,
128
+ placement: undefined,
129
+ tail_consumers: undefined,
126
130
  }),
127
131
  }
128
132
  );
@@ -172,7 +176,7 @@ export const secret = (secretYargs: Argv<CommonYargsOptions>) => {
172
176
  });
173
177
  },
174
178
  async (args) => {
175
- const config = readConfig(args.config as ConfigPath, args);
179
+ const config = readConfig(args.config, args);
176
180
 
177
181
  const scriptName = getLegacyScriptName(args, config);
178
182
  if (!scriptName) {
@@ -222,7 +226,7 @@ export const secret = (secretYargs: Argv<CommonYargsOptions>) => {
222
226
  });
223
227
  },
224
228
  async (args) => {
225
- const config = readConfig(args.config as ConfigPath, args);
229
+ const config = readConfig(args.config, args);
226
230
 
227
231
  const scriptName = getLegacyScriptName(args, config);
228
232
  if (!scriptName) {
@@ -246,7 +250,7 @@ export const secret = (secretYargs: Argv<CommonYargsOptions>) => {
246
250
  );
247
251
  };
248
252
 
249
- export const secretBulkOptions = (yargs: Argv<CommonYargsOptions>) => {
253
+ export const secretBulkOptions = (yargs: CommonYargsArgv) => {
250
254
  return yargs
251
255
  .positional("json", {
252
256
  describe: `The JSON file of key-value pairs to upload, in form {"key": value, ...}`,
@@ -301,14 +305,11 @@ function readFromStdin(): Promise<string> {
301
305
  });
302
306
  }
303
307
 
304
- type SecretBulkArgs = YargsOptionsToInterface<typeof secretBulkOptions>;
308
+ type SecretBulkArgs = StrictYargsOptionsToInterface<typeof secretBulkOptions>;
305
309
 
306
310
  export const secretBulkHandler = async (secretBulkArgs: SecretBulkArgs) => {
307
311
  await printWranglerBanner();
308
- const config = readConfig(
309
- secretBulkArgs.config as ConfigPath,
310
- secretBulkArgs
311
- );
312
+ const config = readConfig(secretBulkArgs.config, secretBulkArgs);
312
313
 
313
314
  const scriptName = getLegacyScriptName(secretBulkArgs, config);
314
315
  if (!scriptName) {