@sustaina/iam-middleware 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/README.md +61 -0
  2. package/dist/auth/AuthMiddleware.d.ts +51 -0
  3. package/dist/auth/AuthMiddleware.d.ts.map +1 -0
  4. package/dist/auth/AuthMiddleware.js +312 -0
  5. package/dist/auth/AuthMiddleware.js.map +1 -0
  6. package/dist/auth/ImplementModeMiddleware.d.ts +26 -0
  7. package/dist/auth/ImplementModeMiddleware.d.ts.map +1 -0
  8. package/dist/auth/ImplementModeMiddleware.js +77 -0
  9. package/dist/auth/ImplementModeMiddleware.js.map +1 -0
  10. package/dist/base/BaseMiddleware.d.ts +15 -0
  11. package/dist/base/BaseMiddleware.d.ts.map +1 -0
  12. package/dist/base/BaseMiddleware.js +50 -0
  13. package/dist/base/BaseMiddleware.js.map +1 -0
  14. package/dist/domain/entities/AggregateRoot.d.ts +17 -0
  15. package/dist/domain/entities/AggregateRoot.d.ts.map +1 -0
  16. package/dist/domain/entities/AggregateRoot.js +79 -0
  17. package/dist/domain/entities/AggregateRoot.js.map +1 -0
  18. package/dist/domain/entities/Currency.d.ts +26 -0
  19. package/dist/domain/entities/Currency.d.ts.map +1 -0
  20. package/dist/domain/entities/Currency.js +51 -0
  21. package/dist/domain/entities/Currency.js.map +1 -0
  22. package/dist/domain/entities/OutboxEvent.d.ts +17 -0
  23. package/dist/domain/entities/OutboxEvent.d.ts.map +1 -0
  24. package/dist/domain/entities/OutboxEvent.js +24 -0
  25. package/dist/domain/entities/OutboxEvent.js.map +1 -0
  26. package/dist/domain/event/DomainEvent.d.ts +38 -0
  27. package/dist/domain/event/DomainEvent.d.ts.map +1 -0
  28. package/dist/domain/event/DomainEvent.js +20 -0
  29. package/dist/domain/event/DomainEvent.js.map +1 -0
  30. package/dist/domain/repositories/OutboxRepository.d.ts +7 -0
  31. package/dist/domain/repositories/OutboxRepository.d.ts.map +1 -0
  32. package/dist/domain/repositories/OutboxRepository.js +3 -0
  33. package/dist/domain/repositories/OutboxRepository.js.map +1 -0
  34. package/dist/errors/index.d.ts +71 -0
  35. package/dist/errors/index.d.ts.map +1 -0
  36. package/dist/errors/index.js +150 -0
  37. package/dist/errors/index.js.map +1 -0
  38. package/dist/index.d.ts +7 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +23 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/infrastructure/RedisClient.d.ts +14 -0
  43. package/dist/infrastructure/RedisClient.d.ts.map +1 -0
  44. package/dist/infrastructure/RedisClient.js +69 -0
  45. package/dist/infrastructure/RedisClient.js.map +1 -0
  46. package/dist/logging/EventLogMiddleware.d.ts +4 -0
  47. package/dist/logging/EventLogMiddleware.d.ts.map +1 -0
  48. package/dist/logging/EventLogMiddleware.js +49 -0
  49. package/dist/logging/EventLogMiddleware.js.map +1 -0
  50. package/dist/shared/config.d.ts +2 -0
  51. package/dist/shared/config.d.ts.map +1 -0
  52. package/dist/shared/config.js +5 -0
  53. package/dist/shared/config.js.map +1 -0
  54. package/dist/test.d.ts +4 -0
  55. package/dist/test.d.ts.map +1 -0
  56. package/dist/test.js +80 -0
  57. package/dist/test.js.map +1 -0
  58. package/dist/types/AuthTypes.d.ts +43 -0
  59. package/dist/types/AuthTypes.d.ts.map +1 -0
  60. package/dist/types/AuthTypes.js +3 -0
  61. package/dist/types/AuthTypes.js.map +1 -0
  62. package/package.json +62 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AggregateRoot.d.ts","sourceRoot":"","sources":["../../../src/domain/entities/AggregateRoot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,8BAAsB,aAAa;aAKf,EAAE,EAAE,MAAM;aACV,SAAS,EAAE,IAAI;IACxB,SAAS,EAAE,IAAI;IANxB,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,QAAQ,CAAa;gBAGX,EAAE,EAAE,MAAM,EACV,SAAS,GAAE,IAAiB,EACrC,SAAS,GAAE,IAAiB;IAGrC,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,YAAY,IAAI,aAAa,CAAC,WAAW,CAAC,CAE7C;IAED,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAM3C,iBAAiB,IAAI,IAAI;IAIhC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;WAMhC,YAAY,CAAC,CAAC,SAAS,aAAa,EAChD,cAAc,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EACzC,MAAM,EAAE,WAAW,EAAE,GACpB,CAAC;IAyDJ,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;CAClD"}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AggregateRoot = void 0;
