elit 3.6.0 → 3.6.2
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/Cargo.lock +2 -2
- package/Cargo.toml +1 -1
- package/README.md +1 -1
- package/dist/build.cjs +11 -4
- package/dist/build.js +11 -4
- package/dist/build.mjs +11 -4
- package/dist/cli.cjs +193 -100
- package/dist/cli.mjs +193 -100
- package/dist/config.cjs +7 -2
- package/dist/config.js +7 -2
- package/dist/config.mjs +7 -2
- package/dist/server.cjs +145 -81
- package/dist/server.js +145 -81
- package/dist/server.mjs +145 -81
- package/package.json +66 -35
package/Cargo.lock
CHANGED
|
@@ -171,7 +171,7 @@ checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c"
|
|
|
171
171
|
|
|
172
172
|
[[package]]
|
|
173
173
|
name = "arboard"
|
|
174
|
-
version = "3.6.
|
|
174
|
+
version = "3.6.2"
|
|
175
175
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
176
176
|
checksum = "0348a1c054491f4bfe6ab86a7b6ab1e44e45d899005de92f58b3df180b36ddaf"
|
|
177
177
|
dependencies = [
|
|
@@ -1211,7 +1211,7 @@ dependencies = [
|
|
|
1211
1211
|
|
|
1212
1212
|
[[package]]
|
|
1213
1213
|
name = "elit-desktop"
|
|
1214
|
-
version = "3.6.
|
|
1214
|
+
version = "3.6.2"
|
|
1215
1215
|
dependencies = [
|
|
1216
1216
|
"eframe",
|
|
1217
1217
|
"http",
|
package/Cargo.toml
CHANGED
package/README.md
CHANGED
|
@@ -955,7 +955,7 @@ The package also exports `elit/test`, `elit/test-runtime`, and `elit/test-report
|
|
|
955
955
|
|
|
956
956
|
Latest release notes live in [CHANGELOG.md](CHANGELOG.md).
|
|
957
957
|
|
|
958
|
-
Highlights in `v3.6.
|
|
958
|
+
Highlights in `v3.6.2`:
|
|
959
959
|
|
|
960
960
|
- Added `elit pm` for detached background process management of shell commands, file targets, and WAPK apps.
|
|
961
961
|
- Added `pm.apps[]` and `pm.dataDir` in `elit.config.*` for config-first process manager workflows.
|
package/dist/build.cjs
CHANGED
|
@@ -418,7 +418,11 @@ function findInstalledPackageRoot(startDir, packageName) {
|
|
|
418
418
|
}
|
|
419
419
|
function getWorkspacePackageImportCandidates(packageRoot, specifier, options = {}) {
|
|
420
420
|
const subpath = specifier === "elit" ? "index" : specifier.slice("elit/".length);
|
|
421
|
-
const builtCandidates = [
|
|
421
|
+
const builtCandidates = options.preferredBuiltFormat === "cjs" ? [
|
|
422
|
+
resolve(packageRoot, "dist", `${subpath}.cjs`),
|
|
423
|
+
resolve(packageRoot, "dist", `${subpath}.js`),
|
|
424
|
+
resolve(packageRoot, "dist", `${subpath}.mjs`)
|
|
425
|
+
] : [
|
|
422
426
|
resolve(packageRoot, "dist", `${subpath}.mjs`),
|
|
423
427
|
resolve(packageRoot, "dist", `${subpath}.js`),
|
|
424
428
|
resolve(packageRoot, "dist", `${subpath}.cjs`)
|
|
@@ -463,12 +467,12 @@ function readFileAsString(filePath) {
|
|
|
463
467
|
const contentBuffer = readFileSync(filePath, "utf-8");
|
|
464
468
|
return typeof contentBuffer === "string" ? contentBuffer : contentBuffer.toString("utf-8");
|
|
465
469
|
}
|
|
466
|
-
function createWorkspacePackagePlugin(entryDir) {
|
|
470
|
+
function createWorkspacePackagePlugin(entryDir, options = {}) {
|
|
467
471
|
return {
|
|
468
472
|
name: "workspace-package-self-reference",
|
|
469
473
|
setup(build2) {
|
|
470
474
|
build2.onResolve({ filter: /^elit(?:\/.*)?$/ }, (args) => {
|
|
471
|
-
const resolved = resolveWorkspacePackageImport(args.path, args.resolveDir || entryDir);
|
|
475
|
+
const resolved = resolveWorkspacePackageImport(args.path, args.resolveDir || entryDir, options);
|
|
472
476
|
return resolved ? { path: resolved } : void 0;
|
|
473
477
|
});
|
|
474
478
|
}
|
|
@@ -542,7 +546,10 @@ async function build(options) {
|
|
|
542
546
|
};
|
|
543
547
|
try {
|
|
544
548
|
const platform = config.platform || (config.format === "cjs" ? "node" : "browser");
|
|
545
|
-
const workspacePackagePlugin = createWorkspacePackagePlugin(dirname(entryPath)
|
|
549
|
+
const workspacePackagePlugin = createWorkspacePackagePlugin(dirname(entryPath), {
|
|
550
|
+
preferBuilt: platform === "browser",
|
|
551
|
+
preferredBuiltFormat: platform === "browser" ? "esm" : void 0
|
|
552
|
+
});
|
|
546
553
|
const plugins = platform === "browser" ? [workspacePackagePlugin, browserOnlyPlugin] : [workspacePackagePlugin];
|
|
547
554
|
const define = {};
|
|
548
555
|
if (config.env) {
|
package/dist/build.js
CHANGED
|
@@ -2917,7 +2917,11 @@ error: ${text}`);
|
|
|
2917
2917
|
}
|
|
2918
2918
|
function getWorkspacePackageImportCandidates(packageRoot, specifier, options = {}) {
|
|
2919
2919
|
const subpath = specifier === "elit" ? "index" : specifier.slice("elit/".length);
|
|
2920
|
-
const builtCandidates = [
|
|
2920
|
+
const builtCandidates = options.preferredBuiltFormat === "cjs" ? [
|
|
2921
|
+
resolve(packageRoot, "dist", `${subpath}.cjs`),
|
|
2922
|
+
resolve(packageRoot, "dist", `${subpath}.js`),
|
|
2923
|
+
resolve(packageRoot, "dist", `${subpath}.mjs`)
|
|
2924
|
+
] : [
|
|
2921
2925
|
resolve(packageRoot, "dist", `${subpath}.mjs`),
|
|
2922
2926
|
resolve(packageRoot, "dist", `${subpath}.js`),
|
|
2923
2927
|
resolve(packageRoot, "dist", `${subpath}.cjs`)
|
|
@@ -2962,12 +2966,12 @@ error: ${text}`);
|
|
|
2962
2966
|
const contentBuffer = readFileSync(filePath, "utf-8");
|
|
2963
2967
|
return typeof contentBuffer === "string" ? contentBuffer : contentBuffer.toString("utf-8");
|
|
2964
2968
|
}
|
|
2965
|
-
function createWorkspacePackagePlugin(entryDir) {
|
|
2969
|
+
function createWorkspacePackagePlugin(entryDir, options = {}) {
|
|
2966
2970
|
return {
|
|
2967
2971
|
name: "workspace-package-self-reference",
|
|
2968
2972
|
setup(build2) {
|
|
2969
2973
|
build2.onResolve({ filter: /^elit(?:\/.*)?$/ }, (args) => {
|
|
2970
|
-
const resolved = resolveWorkspacePackageImport(args.path, args.resolveDir || entryDir);
|
|
2974
|
+
const resolved = resolveWorkspacePackageImport(args.path, args.resolveDir || entryDir, options);
|
|
2971
2975
|
return resolved ? { path: resolved } : void 0;
|
|
2972
2976
|
});
|
|
2973
2977
|
}
|
|
@@ -3041,7 +3045,10 @@ error: ${text}`);
|
|
|
3041
3045
|
};
|
|
3042
3046
|
try {
|
|
3043
3047
|
const platform = config.platform || (config.format === "cjs" ? "node" : "browser");
|
|
3044
|
-
const workspacePackagePlugin = createWorkspacePackagePlugin(dirname(entryPath)
|
|
3048
|
+
const workspacePackagePlugin = createWorkspacePackagePlugin(dirname(entryPath), {
|
|
3049
|
+
preferBuilt: platform === "browser",
|
|
3050
|
+
preferredBuiltFormat: platform === "browser" ? "esm" : void 0
|
|
3051
|
+
});
|
|
3045
3052
|
const plugins = platform === "browser" ? [workspacePackagePlugin, browserOnlyPlugin] : [workspacePackagePlugin];
|
|
3046
3053
|
const define = {};
|
|
3047
3054
|
if (config.env) {
|
package/dist/build.mjs
CHANGED
|
@@ -390,7 +390,11 @@ function findInstalledPackageRoot(startDir, packageName) {
|
|
|
390
390
|
}
|
|
391
391
|
function getWorkspacePackageImportCandidates(packageRoot, specifier, options = {}) {
|
|
392
392
|
const subpath = specifier === "elit" ? "index" : specifier.slice("elit/".length);
|
|
393
|
-
const builtCandidates = [
|
|
393
|
+
const builtCandidates = options.preferredBuiltFormat === "cjs" ? [
|
|
394
|
+
resolve(packageRoot, "dist", `${subpath}.cjs`),
|
|
395
|
+
resolve(packageRoot, "dist", `${subpath}.js`),
|
|
396
|
+
resolve(packageRoot, "dist", `${subpath}.mjs`)
|
|
397
|
+
] : [
|
|
394
398
|
resolve(packageRoot, "dist", `${subpath}.mjs`),
|
|
395
399
|
resolve(packageRoot, "dist", `${subpath}.js`),
|
|
396
400
|
resolve(packageRoot, "dist", `${subpath}.cjs`)
|
|
@@ -435,12 +439,12 @@ function readFileAsString(filePath) {
|
|
|
435
439
|
const contentBuffer = readFileSync(filePath, "utf-8");
|
|
436
440
|
return typeof contentBuffer === "string" ? contentBuffer : contentBuffer.toString("utf-8");
|
|
437
441
|
}
|
|
438
|
-
function createWorkspacePackagePlugin(entryDir) {
|
|
442
|
+
function createWorkspacePackagePlugin(entryDir, options = {}) {
|
|
439
443
|
return {
|
|
440
444
|
name: "workspace-package-self-reference",
|
|
441
445
|
setup(build2) {
|
|
442
446
|
build2.onResolve({ filter: /^elit(?:\/.*)?$/ }, (args) => {
|
|
443
|
-
const resolved = resolveWorkspacePackageImport(args.path, args.resolveDir || entryDir);
|
|
447
|
+
const resolved = resolveWorkspacePackageImport(args.path, args.resolveDir || entryDir, options);
|
|
444
448
|
return resolved ? { path: resolved } : void 0;
|
|
445
449
|
});
|
|
446
450
|
}
|
|
@@ -514,7 +518,10 @@ async function build(options) {
|
|
|
514
518
|
};
|
|
515
519
|
try {
|
|
516
520
|
const platform = config.platform || (config.format === "cjs" ? "node" : "browser");
|
|
517
|
-
const workspacePackagePlugin = createWorkspacePackagePlugin(dirname(entryPath)
|
|
521
|
+
const workspacePackagePlugin = createWorkspacePackagePlugin(dirname(entryPath), {
|
|
522
|
+
preferBuilt: platform === "browser",
|
|
523
|
+
preferredBuiltFormat: platform === "browser" ? "esm" : void 0
|
|
524
|
+
});
|
|
518
525
|
const plugins = platform === "browser" ? [workspacePackagePlugin, browserOnlyPlugin] : [workspacePackagePlugin];
|
|
519
526
|
const define = {};
|
|
520
527
|
if (config.env) {
|
package/dist/cli.cjs
CHANGED
|
@@ -59462,7 +59462,11 @@ function findInstalledPackageRoot(startDir, packageName) {
|
|
|
59462
59462
|
}
|
|
59463
59463
|
function getWorkspacePackageImportCandidates(packageRoot, specifier, options = {}) {
|
|
59464
59464
|
const subpath = specifier === "elit" ? "index" : specifier.slice("elit/".length);
|
|
59465
|
-
const builtCandidates = [
|
|
59465
|
+
const builtCandidates = options.preferredBuiltFormat === "cjs" ? [
|
|
59466
|
+
resolve(packageRoot, "dist", `${subpath}.cjs`),
|
|
59467
|
+
resolve(packageRoot, "dist", `${subpath}.js`),
|
|
59468
|
+
resolve(packageRoot, "dist", `${subpath}.mjs`)
|
|
59469
|
+
] : [
|
|
59466
59470
|
resolve(packageRoot, "dist", `${subpath}.mjs`),
|
|
59467
59471
|
resolve(packageRoot, "dist", `${subpath}.js`),
|
|
59468
59472
|
resolve(packageRoot, "dist", `${subpath}.cjs`)
|
|
@@ -59594,7 +59598,8 @@ async function loadConfigFile(configPath) {
|
|
|
59594
59598
|
setup(build3) {
|
|
59595
59599
|
build3.onResolve({ filter: /.*/ }, (args) => {
|
|
59596
59600
|
const workspacePackageImport = resolveWorkspacePackageImport(args.path, args.resolveDir || configDir, {
|
|
59597
|
-
preferBuilt: true
|
|
59601
|
+
preferBuilt: true,
|
|
59602
|
+
preferredBuiltFormat: "esm"
|
|
59598
59603
|
});
|
|
59599
59604
|
if (workspacePackageImport) {
|
|
59600
59605
|
return {
|
|
@@ -61337,22 +61342,30 @@ async function resolveWorkspaceElitImportBasePath(rootDir, basePath, _mode) {
|
|
|
61337
61342
|
}
|
|
61338
61343
|
return void 0;
|
|
61339
61344
|
}
|
|
61345
|
+
var BROWSER_SAFE_ELIT_IMPORTS = {
|
|
61346
|
+
"elit": "index",
|
|
61347
|
+
"elit/dom": "dom",
|
|
61348
|
+
"elit/el": "el",
|
|
61349
|
+
"elit/native": "native",
|
|
61350
|
+
"elit/universal": "universal",
|
|
61351
|
+
"elit/router": "router",
|
|
61352
|
+
"elit/state": "state",
|
|
61353
|
+
"elit/style": "style",
|
|
61354
|
+
"elit/hmr": "hmr",
|
|
61355
|
+
"elit/types": "types"
|
|
61356
|
+
};
|
|
61357
|
+
function createBrowserSafeElitImports(basePath, fileExt) {
|
|
61358
|
+
return Object.fromEntries(
|
|
61359
|
+
Object.entries(BROWSER_SAFE_ELIT_IMPORTS).map(([specifier, outputName]) => [
|
|
61360
|
+
specifier,
|
|
61361
|
+
`${basePath}/${outputName}${fileExt}`
|
|
61362
|
+
])
|
|
61363
|
+
);
|
|
61364
|
+
}
|
|
61340
61365
|
var createElitImportMap = async (rootDir, basePath = "", mode = "dev") => {
|
|
61341
61366
|
const workspaceImportBasePath = await resolveWorkspaceElitImportBasePath(rootDir, basePath, mode);
|
|
61342
|
-
const fileExt = ".
|
|
61343
|
-
const elitImports = workspaceImportBasePath ? {
|
|
61344
|
-
"elit": `${workspaceImportBasePath}/index${fileExt}`,
|
|
61345
|
-
"elit/": `${workspaceImportBasePath}/`,
|
|
61346
|
-
"elit/dom": `${workspaceImportBasePath}/dom${fileExt}`,
|
|
61347
|
-
"elit/state": `${workspaceImportBasePath}/state${fileExt}`,
|
|
61348
|
-
"elit/style": `${workspaceImportBasePath}/style${fileExt}`,
|
|
61349
|
-
"elit/el": `${workspaceImportBasePath}/el${fileExt}`,
|
|
61350
|
-
"elit/universal": `${workspaceImportBasePath}/universal${fileExt}`,
|
|
61351
|
-
"elit/router": `${workspaceImportBasePath}/router${fileExt}`,
|
|
61352
|
-
"elit/hmr": `${workspaceImportBasePath}/hmr${fileExt}`,
|
|
61353
|
-
"elit/types": `${workspaceImportBasePath}/types${fileExt}`,
|
|
61354
|
-
"elit/native": `${workspaceImportBasePath}/native${fileExt}`
|
|
61355
|
-
} : {};
|
|
61367
|
+
const fileExt = ".mjs";
|
|
61368
|
+
const elitImports = workspaceImportBasePath ? createBrowserSafeElitImports(workspaceImportBasePath, fileExt) : {};
|
|
61356
61369
|
const externalImports = await generateExternalImportMaps(rootDir, basePath);
|
|
61357
61370
|
const allImports = { ...externalImports, ...elitImports };
|
|
61358
61371
|
return `<script type="importmap">${JSON.stringify({ imports: allImports }, null, 2)}</script>`;
|
|
@@ -61623,6 +61636,29 @@ async function processPackage(nodeModulesPath, pkgName, importMap, basePath) {
|
|
|
61623
61636
|
}
|
|
61624
61637
|
}
|
|
61625
61638
|
function processExportsField(pkgName, exports2, baseUrl, importMap) {
|
|
61639
|
+
if (pkgName === "elit") {
|
|
61640
|
+
if (typeof exports2 !== "object" || exports2 === null) {
|
|
61641
|
+
return;
|
|
61642
|
+
}
|
|
61643
|
+
const elitExports = exports2;
|
|
61644
|
+
const browserSafeImports = {};
|
|
61645
|
+
const rootResolved = "." in elitExports ? resolveExport(elitExports["."]) : "import" in elitExports ? resolveExport(elitExports) : null;
|
|
61646
|
+
if (rootResolved) {
|
|
61647
|
+
browserSafeImports.elit = `${baseUrl}/${rootResolved}`;
|
|
61648
|
+
}
|
|
61649
|
+
const allowedSubpaths = Object.keys(BROWSER_SAFE_ELIT_IMPORTS).filter((specifier) => specifier !== "elit").map((specifier) => ({
|
|
61650
|
+
exportKey: `./${specifier.slice("elit/".length)}`,
|
|
61651
|
+
importName: specifier
|
|
61652
|
+
}));
|
|
61653
|
+
for (const { exportKey, importName } of allowedSubpaths) {
|
|
61654
|
+
const resolved = resolveExport(elitExports[exportKey]);
|
|
61655
|
+
if (resolved) {
|
|
61656
|
+
browserSafeImports[importName] = `${baseUrl}/${resolved}`;
|
|
61657
|
+
}
|
|
61658
|
+
}
|
|
61659
|
+
Object.assign(importMap, browserSafeImports);
|
|
61660
|
+
return;
|
|
61661
|
+
}
|
|
61626
61662
|
if (typeof exports2 === "string") {
|
|
61627
61663
|
importMap[pkgName] = `${baseUrl}/${exports2}`;
|
|
61628
61664
|
importMap[`${pkgName}/`] = `${baseUrl}/`;
|
|
@@ -61866,6 +61902,85 @@ function shouldUseClientFallbackRoot(primaryRoot, fallbackRoot, indexPath) {
|
|
|
61866
61902
|
const primaryHasRuntimeSources = existsSync(join(resolvedPrimaryRoot, "src")) || existsSync(join(resolvedPrimaryRoot, "public")) || existsSync(join(resolvedPrimaryRoot, normalizedIndexPath));
|
|
61867
61903
|
return !primaryHasRuntimeSources;
|
|
61868
61904
|
}
|
|
61905
|
+
function isPathWithinRoot(filePath, rootDir) {
|
|
61906
|
+
return filePath === rootDir || filePath.startsWith(rootDir.endsWith(sep) ? rootDir : `${rootDir}${sep}`);
|
|
61907
|
+
}
|
|
61908
|
+
async function getAllowedClientRoots(client) {
|
|
61909
|
+
const allowedRoots = [];
|
|
61910
|
+
for (const candidateRoot of [client.root, client.fallbackRoot]) {
|
|
61911
|
+
if (!candidateRoot) {
|
|
61912
|
+
continue;
|
|
61913
|
+
}
|
|
61914
|
+
try {
|
|
61915
|
+
const resolvedRoot = await realpath(resolve(candidateRoot));
|
|
61916
|
+
if (!allowedRoots.includes(resolvedRoot)) {
|
|
61917
|
+
allowedRoots.push(resolvedRoot);
|
|
61918
|
+
}
|
|
61919
|
+
} catch {
|
|
61920
|
+
}
|
|
61921
|
+
}
|
|
61922
|
+
return allowedRoots;
|
|
61923
|
+
}
|
|
61924
|
+
async function getClientBaseDirs(client, isDistRequest, isNodeModulesRequest) {
|
|
61925
|
+
const baseDirs = [];
|
|
61926
|
+
for (const candidateRoot of [client.root, client.fallbackRoot]) {
|
|
61927
|
+
if (!candidateRoot) {
|
|
61928
|
+
continue;
|
|
61929
|
+
}
|
|
61930
|
+
try {
|
|
61931
|
+
const resolvedRoot = await realpath(resolve(candidateRoot));
|
|
61932
|
+
let baseDir = resolvedRoot;
|
|
61933
|
+
if (isDistRequest || isNodeModulesRequest) {
|
|
61934
|
+
const targetDir = isDistRequest ? "dist" : "node_modules";
|
|
61935
|
+
const foundDir = await findSpecialDir(candidateRoot, targetDir);
|
|
61936
|
+
baseDir = foundDir ? await realpath(foundDir) : resolvedRoot;
|
|
61937
|
+
}
|
|
61938
|
+
if (!baseDirs.includes(baseDir)) {
|
|
61939
|
+
baseDirs.push(baseDir);
|
|
61940
|
+
}
|
|
61941
|
+
} catch {
|
|
61942
|
+
}
|
|
61943
|
+
}
|
|
61944
|
+
return baseDirs;
|
|
61945
|
+
}
|
|
61946
|
+
async function resolveClientPathFromBaseDir(baseDir, normalizedPath) {
|
|
61947
|
+
const tryRealpathWithinBaseDir = async (relativePath2) => {
|
|
61948
|
+
const unresolvedPath = resolve(join(baseDir, relativePath2));
|
|
61949
|
+
if (!isPathWithinRoot(unresolvedPath, baseDir)) {
|
|
61950
|
+
return void 0;
|
|
61951
|
+
}
|
|
61952
|
+
try {
|
|
61953
|
+
return await realpath(unresolvedPath);
|
|
61954
|
+
} catch {
|
|
61955
|
+
return void 0;
|
|
61956
|
+
}
|
|
61957
|
+
};
|
|
61958
|
+
const exactPath = await tryRealpathWithinBaseDir(normalizedPath);
|
|
61959
|
+
if (exactPath) {
|
|
61960
|
+
return exactPath;
|
|
61961
|
+
}
|
|
61962
|
+
if (normalizedPath.endsWith(".js")) {
|
|
61963
|
+
const tsPath = await tryRealpathWithinBaseDir(normalizedPath.replace(/\.js$/, ".ts"));
|
|
61964
|
+
if (tsPath) {
|
|
61965
|
+
return tsPath;
|
|
61966
|
+
}
|
|
61967
|
+
}
|
|
61968
|
+
if (normalizedPath.includes(".")) {
|
|
61969
|
+
return void 0;
|
|
61970
|
+
}
|
|
61971
|
+
for (const candidatePath of [
|
|
61972
|
+
`${normalizedPath}.ts`,
|
|
61973
|
+
`${normalizedPath}.js`,
|
|
61974
|
+
join(normalizedPath, "index.ts"),
|
|
61975
|
+
join(normalizedPath, "index.js")
|
|
61976
|
+
]) {
|
|
61977
|
+
const resolvedPath = await tryRealpathWithinBaseDir(candidatePath);
|
|
61978
|
+
if (resolvedPath) {
|
|
61979
|
+
return resolvedPath;
|
|
61980
|
+
}
|
|
61981
|
+
}
|
|
61982
|
+
return void 0;
|
|
61983
|
+
}
|
|
61869
61984
|
function createDevServer(options) {
|
|
61870
61985
|
const config = { ...defaultOptions, ...options };
|
|
61871
61986
|
const wsClients = /* @__PURE__ */ new Set();
|
|
@@ -61895,6 +62010,7 @@ function createDevServer(options) {
|
|
|
61895
62010
|
const activeRoot = useFallbackRoot ? client.fallbackRoot || client.root : client.root;
|
|
61896
62011
|
return {
|
|
61897
62012
|
root: activeRoot,
|
|
62013
|
+
fallbackRoot: useFallbackRoot ? void 0 : client.fallbackRoot,
|
|
61898
62014
|
basePath,
|
|
61899
62015
|
index: useFallbackRoot ? void 0 : indexPath,
|
|
61900
62016
|
ssr: useFallbackRoot ? void 0 : client.ssr,
|
|
@@ -61996,75 +62112,26 @@ function createDevServer(options) {
|
|
|
61996
62112
|
return send403(res, "403 Forbidden");
|
|
61997
62113
|
}
|
|
61998
62114
|
normalizedPath = tempPath;
|
|
61999
|
-
const rootDir = await realpath(resolve(matchedClient.root));
|
|
62000
|
-
let baseDir = rootDir;
|
|
62001
|
-
if (isDistRequest || isNodeModulesRequest) {
|
|
62002
|
-
const targetDir = isDistRequest ? "dist" : "node_modules";
|
|
62003
|
-
const foundDir = await findSpecialDir(matchedClient.root, targetDir);
|
|
62004
|
-
baseDir = foundDir ? await realpath(foundDir) : rootDir;
|
|
62005
|
-
}
|
|
62006
62115
|
let fullPath;
|
|
62007
|
-
|
|
62008
|
-
|
|
62009
|
-
|
|
62010
|
-
|
|
62011
|
-
|
|
62012
|
-
|
|
62013
|
-
fullPath = await realpath(unresolvedPath);
|
|
62014
|
-
if (config.logging && filePath === "/src/pages") {
|
|
62015
|
-
console.log(`[DEBUG] Initial resolve succeeded: ${fullPath}`);
|
|
62016
|
-
}
|
|
62017
|
-
} catch (firstError) {
|
|
62018
|
-
let resolvedPath;
|
|
62019
|
-
if (config.logging && !normalizedPath.includes(".")) {
|
|
62020
|
-
console.log(`[DEBUG] File not found: ${normalizedPath}, trying extensions...`);
|
|
62021
|
-
}
|
|
62022
|
-
if (normalizedPath.endsWith(".js")) {
|
|
62023
|
-
const tsPath = normalizedPath.replace(/\.js$/, ".ts");
|
|
62024
|
-
try {
|
|
62025
|
-
const tsFullPath = await realpath(resolve(join(baseDir, tsPath)));
|
|
62026
|
-
if (!tsFullPath.startsWith(baseDir.endsWith(sep) ? baseDir : baseDir + sep)) {
|
|
62027
|
-
if (config.logging) console.log(`[403] Fallback TS path outside of root: ${tsFullPath}`);
|
|
62028
|
-
return send403(res, "403 Forbidden");
|
|
62029
|
-
}
|
|
62030
|
-
resolvedPath = tsFullPath;
|
|
62031
|
-
} catch {
|
|
62032
|
-
}
|
|
62033
|
-
}
|
|
62034
|
-
if (!resolvedPath && !normalizedPath.includes(".")) {
|
|
62035
|
-
try {
|
|
62036
|
-
resolvedPath = await realpath(resolve(join(baseDir, normalizedPath + ".ts")));
|
|
62037
|
-
if (config.logging) console.log(`[DEBUG] Found: ${normalizedPath}.ts`);
|
|
62038
|
-
} catch {
|
|
62039
|
-
try {
|
|
62040
|
-
resolvedPath = await realpath(resolve(join(baseDir, normalizedPath + ".js")));
|
|
62041
|
-
if (config.logging) console.log(`[DEBUG] Found: ${normalizedPath}.js`);
|
|
62042
|
-
} catch {
|
|
62043
|
-
try {
|
|
62044
|
-
resolvedPath = await realpath(resolve(join(baseDir, normalizedPath, "index.ts")));
|
|
62045
|
-
if (config.logging) console.log(`[DEBUG] Found: ${normalizedPath}/index.ts`);
|
|
62046
|
-
} catch {
|
|
62047
|
-
try {
|
|
62048
|
-
resolvedPath = await realpath(resolve(join(baseDir, normalizedPath, "index.js")));
|
|
62049
|
-
if (config.logging) console.log(`[DEBUG] Found: ${normalizedPath}/index.js`);
|
|
62050
|
-
} catch {
|
|
62051
|
-
if (config.logging) console.log(`[DEBUG] Not found: all attempts failed for ${normalizedPath}`);
|
|
62052
|
-
}
|
|
62053
|
-
}
|
|
62054
|
-
}
|
|
62116
|
+
const baseDirs = await getClientBaseDirs(matchedClient, isDistRequest, isNodeModulesRequest);
|
|
62117
|
+
for (const baseDir of baseDirs) {
|
|
62118
|
+
fullPath = await resolveClientPathFromBaseDir(baseDir, normalizedPath);
|
|
62119
|
+
if (fullPath) {
|
|
62120
|
+
if (config.logging && filePath === "/src/pages") {
|
|
62121
|
+
console.log(`[DEBUG] Initial resolve succeeded: ${fullPath}`);
|
|
62055
62122
|
}
|
|
62123
|
+
break;
|
|
62056
62124
|
}
|
|
62057
|
-
|
|
62058
|
-
|
|
62059
|
-
|
|
62060
|
-
|
|
62061
|
-
|
|
62062
|
-
if (config.logging) console.log(`[404] ${filePath}`);
|
|
62063
|
-
return send404(res, "404 Not Found");
|
|
62125
|
+
}
|
|
62126
|
+
if (!fullPath) {
|
|
62127
|
+
if (!res.headersSent) {
|
|
62128
|
+
if (filePath === "/index.html" && matchedClient.ssr) {
|
|
62129
|
+
return await serveSSR(res, matchedClient);
|
|
62064
62130
|
}
|
|
62065
|
-
|
|
62131
|
+
if (config.logging) console.log(`[404] ${filePath}`);
|
|
62132
|
+
return send404(res, "404 Not Found");
|
|
62066
62133
|
}
|
|
62067
|
-
|
|
62134
|
+
return;
|
|
62068
62135
|
}
|
|
62069
62136
|
try {
|
|
62070
62137
|
const stats = await stat(fullPath);
|
|
@@ -62093,11 +62160,12 @@ function createDevServer(options) {
|
|
|
62093
62160
|
return send404(res, "404 Not Found");
|
|
62094
62161
|
}
|
|
62095
62162
|
try {
|
|
62163
|
+
const allowedRoots = await getAllowedClientRoots(matchedClient);
|
|
62096
62164
|
const stats = await stat(fullPath);
|
|
62097
62165
|
if (stats.isDirectory()) {
|
|
62098
62166
|
try {
|
|
62099
62167
|
const indexPath = await realpath(resolve(join(fullPath, "index.html")));
|
|
62100
|
-
if (!indexPath.
|
|
62168
|
+
if (!isPathWithinRoot(indexPath, fullPath) && !allowedRoots.some((rootDir) => isPathWithinRoot(indexPath, rootDir))) {
|
|
62101
62169
|
return send403(res, "403 Forbidden");
|
|
62102
62170
|
}
|
|
62103
62171
|
await stat(indexPath);
|
|
@@ -62119,10 +62187,11 @@ function createDevServer(options) {
|
|
|
62119
62187
|
return input.replace(/\\/g, "\\\\").replace(/`/g, "\\`").replace(/\$\{/g, "\\${");
|
|
62120
62188
|
}
|
|
62121
62189
|
try {
|
|
62122
|
-
const
|
|
62190
|
+
const allowedRoots = await getAllowedClientRoots(client);
|
|
62191
|
+
const rootDir = allowedRoots[0] || await realpath(resolve(client.root));
|
|
62123
62192
|
const unresolvedPath = resolve(filePath);
|
|
62124
62193
|
if (!isNodeModulesOrDist) {
|
|
62125
|
-
if (!
|
|
62194
|
+
if (!allowedRoots.some((allowedRoot) => isPathWithinRoot(unresolvedPath, allowedRoot))) {
|
|
62126
62195
|
if (config.logging) console.log(`[403] Attempted to serve file outside allowed directories: ${filePath}`);
|
|
62127
62196
|
return send403(res, "403 Forbidden");
|
|
62128
62197
|
}
|
|
@@ -62544,12 +62613,12 @@ function readFileAsString2(filePath) {
|
|
|
62544
62613
|
const contentBuffer = readFileSync(filePath, "utf-8");
|
|
62545
62614
|
return typeof contentBuffer === "string" ? contentBuffer : contentBuffer.toString("utf-8");
|
|
62546
62615
|
}
|
|
62547
|
-
function createWorkspacePackagePlugin(entryDir) {
|
|
62616
|
+
function createWorkspacePackagePlugin(entryDir, options = {}) {
|
|
62548
62617
|
return {
|
|
62549
62618
|
name: "workspace-package-self-reference",
|
|
62550
62619
|
setup(build2) {
|
|
62551
62620
|
build2.onResolve({ filter: /^elit(?:\/.*)?$/ }, (args) => {
|
|
62552
|
-
const resolved = resolveWorkspacePackageImport(args.path, args.resolveDir || entryDir);
|
|
62621
|
+
const resolved = resolveWorkspacePackageImport(args.path, args.resolveDir || entryDir, options);
|
|
62553
62622
|
return resolved ? { path: resolved } : void 0;
|
|
62554
62623
|
});
|
|
62555
62624
|
}
|
|
@@ -62623,7 +62692,10 @@ async function build(options) {
|
|
|
62623
62692
|
};
|
|
62624
62693
|
try {
|
|
62625
62694
|
const platform = config.platform || (config.format === "cjs" ? "node" : "browser");
|
|
62626
|
-
const workspacePackagePlugin = createWorkspacePackagePlugin(dirname(entryPath)
|
|
62695
|
+
const workspacePackagePlugin = createWorkspacePackagePlugin(dirname(entryPath), {
|
|
62696
|
+
preferBuilt: platform === "browser",
|
|
62697
|
+
preferredBuiltFormat: platform === "browser" ? "esm" : void 0
|
|
62698
|
+
});
|
|
62627
62699
|
const plugins = platform === "browser" ? [workspacePackagePlugin, browserOnlyPlugin] : [workspacePackagePlugin];
|
|
62628
62700
|
const define2 = {};
|
|
62629
62701
|
if (config.env) {
|
|
@@ -76774,10 +76846,19 @@ function resolveDesktopEntryDisplayName(entryPath, fallbackName) {
|
|
|
76774
76846
|
}
|
|
76775
76847
|
return formatDesktopDisplayName(fallbackName);
|
|
76776
76848
|
}
|
|
76777
|
-
function resolveDesktopBootstrapSupportModulePath(moduleName, packageRoot = PACKAGE_ROOT) {
|
|
76849
|
+
function resolveDesktopBootstrapSupportModulePath(moduleName, packageRoot = PACKAGE_ROOT, options = {}) {
|
|
76850
|
+
const builtCandidates = options.preferredBuiltFormat === "cjs" ? [
|
|
76851
|
+
(0, import_node_path3.resolve)(packageRoot, "dist", `${moduleName}.cjs`),
|
|
76852
|
+
(0, import_node_path3.resolve)(packageRoot, "dist", `${moduleName}.js`),
|
|
76853
|
+
(0, import_node_path3.resolve)(packageRoot, "dist", `${moduleName}.mjs`)
|
|
76854
|
+
] : [
|
|
76855
|
+
(0, import_node_path3.resolve)(packageRoot, "dist", `${moduleName}.mjs`),
|
|
76856
|
+
(0, import_node_path3.resolve)(packageRoot, "dist", `${moduleName}.js`),
|
|
76857
|
+
(0, import_node_path3.resolve)(packageRoot, "dist", `${moduleName}.cjs`)
|
|
76858
|
+
];
|
|
76778
76859
|
const candidates = [
|
|
76779
76860
|
(0, import_node_path3.resolve)(packageRoot, "src", `${moduleName}.ts`),
|
|
76780
|
-
|
|
76861
|
+
...builtCandidates
|
|
76781
76862
|
];
|
|
76782
76863
|
for (const candidate of candidates) {
|
|
76783
76864
|
if ((0, import_node_fs3.existsSync)(candidate)) {
|
|
@@ -76809,12 +76890,12 @@ function resolveDesktopBinaryOverridePath(configuredPath, envName, cwd = process
|
|
|
76809
76890
|
}
|
|
76810
76891
|
return (0, import_node_path3.resolve)(cwd, explicitPath);
|
|
76811
76892
|
}
|
|
76812
|
-
function createDesktopBootstrapEntry(entryPath, appName) {
|
|
76893
|
+
function createDesktopBootstrapEntry(entryPath, appName, options = {}) {
|
|
76813
76894
|
const bootstrapId = (0, import_node_crypto3.randomUUID)();
|
|
76814
76895
|
const bootstrapPath = (0, import_node_path3.join)((0, import_node_path3.dirname)(entryPath), `.elit-desktop-bootstrap-${appName}-${bootstrapId}.ts`);
|
|
76815
76896
|
const preludePath = (0, import_node_path3.join)((0, import_node_path3.dirname)(entryPath), `.elit-desktop-prelude-${appName}-${bootstrapId}.ts`);
|
|
76816
|
-
const desktopAutoRenderPath = resolveDesktopBootstrapSupportModulePath("desktop-auto-render");
|
|
76817
|
-
const renderContextPath = resolveDesktopBootstrapSupportModulePath("render-context");
|
|
76897
|
+
const desktopAutoRenderPath = resolveDesktopBootstrapSupportModulePath("desktop-auto-render", PACKAGE_ROOT, options);
|
|
76898
|
+
const renderContextPath = resolveDesktopBootstrapSupportModulePath("render-context", PACKAGE_ROOT, options);
|
|
76818
76899
|
const defaultTitle = `${resolveDesktopEntryDisplayName(entryPath, appName)} Desktop`;
|
|
76819
76900
|
(0, import_node_fs3.writeFileSync)(
|
|
76820
76901
|
preludePath,
|
|
@@ -76862,12 +76943,12 @@ function createDesktopBootstrapEntry(entryPath, appName) {
|
|
|
76862
76943
|
cleanupPaths: [bootstrapPath, preludePath]
|
|
76863
76944
|
};
|
|
76864
76945
|
}
|
|
76865
|
-
function createWorkspacePackagePlugin2(entryDir) {
|
|
76946
|
+
function createWorkspacePackagePlugin2(entryDir, options = {}) {
|
|
76866
76947
|
return {
|
|
76867
76948
|
name: "workspace-package-self-reference",
|
|
76868
76949
|
setup(build2) {
|
|
76869
76950
|
build2.onResolve({ filter: /^elit(?:\/.*)?$/ }, (args) => {
|
|
76870
|
-
const resolved = resolveWorkspacePackageImport(args.path, args.resolveDir || entryDir);
|
|
76951
|
+
const resolved = resolveWorkspacePackageImport(args.path, args.resolveDir || entryDir, options);
|
|
76871
76952
|
return resolved ? { path: resolved } : void 0;
|
|
76872
76953
|
});
|
|
76873
76954
|
}
|
|
@@ -77793,8 +77874,10 @@ async function prepareEntry(entry, runtime2, compiler, mode) {
|
|
|
77793
77874
|
if (!shouldCompile) {
|
|
77794
77875
|
return { appName, entryPath };
|
|
77795
77876
|
}
|
|
77796
|
-
const bootstrapEntry = createDesktopBootstrapEntry(entryPath, appName);
|
|
77797
77877
|
const output = compileTarget(runtime2);
|
|
77878
|
+
const bootstrapEntry = createDesktopBootstrapEntry(entryPath, appName, {
|
|
77879
|
+
preferredBuiltFormat: compiler === "tsx" ? "esm" : "cjs"
|
|
77880
|
+
});
|
|
77798
77881
|
const compiledPath = (0, import_node_path3.join)((0, import_node_path3.dirname)(entryPath), `.elit-desktop-${appName}-${(0, import_node_crypto3.randomUUID)()}${output.extension}`);
|
|
77799
77882
|
try {
|
|
77800
77883
|
await compileDesktopEntry({
|
|
@@ -77847,7 +77930,9 @@ async function compileDesktopEntry(options) {
|
|
|
77847
77930
|
}
|
|
77848
77931
|
}
|
|
77849
77932
|
async function compileDesktopEntryWithEsbuild(options) {
|
|
77850
|
-
const workspacePackagePlugin = createWorkspacePackagePlugin2((0, import_node_path3.dirname)(options.entryPath)
|
|
77933
|
+
const workspacePackagePlugin = createWorkspacePackagePlugin2((0, import_node_path3.dirname)(options.entryPath), {
|
|
77934
|
+
preferredBuiltFormat: "cjs"
|
|
77935
|
+
});
|
|
77851
77936
|
await (0, import_esbuild2.build)({
|
|
77852
77937
|
absWorkingDir: (0, import_node_path3.dirname)(options.entryPath),
|
|
77853
77938
|
bundle: true,
|
|
@@ -77865,7 +77950,9 @@ async function compileDesktopEntryWithEsbuild(options) {
|
|
|
77865
77950
|
async function compileDesktopEntryWithTsup(options) {
|
|
77866
77951
|
const tsup = await loadOptionalDesktopCompiler("tsup", options.entryPath, "tsup");
|
|
77867
77952
|
const outputBaseName = (0, import_node_path3.basename)(options.compiledPath, (0, import_node_path3.extname)(options.compiledPath));
|
|
77868
|
-
const workspacePackagePlugin = createWorkspacePackagePlugin2((0, import_node_path3.dirname)(options.entryPath)
|
|
77953
|
+
const workspacePackagePlugin = createWorkspacePackagePlugin2((0, import_node_path3.dirname)(options.entryPath), {
|
|
77954
|
+
preferredBuiltFormat: "cjs"
|
|
77955
|
+
});
|
|
77869
77956
|
await tsup.build({
|
|
77870
77957
|
bundle: true,
|
|
77871
77958
|
clean: false,
|
|
@@ -81837,12 +81924,12 @@ init_path();
|
|
|
81837
81924
|
// src/preview-build.ts
|
|
81838
81925
|
init_fs();
|
|
81839
81926
|
init_path();
|
|
81840
|
-
function createWorkspacePackagePlugin3(resolveDir) {
|
|
81927
|
+
function createWorkspacePackagePlugin3(resolveDir, options = {}) {
|
|
81841
81928
|
return {
|
|
81842
81929
|
name: "workspace-package-self-reference",
|
|
81843
81930
|
setup(build2) {
|
|
81844
81931
|
build2.onResolve({ filter: /^elit(?:\/.*)?$/ }, (args) => {
|
|
81845
|
-
const resolved = resolveWorkspacePackageImport(args.path, args.resolveDir || resolveDir);
|
|
81932
|
+
const resolved = resolveWorkspacePackageImport(args.path, args.resolveDir || resolveDir, options);
|
|
81846
81933
|
return resolved ? { path: resolved } : void 0;
|
|
81847
81934
|
});
|
|
81848
81935
|
}
|
|
@@ -82024,7 +82111,10 @@ async function buildStandalonePreviewServer(options) {
|
|
|
82024
82111
|
const outputDir = dirname(plan.outputPath);
|
|
82025
82112
|
mkdirSync(outputDir, { recursive: true });
|
|
82026
82113
|
const { build: build2 } = await import("esbuild");
|
|
82027
|
-
const workspacePackagePlugin = createWorkspacePackagePlugin3(cwd
|
|
82114
|
+
const workspacePackagePlugin = createWorkspacePackagePlugin3(cwd, {
|
|
82115
|
+
preferBuilt: true,
|
|
82116
|
+
preferredBuiltFormat: "cjs"
|
|
82117
|
+
});
|
|
82028
82118
|
const entrySource = createStandalonePreviewEntrySource(options.configPath, plan, options.previewConfig);
|
|
82029
82119
|
await build2({
|
|
82030
82120
|
stdin: {
|
|
@@ -82252,7 +82342,10 @@ async function buildStandaloneDevServer(options) {
|
|
|
82252
82342
|
const outputDir = dirname(plan.outputPath);
|
|
82253
82343
|
mkdirSync(outputDir, { recursive: true });
|
|
82254
82344
|
const { build: build2, version } = await import("esbuild");
|
|
82255
|
-
const workspacePackagePlugin = createWorkspacePackagePlugin3(cwd
|
|
82345
|
+
const workspacePackagePlugin = createWorkspacePackagePlugin3(cwd, {
|
|
82346
|
+
preferBuilt: true,
|
|
82347
|
+
preferredBuiltFormat: "cjs"
|
|
82348
|
+
});
|
|
82256
82349
|
const entrySource = createStandaloneDevEntrySource(options.configPath, plan, options.devConfig, {
|
|
82257
82350
|
cwd,
|
|
82258
82351
|
buildConfig: options.buildConfig,
|