@theia/application-manager 1.22.0-next.7 → 1.22.1
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/lib/application-package-manager.d.ts +11 -0
- package/lib/application-package-manager.d.ts.map +1 -1
- package/lib/application-package-manager.js +71 -0
- package/lib/application-package-manager.js.map +1 -1
- package/lib/generator/frontend-generator.d.ts.map +1 -1
- package/lib/generator/frontend-generator.js +1 -0
- package/lib/generator/frontend-generator.js.map +1 -1
- package/lib/rebuild.d.ts +5 -2
- package/lib/rebuild.d.ts.map +1 -1
- package/lib/rebuild.js +22 -10
- package/lib/rebuild.js.map +1 -1
- package/package.json +18 -5
- package/src/application-package-manager.ts +78 -1
- package/src/generator/frontend-generator.ts +1 -0
- package/src/rebuild.ts +26 -11
|
@@ -19,6 +19,9 @@ import { ApplicationPackage, ApplicationPackageOptions } from '@theia/applicatio
|
|
|
19
19
|
import { ApplicationProcess } from './application-process';
|
|
20
20
|
import { GeneratorOptions } from './generator/abstract-generator';
|
|
21
21
|
import yargs = require('yargs');
|
|
22
|
+
declare module 'semver' {
|
|
23
|
+
function minVersion(range: string): string;
|
|
24
|
+
}
|
|
22
25
|
export declare class ApplicationPackageManager {
|
|
23
26
|
static defineGeneratorOptions<T>(cli: yargs.Argv<T>): yargs.Argv<T & {
|
|
24
27
|
mode: 'development' | 'production';
|
|
@@ -32,12 +35,20 @@ export declare class ApplicationPackageManager {
|
|
|
32
35
|
constructor(options: ApplicationPackageOptions);
|
|
33
36
|
protected remove(fsPath: string): Promise<void>;
|
|
34
37
|
clean(): Promise<void>;
|
|
38
|
+
prepare(): Promise<void>;
|
|
35
39
|
generate(options?: GeneratorOptions): Promise<void>;
|
|
36
40
|
copy(): Promise<void>;
|
|
37
41
|
build(args?: string[], options?: GeneratorOptions): Promise<void>;
|
|
38
42
|
start(args?: string[]): cp.ChildProcess;
|
|
39
43
|
startElectron(args: string[]): cp.ChildProcess;
|
|
40
44
|
startBrowser(args: string[]): cp.ChildProcess;
|
|
45
|
+
/**
|
|
46
|
+
* Inject Theia's Electron-specific dependencies into the application's package.json.
|
|
47
|
+
*
|
|
48
|
+
* Only overwrite the Electron range if the current minimum supported version is lower than the recommended one.
|
|
49
|
+
*/
|
|
50
|
+
protected prepareElectron(): Promise<void>;
|
|
51
|
+
protected insertAlphabetically<T extends Record<string, string>>(object: T, key: string, value: string): T;
|
|
41
52
|
private adjustArgs;
|
|
42
53
|
private get forkOptions();
|
|
43
54
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application-package-manager.d.ts","sourceRoot":"","sources":["../src/application-package-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;;AAIlF,OAAO,KAAK,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"application-package-manager.d.ts","sourceRoot":"","sources":["../src/application-package-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;;AAIlF,OAAO,KAAK,EAAE,MAAM,eAAe,CAAC;AAGpC,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAE3F,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,KAAK,GAAG,QAAQ,OAAO,CAAC,CAAC;AAGhC,OAAO,QAAQ,QAAQ,CAAC;IACpB,SAAS,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CAC9C;AASD,qBAAa,yBAAyB;IAElC,MAAM,CAAC,sBAAsB,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG;QACjE,IAAI,EAAE,aAAa,GAAG,YAAY,CAAA;QAClC,aAAa,CAAC,EAAE,OAAO,CAAA;KAC1B,CAAC;IAaF,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAC;IACjC,0BAA0B;IAC1B,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,sBAAsB;IACtB,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;gBAErC,OAAO,EAAE,yBAAyB;cAM9B,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM/C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQtB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAMxB,QAAQ,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBvD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAKrB,KAAK,CAAC,IAAI,GAAE,MAAM,EAAO,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAM/E,KAAK,CAAC,IAAI,GAAE,MAAM,EAAO,GAAG,EAAE,CAAC,YAAY;IAO3C,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,YAAY;IAoB9C,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,YAAY;IAQ7C;;;;OAIG;cACa,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IA8BhD,SAAS,CAAC,oBAAoB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC;IAc1G,OAAO,CAAC,UAAU;IAiBlB,OAAO,KAAK,WAAW,GAQtB;CACJ"}
|
|
@@ -18,9 +18,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
18
18
|
exports.ApplicationPackageManager = void 0;
|
|
19
19
|
const path = require("path");
|
|
20
20
|
const fs = require("fs-extra");
|
|
21
|
+
const semver = require("semver");
|
|
22
|
+
const ffmpeg = require("@theia/ffmpeg");
|
|
21
23
|
const application_package_1 = require("@theia/application-package");
|
|
22
24
|
const generator_1 = require("./generator");
|
|
23
25
|
const application_process_1 = require("./application-process");
|
|
26
|
+
class AbortError extends Error {
|
|
27
|
+
constructor(...args) {
|
|
28
|
+
super(...args);
|
|
29
|
+
Object.setPrototypeOf(this, AbortError.prototype);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
24
32
|
class ApplicationPackageManager {
|
|
25
33
|
constructor(options) {
|
|
26
34
|
this.pck = new application_package_1.ApplicationPackage(options);
|
|
@@ -51,7 +59,22 @@ class ApplicationPackageManager {
|
|
|
51
59
|
this.remove(new generator_1.WebpackGenerator(this.pck).genConfigPath)
|
|
52
60
|
]);
|
|
53
61
|
}
|
|
62
|
+
async prepare() {
|
|
63
|
+
if (this.pck.isElectron()) {
|
|
64
|
+
await this.prepareElectron();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
54
67
|
async generate(options = {}) {
|
|
68
|
+
try {
|
|
69
|
+
await this.prepare();
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
if (error instanceof AbortError) {
|
|
73
|
+
console.warn(error.message);
|
|
74
|
+
process.exit(1);
|
|
75
|
+
}
|
|
76
|
+
throw error;
|
|
77
|
+
}
|
|
55
78
|
await Promise.all([
|
|
56
79
|
new generator_1.WebpackGenerator(this.pck, options).generate(),
|
|
57
80
|
new generator_1.BackendGenerator(this.pck, options).generate(),
|
|
@@ -94,6 +117,54 @@ class ApplicationPackageManager {
|
|
|
94
117
|
options.detached = process.platform !== 'win32';
|
|
95
118
|
return this.__process.fork(this.pck.backend('main.js'), mainArgs, options);
|
|
96
119
|
}
|
|
120
|
+
/**
|
|
121
|
+
* Inject Theia's Electron-specific dependencies into the application's package.json.
|
|
122
|
+
*
|
|
123
|
+
* Only overwrite the Electron range if the current minimum supported version is lower than the recommended one.
|
|
124
|
+
*/
|
|
125
|
+
async prepareElectron() {
|
|
126
|
+
let theiaElectron;
|
|
127
|
+
try {
|
|
128
|
+
theiaElectron = await Promise.resolve().then(() => require('@theia/electron'));
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
if (error.code === 'ERR_MODULE_NOT_FOUND') {
|
|
132
|
+
throw new AbortError('Please install @theia/electron as part of your Theia Electron application');
|
|
133
|
+
}
|
|
134
|
+
throw error;
|
|
135
|
+
}
|
|
136
|
+
const expectedRange = theiaElectron.electronRange;
|
|
137
|
+
const appPackageJsonPath = this.pck.path('package.json');
|
|
138
|
+
const appPackageJson = await fs.readJSON(appPackageJsonPath);
|
|
139
|
+
if (!appPackageJson.devDependencies) {
|
|
140
|
+
appPackageJson.devDependencies = {};
|
|
141
|
+
}
|
|
142
|
+
const currentRange = appPackageJson.devDependencies.electron;
|
|
143
|
+
if (!currentRange || semver.compare(semver.minVersion(currentRange), semver.minVersion(expectedRange)) < 0) {
|
|
144
|
+
// Update the range with the recommended one and write it on disk.
|
|
145
|
+
appPackageJson.devDependencies = this.insertAlphabetically(appPackageJson.devDependencies, 'electron', expectedRange);
|
|
146
|
+
await fs.writeJSON(appPackageJsonPath, appPackageJson, { spaces: 2 });
|
|
147
|
+
throw new AbortError('Updated dependencies, please run "install" again');
|
|
148
|
+
}
|
|
149
|
+
if (!theiaElectron.electronVersion || !semver.satisfies(theiaElectron.electronVersion, currentRange)) {
|
|
150
|
+
throw new AbortError('Dependencies are out of sync, please run "install" again');
|
|
151
|
+
}
|
|
152
|
+
await ffmpeg.replaceFfmpeg();
|
|
153
|
+
await ffmpeg.checkFfmpeg();
|
|
154
|
+
}
|
|
155
|
+
insertAlphabetically(object, key, value) {
|
|
156
|
+
const updated = {};
|
|
157
|
+
for (const property of Object.keys(object)) {
|
|
158
|
+
if (property.localeCompare(key) > 0) {
|
|
159
|
+
updated[key] = value;
|
|
160
|
+
}
|
|
161
|
+
updated[property] = object[property];
|
|
162
|
+
}
|
|
163
|
+
if (!(key in updated)) {
|
|
164
|
+
updated[key] = value;
|
|
165
|
+
}
|
|
166
|
+
return updated;
|
|
167
|
+
}
|
|
97
168
|
adjustArgs(args, forkOptions = {}) {
|
|
98
169
|
const options = Object.assign(Object.assign({}, this.forkOptions), { forkOptions });
|
|
99
170
|
const mainArgs = [...args];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application-package-manager.js","sourceRoot":"","sources":["../src/application-package-manager.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;AAElF,6BAA6B;AAC7B,+BAA+B;AAE/B,oEAA2F;AAC3F,2CAAoF;AACpF,+DAA2D;
|
|
1
|
+
{"version":3,"file":"application-package-manager.js","sourceRoot":"","sources":["../src/application-package-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontend-generator.d.ts","sourceRoot":"","sources":["../../src/generator/frontend-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAIlF,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAG3E,qBAAa,iBAAkB,SAAQ,iBAAiB;IAE9C,QAAQ,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAU7D,SAAS,CAAC,mBAAmB,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;IAc3E,SAAS,CAAC,gBAAgB,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;IAexE,SAAS,CAAC,gBAAgB,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;IAOxE,SAAS,CAAC,cAAc,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;IAsDtE,SAAS,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;
|
|
1
|
+
{"version":3,"file":"frontend-generator.d.ts","sourceRoot":"","sources":["../../src/generator/frontend-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAIlF,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAG3E,qBAAa,iBAAkB,SAAQ,iBAAiB;IAE9C,QAAQ,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAU7D,SAAS,CAAC,mBAAmB,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;IAc3E,SAAS,CAAC,gBAAgB,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;IAexE,SAAS,CAAC,gBAAgB,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;IAOxE,SAAS,CAAC,cAAc,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;IAsDtE,SAAS,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;CAoEnF"}
|
|
@@ -117,6 +117,7 @@ module.exports = nls.loadTranslations().then(() => {
|
|
|
117
117
|
return `// @ts-check
|
|
118
118
|
|
|
119
119
|
require('reflect-metadata');
|
|
120
|
+
require('@theia/electron/shared/@electron/remote/main').initialize();
|
|
120
121
|
|
|
121
122
|
// Useful for Electron/NW.js apps as GUI apps on macOS doesn't inherit the \`$PATH\` define
|
|
122
123
|
// in your dotfiles (.bashrc/.bash_profile/.zshrc/etc).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontend-generator.js","sourceRoot":"","sources":["../../src/generator/frontend-generator.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;AAElF,8CAA8C;AAE9C,6DAA2E;AAC3E,2BAA8C;AAE9C,MAAa,iBAAkB,SAAQ,sCAAiB;IAEpD,KAAK,CAAC,QAAQ,CAAC,UAA4B,EAAE;QACzC,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC;QACvD,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC;QAC1F,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;QACtF,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE;YACvB,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC;YAC/D,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,CAAC,CAAC;SAC1G;IACL,CAAC;IAES,mBAAmB,CAAC,eAAoC;QAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC;QACjE,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO,EAAE,CAAC;SACb;QAED,4BAA4B;QAC5B,IAAI,eAAU,CAAC,QAAQ,CAAC,EAAE;YACtB,OAAO,iBAAY,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;SAC5C;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAES,gBAAgB,CAAC,eAAoC;QAC3D,OAAO;;;QAGP,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC;;;;;+BAKf,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC;;;QAGhE,CAAC;IACL,CAAC;IAES,gBAAgB,CAAC,eAAoC;QAC3D,OAAO;;;2DAG4C,CAAC;IACxD,CAAC;IAES,cAAc,CAAC,eAAoC;QACzD,MAAM,qBAAqB,GAAG,IAAI,CAAC,4BAA4B,CAAC,eAAe,CAAC;YAC5E,gCAAgC;aAC/B,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACnC,OAAO;;EAEb,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC;;;;;;wCAMR,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;;;;;;;;;;;mEAWzB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE;YACvE,CAAC,CAAC,6CAA6C;YAC/C,CAAC,CAAC,+DAA+D;;;;;;;;8BAQnD,qBAAqB;;;;;;;;;;;;;;;;;;CAkBlD,CAAC;IACE,CAAC;IAES,mBAAmB,CAAC,mBAAyC;QACnE,OAAO
|
|
1
|
+
{"version":3,"file":"frontend-generator.js","sourceRoot":"","sources":["../../src/generator/frontend-generator.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;AAElF,8CAA8C;AAE9C,6DAA2E;AAC3E,2BAA8C;AAE9C,MAAa,iBAAkB,SAAQ,sCAAiB;IAEpD,KAAK,CAAC,QAAQ,CAAC,UAA4B,EAAE;QACzC,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC;QACvD,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC;QAC1F,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;QACtF,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE;YACvB,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC;YAC/D,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,CAAC,CAAC;SAC1G;IACL,CAAC;IAES,mBAAmB,CAAC,eAAoC;QAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC;QACjE,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO,EAAE,CAAC;SACb;QAED,4BAA4B;QAC5B,IAAI,eAAU,CAAC,QAAQ,CAAC,EAAE;YACtB,OAAO,iBAAY,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;SAC5C;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAES,gBAAgB,CAAC,eAAoC;QAC3D,OAAO;;;QAGP,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC;;;;;+BAKf,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC;;;QAGhE,CAAC;IACL,CAAC;IAES,gBAAgB,CAAC,eAAoC;QAC3D,OAAO;;;2DAG4C,CAAC;IACxD,CAAC;IAES,cAAc,CAAC,eAAoC;QACzD,MAAM,qBAAqB,GAAG,IAAI,CAAC,4BAA4B,CAAC,eAAe,CAAC;YAC5E,gCAAgC;aAC/B,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACnC,OAAO;;EAEb,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC;;;;;;wCAMR,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;;;;;;;;;;;mEAWzB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE;YACvE,CAAC,CAAC,6CAA6C;YAC/C,CAAC,CAAC,+DAA+D;;;;;;;;8BAQnD,qBAAqB;;;;;;;;;;;;;;;;;;CAkBlD,CAAC;IACE,CAAC;IAES,mBAAmB,CAAC,mBAAyC;QACnE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6BE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;2BAC1C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;oCA2B/D,IAAI,CAAC,gCAAgC,CAAC,mBAAmB,CAAC;;;;;;;CAO7F,CAAC;IACE,CAAC;CAEJ;AA1KD,8CA0KC"}
|
package/lib/rebuild.d.ts
CHANGED
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
16
|
export declare type RebuildTarget = 'electron' | 'browser';
|
|
17
|
+
declare type NodeABI = string | number;
|
|
17
18
|
export declare const DEFAULT_MODULES: string[];
|
|
18
19
|
export interface RebuildOptions {
|
|
19
20
|
/**
|
|
@@ -25,13 +26,15 @@ export interface RebuildOptions {
|
|
|
25
26
|
*/
|
|
26
27
|
cacheRoot?: string;
|
|
27
28
|
/**
|
|
28
|
-
*
|
|
29
|
+
* In the event that `node-abi` doesn't recognize the current Electron version,
|
|
30
|
+
* you can specify the Node ABI to rebuild for.
|
|
29
31
|
*/
|
|
30
|
-
|
|
32
|
+
forceAbi?: NodeABI;
|
|
31
33
|
}
|
|
32
34
|
/**
|
|
33
35
|
* @param target What to rebuild for.
|
|
34
36
|
* @param options
|
|
35
37
|
*/
|
|
36
38
|
export declare function rebuild(target: RebuildTarget, options?: RebuildOptions): void;
|
|
39
|
+
export {};
|
|
37
40
|
//# sourceMappingURL=rebuild.d.ts.map
|
package/lib/rebuild.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rebuild.d.ts","sourceRoot":"","sources":["../src/rebuild.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAOlF,oBAAY,aAAa,GAAG,UAAU,GAAG,SAAS,CAAC;AASnD,eAAO,MAAM,eAAe,UAM3B,CAAC;AAEF,MAAM,WAAW,cAAc;IAC3B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB
|
|
1
|
+
{"version":3,"file":"rebuild.d.ts","sourceRoot":"","sources":["../src/rebuild.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAOlF,oBAAY,aAAa,GAAG,UAAU,GAAG,SAAS,CAAC;AASnD,aAAK,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAE/B,eAAO,MAAM,eAAe,UAM3B,CAAC;AAEF,MAAM,WAAW,cAAc;IAC3B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;CACrB;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,GAAE,cAAmB,GAAG,IAAI,CAuBjF"}
|
package/lib/rebuild.js
CHANGED
|
@@ -22,7 +22,7 @@ const path = require("path");
|
|
|
22
22
|
const os = require("os");
|
|
23
23
|
const EXIT_SIGNALS = ['SIGINT', 'SIGTERM'];
|
|
24
24
|
exports.DEFAULT_MODULES = [
|
|
25
|
-
'
|
|
25
|
+
'node-pty',
|
|
26
26
|
'nsfw',
|
|
27
27
|
'native-keymap',
|
|
28
28
|
'find-git-repositories',
|
|
@@ -33,12 +33,12 @@ exports.DEFAULT_MODULES = [
|
|
|
33
33
|
* @param options
|
|
34
34
|
*/
|
|
35
35
|
function rebuild(target, options = {}) {
|
|
36
|
-
const { modules = exports.DEFAULT_MODULES, cacheRoot = process.cwd(), } = options;
|
|
36
|
+
const { modules = exports.DEFAULT_MODULES, cacheRoot = process.cwd(), forceAbi, } = options;
|
|
37
37
|
const cache = path.resolve(cacheRoot, '.browser_modules');
|
|
38
38
|
const cacheExists = folderExists(cache);
|
|
39
39
|
guardExit(async (token) => {
|
|
40
40
|
if (target === 'electron' && !cacheExists) {
|
|
41
|
-
process.exitCode = await rebuildElectronModules(cache, modules, token);
|
|
41
|
+
process.exitCode = await rebuildElectronModules(cache, modules, forceAbi, token);
|
|
42
42
|
}
|
|
43
43
|
else if (target === 'browser' && cacheExists) {
|
|
44
44
|
process.exitCode = await revertBrowserModules(cache, modules);
|
|
@@ -67,7 +67,7 @@ function folderExists(folder) {
|
|
|
67
67
|
}
|
|
68
68
|
return false;
|
|
69
69
|
}
|
|
70
|
-
async function rebuildElectronModules(browserModuleCache, modules, token) {
|
|
70
|
+
async function rebuildElectronModules(browserModuleCache, modules, forceAbi, token) {
|
|
71
71
|
const modulesJsonPath = path.join(browserModuleCache, 'modules.json');
|
|
72
72
|
const modulesJson = await fs.access(modulesJsonPath).then(() => fs.readJson(modulesJsonPath), () => ({}));
|
|
73
73
|
let success = true;
|
|
@@ -115,16 +115,24 @@ async function rebuildElectronModules(browserModuleCache, modules, token) {
|
|
|
115
115
|
? m.substring(slash + 1)
|
|
116
116
|
: m;
|
|
117
117
|
});
|
|
118
|
+
let exitCode;
|
|
118
119
|
try {
|
|
119
120
|
if (process.env.THEIA_REBUILD_NO_WORKAROUND) {
|
|
120
|
-
|
|
121
|
+
exitCode = await runElectronRebuild(todo, forceAbi, token);
|
|
121
122
|
}
|
|
122
123
|
else {
|
|
123
|
-
|
|
124
|
+
exitCode = await electronRebuildExtraModulesWorkaround(process.cwd(), todo, () => runElectronRebuild(todo, forceAbi, token), token);
|
|
124
125
|
}
|
|
125
126
|
}
|
|
126
127
|
catch (error) {
|
|
127
|
-
|
|
128
|
+
console.error(error);
|
|
129
|
+
}
|
|
130
|
+
finally {
|
|
131
|
+
// If code is undefined or different from zero we need to revert back to the browser modules.
|
|
132
|
+
if (exitCode !== 0) {
|
|
133
|
+
await revertBrowserModules(browserModuleCache, modules);
|
|
134
|
+
}
|
|
135
|
+
return exitCode !== null && exitCode !== void 0 ? exitCode : 1;
|
|
128
136
|
}
|
|
129
137
|
}
|
|
130
138
|
async function revertBrowserModules(browserModuleCache, modules) {
|
|
@@ -165,10 +173,14 @@ async function revertBrowserModules(browserModuleCache, modules) {
|
|
|
165
173
|
}
|
|
166
174
|
return exitCode;
|
|
167
175
|
}
|
|
168
|
-
async function runElectronRebuild(modules, token) {
|
|
176
|
+
async function runElectronRebuild(modules, forceAbi, token) {
|
|
169
177
|
const todo = modules.join(',');
|
|
170
|
-
return new Promise((resolve, reject) => {
|
|
171
|
-
|
|
178
|
+
return new Promise(async (resolve, reject) => {
|
|
179
|
+
let command = `npx --no-install electron-rebuild -f -w=${todo} -o=${todo}`;
|
|
180
|
+
if (forceAbi) {
|
|
181
|
+
command += ` --force-abi ${forceAbi}`;
|
|
182
|
+
}
|
|
183
|
+
const electronRebuild = cp.spawn(command, {
|
|
172
184
|
stdio: 'inherit',
|
|
173
185
|
shell: true,
|
|
174
186
|
});
|
package/lib/rebuild.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rebuild.js","sourceRoot":"","sources":["../src/rebuild.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;AAElF,oCAAqC;AACrC,+BAAgC;AAChC,6BAA8B;AAC9B,yBAA0B;AAI1B,MAAM,YAAY,GAAqB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"rebuild.js","sourceRoot":"","sources":["../src/rebuild.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/application-manager",
|
|
3
|
-
"version": "1.22.
|
|
3
|
+
"version": "1.22.1",
|
|
4
4
|
"description": "Theia application manager API.",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -33,18 +33,22 @@
|
|
|
33
33
|
"@babel/plugin-transform-classes": "^7.10.0",
|
|
34
34
|
"@babel/plugin-transform-runtime": "^7.10.0",
|
|
35
35
|
"@babel/preset-env": "^7.10.0",
|
|
36
|
-
"@theia/application-package": "1.22.
|
|
36
|
+
"@theia/application-package": "1.22.1",
|
|
37
|
+
"@theia/ffmpeg": "1.22.1",
|
|
37
38
|
"@types/fs-extra": "^4.0.2",
|
|
39
|
+
"@types/semver": "^7.3.8",
|
|
38
40
|
"babel-loader": "^8.2.2",
|
|
39
41
|
"buffer": "^6.0.3",
|
|
40
42
|
"circular-dependency-plugin": "^5.2.2",
|
|
41
43
|
"compression-webpack-plugin": "^9.0.0",
|
|
42
44
|
"copy-webpack-plugin": "^8.1.1",
|
|
43
45
|
"css-loader": "^6.2.0",
|
|
44
|
-
"electron-rebuild": "^1.
|
|
46
|
+
"electron-rebuild": "^1.11.0",
|
|
45
47
|
"fs-extra": "^4.0.2",
|
|
46
48
|
"ignore-loader": "^0.1.2",
|
|
47
49
|
"less": "^3.0.3",
|
|
50
|
+
"node-abi": "*",
|
|
51
|
+
"semver": "^7.3.5",
|
|
48
52
|
"setimmediate": "^1.0.5",
|
|
49
53
|
"source-map-loader": "^2.0.1",
|
|
50
54
|
"source-map-support": "^0.5.19",
|
|
@@ -55,11 +59,20 @@
|
|
|
55
59
|
"worker-loader": "^3.0.8",
|
|
56
60
|
"yargs": "^15.3.1"
|
|
57
61
|
},
|
|
62
|
+
"peerDependencies": {
|
|
63
|
+
"@theia/electron": "1.21.0"
|
|
64
|
+
},
|
|
65
|
+
"peerDependenciesMeta": {
|
|
66
|
+
"@theia/electron": {
|
|
67
|
+
"optional": true
|
|
68
|
+
}
|
|
69
|
+
},
|
|
58
70
|
"devDependencies": {
|
|
59
|
-
"@theia/ext-scripts": "1.
|
|
71
|
+
"@theia/ext-scripts": "1.22.1",
|
|
72
|
+
"@types/node-abi": "*"
|
|
60
73
|
},
|
|
61
74
|
"nyc": {
|
|
62
75
|
"extends": "../../configs/nyc.json"
|
|
63
76
|
},
|
|
64
|
-
"gitHead": "
|
|
77
|
+
"gitHead": "49910aeaecf520a54b253db0215b28c2268bb2f3"
|
|
65
78
|
}
|
|
@@ -17,12 +17,26 @@
|
|
|
17
17
|
import * as path from 'path';
|
|
18
18
|
import * as fs from 'fs-extra';
|
|
19
19
|
import * as cp from 'child_process';
|
|
20
|
+
import * as semver from 'semver';
|
|
21
|
+
import * as ffmpeg from '@theia/ffmpeg';
|
|
20
22
|
import { ApplicationPackage, ApplicationPackageOptions } from '@theia/application-package';
|
|
21
23
|
import { WebpackGenerator, FrontendGenerator, BackendGenerator } from './generator';
|
|
22
24
|
import { ApplicationProcess } from './application-process';
|
|
23
25
|
import { GeneratorOptions } from './generator/abstract-generator';
|
|
24
26
|
import yargs = require('yargs');
|
|
25
27
|
|
|
28
|
+
// Declare missing exports from `@types/semver@7`
|
|
29
|
+
declare module 'semver' {
|
|
30
|
+
function minVersion(range: string): string;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
class AbortError extends Error {
|
|
34
|
+
constructor(...args: Parameters<ErrorConstructor>) {
|
|
35
|
+
super(...args);
|
|
36
|
+
Object.setPrototypeOf(this, AbortError.prototype);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
26
40
|
export class ApplicationPackageManager {
|
|
27
41
|
|
|
28
42
|
static defineGeneratorOptions<T>(cli: yargs.Argv<T>): yargs.Argv<T & {
|
|
@@ -67,7 +81,22 @@ export class ApplicationPackageManager {
|
|
|
67
81
|
]);
|
|
68
82
|
}
|
|
69
83
|
|
|
84
|
+
async prepare(): Promise<void> {
|
|
85
|
+
if (this.pck.isElectron()) {
|
|
86
|
+
await this.prepareElectron();
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
70
90
|
async generate(options: GeneratorOptions = {}): Promise<void> {
|
|
91
|
+
try {
|
|
92
|
+
await this.prepare();
|
|
93
|
+
} catch (error) {
|
|
94
|
+
if (error instanceof AbortError) {
|
|
95
|
+
console.warn(error.message);
|
|
96
|
+
process.exit(1);
|
|
97
|
+
}
|
|
98
|
+
throw error;
|
|
99
|
+
}
|
|
71
100
|
await Promise.all([
|
|
72
101
|
new WebpackGenerator(this.pck, options).generate(),
|
|
73
102
|
new BackendGenerator(this.pck, options).generate(),
|
|
@@ -121,6 +150,55 @@ export class ApplicationPackageManager {
|
|
|
121
150
|
return this.__process.fork(this.pck.backend('main.js'), mainArgs, options);
|
|
122
151
|
}
|
|
123
152
|
|
|
153
|
+
/**
|
|
154
|
+
* Inject Theia's Electron-specific dependencies into the application's package.json.
|
|
155
|
+
*
|
|
156
|
+
* Only overwrite the Electron range if the current minimum supported version is lower than the recommended one.
|
|
157
|
+
*/
|
|
158
|
+
protected async prepareElectron(): Promise<void> {
|
|
159
|
+
let theiaElectron;
|
|
160
|
+
try {
|
|
161
|
+
theiaElectron = await import('@theia/electron');
|
|
162
|
+
} catch (error) {
|
|
163
|
+
if (error.code === 'ERR_MODULE_NOT_FOUND') {
|
|
164
|
+
throw new AbortError('Please install @theia/electron as part of your Theia Electron application');
|
|
165
|
+
}
|
|
166
|
+
throw error;
|
|
167
|
+
}
|
|
168
|
+
const expectedRange = theiaElectron.electronRange;
|
|
169
|
+
const appPackageJsonPath = this.pck.path('package.json');
|
|
170
|
+
const appPackageJson = await fs.readJSON(appPackageJsonPath) as { devDependencies?: Record<string, string> };
|
|
171
|
+
if (!appPackageJson.devDependencies) {
|
|
172
|
+
appPackageJson.devDependencies = {};
|
|
173
|
+
}
|
|
174
|
+
const currentRange: string | undefined = appPackageJson.devDependencies.electron;
|
|
175
|
+
if (!currentRange || semver.compare(semver.minVersion(currentRange), semver.minVersion(expectedRange)) < 0) {
|
|
176
|
+
// Update the range with the recommended one and write it on disk.
|
|
177
|
+
appPackageJson.devDependencies = this.insertAlphabetically(appPackageJson.devDependencies, 'electron', expectedRange);
|
|
178
|
+
await fs.writeJSON(appPackageJsonPath, appPackageJson, { spaces: 2 });
|
|
179
|
+
throw new AbortError('Updated dependencies, please run "install" again');
|
|
180
|
+
}
|
|
181
|
+
if (!theiaElectron.electronVersion || !semver.satisfies(theiaElectron.electronVersion, currentRange)) {
|
|
182
|
+
throw new AbortError('Dependencies are out of sync, please run "install" again');
|
|
183
|
+
}
|
|
184
|
+
await ffmpeg.replaceFfmpeg();
|
|
185
|
+
await ffmpeg.checkFfmpeg();
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
protected insertAlphabetically<T extends Record<string, string>>(object: T, key: string, value: string): T {
|
|
189
|
+
const updated: Record<string, unknown> = {};
|
|
190
|
+
for (const property of Object.keys(object)) {
|
|
191
|
+
if (property.localeCompare(key) > 0) {
|
|
192
|
+
updated[key] = value;
|
|
193
|
+
}
|
|
194
|
+
updated[property] = object[property];
|
|
195
|
+
}
|
|
196
|
+
if (!(key in updated)) {
|
|
197
|
+
updated[key] = value;
|
|
198
|
+
}
|
|
199
|
+
return updated as T;
|
|
200
|
+
}
|
|
201
|
+
|
|
124
202
|
private adjustArgs(args: string[], forkOptions: cp.ForkOptions = {}): Readonly<{ mainArgs: string[]; options: cp.ForkOptions }> {
|
|
125
203
|
const options = {
|
|
126
204
|
...this.forkOptions,
|
|
@@ -147,5 +225,4 @@ export class ApplicationPackageManager {
|
|
|
147
225
|
}
|
|
148
226
|
};
|
|
149
227
|
}
|
|
150
|
-
|
|
151
228
|
}
|
|
@@ -125,6 +125,7 @@ module.exports = nls.loadTranslations().then(() => {
|
|
|
125
125
|
return `// @ts-check
|
|
126
126
|
|
|
127
127
|
require('reflect-metadata');
|
|
128
|
+
require('@theia/electron/shared/@electron/remote/main').initialize();
|
|
128
129
|
|
|
129
130
|
// Useful for Electron/NW.js apps as GUI apps on macOS doesn't inherit the \`$PATH\` define
|
|
130
131
|
// in your dotfiles (.bashrc/.bash_profile/.zshrc/etc).
|
package/src/rebuild.ts
CHANGED
|
@@ -28,8 +28,10 @@ interface ExitToken {
|
|
|
28
28
|
onSignal(callback: (signal: NodeJS.Signals) => void): void
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
+
type NodeABI = string | number;
|
|
32
|
+
|
|
31
33
|
export const DEFAULT_MODULES = [
|
|
32
|
-
'
|
|
34
|
+
'node-pty',
|
|
33
35
|
'nsfw',
|
|
34
36
|
'native-keymap',
|
|
35
37
|
'find-git-repositories',
|
|
@@ -46,9 +48,10 @@ export interface RebuildOptions {
|
|
|
46
48
|
*/
|
|
47
49
|
cacheRoot?: string
|
|
48
50
|
/**
|
|
49
|
-
*
|
|
51
|
+
* In the event that `node-abi` doesn't recognize the current Electron version,
|
|
52
|
+
* you can specify the Node ABI to rebuild for.
|
|
50
53
|
*/
|
|
51
|
-
|
|
54
|
+
forceAbi?: NodeABI
|
|
52
55
|
}
|
|
53
56
|
|
|
54
57
|
/**
|
|
@@ -59,12 +62,13 @@ export function rebuild(target: RebuildTarget, options: RebuildOptions = {}): vo
|
|
|
59
62
|
const {
|
|
60
63
|
modules = DEFAULT_MODULES,
|
|
61
64
|
cacheRoot = process.cwd(),
|
|
65
|
+
forceAbi,
|
|
62
66
|
} = options;
|
|
63
67
|
const cache = path.resolve(cacheRoot, '.browser_modules');
|
|
64
68
|
const cacheExists = folderExists(cache);
|
|
65
69
|
guardExit(async token => {
|
|
66
70
|
if (target === 'electron' && !cacheExists) {
|
|
67
|
-
process.exitCode = await rebuildElectronModules(cache, modules, token);
|
|
71
|
+
process.exitCode = await rebuildElectronModules(cache, modules, forceAbi, token);
|
|
68
72
|
} else if (target === 'browser' && cacheExists) {
|
|
69
73
|
process.exitCode = await revertBrowserModules(cache, modules);
|
|
70
74
|
} else {
|
|
@@ -100,7 +104,7 @@ interface ModuleBackup {
|
|
|
100
104
|
originalLocation: string
|
|
101
105
|
}
|
|
102
106
|
|
|
103
|
-
async function rebuildElectronModules(browserModuleCache: string, modules: string[], token: ExitToken): Promise<number> {
|
|
107
|
+
async function rebuildElectronModules(browserModuleCache: string, modules: string[], forceAbi: NodeABI | undefined, token: ExitToken): Promise<number> {
|
|
104
108
|
const modulesJsonPath = path.join(browserModuleCache, 'modules.json');
|
|
105
109
|
const modulesJson: ModulesJson = await fs.access(modulesJsonPath).then(
|
|
106
110
|
() => fs.readJson(modulesJsonPath),
|
|
@@ -149,14 +153,21 @@ async function rebuildElectronModules(browserModuleCache: string, modules: strin
|
|
|
149
153
|
? m.substring(slash + 1)
|
|
150
154
|
: m;
|
|
151
155
|
});
|
|
156
|
+
let exitCode: number | undefined;
|
|
152
157
|
try {
|
|
153
158
|
if (process.env.THEIA_REBUILD_NO_WORKAROUND) {
|
|
154
|
-
|
|
159
|
+
exitCode = await runElectronRebuild(todo, forceAbi, token);
|
|
155
160
|
} else {
|
|
156
|
-
|
|
161
|
+
exitCode = await electronRebuildExtraModulesWorkaround(process.cwd(), todo, () => runElectronRebuild(todo, forceAbi, token), token);
|
|
157
162
|
}
|
|
158
163
|
} catch (error) {
|
|
159
|
-
|
|
164
|
+
console.error(error);
|
|
165
|
+
} finally {
|
|
166
|
+
// If code is undefined or different from zero we need to revert back to the browser modules.
|
|
167
|
+
if (exitCode !== 0) {
|
|
168
|
+
await revertBrowserModules(browserModuleCache, modules);
|
|
169
|
+
}
|
|
170
|
+
return exitCode ?? 1;
|
|
160
171
|
}
|
|
161
172
|
}
|
|
162
173
|
|
|
@@ -197,10 +208,14 @@ async function revertBrowserModules(browserModuleCache: string, modules: string[
|
|
|
197
208
|
return exitCode;
|
|
198
209
|
}
|
|
199
210
|
|
|
200
|
-
async function runElectronRebuild(modules: string[], token: ExitToken): Promise<number> {
|
|
211
|
+
async function runElectronRebuild(modules: string[], forceAbi: NodeABI | undefined, token: ExitToken): Promise<number> {
|
|
201
212
|
const todo = modules.join(',');
|
|
202
|
-
return new Promise((resolve, reject) => {
|
|
203
|
-
|
|
213
|
+
return new Promise(async (resolve, reject) => {
|
|
214
|
+
let command = `npx --no-install electron-rebuild -f -w=${todo} -o=${todo}`;
|
|
215
|
+
if (forceAbi) {
|
|
216
|
+
command += ` --force-abi ${forceAbi}`;
|
|
217
|
+
}
|
|
218
|
+
const electronRebuild = cp.spawn(command, {
|
|
204
219
|
stdio: 'inherit',
|
|
205
220
|
shell: true,
|
|
206
221
|
});
|