nmtjs 0.16.0-beta.7 → 0.16.0-beta.9
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/index.d.ts +8 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/runtime/application/api/api.js +15 -8
- package/dist/runtime/application/api/api.js.map +1 -1
- package/dist/runtime/application/api/config.d.ts +14 -0
- package/dist/runtime/application/api/config.js +6 -0
- package/dist/runtime/application/api/config.js.map +1 -0
- package/dist/runtime/application/api/index.d.ts +1 -0
- package/dist/runtime/application/api/index.js +1 -0
- package/dist/runtime/application/api/index.js.map +1 -1
- package/package.json +11 -11
- package/src/index.ts +2 -0
- package/src/runtime/application/api/api.ts +33 -8
- package/src/runtime/application/api/config.ts +18 -0
- package/src/runtime/application/api/index.ts +1 -0
package/dist/index.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export declare namespace neemata {
|
|
|
6
6
|
const server: typeof defineServer;
|
|
7
7
|
const injectables: Readonly<{
|
|
8
8
|
logger: ((label: string) => import("@nmtjs/core").FactoryInjectable<import("pino").Logger, {
|
|
9
|
-
logger: import("@nmtjs/core").LazyInjectable<import("pino").Logger>;
|
|
9
|
+
logger: import("@nmtjs/core").LazyInjectable<import("pino").Logger, import("@nmtjs/core").Scope.Global>;
|
|
10
10
|
}>) & import("@nmtjs/core").LazyInjectable<import("pino").Logger, import("@nmtjs/core").Scope.Global>;
|
|
11
11
|
inject: import("@nmtjs/core").LazyInjectable<(<T extends import("@nmtjs/core").AnyInjectable>(injectable: T, context: { [K in keyof T["dependencies"]]?: import("@nmtjs/core").ResolveInjectableType<T["dependencies"][K]> | import("@nmtjs/core").AnyInjectable<import("@nmtjs/core").ResolveInjectableType<T["dependencies"][K]>> | undefined; }, scope?: Exclude<import("@nmtjs/core").Scope, import("@nmtjs/core").Scope.Transient>) => Promise<import("@nmtjs/core").ResolveInjectableType<T>>) & {
|
|
12
12
|
explicit: <T extends import("@nmtjs/core").AnyInjectable>(injectable: T, context: { [K in keyof T["dependencies"]]?: import("@nmtjs/core").ResolveInjectableType<T["dependencies"][K]> | import("@nmtjs/core").AnyInjectable<import("@nmtjs/core").ResolveInjectableType<T["dependencies"][K]>> | undefined; }, scope?: Exclude<import("@nmtjs/core").Scope, import("@nmtjs/core").Scope.Transient>) => Promise<{
|
|
@@ -91,6 +91,13 @@ export declare namespace neemata {
|
|
|
91
91
|
const contractProcedure: typeof createContractProcedure;
|
|
92
92
|
const middleware: typeof createMiddleware;
|
|
93
93
|
const meta: typeof createMeta;
|
|
94
|
+
const config: import("@nmtjs/core").Meta<import("./runtime/index.ts").RuntimeConfig, import("@nmtjs/core").MetadataKind.STATIC, Readonly<{
|
|
95
|
+
callId: string;
|
|
96
|
+
connection: import("@nmtjs/gateway").GatewayConnection;
|
|
97
|
+
container: import("@nmtjs/core").Container;
|
|
98
|
+
path: readonly import("./runtime/index.ts").ApiMetaRouteContext[];
|
|
99
|
+
procedure: import("./runtime/index.ts").ApiMetaProcedureContext;
|
|
100
|
+
}>>;
|
|
94
101
|
const guard: typeof createGuard;
|
|
95
102
|
const filter: typeof createFilter;
|
|
96
103
|
const job: typeof createJob;
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CoreInjectables, createConsolePrettyDestination, createFactoryInjectable, createLazyInjectable, createValueInjectable, } from '@nmtjs/core';
|
|
2
2
|
import { createTransport, GatewayInjectables } from '@nmtjs/gateway';
|
|
3
|
-
import { createContractProcedure, createContractRouter, createFilter, createGuard, createHook, createJob, createJobRouterOperation, createJobsRouter, createMeta, createMiddleware, createPlugin, createProcedure, createRootRouter, createRouter, createStep, defineApplication, defineServer, RuntimeInjectables, } from './runtime/index.js';
|
|
3
|
+
import { config as runtimeConfig, createContractProcedure, createContractRouter, createFilter, createGuard, createHook, createJob, createJobRouterOperation, createJobsRouter, createMeta, createMiddleware, createPlugin, createProcedure, createRootRouter, createRouter, createStep, defineApplication, defineServer, RuntimeInjectables, } from './runtime/index.js';
|
|
4
4
|
import { createCounterMetric, createGaugeMetric, createHistogramMetric, createSummaryMetric, } from './runtime/metrics/metric.js';
|
|
5
5
|
export var neemata;
|
|
6
6
|
(function (neemata) {
|
|
@@ -29,6 +29,7 @@ export var neemata;
|
|
|
29
29
|
neemata.contractProcedure = createContractProcedure;
|
|
30
30
|
neemata.middleware = createMiddleware;
|
|
31
31
|
neemata.meta = createMeta;
|
|
32
|
+
neemata.config = runtimeConfig;
|
|
32
33
|
neemata.guard = createGuard;
|
|
33
34
|
neemata.filter = createFilter;
|
|
34
35
|
neemata.job = createJob;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,eAAe,EACf,8BAA8B,EAC9B,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAEpE,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,YAAY,EACZ,WAAW,EACX,UAAU,EACV,SAAS,EACT,wBAAwB,EACxB,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,GACnB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,6BAA6B,CAAA;AAEpC,MAAM,KAAW,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,eAAe,EACf,8BAA8B,EAC9B,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAEpE,OAAO,EACL,MAAM,IAAI,aAAa,EACvB,uBAAuB,EACvB,oBAAoB,EACpB,YAAY,EACZ,WAAW,EACX,UAAU,EACV,SAAS,EACT,wBAAwB,EACxB,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,GACnB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,6BAA6B,CAAA;AAEpC,MAAM,KAAW,OAAO,CAsCvB;AAtCD,WAAiB,OAAO;IACT,WAAG,GAAG,iBAAiB,CAAA;IACvB,cAAM,GAAG,YAAY,CAAA;IACrB,mBAAW,GAAG,MAAM,CAAC,MAAM,CAAC;QACvC,GAAG,eAAe;QAClB,GAAG,kBAAkB;QACrB,GAAG,kBAAkB;KACtB,CAAC,CAAA;IACW,cAAM,GAAG,mBAAW,CAAA;IACpB,iBAAS,GAAG,eAAe,CAAA;IAC3B,cAAM,GAAG,YAAY,CAAA;IACrB,eAAO,GAAG,MAAM,CAAC,MAAM,CAAC;QACnC,OAAO,EAAE,8BAA8B;KACxC,CAAC,CAAA;IACW,aAAK,GAAG,qBAAqB,CAAA;IAC7B,YAAI,GAAG,oBAAoB,CAAA;IAC3B,eAAO,GAAG,uBAAuB,CAAA;IACjC,kBAAU,GAAG,gBAAgB,CAAA;IAC7B,cAAM,GAAG,YAAY,CAAA;IACrB,sBAAc,GAAG,oBAAoB,CAAA;IACrC,iBAAS,GAAG,gBAAgB,CAAA;IAC5B,0BAAkB,GAAG,wBAAwB,CAAA;IAC7C,iBAAS,GAAG,eAAe,CAAA;IAC3B,yBAAiB,GAAG,uBAAuB,CAAA;IAC3C,kBAAU,GAAG,gBAAgB,CAAA;IAC7B,YAAI,GAAG,UAAU,CAAA;IACjB,cAAM,GAAG,aAAa,CAAA;IACtB,aAAK,GAAG,WAAW,CAAA;IACnB,cAAM,GAAG,YAAY,CAAA;IACrB,WAAG,GAAG,SAAS,CAAA;IACf,YAAI,GAAG,UAAU,CAAA;IACjB,YAAI,GAAG,UAAU,CAAA;IACjB,eAAO,GAAG,MAAM,CAAC,MAAM,CAAC;QACnC,OAAO,EAAE,mBAAmB;QAC5B,KAAK,EAAE,iBAAiB;QACxB,SAAS,EAAE,qBAAqB;QAChC,OAAO,EAAE,mBAAmB;KAC7B,CAAC,CAAA;AACJ,CAAC,EAtCgB,OAAO,KAAP,OAAO,QAsCvB;AAED,OAAO,EAAE,CAAC,EAAE,MAAM,iBAAiB,CAAA;AACnC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAEL,WAAW,EACX,sBAAsB,GACvB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACzE,OAAO,EAAE,CAAC,EAAE,MAAM,aAAa,CAAA;AAE/B,OAAO,EACL,QAAQ,EACR,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,SAAS,EACT,UAAU,GACX,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EAAE,OAAO,IAAI,CAAC,EAAE,CAAA;AACvB,eAAe,OAAO,CAAA"}
|
|
@@ -3,12 +3,13 @@ import { randomUUID } from 'node:crypto';
|
|
|
3
3
|
import { inspect } from 'node:util';
|
|
4
4
|
import { withTimeout } from '@nmtjs/common';
|
|
5
5
|
import { IsStreamProcedureContract } from '@nmtjs/contract';
|
|
6
|
-
import { getMetaBindingMeta, isStaticMetaBinding, Scope } from '@nmtjs/core';
|
|
6
|
+
import { getMetaBindingMeta, getStaticMetaValue, isStaticMetaBinding, Scope, } from '@nmtjs/core';
|
|
7
7
|
import { createGatewayStaticMetaView, isAsyncIterable, rpcStreamAbortSignal, } from '@nmtjs/gateway';
|
|
8
8
|
import { ErrorCode } from '@nmtjs/protocol';
|
|
9
9
|
import { ProtocolError } from '@nmtjs/protocol/server';
|
|
10
10
|
import { NeemataTypeError, registerDefaultLocale, type } from '@nmtjs/type';
|
|
11
11
|
import { prettifyError } from 'zod/mini';
|
|
12
|
+
import { config, defaultRuntimeConfig } from './config.js';
|
|
12
13
|
import { kDefaultProcedure } from './constants.js';
|
|
13
14
|
registerDefaultLocale();
|
|
14
15
|
export class ApiError extends ProtocolError {
|
|
@@ -104,10 +105,10 @@ export class ApplicationApi {
|
|
|
104
105
|
const context = await container.createContext(dependencies);
|
|
105
106
|
const result = await handler(context, input);
|
|
106
107
|
if (isIterableProcedure) {
|
|
107
|
-
return this.handleIterableOutput(procedure, result);
|
|
108
|
+
return this.handleIterableOutput(procedure, result, metaBindings.config);
|
|
108
109
|
}
|
|
109
110
|
else {
|
|
110
|
-
return this.handleOutput(procedure, result);
|
|
111
|
+
return this.handleOutput(procedure, result, metaBindings.config);
|
|
111
112
|
}
|
|
112
113
|
}
|
|
113
114
|
};
|
|
@@ -133,10 +134,12 @@ export class ApplicationApi {
|
|
|
133
134
|
beforeDecode.push(binding);
|
|
134
135
|
}
|
|
135
136
|
}
|
|
137
|
+
const runtimeConfig = getStaticMetaValue(staticBindings, config);
|
|
136
138
|
return Object.freeze({
|
|
137
139
|
static: Object.freeze(staticBindings),
|
|
138
140
|
beforeDecode: Object.freeze(beforeDecode),
|
|
139
141
|
afterDecode: Object.freeze(afterDecode),
|
|
142
|
+
config: Object.freeze({ ...defaultRuntimeConfig, ...runtimeConfig }),
|
|
140
143
|
});
|
|
141
144
|
}
|
|
142
145
|
applyStaticMetaBindings(container, bindings) {
|
|
@@ -211,7 +214,7 @@ export class ApplicationApi {
|
|
|
211
214
|
}
|
|
212
215
|
}
|
|
213
216
|
}
|
|
214
|
-
handleIterableOutput(procedure, response) {
|
|
217
|
+
handleIterableOutput(procedure, response, runtimeConfig) {
|
|
215
218
|
if (!isAsyncIterable(response))
|
|
216
219
|
throw new Error('Response is an async iterable');
|
|
217
220
|
const chunkType = procedure.contract.output;
|
|
@@ -219,10 +222,12 @@ export class ApplicationApi {
|
|
|
219
222
|
throw new Error('Stream procedure must have a defined output type');
|
|
220
223
|
return async function* (onDone) {
|
|
221
224
|
try {
|
|
222
|
-
if (
|
|
225
|
+
if (runtimeConfig.serializeOutput === false) {
|
|
226
|
+
yield* response;
|
|
227
|
+
}
|
|
228
|
+
else if (chunkType instanceof type.AnyType === false) {
|
|
223
229
|
for await (const chunk of response) {
|
|
224
|
-
|
|
225
|
-
yield encoded;
|
|
230
|
+
yield chunkType.encode(chunk);
|
|
226
231
|
}
|
|
227
232
|
}
|
|
228
233
|
else {
|
|
@@ -234,8 +239,10 @@ export class ApplicationApi {
|
|
|
234
239
|
}
|
|
235
240
|
};
|
|
236
241
|
}
|
|
237
|
-
handleOutput(procedure, response) {
|
|
242
|
+
handleOutput(procedure, response, runtimeConfig) {
|
|
238
243
|
if (procedure.contract.output instanceof type.NeverType === false) {
|
|
244
|
+
if (runtimeConfig.serializeOutput === false)
|
|
245
|
+
return response;
|
|
239
246
|
const type = procedure.contract.output;
|
|
240
247
|
return type.encode(response);
|
|
241
248
|
}
|
|
@@ -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,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAiBnC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAA;AAC3D,OAAO,
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../../src/runtime/application/api/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { MetadataKind } from '@nmtjs/core';
|
|
2
|
+
export interface RuntimeConfig {
|
|
3
|
+
serializeOutput?: boolean;
|
|
4
|
+
}
|
|
5
|
+
export declare const config: import("@nmtjs/core").Meta<RuntimeConfig, MetadataKind.STATIC, Readonly<{
|
|
6
|
+
callId: string;
|
|
7
|
+
connection: import("@nmtjs/gateway").GatewayConnection;
|
|
8
|
+
container: import("@nmtjs/core").Container;
|
|
9
|
+
path: readonly import("./meta.ts").ApiMetaRouteContext[];
|
|
10
|
+
procedure: import("./meta.ts").ApiMetaProcedureContext;
|
|
11
|
+
}>>;
|
|
12
|
+
export declare const defaultRuntimeConfig: Readonly<{
|
|
13
|
+
serializeOutput: true;
|
|
14
|
+
}>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/runtime/application/api/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAQxC,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,EAI7B,CAAA;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC;IAChD,eAAe,EAAE,IAAI;CACY,CAAC,CAAA"}
|
|
@@ -11,6 +11,7 @@ export type AnyFactoryMetaBinding<T extends AnyMeta = AnyMeta, Deps extends Depe
|
|
|
11
11
|
export type AnyMetaBinding = StaticMetaBinding | AnyFactoryMetaBinding;
|
|
12
12
|
export declare function createMeta<Value, Kind extends MetadataKind = MetadataKind>(): Meta<Value, Kind>;
|
|
13
13
|
export * from './api.ts';
|
|
14
|
+
export * from './config.ts';
|
|
14
15
|
export * from './constants.ts';
|
|
15
16
|
export * from './filters.ts';
|
|
16
17
|
export * from './guards.ts';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/runtime/application/api/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,UAAU,IAAI,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAKxE,OAAO,EAAE,YAAY,EAAE,CAAA;AAmCvB,MAAM,UAAU,UAAU;IAIxB,OAAO,cAAc,EAAoD,CAAA;AAC3E,CAAC;AAED,cAAc,UAAU,CAAA;AACxB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/runtime/application/api/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,UAAU,IAAI,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAKxE,OAAO,EAAE,YAAY,EAAE,CAAA;AAmCvB,MAAM,UAAU,UAAU;IAIxB,OAAO,cAAc,EAAoD,CAAA;AAC3E,CAAC;AAED,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA"}
|
package/package.json
CHANGED
|
@@ -42,16 +42,16 @@
|
|
|
42
42
|
"oxc-resolver": "11.19.1",
|
|
43
43
|
"prom-client": "git@github.com:siimon/prom-client.git#d4d2dcb366384833951e0116caca707b5f62aa5e",
|
|
44
44
|
"vite": "8.0.8",
|
|
45
|
-
"@nmtjs/common": "0.16.0-beta.
|
|
46
|
-
"@nmtjs/
|
|
47
|
-
"@nmtjs/gateway": "0.16.0-beta.
|
|
48
|
-
"@nmtjs/
|
|
49
|
-
"@nmtjs/
|
|
50
|
-
"@nmtjs/
|
|
51
|
-
"@nmtjs/
|
|
52
|
-
"@nmtjs/
|
|
53
|
-
"@nmtjs/
|
|
54
|
-
"@nmtjs/
|
|
45
|
+
"@nmtjs/common": "0.16.0-beta.9",
|
|
46
|
+
"@nmtjs/core": "0.16.0-beta.9",
|
|
47
|
+
"@nmtjs/gateway": "0.16.0-beta.9",
|
|
48
|
+
"@nmtjs/http-transport": "0.16.0-beta.9",
|
|
49
|
+
"@nmtjs/contract": "0.16.0-beta.9",
|
|
50
|
+
"@nmtjs/msgpack-format": "0.16.0-beta.9",
|
|
51
|
+
"@nmtjs/json-format": "0.16.0-beta.9",
|
|
52
|
+
"@nmtjs/ws-transport": "0.16.0-beta.9",
|
|
53
|
+
"@nmtjs/protocol": "0.16.0-beta.9",
|
|
54
|
+
"@nmtjs/type": "0.16.0-beta.9"
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
57
57
|
"@nmtjs/proxy": "1.0.0-beta.6",
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"LICENSE.md",
|
|
75
75
|
"README.md"
|
|
76
76
|
],
|
|
77
|
-
"version": "0.16.0-beta.
|
|
77
|
+
"version": "0.16.0-beta.9",
|
|
78
78
|
"scripts": {
|
|
79
79
|
"clean-build": "rm -rf ./dist"
|
|
80
80
|
}
|
package/src/index.ts
CHANGED
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
import { createTransport, GatewayInjectables } from '@nmtjs/gateway'
|
|
12
12
|
|
|
13
13
|
import {
|
|
14
|
+
config as runtimeConfig,
|
|
14
15
|
createContractProcedure,
|
|
15
16
|
createContractRouter,
|
|
16
17
|
createFilter,
|
|
@@ -63,6 +64,7 @@ export namespace neemata {
|
|
|
63
64
|
export const contractProcedure = createContractProcedure
|
|
64
65
|
export const middleware = createMiddleware
|
|
65
66
|
export const meta = createMeta
|
|
67
|
+
export const config = runtimeConfig
|
|
66
68
|
export const guard = createGuard
|
|
67
69
|
export const filter = createFilter
|
|
68
70
|
export const job = createJob
|
|
@@ -19,7 +19,12 @@ import type {
|
|
|
19
19
|
} from '@nmtjs/gateway'
|
|
20
20
|
import { withTimeout } from '@nmtjs/common'
|
|
21
21
|
import { IsStreamProcedureContract } from '@nmtjs/contract'
|
|
22
|
-
import {
|
|
22
|
+
import {
|
|
23
|
+
getMetaBindingMeta,
|
|
24
|
+
getStaticMetaValue,
|
|
25
|
+
isStaticMetaBinding,
|
|
26
|
+
Scope,
|
|
27
|
+
} from '@nmtjs/core'
|
|
23
28
|
import {
|
|
24
29
|
createGatewayStaticMetaView,
|
|
25
30
|
isAsyncIterable,
|
|
@@ -30,6 +35,7 @@ import { ProtocolError } from '@nmtjs/protocol/server'
|
|
|
30
35
|
import { NeemataTypeError, registerDefaultLocale, type } from '@nmtjs/type'
|
|
31
36
|
import { prettifyError } from 'zod/mini'
|
|
32
37
|
|
|
38
|
+
import type { RuntimeConfig } from './config.ts'
|
|
33
39
|
import type { kDefaultProcedure as kDefaultProcedureKey } from './constants.ts'
|
|
34
40
|
import type { AnyFilter } from './filters.ts'
|
|
35
41
|
import type { AnyGuard } from './guards.ts'
|
|
@@ -38,6 +44,7 @@ import type { AnyMiddleware } from './middlewares.ts'
|
|
|
38
44
|
import type { AnyProcedure } from './procedure.ts'
|
|
39
45
|
import type { AnyRouter } from './router.ts'
|
|
40
46
|
import type { ApiCallContext } from './types.ts'
|
|
47
|
+
import { config, defaultRuntimeConfig } from './config.ts'
|
|
41
48
|
import { kDefaultProcedure } from './constants.ts'
|
|
42
49
|
|
|
43
50
|
registerDefaultLocale()
|
|
@@ -70,6 +77,7 @@ type ResolvedMetaBindings = Readonly<{
|
|
|
70
77
|
static: readonly StaticMetaBinding[]
|
|
71
78
|
beforeDecode: readonly AnyFactoryMetaBinding[]
|
|
72
79
|
afterDecode: readonly AnyFactoryMetaBinding[]
|
|
80
|
+
config: Required<RuntimeConfig>
|
|
73
81
|
}>
|
|
74
82
|
|
|
75
83
|
export class ApiError extends ProtocolError {
|
|
@@ -206,9 +214,13 @@ export class ApplicationApi implements GatewayApi {
|
|
|
206
214
|
const context = await container.createContext(dependencies)
|
|
207
215
|
const result = await handler(context, input)
|
|
208
216
|
if (isIterableProcedure) {
|
|
209
|
-
return this.handleIterableOutput(
|
|
217
|
+
return this.handleIterableOutput(
|
|
218
|
+
procedure,
|
|
219
|
+
result,
|
|
220
|
+
metaBindings.config,
|
|
221
|
+
)
|
|
210
222
|
} else {
|
|
211
|
-
return this.handleOutput(procedure, result)
|
|
223
|
+
return this.handleOutput(procedure, result, metaBindings.config)
|
|
212
224
|
}
|
|
213
225
|
}
|
|
214
226
|
}
|
|
@@ -240,10 +252,13 @@ export class ApplicationApi implements GatewayApi {
|
|
|
240
252
|
}
|
|
241
253
|
}
|
|
242
254
|
|
|
255
|
+
const runtimeConfig = getStaticMetaValue(staticBindings, config)
|
|
256
|
+
|
|
243
257
|
return Object.freeze({
|
|
244
258
|
static: Object.freeze(staticBindings),
|
|
245
259
|
beforeDecode: Object.freeze(beforeDecode),
|
|
246
260
|
afterDecode: Object.freeze(afterDecode),
|
|
261
|
+
config: Object.freeze({ ...defaultRuntimeConfig, ...runtimeConfig }),
|
|
247
262
|
})
|
|
248
263
|
}
|
|
249
264
|
|
|
@@ -348,7 +363,11 @@ export class ApplicationApi implements GatewayApi {
|
|
|
348
363
|
}
|
|
349
364
|
}
|
|
350
365
|
|
|
351
|
-
private handleIterableOutput(
|
|
366
|
+
private handleIterableOutput(
|
|
367
|
+
procedure: AnyProcedure,
|
|
368
|
+
response: any,
|
|
369
|
+
runtimeConfig: Required<RuntimeConfig>,
|
|
370
|
+
) {
|
|
352
371
|
if (!isAsyncIterable(response))
|
|
353
372
|
throw new Error('Response is an async iterable')
|
|
354
373
|
const chunkType = procedure.contract.output
|
|
@@ -357,10 +376,11 @@ export class ApplicationApi implements GatewayApi {
|
|
|
357
376
|
|
|
358
377
|
return async function* (onDone?: () => void) {
|
|
359
378
|
try {
|
|
360
|
-
if (
|
|
379
|
+
if (runtimeConfig.serializeOutput === false) {
|
|
380
|
+
yield* response
|
|
381
|
+
} else if (chunkType instanceof type.AnyType === false) {
|
|
361
382
|
for await (const chunk of response) {
|
|
362
|
-
|
|
363
|
-
yield encoded
|
|
383
|
+
yield chunkType.encode(chunk)
|
|
364
384
|
}
|
|
365
385
|
} else {
|
|
366
386
|
yield* response
|
|
@@ -371,8 +391,13 @@ export class ApplicationApi implements GatewayApi {
|
|
|
371
391
|
}
|
|
372
392
|
}
|
|
373
393
|
|
|
374
|
-
private handleOutput(
|
|
394
|
+
private handleOutput(
|
|
395
|
+
procedure: AnyProcedure,
|
|
396
|
+
response: any,
|
|
397
|
+
runtimeConfig: Required<RuntimeConfig>,
|
|
398
|
+
) {
|
|
375
399
|
if (procedure.contract.output instanceof type.NeverType === false) {
|
|
400
|
+
if (runtimeConfig.serializeOutput === false) return response
|
|
376
401
|
const type = procedure.contract.output
|
|
377
402
|
return type.encode(response)
|
|
378
403
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { MetadataKind } from '@nmtjs/core'
|
|
2
|
+
import { createMeta } from '@nmtjs/core'
|
|
3
|
+
|
|
4
|
+
import type { ApiMetaContext } from './meta.ts'
|
|
5
|
+
|
|
6
|
+
export interface RuntimeConfig {
|
|
7
|
+
serializeOutput?: boolean
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export const config = createMeta<
|
|
11
|
+
RuntimeConfig,
|
|
12
|
+
MetadataKind.STATIC,
|
|
13
|
+
ApiMetaContext
|
|
14
|
+
>()
|
|
15
|
+
|
|
16
|
+
export const defaultRuntimeConfig = Object.freeze({
|
|
17
|
+
serializeOutput: true,
|
|
18
|
+
} satisfies Required<RuntimeConfig>)
|