@electron/rebuild 0.0.0 → 3.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.
- package/LICENSE +21 -0
- package/README.md +158 -0
- package/lib/arch.d.ts +16 -0
- package/lib/arch.js +36 -0
- package/lib/arch.js.map +1 -0
- package/lib/cache.d.ts +13 -0
- package/lib/cache.js +153 -0
- package/lib/cache.js.map +1 -0
- package/lib/clang-fetcher.d.ts +4 -0
- package/lib/clang-fetcher.js +138 -0
- package/lib/clang-fetcher.js.map +1 -0
- package/lib/cli.d.ts +2 -0
- package/lib/cli.js +168 -0
- package/lib/cli.js.map +1 -0
- package/lib/constants.d.ts +1 -0
- package/lib/constants.js +30 -0
- package/lib/constants.js.map +1 -0
- package/lib/electron-locator.d.ts +1 -0
- package/lib/electron-locator.js +56 -0
- package/lib/electron-locator.js.map +1 -0
- package/lib/fetcher.d.ts +2 -0
- package/lib/fetcher.js +36 -0
- package/lib/fetcher.js.map +1 -0
- package/lib/main.d.ts +3 -0
- package/lib/main.js +10 -0
- package/lib/main.js.map +1 -0
- package/lib/module-rebuilder.d.ts +27 -0
- package/lib/module-rebuilder.js +132 -0
- package/lib/module-rebuilder.js.map +1 -0
- package/lib/module-type/index.d.ts +17 -0
- package/lib/module-type/index.js +56 -0
- package/lib/module-type/index.js.map +1 -0
- package/lib/module-type/node-gyp/node-gyp.d.ts +6 -0
- package/lib/module-type/node-gyp/node-gyp.js +117 -0
- package/lib/module-type/node-gyp/node-gyp.js.map +1 -0
- package/lib/module-type/node-gyp/worker.d.ts +1 -0
- package/lib/module-type/node-gyp/worker.js +38 -0
- package/lib/module-type/node-gyp/worker.js.map +1 -0
- package/lib/module-type/prebuild-install.d.ts +12 -0
- package/lib/module-type/prebuild-install.js +79 -0
- package/lib/module-type/prebuild-install.js.map +1 -0
- package/lib/module-type/prebuildify.d.ts +11 -0
- package/lib/module-type/prebuildify.js +68 -0
- package/lib/module-type/prebuildify.js.map +1 -0
- package/lib/module-walker.d.ts +17 -0
- package/lib/module-walker.js +112 -0
- package/lib/module-walker.js.map +1 -0
- package/lib/node-api.d.ts +8 -0
- package/lib/node-api.js +31 -0
- package/lib/node-api.js.map +1 -0
- package/lib/prebuild-shim.d.ts +0 -0
- package/lib/prebuild-shim.js +6 -0
- package/lib/prebuild-shim.js.map +1 -0
- package/lib/read-package-json.d.ts +1 -0
- package/lib/read-package-json.js +44 -0
- package/lib/read-package-json.js.map +1 -0
- package/lib/rebuild.d.ts +56 -0
- package/lib/rebuild.js +166 -0
- package/lib/rebuild.js.map +1 -0
- package/lib/search-module.d.ts +23 -0
- package/lib/search-module.js +97 -0
- package/lib/search-module.js.map +1 -0
- package/lib/sysroot-fetcher.d.ts +1 -0
- package/lib/sysroot-fetcher.js +70 -0
- package/lib/sysroot-fetcher.js.map +1 -0
- package/lib/types.d.ts +26 -0
- package/lib/types.js +9 -0
- package/lib/types.js.map +1 -0
- package/package.json +125 -1
package/lib/cli.js
ADDED
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
20
|
+
if (mod && mod.__esModule) return mod;
|
|
21
|
+
var result = {};
|
|
22
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
23
|
+
__setModuleDefault(result, mod);
|
|
24
|
+
return result;
|
|
25
|
+
};
|
|
26
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
27
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
28
|
+
};
|
|
29
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
31
|
+
const fs = __importStar(require("fs-extra"));
|
|
32
|
+
const path = __importStar(require("path"));
|
|
33
|
+
const ora = require("ora");
|
|
34
|
+
const yargs_1 = __importDefault(require("yargs/yargs"));
|
|
35
|
+
const search_module_1 = require("./search-module");
|
|
36
|
+
const electron_locator_1 = require("./electron-locator");
|
|
37
|
+
const rebuild_1 = require("./rebuild");
|
|
38
|
+
const argv = (0, yargs_1.default)(process.argv.slice(2)).version(false).options({
|
|
39
|
+
version: { alias: 'v', type: 'string', description: 'The version of Electron to build against' },
|
|
40
|
+
force: { alias: 'f', type: 'boolean', description: 'Force rebuilding modules, even if we would skip it otherwise' },
|
|
41
|
+
arch: { alias: 'a', type: 'string', description: "Override the target architecture to something other than your system's" },
|
|
42
|
+
'module-dir': { alias: 'm', type: 'string', description: 'The path to the node_modules directory to rebuild' },
|
|
43
|
+
// TODO: should be type: array
|
|
44
|
+
'which-module': { alias: 'w', type: 'string', description: 'A specific module to build, or comma separated list of modules. Modules will only be rebuilt if they also match the types of dependencies being rebuilt (see --types).' },
|
|
45
|
+
// TODO: should be type: array
|
|
46
|
+
only: { alias: 'o', type: 'string', description: 'Only build specified module, or comma separated list of modules. All others are ignored.' },
|
|
47
|
+
'electron-prebuilt-dir': { alias: 'e', type: 'string', description: 'The path to the prebuilt electron module' },
|
|
48
|
+
'dist-url': { alias: 'd', type: 'string', description: 'Custom header tarball URL' },
|
|
49
|
+
// TODO: should be type: array
|
|
50
|
+
types: { alias: 't', type: 'string', description: 'The types of dependencies to rebuild. Comma separated list of "prod", "dev" and "optional". Default is "prod,optional"' },
|
|
51
|
+
parallel: { alias: 'p', type: 'boolean', description: 'Rebuild in parallel, this is enabled by default on macOS and Linux' },
|
|
52
|
+
sequential: { alias: 's', type: 'boolean', description: 'Rebuild modules sequentially, this is enabled by default on Windows' },
|
|
53
|
+
debug: { alias: 'b', type: 'boolean', description: 'Build debug version of modules' },
|
|
54
|
+
'prebuild-tag-prefix': { type: 'string', description: 'GitHub tag prefix passed to prebuild-install. Default is "v"' },
|
|
55
|
+
'force-abi': { type: 'number', description: 'Override the ABI version for the version of Electron you are targeting. Only use when targeting Nightly releases.' },
|
|
56
|
+
'use-electron-clang': { type: 'boolean', description: 'Use the clang executable that Electron used when building its binary. This will guarantee compiler compatibility' },
|
|
57
|
+
'disable-pre-gyp-copy': { type: 'boolean', description: 'Disables the pre-gyp copy step' },
|
|
58
|
+
}).usage('Usage: $0 --version [version] --module-dir [path]')
|
|
59
|
+
.help()
|
|
60
|
+
.alias('help', 'h')
|
|
61
|
+
.epilog('Copyright 2016-2021')
|
|
62
|
+
.parseSync();
|
|
63
|
+
if (process.argv.length === 3 && process.argv[2] === '--version') {
|
|
64
|
+
/* eslint-disable @typescript-eslint/no-var-requires */
|
|
65
|
+
try {
|
|
66
|
+
console.log('Electron Rebuild Version:', require(path.resolve(__dirname, '../../package.json')).version);
|
|
67
|
+
}
|
|
68
|
+
catch (err) {
|
|
69
|
+
console.log('Electron Rebuild Version:', require(path.resolve(__dirname, '../package.json')).version);
|
|
70
|
+
}
|
|
71
|
+
/* eslint-enable @typescript-eslint/no-var-requires */
|
|
72
|
+
process.exit(0);
|
|
73
|
+
}
|
|
74
|
+
const handler = (err) => {
|
|
75
|
+
console.error(chalk_1.default.red('\nAn unhandled error occurred inside electron-rebuild'));
|
|
76
|
+
console.error(chalk_1.default.red(`${err.message}\n\n${err.stack}`));
|
|
77
|
+
process.exit(-1);
|
|
78
|
+
};
|
|
79
|
+
process.on('uncaughtException', handler);
|
|
80
|
+
process.on('unhandledRejection', handler);
|
|
81
|
+
(async () => {
|
|
82
|
+
const projectRootPath = await (0, search_module_1.getProjectRootPath)(process.cwd());
|
|
83
|
+
const electronModulePath = argv.e ? path.resolve(process.cwd(), argv.e) : await (0, electron_locator_1.locateElectronModule)(projectRootPath);
|
|
84
|
+
let electronModuleVersion = argv.v;
|
|
85
|
+
if (!electronModuleVersion) {
|
|
86
|
+
try {
|
|
87
|
+
if (!electronModulePath)
|
|
88
|
+
throw new Error('Prebuilt electron module not found');
|
|
89
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
90
|
+
const pkgJson = require(path.join(electronModulePath, 'package.json'));
|
|
91
|
+
electronModuleVersion = pkgJson.version;
|
|
92
|
+
}
|
|
93
|
+
catch (e) {
|
|
94
|
+
throw new Error(`Unable to find electron's version number, either install it or specify an explicit version`);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
let rootDirectory = argv.m;
|
|
98
|
+
if (!rootDirectory) {
|
|
99
|
+
// NB: We assume here that we're going to rebuild the immediate parent's
|
|
100
|
+
// node modules, which might not always be the case but it's at least a
|
|
101
|
+
// good guess
|
|
102
|
+
rootDirectory = path.resolve(__dirname, '../../..');
|
|
103
|
+
if (!await fs.pathExists(rootDirectory) || !await fs.pathExists(path.resolve(rootDirectory, 'package.json'))) {
|
|
104
|
+
// Then we try the CWD
|
|
105
|
+
rootDirectory = process.cwd();
|
|
106
|
+
if (!await fs.pathExists(rootDirectory) || !await fs.pathExists(path.resolve(rootDirectory, 'package.json'))) {
|
|
107
|
+
throw new Error('Unable to find parent node_modules directory, specify it via --module-dir, E.g. "--module-dir ." for the current directory');
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
rootDirectory = path.resolve(process.cwd(), rootDirectory);
|
|
113
|
+
}
|
|
114
|
+
if (argv.forceAbi && typeof argv.forceAbi !== 'number') {
|
|
115
|
+
throw new Error('force-abi must be a number');
|
|
116
|
+
}
|
|
117
|
+
let modulesDone = 0;
|
|
118
|
+
let moduleTotal = 0;
|
|
119
|
+
const rebuildSpinner = ora('Searching dependency tree').start();
|
|
120
|
+
let lastModuleName;
|
|
121
|
+
const redraw = (moduleName) => {
|
|
122
|
+
if (moduleName)
|
|
123
|
+
lastModuleName = moduleName;
|
|
124
|
+
if (argv.p) {
|
|
125
|
+
rebuildSpinner.text = `Building modules: ${modulesDone}/${moduleTotal}`;
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
rebuildSpinner.text = `Building module: ${lastModuleName}, Completed: ${modulesDone}`;
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
const rebuilder = (0, rebuild_1.rebuild)({
|
|
132
|
+
buildPath: rootDirectory,
|
|
133
|
+
electronVersion: electronModuleVersion,
|
|
134
|
+
arch: argv.a || process.arch,
|
|
135
|
+
extraModules: argv.w ? argv.w.split(',') : [],
|
|
136
|
+
onlyModules: argv.o ? argv.o.split(',') : null,
|
|
137
|
+
force: argv.f,
|
|
138
|
+
headerURL: argv.d,
|
|
139
|
+
types: argv.t ? argv.t.split(',') : ['prod', 'optional'],
|
|
140
|
+
mode: argv.p ? 'parallel' : (argv.s ? 'sequential' : undefined),
|
|
141
|
+
debug: argv.debug,
|
|
142
|
+
prebuildTagPrefix: argv.prebuildTagPrefix || 'v',
|
|
143
|
+
forceABI: argv.forceAbi,
|
|
144
|
+
useElectronClang: !!argv.useElectronClang,
|
|
145
|
+
disablePreGypCopy: !!argv.disablePreGypCopy,
|
|
146
|
+
projectRootPath,
|
|
147
|
+
});
|
|
148
|
+
const lifecycle = rebuilder.lifecycle;
|
|
149
|
+
lifecycle.on('module-found', (moduleName) => {
|
|
150
|
+
moduleTotal += 1;
|
|
151
|
+
redraw(moduleName);
|
|
152
|
+
});
|
|
153
|
+
lifecycle.on('module-done', () => {
|
|
154
|
+
modulesDone += 1;
|
|
155
|
+
redraw();
|
|
156
|
+
});
|
|
157
|
+
try {
|
|
158
|
+
await rebuilder;
|
|
159
|
+
}
|
|
160
|
+
catch (err) {
|
|
161
|
+
rebuildSpinner.text = 'Rebuild Failed';
|
|
162
|
+
rebuildSpinner.fail();
|
|
163
|
+
throw err;
|
|
164
|
+
}
|
|
165
|
+
rebuildSpinner.text = 'Rebuild Complete';
|
|
166
|
+
rebuildSpinner.succeed();
|
|
167
|
+
})();
|
|
168
|
+
//# sourceMappingURL=cli.js.map
|
package/lib/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const ELECTRON_GYP_DIR: string;
|
package/lib/constants.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
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.ELECTRON_GYP_DIR = void 0;
|
|
27
|
+
const os = __importStar(require("os"));
|
|
28
|
+
const path = __importStar(require("path"));
|
|
29
|
+
exports.ELECTRON_GYP_DIR = path.resolve(os.homedir(), '.electron-gyp');
|
|
30
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAEhB,QAAA,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,eAAe,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function locateElectronModule(projectRootPath?: string | undefined, startDir?: string | undefined): Promise<string | null>;
|
|
@@ -0,0 +1,56 @@
|
|
|
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.locateElectronModule = void 0;
|
|
27
|
+
const fs = __importStar(require("fs-extra"));
|
|
28
|
+
const path = __importStar(require("path"));
|
|
29
|
+
const search_module_1 = require("./search-module");
|
|
30
|
+
const electronModuleNames = ['electron', 'electron-prebuilt-compile'];
|
|
31
|
+
async function locateModuleByRequire() {
|
|
32
|
+
for (const moduleName of electronModuleNames) {
|
|
33
|
+
try {
|
|
34
|
+
const modulePath = path.resolve(require.resolve(path.join(moduleName, 'package.json')), '..');
|
|
35
|
+
if (await fs.pathExists(path.join(modulePath, 'package.json'))) {
|
|
36
|
+
return modulePath;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch { // eslint-disable-line no-empty
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
async function locateElectronModule(projectRootPath = undefined, startDir = undefined) {
|
|
45
|
+
startDir !== null && startDir !== void 0 ? startDir : (startDir = process.cwd());
|
|
46
|
+
for (const moduleName of electronModuleNames) {
|
|
47
|
+
const electronPaths = await (0, search_module_1.searchForModule)(startDir, moduleName, projectRootPath);
|
|
48
|
+
const electronPath = electronPaths.find(async (ePath) => await fs.pathExists(path.join(ePath, 'package.json')));
|
|
49
|
+
if (electronPath) {
|
|
50
|
+
return electronPath;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return locateModuleByRequire();
|
|
54
|
+
}
|
|
55
|
+
exports.locateElectronModule = locateElectronModule;
|
|
56
|
+
//# sourceMappingURL=electron-locator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"electron-locator.js","sourceRoot":"","sources":["../src/electron-locator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAC/B,2CAA6B;AAC7B,mDAAkD;AAElD,MAAM,mBAAmB,GAAG,CAAC,UAAU,EAAG,2BAA2B,CAAC,CAAC;AAEvE,KAAK,UAAU,qBAAqB;IAClC,KAAK,MAAM,UAAU,IAAI,mBAAmB,EAAE;QAC5C,IAAI;YACF,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC9F,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,EAAE;gBAC9D,OAAO,UAAU,CAAC;aACnB;SACF;QAAC,MAAM,EAAE,+BAA+B;SACxC;KACF;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAEM,KAAK,UAAU,oBAAoB,CACxC,kBAAsC,SAAS,EAC/C,WAA+B,SAAS;IAExC,QAAQ,aAAR,QAAQ,cAAR,QAAQ,IAAR,QAAQ,GAAK,OAAO,CAAC,GAAG,EAAE,EAAC;IAE3B,KAAK,MAAM,UAAU,IAAI,mBAAmB,EAAE;QAC5C,MAAM,aAAa,GAAG,MAAM,IAAA,+BAAe,EAAC,QAAQ,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;QACnF,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,KAAa,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;QAExH,IAAI,YAAY,EAAE;YAChB,OAAO,YAAY,CAAC;SACrB;KACF;IAED,OAAO,qBAAqB,EAAE,CAAC;AACjC,CAAC;AAhBD,oDAgBC"}
|
package/lib/fetcher.d.ts
ADDED
package/lib/fetcher.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.fetch = void 0;
|
|
7
|
+
const debug_1 = __importDefault(require("debug"));
|
|
8
|
+
const got_1 = __importDefault(require("got"));
|
|
9
|
+
const d = (0, debug_1.default)('electron-rebuild');
|
|
10
|
+
function sleep(n) {
|
|
11
|
+
return new Promise(r => setTimeout(r, n));
|
|
12
|
+
}
|
|
13
|
+
async function fetch(url, responseType, retries = 3) {
|
|
14
|
+
if (retries === 0)
|
|
15
|
+
throw new Error('Failed to fetch a clang resource, run with DEBUG=electron-rebuild for more information');
|
|
16
|
+
d('downloading:', url);
|
|
17
|
+
try {
|
|
18
|
+
const response = await got_1.default.get(url, {
|
|
19
|
+
responseType,
|
|
20
|
+
});
|
|
21
|
+
if (response.statusCode !== 200) {
|
|
22
|
+
d('got bad status code:', response.statusCode);
|
|
23
|
+
await sleep(2000);
|
|
24
|
+
return fetch(url, responseType, retries - 1);
|
|
25
|
+
}
|
|
26
|
+
d('response came back OK');
|
|
27
|
+
return response.body;
|
|
28
|
+
}
|
|
29
|
+
catch (err) {
|
|
30
|
+
d('request failed for some reason', err);
|
|
31
|
+
await sleep(2000);
|
|
32
|
+
return fetch(url, responseType, retries - 1);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.fetch = fetch;
|
|
36
|
+
//# sourceMappingURL=fetcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetcher.js","sourceRoot":"","sources":["../src/fetcher.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,8CAAsB;AAEtB,MAAM,CAAC,GAAG,IAAA,eAAK,EAAC,kBAAkB,CAAC,CAAC;AAEpC,SAAS,KAAK,CAAC,CAAS;IACtB,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC;AAEM,KAAK,UAAU,KAAK,CAAyE,GAAW,EAAE,YAAe,EAAE,OAAO,GAAG,CAAC;IAC3I,IAAI,OAAO,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wFAAwF,CAAC,CAAC;IAC7H,CAAC,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IACvB,IAAI;QACF,MAAM,QAAQ,GAAG,MAAM,aAAG,CAAC,GAAG,CAAC,GAAG,EAAE;YAClC,YAAY;SACb,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,UAAU,KAAK,GAAG,EAAE;YAC/B,CAAC,CAAC,sBAAsB,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC/C,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;YAClB,OAAO,KAAK,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;SAC9C;QACD,CAAC,CAAC,uBAAuB,CAAC,CAAC;QAC3B,OAAO,QAAQ,CAAC,IAAU,CAAC;KAC5B;IAAC,OAAO,GAAG,EAAE;QACZ,CAAC,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAC;QACzC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,KAAK,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;KAC9C;AACH,CAAC;AAnBD,sBAmBC"}
|
package/lib/main.d.ts
ADDED
package/lib/main.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.rebuild = void 0;
|
|
4
|
+
const rebuild_1 = require("./rebuild");
|
|
5
|
+
Object.defineProperty(exports, "rebuild", { enumerable: true, get: function () { return rebuild_1.rebuild; } });
|
|
6
|
+
exports.default = rebuild_1.rebuild;
|
|
7
|
+
Object.defineProperty(exports, '__esModule', {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
//# sourceMappingURL=main.js.map
|
package/lib/main.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;;AAAA,uCAAoD;AAE3C,wFAFA,iBAAO,OAEA;AAChB,kBAAe,iBAAO,CAAC;AACvB,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE;IAC3C,KAAK,EAAE,IAAI;CACZ,CAAC,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { IRebuilder } from './types';
|
|
2
|
+
export declare class ModuleRebuilder {
|
|
3
|
+
private modulePath;
|
|
4
|
+
private nodeGyp;
|
|
5
|
+
private rebuilder;
|
|
6
|
+
private prebuildify;
|
|
7
|
+
private prebuildInstall;
|
|
8
|
+
constructor(rebuilder: IRebuilder, modulePath: string);
|
|
9
|
+
get metaPath(): string;
|
|
10
|
+
get metaData(): string;
|
|
11
|
+
alreadyBuiltByRebuild(): Promise<boolean>;
|
|
12
|
+
cacheModuleState(cacheKey: string): Promise<void>;
|
|
13
|
+
/**
|
|
14
|
+
* Whether a prebuild-install-generated native module exists.
|
|
15
|
+
*/
|
|
16
|
+
prebuildInstallNativeModuleExists(): Promise<boolean>;
|
|
17
|
+
/**
|
|
18
|
+
* If the native module uses prebuildify, check to see if it comes with a prebuilt module for
|
|
19
|
+
* the given platform and arch.
|
|
20
|
+
*/
|
|
21
|
+
findPrebuildifyModule(cacheKey: string): Promise<boolean>;
|
|
22
|
+
findPrebuildInstallModule(cacheKey: string): Promise<boolean>;
|
|
23
|
+
rebuildNodeGypModule(cacheKey: string): Promise<boolean>;
|
|
24
|
+
replaceExistingNativeModule(): Promise<void>;
|
|
25
|
+
writeMetadata(): Promise<void>;
|
|
26
|
+
rebuild(cacheKey: string): Promise<boolean>;
|
|
27
|
+
}
|
|
@@ -0,0 +1,132 @@
|
|
|
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.ModuleRebuilder = void 0;
|
|
30
|
+
const debug_1 = __importDefault(require("debug"));
|
|
31
|
+
const fs = __importStar(require("fs-extra"));
|
|
32
|
+
const path = __importStar(require("path"));
|
|
33
|
+
const cache_1 = require("./cache");
|
|
34
|
+
const node_gyp_1 = require("./module-type/node-gyp/node-gyp");
|
|
35
|
+
const prebuildify_1 = require("./module-type/prebuildify");
|
|
36
|
+
const prebuild_install_1 = require("./module-type/prebuild-install");
|
|
37
|
+
const d = (0, debug_1.default)('electron-rebuild');
|
|
38
|
+
class ModuleRebuilder {
|
|
39
|
+
constructor(rebuilder, modulePath) {
|
|
40
|
+
this.modulePath = modulePath;
|
|
41
|
+
this.rebuilder = rebuilder;
|
|
42
|
+
this.nodeGyp = new node_gyp_1.NodeGyp(rebuilder, modulePath);
|
|
43
|
+
this.prebuildify = new prebuildify_1.Prebuildify(rebuilder, modulePath);
|
|
44
|
+
this.prebuildInstall = new prebuild_install_1.PrebuildInstall(rebuilder, modulePath);
|
|
45
|
+
}
|
|
46
|
+
get metaPath() {
|
|
47
|
+
return path.resolve(this.modulePath, 'build', this.rebuilder.buildType, '.forge-meta');
|
|
48
|
+
}
|
|
49
|
+
get metaData() {
|
|
50
|
+
return `${this.rebuilder.arch}--${this.rebuilder.ABI}`;
|
|
51
|
+
}
|
|
52
|
+
async alreadyBuiltByRebuild() {
|
|
53
|
+
if (await fs.pathExists(this.metaPath)) {
|
|
54
|
+
const meta = await fs.readFile(this.metaPath, 'utf8');
|
|
55
|
+
return meta === this.metaData;
|
|
56
|
+
}
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
async cacheModuleState(cacheKey) {
|
|
60
|
+
if (this.rebuilder.useCache) {
|
|
61
|
+
await (0, cache_1.cacheModuleState)(this.modulePath, this.rebuilder.cachePath, cacheKey);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Whether a prebuild-install-generated native module exists.
|
|
66
|
+
*/
|
|
67
|
+
async prebuildInstallNativeModuleExists() {
|
|
68
|
+
return this.prebuildInstall.prebuiltModuleExists();
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* If the native module uses prebuildify, check to see if it comes with a prebuilt module for
|
|
72
|
+
* the given platform and arch.
|
|
73
|
+
*/
|
|
74
|
+
async findPrebuildifyModule(cacheKey) {
|
|
75
|
+
if (await this.prebuildify.usesTool()) {
|
|
76
|
+
d(`assuming is prebuildify powered: ${this.prebuildify.moduleName}`);
|
|
77
|
+
if (await this.prebuildify.findPrebuiltModule()) {
|
|
78
|
+
await this.writeMetadata();
|
|
79
|
+
await this.cacheModuleState(cacheKey);
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
async findPrebuildInstallModule(cacheKey) {
|
|
86
|
+
if (await this.prebuildInstall.usesTool()) {
|
|
87
|
+
d(`assuming is prebuild-install powered: ${this.prebuildInstall.moduleName}`);
|
|
88
|
+
if (await this.prebuildInstall.findPrebuiltModule()) {
|
|
89
|
+
d('installed prebuilt module:', this.prebuildInstall.moduleName);
|
|
90
|
+
await this.writeMetadata();
|
|
91
|
+
await this.cacheModuleState(cacheKey);
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
async rebuildNodeGypModule(cacheKey) {
|
|
98
|
+
await this.nodeGyp.rebuildModule();
|
|
99
|
+
d('built via node-gyp:', this.nodeGyp.moduleName);
|
|
100
|
+
await this.writeMetadata();
|
|
101
|
+
await this.replaceExistingNativeModule();
|
|
102
|
+
await this.cacheModuleState(cacheKey);
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
async replaceExistingNativeModule() {
|
|
106
|
+
const buildLocation = path.resolve(this.modulePath, 'build', this.rebuilder.buildType);
|
|
107
|
+
d('searching for .node file', buildLocation);
|
|
108
|
+
const buildLocationFiles = await fs.readdir(buildLocation);
|
|
109
|
+
d('testing files', buildLocationFiles);
|
|
110
|
+
const nodeFile = buildLocationFiles.find((file) => file !== '.node' && file.endsWith('.node'));
|
|
111
|
+
const nodePath = nodeFile ? path.resolve(buildLocation, nodeFile) : undefined;
|
|
112
|
+
if (nodePath && await fs.pathExists(nodePath)) {
|
|
113
|
+
d('found .node file', nodePath);
|
|
114
|
+
if (!this.rebuilder.disablePreGypCopy) {
|
|
115
|
+
const abiPath = path.resolve(this.modulePath, `bin/${this.rebuilder.platform}-${this.rebuilder.arch}-${this.rebuilder.ABI}`);
|
|
116
|
+
d('copying to prebuilt place:', abiPath);
|
|
117
|
+
await fs.mkdir(abiPath, { recursive: true });
|
|
118
|
+
await fs.copyFile(nodePath, path.join(abiPath, `${this.nodeGyp.moduleName}.node`));
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
async writeMetadata() {
|
|
123
|
+
await fs.outputFile(this.metaPath, this.metaData);
|
|
124
|
+
}
|
|
125
|
+
async rebuild(cacheKey) {
|
|
126
|
+
return (await this.findPrebuildifyModule(cacheKey)) ||
|
|
127
|
+
(await this.findPrebuildInstallModule(cacheKey)) ||
|
|
128
|
+
(await this.rebuildNodeGypModule(cacheKey));
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
exports.ModuleRebuilder = ModuleRebuilder;
|
|
132
|
+
//# sourceMappingURL=module-rebuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-rebuilder.js","sourceRoot":"","sources":["../src/module-rebuilder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,6CAA+B;AAC/B,2CAA6B;AAE7B,mCAA2C;AAC3C,8DAA0D;AAC1D,2DAAwD;AACxD,qEAAiE;AAGjE,MAAM,CAAC,GAAG,IAAA,eAAK,EAAC,kBAAkB,CAAC,CAAC;AAEpC,MAAa,eAAe;IAO1B,YAAY,SAAqB,EAAE,UAAkB;QACnD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,IAAI,CAAC,OAAO,GAAG,IAAI,kBAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAClD,IAAI,CAAC,WAAW,GAAG,IAAI,yBAAW,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAC1D,IAAI,CAAC,eAAe,GAAG,IAAI,kCAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACzF,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,qBAAqB;QACzB,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YACtC,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACtD,OAAO,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC;SAC/B;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,QAAgB;QACrC,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;YAC3B,MAAM,IAAA,wBAAgB,EAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;SAC7E;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iCAAiC;QACrC,OAAO,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAC;IACrD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,qBAAqB,CAAC,QAAgB;QAC1C,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE;YACrC,CAAC,CAAC,oCAAoC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC;YAErE,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,EAAE;gBAC/C,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC3B,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;gBACtC,OAAO,IAAI,CAAC;aACb;SACF;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,yBAAyB,CAAC,QAAgB;QAC9C,IAAI,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,EAAE;YACzC,CAAC,CAAC,yCAAyC,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;YAE9E,IAAI,MAAM,IAAI,CAAC,eAAe,CAAC,kBAAkB,EAAE,EAAE;gBACnD,CAAC,CAAC,4BAA4B,EAAE,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;gBACjE,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC3B,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;gBACtC,OAAO,IAAI,CAAC;aACb;SACF;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,QAAgB;QACzC,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QACnC,CAAC,CAAC,qBAAqB,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAClD,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3B,MAAM,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACzC,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,2BAA2B;QAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAEvF,CAAC,CAAC,0BAA0B,EAAE,aAAa,CAAC,CAAC;QAC7C,MAAM,kBAAkB,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC3D,CAAC,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC;QAEvC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/F,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE9E,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;YAC7C,CAAC,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE;gBACrC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC7H,CAAC,CAAC,4BAA4B,EAAE,OAAO,CAAC,CAAC;gBACzC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC7C,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,OAAO,CAAC,CAAC,CAAC;aACpF;SACF;IACH,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAgB;QAC5B,OAAO,CAAC,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;YACjD,CAAC,MAAM,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;YAChD,CAAC,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChD,CAAC;CACF;AAtHD,0CAsHC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { NodeAPI } from '../node-api';
|
|
2
|
+
import { IRebuilder } from '../types';
|
|
3
|
+
declare type PackageJSONValue = string | Record<string, unknown>;
|
|
4
|
+
export declare class NativeModule {
|
|
5
|
+
protected rebuilder: IRebuilder;
|
|
6
|
+
private _moduleName;
|
|
7
|
+
protected modulePath: string;
|
|
8
|
+
nodeAPI: NodeAPI;
|
|
9
|
+
private packageJSON;
|
|
10
|
+
constructor(rebuilder: IRebuilder, modulePath: string);
|
|
11
|
+
get moduleName(): string;
|
|
12
|
+
packageJSONFieldWithDefault(key: string, defaultValue: PackageJSONValue): Promise<PackageJSONValue>;
|
|
13
|
+
packageJSONField(key: string): Promise<PackageJSONValue | undefined>;
|
|
14
|
+
getSupportedNapiVersions(): Promise<number[] | undefined>;
|
|
15
|
+
}
|
|
16
|
+
export declare function locateBinary(basePath: string, suffix: string): Promise<string | null>;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.locateBinary = exports.NativeModule = void 0;
|
|
7
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const node_api_1 = require("../node-api");
|
|
10
|
+
const read_package_json_1 = require("../read-package-json");
|
|
11
|
+
class NativeModule {
|
|
12
|
+
constructor(rebuilder, modulePath) {
|
|
13
|
+
this.rebuilder = rebuilder;
|
|
14
|
+
this.modulePath = modulePath;
|
|
15
|
+
this.nodeAPI = new node_api_1.NodeAPI(this.moduleName, this.rebuilder.electronVersion);
|
|
16
|
+
}
|
|
17
|
+
get moduleName() {
|
|
18
|
+
if (!this._moduleName) {
|
|
19
|
+
const basename = path_1.default.basename(this.modulePath);
|
|
20
|
+
const parentDir = path_1.default.basename(path_1.default.dirname(this.modulePath));
|
|
21
|
+
if (parentDir.startsWith('@')) {
|
|
22
|
+
this._moduleName = `${parentDir}/${basename}`;
|
|
23
|
+
}
|
|
24
|
+
this._moduleName = basename;
|
|
25
|
+
}
|
|
26
|
+
return this._moduleName;
|
|
27
|
+
}
|
|
28
|
+
async packageJSONFieldWithDefault(key, defaultValue) {
|
|
29
|
+
const result = await this.packageJSONField(key);
|
|
30
|
+
return result === undefined ? defaultValue : result;
|
|
31
|
+
}
|
|
32
|
+
async packageJSONField(key) {
|
|
33
|
+
this.packageJSON || (this.packageJSON = await (0, read_package_json_1.readPackageJson)(this.modulePath));
|
|
34
|
+
return this.packageJSON[key];
|
|
35
|
+
}
|
|
36
|
+
async getSupportedNapiVersions() {
|
|
37
|
+
const binary = (await this.packageJSONFieldWithDefault('binary', {}));
|
|
38
|
+
return binary === null || binary === void 0 ? void 0 : binary.napi_versions;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.NativeModule = NativeModule;
|
|
42
|
+
async function locateBinary(basePath, suffix) {
|
|
43
|
+
let parentPath = basePath;
|
|
44
|
+
let testPath;
|
|
45
|
+
while (testPath !== parentPath) {
|
|
46
|
+
testPath = parentPath;
|
|
47
|
+
const checkPath = path_1.default.resolve(testPath, suffix);
|
|
48
|
+
if (await fs_extra_1.default.pathExists(checkPath)) {
|
|
49
|
+
return checkPath;
|
|
50
|
+
}
|
|
51
|
+
parentPath = path_1.default.resolve(testPath, '..');
|
|
52
|
+
}
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
exports.locateBinary = locateBinary;
|
|
56
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/module-type/index.ts"],"names":[],"mappings":";;;;;;AAAA,wDAA0B;AAC1B,gDAAwB;AAExB,0CAAsC;AACtC,4DAAuD;AAKvD,MAAa,YAAY;IAOvB,YAAY,SAAqB,EAAE,UAAkB;QACnD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,kBAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,UAAU;QACZ,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,MAAM,QAAQ,GAAG,cAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAChD,MAAM,SAAS,GAAG,cAAI,CAAC,QAAQ,CAAC,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YAC/D,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;gBAC7B,IAAI,CAAC,WAAW,GAAG,GAAG,SAAS,IAAI,QAAQ,EAAE,CAAC;aAC/C;YAED,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;SAC7B;QAED,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,2BAA2B,CAAC,GAAW,EAAE,YAA8B;QAC3E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAChD,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,GAAW;QAChC,IAAI,CAAC,WAAW,KAAhB,IAAI,CAAC,WAAW,GAAK,MAAM,IAAA,mCAAe,EAAC,IAAI,CAAC,UAAU,CAAC,EAAC;QAE5D,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,wBAAwB;QAC5B,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,2BAA2B,CACpD,QAAQ,EACR,EAAE,CACH,CAA6B,CAAC;QAE/B,OAAO,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC;IAC/B,CAAC;CACF;AA9CD,oCA8CC;AAEM,KAAK,UAAU,YAAY,CAAC,QAAgB,EAAE,MAAc;IACjE,IAAI,UAAU,GAAG,QAAQ,CAAC;IAC1B,IAAI,QAA4B,CAAC;IAEjC,OAAO,QAAQ,KAAK,UAAU,EAAE;QAC9B,QAAQ,GAAG,UAAU,CAAC;QACtB,MAAM,SAAS,GAAG,cAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACjD,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;YAClC,OAAO,SAAS,CAAC;SAClB;QACD,UAAU,GAAG,cAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;KAC3C;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAdD,oCAcC"}
|