nmtjs 0.15.0-beta.13 → 0.15.0-beta.14

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.
@@ -21,10 +21,12 @@ const applicationsConfig = __APPLICATIONS_CONFIG__ ? JSON.parse(__APPLICATIONS_C
21
21
  let _viteServerEvents;
22
22
  let _viteWorkerServer;
23
23
  let server;
24
+ let hasActiveWorkerError = false;
25
+ const isDev = _vite?.mode === 'development';
24
26
  if (import.meta.env.DEV && import.meta.hot) {
25
27
  import.meta.hot.accept('#server', async (module) => {
26
- await server.stop();
27
- await createServer(module?.default);
28
+ await shutdownServer();
29
+ await bootWithHandling(module?.default);
28
30
  });
29
31
  }
30
32
  if (_vite) {
@@ -33,12 +35,14 @@ if (_vite) {
33
35
  /* @vite-ignore */
34
36
  _vite.options.configPath)).then((m) => m.default);
35
37
  _viteServerEvents = new EventEmitter();
38
+ _viteServerEvents.on('worker-error', handleWorkerError);
39
+ _viteServerEvents.on('worker-ready', handleWorkerReady);
36
40
  _viteWorkerServer = await createWorkerServer(_vite.options, _vite.mode, neemataConfig, _viteServerEvents);
37
41
  }
