@rsdk/nats.object-storage 5.6.1-next.0 → 5.7.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -1
- package/dist/index.js.map +1 -1
- package/dist/watch-object-storage.decorator.d.ts +1 -0
- package/dist/watch-object-storage.decorator.js.map +1 -1
- package/dist/watch-object-storage.service.d.ts +8 -0
- package/dist/watch-object-storage.service.js +21 -1
- package/dist/watch-object-storage.service.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +1 -0
- package/src/watch-object-storage.decorator.ts +1 -0
- package/src/watch-object-storage.service.ts +25 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import './patch';
|
|
2
2
|
export { NatsObjectStorageService } from './nats-object-storage.service';
|
|
3
|
-
export { WatchObjectStorage, type ObjectStorageWatcher, } from './watch-object-storage.decorator';
|
|
3
|
+
export { WatchObjectStorage, type ObjectStorageWatcher, WatchConfig, } from './watch-object-storage.decorator';
|
|
4
4
|
export { NatsObjectStorageModule } from './nats-object-storage.module';
|
|
5
5
|
export { NatsObjectStorage } from './nats-object-storage';
|
|
6
6
|
export * from './inject-object-storage-service.decorator';
|
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,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,mBAAiB;AAEjB,6EAAyE;AAAhE,uIAAA,wBAAwB,OAAA;AACjC,mFAI0C;AAHxC,oIAAA,kBAAkB,OAAA;AAIpB,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"}
|
|
@@ -5,6 +5,7 @@ export type WatchConfig = {
|
|
|
5
5
|
includeHistory?: boolean;
|
|
6
6
|
connectionName?: string;
|
|
7
7
|
domain?: string;
|
|
8
|
+
filter?: string;
|
|
8
9
|
/**
|
|
9
10
|
* Flag indicating whether the readiness probe for bucket is optional.
|
|
10
11
|
* If set to `true`, an error in the probe will not affect the global system status.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch-object-storage.decorator.js","sourceRoot":"","sources":["../src/watch-object-storage.decorator.ts"],"names":[],"mappings":";;;AAAA,uCAAyC;AACzC,yCAA6C;AAC7C,6CAGwB;AACxB,mDAG2B;
|
|
1
|
+
{"version":3,"file":"watch-object-storage.decorator.js","sourceRoot":"","sources":["../src/watch-object-storage.decorator.ts"],"names":[],"mappings":";;;AAAA,uCAAyC;AACzC,yCAA6C;AAC7C,6CAGwB;AACxB,mDAG2B;AAuB3B;;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,CAC7D,MAAM,EACN,IAAA,sBAAa,EAAC;YACZ,UAAU;YACV,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,MAAM,CAAC,mBAAmB;SACvC,CAAC,CACH,CAAC;QAEJ,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;AAxBW,QAAA,kBAAkB,sBAwB7B"}
|
|
@@ -42,4 +42,12 @@ export declare class WatchObjectStorageService {
|
|
|
42
42
|
* instance and its metadata.
|
|
43
43
|
*/
|
|
44
44
|
private discoverWatchers;
|
|
45
|
+
/**
|
|
46
|
+
* Converts a Nats filter pattern to a regular expression.
|
|
47
|
+
* TODO: Remove if server-side filtering is added (issue - https://github.com/nats-io/nats.deno/issues/744)
|
|
48
|
+
*
|
|
49
|
+
* @param filter - The filter pattern (e.g., `some-name`, `part-of-some-name.>`, `part-of-some-name.*.some`).
|
|
50
|
+
* @returns A RegExp object for matching keys.
|
|
51
|
+
*/
|
|
52
|
+
private convertFilterToRegex;
|
|
45
53
|
}
|
|
@@ -70,11 +70,15 @@ let WatchObjectStorageService = class WatchObjectStorageService {
|
|
|
70
70
|
* @param watcher - The ObjectStorageWatcher instance.
|
|
71
71
|
* @returns A Promise that resolves when the watch operation is complete.
|
|
72
72
|
*/
|
|
73
|
-
async runWatch({ bucket, ...options }, watcher) {
|
|
73
|
+
async runWatch({ bucket, filter, ...options }, watcher) {
|
|
74
74
|
const storage = await this.client.bind({ bucketName: bucket });
|
|
75
|
+
const regex = filter ? this.convertFilterToRegex(filter) : null;
|
|
75
76
|
this.watch(storage.getRawStorage(), async (event) => {
|
|
76
77
|
if (!event)
|
|
77
78
|
return;
|
|
79
|
+
if (regex && !regex.test(event.name)) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
78
82
|
await (event.deleted ? watcher.onDelete(event) : watcher.onPut(event));
|
|
79
83
|
}, options);
|
|
80
84
|
}
|
|
@@ -102,6 +106,22 @@ let WatchObjectStorageService = class WatchObjectStorageService {
|
|
|
102
106
|
return acc;
|
|
103
107
|
}, []);
|
|
104
108
|
}
|
|
109
|
+
/**
|
|
110
|
+
* Converts a Nats filter pattern to a regular expression.
|
|
111
|
+
* TODO: Remove if server-side filtering is added (issue - https://github.com/nats-io/nats.deno/issues/744)
|
|
112
|
+
*
|
|
113
|
+
* @param filter - The filter pattern (e.g., `some-name`, `part-of-some-name.>`, `part-of-some-name.*.some`).
|
|
114
|
+
* @returns A RegExp object for matching keys.
|
|
115
|
+
*/
|
|
116
|
+
convertFilterToRegex(filter) {
|
|
117
|
+
// Escape special characters
|
|
118
|
+
const escaped = filter.replaceAll(/[-/\\^$+?.*()|[\]{}]/g, String.raw `\$&`);
|
|
119
|
+
const pattern = escaped
|
|
120
|
+
.replaceAll(/(?<=^|\\\.)\\\*(?=$|\\\.)/g, '[^.]+') // One segment surrounded by dots, beginning of line or end of line
|
|
121
|
+
.replaceAll(/(?<=^|\\\.)>(?=$|\\\.)/g, '.*'); // Many segments surrounded by dots, beginning of line or end of line
|
|
122
|
+
// Wrap the result in the start and end of the string
|
|
123
|
+
return new RegExp(`^${pattern}$`);
|
|
124
|
+
}
|
|
105
125
|
};
|
|
106
126
|
exports.WatchObjectStorageService = WatchObjectStorageService;
|
|
107
127
|
exports.WatchObjectStorageService = WatchObjectStorageService = __decorate([
|
|
@@ -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,qFAA8E;AAE9E,IAAa,yBAAyB,GAAtC,MAAa,yBAAyB;IAGjB;IACA;IACA;IAEA;IANnB,YAEmB,MAAe,EACf,SAA2B,EAC3B,MAAgC,EAEhC,cAAuB;QAJvB,WAAM,GAAN,MAAM,CAAS;QACf,cAAS,GAAT,SAAS,CAAkB;QAC3B,WAAM,GAAN,MAAM,CAA0B;QAEhC,mBAAc,GAAd,cAAc,CAAS;IACvC,CAAC;IAEJ;;;OAGG;IACI,KAAK,CAAC,UAAU;QACrB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAE/C,MAAM,OAAO,CAAC,GAAG,CACf,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;YAC5C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sCAAsC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;YACvE,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC7D,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qCAAqC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxE,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,WAAW;QACtB,kBAAkB;IACpB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,KAAK,CAChB,OAAoB,EACpB,QAAqD,EACrD,IAGC;QAED,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACpD,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC9B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,EAAE;oBACzD,KAAK,EAAE,KAAK;oBACZ,GAAG,EAAE,KAAK;iBACX,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,QAAQ,CACpB,EAAE,MAAM,EAAE,GAAG,OAAO,EAAe,
|
|
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.7.0-next.0",
|
|
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": "1f7660ae22d235f67cc712ae91cab7a70423ab6f"
|
|
42
42
|
}
|
package/src/index.ts
CHANGED
|
@@ -4,6 +4,7 @@ export { NatsObjectStorageService } from './nats-object-storage.service';
|
|
|
4
4
|
export {
|
|
5
5
|
WatchObjectStorage,
|
|
6
6
|
type ObjectStorageWatcher,
|
|
7
|
+
WatchConfig,
|
|
7
8
|
} from './watch-object-storage.decorator';
|
|
8
9
|
export { NatsObjectStorageModule } from './nats-object-storage.module';
|
|
9
10
|
export { NatsObjectStorage } from './nats-object-storage';
|
|
@@ -76,16 +76,21 @@ export class WatchObjectStorageService {
|
|
|
76
76
|
* @returns A Promise that resolves when the watch operation is complete.
|
|
77
77
|
*/
|
|
78
78
|
private async runWatch(
|
|
79
|
-
{ bucket, ...options }: WatchConfig,
|
|
79
|
+
{ bucket, filter, ...options }: WatchConfig,
|
|
80
80
|
watcher: ObjectStorageWatcher,
|
|
81
81
|
): Promise<void> {
|
|
82
82
|
const storage = await this.client.bind({ bucketName: bucket });
|
|
83
|
+
const regex = filter ? this.convertFilterToRegex(filter) : null;
|
|
83
84
|
|
|
84
85
|
this.watch(
|
|
85
86
|
storage.getRawStorage(),
|
|
86
87
|
async (event) => {
|
|
87
88
|
if (!event) return;
|
|
88
89
|
|
|
90
|
+
if (regex && !regex.test(event.name)) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
|
|
89
94
|
await (event.deleted ? watcher.onDelete(event) : watcher.onPut(event));
|
|
90
95
|
},
|
|
91
96
|
options,
|
|
@@ -127,4 +132,23 @@ export class WatchObjectStorageService {
|
|
|
127
132
|
[] as { instance: ObjectStorageWatcher; metadata: WatchConfig }[],
|
|
128
133
|
);
|
|
129
134
|
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Converts a Nats filter pattern to a regular expression.
|
|
138
|
+
* TODO: Remove if server-side filtering is added (issue - https://github.com/nats-io/nats.deno/issues/744)
|
|
139
|
+
*
|
|
140
|
+
* @param filter - The filter pattern (e.g., `some-name`, `part-of-some-name.>`, `part-of-some-name.*.some`).
|
|
141
|
+
* @returns A RegExp object for matching keys.
|
|
142
|
+
*/
|
|
143
|
+
private convertFilterToRegex(filter: string): RegExp {
|
|
144
|
+
// Escape special characters
|
|
145
|
+
const escaped = filter.replaceAll(/[-/\\^$+?.*()|[\]{}]/g, String.raw`\$&`);
|
|
146
|
+
|
|
147
|
+
const pattern = escaped
|
|
148
|
+
.replaceAll(/(?<=^|\\\.)\\\*(?=$|\\\.)/g, '[^.]+') // One segment surrounded by dots, beginning of line or end of line
|
|
149
|
+
.replaceAll(/(?<=^|\\\.)>(?=$|\\\.)/g, '.*'); // Many segments surrounded by dots, beginning of line or end of line
|
|
150
|
+
|
|
151
|
+
// Wrap the result in the start and end of the string
|
|
152
|
+
return new RegExp(`^${pattern}$`);
|
|
153
|
+
}
|
|
130
154
|
}
|