@rsdk/nats.kv 5.4.0-rc.0 → 5.4.0

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 (38) hide show
  1. package/CHANGELOG.md +17 -1
  2. package/dist/index.d.ts +6 -1
  3. package/dist/index.js +6 -2
  4. package/dist/index.js.map +1 -1
  5. package/dist/inject-kv-service.decorator.d.ts +5 -2
  6. package/dist/inject-kv-service.decorator.js +7 -7
  7. package/dist/inject-kv-service.decorator.js.map +1 -1
  8. package/dist/module-options.interface.d.ts +3 -0
  9. package/dist/module-options.interface.js +3 -0
  10. package/dist/module-options.interface.js.map +1 -0
  11. package/dist/nats-kv-module.generator.d.ts +9 -3
  12. package/dist/nats-kv-module.generator.js +8 -8
  13. package/dist/nats-kv-module.generator.js.map +1 -1
  14. package/dist/{kv-storage.d.ts → nats-kv.d.ts} +1 -1
  15. package/dist/{kv-storage.js → nats-kv.js} +4 -4
  16. package/dist/nats-kv.js.map +1 -0
  17. package/dist/nats-kv.module.d.ts +6 -5
  18. package/dist/nats-kv.module.js +10 -3
  19. package/dist/nats-kv.module.js.map +1 -1
  20. package/dist/nats-kv.plugin.d.ts +10 -0
  21. package/dist/nats-kv.plugin.js +18 -0
  22. package/dist/nats-kv.plugin.js.map +1 -0
  23. package/dist/nats-kv.service.d.ts +13 -4
  24. package/dist/nats-kv.service.js +38 -13
  25. package/dist/nats-kv.service.js.map +1 -1
  26. package/dist/watch-kv.service.js +1 -2
  27. package/dist/watch-kv.service.js.map +1 -1
  28. package/package.json +2 -2
  29. package/src/index.ts +6 -1
  30. package/src/inject-kv-service.decorator.ts +7 -6
  31. package/src/module-options.interface.ts +3 -0
  32. package/src/nats-kv-module.generator.ts +11 -11
  33. package/src/nats-kv.module.ts +19 -6
  34. package/src/nats-kv.plugin.ts +18 -0
  35. package/src/nats-kv.service.ts +53 -16
  36. package/src/{kv-storage.ts → nats-kv.ts} +1 -1
  37. package/src/watch-kv.service.ts +1 -2
  38. package/dist/kv-storage.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -3,10 +3,26 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
- ## [5.4.0-rc.0](https://github.com/R-Vision/rsdk/compare/v5.3.1-rc.1...v5.4.0-rc.0) (2024-12-02)
6
+ ## [5.4.0](https://github.com/R-Vision/rsdk/compare/v5.3.0...v5.4.0) (2024-12-15)
7
7
 
8
8
  **Note:** Version bump only for package @rsdk/nats.kv
9
9
 
