wrangler 4.78.0 → 4.80.0

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.
@@ -1264,6 +1264,59 @@
1264
1264
  "description": "Specifies VPC services that are bound to this Worker environment.\n\nNOTE: This field is not automatically inherited from the top level environment, and so must be specified in every named environment.",
1265
1265
  "default": []
1266
1266
  },
1267
+ "vpc_networks": {
1268
+ "type": "array",
1269
+ "items": {
1270
+ "anyOf": [
1271
+ {
1272
+ "type": "object",
1273
+ "properties": {
1274
+ "binding": {
1275
+ "type": "string",
1276
+ "description": "The binding name used to refer to the VPC network in the Worker."
1277
+ },
1278
+ "tunnel_id": {
1279
+ "type": "string",
1280
+ "description": "The tunnel ID of the Cloudflare Tunnel to route traffic through. Mutually exclusive with network_id."
1281
+ },
1282
+ "remote": {
1283
+ "type": "boolean",
1284
+ "description": "Whether the VPC network is remote or not"
1285
+ }
1286
+ },
1287
+ "required": [
1288
+ "binding",
1289
+ "tunnel_id"
1290
+ ],
1291
+ "additionalProperties": false
1292
+ },
1293
+ {
1294
+ "type": "object",
1295
+ "properties": {
1296
+ "binding": {
1297
+ "type": "string",
1298
+ "description": "The binding name used to refer to the VPC network in the Worker."
1299
+ },
1300
+ "network_id": {
1301
+ "type": "string",
1302
+ "description": "The network ID to route traffic through. Mutually exclusive with tunnel_id."
1303
+ },
1304
+ "remote": {
1305
+ "type": "boolean",
1306
+ "description": "Whether the VPC network is remote or not"
1307
+ }
1308
+ },
1309
+ "required": [
1310
+ "binding",
1311
+ "network_id"
1312
+ ],
1313
+ "additionalProperties": false
1314
+ }
1315
+ ]
1316
+ },
1317
+ "description": "Specifies VPC networks that are bound to this Worker environment.\n\nNOTE: This field is not automatically inherited from the top level environment, and so must be specified in every named environment.",
1318
+ "default": []
1319
+ },
1267
1320
  "pages_build_output_dir": {
1268
1321
  "type": "string",
1269
1322
  "description": "The directory of static assets to serve.\n\nThe presence of this field in a Wrangler configuration file indicates a Pages project, and will prompt the handling of the configuration file according to the Pages-specific validation rules."
@@ -2599,6 +2652,59 @@
2599
2652
  },
2600
2653
  "description": "Specifies VPC services that are bound to this Worker environment.\n\nNOTE: This field is not automatically inherited from the top level environment, and so must be specified in every named environment.",
2601
2654
  "default": []
2655
+ },
2656
+ "vpc_networks": {
2657
+ "type": "array",
2658
+ "items": {
2659
+ "anyOf": [
2660
+ {
2661
+ "type": "object",
2662
+ "properties": {
2663
+ "binding": {
2664
+ "type": "string",
2665
+ "description": "The binding name used to refer to the VPC network in the Worker."
2666
+ },
2667
+ "tunnel_id": {
2668
+ "type": "string",
2669
+ "description": "The tunnel ID of the Cloudflare Tunnel to route traffic through. Mutually exclusive with network_id."
2670
+ },
2671
+ "remote": {
2672
+ "type": "boolean",
2673
+ "description": "Whether the VPC network is remote or not"
2674
+ }
2675
+ },
2676
+ "required": [
2677
+ "binding",
2678
+ "tunnel_id"
2679
+ ],
2680
+ "additionalProperties": false
2681
+ },
2682
+ {
2683
+ "type": "object",
2684
+ "properties": {
2685
+ "binding": {
2686
+ "type": "string",
2687
+ "description": "The binding name used to refer to the VPC network in the Worker."
2688
+ },
2689
+ "network_id": {
2690
+ "type": "string",
2691
+ "description": "The network ID to route traffic through. Mutually exclusive with tunnel_id."
2692
+ },
2693
+ "remote": {
2694
+ "type": "boolean",
2695
+ "description": "Whether the VPC network is remote or not"
2696
+ }
2697
+ },
2698
+ "required": [
2699
+ "binding",
2700
+ "network_id"
2701
+ ],
2702
+ "additionalProperties": false
2703
+ }
2704
+ ]
2705
+ },
2706
+ "description": "Specifies VPC networks that are bound to this Worker environment.\n\nNOTE: This field is not automatically inherited from the top level environment, and so must be specified in every named environment.",
2707
+ "default": []
2602
2708
  }
