create-cloudflare 2.73.1 → 2.73.3

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.
package/dist/cli.js CHANGED
@@ -92534,7 +92534,7 @@ function formatZodError(error51) {
92534
92534
  }
92535
92535
  __name(formatZodError, "formatZodError");
92536
92536
 
92537
- // ../workers-utils/dist/chunk-AUSY7DKT.mjs
92537
+ // ../workers-utils/dist/chunk-TAK63GWY.mjs
92538
92538
  var import_node_module6 = require("node:module");
92539
92539
 
92540
92540
  // ../workers-utils/dist/chunk-M3RITKR3.mjs
@@ -92583,7 +92583,7 @@ function dedent(templ) {
92583
92583
  __name(dedent, "dedent");
92584
92584
  var esm_default = dedent;
92585
92585
 
92586
- // ../workers-utils/dist/chunk-AUSY7DKT.mjs
92586
+ // ../workers-utils/dist/chunk-TAK63GWY.mjs
92587
92587
  init_chunk_U6NEESU5();
92588
92588
  var import_node_fs = require("node:fs");
92589
92589
  var import_node_path = __toESM(require("node:path"), 1);
@@ -95581,12 +95581,23 @@ function findRedirectedWranglerConfig(cwd, userConfigPath) {
95581
95581
  );
95582
95582
  }
