@rsdk/nats.object-storage 5.4.0 → 5.6.0-next.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.
- package/CHANGELOG.md +0 -4
- package/dist/nats-object-storage.module.js +6 -2
- package/dist/nats-object-storage.module.js.map +1 -1
- package/dist/watch-object-storage.decorator.d.ts +3 -1
- package/dist/watch-object-storage.decorator.js +19 -4
- package/dist/watch-object-storage.decorator.js.map +1 -1
- package/dist/watch-object-storage.service.js +2 -1
- package/dist/watch-object-storage.service.js.map +1 -1
- package/package.json +2 -2
- package/src/nats-object-storage.module.ts +6 -2
- package/src/watch-object-storage.decorator.ts +35 -3
- package/src/watch-object-storage.service.ts +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -3,10 +3,6 @@
|
|
|
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](https://github.com/R-Vision/rsdk/compare/v5.3.0...v5.4.0) (2024-12-15)
|
|
7
|
-
|
|
8
|
-
**Note:** Version bump only for package @rsdk/nats.object-storage
|
|
9
|
-
|
|
10
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)
|
|
11
7
|
|
|
12
8
|
**Note:** Version bump only for package @rsdk/nats.object-storage
|
|
@@ -53,10 +53,14 @@ let NatsObjectStorageModule = NatsObjectStorageModule_1 = class NatsObjectStorag
|
|
|
53
53
|
};
|
|
54
54
|
}
|
|
55
55
|
async onApplicationBootstrap() {
|
|
56
|
-
|
|
56
|
+
/**
|
|
57
|
+
* NOTE: не используем await, чтобы не блокировать запуск приложения.
|
|
58
|
+
* Если бакета нет, то приложение просто не пройдет readiness пробу.
|
|
59
|
+
*/
|
|
60
|
+
this.watchService?.runWatches();
|
|
57
61
|
}
|
|
58
62
|
async onApplicationShutdown() {
|
|
59
|
-
|
|
63
|
+
this.watchService?.stopWatches();
|
|
60
64
|
}
|
|
61
65
|
};
|
|
62
66
|
exports.NatsObjectStorageModule = NatsObjectStorageModule;
|
|
@@ -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,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,
|
|
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;;;WAGG;QACH,IAAI,CAAC,YAAY,EAAE,UAAU,EAAE,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,qBAAqB;QACzB,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC;IACnC,CAAC;CACF,CAAA;AAhDY,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,CAgDnC"}
|
|
@@ -4,6 +4,7 @@ export type WatchConfig = {
|
|
|
4
4
|
ignoreDeletes?: boolean;
|
|
5
5
|
includeHistory?: boolean;
|
|
6
6
|
connectionName?: string;
|
|
7
|
+
domain?: string;
|
|
7
8
|
};
|
|
8
9
|
export interface ObjectStorageWatcher {
|
|
9
10
|
onDelete(entry: ObjectInfo | null): Promise<void>;
|
|
@@ -13,6 +14,7 @@ export interface ObjectStorageWatcher {
|
|
|
13
14
|
* Key used to mark class as a watcher for object storage.
|
|
14
15
|
*/
|
|
15
16
|
export declare const WATCH_NATS_OBJECT_STORAGE_KEY = "WATCH_NATS_OBJECT_STORAGE";
|
|
17
|
+
export declare const WatchObjectStorageMetadata: import("@nestjs/core").ReflectableDecorator<WatchConfig, WatchConfig>;
|
|
16
18
|
/**
|
|
17
19
|
* Decorator used to mark class as a watcher for object storage.
|
|
18
20
|
* Needs to be used in conjunction with the `ObjectStorageWatcher` interface.
|
|
@@ -20,4 +22,4 @@ export declare const WATCH_NATS_OBJECT_STORAGE_KEY = "WATCH_NATS_OBJECT_STORAGE"
|
|
|
20
22
|
* @param {WatchConfig} config - The configuration for watching object storage.
|
|
21
23
|
* @returns {void}
|
|
22
24
|
*/
|
|
23
|
-
export declare const WatchObjectStorage:
|
|
25
|
+
export declare const WatchObjectStorage: (config: WatchConfig) => ClassDecorator;
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WatchObjectStorage = exports.WATCH_NATS_OBJECT_STORAGE_KEY = void 0;
|
|
3
|
+
exports.WatchObjectStorage = exports.WatchObjectStorageMetadata = exports.WATCH_NATS_OBJECT_STORAGE_KEY = void 0;
|
|
4
4
|
const core_1 = require("@nestjs/core");
|
|
5
|
+
const metadata_1 = require("@rsdk/metadata");
|
|
6
|
+
const nats_common_1 = require("@rsdk/nats.common");
|
|
5
7
|
/**
|
|
6
8
|
* Key used to mark class as a watcher for object storage.
|
|
7
9
|
*/
|
|
8
10
|
exports.WATCH_NATS_OBJECT_STORAGE_KEY = 'WATCH_NATS_OBJECT_STORAGE';
|
|
11
|
+
exports.WatchObjectStorageMetadata = core_1.Reflector.createDecorator({
|
|
12
|
+
key: exports.WATCH_NATS_OBJECT_STORAGE_KEY,
|
|
13
|
+
});
|
|
9
14
|
/**
|
|
10
15
|
* Decorator used to mark class as a watcher for object storage.
|
|
11
16
|
* Needs to be used in conjunction with the `ObjectStorageWatcher` interface.
|
|
@@ -13,7 +18,17 @@ exports.WATCH_NATS_OBJECT_STORAGE_KEY = 'WATCH_NATS_OBJECT_STORAGE';
|
|
|
13
18
|
* @param {WatchConfig} config - The configuration for watching object storage.
|
|
14
19
|
* @returns {void}
|
|
15
20
|
*/
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
21
|
+
const WatchObjectStorage = (config) => {
|
|
22
|
+
return (target) => {
|
|
23
|
+
(0, exports.WatchObjectStorageMetadata)(config)(target);
|
|
24
|
+
const streamName = `OBJ_${config.bucket}`;
|
|
25
|
+
const moduleDefinition = nats_common_1.NatsStreamIndicatorModuleGenerator.createClientModuleDefinition(target, {
|
|
26
|
+
streamName,
|
|
27
|
+
connectionName: config.connectionName,
|
|
28
|
+
domain: config.domain,
|
|
29
|
+
});
|
|
30
|
+
metadata_1.RsdkMetadata.setWithScope(target, metadata_1.PLATFORM_RAW_GLOBAL_METADATA_SCOPE, (0, nats_common_1.getStreamIndicatorKey)(streamName, config.connectionName, config.domain), moduleDefinition, true);
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
exports.WatchObjectStorage = WatchObjectStorage;
|
|
19
34
|
//# sourceMappingURL=watch-object-storage.decorator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch-object-storage.decorator.js","sourceRoot":"","sources":["../src/watch-object-storage.decorator.ts"],"names":[],"mappings":";;;AAAA,uCAAyC;
|
|
1
|
+
{"version":3,"file":"watch-object-storage.decorator.js","sourceRoot":"","sources":["../src/watch-object-storage.decorator.ts"],"names":[],"mappings":";;;AAAA,uCAAyC;AACzC,6CAGwB;AACxB,mDAG2B;AAgB3B;;GAEG;AACU,QAAA,6BAA6B,GAAG,2BAA2B,CAAC;AAE5D,QAAA,0BAA0B,GACrC,gBAAS,CAAC,eAAe,CAAc;IACrC,GAAG,EAAE,qCAA6B;CACnC,CAAC,CAAC;AAEL;;;;;;GAMG;AACI,MAAM,kBAAkB,GAAG,CAAC,MAAmB,EAAkB,EAAE;IACxE,OAAO,CAAC,MAAM,EAAE,EAAE;QAChB,IAAA,kCAA0B,EAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;QAE3C,MAAM,UAAU,GAAG,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;QAC1C,MAAM,gBAAgB,GACpB,gDAAkC,CAAC,4BAA4B,CAAC,MAAM,EAAE;YACtE,UAAU;YACV,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC,CAAC;QAEL,uBAAY,CAAC,YAAY,CACvB,MAAM,EACN,6CAAkC,EAClC,IAAA,mCAAqB,EAAC,UAAU,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,EACvE,gBAAgB,EAChB,IAAI,CACL,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC;AApBW,QAAA,kBAAkB,sBAoB7B"}
|
|
@@ -36,6 +36,7 @@ let WatchObjectStorageService = class WatchObjectStorageService {
|
|
|
36
36
|
async runWatches() {
|
|
37
37
|
const watchers = await this.discoverWatchers();
|
|
38
38
|
await Promise.all(watchers.map(async ({ instance, metadata }) => {
|
|
39
|
+
this.logger.info('Nats object storage watcher starting', { metadata });
|
|
39
40
|
await this.client.waitForBucketExists(metadata.bucket, 5000);
|
|
40
41
|
await this.runWatch(metadata, instance);
|
|
41
42
|
this.logger.info('Nats object storage watcher started', { metadata });
|
|
@@ -94,7 +95,7 @@ let WatchObjectStorageService = class WatchObjectStorageService {
|
|
|
94
95
|
if (!clsRef) {
|
|
95
96
|
return acc;
|
|
96
97
|
}
|
|
97
|
-
const metadata = this.discovery.getMetadataByDecorator(watch_object_storage_decorator_1.
|
|
98
|
+
const metadata = this.discovery.getMetadataByDecorator(watch_object_storage_decorator_1.WatchObjectStorageMetadata, watcher);
|
|
98
99
|
if (metadata && metadata.connectionName === this.connectionName) {
|
|
99
100
|
acc.push({ instance: watcher.instance, metadata });
|
|
100
101
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch-object-storage.service.js","sourceRoot":"","sources":["../src/watch-object-storage.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAwC;AACxC,uCAAgD;AAChD,qCAA0C;AAI1C,+EAAyE;AAKzE,
|
|
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.
|
|
3
|
+
"version": "5.6.0-next.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": "
|
|
41
|
+
"gitHead": "f95ecc8d5e1ddff9fb85e8926b658b789da4bdd7"
|
|
42
42
|
}
|
|
@@ -62,10 +62,14 @@ export class NatsObjectStorageModule
|
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
async onApplicationBootstrap(): Promise<void> {
|
|
65
|
-
|
|
65
|
+
/**
|
|
66
|
+
* NOTE: не используем await, чтобы не блокировать запуск приложения.
|
|
67
|
+
* Если бакета нет, то приложение просто не пройдет readiness пробу.
|
|
68
|
+
*/
|
|
69
|
+
this.watchService?.runWatches();
|
|
66
70
|
}
|
|
67
71
|
|
|
68
72
|
async onApplicationShutdown(): Promise<void> {
|
|
69
|
-
|
|
73
|
+
this.watchService?.stopWatches();
|
|
70
74
|
}
|
|
71
75
|
}
|
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
import { Reflector } from '@nestjs/core';
|
|
2
|
+
import {
|
|
3
|
+
PLATFORM_RAW_GLOBAL_METADATA_SCOPE,
|
|
4
|
+
RsdkMetadata,
|
|
5
|
+
} from '@rsdk/metadata';
|
|
6
|
+
import {
|
|
7
|
+
getStreamIndicatorKey,
|
|
8
|
+
NatsStreamIndicatorModuleGenerator,
|
|
9
|
+
} from '@rsdk/nats.common';
|
|
2
10
|
import type { ObjectInfo } from 'nats';
|
|
3
11
|
|
|
4
12
|
export type WatchConfig = {
|
|
@@ -6,6 +14,7 @@ export type WatchConfig = {
|
|
|
6
14
|
ignoreDeletes?: boolean;
|
|
7
15
|
includeHistory?: boolean;
|
|
8
16
|
connectionName?: string;
|
|
17
|
+
domain?: string;
|
|
9
18
|
};
|
|
10
19
|
|
|
11
20
|
export interface ObjectStorageWatcher {
|
|
@@ -18,6 +27,11 @@ export interface ObjectStorageWatcher {
|
|
|
18
27
|
*/
|
|
19
28
|
export const WATCH_NATS_OBJECT_STORAGE_KEY = 'WATCH_NATS_OBJECT_STORAGE';
|
|
20
29
|
|
|
30
|
+
export const WatchObjectStorageMetadata =
|
|
31
|
+
Reflector.createDecorator<WatchConfig>({
|
|
32
|
+
key: WATCH_NATS_OBJECT_STORAGE_KEY,
|
|
33
|
+
});
|
|
34
|
+
|
|
21
35
|
/**
|
|
22
36
|
* Decorator used to mark class as a watcher for object storage.
|
|
23
37
|
* Needs to be used in conjunction with the `ObjectStorageWatcher` interface.
|
|
@@ -25,6 +39,24 @@ export const WATCH_NATS_OBJECT_STORAGE_KEY = 'WATCH_NATS_OBJECT_STORAGE';
|
|
|
25
39
|
* @param {WatchConfig} config - The configuration for watching object storage.
|
|
26
40
|
* @returns {void}
|
|
27
41
|
*/
|
|
28
|
-
export const WatchObjectStorage =
|
|
29
|
-
|
|
30
|
-
|
|
42
|
+
export const WatchObjectStorage = (config: WatchConfig): ClassDecorator => {
|
|
43
|
+
return (target) => {
|
|
44
|
+
WatchObjectStorageMetadata(config)(target);
|
|
45
|
+
|
|
46
|
+
const streamName = `OBJ_${config.bucket}`;
|
|
47
|
+
const moduleDefinition =
|
|
48
|
+
NatsStreamIndicatorModuleGenerator.createClientModuleDefinition(target, {
|
|
49
|
+
streamName,
|
|
50
|
+
connectionName: config.connectionName,
|
|
51
|
+
domain: config.domain,
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
RsdkMetadata.setWithScope(
|
|
55
|
+
target,
|
|
56
|
+
PLATFORM_RAW_GLOBAL_METADATA_SCOPE,
|
|
57
|
+
getStreamIndicatorKey(streamName, config.connectionName, config.domain),
|
|
58
|
+
moduleDefinition,
|
|
59
|
+
true,
|
|
60
|
+
);
|
|
61
|
+
};
|
|
62
|
+
};
|
|
@@ -9,7 +9,7 @@ import type {
|
|
|
9
9
|
ObjectStorageWatcher,
|
|
10
10
|
WatchConfig,
|
|
11
11
|
} from './watch-object-storage.decorator';
|
|
12
|
-
import {
|
|
12
|
+
import { WatchObjectStorageMetadata } from './watch-object-storage.decorator';
|
|
13
13
|
|
|
14
14
|
export class WatchObjectStorageService {
|
|
15
15
|
constructor(
|
|
@@ -30,6 +30,7 @@ export class WatchObjectStorageService {
|
|
|
30
30
|
|
|
31
31
|
await Promise.all(
|
|
32
32
|
watchers.map(async ({ instance, metadata }) => {
|
|
33
|
+
this.logger.info('Nats object storage watcher starting', { metadata });
|
|
33
34
|
await this.client.waitForBucketExists(metadata.bucket, 5000);
|
|
34
35
|
await this.runWatch(metadata, instance);
|
|
35
36
|
this.logger.info('Nats object storage watcher started', { metadata });
|
|
@@ -114,7 +115,7 @@ export class WatchObjectStorageService {
|
|
|
114
115
|
}
|
|
115
116
|
|
|
116
117
|
const metadata = this.discovery.getMetadataByDecorator(
|
|
117
|
-
|
|
118
|
+
WatchObjectStorageMetadata,
|
|
118
119
|
watcher,
|
|
119
120
|
);
|
|
120
121
|
|