@rsdk/nats.kv 5.4.0-next.10

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 (58) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/dist/constants.d.ts +1 -0
  3. package/dist/constants.js +5 -0
  4. package/dist/constants.js.map +1 -0
  5. package/dist/index.d.ts +7 -0
  6. package/dist/index.js +29 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/inject-kv-service.decorator.d.ts +2 -0
  9. package/dist/inject-kv-service.decorator.js +19 -0
  10. package/dist/inject-kv-service.decorator.js.map +1 -0
  11. package/dist/interfaces/nats-kv-entry-meta.interface.d.ts +6 -0
  12. package/dist/interfaces/nats-kv-entry-meta.interface.js +3 -0
  13. package/dist/interfaces/nats-kv-entry-meta.interface.js.map +1 -0
  14. package/dist/interfaces/nats-kv-entry.interface.d.ts +6 -0
  15. package/dist/interfaces/nats-kv-entry.interface.js +3 -0
  16. package/dist/interfaces/nats-kv-entry.interface.js.map +1 -0
  17. package/dist/kv-storage.d.ts +34 -0
  18. package/dist/kv-storage.js +122 -0
  19. package/dist/kv-storage.js.map +1 -0
  20. package/dist/nats-kv-module.generator.d.ts +5 -0
  21. package/dist/nats-kv-module.generator.js +30 -0
  22. package/dist/nats-kv-module.generator.js.map +1 -0
  23. package/dist/nats-kv.module.d.ts +9 -0
  24. package/dist/nats-kv.module.js +63 -0
  25. package/dist/nats-kv.module.js.map +1 -0
  26. package/dist/nats-kv.service.d.ts +38 -0
  27. package/dist/nats-kv.service.js +124 -0
  28. package/dist/nats-kv.service.js.map +1 -0
  29. package/dist/tokens.fn.d.ts +2 -0
  30. package/dist/tokens.fn.js +8 -0
  31. package/dist/tokens.fn.js.map +1 -0
  32. package/dist/types/decode-func.type.d.ts +1 -0
  33. package/dist/types/decode-func.type.js +3 -0
  34. package/dist/types/decode-func.type.js.map +1 -0
  35. package/dist/watch-kv.decorator.d.ts +23 -0
  36. package/dist/watch-kv.decorator.js +19 -0
  37. package/dist/watch-kv.decorator.js.map +1 -0
  38. package/dist/watch-kv.service.d.ts +37 -0
  39. package/dist/watch-kv.service.js +115 -0
  40. package/dist/watch-kv.service.js.map +1 -0
  41. package/jest.config.js +1 -0
  42. package/jest.config.unit.js +1 -0
  43. package/package.json +42 -0
  44. package/src/constants.ts +1 -0
  45. package/src/index.ts +7 -0
  46. package/src/inject-kv-service.decorator.ts +39 -0
  47. package/src/interfaces/nats-kv-entry-meta.interface.ts +6 -0
  48. package/src/interfaces/nats-kv-entry.interface.ts +8 -0
  49. package/src/kv-storage.ts +175 -0
  50. package/src/nats-kv-module.generator.ts +49 -0
  51. package/src/nats-kv.module.ts +58 -0
  52. package/src/nats-kv.service.ts +137 -0
  53. package/src/tokens.fn.ts +8 -0
  54. package/src/types/decode-func.type.ts +1 -0
  55. package/src/watch-kv.decorator.ts +30 -0
  56. package/src/watch-kv.service.ts +123 -0
  57. package/tsconfig.build.json +12 -0
  58. package/tsconfig.json +7 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,48 @@
