@woltz/rich-domain 1.0.0 → 1.2.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.
Files changed (129) hide show
  1. package/CHANGELOG.md +37 -86
  2. package/LICENSE +20 -20
  3. package/dist/base-entity.d.ts +1 -1
  4. package/dist/base-entity.d.ts.map +1 -1
  5. package/dist/base-entity.js +15 -19
  6. package/dist/base-entity.js.map +1 -1
  7. package/dist/constants.js +1 -4
  8. package/dist/constants.js.map +1 -1
  9. package/dist/criteria.d.ts +24 -14
  10. package/dist/criteria.d.ts.map +1 -1
  11. package/dist/criteria.js +154 -67
  12. package/dist/criteria.js.map +1 -1
  13. package/dist/deep-proxy.d.ts.map +1 -1
  14. package/dist/deep-proxy.js +19 -9
  15. package/dist/deep-proxy.js.map +1 -1
  16. package/dist/domain-event-bus.d.ts +5 -6
  17. package/dist/domain-event-bus.d.ts.map +1 -1
  18. package/dist/domain-event-bus.js +4 -17
  19. package/dist/domain-event-bus.js.map +1 -1
  20. package/dist/domain-event.d.ts +1 -31
  21. package/dist/domain-event.d.ts.map +1 -1
  22. package/dist/domain-event.js +4 -7
  23. package/dist/domain-event.js.map +1 -1
  24. package/dist/entity.d.ts +2 -2
  25. package/dist/entity.js +3 -8
  26. package/dist/entity.js.map +1 -1
  27. package/dist/exceptions.d.ts +251 -0
  28. package/dist/exceptions.d.ts.map +1 -0
  29. package/dist/exceptions.js +321 -0
  30. package/dist/exceptions.js.map +1 -0
  31. package/dist/id.d.ts.map +1 -1
  32. package/dist/id.js +14 -7
  33. package/dist/id.js.map +1 -1
  34. package/dist/index.d.ts +2 -4
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +11 -40
  37. package/dist/index.js.map +1 -1
  38. package/dist/mapper.js +1 -5
  39. package/dist/mapper.js.map +1 -1
  40. package/dist/paginated-result.d.ts.map +1 -1
  41. package/dist/paginated-result.js +17 -9
  42. package/dist/paginated-result.js.map +1 -1
  43. package/dist/repository/base-repository.js +4 -11
  44. package/dist/repository/base-repository.js.map +1 -1
  45. package/dist/repository/index.d.ts +1 -2
  46. package/dist/repository/index.d.ts.map +1 -1
  47. package/dist/repository/index.js +3 -26
  48. package/dist/repository/index.js.map +1 -1
  49. package/dist/repository/unit-of-work.d.ts +0 -11
  50. package/dist/repository/unit-of-work.d.ts.map +1 -1
  51. package/dist/repository/unit-of-work.js +2 -43
  52. package/dist/repository/unit-of-work.js.map +1 -1
  53. package/dist/types/criteria.d.ts +31 -7
  54. package/dist/types/criteria.d.ts.map +1 -1
  55. package/dist/types/criteria.js +1 -4
  56. package/dist/types/criteria.js.map +1 -1
  57. package/dist/types/domain-event.d.ts +32 -0
  58. package/dist/types/domain-event.d.ts.map +1 -0
  59. package/dist/types/domain-event.js +2 -0
  60. package/dist/types/domain-event.js.map +1 -0
  61. package/dist/types/domain.d.ts +2 -2
  62. package/dist/types/domain.d.ts.map +1 -1
  63. package/dist/types/domain.js +1 -2
  64. package/dist/types/history-tracker.d.ts +1 -1
  65. package/dist/types/history-tracker.d.ts.map +1 -1
  66. package/dist/types/history-tracker.js +1 -2
  67. package/dist/types/index.d.ts +1 -0
  68. package/dist/types/index.d.ts.map +1 -1
  69. package/dist/types/index.js +7 -22
  70. package/dist/types/index.js.map +1 -1
  71. package/dist/types/standard-schema.js +1 -2
  72. package/dist/types/unit-of-work.js +1 -2
  73. package/dist/types/utils.js +1 -2
  74. package/dist/utils/criteria-operator-validation.d.ts +5 -0
  75. package/dist/utils/criteria-operator-validation.d.ts.map +1 -0
  76. package/dist/utils/criteria-operator-validation.js +143 -0
  77. package/dist/utils/criteria-operator-validation.js.map +1 -0
  78. package/dist/utils/helpers.d.ts +2 -0
  79. package/dist/utils/helpers.d.ts.map +1 -0
  80. package/dist/utils/helpers.js +10 -0
  81. package/dist/utils/helpers.js.map +1 -0
  82. package/dist/validation-error.js +3 -9
  83. package/dist/validation-error.js.map +1 -1
  84. package/dist/value-object.d.ts +1 -1
  85. package/dist/value-object.d.ts.map +1 -1
  86. package/dist/value-object.js +7 -14
  87. package/dist/value-object.js.map +1 -1
  88. package/eslint.config.js +9 -3
  89. package/jest.config.js +1 -1
  90. package/package.json +14 -20
  91. package/src/base-entity.ts +3 -3
  92. package/src/criteria.ts +268 -87
  93. package/src/deep-proxy.ts +50 -38
  94. package/src/domain-event-bus.ts +152 -166
  95. package/src/domain-event.ts +53 -90
  96. package/src/entity.ts +16 -16
  97. package/src/exceptions.ts +435 -0
  98. package/src/id.ts +107 -94
  99. package/src/index.ts +32 -8
  100. package/src/paginated-result.ts +15 -3
  101. package/src/repository/index.ts +1 -6
  102. package/src/repository/unit-of-work.ts +1 -44
  103. package/src/types/criteria.ts +95 -17
  104. package/src/types/domain-event.ts +38 -0
  105. package/src/types/domain.ts +2 -3
  106. package/src/types/history-tracker.ts +1 -1
  107. package/src/types/index.ts +1 -0
  108. package/src/utils/criteria-operator-validation.ts +171 -0
  109. package/src/utils/helpers.ts +6 -0
  110. package/src/validation-error.ts +97 -97
  111. package/src/value-object.ts +3 -6
  112. package/tests/criteria.test.ts +324 -1
  113. package/tests/domain-events.test.ts +431 -445
  114. package/tests/entity-validation.test.ts +1 -1
  115. package/tests/entity.test.ts +33 -33
  116. package/tests/repository.test.ts +4 -2
  117. package/tests/utils.ts +254 -151
  118. package/tests/value-object-validation.test.ts +0 -9
  119. package/tsconfig.json +2 -24
  120. package/.github/workflows/ci.yml +0 -40
  121. package/.husky/commit-msg +0 -1
  122. package/.husky/pre-commit +0 -1
  123. package/.vscode/settings.json +0 -3
  124. package/commitlint.config.js +0 -23
  125. package/dist/repository/in-memory-repository.d.ts +0 -50
  126. package/dist/repository/in-memory-repository.d.ts.map +0 -1
  127. package/dist/repository/in-memory-repository.js +0 -97
  128. package/dist/repository/in-memory-repository.js.map +0 -1
  129. package/src/repository/in-memory-repository.ts +0 -116
