@cordy/electro-generator 1.2.16 → 1.2.17
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 +15 -4
- package/package.json +3 -3
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { dirname, join, relative } from "node:path";
|
|
1
|
+
import { dirname, isAbsolute, join, relative, resolve } from "node:path";
|
|
2
2
|
import { PolicyEngine } from "@cordy/electro";
|
|
3
3
|
import { readFileSync } from "node:fs";
|
|
4
4
|
import { Visitor, parseSync } from "oxc-parser";
|
|
@@ -70,6 +70,16 @@ contextBridge.exposeInMainWorld("electro", ${featureEntries.length > 0 ? `{\n${f
|
|
|
70
70
|
content
|
|
71
71
|
};
|
|
72
72
|
}
|
|
73
|
+
function toRuntimeImportPathFrom(outputFilePath, sourceFilePath) {
|
|
74
|
+
const rel = relative(dirname(outputFilePath), sourceFilePath).replaceAll("\\", "/");
|
|
75
|
+
return rel.startsWith(".") ? rel : `./${rel}`;
|
|
76
|
+
}
|
|
77
|
+
function resolvePreloadExtensionImport(view, generatedPreloadPath, specifier) {
|
|
78
|
+
const trimmed = specifier.trim();
|
|
79
|
+
if (trimmed.length === 0) return trimmed;
|
|
80
|
+
if (!(trimmed.startsWith(".") || isAbsolute(trimmed))) return trimmed;
|
|
81
|
+
return toRuntimeImportPathFrom(generatedPreloadPath, isAbsolute(trimmed) ? trimmed : resolve(dirname(view.__source), trimmed));
|
|
82
|
+
}
|
|
73
83
|
/**
|
|
74
84
|
* Generate bridge type declarations for a specific view.
|
|
75
85
|
* Makes `window.electro` type-safe in the renderer.
|
|
@@ -238,16 +248,17 @@ ${generateViewTypes(views)}${generateWindowApiTypes(windows, srcDir)}}
|
|
|
238
248
|
* Generate all output files from scan results and view definitions.
|
|
239
249
|
*/
|
|
240
250
|
function generate(input) {
|
|
241
|
-
const { scanResult, views, srcDir } = input;
|
|
251
|
+
const { scanResult, views, srcDir, outputDir } = input;
|
|
242
252
|
const policy = new PolicyEngine(views);
|
|
243
253
|
const files = [];
|
|
244
254
|
for (const view of views) {
|
|
245
255
|
const knownIds = new Set(scanResult.features.map((f) => f.id));
|
|
246
256
|
for (const fId of view.features ?? []) if (!knownIds.has(fId)) console.warn(`[generator] View "${view.name}" references unknown feature "${fId}"`);
|
|
257
|
+
const generatedPreloadPath = join(outputDir, "generated", "preload", `${view.name}.gen.ts`);
|
|
247
258
|
const preloadExtensions = /* @__PURE__ */ new Set();
|
|
248
|
-
if (typeof view.preload === "string" && view.preload.length > 0) preloadExtensions.add(view.preload);
|
|
259
|
+
if (typeof view.preload === "string" && view.preload.length > 0) preloadExtensions.add(resolvePreloadExtensionImport(view, generatedPreloadPath, view.preload));
|
|
249
260
|
const webPreferencesPreload = view.webPreferences?.preload;
|
|
250
|
-
if (typeof webPreferencesPreload === "string" && webPreferencesPreload.length > 0) preloadExtensions.add(webPreferencesPreload);
|
|
261
|
+
if (typeof webPreferencesPreload === "string" && webPreferencesPreload.length > 0) preloadExtensions.add(resolvePreloadExtensionImport(view, generatedPreloadPath, webPreferencesPreload));
|
|
251
262
|
files.push(generatePreload(view.name, scanResult.features, policy, [...preloadExtensions]));
|
|
252
263
|
files.push(generateBridgeTypes(view, scanResult.features, policy));
|
|
253
264
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cordy/electro-generator",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.17",
|
|
4
4
|
"description": "Code generator for @cordy/electro — scans features and emits preload scripts and bridge types",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -44,14 +44,14 @@
|
|
|
44
44
|
"prepublishOnly": "bun run build"
|
|
45
45
|
},
|
|
46
46
|
"peerDependencies": {
|
|
47
|
-
"@cordy/electro": "1.2.
|
|
47
|
+
"@cordy/electro": "1.2.17"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
50
|
"oxc-parser": "^0.114.0",
|
|
51
51
|
"tinyglobby": "^0.2.15"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
|
-
"@cordy/electro": "1.2.
|
|
54
|
+
"@cordy/electro": "1.2.17",
|
|
55
55
|
"tsdown": "^0.20.3",
|
|
56
56
|
"vitest": "v4.1.0-beta.3"
|
|
57
57
|
}
|