10
+ ## [5.4.0-rc.0](https://github.com/R-Vision/rsdk/compare/v5.4.0-next.11...v5.4.0-rc.0) (2024-12-12)
11
+
12
+ **Note:** Version bump only for package @rsdk/nats.kv
13
+
14
+ ## [5.4.0-next.11](https://github.com/R-Vision/rsdk/compare/v5.4.0-next.10...v5.4.0-next.11) (2024-12-04)
15
+
16
+ ### Bug Fixes
17
+
18
+ * **nats:** check bucket existence + watch on application bootstrap + export ([#313](https://github.com/R-Vision/rsdk/issues/313)) ([2ec5768](https://github.com/R-Vision/rsdk/commit/2ec57688038a55b6f86972b0a95e57f38a901a9f))
19
+
20
+ ## [5.4.0-next.10](https://github.com/R-Vision/rsdk/compare/v5.4.0-next.9...v5.4.0-next.10) (2024-12-03)
21
+
22
+ ### Features
23
+
24
+ * export nats kv/os generators + new bind methods + reconnect env ([#312](https://github.com/R-Vision/rsdk/issues/312)) ([d4302ad](https://github.com/R-Vision/rsdk/commit/d4302ad2122560470712fa4aae91e06e8945fd17))
25
+
10
26
  ## [5.4.0-next.9](https://github.com/R-Vision/rsdk/compare/v5.4.0-next.8...v5.4.0-next.9) (2024-12-02)
11
27
 
12
28
  **Note:** Version bump only for package @rsdk/nats.kv
package/dist/index.d.ts CHANGED
@@ -2,5 +2,10 @@ export { NatsKvService } from './nats-kv.service';
2
2
  export { WatchKv, type KvWatcher } from './watch-kv.decorator';
3
3
  export { NatsKvModule } from './nats-kv.module';
4
4
  export * from './inject-kv-service.decorator';
5
- export * from './kv-storage';
5
+ export * from './nats-kv';
6
6
  export * from './tokens.fn';
7
+ export { NatsKvModuleGenerator } from './nats-kv-module.generator';
8
+ export { NatsKvEntry } from './interfaces/nats-kv-entry.interface';
9
+ export { NatsKvEntryMeta } from './interfaces/nats-kv-entry-meta.interface';
10
+ export { NatsKvPlugin } from './nats-kv.plugin';
11
+ export { DecodeFunc } from './types/decode-func.type';
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.NatsKvModule = exports.WatchKv = exports.NatsKvService = void 0;
17
+ exports.NatsKvPlugin = exports.NatsKvModuleGenerator = exports.NatsKvModule = exports.WatchKv = exports.NatsKvService = void 0;
18
18
  var nats_kv_service_1 = require("./nats-kv.service");
19
19
  Object.defineProperty(exports, "NatsKvService", { enumerable: true, get: function () { return nats_kv_service_1.NatsKvService; } });
20
20
  var watch_kv_decorator_1 = require("./watch-kv.decorator");
@@ -22,6 +22,10 @@ Object.defineProperty(exports, "WatchKv", { enumerable: true, get: function () {
22
22
  var nats_kv_module_1 = require("./nats-kv.module");
23
23
  Object.defineProperty(exports, "NatsKvModule", { enumerable: true, get: function () { return nats_kv_module_1.NatsKvModule; } });
24
24
  __exportStar(require("./inject-kv-service.decorator"), exports);
25
- __exportStar(require("./kv-storage"), exports);
25
+ __exportStar(require("./nats-kv"), exports);
26
26
  __exportStar(require("./tokens.fn"), exports);
27
+ var nats_kv_module_generator_1 = require("./nats-kv-module.generator");
28
+ Object.defineProperty(exports, "NatsKvModuleGenerator", { enumerable: true, get: function () { return nats_kv_module_generator_1.NatsKvModuleGenerator; } });
29
+ var nats_kv_plugin_1 = require("./nats-kv.plugin");
30
+ Object.defineProperty(exports, "NatsKvPlugin", { enumerable: true, get: function () { return nats_kv_plugin_1.NatsKvPlugin; } });
27
31
  //# 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,qDAAkD;AAAzC,gHAAA,aAAa,OAAA;AACtB,2DAA+D;AAAtD,6GAAA,OAAO,OAAA;AAChB,mDAAgD;AAAvC,8GAAA,YAAY,OAAA;AACrB,gEAA8C;AAC9C,+CAA6B;AAC7B,8CAA4B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qDAAkD;AAAzC,gHAAA,aAAa,OAAA;AACtB,2DAA+D;AAAtD,6GAAA,OAAO,OAAA;AAChB,mDAAgD;AAAvC,8GAAA,YAAY,OAAA;AACrB,gEAA8C;AAC9C,4CAA0B;AAC1B,8CAA4B;AAC5B,uEAAmE;AAA1D,iIAAA,qBAAqB,OAAA;AAG9B,mDAAgD;AAAvC,8GAAA,YAAY,OAAA"}
@@ -1,2 +1,5 @@
1
- export declare const InjectKvService: (connectionName?: string) => ParameterDecorator;
2
- export declare const InjectNatsKv: (bucketName: string, connectionName?: string) => ParameterDecorator;
1
+ export declare const InjectNatsKvService: (connectionName?: string) => ParameterDecorator;
2
+ export declare const InjectNatsKv: (bucketName: string, opts?: {
3
+ connectionName?: string;
4
+ domain?: string;
5
+ }) => ParameterDecorator;
@@ -1,17 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.InjectNatsKv = exports.InjectKvService = void 0;
3
+ exports.InjectNatsKv = exports.InjectNatsKvService = void 0;
4
4
  const common_1 = require("@nestjs/common");
5
5
  const metadata_1 = require("@rsdk/metadata");
6
6
  const nats_kv_module_generator_1 = require("./nats-kv-module.generator");
7
7
  const tokens_fn_1 = require("./tokens.fn");
8
- const InjectKvService = (connectionName) => (0, common_1.Inject)((0, tokens_fn_1.createKvServiceToken)(connectionName));
9
- exports.InjectKvService = InjectKvService;
10
- const InjectNatsKv = (bucketName, connectionName) => {
8
+ const InjectNatsKvService = (connectionName) => (0, common_1.Inject)((0, tokens_fn_1.createKvServiceToken)(connectionName));
9
+ exports.InjectNatsKvService = InjectNatsKvService;
10
+ const InjectNatsKv = (bucketName, opts) => {
11
11
  return (target, propertyKey, parameterIndex) => {
12
- (0, common_1.Inject)((0, tokens_fn_1.createKvToken)(bucketName, connectionName))(target, propertyKey, parameterIndex);
13
- const key = `nats-kv:${bucketName}${connectionName ? `:${connectionName}` : ''}`;
14
- const moduleDefinition = nats_kv_module_generator_1.NatsKvModuleGenerator.createClientModuleDefinition(target, bucketName, connectionName);
12
+ (0, common_1.Inject)((0, tokens_fn_1.createKvToken)(bucketName, opts?.connectionName))(target, propertyKey, parameterIndex);
13
+ const key = `nats-kv:${bucketName}${opts?.connectionName ? `:${opts.connectionName}` : ''}`;
14
+ const moduleDefinition = nats_kv_module_generator_1.NatsKvModuleGenerator.createClientModuleDefinition(target, bucketName, opts);
15
15
  metadata_1.RsdkMetadata.setWithScope(target, metadata_1.PLATFORM_RAW_GLOBAL_METADATA_SCOPE, key, moduleDefinition, true);
16
16
  };
17
17
  };
@@ -1 +1 @@
1
- {"version":3,"file":"inject-kv-service.decorator.js","sourceRoot":"","sources":["../src/inject-kv-service.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AACxC,6CAGwB;AAExB,yEAAmE;AACnE,2CAAkE;AAE3D,MAAM,eAAe,GAAG,CAAC,cAAuB,EAAsB,EAAE,CAC7E,IAAA,eAAM,EAAC,IAAA,gCAAoB,EAAC,cAAc,CAAC,CAAC,CAAC;AADlC,QAAA,eAAe,mBACmB;AAExC,MAAM,YAAY,GAAG,CAC1B,UAAkB,EAClB,cAAuB,EACH,EAAE;IACtB,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,EAAE;QAC7C,IAAA,eAAM,EAAC,IAAA,yBAAa,EAAC,UAAU,EAAE,cAAc,CAAC,CAAC,CAC/C,MAAM,EACN,WAAW,EACX,cAAc,CACf,CAAC;QAEF,MAAM,GAAG,GAAG,WAAW,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACjF,MAAM,gBAAgB,GAAG,gDAAqB,CAAC,4BAA4B,CACzE,MAAM,EACN,UAAU,EACV,cAAc,CACf,CAAC;QAEF,uBAAY,CAAC,YAAY,CACvB,MAAM,EACN,6CAAkC,EAClC,GAAG,EACH,gBAAgB,EAChB,IAAI,CACL,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC;AA1BW,QAAA,YAAY,gBA0BvB"}
1
+ {"version":3,"file":"inject-kv-service.decorator.js","sourceRoot":"","sources":["../src/inject-kv-service.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AACxC,6CAGwB;AAExB,yEAAmE;AACnE,2CAAkE;AAE3D,MAAM,mBAAmB,GAAG,CACjC,cAAuB,EACH,EAAE,CAAC,IAAA,eAAM,EAAC,IAAA,gCAAoB,EAAC,cAAc,CAAC,CAAC,CAAC;AAFzD,QAAA,mBAAmB,uBAEsC;AAE/D,MAAM,YAAY,GAAG,CAC1B,UAAkB,EAClB,IAAmD,EAC/B,EAAE;IACtB,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,EAAE;QAC7C,IAAA,eAAM,EAAC,IAAA,yBAAa,EAAC,UAAU,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CACrD,MAAM,EACN,WAAW,EACX,cAAc,CACf,CAAC;QAEF,MAAM,GAAG,GAAG,WAAW,UAAU,GAAG,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC5F,MAAM,gBAAgB,GAAG,gDAAqB,CAAC,4BAA4B,CACzE,MAAM,EACN,UAAU,EACV,IAAI,CACL,CAAC;QAEF,uBAAY,CAAC,YAAY,CACvB,MAAM,EACN,6CAAkC,EAClC,GAAG,EACH,gBAAgB,EAChB,IAAI,CACL,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC;AA1BW,QAAA,YAAY,gBA0BvB"}
@@ -0,0 +1,3 @@
1
+ export interface ModuleOptions {
2
+ connectionName?: string | undefined;
3
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=module-options.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-options.interface.js","sourceRoot":"","sources":["../src/module-options.interface.ts"],"names":[],"mappings":""}
@@ -1,5 +1,11 @@
1
- import type { DynamicModule } from '@nestjs/common';
1
+ import type { DynamicModule, FactoryProvider } from '@nestjs/common';
2
2
  export declare class NatsKvModuleGenerator {
3
- static createClientModuleDefinition(target: object, bucketName: string, connectionName?: string): DynamicModule;
4
- private static createClientProvider;
3
+ static createClientModuleDefinition(target: object, bucketName: string, opts?: {
4
+ connectionName?: string;
5
+ domain?: string;
6
+ }): DynamicModule;
7
+ static createClientProvider(bucketName: string, opts?: {
8
+ connectionName?: string;
9
+ domain?: string;
10
+ }): FactoryProvider;
5
11
  }
@@ -6,23 +6,23 @@ const constants_1 = require("./constants");
6
6
  const nats_kv_module_1 = require("./nats-kv.module");
7
7
  const tokens_fn_1 = require("./tokens.fn");
8
8
  class NatsKvModuleGenerator {
9
- static createClientModuleDefinition(target, bucketName, connectionName) {
10
- const provider = NatsKvModuleGenerator.createClientProvider(bucketName, connectionName);
9
+ static createClientModuleDefinition(target, bucketName, opts) {
10
+ const provider = NatsKvModuleGenerator.createClientProvider(bucketName, opts);
11
11
  const moduleDefinition = {
12
12
  global: true,
13
- imports: [nats_kv_module_1.NatsKvModule.forFeature(connectionName)],
13
+ imports: [nats_kv_module_1.NatsKvModule.forFeature(opts ?? {})],
14
14
  module: NatsKvModuleGenerator,
15
15
  providers: [provider],
16
16
  exports: [provider],
17
17
  };
18
- metadata_1.RsdkMetadata.add(target, { bucketName, connectionName }, constants_1.NATS_KV_STORAGES_RSDK_METADATA_SCOPE);
18
+ metadata_1.RsdkMetadata.add(target, { bucketName, ...opts }, constants_1.NATS_KV_STORAGES_RSDK_METADATA_SCOPE);
19
19
  return moduleDefinition;
20
20
  }
21
- static createClientProvider(bucketName, connectionName) {
21
+ static createClientProvider(bucketName, opts) {
22
22
  return {
23
- provide: (0, tokens_fn_1.createKvToken)(bucketName, connectionName),
24
- inject: [(0, tokens_fn_1.createKvServiceToken)(connectionName)],
25
- useFactory: (service) => service.create({ bucketName, bindOnly: true }),
23
+ provide: (0, tokens_fn_1.createKvToken)(bucketName, opts?.connectionName),
24
+ inject: [(0, tokens_fn_1.createKvServiceToken)(opts?.connectionName)],
25
+ useFactory: (service) => service.bind({ bucketName, ...opts }),
26
26
  };
27
27
  }
28
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"nats-kv-module.generator.js","sourceRoot":"","sources":["../src/nats-kv-module.generator.ts"],"names":[],"mappings":";;;AACA,6CAA8C;AAE9C,2CAAmE;AAEnE,qDAAgD;AAEhD,2CAAkE;AAElE,MAAa,qBAAqB;IAChC,MAAM,CAAC,4BAA4B,CACjC,MAAc,EACd,UAAkB,EAClB,cAAuB;QAEvB,MAAM,QAAQ,GAAG,qBAAqB,CAAC,oBAAoB,CACzD,UAAU,EACV,cAAc,CACf,CAAC;QAEF,MAAM,gBAAgB,GAAkB;YACtC,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,CAAC,6BAAY,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;YAClD,MAAM,EAAE,qBAAqB;YAC7B,SAAS,EAAE,CAAC,QAAQ,CAAC;YACrB,OAAO,EAAE,CAAC,QAAQ,CAAC;SACpB,CAAC;QAEF,uBAAY,CAAC,GAAG,CACd,MAAM,EACN,EAAE,UAAU,EAAE,cAAc,EAAE,EAC9B,gDAAoC,CACrC,CAAC;QAEF,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAEO,MAAM,CAAC,oBAAoB,CACjC,UAAkB,EAClB,cAAuB;QAEvB,OAAO;YACL,OAAO,EAAE,IAAA,yBAAa,EAAC,UAAU,EAAE,cAAc,CAAC;YAClD,MAAM,EAAE,CAAC,IAAA,gCAAoB,EAAC,cAAc,CAAC,CAAC;YAC9C,UAAU,EAAE,CAAC,OAAsB,EAAsB,EAAE,CACzD,OAAO,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;SACjD,CAAC;IACJ,CAAC;CACF;AAvCD,sDAuCC"}
1
+ {"version":3,"file":"nats-kv-module.generator.js","sourceRoot":"","sources":["../src/nats-kv-module.generator.ts"],"names":[],"mappings":";;;AACA,6CAA8C;AAE9C,2CAAmE;AAEnE,qDAAgD;AAEhD,2CAAkE;AAElE,MAAa,qBAAqB;IAChC,MAAM,CAAC,4BAA4B,CACjC,MAAc,EACd,UAAkB,EAClB,IAAmD;QAEnD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,oBAAoB,CACzD,UAAU,EACV,IAAI,CACL,CAAC;QAEF,MAAM,gBAAgB,GAAkB;YACtC,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,CAAC,6BAAY,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YAC9C,MAAM,EAAE,qBAAqB;YAC7B,SAAS,EAAE,CAAC,QAAQ,CAAC;YACrB,OAAO,EAAE,CAAC,QAAQ,CAAC;SACpB,CAAC;QAEF,uBAAY,CAAC,GAAG,CACd,MAAM,EACN,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,EACvB,gDAAoC,CACrC,CAAC;QAEF,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,oBAAoB,CACzB,UAAkB,EAClB,IAAmD;QAEnD,OAAO;YACL,OAAO,EAAE,IAAA,yBAAa,EAAC,UAAU,EAAE,IAAI,EAAE,cAAc,CAAC;YACxD,MAAM,EAAE,CAAC,IAAA,gCAAoB,EAAC,IAAI,EAAE,cAAc,CAAC,CAAC;YACpD,UAAU,EAAE,CAAC,OAAsB,EAAmB,EAAE,CACtD,OAAO,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,CAAC;SACxC,CAAC;IACJ,CAAC;CACF;AAvCD,sDAuCC"}
@@ -3,7 +3,7 @@ import type { KV, KvDeleteOptions, KvPutOptions, KvStatus, NatsConnection, Paylo
3
3
  import type { NatsKvEntry } from './interfaces/nats-kv-entry.interface';
4
4
  import type { NatsKvEntryMeta } from './interfaces/nats-kv-entry-meta.interface';
5
5
  import type { DecodeFunc } from './types/decode-func.type';
6
- export declare class KvStorage {
6
+ export declare class NatsKv {
7
7
  private readonly storage;
8
8
  private readonly logger;
9
9
  private readonly bucketName;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.KvStorage = void 0;
3
+ exports.NatsKv = void 0;
4
4
  const nats_1 = require("nats");
5
- class KvStorage {
5
+ class NatsKv {
6
6
  storage;
7
7
  logger;
8
8
  bucketName;
@@ -118,5 +118,5 @@ class KvStorage {
118
118
  };
119
119
  }
120
120
  }
121
- exports.KvStorage = KvStorage;
122
- //# sourceMappingURL=kv-storage.js.map
121
+ exports.NatsKv = NatsKv;
122
+ //# sourceMappingURL=nats-kv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nats-kv.js","sourceRoot":"","sources":["../src/nats-kv.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
- import type { DynamicModule, OnModuleDestroy, OnModuleInit } from '@nestjs/common';
1
+ import type { DynamicModule, OnApplicationBootstrap, OnApplicationShutdown } from '@nestjs/common';
2
+ import type { ModuleOptions } from './module-options.interface';
2
3
  import { WatchKvService } from './watch-kv.service';
3
- export declare class NatsKvModule implements OnModuleInit, OnModuleDestroy {
4
+ export declare class NatsKvModule implements OnApplicationBootstrap, OnApplicationShutdown {
4
5
  private readonly watchKvService;
5
6
  constructor(watchKvService: WatchKvService);
6
- static forFeature(connectionName?: string): DynamicModule;
7
- onModuleInit(): Promise<void>;
8
- onModuleDestroy(): Promise<void>;
7
+ static forFeature({ connectionName }: ModuleOptions): DynamicModule;
8
+ onApplicationBootstrap(): Promise<void>;
9
+ onApplicationShutdown(): Promise<void>;
9
10
  }
@@ -22,13 +22,14 @@ let NatsKvModule = NatsKvModule_1 = class NatsKvModule {
22
22
  constructor(watchKvService) {
23
23
  this.watchKvService = watchKvService;
24
24
  }
25
- static forFeature(connectionName) {
25
+ static forFeature({ connectionName }) {
26
26
  const clientProvider = {
27
27
  provide: (0, tokens_fn_1.createKvServiceToken)(connectionName),
28
28
  useClass: nats_kv_service_1.NatsKvService,
29
29
  };
30
30
  return {
31
31
  module: NatsKvModule_1,
32
+ global: true,
32
33
  providers: [
33
34
  {
34
35
  provide: nats_common_1.NATS_CLIENT_INJECTION_TOKEN_FOR_PACKAGE,
@@ -36,6 +37,12 @@ let NatsKvModule = NatsKvModule_1 = class NatsKvModule {
36
37
  ? (0, nats_common_1.createNatsClientToken)(connectionName)
37
38
  : nats_common_1.NATS_CLIENT_INJECTION_TOKEN,
38
39
  },
40
+ {
41
+ provide: nats_common_1.NATS_CONFIG_INJECTION_TOKEN_FOR_PACKAGE,
42
+ useExisting: connectionName
43
+ ? (0, nats_common_1.createNatsConfigToken)(connectionName)
44
+ : nats_common_1.NATS_CONFIG_INJECTION_TOKEN,
45
+ },
39
46
  {
40
47
  provide: 'CONNECTION_NAME',
41
48
  useFactory: () => connectionName,
@@ -45,10 +52,10 @@ let NatsKvModule = NatsKvModule_1 = class NatsKvModule {
45
52
  exports: [clientProvider],
46
53
  };
47
54
  }
48
- async onModuleInit() {
55
+ async onApplicationBootstrap() {
49
56
  await this.watchKvService?.runWatches();
50
57
  }
51
- async onModuleDestroy() {
58
+ async onApplicationShutdown() {
52
59
  await this.watchKvService?.stopWatches();
53
60
  }
54
61
  };
@@ -1 +1 @@
1
- {"version":3,"file":"nats-kv.module.js","sourceRoot":"","sources":["../src/nats-kv.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAMA,2CAAwC;AACxC,uCAA+C;AAC/C,mDAI2B;AAE3B,uDAAkD;AAClD,2CAAmD;AACnD,yDAAoD;AAM7C,IAAM,YAAY,oBAAlB,MAAM,YAAY;IACM;IAA7B,YAA6B,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;IAAG,CAAC;IAExD,MAAM,CAAC,UAAU,CAAC,cAAuB;QAC9C,MAAM,cAAc,GAAa;YAC/B,OAAO,EAAE,IAAA,gCAAoB,EAAC,cAAc,CAAC;YAC7C,QAAQ,EAAE,+BAAa;SACxB,CAAC;QAEF,OAAO;YACL,MAAM,EAAE,cAAY;YACpB,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,qDAAuC;oBAChD,WAAW,EAAE,cAAc;wBACzB,CAAC,CAAC,IAAA,mCAAqB,EAAC,cAAc,CAAC;wBACvC,CAAC,CAAC,yCAA2B;iBAChC;gBACD;oBACE,OAAO,EAAE,iBAAiB;oBAC1B,UAAU,EAAE,GAAG,EAAE,CAAC,cAAc;iBACjC;gBACD,cAAc;aACf;YACD,OAAO,EAAE,CAAC,cAAc,CAAC;SAC1B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,IAAI,CAAC,cAAc,EAAE,UAAU,EAAE,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE,CAAC;IAC3C,CAAC;CACF,CAAA;AAnCY,oCAAY;uBAAZ,YAAY;IAJxB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,sBAAe,CAAC;QAC1B,SAAS,EAAE,CAAC,+BAAa,EAAE,iCAAc,CAAC;KAC3C,CAAC;qCAE6C,iCAAc;GADhD,YAAY,CAmCxB"}
1
+ {"version":3,"file":"nats-kv.module.js","sourceRoot":"","sources":["../src/nats-kv.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAMA,2CAAwC;AACxC,uCAA+C;AAC/C,mDAO2B;AAG3B,uDAAkD;AAClD,2CAAmD;AACnD,yDAAoD;AAM7C,IAAM,YAAY,oBAAlB,MAAM,YAAY;IAGM;IAA7B,YAA6B,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;IAAG,CAAC;IAExD,MAAM,CAAC,UAAU,CAAC,EAAE,cAAc,EAAiB;QACxD,MAAM,cAAc,GAAa;YAC/B,OAAO,EAAE,IAAA,gCAAoB,EAAC,cAAc,CAAC;YAC7C,QAAQ,EAAE,+BAAa;SACxB,CAAC;QAEF,OAAO;YACL,MAAM,EAAE,cAAY;YACpB,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,qDAAuC;oBAChD,WAAW,EAAE,cAAc;wBACzB,CAAC,CAAC,IAAA,mCAAqB,EAAC,cAAc,CAAC;wBACvC,CAAC,CAAC,yCAA2B;iBAChC;gBACD;oBACE,OAAO,EAAE,qDAAuC;oBAChD,WAAW,EAAE,cAAc;wBACzB,CAAC,CAAC,IAAA,mCAAqB,EAAC,cAAc,CAAC;wBACvC,CAAC,CAAC,yCAA2B;iBAChC;gBACD;oBACE,OAAO,EAAE,iBAAiB;oBAC1B,UAAU,EAAE,GAAG,EAAE,CAAC,cAAc;iBACjC;gBACD,cAAc;aACf;YACD,OAAO,EAAE,CAAC,cAAc,CAAC;SAC1B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,sBAAsB;QAC1B,MAAM,IAAI,CAAC,cAAc,EAAE,UAAU,EAAE,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,qBAAqB;QACzB,MAAM,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE,CAAC;IAC3C,CAAC;CACF,CAAA;AA5CY,oCAAY;uBAAZ,YAAY;IAJxB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,sBAAe,CAAC;QAC1B,SAAS,EAAE,CAAC,+BAAa,EAAE,iCAAc,CAAC;KAC3C,CAAC;qCAI6C,iCAAc;GAHhD,YAAY,CA4CxB"}
@@ -0,0 +1,10 @@
1
+ import type { DynamicModule } from '@nestjs/common';
2
+ import type { Constructor } from '@rsdk/common';
3
+ import type { AppropriateTransports, PlatformAppPlugin } from '@rsdk/core';
4
+ import type { ModuleOptions } from './module-options.interface';
5
+ export declare class NatsKvPlugin implements PlatformAppPlugin {
6
+ private readonly options?;
7
+ constructor(options?: ModuleOptions | undefined);
8
+ forTransports(): AppropriateTransports;
9
+ modules(): (DynamicModule | Constructor)[];
10
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NatsKvPlugin = void 0;
4
+ const nats_kv_module_1 = require("./nats-kv.module");
5
+ class NatsKvPlugin {
6
+ options;
7
+ constructor(options) {
8
+ this.options = options;
9
+ }
10
+ forTransports() {
11
+ return 'any';
12
+ }
13
+ modules() {
14
+ return [nats_kv_module_1.NatsKvModule.forFeature(this.options ?? {})];
15
+ }
16
+ }
17
+ exports.NatsKvPlugin = NatsKvPlugin;
18
+ //# sourceMappingURL=nats-kv.plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nats-kv.plugin.js","sourceRoot":"","sources":["../src/nats-kv.plugin.ts"],"names":[],"mappings":";;;AAKA,qDAAgD;AAEhD,MAAa,YAAY;IACM;IAA7B,YAA6B,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;IAAG,CAAC;IAExD,aAAa;QACX,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO;QACL,OAAO,CAAC,6BAAY,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;IACvD,CAAC;CACF;AAVD,oCAUC"}
@@ -1,18 +1,27 @@
1
1
  import { ILogger } from '@rsdk/logging';
2
+ import { DefaultNatsConfig } from '@rsdk/nats.common';
2
3
  import { NatsConnection } from 'nats';
3
4
  import type { KvOptions } from 'nats/lib/jetstream/types';
4
- import { KvStorage } from './kv-storage';
5
+ import { NatsKv } from './nats-kv';
5
6
  export declare class NatsKvService {
6
7
  private readonly logger;
7
8
  private readonly nats;
8
- constructor(logger: ILogger, nats: NatsConnection);
9
+ private readonly config;
10
+ constructor(logger: ILogger, nats: NatsConnection, config: DefaultNatsConfig);
9
11
  /**
10
12
  * Gets or creates a JetStream KV store
11
13
  */
12
- create({ bucketName, domain, ...opts }: Partial<KvOptions> & {
14
+ create({ bucketName, domain, ...opts }: Partial<Omit<KvOptions, 'bindOnly'>> & {
13
15
  bucketName: string;
14
16
  domain?: string;
15
- }): Promise<KvStorage>;
17
+ }): Promise<NatsKv>;
18
+ /**
19
+ * Gets a JetStream KV store
20
+ */
21
+ bind({ bucketName, domain, ...opts }: Partial<Omit<KvOptions, 'bindOnly'>> & {
22
+ bucketName: string;
23
+ domain?: string;
24
+ }): Promise<NatsKv>;
16
25
  /**
17
26
  * Waits for the specified bucket to exist.
18
27
  *
@@ -17,34 +17,56 @@ const common_1 = require("@nestjs/common");
17
17
  const common_2 = require("@rsdk/common");
18
18
  const core_1 = require("@rsdk/core");
19
19
  const nats_common_1 = require("@rsdk/nats.common");
20
- const kv_storage_1 = require("./kv-storage");
20
+ const nats_kv_1 = require("./nats-kv");
21
21
  let NatsKvService = class NatsKvService {
22
22
  logger;
23
23
  nats;
24
- constructor(logger, nats) {
24
+ config;
25
+ constructor(logger, nats, config) {
25
26
  this.logger = logger;
26
27
  this.nats = nats;
28
+ this.config = config;
27
29
  }
28
30
  /**
29
31
  * Gets or creates a JetStream KV store
30
32
  */
31
33
  async create({ bucketName, domain, ...opts }) {
32
- const jsOptions = domain ? { domain } : undefined;
34
+ const js = this.nats.jetstream({
35
+ domain: domain ?? this.config.defaultJetStreamDomain,
36
+ });
33
37
  try {
34
- const kv = await this.nats
35
- .jetstream(jsOptions)
36
- .views.kv(bucketName, opts);
37
- if (opts.bindOnly && !(await kv.status())) {
38
- throw new common_1.NotFoundException(`Nats KV ${bucketName} not found`);
39
- }
38
+ const kv = await js.views.kv(bucketName, opts);
40
39
  this.logger.trace('KV store initialized', {
41
40
  connectionName: this.nats.info,
42
41
  bucketName,
43
42
  });
44
- return new kv_storage_1.KvStorage(kv, this.logger, bucketName, this.nats);
43
+ return new nats_kv_1.NatsKv(kv, this.logger, bucketName, this.nats);
45
44
  }
46
45
  catch (error) {
47
- this.logger.error('Failed to get or create KV store', {
46
+ this.logger.error('Failed to create KV store', {
47
+ err: error,
48
+ bucketName,
49
+ });
50
+ throw error;
51
+ }
52
+ }
53
+ /**
54
+ * Gets a JetStream KV store
55
+ */
56
+ async bind({ bucketName, domain, ...opts }) {
57
+ const js = this.nats.jetstream({
58
+ domain: domain ?? this.config.defaultJetStreamDomain,
59
+ });
60
+ try {
61
+ const kv = await js.views.kv(bucketName, { ...opts, bindOnly: true });
62
+ this.logger.trace('KV store bound', {
63
+ connectionName: this.nats.info,
64
+ bucketName,
65
+ });
66
+ return new nats_kv_1.NatsKv(kv, this.logger, bucketName, this.nats);
67
+ }
68
+ catch (error) {
69
+ this.logger.error('Failed to get KV store', {
48
70
  err: error,
49
71
  bucketName,
50
72
  });
@@ -82,7 +104,9 @@ let NatsKvService = class NatsKvService {
82
104
  */
83
105
  async isBucketExists(bucketName) {
84
106
  try {
85
- const kv = await this.create({ bucketName, bindOnly: true });
107
+ const kv = await this.nats
108
+ .jetstream()
109
+ .views.kv(bucketName, { bindOnly: true });
86
110
  await kv.status();
87
111
  }
88
112
  catch {
@@ -96,6 +120,7 @@ exports.NatsKvService = NatsKvService = __decorate([
96
120
  (0, common_1.Injectable)(),
97
121
  __param(0, (0, core_1.InjectLogger)(NatsKvService)),
98
122
  __param(1, (0, common_1.Inject)(nats_common_1.NATS_CLIENT_INJECTION_TOKEN_FOR_PACKAGE)),
99
- __metadata("design:paramtypes", [Object, Object])
123
+ __param(2, (0, common_1.Inject)(nats_common_1.NATS_CONFIG_INJECTION_TOKEN_FOR_PACKAGE)),
124
+ __metadata("design:paramtypes", [Object, Object, nats_common_1.DefaultNatsConfig])
100
125
  ], NatsKvService);
101
126
  //# sourceMappingURL=nats-kv.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nats-kv.service.js","sourceRoot":"","sources":["../src/nats-kv.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nats-kv.service.js","sourceRoot":"","sources":["../src/nats-kv.service.ts"],"names":[],"mappings":"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"}
@@ -65,9 +65,8 @@ let WatchKvService = class WatchKvService {
65
65
  * @returns A Promise that resolves when the watch operation is complete.
66
66
  */
67
67
  async runWatch(config, watcher) {
68
- const kv = await this.nats.create({
68
+ const kv = await this.nats.bind({
69
69
  bucketName: config.bucket,
70
- bindOnly: true,
71
70
  });
72
71
  this.watch(kv.getRawStorage(), { include: nats_1.KvWatchInclude.LastValue }, async (event) => {
73
72
  switch (event.operation) {
@@ -1 +1 @@
1
- {"version":3,"file":"watch-kv.service.js","sourceRoot":"","sources":["../src/watch-kv.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"watch-kv.service.js","sourceRoot":"","sources":["../src/watch-kv.service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rsdk/nats.kv",
3
- "version": "5.4.0-rc.0",
3
+ "version": "5.4.0",
4
4
  "description": "Nats NestJS key-Value storage",
5
5
  "main": "dist/index.js",
6
6
  "license": "Apache License 2.0",
@@ -38,5 +38,5 @@
38
38
  "rxjs": "^7.8.1"
39
39
  },
40
40
  "nx": {},
41
- "gitHead": "4083b1a0b34f2d26f2850c9b17db386a4ec17f99"
41
+ "gitHead": "042109a747dbe31c009f6c1f230596f79c064328"
42
42
  }
package/src/index.ts CHANGED
@@ -2,5 +2,10 @@ export { NatsKvService } from './nats-kv.service';
2
2
  export { WatchKv, type KvWatcher } from './watch-kv.decorator';
3
3
  export { NatsKvModule } from './nats-kv.module';
4
4
  export * from './inject-kv-service.decorator';
5
- export * from './kv-storage';
5
+ export * from './nats-kv';
6
6
  export * from './tokens.fn';
7
+ export { NatsKvModuleGenerator } from './nats-kv-module.generator';
8
+ export { NatsKvEntry } from './interfaces/nats-kv-entry.interface';
9
+ export { NatsKvEntryMeta } from './interfaces/nats-kv-entry-meta.interface';
10
+ export { NatsKvPlugin } from './nats-kv.plugin';
11
+ export { DecodeFunc } from './types/decode-func.type';
@@ -7,25 +7,26 @@ import {
7
7
  import { NatsKvModuleGenerator } from './nats-kv-module.generator';
8
8
  import { createKvServiceToken, createKvToken } from './tokens.fn';
9
9
 
10
- export const InjectKvService = (connectionName?: string): ParameterDecorator =>
11
- Inject(createKvServiceToken(connectionName));
10
+ export const InjectNatsKvService = (
11
+ connectionName?: string,
12
+ ): ParameterDecorator => Inject(createKvServiceToken(connectionName));
12
13
 
13
14
  export const InjectNatsKv = (
14
15
  bucketName: string,
15
- connectionName?: string,
16
+ opts?: { connectionName?: string; domain?: string },
16
17
  ): ParameterDecorator => {
17
18
  return (target, propertyKey, parameterIndex) => {
18
- Inject(createKvToken(bucketName, connectionName))(
19
+ Inject(createKvToken(bucketName, opts?.connectionName))(
19
20
  target,
20
21
  propertyKey,
21
22
  parameterIndex,
22
23
  );
23
24
 
24
- const key = `nats-kv:${bucketName}${connectionName ? `:${connectionName}` : ''}`;
25
+ const key = `nats-kv:${bucketName}${opts?.connectionName ? `:${opts.connectionName}` : ''}`;
25
26
  const moduleDefinition = NatsKvModuleGenerator.createClientModuleDefinition(
26
27
  target,
27
28
  bucketName,
28
- connectionName,
29
+ opts,
29
30
  );
30
31
 
31
32
  RsdkMetadata.setWithScope(
@@ -0,0 +1,3 @@
1
+ export interface ModuleOptions {
2
+ connectionName?: string | undefined;
3
+ }
@@ -2,7 +2,7 @@ import type { DynamicModule, FactoryProvider } from '@nestjs/common';
2
2
  import { RsdkMetadata } from '@rsdk/metadata';
3
3
 
4
4
  import { NATS_KV_STORAGES_RSDK_METADATA_SCOPE } from './constants';
5
- import type { KvStorage } from './kv-storage';
5
+ import type { NatsKv } from './nats-kv';
6
6
  import { NatsKvModule } from './nats-kv.module';
7
7
  import type { NatsKvService } from './nats-kv.service';
8
8
  import { createKvServiceToken, createKvToken } from './tokens.fn';
@@ -11,16 +11,16 @@ export class NatsKvModuleGenerator {
11
11
  static createClientModuleDefinition(
12
12
  target: object,
13
13
  bucketName: string,
14
- connectionName?: string,
14
+ opts?: { connectionName?: string; domain?: string },
15
15
  ): DynamicModule {
16
16
  const provider = NatsKvModuleGenerator.createClientProvider(
17
17
  bucketName,
18
- connectionName,
18
+ opts,
19
19
  );
20
20
 
21
21
  const moduleDefinition: DynamicModule = {
22
22
  global: true,
23
- imports: [NatsKvModule.forFeature(connectionName)],
23
+ imports: [NatsKvModule.forFeature(opts ?? {})],
24
24
  module: NatsKvModuleGenerator,
25
25
  providers: [provider],
26
26
  exports: [provider],
@@ -28,22 +28,22 @@ export class NatsKvModuleGenerator {
28
28
 
29
29
  RsdkMetadata.add(
30
30
  target,
31
- { bucketName, connectionName },
31
+ { bucketName, ...opts },
32
32
  NATS_KV_STORAGES_RSDK_METADATA_SCOPE,
33
33
  );
34
34
 
35
35
  return moduleDefinition;
36
36
  }
37
37
 
38
- private static createClientProvider(
38
+ static createClientProvider(
39
39
  bucketName: string,
40
- connectionName?: string,
40
+ opts?: { connectionName?: string; domain?: string },
41
41
  ): FactoryProvider {
42
42
  return {
43
- provide: createKvToken(bucketName, connectionName),
44
- inject: [createKvServiceToken(connectionName)],
45
- useFactory: (service: NatsKvService): Promise<KvStorage> =>
46
- service.create({ bucketName, bindOnly: true }),
43
+ provide: createKvToken(bucketName, opts?.connectionName),
44
+ inject: [createKvServiceToken(opts?.connectionName)],
45
+ useFactory: (service: NatsKvService): Promise<NatsKv> =>
46
+ service.bind({ bucketName, ...opts }),
47
47
  };
48
48
  }
49
49
  }
@@ -1,17 +1,21 @@
1
1
  import type {
2
2
  DynamicModule,
3
- OnModuleDestroy,
4
- OnModuleInit,
3
+ OnApplicationBootstrap,
4
+ OnApplicationShutdown,
5
5
  Provider,
6
6
  } from '@nestjs/common';
7
7
  import { Module } from '@nestjs/common';
8
8
  import { DiscoveryModule } from '@nestjs/core';
9
9
  import {
10
10
  createNatsClientToken,
11
+ createNatsConfigToken,
11
12
  NATS_CLIENT_INJECTION_TOKEN,
12
13
  NATS_CLIENT_INJECTION_TOKEN_FOR_PACKAGE,
14
+ NATS_CONFIG_INJECTION_TOKEN,
15
+ NATS_CONFIG_INJECTION_TOKEN_FOR_PACKAGE,
13
16
  } from '@rsdk/nats.common';
14
17
 
18
+ import type { ModuleOptions } from './module-options.interface';
15
19
  import { NatsKvService } from './nats-kv.service';
16
20
  import { createKvServiceToken } from './tokens.fn';
17
21
  import { WatchKvService } from './watch-kv.service';
@@ -20,10 +24,12 @@ import { WatchKvService } from './watch-kv.service';
20
24
  imports: [DiscoveryModule],
21
25
  providers: [NatsKvService, WatchKvService],
22
26
  })
23
- export class NatsKvModule implements OnModuleInit, OnModuleDestroy {
27
+ export class NatsKvModule
28
+ implements OnApplicationBootstrap, OnApplicationShutdown
29
+ {
24
30
  constructor(private readonly watchKvService: WatchKvService) {}
25
31
 
26
- public static forFeature(connectionName?: string): DynamicModule {
32
+ public static forFeature({ connectionName }: ModuleOptions): DynamicModule {
27
33
  const clientProvider: Provider = {
28
34
  provide: createKvServiceToken(connectionName),
29
35
  useClass: NatsKvService,
@@ -31,6 +37,7 @@ export class NatsKvModule implements OnModuleInit, OnModuleDestroy {
31
37
 
32
38
  return {
33
39
  module: NatsKvModule,
40
+ global: true,
34
41
  providers: [
35
42
  {
36
43
  provide: NATS_CLIENT_INJECTION_TOKEN_FOR_PACKAGE,
@@ -38,6 +45,12 @@ export class NatsKvModule implements OnModuleInit, OnModuleDestroy {
38
45
  ? createNatsClientToken(connectionName)
39
46
  : NATS_CLIENT_INJECTION_TOKEN,
40
47
  },
48
+ {
49
+ provide: NATS_CONFIG_INJECTION_TOKEN_FOR_PACKAGE,
50
+ useExisting: connectionName
51
+ ? createNatsConfigToken(connectionName)
52
+ : NATS_CONFIG_INJECTION_TOKEN,
53
+ },
41
54
  {
42
55
  provide: 'CONNECTION_NAME',
43
56
  useFactory: () => connectionName,
@@ -48,11 +61,11 @@ export class NatsKvModule implements OnModuleInit, OnModuleDestroy {
48
61
  };
49
62
  }
50
63
 
51
- async onModuleInit(): Promise<void> {
64
+ async onApplicationBootstrap(): Promise<void> {
52
65
  await this.watchKvService?.runWatches();
53
66
  }
54
67
 
55
- async onModuleDestroy(): Promise<void> {
68
+ async onApplicationShutdown(): Promise<void> {
56
69
  await this.watchKvService?.stopWatches();
57
70
  }
58
71
  }
@@ -0,0 +1,18 @@
1
+ import type { DynamicModule } from '@nestjs/common';
2
+ import type { Constructor } from '@rsdk/common';
3
+ import type { AppropriateTransports, PlatformAppPlugin } from '@rsdk/core';
4
+
5
+ import type { ModuleOptions } from './module-options.interface';
6
+ import { NatsKvModule } from './nats-kv.module';
7
+
8
+ export class NatsKvPlugin implements PlatformAppPlugin {
9
+ constructor(private readonly options?: ModuleOptions) {}
10
+
11
+ forTransports(): AppropriateTransports {
12
+ return 'any';
13
+ }
14
+
15
+ modules(): (DynamicModule | Constructor)[] {
16
+ return [NatsKvModule.forFeature(this.options ?? {})];
17
+ }
18
+ }
@@ -1,12 +1,16 @@
1
- import { Inject, Injectable, NotFoundException } from '@nestjs/common';
1
+ import { Inject, Injectable } from '@nestjs/common';
2
2
  import { delay, Timespan } from '@rsdk/common';
3
3
  import { InjectLogger, InternalException } from '@rsdk/core';
4
4
  import { ILogger } from '@rsdk/logging';
5
- import { NATS_CLIENT_INJECTION_TOKEN_FOR_PACKAGE } from '@rsdk/nats.common';
5
+ import {
6
+ DefaultNatsConfig,
7
+ NATS_CLIENT_INJECTION_TOKEN_FOR_PACKAGE,
8
+ NATS_CONFIG_INJECTION_TOKEN_FOR_PACKAGE,
9
+ } from '@rsdk/nats.common';
6
10
  import { NatsConnection } from 'nats';
7
11
  import type { KvOptions } from 'nats/lib/jetstream/types';
8
12
 
9
- import { KvStorage } from './kv-storage';
13
+ import { NatsKv } from './nats-kv';
10
14
 
11
15
  @Injectable()
12
16
  export class NatsKvService {
@@ -15,6 +19,8 @@ export class NatsKvService {
15
19
  private readonly logger: ILogger,
16
20
  @Inject(NATS_CLIENT_INJECTION_TOKEN_FOR_PACKAGE)
17
21
  private readonly nats: NatsConnection,
22
+ @Inject(NATS_CONFIG_INJECTION_TOKEN_FOR_PACKAGE)
23
+ private readonly config: DefaultNatsConfig,
18
24
  ) {}
19
25
 
20
26
  /**
@@ -24,29 +30,58 @@ export class NatsKvService {
24
30
  bucketName,
25
31
  domain,
26
32
  ...opts
27
- }: Partial<KvOptions> & {
33
+ }: Partial<Omit<KvOptions, 'bindOnly'>> & {
28
34
  bucketName: string;
29
35
  domain?: string;
30
- }): Promise<KvStorage> {
31
- const jsOptions = domain ? { domain } : undefined;
36
+ }): Promise<NatsKv> {
37
+ const js = this.nats.jetstream({
38
+ domain: domain ?? this.config.defaultJetStreamDomain,
39
+ });
32
40
 
33
41
  try {
34
- const kv = await this.nats
35
- .jetstream(jsOptions)
36
- .views.kv(bucketName, opts);
37
-
38
- if (opts.bindOnly && !(await kv.status())) {
39
- throw new NotFoundException(`Nats KV ${bucketName} not found`);
40
- }
42
+ const kv = await js.views.kv(bucketName, opts);
41
43
 
42
44
  this.logger.trace('KV store initialized', {
43
45
  connectionName: this.nats.info,
44
46
  bucketName,
45
47
  });
46
48
 
47
- return new KvStorage(kv, this.logger, bucketName, this.nats);
49
+ return new NatsKv(kv, this.logger, bucketName, this.nats);
50
+ } catch (error) {
51
+ this.logger.error('Failed to create KV store', {
52
+ err: error,
53
+ bucketName,
54
+ });
55
+ throw error;
56
+ }
57
+ }
58
+
59
+ /**
60
+ * Gets a JetStream KV store
61
+ */
62
+ public async bind({
63
+ bucketName,
64
+ domain,
65
+ ...opts
66
+ }: Partial<Omit<KvOptions, 'bindOnly'>> & {
67
+ bucketName: string;
68
+ domain?: string;
69
+ }): Promise<NatsKv> {
70
+ const js = this.nats.jetstream({
71
+ domain: domain ?? this.config.defaultJetStreamDomain,
72
+ });
73
+
74
+ try {
75
+ const kv = await js.views.kv(bucketName, { ...opts, bindOnly: true });
76
+
77
+ this.logger.trace('KV store bound', {
78
+ connectionName: this.nats.info,
79
+ bucketName,
80
+ });
81
+
82
+ return new NatsKv(kv, this.logger, bucketName, this.nats);
48
83
  } catch (error) {
49
- this.logger.error('Failed to get or create KV store', {
84
+ this.logger.error('Failed to get KV store', {
50
85
  err: error,
51
86
  bucketName,
52
87
  });
@@ -92,7 +127,9 @@ export class NatsKvService {
92
127
  */
93
128
  public async isBucketExists(bucketName: string): Promise<boolean> {
94
129
  try {
95
- const kv = await this.create({ bucketName, bindOnly: true });
130
+ const kv = await this.nats
131
+ .jetstream()
132
+ .views.kv(bucketName, { bindOnly: true });
96
133
 
97
134
  await kv.status();
98
135
  } catch {
@@ -14,7 +14,7 @@ import type { NatsKvEntry } from './interfaces/nats-kv-entry.interface';
14
14
  import type { NatsKvEntryMeta } from './interfaces/nats-kv-entry-meta.interface';
15
15
  import type { DecodeFunc } from './types/decode-func.type';
16
16
 
17
- export class KvStorage {
17
+ export class NatsKv {
18
18
  constructor(
19
19
  private readonly storage: KV,
20
20
  private readonly logger: ILogger,
@@ -67,9 +67,8 @@ export class WatchKvService {
67
67
  config: WatchConfig,
68
68
  watcher: KvWatcher,
69
69
  ): Promise<void> {
70
- const kv = await this.nats.create({
70
+ const kv = await this.nats.bind({
71
71
  bucketName: config.bucket,
72
- bindOnly: true,
73
72
  });
74
73
 
75
74
  this.watch(
@@ -1 +0,0 @@
1
- {"version":3,"file":"kv-storage.js","sourceRoot":"","sources":["../src/kv-storage.ts"],"names":[],"mappings":";;;AAUA,+BAA6C;AAM7C,MAAa,SAAS;IAED;IACA;IACA;IACA;IAJnB,YACmB,OAAW,EACX,MAAe,EACf,UAAkB,EAClB,UAA0B;QAH1B,YAAO,GAAP,OAAO,CAAI;QACX,WAAM,GAAN,MAAM,CAAS;QACf,eAAU,GAAV,UAAU,CAAQ;QAClB,eAAU,GAAV,UAAU,CAAgB;IAC1C,CAAC;IAEG,KAAK,CAAC,OAAO,CAAC,MAA0B;QAC7C,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,EAAE,CAAC;QAEhB,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YACrC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,cAAc,CACzB,MAAc,EACd,MAA0B;QAE1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAE7D;;;UAGE;QACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,MAAM,GAA0B,EAAE,CAAC;QAEzC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAE1C,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;gBAChD,SAAS;YACX,CAAC;YAED,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;gBACzB,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;aAC7B,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kDAAkD,EAAE;YACpE,KAAK,EAAE,MAAM,CAAC,MAAM;SACrB,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,GAAG,CACd,GAAW,EACX,MAAc;QAEd,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAElD,OAAO,KAAK,EAAE,IAAI,IAAI,IAAI,CAAC;IAC7B,CAAC;IAEM,KAAK,CAAC,WAAW,CACtB,GAAW,EACX,MAAc;QAEd,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE1C,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;YACzB,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;SAC7B,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,OAAO,CAAC,GAAW;QAC9B,6GAA6G;QAC7G,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,OAAO,IAAI,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC;QAEhD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU;aACnC,SAAS,EAAE;aACX,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE;YACzB,YAAY,EAAE,IAAI;YAClB,cAAc,EAAE,OAAO;YACvB,cAAc,EAAE,oBAAa,CAAC,cAAc;SAC7C,CAAC,CAAC;QAEL,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAEtE,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YAC7B,GAAG,CAAC,GAAG,EAAE,CAAC;YAEV,OAAO;gBACL,OAAO,EAAE,IAAI,IAAI,CAAC,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAClD,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC;gBACnD,SAAS,EACN,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,cAAc,CAA6B;oBAC7D,KAAK;gBACP,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,cAAc;aAClC,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,MAAM,CACjB,MAAc,EACd,MAA0B;QAE1B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAE1D,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAEM,KAAK,CAAC,MAAM;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;IAC/B,CAAC;IAEM,KAAK,CAAC,GAAG,CACd,GAAW,EACX,IAAa,EACb,IAA4B;QAE5B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAEM,KAAK,CAAC,MAAM,CACjB,GAAW,EACX,IAA+B;QAE/B,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACI,aAAa;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEO,UAAU,CAAC,KAAc;QAC/B,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC;IACJ,CAAC;CACF;AA9JD,8BA8JC"}