@@ -1,25 +1,5 @@
1
+ import { IDomainEvent } from ".";
1
2
  import { Id } from "./id";
2
- /**
3
- * Interface for all domain events
4
- */
5
- export interface IDomainEvent {
6
- /**
7
- * Unique identifier for this event occurrence
8
- */
9
- readonly eventId: string;
10
- /**
11
- * When the event occurred
12
- */
13
- readonly occurredOn: Date;
14
- /**
15
- * Name/type of the event (e.g., "UserCreated", "OrderPlaced")
16
- */
17
- readonly eventName: string;
18
- /**
19
- * ID of the aggregate that raised this event
20
- */
21
- readonly aggregateId: string;
22
- }
23
3
  /**
24
4
  * Base class for domain events
25
5
  */
@@ -42,14 +22,4 @@ export declare abstract class DomainEvent implements IDomainEvent {
42
22
  */
43
23
  protected getPayload(): Record<string, any>;
44
24
  }
45
- /**
46
- * Event handler function type
47
- */
48
- export type DomainEventHandler<T extends IDomainEvent = IDomainEvent> = (event: T) => void | Promise<void>;
49
- /**
50
- * Event handler class type
51
- */
52
- export interface IDomainEventHandler<T extends IDomainEvent = IDomainEvent> {
53
- handle(event: T): void | Promise<void>;
54
- }
55
25
  //# sourceMappingURL=domain-event.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"domain-event.d.ts","sourceRoot":"","sources":["../src/domain-event.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAE1B;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,8BAAsB,WAAY,YAAW,YAAY;IACvD,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,SAAgB,UAAU,EAAE,IAAI,CAAC;IACjC,SAAgB,WAAW,EAAE,MAAM,CAAC;gBAExB,WAAW,EAAE,EAAE,GAAG,MAAM;IAMpC;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,OAAO,CAAC,eAAe;IAIvB;;OAEG;IACH,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAU7B;;OAEG;IACH,SAAS,CAAC,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAG5C;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,IAAI,CACtE,KAAK,EAAE,CAAC,KACL,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY;IACxE,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"}
