nmtjs 0.15.1 → 0.15.3

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.
@@ -47,7 +47,6 @@ export class ApplicationApi {
47
47
  });
48
48
  assert(container.scope === Scope.Call, 'Invalid container scope, expected to be Scope.Call');
49
49
  const timeout = procedure.contract.timeout ?? this.options.timeout;
50
- const isIterableProcedure = IsStreamProcedureContract(procedure.contract);
51
50
  const streamTimeoutSignal = procedure.streamTimeout
52
51
  ? AbortSignal.timeout(procedure.streamTimeout)
53
52
  : undefined;
@@ -56,15 +55,9 @@ export class ApplicationApi {
56
55
  }
57
56
  try {
58
57
  const handle = await this.createProcedureHandler(callOptions);
59
- const result = timeout
58
+ return timeout
60
59
  ? await this.withTimeout(handle(payload), timeout)
61
60
  : await handle(payload);
62
- if (isIterableProcedure) {
63
- return this.handleIterableOutput(procedure, result);
64
- }
65
- else {
66
- return this.handleOutput(procedure, result);
67
- }
68
61
  }
69
62
  catch (error) {
70
63
  const handled = await this.handleFilters(callOptions, error);
@@ -85,9 +78,10 @@ export class ApplicationApi {
85
78
  path,
86
79
  procedure,
87
80
  });
88
- const middlewares = await this.resolveMiddlewares(callOptions);
81
+ const isIterableProcedure = IsStreamProcedureContract(procedure.contract);
82
+ const middlewares = this.resolveMiddlewares(callOptions);
89
83
  const handleProcedure = async (payload) => {
90
- const middleware = middlewares.next().value;
84
+ const middleware = (await middlewares).next().value;
91
85
  if (middleware) {
92
86
  const next = (...args) => handleProcedure(args.length === 0 ? payload : args[0]);
93
87
  return middleware.handle(middleware.ctx, callCtx, next, payload);
@@ -98,7 +92,12 @@ export class ApplicationApi {
98
92
  const { dependencies, handler } = procedure;
99
93
  const context = await container.createContext(dependencies);
100
94
  const result = await handler(context, input);
101
- return result;
95
+ if (isIterableProcedure) {
96
+ return this.handleIterableOutput(procedure, result);
97
+ }
98
+ else {
99
+ return this.handleOutput(procedure, result);
100
+ }
102
101
  }
103
102
  };
104
103
  return handleProcedure;
@@ -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":"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"}
@@ -11,6 +11,7 @@ export declare const LoggingCallMiddleware: (options?: {
11
11
  errorLevel?: "error" | "fatal" | "warn" | undefined;
12
12
  includePayload?: boolean | undefined;
13
13
  includeResponse?: boolean | undefined;
14
+ includeStreamChunks?: boolean | undefined;
14
15
  }) => import("./middlewares.ts").Middleware<{
15
16
  logger: import("@nmtjs/core").FactoryInjectable<import("pino").Logger, {
16
17
  logger: import("@nmtjs/core").LazyInjectable<import("pino").Logger, import("@nmtjs/core").Scope.Global>;
@@ -1,3 +1,4 @@
1
+ import { IsStreamProcedureContract } from '@nmtjs/contract';
1
2
  import { CoreInjectables, loggerLocalStorage } from '@nmtjs/core';
2
3
  import { createMiddleware } from './middlewares.js';
3
4
  const defaultContext = (options, payload) => {
@@ -20,22 +21,51 @@ export const LoggingCallContextMiddleware = (cb = defaultContext) => createMiddl
20
21
  });
21
22
  },
22
23
  });
