@noego/forge 0.0.23 → 0.0.25
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/client.cjs +3 -1
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.ts +1 -1
- package/dist/client.mjs +1316 -280
- package/dist/client.mjs.map +1 -1
- package/dist-ssr/server.cjs +53 -6
- package/dist-ssr/server.cjs.map +1 -1
- package/dist-ssr/server.js +53 -6
- package/dist-ssr/server.js.map +1 -1
- package/package.json +3 -2
package/dist-ssr/server.js
CHANGED
|
@@ -426,7 +426,16 @@ class ManifestBuilder {
|
|
|
426
426
|
}
|
|
427
427
|
}
|
|
428
428
|
async function requires_server(route, loader) {
|
|
429
|
-
|
|
429
|
+
const has_middleware = route.middleware && route.middleware.length > 0;
|
|
430
|
+
const has_loaders = await layout_requires_server(route, loader) || await view_requires_server(route, loader);
|
|
431
|
+
const requires_server2 = has_middleware || has_loaders;
|
|
432
|
+
console.log("[MANIFEST]", route.path, {
|
|
433
|
+
has_middleware,
|
|
434
|
+
middleware: route.middleware,
|
|
435
|
+
has_loaders,
|
|
436
|
+
requires_server: requires_server2
|
|
437
|
+
});
|
|
438
|
+
return requires_server2;
|
|
430
439
|
}
|
|
431
440
|
async function layout_requires_server(route, loader) {
|
|
432
441
|
const layout = route.layout;
|
|
@@ -657,16 +666,21 @@ class ComponentManager {
|
|
|
657
666
|
continue;
|
|
658
667
|
}
|
|
659
668
|
try {
|
|
669
|
+
console.log(`[ComponentManager] Trying loader path: ${loaderFilePath}`);
|
|
660
670
|
const module = await import(pathToFileURL(loaderFilePath).href);
|
|
661
671
|
const loader = module == null ? void 0 : module.default;
|
|
672
|
+
console.log(`[ComponentManager] Imported loader module: default=${typeof loader}`);
|
|
662
673
|
if (typeof loader === "function") {
|
|
674
|
+
console.log(`[ComponentManager] Loaded loader function from: ${loaderFilePath}`);
|
|
663
675
|
return loader;
|
|
664
676
|
}
|
|
665
677
|
} catch (error) {
|
|
666
|
-
|
|
678
|
+
const code = (error == null ? void 0 : error.code) || (error == null ? void 0 : error.name) || "UNKNOWN_ERROR";
|
|
679
|
+
if (code === "MODULE_NOT_FOUND" || code === "ERR_MODULE_NOT_FOUND") {
|
|
680
|
+
console.warn(`[ComponentManager] Loader not found at ${loaderFilePath} (${ext}): ${(error == null ? void 0 : error.message) || code}`);
|
|
667
681
|
continue;
|
|
668
682
|
}
|
|
669
|
-
console.error(`[ComponentManager] Failed to load loader for ${componentPath} (${ext}):`, error);
|
|
683
|
+
console.error(`[ComponentManager] Failed to load loader for ${componentPath} (${ext}) at ${loaderFilePath}:`, error);
|
|
670
684
|
}
|
|
671
685
|
}
|
|
672
686
|
return null;
|
|
@@ -1000,8 +1014,18 @@ class ExpressServerAdapter extends ServerAdapter {
|
|
|
1000
1014
|
body: req.body,
|
|
1001
1015
|
context
|
|
1002
1016
|
};
|
|
1017
|
+
console.log("[SERVER] Handling request", req.url, {
|
|
1018
|
+
middleware: route.middleware,
|
|
1019
|
+
accept: req.headers.accept,
|
|
1020
|
+
route_path: route.path,
|
|
1021
|
+
server_api_call
|
|
1022
|
+
});
|
|
1003
1023
|
try {
|
|
1004
1024
|
await this.middleware_adapter.handleMiddleware(req, res, route.middleware || []);
|
|
1025
|
+
console.log("[SERVER] Middleware complete", {
|
|
1026
|
+
headersSent: res.headersSent,
|
|
1027
|
+
statusCode: res.statusCode
|
|
1028
|
+
});
|
|
1005
1029
|
} catch (e) {
|
|
1006
1030
|
console.log("Error in middleware", e);
|
|
1007
1031
|
res.status(500).send(`
|
|
@@ -1012,6 +1036,10 @@ ${e.stack}</pre>
|
|
|
1012
1036
|
`);
|
|
1013
1037
|
return;
|
|
1014
1038
|
}
|
|
1039
|
+
if (res.headersSent) {
|
|
1040
|
+
console.log("[SERVER] Headers already sent by middleware, returning early");
|
|
1041
|
+
return;
|
|
1042
|
+
}
|
|
1015
1043
|
let server_data = await this.api_adapter.getApiData(route, request_data);
|
|
1016
1044
|
if (server_api_call) {
|
|
1017
1045
|
res.header("Cache-Control", "no-store, no-cache, must-revalidate, proxy-revalidate").header("Pragma", "no-cache").header("Expires", "0").type("application/json").send(server_data);
|
|
@@ -1060,7 +1088,27 @@ ${e.stack}</pre>
|
|
|
1060
1088
|
});
|
|
1061
1089
|
const body_render = renderedHtml;
|
|
1062
1090
|
console.log("[SSR DEBUG] render result - body length:", (body_render == null ? void 0 : body_render.length) || 0);
|
|
1063
|
-
const
|
|
1091
|
+
const deriveClientBase = (dir) => {
|
|
1092
|
+
try {
|
|
1093
|
+
const norm = String(dir || "").replace(/\\/g, "/");
|
|
1094
|
+
const marker = "/ssr/";
|
|
1095
|
+
const idx = norm.indexOf(marker);
|
|
1096
|
+
if (idx >= 0) {
|
|
1097
|
+
const suffix = norm.slice(idx + marker.length).replace(/^\/+/, "");
|
|
1098
|
+
return suffix ? `/assets/${suffix}` : "/assets";
|
|
1099
|
+
}
|
|
1100
|
+
for (const hint of ["/components", "/pages"]) {
|
|
1101
|
+
const hIdx = norm.indexOf(hint);
|
|
1102
|
+
if (hIdx >= 0) {
|
|
1103
|
+
const suffix = norm.slice(hIdx + 1).replace(/^\/+/, "");
|
|
1104
|
+
return suffix ? `/assets/${suffix}` : "/assets";
|
|
1105
|
+
}
|
|
1106
|
+
}
|
|
1107
|
+
} catch {
|
|
1108
|
+
}
|
|
1109
|
+
return "/assets";
|
|
1110
|
+
};
|
|
1111
|
+
const clientComponentDir = this.isProd ? deriveClientBase(this.componentDir || "") : this.componentDir || "/assets";
|
|
1064
1112
|
const head_routing = `
|
|
1065
1113
|
<script type='text/javascript'>
|
|
1066
1114
|
window.__ROUTING__ = ${JSON.stringify(this.clientRoutes)}
|
|
@@ -1068,6 +1116,7 @@ ${e.stack}</pre>
|
|
|
1068
1116
|
|
|
1069
1117
|
<script type='text/javascript'>
|
|
1070
1118
|
window.__MANIFEST__ = ${JSON.stringify(manifest)}
|
|
1119
|
+
console.log('[MANIFEST INJECTED]', window.__MANIFEST__);
|
|
1071
1120
|
<\/script>
|
|
1072
1121
|
|
|
1073
1122
|
<script type='text/javascript'>
|
|
@@ -1200,8 +1249,6 @@ async function createServer(app, options) {
|
|
|
1200
1249
|
let componentLoader;
|
|
1201
1250
|
let vite;
|
|
1202
1251
|
console.log(`Serving components from ${COMPONENT_DIR}`);
|
|
1203
|
-
const rendererFullPath = typeof full_options.renderer === "string" && full_options.renderer !== "default" ? ensureFullPath(root, full_options.renderer) : ensureFullPath(root, "index.html");
|
|
1204
|
-
path.dirname(rendererFullPath);
|
|
1205
1252
|
const resolveAssetRoot = (entry) => {
|
|
1206
1253
|
if (typeof entry === "function") {
|
|
1207
1254
|
return entry;
|