@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/cli.cjs
CHANGED
|
@@ -10069,7 +10069,7 @@ var NAMING = {
|
|
|
10069
10069
|
// Files
|
|
10070
10070
|
SERVER_HOOK: "server.hook"
|
|
10071
10071
|
};
|
|
10072
|
-
async function loadServerHookForDir(currentDir) {
|
|
10072
|
+
async function loadServerHookForDir(currentDir, projectRoot) {
|
|
10073
10073
|
const isDev = process.env.NODE_ENV === "development";
|
|
10074
10074
|
const isBuild = process.env.LOLY_BUILD === "1";
|
|
10075
10075
|
let file = null;
|
|
@@ -10095,10 +10095,24 @@ async function loadServerHookForDir(currentDir) {
|
|
|
10095
10095
|
generateStaticParams: null
|
|
10096
10096
|
};
|
|
10097
10097
|
}
|
|
10098
|
+
let resolvedProjectRoot = projectRoot;
|
|
10099
|
+
if (!resolvedProjectRoot) {
|
|
10100
|
+
let current = import_path3.default.resolve(currentDir);
|
|
10101
|
+
while (current !== import_path3.default.dirname(current)) {
|
|
10102
|
+
if (import_fs3.default.existsSync(import_path3.default.join(current, "package.json"))) {
|
|
10103
|
+
resolvedProjectRoot = current;
|
|
10104
|
+
break;
|
|
10105
|
+
}
|
|
10106
|
+
current = import_path3.default.dirname(current);
|
|
10107
|
+
}
|
|
10108
|
+
if (!resolvedProjectRoot) {
|
|
10109
|
+
resolvedProjectRoot = currentDir;
|
|
10110
|
+
}
|
|
10111
|
+
}
|
|
10098
10112
|
let mod;
|
|
10099
10113
|
try {
|
|
10100
10114
|
const { loadModule: loadModule2 } = await Promise.resolve().then(() => (init_module_loader(), module_loader_exports));
|
|
10101
|
-
mod = await loadModule2(file, { projectRoot:
|
|
10115
|
+
mod = await loadModule2(file, { projectRoot: resolvedProjectRoot });
|
|
10102
10116
|
} catch (error) {
|
|
10103
10117
|
console.error(
|
|
10104
10118
|
`[framework][server-hook] Error loading server hook from ${file}:`,
|
|
@@ -10141,7 +10155,7 @@ async function loadServerHookForDir(currentDir) {
|
|
|
10141
10155
|
generateStaticParams
|
|
10142
10156
|
};
|
|
10143
10157
|
}
|
|
10144
|
-
async function loadLayoutServerHook(layoutFile) {
|
|
10158
|
+
async function loadLayoutServerHook(layoutFile, projectRoot) {
|
|
10145
10159
|
const layoutDir = import_path3.default.dirname(layoutFile);
|
|
10146
10160
|
const layoutExt = import_path3.default.extname(layoutFile);
|
|
10147
10161
|
const layoutBasename = import_path3.default.basename(layoutFile, layoutExt);
|
|
@@ -10167,7 +10181,20 @@ async function loadLayoutServerHook(layoutFile) {
|
|
|
10167
10181
|
}
|
|
10168
10182
|
try {
|
|
10169
10183
|
const { loadModule: loadModule2 } = await Promise.resolve().then(() => (init_module_loader(), module_loader_exports));
|
|
10170
|
-
|
|
10184
|
+
if (!projectRoot) {
|
|
10185
|
+
let current = import_path3.default.dirname(layoutFile);
|
|
10186
|
+
while (current !== import_path3.default.dirname(current)) {
|
|
10187
|
+
if (import_fs3.default.existsSync(import_path3.default.join(current, "package.json"))) {
|
|
10188
|
+
projectRoot = current;
|
|
10189
|
+
break;
|
|
10190
|
+
}
|
|
10191
|
+
current = import_path3.default.dirname(current);
|
|
10192
|
+
}
|
|
10193
|
+
if (!projectRoot) {
|
|
10194
|
+
projectRoot = import_path3.default.dirname(layoutFile);
|
|
10195
|
+
}
|
|
10196
|
+
}
|
|
10197
|
+
const mod = await loadModule2(file, { projectRoot });
|
|
10171
10198
|
const serverHook = typeof mod?.getServerSideProps === "function" ? mod.getServerSideProps : null;
|
|
10172
10199
|
let middlewares = [];
|
|
10173
10200
|
const rawMiddlewares = mod?.[NAMING.BEFORE_MIDDLEWARES];
|
|
@@ -10255,6 +10282,15 @@ async function loadRoutes(appDir) {
|
|
|
10255
10282
|
if (!import_fs4.default.existsSync(appDir)) {
|
|
10256
10283
|
return [];
|
|
10257
10284
|
}
|
|
10285
|
+
let projectRoot = appDir;
|
|
10286
|
+
let current = import_path4.default.resolve(appDir);
|
|
10287
|
+
while (current !== import_path4.default.dirname(current)) {
|
|
10288
|
+
if (import_fs4.default.existsSync(import_path4.default.join(current, "package.json"))) {
|
|
10289
|
+
projectRoot = current;
|
|
10290
|
+
break;
|
|
10291
|
+
}
|
|
10292
|
+
current = import_path4.default.dirname(current);
|
|
10293
|
+
}
|
|
10258
10294
|
const routes = [];
|
|
10259
10295
|
async function walk(currentDir) {
|
|
10260
10296
|
const entries = import_fs4.default.readdirSync(currentDir, { withFileTypes: true });
|
|
@@ -10273,7 +10309,7 @@ async function loadRoutes(appDir) {
|
|
|
10273
10309
|
const { regex, paramNames } = buildRegexFromRoutePath(routePath);
|
|
10274
10310
|
const { loadDefaultExport: loadDefaultExport2 } = await Promise.resolve().then(() => (init_module_loader(), module_loader_exports));
|
|
10275
10311
|
const component = await loadDefaultExport2(fullPath, {
|
|
10276
|
-
projectRoot
|
|
10312
|
+
projectRoot
|
|
10277
10313
|
});
|
|
10278
10314
|
if (!component) {
|
|
10279
10315
|
continue;
|
|
@@ -10285,7 +10321,7 @@ async function loadRoutes(appDir) {
|
|
|
10285
10321
|
const layoutServerHooks = [];
|
|
10286
10322
|
const layoutMiddlewares = [];
|
|
10287
10323
|
for (const layoutFile of layoutFiles) {
|
|
10288
|
-
const layoutHookData = await loadLayoutServerHook(layoutFile);
|
|
10324
|
+
const layoutHookData = await loadLayoutServerHook(layoutFile, projectRoot);
|
|
10289
10325
|
if (layoutHookData) {
|
|
10290
10326
|
layoutServerHooks.push(layoutHookData.serverHook);
|
|
10291
10327
|
layoutMiddlewares.push(layoutHookData.middlewares);
|
|
@@ -10294,7 +10330,7 @@ async function loadRoutes(appDir) {
|
|
|
10294
10330
|
layoutMiddlewares.push([]);
|
|
10295
10331
|
}
|
|
10296
10332
|
}
|
|
10297
|
-
const { middlewares, serverHook, dynamic, generateStaticParams } = await loadServerHookForDir(currentDir);
|
|
10333
|
+
const { middlewares, serverHook, dynamic, generateStaticParams } = await loadServerHookForDir(currentDir, projectRoot);
|
|
10298
10334
|
routes.push({
|
|
10299
10335
|
pattern: routePath,
|
|
10300
10336
|
regex,
|
|
@@ -10890,7 +10926,7 @@ async function loadRoutesFromManifest(projectRoot) {
|
|
|
10890
10926
|
const layoutServerHooks = [];
|
|
10891
10927
|
const layoutMiddlewares = [];
|
|
10892
10928
|
for (const layoutFile of layoutFiles) {
|
|
10893
|
-
const layoutHookData = await loadLayoutServerHook(layoutFile);
|
|
10929
|
+
const layoutHookData = await loadLayoutServerHook(layoutFile, projectRoot);
|
|
10894
10930
|
if (layoutHookData) {
|
|
10895
10931
|
layoutServerHooks.push(layoutHookData.serverHook);
|
|
10896
10932
|
layoutMiddlewares.push(layoutHookData.middlewares);
|
|
@@ -10899,7 +10935,7 @@ async function loadRoutesFromManifest(projectRoot) {
|
|
|
10899
10935
|
layoutMiddlewares.push([]);
|
|
10900
10936
|
}
|
|
10901
10937
|
}
|
|
10902
|
-
const { middlewares, serverHook, dynamic, generateStaticParams } = await loadServerHookForDir(pageDir);
|
|
10938
|
+
const { middlewares, serverHook, dynamic, generateStaticParams } = await loadServerHookForDir(pageDir, projectRoot);
|
|
10903
10939
|
pageRoutes.push({
|
|
10904
10940
|
pattern: entry.pattern,
|
|
10905
10941
|
regex,
|
|
@@ -11283,7 +11319,14 @@ var FilesystemRouteLoader = class {
|
|
|
11283
11319
|
if (hasFilesChanged(this.appDir, this.projectRoot, this.cache.fileStats) || this.cache.apiRoutes.length === 0) {
|
|
11284
11320
|
const files = getRelevantFiles(this.appDir, this.projectRoot);
|
|
11285
11321
|
const fileStats = buildFileStats(files);
|
|
11286
|
-
|
|
11322
|
+
const apiRoutes = await loadApiRoutes(this.appDir);
|
|
11323
|
+
if (!this.cache) {
|
|
11324
|
+
await this.loadRoutes();
|
|
11325
|
+
if (!this.cache) {
|
|
11326
|
+
throw new Error("Failed to initialize route cache");
|
|
11327
|
+
}
|
|
11328
|
+
}
|
|
11329
|
+
this.cache.apiRoutes = apiRoutes;
|
|
11287
11330
|
this.cache.fileStats = fileStats;
|
|
11288
11331
|
this.cache.timestamp = Date.now();
|
|
11289
11332
|
}
|
|
@@ -11300,7 +11343,14 @@ var FilesystemRouteLoader = class {
|
|
|
11300
11343
|
if (hasFilesChanged(this.appDir, this.projectRoot, this.cache.fileStats) || this.cache.wssRoutes.length === 0) {
|
|
11301
11344
|
const files = getRelevantFiles(this.appDir, this.projectRoot);
|
|
11302
11345
|
const fileStats = buildFileStats(files);
|
|
11303
|
-
|
|
11346
|
+
const wssRoutes = await loadWssRoutes(this.appDir);
|
|
11347
|
+
if (!this.cache) {
|
|
11348
|
+
await this.loadRoutes();
|
|
11349
|
+
if (!this.cache) {
|
|
11350
|
+
throw new Error("Failed to initialize route cache");
|
|
11351
|
+
}
|
|
11352
|
+
}
|
|
11353
|
+
this.cache.wssRoutes = wssRoutes;
|
|
11304
11354
|
this.cache.fileStats = fileStats;
|
|
11305
11355
|
this.cache.timestamp = Date.now();
|
|
11306
11356
|
}
|
|
@@ -11317,7 +11367,14 @@ var FilesystemRouteLoader = class {
|
|
|
11317
11367
|
if (hasFilesChanged(this.appDir, this.projectRoot, this.cache.fileStats) || this.cache.notFoundRoute === void 0) {
|
|
11318
11368
|
const files = getRelevantFiles(this.appDir, this.projectRoot);
|
|
11319
11369
|
const fileStats = buildFileStats(files);
|
|
11320
|
-
|
|
11370
|
+
const notFoundRoute = await loadNotFoundRouteFromFilesystem(this.appDir, this.projectRoot);
|
|
11371
|
+
if (!this.cache) {
|
|
11372
|
+
await this.loadRoutes();
|
|
11373
|
+
if (!this.cache) {
|
|
11374
|
+
throw new Error("Failed to initialize route cache");
|
|
11375
|
+
}
|
|
11376
|
+
}
|
|
11377
|
+
this.cache.notFoundRoute = notFoundRoute;
|
|
11321
11378
|
this.cache.fileStats = fileStats;
|
|
11322
11379
|
this.cache.timestamp = Date.now();
|
|
11323
11380
|
}
|
|
@@ -11334,7 +11391,14 @@ var FilesystemRouteLoader = class {
|
|
|
11334
11391
|
if (hasFilesChanged(this.appDir, this.projectRoot, this.cache.fileStats) || this.cache.errorRoute === void 0) {
|
|
11335
11392
|
const files = getRelevantFiles(this.appDir, this.projectRoot);
|
|
11336
11393
|
const fileStats = buildFileStats(files);
|
|
11337
|
-
|
|
11394
|
+
const errorRoute = await loadErrorRouteFromFilesystem(this.appDir, this.projectRoot);
|
|
11395
|
+
if (!this.cache) {
|
|
11396
|
+
await this.loadRoutes();
|
|
11397
|
+
if (!this.cache) {
|
|
11398
|
+
throw new Error("Failed to initialize route cache");
|
|
11399
|
+
}
|
|
11400
|
+
}
|
|
11401
|
+
this.cache.errorRoute = errorRoute;
|
|
11338
11402
|
this.cache.fileStats = fileStats;
|
|
11339
11403
|
this.cache.timestamp = Date.now();
|
|
11340
11404
|
}
|
|
@@ -11410,7 +11474,7 @@ var ManifestRouteLoader = class {
|
|
|
11410
11474
|
return chunks;
|
|
11411
11475
|
}
|
|
11412
11476
|
};
|
|
11413
|
-
async function loadNotFoundRouteFromFilesystem(appDir) {
|
|
11477
|
+
async function loadNotFoundRouteFromFilesystem(appDir, projectRoot) {
|
|
11414
11478
|
const notFoundCandidates = [
|
|
11415
11479
|
import_path12.default.join(appDir, `${NOT_FOUND_FILE_PREFIX}.tsx`),
|
|
11416
11480
|
import_path12.default.join(appDir, `${NOT_FOUND_FILE_PREFIX}.ts`),
|
|
@@ -11434,7 +11498,7 @@ async function loadNotFoundRouteFromFilesystem(appDir) {
|
|
|
11434
11498
|
}
|
|
11435
11499
|
const { loadDefaultExport: loadDefaultExport2 } = await Promise.resolve().then(() => (init_module_loader(), module_loader_exports));
|
|
11436
11500
|
const component = await loadDefaultExport2(notFoundFile, {
|
|
11437
|
-
projectRoot
|
|
11501
|
+
projectRoot
|
|
11438
11502
|
});
|
|
11439
11503
|
if (!component) {
|
|
11440
11504
|
return null;
|
|
@@ -11447,7 +11511,7 @@ async function loadNotFoundRouteFromFilesystem(appDir) {
|
|
|
11447
11511
|
const layoutServerHooks = [];
|
|
11448
11512
|
const layoutMiddlewares = [];
|
|
11449
11513
|
for (const layoutFile of layoutFiles) {
|
|
11450
|
-
const layoutHookData = await loadLayoutServerHook(layoutFile);
|
|
11514
|
+
const layoutHookData = await loadLayoutServerHook(layoutFile, projectRoot);
|
|
11451
11515
|
if (layoutHookData) {
|
|
11452
11516
|
layoutServerHooks.push(layoutHookData.serverHook);
|
|
11453
11517
|
layoutMiddlewares.push(layoutHookData.middlewares);
|
|
@@ -11456,7 +11520,7 @@ async function loadNotFoundRouteFromFilesystem(appDir) {
|
|
|
11456
11520
|
layoutMiddlewares.push([]);
|
|
11457
11521
|
}
|
|
11458
11522
|
}
|
|
11459
|
-
const { middlewares, serverHook, dynamic, generateStaticParams } = await loadServerHookForDir(notFoundDir);
|
|
11523
|
+
const { middlewares, serverHook, dynamic, generateStaticParams } = await loadServerHookForDir(notFoundDir, projectRoot);
|
|
11460
11524
|
return {
|
|
11461
11525
|
pattern: NOT_FOUND_PATTERN,
|
|
11462
11526
|
regex: new RegExp(`^${NOT_FOUND_PATTERN}/?$`),
|
|
@@ -11476,7 +11540,7 @@ async function loadNotFoundRouteFromFilesystem(appDir) {
|
|
|
11476
11540
|
generateStaticParams
|
|
11477
11541
|
};
|
|
11478
11542
|
}
|
|
11479
|
-
async function loadErrorRouteFromFilesystem(appDir) {
|
|
11543
|
+
async function loadErrorRouteFromFilesystem(appDir, projectRoot) {
|
|
11480
11544
|
const errorCandidates = [
|
|
11481
11545
|
import_path12.default.join(appDir, `${ERROR_FILE_PREFIX}.tsx`),
|
|
11482
11546
|
import_path12.default.join(appDir, `${ERROR_FILE_PREFIX}.ts`),
|
|
@@ -11495,7 +11559,7 @@ async function loadErrorRouteFromFilesystem(appDir) {
|
|
|
11495
11559
|
}
|
|
11496
11560
|
const { loadDefaultExport: loadDefaultExport2 } = await Promise.resolve().then(() => (init_module_loader(), module_loader_exports));
|
|
11497
11561
|
const component = await loadDefaultExport2(errorFile, {
|
|
11498
|
-
projectRoot
|
|
11562
|
+
projectRoot
|
|
11499
11563
|
});
|
|
11500
11564
|
if (!component) {
|
|
11501
11565
|
return null;
|
|
@@ -11507,7 +11571,7 @@ async function loadErrorRouteFromFilesystem(appDir) {
|
|
|
11507
11571
|
const layoutServerHooks = [];
|
|
11508
11572
|
const layoutMiddlewares = [];
|
|
11509
11573
|
for (const layoutFile of layoutFiles) {
|
|
11510
|
-
const layoutHookData = await loadLayoutServerHook(layoutFile);
|
|
11574
|
+
const layoutHookData = await loadLayoutServerHook(layoutFile, projectRoot);
|
|
11511
11575
|
if (layoutHookData) {
|
|
11512
11576
|
layoutServerHooks.push(layoutHookData.serverHook);
|
|
11513
11577
|
layoutMiddlewares.push(layoutHookData.middlewares);
|
|
@@ -11516,7 +11580,7 @@ async function loadErrorRouteFromFilesystem(appDir) {
|
|
|
11516
11580
|
layoutMiddlewares.push([]);
|
|
11517
11581
|
}
|
|
11518
11582
|
}
|
|
11519
|
-
const { middlewares, serverHook, dynamic, generateStaticParams } = await loadServerHookForDir(appDir);
|
|
11583
|
+
const { middlewares, serverHook, dynamic, generateStaticParams } = await loadServerHookForDir(appDir, projectRoot);
|
|
11520
11584
|
return {
|
|
11521
11585
|
pattern: ERROR_PATTERN,
|
|
11522
11586
|
regex: new RegExp(`^${ERROR_PATTERN}/?$`),
|
|
@@ -14532,6 +14596,9 @@ var INIT_FILE_NAME = "init.server";
|
|
|
14532
14596
|
async function runInitIfExists(projectRoot, serverData) {
|
|
14533
14597
|
try {
|
|
14534
14598
|
let mod = await getServerFile(projectRoot, INIT_FILE_NAME);
|
|
14599
|
+
if (!mod) {
|
|
14600
|
+
return {};
|
|
14601
|
+
}
|
|
14535
14602
|
if (typeof mod?.init === "function") {
|
|
14536
14603
|
const serverContext = { ...serverData };
|
|
14537
14604
|
await mod.init({ serverContext });
|
|
@@ -15279,8 +15346,8 @@ async function buildApp(options = {}) {
|
|
|
15279
15346
|
const apiRoutes = await loadApiRoutes(appDir);
|
|
15280
15347
|
const wssRoutes = await loadWssRoutes(appDir);
|
|
15281
15348
|
const { outDir: serverOutDir } = await buildServerApp(projectRoot, appDir, config);
|
|
15282
|
-
const notFoundRoute = await loadNotFoundRouteFromFilesystem(appDir);
|
|
15283
|
-
const errorRoute = await loadErrorRouteFromFilesystem(appDir);
|
|
15349
|
+
const notFoundRoute = await loadNotFoundRouteFromFilesystem(appDir, projectRoot);
|
|
15350
|
+
const errorRoute = await loadErrorRouteFromFilesystem(appDir, projectRoot);
|
|
15284
15351
|
if (!notFoundRoute) {
|
|
15285
15352
|
console.warn(
|
|
15286
15353
|
`[framework][build] No not-found route found. Consider creating ${config.directories.app}/${config.conventions.notFound}.tsx`
|