38
- async function createServer(config) {
39
- if (!isServerConfig(config))
42
+ async function bootServer(configValue) {
43
+ if (!isServerConfig(configValue))
40
44
  throw new InvalidServerConfigError();
41
- server = new ApplicationServer(config, applicationsConfig, {
45
+ const workerConfig = {
42
46
  path: fileURLToPath(import.meta.resolve(`./thread${_ext}`)),
43
47
  workerData: { vite: _vite?.mode },
44
48
  worker: _viteServerEvents
@@ -46,28 +50,92 @@ async function createServer(config) {
46
50
  _viteServerEvents.emit('worker', worker);
47
51
  }
48
52
  : undefined,
49
- });
50
- await server.start();
53
+ events: _viteServerEvents,
54
+ };
55
+ const appServer = new ApplicationServer(configValue, applicationsConfig, workerConfig);
56
+ try {
57
+ await appServer.start();
58
+ server = appServer;
59
+ clearWorkerErrorOverlay();
60
+ }
61
+ catch (error) {
62
+ await appServer.stop().catch(() => { });
63
+ throw error;
64
+ }
65
+ }
66
+ async function bootWithHandling(configValue) {
67
+ try {
68
+ await bootServer(configValue);
69
+ }
70
+ catch (error) {
71
+ handleStartupError(error);
72
+ if (!isDev)
73
+ throw error;
74
+ }
51
75
  }
52
76
  let isTerminating = false;
53
77
  async function handleTermination() {
54
78
  if (isTerminating)
55
79
  return;
56
80
  isTerminating = true;
57
- await server?.stop();
81
+ await shutdownServer();
58
82
  _viteWorkerServer?.close();
59
83
  process.exit(0);
60
84
  }
61
85
  function handleUnexpectedError(error) {
62
86
  console.error(new Error('Unexpected Error:', { cause: error }));
63
87
  }
88
+ async function shutdownServer() {
89
+ if (!server)
90
+ return;
91
+ try {
92
+ await server.stop();
93
+ }
94
+ catch (error) {
95
+ console.error(new Error('Failed to stop application server', { cause: error }));
96
+ }
97
+ finally {
98
+ server = undefined;
99
+ }
100
+ }
101
+ function handleWorkerError(event) {
102
+ hasActiveWorkerError = true;
103
+ console.error(new Error(`Worker ${event.application} thread ${event.threadId} error`, {
104
+ cause: event.error,
105
+ }));
106
+ }
107
+ function handleWorkerReady(_) {
108
+ clearWorkerErrorOverlay();
109
+ }
110
+ function handleStartupError(error) {
111
+ const normalized = error instanceof Error ? error : new Error(String(error));
112
+ if (_viteServerEvents) {
113
+ _viteServerEvents.emit('worker-error', {
114
+ application: 'server',
115
+ threadId: -1,
116
+ error: normalized,
117
+ });
118
+ }
119
+ else {
120
+ hasActiveWorkerError = true;
121
+ console.error(new Error('Failed to start application server', { cause: normalized }));
122
+ }
123
+ }
124
+ function clearWorkerErrorOverlay() {
125
+ if (!hasActiveWorkerError)
126
+ return;
127
+ hasActiveWorkerError = false;
128
+ }
64
129
  process.once('SIGTERM', handleTermination);
65
130
  process.once('SIGINT', handleTermination);
66
131
  process.on('uncaughtException', handleUnexpectedError);
67
132
  process.on('unhandledRejection', handleUnexpectedError);
68
- await createServer(await import(
133
+ await bootWithHandling(await import(
69
134
  // @ts-expect-error
70
- '#server').then((m) => m.default));
135
+ '#server').then((m) => m.default)).catch(() => {
136
+ if (!isDev)
137
+ process.exit(1);
138
+ });
71
139
  const { format } = Intl.NumberFormat('en', {
72
140
  notation: 'compact',
73
141
  maximumFractionDigits: 2,
@@ -79,6 +147,7 @@ const printMem = () => {
79
147
  const memoryUsage = process.memoryUsage();
80
148
  console.log(`Memory Usage: RSS=${format(memoryUsage.rss)}, HeapTotal=${format(memoryUsage.heapTotal)}, HeapUsed=${format(memoryUsage.heapUsed)}, External=${format(memoryUsage.external)}, ArrayBuffers=${format(memoryUsage.arrayBuffers)}`);
81
149
  };
150
+ void printMem;
82
151
  // printMem()
83
152
  // setInterval(printMem, 5000)
84
153
  //# sourceMappingURL=main.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/entrypoints/main.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/entrypoints/main.ts"],"names":[],"mappings":";;;;;;;;AACA,OAAO,YAAY,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAQxC,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AASjE,MAAM,wBAAyB,SAAQ,KAAK;IAC1C;QACE,KAAK,CACH,6JAA6J,CAC9J,CAAA;QACD,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAA;IACxC,CAAC;CACF;AAED,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAA;AAC9E,MAAM,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AACvE,MAAM,kBAAkB,GAGpB,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;AAOtE,IAAI,iBAA2D,CAAA;AAC/D,IAAI,iBAA4C,CAAA;AAEhD,IAAI,MAAqC,CAAA;AACzC,IAAI,oBAAoB,GAAG,KAAK,CAAA;AAChC,MAAM,KAAK,GAAG,KAAK,EAAE,IAAI,KAAK,aAAa,CAAA;AAE3C,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACjD,MAAM,cAAc,EAAE,CAAA;QACtB,MAAM,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,IAAI,KAAK,EAAE,CAAC;IACV,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;IACxE,MAAM,aAAa,GAAG,MAAM,MAAM;IAChC,kBAAkB;IAClB,KAAK,CAAC,OAAO,CAAC,UAAU,EACzB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAA+C,CAAC,CAAA;IAChE,iBAAiB,GAAG,IAAI,YAAY,EAAkB,CAAA;IACtD,iBAAiB,CAAC,EAAE,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAA;IACvD,iBAAiB,CAAC,EAAE,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAA;IACvD,iBAAiB,GAAG,MAAM,kBAAkB,CAC1C,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,IAAI,EACV,aAAa,EACb,iBAAiB,CAClB,CAAA;AACH,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,WAAqC;IAC7D,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;QAAE,MAAM,IAAI,wBAAwB,EAAE,CAAA;IACtE,MAAM,YAAY,GAAG;QACnB,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;QAC3D,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;QACjC,MAAM,EAAE,iBAAiB;YACvB,CAAC,CAAC,CAAC,MAAc,EAAE,EAAE;gBACjB,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;YAC1C,CAAC;YACH,CAAC,CAAC,SAAS;QACb,MAAM,EAAE,iBAAiB;KAC1B,CAAA;IACD,MAAM,SAAS,GAAG,IAAI,iBAAiB,CACrC,WAAW,EACX,kBAAkB,EAClB,YAAY,CACb,CAAA;IAED,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,KAAK,EAAE,CAAA;QACvB,MAAM,GAAG,SAAS,CAAA;QAClB,uBAAuB,EAAE,CAAA;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QACtC,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,WAAqC;IACnE,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,WAAW,CAAC,CAAA;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,kBAAkB,CAAC,KAAK,CAAC,CAAA;QACzB,IAAI,CAAC,KAAK;YAAE,MAAM,KAAK,CAAA;IACzB,CAAC;AACH,CAAC;AAED,IAAI,aAAa,GAAG,KAAK,CAAA;AAEzB,KAAK,UAAU,iBAAiB;IAC9B,IAAI,aAAa;QAAE,OAAM;IACzB,aAAa,GAAG,IAAI,CAAA;IACpB,MAAM,cAAc,EAAE,CAAA;IACtB,iBAAiB,EAAE,KAAK,EAAE,CAAA;IAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAY;IACzC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;AACjE,CAAC;AAED,KAAK,UAAU,cAAc;IAC3B,IAAI,CAAC,MAAM;QAAE,OAAM;IACnB,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACX,IAAI,KAAK,CAAC,mCAAmC,EAAE,EAAE,KAAK,EAAE,KAAc,EAAE,CAAC,CAC1E,CAAA;IACH,CAAC;YAAS,CAAC;QACT,MAAM,GAAG,SAAS,CAAA;IACpB,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAkC;IAC3D,oBAAoB,GAAG,IAAI,CAAA;IAC3B,OAAO,CAAC,KAAK,CACX,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC,WAAW,WAAW,KAAK,CAAC,QAAQ,QAAQ,EAAE;QACtE,KAAK,EAAE,KAAK,CAAC,KAAK;KACnB,CAAC,CACH,CAAA;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,CAA8B;IACvD,uBAAuB,EAAE,CAAA;AAC3B,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,MAAM,UAAU,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IAC5E,IAAI,iBAAiB,EAAE,CAAC;QACtB,iBAAiB,CAAC,IAAI,CAAC,cAAc,EAAE;YACrC,WAAW,EAAE,QAAQ;YACrB,QAAQ,EAAE,CAAC,CAAC;YACZ,KAAK,EAAE,UAAU;SACa,CAAC,CAAA;IACnC,CAAC;SAAM,CAAC;QACN,oBAAoB,GAAG,IAAI,CAAA;QAC3B,OAAO,CAAC,KAAK,CACX,IAAI,KAAK,CAAC,oCAAoC,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CACvE,CAAA;IACH,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB;IAC9B,IAAI,CAAC,oBAAoB;QAAE,OAAM;IACjC,oBAAoB,GAAG,KAAK,CAAA;AAC9B,CAAC;AAED,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAA;AAC1C,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAA;AACzC,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,qBAAqB,CAAC,CAAA;AACtD,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,CAAA;AAEvD,MAAM,gBAAgB,CACpB,MAAM,MAAM;AACV,mBAAmB;AACnB,SAAS,CACV,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CACzB,CAAC,KAAK,CAAC,GAAG,EAAE;IACX,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAC7B,CAAC,CAAC,CAAA;AAEF,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IACzC,QAAQ,EAAE,SAAS;IACnB,qBAAqB,EAAE,CAAC;IACxB,IAAI,EAAE,MAAM;CACb,CAAC,CAAA;AAEF,MAAM,QAAQ,GAAG,GAAG,EAAE;IACpB,UAAU,CAAC,EAAE,EAAE,EAAE,CAAA;IACjB,sCAAsC;IACtC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAA;IACzC,OAAO,CAAC,GAAG,CACT,qBAAqB,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,cAAc,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,kBAAkB,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,CACjO,CAAA;AACH,CAAC,CAAA;AACD,KAAK,QAAQ,CAAA;AACb,aAAa;AACb,8BAA8B"}
@@ -11,46 +11,148 @@ import { workerData as _workerData } from 'node:worker_threads';
11
11
  const workerData = _workerData;
12
12
  const ext = new URL(import.meta.url).pathname.endsWith('.ts') ? '.ts' : '.js';
13
13
  const workerPath = fileURLToPath(import.meta.resolve(`./worker${ext}`));
14
+ const kReportedError = Symbol.for('nmtjs.worker.reported-error');
15
+ let runner;
16
+ let workerModule;
17
+ let runtime;
18
+ let runtimeStarted = false;
14
19
  process.on('uncaughtException', (error) => {
15
- console.error(new Error('Uncaught Exception:', { cause: error }));
20
+ reportError(error, 'runtime', { fatal: true });
16
21
  });
17
22
  process.on('unhandledRejection', (error) => {
18
- console.error(new Error('Unhandled Promise Rejection:', { cause: error }));
23
+ reportError(error, 'runtime', { fatal: true });
19
24
  });
20
- process.on('exit', async (code) => {
21
- await runner?.close();
25
+ process.on('exit', () => {
26
+ void cleanup();
22
27
  });
23
- let runner;
24
- let workerModule;
25
- try {
26
- if (workerData.vite) {
27
- const { createModuleRunner } = (await import("../vite/runners/worker.js"));
28
- runner = createModuleRunner(workerData.vite);
29
- workerModule = await runner.import(workerPath);
28
+ async function cleanup() {
29
+ await stopRuntime();
30
+ await closeRunner();
31
+ }
32
+ async function closeRunner() {
33
+ if (!runner)
34
+ return;
35
+ try {
36
+ await runner.close();
30
37
  }
31
- else {
38
+ catch (error) {
39
+ reportError(error, 'runtime', { fatal: false });
40
+ }
41
+ finally {
32
42
  runner = undefined;
33
- workerModule = await import(__rewriteRelativeImportExtension(
34
- /* @vite-ignore */
35
- workerPath));
36
43
  }
37
- const runtime = await workerModule.run(workerData.runtime);
38
- process.on('exit', async () => {
39
- await runtime.stop();
40
- });
44
+ }
45
+ async function stopRuntime() {
46
+ if (!runtime)
47
+ return;
48
+ try {
49
+ if (runtimeStarted) {
50
+ await runtime.stop();
51
+ }
52
+ }
53
+ catch (error) {
54
+ reportError(error, 'runtime', { fatal: false });
55
+ }
56
+ finally {
57
+ runtimeStarted = false;
58
+ }
59
+ }
60
+ function normalizeError(value) {
61
+ if (value instanceof Error)
62
+ return value;
63
+ if (typeof value === 'string')
64
+ return new Error(value);
65
+ if (value && typeof value === 'object') {
66
+ try {
67
+ return new Error(JSON.stringify(value));
68
+ }
69
+ catch { }
70
+ }
71
+ return new Error(String(value));
72
+ }
73
+ function serializeError(error, origin, fatal) {
74
+ return {
75
+ message: error.message,
76
+ name: error.name,
77
+ stack: error.stack,
78
+ origin,
79
+ fatal,
80
+ };
81
+ }
82
+ function reportError(value, origin, options = {}) {
83
+ const fatal = options.fatal ?? origin !== 'runtime';
84
+ const error = normalizeError(value);
85
+ if (!error[kReportedError]) {
86
+ try {
87
+ workerData.port.postMessage({
88
+ type: 'error',
89
+ data: serializeError(error, origin, fatal),
90
+ });
91
+ }
92
+ catch { }
93
+ console.error(new Error(`Worker thread ${origin} error`, { cause: error }));
94
+ error[kReportedError] = true;
95
+ }
96
+ return error;
97
+ }
98
+ async function loadWorkerModule() {
99
+ try {
100
+ if (workerData.vite) {
101
+ const { createModuleRunner } = (await import("../vite/runners/worker.js"));
102
+ runner = createModuleRunner(workerData.vite);
103
+ workerModule = await runner.import(workerPath);
104
+ }
105
+ else {
106
+ runner = undefined;
107
+ workerModule = await import(__rewriteRelativeImportExtension(
108
+ /* @vite-ignore */
109
+ workerPath));
110
+ }
111
+ }
112
+ catch (error) {
113
+ throw reportError(error, 'bootstrap');
114
+ }
115
+ }
116
+ async function initializeRuntime() {
117
+ try {
118
+ runtime = await workerModule.run(workerData.runtime);
119
+ }
120
+ catch (error) {
121
+ throw reportError(error, 'bootstrap');
122
+ }
41
123
  workerData.port.on('message', async (msg) => {
42
124
  if (msg.type === 'stop') {
43
- await runtime.stop();
125
+ await cleanup();
44
126
  process.exit(0);
45
127
  }
46
128
  });
47
- const hosts = (await runtime?.start()) || undefined;
48
- workerData.port.postMessage({
49
- type: 'ready',
50
- data: { hosts },
51
- });
52
129
  }
53
- catch (error) {
54
- console.error(new Error('Worker thread error:', { cause: error }));
130
+ async function startRuntime() {
131
+ if (!runtime)
132
+ return;
133
+ try {
134
+ const hosts = (await runtime.start()) || undefined;
135
+ runtimeStarted = true;
136
+ workerData.port.postMessage({
137
+ type: 'ready',
138
+ data: { hosts },
139
+ });
140
+ }
141
+ catch (error) {
142
+ throw reportError(error, 'start');
143
+ }
144
+ }
145
+ async function main() {
146
+ await loadWorkerModule();
147
+ await initializeRuntime();
148
+ await startRuntime();
55
149
  }
150
+ main().catch(async (error) => {
151
+ const normalized = error instanceof Error ? error : normalizeError(error);
152
+ if (!normalized[kReportedError]) {
153
+ reportError(normalized, 'bootstrap');
154
+ }
155
+ await cleanup();
156
+ process.exit(1);
157
+ });
56
158
  //# sourceMappingURL=thread.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"thread.js","sourceRoot":"","sources":["../../src/entrypoints/thread.ts"],"names":[],"mappings":";;;;;;;;AACA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAa/D,MAAM,UAAU,GAAG,WAA+B,CAAA;AAElD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAA;AAC7E,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC,CAAA;AAEvE,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE;IACxC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;AACnE,CAAC,CAAC,CAAA;AAEF,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,KAAK,EAAE,EAAE;IACzC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,8BAA8B,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;AAC5E,CAAC,CAAC,CAAA;AAEF,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;IAChC,MAAM,MAAM,EAAE,KAAK,EAAE,CAAA;AACvB,CAAC,CAAC,CAAA;AAEF,IAAI,MAAoB,CAAA;AACxB,IAAI,YAA0C,CAAA;AAE9C,IAAI,CAAC;IACH,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;QACpB,MAAM,EAAE,kBAAkB,EAAE,GAAG,CAAC,MAAM,MAAM,CAC1C,2BAA2B,CAC5B,CAA+C,CAAA;QAEhD,MAAM,GAAG,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QAC5C,YAAY,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IAChD,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,SAAgB,CAAA;QACzB,YAAY,GAAG,MAAM,MAAM;QACzB,kBAAkB;QAClB,UAAU,EACX,CAAA;IACH,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;IAE1D,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE;QAC5B,MAAM,OAAO,CAAC,IAAI,EAAE,CAAA;IACtB,CAAC,CAAC,CAAA;IAEF,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAC1C,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACxB,MAAM,OAAO,CAAC,IAAI,EAAE,CAAA;YACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,KAAK,GAAG,CAAC,MAAM,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,SAAS,CAAA;IAEnD,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;QAC1B,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,EAAE,KAAK,EAAE;KACY,CAAC,CAAA;AAChC,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,sBAAsB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;AACpE,CAAC"}
1
+ {"version":3,"file":"thread.js","sourceRoot":"","sources":["../../src/entrypoints/thread.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import type { Logger } from '@nmtjs/core';
3
3
  import type { ProxyableTransportType } from '@nmtjs/gateway';
4
4
  import type { ServerConfig } from './config.ts';
5
5
  import type { Thread } from './pool.ts';
6
- import type { ApplicationServerWorkerConfig } from './server.ts';
6
+ import type { ApplicationServerWorkerConfig, ApplicationWorkerErrorEvent, ApplicationWorkerReadyEvent } from './server.ts';
7
7
  import { Pool } from './pool.ts';
8
8
  export type ApplicationProxyUpstream = {
9
9
  type: ProxyableTransportType;
@@ -42,8 +42,11 @@ export declare class ApplicationServerApplications extends EventEmitter<{
42
42
  }>;
43
43
  serverConfig: ServerConfig;
44
44
  });
45
+ get appsNames(): string[];
45
46
  start(): Promise<void>;
46
47
  stop(): Promise<void>;
47
48
  protected addUpstream(application: string, key: string, upstream: ApplicationProxyUpstream): void;
48
49
  protected removeThreadUpstreams(thread: Thread): void;
50
+ protected emitWorkerReady(event: ApplicationWorkerReadyEvent): void;
51
+ protected emitWorkerError(event: ApplicationWorkerErrorEvent): void;
49
52
  }
@@ -14,6 +14,9 @@ export class ApplicationServerApplications extends EventEmitter {
14
14
  workerData: { ...this.params.workerConfig.workerData },
15
15
  });
16
16
  }
17
+ get appsNames() {
18
+ return this.params.applications;
19
+ }
17
20
  async start() {
18
21
  const { logger, applications, applicationsConfig, serverConfig } = this.params;
19
22
  for (const applicationName of applications) {
@@ -41,25 +44,38 @@ export class ApplicationServerApplications extends EventEmitter {
41
44
  },
42
45
  });
43
46
  thread.on('ready', ({ hosts }) => {
44
- if (!hosts?.length)
45
- return;
47
+ this.removeThreadUpstreams(thread);
46
48
  const keys = [];
47
- for (const host of hosts) {
48
- const url = new URL(host.url);
49
- // Convert 0.0.0.0 to 127.0.0.1 for local proxy access
50
- if (url.hostname === '0.0.0.0')
51
- url.hostname = '127.0.0.1';
52
- const upstream = {
53
- type: host.type,
54
- url: url.toString(),
55
- };
56
- const key = `${upstream.type}:${upstream.url}`;
57
- keys.push({ application: applicationName, key });
58
- this.addUpstream(applicationName, key, upstream);
49
+ const sanitizedHosts = [];
50
+ if (hosts?.length) {
51
+ for (const host of hosts) {
52
+ const url = new URL(host.url);
53
+ if (url.hostname === '0.0.0.0')
54
+ url.hostname = '127.0.0.1';
55
+ const normalizedUrl = url.toString();
56
+ sanitizedHosts.push({ type: host.type, url: normalizedUrl });
57
+ const upstream = {
58
+ type: host.type,
59
+ url: normalizedUrl,
60
+ };
61
+ const key = `${upstream.type}:${upstream.url}`;
62
+ keys.push({ application: applicationName, key });
63
+ this.addUpstream(applicationName, key, upstream);
64
+ }
59
65
  }
60
66
  this.upstreamsByThread.set(thread, keys);
67
+ this.emitWorkerReady({
68
+ application: applicationName,
69
+ threadId: thread.worker.threadId,
70
+ hosts: sanitizedHosts.length ? sanitizedHosts : undefined,
71
+ });
61
72
  });
62
- thread.once('error', () => {
73
+ thread.on('error', (error) => {
74
+ this.emitWorkerError({
75
+ application: applicationName,
76
+ threadId: thread.worker.threadId,
77
+ error,
78
+ });
63
79
  this.removeThreadUpstreams(thread);
64
80
  });
65
81
  thread.worker.once('exit', () => {
@@ -106,5 +122,12 @@ export class ApplicationServerApplications extends EventEmitter {
106
122
  }
107
123
  }
108
124
  }
125
+ emitWorkerReady(event) {
126
+ this.params.workerConfig.events?.emit('worker-ready', event);
127
+ }
128
+ emitWorkerError(event) {
129
+ this.params.logger.error(new Error(`Worker [${event.application}] thread ${event.threadId} error`, { cause: event.error }));
130
+ this.params.workerConfig.events?.emit('worker-error', event);
131
+ }
109
132
  }
110
133
  //# sourceMappingURL=applications.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"applications.js","sourceRoot":"","sources":["../../../src/runtime/server/applications.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"applications.js","sourceRoot":"","sources":["../../../src/runtime/server/applications.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { LoggingOptions } from '@nmtjs/core';
2
2
  import type { Transport } from '@nmtjs/gateway';
3
+ import type { ApplicationOptions } from '@nmtjs/proxy';
3
4
  import type { Applications } from 'nmtjs/runtime/types';
4
5
  import type { ApplicationConfig } from '../application/config.ts';
5
6
  import type { JobWorkerPool, StoreType } from '../enums.ts';
@@ -52,6 +53,9 @@ export interface ServerConfig {
52
53
  proxy?: {
53
54
  port: number;
54
55
  hostname: string;
56
+ applications: {
57
+ [K in keyof Applications]?: Omit<ApplicationOptions, 'name'>;
58
+ };
55
59
  threads?: number;
56
60
  healthChecks?: {
57
61
  interval?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/runtime/server/config.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AA6E/C,MAAM,UAAU,YAAY,CAC1B,OACkE;IAElE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,GACxE,OAAO,CAAA;IACT,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,CAAC,aAAa,CAAC,EAAE,IAAI;QACrB,YAAY;QACZ,MAAM;QACN,QAAQ;QACR,KAAK;QACL,KAAK;QACL,YAAY;QACZ,IAAI;KACI,CAAC,CAAA;AACb,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAU;IACvC,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC,aAAa,CAAC,CAAC,CAAA;AACxC,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/runtime/server/config.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAgF/C,MAAM,UAAU,YAAY,CAC1B,OACkE;IAElE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,GACxE,OAAO,CAAA;IACT,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,CAAC,aAAa,CAAC,EAAE,IAAI;QACrB,YAAY;QACZ,MAAM;QACN,QAAQ;QACR,KAAK;QACL,KAAK;QACL,YAAY;QACZ,IAAI;KACI,CAAC,CAAA;AACb,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAU;IACvC,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC,aAAa,CAAC,CAAC,CAAA;AACxC,CAAC"}
@@ -1,10 +1,10 @@
1
1
  import type { MessagePort, WorkerOptions } from 'node:worker_threads';
2
2
  import EventEmitter from 'node:events';
3
3
  import { Worker } from 'node:worker_threads';
4
- import type { JobTaskResult, ServerPortMessageTypes, ThreadPortMessageTypes, WorkerJobTask } from '../types.ts';
4
+ import type { JobTaskResult, ServerPortMessageTypes, ThreadPortMessageTypes, WorkerJobTask, WorkerThreadError } from '../types.ts';
5
5
  export type ThreadState = 'starting' | 'error' | 'terminating' | 'pending' | 'ready';
6
6
  export declare class Thread extends EventEmitter<{
7
- error: [error: Error];
7
+ error: [error: WorkerThreadError];
8
8
  ready: [ThreadPortMessageTypes['ready']];
9
9
  task: [ThreadPortMessageTypes['task']];
10
10
  terminate: [];
@@ -16,6 +16,8 @@ export declare class Thread extends EventEmitter<{
16
16
  readonly port: MessagePort;
17
17
  worker: Worker;
18
18
  state: ThreadState;
19
+ protected readyMessage?: ThreadPortMessageTypes['ready'];
20
+ protected startPromise?: Promise<void>;
19
21
  constructor(port: MessagePort, workerPath: string, workerOptions: WorkerOptions);
20
22
  start(): Promise<void>;
21
23
  stop(): Promise<void>;