@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/index.cjs
CHANGED
|
@@ -10130,7 +10130,30 @@ function loadLayoutServerHook(layoutFile) {
|
|
|
10130
10130
|
try {
|
|
10131
10131
|
const mod = require(file);
|
|
10132
10132
|
const serverHook = typeof mod?.getServerSideProps === "function" ? mod.getServerSideProps : null;
|
|
10133
|
-
|
|
10133
|
+
let middlewares = [];
|
|
10134
|
+
const rawMiddlewares = mod?.[NAMING.BEFORE_MIDDLEWARES];
|
|
10135
|
+
if (rawMiddlewares !== void 0) {
|
|
10136
|
+
if (!Array.isArray(rawMiddlewares)) {
|
|
10137
|
+
console.warn(
|
|
10138
|
+
`[framework][server-hook] ${NAMING.BEFORE_MIDDLEWARES} must be an array in ${file}, ignoring invalid value`
|
|
10139
|
+
);
|
|
10140
|
+
} else {
|
|
10141
|
+
for (let i = 0; i < rawMiddlewares.length; i++) {
|
|
10142
|
+
const mw = rawMiddlewares[i];
|
|
10143
|
+
if (typeof mw !== "function") {
|
|
10144
|
+
console.warn(
|
|
10145
|
+
`[framework][server-hook] Middleware at index ${i} in ${NAMING.BEFORE_MIDDLEWARES} is not a function in ${file}, skipping`
|
|
10146
|
+
);
|
|
10147
|
+
continue;
|
|
10148
|
+
}
|
|
10149
|
+
middlewares.push(mw);
|
|
10150
|
+
}
|
|
10151
|
+
}
|
|
10152
|
+
}
|
|
10153
|
+
return {
|
|
10154
|
+
serverHook,
|
|
10155
|
+
middlewares
|
|
10156
|
+
};
|
|
10134
10157
|
} catch (error) {
|
|
10135
10158
|
console.error(
|
|
10136
10159
|
`[framework][server-hook] Error loading layout server hook from ${file}:`,
|
|
@@ -10215,9 +10238,16 @@ function loadRoutes(appDir) {
|
|
|
10215
10238
|
appDir
|
|
10216
10239
|
);
|
|
10217
10240
|
const layoutServerHooks = [];
|
|
10241
|
+
const layoutMiddlewares = [];
|
|
10218
10242
|
for (const layoutFile of layoutFiles) {
|
|
10219
|
-
const
|
|
10220
|
-
|
|
10243
|
+
const layoutHookData = loadLayoutServerHook(layoutFile);
|
|
10244
|
+
if (layoutHookData) {
|
|
10245
|
+
layoutServerHooks.push(layoutHookData.serverHook);
|
|
10246
|
+
layoutMiddlewares.push(layoutHookData.middlewares);
|
|
10247
|
+
} else {
|
|
10248
|
+
layoutServerHooks.push(null);
|
|
10249
|
+
layoutMiddlewares.push([]);
|
|
10250
|
+
}
|
|
10221
10251
|
}
|
|
10222
10252
|
const { middlewares, serverHook, dynamic, generateStaticParams } = loadServerHookForDir(currentDir);
|
|
10223
10253
|
routes.push({
|
|
@@ -10233,6 +10263,8 @@ function loadRoutes(appDir) {
|
|
|
10233
10263
|
// Keep 'loader' field name for backward compatibility
|
|
10234
10264
|
layoutServerHooks,
|
|
10235
10265
|
// Server hooks for each layout (same order as layouts)
|
|
10266
|
+
layoutMiddlewares,
|
|
10267
|
+
// Middlewares for each layout (same order as layouts)
|
|
10236
10268
|
dynamic,
|
|
10237
10269
|
generateStaticParams
|
|
10238
10270
|
});
|
|
@@ -10796,9 +10828,16 @@ function loadRoutesFromManifest(projectRoot) {
|
|
|
10796
10828
|
);
|
|
10797
10829
|
const pageDir = import_path10.default.dirname(pageFile);
|
|
10798
10830
|
const layoutServerHooks = [];
|
|
10831
|
+
const layoutMiddlewares = [];
|
|
10799
10832
|
for (const layoutFile of layoutFiles) {
|
|
10800
|
-
const
|
|
10801
|
-
|
|
10833
|
+
const layoutHookData = loadLayoutServerHook(layoutFile);
|
|
10834
|
+
if (layoutHookData) {
|
|
10835
|
+
layoutServerHooks.push(layoutHookData.serverHook);
|
|
10836
|
+
layoutMiddlewares.push(layoutHookData.middlewares);
|
|
10837
|
+
} else {
|
|
10838
|
+
layoutServerHooks.push(null);
|
|
10839
|
+
layoutMiddlewares.push([]);
|
|
10840
|
+
}
|
|
10802
10841
|
}
|
|
10803
10842
|
const { middlewares, serverHook, dynamic, generateStaticParams } = loadServerHookForDir(pageDir);
|
|
10804
10843
|
pageRoutes.push({
|
|
@@ -10814,6 +10853,8 @@ function loadRoutesFromManifest(projectRoot) {
|
|
|
10814
10853
|
// Keep 'loader' field name for backward compatibility
|
|
10815
10854
|
layoutServerHooks,
|
|
10816
10855
|
// Server hooks for each layout (same order as layouts)
|
|
10856
|
+
layoutMiddlewares,
|
|
10857
|
+
// Middlewares for each layout (same order as layouts)
|
|
10817
10858
|
dynamic: entry.dynamic ?? dynamic,
|
|
10818
10859
|
generateStaticParams
|
|
10819
10860
|
});
|
|
@@ -11342,9 +11383,16 @@ function loadNotFoundRouteFromFilesystem(appDir) {
|
|
|
11342
11383
|
appDir
|
|
11343
11384
|
);
|
|
11344
11385
|
const layoutServerHooks = [];
|
|
11386
|
+
const layoutMiddlewares = [];
|
|
11345
11387
|
for (const layoutFile of layoutFiles) {
|
|
11346
|
-
const
|
|
11347
|
-
|
|
11388
|
+
const layoutHookData = loadLayoutServerHook(layoutFile);
|
|
11389
|
+
if (layoutHookData) {
|
|
11390
|
+
layoutServerHooks.push(layoutHookData.serverHook);
|
|
11391
|
+
layoutMiddlewares.push(layoutHookData.middlewares);
|
|
11392
|
+
} else {
|
|
11393
|
+
layoutServerHooks.push(null);
|
|
11394
|
+
layoutMiddlewares.push([]);
|
|
11395
|
+
}
|
|
11348
11396
|
}
|
|
11349
11397
|
const { middlewares, serverHook, dynamic, generateStaticParams } = loadServerHookForDir(notFoundDir);
|
|
11350
11398
|
return {
|
|
@@ -11360,6 +11408,8 @@ function loadNotFoundRouteFromFilesystem(appDir) {
|
|
|
11360
11408
|
// Keep 'loader' field name for backward compatibility
|
|
11361
11409
|
layoutServerHooks,
|
|
11362
11410
|
// Server hooks for each layout (same order as layouts)
|
|
11411
|
+
layoutMiddlewares,
|
|
11412
|
+
// Middlewares for each layout (same order as layouts)
|
|
11363
11413
|
dynamic,
|
|
11364
11414
|
generateStaticParams
|
|
11365
11415
|
};
|
|
@@ -11391,9 +11441,16 @@ function loadErrorRouteFromFilesystem(appDir) {
|
|
|
11391
11441
|
appDir
|
|
11392
11442
|
);
|
|
11393
11443
|
const layoutServerHooks = [];
|
|
11444
|
+
const layoutMiddlewares = [];
|
|
11394
11445
|
for (const layoutFile of layoutFiles) {
|
|
11395
|
-
const
|
|
11396
|
-
|
|
11446
|
+
const layoutHookData = loadLayoutServerHook(layoutFile);
|
|
11447
|
+
if (layoutHookData) {
|
|
11448
|
+
layoutServerHooks.push(layoutHookData.serverHook);
|
|
11449
|
+
layoutMiddlewares.push(layoutHookData.middlewares);
|
|
11450
|
+
} else {
|
|
11451
|
+
layoutServerHooks.push(null);
|
|
11452
|
+
layoutMiddlewares.push([]);
|
|
11453
|
+
}
|
|
11397
11454
|
}
|
|
11398
11455
|
const { middlewares, serverHook, dynamic, generateStaticParams } = loadServerHookForDir(appDir);
|
|
11399
11456
|
return {
|
|
@@ -11409,6 +11466,8 @@ function loadErrorRouteFromFilesystem(appDir) {
|
|
|
11409
11466
|
// Keep 'loader' field name for backward compatibility
|
|
11410
11467
|
layoutServerHooks,
|
|
11411
11468
|
// Server hooks for each layout (same order as layouts)
|
|
11469
|
+
layoutMiddlewares,
|
|
11470
|
+
// Middlewares for each layout (same order as layouts)
|
|
11412
11471
|
dynamic,
|
|
11413
11472
|
generateStaticParams
|
|
11414
11473
|
};
|
|
@@ -15230,6 +15289,29 @@ async function handlePageRequestInternal(options) {
|
|
|
15230
15289
|
if (!skipLayoutHooks && notFoundPage.layoutServerHooks && notFoundPage.layoutServerHooks.length > 0) {
|
|
15231
15290
|
for (let i = 0; i < notFoundPage.layoutServerHooks.length; i++) {
|
|
15232
15291
|
const layoutServerHook = notFoundPage.layoutServerHooks[i];
|
|
15292
|
+
const layoutMiddlewares = notFoundPage.layoutMiddlewares?.[i] || [];
|
|
15293
|
+
if (layoutMiddlewares.length > 0) {
|
|
15294
|
+
for (const mw of layoutMiddlewares) {
|
|
15295
|
+
try {
|
|
15296
|
+
await Promise.resolve(
|
|
15297
|
+
mw(ctx2, async () => {
|
|
15298
|
+
})
|
|
15299
|
+
);
|
|
15300
|
+
} catch (error) {
|
|
15301
|
+
const reqLogger2 = getRequestLogger(req);
|
|
15302
|
+
const layoutFile = notFoundPage.layoutFiles[i];
|
|
15303
|
+
const relativeLayoutPath = layoutFile ? import_path23.default.relative(projectRoot || process.cwd(), layoutFile) : "unknown";
|
|
15304
|
+
reqLogger2.error("Layout middleware failed for not-found page", error instanceof Error ? error : new Error(String(error)), {
|
|
15305
|
+
layoutIndex: i,
|
|
15306
|
+
layoutFile: relativeLayoutPath
|
|
15307
|
+
});
|
|
15308
|
+
throw error;
|
|
15309
|
+
}
|
|
15310
|
+
if (ctx2.res.headersSent) {
|
|
15311
|
+
return;
|
|
15312
|
+
}
|
|
15313
|
+
}
|
|
15314
|
+
}
|
|
15233
15315
|
if (layoutServerHook) {
|
|
15234
15316
|
try {
|
|
15235
15317
|
const layoutResult = await layoutServerHook(ctx2);
|
|
@@ -15347,6 +15429,29 @@ async function handlePageRequestInternal(options) {
|
|
|
15347
15429
|
if (!skipLayoutHooks && route.layoutServerHooks && route.layoutServerHooks.length > 0) {
|
|
15348
15430
|
for (let i = 0; i < route.layoutServerHooks.length; i++) {
|
|
15349
15431
|
const layoutServerHook = route.layoutServerHooks[i];
|
|
15432
|
+
const layoutMiddlewares = route.layoutMiddlewares?.[i] || [];
|
|
15433
|
+
if (layoutMiddlewares.length > 0) {
|
|
15434
|
+
for (const mw of layoutMiddlewares) {
|
|
15435
|
+
try {
|
|
15436
|
+
await Promise.resolve(
|
|
15437
|
+
mw(ctx, async () => {
|
|
15438
|
+
})
|
|
15439
|
+
);
|
|
15440
|
+
} catch (error) {
|
|
15441
|
+
const layoutFile = route.layoutFiles[i];
|
|
15442
|
+
const relativeLayoutPath = layoutFile ? import_path23.default.relative(projectRoot || process.cwd(), layoutFile) : "unknown";
|
|
15443
|
+
reqLogger.error("Layout middleware failed", error instanceof Error ? error : new Error(String(error)), {
|
|
15444
|
+
route: route.pattern,
|
|
15445
|
+
layoutIndex: i,
|
|
15446
|
+
layoutFile: relativeLayoutPath
|
|
15447
|
+
});
|
|
15448
|
+
throw error;
|
|
15449
|
+
}
|
|
15450
|
+
if (ctx.res.headersSent) {
|
|
15451
|
+
return;
|
|
15452
|
+
}
|
|
15453
|
+
}
|
|
15454
|
+
}
|
|
15350
15455
|
if (layoutServerHook) {
|
|
15351
15456
|
try {
|
|
15352
15457
|
const layoutResult = await layoutServerHook(ctx);
|
|
@@ -15542,6 +15647,28 @@ async function renderErrorPageWithStream(errorPage, req, res, error, routeChunks
|
|
|
15542
15647
|
if (!skipLayoutHooks && errorPage.layoutServerHooks && errorPage.layoutServerHooks.length > 0) {
|
|
15543
15648
|
for (let i = 0; i < errorPage.layoutServerHooks.length; i++) {
|
|
15544
15649
|
const layoutServerHook = errorPage.layoutServerHooks[i];
|
|
15650
|
+
const layoutMiddlewares = errorPage.layoutMiddlewares?.[i] || [];
|
|
15651
|
+
if (layoutMiddlewares.length > 0) {
|
|
15652
|
+
for (const mw of layoutMiddlewares) {
|
|
15653
|
+
try {
|
|
15654
|
+
await Promise.resolve(
|
|
15655
|
+
mw(ctx, async () => {
|
|
15656
|
+
})
|
|
15657
|
+
);
|
|
15658
|
+
} catch (error2) {
|
|
15659
|
+
const layoutFile = errorPage.layoutFiles[i];
|
|
15660
|
+
const relativeLayoutPath = layoutFile ? import_path23.default.relative(projectRoot || process.cwd(), layoutFile) : "unknown";
|
|
15661
|
+
reqLogger.error("Layout middleware failed for error page", error2 instanceof Error ? error2 : new Error(String(error2)), {
|
|
15662
|
+
layoutIndex: i,
|
|
15663
|
+
layoutFile: relativeLayoutPath
|
|
15664
|
+
});
|
|
15665
|
+
throw error2;
|
|
15666
|
+
}
|
|
15667
|
+
if (ctx.res.headersSent) {
|
|
15668
|
+
return;
|
|
15669
|
+
}
|
|
15670
|
+
}
|
|
15671
|
+
}
|
|
15545
15672
|
if (layoutServerHook) {
|
|
15546
15673
|
try {
|
|
15547
15674
|
const layoutResult = await layoutServerHook(ctx);
|