23
- export const LoggingCallMiddleware = (options = { level: 'info', includePayload: true, includeResponse: true }) => createMiddleware({
24
+ export const LoggingCallMiddleware = (options = {}) => createMiddleware({
24
25
  dependencies: { logger: CoreInjectables.logger('RPC') },
25
26
  handle: async ({ logger }, call, next, payload) => {
26
- const logFn = logger[options.level || 'info'].bind(logger);
27
- const errorLogFn = logger[options.errorLevel || 'error'].bind(logger);
28
- logFn(options.includePayload
27
+ const { includePayload, includeResponse, includeStreamChunks, level, errorLevel, } = {
28
+ level: 'info',
29
+ errorLevel: 'error',
30
+ includePayload: true,
31
+ includeResponse: true,
32
+ includeStreamChunks: true,
33
+ ...options,
34
+ };
35
+ const logFn = logger[level].bind(logger);
36
+ const errorLogFn = logger[errorLevel].bind(logger);
37
+ logFn(includePayload
29
38
  ? { procedure: call.procedure.contract.name, payload: payload }
30
39
  : { procedure: call.procedure.contract.name }, 'RPC call');
40
+ const isIterableProcedure = IsStreamProcedureContract(call.procedure.contract);
31
41
  try {
32
42
  const response = await next();
33
- if (options.includeResponse) {
34
- logFn({ result: 'success', response }, 'RPC response');
43
+ if (includeResponse) {
44
+ if (isIterableProcedure) {
45
+ logFn({ result: 'success', response: 'Stream' }, 'RPC response');
46
+ }
47
+ else {
48
+ logFn({ result: 'success', response }, 'RPC response');
49
+ }
35
50
  }
36
51
  else {
37
52
  logFn({ result: 'success' }, 'RPC response');
38
53
  }
54
+ if (isIterableProcedure && includeStreamChunks) {
55
+ return async function* (...args) {
56
+ try {
57
+ for await (const chunk of response(...args)) {
58
+ logFn({ callId: call.callId, chunk }, 'RPC stream chunk');
59
+ yield chunk;
60
+ }
61
+ logFn({ callId: call.callId }, 'RPC stream end');
62
+ }
63
+ catch (error) {
64
+ errorLogFn({ callId: call.callId, error }, 'RPC stream error');
65
+ throw error;
66
+ }
67
+ };
68
+ }
39
69
  return response;
40
70
  }
41
71
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"logging.js","sourceRoot":"","sources":["../../../../src/runtime/application/api/logging.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAGjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAEnD,MAAM,cAAc,GAAG,CAAC,OAAuB,EAAE,OAAgB,EAAE,EAAE,CAAC;IACpE,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,UAAU,EAAE;YACV,EAAE,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE;YACzB,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI;YAC7B,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,SAAS;YACvC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ;YACrC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ;SACtC;KACF,CAAA;AAAA,CACF,CAAA;AAED,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,EAAE,GAG0B,cAAc,EAC1C,EAAE,CACF,gBAAgB,CAAC;IACf,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC;QACxC,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAC9C,OAAO,kBAAkB,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE,CAAC;YACxD,OAAO,IAAI,EAAE,CAAA;QAAA,CACd,CAAC,CAAA;IAAA,CACH;CACF,CAAC,CAAA;AAEJ,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,OAAO,GAKH,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,EAClE,EAAE,CACF,gBAAgB,CAAC;IACf,YAAY,EAAE,EAAE,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;IACvD,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC;QACjD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC1D,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAErE,KAAK,CACH,OAAO,CAAC,cAAc;YACpB,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE;YAC/D,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,EAC/C,UAAU,CACX,CAAA;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,EAAE,CAAA;YAC7B,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;gBAC5B,KAAK,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,cAAc,CAAC,CAAA;YACxD,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,cAAc,CAAC,CAAA;YAC9C,CAAC;YACD,OAAO,QAAQ,CAAA;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,WAAW,CAAC,CAAA;YAClC,MAAM,KAAK,CAAA;QACb,CAAC;IAAA,CACF;CACF,CAAC,CAAA"}
1
+ {"version":3,"file":"logging.js","sourceRoot":"","sources":["../../../../src/runtime/application/api/logging.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -47,16 +47,16 @@
47
47
  "oxc-resolver": "11.19.1",
48
48
  "prom-client": "git@github.com:siimon/prom-client.git#d4d2dcb366384833951e0116caca707b5f62aa5e",
49
49
  "vite": "8.0.1",
50
- "@nmtjs/common": "0.15.1",
51
- "@nmtjs/contract": "0.15.1",
52
- "@nmtjs/core": "0.15.1",
53
- "@nmtjs/gateway": "0.15.1",
54
- "@nmtjs/json-format": "0.15.1",
55
- "@nmtjs/http-transport": "0.15.1",
56
- "@nmtjs/msgpack-format": "0.15.1",
57
- "@nmtjs/type": "0.15.1",
58
- "@nmtjs/ws-transport": "0.15.1",
59
- "@nmtjs/protocol": "0.15.1"
50
+ "@nmtjs/common": "0.15.3",
51
+ "@nmtjs/core": "0.15.3",
52
+ "@nmtjs/gateway": "0.15.3",
53
+ "@nmtjs/http-transport": "0.15.3",
54
+ "@nmtjs/msgpack-format": "0.15.3",
55
+ "@nmtjs/contract": "0.15.3",
56
+ "@nmtjs/protocol": "0.15.3",
57
+ "@nmtjs/type": "0.15.3",
58
+ "@nmtjs/json-format": "0.15.3",
59
+ "@nmtjs/ws-transport": "0.15.3"
60
60
  },
61
61
  "devDependencies": {
62
62
  "@nmtjs/proxy": "1.0.0-beta.4",
@@ -79,7 +79,7 @@
79
79
  "LICENSE.md",
80
80
  "README.md"
81
81
  ],
82
- "version": "0.15.1",
82
+ "version": "0.15.3",
83
83
  "scripts": {
84
84
  "clean-build": "rm -rf ./dist"
85
85
  }
@@ -98,7 +98,6 @@ export class ApplicationApi implements GatewayApi {
98
98
  )
99
99
 
100
100
  const timeout = procedure.contract.timeout ?? this.options.timeout
101
- const isIterableProcedure = IsStreamProcedureContract(procedure.contract)
102
101
  const streamTimeoutSignal = procedure.streamTimeout
103
102
  ? AbortSignal.timeout(procedure.streamTimeout)
104
103
  : undefined
@@ -109,14 +108,9 @@ export class ApplicationApi implements GatewayApi {
109
108
 
110
109
  try {
111
110
  const handle = await this.createProcedureHandler(callOptions)
112
- const result = timeout
111
+ return timeout
113
112
  ? await this.withTimeout(handle(payload), timeout)
114
113
  : await handle(payload)
115
- if (isIterableProcedure) {
116
- return this.handleIterableOutput(procedure, result)
117
- } else {
118
- return this.handleOutput(procedure, result)
119
- }
120
114
  } catch (error) {
121
115
  const handled = await this.handleFilters(callOptions, error)
122
116
  if (handled === error && error instanceof ProtocolError === false) {
@@ -142,10 +136,11 @@ export class ApplicationApi implements GatewayApi {
142
136
  procedure,
143
137
  })
144
138
 
145
- const middlewares = await this.resolveMiddlewares(callOptions)
139
+ const isIterableProcedure = IsStreamProcedureContract(procedure.contract)
140
+ const middlewares = this.resolveMiddlewares(callOptions)
146
141
 
147
142
  const handleProcedure = async (payload: any) => {
148
- const middleware = middlewares.next().value
143
+ const middleware = (await middlewares).next().value
149
144
  if (middleware) {
150
145
  const next = (...args: any[]) =>
151
146
  handleProcedure(args.length === 0 ? payload : args[0])
@@ -156,7 +151,11 @@ export class ApplicationApi implements GatewayApi {
156
151
  const { dependencies, handler } = procedure
157
152
  const context = await container.createContext(dependencies)
158
153
  const result = await handler(context, input)
159
- return result
154
+ if (isIterableProcedure) {
155
+ return this.handleIterableOutput(procedure, result)
156
+ } else {
157
+ return this.handleOutput(procedure, result)
158
+ }
160
159
  }
161
160
  }
162
161
 
@@ -1,4 +1,5 @@
1
1
  import type { MaybePromise } from '@nmtjs/common'
2
+ import { IsStreamProcedureContract } from '@nmtjs/contract'
2
3
  import { CoreInjectables, loggerLocalStorage } from '@nmtjs/core'
3
4
 
4
5
  import type { ApiCallContext } from './types.ts'
@@ -38,28 +39,68 @@ export const LoggingCallMiddleware = (
38
39
  errorLevel?: 'warn' | 'error' | 'fatal'
39
40
  includePayload?: boolean
40
41
  includeResponse?: boolean
41
- } = { level: 'info', includePayload: true, includeResponse: true },
42
+ includeStreamChunks?: boolean
43
+ } = {},
42
44
  ) =>
43
45
  createMiddleware({
44
46
  dependencies: { logger: CoreInjectables.logger('RPC') },
45
47
  handle: async ({ logger }, call, next, payload) => {
46
- const logFn = logger[options.level || 'info'].bind(logger)
47
- const errorLogFn = logger[options.errorLevel || 'error'].bind(logger)
48
+ const {
49
+ includePayload,
50
+ includeResponse,
51
+ includeStreamChunks,
52
+ level,
53
+ errorLevel,
54
+ } = {
55
+ level: 'info' as const,
56
+ errorLevel: 'error' as const,
57
+ includePayload: true,
58
+ includeResponse: true,
59
+ includeStreamChunks: true,
60
+ ...options,
61
+ }
62
+
63
+ const logFn = logger[level].bind(logger)
64
+ const errorLogFn = logger[errorLevel].bind(logger)
48
65
 
49
66
  logFn(
50
- options.includePayload
67
+ includePayload
51
68
  ? { procedure: call.procedure.contract.name, payload: payload }
52
69
  : { procedure: call.procedure.contract.name },
53
70
  'RPC call',
54
71
  )
55
72
 
73
+ const isIterableProcedure = IsStreamProcedureContract(
74
+ call.procedure.contract,
75
+ )
76
+
56
77
  try {
57
78
  const response = await next()
58
- if (options.includeResponse) {
59
- logFn({ result: 'success', response }, 'RPC response')
79
+ if (includeResponse) {
80
+ if (isIterableProcedure) {
81
+ logFn({ result: 'success', response: 'Stream' }, 'RPC response')
82
+ } else {
83
+ logFn({ result: 'success', response }, 'RPC response')
84
+ }
60
85
  } else {
61
86
  logFn({ result: 'success' }, 'RPC response')
62
87
  }
88
+
89
+ if (isIterableProcedure && includeStreamChunks) {
90
+ return async function* (...args: any[]) {
91
+ try {
92
+ for await (const chunk of response(...args)) {
93
+ logFn({ callId: call.callId, chunk }, 'RPC stream chunk')
94
+ yield chunk
95
+ }
96
+ logFn({ callId: call.callId }, 'RPC stream end')
97
+ } catch (error) {
98
+ errorLogFn({ callId: call.callId, error }, 'RPC stream error')
99
+ throw error
100
+ }
101
+ }
102
+ }
103
+
63
104
  return response
64
105
  } catch (error) {
65
106
  errorLogFn({ error }, 'RPC error')