@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.
@@ -426,7 +426,16 @@ class ManifestBuilder {
426
426
  }
427
427
  }
428
428
  async function requires_server(route, loader) {
429
- return await layout_requires_server(route, loader) || await view_requires_server(route, loader);
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
- if ((error == null ? void 0 : error.code) === "MODULE_NOT_FOUND" || (error == null ? void 0 : error.code) === "ERR_MODULE_NOT_FOUND") {
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 clientComponentDir = this.isProd ? "assets" : this.componentDir;
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;