@rsdk/nats.common 5.6.0-next.0 → 5.6.0-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/dist/client/client.indicator.provider.js +2 -1
  2. package/dist/client/client.indicator.provider.js.map +1 -1
  3. package/dist/index.d.ts +2 -0
  4. package/dist/index.js +5 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/stream-indicator/constants.d.ts +4 -0
  7. package/dist/stream-indicator/constants.js +8 -0
  8. package/dist/stream-indicator/constants.js.map +1 -0
  9. package/dist/stream-indicator/stream.indicator.d.ts +10 -0
  10. package/dist/stream-indicator/stream.indicator.generator.d.ts +8 -0
  11. package/dist/stream-indicator/stream.indicator.generator.js +37 -0
  12. package/dist/stream-indicator/stream.indicator.generator.js.map +1 -0
  13. package/dist/stream-indicator/stream.indicator.js +51 -0
  14. package/dist/stream-indicator/stream.indicator.js.map +1 -0
  15. package/dist/stream-indicator/stream.indicator.provider.d.ts +3 -0
  16. package/dist/stream-indicator/stream.indicator.provider.js +17 -0
  17. package/dist/stream-indicator/stream.indicator.provider.js.map +1 -0
  18. package/dist/utils/get-connection-indicator-key.fn.d.ts +1 -0
  19. package/dist/utils/get-connection-indicator-key.fn.js +6 -0
  20. package/dist/utils/get-connection-indicator-key.fn.js.map +1 -0
  21. package/dist/utils/get-stream-indicator-key.fn.d.ts +1 -0
  22. package/dist/utils/get-stream-indicator-key.fn.js +6 -0
  23. package/dist/utils/get-stream-indicator-key.fn.js.map +1 -0
  24. package/package.json +2 -2
  25. package/src/client/client.indicator.provider.ts +3 -1
  26. package/src/index.ts +2 -0
  27. package/src/stream-indicator/constants.ts +9 -0
  28. package/src/stream-indicator/stream.indicator.generator.ts +54 -0
  29. package/src/stream-indicator/stream.indicator.provider.ts +29 -0
  30. package/src/stream-indicator/stream.indicator.ts +40 -0
  31. package/src/utils/get-connection-indicator-key.fn.ts +2 -0
  32. package/src/utils/get-stream-indicator-key.fn.ts +6 -0
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createNatsClientIndicatorProvider = void 0;
4
4
  const core_1 = require("@rsdk/core");
5
+ const get_connection_indicator_key_fn_1 = require("../utils/get-connection-indicator-key.fn");
5
6
  const client_indicator_1 = require("./client.indicator");
6
7
  const createNatsClientIndicatorProvider = (connectionName) => {
7
8
  const DynamicNatsClientIndicator = class extends client_indicator_1.NatsClientIndicator {
@@ -9,7 +10,7 @@ const createNatsClientIndicatorProvider = (connectionName) => {
9
10
  super(connection);
10
11
  }
11
12
  };
12
- (0, core_1.Indicator)(`nats_connection${connectionName ? `_${connectionName}` : ''}`)(DynamicNatsClientIndicator);
13
+ (0, core_1.Indicator)((0, get_connection_indicator_key_fn_1.getConnectionIndicatorKey)(connectionName))(DynamicNatsClientIndicator);
13
14
  return DynamicNatsClientIndicator;
14
15
  };
15
16
  exports.createNatsClientIndicatorProvider = createNatsClientIndicatorProvider;