2603
2709
  },
2604
2710
  "additionalProperties": false,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wrangler",
3
- "version": "4.78.0",
3
+ "version": "4.80.0",
4
4
  "description": "Command-line interface for all things Cloudflare Workers",
5
5
  "keywords": [
6
6
  "assembly",
@@ -54,23 +54,22 @@
54
54
  "esbuild": "0.27.3",
55
55
  "path-to-regexp": "6.3.0",
56
56
  "unenv": "2.0.0-rc.24",
57
- "workerd": "1.20260317.1",
57
+ "workerd": "1.20260401.1",
58
58
  "@cloudflare/kv-asset-handler": "0.4.2",
59
59
  "@cloudflare/unenv-preset": "2.16.0",
60
- "miniflare": "4.20260317.3"
60
+ "miniflare": "4.20260401.0"
61
61
  },
62
62
  "devDependencies": {
63
63
  "@aws-sdk/client-s3": "^3.721.0",
64
64
  "@bomb.sh/tab": "^0.0.12",
65
65
  "@cloudflare/types": "6.18.4",
66
- "@cloudflare/workers-types": "^4.20260317.1",
66
+ "@cloudflare/workers-types": "^4.20260401.1",
67
67
  "@cspotcode/source-map-support": "0.8.1",
68
68
  "@netlify/build-info": "^10.2.0",
69
69
  "@sentry/node": "^7.86.0",
70
70
  "@sentry/types": "^7.86.0",
71
71
  "@sentry/utils": "^7.86.0",
72
72
  "@types/command-exists": "^1.2.0",
73
- "@types/cross-spawn": "^6.0.2",
74
73
  "@types/esprima": "^4.0.3",
75
74
  "@types/glob-to-regexp": "^0.4.1",
76
75
  "@types/javascript-time-ago": "^2.0.3",
@@ -98,7 +97,6 @@
98
97
  "cmd-shim": "^4.1.0",
99
98
  "command-exists": "^1.2.9",
100
99
  "concurrently": "^8.2.2",
101
- "cross-spawn": "^7.0.3",
102
100
  "date-fns": "^4.1.0",
103
101
  "devtools-protocol": "^0.0.1182435",
104
102
  "dotenv": "^16.3.1",
@@ -146,16 +144,17 @@
146
144
  "xxhash-wasm": "^1.0.1",
147
145
  "yaml": "^2.8.1",
148
146
  "yargs": "^17.7.2",
147
+ "@cloudflare/cli": "1.4.0",
148
+ "@cloudflare/codemod": "1.1.0",
149
149
  "@cloudflare/containers-shared": "0.13.1",
150
- "@cloudflare/cli": "1.2.1",
150
+ "@cloudflare/pages-shared": "^0.13.121",
151
151
  "@cloudflare/workers-shared": "0.19.1",
152
- "@cloudflare/pages-shared": "^0.13.119",
153
152
  "@cloudflare/workers-tsconfig": "0.0.0",
154
- "@cloudflare/workflows-shared": "0.7.1",
155
- "@cloudflare/workers-utils": "0.14.0"
153
+ "@cloudflare/workers-utils": "0.15.0",
154
+ "@cloudflare/workflows-shared": "0.7.2"
156
155
  },
157
156
  "peerDependencies": {
158
- "@cloudflare/workers-types": "^4.20260317.1"
157
+ "@cloudflare/workers-types": "^4.20260401.1"
159
158
  },
