@theia/application-manager 1.71.0-next.64 → 1.71.0-next.72

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.
@@ -14,5 +14,9 @@ export declare abstract class AbstractGenerator {
14
14
  protected ifMonaco(value: () => string, defaultValue?: () => string): string;
15
15
  protected ifPackage(packageName: string | string[], value: string | (() => string), defaultValue?: string | (() => string)): string;
16
16
  protected prettyStringify(object: object): string;
17
+ protected emitStartupLogger(component: string, epochLabel: string, options?: {
18
+ requirePerformance?: boolean;
19
+ }): string;
20
+ protected emitStartupLog(milestone: string): string;
17
21
  }
18
22
  //# sourceMappingURL=abstract-generator.d.ts.map
@@ -1 +1 @@
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;IAItE,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,GAAE,MAAW,GAAG,MAAM;cAIzD,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"}
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;IAItE,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,GAAE,MAAW,GAAG,MAAM;cAIzD,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;IAIjD,SAAS,CAAC,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,kBAAkB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM;IAKtH,SAAS,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;CAItD"}
@@ -53,6 +53,13 @@ class AbstractGenerator {
53
53
  prettyStringify(object) {
54
54
  return JSON.stringify(object, undefined, 4);
55
55
  }
56
+ emitStartupLogger(component, epochLabel, options) {
57
+ const perfImport = options?.requirePerformance ? 'const { performance } = require(\'perf_hooks\');\n' : '';
58
+ return `${perfImport}const startupLog = (milestone) => console.debug(\`${component}: \${milestone} [\${(performance.now() / 1000).toFixed(3)} s since ${epochLabel}]\`);`;
59
+ }
60
+ emitStartupLog(milestone) {
61
+ return `startupLog('${milestone}');`;
62
+ }
56
63
  }
57
64
  exports.AbstractGenerator = AbstractGenerator;
58
65
  //# sourceMappingURL=abstract-generator.js.map
@@ -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,+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,aAAa,CAAC,KAAa,EAAE,eAAuB,EAAE;QAC5D,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACvD,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,CAAC;YAClE,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QACvD,CAAC;aAAM,CAAC;YACJ,OAAO,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC;QAC5E,CAAC;IACL,CAAC;IAES,eAAe,CAAC,MAAc;QACpC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;CAEJ;AA5CD,8CA4CC"}
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,aAAa,CAAC,KAAa,EAAE,eAAuB,EAAE;QAC5D,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACvD,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,CAAC;YAClE,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QACvD,CAAC;aAAM,CAAC;YACJ,OAAO,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC;QAC5E,CAAC;IACL,CAAC;IAES,eAAe,CAAC,MAAc;QACpC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IAES,iBAAiB,CAAC,SAAiB,EAAE,UAAkB,EAAE,OAA0C;QACzG,MAAM,UAAU,GAAG,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,oDAAoD,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3G,OAAO,GAAG,UAAU,qDAAqD,SAAS,sEAAsE,UAAU,OAAO,CAAC;IAC9K,CAAC;IAES,cAAc,CAAC,SAAiB;QACtC,OAAO,eAAe,SAAS,KAAK,CAAC;IACzC,CAAC;CAEJ;AArDD,8CAqDC"}
@@ -1 +1 @@
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;IAa/B,SAAS,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;IA2EhF,SAAS,CAAC,aAAa,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;IAwEpE,SAAS,CAAC,WAAW,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;CAsBrE"}
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;IAa/B,SAAS,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;IAiFhF,SAAS,CAAC,aAAa,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;IAiFpE,SAAS,CAAC,WAAW,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;CAwBrE"}
@@ -35,6 +35,8 @@ class BackendGenerator extends abstract_generator_1.AbstractGenerator {
35
35
  return `// @ts-check
36
36
 
37
37
  require('@theia/core/shared/reflect-metadata');
38
+ ${this.emitStartupLogger('Electron main', 'electron main start', { requirePerformance: true })}
39
+ ${this.emitStartupLog('loading modules...')}
38
40
 
39
41
  // Workaround for https://github.com/electron/electron/issues/9225. Chrome has an issue where
40
42
  // in certain locales (e.g. PL), image metrics are wrongly computed. We explicitly set the
@@ -68,7 +70,7 @@ process.env.LC_NUMERIC = 'C';
68
70
  app.quit();
69
71
  return;
70
72
  }
71
-
73
+
72
74
  const container = new Container();
73
75
  container.load(electronMainApplicationModule);
74
76
  container.bind(ElectronMainApplicationGlobals).toConstantValue({
@@ -77,21 +79,25 @@ process.env.LC_NUMERIC = 'C';
77
79
  THEIA_FRONTEND_HTML_PATH: resolve(__dirname, '..', '..', 'lib', 'frontend', 'index.html'),
78
80
  THEIA_SECONDARY_WINDOW_HTML_PATH: resolve(__dirname, '..', '..', 'lib', 'frontend', 'secondary-window.html')
79
81
  });
80
-
82
+ ${this.emitStartupLog('container created')}
83
+
81
84
  function load(raw) {
82
85
  return Promise.resolve(raw.default).then(module =>
83
86
  container.load(module)
84
87
  );
85
88
  }
86
-
89
+
87
90
  async function start() {
91
+ ${this.emitStartupLog('resolving application')}
88
92
  const application = container.get(ElectronMainApplication);
93
+ ${this.emitStartupLog('application resolved')}
89
94
  await application.start(config);
90
95
  }
91
96
 
92
97
  try {
93
98
  ${Array.from(electronMainModules?.values() ?? [], jsModulePath => `\
94
99
  await load(require('${jsModulePath}'));`).join(os_1.EOL)}
100
+ ${this.emitStartupLog('modules loaded')}
95
101
  await start();
96
102
  } catch (reason) {
97
103
  if (typeof reason !== 'number') {
@@ -107,7 +113,9 @@ ${Array.from(electronMainModules?.values() ?? [], jsModulePath => `\
107
113
  }
