vinext 1.0.0 → 1.1.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.
Files changed (263) hide show
  1. package/README.md +72 -1
  2. package/THIRD_PARTY_LICENSES.md +26 -0
  3. package/dist/build/app-page-static-eligibility.d.ts +15 -0
  4. package/dist/build/app-page-static-eligibility.js +82 -0
  5. package/dist/build/lifecycle.js +10 -10
  6. package/dist/build/pages-client-assets-module.js +6 -1
  7. package/dist/build/precompress.js +1 -1
  8. package/dist/build/prerender-paths.js +6 -85
  9. package/dist/build/prerender.d.ts +8 -1
  10. package/dist/build/prerender.js +167 -46
  11. package/dist/build/run-prerender.js +4 -3
  12. package/dist/build/server-entry.d.ts +2 -0
  13. package/dist/build/server-entry.js +7 -1
  14. package/dist/build/server-manifest.d.ts +7 -0
  15. package/dist/build/server-manifest.js +11 -1
  16. package/dist/cache/cache-adapters-virtual.d.ts +7 -1
  17. package/dist/cache/cache-adapters-virtual.js +3 -3
  18. package/dist/client/browser-globals.d.ts +4 -0
  19. package/dist/client/browser-globals.js +5 -0
  20. package/dist/client/navigation-runtime.d.ts +11 -1
  21. package/dist/client/navigation-runtime.js +3 -3
  22. package/dist/config/config-matchers.js +3 -1
  23. package/dist/config/dotenv.js +14 -3
  24. package/dist/config/next-config.d.ts +7 -0
  25. package/dist/config/next-config.js +18 -3
  26. package/dist/entries/app-rsc-entry.d.ts +2 -0
  27. package/dist/entries/app-rsc-entry.js +67 -45
  28. package/dist/index.d.ts +4 -1
  29. package/dist/index.js +200 -100
  30. package/dist/init-cloudflare.d.ts +1 -1
  31. package/dist/init-cloudflare.js +6 -6
  32. package/dist/init-platform.js +1 -1
  33. package/dist/init.js +4 -2
  34. package/dist/plugins/cache-flight-codec.d.ts +19 -0
  35. package/dist/plugins/cache-flight-codec.js +68 -0
  36. package/dist/plugins/commonjs-esm-facade.d.ts +35 -0
  37. package/dist/plugins/commonjs-esm-facade.js +80 -0
  38. package/dist/plugins/commonjs-syntax.d.ts +16 -0
  39. package/dist/plugins/commonjs-syntax.js +22 -0
  40. package/dist/plugins/fonts.d.ts +8 -11
  41. package/dist/plugins/fonts.js +71 -34
  42. package/dist/plugins/ignore-dynamic-requests.d.ts +11 -0
  43. package/dist/plugins/ignore-dynamic-requests.js +54 -3
  44. package/dist/plugins/import-meta-url.js +6 -6
  45. package/dist/plugins/og-asset-ownership.d.ts +2 -0
  46. package/dist/plugins/og-asset-ownership.js +24 -13
  47. package/dist/plugins/og-assets.d.ts +18 -0
  48. package/dist/plugins/og-assets.js +50 -8
  49. package/dist/plugins/og-harfbuzz.js +38 -27
  50. package/dist/plugins/optimize-imports.js +2 -1
  51. package/dist/plugins/require-context.d.ts +1 -0
  52. package/dist/plugins/require-context.js +28 -1
  53. package/dist/plugins/scan-build-css.d.ts +12 -0
  54. package/dist/plugins/scan-build-css.js +39 -0
  55. package/dist/plugins/strip-server-exports.d.ts +2 -0
  56. package/dist/plugins/strip-server-exports.js +3 -1
  57. package/dist/plugins/transform-result.d.ts +18 -0
  58. package/dist/plugins/transform-result.js +23 -2
  59. package/dist/plugins/typeof-window.d.ts +10 -0
  60. package/dist/plugins/typeof-window.js +33 -9
  61. package/dist/routing/app-route-graph.d.ts +0 -1
  62. package/dist/routing/app-route-graph.js +2 -4
  63. package/dist/routing/app-route-ids.d.ts +3 -0
  64. package/dist/routing/app-route-ids.js +6 -0
  65. package/dist/routing/file-matcher.d.ts +1 -0
  66. package/dist/routing/file-matcher.js +1 -1
  67. package/dist/server/api-handler.js +17 -7
  68. package/dist/server/app-bfcache-id.d.ts +1 -0
  69. package/dist/server/app-bfcache-id.js +7 -1
  70. package/dist/server/app-bfcache-identity.js +1 -2
  71. package/dist/server/app-browser-entry.js +15 -9
  72. package/dist/server/app-browser-history-controller.d.ts +2 -0
  73. package/dist/server/app-browser-history-controller.js +8 -0
  74. package/dist/server/app-browser-hydration.d.ts +1 -1
  75. package/dist/server/app-browser-hydration.js +2 -2
  76. package/dist/server/app-browser-interception-context.js +26 -2
  77. package/dist/server/app-browser-navigation-controller.d.ts +7 -1
  78. package/dist/server/app-browser-navigation-controller.js +94 -11
  79. package/dist/server/app-browser-state.js +1 -1
  80. package/dist/server/app-browser-stream.d.ts +1 -1
  81. package/dist/server/app-fallback-renderer.d.ts +2 -0
  82. package/dist/server/app-fallback-renderer.js +1 -0
  83. package/dist/server/app-history-state.d.ts +3 -1
  84. package/dist/server/app-history-state.js +9 -5
  85. package/dist/server/app-middleware.js +2 -1
  86. package/dist/server/app-optimistic-routing.js +1 -1
  87. package/dist/server/app-page-boundary-render.d.ts +5 -0
  88. package/dist/server/app-page-boundary-render.js +6 -4
  89. package/dist/server/app-page-cache-finalizer.d.ts +11 -0
  90. package/dist/server/app-page-cache-finalizer.js +41 -7
  91. package/dist/server/app-page-cache-render.d.ts +18 -0
  92. package/dist/server/app-page-cache-render.js +65 -44
  93. package/dist/server/app-page-cache.d.ts +5 -0
  94. package/dist/server/app-page-cache.js +27 -7
  95. package/dist/server/app-page-dispatch.d.ts +9 -1
  96. package/dist/server/app-page-dispatch.js +47 -30
  97. package/dist/server/app-page-element-builder.d.ts +7 -0
  98. package/dist/server/app-page-element-builder.js +27 -42
  99. package/dist/server/app-page-execution.d.ts +15 -12
  100. package/dist/server/app-page-execution.js +30 -40
  101. package/dist/server/app-page-head.d.ts +5 -0
  102. package/dist/server/app-page-head.js +9 -3
  103. package/dist/server/app-page-probe.d.ts +0 -109
  104. package/dist/server/app-page-probe.js +3 -136
  105. package/dist/server/app-page-render-identity.d.ts +0 -1
  106. package/dist/server/app-page-render-identity.js +1 -1
  107. package/dist/server/app-page-render-observation.js +2 -2
  108. package/dist/server/app-page-render.d.ts +13 -5
  109. package/dist/server/app-page-render.js +219 -118
  110. package/dist/server/app-page-request.d.ts +0 -1
  111. package/dist/server/app-page-request.js +1 -2
  112. package/dist/server/app-page-response.d.ts +4 -3
  113. package/dist/server/app-page-response.js +4 -3
  114. package/dist/server/app-page-route-wiring.d.ts +17 -5
  115. package/dist/server/app-page-route-wiring.js +55 -33
  116. package/dist/server/app-page-rsc-render-status.d.ts +48 -0
  117. package/dist/server/app-page-rsc-render-status.js +54 -0
  118. package/dist/server/app-page-search-params-observation.js +1 -1
  119. package/dist/server/app-page-stream.d.ts +15 -8
  120. package/dist/server/app-page-stream.js +7 -1
  121. package/dist/server/app-page-tracing.js +2 -1
  122. package/dist/server/app-pages-bridge.js +3 -2
  123. package/dist/server/app-render-abort-error.d.ts +3 -0
  124. package/dist/server/app-render-abort-error.js +8 -0
  125. package/dist/server/app-request-stage-dispatch.js +1 -1
  126. package/dist/server/app-request-stage-independent-entry.js +8 -11
  127. package/dist/server/app-response-header-provenance.d.ts +2 -0
  128. package/dist/server/app-response-header-provenance.js +10 -4
  129. package/dist/server/app-route-handler-cache.d.ts +2 -1
  130. package/dist/server/app-route-handler-cache.js +11 -7
  131. package/dist/server/app-route-handler-dispatch.js +11 -4
  132. package/dist/server/app-route-handler-execution.d.ts +9 -1
  133. package/dist/server/app-route-handler-execution.js +28 -13
  134. package/dist/server/app-route-handler-policy.js +2 -2
  135. package/dist/server/app-route-handler-response.d.ts +1 -1
  136. package/dist/server/app-route-handler-response.js +14 -5
  137. package/dist/server/app-router-entry.d.ts +2 -1
  138. package/dist/server/app-router-entry.js +8 -12
  139. package/dist/server/app-rsc-errors.d.ts +0 -1
  140. package/dist/server/app-rsc-errors.js +2 -6
  141. package/dist/server/app-rsc-handler.d.ts +5 -0
  142. package/dist/server/app-rsc-handler.js +229 -102
  143. package/dist/server/app-rsc-request-normalization.d.ts +4 -2
  144. package/dist/server/app-rsc-request-normalization.js +7 -4
  145. package/dist/server/app-rsc-response-finalizer.js +4 -1
  146. package/dist/server/app-rsc-response-stage.d.ts +1 -1
  147. package/dist/server/app-rsc-response-stage.js +6 -4
  148. package/dist/server/app-rsc-route-matching.d.ts +9 -1
  149. package/dist/server/app-rsc-route-matching.js +37 -20
  150. package/dist/server/app-server-action-execution.d.ts +2 -1
  151. package/dist/server/app-server-action-execution.js +1 -1
  152. package/dist/server/app-ssr-entry.d.ts +3 -2
  153. package/dist/server/app-ssr-entry.js +9 -7
  154. package/dist/server/app-ssr-search-params-gate.js +1 -1
  155. package/dist/server/app-ssr-stream.d.ts +6 -1
  156. package/dist/server/app-ssr-stream.js +35 -16
  157. package/dist/server/app-worker-stages.d.ts +2 -2
  158. package/dist/server/app-worker-stages.js +3 -3
  159. package/dist/server/cache-control.js +3 -11
  160. package/dist/server/cacheability-request.js +56 -52
  161. package/dist/server/config-headers.js +3 -1
  162. package/dist/server/dev-server.js +23 -5
  163. package/dist/server/headers.d.ts +16 -0
  164. package/dist/server/headers.js +19 -1
  165. package/dist/server/http-error-responses.js +1 -0
  166. package/dist/server/image-optimization.d.ts +16 -0
  167. package/dist/server/image-optimization.js +26 -6
  168. package/dist/server/isr-cache.d.ts +2 -0
  169. package/dist/server/isr-cache.js +8 -3
  170. package/dist/server/metadata-route-response.js +94 -37
  171. package/dist/server/middleware-matcher-pattern.js +8 -4
  172. package/dist/server/middleware-response-headers.js +2 -0
  173. package/dist/server/multi-stage.d.ts +8 -0
  174. package/dist/server/navigation-planner.js +1 -1
  175. package/dist/server/node-response-signal.d.ts +16 -0
  176. package/dist/server/node-response-signal.js +26 -0
  177. package/dist/server/open-redirect.d.ts +47 -0
  178. package/dist/server/open-redirect.js +74 -1
  179. package/dist/server/pages-api-route.js +8 -2
  180. package/dist/server/pages-asset-tags.d.ts +1 -0
  181. package/dist/server/pages-asset-tags.js +73 -22
  182. package/dist/server/pages-client-assets.d.ts +2 -0
  183. package/dist/server/pages-page-data.d.ts +6 -1
  184. package/dist/server/pages-page-data.js +71 -65
  185. package/dist/server/pages-page-handler.js +50 -15
  186. package/dist/server/pages-page-response.js +3 -1
  187. package/dist/server/pages-request-pipeline.d.ts +2 -1
  188. package/dist/server/pages-request-pipeline.js +20 -5
  189. package/dist/server/pages-request-stage-entry.js +14 -8
  190. package/dist/server/prerender-manifest.d.ts +6 -0
  191. package/dist/server/prerender-manifest.js +1 -1
  192. package/dist/server/prod-server.d.ts +8 -7
  193. package/dist/server/prod-server.js +152 -78
  194. package/dist/server/request-pipeline.d.ts +20 -8
  195. package/dist/server/request-pipeline.js +21 -7
  196. package/dist/server/response-compression.d.ts +43 -0
  197. package/dist/server/response-compression.js +111 -0
  198. package/dist/server/response-stage-cacheability.js +1 -1
  199. package/dist/server/seed-cache.js +10 -7
  200. package/dist/server/socket-error-backstop.d.ts +14 -0
  201. package/dist/server/socket-error-backstop.js +27 -4
  202. package/dist/server/worker-revalidation-context.d.ts +2 -1
  203. package/dist/server/worker-revalidation-context.js +1 -0
  204. package/dist/server/workers-tracing.d.ts +17 -0
  205. package/dist/server/workers-tracing.js +48 -8
  206. package/dist/shims/cache-adapter-instantiate.d.ts +50 -0
  207. package/dist/shims/cache-adapter-instantiate.js +118 -0
  208. package/dist/shims/cache-callable-runtime.d.ts +2 -40
  209. package/dist/shims/cache-callable-runtime.js +50 -168
  210. package/dist/shims/cache-flight-arguments.d.ts +22 -0
  211. package/dist/shims/cache-flight-arguments.js +56 -0
  212. package/dist/shims/cache-request-state.d.ts +18 -14
  213. package/dist/shims/cache-request-state.js +33 -21
  214. package/dist/shims/cache-runtime.d.ts +6 -19
  215. package/dist/shims/cache-runtime.js +168 -226
  216. package/dist/shims/cache.d.ts +3 -2
  217. package/dist/shims/cache.js +8 -5
  218. package/dist/shims/cacheability-classification.d.ts +8 -1
  219. package/dist/shims/cacheability-classification.js +2 -2
  220. package/dist/shims/cdn-cache.d.ts +10 -1
  221. package/dist/shims/cdn-cache.js +16 -9
  222. package/dist/shims/error-boundary-navigation.d.ts +7 -0
  223. package/dist/shims/error-boundary-navigation.js +19 -1
  224. package/dist/shims/error-boundary.d.ts +10 -10
  225. package/dist/shims/error-boundary.js +26 -7
  226. package/dist/shims/error.d.ts +4 -18
  227. package/dist/shims/error.js +17 -10
  228. package/dist/shims/error.react-server.d.ts +4 -6
  229. package/dist/shims/error.react-server.js +4 -1
  230. package/dist/shims/fetch-cache.d.ts +6 -0
  231. package/dist/shims/fetch-cache.js +23 -4
  232. package/dist/shims/form.js +1 -1
  233. package/dist/shims/headers.d.ts +19 -69
  234. package/dist/shims/headers.js +82 -183
  235. package/dist/shims/internal/app-page-props-cache-key.d.ts +5 -2
  236. package/dist/shims/internal/app-page-props-cache-key.js +24 -15
  237. package/dist/shims/internal/cache-context-accessor.d.ts +16 -0
  238. package/dist/shims/internal/cache-context-accessor.js +15 -0
  239. package/dist/shims/internal/headers-state.d.ts +73 -0
  240. package/dist/shims/internal/headers-state.js +157 -0
  241. package/dist/shims/metadata.js +3 -3
  242. package/dist/shims/navigation-errors.d.ts +6 -0
  243. package/dist/shims/navigation-errors.js +11 -1
  244. package/dist/shims/navigation.d.ts +7 -0
  245. package/dist/shims/navigation.js +16 -6
  246. package/dist/shims/request-context.d.ts +9 -0
  247. package/dist/shims/request-state-types.d.ts +2 -1
  248. package/dist/shims/root-params.js +1 -1
  249. package/dist/shims/server.js +52 -2
  250. package/dist/shims/thenable-params.d.ts +4 -0
  251. package/dist/shims/thenable-params.js +25 -3
  252. package/dist/shims/unified-request-context.d.ts +1 -1
  253. package/dist/shims/unified-request-context.js +1 -0
  254. package/dist/utils/encode-cache-tag.d.ts +1 -0
  255. package/dist/utils/encode-cache-tag.js +11 -1
  256. package/dist/utils/mdx-scan.d.ts +5 -0
  257. package/dist/utils/mdx-scan.js +8 -1
  258. package/dist/utils/regex-safety.d.ts +10 -0
  259. package/dist/utils/regex-safety.js +70 -18
  260. package/dist/utils/vite-cli-invocation.js +8 -1
  261. package/package.json +8 -4
  262. package/dist/server/metadata-route-cache-policy.d.ts +0 -5
  263. package/dist/server/metadata-route-cache-policy.js +0 -6
