@cordy/electro-cli 1.2.10 → 1.2.11

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.
Files changed (2) hide show
  1. package/dist/index.mjs +91 -3
  2. 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.10";
494
+ var version$1 = "1.2.11";
495
495
 
496
496
  //#endregion
497
497
  //#region src/dev/logger.ts
@@ -2201,6 +2201,30 @@ 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
+ /**
2208
+ * Resolve generated bridge declaration file for a view.
2209
+ * Supports both historical `generated/windows/*` and current `generated/views/*`.
2210
+ */
2211
+ function findBridgeTypesForView(files, viewName) {
2212
+ const byPath = files.find((f) => f.path === `generated/views/${viewName}.bridge.d.ts`) ?? files.find((f) => f.path === `generated/windows/${viewName}.bridge.d.ts`);
2213
+ if (byPath) return byPath;
2214
+ return files.find((f) => f.path.endsWith(`/${viewName}.bridge.d.ts`)) ?? null;
2215
+ }
2216
+ /** Target location for per-view bridge types next to the config file. */
2217
+ function resolveViewBridgePath(view) {
2218
+ if (!view.__source) return null;
2219
+ return resolve(dirname(view.__source), "bridge.d.ts");
2220
+ }
2221
+ function isGeneratedBridgeTypesPath(path) {
2222
+ return GENERATED_BRIDGE_DIRS.some((dir) => path.startsWith(`generated/${dir}/`) && path.endsWith(".bridge.d.ts"));
2223
+ }
2224
+ function generatedBridgeTypesPaths(viewName) {
2225
+ return GENERATED_BRIDGE_DIRS.map((dir) => `generated/${dir}/${viewName}.bridge.d.ts`);
2226
+ }
2227
+
2204
2228
  //#endregion
2205
2229
  //#region src/plugins/utils.ts
2206
2230
  /** Strip query and hash from a URL/path. */
@@ -2911,13 +2935,28 @@ async function build$1(options) {
2911
2935
  });
2912
2936
  await mkdir(codegenDir, { recursive: true });
2913
2937
  for (const file of files) {
2938
+ if (isGeneratedBridgeTypesPath(file.path)) continue;
2914
2939
  const filePath = resolve(codegenDir, file.path);
2915
2940
  await mkdir(dirname(filePath), { recursive: true });
2916
2941
  await writeFile(filePath, file.content);
2917
2942
  }
2943
+ for (const view of views) {
2944
+ const bridge = findBridgeTypesForView(files, view.name);
2945
+ const bridgePath = resolveViewBridgePath(view);
2946
+ if (bridge && bridgePath) {
2947
+ await mkdir(dirname(bridgePath), { recursive: true });
2948
+ await writeFileIfChanged$2(bridgePath, bridge.content);
2949
+ }
2950
+ for (const relPath of generatedBridgeTypesPaths(view.name)) {
2951
+ const legacyPath = resolve(codegenDir, relPath);
2952
+ try {
2953
+ await unlink(legacyPath);
2954
+ } catch {}
2955
+ }
2956
+ }
2918
2957
  const envTypesPath = resolve(srcDir, envTypes.path);
2919
2958
  await mkdir(dirname(envTypesPath), { recursive: true });
2920
- await writeFile(envTypesPath, envTypes.content);
2959
+ await writeFileIfChanged$2(envTypesPath, envTypes.content);
2921
2960
  step("codegen", codegenTimer());
2922
2961
  } catch (err) {
2923
2962
  stepFail("codegen", err instanceof Error ? err.message : String(err));
@@ -2982,6 +3021,12 @@ async function build$1(options) {
2982
3021
  }
2983
3022
  footer(`Built in ${totalTimer()}`, outDir);
2984
3023
  }
3024
+ async function writeFileIfChanged$2(filePath, content) {
3025
+ try {
3026
+ if (await readFile(filePath, "utf-8") === content) return;
3027
+ } catch {}
3028
+ await writeFile(filePath, content);
3029
+ }
2985
3030
  async function buildMain(args) {
2986
3031
  const runtimeEntry = args.config.runtime.entry;
2987
3032
  const entry = resolve(dirname(args.config.runtime.__source), runtimeEntry);
@@ -3271,13 +3316,28 @@ var DevServer = class {
3271
3316
  });