160
159
  "peerDependenciesMeta": {
161
160
  "@cloudflare/workers-types": {
@@ -108,7 +108,7 @@ export default {
108
108
  async fetch(request, env) {
109
109
  try {
110
110
  if (isJSRPCBinding(request)) {
111
- return newWorkersRpcResponse(
111
+ return await newWorkersRpcResponse(
112
112
  request,
113
113
  getExposedJSRPCBinding(request, env)
114
114
  );
@@ -125,7 +125,7 @@ export default {
125
125
  }
126
126
  }
127
127
 
128
- return fetcher.fetch(
128
+ return await fetcher.fetch(
129
129
  request.headers.get("MF-URL") ?? "http://example.com",
130
130
  new Request(request, {
131
131
  redirect: "manual",
@@ -3279,7 +3279,7 @@ var ProxyServerWorker_default = {
3279
3279
  async fetch(request, env) {
3280
3280
  try {
3281
3281
  if (isJSRPCBinding(request)) {
3282
- return newWorkersRpcResponse(
3282
+ return await newWorkersRpcResponse(
3283
3283
  request,
3284
3284
  getExposedJSRPCBinding(request, env)
3285
3285
  );
@@ -3293,7 +3293,7 @@ var ProxyServerWorker_default = {
3293
3293
  originalHeaders.set(name, value);
3294
3294
  }
3295
3295
  }
3296
- return fetcher.fetch(
3296
+ return await fetcher.fetch(
3297
3297
  request.headers.get("MF-URL") ?? "http://example.com",
3298
3298
  new Request(request, {
3299
3299
  redirect: "manual",
@@ -193,13 +193,13 @@ declare function deploy({ directory, accountId, projectName, branch, skipCaching
193
193
  };
194
194
  };
195
195
  latest_stage: {
196
- status: "canceled" | "active" | "success" | "idle" | "failure" | "skipped";
196
+ status: "skipped" | "canceled" | "active" | "success" | "idle" | "failure";
197
197
  name: "build" | "queued" | "deploy" | "initialize" | "clone_repo";
198
198
  started_on: string | null;
199
199
  ended_on: string | null;
200
200
  };
201
201
  stages: {
202
- status: "canceled" | "active" | "success" | "idle" | "failure" | "skipped";
202
+ status: "skipped" | "canceled" | "active" | "success" | "idle" | "failure";
203
203
  name: "build" | "queued" | "deploy" | "initialize" | "clone_repo";
204
204
  started_on: string | null;
205
205
  ended_on: string | null;
@@ -2064,6 +2064,30 @@ interface EnvironmentNonInheritable {
2064
2064
  /** Whether the VPC service is remote or not */
2065
2065
  remote?: boolean;
2066
2066
  }[];
2067
+ /**
2068
+ * Specifies VPC networks that are bound to this Worker environment.
2069
+ *
2070
+ * NOTE: This field is not automatically inherited from the top level environment,
2071
+ * and so must be specified in every named environment.
2072
+ *
2073
+ * @default []
2074
+ * @nonInheritable
2075
+ */
2076
+ vpc_networks: ({
2077
+ /** The binding name used to refer to the VPC network in the Worker. */
2078
+ binding: string;
2079
+ /** The tunnel ID of the Cloudflare Tunnel to route traffic through. Mutually exclusive with network_id. */
2080
+ tunnel_id: string;
2081
+ /** Whether the VPC network is remote or not */
2082
+ remote?: boolean;
2083
+ } | {
2084
+ /** The binding name used to refer to the VPC network in the Worker. */
2085
+ binding: string;
2086
+ /** The network ID to route traffic through. Mutually exclusive with tunnel_id. */
2087
+ network_id: string;
2088
+ /** Whether the VPC network is remote or not */
2089
+ remote?: boolean;
2090
+ })[];
2067
2091
  }
2068
2092
  /**
2069
2093
  * The raw environment configuration that we read from the config file.
@@ -2485,8 +2509,45 @@ type FrameworkInfo = {
2485
2509
  id: string;
2486
2510
  name: string;
2487
2511
  class: typeof Framework;
2512
+ } & ({
2513
+ supported: false;
2514
+ } | {
2515
+ supported: true;
2516
+ frameworkPackageInfo: AutoConfigFrameworkPackageInfo;
2517
+ });
2518
+ /**
2519
+ * AutoConfig information for a package that defines a framework.
2520
+ */
2521
+ type AutoConfigFrameworkPackageInfo = {
2522
+ /** The package name (e.g. "astro" for the Astro framework and "@solidjs/start" for the SolidStart framework) */
2523
+ name: string;
2524
+ /** The minimum version (if any) of the package/framework that autoconfig supports */
2525
+ minimumVersion: string;
2526
+ /** The latest major version of the package/framework that autoconfig supports */
2527
+ maximumKnownMajorVersion: string;
2488
2528
  };
2489
2529
 
2530
+ declare abstract class Framework {
2531
+ #private;
2532
+ readonly id: FrameworkInfo["id"];
2533
+ readonly name: FrameworkInfo["name"];
2534
+ get frameworkVersion(): string;
2535
+ constructor(frameworkInfo: Pick<FrameworkInfo, "id" | "name">);
2536
+ isConfigured(_projectPath: string): boolean;
2537
+ abstract configure(options: ConfigurationOptions): Promise<ConfigurationResults> | ConfigurationResults;
2538
+ configurationDescription?: string;
2539
+ /**
2540
+ * Validates the installed framework version against the supported range and
2541
+ * stores it for later access via the `frameworkVersion` getter.
2542
+ * Warns via `logger` if the version exceeds `maximumKnownMajorVersion`.
2543
+ *
2544
+ * @param projectPath - Path to the project root used to resolve the installed version.
2545
+ * @param frameworkPackageInfo - Package metadata including name and version bounds.
2546
+ * @throws {AssertionError} If the installed version cannot be determined.
2547
+ * @throws {AutoConfigFrameworkConfigurationError} If the version is below `minimumVersion`.
2548
+ */
2549
+ validateFrameworkVersion(projectPath: string, frameworkPackageInfo: AutoConfigFrameworkPackageInfo): void;
2550
+ }
2490
2551
  type ConfigurationOptions = {
2491
2552
  outputDir: string;
2492
2553
  projectPath: string;
@@ -2508,15 +2569,6 @@ type ConfigurationResults = {
2508
2569
  deployCommandOverride?: string;
2509
2570
  versionCommandOverride?: string;
2510
2571
  };
2511
- declare abstract class Framework {
2512
- readonly id: string;
2513
- readonly name: string;
2514
- constructor(frameworkInfo: Pick<FrameworkInfo, "id" | "name">);
2515
- isConfigured(_projectPath: string): boolean;
2516
- abstract configure(options: ConfigurationOptions): Promise<ConfigurationResults> | ConfigurationResults;
2517
- configurationDescription?: string;
2518
- autoConfigSupported: boolean;
2519
- }
2520
2572
 
2521
2573
  type AutoConfigDetailsBase = {
2522
2574
  /** The name of the worker */
@@ -2597,9 +2649,7 @@ declare function getDetailsForAutoConfig({ projectPath, wranglerConfig, }?: {
2597
2649
  }): Promise<AutoConfigDetails>;
2598
2650
 
2599
2651
  /**
2600
- * @deprecated use `getLocalWorkerdCompatibilityDate` from "@cloudflare/workers-utils" instead.
2601
- *
2602
- * We're keeping this function only not to break the vite plugin that relies on it, we should remove it as soon as possible.
2652
+ * @deprecated Use today's date as the compatibility date instead.
2603
2653
  */
2604
2654
  declare function unstable_getDevCompatibilityDate(): `${number}${number}${number}${number}-${number}${number}-${number}${number}`;
2605
2655
 
@@ -2872,6 +2922,7 @@ type Teams =
2872
2922
  | "Product: D1"
2873
2923
  | "Product: Queues"
2874
2924
  | "Product: AI"
2925
+ | "Product: AI Search"
2875
2926
  | "Product: Hyperdrive"
2876
2927
  | "Product: Pipelines"
2877
2928
  | "Product: Vectorize"