@rsdk/nats.object-storage 5.4.0-next.9 → 5.4.0-rc.1

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 +16 -0
  2. package/dist/index.d.ts +3 -1
  3. package/dist/index.js +7 -3
  4. package/dist/index.js.map +1 -1
  5. package/dist/inject-object-storage-service.decorator.d.ts +4 -1
  6. package/dist/inject-object-storage-service.decorator.js +4 -4
  7. package/dist/inject-object-storage-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-object-storage-module.generator.d.ts +9 -3
  12. package/dist/nats-object-storage-module.generator.js +8 -8
  13. package/dist/nats-object-storage-module.generator.js.map +1 -1
  14. package/dist/{object-storage.d.ts → nats-object-storage.d.ts} +1 -1
  15. package/dist/{object-storage.js → nats-object-storage.js} +4 -4
  16. package/dist/nats-object-storage.js.map +1 -0
  17. package/dist/nats-object-storage.module.d.ts +6 -5
  18. package/dist/nats-object-storage.module.js +10 -3
  19. package/dist/nats-object-storage.module.js.map +1 -1
  20. package/dist/nats-object-storage.plugin.d.ts +10 -0
  21. package/dist/nats-object-storage.plugin.js +18 -0
  22. package/dist/nats-object-storage.plugin.js.map +1 -0
  23. package/dist/nats-object-storage.service.d.ts +13 -5
  24. package/dist/nats-object-storage.service.js +34 -10
  25. package/dist/nats-object-storage.service.js.map +1 -1
  26. package/dist/watch-object-storage.service.js +1 -1
  27. package/dist/watch-object-storage.service.js.map +1 -1
  28. package/package.json +2 -2
  29. package/src/index.ts +3 -1
  30. package/src/inject-object-storage-service.decorator.ts +4 -4
  31. package/src/module-options.interface.ts +3 -0
  32. package/src/nats-object-storage-module.generator.ts +12 -11
  33. package/src/nats-object-storage.module.ts +19 -6
  34. package/src/nats-object-storage.plugin.ts +18 -0
  35. package/src/nats-object-storage.service.ts +47 -15
  36. package/src/{object-storage.ts → nats-object-storage.ts} +1 -1
  37. package/src/watch-object-storage.service.ts +1 -1
  38. package/dist/object-storage.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,22 @@
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.4.0-next.11...v5.4.0-rc.0) (2024-12-12)
7
+
8
+ **Note:** Version bump only for package @rsdk/nats.object-storage
9
+
10
+ ## [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)
11
+
12
+ ### Bug Fixes
13
+
14
+ * **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))
15
+
16
+ ## [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)
17
+
18
+ ### Features
19
+
20
+ * 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))
21
+
6
22
  ## [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)
7
23
 
8
24
  **Note:** Version bump only for package @rsdk/nats.object-storage
package/dist/index.d.ts CHANGED
@@ -2,6 +2,8 @@ import './patch';
2
2
  export { NatsObjectStorageService } from './nats-object-storage.service';
3
3
  export { WatchObjectStorage, type ObjectStorageWatcher, } from './watch-object-storage.decorator';
4
4
  export { NatsObjectStorageModule } from './nats-object-storage.module';
5
- export { ObjectStorage } from './object-storage';
5
+ export { NatsObjectStorage } from './nats-object-storage';
6
6
  export * from './inject-object-storage-service.decorator';
7
7
  export * from './tokens.fn';
8
+ export { NatsObjectStorageModuleGenerator } from './nats-object-storage-module.generator';
9
+ export { NatsObjectStoragePlugin } from './nats-object-storage.plugin';
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.ObjectStorage = exports.NatsObjectStorageModule = exports.WatchObjectStorage = exports.NatsObjectStorageService = void 0;
17
+ exports.NatsObjectStoragePlugin = exports.NatsObjectStorageModuleGenerator = exports.NatsObjectStorage = exports.NatsObjectStorageModule = exports.WatchObjectStorage = exports.NatsObjectStorageService = void 0;
18
18
  require("./patch");
19
19
  var nats_object_storage_service_1 = require("./nats-object-storage.service");
