@woltz/rich-domain 1.9.2 → 1.9.3

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.
Files changed (122) hide show
  1. package/dist/cjs/constants.d.ts +1 -1
  2. package/dist/cjs/constants.d.ts.map +1 -1
  3. package/dist/cjs/core/base-entity.d.ts +2 -1
  4. package/dist/cjs/core/base-entity.d.ts.map +1 -1
  5. package/dist/cjs/core/base-entity.js +9 -7
  6. package/dist/cjs/core/base-entity.js.map +1 -1
  7. package/dist/cjs/core/change-tracker.d.ts +1 -0
  8. package/dist/cjs/core/change-tracker.d.ts.map +1 -1
  9. package/dist/cjs/core/change-tracker.js +24 -15
  10. package/dist/cjs/core/change-tracker.js.map +1 -1
  11. package/dist/cjs/core/domain-event.d.ts +1 -1
  12. package/dist/cjs/core/domain-event.d.ts.map +1 -1
  13. package/dist/cjs/core/domain-event.js +2 -2
  14. package/dist/cjs/core/domain-event.js.map +1 -1
  15. package/dist/cjs/core/entities.d.ts +8 -0
  16. package/dist/cjs/core/entities.d.ts.map +1 -0
  17. package/dist/cjs/core/entities.js +12 -0
  18. package/dist/cjs/core/entities.js.map +1 -0
  19. package/dist/cjs/core/index.d.ts +9 -9
  20. package/dist/cjs/core/index.d.ts.map +1 -1
  21. package/dist/cjs/core/index.js +9 -9
  22. package/dist/cjs/core/index.js.map +1 -1
  23. package/dist/cjs/repository/base-repository.d.ts +1 -1
  24. package/dist/cjs/repository/base-repository.d.ts.map +1 -1
  25. package/dist/cjs/repository/entity-schema-registry.d.ts +1 -1
  26. package/dist/cjs/repository/entity-schema-registry.d.ts.map +1 -1
  27. package/dist/cjs/repository/entity-schema-registry.js +5 -5
  28. package/dist/cjs/repository/entity-schema-registry.js.map +1 -1
  29. package/dist/cjs/types/change-tracker.d.ts +1 -1
  30. package/dist/cjs/types/change-tracker.d.ts.map +1 -1
  31. package/dist/cjs/types/domain.d.ts +1 -1
  32. package/dist/cjs/types/domain.d.ts.map +1 -1
  33. package/dist/cjs/types/event-bus.d.ts +1 -1
  34. package/dist/cjs/types/event-bus.d.ts.map +1 -1
  35. package/dist/cjs/types/unit-of-work.d.ts +2 -2
  36. package/dist/cjs/types/unit-of-work.d.ts.map +1 -1
  37. package/dist/cjs/types/utils.d.ts +1 -1
  38. package/dist/cjs/types/utils.d.ts.map +1 -1
  39. package/dist/esm/constants.d.ts +1 -1
  40. package/dist/esm/constants.d.ts.map +1 -1
  41. package/dist/esm/core/base-entity.d.ts +2 -1
  42. package/dist/esm/core/base-entity.d.ts.map +1 -1
  43. package/dist/esm/core/base-entity.js +3 -1
  44. package/dist/esm/core/base-entity.js.map +1 -1
  45. package/dist/esm/core/change-tracker.d.ts +1 -0
  46. package/dist/esm/core/change-tracker.d.ts.map +1 -1
  47. package/dist/esm/core/change-tracker.js +24 -15
  48. package/dist/esm/core/change-tracker.js.map +1 -1
  49. package/dist/esm/core/domain-event.d.ts +1 -1
  50. package/dist/esm/core/domain-event.d.ts.map +1 -1
  51. package/dist/esm/core/domain-event.js +1 -1
  52. package/dist/esm/core/domain-event.js.map +1 -1
  53. package/dist/esm/core/entities.d.ts +8 -0
  54. package/dist/esm/core/entities.d.ts.map +1 -0
  55. package/dist/esm/core/entities.js +7 -0
  56. package/dist/esm/core/entities.js.map +1 -0
  57. package/dist/esm/core/index.d.ts +9 -9
  58. package/dist/esm/core/index.d.ts.map +1 -1
  59. package/dist/esm/core/index.js +9 -9
  60. package/dist/esm/core/index.js.map +1 -1
  61. package/dist/esm/repository/base-repository.d.ts +1 -1
  62. package/dist/esm/repository/base-repository.d.ts.map +1 -1
  63. package/dist/esm/repository/entity-schema-registry.d.ts +1 -1
  64. package/dist/esm/repository/entity-schema-registry.d.ts.map +1 -1
  65. package/dist/esm/repository/entity-schema-registry.js +1 -1
  66. package/dist/esm/repository/entity-schema-registry.js.map +1 -1
  67. package/dist/esm/types/change-tracker.d.ts +1 -1
  68. package/dist/esm/types/change-tracker.d.ts.map +1 -1
  69. package/dist/esm/types/domain.d.ts +1 -1
  70. package/dist/esm/types/domain.d.ts.map +1 -1
  71. package/dist/esm/types/event-bus.d.ts +1 -1
  72. package/dist/esm/types/event-bus.d.ts.map +1 -1
  73. package/dist/esm/types/unit-of-work.d.ts +2 -2
  74. package/dist/esm/types/unit-of-work.d.ts.map +1 -1
  75. package/dist/esm/types/utils.d.ts +1 -1
  76. package/dist/esm/types/utils.d.ts.map +1 -1
  77. package/dist/tsconfig.cjs.tsbuildinfo +1 -1
  78. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  79. package/dist/tsconfig.types.tsbuildinfo +1 -1
  80. package/dist/types/constants.d.ts +1 -1
  81. package/dist/types/constants.d.ts.map +1 -1
  82. package/dist/types/core/base-entity.d.ts +2 -1
  83. package/dist/types/core/base-entity.d.ts.map +1 -1
  84. package/dist/types/core/change-tracker.d.ts +1 -0
  85. package/dist/types/core/change-tracker.d.ts.map +1 -1
  86. package/dist/types/core/domain-event.d.ts +1 -1
  87. package/dist/types/core/domain-event.d.ts.map +1 -1
  88. package/dist/types/core/entities.d.ts +8 -0
  89. package/dist/types/core/entities.d.ts.map +1 -0
  90. package/dist/types/core/index.d.ts +9 -9
  91. package/dist/types/core/index.d.ts.map +1 -1
  92. package/dist/types/repository/base-repository.d.ts +1 -1
  93. package/dist/types/repository/base-repository.d.ts.map +1 -1
  94. package/dist/types/repository/entity-schema-registry.d.ts +1 -1
  95. package/dist/types/repository/entity-schema-registry.d.ts.map +1 -1
  96. package/dist/types/types/change-tracker.d.ts +1 -1
  97. package/dist/types/types/change-tracker.d.ts.map +1 -1
  98. package/dist/types/types/domain.d.ts +1 -1
  99. package/dist/types/types/domain.d.ts.map +1 -1
  100. package/dist/types/types/event-bus.d.ts +1 -1
  101. package/dist/types/types/event-bus.d.ts.map +1 -1
  102. package/dist/types/types/unit-of-work.d.ts +2 -2
  103. package/dist/types/types/unit-of-work.d.ts.map +1 -1
  104. package/dist/types/types/utils.d.ts +1 -1
  105. package/dist/types/types/utils.d.ts.map +1 -1
  106. package/package.json +68 -68
  107. package/src/constants.ts +82 -82
  108. package/src/core/aggregate-changes.ts +466 -466
  109. package/src/core/base-entity.ts +4 -1
  110. package/src/core/change-tracker.ts +30 -16
  111. package/src/core/domain-event.ts +41 -41
  112. package/src/core/{entity.ts → entities.ts} +13 -13
  113. package/src/core/index.ts +9 -9
  114. package/src/core/value-object.ts +179 -179
  115. package/src/repository/base-repository.ts +81 -81
  116. package/src/repository/entity-schema-registry.ts +1 -1
  117. package/src/types/change-tracker.ts +268 -268
  118. package/src/types/domain.ts +41 -41
  119. package/src/types/event-bus.ts +17 -17
  120. package/src/types/unit-of-work.ts +46 -46
  121. package/src/types/utils.ts +24 -24
  122. package/src/utils/helpers.ts +50 -50