1
+ # Change Log
2
+
3
+ All notable changes to this project will be documented in this file.
4
+ See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
+
6
+ ## [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)
7
+
8
+ ### Features
9
+
10
+ * 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))
11
+
12
+ ## [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)
13
+
14
+ **Note:** Version bump only for package @rsdk/nats.kv
15
+
16
+ ## [5.4.0-next.8](https://github.com/R-Vision/rsdk/compare/v5.4.0-next.7...v5.4.0-next.8) (2024-11-28)
17
+
18
+ **Note:** Version bump only for package @rsdk/nats.kv
19
+
20
+ ## [5.4.0-next.7](https://github.com/R-Vision/rsdk/compare/v5.4.0-next.6...v5.4.0-next.7) (2024-11-28)
21
+
22
+ **Note:** Version bump only for package @rsdk/nats.kv
23
+
24
+ ## [5.4.0-next.6](https://github.com/R-Vision/rsdk/compare/v5.4.0-next.5...v5.4.0-next.6) (2024-11-28)
25
+
26
+ **Note:** Version bump only for package @rsdk/nats.kv
27
+
28
+ ## [5.4.0-next.5](https://github.com/R-Vision/rsdk/compare/v5.4.0-next.4...v5.4.0-next.5) (2024-11-28)
29
+
30
+ ### Features
31
+
32
+ * get meta for kv entry ([#309](https://github.com/R-Vision/rsdk/issues/309)) ([ff8c39d](https://github.com/R-Vision/rsdk/commit/ff8c39d2cc072230931023c9d1e2cef716fa3eaf))
33
+
34
+ ## [5.4.0-next.4](https://github.com/R-Vision/rsdk/compare/v5.4.0-next.3...v5.4.0-next.4) (2024-11-27)
35
+
36
+ ### Bug Fixes
37
+
38
+ * export kv/os injection token functions + inject nats config ([#308](https://github.com/R-Vision/rsdk/issues/308)) ([d12e88c](https://github.com/R-Vision/rsdk/commit/d12e88c86bc922df94a9784f29443d8938cc57db))
39
+
40
+ ## [5.4.0-next.3](https://github.com/R-Vision/rsdk/compare/v5.4.0-next.2...v5.4.0-next.3) (2024-11-25)
41
+
42
+ **Note:** Version bump only for package @rsdk/nats.kv
43
+
44
+ ## [5.4.0-next.2](https://github.com/R-Vision/rsdk/compare/v5.4.0-next.1...v5.4.0-next.2) (2024-11-25)
45
+
46
+ ### Features
47
+
48
+ * **nats:** nats transport/kv/os + examples + docs ([#306](https://github.com/R-Vision/rsdk/issues/306)) ([de67eed](https://github.com/R-Vision/rsdk/commit/de67eed8b4cb17ec9d359067eae1e0c35d6cc736))
@@ -0,0 +1 @@
1
+ export declare const NATS_KV_STORAGES_RSDK_METADATA_SCOPE = "nats-kv-storages";
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NATS_KV_STORAGES_RSDK_METADATA_SCOPE = void 0;
4
+ exports.NATS_KV_STORAGES_RSDK_METADATA_SCOPE = 'nats-kv-storages';
5
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,oCAAoC,GAAG,kBAAkB,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { NatsKvService } from './nats-kv.service';
2
+ export { WatchKv, type KvWatcher } from './watch-kv.decorator';
3
+ export { NatsKvModule } from './nats-kv.module';
4
+ export * from './inject-kv-service.decorator';
5
+ export * from './kv-storage';
6
+ export * from './tokens.fn';
7
+ export { NatsKvModuleGenerator } from './nats-kv-module.generator';
package/dist/index.js ADDED
@@ -0,0 +1,29 @@
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
+ exports.NatsKvModuleGenerator = exports.NatsKvModule = exports.WatchKv = exports.NatsKvService = void 0;
18
+ var nats_kv_service_1 = require("./nats-kv.service");
19
+ Object.defineProperty(exports, "NatsKvService", { enumerable: true, get: function () { return nats_kv_service_1.NatsKvService; } });
20
+ var watch_kv_decorator_1 = require("./watch-kv.decorator");
21
+ Object.defineProperty(exports, "WatchKv", { enumerable: true, get: function () { return watch_kv_decorator_1.WatchKv; } });
22
+ var nats_kv_module_1 = require("./nats-kv.module");
23
+ Object.defineProperty(exports, "NatsKvModule", { enumerable: true, get: function () { return nats_kv_module_1.NatsKvModule; } });
24
+ __exportStar(require("./inject-kv-service.decorator"), exports);
25
+ __exportStar(require("./kv-storage"), exports);
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
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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;AAC5B,uEAAmE;AAA1D,iIAAA,qBAAqB,OAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const InjectKvService: (connectionName?: string) => ParameterDecorator;
2
+ export declare const InjectNatsKv: (bucketName: string, connectionName?: string) => ParameterDecorator;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InjectNatsKv = exports.InjectKvService = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ const metadata_1 = require("@rsdk/metadata");
6
+ const nats_kv_module_generator_1 = require("./nats-kv-module.generator");
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) => {
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);
15
+ metadata_1.RsdkMetadata.setWithScope(target, metadata_1.PLATFORM_RAW_GLOBAL_METADATA_SCOPE, key, moduleDefinition, true);
16
+ };
17
+ };
18
+ exports.InjectNatsKv = InjectNatsKv;
19
+ //# sourceMappingURL=inject-kv-service.decorator.js.map
@@ -0,0 +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"}
@@ -0,0 +1,6 @@
1
+ export interface NatsKvEntryMeta {
2
+ created: Date;
3
+ revision: number;
4
+ operation: 'PUT' | 'DEL' | 'PURGE';
5
+ length: number;
6
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=nats-kv-entry-meta.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nats-kv-entry-meta.interface.js","sourceRoot":"","sources":["../../src/interfaces/nats-kv-entry-meta.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import type { DecodeFunc } from '../types/decode-func.type';
2
+ import type { NatsKvEntryMeta } from './nats-kv-entry-meta.interface';
3
+ export interface NatsKvEntry<Decode extends DecodeFunc> {
4
+ data: ReturnType<Decode>;
5
+ meta: NatsKvEntryMeta;
6
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=nats-kv-entry.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nats-kv-entry.interface.js","sourceRoot":"","sources":["../../src/interfaces/nats-kv-entry.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,34 @@
1
+ import type { ILogger } from '@rsdk/logging';
2
+ import type { KV, KvDeleteOptions, KvPutOptions, KvStatus, NatsConnection, Payload } from 'nats';
3
+ import type { NatsKvEntry } from './interfaces/nats-kv-entry.interface';
4
+ import type { NatsKvEntryMeta } from './interfaces/nats-kv-entry-meta.interface';
5
+ import type { DecodeFunc } from './types/decode-func.type';
6
+ export declare class KvStorage {
7
+ private readonly storage;
8
+ private readonly logger;
9
+ private readonly bucketName;
10
+ private readonly connection;
11
+ constructor(storage: KV, logger: ILogger, bucketName: string, connection: NatsConnection);
12
+ getKeys(filter?: string | string[]): Promise<string[]>;
13
+ getAllWithMeta<Decode extends DecodeFunc>(decode: Decode, filter?: string | string[]): Promise<NatsKvEntry<Decode>[]>;
14
+ get<Decode extends DecodeFunc>(key: string, decode: Decode): Promise<ReturnType<Decode> | null>;
15
+ getWithMeta<Decode extends DecodeFunc>(key: string, decode: Decode): Promise<NatsKvEntry<Decode> | null>;
16
+ /**
17
+ * Получает мета-информацию о ключе в хранилище KV (без данных).
18
+ *
19
+ * @param {string} key - Ключ, для которого необходимо получить мета-информацию.
20
+ * @returns {Promise<NatsKvEntryMeta | null>} Объект метаданных (NatsKvEntryMeta), если данные найдены, или `null`, если данные отсутствуют.
21
+ */
22
+ getMeta(key: string): Promise<NatsKvEntryMeta | null>;
23
+ getAll<Decode extends DecodeFunc>(decode: Decode, filter?: string | string[]): Promise<ReturnType<Decode>[]>;
24
+ status(): Promise<KvStatus>;
25
+ put(key: string, data: Payload, opts?: Partial<KvPutOptions>): Promise<number>;
26
+ delete(key: string, opts?: Partial<KvDeleteOptions>): Promise<void>;
27
+ /**
28
+ * Возвращает сырой KV Nats. Используйте этот метод
29
+ * только в крайнем случае! Рекомендуется работать с оберткой
30
+ * для безопасного взаимодействия.
31
+ */
32
+ getRawStorage(): KV;
33
+ private createMeta;
34
+ }
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KvStorage = void 0;
4
+ const nats_1 = require("nats");
5
+ class KvStorage {
6
+ storage;
7
+ logger;
8
+ bucketName;
9
+ connection;
10
+ constructor(storage, logger, bucketName, connection) {
11
+ this.storage = storage;
12
+ this.logger = logger;
13
+ this.bucketName = bucketName;
14
+ this.connection = connection;
15
+ }
16
+ async getKeys(filter) {
17
+ const keysIterator = await this.storage.keys(filter);
18
+ const keys = [];
19
+ for await (const key of keysIterator) {
20
+ keys.push(key);
21
+ }
22
+ return keys;
23
+ }
24
+ async getAllWithMeta(decode, filter) {
25
+ this.logger.trace('Getting all entries from KV', { filter });
26
+ /*
27
+ An additional array is used here, because kv.keys() returns an asynchronous iterator,
28
+ which bugs and stops sending new keys if you use kv.get() inside "for await of"
29
+ */
30
+ const keys = await this.getKeys(filter);
31
+ const result = [];
32
+ for (const key of keys) {
33
+ const entry = await this.storage.get(key);
34
+ if (!entry) {
35
+ this.logger.warn('KV entry not found', { key });
36
+ continue;
37
+ }
38
+ result.push({
39
+ data: decode(entry.value),
40
+ meta: this.createMeta(entry),
41
+ });
42
+ }
43
+ this.logger.trace('Getting all entries from KV: KV entries received', {
44
+ count: result.length,
45
+ });
46
+ return result;
47
+ }
48
+ async get(key, decode) {
49
+ const entry = await this.getWithMeta(key, decode);
50
+ return entry?.data ?? null;
51
+ }
52
+ async getWithMeta(key, decode) {
53
+ const entry = await this.storage.get(key);
54
+ if (!entry)
55
+ return null;
56
+ return {
57
+ data: decode(entry.value),
58
+ meta: this.createMeta(entry),
59
+ };
60
+ }
61
+ /**
62
+ * Получает мета-информацию о ключе в хранилище KV (без данных).
63
+ *
64
+ * @param {string} key - Ключ, для которого необходимо получить мета-информацию.
65
+ * @returns {Promise<NatsKvEntryMeta | null>} Объект метаданных (NatsKvEntryMeta), если данные найдены, или `null`, если данные отсутствуют.
66
+ */
67
+ async getMeta(key) {
68
+ // HACK: данный костыль с JetStream необходим из-за отсутствия в библиотеке функции получения меты без данных
69
+ const streamName = `KV_${this.bucketName}`;
70
+ const subject = `$KV.${this.bucketName}.${key}`;
71
+ const consumer = await this.connection
72
+ .jetstream()
73
+ .consumers.get(streamName, {
74
+ headers_only: true,
75
+ filterSubjects: subject,
76
+ deliver_policy: nats_1.DeliverPolicy.LastPerSubject,
77
+ });
78
+ const msgs = await consumer.fetch({ max_messages: 1, expires: 1000 });
79
+ for await (const msg of msgs) {
80
+ msg.ack();
81
+ return {
82
+ created: new Date((0, nats_1.millis)(msg.info.timestampNanos)),
83
+ length: +(msg.headers?.get('Nats-Msg-Size') || '0'),
84
+ operation: msg.headers?.get('KV-Operation') ||
85
+ 'PUT',
86
+ revision: msg.info.streamSequence,
87
+ };
88
+ }
89
+ return null;
90
+ }
91
+ async getAll(decode, filter) {
92
+ const entries = await this.getAllWithMeta(decode, filter);
93
+ return entries.map((entry) => entry.data);
94
+ }
95
+ async status() {
96
+ return this.storage.status();
97
+ }
98
+ async put(key, data, opts) {
99
+ return this.storage.put(key, data, opts);
100
+ }
101
+ async delete(key, opts) {
102
+ await this.storage.delete(key, opts);
103
+ }
104
+ /**
105
+ * Возвращает сырой KV Nats. Используйте этот метод
106
+ * только в крайнем случае! Рекомендуется работать с оберткой
107
+ * для безопасного взаимодействия.
108
+ */
109
+ getRawStorage() {
110
+ return this.storage;
111
+ }
112
+ createMeta(entry) {
113
+ return {
114
+ created: entry.created,
115
+ length: entry.length,
116
+ operation: entry.operation,
117
+ revision: entry.revision,
118
+ };
119
+ }
120
+ }
121
+ exports.KvStorage = KvStorage;
122
+ //# sourceMappingURL=kv-storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kv-storage.js","sourceRoot":"","sources":["../src/kv-storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { DynamicModule, FactoryProvider } from '@nestjs/common';
2
+ export declare class NatsKvModuleGenerator {
3
+ static createClientModuleDefinition(target: object, bucketName: string, connectionName?: string): DynamicModule;
4
+ static createClientProvider(bucketName: string, connectionName?: string): FactoryProvider;
5
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NatsKvModuleGenerator = void 0;
4
+ const metadata_1 = require("@rsdk/metadata");
5
+ const constants_1 = require("./constants");
6
+ const nats_kv_module_1 = require("./nats-kv.module");
7
+ const tokens_fn_1 = require("./tokens.fn");
8
+ class NatsKvModuleGenerator {
9
+ static createClientModuleDefinition(target, bucketName, connectionName) {
10
+ const provider = NatsKvModuleGenerator.createClientProvider(bucketName, connectionName);
11
+ const moduleDefinition = {
12
+ global: true,
13
+ imports: [nats_kv_module_1.NatsKvModule.forFeature(connectionName)],
14
+ module: NatsKvModuleGenerator,
15
+ providers: [provider],
16
+ exports: [provider],
17
+ };
18
+ metadata_1.RsdkMetadata.add(target, { bucketName, connectionName }, constants_1.NATS_KV_STORAGES_RSDK_METADATA_SCOPE);
19
+ return moduleDefinition;
20
+ }
21
+ static createClientProvider(bucketName, connectionName) {
22
+ return {
23
+ provide: (0, tokens_fn_1.createKvToken)(bucketName, connectionName),
24
+ inject: [(0, tokens_fn_1.createKvServiceToken)(connectionName)],
25
+ useFactory: (service) => service.bind({ bucketName }),
26
+ };
27
+ }
28
+ }
29
+ exports.NatsKvModuleGenerator = NatsKvModuleGenerator;
30
+ //# sourceMappingURL=nats-kv-module.generator.js.map
@@ -0,0 +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;IAED,MAAM,CAAC,oBAAoB,CACzB,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,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC;SAC/B,CAAC;IACJ,CAAC;CACF;AAvCD,sDAuCC"}
@@ -0,0 +1,9 @@
1
+ import type { DynamicModule, OnModuleDestroy, OnModuleInit } from '@nestjs/common';
2
+ import { WatchKvService } from './watch-kv.service';
3
+ export declare class NatsKvModule implements OnModuleInit, OnModuleDestroy {
4
+ private readonly watchKvService;
5
+ constructor(watchKvService: WatchKvService);
6
+ static forFeature(connectionName?: string): DynamicModule;
7
+ onModuleInit(): Promise<void>;
8
+ onModuleDestroy(): Promise<void>;
9
+ }
@@ -0,0 +1,63 @@
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 NatsKvModule_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.NatsKvModule = void 0;
14
+ const common_1 = require("@nestjs/common");
15
+ const core_1 = require("@nestjs/core");
16
+ const nats_common_1 = require("@rsdk/nats.common");
17
+ const nats_kv_service_1 = require("./nats-kv.service");
18
+ const tokens_fn_1 = require("./tokens.fn");
19
+ const watch_kv_service_1 = require("./watch-kv.service");
20
+ let NatsKvModule = NatsKvModule_1 = class NatsKvModule {
21
+ watchKvService;
22
+ constructor(watchKvService) {
23
+ this.watchKvService = watchKvService;
24
+ }
25
+ static forFeature(connectionName) {
26
+ const clientProvider = {
27
+ provide: (0, tokens_fn_1.createKvServiceToken)(connectionName),
28
+ useClass: nats_kv_service_1.NatsKvService,
29
+ };
30
+ return {
31
+ module: NatsKvModule_1,
32
+ providers: [
33
+ {
34
+ provide: nats_common_1.NATS_CLIENT_INJECTION_TOKEN_FOR_PACKAGE,
35
+ useExisting: connectionName
36
+ ? (0, nats_common_1.createNatsClientToken)(connectionName)
37
+ : nats_common_1.NATS_CLIENT_INJECTION_TOKEN,
38
+ },
39
+ {
40
+ provide: 'CONNECTION_NAME',
41
+ useFactory: () => connectionName,
42
+ },
43
+ clientProvider,
44
+ ],
45
+ exports: [clientProvider],
46
+ };
47
+ }
48
+ async onModuleInit() {
49
+ await this.watchKvService?.runWatches();
50
+ }
51
+ async onModuleDestroy() {
52
+ await this.watchKvService?.stopWatches();
53
+ }
54
+ };
55
+ exports.NatsKvModule = NatsKvModule;
56
+ exports.NatsKvModule = NatsKvModule = NatsKvModule_1 = __decorate([
57
+ (0, common_1.Module)({
58
+ imports: [core_1.DiscoveryModule],
59
+ providers: [nats_kv_service_1.NatsKvService, watch_kv_service_1.WatchKvService],
60
+ }),
61
+ __metadata("design:paramtypes", [watch_kv_service_1.WatchKvService])
62
+ ], NatsKvModule);
63
+ //# sourceMappingURL=nats-kv.module.js.map
@@ -0,0 +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"}
@@ -0,0 +1,38 @@
1
+ import { ILogger } from '@rsdk/logging';
2
+ import { NatsConnection } from 'nats';
3
+ import type { KvOptions } from 'nats/lib/jetstream/types';
4
+ import { KvStorage } from './kv-storage';
5
+ export declare class NatsKvService {
6
+ private readonly logger;
7
+ private readonly nats;
8
+ constructor(logger: ILogger, nats: NatsConnection);
9
+ /**
10
+ * Gets or creates a JetStream KV store
11
+ */
12
+ create({ bucketName, domain, ...opts }: Partial<Omit<KvOptions, 'bindOnly'>> & {
13
+ bucketName: string;
14
+ domain?: string;
15
+ }): Promise<KvStorage>;
16
+ /**
17
+ * Gets a JetStream KV store
18
+ */
19
+ bind({ bucketName, domain, ...opts }: Partial<Omit<KvOptions, 'bindOnly'>> & {
20
+ bucketName: string;
21
+ domain?: string;
22
+ }): Promise<KvStorage>;
23
+ /**
24
+ * Waits for the specified bucket to exist.
25
+ *
26
+ * @param bucketName - The name of the bucket to wait for.
27
+ * @param timeout - The maximum time to wait for the bucket to exist, in milliseconds. Defaults to infinity.
28
+ * @throws {InternalException} If the bucket does not exist within the specified timeout.
29
+ */
30
+ waitForBucketExists(bucketName: string, timeout?: number): Promise<void>;
31
+ /**
32
+ * Checks if a bucket exists.
33
+ *
34
+ * @param bucket - The name of the bucket to check.
35
+ * @returns A promise that resolves to a boolean indicating whether the bucket exists or not.
36
+ */
37
+ isBucketExists(bucketName: string): Promise<boolean>;
38
+ }
@@ -0,0 +1,124 @@
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.NatsKvService = 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 nats_common_1 = require("@rsdk/nats.common");
20
+ const kv_storage_1 = require("./kv-storage");
21
+ let NatsKvService = class NatsKvService {
22
+ logger;
23
+ nats;
24
+ constructor(logger, nats) {
25
+ this.logger = logger;
26
+ this.nats = nats;
27
+ }
28
+ /**
29
+ * Gets or creates a JetStream KV store
30
+ */
31
+ async create({ bucketName, domain, ...opts }) {
32
+ const jsOptions = domain ? { domain } : undefined;
33
+ try {
34
+ const kv = await this.nats
35
+ .jetstream(jsOptions)
36
+ .views.kv(bucketName, opts);
37
+ this.logger.trace('KV store initialized', {
38
+ connectionName: this.nats.info,
39
+ bucketName,
40
+ });
41
+ return new kv_storage_1.KvStorage(kv, this.logger, bucketName, this.nats);
42
+ }
43
+ catch (error) {
44
+ this.logger.error('Failed to create KV store', {
45
+ err: error,
46
+ bucketName,
47
+ });
48
+ throw error;
49
+ }
50
+ }
51
+ /**
52
+ * Gets a JetStream KV store
53
+ */
54
+ async bind({ bucketName, domain, ...opts }) {
55
+ const jsOptions = domain ? { domain } : undefined;
56
+ try {
57
+ if (!(await this.isBucketExists(bucketName))) {
58
+ throw new common_1.NotFoundException(`Nats KV ${bucketName} not found`);
59
+ }
60
+ const kv = await this.nats
61
+ .jetstream(jsOptions)
62
+ .views.kv(bucketName, { ...opts, bindOnly: true });
63
+ this.logger.trace('KV store bound', {
64
+ connectionName: this.nats.info,
65
+ bucketName,
66
+ });
67
+ return new kv_storage_1.KvStorage(kv, this.logger, bucketName, this.nats);
68
+ }
69
+ catch (error) {
70
+ this.logger.error('Failed to get KV store', {
71
+ err: error,
72
+ bucketName,
73
+ });
74
+ throw error;
75
+ }
76
+ }
77
+ /**
78
+ * Waits for the specified bucket to exist.
79
+ *
80
+ * @param bucketName - The name of the bucket to wait for.
81
+ * @param timeout - The maximum time to wait for the bucket to exist, in milliseconds. Defaults to infinity.
82
+ * @throws {InternalException} If the bucket does not exist within the specified timeout.
83
+ */
84
+ async waitForBucketExists(bucketName, timeout = Number.POSITIVE_INFINITY) {
85
+ const start = Date.now();
86
+ while (true) {
87
+ if (await this.isBucketExists(bucketName)) {
88
+ this.logger.trace('KV bucket exists');
89
+ return;
90
+ }
91
+ if (timeout && Date.now() - start > timeout) {
92
+ throw new core_1.InternalException(`Bucket ${bucketName} does not exist`);
93
+ }
94
+ this.logger.trace('KV bucket does not exist, retry after 3 seconds...', {
95
+ bucketName,
96
+ });
97
+ await (0, common_2.delay)(common_2.Timespan.second(3));
98
+ }
99
+ }
100
+ /**
101
+ * Checks if a bucket exists.
102
+ *
103
+ * @param bucket - The name of the bucket to check.
104
+ * @returns A promise that resolves to a boolean indicating whether the bucket exists or not.
105
+ */
106
+ async isBucketExists(bucketName) {
107
+ try {
108
+ const kv = await this.bind({ bucketName });
109
+ await kv.status();
110
+ }
111
+ catch {
112
+ return false;
113
+ }
114
+ return true;
115
+ }
116
+ };
117
+ exports.NatsKvService = NatsKvService;
118
+ exports.NatsKvService = NatsKvService = __decorate([
119
+ (0, common_1.Injectable)(),
120
+ __param(0, (0, core_1.InjectLogger)(NatsKvService)),
121
+ __param(1, (0, common_1.Inject)(nats_common_1.NATS_CLIENT_INJECTION_TOKEN_FOR_PACKAGE)),
122
+ __metadata("design:paramtypes", [Object, Object])
123
+ ], NatsKvService);
124
+ //# sourceMappingURL=nats-kv.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nats-kv.service.js","sourceRoot":"","sources":["../src/nats-kv.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const createKvServiceToken: (connectionName?: string) => string;
2
+ export declare const createKvToken: (bucketName: string, connectionName?: string) => string;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createKvToken = exports.createKvServiceToken = void 0;
4
+ const createKvServiceToken = (connectionName) => `NATS_KV_SERVICE${connectionName ? `_${connectionName}` : ''}`;
5
+ exports.createKvServiceToken = createKvServiceToken;
6
+ const createKvToken = (bucketName, connectionName) => `NATS_KV_${bucketName}${connectionName ? `_${connectionName}` : ''}`;
7
+ exports.createKvToken = createKvToken;
8
+ //# sourceMappingURL=tokens.fn.js.map