@electron/rebuild 0.0.0 → 3.2.10

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 (101) hide show
  1. package/README.md +158 -0
  2. package/lib/src/arch.d.ts +16 -0
  3. package/lib/src/arch.js +36 -0
  4. package/lib/src/arch.js.map +1 -0
  5. package/lib/src/cache.d.ts +13 -0
  6. package/lib/src/cache.js +153 -0
  7. package/lib/src/cache.js.map +1 -0
  8. package/lib/src/clang-fetcher.d.ts +4 -0
  9. package/lib/src/clang-fetcher.js +145 -0
  10. package/lib/src/clang-fetcher.js.map +1 -0
  11. package/lib/src/cli.d.ts +2 -0
  12. package/lib/src/cli.js +168 -0
  13. package/lib/src/cli.js.map +1 -0
  14. package/lib/src/constants.d.ts +1 -0
  15. package/lib/src/constants.js +30 -0
  16. package/lib/src/constants.js.map +1 -0
  17. package/lib/src/electron-locator.d.ts +1 -0
  18. package/lib/src/electron-locator.js +56 -0
  19. package/lib/src/electron-locator.js.map +1 -0
  20. package/lib/src/fetcher.d.ts +2 -0
  21. package/lib/src/fetcher.js +36 -0
  22. package/lib/src/fetcher.js.map +1 -0
  23. package/lib/src/main.d.ts +3 -0
  24. package/lib/src/main.js +10 -0
  25. package/lib/src/main.js.map +1 -0
  26. package/lib/src/module-rebuilder.d.ts +27 -0
  27. package/lib/src/module-rebuilder.js +132 -0
  28. package/lib/src/module-rebuilder.js.map +1 -0
  29. package/lib/src/module-type/index.d.ts +17 -0
  30. package/lib/src/module-type/index.js +56 -0
  31. package/lib/src/module-type/index.js.map +1 -0
  32. package/lib/src/module-type/node-gyp.d.ts +7 -0
  33. package/lib/src/module-type/node-gyp.js +149 -0
  34. package/lib/src/module-type/node-gyp.js.map +1 -0
  35. package/lib/src/module-type/prebuild-install.d.ts +12 -0
  36. package/lib/src/module-type/prebuild-install.js +81 -0
  37. package/lib/src/module-type/prebuild-install.js.map +1 -0
  38. package/lib/src/module-type/prebuildify.d.ts +11 -0
  39. package/lib/src/module-type/prebuildify.js +68 -0
  40. package/lib/src/module-type/prebuildify.js.map +1 -0
  41. package/lib/src/module-walker.d.ts +17 -0
  42. package/lib/src/module-walker.js +112 -0
  43. package/lib/src/module-walker.js.map +1 -0
  44. package/lib/src/node-api.d.ts +8 -0
  45. package/lib/src/node-api.js +31 -0
  46. package/lib/src/node-api.js.map +1 -0
  47. package/lib/src/prebuild-shim.d.ts +0 -0
  48. package/lib/src/prebuild-shim.js +6 -0
  49. package/lib/src/prebuild-shim.js.map +1 -0
  50. package/lib/src/read-package-json.d.ts +1 -0
  51. package/lib/src/read-package-json.js +44 -0
  52. package/lib/src/read-package-json.js.map +1 -0
  53. package/lib/src/rebuild.d.ts +56 -0
  54. package/lib/src/rebuild.js +166 -0
  55. package/lib/src/rebuild.js.map +1 -0
  56. package/lib/src/search-module.d.ts +23 -0
  57. package/lib/src/search-module.js +97 -0
  58. package/lib/src/search-module.js.map +1 -0
  59. package/lib/src/sysroot-fetcher.d.ts +1 -0
  60. package/lib/src/sysroot-fetcher.js +74 -0
  61. package/lib/src/sysroot-fetcher.js.map +1 -0
  62. package/lib/src/types.d.ts +26 -0
  63. package/lib/src/types.js +9 -0
  64. package/lib/src/types.js.map +1 -0
  65. package/lib/test/arch.d.ts +1 -0
  66. package/lib/test/arch.js +37 -0
  67. package/lib/test/arch.js.map +1 -0
  68. package/lib/test/electron-locator.d.ts +1 -0
  69. package/lib/test/electron-locator.js +70 -0
  70. package/lib/test/electron-locator.js.map +1 -0
  71. package/lib/test/helpers/electron-version.d.ts +1 -0
  72. package/lib/test/helpers/electron-version.js +43 -0
  73. package/lib/test/helpers/electron-version.js.map +1 -0
  74. package/lib/test/helpers/module-setup.d.ts +5 -0
  75. package/lib/test/helpers/module-setup.js +35 -0
  76. package/lib/test/helpers/module-setup.js.map +1 -0
  77. package/lib/test/helpers/rebuild.d.ts +7 -0
  78. package/lib/test/helpers/rebuild.js +42 -0
  79. package/lib/test/helpers/rebuild.js.map +1 -0
  80. package/lib/test/module-type-node-gyp.d.ts +1 -0
  81. package/lib/test/module-type-node-gyp.js +57 -0
  82. package/lib/test/module-type-node-gyp.js.map +1 -0
  83. package/lib/test/module-type-prebuild-install.d.ts +1 -0
  84. package/lib/test/module-type-prebuild-install.js +82 -0
  85. package/lib/test/module-type-prebuild-install.js.map +1 -0
  86. package/lib/test/module-type-prebuildify.d.ts +1 -0
  87. package/lib/test/module-type-prebuildify.js +102 -0
  88. package/lib/test/module-type-prebuildify.js.map +1 -0
  89. package/lib/test/read-package-json.d.ts +1 -0
  90. package/lib/test/read-package-json.js +35 -0
  91. package/lib/test/read-package-json.js.map +1 -0
  92. package/lib/test/rebuild-yarnworkspace.d.ts +1 -0
  93. package/lib/test/rebuild-yarnworkspace.js +69 -0
  94. package/lib/test/rebuild-yarnworkspace.js.map +1 -0
  95. package/lib/test/rebuild.d.ts +1 -0
  96. package/lib/test/rebuild.js +192 -0
  97. package/lib/test/rebuild.js.map +1 -0
  98. package/lib/test/search-module.d.ts +1 -0
  99. package/lib/test/search-module.js +65 -0
  100. package/lib/test/search-module.js.map +1 -0
  101. package/package.json +127 -1
