@rsdk/nats.transport 5.7.0 → 5.8.0-next.1
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/events.deserializer.d.ts +4 -3
- package/dist/events.deserializer.js +2 -2
- package/dist/events.deserializer.js.map +1 -1
- package/dist/index.d.ts +2 -4
- package/dist/index.js +11 -7
- package/dist/index.js.map +1 -1
- package/dist/jetstream/constants.d.ts +5 -0
- package/dist/jetstream/constants.js +9 -0
- package/dist/jetstream/constants.js.map +1 -0
- package/dist/{metadata.decorator.d.ts → jetstream/consume.decorator.d.ts} +1 -1
- package/dist/{metadata.decorator.js → jetstream/consume.decorator.js} +2 -2
- package/dist/jetstream/consume.decorator.js.map +1 -0
- package/dist/jetstream/index.d.ts +7 -0
- package/dist/jetstream/index.js +24 -0
- package/dist/jetstream/index.js.map +1 -0
- package/dist/{nats-jetstream-errors.formatter.d.ts → jetstream/nats-jetstream-errors.formatter.d.ts} +1 -1
- package/dist/{nats-jetstream-errors.formatter.js → jetstream/nats-jetstream-errors.formatter.js} +2 -1
- package/dist/jetstream/nats-jetstream-errors.formatter.js.map +1 -0
- package/dist/jetstream/nats-jetstream-transport.module.js.map +1 -0
- package/dist/{nats-jetstream.config.d.ts → jetstream/nats-jetstream.config.d.ts} +1 -1
- package/dist/jetstream/nats-jetstream.config.js.map +1 -0
- package/dist/jetstream/nats-jetstream.headers.d.ts +10 -0
- package/dist/{nats.headers.js → jetstream/nats-jetstream.headers.js} +4 -4
- package/dist/jetstream/nats-jetstream.headers.js.map +1 -0
- package/dist/{nats-jetstream.transport.d.ts → jetstream/nats-jetstream.transport.d.ts} +1 -1
- package/dist/{nats-jetstream.transport.js → jetstream/nats-jetstream.transport.js} +5 -4
- package/dist/jetstream/nats-jetstream.transport.js.map +1 -0
- package/dist/jetstream/payload.decorator.js.map +1 -0
- package/dist/{server.d.ts → jetstream/server.d.ts} +12 -17
- package/dist/{server.js → jetstream/server.js} +38 -77
- package/dist/jetstream/server.js.map +1 -0
- package/dist/jetstream/types/consume.options.js.map +1 -0
- package/dist/jetstream/types/consumer-info.type.js.map +1 -0
- package/dist/jetstream/types/consumers-map.type.js.map +1 -0
- package/dist/{types → jetstream/types}/event-type-with-options.type.d.ts +1 -1
- package/dist/jetstream/types/event-type-with-options.type.js.map +1 -0
- package/dist/jetstream/types/index.d.ts +6 -0
- package/dist/jetstream/types/index.js +23 -0
- package/dist/jetstream/types/index.js.map +1 -0
- package/dist/jetstream/types/mapping.type.js.map +1 -0
- package/dist/jetstream/types/nats-jetstream-transport-options.type.js.map +1 -0
- package/dist/request/constants.d.ts +1 -0
- package/dist/request/constants.js +5 -0
- package/dist/request/constants.js.map +1 -0
- package/dist/request/consume-request.decorator.d.ts +3 -0
- package/dist/request/consume-request.decorator.js +10 -0
- package/dist/request/consume-request.decorator.js.map +1 -0
- package/dist/request/index.d.ts +4 -0
- package/dist/request/index.js +21 -0
- package/dist/request/index.js.map +1 -0
- package/dist/request/nats-request-errors.formatter.d.ts +7 -0
- package/dist/request/nats-request-errors.formatter.js +41 -0
- package/dist/request/nats-request-errors.formatter.js.map +1 -0
- package/dist/request/nats-request-errors.sender.d.ts +8 -0
- package/dist/request/nats-request-errors.sender.js +28 -0
- package/dist/request/nats-request-errors.sender.js.map +1 -0
- package/dist/request/nats-request-logger.interceptor.d.ts +13 -0
- package/dist/request/nats-request-logger.interceptor.js +89 -0
- package/dist/request/nats-request-logger.interceptor.js.map +1 -0
- package/dist/request/nats-request-transport.module.d.ts +2 -0
- package/dist/request/nats-request-transport.module.js +17 -0
- package/dist/request/nats-request-transport.module.js.map +1 -0
- package/dist/request/nats-request.config.d.ts +8 -0
- package/dist/request/nats-request.config.js +46 -0
- package/dist/request/nats-request.config.js.map +1 -0
- package/dist/{nats.headers.d.ts → request/nats-request.headers.d.ts} +1 -1
- package/dist/request/nats-request.headers.js +28 -0
- package/dist/request/nats-request.headers.js.map +1 -0
- package/dist/request/nats-request.transport.d.ts +22 -0
- package/dist/request/nats-request.transport.js +83 -0
- package/dist/request/nats-request.transport.js.map +1 -0
- package/dist/request/server.d.ts +59 -0
- package/dist/request/server.js +174 -0
- package/dist/request/server.js.map +1 -0
- package/dist/request/types/consume-request-options.type.d.ts +4 -0
- package/dist/request/types/consume-request-options.type.js +3 -0
- package/dist/request/types/consume-request-options.type.js.map +1 -0
- package/dist/request/types/formatted-nats-error.type.d.ts +8 -0
- package/dist/request/types/formatted-nats-error.type.js +3 -0
- package/dist/request/types/formatted-nats-error.type.js.map +1 -0
- package/dist/request/types/index.d.ts +3 -0
- package/dist/request/types/index.js +20 -0
- package/dist/request/types/index.js.map +1 -0
- package/dist/request/types/request-type-with-options.type.d.ts +6 -0
- package/dist/request/types/request-type-with-options.type.js +3 -0
- package/dist/request/types/request-type-with-options.type.js.map +1 -0
- package/package.json +6 -6
- package/src/events.deserializer.ts +8 -7
- package/src/index.ts +13 -5
- package/src/jetstream/constants.ts +6 -0
- package/src/{metadata.decorator.ts → jetstream/consume.decorator.ts} +2 -2
- package/src/jetstream/index.ts +7 -0
- package/src/{nats-jetstream-errors.formatter.ts → jetstream/nats-jetstream-errors.formatter.ts} +4 -2
- package/src/{nats-jetstream.config.ts → jetstream/nats-jetstream.config.ts} +1 -1
- package/src/{nats.headers.ts → jetstream/nats-jetstream.headers.ts} +1 -1
- package/src/{nats-jetstream.transport.ts → jetstream/nats-jetstream.transport.ts} +6 -5
- package/src/{server.ts → jetstream/server.ts} +65 -103
- package/src/{types → jetstream/types}/event-type-with-options.type.ts +1 -1
- package/src/jetstream/types/index.ts +6 -0
- package/src/{types → jetstream/types}/mapping.type.ts +4 -1
- package/src/request/constants.ts +1 -0
- package/src/request/consume-request.decorator.ts +18 -0
- package/src/request/index.ts +4 -0
- package/src/request/nats-request-errors.formatter.ts +49 -0
- package/src/request/nats-request-errors.sender.ts +39 -0
- package/src/request/nats-request-logger.interceptor.ts +89 -0
- package/src/request/nats-request-transport.module.ts +4 -0
- package/src/request/nats-request.config.ts +36 -0
- package/src/request/nats-request.headers.ts +33 -0
- package/src/request/nats-request.transport.ts +107 -0
- package/src/request/server.ts +260 -0
- package/src/request/types/consume-request-options.type.ts +5 -0
- package/src/request/types/formatted-nats-error.type.ts +9 -0
- package/src/request/types/index.ts +3 -0
- package/src/request/types/request-type-with-options.type.ts +8 -0
- package/dist/metadata.decorator.js.map +0 -1
- package/dist/nats-jetstream-errors.formatter.js.map +0 -1
- package/dist/nats-jetstream-transport.module.js.map +0 -1
- package/dist/nats-jetstream.config.js.map +0 -1
- package/dist/nats-jetstream.transport.js.map +0 -1
- package/dist/nats.headers.js.map +0 -1
- package/dist/payload.decorator.js.map +0 -1
- package/dist/server.js.map +0 -1
- package/dist/types/consume.options.js.map +0 -1
- package/dist/types/consumer-info.type.js.map +0 -1
- package/dist/types/consumers-map.type.js.map +0 -1
- package/dist/types/event-type-with-options.type.js.map +0 -1
- package/dist/types/mapping.type.js.map +0 -1
- package/dist/types/nats-jetstream-transport-options.type.js.map +0 -1
- /package/dist/{nats-jetstream-transport.module.d.ts → jetstream/nats-jetstream-transport.module.d.ts} +0 -0
- /package/dist/{nats-jetstream-transport.module.js → jetstream/nats-jetstream-transport.module.js} +0 -0
- /package/dist/{nats-jetstream.config.js → jetstream/nats-jetstream.config.js} +0 -0
- /package/dist/{payload.decorator.d.ts → jetstream/payload.decorator.d.ts} +0 -0
- /package/dist/{payload.decorator.js → jetstream/payload.decorator.js} +0 -0
- /package/dist/{types → jetstream/types}/consume.options.d.ts +0 -0
- /package/dist/{types → jetstream/types}/consume.options.js +0 -0
- /package/dist/{types → jetstream/types}/consumer-info.type.d.ts +0 -0
- /package/dist/{types → jetstream/types}/consumer-info.type.js +0 -0
- /package/dist/{types → jetstream/types}/consumers-map.type.d.ts +0 -0
- /package/dist/{types → jetstream/types}/consumers-map.type.js +0 -0
- /package/dist/{types → jetstream/types}/event-type-with-options.type.js +0 -0
- /package/dist/{types → jetstream/types}/mapping.type.d.ts +0 -0
- /package/dist/{types → jetstream/types}/mapping.type.js +0 -0
- /package/dist/{types → jetstream/types}/nats-jetstream-transport-options.type.d.ts +0 -0
- /package/dist/{types → jetstream/types}/nats-jetstream-transport-options.type.js +0 -0
- /package/src/{nats-jetstream-transport.module.ts → jetstream/nats-jetstream-transport.module.ts} +0 -0
- /package/src/{payload.decorator.ts → jetstream/payload.decorator.ts} +0 -0
- /package/src/{types → jetstream/types}/consume.options.ts +0 -0
- /package/src/{types → jetstream/types}/consumer-info.type.ts +0 -0
- /package/src/{types → jetstream/types}/consumers-map.type.ts +0 -0
- /package/src/{types → jetstream/types}/nats-jetstream-transport-options.type.ts +0 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./consume.options"), exports);
|
|
18
|
+
__exportStar(require("./consumer-info.type"), exports);
|
|
19
|
+
__exportStar(require("./event-type-with-options.type"), exports);
|
|
20
|
+
__exportStar(require("./mapping.type"), exports);
|
|
21
|
+
__exportStar(require("./nats-jetstream-transport-options.type"), exports);
|
|
22
|
+
__exportStar(require("./consumers-map.type"), exports);
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/jetstream/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,uDAAqC;AACrC,iEAA+C;AAC/C,iDAA+B;AAC/B,0EAAwD;AACxD,uDAAqC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapping.type.js","sourceRoot":"","sources":["../../../src/jetstream/types/mapping.type.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nats-jetstream-transport-options.type.js","sourceRoot":"","sources":["../../../src/jetstream/types/nats-jetstream-transport-options.type.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const NATS_REQUEST_PROTOCOL = "nats-request";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/request/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAAG,cAAc,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConsumeRequest = void 0;
|
|
4
|
+
const common_1 = require("@nestjs/common");
|
|
5
|
+
const microservices_1 = require("@nestjs/microservices");
|
|
6
|
+
const ConsumeRequest = (request, response, options) => {
|
|
7
|
+
return (0, common_1.applyDecorators)((0, microservices_1.MessagePattern)({ type: request, options: { ...options, response } }, microservices_1.Transport.NATS));
|
|
8
|
+
};
|
|
9
|
+
exports.ConsumeRequest = ConsumeRequest;
|
|
10
|
+
//# sourceMappingURL=consume-request.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consume-request.decorator.js","sourceRoot":"","sources":["../../src/request/consume-request.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAAiD;AACjD,yDAAkE;AAK3D,MAAM,cAAc,GAAG,CAC5B,OAAuB,EACvB,QAAwB,EACxB,OAAiD,EAChC,EAAE;IACnB,OAAO,IAAA,wBAAe,EACpB,IAAA,8BAAc,EACZ,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,EAAE,EACpD,yBAAS,CAAC,IAAI,CACf,CACF,CAAC;AACJ,CAAC,CAAC;AAXW,QAAA,cAAc,kBAWzB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./consume-request.decorator"), exports);
|
|
18
|
+
__exportStar(require("./nats-request.transport"), exports);
|
|
19
|
+
__exportStar(require("./types"), exports);
|
|
20
|
+
__exportStar(require("./constants"), exports);
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/request/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA4C;AAC5C,2DAAyC;AACzC,0CAAwB;AACxB,8CAA4B"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ExceptionKind, type IErrorsFormatter } from '@rsdk/core';
|
|
2
|
+
export declare class NatsRequestErrorsFormatter implements IErrorsFormatter {
|
|
3
|
+
static readonly defaultKind = ExceptionKind.UNKNOWN;
|
|
4
|
+
protocol: string;
|
|
5
|
+
match(): boolean;
|
|
6
|
+
format(ex: unknown, verboseErrors?: boolean): unknown;
|
|
7
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NatsRequestErrorsFormatter = void 0;
|
|
4
|
+
const core_1 = require("@rsdk/core");
|
|
5
|
+
const constants_1 = require("./constants");
|
|
6
|
+
class NatsRequestErrorsFormatter {
|
|
7
|
+
static defaultKind = core_1.ExceptionKind.UNKNOWN;
|
|
8
|
+
protocol = constants_1.NATS_REQUEST_PROTOCOL;
|
|
9
|
+
match() {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
format(ex, verboseErrors) {
|
|
13
|
+
if (ex instanceof core_1.PipelineException) {
|
|
14
|
+
const message = verboseErrors
|
|
15
|
+
? [
|
|
16
|
+
ex.message,
|
|
17
|
+
...core_1.PipelineException.innerMessages(ex).map((msg) => msg.replace(ex.message, '').trim().replace(/:$/, '')),
|
|
18
|
+
].join(': ')
|
|
19
|
+
: core_1.ExceptionKind[ex.kind].toString();
|
|
20
|
+
return {
|
|
21
|
+
code: ex.code,
|
|
22
|
+
message,
|
|
23
|
+
details: ex.details || {},
|
|
24
|
+
kind: ex.kind,
|
|
25
|
+
exceptionCode: ex.code.toString(),
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
const defaultExMessage = 'UNKNOWN ERROR';
|
|
29
|
+
return {
|
|
30
|
+
code: 'UNKNOWN',
|
|
31
|
+
message: verboseErrors
|
|
32
|
+
? (ex?.message ?? defaultExMessage)
|
|
33
|
+
: defaultExMessage,
|
|
34
|
+
details: ex?.details ?? {},
|
|
35
|
+
kind: ex?.kind ?? NatsRequestErrorsFormatter.defaultKind,
|
|
36
|
+
exceptionCode: ex?.code?.toString(),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.NatsRequestErrorsFormatter = NatsRequestErrorsFormatter;
|
|
41
|
+
//# sourceMappingURL=nats-request-errors.formatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nats-request-errors.formatter.js","sourceRoot":"","sources":["../../src/request/nats-request-errors.formatter.ts"],"names":[],"mappings":";;;AAAA,qCAIoB;AAEpB,2CAAoD;AAEpD,MAAa,0BAA0B;IACrC,MAAM,CAAU,WAAW,GAAG,oBAAa,CAAC,OAAO,CAAC;IACpD,QAAQ,GAAG,iCAAqB,CAAC;IAEjC,KAAK;QACH,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,CAAC,EAAW,EAAE,aAAuB;QACzC,IAAI,EAAE,YAAY,wBAAiB,EAAE,CAAC;YACpC,MAAM,OAAO,GAAG,aAAa;gBAC3B,CAAC,CAAC;oBACE,EAAE,CAAC,OAAO;oBACV,GAAG,wBAAiB,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACjD,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CACrD;iBACF,CAAC,IAAI,CAAC,IAAI,CAAC;gBACd,CAAC,CAAC,oBAAa,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YAEtC,OAAO;gBACL,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,OAAO;gBACP,OAAO,EAAE,EAAE,CAAC,OAAO,IAAI,EAAE;gBACzB,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,aAAa,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE;aAClC,CAAC;QACJ,CAAC;QAED,MAAM,gBAAgB,GAAG,eAAe,CAAC;QAEzC,OAAO;YACL,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,aAAa;gBACpB,CAAC,CAAC,CAAE,EAAU,EAAE,OAAO,IAAI,gBAAgB,CAAC;gBAC5C,CAAC,CAAC,gBAAgB;YACpB,OAAO,EAAG,EAAU,EAAE,OAAO,IAAI,EAAE;YACnC,IAAI,EAAG,EAAU,EAAE,IAAI,IAAI,0BAA0B,CAAC,WAAW;YACjE,aAAa,EAAG,EAAU,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC7C,CAAC;IACJ,CAAC;;AAvCH,gEAwCC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ArgumentsHost } from '@nestjs/common';
|
|
2
|
+
import type { IErrorsSender } from '@rsdk/core';
|
|
3
|
+
import type { EMPTY, Observable } from 'rxjs';
|
|
4
|
+
import type { FormattedNatsError } from './types';
|
|
5
|
+
export declare class NatsRequestErrorsSender implements IErrorsSender {
|
|
6
|
+
protocol: string;
|
|
7
|
+
send(_host: ArgumentsHost, ex: FormattedNatsError): Observable<any> | typeof EMPTY;
|
|
8
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NatsRequestErrorsSender = void 0;
|
|
4
|
+
const grpc_error_v1_1 = require("@rsdk/builtin-contract/dist/grpc.error.v1");
|
|
5
|
+
const nats_1 = require("nats");
|
|
6
|
+
const rxjs_1 = require("rxjs");
|
|
7
|
+
const constants_1 = require("./constants");
|
|
8
|
+
class NatsRequestErrorsSender {
|
|
9
|
+
protocol = constants_1.NATS_REQUEST_PROTOCOL;
|
|
10
|
+
send(_host, ex) {
|
|
11
|
+
const metadata = new nats_1.MsgHdrsImpl();
|
|
12
|
+
const status = grpc_error_v1_1.Status.fromPartial({
|
|
13
|
+
code: ex.kind,
|
|
14
|
+
details: ex.details,
|
|
15
|
+
message: ex.message,
|
|
16
|
+
exceptionCode: ex.exceptionCode,
|
|
17
|
+
});
|
|
18
|
+
metadata.set('nats-status-details-hex', grpc_error_v1_1.Status.encode(status).finish().toString('hex'));
|
|
19
|
+
const error = {
|
|
20
|
+
code: ex.code,
|
|
21
|
+
details: ex.message,
|
|
22
|
+
metadata,
|
|
23
|
+
};
|
|
24
|
+
return (0, rxjs_1.throwError)(() => error);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.NatsRequestErrorsSender = NatsRequestErrorsSender;
|
|
28
|
+
//# sourceMappingURL=nats-request-errors.sender.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nats-request-errors.sender.js","sourceRoot":"","sources":["../../src/request/nats-request-errors.sender.ts"],"names":[],"mappings":";;;AACA,6EAAmE;AAEnE,+BAAmC;AAEnC,+BAAkC;AAElC,2CAAoD;AAGpD,MAAa,uBAAuB;IAClC,QAAQ,GAAG,iCAAqB,CAAC;IAEjC,IAAI,CACF,KAAoB,EACpB,EAAsB;QAEtB,MAAM,QAAQ,GAAG,IAAI,kBAAW,EAAE,CAAC;QAEnC,MAAM,MAAM,GAAG,sBAAM,CAAC,WAAW,CAAC;YAChC,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,OAAO,EAAE,EAAE,CAAC,OAAO;YACnB,OAAO,EAAE,EAAE,CAAC,OAAO;YACnB,aAAa,EAAE,EAAE,CAAC,aAAa;SAChC,CAAC,CAAC;QAEH,QAAQ,CAAC,GAAG,CACV,yBAAyB,EACxB,sBAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAC3D,CAAC;QACF,MAAM,KAAK,GAAG;YACZ,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,OAAO,EAAE,EAAE,CAAC,OAAO;YACnB,QAAQ;SACT,CAAC;QAEF,OAAO,IAAA,iBAAU,EAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;CACF;AA5BD,0DA4BC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { CallHandler, ExecutionContext, NestInterceptor } from '@nestjs/common/interfaces';
|
|
2
|
+
import { ProtocolDetector } from '@rsdk/core';
|
|
3
|
+
import { ILogger } from '@rsdk/logging';
|
|
4
|
+
import type { Observable } from 'rxjs';
|
|
5
|
+
import { NatsRequestConfig } from './nats-request.config';
|
|
6
|
+
export declare class NatsRequestLoggerInterceptor implements NestInterceptor {
|
|
7
|
+
private logger;
|
|
8
|
+
private config;
|
|
9
|
+
private detector;
|
|
10
|
+
constructor(logger: ILogger, config: NatsRequestConfig, detector: ProtocolDetector);
|
|
11
|
+
intercept(context: ExecutionContext, next: CallHandler<any>): Observable<any> | Promise<Observable<any>>;
|
|
12
|
+
private getRpcPath;
|
|
13
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.NatsRequestLoggerInterceptor = void 0;
|
|
16
|
+
const core_1 = require("@rsdk/core");
|
|
17
|
+
const rxjs_1 = require("rxjs");
|
|
18
|
+
const constants_1 = require("./constants");
|
|
19
|
+
const nats_request_config_1 = require("./nats-request.config");
|
|
20
|
+
let NatsRequestLoggerInterceptor = class NatsRequestLoggerInterceptor {
|
|
21
|
+
logger;
|
|
22
|
+
config;
|
|
23
|
+
detector;
|
|
24
|
+
constructor(logger, config, detector) {
|
|
25
|
+
this.logger = logger;
|
|
26
|
+
this.config = config;
|
|
27
|
+
this.detector = detector;
|
|
28
|
+
}
|
|
29
|
+
intercept(context, next) {
|
|
30
|
+
if (!this.config.requestLogging) {
|
|
31
|
+
return next.handle();
|
|
32
|
+
}
|
|
33
|
+
const protocol = this.detector.getProtocol(context);
|
|
34
|
+
if (protocol !== constants_1.NATS_REQUEST_PROTOCOL) {
|
|
35
|
+
return next.handle();
|
|
36
|
+
}
|
|
37
|
+
const rpc = context.switchToRpc();
|
|
38
|
+
const startDate = Date.now();
|
|
39
|
+
const rpcContext = rpc.getContext();
|
|
40
|
+
const serializedCtx = rpcContext?.toJSON?.() ?? rpcContext;
|
|
41
|
+
const requestForLog = {
|
|
42
|
+
data: rpc.getData(),
|
|
43
|
+
ctx: serializedCtx,
|
|
44
|
+
};
|
|
45
|
+
const path = this.getRpcPath(context);
|
|
46
|
+
this.logger.trace(`received nats request ${path}`, {
|
|
47
|
+
request: requestForLog,
|
|
48
|
+
timestamp: startDate,
|
|
49
|
+
});
|
|
50
|
+
return next.handle().pipe((0, rxjs_1.catchError)((error) => {
|
|
51
|
+
const endDate = Date.now();
|
|
52
|
+
this.logger.trace(`handled nats request ${path} with error`, {
|
|
53
|
+
request: requestForLog,
|
|
54
|
+
startDate,
|
|
55
|
+
endDate,
|
|
56
|
+
duration: endDate - startDate,
|
|
57
|
+
error,
|
|
58
|
+
});
|
|
59
|
+
return (0, rxjs_1.throwError)(() => error);
|
|
60
|
+
}), (0, rxjs_1.tap)((response) => {
|
|
61
|
+
const endDate = Date.now();
|
|
62
|
+
this.logger.trace(`handled nats request ${path}`, {
|
|
63
|
+
request: requestForLog,
|
|
64
|
+
startDate,
|
|
65
|
+
endDate,
|
|
66
|
+
duration: endDate - startDate,
|
|
67
|
+
response,
|
|
68
|
+
});
|
|
69
|
+
}));
|
|
70
|
+
}
|
|
71
|
+
getRpcPath(context) {
|
|
72
|
+
try {
|
|
73
|
+
return context.getArgs()[1]?.args[0];
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
if (error instanceof Error) {
|
|
77
|
+
this.logger.warn(error.message, { error });
|
|
78
|
+
}
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
exports.NatsRequestLoggerInterceptor = NatsRequestLoggerInterceptor;
|
|
84
|
+
exports.NatsRequestLoggerInterceptor = NatsRequestLoggerInterceptor = __decorate([
|
|
85
|
+
__param(0, (0, core_1.InjectLogger)(NatsRequestLoggerInterceptor)),
|
|
86
|
+
__metadata("design:paramtypes", [Object, nats_request_config_1.NatsRequestConfig,
|
|
87
|
+
core_1.ProtocolDetector])
|
|
88
|
+
], NatsRequestLoggerInterceptor);
|
|
89
|
+
//# sourceMappingURL=nats-request-logger.interceptor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nats-request-logger.interceptor.js","sourceRoot":"","sources":["../../src/request/nats-request-logger.interceptor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.NatsRequestTransportModule = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
let NatsRequestTransportModule = class NatsRequestTransportModule {
|
|
12
|
+
};
|
|
13
|
+
exports.NatsRequestTransportModule = NatsRequestTransportModule;
|
|
14
|
+
exports.NatsRequestTransportModule = NatsRequestTransportModule = __decorate([
|
|
15
|
+
(0, common_1.Module)({})
|
|
16
|
+
], NatsRequestTransportModule);
|
|
17
|
+
//# sourceMappingURL=nats-request-transport.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nats-request-transport.module.js","sourceRoot":"","sources":["../../src/request/nats-request-transport.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AAGjC,IAAM,0BAA0B,GAAhC,MAAM,0BAA0B;CAAG,CAAA;AAA7B,gEAA0B;qCAA1B,0BAA0B;IADtC,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,0BAA0B,CAAG"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Config } from '@rsdk/core';
|
|
2
|
+
import { PayloadFormat } from '@rsdk/events.common';
|
|
3
|
+
export declare const NatsRequestConfigInstance: unique symbol;
|
|
4
|
+
export declare class NatsRequestConfig extends Config {
|
|
5
|
+
readonly name: string;
|
|
6
|
+
readonly defaultResponsePayloadType: PayloadFormat;
|
|
7
|
+
readonly requestLogging: boolean;
|
|
8
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.NatsRequestConfig = exports.NatsRequestConfigInstance = void 0;
|
|
13
|
+
const core_1 = require("@rsdk/core");
|
|
14
|
+
const events_common_1 = require("@rsdk/events.common");
|
|
15
|
+
exports.NatsRequestConfigInstance = Symbol('NatsRequestConfigInstance');
|
|
16
|
+
let NatsRequestConfig = class NatsRequestConfig extends core_1.Config {
|
|
17
|
+
name;
|
|
18
|
+
defaultResponsePayloadType;
|
|
19
|
+
requestLogging;
|
|
20
|
+
};
|
|
21
|
+
exports.NatsRequestConfig = NatsRequestConfig;
|
|
22
|
+
__decorate([
|
|
23
|
+
(0, core_1.Property)('NATS_REQUEST_NAME', new core_1.StringParser(), {
|
|
24
|
+
defaultValue: 'default',
|
|
25
|
+
description: 'NATS connection name',
|
|
26
|
+
}),
|
|
27
|
+
__metadata("design:type", String)
|
|
28
|
+
], NatsRequestConfig.prototype, "name", void 0);
|
|
29
|
+
__decorate([
|
|
30
|
+
(0, core_1.Property)('NATS_DEFAULT_RESPONSE_PAYLOAD_TYPE', new core_1.EnumParser(events_common_1.PayloadFormat), {
|
|
31
|
+
defaultValue: events_common_1.DEFAULT_PAYLOAD_FORMAT,
|
|
32
|
+
description: `Default payload type of response. Possible values: ${Object.values(events_common_1.PayloadFormat).join(', ')}.`,
|
|
33
|
+
}),
|
|
34
|
+
__metadata("design:type", String)
|
|
35
|
+
], NatsRequestConfig.prototype, "defaultResponsePayloadType", void 0);
|
|
36
|
+
__decorate([
|
|
37
|
+
(0, core_1.Property)('NATS_REQUEST_LOGGING', new core_1.BoolParser(), {
|
|
38
|
+
defaultValue: false,
|
|
39
|
+
description: 'Enable trace logging all requests',
|
|
40
|
+
}),
|
|
41
|
+
__metadata("design:type", Boolean)
|
|
42
|
+
], NatsRequestConfig.prototype, "requestLogging", void 0);
|
|
43
|
+
exports.NatsRequestConfig = NatsRequestConfig = __decorate([
|
|
44
|
+
(0, core_1.ConfigSection)()
|
|
45
|
+
], NatsRequestConfig);
|
|
46
|
+
//# sourceMappingURL=nats-request.config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nats-request.config.js","sourceRoot":"","sources":["../../src/request/nats-request.config.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAOoB;AACpB,uDAA4E;AAE/D,QAAA,yBAAyB,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC;AAGtE,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,aAAM;IAKlC,IAAI,CAAU;IAUd,0BAA0B,CAAiB;IAM3C,cAAc,CAAW;CACnC,CAAA;AAtBY,8CAAiB;AAKnB;IAJR,IAAA,eAAQ,EAAC,mBAAmB,EAAE,IAAI,mBAAY,EAAE,EAAE;QACjD,YAAY,EAAE,SAAS;QACvB,WAAW,EAAE,sBAAsB;KACpC,CAAC;;+CACqB;AAUd;IARR,IAAA,eAAQ,EACP,oCAAoC,EACpC,IAAI,iBAAU,CAAC,6BAAa,CAAC,EAC7B;QACE,YAAY,EAAE,sCAAsB;QACpC,WAAW,EAAE,sDAAsD,MAAM,CAAC,MAAM,CAAC,6BAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;KAC9G,CACF;;qEACmD;AAM3C;IAJR,IAAA,eAAQ,EAAC,sBAAsB,EAAE,IAAI,iBAAU,EAAE,EAAE;QAClD,YAAY,EAAE,KAAK;QACnB,WAAW,EAAE,mCAAmC;KACjD,CAAC;;yDACgC;4BArBvB,iBAAiB;IAD7B,IAAA,oBAAa,GAAE;GACH,iBAAiB,CAsB7B"}
|
|
@@ -3,7 +3,7 @@ import type { GenericHeaders } from '@rsdk/core';
|
|
|
3
3
|
/**
|
|
4
4
|
* @description хелпер для нормализованного извлечения заголовков из nats
|
|
5
5
|
*/
|
|
6
|
-
export declare class
|
|
6
|
+
export declare class NatsRequestHeaders implements GenericHeaders {
|
|
7
7
|
private readonly normalizedHeaders;
|
|
8
8
|
constructor(ctx: ExecutionContext);
|
|
9
9
|
get(key: string): string | undefined;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NatsRequestHeaders = void 0;
|
|
4
|
+
const core_1 = require("@rsdk/core");
|
|
5
|
+
const server_1 = require("./server");
|
|
6
|
+
/**
|
|
7
|
+
* @description хелпер для нормализованного извлечения заголовков из nats
|
|
8
|
+
*/
|
|
9
|
+
class NatsRequestHeaders {
|
|
10
|
+
normalizedHeaders;
|
|
11
|
+
constructor(ctx) {
|
|
12
|
+
const natsCtx = ctx.getArgByIndex(1);
|
|
13
|
+
if (!server_1.NatsRequestServer.isNatsContext(natsCtx)) {
|
|
14
|
+
throw new core_1.InputException('Unexpected call with non Nats ArgumentHost');
|
|
15
|
+
}
|
|
16
|
+
this.normalizedHeaders = Object.fromEntries(Object.entries(natsCtx.getHeaders() || {}).map(([k, v]) => [
|
|
17
|
+
Array.isArray(k)
|
|
18
|
+
? k[0].toString().toLowerCase()
|
|
19
|
+
: k.toString().toLowerCase(),
|
|
20
|
+
v,
|
|
21
|
+
]));
|
|
22
|
+
}
|
|
23
|
+
get(key) {
|
|
24
|
+
return this.normalizedHeaders[key.toLowerCase()];
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.NatsRequestHeaders = NatsRequestHeaders;
|
|
28
|
+
//# sourceMappingURL=nats-request.headers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nats-request.headers.js","sourceRoot":"","sources":["../../src/request/nats-request.headers.ts"],"names":[],"mappings":";;;AAEA,qCAA4C;AAE5C,qCAA6C;AAE7C;;GAEG;AACH,MAAa,kBAAkB;IACZ,iBAAiB,CAAyB;IAE3D,YAAY,GAAqB;QAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAErC,IAAI,CAAC,0BAAiB,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,qBAAc,CAAC,4CAA4C,CAAC,CAAC;QACzE,CAAC;QAED,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,WAAW,CACzC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;YACzD,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;gBACd,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE;gBAC/B,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE;YAC9B,CAAC;SACF,CAAC,CACH,CAAC;IACJ,CAAC;IAED,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IACnD,CAAC;CACF;AAvBD,gDAuBC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ArgumentsHost, ExecutionContext } from '@nestjs/common';
|
|
2
|
+
import type { CustomStrategy } from '@nestjs/microservices';
|
|
3
|
+
import { type ConfigContext, type GenericHeaders, type IErrorsFormatter, type IErrorsSender, type IErrorsTransformer, type IMicroserviceTransport, type NestModuleDefinitions } from '@rsdk/core';
|
|
4
|
+
import type { ConnectionOptions } from 'nats';
|
|
5
|
+
export declare class NatsRequestTransport implements IMicroserviceTransport {
|
|
6
|
+
private readonly options?;
|
|
7
|
+
private readonly logger;
|
|
8
|
+
private config;
|
|
9
|
+
private name;
|
|
10
|
+
private responsePayloadType;
|
|
11
|
+
constructor(options?: ConnectionOptions | undefined);
|
|
12
|
+
extractHeaders(ctx: ExecutionContext): GenericHeaders;
|
|
13
|
+
getProtocol(): string;
|
|
14
|
+
matchByContext(ctx: ArgumentsHost): boolean;
|
|
15
|
+
getErrorsFormatter(): IErrorsFormatter;
|
|
16
|
+
getErrorsSender(): IErrorsSender;
|
|
17
|
+
getErrorTransformers(): IErrorsTransformer[];
|
|
18
|
+
modules(): NestModuleDefinitions;
|
|
19
|
+
createMicroserviceOptions(): CustomStrategy;
|
|
20
|
+
init(configContext: ConfigContext): void;
|
|
21
|
+
onStart(): void;
|
|
22
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NatsRequestTransport = void 0;
|
|
4
|
+
const core_1 = require("@nestjs/core");
|
|
5
|
+
const core_2 = require("@rsdk/core");
|
|
6
|
+
const events_common_1 = require("@rsdk/events.common");
|
|
7
|
+
const logging_1 = require("@rsdk/logging");
|
|
8
|
+
const nats_common_1 = require("@rsdk/nats.common");
|
|
9
|
+
const constants_1 = require("./constants");
|
|
10
|
+
const nats_request_config_1 = require("./nats-request.config");
|
|
11
|
+
const nats_request_headers_1 = require("./nats-request.headers");
|
|
12
|
+
const nats_request_errors_formatter_1 = require("./nats-request-errors.formatter");
|
|
13
|
+
const nats_request_errors_sender_1 = require("./nats-request-errors.sender");
|
|
14
|
+
const nats_request_logger_interceptor_1 = require("./nats-request-logger.interceptor");
|
|
15
|
+
const nats_request_transport_module_1 = require("./nats-request-transport.module");
|
|
16
|
+
const server_1 = require("./server");
|
|
17
|
+
class NatsRequestTransport {
|
|
18
|
+
options;
|
|
19
|
+
logger = logging_1.LoggerFactory.create(NatsRequestTransport);
|
|
20
|
+
config = null;
|
|
21
|
+
name = 'nats-request-unknown';
|
|
22
|
+
responsePayloadType = events_common_1.PayloadFormat.JSON;
|
|
23
|
+
constructor(options) {
|
|
24
|
+
this.options = options;
|
|
25
|
+
}
|
|
26
|
+
extractHeaders(ctx) {
|
|
27
|
+
return new nats_request_headers_1.NatsRequestHeaders(ctx);
|
|
28
|
+
}
|
|
29
|
+
getProtocol() {
|
|
30
|
+
return constants_1.NATS_REQUEST_PROTOCOL;
|
|
31
|
+
}
|
|
32
|
+
matchByContext(ctx) {
|
|
33
|
+
const natsCtx = ctx.getArgByIndex(1);
|
|
34
|
+
return server_1.NatsRequestServer.isNatsContext(natsCtx);
|
|
35
|
+
}
|
|
36
|
+
getErrorsFormatter() {
|
|
37
|
+
return new nats_request_errors_formatter_1.NatsRequestErrorsFormatter();
|
|
38
|
+
}
|
|
39
|
+
getErrorsSender() {
|
|
40
|
+
return new nats_request_errors_sender_1.NatsRequestErrorsSender();
|
|
41
|
+
}
|
|
42
|
+
getErrorTransformers() {
|
|
43
|
+
return [];
|
|
44
|
+
}
|
|
45
|
+
modules() {
|
|
46
|
+
return [
|
|
47
|
+
{
|
|
48
|
+
module: nats_request_transport_module_1.NatsRequestTransportModule,
|
|
49
|
+
providers: [
|
|
50
|
+
{ provide: core_1.APP_INTERCEPTOR, useClass: nats_request_logger_interceptor_1.NatsRequestLoggerInterceptor },
|
|
51
|
+
],
|
|
52
|
+
},
|
|
53
|
+
];
|
|
54
|
+
}
|
|
55
|
+
createMicroserviceOptions() {
|
|
56
|
+
const options = {
|
|
57
|
+
...this.options,
|
|
58
|
+
name: this.name,
|
|
59
|
+
servers: this.config?.servers ?? 'unknown',
|
|
60
|
+
maxReconnectAttempts: this.config?.maxReconnectAttempts ?? -1,
|
|
61
|
+
reconnectTimeWait: this.config?.reconnectTimeWait ?? 2000,
|
|
62
|
+
};
|
|
63
|
+
this.logger.trace('createMicroserviceOptions', { options });
|
|
64
|
+
const { name } = core_2.Manifest.getData();
|
|
65
|
+
const server = new server_1.NatsRequestServer(options, {
|
|
66
|
+
appName: name,
|
|
67
|
+
responsePayloadType: this.responsePayloadType,
|
|
68
|
+
});
|
|
69
|
+
return { strategy: server };
|
|
70
|
+
}
|
|
71
|
+
init(configContext) {
|
|
72
|
+
const natsConfig = configContext.resolve(nats_common_1.DefaultNatsConfig);
|
|
73
|
+
const natsRequestConfig = configContext.resolve(nats_request_config_1.NatsRequestConfig);
|
|
74
|
+
this.config = natsConfig;
|
|
75
|
+
this.name = natsRequestConfig.name;
|
|
76
|
+
this.responsePayloadType = natsRequestConfig.defaultResponsePayloadType;
|
|
77
|
+
}
|
|
78
|
+
onStart() {
|
|
79
|
+
this.logger.info(`Nats request servers: ${this.config?.servers?.join(',') ?? 'unknown'}`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
exports.NatsRequestTransport = NatsRequestTransport;
|
|
83
|
+
//# sourceMappingURL=nats-request.transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nats-request.transport.js","sourceRoot":"","sources":["../../src/request/nats-request.transport.ts"],"names":[],"mappings":";;;AACA,uCAA+C;AAE/C,qCASoB;AACpB,uDAAoD;AACpD,2CAA8C;AAC9C,mDAAsD;AAGtD,2CAAoD;AACpD,+DAA0D;AAC1D,iEAA4D;AAC5D,mFAA6E;AAC7E,6EAAuE;AACvE,uFAAiF;AACjF,mFAA6E;AAC7E,qCAA6C;AAE7C,MAAa,oBAAoB;IAMF;IALZ,MAAM,GAAG,uBAAa,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAC7D,MAAM,GAA6B,IAAI,CAAC;IACxC,IAAI,GAAG,sBAAsB,CAAC;IAC9B,mBAAmB,GAAkB,6BAAa,CAAC,IAAI,CAAC;IAEhE,YAA6B,OAA2B;QAA3B,YAAO,GAAP,OAAO,CAAoB;IAAG,CAAC;IAE5D,cAAc,CAAC,GAAqB;QAClC,OAAO,IAAI,yCAAkB,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,WAAW;QACT,OAAO,iCAAqB,CAAC;IAC/B,CAAC;IAED,cAAc,CAAC,GAAkB;QAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAErC,OAAO,0BAAiB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,0DAA0B,EAAE,CAAC;IAC1C,CAAC;IAED,eAAe;QACb,OAAO,IAAI,oDAAuB,EAAE,CAAC;IACvC,CAAC;IAED,oBAAoB;QAClB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO;QACL,OAAO;YACL;gBACE,MAAM,EAAE,0DAA0B;gBAClC,SAAS,EAAE;oBACT,EAAE,OAAO,EAAE,sBAAe,EAAE,QAAQ,EAAE,8DAA4B,EAAE;iBACrE;aACF;SACF,CAAC;IACJ,CAAC;IAED,yBAAyB;QACvB,MAAM,OAAO,GAAsB;YACjC,GAAG,IAAI,CAAC,OAAO;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,SAAS;YAC1C,oBAAoB,EAAE,IAAI,CAAC,MAAM,EAAE,oBAAoB,IAAI,CAAC,CAAC;YAC7D,iBAAiB,EAAE,IAAI,CAAC,MAAM,EAAE,iBAAiB,IAAI,IAAI;SAC1D,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAE5D,MAAM,EAAE,IAAI,EAAE,GAAG,eAAQ,CAAC,OAAO,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,0BAAiB,CAAC,OAAO,EAAE;YAC5C,OAAO,EAAE,IAAI;YACb,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;SAC9C,CAAC,CAAC;QAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAC9B,CAAC;IAED,IAAI,CAAC,aAA4B;QAC/B,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,+BAAiB,CAAC,CAAC;QAC5D,MAAM,iBAAiB,GAAG,aAAa,CAAC,OAAO,CAAC,uCAAiB,CAAC,CAAC;QAEnE,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC;QACnC,IAAI,CAAC,mBAAmB,GAAG,iBAAiB,CAAC,0BAA0B,CAAC;IAC1E,CAAC;IAED,OAAO;QACL,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,yBAAyB,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE,CACxE,CAAC;IACJ,CAAC;CACF;AA/ED,oDA+EC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { CustomTransportStrategy, MessageHandler } from '@nestjs/microservices';
|
|
2
|
+
import { NatsContext, Server, Transport } from '@nestjs/microservices';
|
|
3
|
+
import { PayloadFormat } from '@rsdk/events.common';
|
|
4
|
+
import type { ConnectionOptions } from 'nats';
|
|
5
|
+
import { EventsDeserializer } from '../events.deserializer';
|
|
6
|
+
import type { RequestTypeWithOptions } from './types';
|
|
7
|
+
/**
|
|
8
|
+
* Класс, реализующий сервер NATS Request.
|
|
9
|
+
*/
|
|
10
|
+
export declare class NatsRequestServer extends Server implements CustomTransportStrategy {
|
|
11
|
+
private readonly options;
|
|
12
|
+
private readonly config;
|
|
13
|
+
readonly transportId = Transport.NATS;
|
|
14
|
+
logger: import("@rsdk/logging").ILogger;
|
|
15
|
+
readonly deserializer: EventsDeserializer<RequestTypeWithOptions>;
|
|
16
|
+
private nc?;
|
|
17
|
+
/**
|
|
18
|
+
* Конструктор класса NatsRequestServer.
|
|
19
|
+
* @param options - Опции для подключения к NATS.
|
|
20
|
+
* @param config - Конфигурация приложения.
|
|
21
|
+
*/
|
|
22
|
+
constructor(options: ConnectionOptions, config: {
|
|
23
|
+
appName: string;
|
|
24
|
+
responsePayloadType: PayloadFormat;
|
|
25
|
+
});
|
|
26
|
+
static isNatsContext(maybeNatsContext: unknown): maybeNatsContext is NatsContext;
|
|
27
|
+
/**
|
|
28
|
+
* Запускает сервер и устанавливает соединение.
|
|
29
|
+
* @param callback - Функция обратного вызова для выполнения после подключения.
|
|
30
|
+
*/
|
|
31
|
+
listen(callback: () => void): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Закрывает соединение с сервером.
|
|
34
|
+
*/
|
|
35
|
+
close(): Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* Добавляет обработчик сообщения.
|
|
38
|
+
* @param pattern Шаблон для сообщения.
|
|
39
|
+
* @param callback Функция-обработчик сообщения.
|
|
40
|
+
* @param isEventHandler Указывает, является ли обработчик обработчиком событий.
|
|
41
|
+
* @param extras Дополнительные параметры.
|
|
42
|
+
*/
|
|
43
|
+
addHandler(pattern: any, callback: MessageHandler, isEventHandler?: boolean, extras?: Record<string, any>): void;
|
|
44
|
+
private addRequestHandler;
|
|
45
|
+
private getRequestPattern;
|
|
46
|
+
private getFormattedPattern;
|
|
47
|
+
/**
|
|
48
|
+
* Получает тип сообщения из шаблона.
|
|
49
|
+
* @param pattern - Шаблон для получения типа сообщения.
|
|
50
|
+
* @returns Тип сообщения.
|
|
51
|
+
*/
|
|
52
|
+
private getMessageType;
|
|
53
|
+
/**
|
|
54
|
+
* Связывает обработчики сообщений.
|
|
55
|
+
*/
|
|
56
|
+
private bindRequestHandlers;
|
|
57
|
+
private getResponseEncoder;
|
|
58
|
+
private getResponsePayloadFormat;
|
|
59
|
+
}
|