@beecode/msh-entity 0.1.1 → 0.2.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.
@@ -0,0 +1,27 @@
1
+ import { Subject } from 'rxjs/internal/Subject';
2
+ export type EntityCache<ENTITY> = {
3
+ id: string;
4
+ entity: ENTITY;
5
+ };
6
+ export type EntityCacheCallBack<ENTITY> = (cbParams: EntityCache<ENTITY>) => void;
7
+ export type EntityCacheSubscription = {
8
+ unsubscribe: () => void;
9
+ };
10
+ export declare class EntityCacheMemory<ENTITY> {
11
+ protected _memory: {
12
+ [k: string]: {
13
+ entity?: ENTITY;
14
+ timeoutMs?: number;
15
+ };
16
+ };
17
+ protected _subject: Subject<EntityCache<ENTITY>>;
18
+ getById(id: string): {
19
+ needToFetch?: boolean;
20
+ entity?: ENTITY;
21
+ };
22
+ set(params: EntityCache<ENTITY>, timeoutOffsetMs?: number): void;
23
+ subscribeById(id: string, callback: (par: EntityCache<ENTITY>) => void): EntityCacheSubscription;
24
+ protected _calculateTimeout(timeoutOffsetMs?: number): number | undefined;
25
+ protected _timeoutExpired(timeoutMs?: number): boolean;
26
+ }
27
+ //# sourceMappingURL=memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/entity-cache/memory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAG/C,MAAM,MAAM,WAAW,CAAC,MAAM,IAAI;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhE,MAAM,MAAM,mBAAmB,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,IAAI,CAAA;AAEjF,MAAM,MAAM,uBAAuB,GAAG;IAAE,WAAW,EAAE,MAAM,IAAI,CAAA;CAAE,CAAA;AAEjE,qBAAa,iBAAiB,CAAC,MAAM;IACpC,SAAS,CAAC,OAAO,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG;YAAE,MAAM,CAAC,EAAE,MAAM,CAAC;YAAC,SAAS,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAK;IAChF,SAAS,CAAC,QAAQ,+BAAqC;IAEvD,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG;QAAE,WAAW,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IAc/D,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI;IAOhE,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,IAAI,GAAG,uBAAuB;IAYhG,SAAS,CAAC,iBAAiB,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IASzE,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO;CAQtD"}
@@ -0,0 +1,46 @@
1
+ import { TimeUtil } from '@beecode/msh-util/time-util';
2
+ import { Subject } from 'rxjs/internal/Subject';
3
+ import { filter } from 'rxjs/operators';
4
+ export class EntityCacheMemory {
5
+ _memory = {};
6
+ _subject = new Subject();
7
+ getById(id) {
8
+ const memo = this._memory[id];
9
+ if (!memo) {
10
+ this._memory[id] = {};
11
+ return { needToFetch: true };
12
+ }
13
+ const needToFetch = this._timeoutExpired(memo.timeoutMs);
14
+ return { entity: memo.entity, needToFetch };
15
+ }
16
+ set(params, timeoutOffsetMs) {
17
+ const { id, entity } = params;
18
+ const timeoutMs = this._calculateTimeout(timeoutOffsetMs);
19
+ this._memory[id] = { entity, timeoutMs };
20
+ this._subject.next({ entity, id });
21
+ }
22
+ subscribeById(id, callback) {
23
+ return this._subject
24
+ .pipe(filter((o) => {
25
+ return o.id === id;
26
+ }))
27
+ .subscribe((p) => {
28
+ callback(p);
29
+ });
30
+ }
31
+ _calculateTimeout(timeoutOffsetMs) {
32
+ if (timeoutOffsetMs === undefined) {
33
+ return undefined;
34
+ }
35
+ const timeUtil = new TimeUtil();
36
+ return timeUtil.dateToUnix(timeUtil.now()) + timeoutOffsetMs;
37
+ }
38
+ _timeoutExpired(timeoutMs) {
39
+ if (timeoutMs === undefined) {
40
+ return false;
41
+ }
42
+ const timeUtil = new TimeUtil();
43
+ return timeUtil.dateToUnix(timeUtil.now()) > timeoutMs;
44
+ }
45
+ }
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2VudGl0eS1jYWNoZS9tZW1vcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDZCQUE2QixDQUFBO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFRdkMsTUFBTSxPQUFPLGlCQUFpQjtJQUNuQixPQUFPLEdBQTZELEVBQUUsQ0FBQTtJQUN0RSxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQXVCLENBQUE7SUFFdkQsT0FBTyxDQUFDLEVBQVU7UUFDakIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUU3QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQTtZQUVyQixPQUFPLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFBO1FBQzdCLENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUV4RCxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLENBQUE7SUFDNUMsQ0FBQztJQUVELEdBQUcsQ0FBQyxNQUEyQixFQUFFLGVBQXdCO1FBQ3hELE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFBO1FBQzdCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsQ0FBQTtRQUN6RCxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFBO1FBQ3hDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDbkMsQ0FBQztJQUVELGFBQWEsQ0FBQyxFQUFVLEVBQUUsUUFBNEM7UUFDckUsT0FBTyxJQUFJLENBQUMsUUFBUTthQUNsQixJQUFJLENBQ0osTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDWixPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFBO1FBQ25CLENBQUMsQ0FBQyxDQUNGO2FBQ0EsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDaEIsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ1osQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRVMsaUJBQWlCLENBQUMsZUFBd0I7UUFDbkQsSUFBSSxlQUFlLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDbkMsT0FBTyxTQUFTLENBQUE7UUFDakIsQ0FBQztRQUNELE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUE7UUFFL0IsT0FBTyxRQUFRLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLGVBQWUsQ0FBQTtJQUM3RCxDQUFDO0lBRVMsZUFBZSxDQUFDLFNBQWtCO1FBQzNDLElBQUksU0FBUyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzdCLE9BQU8sS0FBSyxDQUFBO1FBQ2IsQ0FBQztRQUNELE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUE7UUFFL0IsT0FBTyxRQUFRLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQTtJQUN2RCxDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUaW1lVXRpbCB9IGZyb20gJ0BiZWVjb2RlL21zaC11dGlsL3RpbWUtdXRpbCdcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzL2ludGVybmFsL1N1YmplY3QnXG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuZXhwb3J0IHR5cGUgRW50aXR5Q2FjaGU8RU5USVRZPiA9IHsgaWQ6IHN0cmluZzsgZW50aXR5OiBFTlRJVFkgfVxuXG5leHBvcnQgdHlwZSBFbnRpdHlDYWNoZUNhbGxCYWNrPEVOVElUWT4gPSAoY2JQYXJhbXM6IEVudGl0eUNhY2hlPEVOVElUWT4pID0+IHZvaWRcblxuZXhwb3J0IHR5cGUgRW50aXR5Q2FjaGVTdWJzY3JpcHRpb24gPSB7IHVuc3Vic2NyaWJlOiAoKSA9PiB2b2lkIH1cblxuZXhwb3J0IGNsYXNzIEVudGl0eUNhY2hlTWVtb3J5PEVOVElUWT4ge1xuXHRwcm90ZWN0ZWQgX21lbW9yeTogeyBbazogc3RyaW5nXTogeyBlbnRpdHk/OiBFTlRJVFk7IHRpbWVvdXRNcz86IG51bWJlciB9IH0gPSB7fVxuXHRwcm90ZWN0ZWQgX3N1YmplY3QgPSBuZXcgU3ViamVjdDxFbnRpdHlDYWNoZTxFTlRJVFk+PigpXG5cblx0Z2V0QnlJZChpZDogc3RyaW5nKTogeyBuZWVkVG9GZXRjaD86IGJvb2xlYW47IGVudGl0eT86IEVOVElUWSB9IHtcblx0XHRjb25zdCBtZW1vID0gdGhpcy5fbWVtb3J5W2lkXVxuXG5cdFx0aWYgKCFtZW1vKSB7XG5cdFx0XHR0aGlzLl9tZW1vcnlbaWRdID0ge31cblxuXHRcdFx0cmV0dXJuIHsgbmVlZFRvRmV0Y2g6IHRydWUgfVxuXHRcdH1cblxuXHRcdGNvbnN0IG5lZWRUb0ZldGNoID0gdGhpcy5fdGltZW91dEV4cGlyZWQobWVtby50aW1lb3V0TXMpXG5cblx0XHRyZXR1cm4geyBlbnRpdHk6IG1lbW8uZW50aXR5LCBuZWVkVG9GZXRjaCB9XG5cdH1cblxuXHRzZXQocGFyYW1zOiBFbnRpdHlDYWNoZTxFTlRJVFk+LCB0aW1lb3V0T2Zmc2V0TXM/OiBudW1iZXIpOiB2b2lkIHtcblx0XHRjb25zdCB7IGlkLCBlbnRpdHkgfSA9IHBhcmFtc1xuXHRcdGNvbnN0IHRpbWVvdXRNcyA9IHRoaXMuX2NhbGN1bGF0ZVRpbWVvdXQodGltZW91dE9mZnNldE1zKVxuXHRcdHRoaXMuX21lbW9yeVtpZF0gPSB7IGVudGl0eSwgdGltZW91dE1zIH1cblx0XHR0aGlzLl9zdWJqZWN0Lm5leHQoeyBlbnRpdHksIGlkIH0pXG5cdH1cblxuXHRzdWJzY3JpYmVCeUlkKGlkOiBzdHJpbmcsIGNhbGxiYWNrOiAocGFyOiBFbnRpdHlDYWNoZTxFTlRJVFk+KSA9PiB2b2lkKTogRW50aXR5Q2FjaGVTdWJzY3JpcHRpb24ge1xuXHRcdHJldHVybiB0aGlzLl9zdWJqZWN0XG5cdFx0XHQucGlwZShcblx0XHRcdFx0ZmlsdGVyKChvKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIG8uaWQgPT09IGlkXG5cdFx0XHRcdH0pXG5cdFx0XHQpXG5cdFx0XHQuc3Vic2NyaWJlKChwKSA9PiB7XG5cdFx0XHRcdGNhbGxiYWNrKHApXG5cdFx0XHR9KVxuXHR9XG5cblx0cHJvdGVjdGVkIF9jYWxjdWxhdGVUaW1lb3V0KHRpbWVvdXRPZmZzZXRNcz86IG51bWJlcik6IG51bWJlciB8IHVuZGVmaW5lZCB7XG5cdFx0aWYgKHRpbWVvdXRPZmZzZXRNcyA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkXG5cdFx0fVxuXHRcdGNvbnN0IHRpbWVVdGlsID0gbmV3IFRpbWVVdGlsKClcblxuXHRcdHJldHVybiB0aW1lVXRpbC5kYXRlVG9Vbml4KHRpbWVVdGlsLm5vdygpKSArIHRpbWVvdXRPZmZzZXRNc1xuXHR9XG5cblx0cHJvdGVjdGVkIF90aW1lb3V0RXhwaXJlZCh0aW1lb3V0TXM/OiBudW1iZXIpOiBib29sZWFuIHtcblx0XHRpZiAodGltZW91dE1zID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHJldHVybiBmYWxzZVxuXHRcdH1cblx0XHRjb25zdCB0aW1lVXRpbCA9IG5ldyBUaW1lVXRpbCgpXG5cblx0XHRyZXR1cm4gdGltZVV0aWwuZGF0ZVRvVW5peCh0aW1lVXRpbC5ub3coKSkgPiB0aW1lb3V0TXNcblx0fVxufVxuIl19
@@ -0,0 +1,16 @@
1
+ import { type EntityCacheCallBack, EntityCacheMemory, type EntityCacheSubscription } from '#src/entity-cache/memory';
2
+ export declare abstract class EntityCachePromiseService<ENTITY, ID extends string | number = string> {
3
+ protected readonly _dao: EntityCacheMemory<ENTITY>;
4
+ protected abstract readonly _timeoutOffsetMs?: number;
5
+ protected abstract _entityAsync(id: ID): Promise<ENTITY>;
6
+ protected constructor(dao?: EntityCacheMemory<ENTITY>);
7
+ /**
8
+ * Subscribe to entity cache change and retrieve cached value if not undefined
9
+ * @param {ID} id - entity unique identifier
10
+ * @param {EntityCacheCallBack<ENTITY>} callback -
11
+ * @returns {EntityCacheSubscription}
12
+ */
13
+ subscribeToEntityChangeById(id: ID, callback: EntityCacheCallBack<ENTITY>): Promise<EntityCacheSubscription>;
14
+ forceRefresh(id: ID): Promise<void>;
15
+ }
16
+ //# sourceMappingURL=promise-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promise-service.d.ts","sourceRoot":"","sources":["../../src/entity-cache/promise-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,iBAAiB,EAAE,KAAK,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AAEpH,8BAAsB,yBAAyB,CAAC,MAAM,EAAE,EAAE,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM;IAC1F,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAElD,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACrD,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAExD,SAAS,aAAa,GAAG,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC;IAIrD;;;;;OAKG;IACG,2BAA2B,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,mBAAmB,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAc5G,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAKzC"}
@@ -0,0 +1,31 @@
1
+ import { EntityCacheMemory } from '#src/entity-cache/memory';
2
+ export class EntityCachePromiseService {
3
+ _dao;
4
+ constructor(dao) {
5
+ this._dao = dao ?? new EntityCacheMemory();
6
+ }
7
+ /**
8
+ * Subscribe to entity cache change and retrieve cached value if not undefined
9
+ * @param {ID} id - entity unique identifier
10
+ * @param {EntityCacheCallBack<ENTITY>} callback -
11
+ * @returns {EntityCacheSubscription}
12
+ */
13
+ async subscribeToEntityChangeById(id, callback) {
14
+ const idString = id.toString();
15
+ const subscription = this._dao.subscribeById(idString, callback);
16
+ const { entity, needToFetch = false } = this._dao.getById(idString);
17
+ if (entity !== undefined) {
18
+ callback({ entity, id: idString });
19
+ }
20
+ if (needToFetch) {
21
+ await this.forceRefresh(id);
22
+ }
23
+ return subscription;
24
+ }
25
+ async forceRefresh(id) {
26
+ await this._entityAsync(id).then((entity) => {
27
+ return this._dao.set({ entity, id: id.toString() }, this._timeoutOffsetMs);
28
+ });
29
+ }
30
+ }
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbWlzZS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2VudGl0eS1jYWNoZS9wcm9taXNlLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE0QixpQkFBaUIsRUFBZ0MsTUFBTSwwQkFBMEIsQ0FBQTtBQUVwSCxNQUFNLE9BQWdCLHlCQUF5QjtJQUMzQixJQUFJLENBQTJCO0lBS2xELFlBQXNCLEdBQStCO1FBQ3BELElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksaUJBQWlCLEVBQVUsQ0FBQTtJQUNuRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsMkJBQTJCLENBQUMsRUFBTSxFQUFFLFFBQXFDO1FBQzlFLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtRQUM5QixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFDaEUsTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXLEdBQUcsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDbkUsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDMUIsUUFBUSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFBO1FBQ25DLENBQUM7UUFDRCxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUM1QixDQUFDO1FBRUQsT0FBTyxZQUFZLENBQUE7SUFDcEIsQ0FBQztJQUVELEtBQUssQ0FBQyxZQUFZLENBQUMsRUFBTTtRQUN4QixNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDM0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUE7UUFDM0UsQ0FBQyxDQUFDLENBQUE7SUFDSCxDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIEVudGl0eUNhY2hlQ2FsbEJhY2ssIEVudGl0eUNhY2hlTWVtb3J5LCB0eXBlIEVudGl0eUNhY2hlU3Vic2NyaXB0aW9uIH0gZnJvbSAnI3NyYy9lbnRpdHktY2FjaGUvbWVtb3J5J1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRW50aXR5Q2FjaGVQcm9taXNlU2VydmljZTxFTlRJVFksIElEIGV4dGVuZHMgc3RyaW5nIHwgbnVtYmVyID0gc3RyaW5nPiB7XG5cdHByb3RlY3RlZCByZWFkb25seSBfZGFvOiBFbnRpdHlDYWNoZU1lbW9yeTxFTlRJVFk+XG5cblx0cHJvdGVjdGVkIGFic3RyYWN0IHJlYWRvbmx5IF90aW1lb3V0T2Zmc2V0TXM/OiBudW1iZXJcblx0cHJvdGVjdGVkIGFic3RyYWN0IF9lbnRpdHlBc3luYyhpZDogSUQpOiBQcm9taXNlPEVOVElUWT5cblxuXHRwcm90ZWN0ZWQgY29uc3RydWN0b3IoZGFvPzogRW50aXR5Q2FjaGVNZW1vcnk8RU5USVRZPikge1xuXHRcdHRoaXMuX2RhbyA9IGRhbyA/PyBuZXcgRW50aXR5Q2FjaGVNZW1vcnk8RU5USVRZPigpXG5cdH1cblxuXHQvKipcblx0ICogU3Vic2NyaWJlIHRvIGVudGl0eSBjYWNoZSBjaGFuZ2UgYW5kIHJldHJpZXZlIGNhY2hlZCB2YWx1ZSBpZiBub3QgdW5kZWZpbmVkXG5cdCAqIEBwYXJhbSB7SUR9IGlkIC0gZW50aXR5IHVuaXF1ZSBpZGVudGlmaWVyXG5cdCAqIEBwYXJhbSB7RW50aXR5Q2FjaGVDYWxsQmFjazxFTlRJVFk+fSBjYWxsYmFjayAtXG5cdCAqIEByZXR1cm5zIHtFbnRpdHlDYWNoZVN1YnNjcmlwdGlvbn1cblx0ICovXG5cdGFzeW5jIHN1YnNjcmliZVRvRW50aXR5Q2hhbmdlQnlJZChpZDogSUQsIGNhbGxiYWNrOiBFbnRpdHlDYWNoZUNhbGxCYWNrPEVOVElUWT4pOiBQcm9taXNlPEVudGl0eUNhY2hlU3Vic2NyaXB0aW9uPiB7XG5cdFx0Y29uc3QgaWRTdHJpbmcgPSBpZC50b1N0cmluZygpXG5cdFx0Y29uc3Qgc3Vic2NyaXB0aW9uID0gdGhpcy5fZGFvLnN1YnNjcmliZUJ5SWQoaWRTdHJpbmcsIGNhbGxiYWNrKVxuXHRcdGNvbnN0IHsgZW50aXR5LCBuZWVkVG9GZXRjaCA9IGZhbHNlIH0gPSB0aGlzLl9kYW8uZ2V0QnlJZChpZFN0cmluZylcblx0XHRpZiAoZW50aXR5ICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGNhbGxiYWNrKHsgZW50aXR5LCBpZDogaWRTdHJpbmcgfSlcblx0XHR9XG5cdFx0aWYgKG5lZWRUb0ZldGNoKSB7XG5cdFx0XHRhd2FpdCB0aGlzLmZvcmNlUmVmcmVzaChpZClcblx0XHR9XG5cblx0XHRyZXR1cm4gc3Vic2NyaXB0aW9uXG5cdH1cblxuXHRhc3luYyBmb3JjZVJlZnJlc2goaWQ6IElEKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0YXdhaXQgdGhpcy5fZW50aXR5QXN5bmMoaWQpLnRoZW4oKGVudGl0eSkgPT4ge1xuXHRcdFx0cmV0dXJuIHRoaXMuX2Rhby5zZXQoeyBlbnRpdHksIGlkOiBpZC50b1N0cmluZygpIH0sIHRoaXMuX3RpbWVvdXRPZmZzZXRNcylcblx0XHR9KVxuXHR9XG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from '#src/entity-cache/promise-service';
2
+ export * from '#src/entity-cache/memory';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mCAAmC,CAAA;AAEjD,cAAc,0BAA0B,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export * from '#src/entity-cache/promise-service';
2
+ export * from '#src/entity-cache/memory';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQ0FBbUMsQ0FBQTtBQUVqRCxjQUFjLDBCQUEwQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnI3NyYy9lbnRpdHktY2FjaGUvcHJvbWlzZS1zZXJ2aWNlJ1xuXG5leHBvcnQgKiBmcm9tICcjc3JjL2VudGl0eS1jYWNoZS9tZW1vcnknXG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/entity-cache/memory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAG/C,MAAM,MAAM,WAAW,CAAC,MAAM,IAAI;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhE,MAAM,MAAM,mBAAmB,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,IAAI,CAAA;AAEjF,MAAM,MAAM,uBAAuB,GAAG;IAAE,WAAW,EAAE,MAAM,IAAI,CAAA;CAAE,CAAA;AAEjE,qBAAa,iBAAiB,CAAC,MAAM;IACnC,SAAS,CAAC,OAAO,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG;YAAE,MAAM,CAAC,EAAE,MAAM,CAAC;YAAC,SAAS,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAK;IAChF,SAAS,CAAC,QAAQ,+BAAqC;IAEvD,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG;QAAE,WAAW,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IAc/D,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI;IAOhE,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,IAAI,GAAG,uBAAuB;IAIhG,SAAS,CAAC,iBAAiB,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IASzE,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO;CAQvD"}
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/entity-cache/memory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAG/C,MAAM,MAAM,WAAW,CAAC,MAAM,IAAI;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhE,MAAM,MAAM,mBAAmB,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,IAAI,CAAA;AAEjF,MAAM,MAAM,uBAAuB,GAAG;IAAE,WAAW,EAAE,MAAM,IAAI,CAAA;CAAE,CAAA;AAEjE,qBAAa,iBAAiB,CAAC,MAAM;IACpC,SAAS,CAAC,OAAO,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG;YAAE,MAAM,CAAC,EAAE,MAAM,CAAC;YAAC,SAAS,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAK;IAChF,SAAS,CAAC,QAAQ,+BAAqC;IAEvD,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG;QAAE,WAAW,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IAc/D,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI;IAOhE,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,IAAI,GAAG,uBAAuB;IAYhG,SAAS,CAAC,iBAAiB,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IASzE,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO;CAQtD"}
@@ -1,46 +1,82 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.EntityCacheMemory = void 0;
4
- const time_util_1 = require("@beecode/msh-util/lib/time-util");
5
- const Subject_1 = require("rxjs/internal/Subject");
6
- const operators_1 = require("rxjs/operators");
7
- class EntityCacheMemory {
8
- constructor() {
9
- this._memory = {};
10
- this._subject = new Subject_1.Subject();
7
+ var _timeUtil = require("@beecode/msh-util/time-util");
8
+ var _Subject = require("rxjs/internal/Subject");
9
+ var _operators = require("rxjs/operators");
10
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
11
+ function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
12
+ function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
13
+ function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
14
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
15
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
16
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
17
+ var EntityCacheMemory = exports.EntityCacheMemory = /*#__PURE__*/function () {
18
+ function EntityCacheMemory() {
19
+ _classCallCheck(this, EntityCacheMemory);
20
+ _defineProperty(this, "_memory", {});
21
+ _defineProperty(this, "_subject", new _Subject.Subject());
22
+ }
23
+ return _createClass(EntityCacheMemory, [{
24
+ key: "getById",
25
+ value: function getById(id) {
26
+ var memo = this._memory[id];
27
+ if (!memo) {
28
+ this._memory[id] = {};
29
+ return {
30
+ needToFetch: true
31
+ };
32
+ }
33
+ var needToFetch = this._timeoutExpired(memo.timeoutMs);
34
+ return {
35
+ entity: memo.entity,
36
+ needToFetch: needToFetch
37
+ };
11
38
  }
12
- getById(id) {
13
- const memo = this._memory[id];
14
- if (!memo) {
15
- this._memory[id] = {};
16
- return { needToFetch: true };
17
- }
18
- const needToFetch = this._timeoutExpired(memo.timeoutMs);
19
- return { entity: memo.entity, needToFetch };
39
+ }, {
40
+ key: "set",
41
+ value: function set(params, timeoutOffsetMs) {
42
+ var id = params.id,
43
+ entity = params.entity;
44
+ var timeoutMs = this._calculateTimeout(timeoutOffsetMs);
45
+ this._memory[id] = {
46
+ entity: entity,
47
+ timeoutMs: timeoutMs
48
+ };
49
+ this._subject.next({
50
+ entity: entity,
51
+ id: id
52
+ });
20
53
  }
21
- set(params, timeoutOffsetMs) {
22
- const { id, entity } = params;
23
- const timeoutMs = this._calculateTimeout(timeoutOffsetMs);
24
- this._memory[id] = { entity, timeoutMs };
25
- this._subject.next({ id, entity });
54
+ }, {
55
+ key: "subscribeById",
56
+ value: function subscribeById(id, callback) {
57
+ return this._subject.pipe((0, _operators.filter)(function (o) {
58
+ return o.id === id;
59
+ })).subscribe(function (p) {
60
+ callback(p);
61
+ });
26
62
  }
27
- subscribeById(id, callback) {
28
- return this._subject.pipe((0, operators_1.filter)((o) => o.id === id)).subscribe(callback);
63
+ }, {
64
+ key: "_calculateTimeout",
65
+ value: function _calculateTimeout(timeoutOffsetMs) {
66
+ if (timeoutOffsetMs === undefined) {
67
+ return undefined;
68
+ }
69
+ var timeUtil = new _timeUtil.TimeUtil();
70
+ return timeUtil.dateToUnix(timeUtil.now()) + timeoutOffsetMs;
29
71
  }
30
- _calculateTimeout(timeoutOffsetMs) {
31
- if (timeoutOffsetMs === undefined) {
32
- return undefined;
33
- }
34
- const timeUtil = new time_util_1.TimeUtil();
35
- return timeUtil.dateToUnix(timeUtil.now()) + timeoutOffsetMs;
72
+ }, {
73
+ key: "_timeoutExpired",
74
+ value: function _timeoutExpired(timeoutMs) {
75
+ if (timeoutMs === undefined) {
76
+ return false;
77
+ }
78
+ var timeUtil = new _timeUtil.TimeUtil();
79
+ return timeUtil.dateToUnix(timeUtil.now()) > timeoutMs;
36
80
  }
37
- _timeoutExpired(timeoutMs) {
38
- if (timeoutMs === undefined) {
39
- return false;
40
- }
41
- const timeUtil = new time_util_1.TimeUtil();
42
- return timeUtil.dateToUnix(timeUtil.now()) > timeoutMs;
43
- }
44
- }
45
- exports.EntityCacheMemory = EntityCacheMemory;
46
- //# sourceMappingURL=memory.js.map
81
+ }]);
82
+ }();
@@ -1,4 +1,4 @@
1
- import { EntityCacheCallBack, EntityCacheMemory, EntityCacheSubscription } from '../entity-cache/memory';
1
+ import { type EntityCacheCallBack, EntityCacheMemory, type EntityCacheSubscription } from '../entity-cache/memory.js';
2
2
  export declare abstract class EntityCachePromiseService<ENTITY, ID extends string | number = string> {
3
3
  protected readonly _dao: EntityCacheMemory<ENTITY>;
4
4
  protected abstract readonly _timeoutOffsetMs?: number;
@@ -10,7 +10,7 @@ export declare abstract class EntityCachePromiseService<ENTITY, ID extends strin
10
10
  * @param {EntityCacheCallBack<ENTITY>} callback -
11
11
  * @returns {EntityCacheSubscription}
12
12
  */
13
- subscribeToEntityChangeById(id: ID, callback: EntityCacheCallBack<ENTITY>): EntityCacheSubscription;
14
- forceRefresh(id: ID): void;
13
+ subscribeToEntityChangeById(id: ID, callback: EntityCacheCallBack<ENTITY>): Promise<EntityCacheSubscription>;
14
+ forceRefresh(id: ID): Promise<void>;
15
15
  }
16
16
  //# sourceMappingURL=promise-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"promise-service.d.ts","sourceRoot":"","sources":["../../src/entity-cache/promise-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAA;AAEzG,8BAAsB,yBAAyB,CAAC,MAAM,EAAE,EAAE,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM;IACzF,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAElD,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACrD,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAExD,SAAS,aAAa,GAAG,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC;IAIrD;;;;;OAKG;IACH,2BAA2B,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,mBAAmB,CAAC,MAAM,CAAC,GAAG,uBAAuB;IAcnG,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI;CAK3B"}
1
+ {"version":3,"file":"promise-service.d.ts","sourceRoot":"","sources":["../../src/entity-cache/promise-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,iBAAiB,EAAE,KAAK,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AAEpH,8BAAsB,yBAAyB,CAAC,MAAM,EAAE,EAAE,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM;IAC1F,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAElD,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACrD,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAExD,SAAS,aAAa,GAAG,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC;IAIrD;;;;;OAKG;IACG,2BAA2B,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,mBAAmB,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAc5G,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAKzC"}
@@ -1,34 +1,92 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.EntityCachePromiseService = void 0;
4
- const memory_1 = require("../entity-cache/memory");
5
- class EntityCachePromiseService {
6
- constructor(dao) {
7
- this._dao = dao !== null && dao !== void 0 ? dao : new memory_1.EntityCacheMemory();
8
- }
9
- /**
10
- * Subscribe to entity cache change and retrieve cached value if not undefined
11
- * @param {ID} id - entity unique identifier
12
- * @param {EntityCacheCallBack<ENTITY>} callback -
13
- * @returns {EntityCacheSubscription}
14
- */
15
- subscribeToEntityChangeById(id, callback) {
16
- const idString = id.toString();
17
- const subscription = this._dao.subscribeById(idString, callback);
18
- const { entity, needToFetch = false } = this._dao.getById(idString);
19
- if (entity !== undefined) {
20
- callback({ id: idString, entity });
21
- }
22
- if (needToFetch) {
23
- this.forceRefresh(id);
24
- }
25
- return subscription;
26
- }
27
- forceRefresh(id) {
28
- this._entityAsync(id).then((entity) => {
29
- return this._dao.set({ id: id.toString(), entity }, this._timeoutOffsetMs);
30
- });
31
- }
32
- }
33
- exports.EntityCachePromiseService = EntityCachePromiseService;
34
- //# sourceMappingURL=promise-service.js.map
7
+ var _memory = require("../entity-cache/memory.js");
8
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
9
+ function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
10
+ function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
11
+ function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
12
+ function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
13
+ function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
14
+ function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
15
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
16
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
17
+ var EntityCachePromiseService = exports.EntityCachePromiseService = /*#__PURE__*/function () {
18
+ function EntityCachePromiseService(dao) {
19
+ _classCallCheck(this, EntityCachePromiseService);
20
+ this._dao = dao !== null && dao !== void 0 ? dao : new _memory.EntityCacheMemory();
21
+ }
22
+
23
+ /**
24
+ * Subscribe to entity cache change and retrieve cached value if not undefined
25
+ * @param {ID} id - entity unique identifier
26
+ * @param {EntityCacheCallBack<ENTITY>} callback -
27
+ * @returns {EntityCacheSubscription}
28
+ */
29
+ return _createClass(EntityCachePromiseService, [{
30
+ key: "subscribeToEntityChangeById",
31
+ value: (function () {
32
+ var _subscribeToEntityChangeById = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(id, callback) {
33
+ var idString, subscription, _this$_dao$getById, entity, _this$_dao$getById$ne, needToFetch;
34
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
35
+ while (1) switch (_context.prev = _context.next) {
36
+ case 0:
37
+ idString = id.toString();
38
+ subscription = this._dao.subscribeById(idString, callback);
39
+ _this$_dao$getById = this._dao.getById(idString), entity = _this$_dao$getById.entity, _this$_dao$getById$ne = _this$_dao$getById.needToFetch, needToFetch = _this$_dao$getById$ne === void 0 ? false : _this$_dao$getById$ne;
40
+ if (entity !== undefined) {
41
+ callback({
42
+ entity: entity,
43
+ id: idString
44
+ });
45
+ }
46
+ if (!needToFetch) {
47
+ _context.next = 7;
48
+ break;
49
+ }
50
+ _context.next = 7;
51
+ return this.forceRefresh(id);
52
+ case 7:
53
+ return _context.abrupt("return", subscription);
54
+ case 8:
55
+ case "end":
56
+ return _context.stop();
57
+ }
58
+ }, _callee, this);
59
+ }));
60
+ function subscribeToEntityChangeById(_x, _x2) {
61
+ return _subscribeToEntityChangeById.apply(this, arguments);
62
+ }
63
+ return subscribeToEntityChangeById;
64
+ }())
65
+ }, {
66
+ key: "forceRefresh",
67
+ value: function () {
68
+ var _forceRefresh = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(id) {
69
+ var _this = this;
70
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
71
+ while (1) switch (_context2.prev = _context2.next) {
72
+ case 0:
73
+ _context2.next = 2;
74
+ return this._entityAsync(id).then(function (entity) {
75
+ return _this._dao.set({
76
+ entity: entity,
77
+ id: id.toString()
78
+ }, _this._timeoutOffsetMs);
79
+ });
80
+ case 2:
81
+ case "end":
82
+ return _context2.stop();
83
+ }
84
+ }, _callee2, this);
85
+ }));
86
+ function forceRefresh(_x3) {
87
+ return _forceRefresh.apply(this, arguments);
88
+ }
89
+ return forceRefresh;
90
+ }()
91
+ }]);
92
+ }();
package/lib/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export * from './entity-cache/promise-service';
2
- export * from './entity-cache/memory';
1
+ export * from './entity-cache/promise-service.js';
2
+ export * from './entity-cache/memory.js';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAA;AAEhD,cAAc,yBAAyB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mCAAmC,CAAA;AAEjD,cAAc,0BAA0B,CAAA"}
package/lib/index.js CHANGED
@@ -1,19 +1,27 @@
1
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]; } };
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _promiseService = require("./entity-cache/promise-service.js");
7
+ Object.keys(_promiseService).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _promiseService[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function get() {
13
+ return _promiseService[key];
7
14
  }
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
- __exportStar(require("./entity-cache/promise-service"), exports);
18
- __exportStar(require("./entity-cache/memory"), exports);
19
- //# sourceMappingURL=index.js.map
15
+ });
16
+ });
17
+ var _memory = require("./entity-cache/memory.js");
18
+ Object.keys(_memory).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _memory[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function get() {
24
+ return _memory[key];
25
+ }
26
+ });
27
+ });
@@ -0,0 +1 @@
1
+ {"type": "commonjs"}
package/package.json CHANGED
@@ -1,124 +1,152 @@
1
1
  {
2
- "_moduleAliases": {
3
- "src": "./lib"
4
- },
5
- "author": "Milos Bugarinovic <milos.bugarinovic@gmail.com>",
6
- "bugs": {
7
- "url": "https://github.com/beecode-rs/msh-entity/issues"
8
- },
9
- "commitlint": {
10
- "extends": [
11
- "@commitlint/config-conventional"
12
- ]
13
- },
14
- "config": {
15
- "commitizen": {
16
- "path": "node_modules/cz-conventional-changelog"
17
- }
18
- },
19
- "dependencies": {
20
- "@beecode/msh-util": "1.0.1",
21
- "rxjs": "7.8.0"
22
- },
23
- "description": "",
24
- "devDependencies": {
25
- "@commitlint/cli": "17.4.4",
26
- "@commitlint/config-conventional": "17.4.4",
27
- "@commitlint/prompt": "17.4.4",
28
- "@semantic-release/changelog": "6.0.2",
29
- "@semantic-release/commit-analyzer": "9.0.2",
30
- "@semantic-release/exec": "6.0.3",
31
- "@semantic-release/git": "10.0.1",
32
- "@semantic-release/github": "8.0.7",
33
- "@semantic-release/release-notes-generator": "10.0.3",
34
- "@types/jest": "29.4.4",
35
- "@types/node": "18.15.3",
36
- "@typescript-eslint/eslint-plugin": "5.55.0",
37
- "@typescript-eslint/parser": "5.55.0",
38
- "commitizen": "4.3.0",
39
- "eslint": "8.36.0",
40
- "eslint-config-prettier": "8.7.0",
41
- "eslint-plugin-import": "2.27.5",
42
- "eslint-plugin-no-loops": "0.3.0",
43
- "eslint-plugin-no-only-tests": "3.1.0",
44
- "eslint-plugin-prettier": "4.2.1",
45
- "husky": "8.0.3",
46
- "jest": "29.5.0",
47
- "jest-extended": "3.2.4",
48
- "lint-staged": "13.2.0",
49
- "markdown-toc": "1.2.0",
50
- "prettier": "2.8.4",
51
- "rimraf": "4.4.0",
52
- "semantic-release": "20.1.1",
53
- "source-map-support": "0.5.21",
54
- "ts-jest": "29.0.5",
55
- "ts-node": "10.9.1",
56
- "tsc-alias": "1.8.3",
57
- "tsc-watch": "6.0.0",
58
- "typedoc": "0.23.27",
59
- "typedoc-plugin-markdown": "3.14.0",
60
- "typescript": "4.9.5"
61
- },
62
- "engines": {
63
- "node": "=18.15.0",
64
- "npm": "=9.6.1"
65
- },
66
- "files": [
67
- "lib",
68
- "package-lock.json"
69
- ],
70
- "homepage": "https://github.com/beecode-rs/msh-entity#readme",
71
- "keywords": [],
72
- "license": "mit",
73
- "lint-staged": {
74
- "src/**/*.{ts,tsx,js,jsx}": "eslint"
75
- },
76
- "main": "lib/index.js",
77
- "name": "@beecode/msh-entity",
78
- "repository": {
79
- "type": "git",
80
- "url": "https://github.com/beecode-rs/msh-entity.git"
81
- },
82
- "scripts": {
83
- "audit:fix": "npx --yes npm-force-resolutions",
84
- "build": "npm run clean && npm run tsc && npm run tsc:alias",
85
- "build:on-success": "npm run tsc:alias",
86
- "build:watch": "npm run tsc:watch --preserveWatchOutput --onSuccess \"npm run tsc:cleaner\" --onCompilationComplete \"npm run build:on-success\"",
87
- "bump-version": "npm --no-git-tag-version version",
88
- "clean": "rimraf ./lib/*",
89
- "commit": "git-cz",
90
- "doc:api": "npx typedoc",
91
- "doc:toc": "npx markdown-toc -i ./README.md",
92
- "docker:build": "docker build -f .docker/Dockerfile -t bc-msh-entity .",
93
- "docker:exec": "docker run --rm bc-msh-entity",
94
- "docker:exec:sh": "docker run --rm -it bc-msh-entity sh",
95
- "docker:rmi": "docker rmi bc-msh-entity",
96
- "eslint": "eslint . --ext .ts --quiet",
97
- "eslint:fix": "npm run eslint --fix",
98
- "initial-setup": "npm run initial-setup:husky && npm run initial-setup:git-config",
99
- "initial-setup:git-config": "git config include.path ../.git-config",
100
- "initial-setup:husky": "npx husky install",
101
- "lint": "npm run eslint && npm run prettier",
102
- "lint:fix": "npm run eslint:fix && npm run prettier:fix",
103
- "pack": "npm pack --pack-destination=./packages",
104
- "prettier": "prettier --check \"./src/**/*.{ts,json}\"",
105
- "prettier:fix": "prettier --write \"./src/**/*.{ts,json}\"",
106
- "semantic-release": "semantic-release",
107
- "semantic-release:check": "npm run semantic-release --dry-run --no-ci",
108
- "test": "npm run test:unit && npm run test:int ",
109
- "test:int": "# jest --config=./test/jest.config.json",
110
- "test:unit": "TZ=utc jest",
111
- "test:unit:coverage": "npm run test:unit --coverage",
112
- "test:unit:coverage:publish": "codecov",
113
- "tsc": "tsc -p ./tsconfig-build.json",
114
- "tsc:alias": "tsc-alias",
115
- "tsc:check": "npm run tsc --noEmit",
116
- "tsc:check:list-files": "npm run tsc:check --listFiles",
117
- "tsc:cleaner": "ts-cleaner --dist lib",
118
- "tsc:cleaner:watch": "npm run tsc:cleaner --watch",
119
- "tsc:time": "npm run tsc --diagnostics",
120
- "tsc:watch": "tsc-watch -p tsconfig-build.json"
121
- },
122
- "types": "lib/index.d.ts",
123
- "version": "0.1.1"
2
+ "name": "@beecode/msh-entity",
3
+ "version": "0.2.1",
4
+ "description": "",
5
+ "keywords": [],
6
+ "homepage": "https://github.com/beecode-rs/msh-entity#readme",
7
+ "bugs": {
8
+ "url": "https://github.com/beecode-rs/msh-entity/issues"
9
+ },
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "https://github.com/beecode-rs/msh-entity.git"
13
+ },
14
+ "license": "mit",
15
+ "author": "Milos Bugarinovic <milos.bugarinovic@gmail.com> (https://milos.bugarinovic.com)",
16
+ "type": "module",
17
+ "imports": {
18
+ "#packageJson": "./package.json",
19
+ "#src": "./dist/index.js",
20
+ "#src/*": "./dist/*.js"
21
+ },
22
+ "exports": {
23
+ ".": {
24
+ "types": "./dist/index.d.ts",
25
+ "import": "./dist/index.js",
26
+ "require": "./lib/index.js"
27
+ },
28
+ "./*": {
29
+ "types": "./dist/*.d.ts",
30
+ "import": "./dist/*.js"
31
+ },
32
+ "./lib/*": {
33
+ "types": "./lib/*.d.ts",
34
+ "require": "./lib/*.js"
35
+ }
36
+ },
37
+ "main": "./lib/index.js",
38
+ "module": "./dist/index.js",
39
+ "types": "./dist/index.d.ts",
40
+ "files": [
41
+ "./dist",
42
+ "./lib"
43
+ ],
44
+ "scripts": {
45
+ "babel": "npx babel --extensions .ts",
46
+ "build": "npm run clean && npm run tsc",
47
+ "build-cjs": "npm run clean-cjs && npm run tsc-cjs && npm run tsc-types && npm run tsc-types-alias && npm run fix-hybrid-lib-cjs",
48
+ "clean": "rimraf ./dist",
49
+ "clean-cjs": "rimraf ./lib",
50
+ "doc": "concurrently -c auto 'npm:doc:*'",
51
+ "doc:api": "npx typedoc --tsconfig tsconfig.build.json",
52
+ "doc:toc": "npx markdown-toc -i ./README.md",
53
+ "docker-build": "docker build -f ./resource/docker/Dockerfile -t bc-msh-entity ./",
54
+ "docker-rmi": "docker rmi bc-msh-entity",
55
+ "docker-run-package-lock-update": "docker run --rm -v ./:/usr/app/ milosbugarinovic/msh-lib-base:node22.14.0-alpine3.21 npm i --package-lock-only",
56
+ "docker-run-sh": "docker run --rm -it bc-msh-entity sh",
57
+ "fix-hybrid-lib-cjs": "mkdir -p ./lib && echo '{\"type\": \"commonjs\"}' > ./lib/package.json",
58
+ "init": "concurrently -c auto 'npm:init:*'",
59
+ "init:git-config": "git config include.path ./.git-config",
60
+ "init:husky": "npx husky install",
61
+ "lint": "npm run lint-prettier && npm run lint-eslint && npm run lint-json",
62
+ "lint-eslint": "eslint ./ --quiet",
63
+ "lint-eslint-fix": "npm run lint-eslint -- --fix",
64
+ "lint-fix": "npm run lint-prettier-fix && npm run lint-eslint-fix && npm run lint-json-fix",
65
+ "lint-json": "npm run lint-json-fix -- -c",
66
+ "lint-json-fix": "jsonsort -p * .*.json '!./dist' '!./lib' '!./test/node_modules' '!./resource' '!**/.env*' '!**/.gitignore' -t",
67
+ "lint-prettier": "prettier --check {**/*,*}.{js,jsx,ts,tsx}",
68
+ "lint-prettier-fix": "prettier --write {**/*,*}.{js,jsx,ts,tsx}",
69
+ "npm-bump-version": "npm --no-git-tag-version version",
70
+ "npm-lock-file-generate": "npm i --package-lock-only --prefix ./",
71
+ "npm-ncu-check": "npx ncu",
72
+ "npm-ncu-update": "npx ncu -u",
73
+ "npm-pack": "mkdir -p packages && npm pack --pack-destination=./packages",
74
+ "npm-semantic-release": "semantic-release",
75
+ "npm-semantic-release-check": "npm run npm-semantic-release -- --dry-run --no-ci",
76
+ "test": "concurrently -c auto 'npm:test:*'",
77
+ "test-coverage-unit": "npm run test:unit -- --coverage",
78
+ "test-coverage-unit-publish": "codecov",
79
+ "test:e2e": "cd test && npm run test",
80
+ "test:int": "vitest --config=./vitest.config.int.ts",
81
+ "test:unit": "vitest --config=./vitest.config.unit.ts",
82
+ "tsc": "tsc -p tsconfig.build.json",
83
+ "tsc-check": "npm run tsc -- --noEmit",
84
+ "tsc-cjs": "npm run babel -- --out-dir ./lib ./src",
85
+ "tsc-cleaner": "ts-cleaner --dist ./dist",
86
+ "tsc-cleaner-watch": "npm run tsc-cleaner -- --watch",
87
+ "tsc-time": "npm run tsc -- --diagnostics",
88
+ "tsc-types": "tsc -p tsconfig.build.json --emitDeclarationOnly --outDir ./lib",
89
+ "tsc-types-alias": "tsc-alias -p tsconfig.build.json --outDir ./lib --resolve-full-paths",
90
+ "tsc-watch": "npm run tsc -- -w --preserveWatchOutput",
91
+ "watch": "concurrently -c auto -n build,clean 'npm run tsc-watch' 'npm run tsc-cleaner-watch'"
92
+ },
93
+ "commitlint": {
94
+ "extends": [
95
+ "@commitlint/config-conventional"
96
+ ]
97
+ },
98
+ "lint-staged": {
99
+ "**/*.json": [
100
+ "npm run lint-json"
101
+ ],
102
+ "**/*.{ts,tsx,js,jsx}": [
103
+ "eslint",
104
+ "prettier --check"
105
+ ]
106
+ },
107
+ "config": {
108
+ "commitizen": {
109
+ "path": "node_modules/cz-conventional-changelog"
110
+ }
111
+ },
112
+ "dependencies": {
113
+ "@beecode/msh-config": "1.1.2",
114
+ "@beecode/msh-util": "2.0.10",
115
+ "rxjs": "7.8.2"
116
+ },
117
+ "devDependencies": {
118
+ "@babel/cli": "7.26.4",
119
+ "@babel/core": "7.26.10",
120
+ "@babel/plugin-proposal-decorators": "7.25.9",
121
+ "@babel/plugin-transform-modules-commonjs": "7.26.3",
122
+ "@babel/preset-env": "7.26.9",
123
+ "@babel/preset-typescript": "7.26.0",
124
+ "@commitlint/cli": "19.8.0",
125
+ "@commitlint/config-conventional": "19.8.0",
126
+ "@commitlint/prompt": "19.8.0",
127
+ "@types/node": "22.13.10",
128
+ "@vitest/coverage-v8": "3.0.9",
129
+ "commitizen": "4.3.1",
130
+ "concurrently": "9.1.2",
131
+ "husky": "9.1.7",
132
+ "json-sort-cli": "4.0.9",
133
+ "lint-staged": "15.5.0",
134
+ "markdown-toc": "1.2.0",
135
+ "prettier": "3.5.3",
136
+ "rimraf": "6.0.1",
137
+ "source-map-support": "0.5.21",
138
+ "ts-cleaner": "1.0.5",
139
+ "ts-node": "10.9.2",
140
+ "tsc-alias": "1.8.11",
141
+ "tsc-watch": "6.2.1",
142
+ "typedoc": "0.28.1",
143
+ "typedoc-plugin-markdown": "4.5.2",
144
+ "typescript": "5.7.3",
145
+ "vite-tsconfig-paths": "5.1.4",
146
+ "vitest": "3.0.9"
147
+ },
148
+ "engines": {
149
+ "node": ">=20.8.1",
150
+ "npm": ">=10.1.0"
151
+ }
124
152
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/entity-cache/memory.ts"],"names":[],"mappings":";;;AAAA,+DAA0D;AAC1D,mDAA+C;AAC/C,8CAAuC;AAQvC,MAAa,iBAAiB;IAA9B;QACY,YAAO,GAA6D,EAAE,CAAA;QACtE,aAAQ,GAAG,IAAI,iBAAO,EAAuB,CAAA;IA4CzD,CAAC;IA1CC,OAAO,CAAC,EAAU;QAChB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAE7B,IAAI,CAAC,IAAI,EAAE;YACT,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,CAAA;YAErB,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;SAC7B;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAExD,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,CAAA;IAC7C,CAAC;IAED,GAAG,CAAC,MAA2B,EAAE,eAAwB;QACvD,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAA;QACzD,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;QACxC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;IACpC,CAAC;IAED,aAAa,CAAC,EAAU,EAAE,QAA4C;QACpE,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAA,kBAAM,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;IAC3E,CAAC;IAES,iBAAiB,CAAC,eAAwB;QAClD,IAAI,eAAe,KAAK,SAAS,EAAE;YACjC,OAAO,SAAS,CAAA;SACjB;QACD,MAAM,QAAQ,GAAG,IAAI,oBAAQ,EAAE,CAAA;QAE/B,OAAO,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,eAAe,CAAA;IAC9D,CAAC;IAES,eAAe,CAAC,SAAkB;QAC1C,IAAI,SAAS,KAAK,SAAS,EAAE;YAC3B,OAAO,KAAK,CAAA;SACb;QACD,MAAM,QAAQ,GAAG,IAAI,oBAAQ,EAAE,CAAA;QAE/B,OAAO,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,SAAS,CAAA;IACxD,CAAC;CACF;AA9CD,8CA8CC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"promise-service.js","sourceRoot":"","sources":["../../src/entity-cache/promise-service.ts"],"names":[],"mappings":";;;AAAA,oDAAyG;AAEzG,MAAsB,yBAAyB;IAM7C,YAAsB,GAA+B;QACnD,IAAI,CAAC,IAAI,GAAG,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,IAAI,0BAAiB,EAAU,CAAA;IACpD,CAAC;IAED;;;;;OAKG;IACH,2BAA2B,CAAC,EAAM,EAAE,QAAqC;QACvE,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAA;QAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QAChE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QACnE,IAAI,MAAM,KAAK,SAAS,EAAE;YACxB,QAAQ,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;SACnC;QACD,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;SACtB;QAED,OAAO,YAAY,CAAA;IACrB,CAAC;IAED,YAAY,CAAC,EAAM;QACjB,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACpC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAA;QAC5E,CAAC,CAAC,CAAA;IACJ,CAAC;CACF;AAnCD,8DAmCC"}
package/lib/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mEAAgD;AAEhD,0DAAuC"}