@vercel/next 12.0.1 → 12.0.2

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.
@@ -10626,6 +10626,45 @@ function denormalizeNextDataRoutes(config, buildId, shouldHandleMiddlewareDataRe
10626
10626
  // src/server-actions.ts
10627
10627
  var import_promises2 = __toESM(require("node:fs/promises"));
10628
10628
  var import_node_path2 = __toESM(require("node:path"));
10629
+ var TRANSFORM_ARGS_CHARSET = /^[a-zA-Z0-9_ :;.,"'?!(){}[\]@<>=+*#$&`|~^%/-]+$/;
10630
+ function sanitizeTransformArgs(value) {
10631
+ let sanitized = "";
10632
+ for (const char of value) {
10633
+ sanitized += char === "%" || !TRANSFORM_ARGS_CHARSET.test(char) ? encodeURIComponent(char) : char;
10634
+ }
10635
+ return sanitized;
10636
+ }
10637
+ var MAX_CDN_ROUTES = 2048;
10638
+ function isServerActionMetaRoute(route) {
10639
+ return Boolean(
10640
+ "transforms" in route && route.transforms?.some(
10641
+ (transform) => transform.target.key === "x-server-action-name"
10642
+ )
10643
+ );
10644
+ }
10645
+ function trimServerActionMetaRoutesToFit(routes, maxRoutes = MAX_CDN_ROUTES) {
10646
+ if (routes.length <= maxRoutes) {
10647
+ return routes;
10648
+ }
10649
+ const overflow = routes.length - maxRoutes;
10650
+ let dropped = 0;
10651
+ const trimmed = routes.filter((route) => {
10652
+ if (dropped >= overflow) {
10653
+ return true;
10654
+ }
10655
+ if (isServerActionMetaRoute(route)) {
10656
+ dropped += 1;
10657
+ return false;
10658
+ }
10659
+ return true;
10660
+ });
10661
+ if (dropped > 0) {
10662
+ console.warn(
10663
+ `Dropped ${dropped} server action meta route(s) to stay under the ${maxRoutes} CDN route limit`
10664
+ );
10665
+ }
10666
+ return trimmed;
10667
+ }
10629
10668
  async function getServerActionMetaRoutes(distDir) {
10630
10669
  const manifestPath = import_node_path2.default.join(
10631
10670
  distDir,
@@ -10660,6 +10699,10 @@ async function getServerActionMetaRoutes(distDir) {
10660
10699
  if (seenIds.has(id)) continue;
10661
10700
  seenIds.add(id);
10662
10701
  const exportedName = entry.exportedName.startsWith("$$RSC_SERVER_ACTION_") ? "anonymous_fn" : entry.exportedName;
10702
+ const args = sanitizeTransformArgs(`${entry.filename}#${exportedName}`);
10703
+ if (!args || !TRANSFORM_ARGS_CHARSET.test(args)) {
10704
+ continue;
10705
+ }
10663
10706
  routes.push({
10664
10707
  src: "/(.*)",
10665
10708
  has: [
@@ -10676,7 +10719,7 @@ async function getServerActionMetaRoutes(distDir) {
10676
10719
  target: {
10677
10720
  key: "x-server-action-name"
10678
10721
  },
10679
- args: `${entry.filename}#${exportedName}`
10722
+ args
10680
10723
  }
10681
10724
  ]
10682
10725
  });
@@ -11484,6 +11527,7 @@ var myAdapter = {
11484
11527
  }
11485
11528
  ]
11486
11529
  ];
11530
+ vercelConfig2.routes = trimServerActionMetaRoutesToFit(vercelConfig2.routes);
11487
11531
  const outputConfigPath = import_node_path3.default.join(vercelOutputDir, "config.json");
11488
11532
  await import_promises3.default.writeFile(outputConfigPath, JSON.stringify(vercelConfig2, null, 2));
11489
11533
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vercel/next",
3
- "version": "12.0.1",
3
+ "version": "12.0.2",
4
4
  "license": "Apache-2.0",
5
5
  "main": "./dist/index",
6
6
  "homepage": "https://vercel.com/docs/runtimes#official-runtimes/next-js",
@@ -19,7 +19,7 @@
19
19
  "@vercel/build-utils": "14.10.1"
20
20
  },
21
21
  "devDependencies": {
22
- "@next-community/adapter-vercel": "0.0.1-beta.31",
22
+ "@next-community/adapter-vercel": "0.0.1-beta.32",
23
23
  "@types/aws-lambda": "8.10.19",
24
24
  "@types/buffer-crc32": "0.2.0",
25
25
  "@types/bytes": "3.1.1",