4
+ class AggregateRoot {
5
+ constructor(id, createdAt = new Date(), updatedAt = new Date()) {
6
+ this.id = id;
7
+ this.createdAt = createdAt;
8
+ this.updatedAt = updatedAt;
9
+ this._domainEvents = [];
10
+ this._version = 0;
11
+ }
12
+ get version() {
13
+ return this._version;
14
+ }
15
+ get domainEvents() {
16
+ return this._domainEvents;
17
+ }
18
+ addDomainEvent(event) {
19
+ this._domainEvents.push(event);
20
+ this._version++;
21
+ this.updatedAt = new Date();
22
+ }
23
+ clearDomainEvents() {
24
+ this._domainEvents = [];
25
+ }
26
+ applyEvent(event) {
27
+ this._version++;
28
+ this.updatedAt = event.occurredAt;
29
+ }
30
+ // Replay events to rebuild aggregate state
31
+ static replayEvents(aggregateClass, events) {
32
+ if (events.length === 0) {
33
+ throw new Error("Cannot replay empty event stream");
34
+ }
35
+ // Create initial aggregate from first event
36
+ const firstEvent = events[0];
37
+ // Try to create aggregate using the creation event data
38
+ let aggregate;
39
+ // Check if the aggregate class has a static factory method for creation events
40
+ if (typeof aggregateClass.fromCreationEvent === "function") {
41
+ aggregate = aggregateClass.fromCreationEvent(firstEvent);
42
+ }
43
+ else {
44
+ // Fallback - try to create with basic constructor parameters
45
+ try {
46
+ // For entities that need specific constructor parameters, try with event data
47
+ if (firstEvent.eventData && Object.keys(firstEvent.eventData).length > 0) {
48
+ const eventData = firstEvent.eventData;
49
+ // Try different constructor patterns based on available data
50
+ aggregate = new aggregateClass(firstEvent.aggregateId, eventData.email || eventData.identifier || "default", eventData.name || eventData.title || "Default Name", firstEvent.occurredAt, firstEvent.occurredAt);
51
+ }
52
+ else {
53
+ // Minimal constructor with just ID and timestamp
54
+ aggregate = new aggregateClass(firstEvent.aggregateId, firstEvent.occurredAt);
55
+ }
56
+ }
57
+ catch {
58
+ // Last resort - create with minimal data and let when() handlers build the state
59
+ aggregate = new aggregateClass(firstEvent.aggregateId);
60
+ }
61
+ }
62
+ // Apply all events to rebuild state
63
+ events.forEach((event, index) => {
64
+ // If we used fromCreationEvent, skip the first event as it was already handled
65
+ if (typeof aggregateClass.fromCreationEvent === "function" && index === 0) {
66
+ aggregate.applyEvent(event);
67
+ return;
68
+ }
69
+ // Apply event through when() handler and update version
70
+ if (typeof aggregate.when === "function") {
71
+ aggregate.when(event);
72
+ }
73
+ aggregate.applyEvent(event);
74
+ });
75
+ return aggregate;
76
+ }
77
+ }
78
+ exports.AggregateRoot = AggregateRoot;
79
+ //# sourceMappingURL=AggregateRoot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AggregateRoot.js","sourceRoot":"","sources":["../../../src/domain/entities/AggregateRoot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { DomainEvent } from "../event/DomainEvent";
2
+ import { AggregateRoot } from "./AggregateRoot";
3
+ export declare enum CurrencySymbolPos {
4
+ BEFORE = "before",
5
+ AFTER = "after"
6
+ }
7
+ export declare class Currency extends AggregateRoot {
8
+ private _code;
9
+ private _name;
10
+ private _description?;
11
+ private _symbol;
12
+ private _symbolPosition;
13
+ private _isDefault;
14
+ private _enabled;
15
+ constructor(id: string, code: string, name: string, symbol: string, symbolPosition?: CurrencySymbolPos, isDefault?: boolean, enabled?: boolean, description?: string, createdAt?: Date, updatedAt?: Date);
16
+ get code(): string;
17
+ get name(): string;
18
+ get description(): string | undefined;
19
+ get symbol(): string;
20
+ get symbolPosition(): CurrencySymbolPos;
21
+ get isDefault(): boolean;
22
+ get enabled(): boolean;
23
+ equals(other: Currency): boolean;
24
+ protected when(_: DomainEvent): void;
25
+ }
26
+ //# sourceMappingURL=Currency.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Currency.d.ts","sourceRoot":"","sources":["../../../src/domain/entities/Currency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,oBAAY,iBAAiB;IAC3B,MAAM,WAAW;IACjB,KAAK,UAAU;CAChB;AAED,qBAAa,QAAS,SAAQ,aAAa;IACzC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,eAAe,CAAoB;IAC3C,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,QAAQ,CAAU;gBAGxB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,cAAc,GAAE,iBAA4C,EAC5D,SAAS,GAAE,OAAe,EAC1B,OAAO,GAAE,OAAc,EACvB,WAAW,CAAC,EAAE,MAAM,EACpB,SAAS,GAAE,IAAiB,EAC5B,SAAS,GAAE,IAAiB;IAY9B,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,WAAW,IAAI,MAAM,GAAG,SAAS,CAEpC;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,cAAc,IAAI,iBAAiB,CAEtC;IAED,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;IAKhC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI;CAGrC"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Currency = exports.CurrencySymbolPos = void 0;
4
+ const AggregateRoot_1 = require("./AggregateRoot");
5
+ var CurrencySymbolPos;
6
+ (function (CurrencySymbolPos) {
7
+ CurrencySymbolPos["BEFORE"] = "before";
8
+ CurrencySymbolPos["AFTER"] = "after";
9
+ })(CurrencySymbolPos || (exports.CurrencySymbolPos = CurrencySymbolPos = {}));
10
+ class Currency extends AggregateRoot_1.AggregateRoot {
11
+ constructor(id, code, name, symbol, symbolPosition = CurrencySymbolPos.BEFORE, isDefault = false, enabled = true, description, createdAt = new Date(), updatedAt = new Date()) {
12
+ super(id, createdAt, updatedAt);
13
+ this._code = code;
14
+ this._name = name;
15
+ this._symbol = symbol;
16
+ this._symbolPosition = symbolPosition;
17
+ this._isDefault = isDefault;
18
+ this._enabled = enabled;
19
+ this._description = description ?? undefined;
20
+ }
21
+ get code() {
22
+ return this._code;
23
+ }
24
+ get name() {
25
+ return this._name;
26
+ }
27
+ get description() {
28
+ return this._description;
29
+ }
30
+ get symbol() {
31
+ return this._symbol;
32
+ }
33
+ get symbolPosition() {
34
+ return this._symbolPosition;
35
+ }
36
+ get isDefault() {
37
+ return this._isDefault;
38
+ }
39
+ get enabled() {
40
+ return this._enabled;
41
+ }
42
+ equals(other) {
43
+ return this._code === other.code;
44
+ }
45
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
46
+ when(_) {
47
+ // Method intentionally left blank
48
+ }
49
+ }
50
+ exports.Currency = Currency;
51
+ //# sourceMappingURL=Currency.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Currency.js","sourceRoot":"","sources":["../../../src/domain/entities/Currency.ts"],"names":[],"mappings":";;;AACA,mDAAgD;AAEhD,IAAY,iBAGX;AAHD,WAAY,iBAAiB;IAC3B,sCAAiB,CAAA;IACjB,oCAAe,CAAA;AACjB,CAAC,EAHW,iBAAiB,iCAAjB,iBAAiB,QAG5B;AAED,MAAa,QAAS,SAAQ,6BAAa;IASzC,YACE,EAAU,EACV,IAAY,EACZ,IAAY,EACZ,MAAc,EACd,iBAAoC,iBAAiB,CAAC,MAAM,EAC5D,YAAqB,KAAK,EAC1B,UAAmB,IAAI,EACvB,WAAoB,EACpB,YAAkB,IAAI,IAAI,EAAE,EAC5B,YAAkB,IAAI,IAAI,EAAE;QAE5B,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,YAAY,GAAG,WAAW,IAAI,SAAS,CAAC;IAC/C,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,KAAe;QACpB,OAAO,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC;IACnC,CAAC;IAED,6DAA6D;IACnD,IAAI,CAAC,CAAc;QAC3B,kCAAkC;IACpC,CAAC;CACF;AAnED,4BAmEC"}
@@ -0,0 +1,17 @@
1
+ export interface TraceMetadata {
2
+ traceId: string;
3
+ spanId: string;
4
+ [key: string]: any;
5
+ }
6
+ export declare class OutboxEvent {
7
+ readonly id: string;
8
+ readonly eventType: string;
9
+ readonly eventData: any;
10
+ readonly metadata?: TraceMetadata | undefined;
11
+ readonly processed: boolean;
12
+ readonly processedAt?: Date | undefined;
13
+ readonly createdAt: Date;
14
+ constructor(id: string, eventType: string, eventData: any, metadata?: TraceMetadata | undefined, processed?: boolean, processedAt?: Date | undefined, createdAt?: Date);
15
+ static create(eventType: string, eventData: any, metadata?: TraceMetadata): OutboxEvent;
16
+ }
17
+ //# sourceMappingURL=OutboxEvent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OutboxEvent.d.ts","sourceRoot":"","sources":["../../../src/domain/entities/OutboxEvent.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,qBAAa,WAAW;aAEJ,EAAE,EAAE,MAAM;aACV,SAAS,EAAE,MAAM;aACjB,SAAS,EAAE,GAAG;aACd,QAAQ,CAAC,EAAE,aAAa;aACxB,SAAS,EAAE,OAAO;aAClB,WAAW,CAAC,EAAE,IAAI;aAClB,SAAS,EAAE,IAAI;gBANf,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,GAAG,EACd,QAAQ,CAAC,EAAE,aAAa,YAAA,EACxB,SAAS,GAAE,OAAe,EAC1B,WAAW,CAAC,EAAE,IAAI,YAAA,EAClB,SAAS,GAAE,IAAiB;IAG9C,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,aAAa,GAAG,WAAW;CAIxF"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.OutboxEvent = void 0;
7
+ const crypto_1 = __importDefault(require("crypto"));
8
+ class OutboxEvent {
9
+ constructor(id, eventType, eventData, metadata, processed = false, processedAt, createdAt = new Date()) {
10
+ this.id = id;
11
+ this.eventType = eventType;
12
+ this.eventData = eventData;
13
+ this.metadata = metadata;
14
+ this.processed = processed;
15
+ this.processedAt = processedAt;
16
+ this.createdAt = createdAt;
17
+ }
18
+ static create(eventType, eventData, metadata) {
19
+ const id = crypto_1.default.randomUUID();
20
+ return new OutboxEvent(id, eventType, eventData, metadata);
21
+ }
22
+ }
23
+ exports.OutboxEvent = OutboxEvent;
24
+ //# sourceMappingURL=OutboxEvent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OutboxEvent.js","sourceRoot":"","sources":["../../../src/domain/entities/OutboxEvent.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAQ5B,MAAa,WAAW;IACtB,YACkB,EAAU,EACV,SAAiB,EACjB,SAAc,EACd,QAAwB,EACxB,YAAqB,KAAK,EAC1B,WAAkB,EAClB,YAAkB,IAAI,IAAI,EAAE;QAN5B,OAAE,GAAF,EAAE,CAAQ;QACV,cAAS,GAAT,SAAS,CAAQ;QACjB,cAAS,GAAT,SAAS,CAAK;QACd,aAAQ,GAAR,QAAQ,CAAgB;QACxB,cAAS,GAAT,SAAS,CAAiB;QAC1B,gBAAW,GAAX,WAAW,CAAO;QAClB,cAAS,GAAT,SAAS,CAAmB;IAC3C,CAAC;IAEJ,MAAM,CAAC,MAAM,CAAC,SAAiB,EAAE,SAAc,EAAE,QAAwB;QACvE,MAAM,EAAE,GAAG,gBAAM,CAAC,UAAU,EAAE,CAAC;QAC/B,OAAO,IAAI,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC7D,CAAC;CACF;AAfD,kCAeC"}
@@ -0,0 +1,38 @@
1
+ export interface DomainEvent {
2
+ id: string;
3
+ aggregateId: string;
4
+ eventType: string;
5
+ eventVersion: number;
6
+ occurredAt: Date;
7
+ eventData: any;
8
+ metadata?: {
9
+ userId?: string;
10
+ correlationId?: string;
11
+ causationId?: string;
12
+ traceId?: string;
13
+ spanId?: string;
14
+ };
15
+ }
16
+ export declare abstract class BaseDomainEvent implements DomainEvent {
17
+ readonly aggregateId: string;
18
+ readonly eventType: string;
19
+ readonly eventData: any;
20
+ readonly metadata?: {
21
+ userId?: string;
22
+ correlationId?: string;
23
+ causationId?: string;
24
+ traceId?: string;
25
+ spanId?: string;
26
+ } | undefined;
27
+ readonly id: string;
28
+ readonly occurredAt: Date;
29
+ readonly eventVersion: number;
30
+ constructor(aggregateId: string, eventType: string, eventData: any, metadata?: {
31
+ userId?: string;
32
+ correlationId?: string;
33
+ causationId?: string;
34
+ traceId?: string;
35
+ spanId?: string;
36
+ } | undefined);
37
+ }
38
+ //# sourceMappingURL=DomainEvent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DomainEvent.d.ts","sourceRoot":"","sources":["../../../src/domain/event/DomainEvent.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,IAAI,CAAC;IACjB,SAAS,EAAE,GAAG,CAAC;IACf,QAAQ,CAAC,EAAE;QACT,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,8BAAsB,eAAgB,YAAW,WAAW;aAMxC,WAAW,EAAE,MAAM;aACnB,SAAS,EAAE,MAAM;aACjB,SAAS,EAAE,GAAG;aACd,QAAQ,CAAC,EAAE;QACzB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB;IAdH,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,SAAgB,UAAU,EAAE,IAAI,CAAC;IACjC,SAAgB,YAAY,EAAE,MAAM,CAAK;gBAGvB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,GAAG,EACd,QAAQ,CAAC,EAAE;QACzB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,YAAA;CAKJ"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.BaseDomainEvent = void 0;
7
+ const crypto_1 = __importDefault(require("crypto"));
8
+ class BaseDomainEvent {
9
+ constructor(aggregateId, eventType, eventData, metadata) {
10
+ this.aggregateId = aggregateId;
11
+ this.eventType = eventType;
12
+ this.eventData = eventData;
13
+ this.metadata = metadata;
14
+ this.eventVersion = 1;
15
+ this.id = crypto_1.default.randomUUID();
16
+ this.occurredAt = new Date();
17
+ }
18
+ }
19
+ exports.BaseDomainEvent = BaseDomainEvent;
20
+ //# sourceMappingURL=DomainEvent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DomainEvent.js","sourceRoot":"","sources":["../../../src/domain/event/DomainEvent.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAkB5B,MAAsB,eAAe;IAKnC,YACkB,WAAmB,EACnB,SAAiB,EACjB,SAAc,EACd,QAMf;QATe,gBAAW,GAAX,WAAW,CAAQ;QACnB,cAAS,GAAT,SAAS,CAAQ;QACjB,cAAS,GAAT,SAAS,CAAK;QACd,aAAQ,GAAR,QAAQ,CAMvB;QAZa,iBAAY,GAAW,CAAC,CAAC;QAcvC,IAAI,CAAC,EAAE,GAAG,gBAAM,CAAC,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;IAC/B,CAAC;CACF;AApBD,0CAoBC"}
@@ -0,0 +1,7 @@
1
+ import { OutboxEvent } from "../entities/OutboxEvent";
2
+ export interface OutboxRepository {
3
+ save(event: OutboxEvent): Promise<OutboxEvent>;
4
+ findUnprocessed(): Promise<OutboxEvent[]>;
5
+ markAsProcessed(eventId: string): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=OutboxRepository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OutboxRepository.d.ts","sourceRoot":"","sources":["../../../src/domain/repositories/OutboxRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/C,eAAe,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC1C,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjD"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=OutboxRepository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OutboxRepository.js","sourceRoot":"","sources":["../../../src/domain/repositories/OutboxRepository.ts"],"names":[],"mappings":""}
@@ -0,0 +1,71 @@
1
+ import { Span } from "@opentelemetry/api";
2
+ import { FastifyReply } from "fastify";
3
+ import pino from "pino";
4
+ export declare class DomainError extends Error {
5
+ constructor(message: string);
6
+ }
7
+ export declare class ValidationError extends DomainError {
8
+ constructor(message: string);
9
+ }
10
+ export declare class NotFoundError extends DomainError {
11
+ constructor(message: string);
12
+ }
13
+ export declare class ConflictError extends DomainError {
14
+ constructor(message: string);
15
+ }
16
+ export declare class CustomError extends DomainError {
17
+ /** HTTP status code to return (default: 500) */
18
+ statusCode: number;
19
+ /** Error type identifier for tracing, monitoring, and metrics */
20
+ errorType: string;
21
+ /** Optional user-friendly message or i18n key to return to client */
22
+ returnMessage?: string;
23
+ /**
24
+ * Creates a new CustomError instance with full control over error properties
25
+ *
26
+ * @param message - Detailed internal error message for logging and debugging
27
+ * @param statusCode - HTTP status code (default: 500)
28
+ * @param errorName - Custom error name for identification and handling (default: "CustomError")
29
+ * @param errorType - Error type for tracing and monitoring (default: "custom_error")
30
+ * @param returnMessage - Optional message to return to client
31
+ *
32
+ * @example Basic Usage Examples
33
+ * ```typescript
34
+ * // 1. Simple error (uses defaults)
35
+ * throw new CustomError("Something went wrong");
36
+ *
37
+ * // 2. Custom Not Found Error
38
+ * throw new CustomError(
39
+ * "User with email 'john@example.com' not found in tenant 'abc123'",
40
+ * 404,
41
+ * "UserNotFoundError",
42
+ * "user_not_found",
43
+ * "user.not_found"
44
+ * );
45
+ *
46
+ */
47
+ constructor(message: string, statusCode?: number, errorName?: string, errorType?: string, returnMessage?: string);
48
+ }
49
+ export declare class InfrastructureError extends Error {
50
+ constructor(message: string);
51
+ }
52
+ export type ControllerValidationErrorObj = {
53
+ [key: string]: string;
54
+ };
55
+ interface HandleErrorOptions {
56
+ validationError?: ErrorReturnConfig;
57
+ notFoundError?: ErrorReturnConfig;
58
+ conflictError?: ErrorReturnConfig;
59
+ internalError?: Omit<ErrorReturnConfig, "returnMessage">;
60
+ applicationError?: {
61
+ onError?: () => void;
62
+ };
63
+ }
64
+ interface ErrorReturnConfig {
65
+ logMessage?: string;
66
+ returnMessage?: string | Error;
67
+ onError?: () => void;
68
+ }
69
+ export declare function ErrorResponse(error: Error | unknown, reply: FastifyReply, span: Span, logger: pino.Logger, options?: HandleErrorOptions): FastifyReply<import("fastify").RouteGenericInterface, import("fastify").RawServerDefault, import("http").IncomingMessage, import("http").ServerResponse<import("http").IncomingMessage>, unknown, import("fastify").FastifySchema, import("fastify").FastifyTypeProviderDefault, unknown>;
70
+ export {};
71
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,qBAAa,WAAY,SAAQ,KAAK;gBACxB,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,eAAgB,SAAQ,WAAW;gBAClC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,aAAc,SAAQ,WAAW;gBAChC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,aAAc,SAAQ,WAAW;gBAChC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,WAAY,SAAQ,WAAW;IAC1C,gDAAgD;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;;;;;;;;;;;;;;;;;;;;OAuBG;gBACS,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM;CAOjH;AAED,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM;CAI5B;AAED,MAAM,MAAM,4BAA4B,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC;AAErE,UAAU,kBAAkB;IAC1B,eAAe,CAAC,EAAE,iBAAiB,CAAC;IACpC,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,aAAa,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;IACzD,gBAAgB,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC;CAC7C;AAED,UAAU,iBAAiB;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,KAAK,GAAG,OAAO,EACtB,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,OAAO,CAAC,EAAE,kBAAkB,6RAoF7B"}
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InfrastructureError = exports.CustomError = exports.ConflictError = exports.NotFoundError = exports.ValidationError = exports.DomainError = void 0;
4
+ exports.ErrorResponse = ErrorResponse;
5
+ class DomainError extends Error {
6
+ constructor(message) {
7
+ super(message);
8
+ this.name = "DomainError";
9
+ }
10
+ }
11
+ exports.DomainError = DomainError;
12
+ class ValidationError extends DomainError {
13
+ constructor(message) {
14
+ super(message);
15
+ this.name = "ValidationError";
16
+ }
17
+ }
18
+ exports.ValidationError = ValidationError;
19
+ class NotFoundError extends DomainError {
20
+ constructor(message) {
21
+ super(message);
22
+ this.name = "NotFoundError";
23
+ }
24
+ }
25
+ exports.NotFoundError = NotFoundError;
26
+ class ConflictError extends DomainError {
27
+ constructor(message) {
28
+ super(message);
29
+ this.name = "ConflictError";
30
+ }
31
+ }
32
+ exports.ConflictError = ConflictError;
33
+ class CustomError extends DomainError {
34
+ /**
35
+ * Creates a new CustomError instance with full control over error properties
36
+ *
37
+ * @param message - Detailed internal error message for logging and debugging
38
+ * @param statusCode - HTTP status code (default: 500)
39
+ * @param errorName - Custom error name for identification and handling (default: "CustomError")
40
+ * @param errorType - Error type for tracing and monitoring (default: "custom_error")
41
+ * @param returnMessage - Optional message to return to client
42
+ *
43
+ * @example Basic Usage Examples
44
+ * ```typescript
45
+ * // 1. Simple error (uses defaults)
46
+ * throw new CustomError("Something went wrong");
47
+ *
48
+ * // 2. Custom Not Found Error
49
+ * throw new CustomError(
50
+ * "User with email 'john@example.com' not found in tenant 'abc123'",
51
+ * 404,
52
+ * "UserNotFoundError",
53
+ * "user_not_found",
54
+ * "user.not_found"
55
+ * );
56
+ *
57
+ */
58
+ constructor(message, statusCode, errorName, errorType, returnMessage) {
59
+ super(message);
60
+ this.name = errorName || "CustomError";
61
+ this.errorType = errorType || "custom_error";
62
+ this.statusCode = statusCode || 500;
63
+ this.returnMessage = returnMessage;
64
+ }
65
+ }
66
+ exports.CustomError = CustomError;
67
+ class InfrastructureError extends Error {
68
+ constructor(message) {
69
+ super(message);
70
+ this.name = "InfrastructureError";
71
+ }
72
+ }
73
+ exports.InfrastructureError = InfrastructureError;
74
+ function ErrorResponse(error, reply, span, logger, options) {
75
+ span.recordException(error);
76
+ span.setAttributes({
77
+ "error.message": error.message,
78
+ "operation.success": false,
79
+ });
80
+ if (error instanceof ValidationError) {
81
+ span.setAttributes({
82
+ "error.type": "validation_error",
83
+ "http.status_code": 400,
84
+ });
85
+ logger.warn({ error: error?.message || error }, "Validation Error");
86
+ if (options?.validationError?.onError) {
87
+ options.validationError.onError();
88
+ }
89
+ return reply.status(400).send({
90
+ message: options?.validationError?.returnMessage ||
91
+ options?.validationError?.returnMessage?.message ||
92
+ "common.invalid_request",
93
+ });
94
+ }
95
+ if (error instanceof NotFoundError) {
96
+ span.setAttributes({
97
+ "error.type": "not_found_error",
98
+ "http.status_code": 404,
99
+ });
100
+ logger.warn({ error: error?.message || error }, "Not Found Error");
101
+ if (options?.notFoundError?.onError) {
102
+ options.notFoundError.onError();
103
+ }
104
+ return reply.status(404).send({
105
+ message: options?.notFoundError?.returnMessage ||
106
+ options?.notFoundError?.returnMessage?.message ||
107
+ "common.not_found_error",
108
+ });
109
+ }
110
+ if (error instanceof ConflictError) {
111
+ span.setAttributes({
112
+ "error.type": "conflict_error",
113
+ "http.status_code": 409,
114
+ });
115
+ logger.warn({ error: error?.message || error }, "Conflict Error");
116
+ if (options?.conflictError?.onError) {
117
+ options.conflictError.onError();
118
+ }
119
+ return reply.status(409).send({
120
+ message: options?.conflictError?.returnMessage ||
121
+ options?.conflictError?.returnMessage?.message ||
122
+ "common.conflict_error",
123
+ });
124
+ }
125
+ if (error instanceof CustomError) {
126
+ span.setAttributes({
127
+ "error.type": error.errorType,
128
+ "http.status_code": error.statusCode,
129
+ });
130
+ logger.warn({ error: error?.message || error }, error.name);
131
+ if (options?.applicationError?.onError) {
132
+ options.applicationError.onError();
133
+ }
134
+ return reply.status(error.statusCode).send({
135
+ message: error.returnMessage || "common.internal_server_error",
136
+ });
137
+ }
138
+ span.setAttributes({
139
+ "error.type": "internal_error",
140
+ "http.status_code": 500,
141
+ });
142
+ logger.error({ error: error?.message || error }, "Internal Server Error");
143
+ if (options?.internalError?.onError) {
144
+ options.internalError.onError?.();
145
+ }
146
+ return reply
147
+ .status(500)
148
+ .send({ message: "common.internal_server_error", detail: "Something went wrong. Please try again later." });
149
+ }
150
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export * from "./auth/AuthMiddleware";
2
+ export * from "./logging/EventLogMiddleware";
3
+ export * from "./auth/ImplementModeMiddleware";
4
+ export * from "./types/AuthTypes";
5
+ export * from "./domain/entities/OutboxEvent";
6
+ export * from "./domain/repositories/OutboxRepository";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mBAAmB,CAAC;AAClC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wCAAwC,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./auth/AuthMiddleware"), exports);
18
+ __exportStar(require("./logging/EventLogMiddleware"), exports);
19
+ __exportStar(require("./auth/ImplementModeMiddleware"), exports);
20
+ __exportStar(require("./types/AuthTypes"), exports);
21
+ __exportStar(require("./domain/entities/OutboxEvent"), exports);
22
+ __exportStar(require("./domain/repositories/OutboxRepository"), exports);
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,+DAA6C;AAC7C,iEAA+C;AAC/C,oDAAkC;AAClC,gEAA8C;AAC9C,yEAAuD"}
@@ -0,0 +1,14 @@
1
+ import { RedisClientType } from "redis";
2
+ export declare class RedisClient {
3
+ private static instance;
4
+ private static logger;
5
+ static getInstance(): Promise<RedisClientType>;
6
+ static duplicate(): Promise<RedisClientType>;
7
+ private static createInstance;
8
+ static disconnect(): Promise<void>;
9
+ static set(key: string, value: string, ttlSeconds?: number): Promise<void>;
10
+ static get(key: string): Promise<string | null>;
11
+ static del(key: string): Promise<void>;
12
+ static generateKey(prefix: string, ...parts: string[]): string;
13
+ }
14
+ //# sourceMappingURL=RedisClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RedisClient.d.ts","sourceRoot":"","sources":["../../src/infrastructure/RedisClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,eAAe,EAAE,MAAM,OAAO,CAAC;AAGtD,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAkB;IACzC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAgD;WAExD,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC;WAOvC,SAAS,IAAI,OAAO,CAAC,eAAe,CAAC;mBAS7B,cAAc;WAuBtB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;WAM3B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;WASnE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;WAKxC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5C,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM;CAG/D"}