@@ -1 +1 @@
1
- {"version":3,"file":"client.indicator.provider.js","sourceRoot":"","sources":["../../src/client/client.indicator.provider.ts"],"names":[],"mappings":";;;AAEA,qCAAuC;AAGvC,yDAAyD;AAElD,MAAM,iCAAiC,GAAG,CAC/C,cAAuB,EACO,EAAE;IAChC,MAAM,0BAA0B,GAAG,KAAM,SAAQ,sCAAmB;QAClE,YAAY,UAA0B;YACpC,KAAK,CAAC,UAAU,CAAC,CAAC;QACpB,CAAC;KACF,CAAC;IAEF,IAAA,gBAAS,EAAC,kBAAkB,cAAc,CAAC,CAAC,CAAC,IAAI,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACvE,0BAA0B,CAC3B,CAAC;IAEF,OAAO,0BAA0B,CAAC;AACpC,CAAC,CAAC;AAdW,QAAA,iCAAiC,qCAc5C"}
1
+ {"version":3,"file":"client.indicator.provider.js","sourceRoot":"","sources":["../../src/client/client.indicator.provider.ts"],"names":[],"mappings":";;;AAEA,qCAAuC;AAGvC,8FAAqF;AAErF,yDAAyD;AAElD,MAAM,iCAAiC,GAAG,CAC/C,cAAuB,EACO,EAAE;IAChC,MAAM,0BAA0B,GAAG,KAAM,SAAQ,sCAAmB;QAClE,YAAY,UAA0B;YACpC,KAAK,CAAC,UAAU,CAAC,CAAC;QACpB,CAAC;KACF,CAAC;IAEF,IAAA,gBAAS,EAAC,IAAA,2DAAyB,EAAC,cAAc,CAAC,CAAC,CAClD,0BAA0B,CAC3B,CAAC;IAEF,OAAO,0BAA0B,CAAC;AACpC,CAAC,CAAC;AAdW,QAAA,iCAAiC,qCAc5C"}
package/dist/index.d.ts CHANGED
@@ -7,3 +7,5 @@ export { NatsClientModule } from './client/client.module';
7
7
  export { handleNatsException } from './exceptions/exception.handler';
8
8
  export { DefaultNatsConfig } from './client/client.config';
9
9
  export { NatsClientPlugin } from './client/client.plugin';
10
+ export { NatsStreamIndicatorModuleGenerator } from './stream-indicator/stream.indicator.generator';
11
+ export { getStreamIndicatorKey } from './utils/get-stream-indicator-key.fn';
package/dist/index.js CHANGED
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.NatsClientPlugin = exports.DefaultNatsConfig = exports.handleNatsException = exports.NatsClientModule = exports.InjectNatsJetStreamClient = exports.InjectNatsClient = exports.NATS_TOPIC_RSDK_METADATA_SCOPE = exports.TopicType = exports.getSubjectName = exports.getStreamName = void 0;
17
+ exports.getStreamIndicatorKey = exports.NatsStreamIndicatorModuleGenerator = exports.NatsClientPlugin = exports.DefaultNatsConfig = exports.handleNatsException = exports.NatsClientModule = exports.InjectNatsJetStreamClient = exports.InjectNatsClient = exports.NATS_TOPIC_RSDK_METADATA_SCOPE = exports.TopicType = exports.getSubjectName = exports.getStreamName = void 0;
18
18
  var get_stream_name_fn_1 = require("./utils/get-stream-name.fn");
19
19
  Object.defineProperty(exports, "getStreamName", { enumerable: true, get: function () { return get_stream_name_fn_1.getStreamName; } });
20
20
  var get_subject_name_fn_1 = require("./utils/get-subject-name.fn");
@@ -34,4 +34,8 @@ var client_config_1 = require("./client/client.config");
34
34
  Object.defineProperty(exports, "DefaultNatsConfig", { enumerable: true, get: function () { return client_config_1.DefaultNatsConfig; } });
35
35
  var client_plugin_1 = require("./client/client.plugin");
36
36
  Object.defineProperty(exports, "NatsClientPlugin", { enumerable: true, get: function () { return client_plugin_1.NatsClientPlugin; } });