3272
3317
  await mkdir(outputDir, { recursive: true });
3273
3318
  for (const file of files) {
3319
+ if (isGeneratedBridgeTypesPath(file.path)) continue;
3274
3320
  const filePath = resolve(outputDir, file.path);
3275
3321
  await mkdir(dirname(filePath), { recursive: true });
3276
3322
  await writeFile(filePath, file.content);
3277
3323
  }
3324
+ for (const view of this.config.views ?? []) {
3325
+ const bridge = findBridgeTypesForView(files, view.name);
3326
+ const bridgePath = resolveViewBridgePath(view);
3327
+ if (bridge && bridgePath) {
3328
+ await mkdir(dirname(bridgePath), { recursive: true });
3329
+ await writeFileIfChanged$1(bridgePath, bridge.content);
3330
+ }
3331
+ for (const relPath of generatedBridgeTypesPaths(view.name)) {
3332
+ const legacyPath = resolve(outputDir, relPath);
3333
+ try {
3334
+ await unlink(legacyPath);
3335
+ } catch {}
3336
+ }
3337
+ }
3278
3338
  const envTypesPath = resolve(srcDir, envTypes.path);
3279
3339
  await mkdir(dirname(envTypesPath), { recursive: true });
3280
- await writeFile(envTypesPath, envTypes.content);
3340
+ await writeFileIfChanged$1(envTypesPath, envTypes.content);
3281
3341
  }
3282
3342
  async startRenderer() {
3283
3343
  const views = (this.config.views ?? []).filter((v) => v.entry);
@@ -3557,6 +3617,12 @@ var DevServer = class {
3557
3617
  });
3558
3618
  }
3559
3619
  };
3620
+ async function writeFileIfChanged$1(filePath, content) {
3621
+ try {
3622
+ if (await readFile(filePath, "utf-8") === content) return;
3623
+ } catch {}
3624
+ await writeFile(filePath, content);
3625
+ }
3560
3626
 
3561
3627
  //#endregion
3562
3628
  //#region src/commands/dev.ts
@@ -3617,17 +3683,39 @@ async function generate$1(options) {
3617
3683
  });
3618
3684
  console.log(`Generating ${files.length + 1} file(s)...`);
3619
3685
  for (const file of files) {
3686
+ if (isGeneratedBridgeTypesPath(file.path)) continue;
3620
3687
  const fullPath = resolve(outputDir, file.path);
3621
3688
  await mkdir(dirname(fullPath), { recursive: true });
3622
3689
  await writeFile(fullPath, file.content);
3623
3690
  console.log(` .electro/${file.path}`);
3624
3691
  }
3692
+ for (const view of views) {
3693
+ const bridge = findBridgeTypesForView(files, view.name);
3694
+ const bridgePath = resolveViewBridgePath(view);
3695
+ if (bridge && bridgePath) {
3696
+ await mkdir(dirname(bridgePath), { recursive: true });
3697
+ await writeFileIfChanged(bridgePath, bridge.content);
3698
+ console.log(` ${relative(process.cwd(), bridgePath)}`);
3699
+ }
3700
+ for (const relPath of generatedBridgeTypesPaths(view.name)) {
3701
+ const legacyPath = resolve(outputDir, relPath);
3702
+ try {
3703
+ await unlink(legacyPath);
3704
+ } catch {}
3705
+ }
3706
+ }
3625
3707
  const envTypesPath = resolve(srcDir, envTypes.path);
3626
3708
  await mkdir(dirname(envTypesPath), { recursive: true });
3627
3709
  await writeFile(envTypesPath, envTypes.content);
3628
3710
  console.log(` src/${envTypes.path}`);
3629
3711
  console.log("Done.");
3630
3712
  }
3713
+ async function writeFileIfChanged(filePath, content) {
3714
+ try {
3715
+ if (await readFile(filePath, "utf-8") === content) return;
3716
+ } catch {}
3717
+ await writeFile(filePath, content);
3718
+ }
3631
3719
 
3632
3720
  //#endregion
3633
3721
  //#region src/commands/preview.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cordy/electro-cli",
3
- "version": "1.2.10",
3
+ "version": "1.2.11",
4
4
  "description": "CLI for @cordy/electro — dev server, build, and code generation commands",
5
5
  "license": "MIT",
6
6
  "type": "module",