@hg-ts/repository 0.5.7 → 0.5.13
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/repositories/base.event.repository.d.ts +2 -2
- package/dist/repositories/base.event.repository.d.ts.map +1 -1
- package/dist/repositories/base.event.repository.js +9 -5
- package/dist/repositories/base.event.repository.js.map +1 -1
- package/dist/repositories/base.memory.repository.d.ts +3 -4
- package/dist/repositories/base.memory.repository.d.ts.map +1 -1
- package/dist/repositories/base.memory.repository.js +0 -1
- package/dist/repositories/base.memory.repository.js.map +1 -1
- package/dist/repositories/base.repository.d.ts +8 -9
- package/dist/repositories/base.repository.d.ts.map +1 -1
- package/dist/repositories/base.repository.js +8 -11
- package/dist/repositories/base.repository.js.map +1 -1
- package/dist/repositories/event.repository.d.ts +4 -4
- package/dist/repositories/event.repository.d.ts.map +1 -1
- package/dist/repositories/repository.d.ts +8 -10
- package/dist/repositories/repository.d.ts.map +1 -1
- package/dist/repositories/repository.js.map +1 -1
- package/dist/tests/base-event-repository.test.d.ts +16 -0
- package/dist/tests/base-event-repository.test.d.ts.map +1 -0
- package/dist/tests/base-event-repository.test.js +124 -0
- package/dist/tests/base-event-repository.test.js.map +1 -0
- package/dist/tests/base-repository.test.d.ts +10 -3
- package/dist/tests/base-repository.test.d.ts.map +1 -1
- package/dist/tests/base-repository.test.js +92 -8
- package/dist/tests/base-repository.test.js.map +1 -1
- package/dist/tests/test-event.memory.repository.d.ts +8 -0
- package/dist/tests/test-event.memory.repository.d.ts.map +1 -0
- package/dist/tests/test-event.memory.repository.js +36 -0
- package/dist/tests/test-event.memory.repository.js.map +1 -0
- package/dist/tests/test.memory.repository.d.ts +0 -2
- package/dist/tests/test.memory.repository.d.ts.map +1 -1
- package/dist/tests/test.memory.repository.js +0 -7
- package/dist/tests/test.memory.repository.js.map +1 -1
- package/package.json +13 -13
- package/vitest.config.mjs +0 -3
|
@@ -3,11 +3,11 @@ import { AggregateAlreadyExistsException, AggregateNotFoundException } from '../
|
|
|
3
3
|
import { BaseRepository, NotEmptyList } from './base.repository.js';
|
|
4
4
|
import { EventFindOptions, EventRepository } from './event.repository.js';
|
|
5
5
|
export declare abstract class BaseEventRepository extends BaseRepository<DomainEvent, EventFindOptions> implements EventRepository {
|
|
6
|
+
add(eventOrEvents: DomainEvent[] | DomainEvent): Promise<void>;
|
|
6
7
|
getNextId(): Promise<string>;
|
|
7
8
|
update(_entity: DomainEvent | DomainEvent[]): Promise<void>;
|
|
8
9
|
delete(_entity: DomainEvent | DomainEvent[]): Promise<void>;
|
|
9
|
-
|
|
10
|
-
protected rawUpdate(_dtos: NotEmptyList<DomainEventDto>): Promise<void>;
|
|
10
|
+
protected rawUpdate(_entity: NotEmptyList<DomainEventDto>): Promise<void>;
|
|
11
11
|
protected getNotFoundException(id: string): AggregateNotFoundException;
|
|
12
12
|
protected getAlreadyExistsException(id: string): AggregateAlreadyExistsException;
|
|
13
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.event.repository.d.ts","sourceRoot":"","sources":["../../src/repositories/base.event.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,WAAW,EACX,cAAc,
|
|
1
|
+
{"version":3,"file":"base.event.repository.d.ts","sourceRoot":"","sources":["../../src/repositories/base.event.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,WAAW,EACX,cAAc,EAEd,MAAM,eAAe,CAAC;AAEvB,OAAO,EACN,+BAA+B,EAK/B,0BAA0B,EAC1B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACN,cAAc,EACd,YAAY,EACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACN,gBAAgB,EAChB,eAAe,EACf,MAAM,uBAAuB,CAAC;AAE/B,8BAAsB,mBACrB,SAAQ,cAAc,CAAC,WAAW,EAAE,gBAAgB,CAAE,YAAW,eAAe;IAC1D,GAAG,CAAC,aAAa,EAAE,WAAW,EAAE,GAAG,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAS9D,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAI5B,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3D,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;cAKxD,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;cAIrE,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,0BAA0B;cAI5D,yBAAyB,CAAC,EAAE,EAAE,MAAM,GAAG,+BAA+B;CAGzF"}
|
|
@@ -1,7 +1,14 @@
|
|
|
1
|
-
import { DomainEvent, } from '@hg-ts/domain';
|
|
1
|
+
import { DomainEvent, STORED_PROPERTY, } from '@hg-ts/domain';
|
|
2
2
|
import { AggregateEventAlreadyExistsException, AggregateEventDeleteRestrictedException, AggregateEventNotFoundException, AggregateEventUpdateRestrictedException, } from '../exceptions/index.js';
|
|
3
3
|
import { BaseRepository, } from './base.repository.js';
|
|
4
4
|
export class BaseEventRepository extends BaseRepository {
|
|
5
|
+
async add(eventOrEvents) {
|
|
6
|
+
const events = Array.isArray(eventOrEvents) ? eventOrEvents : [eventOrEvents];
|
|
7
|
+
await super.add(events.filter(item => !item[STORED_PROPERTY]));
|
|
8
|
+
events.forEach(event => {
|
|
9
|
+
event[STORED_PROPERTY] = true;
|
|
10
|
+
});
|
|
11
|
+
}
|
|
5
12
|
async getNextId() {
|
|
6
13
|
return DomainEvent.generateId();
|
|
7
14
|
}
|
|
@@ -11,10 +18,7 @@ export class BaseEventRepository extends BaseRepository {
|
|
|
11
18
|
async delete(_entity) {
|
|
12
19
|
throw new AggregateEventDeleteRestrictedException();
|
|
13
20
|
}
|
|
14
|
-
async
|
|
15
|
-
throw new AggregateEventDeleteRestrictedException();
|
|
16
|
-
}
|
|
17
|
-
async rawUpdate(_dtos) {
|
|
21
|
+
async rawUpdate(_entity) {
|
|
18
22
|
throw new AggregateEventUpdateRestrictedException();
|
|
19
23
|
}
|
|
20
24
|
getNotFoundException(id) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.event.repository.js","sourceRoot":"","sources":["../../src/repositories/base.event.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,WAAW,
|
|
1
|
+
{"version":3,"file":"base.event.repository.js","sourceRoot":"","sources":["../../src/repositories/base.event.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,WAAW,EAEX,eAAe,GACf,MAAM,eAAe,CAAC;AAEvB,OAAO,EAEN,oCAAoC,EACpC,uCAAuC,EACvC,+BAA+B,EAC/B,uCAAuC,GAEvC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACN,cAAc,GAEd,MAAM,sBAAsB,CAAC;AAM9B,MAAM,OAAgB,mBACrB,SAAQ,cAA6C;IACrC,KAAK,CAAC,GAAG,CAAC,aAA0C;QACnE,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;QAC9E,MAAM,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAE/D,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACtB,KAAK,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;QAC/B,CAAC,CAAC,CAAC;IACJ,CAAC;IAEe,KAAK,CAAC,SAAS;QAC9B,OAAO,WAAW,CAAC,UAAU,EAAE,CAAC;IACjC,CAAC;IAEe,KAAK,CAAC,MAAM,CAAC,OAAoC;QAChE,MAAM,IAAI,uCAAuC,EAAE,CAAC;IACrD,CAAC;IAEe,KAAK,CAAC,MAAM,CAAC,OAAoC;QAChE,MAAM,IAAI,uCAAuC,EAAE,CAAC;IACrD,CAAC;IAGkB,KAAK,CAAC,SAAS,CAAC,OAAqC;QACvE,MAAM,IAAI,uCAAuC,EAAE,CAAC;IACrD,CAAC;IAEkB,oBAAoB,CAAC,EAAU;QACjD,MAAM,IAAI,+BAA+B,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC;IAEkB,yBAAyB,CAAC,EAAU;QACtD,MAAM,IAAI,oCAAoC,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;CACD"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import type { BaseAggregate } from '@hg-ts/domain';
|
|
2
2
|
import { BaseRepository, NotEmptyList } from './base.repository.js';
|
|
3
|
-
import type { AggregateDto,
|
|
4
|
-
export declare abstract class BaseMemoryRepository<Aggregate extends BaseAggregate<any
|
|
5
|
-
protected
|
|
6
|
-
protected readonly entitiesMap: Map<AggregateId<Aggregate>, AggregateDto<Aggregate>>;
|
|
3
|
+
import type { AggregateDto, BaseFindOptions } from './repository.js';
|
|
4
|
+
export declare abstract class BaseMemoryRepository<Aggregate extends BaseAggregate<any>, FindOptions extends BaseFindOptions = BaseFindOptions> extends BaseRepository<Aggregate, FindOptions> {
|
|
5
|
+
protected readonly entitiesMap: Map<string, AggregateDto<Aggregate>>;
|
|
7
6
|
rawAdd(entities: NotEmptyList<Aggregate>): Promise<void>;
|
|
8
7
|
rawUpdate(entities: NotEmptyList<Aggregate>): Promise<void>;
|
|
9
8
|
delete(aggregate: Aggregate | Aggregate[]): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.memory.repository.d.ts","sourceRoot":"","sources":["../../src/repositories/base.memory.repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EACN,cAAc,EACd,YAAY,EACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACX,YAAY,EACZ,
|
|
1
|
+
{"version":3,"file":"base.memory.repository.d.ts","sourceRoot":"","sources":["../../src/repositories/base.memory.repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EACN,cAAc,EACd,YAAY,EACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACX,YAAY,EACZ,eAAe,EACf,MAAM,iBAAiB,CAAC;AAWzB,8BAAsB,oBAAoB,CACzC,SAAS,SAAS,aAAa,CAAC,GAAG,CAAC,EACnC,WAAW,SAAS,eAAe,GAAG,eAAe,CAEtD,SAAQ,cAAc,CAAC,SAAS,EAAE,WAAW,CAAC;IAC9C,SAAS,CAAC,QAAQ,CAAC,WAAW,uCAA8C;IAE/D,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxD,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAMlD,MAAM,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;cAQ/D,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAiBxE,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,SAAS;CAC3E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.memory.repository.js","sourceRoot":"","sources":["../../src/repositories/base.memory.repository.ts"],"names":[],"mappings":"AACA,OAAO,EACN,cAAc,GAEd,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"base.memory.repository.js","sourceRoot":"","sources":["../../src/repositories/base.memory.repository.ts"],"names":[],"mappings":"AACA,OAAO,EACN,cAAc,GAEd,MAAM,sBAAsB,CAAC;AAM9B,SAAS,KAAK,CAAuC,SAAoB;IACxE,MAAM,kBAAkB,GAAG,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAEjD,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAEjC,OAAO,MAAM,CAAC;AACf,CAAC;AAED,MAAM,OAAgB,oBAIrB,SAAQ,cAAsC;IAC3B,WAAW,GAAG,IAAI,GAAG,EAAmC,CAAC;IAErE,KAAK,CAAC,MAAM,CAAC,QAAiC;QACpD,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACxD,CAAC;IACF,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,QAAiC;QACvD,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACxD,CAAC;IACF,CAAC;IAEe,KAAK,CAAC,MAAM,CAAC,SAAkC;QAC9D,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAC,SAAS,EAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC7E,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACvC,CAAC;IACF,CAAC;IAES,KAAK,CAAC,YAAY,CAAC,OAAoB;QAChD,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC;QAEvB,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;YACvB,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;iBAC9C,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9E,CAAC;QAED,IAAI,OAAO,EAAE,KAAK,WAAW,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEtC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,CAAC;QAED,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7E,CAAC;CAGD"}
|
|
@@ -1,23 +1,22 @@
|
|
|
1
1
|
import { BaseAggregate, DomainEvent } from '@hg-ts/domain';
|
|
2
2
|
import { AggregateAlreadyExistsException, AggregateNotFoundException } from '../exceptions/index.js';
|
|
3
|
-
import {
|
|
3
|
+
import { BaseFindOptions, Repository } from './repository.js';
|
|
4
4
|
export type NotEmptyList<T> = [T, ...T[]];
|
|
5
|
-
export declare abstract class BaseRepository<Aggregate extends (BaseAggregate<any> | DomainEvent), FindOptions extends BaseFindOptions
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
export declare abstract class BaseRepository<Aggregate extends (BaseAggregate<any> | DomainEvent), FindOptions extends BaseFindOptions = BaseFindOptions> extends Repository<Aggregate, FindOptions> {
|
|
6
|
+
getNextId(): Promise<string>;
|
|
7
|
+
get(id: string): Promise<Nullable<Aggregate>>;
|
|
8
|
+
getOrFail(id: string): Promise<Aggregate>;
|
|
9
|
+
has(id: string): Promise<boolean>;
|
|
9
10
|
find(options?: Partial<FindOptions>): Promise<Aggregate[]>;
|
|
10
11
|
add(entityOrEntities: Aggregate[] | Aggregate): Promise<void>;
|
|
11
12
|
update(entityOrEntities: Aggregate[] | Aggregate): Promise<void>;
|
|
12
|
-
clear(): Promise<void>;
|
|
13
13
|
delete(_entities: Aggregate[] | Aggregate): Promise<void>;
|
|
14
14
|
protected onEmptyAdd(): void;
|
|
15
15
|
protected onEmptyUpdate(): void;
|
|
16
|
-
protected getId(aggregate: Aggregate): AggregateId<Aggregate>;
|
|
17
16
|
protected abstract findEntities(options?: Partial<FindOptions>): Promise<Aggregate[]>;
|
|
18
17
|
protected abstract rawAdd(dtos: NotEmptyList<Aggregate>): Promise<void>;
|
|
19
18
|
protected abstract rawUpdate(dtos: NotEmptyList<Aggregate>): Promise<void>;
|
|
20
|
-
protected abstract getNotFoundException(id:
|
|
21
|
-
protected abstract getAlreadyExistsException(id:
|
|
19
|
+
protected abstract getNotFoundException(id: string): AggregateNotFoundException;
|
|
20
|
+
protected abstract getAlreadyExistsException(id: string): AggregateAlreadyExistsException;
|
|
22
21
|
}
|
|
23
22
|
//# sourceMappingURL=base.repository.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.repository.d.ts","sourceRoot":"","sources":["../../src/repositories/base.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EACb,WAAW,EACX,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"base.repository.d.ts","sourceRoot":"","sources":["../../src/repositories/base.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EACb,WAAW,EACX,MAAM,eAAe,CAAC;AAIvB,OAAO,EACN,+BAA+B,EAC/B,0BAA0B,EAC1B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACN,eAAe,EACf,UAAU,EACV,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AAE1C,8BAAsB,cAAc,CAAC,SAAS,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,EACxF,WAAW,SAAS,eAAe,GAAG,eAAe,CACrD,SAAQ,UAAU,CAAC,SAAS,EAAE,WAAW,CAAC;IAC7B,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAG5B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAO7C,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAUzC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMjC,IAAI,CAAC,OAAO,GAAE,OAAO,CAAC,WAAW,CAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAI9D,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB7D,MAAM,CAAC,gBAAgB,EAAE,SAAS,EAAE,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBhE,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAItE,SAAS,CAAC,UAAU,IAAI,IAAI;IAC5B,SAAS,CAAC,aAAa,IAAI,IAAI;IAE/B,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAErF,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IACvE,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1E,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,0BAA0B;IAE/E,SAAS,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,EAAE,MAAM,GAAG,+BAA+B;CACzF"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { WillNeverHappenedException } from '@hg-ts/exception';
|
|
2
|
+
import { v7 as uuid } from 'uuid';
|
|
2
3
|
import { Repository, } from './repository.js';
|
|
3
4
|
export class BaseRepository extends Repository {
|
|
5
|
+
async getNextId() {
|
|
6
|
+
return uuid();
|
|
7
|
+
}
|
|
4
8
|
async get(id) {
|
|
5
9
|
const [entity] = await this.find({ id });
|
|
6
10
|
return entity || null;
|
|
@@ -16,9 +20,8 @@ export class BaseRepository extends Repository {
|
|
|
16
20
|
const entity = await this.get(id);
|
|
17
21
|
return entity !== null;
|
|
18
22
|
}
|
|
19
|
-
async find(options) {
|
|
20
|
-
|
|
21
|
-
return entities;
|
|
23
|
+
async find(options = {}) {
|
|
24
|
+
return this.findEntities(options);
|
|
22
25
|
}
|
|
23
26
|
async add(entityOrEntities) {
|
|
24
27
|
const entities = Array.isArray(entityOrEntities) ? entityOrEntities : [entityOrEntities];
|
|
@@ -29,7 +32,7 @@ export class BaseRepository extends Repository {
|
|
|
29
32
|
const ids = entities.map(({ id }) => id);
|
|
30
33
|
const existEntities = await this.find({ id: ids });
|
|
31
34
|
if (existEntities.length > 0 && existEntities[0]) {
|
|
32
|
-
throw this.getAlreadyExistsException(
|
|
35
|
+
throw this.getAlreadyExistsException(existEntities[0].id);
|
|
33
36
|
}
|
|
34
37
|
await this.rawAdd(entities);
|
|
35
38
|
}
|
|
@@ -44,20 +47,14 @@ export class BaseRepository extends Repository {
|
|
|
44
47
|
const ids = entities.map(({ id }) => id);
|
|
45
48
|
const existEntities = await this.find({ id: ids });
|
|
46
49
|
if (existEntities.length < entities.length && entities[0]) {
|
|
47
|
-
throw this.getNotFoundException(
|
|
50
|
+
throw this.getNotFoundException(existEntities[0]?.id ?? entities[0].id);
|
|
48
51
|
}
|
|
49
52
|
await this.rawUpdate(entities);
|
|
50
53
|
}
|
|
51
|
-
async clear() {
|
|
52
|
-
throw new WillNeverHappenedException('The clean method is not implemented, so cleaning the repository is not allowed.');
|
|
53
|
-
}
|
|
54
54
|
async delete(_entities) {
|
|
55
55
|
throw new WillNeverHappenedException('The delete method is not implemented, so deleting entities is not allowed.');
|
|
56
56
|
}
|
|
57
57
|
onEmptyAdd() { }
|
|
58
58
|
onEmptyUpdate() { }
|
|
59
|
-
getId(aggregate) {
|
|
60
|
-
return aggregate.id;
|
|
61
|
-
}
|
|
62
59
|
}
|
|
63
60
|
//# sourceMappingURL=base.repository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.repository.js","sourceRoot":"","sources":["../../src/repositories/base.repository.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"base.repository.js","sourceRoot":"","sources":["../../src/repositories/base.repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { DomainEvent } from '@hg-ts/domain';
|
|
2
2
|
import { BaseFindOptions, Repository } from './repository.js';
|
|
3
|
-
export type EventFindOptions = BaseFindOptions
|
|
4
|
-
entityId
|
|
5
|
-
entityName
|
|
6
|
-
limit
|
|
3
|
+
export type EventFindOptions = BaseFindOptions & {
|
|
4
|
+
entityId?: string | string[];
|
|
5
|
+
entityName?: string;
|
|
6
|
+
limit?: number;
|
|
7
7
|
};
|
|
8
8
|
export declare abstract class EventRepository extends Repository<DomainEvent, EventFindOptions> {
|
|
9
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.repository.d.ts","sourceRoot":"","sources":["../../src/repositories/event.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EACN,eAAe,EACf,UAAU,EACV,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,gBAAgB,GAAG,eAAe,
|
|
1
|
+
{"version":3,"file":"event.repository.d.ts","sourceRoot":"","sources":["../../src/repositories/event.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EACN,eAAe,EACf,UAAU,EACV,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG;IAChD,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,8BAAsB,eACrB,SAAQ,UAAU,CAAC,WAAW,EAAE,gBAAgB,CAAC;CACjD"}
|
|
@@ -1,18 +1,16 @@
|
|
|
1
|
-
import { BaseAggregate, DomainEvent
|
|
2
|
-
export type AggregateId<Aggregate extends BaseAggregate<any> | DomainEvent> = Aggregate extends Identifiable<infer IdType> ? IdType : never;
|
|
1
|
+
import { BaseAggregate, DomainEvent } from '@hg-ts/domain';
|
|
3
2
|
export type AggregateDto<Aggregate extends BaseAggregate<any> | DomainEvent> = ReturnType<Aggregate['toDto']>;
|
|
4
|
-
export type BaseFindOptions
|
|
5
|
-
id?:
|
|
3
|
+
export type BaseFindOptions = {
|
|
4
|
+
id?: string | string[];
|
|
6
5
|
};
|
|
7
|
-
export declare abstract class Repository<Aggregate extends BaseAggregate<any> | DomainEvent, FindOptions extends BaseFindOptions
|
|
8
|
-
abstract getNextId(): Promise<
|
|
9
|
-
abstract get(id:
|
|
10
|
-
abstract getOrFail(id:
|
|
6
|
+
export declare abstract class Repository<Aggregate extends BaseAggregate<any> | DomainEvent, FindOptions extends BaseFindOptions = BaseFindOptions> {
|
|
7
|
+
abstract getNextId(): Promise<string>;
|
|
8
|
+
abstract get(id: string): Promise<Nullable<Aggregate>>;
|
|
9
|
+
abstract getOrFail(id: string): Promise<Aggregate>;
|
|
11
10
|
abstract find(options?: FindOptions): Promise<Aggregate[]>;
|
|
12
11
|
abstract add(entity: Aggregate | Aggregate[]): Promise<void>;
|
|
13
12
|
abstract update(entity: Aggregate | Aggregate[]): Promise<void>;
|
|
14
13
|
abstract delete(entity: Aggregate | Aggregate[]): Promise<void>;
|
|
15
|
-
abstract has(id:
|
|
16
|
-
abstract clear(): Promise<void>;
|
|
14
|
+
abstract has(id: string): Promise<boolean>;
|
|
17
15
|
}
|
|
18
16
|
//# sourceMappingURL=repository.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../src/repositories/repository.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EACb,WAAW,EACX,
|
|
1
|
+
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../src/repositories/repository.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EACb,WAAW,EACX,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,YAAY,CAAC,SAAS,SAAS,aAAa,CAAC,GAAG,CAAC,GAAG,WAAW,IAC1E,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;AAE/B,MAAM,MAAM,eAAe,GAAG;IAC7B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,8BAAsB,UAAU,CAAC,SAAS,SAAS,aAAa,CAAC,GAAG,CAAC,GAAG,WAAW,EAClF,WAAW,SAAS,eAAe,GAAG,eAAe;aACrC,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;aAE5B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;aAE7C,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;aAEzC,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;aAEjD,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;aAEnD,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;aAEtD,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;aAEtD,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CACjD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../src/repositories/repository.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../src/repositories/repository.ts"],"names":[],"mappings":"AAYA,MAAM,OAAgB,UAAU;CAiB/B"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Suite } from '@hg-ts/tests';
|
|
2
|
+
export declare class BaseRepositoryTestSuite extends Suite {
|
|
3
|
+
private repository;
|
|
4
|
+
getNextId(): Promise<void>;
|
|
5
|
+
addEmpty(): Promise<void>;
|
|
6
|
+
add(): Promise<void>;
|
|
7
|
+
update(): Promise<void>;
|
|
8
|
+
delete(): Promise<void>;
|
|
9
|
+
getNotFound(): Promise<void>;
|
|
10
|
+
addDuplicateAllowed(): Promise<void>;
|
|
11
|
+
addWithDuplicateId(): Promise<void>;
|
|
12
|
+
getNotFoundWithoutExceptionTest(): Promise<void>;
|
|
13
|
+
beforeEach(): Promise<void>;
|
|
14
|
+
private createEvent;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=base-event-repository.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-event-repository.test.d.ts","sourceRoot":"","sources":["../../src/tests/base-event-repository.test.ts"],"names":[],"mappings":"AAIA,OAAO,EAIN,KAAK,EAEL,MAAM,cAAc,CAAC;AAatB,qBACa,uBAAwB,SAAQ,KAAK;IACjD,OAAO,CAAC,UAAU,CAA4B;IAGjC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAO1B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAKzB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAWpB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAQvB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAQvB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQpC,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQnC,+BAA+B,IAAI,OAAO,CAAC,IAAI,CAAC;IAMvC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjD,OAAO,CAAC,WAAW;CAQnB"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import { DomainEvent, STORED_PROPERTY, } from '@hg-ts/domain';
|
|
3
|
+
import { Describe, expect, ExpectException, Suite, Test, } from '@hg-ts/tests';
|
|
4
|
+
import { v4 as uuid, validate, } from 'uuid';
|
|
5
|
+
import { AggregateEventAlreadyExistsException, AggregateEventDeleteRestrictedException, AggregateEventNotFoundException, AggregateEventUpdateRestrictedException, } from '../exceptions/index.js';
|
|
6
|
+
import { TestEventMemoryRepository } from './test-event.memory.repository.js';
|
|
7
|
+
let BaseRepositoryTestSuite = class BaseRepositoryTestSuite extends Suite {
|
|
8
|
+
repository;
|
|
9
|
+
async getNextId() {
|
|
10
|
+
const id = await this.repository.getNextId();
|
|
11
|
+
expect(validate(id)).toBeTruthy();
|
|
12
|
+
}
|
|
13
|
+
async addEmpty() {
|
|
14
|
+
await this.repository.add([]);
|
|
15
|
+
}
|
|
16
|
+
async add() {
|
|
17
|
+
const event = this.createEvent();
|
|
18
|
+
await this.repository.add(event);
|
|
19
|
+
const found = await this.repository.getOrFail(event.id);
|
|
20
|
+
expect(found).toMatchObject(event);
|
|
21
|
+
}
|
|
22
|
+
async update() {
|
|
23
|
+
const event = this.createEvent();
|
|
24
|
+
await this.repository.add(event);
|
|
25
|
+
await this.repository.update(event);
|
|
26
|
+
}
|
|
27
|
+
async delete() {
|
|
28
|
+
const event = this.createEvent();
|
|
29
|
+
await this.repository.add(event);
|
|
30
|
+
await this.repository.delete(event);
|
|
31
|
+
}
|
|
32
|
+
async getNotFound() {
|
|
33
|
+
await this.repository.getOrFail(DomainEvent.generateId());
|
|
34
|
+
}
|
|
35
|
+
async addDuplicateAllowed() {
|
|
36
|
+
const event = this.createEvent();
|
|
37
|
+
await this.repository.add(event);
|
|
38
|
+
await this.repository.add(event);
|
|
39
|
+
}
|
|
40
|
+
async addWithDuplicateId() {
|
|
41
|
+
const event = this.createEvent();
|
|
42
|
+
await this.repository.add(event);
|
|
43
|
+
event[STORED_PROPERTY] = false;
|
|
44
|
+
await this.repository.add(event);
|
|
45
|
+
}
|
|
46
|
+
async getNotFoundWithoutExceptionTest() {
|
|
47
|
+
const id = uuid();
|
|
48
|
+
await this.repository.get(id);
|
|
49
|
+
}
|
|
50
|
+
async beforeEach() {
|
|
51
|
+
this.repository = new TestEventMemoryRepository();
|
|
52
|
+
}
|
|
53
|
+
createEvent() {
|
|
54
|
+
return new DomainEvent({
|
|
55
|
+
occurredOn: new Date(),
|
|
56
|
+
entityName: 'Test',
|
|
57
|
+
entityId: uuid(),
|
|
58
|
+
body: {},
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
__decorate([
|
|
63
|
+
Test(),
|
|
64
|
+
__metadata("design:type", Function),
|
|
65
|
+
__metadata("design:paramtypes", []),
|
|
66
|
+
__metadata("design:returntype", Promise)
|
|
67
|
+
], BaseRepositoryTestSuite.prototype, "getNextId", null);
|
|
68
|
+
__decorate([
|
|
69
|
+
Test(),
|
|
70
|
+
__metadata("design:type", Function),
|
|
71
|
+
__metadata("design:paramtypes", []),
|
|
72
|
+
__metadata("design:returntype", Promise)
|
|
73
|
+
], BaseRepositoryTestSuite.prototype, "addEmpty", null);
|
|
74
|
+
__decorate([
|
|
75
|
+
Test(),
|
|
76
|
+
__metadata("design:type", Function),
|
|
77
|
+
__metadata("design:paramtypes", []),
|
|
78
|
+
__metadata("design:returntype", Promise)
|
|
79
|
+
], BaseRepositoryTestSuite.prototype, "add", null);
|
|
80
|
+
__decorate([
|
|
81
|
+
Test(),
|
|
82
|
+
ExpectException(AggregateEventUpdateRestrictedException),
|
|
83
|
+
__metadata("design:type", Function),
|
|
84
|
+
__metadata("design:paramtypes", []),
|
|
85
|
+
__metadata("design:returntype", Promise)
|
|
86
|
+
], BaseRepositoryTestSuite.prototype, "update", null);
|
|
87
|
+
__decorate([
|
|
88
|
+
Test(),
|
|
89
|
+
ExpectException(AggregateEventDeleteRestrictedException),
|
|
90
|
+
__metadata("design:type", Function),
|
|
91
|
+
__metadata("design:paramtypes", []),
|
|
92
|
+
__metadata("design:returntype", Promise)
|
|
93
|
+
], BaseRepositoryTestSuite.prototype, "delete", null);
|
|
94
|
+
__decorate([
|
|
95
|
+
Test(),
|
|
96
|
+
ExpectException(AggregateEventNotFoundException),
|
|
97
|
+
__metadata("design:type", Function),
|
|
98
|
+
__metadata("design:paramtypes", []),
|
|
99
|
+
__metadata("design:returntype", Promise)
|
|
100
|
+
], BaseRepositoryTestSuite.prototype, "getNotFound", null);
|
|
101
|
+
__decorate([
|
|
102
|
+
Test(),
|
|
103
|
+
__metadata("design:type", Function),
|
|
104
|
+
__metadata("design:paramtypes", []),
|
|
105
|
+
__metadata("design:returntype", Promise)
|
|
106
|
+
], BaseRepositoryTestSuite.prototype, "addDuplicateAllowed", null);
|
|
107
|
+
__decorate([
|
|
108
|
+
Test(),
|
|
109
|
+
ExpectException(AggregateEventAlreadyExistsException),
|
|
110
|
+
__metadata("design:type", Function),
|
|
111
|
+
__metadata("design:paramtypes", []),
|
|
112
|
+
__metadata("design:returntype", Promise)
|
|
113
|
+
], BaseRepositoryTestSuite.prototype, "addWithDuplicateId", null);
|
|
114
|
+
__decorate([
|
|
115
|
+
Test(),
|
|
116
|
+
__metadata("design:type", Function),
|
|
117
|
+
__metadata("design:paramtypes", []),
|
|
118
|
+
__metadata("design:returntype", Promise)
|
|
119
|
+
], BaseRepositoryTestSuite.prototype, "getNotFoundWithoutExceptionTest", null);
|
|
120
|
+
BaseRepositoryTestSuite = __decorate([
|
|
121
|
+
Describe()
|
|
122
|
+
], BaseRepositoryTestSuite);
|
|
123
|
+
export { BaseRepositoryTestSuite };
|
|
124
|
+
//# sourceMappingURL=base-event-repository.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-event-repository.test.js","sourceRoot":"","sources":["../../src/tests/base-event-repository.test.ts"],"names":[],"mappings":";AAAA,OAAO,EACN,WAAW,EACX,eAAe,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EACN,QAAQ,EACR,MAAM,EACN,eAAe,EACf,KAAK,EACL,IAAI,GACJ,MAAM,cAAc,CAAC;AACtB,OAAO,EACN,EAAE,IAAI,IAAI,EACV,QAAQ,GACR,MAAM,MAAM,CAAC;AACd,OAAO,EACN,oCAAoC,EACpC,uCAAuC,EACvC,+BAA+B,EAC/B,uCAAuC,GACvC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAGvE,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,KAAK;IACzC,UAAU,CAA4B;IAGjC,AAAN,KAAK,CAAC,SAAS;QACrB,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;QAE7C,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;IACnC,CAAC;IAGY,AAAN,KAAK,CAAC,QAAQ;QACpB,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAGY,AAAN,KAAK,CAAC,GAAG;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAEjC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAExD,MAAM,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAIY,AAAN,KAAK,CAAC,MAAM;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAIY,AAAN,KAAK,CAAC,MAAM;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAIY,AAAN,KAAK,CAAC,WAAW;QACvB,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC;IAC3D,CAAC;IAGY,AAAN,KAAK,CAAC,mBAAmB;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAIY,AAAN,KAAK,CAAC,kBAAkB;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjC,KAAK,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC;QAC/B,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAGY,AAAN,KAAK,CAAC,+BAA+B;QAC3C,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC;QAElB,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAEe,KAAK,CAAC,UAAU;QAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,yBAAyB,EAAE,CAAC;IACnD,CAAC;IAEO,WAAW;QAClB,OAAO,IAAI,WAAW,CAAC;YACtB,UAAU,EAAE,IAAI,IAAI,EAAE;YACtB,UAAU,EAAE,MAAM;YAClB,QAAQ,EAAE,IAAI,EAAE;YAChB,IAAI,EAAE,EAAE;SACR,CAAC,CAAC;IACJ,CAAC;CACD,CAAA;AA9Ea;IADZ,IAAI,EAAE;;;;wDAKN;AAGY;IADZ,IAAI,EAAE;;;;uDAGN;AAGY;IADZ,IAAI,EAAE;;;;kDAQN;AAIY;IAFZ,IAAI,EAAE;IACN,eAAe,CAAC,uCAAuC,CAAC;;;;qDAKxD;AAIY;IAFZ,IAAI,EAAE;IACN,eAAe,CAAC,uCAAuC,CAAC;;;;qDAKxD;AAIY;IAFZ,IAAI,EAAE;IACN,eAAe,CAAC,+BAA+B,CAAC;;;;0DAGhD;AAGY;IADZ,IAAI,EAAE;;;;kEAKN;AAIY;IAFZ,IAAI,EAAE;IACN,eAAe,CAAC,oCAAoC,CAAC;;;;iEAMrD;AAGY;IADZ,IAAI,EAAE;;;;8EAKN;AApEW,uBAAuB;IADnC,QAAQ,EAAE;GACE,uBAAuB,CAkFnC"}
|
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
import { Suite } from '@hg-ts/tests';
|
|
2
2
|
export declare class BaseRepositoryTestSuite extends Suite {
|
|
3
|
-
private
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
private repository;
|
|
4
|
+
getNextId(): Promise<void>;
|
|
5
|
+
has(): Promise<void>;
|
|
6
|
+
saveEmpty(): Promise<void>;
|
|
7
|
+
save(): Promise<void>;
|
|
8
|
+
saveDuplicate(): Promise<void>;
|
|
9
|
+
updateEmpty(): Promise<void>;
|
|
10
|
+
updateNotFound(): Promise<void>;
|
|
11
|
+
delete(): Promise<void>;
|
|
12
|
+
deleteList(): Promise<void>;
|
|
6
13
|
updateTest(): Promise<void>;
|
|
7
14
|
getOrFailNotFoundExceptionTest(): Promise<void>;
|
|
8
15
|
getNotFoundWithoutExceptionTest(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-repository.test.d.ts","sourceRoot":"","sources":["../../src/tests/base-repository.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAIN,KAAK,EAEL,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"base-repository.test.d.ts","sourceRoot":"","sources":["../../src/tests/base-repository.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAIN,KAAK,EAEL,MAAM,cAAc,CAAC;AAWtB,qBACa,uBAAwB,SAAQ,KAAK;IACjD,OAAO,CAAC,UAAU,CAAuB;IAG5B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAO1B,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAYpB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAK1B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBrB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAS9B,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAO/B,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBvB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAc3B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB3B,8BAA8B,IAAI,OAAO,CAAC,IAAI,CAAC;IAO/C,+BAA+B,IAAI,OAAO,CAAC,IAAI,CAAC;IAMvC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAGjD"}
|
|
@@ -1,12 +1,27 @@
|
|
|
1
1
|
import { __decorate, __metadata } from "tslib";
|
|
2
2
|
import { Describe, expect, ExpectException, Suite, Test, } from '@hg-ts/tests';
|
|
3
|
-
import { v4 as uuid } from 'uuid';
|
|
3
|
+
import { v4 as uuid, validate, } from 'uuid';
|
|
4
4
|
import { TestAggregate } from './test.aggregate.js';
|
|
5
|
+
import { TestAlreadyExistsException } from './test.already-exists.exception.js';
|
|
5
6
|
import { TestMemoryRepository } from './test.memory.repository.js';
|
|
6
7
|
import { TestNotFoundException } from './test.not-found.exception.js';
|
|
7
8
|
let BaseRepositoryTestSuite = class BaseRepositoryTestSuite extends Suite {
|
|
8
|
-
repository
|
|
9
|
-
async
|
|
9
|
+
repository;
|
|
10
|
+
async getNextId() {
|
|
11
|
+
const id = await this.repository.getNextId();
|
|
12
|
+
expect(validate(id)).toBeTruthy();
|
|
13
|
+
}
|
|
14
|
+
async has() {
|
|
15
|
+
const id = uuid();
|
|
16
|
+
const aggregate = new TestAggregate(id);
|
|
17
|
+
await this.repository.add(aggregate);
|
|
18
|
+
const exists = await this.repository.has(id);
|
|
19
|
+
expect(exists).toBeTruthy();
|
|
20
|
+
}
|
|
21
|
+
async saveEmpty() {
|
|
22
|
+
await this.repository.add([]);
|
|
23
|
+
}
|
|
24
|
+
async save() {
|
|
10
25
|
const id = uuid();
|
|
11
26
|
const aggregate = new TestAggregate(id);
|
|
12
27
|
await this.repository.add(aggregate);
|
|
@@ -14,15 +29,41 @@ let BaseRepositoryTestSuite = class BaseRepositoryTestSuite extends Suite {
|
|
|
14
29
|
expect(savedAggregate).toBeInstanceOf(TestAggregate);
|
|
15
30
|
expect(savedAggregate).not.toBe(aggregate);
|
|
16
31
|
expect({ ...savedAggregate }).toMatchObject({ ...aggregate });
|
|
32
|
+
const found = await this.repository.find();
|
|
33
|
+
expect(found).toHaveLength(1);
|
|
34
|
+
expect(found[0]).toMatchObject(savedAggregate);
|
|
35
|
+
}
|
|
36
|
+
async saveDuplicate() {
|
|
37
|
+
const id = uuid();
|
|
38
|
+
const aggregate = new TestAggregate(id);
|
|
39
|
+
await this.repository.add(aggregate);
|
|
40
|
+
await this.repository.add(aggregate);
|
|
41
|
+
}
|
|
42
|
+
async updateEmpty() {
|
|
43
|
+
await this.repository.update([]);
|
|
44
|
+
}
|
|
45
|
+
async updateNotFound() {
|
|
46
|
+
const id = uuid();
|
|
47
|
+
const aggregate = new TestAggregate(id);
|
|
48
|
+
await this.repository.update(aggregate);
|
|
17
49
|
}
|
|
18
|
-
async
|
|
50
|
+
async delete() {
|
|
19
51
|
const id = uuid();
|
|
20
52
|
const aggregate = new TestAggregate(id);
|
|
21
53
|
await this.repository.add(aggregate);
|
|
22
54
|
const savedAggregate = await this.repository.getOrFail(id);
|
|
23
55
|
expect(savedAggregate).toBeInstanceOf(TestAggregate);
|
|
24
56
|
await this.repository.delete(aggregate);
|
|
25
|
-
await this.repository.
|
|
57
|
+
const found = await this.repository.get(id);
|
|
58
|
+
expect(found).toBeNull();
|
|
59
|
+
}
|
|
60
|
+
async deleteList() {
|
|
61
|
+
await this.repository.add(new TestAggregate(uuid()));
|
|
62
|
+
await this.repository.add(new TestAggregate(uuid()));
|
|
63
|
+
const found = await this.repository.find();
|
|
64
|
+
await this.repository.delete(found);
|
|
65
|
+
const foundAfterDelete = await this.repository.find();
|
|
66
|
+
expect(foundAfterDelete).toHaveLength(0);
|
|
26
67
|
}
|
|
27
68
|
async updateTest() {
|
|
28
69
|
const id = uuid();
|
|
@@ -49,7 +90,7 @@ let BaseRepositoryTestSuite = class BaseRepositoryTestSuite extends Suite {
|
|
|
49
90
|
await this.repository.get(id);
|
|
50
91
|
}
|
|
51
92
|
async beforeEach() {
|
|
52
|
-
|
|
93
|
+
this.repository = new TestMemoryRepository();
|
|
53
94
|
}
|
|
54
95
|
};
|
|
55
96
|
__decorate([
|
|
@@ -57,14 +98,57 @@ __decorate([
|
|
|
57
98
|
__metadata("design:type", Function),
|
|
58
99
|
__metadata("design:paramtypes", []),
|
|
59
100
|
__metadata("design:returntype", Promise)
|
|
60
|
-
], BaseRepositoryTestSuite.prototype, "
|
|
101
|
+
], BaseRepositoryTestSuite.prototype, "getNextId", null);
|
|
102
|
+
__decorate([
|
|
103
|
+
Test(),
|
|
104
|
+
__metadata("design:type", Function),
|
|
105
|
+
__metadata("design:paramtypes", []),
|
|
106
|
+
__metadata("design:returntype", Promise)
|
|
107
|
+
], BaseRepositoryTestSuite.prototype, "has", null);
|
|
108
|
+
__decorate([
|
|
109
|
+
Test(),
|
|
110
|
+
__metadata("design:type", Function),
|
|
111
|
+
__metadata("design:paramtypes", []),
|
|
112
|
+
__metadata("design:returntype", Promise)
|
|
113
|
+
], BaseRepositoryTestSuite.prototype, "saveEmpty", null);
|
|
114
|
+
__decorate([
|
|
115
|
+
Test(),
|
|
116
|
+
__metadata("design:type", Function),
|
|
117
|
+
__metadata("design:paramtypes", []),
|
|
118
|
+
__metadata("design:returntype", Promise)
|
|
119
|
+
], BaseRepositoryTestSuite.prototype, "save", null);
|
|
120
|
+
__decorate([
|
|
121
|
+
Test(),
|
|
122
|
+
ExpectException(TestAlreadyExistsException),
|
|
123
|
+
__metadata("design:type", Function),
|
|
124
|
+
__metadata("design:paramtypes", []),
|
|
125
|
+
__metadata("design:returntype", Promise)
|
|
126
|
+
], BaseRepositoryTestSuite.prototype, "saveDuplicate", null);
|
|
127
|
+
__decorate([
|
|
128
|
+
Test(),
|
|
129
|
+
__metadata("design:type", Function),
|
|
130
|
+
__metadata("design:paramtypes", []),
|
|
131
|
+
__metadata("design:returntype", Promise)
|
|
132
|
+
], BaseRepositoryTestSuite.prototype, "updateEmpty", null);
|
|
61
133
|
__decorate([
|
|
62
134
|
Test(),
|
|
63
135
|
ExpectException(TestNotFoundException),
|
|
64
136
|
__metadata("design:type", Function),
|
|
65
137
|
__metadata("design:paramtypes", []),
|
|
66
138
|
__metadata("design:returntype", Promise)
|
|
67
|
-
], BaseRepositoryTestSuite.prototype, "
|
|
139
|
+
], BaseRepositoryTestSuite.prototype, "updateNotFound", null);
|
|
140
|
+
__decorate([
|
|
141
|
+
Test(),
|
|
142
|
+
__metadata("design:type", Function),
|
|
143
|
+
__metadata("design:paramtypes", []),
|
|
144
|
+
__metadata("design:returntype", Promise)
|
|
145
|
+
], BaseRepositoryTestSuite.prototype, "delete", null);
|
|
146
|
+
__decorate([
|
|
147
|
+
Test(),
|
|
148
|
+
__metadata("design:type", Function),
|
|
149
|
+
__metadata("design:paramtypes", []),
|
|
150
|
+
__metadata("design:returntype", Promise)
|
|
151
|
+
], BaseRepositoryTestSuite.prototype, "deleteList", null);
|
|
68
152
|
__decorate([
|
|
69
153
|
Test(),
|
|
70
154
|
__metadata("design:type", Function),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-repository.test.js","sourceRoot":"","sources":["../../src/tests/base-repository.test.ts"],"names":[],"mappings":";AAAA,OAAO,EACN,QAAQ,EACR,MAAM,EACN,eAAe,EACf,KAAK,EACL,IAAI,GACJ,MAAM,cAAc,CAAC;AACtB,OAAO,
|
|
1
|
+
{"version":3,"file":"base-repository.test.js","sourceRoot":"","sources":["../../src/tests/base-repository.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { DomainEvent } from '@hg-ts/domain';
|
|
2
|
+
import { BaseEventRepository, EventFindOptions, NotEmptyList } from '../repositories/index.js';
|
|
3
|
+
export declare class TestEventMemoryRepository extends BaseEventRepository {
|
|
4
|
+
private readonly events;
|
|
5
|
+
protected findEntities(options?: Partial<EventFindOptions>): Promise<DomainEvent[]>;
|
|
6
|
+
protected rawAdd(events: NotEmptyList<DomainEvent>): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=test-event.memory.repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-event.memory.repository.d.ts","sourceRoot":"","sources":["../../src/tests/test-event.memory.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EACN,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,MAAM,0BAA0B,CAAC;AAElC,qBAAa,yBAA0B,SAAQ,mBAAmB;IACjE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkC;cAGzC,YAAY,CAAC,OAAO,GAAE,OAAO,CAAC,gBAAgB,CAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;cAkC7E,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAKxE"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { BaseEventRepository, } from '../repositories/index.js';
|
|
2
|
+
export class TestEventMemoryRepository extends BaseEventRepository {
|
|
3
|
+
events = new Map();
|
|
4
|
+
async findEntities(options = {}) {
|
|
5
|
+
const { id, entityId, entityName, limit } = options;
|
|
6
|
+
const events = [...this.events.values()]
|
|
7
|
+
.filter(event => {
|
|
8
|
+
if (id) {
|
|
9
|
+
if (Array.isArray(id)) {
|
|
10
|
+
return id.includes(event.id);
|
|
11
|
+
}
|
|
12
|
+
return event.id === id;
|
|
13
|
+
}
|
|
14
|
+
if (entityId) {
|
|
15
|
+
if (Array.isArray(entityId)) {
|
|
16
|
+
return entityId.includes(event.entityId);
|
|
17
|
+
}
|
|
18
|
+
return event.entityId === entityId;
|
|
19
|
+
}
|
|
20
|
+
if (entityName) {
|
|
21
|
+
return event.entityName === entityName;
|
|
22
|
+
}
|
|
23
|
+
return true;
|
|
24
|
+
});
|
|
25
|
+
if (limit && limit > 0) {
|
|
26
|
+
return events.slice(0, limit);
|
|
27
|
+
}
|
|
28
|
+
return events;
|
|
29
|
+
}
|
|
30
|
+
async rawAdd(events) {
|
|
31
|
+
events.forEach(event => {
|
|
32
|
+
this.events.set(event.id, event);
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=test-event.memory.repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-event.memory.repository.js","sourceRoot":"","sources":["../../src/tests/test-event.memory.repository.ts"],"names":[],"mappings":"AAEA,OAAO,EACN,mBAAmB,GAGnB,MAAM,0BAA0B,CAAC;AAElC,MAAM,OAAO,yBAA0B,SAAQ,mBAAmB;IAChD,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAC;IAG/C,KAAK,CAAC,YAAY,CAAC,UAAqC,EAAE;QACnE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;QACpD,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;aACtC,MAAM,CAAC,KAAK,CAAC,EAAE;YACf,IAAI,EAAE,EAAE,CAAC;gBACR,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;oBACvB,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC9B,CAAC;gBAED,OAAO,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;YACxB,CAAC;YAED,IAAI,QAAQ,EAAE,CAAC;gBACd,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC7B,OAAO,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAC1C,CAAC;gBAED,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC;YACpC,CAAC;YAED,IAAI,UAAU,EAAE,CAAC;gBAChB,OAAO,KAAK,CAAC,UAAU,KAAK,UAAU,CAAC;YACxC,CAAC;YAED,OAAO,IAAI,CAAC;QACb,CAAC,CAAC,CAAC;QAEJ,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC/B,CAAC;QAED,OAAO,MAAM,CAAC;IACf,CAAC;IAES,KAAK,CAAC,MAAM,CAAC,MAAiC;QACvD,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACtB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACJ,CAAC;CACD"}
|
|
@@ -2,8 +2,6 @@ import { AggregateAlreadyExistsException, AggregateNotFoundException } from '../
|
|
|
2
2
|
import { AggregateDto, BaseMemoryRepository } from '../repositories/index.js';
|
|
3
3
|
import { TestAggregate } from './test.aggregate.js';
|
|
4
4
|
export declare class TestMemoryRepository extends BaseMemoryRepository<TestAggregate> {
|
|
5
|
-
clear(): Promise<void>;
|
|
6
|
-
getNextId(): Promise<TestAggregate['id']>;
|
|
7
5
|
protected getNotFoundException(id: TestAggregate['id']): AggregateNotFoundException;
|
|
8
6
|
protected getAlreadyExistsException(id: TestAggregate['id']): AggregateAlreadyExistsException;
|
|
9
7
|
protected createAggregate(dto: AggregateDto<TestAggregate>): TestAggregate;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.memory.repository.d.ts","sourceRoot":"","sources":["../../src/tests/test.memory.repository.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"test.memory.repository.d.ts","sourceRoot":"","sources":["../../src/tests/test.memory.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,+BAA+B,EAC/B,0BAA0B,EAC1B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACN,YAAY,EACZ,oBAAoB,EACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,qBAAa,oBAAqB,SAAQ,oBAAoB,CAAC,aAAa,CAAC;IAC5E,SAAS,CAAC,oBAAoB,CAAC,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,0BAA0B;IAInF,SAAS,CAAC,yBAAyB,CAAC,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,+BAA+B;IAI7F,SAAS,CAAC,eAAe,CAAC,GAAG,EAAE,YAAY,CAAC,aAAa,CAAC,GAAG,aAAa;CAG1E"}
|
|
@@ -1,15 +1,8 @@
|
|
|
1
|
-
import { v4 as uuid } from 'uuid';
|
|
2
1
|
import { BaseMemoryRepository, } from '../repositories/index.js';
|
|
3
2
|
import { TestAggregate } from './test.aggregate.js';
|
|
4
3
|
import { TestAlreadyExistsException } from './test.already-exists.exception.js';
|
|
5
4
|
import { TestNotFoundException } from './test.not-found.exception.js';
|
|
6
5
|
export class TestMemoryRepository extends BaseMemoryRepository {
|
|
7
|
-
async clear() {
|
|
8
|
-
this.entitiesMap.clear();
|
|
9
|
-
}
|
|
10
|
-
async getNextId() {
|
|
11
|
-
return uuid();
|
|
12
|
-
}
|
|
13
6
|
getNotFoundException(id) {
|
|
14
7
|
return new TestNotFoundException(id);
|
|
15
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.memory.repository.js","sourceRoot":"","sources":["../../src/tests/test.memory.repository.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"test.memory.repository.js","sourceRoot":"","sources":["../../src/tests/test.memory.repository.ts"],"names":[],"mappings":"AAKA,OAAO,EAEN,oBAAoB,GACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,MAAM,OAAO,oBAAqB,SAAQ,oBAAmC;IAClE,oBAAoB,CAAC,EAAuB;QACrD,OAAO,IAAI,qBAAqB,CAAC,EAAE,CAAC,CAAC;IACtC,CAAC;IAES,yBAAyB,CAAC,EAAuB;QAC1D,OAAO,IAAI,0BAA0B,CAAC,EAAE,CAAC,CAAC;IAC3C,CAAC;IAES,eAAe,CAAC,GAAgC;QACzD,OAAO,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IACjD,CAAC;CACD"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hg-ts/repository",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.13",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -14,17 +14,17 @@
|
|
|
14
14
|
"build:dev": "tsc-watch",
|
|
15
15
|
"lint:ts": "lint-ts",
|
|
16
16
|
"lint:ts:fix": "lint-ts --fix",
|
|
17
|
-
"test": "
|
|
18
|
-
"test:dev": "
|
|
17
|
+
"test": "vitest run",
|
|
18
|
+
"test:dev": "vitest watch"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
|
-
"@hg-ts-config/typescript": "0.5.
|
|
22
|
-
"@hg-ts/domain": "0.5.
|
|
23
|
-
"@hg-ts/events": "0.5.
|
|
24
|
-
"@hg-ts/exception": "0.5.
|
|
25
|
-
"@hg-ts/linter": "0.5.
|
|
26
|
-
"@hg-ts/tests": "0.5.
|
|
27
|
-
"@hg-ts/types": "0.5.
|
|
21
|
+
"@hg-ts-config/typescript": "0.5.13",
|
|
22
|
+
"@hg-ts/domain": "0.5.13",
|
|
23
|
+
"@hg-ts/events": "0.5.13",
|
|
24
|
+
"@hg-ts/exception": "0.5.13",
|
|
25
|
+
"@hg-ts/linter": "0.5.13",
|
|
26
|
+
"@hg-ts/tests": "0.5.13",
|
|
27
|
+
"@hg-ts/types": "0.5.13",
|
|
28
28
|
"@types/node": "22.19.1",
|
|
29
29
|
"@types/uuid": "10.0.0",
|
|
30
30
|
"@vitest/coverage-v8": "4.0.14",
|
|
@@ -38,9 +38,9 @@
|
|
|
38
38
|
"vitest": "4.0.14"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
|
-
"@hg-ts/domain": "0.5.
|
|
42
|
-
"@hg-ts/events": "0.5.
|
|
43
|
-
"@hg-ts/exception": "0.5.
|
|
41
|
+
"@hg-ts/domain": "0.5.13",
|
|
42
|
+
"@hg-ts/events": "0.5.13",
|
|
43
|
+
"@hg-ts/exception": "0.5.13",
|
|
44
44
|
"reflect-metadata": "*",
|
|
45
45
|
"tslib": "*",
|
|
46
46
|
"vitest": "*"
|
package/vitest.config.mjs
DELETED