37
+ var stream_indicator_generator_1 = require("./stream-indicator/stream.indicator.generator");
38
+ Object.defineProperty(exports, "NatsStreamIndicatorModuleGenerator", { enumerable: true, get: function () { return stream_indicator_generator_1.NatsStreamIndicatorModuleGenerator; } });
39
+ var get_stream_indicator_key_fn_1 = require("./utils/get-stream-indicator-key.fn");
40
+ Object.defineProperty(exports, "getStreamIndicatorKey", { enumerable: true, get: function () { return get_stream_indicator_key_fn_1.getStreamIndicatorKey; } });
37
41
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iEAA2D;AAAlD,mHAAA,aAAa,OAAA;AACtB,mEAA6D;AAApD,qHAAA,cAAc,OAAA;AACvB,4DAMkC;AAFhC,4GAAA,SAAS,OAAA;AACT,iIAAA,8BAA8B,OAAA;AAEhC,4DAA0C;AAC1C,gEAGoC;AAFlC,qHAAA,gBAAgB,OAAA;AAChB,8HAAA,yBAAyB,OAAA;AAE3B,wDAA0D;AAAjD,iHAAA,gBAAgB,OAAA;AACzB,oEAAqE;AAA5D,wHAAA,mBAAmB,OAAA;AAC5B,wDAA2D;AAAlD,kHAAA,iBAAiB,OAAA;AAC1B,wDAA0D;AAAjD,iHAAA,gBAAgB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iEAA2D;AAAlD,mHAAA,aAAa,OAAA;AACtB,mEAA6D;AAApD,qHAAA,cAAc,OAAA;AACvB,4DAMkC;AAFhC,4GAAA,SAAS,OAAA;AACT,iIAAA,8BAA8B,OAAA;AAEhC,4DAA0C;AAC1C,gEAGoC;AAFlC,qHAAA,gBAAgB,OAAA;AAChB,8HAAA,yBAAyB,OAAA;AAE3B,wDAA0D;AAAjD,iHAAA,gBAAgB,OAAA;AACzB,oEAAqE;AAA5D,wHAAA,mBAAmB,OAAA;AAC5B,wDAA2D;AAAlD,kHAAA,iBAAiB,OAAA;AAC1B,wDAA0D;AAAjD,iHAAA,gBAAgB,OAAA;AACzB,4FAAmG;AAA1F,gJAAA,kCAAkC,OAAA;AAC3C,mFAA4E;AAAnE,oIAAA,qBAAqB,OAAA"}
@@ -0,0 +1,4 @@
1
+ export declare const NATS_STREAM_INDICATORS_SCOPE = "NATS_STREAM_INDICATORS_SCOPE";
2
+ export declare const NATS_STREAM_INDICATOR_CONNECTION = "NATS_STREAM_INDICATOR_CONNECTION";
3
+ export declare const NATS_STREAM_INDICATOR_STREAM_NAME = "NATS_STREAM_INDICATOR_STREAM_NAME";
4
+ export declare const NATS_STREAM_INDICATOR_DOMAIN = "NATS_STREAM_INDICATOR_DOMAIN";
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NATS_STREAM_INDICATOR_DOMAIN = exports.NATS_STREAM_INDICATOR_STREAM_NAME = exports.NATS_STREAM_INDICATOR_CONNECTION = exports.NATS_STREAM_INDICATORS_SCOPE = void 0;
4
+ exports.NATS_STREAM_INDICATORS_SCOPE = 'NATS_STREAM_INDICATORS_SCOPE';
5
+ exports.NATS_STREAM_INDICATOR_CONNECTION = 'NATS_STREAM_INDICATOR_CONNECTION';
6
+ exports.NATS_STREAM_INDICATOR_STREAM_NAME = 'NATS_STREAM_INDICATOR_STREAM_NAME';
7
+ exports.NATS_STREAM_INDICATOR_DOMAIN = 'NATS_STREAM_INDICATOR_DOMAIN';
8
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/stream-indicator/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,4BAA4B,GAAG,8BAA8B,CAAC;AAE9D,QAAA,gCAAgC,GAC3C,kCAAkC,CAAC;AAExB,QAAA,iCAAiC,GAC5C,mCAAmC,CAAC;AAEzB,QAAA,4BAA4B,GAAG,8BAA8B,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { HealthIndicator } from '@rsdk/core';
2
+ import { CheckResult } from '@rsdk/core';
3
+ import type { NatsConnection } from 'nats';
4
+ export declare class NatsStreamIndicator implements HealthIndicator {
5
+ private readonly connection;
6
+ private readonly streamName;
7
+ private readonly domain?;
8
+ constructor(connection: NatsConnection, streamName: string, domain?: string | undefined);
9
+ check(): Promise<CheckResult>;
10
+ }
@@ -0,0 +1,8 @@
1
+ import type { DynamicModule } from '@nestjs/common';
2
+ export declare class NatsStreamIndicatorModuleGenerator {
3
+ static createClientModuleDefinition(target: object, opts: {
4
+ streamName: string;
5
+ connectionName?: string | undefined;
6
+ domain?: string | undefined;
7
+ }): DynamicModule;
8
+ }
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NatsStreamIndicatorModuleGenerator = void 0;
4
+ const metadata_1 = require("@rsdk/metadata");
5
+ const client_constants_1 = require("../client/client.constants");
6
+ const constants_1 = require("./constants");
7
+ const stream_indicator_provider_1 = require("./stream.indicator.provider");
8
+ class NatsStreamIndicatorModuleGenerator {
9
+ static createClientModuleDefinition(target, opts) {
10
+ const { streamName, connectionName, domain } = opts;
11
+ const moduleDefinition = {
12
+ global: true,
13
+ module: NatsStreamIndicatorModuleGenerator,
14
+ providers: [
15
+ {
16
+ provide: constants_1.NATS_STREAM_INDICATOR_CONNECTION,
17
+ useExisting: connectionName
18
+ ? (0, client_constants_1.createNatsClientToken)(connectionName)
19
+ : client_constants_1.NATS_CLIENT_INJECTION_TOKEN,
20
+ },
21
+ {
22
+ provide: constants_1.NATS_STREAM_INDICATOR_STREAM_NAME,
23
+ useValue: streamName,
24
+ },
25
+ {
26
+ provide: constants_1.NATS_STREAM_INDICATOR_DOMAIN,
27
+ useValue: domain,
28
+ },
29
+ (0, stream_indicator_provider_1.createNatsStreamIndicatorProvider)(streamName, connectionName, domain),
30
+ ],
31
+ };
32
+ metadata_1.RsdkMetadata.add(target, opts, constants_1.NATS_STREAM_INDICATORS_SCOPE);
33
+ return moduleDefinition;
34
+ }
35
+ }
36
+ exports.NatsStreamIndicatorModuleGenerator = NatsStreamIndicatorModuleGenerator;
37
+ //# sourceMappingURL=stream.indicator.generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.indicator.generator.js","sourceRoot":"","sources":["../../src/stream-indicator/stream.indicator.generator.ts"],"names":[],"mappings":";;;AACA,6CAA8C;AAE9C,iEAGoC;AAEpC,2CAKqB;AACrB,2EAAgF;AAEhF,MAAa,kCAAkC;IAC7C,MAAM,CAAC,4BAA4B,CACjC,MAAc,EACd,IAIC;QAED,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAEpD,MAAM,gBAAgB,GAAkB;YACtC,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,kCAAkC;YAC1C,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,4CAAgC;oBACzC,WAAW,EAAE,cAAc;wBACzB,CAAC,CAAC,IAAA,wCAAqB,EAAC,cAAc,CAAC;wBACvC,CAAC,CAAC,8CAA2B;iBAChC;gBACD;oBACE,OAAO,EAAE,6CAAiC;oBAC1C,QAAQ,EAAE,UAAU;iBACrB;gBACD;oBACE,OAAO,EAAE,wCAA4B;oBACrC,QAAQ,EAAE,MAAM;iBACjB;gBACD,IAAA,6DAAiC,EAAC,UAAU,EAAE,cAAc,EAAE,MAAM,CAAC;aACtE;SACF,CAAC;QAEF,uBAAY,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,wCAA4B,CAAC,CAAC;QAE7D,OAAO,gBAAgB,CAAC;IAC1B,CAAC;CACF;AArCD,gFAqCC"}
@@ -0,0 +1,51 @@
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.NatsStreamIndicator = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const common_2 = require("@rsdk/common");
18
+ const core_1 = require("@rsdk/core");
19
+ const constants_1 = require("./constants");
20
+ let NatsStreamIndicator = class NatsStreamIndicator {
21
+ connection;
22
+ streamName;
23
+ domain;
24
+ constructor(connection, streamName, domain) {
25
+ this.connection = connection;
26
+ this.streamName = streamName;
27
+ this.domain = domain;
28
+ }
29
+ async check() {
30
+ try {
31
+ const jsm = await this.connection.jetstreamManager((0, common_2.omitUndefined)({
32
+ domain: this.domain,
33
+ }));
34
+ const { state } = await jsm.streams.info(this.streamName);
35
+ return core_1.CheckResult.up({ ...state });
36
+ }
37
+ catch (error) {
38
+ return core_1.CheckResult.down({
39
+ error: error.message,
40
+ });
41
+ }
42
+ }
43
+ };
44
+ exports.NatsStreamIndicator = NatsStreamIndicator;
45
+ exports.NatsStreamIndicator = NatsStreamIndicator = __decorate([
46
+ __param(0, (0, common_1.Inject)(constants_1.NATS_STREAM_INDICATOR_CONNECTION)),
47
+ __param(1, (0, common_1.Inject)(constants_1.NATS_STREAM_INDICATOR_STREAM_NAME)),
48
+ __param(2, (0, common_1.Inject)(constants_1.NATS_STREAM_INDICATOR_DOMAIN)),
49
+ __metadata("design:paramtypes", [Object, String, String])
50
+ ], NatsStreamIndicator);
51
+ //# sourceMappingURL=stream.indicator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.indicator.js","sourceRoot":"","sources":["../../src/stream-indicator/stream.indicator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAwC;AACxC,yCAA6C;AAE7C,qCAAyC;AAGzC,2CAIqB;AAErB,IAAa,mBAAmB,GAAhC,MAAa,mBAAmB;IAGX;IAEA;IAEA;IANnB,YAEmB,UAA0B,EAE1B,UAAkB,EAElB,MAAe;QAJf,eAAU,GAAV,UAAU,CAAgB;QAE1B,eAAU,GAAV,UAAU,CAAQ;QAElB,WAAM,GAAN,MAAM,CAAS;IAC/B,CAAC;IAEJ,KAAK,CAAC,KAAK;QACT,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAChD,IAAA,sBAAa,EAAC;gBACZ,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC,CACH,CAAC;YAEF,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAE1D,OAAO,kBAAW,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,kBAAW,CAAC,IAAI,CAAC;gBACtB,KAAK,EAAG,KAAe,CAAC,OAAO;aAChC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF,CAAA;AA3BY,kDAAmB;8BAAnB,mBAAmB;IAE3B,WAAA,IAAA,eAAM,EAAC,4CAAgC,CAAC,CAAA;IAExC,WAAA,IAAA,eAAM,EAAC,6CAAiC,CAAC,CAAA;IAEzC,WAAA,IAAA,eAAM,EAAC,wCAA4B,CAAC,CAAA;;GAN5B,mBAAmB,CA2B/B"}
@@ -0,0 +1,3 @@
1
+ import type { Constructor } from '@rsdk/common';
2
+ import type { HealthIndicator } from '@rsdk/core';
3
+ export declare const createNatsStreamIndicatorProvider: (streamName: string, connectionName?: string, domain?: string) => Constructor<HealthIndicator>;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createNatsStreamIndicatorProvider = void 0;
4
+ const core_1 = require("@rsdk/core");
5
+ const stream_indicator_1 = require("../stream-indicator/stream.indicator");
6
+ const get_stream_indicator_key_fn_1 = require("../utils/get-stream-indicator-key.fn");
7
+ const createNatsStreamIndicatorProvider = (streamName, connectionName, domain) => {
8
+ const DynamicNatsStreamIndicator = class extends stream_indicator_1.NatsStreamIndicator {
9
+ constructor(connection, streamName, domain) {
10
+ super(connection, streamName, domain);
11
+ }
12
+ };
13
+ (0, core_1.Indicator)((0, get_stream_indicator_key_fn_1.getStreamIndicatorKey)(streamName, connectionName, domain))(DynamicNatsStreamIndicator);
14
+ return DynamicNatsStreamIndicator;
15
+ };
16
+ exports.createNatsStreamIndicatorProvider = createNatsStreamIndicatorProvider;
17
+ //# sourceMappingURL=stream.indicator.provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.indicator.provider.js","sourceRoot":"","sources":["../../src/stream-indicator/stream.indicator.provider.ts"],"names":[],"mappings":";;;AAEA,qCAAuC;AAGvC,2EAA2E;AAC3E,sFAA6E;AAEtE,MAAM,iCAAiC,GAAG,CAC/C,UAAkB,EAClB,cAAuB,EACvB,MAAe,EACe,EAAE;IAChC,MAAM,0BAA0B,GAAG,KAAM,SAAQ,sCAAmB;QAClE,YACE,UAA0B,EAC1B,UAAkB,EAClB,MAAe;YAEf,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QACxC,CAAC;KACF,CAAC;IAEF,IAAA,gBAAS,EAAC,IAAA,mDAAqB,EAAC,UAAU,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,CAClE,0BAA0B,CAC3B,CAAC;IAEF,OAAO,0BAA0B,CAAC;AACpC,CAAC,CAAC;AApBW,QAAA,iCAAiC,qCAoB5C"}
@@ -0,0 +1 @@
1
+ export declare const getConnectionIndicatorKey: (connectionName?: string) => string;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getConnectionIndicatorKey = void 0;
4
+ const getConnectionIndicatorKey = (connectionName) => `nats_connection${connectionName ? `_${connectionName}` : ''}`;
5
+ exports.getConnectionIndicatorKey = getConnectionIndicatorKey;
6
+ //# sourceMappingURL=get-connection-indicator-key.fn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-connection-indicator-key.fn.js","sourceRoot":"","sources":["../../src/utils/get-connection-indicator-key.fn.ts"],"names":[],"mappings":";;;AAAO,MAAM,yBAAyB,GAAG,CAAC,cAAuB,EAAU,EAAE,CAC3E,kBAAkB,cAAc,CAAC,CAAC,CAAC,IAAI,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AADpD,QAAA,yBAAyB,6BAC2B"}
@@ -0,0 +1 @@
1
+ export declare const getStreamIndicatorKey: (streamName: string, connectionName?: string, domain?: string) => string;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getStreamIndicatorKey = void 0;
4
+ const getStreamIndicatorKey = (streamName, connectionName, domain) => `nats_stream_${streamName}${connectionName ? `_${connectionName}` : ''}${domain ? `_${domain}` : ''}`;
5
+ exports.getStreamIndicatorKey = getStreamIndicatorKey;
6
+ //# sourceMappingURL=get-stream-indicator-key.fn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-stream-indicator-key.fn.js","sourceRoot":"","sources":["../../src/utils/get-stream-indicator-key.fn.ts"],"names":[],"mappings":";;;AAAO,MAAM,qBAAqB,GAAG,CACnC,UAAkB,EAClB,cAAuB,EACvB,MAAe,EACP,EAAE,CACV,eAAe,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAL3F,QAAA,qBAAqB,yBAKsE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rsdk/nats.common",
3
- "version": "5.6.0-next.0",
3
+ "version": "5.6.0-next.2",
4
4
  "description": "Common functionality for nats consumers and producers",
