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.
Files changed (46) hide show
  1. package/dist/entrypoints/main.js +79 -10
  2. package/dist/entrypoints/main.js.map +1 -1
  3. package/dist/entrypoints/thread.js +129 -27
  4. package/dist/entrypoints/thread.js.map +1 -1
  5. package/dist/runtime/application/api/api.d.ts +2 -1
  6. package/dist/runtime/application/api/api.js +7 -3
  7. package/dist/runtime/application/api/api.js.map +1 -1
  8. package/dist/runtime/application/api/constants.d.ts +2 -0
  9. package/dist/runtime/application/api/constants.js +1 -0
  10. package/dist/runtime/application/api/constants.js.map +1 -1
  11. package/dist/runtime/application/api/router.d.ts +4 -1
  12. package/dist/runtime/application/api/router.js +6 -2
  13. package/dist/runtime/application/api/router.js.map +1 -1
  14. package/dist/runtime/server/applications.d.ts +4 -1
  15. package/dist/runtime/server/applications.js +38 -15
  16. package/dist/runtime/server/applications.js.map +1 -1
  17. package/dist/runtime/server/config.d.ts +4 -0
  18. package/dist/runtime/server/config.js.map +1 -1
  19. package/dist/runtime/server/pool.d.ts +4 -2
  20. package/dist/runtime/server/pool.js +91 -20
  21. package/dist/runtime/server/pool.js.map +1 -1
  22. package/dist/runtime/server/proxy.js +7 -1
  23. package/dist/runtime/server/proxy.js.map +1 -1
  24. package/dist/runtime/server/server.d.ts +17 -1
  25. package/dist/runtime/server/server.js.map +1 -1
  26. package/dist/runtime/types.d.ts +13 -3
  27. package/dist/runtime/workers/application.d.ts +2 -2
  28. package/dist/runtime/workers/application.js +10 -1
  29. package/dist/runtime/workers/application.js.map +1 -1
  30. package/dist/vite/servers/worker.d.ts +5 -2
  31. package/dist/vite/servers/worker.js +27 -0
  32. package/dist/vite/servers/worker.js.map +1 -1
  33. package/package.json +12 -12
  34. package/src/entrypoints/main.ts +103 -15
  35. package/src/entrypoints/thread.ts +145 -34
  36. package/src/runtime/application/api/api.ts +12 -3
  37. package/src/runtime/application/api/constants.ts +5 -0
  38. package/src/runtime/application/api/router.ts +13 -3
  39. package/src/runtime/server/applications.ts +53 -14
  40. package/src/runtime/server/config.ts +4 -0
  41. package/src/runtime/server/pool.ts +100 -23
  42. package/src/runtime/server/proxy.ts +7 -1
  43. package/src/runtime/server/server.ts +23 -1
  44. package/src/runtime/types.ts +16 -1
  45. package/src/runtime/workers/application.ts +16 -1
  46. package/src/vite/servers/worker.ts +37 -1
