@lolyjs/core 0.2.0-alpha.19 → 0.2.0-alpha.20
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/cli.cjs +136 -9
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +136 -9
- package/dist/cli.js.map +1 -1
- package/dist/index.cjs +136 -9
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +136 -9
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.cjs
CHANGED
|
@@ -10052,7 +10052,30 @@ function loadLayoutServerHook(layoutFile) {
|
|
|
10052
10052
|
try {
|
|
10053
10053
|
const mod = require(file);
|
|
10054
10054
|
const serverHook = typeof mod?.getServerSideProps === "function" ? mod.getServerSideProps : null;
|
|
10055
|
-
|
|
10055
|
+
let middlewares = [];
|
|
10056
|
+
const rawMiddlewares = mod?.[NAMING.BEFORE_MIDDLEWARES];
|
|
10057
|
+
if (rawMiddlewares !== void 0) {
|
|
10058
|
+
if (!Array.isArray(rawMiddlewares)) {
|
|
10059
|
+
console.warn(
|
|
10060
|
+
`[framework][server-hook] ${NAMING.BEFORE_MIDDLEWARES} must be an array in ${file}, ignoring invalid value`
|
|
10061
|
+
);
|
|
10062
|
+
} else {
|
|
10063
|
+
for (let i = 0; i < rawMiddlewares.length; i++) {
|
|
10064
|
+
const mw = rawMiddlewares[i];
|
|
10065
|
+
if (typeof mw !== "function") {
|
|
10066
|
+
console.warn(
|
|
10067
|
+
`[framework][server-hook] Middleware at index ${i} in ${NAMING.BEFORE_MIDDLEWARES} is not a function in ${file}, skipping`
|
|
10068
|
+
);
|
|
10069
|
+
continue;
|
|
10070
|
+
}
|
|
10071
|
+
middlewares.push(mw);
|
|
10072
|
+
}
|
|
10073
|
+
}
|
|
10074
|
+
}
|
|
10075
|
+
return {
|
|
10076
|
+
serverHook,
|
|
10077
|
+
middlewares
|
|
10078
|
+
};
|
|
10056
10079
|
} catch (error) {
|
|
10057
10080
|
console.error(
|
|
10058
10081
|
`[framework][server-hook] Error loading layout server hook from ${file}:`,
|
|
@@ -10137,9 +10160,16 @@ function loadRoutes(appDir) {
|
|
|
10137
10160
|
appDir
|
|
10138
10161
|
);
|
|
10139
10162
|
const layoutServerHooks = [];
|
|
10163
|
+
const layoutMiddlewares = [];
|
|
10140
10164
|
for (const layoutFile of layoutFiles) {
|
|
10141
|
-
const
|
|
10142
|
-
|
|
10165
|
+
const layoutHookData = loadLayoutServerHook(layoutFile);
|
|
10166
|
+
if (layoutHookData) {
|
|
10167
|
+
layoutServerHooks.push(layoutHookData.serverHook);
|
|
10168
|
+
layoutMiddlewares.push(layoutHookData.middlewares);
|
|
10169
|
+
} else {
|
|
10170
|
+
layoutServerHooks.push(null);
|
|
10171
|
+
layoutMiddlewares.push([]);
|
|
10172
|
+
}
|
|
10143
10173
|
}
|
|
10144
10174
|
const { middlewares, serverHook, dynamic, generateStaticParams } = loadServerHookForDir(currentDir);
|
|
10145
10175
|
routes.push({
|
|
@@ -10155,6 +10185,8 @@ function loadRoutes(appDir) {
|
|
|
10155
10185
|
// Keep 'loader' field name for backward compatibility
|
|
10156
10186
|
layoutServerHooks,
|
|
10157
10187
|
// Server hooks for each layout (same order as layouts)
|
|
10188
|
+
layoutMiddlewares,
|
|
10189
|
+
// Middlewares for each layout (same order as layouts)
|
|
10158
10190
|
dynamic,
|
|
10159
10191
|
generateStaticParams
|
|
10160
10192
|
});
|
|
@@ -10718,9 +10750,16 @@ function loadRoutesFromManifest(projectRoot) {
|
|
|
10718
10750
|
);
|
|
10719
10751
|
const pageDir = import_path9.default.dirname(pageFile);
|
|
10720
10752
|
const layoutServerHooks = [];
|
|
10753
|
+
const layoutMiddlewares = [];
|
|
10721
10754
|
for (const layoutFile of layoutFiles) {
|
|
10722
|
-
const
|
|
10723
|
-
|
|
10755
|
+
const layoutHookData = loadLayoutServerHook(layoutFile);
|
|
10756
|
+
if (layoutHookData) {
|
|
10757
|
+
layoutServerHooks.push(layoutHookData.serverHook);
|
|
10758
|
+
layoutMiddlewares.push(layoutHookData.middlewares);
|
|
10759
|
+
} else {
|
|
10760
|
+
layoutServerHooks.push(null);
|
|
10761
|
+
layoutMiddlewares.push([]);
|
|
10762
|
+
}
|
|
10724
10763
|
}
|
|
10725
10764
|
const { middlewares, serverHook, dynamic, generateStaticParams } = loadServerHookForDir(pageDir);
|
|
10726
10765
|
pageRoutes.push({
|
|
@@ -10736,6 +10775,8 @@ function loadRoutesFromManifest(projectRoot) {
|
|
|
10736
10775
|
// Keep 'loader' field name for backward compatibility
|
|
10737
10776
|
layoutServerHooks,
|
|
10738
10777
|
// Server hooks for each layout (same order as layouts)
|
|
10778
|
+
layoutMiddlewares,
|
|
10779
|
+
// Middlewares for each layout (same order as layouts)
|
|
10739
10780
|
dynamic: entry.dynamic ?? dynamic,
|
|
10740
10781
|
generateStaticParams
|
|
10741
10782
|
});
|
|
@@ -11264,9 +11305,16 @@ function loadNotFoundRouteFromFilesystem(appDir) {
|
|
|
11264
11305
|
appDir
|
|
11265
11306
|
);
|
|
11266
11307
|
const layoutServerHooks = [];
|
|
11308
|
+
const layoutMiddlewares = [];
|
|
11267
11309
|
for (const layoutFile of layoutFiles) {
|
|
11268
|
-
const
|
|
11269
|
-
|
|
11310
|
+
const layoutHookData = loadLayoutServerHook(layoutFile);
|
|
11311
|
+
if (layoutHookData) {
|
|
11312
|
+
layoutServerHooks.push(layoutHookData.serverHook);
|
|
11313
|
+
layoutMiddlewares.push(layoutHookData.middlewares);
|
|
11314
|
+
} else {
|
|
11315
|
+
layoutServerHooks.push(null);
|
|
11316
|
+
layoutMiddlewares.push([]);
|
|
11317
|
+
}
|
|
11270
11318
|
}
|
|
11271
11319
|
const { middlewares, serverHook, dynamic, generateStaticParams } = loadServerHookForDir(notFoundDir);
|
|
11272
11320
|
return {
|
|
@@ -11282,6 +11330,8 @@ function loadNotFoundRouteFromFilesystem(appDir) {
|
|
|
11282
11330
|
// Keep 'loader' field name for backward compatibility
|
|
11283
11331
|
layoutServerHooks,
|
|
11284
11332
|
// Server hooks for each layout (same order as layouts)
|
|
11333
|
+
layoutMiddlewares,
|
|
11334
|
+
// Middlewares for each layout (same order as layouts)
|
|
11285
11335
|
dynamic,
|
|
11286
11336
|
generateStaticParams
|
|
11287
11337
|
};
|
|
@@ -11313,9 +11363,16 @@ function loadErrorRouteFromFilesystem(appDir) {
|
|
|
11313
11363
|
appDir
|
|
11314
11364
|
);
|
|
11315
11365
|
const layoutServerHooks = [];
|
|
11366
|
+
const layoutMiddlewares = [];
|
|
11316
11367
|
for (const layoutFile of layoutFiles) {
|
|
11317
|
-
const
|
|
11318
|
-
|
|
11368
|
+
const layoutHookData = loadLayoutServerHook(layoutFile);
|
|
11369
|
+
if (layoutHookData) {
|
|
11370
|
+
layoutServerHooks.push(layoutHookData.serverHook);
|
|
11371
|
+
layoutMiddlewares.push(layoutHookData.middlewares);
|
|
11372
|
+
} else {
|
|
11373
|
+
layoutServerHooks.push(null);
|
|
11374
|
+
layoutMiddlewares.push([]);
|
|
11375
|
+
}
|
|
11319
11376
|
}
|
|
11320
11377
|
const { middlewares, serverHook, dynamic, generateStaticParams } = loadServerHookForDir(appDir);
|
|
11321
11378
|
return {
|
|
@@ -11331,6 +11388,8 @@ function loadErrorRouteFromFilesystem(appDir) {
|
|
|
11331
11388
|
// Keep 'loader' field name for backward compatibility
|
|
11332
11389
|
layoutServerHooks,
|
|
11333
11390
|
// Server hooks for each layout (same order as layouts)
|
|
11391
|
+
layoutMiddlewares,
|
|
11392
|
+
// Middlewares for each layout (same order as layouts)
|
|
11334
11393
|
dynamic,
|
|
11335
11394
|
generateStaticParams
|
|
11336
11395
|
};
|
|
@@ -12800,6 +12859,29 @@ async function handlePageRequestInternal(options) {
|
|
|
12800
12859
|
if (!skipLayoutHooks && notFoundPage.layoutServerHooks && notFoundPage.layoutServerHooks.length > 0) {
|
|
12801
12860
|
for (let i = 0; i < notFoundPage.layoutServerHooks.length; i++) {
|
|
12802
12861
|
const layoutServerHook = notFoundPage.layoutServerHooks[i];
|
|
12862
|
+
const layoutMiddlewares = notFoundPage.layoutMiddlewares?.[i] || [];
|
|
12863
|
+
if (layoutMiddlewares.length > 0) {
|
|
12864
|
+
for (const mw of layoutMiddlewares) {
|
|
12865
|
+
try {
|
|
12866
|
+
await Promise.resolve(
|
|
12867
|
+
mw(ctx2, async () => {
|
|
12868
|
+
})
|
|
12869
|
+
);
|
|
12870
|
+
} catch (error) {
|
|
12871
|
+
const reqLogger2 = getRequestLogger(req);
|
|
12872
|
+
const layoutFile = notFoundPage.layoutFiles[i];
|
|
12873
|
+
const relativeLayoutPath = layoutFile ? import_path19.default.relative(projectRoot || process.cwd(), layoutFile) : "unknown";
|
|
12874
|
+
reqLogger2.error("Layout middleware failed for not-found page", error instanceof Error ? error : new Error(String(error)), {
|
|
12875
|
+
layoutIndex: i,
|
|
12876
|
+
layoutFile: relativeLayoutPath
|
|
12877
|
+
});
|
|
12878
|
+
throw error;
|
|
12879
|
+
}
|
|
12880
|
+
if (ctx2.res.headersSent) {
|
|
12881
|
+
return;
|
|
12882
|
+
}
|
|
12883
|
+
}
|
|
12884
|
+
}
|
|
12803
12885
|
if (layoutServerHook) {
|
|
12804
12886
|
try {
|
|
12805
12887
|
const layoutResult = await layoutServerHook(ctx2);
|
|
@@ -12917,6 +12999,29 @@ async function handlePageRequestInternal(options) {
|
|
|
12917
12999
|
if (!skipLayoutHooks && route.layoutServerHooks && route.layoutServerHooks.length > 0) {
|
|
12918
13000
|
for (let i = 0; i < route.layoutServerHooks.length; i++) {
|
|
12919
13001
|
const layoutServerHook = route.layoutServerHooks[i];
|
|
13002
|
+
const layoutMiddlewares = route.layoutMiddlewares?.[i] || [];
|
|
13003
|
+
if (layoutMiddlewares.length > 0) {
|
|
13004
|
+
for (const mw of layoutMiddlewares) {
|
|
13005
|
+
try {
|
|
13006
|
+
await Promise.resolve(
|
|
13007
|
+
mw(ctx, async () => {
|
|
13008
|
+
})
|
|
13009
|
+
);
|
|
13010
|
+
} catch (error) {
|
|
13011
|
+
const layoutFile = route.layoutFiles[i];
|
|
13012
|
+
const relativeLayoutPath = layoutFile ? import_path19.default.relative(projectRoot || process.cwd(), layoutFile) : "unknown";
|
|
13013
|
+
reqLogger.error("Layout middleware failed", error instanceof Error ? error : new Error(String(error)), {
|
|
13014
|
+
route: route.pattern,
|
|
13015
|
+
layoutIndex: i,
|
|
13016
|
+
layoutFile: relativeLayoutPath
|
|
13017
|
+
});
|
|
13018
|
+
throw error;
|
|
13019
|
+
}
|
|
13020
|
+
if (ctx.res.headersSent) {
|
|
13021
|
+
return;
|
|
13022
|
+
}
|
|
13023
|
+
}
|
|
13024
|
+
}
|
|
12920
13025
|
if (layoutServerHook) {
|
|
12921
13026
|
try {
|
|
12922
13027
|
const layoutResult = await layoutServerHook(ctx);
|
|
@@ -13112,6 +13217,28 @@ async function renderErrorPageWithStream(errorPage, req, res, error, routeChunks
|
|
|
13112
13217
|
if (!skipLayoutHooks && errorPage.layoutServerHooks && errorPage.layoutServerHooks.length > 0) {
|
|
13113
13218
|
for (let i = 0; i < errorPage.layoutServerHooks.length; i++) {
|
|
13114
13219
|
const layoutServerHook = errorPage.layoutServerHooks[i];
|
|
13220
|
+
const layoutMiddlewares = errorPage.layoutMiddlewares?.[i] || [];
|
|
13221
|
+
if (layoutMiddlewares.length > 0) {
|
|
13222
|
+
for (const mw of layoutMiddlewares) {
|
|
13223
|
+
try {
|
|
13224
|
+
await Promise.resolve(
|
|
13225
|
+
mw(ctx, async () => {
|
|
13226
|
+
})
|
|
13227
|
+
);
|
|
13228
|
+
} catch (error2) {
|
|
13229
|
+
const layoutFile = errorPage.layoutFiles[i];
|
|
13230
|
+
const relativeLayoutPath = layoutFile ? import_path19.default.relative(projectRoot || process.cwd(), layoutFile) : "unknown";
|
|
13231
|
+
reqLogger.error("Layout middleware failed for error page", error2 instanceof Error ? error2 : new Error(String(error2)), {
|
|
13232
|
+
layoutIndex: i,
|
|
13233
|
+
layoutFile: relativeLayoutPath
|
|
13234
|
+
});
|
|
13235
|
+
throw error2;
|
|
13236
|
+
}
|
|
13237
|
+
if (ctx.res.headersSent) {
|
|
13238
|
+
return;
|
|
13239
|
+
}
|
|
13240
|
+
}
|
|
13241
|
+
}
|
|
13115
13242
|
if (layoutServerHook) {
|
|
13116
13243
|
try {
|
|
13117
13244
|
const layoutResult = await layoutServerHook(ctx);
|