108
114
  compileServer(backendModules) {
109
115
  return `// @ts-check
110
- require('reflect-metadata');${this.ifElectron(`
116
+ require('reflect-metadata');
117
+ ${this.emitStartupLogger('Backend server', 'backend process start', { requirePerformance: true })}
118
+ ${this.emitStartupLog('loading modules...')}${this.ifElectron(`
111
119
 
112
120
  // Patch electron version if missing, see https://github.com/eclipse-theia/theia/pull/7361#pullrequestreview-377065146
113
121
  if (typeof process.versions.electron === 'undefined' && typeof process.env.THEIA_ELECTRON_VERSION === 'string') {
@@ -132,6 +140,7 @@ const container = new Container();
132
140
  container.load(backendApplicationModule);
133
141
  container.load(messagingBackendModule);
134
142
  container.load(loggerBackendModule);
143
+ ${this.emitStartupLog('container created')}
135
144
 
136
145
  function defaultServeStatic(app) {
137
146
  app.use(express.static(path.resolve(__dirname, '../../lib/frontend')))
@@ -148,8 +157,13 @@ async function start(port, host, argv = process.argv) {
148
157
  container.bind(BackendApplicationServer).toConstantValue({ configure: defaultServeStatic });
149
158
  }
150
159
  let result = undefined;
151
- await container.get(CliManager).initializeCli(argv.slice(2),
152
- () => container.get(BackendApplication).configured,
160
+ await container.get(CliManager).initializeCli(argv.slice(2),
161
+ () => {
162
+ ${this.emitStartupLog('resolving application')}
163
+ const application = container.get(BackendApplication);
164
+ ${this.emitStartupLog('application resolved')}
165
+ return application.configured;
166
+ },
153
167
  async () => {
154
168
  result = container.get(BackendApplication).start(port, host);
155
169
  });
@@ -164,11 +178,12 @@ module.exports = async (port, host, argv) => {
164
178
  try {
165
179
  ${Array.from(backendModules.values(), jsModulePath => `\
166
180
  await load(require('${jsModulePath}'));`).join(os_1.EOL)}
181
+ ${this.emitStartupLog('modules loaded')}
167
182
  return await start(port, host, argv);
168
183
  } catch (error) {
169
184
  if (typeof error !== 'number') {
170
185
  console.error('Failed to start the backend application:');
171
- console.error(error);
186
+ console.error(error);
172
187
  process.exitCode = 1;
173
188
  }
174
189
  throw error;
@@ -178,6 +193,8 @@ ${Array.from(backendModules.values(), jsModulePath => `\
178
193
  }
179
194
  compileMain(backendModules) {
180
195
  return `// @ts-check
196
+ ${this.emitStartupLogger('Backend main', 'backend process start', { requirePerformance: true })}
197
+ ${this.emitStartupLog('entry point loaded')}
181
198
  const { BackendApplicationConfigProvider } = require('@theia/core/lib/node/backend-application-config-provider');
182
199
  const main = require('@theia/core/lib/node/main');
183
200
 
@@ -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,2BAAyB;AACzB,6DAAyD;AAEzD,MAAa,gBAAiB,SAAQ,sCAAiB;IAEnD,KAAK,CAAC,QAAQ;QACV,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,CAAC;YAC3B,uDAAuD;YACvD,OAAO;QACX,CAAC;QACD,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,CAAC;YACxB,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;QACzH,CAAC;IACL,CAAC;IAES,mBAAmB,CAAC,mBAAyC;QACnE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBA4BM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;+BAC1C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6BrG,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,YAAY,CAAC,EAAE,CAAC;8BACpC,YAAY,MAAM,CAAC,CAAC,IAAI,CAAC,QAAG,CAAC;;;;;;;;;;;;CAY1D,CAAC;IACE,CAAC;IAES,aAAa,CAAC,cAAmC;QACvD,OAAO;8BACe,IAAI,CAAC,UAAU,CAAC;;;;;EAK5C,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkDD,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,EAAE,CAAC;8BACxB,YAAY,MAAM,CAAC,CAAC,IAAI,CAAC,QAAG,CAAC;;;;;;;;;;;CAW1D,CAAC;IACE,CAAC;IAES,WAAW,CAAC,cAAmC;QACrD,OAAO;;;;uCAIwB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;;6BAE7D,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;;;;;;;;;;;;CAY5H,CAAC;IACE,CAAC;CAEJ;AAxLD,4CAwLC"}
1
+ {"version":3,"file":"backend-generator.js","sourceRoot":"","sources":["../../src/generator/backend-generator.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":"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;IAqFnH,SAAS,CAAC,eAAe,IAAI,MAAM;IAInC,mEAAmE;IACnE,SAAS,CAAC,0BAA0B,IAAI,MAAM;IAoC9C,SAAS,CAAC,uBAAuB,CAAC,sBAAsB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;IAgBtF,gBAAgB,IAAI,MAAM;CAM7B"}
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;IAgGnH,SAAS,CAAC,eAAe,IAAI,MAAM;IAInC,mEAAmE;IACnE,SAAS,CAAC,0BAA0B,IAAI,MAAM;IAoC9C,SAAS,CAAC,uBAAuB,CAAC,sBAAsB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;IAgBtF,gBAAgB,IAAI,MAAM;CAM7B"}
@@ -66,6 +66,8 @@ class FrontendGenerator extends abstract_generator_1.AbstractGenerator {
66
66
  return `\
67
67
  // @ts-check
68
68
  require('reflect-metadata');
69
+ ${this.emitStartupLogger('Frontend', 'frontend page start')}
70
+ ${this.emitStartupLog('loading modules...')}
69
71
  const { Container } = require('@theia/core/shared/inversify');
70
72
  const { FrontendApplicationConfigProvider } = require('@theia/core/lib/browser/frontend-application-config-provider');
71
73
 
@@ -107,30 +109,36 @@ module.exports = (async () => {
107
109
  ${this.ifBrowserOnly(`const { messagingFrontendOnlyModule } = require('@theia/core/lib/browser-only/messaging/messaging-frontend-only-module');
108
110
  container.load(messagingFrontendOnlyModule);`)}
109
111
 
112
+ ${this.emitStartupLog('container created')}
113
+
110
114
  await preload(container);
115
+ ${this.emitStartupLog('preloaded')}
111
116
 
112
117
  ${this.ifMonaco(() => `
113
118
  const { MonacoInit } = require('@theia/monaco/lib/browser/monaco-init');
114
119
  `)};
115
120
 
116
121
  const { FrontendApplication } = require('@theia/core/lib/browser');
117
- const { frontendApplicationModule } = require('@theia/core/lib/browser/frontend-application-module');
122
+ const { frontendApplicationModule } = require('@theia/core/lib/browser/frontend-application-module');
118
123
  const { loggerFrontendModule } = require('@theia/core/lib/browser/logger-frontend-module');
119
124
 
120
125
  container.load(frontendApplicationModule);
121
126
  ${this.pck.ifBrowserOnly(`const { frontendOnlyApplicationModule } = require('@theia/core/lib/browser-only/frontend-only-application-module');
122
127
  container.load(frontendOnlyApplicationModule);`)}
123
-
128
+
124
129
  container.load(loggerFrontendModule);
125
130
  ${this.ifBrowserOnly(`const { loggerFrontendOnlyModule } = require('@theia/core/lib/browser-only/logger-frontend-only-module');
126
131
  container.load(loggerFrontendOnlyModule);`)}
127
132
 
133
+ ${this.emitStartupLog('core modules loaded')}
134
+
128
135
  try {
129
136
  ${Array.from(frontendModules.values(), jsModulePath => `\
130
137
  await load(container, ${this.importOrRequire()}('${jsModulePath}'));`).join(os_1.EOL)}
131
138
  ${this.ifMonaco(() => `
132
139
  MonacoInit.init(container);
133
140
  `)};
141
+ ${this.emitStartupLog('modules loaded')}
134
142
  await start();
135
143
  } catch (reason) {
136
144
  console.error('Failed to start the frontend application.');
@@ -141,7 +149,10 @@ ${Array.from(frontendModules.values(), jsModulePath => `\
141
149
 
142
150
  function start() {
143
151
  (window['theia'] = window['theia'] || {}).container = container;
144
- return container.get(FrontendApplication).start();
152
+ ${this.emitStartupLog('resolving application')}
153
+ const application = container.get(FrontendApplication);
154
+ ${this.emitStartupLog('application resolved')}
155
+ return application.start();
145
156
  }
146
157
  })();
147
158
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"frontend-generator.js","sourceRoot":"","sources":["../../src/generator/frontend-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"frontend-generator.js","sourceRoot":"","sources":["../../src/generator/frontend-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.71.0-next.64+5f7caff6d",
3
+ "version": "1.71.0-next.72+95c8dba0e",
4
4
  "description": "Theia application manager API.",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -34,9 +34,9 @@
34
34
  "@babel/plugin-transform-runtime": "^7.29.0",
35
35
  "@babel/preset-env": "^7.29.2",
36
36
  "@electron/rebuild": "^4.0.3",
37
- "@theia/application-package": "1.71.0-next.64+5f7caff6d",
38
- "@theia/ffmpeg": "1.71.0-next.64+5f7caff6d",
39
- "@theia/native-webpack-plugin": "1.71.0-next.64+5f7caff6d",
37
+ "@theia/application-package": "1.71.0-next.72+95c8dba0e",
38
+ "@theia/ffmpeg": "1.71.0-next.72+95c8dba0e",
39
+ "@theia/native-webpack-plugin": "1.71.0-next.72+95c8dba0e",
40
40
  "@types/fs-extra": "^4.0.15",
41
41
  "@types/semver": "^7.7.1",
42
42
  "babel-loader": "^8.4.1",
@@ -78,5 +78,5 @@
78
78
  "nyc": {
79
79
  "extends": "../../configs/nyc.json"
80
80
  },
81
- "gitHead": "5f7caff6d4a136452787442612656962b5c5099e"
81
+ "gitHead": "95c8dba0ee6349c6be262ac2cf383909a3b62761"
82
82
  }
@@ -66,4 +66,13 @@ export abstract class AbstractGenerator {
66
66
  return JSON.stringify(object, undefined, 4);
67
67
  }
68
68
 
69
+ protected emitStartupLogger(component: string, epochLabel: string, options?: { requirePerformance?: boolean }): string {
70
+ const perfImport = options?.requirePerformance ? 'const { performance } = require(\'perf_hooks\');\n' : '';
71
+ return `${perfImport}const startupLog = (milestone) => console.debug(\`${component}: \${milestone} [\${(performance.now() / 1000).toFixed(3)} s since ${epochLabel}]\`);`;
72
+ }
73
+
74
+ protected emitStartupLog(milestone: string): string {
75
+ return `startupLog('${milestone}');`;
76
+ }
77
+
69
78
  }
@@ -36,6 +36,8 @@ export class BackendGenerator extends AbstractGenerator {
36
36
  return `// @ts-check
37
37
 
38
38
  require('@theia/core/shared/reflect-metadata');
39
+ ${this.emitStartupLogger('Electron main', 'electron main start', { requirePerformance: true })}
40
+ ${this.emitStartupLog('loading modules...')}
39
41
 
40
42
  // Workaround for https://github.com/electron/electron/issues/9225. Chrome has an issue where
41
43
  // in certain locales (e.g. PL), image metrics are wrongly computed. We explicitly set the
@@ -69,7 +71,7 @@ process.env.LC_NUMERIC = 'C';
69
71
  app.quit();
70
72
  return;
71
73
  }
72
-
74
+
73
75
  const container = new Container();
74
76
  container.load(electronMainApplicationModule);
75
77
  container.bind(ElectronMainApplicationGlobals).toConstantValue({
@@ -78,21 +80,25 @@ process.env.LC_NUMERIC = 'C';
78
80
  THEIA_FRONTEND_HTML_PATH: resolve(__dirname, '..', '..', 'lib', 'frontend', 'index.html'),
79
81
  THEIA_SECONDARY_WINDOW_HTML_PATH: resolve(__dirname, '..', '..', 'lib', 'frontend', 'secondary-window.html')
80
82
  });
81
-
83
+ ${this.emitStartupLog('container created')}
84
+
82
85
  function load(raw) {
83
86
  return Promise.resolve(raw.default).then(module =>
84
87
  container.load(module)
85
88
  );
86
89
  }
87
-
90
+
88
91
  async function start() {
92
+ ${this.emitStartupLog('resolving application')}
89
93
  const application = container.get(ElectronMainApplication);
94
+ ${this.emitStartupLog('application resolved')}
90
95
  await application.start(config);
91
96
  }
92
97
 
93
98
  try {
94
99
  ${Array.from(electronMainModules?.values() ?? [], jsModulePath => `\
95
100
  await load(require('${jsModulePath}'));`).join(EOL)}
101
+ ${this.emitStartupLog('modules loaded')}
96
102
  await start();
97
103
  } catch (reason) {
98
104
  if (typeof reason !== 'number') {
@@ -109,7 +115,9 @@ ${Array.from(electronMainModules?.values() ?? [], jsModulePath => `\
109
115
 
110
116
  protected compileServer(backendModules: Map<string, string>): string {
111
117
  return `// @ts-check
112
- require('reflect-metadata');${this.ifElectron(`
118
+ require('reflect-metadata');
119
+ ${this.emitStartupLogger('Backend server', 'backend process start', { requirePerformance: true })}
120
+ ${this.emitStartupLog('loading modules...')}${this.ifElectron(`
113
121
 
114
122
  // Patch electron version if missing, see https://github.com/eclipse-theia/theia/pull/7361#pullrequestreview-377065146
115
123
  if (typeof process.versions.electron === 'undefined' && typeof process.env.THEIA_ELECTRON_VERSION === 'string') {
@@ -134,6 +142,7 @@ const container = new Container();
134
142
  container.load(backendApplicationModule);
135
143
  container.load(messagingBackendModule);
136
144
  container.load(loggerBackendModule);
145
+ ${this.emitStartupLog('container created')}
137
146
 
138
147
  function defaultServeStatic(app) {
139
148
  app.use(express.static(path.resolve(__dirname, '../../lib/frontend')))
@@ -150,8 +159,13 @@ async function start(port, host, argv = process.argv) {
150
159
  container.bind(BackendApplicationServer).toConstantValue({ configure: defaultServeStatic });
151
160
  }
152
161
  let result = undefined;
153
- await container.get(CliManager).initializeCli(argv.slice(2),
154
- () => container.get(BackendApplication).configured,
162
+ await container.get(CliManager).initializeCli(argv.slice(2),
163
+ () => {
164
+ ${this.emitStartupLog('resolving application')}
165
+ const application = container.get(BackendApplication);
166
+ ${this.emitStartupLog('application resolved')}
167
+ return application.configured;
168
+ },
155
169
  async () => {
156
170
  result = container.get(BackendApplication).start(port, host);
157
171
  });
@@ -166,11 +180,12 @@ module.exports = async (port, host, argv) => {
166
180
  try {
167
181
  ${Array.from(backendModules.values(), jsModulePath => `\
168
182
  await load(require('${jsModulePath}'));`).join(EOL)}
183
+ ${this.emitStartupLog('modules loaded')}
169
184
  return await start(port, host, argv);
170
185
  } catch (error) {
171
186
  if (typeof error !== 'number') {
172
187
  console.error('Failed to start the backend application:');
173
- console.error(error);
188
+ console.error(error);
174
189
  process.exitCode = 1;
175
190
  }
176
191
  throw error;
@@ -181,6 +196,8 @@ ${Array.from(backendModules.values(), jsModulePath => `\
181
196
 
182
197
  protected compileMain(backendModules: Map<string, string>): string {
183
198
  return `// @ts-check
199
+ ${this.emitStartupLogger('Backend main', 'backend process start', { requirePerformance: true })}
200
+ ${this.emitStartupLog('entry point loaded')}
184
201
  const { BackendApplicationConfigProvider } = require('@theia/core/lib/node/backend-application-config-provider');
185
202
  const main = require('@theia/core/lib/node/main');
186
203
 
@@ -73,6 +73,8 @@ export class FrontendGenerator extends AbstractGenerator {
73
73
  return `\
74
74
  // @ts-check
75
75
  require('reflect-metadata');
76
+ ${this.emitStartupLogger('Frontend', 'frontend page start')}
77
+ ${this.emitStartupLog('loading modules...')}
76
78
  const { Container } = require('@theia/core/shared/inversify');
77
79
  const { FrontendApplicationConfigProvider } = require('@theia/core/lib/browser/frontend-application-config-provider');
78
80
 
@@ -114,30 +116,36 @@ module.exports = (async () => {
114
116
  ${this.ifBrowserOnly(`const { messagingFrontendOnlyModule } = require('@theia/core/lib/browser-only/messaging/messaging-frontend-only-module');
115
117
  container.load(messagingFrontendOnlyModule);`)}
116
118
 
119
+ ${this.emitStartupLog('container created')}
120
+
117
121
  await preload(container);
122
+ ${this.emitStartupLog('preloaded')}
118
123
 
119
124
  ${this.ifMonaco(() => `
120
125
  const { MonacoInit } = require('@theia/monaco/lib/browser/monaco-init');
121
126
  `)};
122
127
 
123
128
  const { FrontendApplication } = require('@theia/core/lib/browser');
124
- const { frontendApplicationModule } = require('@theia/core/lib/browser/frontend-application-module');
129
+ const { frontendApplicationModule } = require('@theia/core/lib/browser/frontend-application-module');
125
130
  const { loggerFrontendModule } = require('@theia/core/lib/browser/logger-frontend-module');
126
131
 
127
132
  container.load(frontendApplicationModule);
128
133
  ${this.pck.ifBrowserOnly(`const { frontendOnlyApplicationModule } = require('@theia/core/lib/browser-only/frontend-only-application-module');
129
134
  container.load(frontendOnlyApplicationModule);`)}
130
-
135
+
131
136
  container.load(loggerFrontendModule);
132
137
  ${this.ifBrowserOnly(`const { loggerFrontendOnlyModule } = require('@theia/core/lib/browser-only/logger-frontend-only-module');
133
138
  container.load(loggerFrontendOnlyModule);`)}
134
139
 
140
+ ${this.emitStartupLog('core modules loaded')}
141
+
135
142
  try {
136
143
  ${Array.from(frontendModules.values(), jsModulePath => `\
137
144
  await load(container, ${this.importOrRequire()}('${jsModulePath}'));`).join(EOL)}
138
145
  ${this.ifMonaco(() => `
139
146
  MonacoInit.init(container);
140
147
  `)};
148
+ ${this.emitStartupLog('modules loaded')}
141
149
  await start();
142
150
  } catch (reason) {
143
151
  console.error('Failed to start the frontend application.');
@@ -148,7 +156,10 @@ ${Array.from(frontendModules.values(), jsModulePath => `\
148
156
 
149
157
  function start() {
150
158
  (window['theia'] = window['theia'] || {}).container = container;
151
- return container.get(FrontendApplication).start();
159
+ ${this.emitStartupLog('resolving application')}
160
+ const application = container.get(FrontendApplication);
161
+ ${this.emitStartupLog('application resolved')}
162
+ return application.start();
152
163
  }
153
164
  })();
154
165
  `;