@@ -0,0 +1,56 @@
1
+ /// <reference types="node" />
2
+ import { EventEmitter } from 'events';
3
+ import { BuildType, IRebuilder, RebuildMode } from './types';
4
+ import { ModuleType } from './module-walker';
5
+ export interface RebuildOptions {
6
+ buildPath: string;
7
+ electronVersion: string;
8
+ arch?: string;
9
+ extraModules?: string[];
10
+ onlyModules?: string[] | null;
11
+ force?: boolean;
12
+ headerURL?: string;
13
+ types?: ModuleType[];
14
+ mode?: RebuildMode;
15
+ debug?: boolean;
16
+ useCache?: boolean;
17
+ useElectronClang?: boolean;
18
+ cachePath?: string;
19
+ prebuildTagPrefix?: string;
20
+ projectRootPath?: string;
21
+ forceABI?: number;
22
+ disablePreGypCopy?: boolean;
23
+ }
24
+ export interface RebuilderOptions extends RebuildOptions {
25
+ lifecycle: EventEmitter;
26
+ }
27
+ export declare class Rebuilder implements IRebuilder {
28
+ private ABIVersion;
29
+ private moduleWalker;
30
+ nodeGypPath: string;
31
+ rebuilds: (() => Promise<void>)[];
32
+ lifecycle: EventEmitter;
33
+ buildPath: string;
34
+ electronVersion: string;
35
+ platform: string;
36
+ arch: string;
37
+ force: boolean;
38
+ headerURL: string;
39
+ mode: RebuildMode;
40
+ debug: boolean;
41
+ useCache: boolean;
42
+ cachePath: string;
43
+ prebuildTagPrefix: string;
44
+ msvsVersion?: string;
45
+ useElectronClang: boolean;
46
+ disablePreGypCopy: boolean;
47
+ constructor(options: RebuilderOptions);
48
+ get ABI(): string;
49
+ get buildType(): BuildType;
50
+ rebuild(): Promise<void>;
51
+ rebuildModuleAt(modulePath: string): Promise<void>;
52
+ }
53
+ export declare type RebuildResult = Promise<void> & {
54
+ lifecycle: EventEmitter;
55
+ };
56
+ export declare function rebuild(options: RebuildOptions): RebuildResult;
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.rebuild = exports.Rebuilder = void 0;
30
+ const debug_1 = __importDefault(require("debug"));
31
+ const events_1 = require("events");
32
+ const fs = __importStar(require("fs-extra"));
33
+ const nodeAbi = __importStar(require("node-abi"));
34
+ const os = __importStar(require("os"));
35
+ const path = __importStar(require("path"));
36
+ const cache_1 = require("./cache");
37
+ const types_1 = require("./types");
38
+ const module_rebuilder_1 = require("./module-rebuilder");
39
+ const module_walker_1 = require("./module-walker");
40
+ const d = (0, debug_1.default)('electron-rebuild');
41
+ const defaultMode = 'sequential';
42
+ const defaultTypes = ['prod', 'optional'];
43
+ class Rebuilder {
44
+ constructor(options) {
45
+ var _a;
46
+ this.platform = process.platform;
47
+ this.lifecycle = options.lifecycle;
48
+ this.buildPath = options.buildPath;
49
+ this.electronVersion = options.electronVersion;
50
+ this.arch = options.arch || process.arch;
51
+ this.force = options.force || false;
52
+ this.headerURL = options.headerURL || 'https://www.electronjs.org/headers';
53
+ this.mode = options.mode || defaultMode;
54
+ this.debug = options.debug || false;
55
+ this.useCache = options.useCache || false;
56
+ this.useElectronClang = options.useElectronClang || false;
57
+ this.cachePath = options.cachePath || path.resolve(os.homedir(), '.electron-rebuild-cache');
58
+ this.prebuildTagPrefix = options.prebuildTagPrefix || 'v';
59
+ this.msvsVersion = process.env.GYP_MSVS_VERSION;
60
+ this.disablePreGypCopy = options.disablePreGypCopy || false;
61
+ if (this.useCache && this.force) {
62
+ console.warn('[WARNING]: Electron Rebuild has force enabled and cache enabled, force take precedence and the cache will not be used.');
63
+ this.useCache = false;
64
+ }
65
+ if (typeof this.electronVersion === 'number') {
66
+ if (`${this.electronVersion}`.split('.').length === 1) {
67
+ this.electronVersion = `${this.electronVersion}.0.0`;
68
+ }
69
+ else {
70
+ this.electronVersion = `${this.electronVersion}.0`;
71
+ }
72
+ }
73
+ if (typeof this.electronVersion !== 'string') {
74
+ throw new Error(`Expected a string version for electron version, got a "${typeof this.electronVersion}"`);
75
+ }
76
+ this.ABIVersion = (_a = options.forceABI) === null || _a === void 0 ? void 0 : _a.toString();
77
+ const onlyModules = options.onlyModules || null;
78
+ const extraModules = (options.extraModules || []).reduce((acc, x) => acc.add(x), new Set());
79
+ const types = options.types || defaultTypes;
80
+ this.moduleWalker = new module_walker_1.ModuleWalker(this.buildPath, options.projectRootPath, types, extraModules, onlyModules);
81
+ this.rebuilds = [];
82
+ d('rebuilding with args:', this.buildPath, this.electronVersion, this.arch, extraModules, this.force, this.headerURL, types, this.debug);
83
+ }
84
+ get ABI() {
85
+ if (this.ABIVersion === undefined) {
86
+ this.ABIVersion = nodeAbi.getAbi(this.electronVersion, 'electron');
87
+ }
88
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
89
+ return this.ABIVersion;
90
+ }
91
+ get buildType() {
92
+ return this.debug ? types_1.BuildType.Debug : types_1.BuildType.Release;
93
+ }
94
+ async rebuild() {
95
+ if (!path.isAbsolute(this.buildPath)) {
96
+ throw new Error('Expected buildPath to be an absolute path');
97
+ }
98
+ this.lifecycle.emit('start');
99
+ await this.moduleWalker.walkModules();
100
+ for (const nodeModulesPath of await this.moduleWalker.nodeModulesPaths) {
101
+ await this.moduleWalker.findAllModulesIn(nodeModulesPath);
102
+ }
103
+ for (const modulePath of this.moduleWalker.modulesToRebuild) {
104
+ this.rebuilds.push(() => this.rebuildModuleAt(modulePath));
105
+ }
106
+ this.rebuilds.push(() => this.rebuildModuleAt(this.buildPath));
107
+ if (this.mode !== 'sequential') {
108
+ await Promise.all(this.rebuilds.map(fn => fn()));
109
+ }
110
+ else {
111
+ for (const rebuildFn of this.rebuilds) {
112
+ await rebuildFn();
113
+ }
114
+ }
115
+ }
116
+ async rebuildModuleAt(modulePath) {
117
+ if (!(await fs.pathExists(path.resolve(modulePath, 'binding.gyp')))) {
118
+ return;
119
+ }
120
+ const moduleRebuilder = new module_rebuilder_1.ModuleRebuilder(this, modulePath);
121
+ this.lifecycle.emit('module-found', path.basename(modulePath));
122
+ if (!this.force && await moduleRebuilder.alreadyBuiltByRebuild()) {
123
+ d(`skipping: ${path.basename(modulePath)} as it is already built`);
124
+ this.lifecycle.emit('module-done');
125
+ this.lifecycle.emit('module-skip');
126
+ return;
127
+ }
128
+ if (await moduleRebuilder.prebuildInstallNativeModuleExists()) {
129
+ d(`skipping: ${path.basename(modulePath)} as it was prebuilt`);
130
+ return;
131
+ }
132
+ let cacheKey;
133
+ if (this.useCache) {
134
+ cacheKey = await (0, cache_1.generateCacheKey)({
135
+ ABI: this.ABI,
136
+ arch: this.arch,
137
+ debug: this.debug,
138
+ electronVersion: this.electronVersion,
139
+ headerURL: this.headerURL,
140
+ modulePath,
141
+ });
142
+ const applyDiffFn = await (0, cache_1.lookupModuleState)(this.cachePath, cacheKey);
143
+ if (typeof applyDiffFn === 'function') {
144
+ await applyDiffFn(modulePath);
145
+ this.lifecycle.emit('module-done');
146
+ return;
147
+ }
148
+ }
149
+ if (await moduleRebuilder.rebuild(cacheKey)) {
150
+ this.lifecycle.emit('module-done');
151
+ }
152
+ }
153
+ }
154
+ exports.Rebuilder = Rebuilder;
155
+ function rebuild(options) {
156
+ // eslint-disable-next-line prefer-rest-params
157
+ d('rebuilding with args:', arguments);
158
+ const lifecycle = new events_1.EventEmitter();
159
+ const rebuilderOptions = { ...options, lifecycle };
160
+ const rebuilder = new Rebuilder(rebuilderOptions);
161
+ const ret = rebuilder.rebuild();
162
+ ret.lifecycle = lifecycle;
163
+ return ret;
164
+ }
165
+ exports.rebuild = rebuild;
166
+ //# sourceMappingURL=rebuild.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rebuild.js","sourceRoot":"","sources":["../../src/rebuild.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Find all instances of a given module in node_modules subdirectories while traversing up
3
+ * ancestor directories.
4
+ *
5
+ * @param cwd the initial directory to traverse
6
+ * @param moduleName the Node module name (should work for scoped modules as well)
7
+ * @param rootPath the project's root path. If provided, the traversal will stop at this path.
8
+ */
9
+ export declare function searchForModule(cwd: string, moduleName: string, rootPath?: string): Promise<string[]>;
10
+ /**
11
+ * Find all instances of node_modules subdirectories while traversing up ancestor directories.
12
+ *
13
+ * @param cwd the initial directory to traverse
14
+ * @param rootPath the project's root path. If provided, the traversal will stop at this path.
15
+ */
16
+ export declare function searchForNodeModules(cwd: string, rootPath?: string): Promise<string[]>;
17
+ /**
18
+ * Determine the root directory of a given project, by looking for a directory with an
19
+ * NPM or yarn lockfile.
20
+ *
21
+ * @param cwd the initial directory to traverse
22
+ */
23
+ export declare function getProjectRootPath(cwd: string): Promise<string>;
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.getProjectRootPath = exports.searchForNodeModules = exports.searchForModule = void 0;
27
+ const fs = __importStar(require("fs-extra"));
28
+ const path = __importStar(require("path"));
29
+ async function shouldContinueSearch(traversedPath, rootPath, stopAtPackageJSON) {
30
+ if (rootPath) {
31
+ return Promise.resolve(traversedPath !== path.dirname(rootPath));
32
+ }
33
+ else if (stopAtPackageJSON) {
34
+ return fs.pathExists(path.join(traversedPath, 'package.json'));
35
+ }
36
+ else {
37
+ return true;
38
+ }
39
+ }
40
+ async function traverseAncestorDirectories(cwd, pathGenerator, rootPath, maxItems, stopAtPackageJSON) {
41
+ const paths = [];
42
+ let traversedPath = path.resolve(cwd);
43
+ while (await shouldContinueSearch(traversedPath, rootPath, stopAtPackageJSON)) {
44
+ const generatedPath = pathGenerator(traversedPath);
45
+ if (await fs.pathExists(generatedPath)) {
46
+ paths.push(generatedPath);
47
+ }
48
+ const parentPath = path.dirname(traversedPath);
49
+ if (parentPath === traversedPath || (maxItems && paths.length >= maxItems)) {
50
+ break;
51
+ }
52
+ traversedPath = parentPath;
53
+ }
54
+ return paths;
55
+ }
56
+ /**
57
+ * Find all instances of a given module in node_modules subdirectories while traversing up
58
+ * ancestor directories.
59
+ *
60
+ * @param cwd the initial directory to traverse
61
+ * @param moduleName the Node module name (should work for scoped modules as well)
62
+ * @param rootPath the project's root path. If provided, the traversal will stop at this path.
63
+ */
64
+ async function searchForModule(cwd, moduleName, rootPath) {
65
+ const pathGenerator = (traversedPath) => path.join(traversedPath, 'node_modules', moduleName);
66
+ return traverseAncestorDirectories(cwd, pathGenerator, rootPath, undefined, true);
67
+ }
68
+ exports.searchForModule = searchForModule;
69
+ /**
70
+ * Find all instances of node_modules subdirectories while traversing up ancestor directories.
71
+ *
72
+ * @param cwd the initial directory to traverse
73
+ * @param rootPath the project's root path. If provided, the traversal will stop at this path.
74
+ */
75
+ async function searchForNodeModules(cwd, rootPath) {
76
+ const pathGenerator = (traversedPath) => path.join(traversedPath, 'node_modules');
77
+ return traverseAncestorDirectories(cwd, pathGenerator, rootPath, undefined, true);
78
+ }
79
+ exports.searchForNodeModules = searchForNodeModules;
80
+ /**
81
+ * Determine the root directory of a given project, by looking for a directory with an
82
+ * NPM or yarn lockfile.
83
+ *
84
+ * @param cwd the initial directory to traverse
85
+ */
86
+ async function getProjectRootPath(cwd) {
87
+ for (const lockFilename of ['yarn.lock', 'package-lock.json']) {
88
+ const pathGenerator = (traversedPath) => path.join(traversedPath, lockFilename);
89
+ const lockPaths = await traverseAncestorDirectories(cwd, pathGenerator, undefined, 1);
90
+ if (lockPaths.length > 0) {
91
+ return path.dirname(lockPaths[0]);
92
+ }
93
+ }
94
+ return cwd;
95
+ }
96
+ exports.getProjectRootPath = getProjectRootPath;
97
+ //# sourceMappingURL=search-module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-module.js","sourceRoot":"","sources":["../../src/search-module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAC/B,2CAA6B;AAE7B,KAAK,UAAU,oBAAoB,CAAC,aAAqB,EAAE,QAAiB,EAAE,iBAA2B;IACvG,IAAI,QAAQ,EAAE;QACZ,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,KAAK,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;KAClE;SAAM,IAAI,iBAAiB,EAAE;QAC5B,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC;KAChE;SAAM;QACL,OAAO,IAAI,CAAC;KACb;AACH,CAAC;AAID,KAAK,UAAU,2BAA2B,CACxC,GAAW,EACX,aAAoC,EACpC,QAAiB,EACjB,QAAiB,EACjB,iBAA2B;IAE3B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAEtC,OAAO,MAAM,oBAAoB,CAAC,aAAa,EAAE,QAAQ,EAAE,iBAAiB,CAAC,EAAE;QAC7E,MAAM,aAAa,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;QACnD,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;YACtC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SAC3B;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC/C,IAAI,UAAU,KAAK,aAAa,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,IAAI,QAAQ,CAAC,EAAE;YAC1E,MAAM;SACP;QACD,aAAa,GAAG,UAAU,CAAC;KAC5B;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACI,KAAK,UAAU,eAAe,CACnC,GAAW,EACX,UAAkB,EAClB,QAAiB;IAEjB,MAAM,aAAa,GAA0B,CAAC,aAAa,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;IACrH,OAAO,2BAA2B,CAAC,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AACpF,CAAC;AAPD,0CAOC;AAED;;;;;GAKG;AACI,KAAK,UAAU,oBAAoB,CAAC,GAAW,EAAE,QAAiB;IACvE,MAAM,aAAa,GAA0B,CAAC,aAAa,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IACzG,OAAO,2BAA2B,CAAC,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AACpF,CAAC;AAHD,oDAGC;AAED;;;;;GAKG;AACI,KAAK,UAAU,kBAAkB,CAAC,GAAW;IAClD,KAAK,MAAM,YAAY,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC,EAAE;QAC7D,MAAM,aAAa,GAA0B,CAAC,aAAa,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;QACvG,MAAM,SAAS,GAAG,MAAM,2BAA2B,CAAC,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA;QACrF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACxB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;SACnC;KACF;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAVD,gDAUC"}
@@ -0,0 +1 @@
1
+ export declare function downloadLinuxSysroot(electronVersion: string, targetArch: string): Promise<string>;
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.downloadLinuxSysroot = void 0;
30
+ const crypto = __importStar(require("crypto"));
31
+ const debug_1 = __importDefault(require("debug"));
32
+ const fs = __importStar(require("fs-extra"));
33
+ const path = __importStar(require("path"));
34
+ const tar = __importStar(require("tar"));
35
+ const constants_1 = require("./constants");
36
+ const fetcher_1 = require("./fetcher");
37
+ const d = (0, debug_1.default)('electron-rebuild');
38
+ const sysrootArchAliases = {
39
+ x64: 'amd64',
40
+ ia32: 'i386',
41
+ };
42
+ const SYSROOT_BASE_URL = 'https://s3.amazonaws.com/electronjs-sysroots/toolchain';
43
+ async function downloadLinuxSysroot(electronVersion, targetArch) {
44
+ d('fetching sysroot for Electron:', electronVersion);
45
+ const sysrootDir = path.resolve(constants_1.ELECTRON_GYP_DIR, `${electronVersion}-sysroot`);
46
+ if (await fs.pathExists(path.resolve(sysrootDir, 'lib')))
47
+ return sysrootDir;
48
+ if (!await fs.pathExists(sysrootDir))
49
+ await fs.mkdirp(sysrootDir);
50
+ const linuxArch = sysrootArchAliases[targetArch] || targetArch;
51
+ const electronSysroots = JSON.parse(await (0, fetcher_1.fetch)(`https://raw.githubusercontent.com/electron/electron/v${electronVersion}/script/sysroots.json`, 'text'));
52
+ const { Sha1Sum: sha, Tarball: fileName } = electronSysroots[`sid_${linuxArch}`];
53
+ const sysrootURL = `${SYSROOT_BASE_URL}/${sha}/${fileName}`;
54
+ let sysrootBuffer = await (0, fetcher_1.fetch)(sysrootURL, 'buffer');
55
+ const actualSha = crypto.createHash('SHA1').update(sysrootBuffer).digest('hex');
56
+ d('expected sha:', sha);
57
+ d('actual sha:', actualSha);
58
+ if (sha !== actualSha)
59
+ throw new Error(`Attempted to download the linux sysroot for ${electronVersion} but the SHA checksum did not match`);
60
+ d('decompressing sysroot');
61
+ sysrootBuffer = await new Promise(resolve => require('lzma-native').decompress(sysrootBuffer, undefined, (result) => resolve(result))); // eslint-disable-line
62
+ const tmpTarFile = path.resolve(constants_1.ELECTRON_GYP_DIR, `${electronVersion}-${fileName}`);
63
+ if (await fs.pathExists(tmpTarFile))
64
+ await fs.remove(tmpTarFile);
65
+ await fs.writeFile(tmpTarFile, sysrootBuffer);
66
+ d('extracting sysroot');
67
+ await tar.x({
68
+ file: tmpTarFile,
69
+ cwd: sysrootDir,
70
+ });
71
+ return sysrootDir;
72
+ }
73
+ exports.downloadLinuxSysroot = downloadLinuxSysroot;
74
+ //# sourceMappingURL=sysroot-fetcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sysroot-fetcher.js","sourceRoot":"","sources":["../../src/sysroot-fetcher.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAiC;AACjC,kDAA0B;AAC1B,6CAA+B;AAC/B,2CAA6B;AAC7B,yCAA2B;AAE3B,2CAA+C;AAC/C,uCAAkC;AAElC,MAAM,CAAC,GAAG,IAAA,eAAK,EAAC,kBAAkB,CAAC,CAAC;AAEpC,MAAM,kBAAkB,GAAG;IACzB,GAAG,EAAE,OAAO;IACZ,IAAI,EAAE,MAAM;CACb,CAAA;AAED,MAAM,gBAAgB,GAAG,wDAAwD,CAAA;AAE1E,KAAK,UAAU,oBAAoB,CAAC,eAAuB,EAAE,UAAkB;IACpF,CAAC,CAAC,gCAAgC,EAAE,eAAe,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,4BAAgB,EAAE,GAAG,eAAe,UAAU,CAAC,CAAC;IAChF,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAAE,OAAO,UAAU,CAAC;IAC5E,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAElE,MAAM,SAAS,GAAG,kBAAkB,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC;IAC/D,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAA,eAAK,EAAC,wDAAwD,eAAe,uBAAuB,EAAE,MAAM,CAAC,CAAC,CAAC;IAEzJ,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,gBAAgB,CAAC,OAAO,SAAS,EAAE,CAAC,CAAC;IACjF,MAAM,UAAU,GAAG,GAAG,gBAAgB,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC5D,IAAI,aAAa,GAAG,MAAM,IAAA,eAAK,EAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAEtD,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAChF,CAAC,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAC5B,IAAI,GAAG,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,eAAe,qCAAqC,CAAC,CAAC;IAE5I,CAAC,CAAC,uBAAuB,CAAC,CAAC;IAC3B,aAAa,GAAG,MAAM,IAAI,OAAO,CAAS,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,aAAa,EAAE,SAAS,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB;IAE9K,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,4BAAgB,EAAE,GAAG,eAAe,IAAI,QAAQ,EAAE,CAAC,CAAC;IACpF,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACjE,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IAE9C,CAAC,CAAC,oBAAoB,CAAC,CAAC;IACxB,MAAM,GAAG,CAAC,CAAC,CAAC;QACV,IAAI,EAAE,UAAU;QAChB,GAAG,EAAE,UAAU;KAChB,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC;AACpB,CAAC;AAhCD,oDAgCC"}
@@ -0,0 +1,26 @@
1
+ /// <reference types="node" />
2
+ import { EventEmitter } from 'events';
3
+ export declare enum BuildType {
4
+ Debug = "Debug",
5
+ Release = "Release"
6
+ }
7
+ export declare type RebuildMode = 'sequential' | 'parallel';
8
+ export interface IRebuilder {
9
+ ABI: string;
10
+ arch: string;
11
+ buildPath: string;
12
+ buildType: BuildType;
13
+ cachePath: string;
14
+ debug: boolean;
15
+ disablePreGypCopy: boolean;
16
+ electronVersion: string;
17
+ force: boolean;
18
+ headerURL: string;
19
+ lifecycle: EventEmitter;
20
+ mode: RebuildMode;
21
+ msvsVersion?: string;
22
+ platform: string;
23
+ prebuildTagPrefix: string;
24
+ useCache: boolean;
25
+ useElectronClang: boolean;
26
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BuildType = void 0;
4
+ var BuildType;
5
+ (function (BuildType) {
6
+ BuildType["Debug"] = "Debug";
7
+ BuildType["Release"] = "Release";
8
+ })(BuildType = exports.BuildType || (exports.BuildType = {}));
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";;;AAEA,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,4BAAe,CAAA;IACf,gCAAmB,CAAA;AACrB,CAAC,EAHW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAGpB"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const chai_1 = require("chai");
4
+ const arch_1 = require("../src/arch");
5
+ // Copied from @electron/get
6
+ describe('uname()', () => {
7
+ if (process.platform !== 'win32') {
8
+ it('should return the correct arch for your system', () => {
9
+ // assumes that the tests will always be run on an x64 system 😬
10
+ (0, chai_1.expect)((0, arch_1.uname)()).to.equal('x86_64');
11
+ });
12
+ }
13
+ });
14
+ // Based on getHostArch tests from @electron/get
15
+ describe('getNodeArch()', () => {
16
+ it('should return process.arch on x64', () => {
17
+ (0, chai_1.expect)((0, arch_1.getNodeArch)('x64', {})).to.equal('x64');
18
+ });
19
+ it('should return process.arch on ia32', () => {
20
+ (0, chai_1.expect)((0, arch_1.getNodeArch)('ia32', {})).to.equal('ia32');
21
+ });
22
+ it('should return process.arch on arm64', () => {
23
+ (0, chai_1.expect)((0, arch_1.getNodeArch)('arm64', {})).to.equal('arm64');
24
+ });
25
+ it('should return process.arch on unknown arm', () => {
26
+ (0, chai_1.expect)((0, arch_1.getNodeArch)('arm', {})).to.equal('armv7l');
27
+ });
28
+ if (process.platform !== 'win32') {
29
+ it('should return uname on arm 6', () => {
30
+ (0, chai_1.expect)((0, arch_1.getNodeArch)('arm', { arm_version: '6' })).to.equal((0, arch_1.uname)());
31
+ });
32
+ }
33
+ it('should return armv7l on arm 7', () => {
34
+ (0, chai_1.expect)((0, arch_1.getNodeArch)('arm', { arm_version: '7' })).to.equal('armv7l');
35
+ });
36
+ });
37
+ //# sourceMappingURL=arch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arch.js","sourceRoot":"","sources":["../../test/arch.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAE9B,sCAAiD;AAEjD,4BAA4B;AAC5B,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE;QAChC,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,gEAAgE;YAChE,IAAA,aAAM,EAAC,IAAA,YAAK,GAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;KACJ;AACH,CAAC,CAAC,CAAC;AAEH,gDAAgD;AAChD,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,IAAA,aAAM,EAAC,IAAA,kBAAW,EAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,IAAA,aAAM,EAAC,IAAA,kBAAW,EAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,IAAA,aAAM,EAAC,IAAA,kBAAW,EAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,IAAA,aAAM,EAAC,IAAA,kBAAW,EAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE;QAChC,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACtC,IAAA,aAAM,EAAC,IAAA,kBAAW,EAAC,KAAK,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAA,YAAK,GAAE,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;KACJ;IAED,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,IAAA,aAAM,EAAC,IAAA,kBAAW,EAAC,KAAK,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ const chai_1 = require("chai");
27
+ const fs = __importStar(require("fs-extra"));
28
+ const path = __importStar(require("path"));
29
+ const electron_locator_1 = require("../src/electron-locator");
30
+ const baseFixtureDir = path.resolve(__dirname, 'fixture', 'electron-locator');
31
+ async function expectElectronCanBeFound(projectRootPath, startDir) {
32
+ it('should return a valid path', async () => {
33
+ const electronPath = await (0, electron_locator_1.locateElectronModule)(projectRootPath, startDir);
34
+ (0, chai_1.expect)(electronPath).to.be.a('string');
35
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
36
+ (0, chai_1.expect)(await fs.pathExists(electronPath)).to.be.equal(true);
37
+ });
38
+ }
39
+ describe('locateElectronModule', () => {
40
+ describe('when electron is not installed', () => {
41
+ const electronDir = path.resolve(__dirname, '..', 'node_modules', 'electron');
42
+ before(async () => {
43
+ await fs.rename(electronDir, `${electronDir}-moved`);
44
+ });
45
+ it('should return null when electron is not installed', async () => {
46
+ const fixtureDir = path.join(baseFixtureDir, 'not-installed');
47
+ (0, chai_1.expect)(await (0, electron_locator_1.locateElectronModule)(fixtureDir, fixtureDir)).to.be.equal(null);
48
+ });
49
+ after(async () => {
50
+ await fs.rename(`${electronDir}-moved`, electronDir);
51
+ });
52
+ });
53
+ describe('using require.resolve() in the current project to search', () => {
54
+ const fixtureDir = path.join(baseFixtureDir, 'not-installed');
55
+ expectElectronCanBeFound(fixtureDir, fixtureDir);
56
+ });
57
+ describe('with electron-prebuilt-compile installed', () => {
58
+ const fixtureDir = path.join(baseFixtureDir, 'prebuilt-compile');
59
+ expectElectronCanBeFound(fixtureDir, fixtureDir);
60
+ });
61
+ describe('with electron installed', () => {
62
+ const fixtureDir = path.join(baseFixtureDir, 'single');
63
+ expectElectronCanBeFound(fixtureDir, fixtureDir);
64
+ describe('in a workspace', () => {
65
+ const fixtureDir = path.join(baseFixtureDir, 'workspace');
66
+ expectElectronCanBeFound(fixtureDir, path.join(fixtureDir, 'packages', 'descendant'));
67
+ });
68
+ });
69
+ });
70
+ //# sourceMappingURL=electron-locator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"electron-locator.js","sourceRoot":"","sources":["../../test/electron-locator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAA8B;AAC9B,6CAA+B;AAC/B,2CAA6B;AAE7B,8DAA+D;AAE/D,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,kBAAkB,CAAC,CAAA;AAE7E,KAAK,UAAU,wBAAwB,CAAC,eAAuB,EAAE,QAAgB;IAC/E,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,YAAY,GAAG,MAAM,IAAA,uCAAoB,EAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QAC3E,IAAA,aAAM,EAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACvC,oEAAoE;QACpE,IAAA,aAAM,EAAC,MAAM,EAAE,CAAC,UAAU,CAAC,YAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;QAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;QAE9E,MAAM,CAAC,KAAK,IAAI,EAAE;YAChB,MAAM,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,WAAW,QAAQ,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;YACjE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;YAC9D,IAAA,aAAM,EAAC,MAAM,IAAA,uCAAoB,EAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/E,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,WAAW,QAAQ,EAAE,WAAW,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,0DAA0D,EAAE,GAAG,EAAE;QACxE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;QAC9D,wBAAwB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,0CAA0C,EAAE,GAAG,EAAE;QACxD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;QACjE,wBAAwB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACvC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;QACvD,wBAAwB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAEjD,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;YAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;YAC1D,wBAAwB,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC;QACxF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function getExactElectronVersionSync(): string;