@@ -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":"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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
- 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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"}
@@ -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 result = this.options.procedures.get(procedureName);
25
- if (result)
26
- return result;
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":"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"}
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,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAElD,qBAAqB,EAAE,CAAA;AAwBvB,MAAM,OAAO,QAAS,SAAQ,aAAa;IACzC,QAAQ;QACN,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAA;IACjF,CAAC;CACF;AAED,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,IAAI,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAA;AAE9E,MAAM,OAAO,cAAc;IACN;IAAnB,YAAmB,OAAmB;QAAnB,YAAO,GAAP,OAAO,CAAY;IAAG,CAAC;IAE1C,IAAI,CAAC,aAAqB;QACxB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;QAC5D,IAAI,SAAS;YAAE,OAAO,SAAS,CAAA;QAE/B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;QAC/D,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAA;QAE7B,MAAM,QAAQ,EAAE,CAAA;IAClB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAA8B;QACvC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAA;QAE1D,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAExD,OAAO,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QAEtC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;YAChC,OAAO;YACP,SAAS;YACT,MAAM;YACN,UAAU;YACV,SAAS;YACT,IAAI;SACL,CAAC,CAAA;QAEF,MAAM,CACJ,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,EAC9B,oDAAoD,CACrD,CAAA;QAED,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAA;QAClE,MAAM,mBAAmB,GAAG,yBAAyB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QACzE,MAAM,mBAAmB,GAAG,SAAS,CAAC,aAAa;YACjD,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC;YAC9C,CAAC,CAAC,SAAS,CAAA;QAEb,IAAI,mBAAmB,EAAE,CAAC;YACxB,SAAS,CAAC,OAAO,CAAC,oBAAoB,EAAE,mBAAmB,CAAC,CAAA;QAC9D,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAA;YAC7D,MAAM,MAAM,GAAG,OAAO;gBACpB,CAAC,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;gBAClD,CAAC,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAA;YACzB,IAAI,mBAAmB,EAAE,CAAC;gBACxB,OAAO,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;YACrD,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;YAC7C,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;YAC5D,IAAI,OAAO,KAAK,KAAK,IAAI,KAAK,YAAY,aAAa,KAAK,KAAK,EAAE,CAAC;gBAClE,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;gBAC/D,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;gBACnC,MAAM,IAAI,QAAQ,CAChB,SAAS,CAAC,mBAAmB,EAC7B,uBAAuB,CACxB,CAAA;YACH,CAAC;YACD,MAAM,OAAO,CAAA;QACf,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,WAA2B;QAC9D,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,WAAW,CAAA;QAE9D,MAAM,OAAO,GAAmB,MAAM,CAAC,MAAM,CAAC;YAC5C,UAAU;YACV,SAAS;YACT,IAAI;YACJ,SAAS;SACV,CAAC,CAAA;QAEF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAA;QAE9D,MAAM,eAAe,GAAG,KAAK,EAAE,OAAY,EAAE,EAAE;YAC7C,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,KAAK,CAAA;YAC3C,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,IAAI,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE,CAC9B,eAAe,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;gBACxD,OAAO,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;YAClE,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;gBAC7C,MAAM,EAAE,YAAY,EAAE,GAAG,SAAS,CAAA;gBAClC,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,YAAY,CAAC,CAAA;gBAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;gBAClD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;gBACtD,OAAO,MAAM,CAAA;YACf,CAAC;QACH,CAAC,CAAA;QAED,OAAO,eAAe,CAAA;IACxB,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,WAA2B;QAC1D,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,WAAW,CAAA;QAClD,MAAM,WAAW,GAAG;YAClB,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW;YAC3B,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;YACpD,GAAG,SAAS,CAAC,WAAW;SACzB,CAAA;QACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;YACnC,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;YAClE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,CAAA;QAC3C,CAAC,CAAC,CACH,CAAA;QACD,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAA;IAClC,CAAC;IAEO,WAAW,CAAC,QAAa,EAAE,OAAe;QAChD,MAAM,YAAY,GAAG,QAAQ,YAAY,OAAO,IAAI,OAAO,GAAG,CAAC,CAAA;QAC/D,IAAI,CAAC,YAAY;YAAE,OAAO,QAAQ,CAAA;QAClC,OAAO,WAAW,CAChB,QAAQ,EACR,OAAO,EACP,IAAI,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAC1D,CAAA;IACH,CAAC;IAEO,KAAK,CAAC,YAAY,CACxB,WAA2B,EAC3B,OAAuB;QAEvB,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,WAAW,CAAA;QAClD,MAAM,MAAM,GAAG;YACb,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM;YACtB,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YAC/C,GAAG,SAAS,CAAC,MAAM;SACpB,CAAA;QACD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;YAC7D,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YAC5C,IAAI,MAAM,KAAK,KAAK;gBAAE,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;QAC/D,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,EAAE,SAAS,EAAkB,EAAE,KAAU;QACnE,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAC9B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBAC1C,IAAI,KAAK,YAAY,MAAM,CAAC,UAAU,EAAE,CAAC;oBACvC,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;oBAC9D,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;oBACnD,IAAI,CAAC,YAAY,IAAI,YAAY,YAAY,QAAQ,KAAK,KAAK;wBAC7D,SAAQ;oBACV,OAAO,YAAY,CAAA;gBACrB,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAEO,WAAW,CAAC,SAAuB,EAAE,OAAY;QACvD,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,YAAY,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;YACjE,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAA;YACrC,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YAC7B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,gBAAgB;oBACnC,MAAM,IAAI,QAAQ,CAChB,SAAS,CAAC,eAAe,EACzB,6BAA6B,aAAa,CAAC,KAAK,CAAC,EAAE,EACnD,KAAK,CAAC,MAAM,CACb,CAAA;gBACH,MAAM,KAAK,CAAA;YACb,CAAC;QACH,CAAC;IACH,CAAC;IAEO,oBAAoB,CAAC,SAAuB,EAAE,QAAa;QACjE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;QAClD,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAA;QAC3C,IAAI,SAAS,YAAY,IAAI,CAAC,SAAS;YACrC,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAA;QAErE,OAAO,KAAK,SAAS,CAAC,EAAE,MAAmB;YACzC,IAAI,CAAC;gBACH,IAAI,SAAS,YAAY,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;oBAChD,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;wBACnC,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;wBACvC,MAAM,OAAO,CAAA;oBACf,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,CAAC,QAAQ,CAAA;gBACjB,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,MAAM,EAAE,EAAE,CAAA;YACZ,CAAC;QACH,CAAC,CAAA;IACH,CAAC;IAEO,YAAY,CAAC,SAAuB,EAAE,QAAa;QACzD,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,YAAY,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;YAClE,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAA;YACtC,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC9B,CAAC;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;CACF"}
@@ -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[]>(...routers: Routers): RootRouter<TRouterContract<MergeRoutersRoutesContracts<ExtractRouterContracts<Routers>>, undefined>>;
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(...routers) {
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({ ...router, [kRootRouter]: true });
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":"AAQA,OAAO,EAAE,CAAC,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAKrD,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAmErD,MAAM,UAAU,gBAAgB,CAC9B,GAAG,OAAgB;IAOnB,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,EAAE,GAAG,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,CAAQ,CAAA;AACjE,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"}
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
- 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