vinext 1.0.1 → 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.
- package/README.md +72 -1
- package/dist/build/app-page-static-eligibility.d.ts +15 -0
- package/dist/build/app-page-static-eligibility.js +82 -0
- package/dist/build/prerender-paths.js +3 -78
- package/dist/build/prerender.js +33 -8
- package/dist/build/server-manifest.d.ts +7 -0
- package/dist/build/server-manifest.js +11 -1
- package/dist/cache/cache-adapters-virtual.d.ts +7 -1
- package/dist/cache/cache-adapters-virtual.js +3 -3
- package/dist/client/navigation-runtime.d.ts +11 -0
- package/dist/client/navigation-runtime.js +1 -1
- package/dist/config/config-matchers.js +3 -1
- package/dist/config/next-config.d.ts +7 -0
- package/dist/config/next-config.js +18 -3
- package/dist/entries/app-rsc-entry.d.ts +2 -0
- package/dist/entries/app-rsc-entry.js +64 -43
- package/dist/index.d.ts +4 -1
- package/dist/index.js +59 -30
- package/dist/plugins/cache-flight-codec.d.ts +19 -0
- package/dist/plugins/cache-flight-codec.js +68 -0
- package/dist/plugins/commonjs-esm-facade.d.ts +35 -0
- package/dist/plugins/commonjs-esm-facade.js +80 -0
- package/dist/plugins/fonts.d.ts +8 -11
- package/dist/plugins/fonts.js +71 -34
- package/dist/routing/file-matcher.d.ts +1 -0
- package/dist/routing/file-matcher.js +1 -1
- package/dist/server/api-handler.js +17 -7
- package/dist/server/app-browser-entry.js +11 -7
- package/dist/server/app-browser-history-controller.d.ts +2 -0
- package/dist/server/app-browser-history-controller.js +8 -0
- package/dist/server/app-browser-interception-context.js +26 -2
- package/dist/server/app-browser-navigation-controller.d.ts +7 -1
- package/dist/server/app-browser-navigation-controller.js +93 -10
- package/dist/server/app-fallback-renderer.d.ts +2 -0
- package/dist/server/app-fallback-renderer.js +1 -0
- package/dist/server/app-history-state.d.ts +3 -0
- package/dist/server/app-history-state.js +7 -0
- package/dist/server/app-middleware.js +2 -1
- package/dist/server/app-optimistic-routing.js +1 -1
- package/dist/server/app-page-boundary-render.d.ts +5 -0
- package/dist/server/app-page-boundary-render.js +6 -4
- package/dist/server/app-page-cache-finalizer.d.ts +11 -0
- package/dist/server/app-page-cache-finalizer.js +41 -7
- package/dist/server/app-page-cache-render.d.ts +18 -0
- package/dist/server/app-page-cache-render.js +63 -43
- package/dist/server/app-page-cache.d.ts +5 -0
- package/dist/server/app-page-cache.js +27 -7
- package/dist/server/app-page-dispatch.d.ts +9 -1
- package/dist/server/app-page-dispatch.js +47 -30
- package/dist/server/app-page-element-builder.d.ts +7 -0
- package/dist/server/app-page-element-builder.js +27 -42
- package/dist/server/app-page-execution.d.ts +15 -12
- package/dist/server/app-page-execution.js +30 -40
- package/dist/server/app-page-head.d.ts +5 -0
- package/dist/server/app-page-head.js +9 -3
- package/dist/server/app-page-probe.d.ts +0 -109
- package/dist/server/app-page-probe.js +3 -136
- package/dist/server/app-page-render-identity.d.ts +0 -1
- package/dist/server/app-page-render-identity.js +1 -1
- package/dist/server/app-page-render-observation.js +2 -2
- package/dist/server/app-page-render.d.ts +13 -5
- package/dist/server/app-page-render.js +219 -119
- package/dist/server/app-page-request.d.ts +0 -1
- package/dist/server/app-page-request.js +1 -2
- package/dist/server/app-page-response.d.ts +4 -3
- package/dist/server/app-page-response.js +4 -3
- package/dist/server/app-page-route-wiring.d.ts +17 -5
- package/dist/server/app-page-route-wiring.js +55 -33
- package/dist/server/app-page-rsc-render-status.d.ts +48 -0
- package/dist/server/app-page-rsc-render-status.js +54 -0
- package/dist/server/app-page-stream.d.ts +15 -8
- package/dist/server/app-page-stream.js +6 -0
- package/dist/server/app-request-stage-dispatch.js +1 -1
- package/dist/server/app-request-stage-independent-entry.js +4 -4
- package/dist/server/app-response-header-provenance.d.ts +2 -0
- package/dist/server/app-response-header-provenance.js +10 -4
- package/dist/server/app-route-handler-dispatch.js +1 -1
- package/dist/server/app-router-entry.js +3 -3
- package/dist/server/app-rsc-handler.d.ts +4 -0
- package/dist/server/app-rsc-handler.js +212 -96
- package/dist/server/app-rsc-request-normalization.d.ts +3 -1
- package/dist/server/app-rsc-request-normalization.js +4 -2
- package/dist/server/app-rsc-response-stage.d.ts +1 -1
- package/dist/server/app-rsc-response-stage.js +6 -4
- package/dist/server/app-rsc-route-matching.d.ts +9 -1
- package/dist/server/app-rsc-route-matching.js +36 -19
- package/dist/server/app-server-action-execution.js +1 -1
- package/dist/server/app-ssr-entry.d.ts +3 -2
- package/dist/server/app-ssr-entry.js +6 -4
- package/dist/server/app-ssr-stream.d.ts +6 -1
- package/dist/server/app-ssr-stream.js +34 -15
- package/dist/server/app-worker-stages.d.ts +2 -2
- package/dist/server/app-worker-stages.js +3 -3
- package/dist/server/cacheability-request.js +9 -5
- package/dist/server/config-headers.js +2 -0
- package/dist/server/dev-server.js +12 -2
- package/dist/server/headers.d.ts +14 -0
- package/dist/server/headers.js +15 -1
- package/dist/server/image-optimization.d.ts +16 -0
- package/dist/server/image-optimization.js +26 -6
- package/dist/server/isr-cache.js +2 -2
- package/dist/server/middleware-matcher-pattern.js +8 -4
- package/dist/server/middleware-response-headers.js +2 -0
- package/dist/server/multi-stage.d.ts +8 -0
- package/dist/server/navigation-planner.js +1 -1
- package/dist/server/node-response-signal.d.ts +16 -0
- package/dist/server/node-response-signal.js +26 -0
- package/dist/server/open-redirect.d.ts +47 -0
- package/dist/server/open-redirect.js +74 -1
- package/dist/server/pages-page-handler.js +21 -4
- package/dist/server/pages-request-stage-entry.js +8 -4
- package/dist/server/prod-server.d.ts +8 -7
- package/dist/server/prod-server.js +153 -69
- package/dist/server/request-pipeline.d.ts +20 -8
- package/dist/server/request-pipeline.js +21 -7
- package/dist/server/response-compression.d.ts +43 -0
- package/dist/server/response-compression.js +111 -0
- package/dist/server/seed-cache.js +10 -7
- package/dist/server/socket-error-backstop.d.ts +14 -0
- package/dist/server/socket-error-backstop.js +27 -4
- package/dist/shims/cache-adapter-instantiate.d.ts +50 -0
- package/dist/shims/cache-adapter-instantiate.js +118 -0
- package/dist/shims/cache-callable-runtime.d.ts +2 -40
- package/dist/shims/cache-callable-runtime.js +50 -168
- package/dist/shims/cache-flight-arguments.d.ts +22 -0
- package/dist/shims/cache-flight-arguments.js +56 -0
- package/dist/shims/cache-request-state.d.ts +15 -0
- package/dist/shims/cache-request-state.js +31 -8
- package/dist/shims/cache-runtime.d.ts +6 -19
- package/dist/shims/cache-runtime.js +165 -225
- package/dist/shims/cache.d.ts +2 -2
- package/dist/shims/cache.js +5 -4
- package/dist/shims/cacheability-classification.d.ts +7 -0
- package/dist/shims/error-boundary-navigation.d.ts +7 -0
- package/dist/shims/error-boundary-navigation.js +19 -1
- package/dist/shims/error-boundary.d.ts +10 -10
- package/dist/shims/error-boundary.js +26 -7
- package/dist/shims/fetch-cache.d.ts +6 -0
- package/dist/shims/fetch-cache.js +19 -1
- package/dist/shims/form.js +1 -1
- package/dist/shims/headers.d.ts +13 -0
- package/dist/shims/headers.js +47 -4
- package/dist/shims/internal/app-page-props-cache-key.d.ts +5 -2
- package/dist/shims/internal/app-page-props-cache-key.js +24 -15
- package/dist/shims/internal/headers-state.d.ts +0 -1
- package/dist/shims/metadata.js +3 -3
- package/dist/shims/navigation-errors.d.ts +6 -0
- package/dist/shims/navigation-errors.js +11 -1
- package/dist/shims/navigation.d.ts +7 -0
- package/dist/shims/navigation.js +14 -4
- package/dist/shims/request-context.d.ts +9 -0
- package/dist/shims/thenable-params.d.ts +4 -0
- package/dist/shims/thenable-params.js +25 -3
- package/dist/shims/unified-request-context.js +1 -0
- package/dist/utils/mdx-scan.d.ts +5 -0
- package/dist/utils/mdx-scan.js +8 -1
- package/dist/utils/regex-safety.d.ts +10 -0
- package/dist/utils/regex-safety.js +70 -18
- package/package.json +3 -3
package/dist/utils/mdx-scan.d.ts
CHANGED
|
@@ -5,6 +5,11 @@ export declare const mdxScanCache: Map<string, boolean>;
|
|
|
5
5
|
* Check if the project has .mdx files in app/ or pages/ directories.
|
|
6
6
|
*/
|
|
7
7
|
export declare function hasMdxFiles(root: string, appDir: string | null, pagesDir: string | null): boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Whether page extensions discover MDX sources, including compound extensions
|
|
10
|
+
* such as `page.mdx`.
|
|
11
|
+
*/
|
|
12
|
+
export declare function pageExtensionsIncludeMdx(pageExtensions: readonly string[]): boolean;
|
|
8
13
|
/**
|
|
9
14
|
* Load a reader that keeps only the ESM of an MDX module, so the JavaScript
|
|
10
15
|
* export helpers can read it. It takes the ESM nodes from the MDX parser that
|
package/dist/utils/mdx-scan.js
CHANGED
|
@@ -33,6 +33,13 @@ function scanDirForMdx(dir) {
|
|
|
33
33
|
return false;
|
|
34
34
|
}
|
|
35
35
|
/**
|
|
36
|
+
* Whether page extensions discover MDX sources, including compound extensions
|
|
37
|
+
* such as `page.mdx`.
|
|
38
|
+
*/
|
|
39
|
+
function pageExtensionsIncludeMdx(pageExtensions) {
|
|
40
|
+
return pageExtensions.some((extension) => extension.toLowerCase().split(".").at(-1) === "mdx");
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
36
43
|
* Load a reader that keeps only the ESM of an MDX module, so the JavaScript
|
|
37
44
|
* export helpers can read it. It takes the ESM nodes from the MDX parser that
|
|
38
45
|
* `@mdx-js/rollup` compiles with, resolved beside the plugin vinext
|
|
@@ -57,4 +64,4 @@ async function loadMdxEsmReader(root) {
|
|
|
57
64
|
return (source) => processor.parse(source).children.flatMap((node) => node.type === "mdxjsEsm" && typeof node.value === "string" ? [node.value] : []).join("\n\n");
|
|
58
65
|
}
|
|
59
66
|
//#endregion
|
|
60
|
-
export { hasMdxFiles, loadMdxEsmReader, mdxScanCache };
|
|
67
|
+
export { hasMdxFiles, loadMdxEsmReader, mdxScanCache, pageExtensionsIncludeMdx };
|
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
//#region src/utils/regex-safety.d.ts
|
|
2
2
|
export type RegexSafetyIssue = "nested repetition" | "ambiguous alternatives under repetition" | "ambiguous sequence expansion" | "overlapping sequential repetition" | "analysis budget exceeded";
|
|
3
|
+
/**
|
|
4
|
+
* Whether a RegExp source declares a named group, which turns `\k<name>` into
|
|
5
|
+
* a backreference. Escaped characters and character classes cannot open one.
|
|
6
|
+
*/
|
|
7
|
+
export declare function mayHaveNamedGroups(pattern: string): boolean;
|
|
8
|
+
/**
|
|
9
|
+
* `namedGroups` must describe the whole compiled RegExp when `pattern` is only
|
|
10
|
+
* a fragment of it. It defaults to scanning `pattern` itself.
|
|
11
|
+
*/
|
|
3
12
|
export declare function analyzeRegexSafety(pattern: string, options?: {
|
|
4
13
|
ignoreCase?: boolean;
|
|
14
|
+
namedGroups?: boolean;
|
|
5
15
|
}): RegexSafetyIssue | null;
|
|
6
16
|
export declare function regexAtomsMayOverlap(left: string, right: string, ignoreCase?: boolean): boolean;
|
|
7
17
|
//#endregion
|
|
@@ -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.
|
|
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
|
-
|
|
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
|
|
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 };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vinext",
|
|
3
|
-
"version": "1.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",
|
|
@@ -241,8 +241,8 @@
|
|
|
241
241
|
"pathslash": "^0.1.0",
|
|
242
242
|
"react-server-dom-webpack": "^19.2.7",
|
|
243
243
|
"ua-parser-js": "1.0.35",
|
|
244
|
-
"vite": "npm:@voidzero-dev/vite-plus-core@
|
|
245
|
-
"vite-plus": "
|
|
244
|
+
"vite": "npm:@voidzero-dev/vite-plus-core@1.1.0",
|
|
245
|
+
"vite-plus": "1.1.0"
|
|
246
246
|
},
|
|
247
247
|
"peerDependencies": {
|
|
248
248
|
"@mdx-js/rollup": "^3.0.0",
|