@reckona/mreact-router 0.0.158 → 0.0.160
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/build.d.ts +2 -1
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +81 -41
- package/dist/build.js.map +1 -1
- package/package.json +11 -11
- package/src/build.ts +135 -52
package/dist/build.d.ts
CHANGED
|
@@ -155,8 +155,9 @@ interface RouteRequestModuleBatchEntry {
|
|
|
155
155
|
code: string;
|
|
156
156
|
filename: string;
|
|
157
157
|
key: string;
|
|
158
|
-
label:
|
|
158
|
+
label: RouteRequestModuleBundleLabel;
|
|
159
159
|
}
|
|
160
|
+
type RouteRequestModuleBundleLabel = "Loader" | "Metadata" | "Middleware";
|
|
160
161
|
export declare function __buildCloudflareRouteLoaderModuleBatchForTests(options: {
|
|
161
162
|
cacheDir?: string | undefined;
|
|
162
163
|
define?: UserConfig["define"] | undefined;
|
package/dist/build.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AAsDA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAGL,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EAG1B,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGnD,OAAO,EAAqC,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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"}
|
package/dist/build.js
CHANGED
|
@@ -187,7 +187,7 @@ export async function buildApp(options) {
|
|
|
187
187
|
const actionRenderBundleExcludedFiles = new Set([...serverActionManifest.routeReferences.entries()]
|
|
188
188
|
.filter(([, references]) => references.length > 0)
|
|
189
189
|
.map(([file]) => file));
|
|
190
|
-
const serverModules = await (shouldTrackBuildPhases === false
|
|
190
|
+
const { artifacts: serverModules, sharedChunks: serverModuleSharedChunks } = await (shouldTrackBuildPhases === false
|
|
191
191
|
? buildServerModuleArtifacts({
|
|
192
192
|
actionRenderBundleExcludedFiles,
|
|
193
193
|
bundleRequestRuntimePackages: shouldBuildAwsLambda,
|
|
@@ -224,8 +224,8 @@ export async function buildApp(options) {
|
|
|
224
224
|
}));
|
|
225
225
|
const [serverModuleArtifacts, clientBundle] = await Promise.all([
|
|
226
226
|
shouldTrackBuildPhases === false
|
|
227
|
-
? writeServerModuleArtifactFiles(serverDir, serverModules, generatedImportPolicy.runtimePackages)
|
|
228
|
-
: timeBuildPhase(timingSink, progressSink, "serverModuleArtifacts", () => writeServerModuleArtifactFiles(serverDir, serverModules, generatedImportPolicy.runtimePackages)),
|
|
227
|
+
? writeServerModuleArtifactFiles(serverDir, serverModules, generatedImportPolicy.runtimePackages, serverModuleSharedChunks)
|
|
228
|
+
: timeBuildPhase(timingSink, progressSink, "serverModuleArtifacts", () => writeServerModuleArtifactFiles(serverDir, serverModules, generatedImportPolicy.runtimePackages, serverModuleSharedChunks)),
|
|
229
229
|
shouldTrackBuildPhases === false
|
|
230
230
|
? writeClientRouteBundles({
|
|
231
231
|
appDir: project.routesDir,
|
|
@@ -623,7 +623,7 @@ async function writeCompatVendorChunks(serverDir, usedEntries) {
|
|
|
623
623
|
await mkdir(chunksDir, { recursive: true });
|
|
624
624
|
await Promise.all(output.chunks.map((chunk) => writeFile(join(chunksDir, chunk.fileName), chunk.code)));
|
|
625
625
|
}
|
|
626
|
-
async function writeServerModuleArtifactFiles(serverDir, serverModules, portableRuntimePackages = []) {
|
|
626
|
+
async function writeServerModuleArtifactFiles(serverDir, serverModules, portableRuntimePackages = [], sharedChunks = []) {
|
|
627
627
|
const files = {};
|
|
628
628
|
const renderFiles = {};
|
|
629
629
|
const requestFiles = {};
|
|
@@ -635,6 +635,12 @@ async function writeServerModuleArtifactFiles(serverDir, serverModules, portable
|
|
|
635
635
|
mkdir(join(modulesDir, "request"), { recursive: true }),
|
|
636
636
|
mkdir(join(modulesDir, "render"), { recursive: true }),
|
|
637
637
|
]);
|
|
638
|
+
if (sharedChunks.length > 0) {
|
|
639
|
+
// Shared request chunks are referenced from externalized module code via
|
|
640
|
+
// "./chunks/..." imports, so they live next to server-modules/code files.
|
|
641
|
+
await mkdir(join(modulesDir, "code", "chunks"), { recursive: true });
|
|
642
|
+
await Promise.all(sharedChunks.map((chunk) => writeFile(join(modulesDir, "code", chunk.fileName), rewriteCompatVendorPlaceholderImports(rewritePortableRuntimePackageImports(chunk.code, portableRuntimePackages)))));
|
|
643
|
+
}
|
|
638
644
|
const usedCompatVendorEntries = collectCompatVendorEntryUsage(artifactEntries);
|
|
639
645
|
if (usedCompatVendorEntries.size > 0) {
|
|
640
646
|
await writeCompatVendorChunks(serverDir, usedCompatVendorEntries);
|
|
@@ -1303,8 +1309,20 @@ async function buildServerModuleArtifacts(options) {
|
|
|
1303
1309
|
label: "Metadata",
|
|
1304
1310
|
});
|
|
1305
1311
|
}
|
|
1312
|
+
if (isMiddlewareFile(options.project.routesDir, absoluteFile)) {
|
|
1313
|
+
// Middleware joins the batch when runtime packages are bundled so the
|
|
1314
|
+
// auth/control dependency graph is shared with route loader artifacts.
|
|
1315
|
+
if (options.bundleRequestRuntimePackages) {
|
|
1316
|
+
requestBatchEntries.push({
|
|
1317
|
+
code: source,
|
|
1318
|
+
filename: absoluteFile,
|
|
1319
|
+
key: routeRequestArtifactBatchKey(file, "request"),
|
|
1320
|
+
label: "Middleware",
|
|
1321
|
+
});
|
|
1322
|
+
}
|
|
1323
|
+
continue;
|
|
1324
|
+
}
|
|
1306
1325
|
if (requestArtifactFiles.has(file) &&
|
|
1307
|
-
!isMiddlewareFile(options.project.routesDir, absoluteFile) &&
|
|
1308
1326
|
route?.kind !== "server" &&
|
|
1309
1327
|
route?.kind !== "metadata") {
|
|
1310
1328
|
requestBatchEntries.push({
|
|
@@ -1315,18 +1333,19 @@ async function buildServerModuleArtifacts(options) {
|
|
|
1315
1333
|
});
|
|
1316
1334
|
}
|
|
1317
1335
|
}
|
|
1318
|
-
const requestBatchOutputs = requestBatchEntries.length >= 3
|
|
1336
|
+
const { codeByKey: requestBatchOutputs, sharedChunks } = requestBatchEntries.length >= (options.bundleRequestRuntimePackages ? 2 : 3)
|
|
1319
1337
|
? await bundleRouteRequestModuleBatchCode({
|
|
1320
1338
|
appDir: options.project.routesDir,
|
|
1321
1339
|
bundleCache: options.bundleCache,
|
|
1322
1340
|
cacheDir: options.cacheDir,
|
|
1341
|
+
emitSharedChunks: options.bundleRequestRuntimePackages,
|
|
1323
1342
|
entries: requestBatchEntries,
|
|
1324
1343
|
externalizeAllowedPackages: !options.bundleRequestRuntimePackages,
|
|
1325
1344
|
importPolicy: requestModuleImportPolicy,
|
|
1326
1345
|
define: options.define,
|
|
1327
1346
|
vitePlugins: options.vitePlugins,
|
|
1328
1347
|
})
|
|
1329
|
-
: new Map();
|
|
1348
|
+
: { codeByKey: new Map(), sharedChunks: [] };
|
|
1330
1349
|
const artifactEntries = await mapWithBuildConcurrency(Object.entries(options.files), async ([file, source]) => {
|
|
1331
1350
|
const absoluteFile = join(options.projectRoot, file);
|
|
1332
1351
|
const route = routeByFile.get(file);
|
|
@@ -1502,7 +1521,7 @@ async function buildServerModuleArtifacts(options) {
|
|
|
1502
1521
|
artifacts[entry[0]] = entry[1];
|
|
1503
1522
|
}
|
|
1504
1523
|
}
|
|
1505
|
-
return artifacts;
|
|
1524
|
+
return { artifacts, sharedChunks };
|
|
1506
1525
|
}
|
|
1507
1526
|
async function buildServerComponentBundleArtifactCode(options) {
|
|
1508
1527
|
return await bundleAppRouterSourceModule({
|
|
@@ -1651,30 +1670,33 @@ async function bundleRouteLoaderModuleCode(options) {
|
|
|
1651
1670
|
}
|
|
1652
1671
|
async function bundleRouteRequestModuleBatchCode(options) {
|
|
1653
1672
|
if (options.entries.length === 0) {
|
|
1654
|
-
return new Map();
|
|
1673
|
+
return { codeByKey: new Map(), sharedChunks: [] };
|
|
1655
1674
|
}
|
|
1656
1675
|
if (options.entries.length === 1) {
|
|
1657
1676
|
const entry = options.entries[0];
|
|
1658
1677
|
if (entry === undefined) {
|
|
1659
|
-
return new Map();
|
|
1678
|
+
return { codeByKey: new Map(), sharedChunks: [] };
|
|
1660
1679
|
}
|
|
1661
|
-
return
|
|
1662
|
-
[
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1680
|
+
return {
|
|
1681
|
+
codeByKey: new Map([
|
|
1682
|
+
[
|
|
1683
|
+
entry.key,
|
|
1684
|
+
await bundleRouteRequestModuleCode({
|
|
1685
|
+
appDir: options.appDir,
|
|
1686
|
+
bundleCache: options.bundleCache,
|
|
1687
|
+
cacheDir: options.cacheDir,
|
|
1688
|
+
code: entry.code,
|
|
1689
|
+
define: options.define,
|
|
1690
|
+
externalizeAllowedPackages: options.externalizeAllowedPackages,
|
|
1691
|
+
filename: entry.filename,
|
|
1692
|
+
importPolicy: options.importPolicy,
|
|
1693
|
+
label: entry.label,
|
|
1694
|
+
vitePlugins: options.vitePlugins,
|
|
1695
|
+
}),
|
|
1696
|
+
],
|
|
1697
|
+
]),
|
|
1698
|
+
sharedChunks: [],
|
|
1699
|
+
};
|
|
1678
1700
|
}
|
|
1679
1701
|
const namesByKey = new Map(options.entries.map((entry, index) => [
|
|
1680
1702
|
entry.key,
|
|
@@ -1682,13 +1704,15 @@ async function bundleRouteRequestModuleBatchCode(options) {
|
|
|
1682
1704
|
]));
|
|
1683
1705
|
const output = await bundleRouterModules({
|
|
1684
1706
|
cacheDir: options.cacheDir,
|
|
1685
|
-
|
|
1707
|
+
// Externalized module code lives flat in server-modules/code, so shared
|
|
1708
|
+
// chunks must be importable as "./chunks/..." from any entry file there.
|
|
1709
|
+
chunkFileNames: "chunks/request.[hash].mjs",
|
|
1686
1710
|
entries: options.entries.map((entry) => ({
|
|
1687
1711
|
code: entry.code,
|
|
1688
1712
|
filename: entry.filename,
|
|
1689
1713
|
name: namesByKey.get(entry.key) ?? hashText(entry.key).slice(0, 8),
|
|
1690
1714
|
})),
|
|
1691
|
-
entryFileNames: "
|
|
1715
|
+
entryFileNames: "[name].mjs",
|
|
1692
1716
|
define: options.define,
|
|
1693
1717
|
platform: "node",
|
|
1694
1718
|
plugins: [
|
|
@@ -1703,7 +1727,8 @@ async function bundleRouteRequestModuleBatchCode(options) {
|
|
|
1703
1727
|
root: options.importPolicy?.projectRoot ?? dirname(options.entries[0]?.filename ?? options.appDir),
|
|
1704
1728
|
vitePlugins: options.vitePlugins,
|
|
1705
1729
|
});
|
|
1706
|
-
|
|
1730
|
+
const sharedChunks = output.chunks.filter((chunk) => !chunk.isEntry);
|
|
1731
|
+
if (sharedChunks.length > 0 && !canEmitSharedRequestChunks(options.emitSharedChunks, output)) {
|
|
1707
1732
|
const fallbackEntries = await mapWithBuildConcurrency(options.entries, async (entry) => [
|
|
1708
1733
|
entry.key,
|
|
1709
1734
|
await bundleRouteRequestModuleCode({
|
|
@@ -1719,20 +1744,35 @@ async function bundleRouteRequestModuleBatchCode(options) {
|
|
|
1719
1744
|
vitePlugins: options.vitePlugins,
|
|
1720
1745
|
}),
|
|
1721
1746
|
]);
|
|
1722
|
-
return new Map(fallbackEntries);
|
|
1747
|
+
return { codeByKey: new Map(fallbackEntries), sharedChunks: [] };
|
|
1723
1748
|
}
|
|
1724
1749
|
const chunksByName = new Map(output.chunks.map((chunk) => [chunk.name, chunk]));
|
|
1725
|
-
return
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
|
|
1731
|
-
|
|
1732
|
-
|
|
1750
|
+
return {
|
|
1751
|
+
codeByKey: new Map(options.entries.map((entry) => {
|
|
1752
|
+
const name = namesByKey.get(entry.key);
|
|
1753
|
+
const chunk = name === undefined ? undefined : chunksByName.get(name);
|
|
1754
|
+
if (chunk === undefined) {
|
|
1755
|
+
throw new Error(`Failed to compile request artifact for ${entry.filename}.`);
|
|
1756
|
+
}
|
|
1757
|
+
return [entry.key, chunk.code];
|
|
1758
|
+
})),
|
|
1759
|
+
sharedChunks: sharedChunks.map((chunk) => ({ code: chunk.code, fileName: chunk.fileName })),
|
|
1760
|
+
};
|
|
1761
|
+
}
|
|
1762
|
+
function canEmitSharedRequestChunks(emitSharedChunks, output) {
|
|
1763
|
+
if (emitSharedChunks !== true) {
|
|
1764
|
+
return false;
|
|
1765
|
+
}
|
|
1766
|
+
if (output.assets !== undefined && output.assets.length > 0) {
|
|
1767
|
+
return false;
|
|
1768
|
+
}
|
|
1769
|
+
// Entry code is rewritten into content-addressed module files, so emitted
|
|
1770
|
+
// imports may only target shared chunk files or external specifiers.
|
|
1771
|
+
const entryFileNames = new Set(output.chunks.filter((chunk) => chunk.isEntry).map((chunk) => chunk.fileName));
|
|
1772
|
+
return output.chunks.every((chunk) => chunk.imports.every((specifier) => !entryFileNames.has(specifier)));
|
|
1733
1773
|
}
|
|
1734
1774
|
export async function __bundleRouteRequestModuleBatchForTests(options) {
|
|
1735
|
-
return Object.fromEntries(await bundleRouteRequestModuleBatchCode({
|
|
1775
|
+
return Object.fromEntries((await bundleRouteRequestModuleBatchCode({
|
|
1736
1776
|
appDir: options.appDir,
|
|
1737
1777
|
cacheDir: options.cacheDir,
|
|
1738
1778
|
define: options.define,
|
|
@@ -1740,7 +1780,7 @@ export async function __bundleRouteRequestModuleBatchForTests(options) {
|
|
|
1740
1780
|
externalizeAllowedPackages: options.externalizeAllowedPackages,
|
|
1741
1781
|
importPolicy: options.importPolicy,
|
|
1742
1782
|
vitePlugins: options.vitePlugins,
|
|
1743
|
-
}));
|
|
1783
|
+
})).codeByKey);
|
|
1744
1784
|
}
|
|
1745
1785
|
async function bundleRouteRequestModuleCode(options) {
|
|
1746
1786
|
const output = await bundleRouterModule({
|