@cordy/electro-cli 1.2.10 → 1.2.12
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/index.mjs +96 -3
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -491,7 +491,7 @@ const cac = (name = "") => new CAC(name);
|
|
|
491
491
|
|
|
492
492
|
//#endregion
|
|
493
493
|
//#region package.json
|
|
494
|
-
var version$1 = "1.2.
|
|
494
|
+
var version$1 = "1.2.12";
|
|
495
495
|
|
|
496
496
|
//#endregion
|
|
497
497
|
//#region src/dev/logger.ts
|
|
@@ -2201,6 +2201,35 @@ function deduplicatePlugins(plugins) {
|
|
|
2201
2201
|
return result;
|
|
2202
2202
|
}
|
|
2203
2203
|
|
|
2204
|
+
//#endregion
|
|
2205
|
+
//#region src/dev/bridge-types.ts
|
|
2206
|
+
const GENERATED_BRIDGE_DIRS = ["views", "windows"];
|
|
2207
|
+
const VIEW_BRIDGE_MODULE_FILE = "bridge.ts";
|
|
2208
|
+
/**
|
|
2209
|
+
* Resolve generated bridge declaration file for a view.
|
|
2210
|
+
* Supports both historical `generated/windows/*` and current `generated/views/*`.
|
|
2211
|
+
*/
|
|
2212
|
+
function findBridgeTypesForView(files, viewName) {
|
|
2213
|
+
const byPath = files.find((f) => f.path === `generated/views/${viewName}.bridge.d.ts`) ?? files.find((f) => f.path === `generated/windows/${viewName}.bridge.d.ts`);
|
|
2214
|
+
if (byPath) return byPath;
|
|
2215
|
+
return files.find((f) => f.path.endsWith(`/${viewName}.bridge.d.ts`)) ?? null;
|
|
2216
|
+
}
|
|
2217
|
+
/** Target location for per-view bridge types next to the config file. */
|
|
2218
|
+
function resolveViewBridgePath(view) {
|
|
2219
|
+
if (!view.__source) return null;
|
|
2220
|
+
return resolve(dirname(view.__source), VIEW_BRIDGE_MODULE_FILE);
|
|
2221
|
+
}
|
|
2222
|
+
/** Convert generated bridge declaration content into runtime-accessible bridge module. */
|
|
2223
|
+
function createViewBridgeModuleContent(bridgeTypesContent) {
|
|
2224
|
+
return `${bridgeTypesContent.trimEnd()}\n\nexport const electro = window.electro as ElectroBridge;\n`;
|
|
2225
|
+
}
|
|
2226
|
+
function isGeneratedBridgeTypesPath(path) {
|
|
2227
|
+
return GENERATED_BRIDGE_DIRS.some((dir) => path.startsWith(`generated/${dir}/`) && path.endsWith(".bridge.d.ts"));
|
|
2228
|
+
}
|
|
2229
|
+
function generatedBridgeTypesPaths(viewName) {
|
|
2230
|
+
return GENERATED_BRIDGE_DIRS.map((dir) => `generated/${dir}/${viewName}.bridge.d.ts`);
|
|
2231
|
+
}
|
|
2232
|
+
|
|
2204
2233
|
//#endregion
|
|
2205
2234
|
//#region src/plugins/utils.ts
|
|
2206
2235
|
/** Strip query and hash from a URL/path. */
|
|
@@ -2911,13 +2940,28 @@ async function build$1(options) {
|
|
|
2911
2940
|
});
|
|
2912
2941
|
await mkdir(codegenDir, { recursive: true });
|
|
2913
2942
|
for (const file of files) {
|
|
2943
|
+
if (isGeneratedBridgeTypesPath(file.path)) continue;
|
|
2914
2944
|
const filePath = resolve(codegenDir, file.path);
|
|
2915
2945
|
await mkdir(dirname(filePath), { recursive: true });
|
|
2916
2946
|
await writeFile(filePath, file.content);
|
|
2917
2947
|
}
|
|
2948
|
+
for (const view of views) {
|
|
2949
|
+
const bridge = findBridgeTypesForView(files, view.name);
|
|
2950
|
+
const bridgePath = resolveViewBridgePath(view);
|
|
2951
|
+
if (bridge && bridgePath) {
|
|
2952
|
+
await mkdir(dirname(bridgePath), { recursive: true });
|
|
2953
|
+
await writeFileIfChanged$2(bridgePath, createViewBridgeModuleContent(bridge.content));
|
|
2954
|
+
}
|
|
2955
|
+
for (const relPath of generatedBridgeTypesPaths(view.name)) {
|
|
2956
|
+
const legacyPath = resolve(codegenDir, relPath);
|
|
2957
|
+
try {
|
|
2958
|
+
await unlink(legacyPath);
|
|
2959
|
+
} catch {}
|
|
2960
|
+
}
|
|
2961
|
+
}
|
|
2918
2962
|
const envTypesPath = resolve(srcDir, envTypes.path);
|
|
2919
2963
|
await mkdir(dirname(envTypesPath), { recursive: true });
|
|
2920
|
-
await
|
|
2964
|
+
await writeFileIfChanged$2(envTypesPath, envTypes.content);
|
|
2921
2965
|
step("codegen", codegenTimer());
|
|
2922
2966
|
} catch (err) {
|
|
2923
2967
|
stepFail("codegen", err instanceof Error ? err.message : String(err));
|
|
@@ -2982,6 +3026,12 @@ async function build$1(options) {
|
|
|
2982
3026
|
}
|
|
2983
3027
|
footer(`Built in ${totalTimer()}`, outDir);
|
|
2984
3028
|
}
|
|
3029
|
+
async function writeFileIfChanged$2(filePath, content) {
|
|
3030
|
+
try {
|
|
3031
|
+
if (await readFile(filePath, "utf-8") === content) return;
|
|
3032
|
+
} catch {}
|
|
3033
|
+
await writeFile(filePath, content);
|
|
3034
|
+
}
|
|
2985
3035
|
async function buildMain(args) {
|
|
2986
3036
|
const runtimeEntry = args.config.runtime.entry;
|
|
2987
3037
|
const entry = resolve(dirname(args.config.runtime.__source), runtimeEntry);
|
|
@@ -3271,13 +3321,28 @@ var DevServer = class {
|
|
|
3271
3321
|
});
|
|
3272
3322
|
await mkdir(outputDir, { recursive: true });
|
|
3273
3323
|
for (const file of files) {
|
|
3324
|
+
if (isGeneratedBridgeTypesPath(file.path)) continue;
|
|
3274
3325
|
const filePath = resolve(outputDir, file.path);
|
|
3275
3326
|
await mkdir(dirname(filePath), { recursive: true });
|
|
3276
3327
|
await writeFile(filePath, file.content);
|
|
3277
3328
|
}
|
|
3329
|
+
for (const view of this.config.views ?? []) {
|
|
3330
|
+
const bridge = findBridgeTypesForView(files, view.name);
|
|
3331
|
+
const bridgePath = resolveViewBridgePath(view);
|
|
3332
|
+
if (bridge && bridgePath) {
|
|
3333
|
+
await mkdir(dirname(bridgePath), { recursive: true });
|
|
3334
|
+
await writeFileIfChanged$1(bridgePath, createViewBridgeModuleContent(bridge.content));
|
|
3335
|
+
}
|
|
3336
|
+
for (const relPath of generatedBridgeTypesPaths(view.name)) {
|
|
3337
|
+
const legacyPath = resolve(outputDir, relPath);
|
|
3338
|
+
try {
|
|
3339
|
+
await unlink(legacyPath);
|
|
3340
|
+
} catch {}
|
|
3341
|
+
}
|
|
3342
|
+
}
|
|
3278
3343
|
const envTypesPath = resolve(srcDir, envTypes.path);
|
|
3279
3344
|
await mkdir(dirname(envTypesPath), { recursive: true });
|
|
3280
|
-
await
|
|
3345
|
+
await writeFileIfChanged$1(envTypesPath, envTypes.content);
|
|
3281
3346
|
}
|
|
3282
3347
|
async startRenderer() {
|
|
3283
3348
|
const views = (this.config.views ?? []).filter((v) => v.entry);
|
|
@@ -3557,6 +3622,12 @@ var DevServer = class {
|
|
|
3557
3622
|
});
|
|
3558
3623
|
}
|
|
3559
3624
|
};
|
|
3625
|
+
async function writeFileIfChanged$1(filePath, content) {
|
|
3626
|
+
try {
|
|
3627
|
+
if (await readFile(filePath, "utf-8") === content) return;
|
|
3628
|
+
} catch {}
|
|
3629
|
+
await writeFile(filePath, content);
|
|
3630
|
+
}
|
|
3560
3631
|
|
|
3561
3632
|
//#endregion
|
|
3562
3633
|
//#region src/commands/dev.ts
|
|
@@ -3617,17 +3688,39 @@ async function generate$1(options) {
|
|
|
3617
3688
|
});
|
|
3618
3689
|
console.log(`Generating ${files.length + 1} file(s)...`);
|
|
3619
3690
|
for (const file of files) {
|
|
3691
|
+
if (isGeneratedBridgeTypesPath(file.path)) continue;
|
|
3620
3692
|
const fullPath = resolve(outputDir, file.path);
|
|
3621
3693
|
await mkdir(dirname(fullPath), { recursive: true });
|
|
3622
3694
|
await writeFile(fullPath, file.content);
|
|
3623
3695
|
console.log(` .electro/${file.path}`);
|
|
3624
3696
|
}
|
|
3697
|
+
for (const view of views) {
|
|
3698
|
+
const bridge = findBridgeTypesForView(files, view.name);
|
|
3699
|
+
const bridgePath = resolveViewBridgePath(view);
|
|
3700
|
+
if (bridge && bridgePath) {
|
|
3701
|
+
await mkdir(dirname(bridgePath), { recursive: true });
|
|
3702
|
+
await writeFileIfChanged(bridgePath, createViewBridgeModuleContent(bridge.content));
|
|
3703
|
+
console.log(` ${relative(process.cwd(), bridgePath)}`);
|
|
3704
|
+
}
|
|
3705
|
+
for (const relPath of generatedBridgeTypesPaths(view.name)) {
|
|
3706
|
+
const legacyPath = resolve(outputDir, relPath);
|
|
3707
|
+
try {
|
|
3708
|
+
await unlink(legacyPath);
|
|
3709
|
+
} catch {}
|
|
3710
|
+
}
|
|
3711
|
+
}
|
|
3625
3712
|
const envTypesPath = resolve(srcDir, envTypes.path);
|
|
3626
3713
|
await mkdir(dirname(envTypesPath), { recursive: true });
|
|
3627
3714
|
await writeFile(envTypesPath, envTypes.content);
|
|
3628
3715
|
console.log(` src/${envTypes.path}`);
|
|
3629
3716
|
console.log("Done.");
|
|
3630
3717
|
}
|
|
3718
|
+
async function writeFileIfChanged(filePath, content) {
|
|
3719
|
+
try {
|
|
3720
|
+
if (await readFile(filePath, "utf-8") === content) return;
|
|
3721
|
+
} catch {}
|
|
3722
|
+
await writeFile(filePath, content);
|
|
3723
|
+
}
|
|
3631
3724
|
|
|
3632
3725
|
//#endregion
|
|
3633
3726
|
//#region src/commands/preview.ts
|