nmtjs 0.15.0-beta.13 → 0.15.0-beta.15
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/dist/entrypoints/main.js +79 -10
- package/dist/entrypoints/main.js.map +1 -1
- package/dist/entrypoints/thread.js +129 -27
- package/dist/entrypoints/thread.js.map +1 -1
- package/dist/runtime/application/api/api.d.ts +2 -1
- package/dist/runtime/application/api/api.js +7 -3
- package/dist/runtime/application/api/api.js.map +1 -1
- package/dist/runtime/application/api/constants.d.ts +2 -0
- package/dist/runtime/application/api/constants.js +1 -0
- package/dist/runtime/application/api/constants.js.map +1 -1
- package/dist/runtime/application/api/router.d.ts +4 -1
- package/dist/runtime/application/api/router.js +6 -2
- package/dist/runtime/application/api/router.js.map +1 -1
- package/dist/runtime/server/applications.d.ts +4 -1
- package/dist/runtime/server/applications.js +38 -15
- package/dist/runtime/server/applications.js.map +1 -1
- package/dist/runtime/server/config.d.ts +4 -0
- package/dist/runtime/server/config.js.map +1 -1
- package/dist/runtime/server/pool.d.ts +4 -2
- package/dist/runtime/server/pool.js +91 -20
- package/dist/runtime/server/pool.js.map +1 -1
- package/dist/runtime/server/proxy.js +7 -1
- package/dist/runtime/server/proxy.js.map +1 -1
- package/dist/runtime/server/server.d.ts +17 -1
- package/dist/runtime/server/server.js.map +1 -1
- package/dist/runtime/types.d.ts +13 -3
- package/dist/runtime/workers/application.d.ts +2 -2
- package/dist/runtime/workers/application.js +10 -1
- package/dist/runtime/workers/application.js.map +1 -1
- package/dist/vite/servers/worker.d.ts +5 -2
- package/dist/vite/servers/worker.js +27 -0
- package/dist/vite/servers/worker.js.map +1 -1
- package/package.json +12 -12
- package/src/entrypoints/main.ts +103 -15
- package/src/entrypoints/thread.ts +145 -34
- package/src/runtime/application/api/api.ts +12 -3
- package/src/runtime/application/api/constants.ts +5 -0
- package/src/runtime/application/api/router.ts +13 -3
- package/src/runtime/server/applications.ts +53 -14
- package/src/runtime/server/config.ts +4 -0
- package/src/runtime/server/pool.ts +100 -23
- package/src/runtime/server/proxy.ts +7 -1
- package/src/runtime/server/server.ts +23 -1
- package/src/runtime/types.ts +16 -1
- package/src/runtime/workers/application.ts +16 -1
- package/src/vite/servers/worker.ts +37 -1
package/dist/entrypoints/main.js
CHANGED
|
@@ -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
|
|
27
|
-
await
|
|
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
|
|
39
|
-
if (!isServerConfig(
|
|
42
|
+
async function bootServer(configValue) {
|
|
43
|
+
if (!isServerConfig(configValue))
|
|
40
44
|
throw new InvalidServerConfigError();
|
|
41
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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":";;;;;;;;AACA,OAAO,YAAY,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/entrypoints/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
-
|
|
20
|
+
reportError(error, 'runtime', { fatal: true });
|
|
16
21
|
});
|
|
17
22
|
process.on('unhandledRejection', (error) => {
|
|
18
|
-
|
|
23
|
+
reportError(error, 'runtime', { fatal: true });
|
|
19
24
|
});
|
|
20
|
-
process.on('exit',
|
|
21
|
-
|
|
25
|
+
process.on('exit', () => {
|
|
26
|
+
void cleanup();
|
|
22
27
|
});
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
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
|
-
|
|
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
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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
|
|
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
|
-
|
|
54
|
-
|
|
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;
|
|
1
|
+
{"version":3,"file":"thread.js","sourceRoot":"","sources":["../../src/entrypoints/thread.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Container, Logger } from '@nmtjs/core';
|
|
2
2
|
import type { GatewayApi, GatewayApiCallOptions, GatewayApiCallResult, GatewayConnection } from '@nmtjs/gateway';
|
|
3
3
|
import { ProtocolError } from '@nmtjs/protocol/server';
|
|
4
|
+
import type { kDefaultProcedure as kDefaultProcedureKey } from './constants.ts';
|
|
4
5
|
import type { AnyFilter } from './filters.ts';
|
|
5
6
|
import type { AnyGuard } from './guards.ts';
|
|
6
7
|
import type { AnyMiddleware } from './middlewares.ts';
|
|
@@ -18,7 +19,7 @@ export type ApiOptions = {
|
|
|
18
19
|
timeout?: number;
|
|
19
20
|
container: Container;
|
|
20
21
|
logger: Logger;
|
|
21
|
-
procedures: Map<string, {
|
|
22
|
+
procedures: Map<string | kDefaultProcedureKey, {
|
|
22
23
|
procedure: AnyProcedure;
|
|
23
24
|
path: AnyRouter[];
|
|
24
25
|
}>;
|
|
@@ -8,6 +8,7 @@ import { ErrorCode } from '@nmtjs/protocol';
|
|
|
8
8
|
import { ProtocolError } from '@nmtjs/protocol/server';
|
|
9
9
|
import { NeemataTypeError, registerDefaultLocale, type } from '@nmtjs/type';
|
|
10
10
|
import { prettifyError } from 'zod/mini';
|
|
11
|
+
import { kDefaultProcedure } from "./constants.js";
|
|
11
12
|
registerDefaultLocale();
|
|
12
13
|
export class ApiError extends ProtocolError {
|
|
13
14
|
toString() {
|
|
@@ -21,9 +22,12 @@ export class ApplicationApi {
|
|
|
21
22
|
this.options = options;
|
|
22
23
|
}
|
|
23
24
|
find(procedureName) {
|
|
24
|
-
const
|
|
25
|
-
if (
|
|
26
|
-
return
|
|
25
|
+
const procedure = this.options.procedures.get(procedureName);
|
|
26
|
+
if (procedure)
|
|
27
|
+
return procedure;
|
|
28
|
+
const fallback = this.options.procedures.get(kDefaultProcedure);
|
|
29
|
+
if (fallback)
|
|
30
|
+
return fallback;
|
|
27
31
|
throw NotFound();
|
|
28
32
|
}
|
|
29
33
|
async call(options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../../src/runtime/application/api/api.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAA;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AASnC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAA;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AASxC,qBAAqB,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../../src/runtime/application/api/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export declare const kProcedure: unique symbol;
|
|
2
2
|
export type kProcedure = typeof kProcedure;
|
|
3
|
+
export declare const kDefaultProcedure: unique symbol;
|
|
4
|
+
export type kDefaultProcedure = typeof kDefaultProcedure;
|
|
3
5
|
export declare const kRouter: unique symbol;
|
|
4
6
|
export type kRouter = typeof kRouter;
|
|
5
7
|
export declare const kRootRouter: unique symbol;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export const kProcedure = Symbol.for('neemata:ProcedureKey');
|
|
2
|
+
export const kDefaultProcedure = Symbol.for('neemata:DefaultProcedureKey');
|
|
2
3
|
export const kRouter = Symbol.for('neemata:RouterKey');
|
|
3
4
|
export const kRootRouter = Symbol.for('neemata:RootRouterKey');
|
|
4
5
|
export const kMiddleware = Symbol.for('neemata:MiddlewareKey');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/runtime/application/api/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAkB,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;AAG3E,MAAM,CAAC,MAAM,OAAO,GAAkB,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;AAGrE,MAAM,CAAC,MAAM,WAAW,GAAkB,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;AAG7E,MAAM,CAAC,MAAM,WAAW,GAAkB,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;AAG7E,MAAM,CAAC,MAAM,MAAM,GAAkB,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;AAGnE,MAAM,CAAC,MAAM,OAAO,GAAkB,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/runtime/application/api/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAkB,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;AAG3E,MAAM,CAAC,MAAM,iBAAiB,GAAkB,MAAM,CAAC,GAAG,CACxD,6BAA6B,CAC9B,CAAA;AAGD,MAAM,CAAC,MAAM,OAAO,GAAkB,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;AAGrE,MAAM,CAAC,MAAM,WAAW,GAAkB,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;AAG7E,MAAM,CAAC,MAAM,WAAW,GAAkB,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;AAG7E,MAAM,CAAC,MAAM,MAAM,GAAkB,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;AAGnE,MAAM,CAAC,MAAM,OAAO,GAAkB,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Callback } from '@nmtjs/common';
|
|
2
2
|
import type { TAnyProcedureContract, TAnyRouterContract, TProcedureContract, TRouteContract, TRouterContract } from '@nmtjs/contract';
|
|
3
|
+
import type { AnyType } from '@nmtjs/type/any';
|
|
3
4
|
import type { AnyGuard } from './guards.ts';
|
|
4
5
|
import type { AnyMiddleware } from './middlewares.ts';
|
|
5
6
|
import type { AnyProcedure } from './procedure.ts';
|
|
@@ -15,6 +16,7 @@ export interface AnyRouter {
|
|
|
15
16
|
export interface AnyRootRouter extends AnyRouter {
|
|
16
17
|
[kRootRouter]: any;
|
|
17
18
|
contract: TAnyRouterContract<Record<string, TRouteContract>, undefined>;
|
|
19
|
+
default?: AnyProcedure<any>;
|
|
18
20
|
}
|
|
19
21
|
export interface Router<Contract extends TAnyRouterContract> extends AnyRouter {
|
|
20
22
|
contract: Contract;
|
|
@@ -28,6 +30,7 @@ export interface Router<Contract extends TAnyRouterContract> extends AnyRouter {
|
|
|
28
30
|
}
|
|
29
31
|
export interface RootRouter<Contract extends TAnyRouterContract<Record<string, TRouteContract>, undefined>> extends Router<Contract> {
|
|
30
32
|
[kRootRouter]: any;
|
|
33
|
+
default?: AnyProcedure<any>;
|
|
31
34
|
}
|
|
32
35
|
export type MergeRoutersRoutesContracts<Routers extends readonly TAnyRouterContract[]> = Routers extends [
|
|
33
36
|
infer First extends TAnyRouterContract,
|
|
@@ -45,7 +48,7 @@ export type ExtractRouterContracts<Routers extends readonly {
|
|
|
45
48
|
contract: TAnyRouterContract;
|
|
46
49
|
}[]
|
|
47
50
|
] ? [First['contract'], ...ExtractRouterContracts<Rest>] : [];
|
|
48
|
-
export declare function createRootRouter<Routers extends readonly AnyRouter[]>(
|
|
51
|
+
export declare function createRootRouter<Routers extends readonly AnyRouter[]>(routers: Routers, defaultProcedure?: AnyProcedure<TProcedureContract<AnyType, AnyType, true | undefined, string | undefined>>): RootRouter<TRouterContract<MergeRoutersRoutesContracts<ExtractRouterContracts<[...Routers]>>, undefined>>;
|
|
49
52
|
export declare function createRouter<const Options extends {
|
|
50
53
|
name?: string;
|
|
51
54
|
routes?: Record<string, AnyProcedure<any> | AnyRouter>;
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import { c, IsRouterContract } from '@nmtjs/contract';
|
|
2
2
|
import { kRootRouter, kRouter } from "./constants.js";
|
|
3
|
-
export function createRootRouter(
|
|
3
|
+
export function createRootRouter(routers, defaultProcedure) {
|
|
4
4
|
const routes = {};
|
|
5
5
|
for (const router of routers)
|
|
6
6
|
Object.assign(routes, router.routes);
|
|
7
7
|
const router = createRouter({ name: undefined, routes: routes });
|
|
8
|
-
return Object.freeze({
|
|
8
|
+
return Object.freeze({
|
|
9
|
+
...router,
|
|
10
|
+
default: defaultProcedure,
|
|
11
|
+
[kRootRouter]: true,
|
|
12
|
+
});
|
|
9
13
|
}
|
|
10
14
|
export function createRouter(params) {
|
|
11
15
|
const { name, guards, middlewares, timeout } = params;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../../../src/runtime/application/api/router.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../../../src/runtime/application/api/router.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,CAAC,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAKrD,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAqErD,MAAM,UAAU,gBAAgB,CAC9B,OAAgB,EAChB,gBAEC;IAOD,MAAM,MAAM,GAAwB,EAAE,CAAA;IACtC,KAAK,MAAM,MAAM,IAAI,OAAO;QAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;IAClE,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IAChE,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,GAAG,MAAM;QACT,OAAO,EAAE,gBAAgB;QACzB,CAAC,WAAW,CAAC,EAAE,IAAI;KACpB,CAAQ,CAAA;AACX,CAAC;AAED,MAAM,UAAU,YAAY,CAU1B,MAAe;IAef,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,MAAM,CAAA;IACrD,MAAM,MAAM,GAAwB,MAAM,CAAC,MAAM,IAAI,EAAE,CAAA;IAEvD,MAAM,eAAe,GAAQ,EAAE,CAAA;IAC/B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,eAAe,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAA;IACxC,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;IAErE,oBAAoB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAEtC,OAAO,oBAAoB,CAAC,QAAQ,EAAE;QACpC,MAAM,EAAE,MAAa;QACrB,MAAM;QACN,WAAW;QACX,OAAO;KACR,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,QAAkB,EAClB,MAWC;IAED,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAA;IAC3C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAA;IAErD,OAAO;QACL,QAAQ;QACR,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM;QACN,WAAW;QACX,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,CAAC,OAAO,CAAC,EAAE,IAAI;KAChB,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAU,EAAsB,EAAE,CACzD,OAAO,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;AAE3B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAU,EAA0B,EAAE,CACjE,OAAO,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;AAE/B,SAAS,oBAAoB,CAC3B,MAA2B,EAC3B,QAA4B;IAE5B,KAAK,MAAM,CAAC,GAAG,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACnE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAA;QACzD,IAAI,gBAAgB,CAAC,aAAa,CAAC;YACjC,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3D,CAAC;AACH,CAAC"}
|
|
@@ -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
|
-
|
|
45
|
-
return;
|
|
47
|
+
this.removeThreadUpstreams(thread);
|
|
46
48
|
const keys = [];
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
url.hostname
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
url:
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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.
|
|
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
|