20
20
  Object.defineProperty(exports, "NatsObjectStorageService", { enumerable: true, get: function () { return nats_object_storage_service_1.NatsObjectStorageService; } });
@@ -22,8 +22,12 @@ var watch_object_storage_decorator_1 = require("./watch-object-storage.decorator
22
22
  Object.defineProperty(exports, "WatchObjectStorage", { enumerable: true, get: function () { return watch_object_storage_decorator_1.WatchObjectStorage; } });
23
23
  var nats_object_storage_module_1 = require("./nats-object-storage.module");
24
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; } });
25
+ var nats_object_storage_1 = require("./nats-object-storage");
26
+ Object.defineProperty(exports, "NatsObjectStorage", { enumerable: true, get: function () { return nats_object_storage_1.NatsObjectStorage; } });
27
27
  __exportStar(require("./inject-object-storage-service.decorator"), exports);
28
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
+ var nats_object_storage_plugin_1 = require("./nats-object-storage.plugin");
32
+ Object.defineProperty(exports, "NatsObjectStoragePlugin", { enumerable: true, get: function () { return nats_object_storage_plugin_1.NatsObjectStoragePlugin; } });
29
33
  //# 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,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"}
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,6DAA0D;AAAjD,wHAAA,iBAAiB,OAAA;AAC1B,4EAA0D;AAC1D,8CAA4B;AAC5B,+FAA0F;AAAjF,wJAAA,gCAAgC,OAAA;AACzC,2EAAuE;AAA9D,qIAAA,uBAAuB,OAAA"}
@@ -1,2 +1,5 @@
1
1
  export declare const InjectObjectStorageService: (connectionName?: string) => ParameterDecorator;
