@lolyjs/core 0.3.0-alpha.2 → 0.3.0-alpha.4
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 +90 -23
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.mjs +90 -23
- package/dist/cli.mjs.map +1 -1
- package/dist/index.cjs +90 -23
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +90 -23
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -10029,6 +10029,9 @@ var INIT_FILE_NAME = "init.server";
|
|
|
10029
10029
|
async function runInitIfExists(projectRoot, serverData) {
|
|
10030
10030
|
try {
|
|
10031
10031
|
let mod = await getServerFile(projectRoot, INIT_FILE_NAME);
|
|
10032
|
+
if (!mod) {
|
|
10033
|
+
return {};
|
|
10034
|
+
}
|
|
10032
10035
|
if (typeof mod?.init === "function") {
|
|
10033
10036
|
const serverContext = { ...serverData };
|
|
10034
10037
|
await mod.init({ serverContext });
|
|
@@ -10154,7 +10157,7 @@ var NAMING = {
|
|
|
10154
10157
|
// Files
|
|
10155
10158
|
SERVER_HOOK: "server.hook"
|
|
10156
10159
|
};
|
|
10157
|
-
async function loadServerHookForDir(currentDir) {
|
|
10160
|
+
async function loadServerHookForDir(currentDir, projectRoot) {
|
|
10158
10161
|
const isDev = process.env.NODE_ENV === "development";
|
|
10159
10162
|
const isBuild = process.env.LOLY_BUILD === "1";
|
|
10160
10163
|
let file = null;
|
|
@@ -10180,10 +10183,24 @@ async function loadServerHookForDir(currentDir) {
|
|
|
10180
10183
|
generateStaticParams: null
|
|
10181
10184
|
};
|
|
10182
10185
|
}
|
|
10186
|
+
let resolvedProjectRoot = projectRoot;
|
|
10187
|
+
if (!resolvedProjectRoot) {
|
|
10188
|
+
let current = import_path4.default.resolve(currentDir);
|
|
10189
|
+
while (current !== import_path4.default.dirname(current)) {
|
|
10190
|
+
if (import_fs4.default.existsSync(import_path4.default.join(current, "package.json"))) {
|
|
10191
|
+
resolvedProjectRoot = current;
|
|
10192
|
+
break;
|
|
10193
|
+
}
|
|
10194
|
+
current = import_path4.default.dirname(current);
|
|
10195
|
+
}
|
|
10196
|
+
if (!resolvedProjectRoot) {
|
|
10197
|
+
resolvedProjectRoot = currentDir;
|
|
10198
|
+
}
|
|
10199
|
+
}
|
|
10183
10200
|
let mod;
|
|
10184
10201
|
try {
|
|
10185
10202
|
const { loadModule: loadModule2 } = await Promise.resolve().then(() => (init_module_loader(), module_loader_exports));
|
|
10186
|
-
mod = await loadModule2(file, { projectRoot:
|
|
10203
|
+
mod = await loadModule2(file, { projectRoot: resolvedProjectRoot });
|
|
10187
10204
|
} catch (error) {
|
|
10188
10205
|
console.error(
|
|
10189
10206
|
`[framework][server-hook] Error loading server hook from ${file}:`,
|
|
@@ -10226,7 +10243,7 @@ async function loadServerHookForDir(currentDir) {
|
|
|
10226
10243
|
generateStaticParams
|
|
10227
10244
|
};
|
|
10228
10245
|
}
|
|
10229
|
-
async function loadLayoutServerHook(layoutFile) {
|
|
10246
|
+
async function loadLayoutServerHook(layoutFile, projectRoot) {
|
|
10230
10247
|
const layoutDir = import_path4.default.dirname(layoutFile);
|
|
10231
10248
|
const layoutExt = import_path4.default.extname(layoutFile);
|
|
10232
10249
|
const layoutBasename = import_path4.default.basename(layoutFile, layoutExt);
|
|
@@ -10252,7 +10269,20 @@ async function loadLayoutServerHook(layoutFile) {
|
|
|
10252
10269
|
}
|
|
10253
10270
|
try {
|
|
10254
10271
|
const { loadModule: loadModule2 } = await Promise.resolve().then(() => (init_module_loader(), module_loader_exports));
|
|
10255
|
-
|
|
10272
|
+
if (!projectRoot) {
|
|
10273
|
+
let current = import_path4.default.dirname(layoutFile);
|
|
10274
|
+
while (current !== import_path4.default.dirname(current)) {
|
|
10275
|
+
if (import_fs4.default.existsSync(import_path4.default.join(current, "package.json"))) {
|
|
10276
|
+
projectRoot = current;
|
|
10277
|
+
break;
|
|
10278
|
+
}
|
|
10279
|
+
current = import_path4.default.dirname(current);
|
|
10280
|
+
}
|
|
10281
|
+
if (!projectRoot) {
|
|
10282
|
+
projectRoot = import_path4.default.dirname(layoutFile);
|
|
10283
|
+
}
|
|
10284
|
+
}
|
|
10285
|
+
const mod = await loadModule2(file, { projectRoot });
|
|
10256
10286
|
const serverHook = typeof mod?.getServerSideProps === "function" ? mod.getServerSideProps : null;
|
|
10257
10287
|
let middlewares = [];
|
|
10258
10288
|
const rawMiddlewares = mod?.[NAMING.BEFORE_MIDDLEWARES];
|
|
@@ -10340,6 +10370,15 @@ async function loadRoutes(appDir) {
|
|
|
10340
10370
|
if (!import_fs5.default.existsSync(appDir)) {
|
|
10341
10371
|
return [];
|
|
10342
10372
|
}
|
|
10373
|
+
let projectRoot = appDir;
|
|
10374
|
+
let current = import_path5.default.resolve(appDir);
|
|
10375
|
+
while (current !== import_path5.default.dirname(current)) {
|
|
10376
|
+
if (import_fs5.default.existsSync(import_path5.default.join(current, "package.json"))) {
|
|
10377
|
+
projectRoot = current;
|
|
10378
|
+
break;
|
|
10379
|
+
}
|
|
10380
|
+
current = import_path5.default.dirname(current);
|
|
10381
|
+
}
|
|
10343
10382
|
const routes = [];
|
|
10344
10383
|
async function walk(currentDir) {
|
|
10345
10384
|
const entries = import_fs5.default.readdirSync(currentDir, { withFileTypes: true });
|
|
@@ -10358,7 +10397,7 @@ async function loadRoutes(appDir) {
|
|
|
10358
10397
|
const { regex, paramNames } = buildRegexFromRoutePath(routePath);
|
|
10359
10398
|
const { loadDefaultExport: loadDefaultExport2 } = await Promise.resolve().then(() => (init_module_loader(), module_loader_exports));
|
|
10360
10399
|
const component = await loadDefaultExport2(fullPath, {
|
|
10361
|
-
projectRoot
|
|
10400
|
+
projectRoot
|
|
10362
10401
|
});
|
|
10363
10402
|
if (!component) {
|
|
10364
10403
|
continue;
|
|
@@ -10370,7 +10409,7 @@ async function loadRoutes(appDir) {
|
|
|
10370
10409
|
const layoutServerHooks = [];
|
|
10371
10410
|
const layoutMiddlewares = [];
|
|
10372
10411
|
for (const layoutFile of layoutFiles) {
|
|
10373
|
-
const layoutHookData = await loadLayoutServerHook(layoutFile);
|
|
10412
|
+
const layoutHookData = await loadLayoutServerHook(layoutFile, projectRoot);
|
|
10374
10413
|
if (layoutHookData) {
|
|
10375
10414
|
layoutServerHooks.push(layoutHookData.serverHook);
|
|
10376
10415
|
layoutMiddlewares.push(layoutHookData.middlewares);
|
|
@@ -10379,7 +10418,7 @@ async function loadRoutes(appDir) {
|
|
|
10379
10418
|
layoutMiddlewares.push([]);
|
|
10380
10419
|
}
|
|
10381
10420
|
}
|
|
10382
|
-
const { middlewares, serverHook, dynamic, generateStaticParams } = await loadServerHookForDir(currentDir);
|
|
10421
|
+
const { middlewares, serverHook, dynamic, generateStaticParams } = await loadServerHookForDir(currentDir, projectRoot);
|
|
10383
10422
|
routes.push({
|
|
10384
10423
|
pattern: routePath,
|
|
10385
10424
|
regex,
|
|
@@ -10975,7 +11014,7 @@ async function loadRoutesFromManifest(projectRoot) {
|
|
|
10975
11014
|
const layoutServerHooks = [];
|
|
10976
11015
|
const layoutMiddlewares = [];
|
|
10977
11016
|
for (const layoutFile of layoutFiles) {
|
|
10978
|
-
const layoutHookData = await loadLayoutServerHook(layoutFile);
|
|
11017
|
+
const layoutHookData = await loadLayoutServerHook(layoutFile, projectRoot);
|
|
10979
11018
|
if (layoutHookData) {
|
|
10980
11019
|
layoutServerHooks.push(layoutHookData.serverHook);
|
|
10981
11020
|
layoutMiddlewares.push(layoutHookData.middlewares);
|
|
@@ -10984,7 +11023,7 @@ async function loadRoutesFromManifest(projectRoot) {
|
|
|
10984
11023
|
layoutMiddlewares.push([]);
|
|
10985
11024
|
}
|
|
10986
11025
|
}
|
|
10987
|
-
const { middlewares, serverHook, dynamic, generateStaticParams } = await loadServerHookForDir(pageDir);
|
|
11026
|
+
const { middlewares, serverHook, dynamic, generateStaticParams } = await loadServerHookForDir(pageDir, projectRoot);
|
|
10988
11027
|
pageRoutes.push({
|
|
10989
11028
|
pattern: entry.pattern,
|
|
10990
11029
|
regex,
|
|
@@ -11368,7 +11407,14 @@ var FilesystemRouteLoader = class {
|
|
|
11368
11407
|
if (hasFilesChanged(this.appDir, this.projectRoot, this.cache.fileStats) || this.cache.apiRoutes.length === 0) {
|
|
11369
11408
|
const files = getRelevantFiles(this.appDir, this.projectRoot);
|
|
11370
11409
|
const fileStats = buildFileStats(files);
|
|
11371
|
-
|
|
11410
|
+
const apiRoutes = await loadApiRoutes(this.appDir);
|
|
11411
|
+
if (!this.cache) {
|
|
11412
|
+
await this.loadRoutes();
|
|
11413
|
+
if (!this.cache) {
|
|
11414
|
+
throw new Error("Failed to initialize route cache");
|
|
11415
|
+
}
|
|
11416
|
+
}
|
|
11417
|
+
this.cache.apiRoutes = apiRoutes;
|
|
11372
11418
|
this.cache.fileStats = fileStats;
|
|
11373
11419
|
this.cache.timestamp = Date.now();
|
|
11374
11420
|
}
|
|
@@ -11385,7 +11431,14 @@ var FilesystemRouteLoader = class {
|
|
|
11385
11431
|
if (hasFilesChanged(this.appDir, this.projectRoot, this.cache.fileStats) || this.cache.wssRoutes.length === 0) {
|
|
11386
11432
|
const files = getRelevantFiles(this.appDir, this.projectRoot);
|
|
11387
11433
|
const fileStats = buildFileStats(files);
|
|
11388
|
-
|
|
11434
|
+
const wssRoutes = await loadWssRoutes(this.appDir);
|
|
11435
|
+
if (!this.cache) {
|
|
11436
|
+
await this.loadRoutes();
|
|
11437
|
+
if (!this.cache) {
|
|
11438
|
+
throw new Error("Failed to initialize route cache");
|
|
11439
|
+
}
|
|
11440
|
+
}
|
|
11441
|
+
this.cache.wssRoutes = wssRoutes;
|
|
11389
11442
|
this.cache.fileStats = fileStats;
|
|
11390
11443
|
this.cache.timestamp = Date.now();
|
|
11391
11444
|
}
|
|
@@ -11402,7 +11455,14 @@ var FilesystemRouteLoader = class {
|
|
|
11402
11455
|
if (hasFilesChanged(this.appDir, this.projectRoot, this.cache.fileStats) || this.cache.notFoundRoute === void 0) {
|
|
11403
11456
|
const files = getRelevantFiles(this.appDir, this.projectRoot);
|
|
11404
11457
|
const fileStats = buildFileStats(files);
|
|
11405
|
-
|
|
11458
|
+
const notFoundRoute = await loadNotFoundRouteFromFilesystem(this.appDir, this.projectRoot);
|
|
11459
|
+
if (!this.cache) {
|
|
11460
|
+
await this.loadRoutes();
|
|
11461
|
+
if (!this.cache) {
|
|
11462
|
+
throw new Error("Failed to initialize route cache");
|
|
11463
|
+
}
|
|
11464
|
+
}
|
|
11465
|
+
this.cache.notFoundRoute = notFoundRoute;
|
|
11406
11466
|
this.cache.fileStats = fileStats;
|
|
11407
11467
|
this.cache.timestamp = Date.now();
|
|
11408
11468
|
}
|
|
@@ -11419,7 +11479,14 @@ var FilesystemRouteLoader = class {
|
|
|
11419
11479
|
if (hasFilesChanged(this.appDir, this.projectRoot, this.cache.fileStats) || this.cache.errorRoute === void 0) {
|
|
11420
11480
|
const files = getRelevantFiles(this.appDir, this.projectRoot);
|
|
11421
11481
|
const fileStats = buildFileStats(files);
|
|
11422
|
-
|
|
11482
|
+
const errorRoute = await loadErrorRouteFromFilesystem(this.appDir, this.projectRoot);
|
|
11483
|
+
if (!this.cache) {
|
|
11484
|
+
await this.loadRoutes();
|
|
11485
|
+
if (!this.cache) {
|
|
11486
|
+
throw new Error("Failed to initialize route cache");
|
|
11487
|
+
}
|
|
11488
|
+
}
|
|
11489
|
+
this.cache.errorRoute = errorRoute;
|
|
11423
11490
|
this.cache.fileStats = fileStats;
|
|
11424
11491
|
this.cache.timestamp = Date.now();
|
|
11425
11492
|
}
|
|
@@ -11495,7 +11562,7 @@ var ManifestRouteLoader = class {
|
|
|
11495
11562
|
return chunks;
|
|
11496
11563
|
}
|
|
11497
11564
|
};
|
|
11498
|
-
async function loadNotFoundRouteFromFilesystem(appDir) {
|
|
11565
|
+
async function loadNotFoundRouteFromFilesystem(appDir, projectRoot) {
|
|
11499
11566
|
const notFoundCandidates = [
|
|
11500
11567
|
import_path13.default.join(appDir, `${NOT_FOUND_FILE_PREFIX}.tsx`),
|
|
11501
11568
|
import_path13.default.join(appDir, `${NOT_FOUND_FILE_PREFIX}.ts`),
|
|
@@ -11519,7 +11586,7 @@ async function loadNotFoundRouteFromFilesystem(appDir) {
|
|
|
11519
11586
|
}
|
|
11520
11587
|
const { loadDefaultExport: loadDefaultExport2 } = await Promise.resolve().then(() => (init_module_loader(), module_loader_exports));
|
|
11521
11588
|
const component = await loadDefaultExport2(notFoundFile, {
|
|
11522
|
-
projectRoot
|
|
11589
|
+
projectRoot
|
|
11523
11590
|
});
|
|
11524
11591
|
if (!component) {
|
|
11525
11592
|
return null;
|
|
@@ -11532,7 +11599,7 @@ async function loadNotFoundRouteFromFilesystem(appDir) {
|
|
|
11532
11599
|
const layoutServerHooks = [];
|
|
11533
11600
|
const layoutMiddlewares = [];
|
|
11534
11601
|
for (const layoutFile of layoutFiles) {
|
|
11535
|
-
const layoutHookData = await loadLayoutServerHook(layoutFile);
|
|
11602
|
+
const layoutHookData = await loadLayoutServerHook(layoutFile, projectRoot);
|
|
11536
11603
|
if (layoutHookData) {
|
|
11537
11604
|
layoutServerHooks.push(layoutHookData.serverHook);
|
|
11538
11605
|
layoutMiddlewares.push(layoutHookData.middlewares);
|
|
@@ -11541,7 +11608,7 @@ async function loadNotFoundRouteFromFilesystem(appDir) {
|
|
|
11541
11608
|
layoutMiddlewares.push([]);
|
|
11542
11609
|
}
|
|
11543
11610
|
}
|
|
11544
|
-
const { middlewares, serverHook, dynamic, generateStaticParams } = await loadServerHookForDir(notFoundDir);
|
|
11611
|
+
const { middlewares, serverHook, dynamic, generateStaticParams } = await loadServerHookForDir(notFoundDir, projectRoot);
|
|
11545
11612
|
return {
|
|
11546
11613
|
pattern: NOT_FOUND_PATTERN,
|
|
11547
11614
|
regex: new RegExp(`^${NOT_FOUND_PATTERN}/?$`),
|
|
@@ -11561,7 +11628,7 @@ async function loadNotFoundRouteFromFilesystem(appDir) {
|
|
|
11561
11628
|
generateStaticParams
|
|
11562
11629
|
};
|
|
11563
11630
|
}
|
|
11564
|
-
async function loadErrorRouteFromFilesystem(appDir) {
|
|
11631
|
+
async function loadErrorRouteFromFilesystem(appDir, projectRoot) {
|
|
11565
11632
|
const errorCandidates = [
|
|
11566
11633
|
import_path13.default.join(appDir, `${ERROR_FILE_PREFIX}.tsx`),
|
|
11567
11634
|
import_path13.default.join(appDir, `${ERROR_FILE_PREFIX}.ts`),
|
|
@@ -11580,7 +11647,7 @@ async function loadErrorRouteFromFilesystem(appDir) {
|
|
|
11580
11647
|
}
|
|
11581
11648
|
const { loadDefaultExport: loadDefaultExport2 } = await Promise.resolve().then(() => (init_module_loader(), module_loader_exports));
|
|
11582
11649
|
const component = await loadDefaultExport2(errorFile, {
|
|
11583
|
-
projectRoot
|
|
11650
|
+
projectRoot
|
|
11584
11651
|
});
|
|
11585
11652
|
if (!component) {
|
|
11586
11653
|
return null;
|
|
@@ -11592,7 +11659,7 @@ async function loadErrorRouteFromFilesystem(appDir) {
|
|
|
11592
11659
|
const layoutServerHooks = [];
|
|
11593
11660
|
const layoutMiddlewares = [];
|
|
11594
11661
|
for (const layoutFile of layoutFiles) {
|
|
11595
|
-
const layoutHookData = await loadLayoutServerHook(layoutFile);
|
|
11662
|
+
const layoutHookData = await loadLayoutServerHook(layoutFile, projectRoot);
|
|
11596
11663
|
if (layoutHookData) {
|
|
11597
11664
|
layoutServerHooks.push(layoutHookData.serverHook);
|
|
11598
11665
|
layoutMiddlewares.push(layoutHookData.middlewares);
|
|
@@ -11601,7 +11668,7 @@ async function loadErrorRouteFromFilesystem(appDir) {
|
|
|
11601
11668
|
layoutMiddlewares.push([]);
|
|
11602
11669
|
}
|
|
11603
11670
|
}
|
|
11604
|
-
const { middlewares, serverHook, dynamic, generateStaticParams } = await loadServerHookForDir(appDir);
|
|
11671
|
+
const { middlewares, serverHook, dynamic, generateStaticParams } = await loadServerHookForDir(appDir, projectRoot);
|
|
11605
11672
|
return {
|
|
11606
11673
|
pattern: ERROR_PATTERN,
|
|
11607
11674
|
regex: new RegExp(`^${ERROR_PATTERN}/?$`),
|
|
@@ -18903,8 +18970,8 @@ async function buildApp(options = {}) {
|
|
|
18903
18970
|
const apiRoutes = await loadApiRoutes(appDir);
|
|
18904
18971
|
const wssRoutes = await loadWssRoutes(appDir);
|
|
18905
18972
|
const { outDir: serverOutDir } = await buildServerApp(projectRoot, appDir, config);
|
|
18906
|
-
const notFoundRoute = await loadNotFoundRouteFromFilesystem(appDir);
|
|
18907
|
-
const errorRoute = await loadErrorRouteFromFilesystem(appDir);
|
|
18973
|
+
const notFoundRoute = await loadNotFoundRouteFromFilesystem(appDir, projectRoot);
|
|
18974
|
+
const errorRoute = await loadErrorRouteFromFilesystem(appDir, projectRoot);
|
|
18908
18975
|
if (!notFoundRoute) {
|
|
18909
18976
|
console.warn(
|
|
18910
18977
|
`[framework][build] No not-found route found. Consider creating ${config.directories.app}/${config.conventions.notFound}.tsx`
|