@@ -1,46 +1,46 @@
1
- import { Aggregate } from "../core/index";
2
- import { Repository } from "../repository/base-repository.js";
3
-
4
- /**
5
- * Transaction context for Unit of Work
6
- */
7
- export interface TransactionContext {
8
- /**
9
- * Commit all changes
10
- */
11
- commit(): Promise<void>;
12
-
13
- /**
14
- * Rollback all changes
15
- */
16
- rollback(): Promise<void>;
17
-
18
- /**
19
- * Check if transaction is active
20
- */
21
- isActive(): boolean;
22
- }
23
-
24
- /**
25
- * Unit of Work interface
26
- * Manages transactions across multiple repositories
27
- */
28
- export interface IUnitOfWork {
29
- /**
30
- * Start a new transaction
31
- */
32
- begin(): Promise<TransactionContext>;
33
-
34
- /**
35
- * Execute work within a transaction
36
- * Auto-commits on success, rolls back on error
37
- */
38
- transaction<T>(work: (ctx: TransactionContext) => Promise<T>): Promise<T>;
39
-
40
- /**
41
- * Get repository within transaction context
42
- */
43
- getRepository<TDomain extends Aggregate<any>>(
44
- repository: new (...args: any[]) => Repository<TDomain>
45
- ): Repository<TDomain>;
46
- }
1
+ import type { Aggregate } from "../core/index.js";
2
+ import type { Repository } from "../repository/base-repository.js";
3
+
4
+ /**
5
+ * Transaction context for Unit of Work
6
+ */
7
+ export interface TransactionContext {
8
+ /**
9
+ * Commit all changes
10
+ */
11
+ commit(): Promise<void>;
12
+
13
+ /**
14
+ * Rollback all changes
15
+ */
16
+ rollback(): Promise<void>;
17
+
18
+ /**
19
+ * Check if transaction is active
20
+ */
21
+ isActive(): boolean;
22
+ }
23
+
24
+ /**
25
+ * Unit of Work interface
26
+ * Manages transactions across multiple repositories
27
+ */
28
+ export interface IUnitOfWork {
29
+ /**
30
+ * Start a new transaction
31
+ */
32
+ begin(): Promise<TransactionContext>;
33
+
34
+ /**
35
+ * Execute work within a transaction
36
+ * Auto-commits on success, rolls back on error
37
+ */
38
+ transaction<T>(work: (ctx: TransactionContext) => Promise<T>): Promise<T>;
39
+
40
+ /**
41
+ * Get repository within transaction context
42
+ */
43
+ getRepository<TDomain extends Aggregate<any>>(
44
+ repository: new (...args: any[]) => Repository<TDomain>
45
+ ): Repository<TDomain>;
46
+ }
@@ -1,24 +1,24 @@
1
- import { Id, ValueObject } from "../core/index";
2
-
3
- type JsonPrimitive = string | number | boolean | null;
4
-
5
- export type DeepJsonResult<T> = T extends Id
6
- ? string
7
- : T extends ValueObject<infer U>
8
- ? U
9
- : T extends Date
10
- ? string
11
- : T extends Array<infer U>
12
- ? DeepJsonResult<U>[]
13
- : T extends { toJSON(): infer R }
14
- ? DeepJsonResult<R>
15
- : T extends object
16
- ? { [K in keyof T]: DeepJsonResult<T[K]> }
17
- : T extends JsonPrimitive
18
- ? T
19
- : never;
20
-
21
- export type Primitive = string | number | boolean | Date | null | undefined;
22
- export type UnwrapArray<T> = T extends Array<infer U> ? U : never;
23
- export type IsArray<T> = T extends Array<any> ? true : false;
24
- export type NonUndefined<T> = T extends undefined ? never : T;
1
+ import { Id, ValueObject } from "../core/index.js";
2
+
3
+ type JsonPrimitive = string | number | boolean | null;
4
+
5
+ export type DeepJsonResult<T> = T extends Id
6
+ ? string
7
+ : T extends ValueObject<infer U>
8
+ ? U
9
+ : T extends Date
10
+ ? string
11
+ : T extends Array<infer U>
12
+ ? DeepJsonResult<U>[]
13
+ : T extends { toJSON(): infer R }
14
+ ? DeepJsonResult<R>
15
+ : T extends object
16
+ ? { [K in keyof T]: DeepJsonResult<T[K]> }
17
+ : T extends JsonPrimitive
18
+ ? T
19
+ : never;
20
+
21
+ export type Primitive = string | number | boolean | Date | null | undefined;
22
+ export type UnwrapArray<T> = T extends Array<infer U> ? U : never;
23
+ export type IsArray<T> = T extends Array<any> ? true : false;
24
+ export type NonUndefined<T> = T extends undefined ? never : T;
@@ -1,50 +1,50 @@
1
- export function parseQueryValue(value: unknown): any {
2
- if (value === null || value === undefined) return value;
3
- if (typeof value === "boolean") return value;
4
- if (typeof value === "number") return value;
5
- if (value instanceof Date) return value;
6
- if (Array.isArray(value)) return value;
7
- if (typeof value === "object") return value;
8
-
9
- const str = String(value);
10
- if (str === "true" || str === "false") return str === "true";
11
- if (str.trim() !== "" && !isNaN(Number(str))) return Number(str);
12
- if (!isNaN(Date.parse(str))) return new Date(str);
13
-
14
- return str;
15
- }
16
-
17
- export function levenshteinDistance(a: string, b: string): number {
18
- const matrix: number[][] = [];
19
-
20
- for (let i = 0; i <= b.length; i++) {
21
- matrix[i] = [i];
22
- }
23
-
24
- for (let j = 0; j <= a.length; j++) {
25
- matrix[0][j] = j;
26
- }
27
-
28
- for (let i = 1; i <= b.length; i++) {
29
- for (let j = 1; j <= a.length; j++) {
30
- if (b.charAt(i - 1) === a.charAt(j - 1)) {
31
- matrix[i][j] = matrix[i - 1][j - 1];
32
- } else {
33
- matrix[i][j] = Math.min(
34
- matrix[i - 1][j - 1] + 1, // substitution
35
- matrix[i][j - 1] + 1, // insertion
36
- matrix[i - 1][j] + 1 // deletion
37
- );
38
- }
39
- }
40
- }
41
-
42
- return matrix[b.length][a.length];
43
- }
44
-
45
- export function getStaticProperty<T>(
46
- instance: any,
47
- propertyName: string
48
- ): T | undefined {
49
- return instance.constructor[propertyName];
50
- }
1
+ export function parseQueryValue(value: unknown): any {
2
+ if (value === null || value === undefined) return value;
3
+ if (typeof value === "boolean") return value;
4
+ if (typeof value === "number") return value;
5
+ if (value instanceof Date) return value;
6
+ if (Array.isArray(value)) return value;
7
+ if (typeof value === "object") return value;
8
+
9
+ const str = String(value);
10
+ if (str === "true" || str === "false") return str === "true";
11
+ if (str.trim() !== "" && !isNaN(Number(str))) return Number(str);
12
+ if (!isNaN(Date.parse(str))) return new Date(str);
13
+
14
+ return str;
15
+ }
16
+
17
+ export function levenshteinDistance(a: string, b: string): number {
18
+ const matrix: number[][] = [];
19
+
20
+ for (let i = 0; i <= b.length; i++) {
21
+ matrix[i] = [i];
22
+ }
23
+
24
+ for (let j = 0; j <= a.length; j++) {
25
+ matrix[0][j] = j;
26
+ }
27
+
28
+ for (let i = 1; i <= b.length; i++) {
29
+ for (let j = 1; j <= a.length; j++) {
30
+ if (b.charAt(i - 1) === a.charAt(j - 1)) {
31
+ matrix[i][j] = matrix[i - 1][j - 1];
32
+ } else {
33
+ matrix[i][j] = Math.min(
34
+ matrix[i - 1][j - 1] + 1, // substitution
35
+ matrix[i][j - 1] + 1, // insertion
36
+ matrix[i - 1][j] + 1 // deletion
37
+ );
38
+ }
39
+ }
40
+ }
41
+
42
+ return matrix[b.length][a.length];
43
+ }
44
+
45
+ export function getStaticProperty<T>(
46
+ instance: any,
47
+ propertyName: string
48
+ ): T | undefined {
49
+ return instance.constructor[propertyName];
50
+ }