@@ -88,13 +88,15 @@ function simpleClassSymbol(raw, ignoreCase) {
88
88
  var RegexParser = class {
89
89
  pattern;
90
90
  ignoreCase;
91
+ namedGroups;
91
92
  index = 0;
92
93
  nodes = 0;
93
94
  depth = 0;
94
95
  exceededBudget = false;
95
- constructor(pattern, ignoreCase) {
96
+ constructor(pattern, ignoreCase, namedGroups) {
96
97
  this.pattern = pattern;
97
98
  this.ignoreCase = ignoreCase;
99
+ this.namedGroups = namedGroups;
98
100
  }
99
101
  parse() {
100
102
  return this.parseAlternation();
@@ -157,7 +159,7 @@ var RegexParser = class {
157
159
  kind: "atom",
158
160
  symbol: {
159
161
  kind: "opaque",
160
- key: ".",
162
+ key: "opaque:.",
161
163
  pattern: ".",
162
164
  ignoreCase: this.ignoreCase
163
165
  },
@@ -240,7 +242,7 @@ var RegexParser = class {
240
242
  kind: "atom",
241
243
  symbol: simpleClassSymbol(raw, this.ignoreCase) ?? {
242
244
  kind: "opaque",
243
- key: raw,
245
+ key: `opaque:${raw}`,
244
246
  pattern: raw,
245
247
  ignoreCase: this.ignoreCase
246
248
  },
@@ -267,6 +269,15 @@ var RegexParser = class {
267
269
  symbol: shorthand,
268
270
  fixedWidth: true
269
271
  });
272
+ if (escaped === "k" && this.namedGroups && this.pattern[this.index] === "<") {
273
+ const nameEnd = this.pattern.indexOf(">", this.index);
274
+ this.index = nameEnd === -1 ? this.pattern.length : nameEnd + 1;
275
+ return this.node({
276
+ kind: "atom",
277
+ symbol: null,
278
+ fixedWidth: false
279
+ });
280
+ }
270
281
  if (/\d/.test(escaped)) return this.node({
271
282
  kind: "atom",
272
283
  symbol: null,
@@ -279,6 +290,15 @@ var RegexParser = class {
279
290
  } else if (escaped === "u" && /^[\da-fA-F]{4}/.test(this.pattern.slice(this.index, this.index + 4))) {
280
291
  literal = String.fromCharCode(Number.parseInt(this.pattern.slice(this.index, this.index + 4), 16));
281
292
  this.index += 4;
293
+ } else if (escaped === "c") {
294
+ const letter = this.pattern[this.index];
295
+ if (letter !== void 0 && /[A-Za-z]/.test(letter)) {
296
+ literal = String.fromCharCode(letter.charCodeAt(0) % 32);
297
+ this.index++;
298
+ } else {
299
+ literal = "\\";
300
+ this.index--;
301
+ }
282
302
  } else if ("nrtvf0".includes(escaped)) literal = {
283
303
  n: "\n",
284
304
  r: "\r",
@@ -298,7 +318,7 @@ var RegexParser = class {
298
318
  kind: "atom",
299
319
  symbol: {
300
320
  kind: "opaque",
301
- key: raw,
321
+ key: `opaque:${raw}`,
302
322
  pattern: raw,
303
323
  ignoreCase: this.ignoreCase
304
324
  },
@@ -444,11 +464,12 @@ function fixedWords(node, budget) {
444
464
  return words;
445
465
  }
446
466
  case "repeat": {
447
- if (node.min !== node.max || !Number.isFinite(node.max)) return null;
467
+ if (!Number.isFinite(node.max) || node.min > node.max) return null;
448
468
  let words = [[]];
449
469
  const childWords = fixedWords(node.child, budget);
450
470
  if (!childWords) return null;
451
- for (let count = 0; count < node.min; count++) {
471
+ const repeated = node.min === 0 ? [[]] : [];
472
+ for (let count = 1; count <= node.max; count++) {
452
473
  const next = [];
453
474
  for (const prefix of words) for (const suffix of childWords) {
454
475
  if (++budget.words > MAX_WORDS) {
@@ -464,8 +485,9 @@ function fixedWords(node, budget) {
464
485
  next.push(word);
465
486
  }
466
487
  words = next;
488
+ if (count >= node.min) repeated.push(...words);
467
489
  }
468
- return words;
490
+ return repeated;
469
491
  }
470
492
  }
471
493
  }
@@ -508,17 +530,27 @@ function symbolsMayOverlap(left, right) {
508
530
  if (left.kind === "literal" && right.kind === "opaque") return opaqueMatchesLiteral(right, left);
509
531
  return true;
510
532
  }
533
+ function wordMayCollide(node, word, index, comparisons, branched) {
534
+ if (node.terminal) return true;
535
+ if (index === word.length) return node.edges.size > 0;
536
+ if (branched && ++comparisons.count > MAX_OPAQUE_COMPARISONS) return true;
537
+ const symbol = word[index];
538
+ const exact = node.edges.get(symbol.key);
539
+ if (exact && wordMayCollide(exact.node, word, index + 1, comparisons, branched)) return true;
540
+ const candidates = symbol.kind === "literal" ? node.complexEdges : node.edges.values();
541
+ for (const candidate of candidates) {
542
+ if (candidate === exact) continue;
543
+ if (++comparisons.count > MAX_OPAQUE_COMPARISONS) return true;
544
+ if (symbolsMayOverlap(candidate.symbol, symbol) && wordMayCollide(candidate.node, word, index + 1, comparisons, true)) return true;
545
+ }
546
+ return false;
547
+ }
511
548
  function insertPrefixFreeWord(root, word, comparisons) {
549
+ if (wordMayCollide(root, word, 0, comparisons, false)) return false;
512
550
  let node = root;
513
551
  for (const symbol of word) {
514
- if (node.terminal) return false;
515
552
  let edge = node.edges.get(symbol.key);
516
553
  if (!edge) {
517
- const candidates = symbol.kind === "literal" ? node.complexEdges : node.edges.values();
518
- for (const candidate of candidates) {
519
- if (++comparisons.count > MAX_OPAQUE_COMPARISONS) return false;
520
- if (symbolsMayOverlap(candidate.symbol, symbol)) return false;
521
- }
522
554
  edge = {
523
555
  symbol,
524
556
  node: createTrieNode()
@@ -528,7 +560,6 @@ function insertPrefixFreeWord(root, word, comparisons) {
528
560
  }
529
561
  node = edge.node;
530
562
  }
531
- if (node.terminal || node.edges.size > 0) return false;
532
563
  node.terminal = true;
533
564
  return true;
534
565
  }
@@ -578,6 +609,7 @@ function ambiguousExpansionFactor(node) {
578
609
  case "repeat": {
579
610
  if (node.min !== node.max || !Number.isFinite(node.max)) return 1;
580
611
  const childFactor = ambiguousExpansionFactor(node.child);
612
+ if (childFactor === 1) return 1;
581
613
  let factor = 1;
582
614
  for (let count = 0; count < node.max; count++) {
583
615
  factor *= childFactor;
@@ -705,16 +737,36 @@ function findSafetyIssue(node) {
705
737
  }
706
738
  }
707
739
  }
740
+ /**
741
+ * Whether a RegExp source declares a named group, which turns `\k<name>` into
742
+ * a backreference. Escaped characters and character classes cannot open one.
743
+ */
744
+ function mayHaveNamedGroups(pattern) {
745
+ let inClass = false;
746
+ for (let index = 0; index < pattern.length; index++) {
747
+ const character = pattern[index];
748
+ if (character === "\\") index++;
749
+ else if (inClass) {
750
+ if (character === "]") inClass = false;
751
+ } else if (character === "[") inClass = true;
752
+ else if (character === "(" && pattern.startsWith("?<", index + 1) && pattern[index + 3] !== "=" && pattern[index + 3] !== "!") return true;
753
+ }
754
+ return false;
755
+ }
756
+ /**
757
+ * `namedGroups` must describe the whole compiled RegExp when `pattern` is only
758
+ * a fragment of it. It defaults to scanning `pattern` itself.
759
+ */
708
760
  function analyzeRegexSafety(pattern, options = {}) {
709
761
  if (pattern.length > MAX_PATTERN_LENGTH) return "analysis budget exceeded";
710
- const parser = new RegexParser(pattern, options.ignoreCase === true);
762
+ const parser = new RegexParser(pattern, options.ignoreCase === true, options.namedGroups ?? mayHaveNamedGroups(pattern));
711
763
  const node = parser.parse();
712
764
  if (parser.exceededBudget) return "analysis budget exceeded";
713
765
  return findSafetyIssue(node);
714
766
  }
715
767
  function regexAtomsMayOverlap(left, right, ignoreCase = false) {
716
- const leftParser = new RegexParser(left, ignoreCase);
717
- const rightParser = new RegexParser(right, ignoreCase);
768
+ const leftParser = new RegexParser(left, ignoreCase, true);
769
+ const rightParser = new RegexParser(right, ignoreCase, true);
718
770
  const leftNode = leftParser.parse();
719
771
  const rightNode = rightParser.parse();
720
772
  const leftWords = fixedWords(leftNode, {
@@ -734,4 +786,4 @@ function regexAtomsMayOverlap(left, right, ignoreCase = false) {
734
786
  return symbolsMayOverlap(leftSymbol, rightSymbol);
735
787
  }
736
788
  //#endregion
737
- export { analyzeRegexSafety, regexAtomsMayOverlap };
789
+ export { analyzeRegexSafety, mayHaveNamedGroups, regexAtomsMayOverlap };
@@ -1,5 +1,6 @@
1
1
  import path, { toSlash } from "../deps/.pnpm/pathslash@0.1.0/deps/pathslash/dist/index.js";
2
2
  import { findViteConfigPath } from "./project.js";
3
+ import fs from "node:fs";
3
4
  //#region src/utils/vite-cli-invocation.ts
4
5
  let buildClaimed = false;
5
6
  const valued = new Set("--config -c --mode -m --logLevel -l --filter -f --configLoader --port --outDir --target --assetsDir --assetsInlineLimit".split(" "));
@@ -72,9 +73,15 @@ function findViteRoot(command, args) {
72
73
  shouldPreflight: preflight
73
74
  };
74
75
  }
76
+ function isViteEntry(entry) {
77
+ return entry.endsWith("/vite/bin/vite.js") || entry.endsWith("/vite/node/cli.js") || entry.endsWith("/dist/vite/node/cli.js");
78
+ }
75
79
  function commandArguments(argv) {
76
80
  const entry = toSlash(argv[1] ?? "");
77
- const vite = entry.endsWith("/vite/bin/vite.js") || entry.endsWith("/vite/node/cli.js") || entry.endsWith("/dist/vite/node/cli.js");
81
+ let vite = isViteEntry(entry);
82
+ if (!vite && entry && path.basename(entry) !== "vp") try {
83
+ vite = isViteEntry(toSlash(fs.realpathSync.native(entry)));
84
+ } catch {}
78
85
  let args = argv.slice(2);
79
86
  if (!vite) {
80
87
  if (path.basename(entry) !== "vp") return void 0;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vinext",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "Run Next.js apps on Vite. Drop-in replacement for the next CLI.",
5
5
  "homepage": "https://vinext.dev/",
6
6
  "license": "MIT",
@@ -90,6 +90,10 @@
90
90
  "types": "./dist/server/pages-router-entry.d.ts",
91
91
  "import": "./dist/server/pages-router-entry.js"
92
92
  },
93
+ "./internal/client/vinext-next-data": {
94
+ "types": "./dist/client/vinext-next-data.d.ts",
95
+ "import": "./dist/client/vinext-next-data.js"
96
+ },
93
97
  "./internal/server/headers": {
94
98
  "types": "./dist/server/headers.d.ts",
95
99
  "import": "./dist/server/headers.js"
@@ -222,7 +226,7 @@
222
226
  "magic-string": "^0.30.21",
223
227
  "vite-plugin-commonjs": "^0.10.4",
224
228
  "web-vitals": "^4.2.4",
225
- "@vinext/types": "^1.0.0"
229
+ "@vinext/types": "^1.0.1"
226
230
  },
227
231
  "devDependencies": {
228
232
  "@types/node": "^25.9.2",
@@ -237,8 +241,8 @@
237
241
  "pathslash": "^0.1.0",
238
242
  "react-server-dom-webpack": "^19.2.7",
239
243
  "ua-parser-js": "1.0.35",
240
- "vite": "npm:@voidzero-dev/vite-plus-core@0.3.2",
241
- "vite-plus": "0.3.2"
244
+ "vite": "npm:@voidzero-dev/vite-plus-core@1.1.0",
245
+ "vite-plus": "1.1.0"
242
246
  },
243
247
  "peerDependencies": {
244
248
  "@mdx-js/rollup": "^3.0.0",
@@ -1,5 +0,0 @@
1
- //#region src/server/metadata-route-cache-policy.d.ts
2
- export declare function isMetadataResponseCacheable(response: {
3
- headers: Headers;
4
- }): boolean;
5
- //#endregion
@@ -1,6 +0,0 @@
1
- //#region src/server/metadata-route-cache-policy.ts
2
- function isMetadataResponseCacheable(response) {
3
- return !(response.headers.get("cache-control")?.toLowerCase() ?? "").split(",").map((directive) => directive.trim().split("=", 1)[0]).some((directive) => directive === "no-cache" || directive === "no-store");
4
- }
5
- //#endregion
6
- export { isMetadataResponseCacheable };