@woltz/rich-domain 1.6.0 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/base-entity.d.ts.map +1 -1
- package/dist/cjs/base-entity.js +3 -0
- package/dist/cjs/base-entity.js.map +1 -1
- package/dist/cjs/change-tracker.d.ts +1 -3
- package/dist/cjs/change-tracker.d.ts.map +1 -1
- package/dist/cjs/change-tracker.js +24 -24
- package/dist/cjs/change-tracker.js.map +1 -1
- package/dist/cjs/entity-schema-registry.d.ts.map +1 -1
- package/dist/cjs/entity-schema-registry.js +12 -10
- package/dist/cjs/entity-schema-registry.js.map +1 -1
- package/dist/cjs/exceptions.d.ts.map +1 -1
- package/dist/cjs/exceptions.js +0 -25
- package/dist/cjs/exceptions.js.map +1 -1
- package/dist/cjs/id.d.ts +17 -10
- package/dist/cjs/id.d.ts.map +1 -1
- package/dist/cjs/id.js +15 -3
- package/dist/cjs/id.js.map +1 -1
- package/dist/cjs/paginated-result.d.ts +4 -12
- package/dist/cjs/paginated-result.d.ts.map +1 -1
- package/dist/cjs/paginated-result.js +4 -1
- package/dist/cjs/paginated-result.js.map +1 -1
- package/dist/cjs/types/domain.d.ts +3 -4
- package/dist/cjs/types/domain.d.ts.map +1 -1
- package/dist/cjs/types/utils.d.ts +8 -7
- package/dist/cjs/types/utils.d.ts.map +1 -1
- package/dist/cjs/value-object.d.ts +7 -54
- package/dist/cjs/value-object.d.ts.map +1 -1
- package/dist/cjs/value-object.js +12 -75
- package/dist/cjs/value-object.js.map +1 -1
- package/dist/esm/base-entity.d.ts.map +1 -1
- package/dist/esm/base-entity.js +3 -0
- package/dist/esm/base-entity.js.map +1 -1
- package/dist/esm/change-tracker.d.ts +1 -3
- package/dist/esm/change-tracker.d.ts.map +1 -1
- package/dist/esm/change-tracker.js +24 -24
- package/dist/esm/change-tracker.js.map +1 -1
- package/dist/esm/entity-schema-registry.d.ts.map +1 -1
- package/dist/esm/entity-schema-registry.js +12 -10
- package/dist/esm/entity-schema-registry.js.map +1 -1
- package/dist/esm/exceptions.d.ts.map +1 -1
- package/dist/esm/exceptions.js +0 -25
- package/dist/esm/exceptions.js.map +1 -1
- package/dist/esm/id.d.ts +17 -10
- package/dist/esm/id.d.ts.map +1 -1
- package/dist/esm/id.js +15 -3
- package/dist/esm/id.js.map +1 -1
- package/dist/esm/paginated-result.d.ts +4 -12
- package/dist/esm/paginated-result.d.ts.map +1 -1
- package/dist/esm/paginated-result.js +4 -1
- package/dist/esm/paginated-result.js.map +1 -1
- package/dist/esm/types/domain.d.ts +3 -4
- package/dist/esm/types/domain.d.ts.map +1 -1
- package/dist/esm/types/utils.d.ts +8 -7
- package/dist/esm/types/utils.d.ts.map +1 -1
- package/dist/esm/value-object.d.ts +7 -54
- package/dist/esm/value-object.d.ts.map +1 -1
- package/dist/esm/value-object.js +12 -75
- package/dist/esm/value-object.js.map +1 -1
- package/dist/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/tsconfig.types.tsbuildinfo +1 -1
- package/dist/types/base-entity.d.ts.map +1 -1
- package/dist/types/change-tracker.d.ts +1 -3
- package/dist/types/change-tracker.d.ts.map +1 -1
- package/dist/types/entity-schema-registry.d.ts.map +1 -1
- package/dist/types/exceptions.d.ts.map +1 -1
- package/dist/types/id.d.ts +17 -10
- package/dist/types/id.d.ts.map +1 -1
- package/dist/types/paginated-result.d.ts +4 -12
- package/dist/types/paginated-result.d.ts.map +1 -1
- package/dist/types/types/domain.d.ts +3 -4
- package/dist/types/types/domain.d.ts.map +1 -1
- package/dist/types/types/utils.d.ts +8 -7
- package/dist/types/types/utils.d.ts.map +1 -1
- package/dist/types/value-object.d.ts +7 -54
- package/dist/types/value-object.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/cjs/domain-event-bus.d.ts +0 -56
- package/dist/cjs/domain-event-bus.d.ts.map +0 -1
- package/dist/cjs/domain-event-bus.js +0 -108
- package/dist/cjs/domain-event-bus.js.map +0 -1
- package/dist/esm/domain-event-bus.d.ts +0 -56
- package/dist/esm/domain-event-bus.d.ts.map +0 -1
- package/dist/esm/domain-event-bus.js +0 -104
- package/dist/esm/domain-event-bus.js.map +0 -1
- package/dist/types/domain-event-bus.d.ts +0 -56
- package/dist/types/domain-event-bus.d.ts.map +0 -1
package/dist/esm/id.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"id.js","sourceRoot":"","sources":["../../src/id.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"id.js","sourceRoot":"","sources":["../../src/id.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,aAAa,CAAC;AAE/B,MAAM,OAAO,EAAE;IACI,MAAM,CAAS;IACf,MAAM,CAAU;IAiBjC,YAAY,KAAc,EAAE,KAAe;QACzC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,+CAA+C;YAC/C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,MAAM,GAAG,KAAK,IAAI,KAAK,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,0DAA0D;YAC1D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAClC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACI,KAAK;QACV,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAkB;QACvB,IAAI,KAAK,YAAY,EAAE,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC;QACtC,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC;IAC/B,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,gCAAgC;QAChC,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,MAAM;QACX,OAAO,IAAI,EAAE,EAAE,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,KAAa;QACvB,OAAO,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,OAAO,CAAC,CAAc,EAAE,CAAc;QAC3C,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;YACpB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;QACd,CAAC;QACD,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;YACpB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;QACd,CAAC;QAED,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;IACrB,CAAC;CACF"}
|
|
@@ -1,18 +1,11 @@
|
|
|
1
1
|
import type { Criteria } from "./criteria.js";
|
|
2
|
-
import type { Pagination, PaginationMeta } from "./types/index.js";
|
|
3
|
-
/**
|
|
4
|
-
* Infers the JSON result type from T
|
|
5
|
-
* - If T has toJSON(), returns its return type
|
|
6
|
-
* - Otherwise returns T as-is
|
|
7
|
-
*/
|
|
8
|
-
type InferJsonResult<T> = T extends {
|
|
9
|
-
toJSON(): infer R;
|
|
10
|
-
} ? R : T;
|
|
2
|
+
import type { Pagination, PaginationMeta, DeepJsonResult } from "./types/index.js";
|
|
11
3
|
/**
|
|
12
4
|
* Type for the serialized result of PaginatedResult.toJSON()
|
|
5
|
+
* Uses DeepJsonResult to ensure all nested entities are converted to plain objects
|
|
13
6
|
*/
|
|
14
7
|
export type PaginatedJsonResult<T> = {
|
|
15
|
-
data:
|
|
8
|
+
data: DeepJsonResult<T>[];
|
|
16
9
|
meta: PaginationMeta;
|
|
17
10
|
};
|
|
18
11
|
export declare class PaginatedResult<T> {
|
|
@@ -34,7 +27,7 @@ export declare class PaginatedResult<T> {
|
|
|
34
27
|
/**
|
|
35
28
|
* Converts the result to JSON, deeply serializing all entities/aggregates/value objects
|
|
36
29
|
* - Entities/Aggregates → calls toJSON() recursively
|
|
37
|
-
* - Value Objects →
|
|
30
|
+
* - Value Objects → converts to value
|
|
38
31
|
* - Id → converts to string
|
|
39
32
|
* - Arrays → maps recursively
|
|
40
33
|
* - Plain objects → serializes properties recursively
|
|
@@ -58,5 +51,4 @@ export declare class PaginatedResult<T> {
|
|
|
58
51
|
*/
|
|
59
52
|
get hasMore(): boolean;
|
|
60
53
|
}
|
|
61
|
-
export {};
|
|
62
54
|
//# sourceMappingURL=paginated-result.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paginated-result.d.ts","sourceRoot":"","sources":["../../src/paginated-result.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAU,
|
|
1
|
+
{"version":3,"file":"paginated-result.d.ts","sourceRoot":"","sources":["../../src/paginated-result.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAU,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAG3F;;;GAGG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI;IACnC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1B,IAAI,EAAE,cAAc,CAAC;CACtB,CAAC;AAEF,qBAAa,eAAe,CAAC,CAAC;aAEV,IAAI,EAAE,CAAC,EAAE;aACT,IAAI,EAAE,cAAc;gBADpB,IAAI,EAAE,CAAC,EAAE,EACT,IAAI,EAAE,cAAc;IAGtC;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,CAAC,EACb,IAAI,EAAE,CAAC,EAAE,EACT,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,MAAM,GACZ,eAAe,CAAC,CAAC,CAAC;IAKrB;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc;IAaxE;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;IA0C1E;;;;;;;;OAQG;IACH,MAAM,IAAI,mBAAmB,CAAC,CAAC,CAAC;IAShC;;OAEG;IACH,OAAO,CAAC,aAAa;IA2BrB;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;IAI9C;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;CACF"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Id } from "./id.js";
|
|
2
|
+
import { ValueObject } from "./value-object.js";
|
|
2
3
|
export class PaginatedResult {
|
|
3
4
|
data;
|
|
4
5
|
meta;
|
|
@@ -63,7 +64,7 @@ export class PaginatedResult {
|
|
|
63
64
|
/**
|
|
64
65
|
* Converts the result to JSON, deeply serializing all entities/aggregates/value objects
|
|
65
66
|
* - Entities/Aggregates → calls toJSON() recursively
|
|
66
|
-
* - Value Objects →
|
|
67
|
+
* - Value Objects → converts to value
|
|
67
68
|
* - Id → converts to string
|
|
68
69
|
* - Arrays → maps recursively
|
|
69
70
|
* - Plain objects → serializes properties recursively
|
|
@@ -83,6 +84,8 @@ export class PaginatedResult {
|
|
|
83
84
|
return obj;
|
|
84
85
|
if (obj instanceof Id)
|
|
85
86
|
return obj.value;
|
|
87
|
+
if (obj instanceof ValueObject)
|
|
88
|
+
return obj.value;
|
|
86
89
|
if (Array.isArray(obj)) {
|
|
87
90
|
return obj.map((item) => this.deepSerialize(item));
|
|
88
91
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paginated-result.js","sourceRoot":"","sources":["../../src/paginated-result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"paginated-result.js","sourceRoot":"","sources":["../../src/paginated-result.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,10 +9,9 @@ interface DomainValidation<T> {
|
|
|
9
9
|
}
|
|
10
10
|
export type EntityValidation<T> = DomainValidation<T>;
|
|
11
11
|
export type VOValidation<T> = DomainValidation<T>;
|
|
12
|
-
export interface VOHooks<
|
|
13
|
-
onBeforeCreate?: (
|
|
14
|
-
|
|
15
|
-
rules?: (entity: E) => void;
|
|
12
|
+
export interface VOHooks<V, VO> {
|
|
13
|
+
onBeforeCreate?: (value: V) => void;
|
|
14
|
+
rules?: (valueObject: VO) => void;
|
|
16
15
|
}
|
|
17
16
|
export interface EntityHooks<T extends BaseProps, E> {
|
|
18
17
|
onBeforeCreate?: (props: T) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../../src/types/domain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,EAAE,CAAC;CACR;AAED,UAAU,gBAAgB,CAAC,CAAC;IAC1B,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC;AACtD,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAElD,MAAM,WAAW,OAAO,CAAC,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../../src/types/domain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,EAAE,CAAC;CACR;AAED,UAAU,gBAAgB,CAAC,CAAC;IAC1B,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC;AACtD,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAElD,MAAM,WAAW,OAAO,CAAC,CAAC,EAAE,EAAE;IAC5B,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IACpC,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC;IACjD,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IACpC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,OAAO,CAAC;IACrD,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;IAC/B,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { Id } from "../id.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
};
|
|
2
|
+
import { ValueObject } from "../value-object.js";
|
|
3
|
+
type JsonPrimitive = string | number | boolean | null;
|
|
4
|
+
export type DeepJsonResult<T> = T extends Id ? string : T extends ValueObject<infer U> ? U : T extends Date ? string : T extends Array<infer U> ? DeepJsonResult<U>[] : T extends {
|
|
5
|
+
toJSON(): infer R;
|
|
6
|
+
} ? DeepJsonResult<R> : T extends object ? {
|
|
7
|
+
[K in keyof T]: DeepJsonResult<T[K]>;
|
|
8
|
+
} : T extends JsonPrimitive ? T : never;
|
|
9
9
|
export type Primitive = string | number | boolean | Date | null | undefined;
|
|
10
10
|
export type UnwrapArray<T> = T extends Array<infer U> ? U : never;
|
|
11
11
|
export type IsArray<T> = T extends Array<any> ? true : false;
|
|
12
12
|
export type NonUndefined<T> = T extends undefined ? never : T;
|
|
13
|
+
export {};
|
|
13
14
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/types/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/types/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,KAAK,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAEtD,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,GACxC,MAAM,GACN,CAAC,SAAS,WAAW,CAAC,MAAM,CAAC,CAAC,GAC9B,CAAC,GACD,CAAC,SAAS,IAAI,GACd,MAAM,GACN,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GACxB,cAAc,CAAC,CAAC,CAAC,EAAE,GACnB,CAAC,SAAS;IAAE,MAAM,IAAI,MAAM,CAAC,CAAA;CAAE,GAC/B,cAAc,CAAC,CAAC,CAAC,GACjB,CAAC,SAAS,MAAM,GAChB;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GACxC,CAAC,SAAS,aAAa,GACvB,CAAC,GACD,KAAK,CAAC;AAEV,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;AAC5E,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAClE,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AAC7D,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC"}
|
|
@@ -1,38 +1,16 @@
|
|
|
1
1
|
import { ValidationError } from "./validation-error.js";
|
|
2
2
|
import { IDomainEvent } from ".";
|
|
3
|
-
import { VOHooks, EntityValidation } from "./types/index.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
*/
|
|
7
|
-
export type IdentityKeyDefinition<T> = (keyof T)[] | keyof T;
|
|
8
|
-
export declare abstract class ValueObject<T> {
|
|
9
|
-
protected readonly props: T;
|
|
3
|
+
import { VOHooks, EntityValidation, Primitive } from "./types/index.js";
|
|
4
|
+
export declare abstract class ValueObject<T extends Primitive> {
|
|
5
|
+
readonly value: T;
|
|
10
6
|
private validationConfig;
|
|
11
7
|
private domainHooks?;
|
|
12
8
|
private domainSchema?;
|
|
13
9
|
private domainEvents;
|
|
14
10
|
protected static validation?: EntityValidation<any>;
|
|
15
11
|
protected static hooks?: VOHooks<any, any>;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
* Used by ChangeTracker to track changes in arrays of Value Objects.
|
|
19
|
-
*
|
|
20
|
-
* @example
|
|
21
|
-
* ```typescript
|
|
22
|
-
* // Simple key
|
|
23
|
-
* class TagReference extends ValueObject<{ tagId: string }> {
|
|
24
|
-
* static readonly identityKey = 'tagId';
|
|
25
|
-
* }
|
|
26
|
-
*
|
|
27
|
-
* // Composite key
|
|
28
|
-
* class Like extends ValueObject<{ postId: string; userId: string }> {
|
|
29
|
-
* static readonly identityKey = ['postId', 'userId'];
|
|
30
|
-
* }
|
|
31
|
-
* ```
|
|
32
|
-
*/
|
|
33
|
-
protected static identityKey?: IdentityKeyDefinition<any>;
|
|
34
|
-
constructor(props: T);
|
|
35
|
-
private validateProps;
|
|
12
|
+
constructor(value: T);
|
|
13
|
+
private validateValue;
|
|
36
14
|
private extractPathKey;
|
|
37
15
|
/**
|
|
38
16
|
* Returns true if the value object has validation errors (when throwOnError is false).
|
|
@@ -46,30 +24,6 @@ export declare abstract class ValueObject<T> {
|
|
|
46
24
|
* Compare this ValueObject with another for equality based on their properties.
|
|
47
25
|
*/
|
|
48
26
|
equals(other: ValueObject<T>): boolean;
|
|
49
|
-
/**
|
|
50
|
-
* Returns the identity key for this Value Object.
|
|
51
|
-
* Used for identification in collections when identityKey is set.
|
|
52
|
-
*
|
|
53
|
-
* @returns String with the identity key or null if not defined
|
|
54
|
-
*
|
|
55
|
-
* @example
|
|
56
|
-
* ```typescript
|
|
57
|
-
* const like = new Like({ postId: 'p1', userId: 'u1' });
|
|
58
|
-
* like.getIdentityKey(); // 'p1:u1'
|
|
59
|
-
*
|
|
60
|
-
* const tag = new TagReference({ tagId: 'tag-123' });
|
|
61
|
-
* tag.getIdentityKey(); // 'tag-123'
|
|
62
|
-
* ```
|
|
63
|
-
*/
|
|
64
|
-
getIdentityKey(): string | null;
|
|
65
|
-
/**
|
|
66
|
-
* Returns true if this Value Object has an identity key defined.
|
|
67
|
-
*/
|
|
68
|
-
hasIdentityKey(): boolean;
|
|
69
|
-
/**
|
|
70
|
-
* Returns the identity key definition (if any).
|
|
71
|
-
*/
|
|
72
|
-
static getIdentityKeyDefinition<P>(): IdentityKeyDefinition<P> | undefined;
|
|
73
27
|
/**
|
|
74
28
|
* Adds a domain event to this value object.
|
|
75
29
|
*/
|
|
@@ -86,11 +40,10 @@ export declare abstract class ValueObject<T> {
|
|
|
86
40
|
* Returns true if the value object has uncommitted events.
|
|
87
41
|
*/
|
|
88
42
|
hasUncommittedEvents(): boolean;
|
|
89
|
-
toJSON(): T;
|
|
90
43
|
/**
|
|
91
|
-
* Creates a new ValueObject with updated
|
|
44
|
+
* Creates a new ValueObject with updated value.
|
|
92
45
|
* ValueObjects are immutable, so this returns a new instance.
|
|
93
46
|
*/
|
|
94
|
-
protected clone(
|
|
47
|
+
protected clone(value: T): this;
|
|
95
48
|
}
|
|
96
49
|
//# sourceMappingURL=value-object.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"value-object.d.ts","sourceRoot":"","sources":["../../src/value-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,CAAC;AACjC,OAAO,EACL,OAAO,EAGP,gBAAgB,
|
|
1
|
+
{"version":3,"file":"value-object.d.ts","sourceRoot":"","sources":["../../src/value-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,CAAC;AACjC,OAAO,EACL,OAAO,EAGP,gBAAgB,EAChB,SAAS,EACV,MAAM,kBAAkB,CAAC;AAW1B,8BAAsB,WAAW,CAAC,CAAC,SAAS,SAAS;IACnD,SAAgB,KAAK,EAAG,CAAC,CAAC;IAC1B,OAAO,CAAC,gBAAgB,CAA6B;IAErD,OAAO,CAAC,WAAW,CAAC,CAAkB;IACtC,OAAO,CAAC,YAAY,CAAC,CAAoB;IACzC,OAAO,CAAC,YAAY,CAAsB;IAE1C,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACpD,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAE/B,KAAK,EAAE,CAAC;IAmCpB,OAAO,CAAC,aAAa;IA2BrB,OAAO,CAAC,cAAc;IAgBtB;;OAEG;IACH,IAAI,mBAAmB,IAAI,OAAO,CAEjC;IAED;;OAEG;IACH,IAAI,gBAAgB,IAAI,eAAe,GAAG,SAAS,CAElD;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO;IAKtC;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAInD;;OAEG;IACH,oBAAoB,IAAI,YAAY,EAAE;IAItC;;OAEG;IACH,WAAW,IAAI,IAAI;IAInB;;OAEG;IACH,oBAAoB,IAAI,OAAO;IAI/B;;;OAGG;IACH,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI;CAIhC"}
|
package/dist/esm/value-object.js
CHANGED
|
@@ -5,7 +5,7 @@ function getStaticProperty(instance, propertyName) {
|
|
|
5
5
|
return instance.constructor[propertyName];
|
|
6
6
|
}
|
|
7
7
|
export class ValueObject {
|
|
8
|
-
|
|
8
|
+
value;
|
|
9
9
|
validationConfig;
|
|
10
10
|
// @ts-expect-error - This is a private property
|
|
11
11
|
domainHooks;
|
|
@@ -13,29 +13,11 @@ export class ValueObject {
|
|
|
13
13
|
domainEvents = [];
|
|
14
14
|
static validation;
|
|
15
15
|
static hooks;
|
|
16
|
-
|
|
17
|
-
* Identity key for identification in collections.
|
|
18
|
-
* Used by ChangeTracker to track changes in arrays of Value Objects.
|
|
19
|
-
*
|
|
20
|
-
* @example
|
|
21
|
-
* ```typescript
|
|
22
|
-
* // Simple key
|
|
23
|
-
* class TagReference extends ValueObject<{ tagId: string }> {
|
|
24
|
-
* static readonly identityKey = 'tagId';
|
|
25
|
-
* }
|
|
26
|
-
*
|
|
27
|
-
* // Composite key
|
|
28
|
-
* class Like extends ValueObject<{ postId: string; userId: string }> {
|
|
29
|
-
* static readonly identityKey = ['postId', 'userId'];
|
|
30
|
-
* }
|
|
31
|
-
* ```
|
|
32
|
-
*/
|
|
33
|
-
static identityKey;
|
|
34
|
-
constructor(props) {
|
|
16
|
+
constructor(value) {
|
|
35
17
|
const validation = getStaticProperty(this, "validation");
|
|
36
18
|
const hooks = getStaticProperty(this, "hooks");
|
|
37
19
|
if (hooks?.onBeforeCreate) {
|
|
38
|
-
hooks.onBeforeCreate(
|
|
20
|
+
hooks.onBeforeCreate(value);
|
|
39
21
|
}
|
|
40
22
|
this.domainHooks = hooks;
|
|
41
23
|
if (validation?.schema) {
|
|
@@ -45,23 +27,19 @@ export class ValueObject {
|
|
|
45
27
|
...DEFAULT_VALIDATION_CONFIG,
|
|
46
28
|
...validation?.config,
|
|
47
29
|
};
|
|
48
|
-
let finalProps = { ...props };
|
|
49
30
|
if (this.domainSchema && this.validationConfig.onCreate) {
|
|
50
|
-
this.
|
|
31
|
+
this.validateValue(value);
|
|
51
32
|
}
|
|
52
|
-
this.
|
|
33
|
+
this.value = value;
|
|
53
34
|
if (hooks?.rules) {
|
|
54
35
|
hooks.rules(this);
|
|
55
36
|
}
|
|
56
|
-
Object.freeze(this
|
|
57
|
-
if (hooks?.onCreate) {
|
|
58
|
-
hooks.onCreate(this);
|
|
59
|
-
}
|
|
37
|
+
Object.freeze(this);
|
|
60
38
|
}
|
|
61
|
-
|
|
39
|
+
validateValue(value) {
|
|
62
40
|
if (!this.domainSchema)
|
|
63
41
|
return;
|
|
64
|
-
const result = this.domainSchema["~standard"].validate(
|
|
42
|
+
const result = this.domainSchema["~standard"].validate(value);
|
|
65
43
|
if (result instanceof Promise) {
|
|
66
44
|
throw new DomainError("Async validation not supported in constructor. Use sync validation schema.");
|
|
67
45
|
}
|
|
@@ -109,45 +87,7 @@ export class ValueObject {
|
|
|
109
87
|
equals(other) {
|
|
110
88
|
if (!other || !(other instanceof ValueObject))
|
|
111
89
|
return false;
|
|
112
|
-
return
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Returns the identity key for this Value Object.
|
|
116
|
-
* Used for identification in collections when identityKey is set.
|
|
117
|
-
*
|
|
118
|
-
* @returns String with the identity key or null if not defined
|
|
119
|
-
*
|
|
120
|
-
* @example
|
|
121
|
-
* ```typescript
|
|
122
|
-
* const like = new Like({ postId: 'p1', userId: 'u1' });
|
|
123
|
-
* like.getIdentityKey(); // 'p1:u1'
|
|
124
|
-
*
|
|
125
|
-
* const tag = new TagReference({ tagId: 'tag-123' });
|
|
126
|
-
* tag.getIdentityKey(); // 'tag-123'
|
|
127
|
-
* ```
|
|
128
|
-
*/
|
|
129
|
-
getIdentityKey() {
|
|
130
|
-
const keyDef = getStaticProperty(this, "identityKey");
|
|
131
|
-
if (!keyDef) {
|
|
132
|
-
return null;
|
|
133
|
-
}
|
|
134
|
-
if (Array.isArray(keyDef)) {
|
|
135
|
-
return keyDef.map((k) => String(this.props[k])).join(":");
|
|
136
|
-
}
|
|
137
|
-
return String(this.props[keyDef]);
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Returns true if this Value Object has an identity key defined.
|
|
141
|
-
*/
|
|
142
|
-
hasIdentityKey() {
|
|
143
|
-
return (getStaticProperty(this, "identityKey") !==
|
|
144
|
-
undefined);
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Returns the identity key definition (if any).
|
|
148
|
-
*/
|
|
149
|
-
static getIdentityKeyDefinition() {
|
|
150
|
-
return this.identityKey;
|
|
90
|
+
return this.value === other.value;
|
|
151
91
|
}
|
|
152
92
|
/**
|
|
153
93
|
* Adds a domain event to this value object.
|
|
@@ -173,16 +113,13 @@ export class ValueObject {
|
|
|
173
113
|
hasUncommittedEvents() {
|
|
174
114
|
return this.domainEvents.length > 0;
|
|
175
115
|
}
|
|
176
|
-
toJSON() {
|
|
177
|
-
return { ...this.props };
|
|
178
|
-
}
|
|
179
116
|
/**
|
|
180
|
-
* Creates a new ValueObject with updated
|
|
117
|
+
* Creates a new ValueObject with updated value.
|
|
181
118
|
* ValueObjects are immutable, so this returns a new instance.
|
|
182
119
|
*/
|
|
183
|
-
clone(
|
|
120
|
+
clone(value) {
|
|
184
121
|
const Constructor = this.constructor;
|
|
185
|
-
return new Constructor(
|
|
122
|
+
return new Constructor(value);
|
|
186
123
|
}
|
|
187
124
|
}
|
|
188
125
|
//# sourceMappingURL=value-object.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"value-object.js","sourceRoot":"","sources":["../../src/value-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"value-object.js","sourceRoot":"","sources":["../../src/value-object.ts"],"names":[],"mappings":"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"}
|