1
+ {"version":3,"file":"domain-event.d.ts","sourceRoot":"","sources":["../src/domain-event.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,CAAC;AACjC,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAE1B;;GAEG;AACH,8BAAsB,WAAY,YAAW,YAAY;IACvD,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,SAAgB,UAAU,EAAE,IAAI,CAAC;IACjC,SAAgB,WAAW,EAAE,MAAM,CAAC;gBAExB,WAAW,EAAE,EAAE,GAAG,MAAM;IAOpC;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,OAAO,CAAC,eAAe;IAIvB;;OAEG;IACH,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAU7B;;OAEG;IACH,SAAS,CAAC,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAG5C"}
@@ -1,18 +1,16 @@
1
- "use strict";
2
1
  // ============================================================================
3
2
  // Domain Events - Event-Driven Architecture Support
4
3
  // ============================================================================
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.DomainEvent = void 0;
7
- const id_1 = require("./id");
4
+ import { Id } from "./id";
8
5
  /**
9
6
  * Base class for domain events
10
7
  */
11
- class DomainEvent {
8
+ export class DomainEvent {
12
9
  constructor(aggregateId) {
13
10
  this.eventId = this.generateEventId();
14
11
  this.occurredOn = new Date();
15
- this.aggregateId = aggregateId instanceof id_1.Id ? aggregateId.value : aggregateId;
12
+ this.aggregateId =
13
+ aggregateId instanceof Id ? aggregateId.value : aggregateId;
16
14
  }
17
15
  /**
18
16
  * Get the event name (defaults to class name)
@@ -42,5 +40,4 @@ class DomainEvent {
42
40
  return {};
43
41
  }
44
42
  }
45
- exports.DomainEvent = DomainEvent;
46
43
  //# sourceMappingURL=domain-event.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"domain-event.js","sourceRoot":"","sources":["../src/domain-event.ts"],"names":[],"mappings":";AAAA,+EAA+E;AAC/E,oDAAoD;AACpD,+EAA+E;;;AAE/E,6BAA0B;AA2B1B;;GAEG;AACH,MAAsB,WAAW;IAK/B,YAAY,WAAwB;QAClC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,YAAY,OAAE,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC;IACjF,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IAC/B,CAAC;IAEO,eAAe;QACrB,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IACpE,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;YACzC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,GAAG,IAAI,CAAC,UAAU,EAAE;SACrB,CAAC;IACJ,CAAC;IAED;;OAEG;IACO,UAAU;QAClB,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AAzCD,kCAyCC"}
1
+ {"version":3,"file":"domain-event.js","sourceRoot":"","sources":["../src/domain-event.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,oDAAoD;AACpD,+EAA+E;AAG/E,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAE1B;;GAEG;AACH,MAAM,OAAgB,WAAW;IAK/B,YAAY,WAAwB;QAClC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,WAAW;YACd,WAAW,YAAY,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC;IAChE,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IAC/B,CAAC;IAEO,eAAe;QACrB,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IACpE,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;YACzC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,GAAG,IAAI,CAAC,UAAU,EAAE;SACrB,CAAC;IACJ,CAAC;IAED;;OAEG;IACO,UAAU;QAClB,OAAO,EAAE,CAAC;IACZ,CAAC;CACF"}
package/dist/entity.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { BaseEntity } from './base-entity';
2
- import { BaseProps } from './types';
1
+ import { BaseEntity } from "./base-entity";
2
+ import { BaseProps } from "./types";
3
3
  /**
4
4
  * Entity - Has identity and lifecycle, but is not an aggregate root
5
5
  */
package/dist/entity.js CHANGED
@@ -1,20 +1,15 @@
1
- "use strict";
2
1
  // ============================================================================
3
2
  // Entity & Aggregate Classes
4
3
  // ============================================================================
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Aggregate = exports.Entity = void 0;
7
- const base_entity_1 = require("./base-entity");
4
+ import { BaseEntity } from "./base-entity";
8
5
  /**
9
6
  * Entity - Has identity and lifecycle, but is not an aggregate root
10
7
  */
11
- class Entity extends base_entity_1.BaseEntity {
8
+ export class Entity extends BaseEntity {
12
9
  }
13
- exports.Entity = Entity;
14
10
  /**
15
11
  * Aggregate - Aggregate root that manages a consistency boundary
16
12
  */
17
- class Aggregate extends base_entity_1.BaseEntity {
13
+ export class Aggregate extends BaseEntity {
18
14
  }
19
- exports.Aggregate = Aggregate;
20
15
  //# sourceMappingURL=entity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"entity.js","sourceRoot":"","sources":["../src/entity.ts"],"names":[],"mappings":";AAAA,+EAA+E;AAC/E,6BAA6B;AAC7B,+EAA+E;;;AAE/E,+CAA2C;AAG3C;;GAEG;AACH,MAAa,MAA4B,SAAQ,wBAAa;CAAG;AAAjE,wBAAiE;AAEjE;;GAEG;AACH,MAAa,SAA+B,SAAQ,wBAAa;CAAG;AAApE,8BAAoE"}
1
+ {"version":3,"file":"entity.js","sourceRoot":"","sources":["../src/entity.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,6BAA6B;AAC7B,+EAA+E;AAE/E,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C;;GAEG;AACH,MAAM,OAAO,MAA4B,SAAQ,UAAa;CAAG;AAEjE;;GAEG;AACH,MAAM,OAAO,SAA+B,SAAQ,UAAa;CAAG"}
@@ -0,0 +1,251 @@
1
+ /**
2
+ * Base exception class for all Rich Domain exceptions
3
+ */
4
+ declare abstract class DomainException extends Error {
5
+ readonly code: string;
6
+ readonly timestamp: Date;
7
+ readonly __isDomainException = true;
8
+ constructor(message: string, code?: string);
9
+ /**
10
+ * Check if an error is a DomainException
11
+ */
12
+ static isDomainException(error: unknown): error is DomainException;
13
+ /**
14
+ * Convert to JSON for serialization
15
+ */
16
+ toJSON(): {
17
+ name: string;
18
+ message: string;
19
+ code: string;
20
+ timestamp: string;
21
+ };
22
+ }
23
+ /**
24
+ * Thrown when a domain rule or business logic is violated
25
+ */
26
+ export declare class DomainError extends DomainException {
27
+ constructor(message: string, code?: string);
28
+ }
29
+ /**
30
+ * Thrown when an entity or aggregate is not found
31
+ */
32
+ export declare class EntityNotFoundError extends DomainException {
33
+ readonly entityType: string;
34
+ readonly entityId?: string;
35
+ constructor(entityType: string, entityId?: string, message?: string);
36
+ toJSON(): {
37
+ entityType: string;
38
+ entityId: string | undefined;
39
+ name: string;
40
+ message: string;
41
+ code: string;
42
+ timestamp: string;
43
+ };
44
+ }
45
+ /**
46
+ * Thrown when trying to create an entity that already exists
47
+ */
48
+ export declare class EntityAlreadyExistsError extends DomainException {
49
+ readonly entityType: string;
50
+ readonly entityId?: string;
51
+ constructor(entityType: string, entityId?: string, message?: string);
52
+ toJSON(): {
53
+ entityType: string;
54
+ entityId: string | undefined;
55
+ name: string;
56
+ message: string;
57
+ code: string;
58
+ timestamp: string;
59
+ };
60
+ }
61
+ /**
62
+ * Base exception for repository operations
63
+ */
64
+ export declare class RepositoryError extends DomainException {
65
+ constructor(message: string, code?: string);
66
+ }
67
+ /**
68
+ * Thrown when a persistence operation fails
69
+ */
70
+ export declare class PersistenceError extends RepositoryError {
71
+ readonly operation: string;
72
+ readonly cause?: Error;
73
+ constructor(operation: string, message?: string, cause?: Error);
74
+ toJSON(): {
75
+ operation: string;
76
+ cause: string | undefined;
77
+ name: string;
78
+ message: string;
79
+ code: string;
80
+ timestamp: string;
81
+ };
82
+ }
83
+ /**
84
+ * Thrown when a concurrency conflict occurs (optimistic locking)
85
+ */
86
+ export declare class ConcurrencyError extends RepositoryError {
87
+ readonly entityType: string;
88
+ readonly entityId: string;
89
+ constructor(entityType: string, entityId: string, message?: string);
90
+ toJSON(): {
91
+ entityType: string;
92
+ entityId: string;
93
+ name: string;
94
+ message: string;
95
+ code: string;
96
+ timestamp: string;
97
+ };
98
+ }
99
+ /**
100
+ * Thrown when a database constraint is violated
101
+ */
102
+ export declare class ConstraintViolationError extends RepositoryError {
103
+ readonly constraint: string;
104
+ constructor(constraint: string, message?: string);
105
+ toJSON(): {
106
+ constraint: string;
107
+ name: string;
108
+ message: string;
109
+ code: string;
110
+ timestamp: string;
111
+ };
112
+ }
113
+ /**
114
+ * Thrown when a value object has invalid data
115
+ */
116
+ export declare class InvalidValueObjectError extends DomainException {
117
+ readonly valueObjectType: string;
118
+ readonly invalidValue?: any;
119
+ constructor(valueObjectType: string, message: string, invalidValue?: any);
120
+ toJSON(): {
121
+ valueObjectType: string;
122
+ invalidValue: any;
123
+ name: string;
124
+ message: string;
125
+ code: string;
126
+ timestamp: string;
127
+ };
128
+ }
129
+ /**
130
+ * Thrown when a domain event operation fails
131
+ */
132
+ export declare class DomainEventError extends DomainException {
133
+ readonly eventType?: string;
134
+ constructor(message: string, eventType?: string);
135
+ toJSON(): {
136
+ eventType: string | undefined;
137
+ name: string;
138
+ message: string;
139
+ code: string;
140
+ timestamp: string;
141
+ };
142
+ }
143
+ /**
144
+ * Thrown when an event handler fails
145
+ */
146
+ export declare class EventHandlerError extends DomainEventError {
147
+ readonly handlerName: string;
148
+ readonly cause?: Error;
149
+ constructor(handlerName: string, eventType: string, cause?: Error);
150
+ toJSON(): {
151
+ handlerName: string;
152
+ cause: string | undefined;
153
+ eventType: string | undefined;
154
+ name: string;
155
+ message: string;
156
+ code: string;
157
+ timestamp: string;
158
+ };
159
+ }
160
+ /**
161
+ * Thrown when a criteria or query is invalid
162
+ */
163
+ export declare class InvalidCriteriaError extends DomainException {
164
+ readonly field?: string;
165
+ constructor(message: string, field?: string);
166
+ toJSON(): {
167
+ field: string | undefined;
168
+ name: string;
169
+ message: string;
170
+ code: string;
171
+ timestamp: string;
172
+ };
173
+ }
174
+ /**
175
+ * Thrown when a transaction operation fails
176
+ */
177
+ export declare class TransactionError extends DomainException {
178
+ readonly operation: string;
179
+ readonly cause?: Error;
180
+ constructor(operation: string, message?: string, cause?: Error);
181
+ toJSON(): {
182
+ operation: string;
183
+ cause: string | undefined;
184
+ name: string;
185
+ message: string;
186
+ code: string;
187
+ timestamp: string;
188
+ };
189
+ }
190
+ /**
191
+ * Thrown when an unexpected or unknown error occurs
192
+ */
193
+ export declare class UnknownError extends DomainException {
194
+ readonly originalError?: Error;
195
+ constructor(message?: string, originalError?: Error);
196
+ toJSON(): {
197
+ originalError: string | undefined;
198
+ name: string;
199
+ message: string;
200
+ code: string;
201
+ timestamp: string;
202
+ };
203
+ }
204
+ /**
205
+ * Thrown when a feature is not implemented yet
206
+ */
207
+ export declare class NotImplementedError extends DomainException {
208
+ readonly feature: string;
209
+ constructor(feature: string, message?: string);
210
+ toJSON(): {
211
+ feature: string;
212
+ name: string;
213
+ message: string;
214
+ code: string;
215
+ timestamp: string;
216
+ };
217
+ }
218
+ /**
219
+ * Thrown when a required configuration is missing
220
+ */
221
+ export declare class ConfigurationError extends DomainException {
222
+ readonly configKey?: string;
223
+ constructor(message: string, configKey?: string);
224
+ toJSON(): {
225
+ configKey: string | undefined;
226
+ name: string;
227
+ message: string;
228
+ code: string;
229
+ timestamp: string;
230
+ };
231
+ }
232
+ /**
233
+ * Thrown when mapping between domain and persistence fails
234
+ */
235
+ export declare class MapperError extends DomainException {
236
+ readonly direction: "toDomain" | "toPersistence";
237
+ readonly entityType: string;
238
+ readonly cause?: Error;
239
+ constructor(direction: "toDomain" | "toPersistence", entityType: string, message?: string, cause?: Error);
240
+ toJSON(): {
241
+ direction: "toDomain" | "toPersistence";
242
+ entityType: string;
243
+ cause: string | undefined;
244
+ name: string;
245
+ message: string;
246
+ code: string;
247
+ timestamp: string;
248
+ };
249
+ }
250
+ export {};
251
+ //# sourceMappingURL=exceptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exceptions.d.ts","sourceRoot":"","sources":["../src/exceptions.ts"],"names":[],"mappings":"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"}