95583
95583
  if (userConfigPath) {
95584
- if (import_node_path.default.join(import_node_path.default.dirname(userConfigPath), PATH_TO_DEPLOY_CONFIG) !== deployConfigPath) {
95584
+ const expectedDeployConfigPath = import_node_path.default.join(
95585
+ import_node_path.default.dirname(userConfigPath),
95586
+ PATH_TO_DEPLOY_CONFIG
95587
+ );
95588
+ if (expectedDeployConfigPath !== deployConfigPath) {
95585
95589
  throw new UserError(
95586
95590
  esm_default`
95587
95591
  Found both a user configuration file at "${import_node_path.default.relative(".", userConfigPath)}"
95588
95592
  and a deploy configuration file at "${import_node_path.default.relative(".", deployConfigPath)}".
95589
95593
  But these do not share the same base path so it is not clear which should be used.
95594
+
95595
+ A deploy configuration file is generated by a build tool to redirect Wrangler to the configuration it generated.
95596
+ It is only applied when it sits alongside the user configuration file, which here would be "${import_node_path.default.relative(".", expectedDeployConfigPath)}".
95597
+
95598
+ Please either delete "${import_node_path.default.relative(".", deployConfigPath)}" if it is left over from a previous build,
95599
+ or try running this command from the directory containing the configuration you want to use.
95600
+ See https://developers.cloudflare.com/workers/wrangler/configuration/#generated-wrangler-configuration
95590
95601
  `,
95591
95602
  { telemetryMessage: false }
95592
95603
  );
@@ -98629,11 +98640,13 @@ var defaultWranglerConfig = {
98629
98640
  containers: void 0,
98630
98641
  send_email: [],
98631
98642
  browser: void 0,
98643
+ analytics: void 0,
98632
98644
  unsafe: {},
98633
98645
  mtls_certificates: [],
98634
98646
  tail_consumers: void 0,
98635
98647
  streaming_tail_consumers: void 0,
98636
98648
  pipelines: [],
98649
+ k2: [],
98637
98650
  vpc_services: [],
98638
98651
  vpc_networks: []
98639
98652
  };
@@ -99074,6 +99087,7 @@ var friendlyBindingNames = {
99074
99087
  analytics_engine_datasets: "Analytics Engine Dataset",
99075
99088
  text_blobs: "Text Blob",
99076
99089
  browser: "Browser Run",
99090
+ analytics: "Analytics SQL",
99077
99091
  ai: "AI",
99078
99092
  images: "Images",
99079
99093
  stream: "Stream",
@@ -99086,6 +99100,7 @@ var friendlyBindingNames = {
99086
99100
  mtls_certificates: "mTLS Certificate",
99087
99101
  workflows: "Workflow",
99088
99102
  pipelines: "Pipeline",
99103
+ k2: "K2 Stream",
99089
99104
  secrets_store_secrets: "Secrets Store Secret",
99090
99105
  artifacts: "Artifacts",
99091
99106
  ratelimits: "Rate Limit",
@@ -99106,6 +99121,7 @@ var bindingTypeFriendlyNames = {
99106
99121
  wasm_module: "Wasm Module",
99107
99122
  text_blob: "Text Blob",
99108
99123
  browser: "Browser Run",
99124
+ analytics: "Analytics SQL",
99109
99125
  ai: "AI",
99110
99126
  images: "Images",
99111
99127
  stream: "Stream",
@@ -99127,6 +99143,7 @@ var bindingTypeFriendlyNames = {
99127
99143
  dispatch_namespace: "Dispatch Namespace",
99128
99144
  mtls_certificate: "mTLS Certificate",
99129
99145
  pipeline: "Pipeline",
99146
+ k2: "K2 Stream",
99130
99147
  secrets_store_secret: "Secrets Store Secret",
99131
99148
  artifacts: "Artifacts",
99132
99149
  logfwdr: "logfwdr",
@@ -100494,6 +100511,16 @@ function normalizeAndValidateEnvironment(diagnostics, configPath, rawEnv, isDisp
100494
100511
  validateNamedSimpleBinding(envName),
100495
100512
  void 0
100496
100513
  ),
100514
+ analytics: notInheritable(
100515
+ diagnostics,
100516
+ topLevelEnv,
100517
+ rawConfig,
100518
+ rawEnv,
100519
+ envName,
100520
+ "analytics",
100521
+ validateNamedSimpleBinding(envName),
100522
+ void 0
100523
+ ),
100497
100524
  ai: notInheritable(
100498
100525
  diagnostics,
100499
100526
  topLevelEnv,
@@ -100544,6 +100571,16 @@ function normalizeAndValidateEnvironment(diagnostics, configPath, rawEnv, isDisp
100544
100571
  validateBindingArray(envName, validatePipelineBinding),
100545
100572
  []
100546
100573
  ),
100574
+ k2: notInheritable(
100575
+ diagnostics,
100576
+ topLevelEnv,
100577
+ rawConfig,
100578
+ rawEnv,
100579
+ envName,
100580
+ "k2",
100581
+ validateBindingArray(envName, validateK2Binding),
100582
+ []
100583
+ ),
100547
100584
  secrets_store_secrets: notInheritable(
100548
100585
  diagnostics,
100549
100586
  topLevelEnv,
@@ -101645,6 +101682,13 @@ var validateAssetsConfig = /* @__PURE__ */ __name((diagnostics, field, value) =>
101645
101682
  "string",
101646
101683
  ["single-page-application", "404-page", "none"]
101647
101684
  ) && isValid;
101685
+ isValid = validateOptionalProperty(
101686
+ diagnostics,
101687
+ field,
101688
+ "base_path",
101689
+ value.base_path,
101690
+ "string"
101691
+ ) && isValid;
101648
101692
  if (value.run_worker_first !== void 0) {
101649
101693
  if (typeof value.run_worker_first === "boolean") {
101650
101694
  isValid = validateOptionalProperty(
@@ -101675,6 +101719,7 @@ var validateAssetsConfig = /* @__PURE__ */ __name((diagnostics, field, value) =>
101675
101719
  "binding",
101676
101720
  "html_handling",
101677
101721
  "not_found_handling",
101722
+ "base_path",
101678
101723
  "run_worker_first"
101679
101724
  ]) && isValid;
101680
101725
  return isValid;
@@ -101761,6 +101806,7 @@ var validateUnsafeBinding = /* @__PURE__ */ __name((diagnostics, field, value) =
101761
101806
  "data_blob",
101762
101807
  "text_blob",
101763
101808
  "browser",
101809
+ "analytics",
101764
101810
  "ai",
101765
101811
  "ai_search_namespace",
101766
101812
  "ai_search",
@@ -101773,6 +101819,7 @@ var validateUnsafeBinding = /* @__PURE__ */ __name((diagnostics, field, value) =
101773
101819
  "logfwdr",
101774
101820
  "mtls_certificate",
101775
101821
  "pipeline",
101822
+ "k2",
101776
101823
  "worker_loader",
101777
101824
  "vpc_service",
101778
101825
  "flagship",
@@ -102429,9 +102476,9 @@ function validateContainerApp(envName, topLevelName, configPath, options = {}) {
102429
102476
  constraints.jurisdiction,
102430
102477
  "string"
102431
102478
  );
102432
- if (constraints.jurisdiction && !["eu", "fedramp"].includes(constraints.jurisdiction)) {
102479
+ if (constraints.jurisdiction && !["eu", "fedramp", "us"].includes(constraints.jurisdiction)) {
102433
102480
  diagnostics.errors.push(
102434
- `${field}.constraints.jurisdiction must be one of: "eu", "fedramp"`
102481
+ `${field}.constraints.jurisdiction must be one of: "eu", "fedramp", "us"`
102435
102482
  );
102436
102483
  }
102437
102484
  if (validateOptionalTypedArray(
@@ -103724,6 +103771,38 @@ var validatePipelineBinding = /* @__PURE__ */ __name((diagnostics, field, value)
103724
103771
  ]);
103725
103772
  return isValid;
103726
103773
  }, "validatePipelineBinding");
103774
+ var validateK2Binding = /* @__PURE__ */ __name((diagnostics, field, value) => {
103775
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
103776
+ diagnostics.errors.push(
103777
+ `"${field}" bindings should be objects, but got ${JSON.stringify(value)}`
103778
+ );
103779
+ return false;
103780
+ }
103781
+ let isValid = true;
103782
+ if (!isRequiredProperty(value, "binding", "string")) {
103783
+ diagnostics.errors.push(`"${field}" must have a string "binding" field.`);
103784
+ isValid = false;
103785
+ }
103786
+ if (!isRequiredProperty(value, "stream", "string")) {
103787
+ diagnostics.errors.push(`"${field}" must have a string "stream" field.`);
103788
+ isValid = false;
103789
+ }
103790
+ if (!isRemoteValid(value, field, diagnostics)) {
103791
+ isValid = false;
103792
+ }
103793
+ if ("remote" in value && value.remote === false) {
103794
+ diagnostics.errors.push(
103795
+ `"${field}" does not support \`remote: false\`. K2 bindings always access remote resources; omit "remote" or set \`remote: true\`.`
103796
+ );
103797
+ isValid = false;
103798
+ }
103799
+ validateAdditionalProperties(diagnostics, field, Object.keys(value), [
103800
+ "binding",
103801
+ "stream",
103802
+ "remote"
103803
+ ]);
103804
+ return isValid;
103805
+ }, "validateK2Binding");
103727
103806
  var validateSecretsStoreSecretBinding = /* @__PURE__ */ __name((diagnostics, field, value) => {
103728
103807
  if (typeof value !== "object" || value === null) {
103729
103808
  diagnostics.errors.push(
@@ -104014,11 +104093,13 @@ var validatePreviewsConfig = /* @__PURE__ */ __name((envName, configPath) => (di
104014
104093
  "streaming_tail_consumers",
104015
104094
  "unsafe",
104016
104095
  "browser",
104096
+ "analytics",
104017
104097
  "ai",
104018
104098
  "images",
104019
104099
  "stream",
104020
104100
  "media",
104021
104101
  "pipelines",
104102
+ "k2",
104022
104103
  "secrets_store_secrets",
104023
104104
  "artifacts",
104024
104105
  "unsafe_hello_world",
@@ -104168,6 +104249,14 @@ var validatePreviewsConfig = /* @__PURE__ */ __name((envName, configPath) => (di
104168
104249
  void 0
104169
104250
  ) && isValid;
104170
104251
  }
104252
+ if (previews.analytics !== void 0) {
104253
+ isValid = validateNamedSimpleBinding(envName)(
104254
+ diagnostics,
104255
+ `${field}.analytics`,
104256
+ previews.analytics,
104257
+ void 0
104258
+ ) && isValid;
104259
+ }
104171
104260
  if (previews.ai !== void 0) {
104172
104261
  isValid = validateAIBinding(envName)(
104173
104262
  diagnostics,
@@ -104212,6 +104301,12 @@ var validatePreviewsConfig = /* @__PURE__ */ __name((envName, configPath) => (di
104212
104301
  previews.secrets_store_secrets,
104213
104302
  void 0
104214
104303
  ) && isValid;
104304
+ isValid = validateBindingArray(envName, validateK2Binding)(
104305
+ diagnostics,
104306
+ `${field}.k2`,
104307
+ previews.k2,
104308
+ void 0
104309
+ ) && isValid;
104215
104310
  isValid = validateBindingArray(envName, validateArtifactsBinding)(
104216
104311
  diagnostics,
104217
104312
  `${field}.artifacts`,
@@ -105348,6 +105443,7 @@ var BINDING_LOCAL_SUPPORT = {
105348
105443
  mtls_certificate: "remote",
105349
105444
  dispatch_namespace: "remote",
105350
105445
  // Reach out to the @cloudflare/wrangler team before adding anything here
105446
+ k2: "DO-NOT-USE-this-resource-will-never-have-a-local-simulator",
105351
105447
  ai: "DO-NOT-USE-this-resource-will-never-have-a-local-simulator",
105352
105448
  ai_search: "DO-NOT-USE-this-resource-will-never-have-a-local-simulator",
105353
105449
  ai_search_namespace: "DO-NOT-USE-this-resource-will-never-have-a-local-simulator",
@@ -105355,7 +105451,8 @@ var BINDING_LOCAL_SUPPORT = {
105355
105451
  artifacts: "DO-NOT-USE-this-resource-will-never-have-a-local-simulator",
105356
105452
  vpc_service: "DO-NOT-USE-this-resource-will-never-have-a-local-simulator",
105357
105453
  vpc_network: "DO-NOT-USE-this-resource-will-never-have-a-local-simulator",
105358
- agent_memory: "DO-NOT-USE-this-resource-will-never-have-a-local-simulator"
105454
+ agent_memory: "DO-NOT-USE-this-resource-will-never-have-a-local-simulator",
105455
+ analytics: "DO-NOT-USE-this-resource-will-never-have-a-local-simulator"
105359
105456
  };
105360
105457
  function getBindingLocalSupport(type) {
105361
105458
  if (type in BINDING_LOCAL_SUPPORT) {
@@ -105686,6 +105783,13 @@ function mapWorkerMetadataBindings(bindings) {
105686
105783
  };
105687
105784
  }
105688
105785
  break;
105786
+ case "analytics":
105787
+ {
105788
+ configObj.analytics = {
105789
+ binding: binding.name
105790
+ };
105791
+ }
105792
+ break;
105689
105793
  case "ai":
105690
105794
  {
105691
105795
  configObj.ai = {
@@ -105941,6 +106045,12 @@ function mapWorkerMetadataBindings(bindings) {
105941
106045
  }
105942
106046
  ];
105943
106047
  break;
106048
+ case "k2":
106049
+ configObj.k2 = [
106050
+ ...configObj.k2 ?? [],
106051
+ { binding: binding.name, stream: binding.stream }
106052
+ ];
106053
+ break;
105944
106054
  case "assets":
105945
106055
  configObj.assets = {
105946
106056
  binding: binding.name
@@ -106030,7 +106140,7 @@ function mapWorkerMetadataBindings(bindings) {
106030
106140
  }, {});
106031
106141
  }
106032
106142
  __name(mapWorkerMetadataBindings, "mapWorkerMetadataBindings");
106033
- var DEFAULT_COMPAT_DATE = "2026-09-26";
106143
+ var DEFAULT_COMPAT_DATE = "2026-10-06";
106034
106144
  function constructWranglerConfig(config50) {
106035
106145
  const mappedBindings = mapWorkerMetadataBindings(config50.bindings);
106036
106146
  const durableObjectClassNames = config50.bindings.filter(
@@ -106178,6 +106288,11 @@ function convertConfigToBindings(config50, options) {
106178
106288
  output[binding] = { type: "browser", ...x };
106179
106289
  break;
106180
106290
  }
106291
+ case "analytics": {
106292
+ const { binding, ...x } = info;
106293
+ output[binding] = { type: "analytics", ...x };
106294
+ break;
106295
+ }
106181
106296
  case "durable_objects": {
106182
106297
  for (const { name: name3, ...x } of info.bindings ?? []) {
106183
106298
  output[name3] = { type: "durable_object_namespace", ...x };
@@ -106333,6 +106448,15 @@ function convertConfigToBindings(config50, options) {
106333
106448
  }
106334
106449
  break;
106335
106450
  }
106451
+ case "k2": {
106452
+ if (pages) {
106453
+ break;
106454
+ }
106455
+ for (const { binding, ...x } of info) {
106456
+ output[binding] = { type: "k2", ...x };
106457
+ }
106458
+ break;
106459
+ }
106336
106460
  case "secrets_store_secrets": {
106337
106461
  for (const { binding, ...x } of info) {
106338
106462
  output[binding] = { type: "secrets_store_secret", ...x };
@@ -106490,6 +106614,7 @@ function printBindings(bindings, options) {
106490
106614
  );
106491
106615
  const text_blobs = extractBindingsOfType("text_blob", bindings);
106492
106616
  const browser = extractBindingsOfType("browser", bindings);
106617
+ const analytics = extractBindingsOfType("analytics", bindings);
106493
106618
  const images = extractBindingsOfType("images", bindings);
106494
106619
  const stream = extractBindingsOfType("stream", bindings);
106495
106620
  const ai = extractBindingsOfType("ai", bindings);
@@ -106507,6 +106632,7 @@ function printBindings(bindings, options) {
106507
106632
  );
106508
106633
  const mtls_certificates = extractBindingsOfType("mtls_certificate", bindings);
106509
106634
  const pipelines = extractBindingsOfType("pipeline", bindings);
106635
+ const k2 = extractBindingsOfType("k2", bindings);
106510
106636
  const ratelimits = extractBindingsOfType("ratelimit", bindings);
106511
106637
  const assets = extractBindingsOfType("assets", bindings);
106512
106638
  const unsafe_hello_world = extractBindingsOfType(
@@ -106886,6 +107012,18 @@ function printBindings(bindings, options) {
106886
107012
  }))
106887
107013
  );
106888
107014
  }
107015
+ if (analytics.length > 0) {
107016
+ output.push(
107017
+ ...analytics.map(({ binding, remote }) => ({
107018
+ name: binding,
107019
+ type: getBindingTypeFriendlyName("analytics"),
107020
+ value: void 0,
107021
+ mode: getMode({
107022
+ isSimulatedLocally: (remote === true || remote === void 0) && !context.remoteBindingsDisabled ? false : void 0
107023
+ })
107024
+ }))
107025
+ );
107026
+ }
106889
107027
  if (images.length > 0) {
106890
107028
  output.push(
106891
107029
  ...images.map(({ binding, remote }) => ({
@@ -106948,6 +107086,19 @@ function printBindings(bindings, options) {
106948
107086
  )
106949
107087
  );
106950
107088
  }
107089
+ if (k2.length > 0) {
107090
+ output.push(
107091
+ ...k2.map(({ binding, stream: k2Stream }) => ({
107092
+ name: binding,
107093
+ type: getBindingTypeFriendlyName("k2"),
107094
+ value: k2Stream,
107095
+ mode: getMode({
107096
+ // K2 always writes to the real stream; `remote: false` is rejected during validation.
107097
+ isSimulatedLocally: context.remoteBindingsDisabled ? void 0 : false
107098
+ })
107099
+ }))
107100
+ );
107101
+ }
106951
107102
  if (ratelimits.length > 0) {
106952
107103
  output.push(
106953
107104
  ...ratelimits.map(({ name: name3, simple }) => ({
@@ -108250,13 +108401,16 @@ You can try:
108250
108401
  __name(validateBinary, "validateBinary");
108251
108402
  function redactCloudflaredArgsForLogging(args) {
108252
108403
  const redacted = [...args];
108404
+ const sensitiveArgs = ["--token", "--allowed-mail"];
108253
108405
  for (let i = 0; i < redacted.length; i++) {
108254
108406
  const arg = redacted[i];
108255
- if (arg === "--token" && i + 1 < redacted.length) {
108256
- redacted[i + 1] = "[REDACTED]";
108257
- }
108258
- if (arg.startsWith("--token=")) {
108259
- redacted[i] = "--token=[REDACTED]";
108407
+ for (const sensitiveArg of sensitiveArgs) {
108408
+ if (arg === sensitiveArg && i + 1 < redacted.length) {
108409
+ redacted[i + 1] = "[REDACTED]";
108410
+ }
108411
+ if (arg.startsWith(`${sensitiveArg}=`)) {
108412
+ redacted[i] = `${sensitiveArg}=[REDACTED]`;
108413
+ }
108260
108414
  }
108261
108415
  }
108262
108416
  return redacted;
@@ -108535,6 +108689,27 @@ async function spawnCloudflared(args, options) {
108535
108689
  confirmDownload: options?.confirmDownload,
108536
108690
  logger
108537
108691
  });
108692
+ if (args.some(
108693
+ (arg) => arg === "--allowed-mail" || arg.startsWith("--allowed-mail=")
108694
+ )) {
108695
+ const minimumVersion = "2026.9.2";
108696
+ const installedVersion = getInstalledVersion(binPath);
108697
+ if (!installedVersion || isVersionOutdated(installedVersion, minimumVersion)) {
108698
+ throw new UserError(
108699
+ `[cloudflared] --allowed-mail requires cloudflared ${minimumVersion} or later.
108700
+
108701
+ ` + (installedVersion ? `The selected binary (${binPath}) is version ${installedVersion}.
108702
+
108703
+ ` : `Could not determine the version of the selected binary (${binPath}).
108704
+
108705
+ `) + `Update cloudflared in your PATH or set CLOUDFLARED_PATH to a compatible binary.
108706
+ Download instructions: https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/downloads/`,
108707
+ {
108708
+ telemetryMessage: "tunnel cloudflared allowed mail unsupported version"
108709
+ }
108710
+ );
108711
+ }
108712
+ }
108538
108713
  logger?.debug(
108539
108714
  `Spawning cloudflared: ${binPath} ${redactCloudflaredArgsForLogging(args).join(" ")}`
108540
108715
  );
@@ -108714,10 +108889,25 @@ function startTunnel(options) {
108714
108889
  const reminderIntervalMs = options.reminderIntervalMs ?? DEFAULT_TUNNEL_REMINDER_INTERVAL_MS;
108715
108890
  const defaultExpiryMs = options.expiryMs ?? DEFAULT_TUNNEL_EXPIRY_MS;
108716
108891
  const isNamedTunnel = options.token !== void 0;
108892
+ if (isNamedTunnel && (options.allowedMail?.length ?? 0) > 0) {
108893
+ throw new UserError(
108894
+ "The `allowedMail` option is only supported for Quick Tunnels.",
108895
+ { telemetryMessage: "tunnel allowed mail named tunnel conflict" }
108896
+ );
108897
+ }
108717
108898
  const timeFormatter = new Intl.DateTimeFormat(void 0, {
108718
108899
  timeStyle: "short"
108719
108900
  });
108720
- const cloudflaredArgs = isNamedTunnel ? ["tunnel", "--no-autoupdate", "run"] : ["tunnel", "--no-autoupdate", "--url", options.origin.href];
108901
+ const cloudflaredArgs = isNamedTunnel ? ["tunnel", "--no-autoupdate", "run"] : [
108902
+ "tunnel",
108903
+ "--no-autoupdate",
108904
+ "--url",
108905
+ options.origin.href,
108906
+ ...(options.allowedMail ?? []).flatMap((allowedMail) => [
108907
+ "--allowed-mail",
108908
+ allowedMail
108909
+ ])
108910
+ ];
108721
108911
  const cloudflaredPromise = spawnCloudflared(cloudflaredArgs, {
108722
108912
  stdio: "pipe",
108723
108913
  env: options.token ? { TUNNEL_TOKEN: options.token } : void 0,
@@ -114190,7 +114380,7 @@ var Yargs = YargsFactory(esm_default2);
114190
114380
  var yargs_default = Yargs;
114191
114381
 
114192
114382
  // package.json
114193
- var version2 = "2.73.1";
114383
+ var version2 = "2.73.3";
114194
114384
 
114195
114385
  // src/metrics.ts
114196
114386
  var import_node_async_hooks = require("node:async_hooks");
@@ -116888,13 +117078,13 @@ __name2(getPropertyName, "getPropertyName");
116888
117078
  var package_default = {
116889
117079
  name: "frameworks_clis_info",
116890
117080
  dependencies: {
116891
- "@angular/create": "22.2.0",
116892
- "@tanstack/cli": "0.71.0",
116893
- "create-analog": "2.7.5",
117081
+ "@angular/create": "22.2.1",
117082
+ "@tanstack/cli": "0.71.1",
117083
+ "create-analog": "2.8.0",
116894
117084
  "create-astro": "5.2.4",
116895
117085
  "create-docusaurus": "3.10.2",
116896
117086
  "create-hono": "0.19.5",
116897
- "create-next-app": "16.3.6",
117087
+ "create-next-app": "16.3.8",
116898
117088
  "create-qwik": "1.20.1",
116899
117089
  "create-react-router": "8.4.0",
116900
117090
  "create-rwsdk": "3.1.3",
@@ -116906,7 +117096,7 @@ var package_default = {
116906
117096
  "create-waku": "0.12.5-1.0.0-alpha.10-0",
116907
117097
  gatsby: "5.16.1",
116908
117098
  nuxi: "3.37.0",
116909
- sv: "0.17.1"
117099
+ sv: "1.0.1"
116910
117100
  },
116911
117101
  info: [
116912
117102
  "This package.json is only used to keep track of the frameworks cli dependencies",
@@ -119103,7 +119293,7 @@ var updateTypeDefinitions = (ctx) => {
119103
119293
  }
119104
119294
  });
119105
119295
  };
119106
- var typesPath2 = "src/worker-configuration.d.ts";
119296
+ var typesPath2 = "./src/worker-configuration.d.ts";
119107
119297
  var config39 = {
119108
119298
  configVersion: 1,
119109
119299
  id: "svelte",
@@ -119601,7 +119791,7 @@ If the application uses Durable Objects or Workflows, refer to the relevant best
119601
119791
  var import_node_assert7 = __toESM(require("node:assert"));
119602
119792
 
119603
119793
  // ../wrangler/package.json
119604
- var version3 = "4.143.1";
119794
+ var version3 = "4.148.0";
119605
119795
 
119606
119796
  // src/git.ts
119607
119797
  var offerGit = async (ctx) => {
@@ -123303,6 +123493,9 @@ async function updateTsConfig(ctx, { usesNodeCompat }) {
123303
123493
  }
123304
123494
  const currentTypes = config50.compilerOptions?.types ?? [];
123305
123495
  let newTypes = new Set(currentTypes);
123496
+ if (config50.extends === "$app/tsconfig") {
123497
+ newTypes.add("$app/types");
123498
+ }
123306
123499
  if (ctx.template.workersTypes === "installed") {
123307
123500
  const entrypointVersion = getLatestTypesEntrypoint(ctx);
123308
123501
  const explicitEntrypoint = currentTypes.some(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-cloudflare",
3
- "version": "2.73.1",
3
+ "version": "2.73.3",
4
4
  "description": "A CLI for creating and deploying new applications to Cloudflare.",
5
5
  "keywords": [
6
6
  "cloudflare",
@@ -31,7 +31,7 @@
31
31
  "@babel/parser": "^7.21.3",
32
32
  "@babel/types": "^7.21.4",
33
33
  "@clack/prompts": "^1.2.0",
34
- "@cloudflare/workers-types": "^5.20260926.1",
34
+ "@cloudflare/workers-types": "^5.20261006.1",
35
35
  "@types/command-exists": "^1.2.0",
36
36
  "@types/cross-spawn": "^6.0.2",
37
37
  "@types/deepmerge": "^2.2.0",
@@ -70,13 +70,13 @@
70
70
  "which-pm-runs": "^1.1.0",
71
71
  "wrap-ansi": "^9.0.0",
72
72
  "yargs": "^17.7.2",
73
- "@cloudflare/cli-shared-helpers": "0.2.0",
74
- "@cloudflare/shared-ast-primitives": "1.1.0",
73
+ "@cloudflare/cli-shared-helpers": "0.2.4",
75
74
  "@cloudflare/mock-npm-registry": "0.0.0",
75
+ "@cloudflare/shared-ast-primitives": "1.1.0",
76
+ "@cloudflare/vite-plugin": "1.63.0",
76
77
  "@cloudflare/workers-tsconfig": "0.0.0",
77
- "@cloudflare/vite-plugin": "1.62.1",
78
- "@cloudflare/workers-utils": "0.44.0",
79
- "wrangler": "4.143.1"
78
+ "@cloudflare/workers-utils": "0.47.0",
79
+ "wrangler": "4.148.0"
80
80
  },
81
81
  "engines": {
82
82
  "node": ">=22.0.0"
@@ -126,7 +126,7 @@ const updateTypeDefinitions = (ctx: C3Context) => {
126
126
  });
127
127
  };
128
128
 
129
- const typesPath = "src/worker-configuration.d.ts";
129
+ const typesPath = "./src/worker-configuration.d.ts";
130
130
  const config: TemplateConfig = {
131
131
  configVersion: 1,
132
132
  id: "svelte",