@rsdk/nats.transport 6.0.0-next.16 → 6.0.0-next.17

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.
@@ -0,0 +1,7 @@
1
+ import type { ConsumeOptions } from './types';
2
+ export declare const NATS_JETSTREAM_PROTOCOL = "nats-jetstream";
3
+ /**
4
+ * @deprecated use NATS_JETSTREAM_PROTOCOL instead
5
+ */
6
+ export declare const NATS_PROTOCOL = "nats-jetstream";
7
+ export declare const DEFAULT_CONSUME_OPTIONS: ConsumeOptions;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_CONSUME_OPTIONS = exports.NATS_PROTOCOL = exports.NATS_JETSTREAM_PROTOCOL = void 0;
4
+ const nats_1 = require("nats");
5
+ exports.NATS_JETSTREAM_PROTOCOL = 'nats-jetstream';
6
+ /**
7
+ * @deprecated use NATS_JETSTREAM_PROTOCOL instead
8
+ */
9
+ exports.NATS_PROTOCOL = exports.NATS_JETSTREAM_PROTOCOL;
10
+ exports.DEFAULT_CONSUME_OPTIONS = {
11
+ ackPolicy: nats_1.AckPolicy.Explicit,
12
+ maxAckPending: 1000,
13
+ };
14
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA,+BAAiC;AAIpB,QAAA,uBAAuB,GAAG,gBAAgB,CAAC;AAExD;;GAEG;AACU,QAAA,aAAa,GAAG,+BAAuB,CAAC;AAExC,QAAA,uBAAuB,GAAmB;IACrD,SAAS,EAAE,gBAAS,CAAC,QAAQ;IAC7B,aAAa,EAAE,IAAI;CACX,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { ExecutionContext } from '@nestjs/common';
2
+ import type { GenericHeaders } from '@rsdk/core';
3
+ /**
4
+ * @description хелпер для нормализованного извлечения заголовков из nats
5
+ */
6
+ export declare class NatsJetstreamHeaders implements GenericHeaders {
7
+ private readonly normalizedHeaders;
8
+ constructor(ctx: ExecutionContext);
9
+ get(key: string): string | undefined;
10
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NatsJetstreamHeaders = void 0;
4
+ const core_1 = require("@rsdk/core");
5
+ const server_1 = require("./server");
6
+ /**
7
+ * @description хелпер для нормализованного извлечения заголовков из nats
8
+ */
9
+ class NatsJetstreamHeaders {
10
+ normalizedHeaders;
11
+ constructor(ctx) {
12
+ const natsCtx = ctx.getArgByIndex(1);
13
+ if (!server_1.NatsJetStreamServer.isNatsContext(natsCtx)) {
14
+ throw new core_1.InputException('Unexpected call with non Nats ArgumentHost');
15
+ }
16
+ this.normalizedHeaders = Object.fromEntries(Object.entries(natsCtx.message.headers || {}).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.NatsJetstreamHeaders = NatsJetstreamHeaders;
28
+ //# sourceMappingURL=nats-jetstream.headers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nats-jetstream.headers.js","sourceRoot":"","sources":["../src/nats-jetstream.headers.ts"],"names":[],"mappings":";;;AAEA,qCAA4C;AAE5C,qCAA+C;AAE/C;;GAEG;AACH,MAAa,oBAAoB;IACd,iBAAiB,CAAyB;IAE3D,YAAY,GAAqB;QAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAErC,IAAI,CAAC,4BAAmB,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,qBAAc,CAAC,4CAA4C,CAAC,CAAC;QACzE,CAAC;QAED,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,WAAW,CACzC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;YAC5D,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,oDAuBC"}
@@ -1,11 +1,11 @@
1
1
  import type { ArgumentsHost, ExecutionContext, INestApplication } from '@nestjs/common';
2
2
  import type { CustomStrategy } from '@nestjs/microservices';
3
- import type { GenericHeaders, IErrorsFormatter, IErrorsTransformer, IMicroserviceTransport, LogFormatter, NestModuleDefinitions } from '@rsdk/core';
4
- import type { NatsJetstreamTransportOptions } from './types/nats-jetstream-transport-options.type';
3
+ import { type GenericHeaders, type IErrorsFormatter, type IErrorsTransformer, type IMicroserviceTransport, type LogFormatter, type NestModuleDefinitions } from '@rsdk/core';
4
+ import type { NatsJetstreamTransportOptions } from './types';
5
5
  export declare class NatsJetstreamTransport implements IMicroserviceTransport {
6
6
  private readonly options?;
7
7
  private readonly logger;
8
- private servers;
8
+ private config;
9
9
  private name;
10
10
  constructor(options?: NatsJetstreamTransportOptions | undefined);
11
11
  extractHeaders(ctx: ExecutionContext): GenericHeaders;
@@ -4,8 +4,9 @@ exports.NatsJetstreamTransport = void 0;
4
4
  const core_1 = require("@rsdk/core");
5
5
  const logging_1 = require("@rsdk/logging");
6
6
  const nats_common_1 = require("@rsdk/nats.common");
7
- const nats_headers_1 = require("./nats.headers");
7
+ const constants_1 = require("./constants");
8
8
  const nats_jetstream_config_1 = require("./nats-jetstream.config");
9
+ const nats_jetstream_headers_1 = require("./nats-jetstream.headers");
9
10
  const nats_jetstream_log_formatter_1 = require("./nats-jetstream.log-formatter");
10
11
  const nats_jetstream_errors_formatter_1 = require("./nats-jetstream-errors.formatter");
11
12
  const nats_jetstream_transport_module_1 = require("./nats-jetstream-transport.module");
@@ -13,16 +14,16 @@ const server_1 = require("./server");
13
14
  class NatsJetstreamTransport {
14
15
  options;
15
16
  logger = logging_1.LoggerFactory.create(NatsJetstreamTransport);
16
- servers = [];
17
+ config = null;
17
18
  name = 'nats-jetstream-unknown';
18
19
  constructor(options) {
19
20
  this.options = options;
20
21
  }
21
22
  extractHeaders(ctx) {
22
- return new nats_headers_1.NatsHeaders(ctx);
23
+ return new nats_jetstream_headers_1.NatsJetstreamHeaders(ctx);
23
24
  }
24
25
  getProtocol() {
25
- return 'nats-jetstream';
26
+ return constants_1.NATS_JETSTREAM_PROTOCOL;
26
27
  }
27
28
  matchByContext(ctx) {
28
29
  const natsCtx = ctx.getArgByIndex(1);
@@ -38,7 +39,11 @@ class NatsJetstreamTransport {
38
39
  return new nats_jetstream_log_formatter_1.NatsJetstreamLogFormatter();
39
40
  }
40
41
  modules() {
41
- return [nats_jetstream_transport_module_1.NatsJetstreamTransportModule];
42
+ return [
43
+ core_1.PlatformConfigModule.forFeature(nats_common_1.DefaultNatsConfig),
44
+ core_1.PlatformConfigModule.forFeature(nats_jetstream_config_1.NatsJetstreamConfig),
45
+ nats_jetstream_transport_module_1.NatsJetstreamTransportModule,
46
+ ];
42
47
  }
43
48
  createMicroserviceOptions() {
44
49
  const options = {
@@ -46,7 +51,9 @@ class NatsJetstreamTransport {
46
51
  connectionOptions: {
47
52
  ...this.options?.connectionOptions,
48
53
  name: this.name,
49
- servers: this.servers,
54
+ servers: this.config?.servers ?? 'unknown',
55
+ maxReconnectAttempts: this.config?.maxReconnectAttempts ?? -1,
56
+ reconnectTimeWait: this.config?.reconnectTimeWait ?? 2000,
50
57
  },
51
58
  consumerOptions: {
52
59
  ...this.options?.consumerOptions,
@@ -66,11 +73,11 @@ class NatsJetstreamTransport {
66
73
  async init(app) {
67
74
  const natsConfig = await app.resolve(nats_common_1.DefaultNatsConfig);
68
75
  const natsJetstreamConfig = await app.resolve(nats_jetstream_config_1.NatsJetstreamConfig);
76
+ this.config = natsConfig;
69
77
  this.name = natsJetstreamConfig.name;
70
- this.servers = natsConfig.servers;
71
78
  }
72
79
  onStart() {
73
- this.logger.info(`Nats servers: ${this.servers.join(',')}`);
80
+ this.logger.info(`Nats servers: ${this.config?.servers?.join(',') ?? 'unknown'}`);
74
81
  }
75
82
  }
76
83
  exports.NatsJetstreamTransport = NatsJetstreamTransport;
@@ -1 +1 @@
1
- {"version":3,"file":"nats-jetstream.transport.js","sourceRoot":"","sources":["../src/nats-jetstream.transport.ts"],"names":[],"mappings":";;;AAeA,qCAAsC;AACtC,2CAA8C;AAC9C,mDAAsD;AAGtD,iDAA6C;AAC7C,mEAA8D;AAC9D,iFAA2E;AAC3E,uFAAiF;AACjF,uFAAiF;AACjF,qCAA+C;AAE/C,MAAa,sBAAsB;IAKJ;IAJZ,MAAM,GAAG,uBAAa,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAC/D,OAAO,GAAa,EAAE,CAAC;IACvB,IAAI,GAAG,wBAAwB,CAAC;IAExC,YAA6B,OAAuC;QAAvC,YAAO,GAAP,OAAO,CAAgC;IAAG,CAAC;IAExE,cAAc,CAAC,GAAqB;QAClC,OAAO,IAAI,0BAAW,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,WAAW;QACT,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,cAAc,CAAC,GAAkB;QAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAErC,OAAO,4BAAmB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,8DAA4B,EAAE,CAAC;IAC5C,CAAC;IAED,iBAAiB;QACf,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,YAAY;QACV,OAAO,IAAI,wDAAyB,EAAE,CAAC;IACzC,CAAC;IAED,OAAO;QACL,OAAO,CAAC,8DAA4B,CAAC,CAAC;IACxC,CAAC;IAED,yBAAyB;QACvB,MAAM,OAAO,GAA+B;YAC1C,GAAG,IAAI,CAAC,OAAO;YACf,iBAAiB,EAAE;gBACjB,GAAG,IAAI,CAAC,OAAO,EAAE,iBAAiB;gBAClC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB;YACD,eAAe,EAAE;gBACf,GAAG,IAAI,CAAC,OAAO,EAAE,eAAe;aACjC;YACD,YAAY,EAAE,EAAE;SACjB,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,4BAAmB,CAAC,OAAO,EAAE;YAC9C,OAAO,EAAE,IAAI;YACb,mBAAmB,EAAE,IAAI;SAC1B,CAAC,CAAC;QAEH,OAAO;YACL,QAAQ,EAAE,MAAM;SACjB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAqB;QAC9B,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,+BAAiB,CAAC,CAAC;QACxD,MAAM,mBAAmB,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,2CAAmB,CAAC,CAAC;QAEnE,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;IACpC,CAAC;IAED,OAAO;QACL,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9D,CAAC;CACF;AA3ED,wDA2EC"}
1
+ {"version":3,"file":"nats-jetstream.transport.js","sourceRoot":"","sources":["../src/nats-jetstream.transport.ts"],"names":[],"mappings":";;;AAOA,qCASoB;AACpB,2CAA8C;AAC9C,mDAAsD;AAEtD,2CAAsD;AACtD,mEAA8D;AAC9D,qEAAgE;AAChE,iFAA2E;AAC3E,uFAAiF;AACjF,uFAAiF;AACjF,qCAA+C;AAG/C,MAAa,sBAAsB;IAKJ;IAJZ,MAAM,GAAG,uBAAa,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAC/D,MAAM,GAA6B,IAAI,CAAC;IACxC,IAAI,GAAG,wBAAwB,CAAC;IAExC,YAA6B,OAAuC;QAAvC,YAAO,GAAP,OAAO,CAAgC;IAAG,CAAC;IAExE,cAAc,CAAC,GAAqB;QAClC,OAAO,IAAI,6CAAoB,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;IAED,WAAW;QACT,OAAO,mCAAuB,CAAC;IACjC,CAAC;IAED,cAAc,CAAC,GAAkB;QAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAErC,OAAO,4BAAmB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,8DAA4B,EAAE,CAAC;IAC5C,CAAC;IAED,iBAAiB;QACf,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,YAAY;QACV,OAAO,IAAI,wDAAyB,EAAE,CAAC;IACzC,CAAC;IAED,OAAO;QACL,OAAO;YACL,2BAAoB,CAAC,UAAU,CAAC,+BAAiB,CAAC;YAClD,2BAAoB,CAAC,UAAU,CAAC,2CAAmB,CAAC;YACpD,8DAA4B;SAC7B,CAAC;IACJ,CAAC;IAED,yBAAyB;QACvB,MAAM,OAAO,GAA+B;YAC1C,GAAG,IAAI,CAAC,OAAO;YACf,iBAAiB,EAAE;gBACjB,GAAG,IAAI,CAAC,OAAO,EAAE,iBAAiB;gBAClC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,SAAS;gBAC1C,oBAAoB,EAAE,IAAI,CAAC,MAAM,EAAE,oBAAoB,IAAI,CAAC,CAAC;gBAC7D,iBAAiB,EAAE,IAAI,CAAC,MAAM,EAAE,iBAAiB,IAAI,IAAI;aAC1D;YACD,eAAe,EAAE;gBACf,GAAG,IAAI,CAAC,OAAO,EAAE,eAAe;aACjC;YACD,YAAY,EAAE,EAAE;SACjB,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,4BAAmB,CAAC,OAAO,EAAE;YAC9C,OAAO,EAAE,IAAI;YACb,mBAAmB,EAAE,IAAI;SAC1B,CAAC,CAAC;QAEH,OAAO;YACL,QAAQ,EAAE,MAAM;SACjB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAqB;QAC9B,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,+BAAiB,CAAC,CAAC;QACxD,MAAM,mBAAmB,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,2CAAmB,CAAC,CAAC;QAEnE,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC;IACvC,CAAC;IAED,OAAO;QACL,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,iBAAiB,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE,CAChE,CAAC;IACJ,CAAC;CACF;AAnFD,wDAmFC"}
@@ -2,7 +2,8 @@ import type { AckPolicy } from 'nats';
2
2
  export type ConsumeOptions = {
3
3
  streamName?: string;
4
4
  subjects?: string[];
5
- maxAckPending?: number;
5
+ maxAckPending: number;
6
6
  consumerName?: string;
7
- ackPolicy?: AckPolicy;
7
+ ackPolicy: AckPolicy;
8
+ partition?: string;
8
9
  };
@@ -0,0 +1,6 @@
1
+ export * from './consume.options';
2
+ export * from './consumer-info.type';
3
+ export * from './event-type-with-options.type';
4
+ export * from './mapping.type';
5
+ export * from './nats-jetstream-transport-options.type';
6
+ export * from './consumers-map.type';
@@ -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/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,uDAAqC;AACrC,iEAA+C;AAC/C,iDAA+B;AAC/B,0EAAwD;AACxD,uDAAqC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rsdk/nats.transport",
3
- "version": "6.0.0-next.16",
3
+ "version": "6.0.0-next.17",
4
4
  "description": "Nats NestJS Transport",
5
5
  "main": "dist/index.js",
6
6
  "license": "Apache License 2.0",
@@ -36,5 +36,5 @@
36
36
  "rxjs": "^7.8.1"
37
37
  },
38
38
  "nx": {},
39
- "gitHead": "0b90b6ade9d631495f7d4a9d2f7739f0ca4cd9f8"
39
+ "gitHead": "fbae1f6a62ff27950841eecb5ab5c48c7b7a6c11"
40
40
  }
@@ -0,0 +1,15 @@
1
+ import { AckPolicy } from 'nats';
2
+
3
+ import type { ConsumeOptions } from './types';
4
+
5
+ export const NATS_JETSTREAM_PROTOCOL = 'nats-jetstream';
6
+
7
+ /**
8
+ * @deprecated use NATS_JETSTREAM_PROTOCOL instead
9
+ */
10
+ export const NATS_PROTOCOL = NATS_JETSTREAM_PROTOCOL;
11
+
12
+ export const DEFAULT_CONSUME_OPTIONS: ConsumeOptions = {
13
+ ackPolicy: AckPolicy.Explicit,
14
+ maxAckPending: 1000,
15
+ } as const;
@@ -0,0 +1,33 @@
1
+ import type { ExecutionContext } from '@nestjs/common';
2
+ import type { GenericHeaders } from '@rsdk/core';
3
+ import { InputException } from '@rsdk/core';
4
+
5
+ import { NatsJetStreamServer } from './server';
6
+
7
+ /**
8
+ * @description хелпер для нормализованного извлечения заголовков из nats
9
+ */
10
+ export class NatsJetstreamHeaders implements GenericHeaders {
11
+ private readonly normalizedHeaders: Record<string, string>;
12
+
13
+ constructor(ctx: ExecutionContext) {
14
+ const natsCtx = ctx.getArgByIndex(1);
15
+
16
+ if (!NatsJetStreamServer.isNatsContext(natsCtx)) {
17
+ throw new InputException('Unexpected call with non Nats ArgumentHost');
18
+ }
19
+
20
+ this.normalizedHeaders = Object.fromEntries(
21
+ Object.entries(natsCtx.message.headers || {}).map(([k, v]) => [
22
+ Array.isArray(k)
23
+ ? k[0].toString().toLowerCase()
24
+ : k.toString().toLowerCase(),
25
+ v,
26
+ ]),
27
+ );
28
+ }
29
+
30
+ get(key: string): string | undefined {
31
+ return this.normalizedHeaders[key.toLowerCase()];
32
+ }
33
+ }
@@ -5,39 +5,41 @@ import type {
5
5
  } from '@nestjs/common';
6
6
  import type { CustomStrategy } from '@nestjs/microservices';
7
7
  import type { NatsJetStreamServerOptions } from '@nestjs-plugins/nestjs-nats-jetstream-transport';
8
- import type {
9
- GenericHeaders,
10
- IErrorsFormatter,
11
- IErrorsTransformer,
12
- IMicroserviceTransport,
13
- LogFormatter,
14
- NestModuleDefinitions,
8
+ import {
9
+ type GenericHeaders,
10
+ type IErrorsFormatter,
11
+ type IErrorsTransformer,
12
+ type IMicroserviceTransport,
13
+ type LogFormatter,
14
+ Manifest,
15
+ type NestModuleDefinitions,
16
+ PlatformConfigModule,
15
17
  } from '@rsdk/core';
16
- import { Manifest } from '@rsdk/core';
17
18
  import { LoggerFactory } from '@rsdk/logging';
18
19
  import { DefaultNatsConfig } from '@rsdk/nats.common';
19
20
 
20
- import type { NatsJetstreamTransportOptions } from './types/nats-jetstream-transport-options.type';
21
- import { NatsHeaders } from './nats.headers';
21
+ import { NATS_JETSTREAM_PROTOCOL } from './constants';
22
22
  import { NatsJetstreamConfig } from './nats-jetstream.config';
23
+ import { NatsJetstreamHeaders } from './nats-jetstream.headers';
23
24
  import { NatsJetstreamLogFormatter } from './nats-jetstream.log-formatter';
24
25
  import { NatsJetstreamErrorsFormatter } from './nats-jetstream-errors.formatter';
25
26
  import { NatsJetstreamTransportModule } from './nats-jetstream-transport.module';
26
27
  import { NatsJetStreamServer } from './server';
28
+ import type { NatsJetstreamTransportOptions } from './types';
27
29
 
28
30
  export class NatsJetstreamTransport implements IMicroserviceTransport {
29
31
  private readonly logger = LoggerFactory.create(NatsJetstreamTransport);
30
- private servers: string[] = [];
32
+ private config: DefaultNatsConfig | null = null;
31
33
  private name = 'nats-jetstream-unknown';
32
34
 
33
35
  constructor(private readonly options?: NatsJetstreamTransportOptions) {}
34
36
 
35
37
  extractHeaders(ctx: ExecutionContext): GenericHeaders {
36
- return new NatsHeaders(ctx);
38
+ return new NatsJetstreamHeaders(ctx);
37
39
  }
38
40
 
39
41
  getProtocol(): string {
40
- return 'nats-jetstream';
42
+ return NATS_JETSTREAM_PROTOCOL;
41
43
  }
42
44
 
43
45
  matchByContext(ctx: ArgumentsHost): boolean {
@@ -59,7 +61,11 @@ export class NatsJetstreamTransport implements IMicroserviceTransport {
59
61
  }
60
62
 
61
63
  modules(): NestModuleDefinitions {
62
- return [NatsJetstreamTransportModule];
64
+ return [
65
+ PlatformConfigModule.forFeature(DefaultNatsConfig),
66
+ PlatformConfigModule.forFeature(NatsJetstreamConfig),
67
+ NatsJetstreamTransportModule,
68
+ ];
63
69
  }
64
70
 
65
71
  createMicroserviceOptions(): CustomStrategy {
@@ -68,7 +74,9 @@ export class NatsJetstreamTransport implements IMicroserviceTransport {
68
74
  connectionOptions: {
69
75
  ...this.options?.connectionOptions,
70
76
  name: this.name,
71
- servers: this.servers,
77
+ servers: this.config?.servers ?? 'unknown',
78
+ maxReconnectAttempts: this.config?.maxReconnectAttempts ?? -1,
79
+ reconnectTimeWait: this.config?.reconnectTimeWait ?? 2000,
72
80
  },
73
81
  consumerOptions: {
74
82
  ...this.options?.consumerOptions,
@@ -93,11 +101,13 @@ export class NatsJetstreamTransport implements IMicroserviceTransport {
93
101
  const natsConfig = await app.resolve(DefaultNatsConfig);
94
102
  const natsJetstreamConfig = await app.resolve(NatsJetstreamConfig);
95
103
 
104
+ this.config = natsConfig;
96
105
  this.name = natsJetstreamConfig.name;
97
- this.servers = natsConfig.servers;
98
106
  }
99
107
 
100
108
  onStart(): void {
101
- this.logger.info(`Nats servers: ${this.servers.join(',')}`);
109
+ this.logger.info(
110
+ `Nats servers: ${this.config?.servers?.join(',') ?? 'unknown'}`,
111
+ );
102
112
  }
103
113
  }
@@ -3,7 +3,8 @@ import type { AckPolicy } from 'nats';
3
3
  export type ConsumeOptions = {
4
4
  streamName?: string;
5
5
  subjects?: string[];
6
- maxAckPending?: number;
6
+ maxAckPending: number;
7
7
  consumerName?: string;
8
- ackPolicy?: AckPolicy;
8
+ ackPolicy: AckPolicy;
9
+ partition?: string;
9
10
  };
@@ -0,0 +1,6 @@
1
+ export * from './consume.options';
2
+ export * from './consumer-info.type';
3
+ export * from './event-type-with-options.type';
4
+ export * from './mapping.type';
5
+ export * from './nats-jetstream-transport-options.type';
6
+ export * from './consumers-map.type';
@@ -4,5 +4,8 @@ import type { EventTypeWithOptions } from './event-type-with-options.type';
4
4
 
5
5
  export type Mapping = Map<
6
6
  string,
7
- { deserializer: EventTypeWithOptions; handler: MessageHandler }
7
+ {
8
+ deserializer: EventTypeWithOptions;
9
+ handler: MessageHandler;
10
+ }
8
11
  >;