@reckona/mreact-router 0.0.150 → 0.0.152
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 +1 -1
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +60 -8
- package/dist/build.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/link.d.ts +17 -7
- package/dist/link.d.ts.map +1 -1
- package/dist/link.js.map +1 -1
- package/dist/tailwind-source.d.ts +6 -0
- package/dist/tailwind-source.d.ts.map +1 -0
- package/dist/tailwind-source.js +25 -0
- package/dist/tailwind-source.js.map +1 -0
- package/dist/typed-routes.d.ts +6 -1
- package/dist/typed-routes.d.ts.map +1 -1
- package/dist/typed-routes.js.map +1 -1
- package/dist/vite.d.ts.map +1 -1
- package/dist/vite.js +3 -25
- package/dist/vite.js.map +1 -1
- package/package.json +11 -11
- package/src/build.ts +81 -10
- package/src/index.ts +9 -0
- package/src/link.ts +34 -11
- package/src/tailwind-source.ts +37 -0
- package/src/typed-routes.ts +22 -3
- package/src/vite.ts +3 -38
package/README.md
CHANGED
|
@@ -49,7 +49,7 @@ Production client source maps are disabled by default. Set `clientSourceMaps: "l
|
|
|
49
49
|
|
|
50
50
|
Production client route bundles can drop selected browser logging calls with `production.dropClientConsole`. Set it to `true` to remove `console.debug`, `console.info`, and `console.log` while preserving `console.warn` and `console.error`, or pass an array such as `["log"]` to choose specific methods.
|
|
51
51
|
|
|
52
|
-
Build output includes `.mreact/routes.d.ts`, which declares `AppRoutePath` and
|
|
52
|
+
Build output includes `.mreact/routes.d.ts`, which declares the discovered `AppRoutePath` union and augments `@reckona/mreact-router/link` so concrete `<Link href="...">` values are type-checked without importing any generated runtime module. The public `href()` helper remains available when code needs runtime URL construction from mreact route patterns such as `"/users/:id"` and `"/files/:...path"`; importing it into a client route includes that URL-building helper in the client bundle.
|
|
53
53
|
|
|
54
54
|
`mreact-router dev` reads the same config, preserves route-agnostic Vite plugins and CSS settings, and uses `server.port` from `vite.config.ts` when neither `--port` nor `PORT` is set. Use `mreact-router dev --port 15174` for one-off E2E or local port overrides without creating a separate Vite config. This keeps Vite CSS transforms, Playwright `webServer` setups, and local dev commands on the same configured port.
|
|
55
55
|
|
package/dist/build.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AAmDA,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
|
@@ -23,6 +23,7 @@ import { sourceModuleCandidates } from "./source-modules.js";
|
|
|
23
23
|
import { collectBuildInferredServerActions } from "./server-action-inference.js";
|
|
24
24
|
import { viteDefineCacheKey, vitePluginsCacheKey } from "./vite-plugin-cache-key.js";
|
|
25
25
|
import { workspacePackageFile } from "./workspace-packages.js";
|
|
26
|
+
import { prependTailwindSourceDirectives } from "./tailwind-source.js";
|
|
26
27
|
import { parseRouteMiddlewareControl, parseStaticMiddlewareConfig, validateRouteMiddlewareControl, } from "./middleware.js";
|
|
27
28
|
const nativeEscapeTransform = {
|
|
28
29
|
batchImportName: "escapeHtmlBatch",
|
|
@@ -225,6 +226,7 @@ export async function buildApp(options) {
|
|
|
225
226
|
sourceAnalysis,
|
|
226
227
|
sourceMapDir: join(options.outDir, "source-maps", "client"),
|
|
227
228
|
sourceMaps: project.clientSourceMaps,
|
|
229
|
+
sourceDirs: project.allowedSourceDirs,
|
|
228
230
|
vitePlugins,
|
|
229
231
|
})
|
|
230
232
|
: timeBuildPhase(timingSink, progressSink, "clientBundles", () => writeClientRouteBundles({
|
|
@@ -238,6 +240,7 @@ export async function buildApp(options) {
|
|
|
238
240
|
sourceAnalysis,
|
|
239
241
|
sourceMapDir: join(options.outDir, "source-maps", "client"),
|
|
240
242
|
sourceMaps: project.clientSourceMaps,
|
|
243
|
+
sourceDirs: project.allowedSourceDirs,
|
|
241
244
|
vitePlugins,
|
|
242
245
|
})),
|
|
243
246
|
]);
|
|
@@ -405,16 +408,17 @@ function typedRoutesDeclaration(routes) {
|
|
|
405
408
|
return left.localeCompare(right);
|
|
406
409
|
});
|
|
407
410
|
const routeUnion = routePaths.map((routePath) => JSON.stringify(routePath)).join(" | ");
|
|
408
|
-
const routesObject = routePaths
|
|
409
|
-
.map((routePath) => ` readonly ${JSON.stringify(routePath)}: AppRouteHref<${JSON.stringify(routePath)}>;`)
|
|
410
|
-
.join("\n");
|
|
411
411
|
return [
|
|
412
|
-
`import type {
|
|
412
|
+
`import type { AppRouteLinkHref as MreactAppRouteLinkHref } from "@reckona/mreact-router";`,
|
|
413
413
|
``,
|
|
414
414
|
`export type AppRoutePath = ${routeUnion === "" ? "never" : routeUnion};`,
|
|
415
|
-
`export
|
|
416
|
-
|
|
417
|
-
`
|
|
415
|
+
`export type AppRouteHref = MreactAppRouteLinkHref<AppRoutePath>;`,
|
|
416
|
+
``,
|
|
417
|
+
`declare module "@reckona/mreact-router/link" {`,
|
|
418
|
+
` interface AppRouteDeclarations {`,
|
|
419
|
+
` readonly path: AppRoutePath;`,
|
|
420
|
+
` }`,
|
|
421
|
+
`}`,
|
|
418
422
|
``,
|
|
419
423
|
].join("\n");
|
|
420
424
|
}
|
|
@@ -1079,6 +1083,12 @@ async function prerenderStaticRoutes(options) {
|
|
|
1079
1083
|
join(options.project.projectRoot, file),
|
|
1080
1084
|
artifact,
|
|
1081
1085
|
]));
|
|
1086
|
+
const serverModuleCacheVersion = buildPrerenderServerModuleCacheVersion({
|
|
1087
|
+
define: options.define,
|
|
1088
|
+
project: options.project,
|
|
1089
|
+
sourceAnalysis: options.sourceAnalysis,
|
|
1090
|
+
vitePlugins: options.vitePlugins,
|
|
1091
|
+
});
|
|
1082
1092
|
const prerenderedEntries = await mapWithBuildConcurrency(options.routes.filter((route) => route.kind === "page"), async (route) => {
|
|
1083
1093
|
const routeFile = relative(options.project.projectRoot, route.file).split(sep).join("/");
|
|
1084
1094
|
const analysis = options.sourceAnalysis.byRouteFile.get(routeFile);
|
|
@@ -1095,6 +1105,7 @@ async function prerenderStaticRoutes(options) {
|
|
|
1095
1105
|
define: options.define,
|
|
1096
1106
|
importPolicy,
|
|
1097
1107
|
request: new Request(`http://mreact.local${pathname}`),
|
|
1108
|
+
serverModuleCacheVersion,
|
|
1098
1109
|
serverModules: serverModuleMap,
|
|
1099
1110
|
vitePlugins: options.vitePlugins,
|
|
1100
1111
|
});
|
|
@@ -1120,6 +1131,19 @@ async function prerenderStaticRoutes(options) {
|
|
|
1120
1131
|
}
|
|
1121
1132
|
return prerendered;
|
|
1122
1133
|
}
|
|
1134
|
+
function buildPrerenderServerModuleCacheVersion(options) {
|
|
1135
|
+
const sourceHashes = Array.from(options.sourceAnalysis.byFile.entries())
|
|
1136
|
+
.map(([file, analysis]) => [file, analysis.sourceHash])
|
|
1137
|
+
.sort(([left], [right]) => left.localeCompare(right));
|
|
1138
|
+
return `build-prerender:${hashText(JSON.stringify({
|
|
1139
|
+
allowedSourceDirs: [...options.project.allowedSourceDirs].sort(),
|
|
1140
|
+
projectRoot: options.project.projectRoot,
|
|
1141
|
+
routesDir: options.project.routesDir,
|
|
1142
|
+
sourceHashes,
|
|
1143
|
+
viteDefine: viteDefineCacheKey(options.define),
|
|
1144
|
+
vitePlugins: vitePluginsCacheKey(options.vitePlugins),
|
|
1145
|
+
})).slice(0, 16)}`;
|
|
1146
|
+
}
|
|
1123
1147
|
async function prerenderPathsForRoute(route, analysis, vitePlugins) {
|
|
1124
1148
|
if (route.segments.every((segment) => segment.kind === "static")) {
|
|
1125
1149
|
return [route.path];
|
|
@@ -3602,6 +3626,7 @@ async function writeClientRouteBundles(options) {
|
|
|
3602
3626
|
pageRoutes,
|
|
3603
3627
|
projectRoot: options.projectRoot,
|
|
3604
3628
|
sourceAnalysis: options.sourceAnalysis,
|
|
3629
|
+
sourceDirs: options.sourceDirs,
|
|
3605
3630
|
vitePlugins: options.vitePlugins,
|
|
3606
3631
|
});
|
|
3607
3632
|
const specialCssAssets = await writeSpecialRouteCssAssetBatches({
|
|
@@ -3611,6 +3636,7 @@ async function writeClientRouteBundles(options) {
|
|
|
3611
3636
|
clientDir: options.clientDir,
|
|
3612
3637
|
projectRoot: options.projectRoot,
|
|
3613
3638
|
sourceAnalysis: options.sourceAnalysis,
|
|
3639
|
+
sourceDirs: options.sourceDirs,
|
|
3614
3640
|
vitePlugins: options.vitePlugins,
|
|
3615
3641
|
});
|
|
3616
3642
|
const entries = await Promise.all(options.routes.map(async (route) => {
|
|
@@ -3808,6 +3834,7 @@ async function writeSpecialRouteCssAssetBatches(options) {
|
|
|
3808
3834
|
pageFile: file,
|
|
3809
3835
|
projectRoot: options.projectRoot,
|
|
3810
3836
|
routeIds: [specialBoundaryRouteId(options.appDir, file)],
|
|
3837
|
+
sourceDirs: options.sourceDirs,
|
|
3811
3838
|
vitePlugins: options.vitePlugins,
|
|
3812
3839
|
});
|
|
3813
3840
|
return batch.css.length === 0
|
|
@@ -3866,6 +3893,7 @@ async function writeRouteCssAssetBatches(options) {
|
|
|
3866
3893
|
pageFile: group.routeFiles[0] ?? options.appDir,
|
|
3867
3894
|
projectRoot: options.projectRoot,
|
|
3868
3895
|
routeIds: group.routeIds,
|
|
3896
|
+
sourceDirs: options.sourceDirs,
|
|
3869
3897
|
vitePlugins: options.vitePlugins,
|
|
3870
3898
|
}),
|
|
3871
3899
|
]);
|
|
@@ -3901,7 +3929,13 @@ async function writeRouteCssAssetsForFiles(options) {
|
|
|
3901
3929
|
minify: true,
|
|
3902
3930
|
platform: "browser",
|
|
3903
3931
|
root: options.projectRoot,
|
|
3904
|
-
vitePlugins:
|
|
3932
|
+
vitePlugins: [
|
|
3933
|
+
productionRouteCssTailwindSourcePlugin({
|
|
3934
|
+
cssFiles,
|
|
3935
|
+
sourceDirs: options.sourceDirs,
|
|
3936
|
+
}),
|
|
3937
|
+
...(options.vitePlugins ?? []),
|
|
3938
|
+
],
|
|
3905
3939
|
});
|
|
3906
3940
|
const cssAssets = (output.assets ?? []).filter((asset) => asset.fileName.endsWith(".css"));
|
|
3907
3941
|
const nonCssAssets = (output.assets ?? []).filter((asset) => !asset.fileName.endsWith(".css"));
|
|
@@ -3925,6 +3959,24 @@ async function writeRouteCssAssetsForFiles(options) {
|
|
|
3925
3959
|
}
|
|
3926
3960
|
return { assets: writtenAssets.sort(), css: written };
|
|
3927
3961
|
}
|
|
3962
|
+
function productionRouteCssTailwindSourcePlugin(options) {
|
|
3963
|
+
const cssFiles = new Set(options.cssFiles);
|
|
3964
|
+
return {
|
|
3965
|
+
name: "mreact-production-route-css-tailwind-source",
|
|
3966
|
+
enforce: "pre",
|
|
3967
|
+
transform(code, id) {
|
|
3968
|
+
const [filename] = id.split(/[?#]/, 1);
|
|
3969
|
+
if (filename === undefined || !cssFiles.has(filename)) {
|
|
3970
|
+
return;
|
|
3971
|
+
}
|
|
3972
|
+
return prependTailwindSourceDirectives({
|
|
3973
|
+
code,
|
|
3974
|
+
cssFile: filename,
|
|
3975
|
+
sourceDirs: options.sourceDirs,
|
|
3976
|
+
});
|
|
3977
|
+
},
|
|
3978
|
+
};
|
|
3979
|
+
}
|
|
3928
3980
|
function applyClientSourceMapReference(options) {
|
|
3929
3981
|
const sourceMappingUrlPattern = /\n?\/\/# sourceMappingURL=route\.js\.map\s*$/;
|
|
3930
3982
|
if (options.sourceMaps === "none") {
|