2
- export declare const InjectNatsObjectStorage: (bucketName: string, connectionName?: string) => ParameterDecorator;
2
+ export declare const InjectNatsObjectStorage: (bucketName: string, opts?: {
3
+ connectionName?: string;
4
+ domain?: string;
5
+ }) => ParameterDecorator;
@@ -7,11 +7,11 @@ const nats_object_storage_module_generator_1 = require("./nats-object-storage-mo
7
7
  const tokens_fn_1 = require("./tokens.fn");
8
8
  const InjectObjectStorageService = (connectionName) => (0, common_1.Inject)((0, tokens_fn_1.createObjectStorageServiceToken)(connectionName));
9
9
  exports.InjectObjectStorageService = InjectObjectStorageService;
10
- const InjectNatsObjectStorage = (bucketName, connectionName) => {
10
+ const InjectNatsObjectStorage = (bucketName, opts) => {
11
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);
12
+ (0, common_1.Inject)((0, tokens_fn_1.createObjectStorageToken)(bucketName, opts?.connectionName))(target, propertyKey, parameterIndex);
13
+ const key = `nats-kv:${bucketName}${opts?.connectionName ? `:${opts.connectionName}` : ''}`;
14
+ const moduleDefinition = nats_object_storage_module_generator_1.NatsObjectStorageModuleGenerator.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-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"}
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,IAAmD,EAC/B,EAAE;IACtB,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,EAAE;QAC7C,IAAA,eAAM,EAAC,IAAA,oCAAwB,EAAC,UAAU,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAChE,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,GACpB,uEAAgC,CAAC,4BAA4B,CAC3D,MAAM,EACN,UAAU,EACV,IAAI,CACL,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,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 NatsObjectStorageModuleGenerator {
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_object_storage_module_1 = require("./nats-object-storage.module");
7
7
  const tokens_fn_1 = require("./tokens.fn");
8
8
  class NatsObjectStorageModuleGenerator {
9
- static createClientModuleDefinition(target, bucketName, connectionName) {
10
- const provider = NatsObjectStorageModuleGenerator.createClientProvider(bucketName, connectionName);
9
+ static createClientModuleDefinition(target, bucketName, opts) {
10
+ const provider = NatsObjectStorageModuleGenerator.createClientProvider(bucketName, opts);
11
11
  const moduleDefinition = {
12
12
  global: true,
13
- imports: [nats_object_storage_module_1.NatsObjectStorageModule.forFeature(connectionName)],
13
+ imports: [nats_object_storage_module_1.NatsObjectStorageModule.forFeature(opts ?? {})],
14
14
  module: NatsObjectStorageModuleGenerator,
15
15
  providers: [provider],
16
16
  exports: [provider],
17
17
  };
18
- metadata_1.RsdkMetadata.add(target, { bucketName, connectionName }, constants_1.NATS_OBJECT_STORAGES_RSDK_METADATA_SCOPE);
18
+ metadata_1.RsdkMetadata.add(target, { bucketName, ...opts }, constants_1.NATS_OBJECT_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.createObjectStorageToken)(bucketName, connectionName),
24
- inject: [(0, tokens_fn_1.createObjectStorageServiceToken)(connectionName)],
25
- useFactory: (service) => service.create({ bucketName, onlyExists: true }),
23
+ provide: (0, tokens_fn_1.createObjectStorageToken)(bucketName, opts?.connectionName),
24
+ inject: [(0, tokens_fn_1.createObjectStorageServiceToken)(opts?.connectionName)],
25
+ useFactory: (service) => service.bind({ bucketName, ...opts }),
26
26
  };
27
27
  }
28
28
  }
@@ -1 +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;IAEO,MAAM,CAAC,oBAAoB,CACjC,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,MAAM,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;SACnD,CAAC;IACJ,CAAC;CACF;AAvCD,4EAuCC"}
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;AAEvE,6EAAuE;AAEvE,2CAGqB;AAErB,MAAa,gCAAgC;IAC3C,MAAM,CAAC,4BAA4B,CACjC,MAAc,EACd,UAAkB,EAClB,IAAmD;QAEnD,MAAM,QAAQ,GAAG,gCAAgC,CAAC,oBAAoB,CACpE,UAAU,EACV,IAAI,CACL,CAAC;QAEF,MAAM,gBAAgB,GAAkB;YACtC,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,CAAC,oDAAuB,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YACzD,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,GAAG,IAAI,EAAE,EACvB,oDAAwC,CACzC,CAAC;QAEF,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,oBAAoB,CACzB,UAAkB,EAClB,IAAmD;QAEnD,OAAO;YACL,OAAO,EAAE,IAAA,oCAAwB,EAAC,UAAU,EAAE,IAAI,EAAE,cAAc,CAAC;YACnE,MAAM,EAAE,CAAC,IAAA,2CAA+B,EAAC,IAAI,EAAE,cAAc,CAAC,CAAC;YAC/D,UAAU,EAAE,CACV,OAAiC,EACL,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,CAAC;SACvE,CAAC;IACJ,CAAC;CACF;AAxCD,4EAwCC"}
@@ -1,5 +1,5 @@
1
1
  import type { ObjectInfo, ObjectResult, ObjectStore, ObjectStoreMeta, ObjectStorePutOpts, PurgeResponse } from 'nats';
2
- export declare class ObjectStorage {
2
+ export declare class NatsObjectStorage {
3
3
  private readonly storage;
4
4
  constructor(storage: ObjectStore);
5
5
  /**
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ObjectStorage = void 0;
4
- class ObjectStorage {
3
+ exports.NatsObjectStorage = void 0;
4
+ class NatsObjectStorage {
5
5
  storage;
6
6
  constructor(storage) {
7
7
  this.storage = storage;
@@ -39,5 +39,5 @@ class ObjectStorage {
39
39
  return this.storage;
40
40
  }
41
41
  }
42
- exports.ObjectStorage = ObjectStorage;
43
- //# sourceMappingURL=object-storage.js.map
42
+ exports.NatsObjectStorage = NatsObjectStorage;
43
+ //# sourceMappingURL=nats-object-storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nats-object-storage.js","sourceRoot":"","sources":["../src/nats-object-storage.ts"],"names":[],"mappings":";;;AASA,MAAa,iBAAiB;IACC;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,8CA2CC"}
@@ -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 { WatchObjectStorageService } from './watch-object-storage.service';
3
- export declare class NatsObjectStorageModule implements OnModuleInit, OnModuleDestroy {
4
+ export declare class NatsObjectStorageModule implements OnApplicationBootstrap, OnApplicationShutdown {
4
5
  private readonly watchService;
5
6
  constructor(watchService: WatchObjectStorageService);
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 NatsObjectStorageModule = NatsObjectStorageModule_1 = class NatsObjectStorag
22
22
  constructor(watchService) {
23
23
  this.watchService = watchService;
24
24
  }
25
- static forFeature(connectionName) {
25
+ static forFeature({ connectionName }) {
26
26
  const clientProvider = {
27
27
  provide: (0, tokens_fn_1.createObjectStorageServiceToken)(connectionName),
28
28
  useClass: nats_object_storage_service_1.NatsObjectStorageService,
29
29
  };
30
30
  return {
31
31
  module: NatsObjectStorageModule_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 NatsObjectStorageModule = NatsObjectStorageModule_1 = class NatsObjectStorag
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 NatsObjectStorageModule = NatsObjectStorageModule_1 = class NatsObjectStorag
45
52
  exports: [clientProvider],
46
53
  };
47
54
  }
48
- async onModuleInit() {
55
+ async onApplicationBootstrap() {
49
56
  await this.watchService?.runWatches();
50
57
  }
51
- async onModuleDestroy() {
58
+ async onApplicationShutdown() {
52
59
  await this.watchService?.stopWatches();
53
60
  }
54
61
  };
@@ -1 +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"}
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,mDAO2B;AAG3B,+EAAyE;AACzE,2CAA8D;AAC9D,iFAA2E;AAMpE,IAAM,uBAAuB,+BAA7B,MAAM,uBAAuB;IAGL;IAA7B,YAA6B,YAAuC;QAAvC,iBAAY,GAAZ,YAAY,CAA2B;IAAG,CAAC;IAEjE,MAAM,CAAC,UAAU,CAAC,EAAE,cAAc,EAAiB;QACxD,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,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,YAAY,EAAE,UAAU,EAAE,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,qBAAqB;QACzB,MAAM,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC;IACzC,CAAC;CACF,CAAA;AA5CY,0DAAuB;kCAAvB,uBAAuB;IAJnC,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,sBAAe,CAAC;QAC1B,SAAS,EAAE,CAAC,sDAAwB,EAAE,wDAAyB,CAAC;KACjE,CAAC;qCAI2C,wDAAyB;GAHzD,uBAAuB,CA4CnC"}
@@ -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 NatsObjectStoragePlugin 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.NatsObjectStoragePlugin = void 0;
4
+ const nats_object_storage_module_1 = require("./nats-object-storage.module");
5
+ class NatsObjectStoragePlugin {
6
+ options;
7
+ constructor(options) {
8
+ this.options = options;
9
+ }
10
+ forTransports() {
11
+ return 'any';
12
+ }
13
+ modules() {
14
+ return [nats_object_storage_module_1.NatsObjectStorageModule.forFeature(this.options ?? {})];
15
+ }
16
+ }
17
+ exports.NatsObjectStoragePlugin = NatsObjectStoragePlugin;
18
+ //# sourceMappingURL=nats-object-storage.plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nats-object-storage.plugin.js","sourceRoot":"","sources":["../src/nats-object-storage.plugin.ts"],"names":[],"mappings":";;;AAKA,6EAAuE;AAEvE,MAAa,uBAAuB;IACL;IAA7B,YAA6B,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;IAAG,CAAC;IAExD,aAAa;QACX,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO;QACL,OAAO,CAAC,oDAAuB,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;CACF;AAVD,0DAUC"}
@@ -1,19 +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 { ObjectStoreOptions } from 'nats/lib/jetstream/types';
4
- import { ObjectStorage } from './object-storage';
5
+ import { NatsObjectStorage } from './nats-object-storage';
5
6
  export declare class NatsObjectStorageService {
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
  * Get or create object storage
11
13
  */
12
- create({ bucketName, domain, onlyExists, ...opts }: Partial<ObjectStoreOptions> & {
14
+ create({ bucketName, domain, ...opts }: Partial<ObjectStoreOptions> & {
13
15
  bucketName: string;
14
16
  domain?: string;
15
- onlyExists?: boolean;
16
- }): Promise<ObjectStorage>;
17
+ }): Promise<NatsObjectStorage>;
18
+ /**
19
+ * Get object storage
20
+ */
21
+ bind({ bucketName, domain, ...opts }: Partial<ObjectStoreOptions> & {
22
+ bucketName: string;
23
+ domain?: string;
24
+ }): Promise<NatsObjectStorage>;
17
25
  /**
18
26
  * Waits for the specified bucket to exist.
19
27
  *
@@ -17,30 +17,30 @@ 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 object_storage_1 = require("./object-storage");
20
+ const nats_object_storage_1 = require("./nats-object-storage");
21
21
  let NatsObjectStorageService = class NatsObjectStorageService {
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
  * Get or create object storage
30
32
  */
31
- async create({ bucketName, domain, onlyExists, ...opts }) {
32
- const jsOptions = domain ? { domain } : undefined;
33
- const js = this.nats.jetstream(jsOptions);
33
+ async create({ bucketName, domain, ...opts }) {
34
+ const js = this.nats.jetstream({
35
+ domain: domain ?? this.config.defaultJetStreamDomain,
36
+ });
34
37
  try {
35
- if (onlyExists && !(await this.isBucketExists(bucketName, jsOptions))) {
36
- throw new core_1.NotFoundException(`Object storage bucket "${bucketName}" not found`);
37
- }
38
38
  const storage = await js.views.os(bucketName, opts);
39
39
  this.logger.trace('Object storage initialized', {
40
40
  connectionName: this.nats.info,
41
41
  bucket: bucketName,
42
42
  });
43
- return new object_storage_1.ObjectStorage(storage);
43
+ return new nats_object_storage_1.NatsObjectStorage(storage);
44
44
  }
45
45
  catch (error) {
46
46
  this.logger.error('Failed to get or create object storage', {
@@ -50,6 +50,29 @@ let NatsObjectStorageService = class NatsObjectStorageService {
50
50
  throw error;
51
51
  }
52
52
  }
53
+ /**
54
+ * Get object storage
55
+ */
56
+ async bind({ bucketName, domain, ...opts }) {
57
+ const js = this.nats.jetstream({
58
+ domain: domain ?? this.config.defaultJetStreamDomain,
59
+ });
60
+ try {
61
+ const storage = await js.views.os(bucketName, opts);
62
+ this.logger.trace('Object storage bound', {
63
+ connectionName: this.nats.info,
64
+ bucket: bucketName,
65
+ });
66
+ return new nats_object_storage_1.NatsObjectStorage(storage);
67
+ }
68
+ catch (error) {
69
+ this.logger.error('Failed to get object storage', {
70
+ err: error,
71
+ bucket: bucketName,
72
+ });
73
+ throw error;
74
+ }
75
+ }
53
76
  /**
54
77
  * Waits for the specified bucket to exist.
55
78
  *
@@ -94,6 +117,7 @@ exports.NatsObjectStorageService = NatsObjectStorageService = __decorate([
94
117
  (0, common_1.Injectable)(),
95
118
  __param(0, (0, core_1.InjectLogger)(NatsObjectStorageService)),
96
119
  __param(1, (0, common_1.Inject)(nats_common_1.NATS_CLIENT_INJECTION_TOKEN_FOR_PACKAGE)),
97
- __metadata("design:paramtypes", [Object, Object])
120
+ __param(2, (0, common_1.Inject)(nats_common_1.NATS_CONFIG_INJECTION_TOKEN_FOR_PACKAGE)),
121
+ __metadata("design:paramtypes", [Object, Object, nats_common_1.DefaultNatsConfig])
98
122
  ], NatsObjectStorageService);
99
123
  //# sourceMappingURL=nats-object-storage.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nats-object-storage.service.js","sourceRoot":"","sources":["../src/nats-object-storage.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nats-object-storage.service.js","sourceRoot":"","sources":["../src/nats-object-storage.service.ts"],"names":[],"mappings":"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"}
@@ -70,7 +70,7 @@ let WatchObjectStorageService = class WatchObjectStorageService {
70
70
  * @returns A Promise that resolves when the watch operation is complete.
71
71
  */
72
72
  async runWatch({ bucket, ...options }, watcher) {
73
- const storage = await this.client.create({ bucketName: bucket });
73
+ const storage = await this.client.bind({ bucketName: bucket });
74
74
  this.watch(storage.getRawStorage(), async (event) => {
75
75
  if (!event)
76
76
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"watch-object-storage.service.js","sourceRoot":"","sources":["../src/watch-object-storage.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"watch-object-storage.service.js","sourceRoot":"","sources":["../src/watch-object-storage.service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rsdk/nats.object-storage",
3
- "version": "5.4.0-next.9",
3
+ "version": "5.4.0-rc.1",
4
4
  "description": "Nats NestJS object 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": "32196fc6d5e00b93ffc5bac40e865b88b5b20090"
41
+ "gitHead": "0b7b466f96c2f6e14ee851213a35ca561b8bc4e1"
42
42
  }
package/src/index.ts CHANGED
@@ -6,6 +6,8 @@ export {
6
6
  type ObjectStorageWatcher,
7
7
  } from './watch-object-storage.decorator';
8
8
  export { NatsObjectStorageModule } from './nats-object-storage.module';
9
- export { ObjectStorage } from './object-storage';
9
+ export { NatsObjectStorage } from './nats-object-storage';
10
10
  export * from './inject-object-storage-service.decorator';
11
11
  export * from './tokens.fn';
12
+ export { NatsObjectStorageModuleGenerator } from './nats-object-storage-module.generator';
13
+ export { NatsObjectStoragePlugin } from './nats-object-storage.plugin';
@@ -17,21 +17,21 @@ export const InjectObjectStorageService = (
17
17
 
18
18
  export const InjectNatsObjectStorage = (
19
19
  bucketName: string,
20
- connectionName?: string,
20
+ opts?: { connectionName?: string; domain?: string },
21
21
  ): ParameterDecorator => {
22
22
  return (target, propertyKey, parameterIndex) => {
23
- Inject(createObjectStorageToken(bucketName, connectionName))(
23
+ Inject(createObjectStorageToken(bucketName, opts?.connectionName))(
24
24
  target,
25
25
  propertyKey,
26
26
  parameterIndex,
27
27
  );
28
28
 
29
- const key = `nats-kv:${bucketName}${connectionName ? `:${connectionName}` : ''}`;
29
+ const key = `nats-kv:${bucketName}${opts?.connectionName ? `:${opts.connectionName}` : ''}`;
30
30
  const moduleDefinition =
31
31
  NatsObjectStorageModuleGenerator.createClientModuleDefinition(
32
32
  target,
33
33
  bucketName,
34
- connectionName,
34
+ opts,
35
35
  );
36
36
 
37
37
  RsdkMetadata.setWithScope(
@@ -0,0 +1,3 @@
1
+ export interface ModuleOptions {
2
+ connectionName?: string | undefined;
3
+ }
@@ -2,9 +2,9 @@ import type { DynamicModule, FactoryProvider } from '@nestjs/common';
2
2
  import { RsdkMetadata } from '@rsdk/metadata';
3
3
 
4
4
  import { NATS_OBJECT_STORAGES_RSDK_METADATA_SCOPE } from './constants';
5
+ import type { NatsObjectStorage } from './nats-object-storage';
5
6
  import { NatsObjectStorageModule } from './nats-object-storage.module';
6
7
  import type { NatsObjectStorageService } from './nats-object-storage.service';
7
- import type { ObjectStorage } from './object-storage';
8
8
  import {
9
9
  createObjectStorageServiceToken,
10
10
  createObjectStorageToken,
@@ -14,16 +14,16 @@ export class NatsObjectStorageModuleGenerator {
14
14
  static createClientModuleDefinition(
15
15
  target: object,
16
16
  bucketName: string,
17
- connectionName?: string,
17
+ opts?: { connectionName?: string; domain?: string },
18
18
  ): DynamicModule {
19
19
  const provider = NatsObjectStorageModuleGenerator.createClientProvider(
20
20
  bucketName,
21
- connectionName,
21
+ opts,
22
22
  );
23
23
 
24
24
  const moduleDefinition: DynamicModule = {
25
25
  global: true,
26
- imports: [NatsObjectStorageModule.forFeature(connectionName)],
26
+ imports: [NatsObjectStorageModule.forFeature(opts ?? {})],
27
27
  module: NatsObjectStorageModuleGenerator,
28
28
  providers: [provider],
29
29
  exports: [provider],
@@ -31,22 +31,23 @@ export class NatsObjectStorageModuleGenerator {
31
31
 
32
32
  RsdkMetadata.add(
33
33
  target,
34
- { bucketName, connectionName },
34
+ { bucketName, ...opts },
35
35
  NATS_OBJECT_STORAGES_RSDK_METADATA_SCOPE,
36
36
  );
37
37
 
38
38
  return moduleDefinition;
39
39
  }
40
40
 
41
- private static createClientProvider(
41
+ static createClientProvider(
42
42
  bucketName: string,
43
- connectionName?: string,
43
+ opts?: { connectionName?: string; domain?: string },
44
44
  ): FactoryProvider {
45
45
  return {
46
- provide: createObjectStorageToken(bucketName, connectionName),
47
- inject: [createObjectStorageServiceToken(connectionName)],
48
- useFactory: (service: NatsObjectStorageService): Promise<ObjectStorage> =>
49
- service.create({ bucketName, onlyExists: true }),
46
+ provide: createObjectStorageToken(bucketName, opts?.connectionName),
47
+ inject: [createObjectStorageServiceToken(opts?.connectionName)],
48
+ useFactory: (
49
+ service: NatsObjectStorageService,
50
+ ): Promise<NatsObjectStorage> => service.bind({ bucketName, ...opts }),
50
51
  };
51
52
  }
52
53
  }
@@ -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 { NatsObjectStorageService } from './nats-object-storage.service';
16
20
  import { createObjectStorageServiceToken } from './tokens.fn';
17
21
  import { WatchObjectStorageService } from './watch-object-storage.service';
@@ -20,10 +24,12 @@ import { WatchObjectStorageService } from './watch-object-storage.service';
20
24
  imports: [DiscoveryModule],
21
25
  providers: [NatsObjectStorageService, WatchObjectStorageService],
22
26
  })
23
- export class NatsObjectStorageModule implements OnModuleInit, OnModuleDestroy {
27
+ export class NatsObjectStorageModule
28
+ implements OnApplicationBootstrap, OnApplicationShutdown
29
+ {
24
30
  constructor(private readonly watchService: WatchObjectStorageService) {}
25
31
 
26
- public static forFeature(connectionName?: string): DynamicModule {
32
+ public static forFeature({ connectionName }: ModuleOptions): DynamicModule {
27
33
  const clientProvider: Provider = {
28
34
  provide: createObjectStorageServiceToken(connectionName),
29
35
  useClass: NatsObjectStorageService,
@@ -31,6 +37,7 @@ export class NatsObjectStorageModule implements OnModuleInit, OnModuleDestroy {
31
37
 
32
38
  return {
33
39
  module: NatsObjectStorageModule,
40
+ global: true,
34
41
  providers: [
35
42
  {
36
43
  provide: NATS_CLIENT_INJECTION_TOKEN_FOR_PACKAGE,
@@ -38,6 +45,12 @@ export class NatsObjectStorageModule 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 NatsObjectStorageModule implements OnModuleInit, OnModuleDestroy {
48
61
  };
49
62
  }
50
63
 
51
- async onModuleInit(): Promise<void> {
64
+ async onApplicationBootstrap(): Promise<void> {
52
65
  await this.watchService?.runWatches();
53
66
  }
54
67
 
55
- async onModuleDestroy(): Promise<void> {
68
+ async onApplicationShutdown(): Promise<void> {
56
69
  await this.watchService?.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 { NatsObjectStorageModule } from './nats-object-storage.module';
7
+
8
+ export class NatsObjectStoragePlugin implements PlatformAppPlugin {
9
+ constructor(private readonly options?: ModuleOptions) {}
10
+
11
+ forTransports(): AppropriateTransports {
12
+ return 'any';
13
+ }
14
+
15
+ modules(): (DynamicModule | Constructor)[] {
16
+ return [NatsObjectStorageModule.forFeature(this.options ?? {})];
17
+ }
18
+ }
@@ -1,12 +1,16 @@
1
1
  import { Inject, Injectable } from '@nestjs/common';
2
2
  import { delay, Timespan } from '@rsdk/common';
3
- import { InjectLogger, InternalException, NotFoundException } from '@rsdk/core';
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 { ObjectStoreOptions } from 'nats/lib/jetstream/types';
8
12
 
9
- import { ObjectStorage } from './object-storage';
13
+ import { NatsObjectStorage } from './nats-object-storage';
10
14
 
11
15
  @Injectable()
12
16
  export class NatsObjectStorageService {
@@ -15,6 +19,8 @@ export class NatsObjectStorageService {
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
  /**
@@ -23,23 +29,16 @@ export class NatsObjectStorageService {
23
29
  public async create({
24
30
  bucketName,
25
31
  domain,
26
- onlyExists,
27
32
  ...opts
28
33
  }: Partial<ObjectStoreOptions> & {
29
34
  bucketName: string;
30
35
  domain?: string;
31
- onlyExists?: boolean;
32
- }): Promise<ObjectStorage> {
33
- const jsOptions = domain ? { domain } : undefined;
34
- const js = this.nats.jetstream(jsOptions);
36
+ }): Promise<NatsObjectStorage> {
37
+ const js = this.nats.jetstream({
38
+ domain: domain ?? this.config.defaultJetStreamDomain,
39
+ });
35
40
 
36
41
  try {
37
- if (onlyExists && !(await this.isBucketExists(bucketName, jsOptions))) {
38
- throw new NotFoundException(
39
- `Object storage bucket "${bucketName}" not found`,
40
- );
41
- }
42
-
43
42
  const storage = await js.views.os(bucketName, opts);
44
43
 
45
44
  this.logger.trace('Object storage initialized', {
@@ -47,7 +46,7 @@ export class NatsObjectStorageService {
47
46
  bucket: bucketName,
48
47
  });
49
48
 
50
- return new ObjectStorage(storage);
49
+ return new NatsObjectStorage(storage);
51
50
  } catch (error) {
52
51
  this.logger.error('Failed to get or create object storage', {
53
52
  err: error,
@@ -57,6 +56,39 @@ export class NatsObjectStorageService {
57
56
  }
58
57
  }
59
58
 
59
+ /**
60
+ * Get object storage
61
+ */
62
+ public async bind({
63
+ bucketName,
64
+ domain,
65
+ ...opts
66
+ }: Partial<ObjectStoreOptions> & {
67
+ bucketName: string;
68
+ domain?: string;
69
+ }): Promise<NatsObjectStorage> {
70
+ const js = this.nats.jetstream({
71
+ domain: domain ?? this.config.defaultJetStreamDomain,
72
+ });
73
+
74
+ try {
75
+ const storage = await js.views.os(bucketName, opts);
76
+
77
+ this.logger.trace('Object storage bound', {
78
+ connectionName: this.nats.info,
79
+ bucket: bucketName,
80
+ });
81
+
82
+ return new NatsObjectStorage(storage);
83
+ } catch (error) {
84
+ this.logger.error('Failed to get object storage', {
85
+ err: error,
86
+ bucket: bucketName,
87
+ });
88
+ throw error;
89
+ }
90
+ }
91
+
60
92
  /**
61
93
  * Waits for the specified bucket to exist.
62
94
  *
@@ -7,7 +7,7 @@ import type {
7
7
  PurgeResponse,
8
8
  } from 'nats';
9
9
 
10
- export class ObjectStorage {
10
+ export class NatsObjectStorage {
11
11
  constructor(private readonly storage: ObjectStore) {}
12
12
 
13
13
  /**
@@ -78,7 +78,7 @@ export class WatchObjectStorageService {
78
78
  { bucket, ...options }: WatchConfig,
79
79
  watcher: ObjectStorageWatcher,
80
80
  ): Promise<void> {
81
- const storage = await this.client.create({ bucketName: bucket });
81
+ const storage = await this.client.bind({ bucketName: bucket });
82
82
 
83
83
  this.watch(
84
84
  storage.getRawStorage(),
@@ -1 +0,0 @@
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"}