feat(refactor): PluginDefinition::platform (#3665)

This commit is contained in:
Angelos Bouklis
2025-09-05 09:28:17 +03:00
committed by GitHub
parent d329076b52
commit dcc611c7d0
9 changed files with 72 additions and 13 deletions

View File

@ -3,6 +3,7 @@ import { fileURLToPath } from 'node:url';
import { globSync } from 'glob';
import { Project } from 'ts-morph';
import { Platform } from '../src/types/plugins'
const kebabToCamel = (text: string) =>
text.replace(/-(\w)/g, (_, letter: string) => letter.toUpperCase());
@ -73,6 +74,12 @@ export const pluginVirtualModuleGenerator = (
}
}
writer.blankLine();
if (mode === "main" || mode === "preload") {
writer.writeLine("import * as is from 'electron-is';");
writer.writeLine('globalThis.electronIs = is;');
}
writer.write(supportsPlatform.toString());
writer.blankLine();
// Context-specific exports
@ -95,7 +102,7 @@ export const pluginVirtualModuleGenerator = (
}
writer.writeLine(' ]);');
writer.writeLine(
' resolve(pluginEntries.filter((entry) => entry).reduce((acc, [name, plg]) => { acc[name] = plg; return acc; }, {}));',
' resolve(pluginEntries.filter((entry) => entry && supportsPlatform(entry[1])).reduce((acc, [name, plg]) => { acc[name] = plg; return acc; }, {}));',
);
writer.writeLine(` return await ${mode}PluginsCache;`);
writer.writeLine('};');
@ -117,7 +124,7 @@ export const pluginVirtualModuleGenerator = (
}
writer.writeLine(' ]);');
writer.writeLine(
' resolve(stubEntries.reduce((acc, [name, plg]) => { acc[name] = plg; return acc; }, {}));',
' resolve(stubEntries.filter(entry => entry && supportsPlatform(entry[1])).reduce((acc, [name, plg]) => { acc[name] = plg; return acc; }, {}));',
);
writer.writeLine(' return await promise;');
writer.writeLine('};');
@ -128,3 +135,17 @@ export const pluginVirtualModuleGenerator = (
return src.getText();
};
function supportsPlatform({ platform }: { platform: string }) {
if (typeof platform !== "number") return true;
const is = globalThis.electronIs;
if (is.windows()) return (platform & Platform.Windows) !== 0;
if (is.macOS()) return (platform & Platform.macOS) !== 0;
if (is.linux()) return (platform & Platform.Linux) !== 0;
if (is.freebsd()) return (platform & Platform.Freebsd) !== 0;
// unknown platform
return false;
}