@rsdk/nats.object-storage 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 (50) hide show
  1. package/CHANGELOG.md +46 -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 +8 -0
  6. package/dist/index.js +31 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/inject-object-storage-service.decorator.d.ts +2 -0
  9. package/dist/inject-object-storage-service.decorator.js +19 -0
  10. package/dist/inject-object-storage-service.decorator.js.map +1 -0
  11. package/dist/nats-object-storage-module.generator.d.ts +5 -0
  12. package/dist/nats-object-storage-module.generator.js +30 -0
  13. package/dist/nats-object-storage-module.generator.js.map +1 -0
  14. package/dist/nats-object-storage.module.d.ts +9 -0
  15. package/dist/nats-object-storage.module.js +63 -0
  16. package/dist/nats-object-storage.module.js.map +1 -0
  17. package/dist/nats-object-storage.service.d.ts +40 -0
  18. package/dist/nats-object-storage.service.js +121 -0
  19. package/dist/nats-object-storage.service.js.map +1 -0
  20. package/dist/object-storage.d.ts +27 -0
  21. package/dist/object-storage.js +43 -0
  22. package/dist/object-storage.js.map +1 -0
  23. package/dist/patch.d.ts +1 -0
  24. package/dist/patch.js +239 -0
  25. package/dist/patch.js.map +1 -0
  26. package/dist/tokens.fn.d.ts +2 -0
  27. package/dist/tokens.fn.js +8 -0
  28. package/dist/tokens.fn.js.map +1 -0
  29. package/dist/watch-object-storage.decorator.d.ts +23 -0
  30. package/dist/watch-object-storage.decorator.js +19 -0
  31. package/dist/watch-object-storage.decorator.js.map +1 -0
  32. package/dist/watch-object-storage.service.d.ts +45 -0
  33. package/dist/watch-object-storage.service.js +112 -0
  34. package/dist/watch-object-storage.service.js.map +1 -0
  35. package/jest.config.js +1 -0
  36. package/jest.config.unit.js +1 -0
  37. package/package.json +42 -0
  38. package/src/constants.ts +1 -0
  39. package/src/index.ts +12 -0
  40. package/src/inject-object-storage-service.decorator.ts +45 -0
  41. package/src/nats-object-storage-module.generator.ts +52 -0
  42. package/src/nats-object-storage.module.ts +58 -0
  43. package/src/nats-object-storage.service.ts +141 -0
  44. package/src/object-storage.ts +53 -0
  45. package/src/patch.ts +292 -0
  46. package/src/tokens.fn.ts +10 -0
  47. package/src/watch-object-storage.decorator.ts +30 -0
  48. package/src/watch-object-storage.service.ts +129 -0
  49. package/tsconfig.build.json +12 -0
  50. package/tsconfig.json +7 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,46 @@
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.object-storage
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.object-storage
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.object-storage
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.object-storage
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
+ **Note:** Version bump only for package @rsdk/nats.object-storage
31
+
32
+ ## [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)
33
+
34
+ ### Bug Fixes
35
+
36
+ * 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))
37
+
38
+ ## [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)
39
+
40
+ **Note:** Version bump only for package @rsdk/nats.object-storage
41
+
42
+ ## [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)
43
+
44
+ ### Features
45
+
46
+ * **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_OBJECT_STORAGES_RSDK_METADATA_SCOPE = "nats-object-storages";
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NATS_OBJECT_STORAGES_RSDK_METADATA_SCOPE = void 0;
4
+ exports.NATS_OBJECT_STORAGES_RSDK_METADATA_SCOPE = 'nats-object-storages';
5
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,wCAAwC,GAAG,sBAAsB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import './patch';
2
+ export { NatsObjectStorageService } from './nats-object-storage.service';
3
+ export { WatchObjectStorage, type ObjectStorageWatcher, } from './watch-object-storage.decorator';
4
+ export { NatsObjectStorageModule } from './nats-object-storage.module';
5
+ export { ObjectStorage } from './object-storage';
6
+ export * from './inject-object-storage-service.decorator';
7
+ export * from './tokens.fn';
8
+ export { NatsObjectStorageModuleGenerator } from './nats-object-storage-module.generator';
package/dist/index.js ADDED
@@ -0,0 +1,31 @@
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.NatsObjectStorageModuleGenerator = exports.ObjectStorage = exports.NatsObjectStorageModule = exports.WatchObjectStorage = exports.NatsObjectStorageService = void 0;
18
+ require("./patch");
19
+ var nats_object_storage_service_1 = require("./nats-object-storage.service");
20
+ Object.defineProperty(exports, "NatsObjectStorageService", { enumerable: true, get: function () { return nats_object_storage_service_1.NatsObjectStorageService; } });
21
+ var watch_object_storage_decorator_1 = require("./watch-object-storage.decorator");
22
+ Object.defineProperty(exports, "WatchObjectStorage", { enumerable: true, get: function () { return watch_object_storage_decorator_1.WatchObjectStorage; } });
23
+ var nats_object_storage_module_1 = require("./nats-object-storage.module");
24
+ Object.defineProperty(exports, "NatsObjectStorageModule", { enumerable: true, get: function () { return nats_object_storage_module_1.NatsObjectStorageModule; } });
25
+ var object_storage_1 = require("./object-storage");
26
+ Object.defineProperty(exports, "ObjectStorage", { enumerable: true, get: function () { return object_storage_1.ObjectStorage; } });
27
+ __exportStar(require("./inject-object-storage-service.decorator"), exports);
28
+ __exportStar(require("./tokens.fn"), exports);
29
+ var nats_object_storage_module_generator_1 = require("./nats-object-storage-module.generator");
30
+ Object.defineProperty(exports, "NatsObjectStorageModuleGenerator", { enumerable: true, get: function () { return nats_object_storage_module_generator_1.NatsObjectStorageModuleGenerator; } });
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,mBAAiB;AAEjB,6EAAyE;AAAhE,uIAAA,wBAAwB,OAAA;AACjC,mFAG0C;AAFxC,oIAAA,kBAAkB,OAAA;AAGpB,2EAAuE;AAA9D,qIAAA,uBAAuB,OAAA;AAChC,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,4EAA0D;AAC1D,8CAA4B;AAC5B,+FAA0F;AAAjF,wJAAA,gCAAgC,OAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const InjectObjectStorageService: (connectionName?: string) => ParameterDecorator;
2
+ export declare const InjectNatsObjectStorage: (bucketName: string, connectionName?: string) => ParameterDecorator;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InjectNatsObjectStorage = exports.InjectObjectStorageService = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ const metadata_1 = require("@rsdk/metadata");
6
+ const nats_object_storage_module_generator_1 = require("./nats-object-storage-module.generator");
7
+ const tokens_fn_1 = require("./tokens.fn");
8
+ const InjectObjectStorageService = (connectionName) => (0, common_1.Inject)((0, tokens_fn_1.createObjectStorageServiceToken)(connectionName));
9
+ exports.InjectObjectStorageService = InjectObjectStorageService;
10
+ const InjectNatsObjectStorage = (bucketName, connectionName) => {
11
+ return (target, propertyKey, parameterIndex) => {
12
+ (0, common_1.Inject)((0, tokens_fn_1.createObjectStorageToken)(bucketName, connectionName))(target, propertyKey, parameterIndex);
13
+ const key = `nats-kv:${bucketName}${connectionName ? `:${connectionName}` : ''}`;
14
+ const moduleDefinition = nats_object_storage_module_generator_1.NatsObjectStorageModuleGenerator.createClientModuleDefinition(target, bucketName, connectionName);
15
+ metadata_1.RsdkMetadata.setWithScope(target, metadata_1.PLATFORM_RAW_GLOBAL_METADATA_SCOPE, key, moduleDefinition, true);
16
+ };
17
+ };
18
+ exports.InjectNatsObjectStorage = InjectNatsObjectStorage;
19
+ //# sourceMappingURL=inject-object-storage-service.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inject-object-storage-service.decorator.js","sourceRoot":"","sources":["../src/inject-object-storage-service.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AACxC,6CAGwB;AAExB,iGAA0F;AAC1F,2CAGqB;AAEd,MAAM,0BAA0B,GAAG,CACxC,cAAuB,EACH,EAAE,CACtB,IAAA,eAAM,EAAC,IAAA,2CAA+B,EAAC,cAAc,CAAC,CAAC,CAAC;AAH7C,QAAA,0BAA0B,8BAGmB;AAEnD,MAAM,uBAAuB,GAAG,CACrC,UAAkB,EAClB,cAAuB,EACH,EAAE;IACtB,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,EAAE;QAC7C,IAAA,eAAM,EAAC,IAAA,oCAAwB,EAAC,UAAU,EAAE,cAAc,CAAC,CAAC,CAC1D,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,GACpB,uEAAgC,CAAC,4BAA4B,CAC3D,MAAM,EACN,UAAU,EACV,cAAc,CACf,CAAC;QAEJ,uBAAY,CAAC,YAAY,CACvB,MAAM,EACN,6CAAkC,EAClC,GAAG,EACH,gBAAgB,EAChB,IAAI,CACL,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC;AA3BW,QAAA,uBAAuB,2BA2BlC"}
@@ -0,0 +1,5 @@
1
+ import type { DynamicModule, FactoryProvider } from '@nestjs/common';
2
+ export declare class NatsObjectStorageModuleGenerator {
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.NatsObjectStorageModuleGenerator = void 0;
4
+ const metadata_1 = require("@rsdk/metadata");
5
+ const constants_1 = require("./constants");
6
+ const nats_object_storage_module_1 = require("./nats-object-storage.module");
7
+ const tokens_fn_1 = require("./tokens.fn");
8
+ class NatsObjectStorageModuleGenerator {
9
+ static createClientModuleDefinition(target, bucketName, connectionName) {
10
+ const provider = NatsObjectStorageModuleGenerator.createClientProvider(bucketName, connectionName);
11
+ const moduleDefinition = {
12
+ global: true,
13
+ imports: [nats_object_storage_module_1.NatsObjectStorageModule.forFeature(connectionName)],
14
+ module: NatsObjectStorageModuleGenerator,
15
+ providers: [provider],
16
+ exports: [provider],
17
+ };
18
+ metadata_1.RsdkMetadata.add(target, { bucketName, connectionName }, constants_1.NATS_OBJECT_STORAGES_RSDK_METADATA_SCOPE);
19
+ return moduleDefinition;
20
+ }
21
+ static createClientProvider(bucketName, connectionName) {
22
+ return {
23
+ provide: (0, tokens_fn_1.createObjectStorageToken)(bucketName, connectionName),
24
+ inject: [(0, tokens_fn_1.createObjectStorageServiceToken)(connectionName)],
25
+ useFactory: (service) => service.bind({ bucketName }),
26
+ };
27
+ }
28
+ }
29
+ exports.NatsObjectStorageModuleGenerator = NatsObjectStorageModuleGenerator;
30
+ //# sourceMappingURL=nats-object-storage-module.generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nats-object-storage-module.generator.js","sourceRoot":"","sources":["../src/nats-object-storage-module.generator.ts"],"names":[],"mappings":";;;AACA,6CAA8C;AAE9C,2CAAuE;AACvE,6EAAuE;AAGvE,2CAGqB;AAErB,MAAa,gCAAgC;IAC3C,MAAM,CAAC,4BAA4B,CACjC,MAAc,EACd,UAAkB,EAClB,cAAuB;QAEvB,MAAM,QAAQ,GAAG,gCAAgC,CAAC,oBAAoB,CACpE,UAAU,EACV,cAAc,CACf,CAAC;QAEF,MAAM,gBAAgB,GAAkB;YACtC,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,CAAC,oDAAuB,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;YAC7D,MAAM,EAAE,gCAAgC;YACxC,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,oDAAwC,CACzC,CAAC;QAEF,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,oBAAoB,CACzB,UAAkB,EAClB,cAAuB;QAEvB,OAAO;YACL,OAAO,EAAE,IAAA,oCAAwB,EAAC,UAAU,EAAE,cAAc,CAAC;YAC7D,MAAM,EAAE,CAAC,IAAA,2CAA+B,EAAC,cAAc,CAAC,CAAC;YACzD,UAAU,EAAE,CAAC,OAAiC,EAA0B,EAAE,CACxE,OAAO,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC;SAC/B,CAAC;IACJ,CAAC;CACF;AAvCD,4EAuCC"}
@@ -0,0 +1,9 @@
1
+ import type { DynamicModule, OnModuleDestroy, OnModuleInit } from '@nestjs/common';
2
+ import { WatchObjectStorageService } from './watch-object-storage.service';
3
+ export declare class NatsObjectStorageModule implements OnModuleInit, OnModuleDestroy {
4
+ private readonly watchService;
5
+ constructor(watchService: WatchObjectStorageService);
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 NatsObjectStorageModule_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.NatsObjectStorageModule = 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_object_storage_service_1 = require("./nats-object-storage.service");
18
+ const tokens_fn_1 = require("./tokens.fn");
19
+ const watch_object_storage_service_1 = require("./watch-object-storage.service");
20
+ let NatsObjectStorageModule = NatsObjectStorageModule_1 = class NatsObjectStorageModule {
21
+ watchService;
22
+ constructor(watchService) {
23
+ this.watchService = watchService;
24
+ }
25
+ static forFeature(connectionName) {
26
+ const clientProvider = {
27
+ provide: (0, tokens_fn_1.createObjectStorageServiceToken)(connectionName),
28
+ useClass: nats_object_storage_service_1.NatsObjectStorageService,
29
+ };
30
+ return {
31
+ module: NatsObjectStorageModule_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.watchService?.runWatches();
50
+ }
51
+ async onModuleDestroy() {
52
+ await this.watchService?.stopWatches();
53
+ }
54
+ };
55
+ exports.NatsObjectStorageModule = NatsObjectStorageModule;
56
+ exports.NatsObjectStorageModule = NatsObjectStorageModule = NatsObjectStorageModule_1 = __decorate([
57
+ (0, common_1.Module)({
58
+ imports: [core_1.DiscoveryModule],
59
+ providers: [nats_object_storage_service_1.NatsObjectStorageService, watch_object_storage_service_1.WatchObjectStorageService],
60
+ }),
61
+ __metadata("design:paramtypes", [watch_object_storage_service_1.WatchObjectStorageService])
62
+ ], NatsObjectStorageModule);
63
+ //# sourceMappingURL=nats-object-storage.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nats-object-storage.module.js","sourceRoot":"","sources":["../src/nats-object-storage.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAMA,2CAAwC;AACxC,uCAA+C;AAC/C,mDAI2B;AAE3B,+EAAyE;AACzE,2CAA8D;AAC9D,iFAA2E;AAMpE,IAAM,uBAAuB,+BAA7B,MAAM,uBAAuB;IACL;IAA7B,YAA6B,YAAuC;QAAvC,iBAAY,GAAZ,YAAY,CAA2B;IAAG,CAAC;IAEjE,MAAM,CAAC,UAAU,CAAC,cAAuB;QAC9C,MAAM,cAAc,GAAa;YAC/B,OAAO,EAAE,IAAA,2CAA+B,EAAC,cAAc,CAAC;YACxD,QAAQ,EAAE,sDAAwB;SACnC,CAAC;QAEF,OAAO;YACL,MAAM,EAAE,yBAAuB;YAC/B,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,YAAY,EAAE,UAAU,EAAE,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC;IACzC,CAAC;CACF,CAAA;AAnCY,0DAAuB;kCAAvB,uBAAuB;IAJnC,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,sBAAe,CAAC;QAC1B,SAAS,EAAE,CAAC,sDAAwB,EAAE,wDAAyB,CAAC;KACjE,CAAC;qCAE2C,wDAAyB;GADzD,uBAAuB,CAmCnC"}
@@ -0,0 +1,40 @@
1
+ import { ILogger } from '@rsdk/logging';
2
+ import { NatsConnection } from 'nats';
3
+ import type { ObjectStoreOptions } from 'nats/lib/jetstream/types';
4
+ import { ObjectStorage } from './object-storage';
5
+ export declare class NatsObjectStorageService {
6
+ private readonly logger;
7
+ private readonly nats;
8
+ constructor(logger: ILogger, nats: NatsConnection);
9
+ /**
10
+ * Get or create object storage
11
+ */
12
+ create({ bucketName, domain, ...opts }: Partial<ObjectStoreOptions> & {
13
+ bucketName: string;
14
+ domain?: string;
15
+ }): Promise<ObjectStorage>;
16
+ /**
17
+ * Get object storage
18
+ */
19
+ bind({ bucketName, domain, ...opts }: Partial<ObjectStoreOptions> & {
20
+ bucketName: string;
21
+ domain?: string;
22
+ }): Promise<ObjectStorage>;
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(bucket: string, opts?: {
38
+ domain?: string;
39
+ }): Promise<boolean>;
40
+ }
@@ -0,0 +1,121 @@
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.NatsObjectStorageService = 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 object_storage_1 = require("./object-storage");
21
+ let NatsObjectStorageService = class NatsObjectStorageService {
22
+ logger;
23
+ nats;
24
+ constructor(logger, nats) {
25
+ this.logger = logger;
26
+ this.nats = nats;
27
+ }
28
+ /**
29
+ * Get or create object storage
30
+ */
31
+ async create({ bucketName, domain, ...opts }) {
32
+ const jsOptions = domain ? { domain } : undefined;
33
+ const js = this.nats.jetstream(jsOptions);
34
+ try {
35
+ const storage = await js.views.os(bucketName, opts);
36
+ this.logger.trace('Object storage initialized', {
37
+ connectionName: this.nats.info,
38
+ bucket: bucketName,
39
+ });
40
+ return new object_storage_1.ObjectStorage(storage);
41
+ }
42
+ catch (error) {
43
+ this.logger.error('Failed to get or create object storage', {
44
+ err: error,
45
+ bucket: bucketName,
46
+ });
47
+ throw error;
48
+ }
49
+ }
50
+ /**
51
+ * Get object storage
52
+ */
53
+ async bind({ bucketName, domain, ...opts }) {
54
+ const jsOptions = domain ? { domain } : undefined;
55
+ const js = this.nats.jetstream(jsOptions);
56
+ try {
57
+ if (!(await this.isBucketExists(bucketName, jsOptions))) {
58
+ throw new core_1.NotFoundException(`Object storage bucket "${bucketName}" not found`);
59
+ }
60
+ const storage = await js.views.os(bucketName, opts);
61
+ this.logger.trace('Object storage bound', {
62
+ connectionName: this.nats.info,
63
+ bucket: bucketName,
64
+ });
65
+ return new object_storage_1.ObjectStorage(storage);
66
+ }
67
+ catch (error) {
68
+ this.logger.error('Failed to get object storage', {
69
+ err: error,
70
+ bucket: bucketName,
71
+ });
72
+ throw error;
73
+ }
74
+ }
75
+ /**
76
+ * Waits for the specified bucket to exist.
77
+ *
78
+ * @param bucketName - The name of the bucket to wait for.
79
+ * @param timeout - The maximum time to wait for the bucket to exist, in milliseconds. Defaults to infinity.
80
+ * @throws {InternalException} If the bucket does not exist within the specified timeout.
81
+ */
82
+ async waitForBucketExists(bucketName, timeout = Number.POSITIVE_INFINITY) {
83
+ const start = Date.now();
84
+ while (true) {
85
+ if (await this.isBucketExists(bucketName)) {
86
+ this.logger.trace('Object storage bucket exists');
87
+ return;
88
+ }
89
+ if (timeout && Date.now() - start > timeout) {
90
+ throw new core_1.InternalException(`Bucket ${bucketName} does not exist`);
91
+ }
92
+ this.logger.trace('Object storage bucket does not exist, retry after 3 seconds...', {
93
+ bucketName,
94
+ });
95
+ await (0, common_2.delay)(common_2.Timespan.second(3));
96
+ }
97
+ }
98
+ /**
99
+ * Checks if a bucket exists.
100
+ *
101
+ * @param bucket - The name of the bucket to check.
102
+ * @returns A promise that resolves to a boolean indicating whether the bucket exists or not.
103
+ */
104
+ async isBucketExists(bucket, opts) {
105
+ try {
106
+ await this.nats.jetstream(opts).streams.get(`OBJ_${bucket}`);
107
+ }
108
+ catch {
109
+ return false;
110
+ }
111
+ return true;
112
+ }
113
+ };
114
+ exports.NatsObjectStorageService = NatsObjectStorageService;
115
+ exports.NatsObjectStorageService = NatsObjectStorageService = __decorate([
116
+ (0, common_1.Injectable)(),
117
+ __param(0, (0, core_1.InjectLogger)(NatsObjectStorageService)),
118
+ __param(1, (0, common_1.Inject)(nats_common_1.NATS_CLIENT_INJECTION_TOKEN_FOR_PACKAGE)),
119
+ __metadata("design:paramtypes", [Object, Object])
120
+ ], NatsObjectStorageService);
121
+ //# sourceMappingURL=nats-object-storage.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nats-object-storage.service.js","sourceRoot":"","sources":["../src/nats-object-storage.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { ObjectInfo, ObjectResult, ObjectStore, ObjectStoreMeta, ObjectStorePutOpts, PurgeResponse } from 'nats';
2
+ export declare class ObjectStorage {
3
+ private readonly storage;
4
+ constructor(storage: ObjectStore);
5
+ /**
6
+ * Возвращает метаданные и стрим с объектом
7
+ */
8
+ get(key: string): Promise<ObjectResult | null>;
9
+ /**
10
+ * Удаляет объект
11
+ */
12
+ delete(key: string): Promise<PurgeResponse>;
13
+ /**
14
+ * Загружает объект в хранилище
15
+ */
16
+ put(meta: ObjectStoreMeta, rs: ReadableStream<Uint8Array>, opts?: ObjectStorePutOpts): Promise<ObjectInfo>;
17
+ /**
18
+ * Возвращает массив всех объектов в хранилище
19
+ */
20
+ list(): Promise<ObjectInfo[]>;
21
+ /**
22
+ * Возвращает сырой object storage Nats. Используйте этот метод
23
+ * только в крайнем случае! Рекомендуется работать с оберткой
24
+ * для безопасного взаимодействия.
25
+ */
26
+ getRawStorage(): ObjectStore;
27
+ }
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ObjectStorage = void 0;
4
+ class ObjectStorage {
5
+ storage;
6
+ constructor(storage) {
7
+ this.storage = storage;
8
+ }
9
+ /**
10
+ * Возвращает метаданные и стрим с объектом
11
+ */
12
+ get(key) {
13
+ return this.storage.get(key);
14
+ }
15
+ /**
16
+ * Удаляет объект
17
+ */
18
+ delete(key) {
19
+ return this.storage.delete(key);
20
+ }
21
+ /**
22
+ * Загружает объект в хранилище
23
+ */
24
+ put(meta, rs, opts) {
25
+ return this.storage.put(meta, rs, opts);
26
+ }
27
+ /**
28
+ * Возвращает массив всех объектов в хранилище
29
+ */
30
+ list() {
31
+ return this.storage.list();
32
+ }
33
+ /**
34
+ * Возвращает сырой object storage Nats. Используйте этот метод
35
+ * только в крайнем случае! Рекомендуется работать с оберткой
36
+ * для безопасного взаимодействия.
37
+ */
38
+ getRawStorage() {
39
+ return this.storage;
40
+ }
41
+ }
42
+ exports.ObjectStorage = ObjectStorage;
43
+ //# sourceMappingURL=object-storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object-storage.js","sourceRoot":"","sources":["../src/object-storage.ts"],"names":[],"mappings":";;;AASA,MAAa,aAAa;IACK;IAA7B,YAA6B,OAAoB;QAApB,YAAO,GAAP,OAAO,CAAa;IAAG,CAAC;IAErD;;OAEG;IACI,GAAG,CAAC,GAAW;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,GAAW;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACI,GAAG,CACR,IAAqB,EACrB,EAA8B,EAC9B,IAAyB;QAEzB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACI,IAAI;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACI,aAAa;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AA3CD,sCA2CC"}
@@ -0,0 +1 @@
1
+ export {};