@theia/application-manager 1.40.1 → 1.42.0
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/generator/abstract-generator.d.ts +0 -4
- package/lib/generator/abstract-generator.d.ts.map +1 -1
- package/lib/generator/abstract-generator.js +1 -27
- package/lib/generator/abstract-generator.js.map +1 -1
- package/lib/generator/backend-generator.d.ts.map +1 -1
- package/lib/generator/backend-generator.js +50 -41
- package/lib/generator/backend-generator.js.map +1 -1
- package/lib/generator/frontend-generator.d.ts +2 -2
- package/lib/generator/frontend-generator.d.ts.map +1 -1
- package/lib/generator/frontend-generator.js +46 -39
- package/lib/generator/frontend-generator.js.map +1 -1
- package/lib/generator/webpack-generator.d.ts.map +1 -1
- package/lib/generator/webpack-generator.js +6 -0
- package/lib/generator/webpack-generator.js.map +1 -1
- package/package.json +8 -8
- package/src/generator/abstract-generator.ts +1 -30
- package/src/generator/backend-generator.ts +49 -41
- package/src/generator/frontend-generator.ts +49 -43
- package/src/generator/webpack-generator.ts +6 -0
|
@@ -7,10 +7,6 @@ export declare abstract class AbstractGenerator {
|
|
|
7
7
|
protected readonly pck: ApplicationPackage;
|
|
8
8
|
protected options: GeneratorOptions;
|
|
9
9
|
constructor(pck: ApplicationPackage, options?: GeneratorOptions);
|
|
10
|
-
protected compileFrontendModuleImports(modules: Map<string, string>): string;
|
|
11
|
-
protected compileBackendModuleImports(modules: Map<string, string>): string;
|
|
12
|
-
protected compileElectronMainModuleImports(modules?: Map<string, string>): string;
|
|
13
|
-
protected compileModuleImports(modules: Map<string, string>, fn: 'import' | 'require'): string;
|
|
14
10
|
protected ifBrowser(value: string, defaultValue?: string): string;
|
|
15
11
|
protected ifElectron(value: string, defaultValue?: string): string;
|
|
16
12
|
protected write(path: string, content: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract-generator.d.ts","sourceRoot":"","sources":["../../src/generator/abstract-generator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"abstract-generator.d.ts","sourceRoot":"","sources":["../../src/generator/abstract-generator.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,MAAM,WAAW,gBAAgB;IAC7B,IAAI,CAAC,EAAE,aAAa,GAAG,YAAY,CAAA;IACnC,aAAa,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED,8BAAsB,iBAAiB;IAG/B,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,kBAAkB;IAC1C,SAAS,CAAC,OAAO,EAAE,gBAAgB;gBADhB,GAAG,EAAE,kBAAkB,EAChC,OAAO,GAAE,gBAAqB;IAG5C,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,GAAE,MAAW,GAAG,MAAM;IAIrE,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,GAAE,MAAW,GAAG,MAAM;cAItD,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnE,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,MAAM,EAAE,YAAY,GAAE,MAAM,MAAiB,GAAG,MAAM;IAOtF,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,EAAE,YAAY,GAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAM,GAAG,MAAM;IASvI,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;CAIpD"}
|
|
@@ -16,37 +16,12 @@
|
|
|
16
16
|
// *****************************************************************************
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.AbstractGenerator = void 0;
|
|
19
|
-
const os = require("os");
|
|
20
19
|
const fs = require("fs-extra");
|
|
21
20
|
class AbstractGenerator {
|
|
22
21
|
constructor(pck, options = {}) {
|
|
23
22
|
this.pck = pck;
|
|
24
23
|
this.options = options;
|
|
25
24
|
}
|
|
26
|
-
compileFrontendModuleImports(modules) {
|
|
27
|
-
var _a;
|
|
28
|
-
const splitFrontend = (_a = this.options.splitFrontend) !== null && _a !== void 0 ? _a : this.options.mode !== 'production';
|
|
29
|
-
return this.compileModuleImports(modules, splitFrontend ? 'import' : 'require');
|
|
30
|
-
}
|
|
31
|
-
compileBackendModuleImports(modules) {
|
|
32
|
-
return this.compileModuleImports(modules, 'require');
|
|
33
|
-
}
|
|
34
|
-
compileElectronMainModuleImports(modules) {
|
|
35
|
-
return modules && this.compileModuleImports(modules, 'require') || '';
|
|
36
|
-
}
|
|
37
|
-
compileModuleImports(modules, fn) {
|
|
38
|
-
if (modules.size === 0) {
|
|
39
|
-
return '';
|
|
40
|
-
}
|
|
41
|
-
const lines = Array.from(modules.keys()).map(moduleName => {
|
|
42
|
-
const invocation = `${fn}('${modules.get(moduleName)}')`;
|
|
43
|
-
if (fn === 'require') {
|
|
44
|
-
return `Promise.resolve(${invocation})`;
|
|
45
|
-
}
|
|
46
|
-
return invocation;
|
|
47
|
-
}).map(statement => ` .then(function () { return ${statement}.then(load) })`);
|
|
48
|
-
return os.EOL + lines.join(os.EOL);
|
|
49
|
-
}
|
|
50
25
|
ifBrowser(value, defaultValue = '') {
|
|
51
26
|
return this.pck.ifBrowser(value, defaultValue);
|
|
52
27
|
}
|
|
@@ -73,8 +48,7 @@ class AbstractGenerator {
|
|
|
73
48
|
}
|
|
74
49
|
}
|
|
75
50
|
prettyStringify(object) {
|
|
76
|
-
|
|
77
|
-
return JSON.stringify(object, null, 4);
|
|
51
|
+
return JSON.stringify(object, undefined, 4);
|
|
78
52
|
}
|
|
79
53
|
}
|
|
80
54
|
exports.AbstractGenerator = AbstractGenerator;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract-generator.js","sourceRoot":"","sources":["../../src/generator/abstract-generator.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAEhF
|
|
1
|
+
{"version":3,"file":"abstract-generator.js","sourceRoot":"","sources":["../../src/generator/abstract-generator.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAEhF,+BAA+B;AAQ/B,MAAsB,iBAAiB;IAEnC,YACuB,GAAuB,EAChC,UAA4B,EAAE;QADrB,QAAG,GAAH,GAAG,CAAoB;QAChC,YAAO,GAAP,OAAO,CAAuB;IACxC,CAAC;IAEK,SAAS,CAAC,KAAa,EAAE,eAAuB,EAAE;QACxD,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACnD,CAAC;IAES,UAAU,CAAC,KAAa,EAAE,eAAuB,EAAE;QACzD,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACpD,CAAC;IAES,KAAK,CAAC,KAAK,CAAC,IAAY,EAAE,OAAe;QAC/C,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAES,QAAQ,CAAC,KAAmB,EAAE,eAA6B,GAAG,EAAE,CAAC,EAAE;QACzE,OAAO,IAAI,CAAC,SAAS,CAAC;YAClB,eAAe;YACf,2BAA2B;SAC9B,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;IAC5B,CAAC;IAES,SAAS,CAAC,WAA8B,EAAE,KAA8B,EAAE,eAAwC,EAAE;QAC1H,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QAC1E,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;YACjE,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;SACtD;aAAM;YACH,OAAO,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC;SAC3E;IACL,CAAC;IAES,eAAe,CAAC,MAAc;QACpC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;CAEJ;AAxCD,8CAwCC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend-generator.d.ts","sourceRoot":"","sources":["../../src/generator/backend-generator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"backend-generator.d.ts","sourceRoot":"","sources":["../../src/generator/backend-generator.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,qBAAa,gBAAiB,SAAQ,iBAAiB;IAE7C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAS/B,SAAS,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;IAsEhF,SAAS,CAAC,aAAa,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;IA4DpE,SAAS,CAAC,WAAW,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;CAoBrE"}
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
// *****************************************************************************
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.BackendGenerator = void 0;
|
|
19
|
+
const os_1 = require("os");
|
|
19
20
|
const abstract_generator_1 = require("./abstract-generator");
|
|
20
21
|
class BackendGenerator extends abstract_generator_1.AbstractGenerator {
|
|
21
22
|
async generate() {
|
|
@@ -27,6 +28,7 @@ class BackendGenerator extends abstract_generator_1.AbstractGenerator {
|
|
|
27
28
|
}
|
|
28
29
|
}
|
|
29
30
|
compileElectronMain(electronMainModules) {
|
|
31
|
+
var _a;
|
|
30
32
|
return `// @ts-check
|
|
31
33
|
|
|
32
34
|
require('reflect-metadata');
|
|
@@ -52,44 +54,47 @@ const { Container } = require('inversify');
|
|
|
52
54
|
const { resolve } = require('path');
|
|
53
55
|
const { app } = require('electron');
|
|
54
56
|
|
|
55
|
-
// Fix the window reloading issue, see: https://github.com/electron/electron/issues/22119
|
|
56
|
-
app.allowRendererProcessReuse = false;
|
|
57
|
-
|
|
58
57
|
const config = ${this.prettyStringify(this.pck.props.frontend.config)};
|
|
59
58
|
const isSingleInstance = ${this.pck.props.backend.config.singleInstance === true ? 'true' : 'false'};
|
|
60
59
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
container
|
|
69
|
-
container.
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
60
|
+
(async () => {
|
|
61
|
+
if (isSingleInstance && !app.requestSingleInstanceLock()) {
|
|
62
|
+
// There is another instance running, exit now. The other instance will request focus.
|
|
63
|
+
app.quit();
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const container = new Container();
|
|
68
|
+
container.load(electronMainApplicationModule);
|
|
69
|
+
container.bind(ElectronMainApplicationGlobals).toConstantValue({
|
|
70
|
+
THEIA_APP_PROJECT_PATH: resolve(__dirname, '..', '..'),
|
|
71
|
+
THEIA_BACKEND_MAIN_PATH: resolve(__dirname, 'main.js'),
|
|
72
|
+
THEIA_FRONTEND_HTML_PATH: resolve(__dirname, '..', '..', 'lib', 'frontend', 'index.html'),
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
function load(raw) {
|
|
76
|
+
return Promise.resolve(raw.default).then(module =>
|
|
77
|
+
container.load(module)
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
async function start() {
|
|
82
|
+
const application = container.get(ElectronMainApplication);
|
|
83
|
+
await application.start(config);
|
|
84
|
+
}
|
|
85
85
|
|
|
86
|
-
|
|
87
|
-
|
|
86
|
+
try {
|
|
87
|
+
${Array.from((_a = electronMainModules === null || electronMainModules === void 0 ? void 0 : electronMainModules.values()) !== null && _a !== void 0 ? _a : [], jsModulePath => `\
|
|
88
|
+
await load(require('${jsModulePath}'));`).join(os_1.EOL)}
|
|
89
|
+
await start();
|
|
90
|
+
} catch (reason) {
|
|
88
91
|
console.error('Failed to start the electron application.');
|
|
89
92
|
if (reason) {
|
|
90
93
|
console.error(reason);
|
|
91
94
|
}
|
|
92
|
-
|
|
95
|
+
app.quit();
|
|
96
|
+
};
|
|
97
|
+
})();
|
|
93
98
|
`;
|
|
94
99
|
}
|
|
95
100
|
compileServer(backendModules) {
|
|
@@ -124,27 +129,31 @@ function defaultServeStatic(app) {
|
|
|
124
129
|
}
|
|
125
130
|
|
|
126
131
|
function load(raw) {
|
|
127
|
-
return Promise.resolve(raw
|
|
128
|
-
module => container.load(module)
|
|
132
|
+
return Promise.resolve(raw).then(
|
|
133
|
+
module => container.load(module.default)
|
|
129
134
|
);
|
|
130
135
|
}
|
|
131
136
|
|
|
132
|
-
function start(port, host, argv = process.argv) {
|
|
137
|
+
async function start(port, host, argv = process.argv) {
|
|
133
138
|
if (!container.isBound(BackendApplicationServer)) {
|
|
134
139
|
container.bind(BackendApplicationServer).toConstantValue({ configure: defaultServeStatic });
|
|
135
140
|
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
});
|
|
141
|
+
await container.get(CliManager).initializeCli(argv);
|
|
142
|
+
return container.get(BackendApplication).start(port, host);
|
|
139
143
|
}
|
|
140
144
|
|
|
141
|
-
module.exports = (port, host, argv) =>
|
|
142
|
-
|
|
145
|
+
module.exports = async (port, host, argv) => {
|
|
146
|
+
try {
|
|
147
|
+
${Array.from(backendModules.values(), jsModulePath => `\
|
|
148
|
+
await load(require('${jsModulePath}'));`).join(os_1.EOL)}
|
|
149
|
+
return await start(port, host, argv);
|
|
150
|
+
} catch (error) {
|
|
143
151
|
console.error('Failed to start the backend application:');
|
|
144
152
|
console.error(error);
|
|
145
153
|
process.exitCode = 1;
|
|
146
154
|
throw error;
|
|
147
|
-
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
148
157
|
`;
|
|
149
158
|
}
|
|
150
159
|
compileMain(backendModules) {
|
|
@@ -157,9 +166,9 @@ BackendApplicationConfigProvider.set(${this.prettyStringify(this.pck.props.backe
|
|
|
157
166
|
const serverModule = require('./server');
|
|
158
167
|
const serverAddress = main.start(serverModule());
|
|
159
168
|
|
|
160
|
-
serverAddress.then(({ port, address }) => {
|
|
169
|
+
serverAddress.then(({ port, address, family }) => {
|
|
161
170
|
if (process && process.send) {
|
|
162
|
-
process.send({ port, address });
|
|
171
|
+
process.send({ port, address, family });
|
|
163
172
|
}
|
|
164
173
|
});
|
|
165
174
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend-generator.js","sourceRoot":"","sources":["../../src/generator/backend-generator.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAEhF,6DAAyD;AAEzD,MAAa,gBAAiB,SAAQ,sCAAiB;IAEnD,KAAK,CAAC,QAAQ;QACV,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC;QACrD,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC;QACpF,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC;QAChF,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE;YACvB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC;SACxH;IACL,CAAC;IAES,mBAAmB,CAAC,mBAAyC
|
|
1
|
+
{"version":3,"file":"backend-generator.js","sourceRoot":"","sources":["../../src/generator/backend-generator.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAEhF,2BAAyB;AACzB,6DAAyD;AAEzD,MAAa,gBAAiB,SAAQ,sCAAiB;IAEnD,KAAK,CAAC,QAAQ;QACV,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC;QACrD,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC;QACpF,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC;QAChF,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE;YACvB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC;SACxH;IACL,CAAC;IAES,mBAAmB,CAAC,mBAAyC;;QACnE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;iBAyBE,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6BjG,KAAK,CAAC,IAAI,CAAC,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,MAAM,EAAE,mCAAI,EAAE,EAAE,YAAY,CAAC,EAAE,CAAC;8BACpC,YAAY,MAAM,CAAC,CAAC,IAAI,CAAC,QAAG,CAAC;;;;;;;;;;CAU1D,CAAC;IACE,CAAC;IAES,aAAa,CAAC,cAAmC;QACvD,OAAO;8BACe,IAAI,CAAC,UAAU,CAAC;;;;;EAK5C,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwCD,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,EAAE,CAAC;8BACxB,YAAY,MAAM,CAAC,CAAC,IAAI,CAAC,QAAG,CAAC;;;;;;;;;CAS1D,CAAC;IACE,CAAC;IAES,WAAW,CAAC,cAAmC;QACrD,OAAO;;;;uCAIwB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;;;;;;;;;;;;CAYzF,CAAC;IACE,CAAC;CAEJ;AAjKD,4CAiKC"}
|
|
@@ -4,10 +4,10 @@ export declare class FrontendGenerator extends AbstractGenerator {
|
|
|
4
4
|
protected compileIndexPreload(frontendModules: Map<string, string>): string;
|
|
5
5
|
protected compileIndexHtml(frontendModules: Map<string, string>): string;
|
|
6
6
|
protected compileIndexHead(frontendModules: Map<string, string>): string;
|
|
7
|
-
protected compileIndexJs(frontendModules: Map<string, string>): string;
|
|
7
|
+
protected compileIndexJs(frontendModules: Map<string, string>, frontendPreloadModules: Map<string, string>): string;
|
|
8
|
+
protected importOrRequire(): string;
|
|
8
9
|
/** HTML for secondary windows that contain an extracted widget. */
|
|
9
10
|
protected compileSecondaryWindowHtml(): string;
|
|
10
|
-
protected compileSecondaryModuleImports(secondaryWindowModules: Map<string, string>): string;
|
|
11
11
|
protected compileSecondaryIndexJs(secondaryWindowModules: Map<string, string>): string;
|
|
12
12
|
compilePreloadJs(): string;
|
|
13
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontend-generator.d.ts","sourceRoot":"","sources":["../../src/generator/frontend-generator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"frontend-generator.d.ts","sourceRoot":"","sources":["../../src/generator/frontend-generator.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAG3E,qBAAa,iBAAkB,SAAQ,iBAAiB;IAE9C,QAAQ,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAUzD,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;IAQxE,SAAS,CAAC,cAAc,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,sBAAsB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;IAyEnH,SAAS,CAAC,eAAe,IAAI,MAAM;IAInC,mEAAmE;IACnE,SAAS,CAAC,0BAA0B,IAAI,MAAM;IA6C9C,SAAS,CAAC,uBAAuB,CAAC,sBAAsB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;IAgBtF,gBAAgB,IAAI,MAAM;CAM7B"}
|
|
@@ -17,12 +17,13 @@
|
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.FrontendGenerator = void 0;
|
|
19
19
|
/* eslint-disable @typescript-eslint/indent */
|
|
20
|
+
const os_1 = require("os");
|
|
20
21
|
const abstract_generator_1 = require("./abstract-generator");
|
|
21
22
|
const fs_1 = require("fs");
|
|
22
23
|
class FrontendGenerator extends abstract_generator_1.AbstractGenerator {
|
|
23
24
|
async generate(options) {
|
|
24
25
|
await this.write(this.pck.frontend('index.html'), this.compileIndexHtml(this.pck.targetFrontendModules));
|
|
25
|
-
await this.write(this.pck.frontend('index.js'), this.compileIndexJs(this.pck.targetFrontendModules));
|
|
26
|
+
await this.write(this.pck.frontend('index.js'), this.compileIndexJs(this.pck.targetFrontendModules, this.pck.frontendPreloadModules));
|
|
26
27
|
await this.write(this.pck.frontend('secondary-window.html'), this.compileSecondaryWindowHtml());
|
|
27
28
|
await this.write(this.pck.frontend('secondary-index.js'), this.compileSecondaryIndexJs(this.pck.secondaryWindowModules));
|
|
28
29
|
if (this.pck.isElectron()) {
|
|
@@ -61,10 +62,7 @@ class FrontendGenerator extends abstract_generator_1.AbstractGenerator {
|
|
|
61
62
|
<meta name="apple-mobile-web-app-capable" content="yes">
|
|
62
63
|
<title>${this.pck.props.frontend.config.applicationName}</title>`;
|
|
63
64
|
}
|
|
64
|
-
compileIndexJs(frontendModules) {
|
|
65
|
-
const compiledModuleImports = this.compileFrontendModuleImports(frontendModules)
|
|
66
|
-
// fix the generated indentation
|
|
67
|
-
.replace(/^ /g, ' ');
|
|
65
|
+
compileIndexJs(frontendModules, frontendPreloadModules) {
|
|
68
66
|
return `\
|
|
69
67
|
// @ts-check
|
|
70
68
|
${this.ifBrowser("require('es6-promise/auto');")}
|
|
@@ -82,42 +80,63 @@ self.MonacoEnvironment = {
|
|
|
82
80
|
}
|
|
83
81
|
}`)}
|
|
84
82
|
|
|
85
|
-
|
|
83
|
+
function load(container, jsModule) {
|
|
84
|
+
return Promise.resolve(jsModule)
|
|
85
|
+
.then(containerModule => container.load(containerModule.default));
|
|
86
|
+
}
|
|
86
87
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
88
|
+
async function preload(parent) {
|
|
89
|
+
const container = new Container();
|
|
90
|
+
container.parent = parent;
|
|
91
|
+
try {
|
|
92
|
+
${Array.from(frontendPreloadModules.values(), jsModulePath => `\
|
|
93
|
+
await load(container, ${this.importOrRequire()}('${jsModulePath}'));`).join(os_1.EOL)}
|
|
94
|
+
const { Preloader } = require('@theia/core/lib/browser/preload/preloader');
|
|
95
|
+
const preloader = container.get(Preloader);
|
|
96
|
+
await preloader.initialize();
|
|
97
|
+
} catch (reason) {
|
|
98
|
+
console.error('Failed to run preload scripts.');
|
|
99
|
+
if (reason) {
|
|
100
|
+
console.error(reason);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
module.exports = (async () => {
|
|
91
106
|
const { messagingFrontendModule } = require('@theia/core/lib/${this.pck.isBrowser()
|
|
92
107
|
? 'browser/messaging/messaging-frontend-module'
|
|
93
108
|
: 'electron-browser/messaging/electron-messaging-frontend-module'}');
|
|
109
|
+
const container = new Container();
|
|
110
|
+
container.load(messagingFrontendModule);
|
|
111
|
+
await preload(container);
|
|
112
|
+
const { FrontendApplication } = require('@theia/core/lib/browser');
|
|
113
|
+
const { frontendApplicationModule } = require('@theia/core/lib/browser/frontend-application-module');
|
|
94
114
|
const { loggerFrontendModule } = require('@theia/core/lib/browser/logger-frontend-module');
|
|
95
115
|
|
|
96
|
-
const container = new Container();
|
|
97
116
|
container.load(frontendApplicationModule);
|
|
98
|
-
container.load(messagingFrontendModule);
|
|
99
117
|
container.load(loggerFrontendModule);
|
|
100
118
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
return Promise.resolve(jsModule.default)
|
|
111
|
-
.then(containerModule => container.load(containerModule));
|
|
119
|
+
try {
|
|
120
|
+
${Array.from(frontendModules.values(), jsModulePath => `\
|
|
121
|
+
await load(container, ${this.importOrRequire()}('${jsModulePath}'));`).join(os_1.EOL)}
|
|
122
|
+
await start();
|
|
123
|
+
} catch (reason) {
|
|
124
|
+
console.error('Failed to start the frontend application.');
|
|
125
|
+
if (reason) {
|
|
126
|
+
console.error(reason);
|
|
127
|
+
}
|
|
112
128
|
}
|
|
113
129
|
|
|
114
130
|
function start() {
|
|
115
131
|
(window['theia'] = window['theia'] || {}).container = container;
|
|
116
132
|
return container.get(FrontendApplication).start();
|
|
117
133
|
}
|
|
118
|
-
});
|
|
134
|
+
})();
|
|
119
135
|
`;
|
|
120
136
|
}
|
|
137
|
+
importOrRequire() {
|
|
138
|
+
return this.options.mode !== 'production' ? 'import' : 'require';
|
|
139
|
+
}
|
|
121
140
|
/** HTML for secondary windows that contain an extracted widget. */
|
|
122
141
|
compileSecondaryWindowHtml() {
|
|
123
142
|
return `<!DOCTYPE html>
|
|
@@ -163,37 +182,25 @@ module.exports = preloader.preload().then(() => {
|
|
|
163
182
|
|
|
164
183
|
</html>`;
|
|
165
184
|
}
|
|
166
|
-
compileSecondaryModuleImports(secondaryWindowModules) {
|
|
167
|
-
const lines = Array.from(secondaryWindowModules.entries())
|
|
168
|
-
.map(([moduleName, path]) => ` container.load(require('${path}').default);`);
|
|
169
|
-
return '\n' + lines.join('\n');
|
|
170
|
-
}
|
|
171
185
|
compileSecondaryIndexJs(secondaryWindowModules) {
|
|
172
|
-
const compiledModuleImports = this.compileSecondaryModuleImports(secondaryWindowModules)
|
|
173
|
-
// fix the generated indentation
|
|
174
|
-
.replace(/^ /g, ' ');
|
|
175
186
|
return `\
|
|
176
187
|
// @ts-check
|
|
177
188
|
require('reflect-metadata');
|
|
178
189
|
const { Container } = require('inversify');
|
|
179
190
|
|
|
180
|
-
const preloader = require('@theia/core/lib/browser/preloader');
|
|
181
|
-
|
|
182
191
|
module.exports = Promise.resolve().then(() => {
|
|
183
192
|
const { frontendApplicationModule } = require('@theia/core/lib/browser/frontend-application-module');
|
|
184
193
|
const container = new Container();
|
|
185
194
|
container.load(frontendApplicationModule);
|
|
186
|
-
|
|
195
|
+
${Array.from(secondaryWindowModules.values(), jsModulePath => `\
|
|
196
|
+
container.load(require('${jsModulePath}').default);`).join(os_1.EOL)}
|
|
187
197
|
});
|
|
188
198
|
`;
|
|
189
199
|
}
|
|
190
200
|
compilePreloadJs() {
|
|
191
|
-
const lines = Array.from(this.pck.preloadModules)
|
|
192
|
-
.map(([moduleName, path]) => `require('${path}').preload();`);
|
|
193
|
-
const imports = '\n' + lines.join('\n');
|
|
194
201
|
return `\
|
|
195
202
|
// @ts-check
|
|
196
|
-
${
|
|
203
|
+
${Array.from(this.pck.preloadModules.values(), path => `require('${path}').preload();`).join(os_1.EOL)}
|
|
197
204
|
`;
|
|
198
205
|
}
|
|
199
206
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontend-generator.js","sourceRoot":"","sources":["../../src/generator/frontend-generator.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAEhF,8CAA8C;AAE9C,6DAA2E;AAC3E,2BAA8C;AAE9C,MAAa,iBAAkB,SAAQ,sCAAiB;IAEpD,KAAK,CAAC,QAAQ,CAAC,OAA0B;QACrC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC;QACzG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"frontend-generator.js","sourceRoot":"","sources":["../../src/generator/frontend-generator.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAEhF,8CAA8C;AAE9C,2BAAyB;AACzB,6DAA2E;AAC3E,2BAA8C;AAE9C,MAAa,iBAAkB,SAAQ,sCAAiB;IAEpD,KAAK,CAAC,QAAQ,CAAC,OAA0B;QACrC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC;QACzG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC;QACtI,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,IAAI,CAAC,0BAA0B,EAAE,CAAC,CAAC;QAChG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC;QACzH,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE;YACvB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;SAC9E;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,IAAA,eAAU,EAAC,QAAQ,CAAC,EAAE;YACtB,OAAO,IAAA,iBAAY,EAAC,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;;;;iCAIb,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC;;;;QAIlE,CAAC;IACL,CAAC;IAES,gBAAgB,CAAC,eAAoC;QAC3D,OAAO;;;;WAIJ,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,eAAe,UAAU,CAAC;IAChE,CAAC;IAES,cAAc,CAAC,eAAoC,EAAE,sBAA2C;QACtG,OAAO;;EAEb,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC;;;;;;wCAMR,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;;EAE1F,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;;;;;EAKpB,CAAC;;;;;;;;;;;EAWD,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,EAAE,CAAC;gCAC9B,IAAI,CAAC,eAAe,EAAE,KAAK,YAAY,MAAM,CAAC,CAAC,IAAI,CAAC,QAAG,CAAC;;;;;;;;;;;;;mEAarB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE;YAC3E,CAAC,CAAC,6CAA6C;YAC/C,CAAC,CAAC,+DAA+D;;;;;;;;;;;;EAY3E,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,EAAE,CAAC;gCACvB,IAAI,CAAC,eAAe,EAAE,KAAK,YAAY,MAAM,CAAC,CAAC,IAAI,CAAC,QAAG,CAAC;;;;;;;;;;;;;;CAcvF,CAAC;IACE,CAAC;IAES,eAAe;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IACrE,CAAC;IAED,mEAAmE;IACzD,0BAA0B;QAChC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAyCP,CAAC;IACL,CAAC;IAES,uBAAuB,CAAC,sBAA2C;QACzE,OAAO;;;;;;;;;EASb,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,EAAE,CAAC;8BAChC,YAAY,cAAc,CAAC,CAAC,IAAI,CAAC,QAAG,CAAC;;CAElE,CAAC;IACE,CAAC;IAED,gBAAgB;QACZ,OAAO;;EAEb,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,YAAY,IAAI,eAAe,CAAC,CAAC,IAAI,CAAC,QAAG,CAAC;CAChG,CAAC;IACE,CAAC;CACJ;AAlMD,8CAkMC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webpack-generator.d.ts","sourceRoot":"","sources":["../../src/generator/webpack-generator.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,qBAAa,gBAAiB,SAAQ,iBAAiB;IAE7C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;cAQf,+BAA+B,IAAI,OAAO,CAAC,OAAO,CAAC;IAQnE,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IAED,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAI3D,SAAS,CAAC,oBAAoB,IAAI,MAAM;
|
|
1
|
+
{"version":3,"file":"webpack-generator.d.ts","sourceRoot":"","sources":["../../src/generator/webpack-generator.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,qBAAa,gBAAiB,SAAQ,iBAAiB;IAE7C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;cAQf,+BAA+B,IAAI,OAAO,CAAC,OAAO,CAAC;IAQnE,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IAED,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAI3D,SAAS,CAAC,oBAAoB,IAAI,MAAM;IA0QxC,SAAS,CAAC,wBAAwB,IAAI,MAAM;IAwB5C,SAAS,CAAC,wBAAwB,IAAI,MAAM;CAyI/C"}
|
|
@@ -84,6 +84,12 @@ const plugins = [
|
|
|
84
84
|
from: path.join(resolvePackagePath('@theia/plugin-ext', __dirname), '..', 'src', 'main', 'browser', 'webview', 'pre'),
|
|
85
85
|
to: path.resolve(__dirname, 'lib', 'webview', 'pre')
|
|
86
86
|
}`)}
|
|
87
|
+
${this.ifPackage('@theia/plugin-ext-vscode', `,
|
|
88
|
+
{
|
|
89
|
+
// copy frontend plugin host files
|
|
90
|
+
from: path.join(resolvePackagePath('@theia/plugin-ext-vscode', __dirname), '..', 'lib', 'node', 'context', 'plugin-vscode-init-fe.js'),
|
|
91
|
+
to: path.resolve(__dirname, 'lib', 'frontend', 'context', 'plugin-vscode-init-fe.js')
|
|
92
|
+
}`)}
|
|
87
93
|
]
|
|
88
94
|
}),
|
|
89
95
|
new webpack.ProvidePlugin({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webpack-generator.js","sourceRoot":"","sources":["../../src/generator/webpack-generator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"webpack-generator.js","sourceRoot":"","sources":["../../src/generator/webpack-generator.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.
|
|
3
|
+
"version": "1.42.0",
|
|
4
4
|
"description": "Theia application manager API.",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -33,11 +33,11 @@
|
|
|
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.
|
|
37
|
-
"@theia/ffmpeg": "1.
|
|
38
|
-
"@theia/native-webpack-plugin": "1.
|
|
36
|
+
"@theia/application-package": "1.42.0",
|
|
37
|
+
"@theia/ffmpeg": "1.42.0",
|
|
38
|
+
"@theia/native-webpack-plugin": "1.42.0",
|
|
39
39
|
"@types/fs-extra": "^4.0.2",
|
|
40
|
-
"@types/semver": "^7.
|
|
40
|
+
"@types/semver": "^7.5.0",
|
|
41
41
|
"babel-loader": "^8.2.2",
|
|
42
42
|
"buffer": "^6.0.3",
|
|
43
43
|
"compression-webpack-plugin": "^9.0.0",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"node-abi": "*",
|
|
52
52
|
"node-loader": "^2.0.0",
|
|
53
53
|
"path-browserify": "^1.0.1",
|
|
54
|
-
"semver": "^7.
|
|
54
|
+
"semver": "^7.5.4",
|
|
55
55
|
"setimmediate": "^1.0.5",
|
|
56
56
|
"source-map": "^0.6.1",
|
|
57
57
|
"source-map-loader": "^2.0.1",
|
|
@@ -73,11 +73,11 @@
|
|
|
73
73
|
}
|
|
74
74
|
},
|
|
75
75
|
"devDependencies": {
|
|
76
|
-
"@theia/ext-scripts": "1.
|
|
76
|
+
"@theia/ext-scripts": "1.42.0",
|
|
77
77
|
"@types/node-abi": "*"
|
|
78
78
|
},
|
|
79
79
|
"nyc": {
|
|
80
80
|
"extends": "../../configs/nyc.json"
|
|
81
81
|
},
|
|
82
|
-
"gitHead": "
|
|
82
|
+
"gitHead": "caf9429694cfefd1881c5559a82611b8860c5885"
|
|
83
83
|
}
|
|
@@ -14,7 +14,6 @@
|
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
|
-
import * as os from 'os';
|
|
18
17
|
import * as fs from 'fs-extra';
|
|
19
18
|
import { ApplicationPackage } from '@theia/application-package';
|
|
20
19
|
|
|
@@ -30,33 +29,6 @@ export abstract class AbstractGenerator {
|
|
|
30
29
|
protected options: GeneratorOptions = {}
|
|
31
30
|
) { }
|
|
32
31
|
|
|
33
|
-
protected compileFrontendModuleImports(modules: Map<string, string>): string {
|
|
34
|
-
const splitFrontend = this.options.splitFrontend ?? this.options.mode !== 'production';
|
|
35
|
-
return this.compileModuleImports(modules, splitFrontend ? 'import' : 'require');
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
protected compileBackendModuleImports(modules: Map<string, string>): string {
|
|
39
|
-
return this.compileModuleImports(modules, 'require');
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
protected compileElectronMainModuleImports(modules?: Map<string, string>): string {
|
|
43
|
-
return modules && this.compileModuleImports(modules, 'require') || '';
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
protected compileModuleImports(modules: Map<string, string>, fn: 'import' | 'require'): string {
|
|
47
|
-
if (modules.size === 0) {
|
|
48
|
-
return '';
|
|
49
|
-
}
|
|
50
|
-
const lines = Array.from(modules.keys()).map(moduleName => {
|
|
51
|
-
const invocation = `${fn}('${modules.get(moduleName)}')`;
|
|
52
|
-
if (fn === 'require') {
|
|
53
|
-
return `Promise.resolve(${invocation})`;
|
|
54
|
-
}
|
|
55
|
-
return invocation;
|
|
56
|
-
}).map(statement => ` .then(function () { return ${statement}.then(load) })`);
|
|
57
|
-
return os.EOL + lines.join(os.EOL);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
32
|
protected ifBrowser(value: string, defaultValue: string = ''): string {
|
|
61
33
|
return this.pck.ifBrowser(value, defaultValue);
|
|
62
34
|
}
|
|
@@ -87,8 +59,7 @@ export abstract class AbstractGenerator {
|
|
|
87
59
|
}
|
|
88
60
|
|
|
89
61
|
protected prettyStringify(object: object): string {
|
|
90
|
-
|
|
91
|
-
return JSON.stringify(object, null, 4);
|
|
62
|
+
return JSON.stringify(object, undefined, 4);
|
|
92
63
|
}
|
|
93
64
|
|
|
94
65
|
}
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
|
+
import { EOL } from 'os';
|
|
17
18
|
import { AbstractGenerator } from './abstract-generator';
|
|
18
19
|
|
|
19
20
|
export class BackendGenerator extends AbstractGenerator {
|
|
@@ -53,44 +54,47 @@ const { Container } = require('inversify');
|
|
|
53
54
|
const { resolve } = require('path');
|
|
54
55
|
const { app } = require('electron');
|
|
55
56
|
|
|
56
|
-
// Fix the window reloading issue, see: https://github.com/electron/electron/issues/22119
|
|
57
|
-
app.allowRendererProcessReuse = false;
|
|
58
|
-
|
|
59
57
|
const config = ${this.prettyStringify(this.pck.props.frontend.config)};
|
|
60
58
|
const isSingleInstance = ${this.pck.props.backend.config.singleInstance === true ? 'true' : 'false'};
|
|
61
59
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
container
|
|
70
|
-
container.
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
60
|
+
(async () => {
|
|
61
|
+
if (isSingleInstance && !app.requestSingleInstanceLock()) {
|
|
62
|
+
// There is another instance running, exit now. The other instance will request focus.
|
|
63
|
+
app.quit();
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const container = new Container();
|
|
68
|
+
container.load(electronMainApplicationModule);
|
|
69
|
+
container.bind(ElectronMainApplicationGlobals).toConstantValue({
|
|
70
|
+
THEIA_APP_PROJECT_PATH: resolve(__dirname, '..', '..'),
|
|
71
|
+
THEIA_BACKEND_MAIN_PATH: resolve(__dirname, 'main.js'),
|
|
72
|
+
THEIA_FRONTEND_HTML_PATH: resolve(__dirname, '..', '..', 'lib', 'frontend', 'index.html'),
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
function load(raw) {
|
|
76
|
+
return Promise.resolve(raw.default).then(module =>
|
|
77
|
+
container.load(module)
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
async function start() {
|
|
82
|
+
const application = container.get(ElectronMainApplication);
|
|
83
|
+
await application.start(config);
|
|
84
|
+
}
|
|
86
85
|
|
|
87
|
-
|
|
88
|
-
|
|
86
|
+
try {
|
|
87
|
+
${Array.from(electronMainModules?.values() ?? [], jsModulePath => `\
|
|
88
|
+
await load(require('${jsModulePath}'));`).join(EOL)}
|
|
89
|
+
await start();
|
|
90
|
+
} catch (reason) {
|
|
89
91
|
console.error('Failed to start the electron application.');
|
|
90
92
|
if (reason) {
|
|
91
93
|
console.error(reason);
|
|
92
94
|
}
|
|
93
|
-
|
|
95
|
+
app.quit();
|
|
96
|
+
};
|
|
97
|
+
})();
|
|
94
98
|
`;
|
|
95
99
|
}
|
|
96
100
|
|
|
@@ -126,27 +130,31 @@ function defaultServeStatic(app) {
|
|
|
126
130
|
}
|
|
127
131
|
|
|
128
132
|
function load(raw) {
|
|
129
|
-
return Promise.resolve(raw
|
|
130
|
-
module => container.load(module)
|
|
133
|
+
return Promise.resolve(raw).then(
|
|
134
|
+
module => container.load(module.default)
|
|
131
135
|
);
|
|
132
136
|
}
|
|
133
137
|
|
|
134
|
-
function start(port, host, argv = process.argv) {
|
|
138
|
+
async function start(port, host, argv = process.argv) {
|
|
135
139
|
if (!container.isBound(BackendApplicationServer)) {
|
|
136
140
|
container.bind(BackendApplicationServer).toConstantValue({ configure: defaultServeStatic });
|
|
137
141
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
});
|
|
142
|
+
await container.get(CliManager).initializeCli(argv);
|
|
143
|
+
return container.get(BackendApplication).start(port, host);
|
|
141
144
|
}
|
|
142
145
|
|
|
143
|
-
module.exports = (port, host, argv) =>
|
|
144
|
-
|
|
146
|
+
module.exports = async (port, host, argv) => {
|
|
147
|
+
try {
|
|
148
|
+
${Array.from(backendModules.values(), jsModulePath => `\
|
|
149
|
+
await load(require('${jsModulePath}'));`).join(EOL)}
|
|
150
|
+
return await start(port, host, argv);
|
|
151
|
+
} catch (error) {
|
|
145
152
|
console.error('Failed to start the backend application:');
|
|
146
153
|
console.error(error);
|
|
147
154
|
process.exitCode = 1;
|
|
148
155
|
throw error;
|
|
149
|
-
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
150
158
|
`;
|
|
151
159
|
}
|
|
152
160
|
|
|
@@ -160,9 +168,9 @@ BackendApplicationConfigProvider.set(${this.prettyStringify(this.pck.props.backe
|
|
|
160
168
|
const serverModule = require('./server');
|
|
161
169
|
const serverAddress = main.start(serverModule());
|
|
162
170
|
|
|
163
|
-
serverAddress.then(({ port, address }) => {
|
|
171
|
+
serverAddress.then(({ port, address, family }) => {
|
|
164
172
|
if (process && process.send) {
|
|
165
|
-
process.send({ port, address });
|
|
173
|
+
process.send({ port, address, family });
|
|
166
174
|
}
|
|
167
175
|
});
|
|
168
176
|
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
/* eslint-disable @typescript-eslint/indent */
|
|
18
18
|
|
|
19
|
+
import { EOL } from 'os';
|
|
19
20
|
import { AbstractGenerator, GeneratorOptions } from './abstract-generator';
|
|
20
21
|
import { existsSync, readFileSync } from 'fs';
|
|
21
22
|
|
|
@@ -23,7 +24,7 @@ export class FrontendGenerator extends AbstractGenerator {
|
|
|
23
24
|
|
|
24
25
|
async generate(options?: GeneratorOptions): Promise<void> {
|
|
25
26
|
await this.write(this.pck.frontend('index.html'), this.compileIndexHtml(this.pck.targetFrontendModules));
|
|
26
|
-
await this.write(this.pck.frontend('index.js'), this.compileIndexJs(this.pck.targetFrontendModules));
|
|
27
|
+
await this.write(this.pck.frontend('index.js'), this.compileIndexJs(this.pck.targetFrontendModules, this.pck.frontendPreloadModules));
|
|
27
28
|
await this.write(this.pck.frontend('secondary-window.html'), this.compileSecondaryWindowHtml());
|
|
28
29
|
await this.write(this.pck.frontend('secondary-index.js'), this.compileSecondaryIndexJs(this.pck.secondaryWindowModules));
|
|
29
30
|
if (this.pck.isElectron()) {
|
|
@@ -68,10 +69,7 @@ export class FrontendGenerator extends AbstractGenerator {
|
|
|
68
69
|
<title>${this.pck.props.frontend.config.applicationName}</title>`;
|
|
69
70
|
}
|
|
70
71
|
|
|
71
|
-
protected compileIndexJs(frontendModules: Map<string, string>): string {
|
|
72
|
-
const compiledModuleImports = this.compileFrontendModuleImports(frontendModules)
|
|
73
|
-
// fix the generated indentation
|
|
74
|
-
.replace(/^ /g, ' ');
|
|
72
|
+
protected compileIndexJs(frontendModules: Map<string, string>, frontendPreloadModules: Map<string, string>): string {
|
|
75
73
|
return `\
|
|
76
74
|
// @ts-check
|
|
77
75
|
${this.ifBrowser("require('es6-promise/auto');")}
|
|
@@ -89,43 +87,65 @@ self.MonacoEnvironment = {
|
|
|
89
87
|
}
|
|
90
88
|
}`)}
|
|
91
89
|
|
|
92
|
-
|
|
90
|
+
function load(container, jsModule) {
|
|
91
|
+
return Promise.resolve(jsModule)
|
|
92
|
+
.then(containerModule => container.load(containerModule.default));
|
|
93
|
+
}
|
|
93
94
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
95
|
+
async function preload(parent) {
|
|
96
|
+
const container = new Container();
|
|
97
|
+
container.parent = parent;
|
|
98
|
+
try {
|
|
99
|
+
${Array.from(frontendPreloadModules.values(), jsModulePath => `\
|
|
100
|
+
await load(container, ${this.importOrRequire()}('${jsModulePath}'));`).join(EOL)}
|
|
101
|
+
const { Preloader } = require('@theia/core/lib/browser/preload/preloader');
|
|
102
|
+
const preloader = container.get(Preloader);
|
|
103
|
+
await preloader.initialize();
|
|
104
|
+
} catch (reason) {
|
|
105
|
+
console.error('Failed to run preload scripts.');
|
|
106
|
+
if (reason) {
|
|
107
|
+
console.error(reason);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
module.exports = (async () => {
|
|
98
113
|
const { messagingFrontendModule } = require('@theia/core/lib/${this.pck.isBrowser()
|
|
99
|
-
|
|
100
|
-
|
|
114
|
+
? 'browser/messaging/messaging-frontend-module'
|
|
115
|
+
: 'electron-browser/messaging/electron-messaging-frontend-module'}');
|
|
116
|
+
const container = new Container();
|
|
117
|
+
container.load(messagingFrontendModule);
|
|
118
|
+
await preload(container);
|
|
119
|
+
const { FrontendApplication } = require('@theia/core/lib/browser');
|
|
120
|
+
const { frontendApplicationModule } = require('@theia/core/lib/browser/frontend-application-module');
|
|
101
121
|
const { loggerFrontendModule } = require('@theia/core/lib/browser/logger-frontend-module');
|
|
102
122
|
|
|
103
|
-
const container = new Container();
|
|
104
123
|
container.load(frontendApplicationModule);
|
|
105
|
-
container.load(messagingFrontendModule);
|
|
106
124
|
container.load(loggerFrontendModule);
|
|
107
125
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
return Promise.resolve(jsModule.default)
|
|
118
|
-
.then(containerModule => container.load(containerModule));
|
|
126
|
+
try {
|
|
127
|
+
${Array.from(frontendModules.values(), jsModulePath => `\
|
|
128
|
+
await load(container, ${this.importOrRequire()}('${jsModulePath}'));`).join(EOL)}
|
|
129
|
+
await start();
|
|
130
|
+
} catch (reason) {
|
|
131
|
+
console.error('Failed to start the frontend application.');
|
|
132
|
+
if (reason) {
|
|
133
|
+
console.error(reason);
|
|
134
|
+
}
|
|
119
135
|
}
|
|
120
136
|
|
|
121
137
|
function start() {
|
|
122
138
|
(window['theia'] = window['theia'] || {}).container = container;
|
|
123
139
|
return container.get(FrontendApplication).start();
|
|
124
140
|
}
|
|
125
|
-
});
|
|
141
|
+
})();
|
|
126
142
|
`;
|
|
127
143
|
}
|
|
128
144
|
|
|
145
|
+
protected importOrRequire(): string {
|
|
146
|
+
return this.options.mode !== 'production' ? 'import' : 'require';
|
|
147
|
+
}
|
|
148
|
+
|
|
129
149
|
/** HTML for secondary windows that contain an extracted widget. */
|
|
130
150
|
protected compileSecondaryWindowHtml(): string {
|
|
131
151
|
return `<!DOCTYPE html>
|
|
@@ -172,40 +192,26 @@ module.exports = preloader.preload().then(() => {
|
|
|
172
192
|
</html>`;
|
|
173
193
|
}
|
|
174
194
|
|
|
175
|
-
protected compileSecondaryModuleImports(secondaryWindowModules: Map<string, string>): string {
|
|
176
|
-
const lines = Array.from(secondaryWindowModules.entries())
|
|
177
|
-
.map(([moduleName, path]) => ` container.load(require('${path}').default);`);
|
|
178
|
-
return '\n' + lines.join('\n');
|
|
179
|
-
}
|
|
180
|
-
|
|
181
195
|
protected compileSecondaryIndexJs(secondaryWindowModules: Map<string, string>): string {
|
|
182
|
-
const compiledModuleImports = this.compileSecondaryModuleImports(secondaryWindowModules)
|
|
183
|
-
// fix the generated indentation
|
|
184
|
-
.replace(/^ /g, ' ');
|
|
185
196
|
return `\
|
|
186
197
|
// @ts-check
|
|
187
198
|
require('reflect-metadata');
|
|
188
199
|
const { Container } = require('inversify');
|
|
189
200
|
|
|
190
|
-
const preloader = require('@theia/core/lib/browser/preloader');
|
|
191
|
-
|
|
192
201
|
module.exports = Promise.resolve().then(() => {
|
|
193
202
|
const { frontendApplicationModule } = require('@theia/core/lib/browser/frontend-application-module');
|
|
194
203
|
const container = new Container();
|
|
195
204
|
container.load(frontendApplicationModule);
|
|
196
|
-
|
|
205
|
+
${Array.from(secondaryWindowModules.values(), jsModulePath => `\
|
|
206
|
+
container.load(require('${jsModulePath}').default);`).join(EOL)}
|
|
197
207
|
});
|
|
198
208
|
`;
|
|
199
209
|
}
|
|
200
210
|
|
|
201
211
|
compilePreloadJs(): string {
|
|
202
|
-
const lines = Array.from(this.pck.preloadModules)
|
|
203
|
-
.map(([moduleName, path]) => `require('${path}').preload();`);
|
|
204
|
-
const imports = '\n' + lines.join('\n');
|
|
205
|
-
|
|
206
212
|
return `\
|
|
207
213
|
// @ts-check
|
|
208
|
-
${
|
|
214
|
+
${Array.from(this.pck.preloadModules.values(), path => `require('${path}').preload();`).join(EOL)}
|
|
209
215
|
`;
|
|
210
216
|
}
|
|
211
217
|
}
|
|
@@ -90,6 +90,12 @@ const plugins = [
|
|
|
90
90
|
from: path.join(resolvePackagePath('@theia/plugin-ext', __dirname), '..', 'src', 'main', 'browser', 'webview', 'pre'),
|
|
91
91
|
to: path.resolve(__dirname, 'lib', 'webview', 'pre')
|
|
92
92
|
}`)}
|
|
93
|
+
${this.ifPackage('@theia/plugin-ext-vscode', `,
|
|
94
|
+
{
|
|
95
|
+
// copy frontend plugin host files
|
|
96
|
+
from: path.join(resolvePackagePath('@theia/plugin-ext-vscode', __dirname), '..', 'lib', 'node', 'context', 'plugin-vscode-init-fe.js'),
|
|
97
|
+
to: path.resolve(__dirname, 'lib', 'frontend', 'context', 'plugin-vscode-init-fe.js')
|
|
98
|
+
}`)}
|
|
93
99
|
]
|
|
94
100
|
}),
|
|
95
101
|
new webpack.ProvidePlugin({
|