5
5
  "license": "Apache License 2.0",
6
6
  "publishConfig": {
@@ -27,5 +27,5 @@
27
27
  "lodash": "^4.17.21",
28
28
  "protobufjs": "^7.2.3"
29
29
  },
30
- "gitHead": "cecf86b3768fdf74e8d02434379258126410bea5"
30
+ "gitHead": "0b92c4eb882f52e929f25062c16f8a0936db402f"
31
31
  }
@@ -3,6 +3,8 @@ import type { HealthIndicator } from '@rsdk/core';
3
3
  import { Indicator } from '@rsdk/core';
4
4
  import type { NatsConnection } from 'nats';
5
5
 
6
+ import { getConnectionIndicatorKey } from '../utils/get-connection-indicator-key.fn';
7
+
6
8
  import { NatsClientIndicator } from './client.indicator';
7
9
 
8
10
  export const createNatsClientIndicatorProvider = (
@@ -14,7 +16,7 @@ export const createNatsClientIndicatorProvider = (
14
16
  }
15
17
  };
16
18
 
17
- Indicator(`nats_connection${connectionName ? `_${connectionName}` : ''}`)(
19
+ Indicator(getConnectionIndicatorKey(connectionName))(
18
20
  DynamicNatsClientIndicator,
19
21
  );
20
22
 
package/src/index.ts CHANGED
@@ -16,3 +16,5 @@ export { NatsClientModule } from './client/client.module';
16
16
  export { handleNatsException } from './exceptions/exception.handler';
17
17
  export { DefaultNatsConfig } from './client/client.config';
18
18
  export { NatsClientPlugin } from './client/client.plugin';
19
+ export { NatsStreamIndicatorModuleGenerator } from './stream-indicator/stream.indicator.generator';
20
+ export { getStreamIndicatorKey } from './utils/get-stream-indicator-key.fn';
@@ -0,0 +1,9 @@
1
+ export const NATS_STREAM_INDICATORS_SCOPE = 'NATS_STREAM_INDICATORS_SCOPE';
2
+
3
+ export const NATS_STREAM_INDICATOR_CONNECTION =
4
+ 'NATS_STREAM_INDICATOR_CONNECTION';
5
+
6
+ export const NATS_STREAM_INDICATOR_STREAM_NAME =
7
+ 'NATS_STREAM_INDICATOR_STREAM_NAME';
8
+
9
+ export const NATS_STREAM_INDICATOR_DOMAIN = 'NATS_STREAM_INDICATOR_DOMAIN';
@@ -0,0 +1,54 @@
1
+ import type { DynamicModule } from '@nestjs/common';
2
+ import { RsdkMetadata } from '@rsdk/metadata';
3
+
4
+ import {
5
+ createNatsClientToken,
6
+ NATS_CLIENT_INJECTION_TOKEN,
7
+ } from '../client/client.constants';
8
+
9
+ import {
10
+ NATS_STREAM_INDICATOR_CONNECTION,
11
+ NATS_STREAM_INDICATOR_DOMAIN,
12
+ NATS_STREAM_INDICATOR_STREAM_NAME,
13
+ NATS_STREAM_INDICATORS_SCOPE,
14
+ } from './constants';
15
+ import { createNatsStreamIndicatorProvider } from './stream.indicator.provider';
16
+
17
+ export class NatsStreamIndicatorModuleGenerator {
18
+ static createClientModuleDefinition(
19
+ target: object,
20
+ opts: {
21
+ streamName: string;
22
+ connectionName?: string | undefined;
23
+ domain?: string | undefined;
24
+ },
25
+ ): DynamicModule {
26
+ const { streamName, connectionName, domain } = opts;
27
+
28
+ const moduleDefinition: DynamicModule = {
29
+ global: true,
30
+ module: NatsStreamIndicatorModuleGenerator,
31
+ providers: [
32
+ {
33
+ provide: NATS_STREAM_INDICATOR_CONNECTION,
34
+ useExisting: connectionName
35
+ ? createNatsClientToken(connectionName)
36
+ : NATS_CLIENT_INJECTION_TOKEN,
37
+ },
38
+ {
39
+ provide: NATS_STREAM_INDICATOR_STREAM_NAME,
40
+ useValue: streamName,
41
+ },
42
+ {
43
+ provide: NATS_STREAM_INDICATOR_DOMAIN,
44
+ useValue: domain,
45
+ },
46
+ createNatsStreamIndicatorProvider(streamName, connectionName, domain),
47
+ ],
48
+ };
49
+
50
+ RsdkMetadata.add(target, opts, NATS_STREAM_INDICATORS_SCOPE);
51
+
52
+ return moduleDefinition;
53
+ }
54
+ }
@@ -0,0 +1,29 @@
1
+ import type { Constructor } from '@rsdk/common';
2
+ import type { HealthIndicator } from '@rsdk/core';
3
+ import { Indicator } from '@rsdk/core';
4
+ import type { NatsConnection } from 'nats';
5
+
6
+ import { NatsStreamIndicator } from '../stream-indicator/stream.indicator';
7
+ import { getStreamIndicatorKey } from '../utils/get-stream-indicator-key.fn';
8
+
9
+ export const createNatsStreamIndicatorProvider = (
10
+ streamName: string,
11
+ connectionName?: string,
12
+ domain?: string,
13
+ ): Constructor<HealthIndicator> => {
14
+ const DynamicNatsStreamIndicator = class extends NatsStreamIndicator {
15
+ constructor(
16
+ connection: NatsConnection,
17
+ streamName: string,
18
+ domain?: string,
19
+ ) {
20
+ super(connection, streamName, domain);
21
+ }
22
+ };
23
+
24
+ Indicator(getStreamIndicatorKey(streamName, connectionName, domain))(
25
+ DynamicNatsStreamIndicator,
26
+ );
27
+
28
+ return DynamicNatsStreamIndicator;
29
+ };
@@ -0,0 +1,40 @@
1
+ import { Inject } from '@nestjs/common';
2
+ import { omitUndefined } from '@rsdk/common';
3
+ import type { HealthIndicator } from '@rsdk/core';
4
+ import { CheckResult } from '@rsdk/core';
5
+ import type { NatsConnection } from 'nats';
6
+
7
+ import {
8
+ NATS_STREAM_INDICATOR_CONNECTION,
9
+ NATS_STREAM_INDICATOR_DOMAIN,
10
+ NATS_STREAM_INDICATOR_STREAM_NAME,
11
+ } from './constants';
12
+
13
+ export class NatsStreamIndicator implements HealthIndicator {
14
+ constructor(
15
+ @Inject(NATS_STREAM_INDICATOR_CONNECTION)
16
+ private readonly connection: NatsConnection,
17
+ @Inject(NATS_STREAM_INDICATOR_STREAM_NAME)
18
+ private readonly streamName: string,
19
+ @Inject(NATS_STREAM_INDICATOR_DOMAIN)
20
+ private readonly domain?: string,
21
+ ) {}
22
+
23
+ async check(): Promise<CheckResult> {
24
+ try {
25
+ const jsm = await this.connection.jetstreamManager(
26
+ omitUndefined({
27
+ domain: this.domain,
28
+ }),
29
+ );
30
+
31
+ const { state } = await jsm.streams.info(this.streamName);
32
+
33
+ return CheckResult.up({ ...state });
34
+ } catch (error: unknown) {
35
+ return CheckResult.down({
36
+ error: (error as Error).message,
37
+ });
38
+ }
39
+ }
40
+ }
@@ -0,0 +1,2 @@
1
+ export const getConnectionIndicatorKey = (connectionName?: string): string =>
2
+ `nats_connection${connectionName ? `_${connectionName}` : ''}`;
@@ -0,0 +1,6 @@
1
+ export const getStreamIndicatorKey = (
2
+ streamName: string,
3
+ connectionName?: string,
4
+ domain?: string,
5
+ ): string =>
6
+ `nats_stream_${streamName}${connectionName ? `_${connectionName}` : ''}${domain ? `_${domain}` : ''}`;