@defai.digital/cross-cutting 13.0.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retention-manager.js","sourceRoot":"","sources":["../src/retention-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Saga Manager Implementation
3
+ *
4
+ * Implements the saga pattern for distributed transaction compensation.
5
+ * Enables automatic rollback of completed steps on failure.
6
+ *
7
+ * Invariants:
8
+ * - INV-SG-001: Compensations run in reverse order on failure
9
+ * - INV-SG-002: Required compensations must succeed
10
+ * - INV-SG-003: Saga state transitions are valid
11
+ */
12
+ import { type SagaDefinition, type SagaState, type SagaStep, type CompensationAction, type SagaResult } from '@defai.digital/contracts';
13
+ /**
14
+ * Saga step executor function
15
+ */
16
+ export type SagaStepExecutor<T = unknown> = (step: SagaStep, context: Record<string, unknown>) => Promise<T>;
17
+ /**
18
+ * Compensation executor function
19
+ */
20
+ export type CompensationExecutor = (action: CompensationAction, context: Record<string, unknown>) => Promise<void>;
21
+ /**
22
+ * Saga manager for orchestrating distributed transactions
23
+ */
24
+ export interface SagaManager {
25
+ /** Get saga definition */
26
+ getDefinition(): SagaDefinition;
27
+ /** Execute the saga with given steps */
28
+ execute(steps: SagaStep[], stepExecutor: SagaStepExecutor, compensationExecutor: CompensationExecutor, correlationId?: string): Promise<SagaResult>;
29
+ /** Get current state */
30
+ getState(): SagaState | null;
31
+ /** Manually trigger compensation */
32
+ compensate(): Promise<void>;
33
+ }
34
+ /**
35
+ * Creates a saga manager
36
+ */
37
+ export declare function createSagaManager(definition: SagaDefinition): SagaManager;
38
+ /**
39
+ * Creates a simple saga definition
40
+ */
41
+ export declare function defineSaga(sagaId: string, compensations: CompensationAction[], options?: {
42
+ onFailure?: 'compensate' | 'pause' | 'continue';
43
+ compensationOrder?: 'reverse' | 'parallel';
44
+ workflowId?: string;
45
+ description?: string;
46
+ }): SagaDefinition;
47
+ /**
48
+ * Saga error
49
+ */
50
+ export declare class SagaError extends Error {
51
+ readonly code: string;
52
+ constructor(code: string, message?: string);
53
+ static stepFailed(stepId: string, error: string): SagaError;
54
+ static compensationFailed(stepId: string, error: string): SagaError;
55
+ static sagaNotFound(sagaId: string): SagaError;
56
+ }
57
+ //# sourceMappingURL=saga-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"saga-manager.d.ts","sourceRoot":"","sources":["../src/saga-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,kBAAkB,EACvB,KAAK,UAAU,EAKhB,MAAM,0BAA0B,CAAC;AAElC;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,GAAG,OAAO,IAAI,CAC1C,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC7B,OAAO,CAAC,CAAC,CAAC,CAAC;AAEhB;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,CACjC,MAAM,EAAE,kBAAkB,EAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC7B,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,0BAA0B;IAC1B,aAAa,IAAI,cAAc,CAAC;IAEhC,wCAAwC;IACxC,OAAO,CACL,KAAK,EAAE,QAAQ,EAAE,EACjB,YAAY,EAAE,gBAAgB,EAC9B,oBAAoB,EAAE,oBAAoB,EAC1C,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvB,wBAAwB;IACxB,QAAQ,IAAI,SAAS,GAAG,IAAI,CAAC;IAE7B,oCAAoC;IACpC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,cAAc,GAAG,WAAW,CAwMzE;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,kBAAkB,EAAE,EACnC,OAAO,GAAE;IACP,SAAS,CAAC,EAAE,YAAY,GAAG,OAAO,GAAG,UAAU,CAAC;IAChD,iBAAiB,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACjB,GACL,cAAc,CAShB;AAED;;GAEG;AACH,qBAAa,SAAU,SAAQ,KAAK;aAEhB,IAAI,EAAE,MAAM;gBAAZ,IAAI,EAAE,MAAM,EAC5B,OAAO,CAAC,EAAE,MAAM;IAMlB,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS;IAO3D,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS;IAOnE,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;CAM/C"}
@@ -0,0 +1,202 @@
1
+ /**
2
+ * Saga Manager Implementation
3
+ *
4
+ * Implements the saga pattern for distributed transaction compensation.
5
+ * Enables automatic rollback of completed steps on failure.
6
+ *
7
+ * Invariants:
8
+ * - INV-SG-001: Compensations run in reverse order on failure
9
+ * - INV-SG-002: Required compensations must succeed
10
+ * - INV-SG-003: Saga state transitions are valid
11
+ */
12
+ import { createInitialSagaState, isValidSagaTransition, SagaErrorCodes, } from '@defai.digital/contracts';
13
+ /**
14
+ * Creates a saga manager
15
+ */
16
+ export function createSagaManager(definition) {
17
+ let state = null;
18
+ let compensationExec = null;
19
+ let context = {};
20
+ /**
21
+ * Update saga state with transition validation
22
+ * INV-SG-003: State transitions are valid
23
+ */
24
+ function transitionTo(newStatus) {
25
+ if (!state)
26
+ return;
27
+ if (!isValidSagaTransition(state.status, newStatus)) {
28
+ throw new SagaError(SagaErrorCodes.INVALID_STATE_TRANSITION, `Invalid state transition from ${state.status} to ${newStatus}`);
29
+ }
30
+ state = { ...state, status: newStatus };
31
+ }
32
+ /**
33
+ * Execute compensations
34
+ * INV-SG-001: Execute in reverse order
35
+ */
36
+ async function executeCompensations() {
37
+ if (!state || !compensationExec)
38
+ return;
39
+ transitionTo('compensating');
40
+ // Get compensations for completed steps in reverse order
41
+ const completedStepIds = [...state.completedSteps].reverse();
42
+ for (const stepId of completedStepIds) {
43
+ const compensation = definition.compensations.find((c) => c.stepId === stepId);
44
+ if (!compensation)
45
+ continue;
46
+ // Already compensated
47
+ if (state.compensatedSteps.includes(stepId))
48
+ continue;
49
+ let retries = 0;
50
+ let success = false;
51
+ while (retries <= compensation.retryCount && !success) {
52
+ try {
53
+ await compensationExec(compensation, context);
54
+ state.compensatedSteps.push(stepId);
55
+ success = true;
56
+ }
57
+ catch (error) {
58
+ retries++;
59
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
60
+ state.compensationErrors.push({
61
+ stepId,
62
+ error: errorMessage,
63
+ timestamp: new Date().toISOString(),
64
+ retryCount: retries,
65
+ });
66
+ // INV-SG-002: Required compensations must succeed
67
+ if (retries > compensation.retryCount) {
68
+ if (compensation.required) {
69
+ transitionTo('failed');
70
+ throw new SagaError(SagaErrorCodes.REQUIRED_COMPENSATION_FAILED, `Required compensation for step ${stepId} failed: ${errorMessage}`);
71
+ }
72
+ // Non-required compensation failed, continue
73
+ break;
74
+ }
75
+ }
76
+ }
77
+ }
78
+ transitionTo('compensated');
79
+ }
80
+ return {
81
+ getDefinition() {
82
+ return { ...definition };
83
+ },
84
+ async execute(steps, stepExecutor, compensationExecutor, correlationId) {
85
+ compensationExec = compensationExecutor;
86
+ context = {};
87
+ // Initialize saga state
88
+ state = createInitialSagaState(definition.sagaId, correlationId);
89
+ const startTime = Date.now();
90
+ const results = [];
91
+ try {
92
+ // Execute each step
93
+ for (const step of steps) {
94
+ try {
95
+ const result = await stepExecutor(step, context);
96
+ results.push(result);
97
+ // Record completed step
98
+ state.completedSteps.push(step.stepId);
99
+ // Store output in context for subsequent steps
100
+ context[step.stepId] = result;
101
+ }
102
+ catch (error) {
103
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
104
+ state.failedStep = step.stepId;
105
+ state.failureReason = errorMessage;
106
+ // Execute compensations based on strategy
107
+ if (definition.onFailure === 'compensate') {
108
+ await executeCompensations();
109
+ }
110
+ else if (definition.onFailure === 'pause') {
111
+ transitionTo('paused');
112
+ }
113
+ if (state.status !== 'compensated') {
114
+ transitionTo('failed');
115
+ }
116
+ state.completedAt = new Date().toISOString();
117
+ return {
118
+ success: false,
119
+ executionId: state.executionId,
120
+ error: errorMessage,
121
+ compensated: state.status === 'compensated',
122
+ durationMs: Date.now() - startTime,
123
+ finalStatus: state.status,
124
+ };
125
+ }
126
+ }
127
+ transitionTo('completed');
128
+ state.completedAt = new Date().toISOString();
129
+ return {
130
+ success: true,
131
+ executionId: state.executionId,
132
+ results,
133
+ durationMs: Date.now() - startTime,
134
+ finalStatus: state.status,
135
+ };
136
+ }
137
+ catch (error) {
138
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
139
+ if (state) {
140
+ if (state.status !== 'failed') {
141
+ state.status = 'failed';
142
+ }
143
+ state.failureReason = errorMessage;
144
+ state.completedAt = new Date().toISOString();
145
+ }
146
+ return {
147
+ success: false,
148
+ executionId: state?.executionId ?? '',
149
+ error: errorMessage,
150
+ durationMs: Date.now() - startTime,
151
+ finalStatus: 'failed',
152
+ };
153
+ }
154
+ },
155
+ getState() {
156
+ return state ? { ...state } : null;
157
+ },
158
+ async compensate() {
159
+ if (!state) {
160
+ throw new SagaError(SagaErrorCodes.SAGA_NOT_FOUND, 'No saga state to compensate');
161
+ }
162
+ if (state.status !== 'paused' && state.status !== 'running') {
163
+ throw new SagaError(SagaErrorCodes.INVALID_STATE_TRANSITION, `Cannot compensate saga in ${state.status} state`);
164
+ }
165
+ await executeCompensations();
166
+ },
167
+ };
168
+ }
169
+ /**
170
+ * Creates a simple saga definition
171
+ */
172
+ export function defineSaga(sagaId, compensations, options = {}) {
173
+ return {
174
+ sagaId,
175
+ compensations,
176
+ onFailure: options.onFailure ?? 'compensate',
177
+ compensationOrder: options.compensationOrder ?? 'reverse',
178
+ workflowId: options.workflowId,
179
+ description: options.description,
180
+ };
181
+ }
182
+ /**
183
+ * Saga error
184
+ */
185
+ export class SagaError extends Error {
186
+ code;
187
+ constructor(code, message) {
188
+ super(message ?? `Saga error: ${code}`);
189
+ this.code = code;
190
+ this.name = 'SagaError';
191
+ }
192
+ static stepFailed(stepId, error) {
193
+ return new SagaError(SagaErrorCodes.STEP_FAILED, `Saga step ${stepId} failed: ${error}`);
194
+ }
195
+ static compensationFailed(stepId, error) {
196
+ return new SagaError(SagaErrorCodes.COMPENSATION_FAILED, `Compensation for ${stepId} failed: ${error}`);
197
+ }
198
+ static sagaNotFound(sagaId) {
199
+ return new SagaError(SagaErrorCodes.SAGA_NOT_FOUND, `Saga not found: ${sagaId}`);
200
+ }
201
+ }
202
+ //# sourceMappingURL=saga-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"saga-manager.js","sourceRoot":"","sources":["../src/saga-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAOL,sBAAsB,EACtB,qBAAqB,EACrB,cAAc,GACf,MAAM,0BAA0B,CAAC;AAwClC;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAA0B;IAC1D,IAAI,KAAK,GAAqB,IAAI,CAAC;IACnC,IAAI,gBAAgB,GAAgC,IAAI,CAAC;IACzD,IAAI,OAAO,GAA4B,EAAE,CAAC;IAE1C;;;OAGG;IACH,SAAS,YAAY,CAAC,SAAqB;QACzC,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,SAAS,CACjB,cAAc,CAAC,wBAAwB,EACvC,iCAAiC,KAAK,CAAC,MAAM,OAAO,SAAS,EAAE,CAChE,CAAC;QACJ,CAAC;QAED,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACH,KAAK,UAAU,oBAAoB;QACjC,IAAI,CAAC,KAAK,IAAI,CAAC,gBAAgB;YAAE,OAAO;QAExC,YAAY,CAAC,cAAc,CAAC,CAAC;QAE7B,yDAAyD;QACzD,MAAM,gBAAgB,GAAG,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE,CAAC;QAE7D,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;YACtC,MAAM,YAAY,GAAG,UAAU,CAAC,aAAa,CAAC,IAAI,CAChD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAC3B,CAAC;YAEF,IAAI,CAAC,YAAY;gBAAE,SAAS;YAE5B,sBAAsB;YACtB,IAAI,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,SAAS;YAEtD,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,IAAI,OAAO,GAAG,KAAK,CAAC;YAEpB,OAAO,OAAO,IAAI,YAAY,CAAC,UAAU,IAAI,CAAC,OAAO,EAAE,CAAC;gBACtD,IAAI,CAAC;oBACH,MAAM,gBAAgB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;oBAC9C,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACpC,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,EAAE,CAAC;oBACV,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;oBAE3D,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC;wBAC5B,MAAM;wBACN,KAAK,EAAE,YAAY;wBACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;wBACnC,UAAU,EAAE,OAAO;qBACpB,CAAC,CAAC;oBAEH,kDAAkD;oBAClD,IAAI,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,CAAC;wBACtC,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC;4BAC1B,YAAY,CAAC,QAAQ,CAAC,CAAC;4BACvB,MAAM,IAAI,SAAS,CACjB,cAAc,CAAC,4BAA4B,EAC3C,kCAAkC,MAAM,YAAY,YAAY,EAAE,CACnE,CAAC;wBACJ,CAAC;wBACD,6CAA6C;wBAC7C,MAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,YAAY,CAAC,aAAa,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO;QACL,aAAa;YACX,OAAO,EAAE,GAAG,UAAU,EAAE,CAAC;QAC3B,CAAC;QAED,KAAK,CAAC,OAAO,CACX,KAAiB,EACjB,YAA8B,EAC9B,oBAA0C,EAC1C,aAAsB;YAEtB,gBAAgB,GAAG,oBAAoB,CAAC;YACxC,OAAO,GAAG,EAAE,CAAC;YAEb,wBAAwB;YACxB,KAAK,GAAG,sBAAsB,CAAC,UAAU,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;YAEjE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAc,EAAE,CAAC;YAE9B,IAAI,CAAC;gBACH,oBAAoB;gBACpB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;wBACjD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBAErB,wBAAwB;wBACxB,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBAEvC,+CAA+C;wBAC/C,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;oBAChC,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;wBAE3D,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;wBAC/B,KAAK,CAAC,aAAa,GAAG,YAAY,CAAC;wBAEnC,0CAA0C;wBAC1C,IAAI,UAAU,CAAC,SAAS,KAAK,YAAY,EAAE,CAAC;4BAC1C,MAAM,oBAAoB,EAAE,CAAC;wBAC/B,CAAC;6BAAM,IAAI,UAAU,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;4BAC5C,YAAY,CAAC,QAAQ,CAAC,CAAC;wBACzB,CAAC;wBAED,IAAI,KAAK,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;4BACnC,YAAY,CAAC,QAAQ,CAAC,CAAC;wBACzB,CAAC;wBAED,KAAK,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;wBAE7C,OAAO;4BACL,OAAO,EAAE,KAAK;4BACd,WAAW,EAAE,KAAK,CAAC,WAAW;4BAC9B,KAAK,EAAE,YAAY;4BACnB,WAAW,EAAE,KAAK,CAAC,MAAM,KAAK,aAAa;4BAC3C,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;4BAClC,WAAW,EAAE,KAAK,CAAC,MAAM;yBAC1B,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAED,YAAY,CAAC,WAAW,CAAC,CAAC;gBAC1B,KAAK,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBAE7C,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,WAAW,EAAE,KAAK,CAAC,WAAW;oBAC9B,OAAO;oBACP,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;oBAClC,WAAW,EAAE,KAAK,CAAC,MAAM;iBAC1B,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;gBAE3D,IAAI,KAAK,EAAE,CAAC;oBACV,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;wBAC9B,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC;oBAC1B,CAAC;oBACD,KAAK,CAAC,aAAa,GAAG,YAAY,CAAC;oBACnC,KAAK,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBAC/C,CAAC;gBAED,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,WAAW,EAAE,KAAK,EAAE,WAAW,IAAI,EAAE;oBACrC,KAAK,EAAE,YAAY;oBACnB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;oBAClC,WAAW,EAAE,QAAQ;iBACtB,CAAC;YACJ,CAAC;QACH,CAAC;QAED,QAAQ;YACN,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACrC,CAAC;QAED,KAAK,CAAC,UAAU;YACd,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,IAAI,SAAS,CACjB,cAAc,CAAC,cAAc,EAC7B,6BAA6B,CAC9B,CAAC;YACJ,CAAC;YAED,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC5D,MAAM,IAAI,SAAS,CACjB,cAAc,CAAC,wBAAwB,EACvC,6BAA6B,KAAK,CAAC,MAAM,QAAQ,CAClD,CAAC;YACJ,CAAC;YAED,MAAM,oBAAoB,EAAE,CAAC;QAC/B,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CACxB,MAAc,EACd,aAAmC,EACnC,UAKI,EAAE;IAEN,OAAO;QACL,MAAM;QACN,aAAa;QACb,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,YAAY;QAC5C,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,IAAI,SAAS;QACzD,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,WAAW,EAAE,OAAO,CAAC,WAAW;KACjC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,SAAU,SAAQ,KAAK;IAEhB;IADlB,YACkB,IAAY,EAC5B,OAAgB;QAEhB,KAAK,CAAC,OAAO,IAAI,eAAe,IAAI,EAAE,CAAC,CAAC;QAHxB,SAAI,GAAJ,IAAI,CAAQ;QAI5B,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,MAAc,EAAE,KAAa;QAC7C,OAAO,IAAI,SAAS,CAClB,cAAc,CAAC,WAAW,EAC1B,aAAa,MAAM,YAAY,KAAK,EAAE,CACvC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,MAAc,EAAE,KAAa;QACrD,OAAO,IAAI,SAAS,CAClB,cAAc,CAAC,mBAAmB,EAClC,oBAAoB,MAAM,YAAY,KAAK,EAAE,CAC9C,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,MAAc;QAChC,OAAO,IAAI,SAAS,CAClB,cAAc,CAAC,cAAc,EAC7B,mBAAmB,MAAM,EAAE,CAC5B,CAAC;IACJ,CAAC;CACF"}
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "@defai.digital/cross-cutting",
3
+ "version": "13.0.3",
4
+ "type": "module",
5
+ "description": "Cross-cutting concerns for AutomatosX - DLQ, Saga, Retention, Idempotency",
6
+ "license": "Apache-2.0",
7
+ "author": "DEFAI Private Limited",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "https://github.com/defai-digital/automatosx.git",
11
+ "directory": "packages/core/cross-cutting"
12
+ },
13
+ "homepage": "https://github.com/defai-digital/automatosx#readme",
14
+ "bugs": {
15
+ "url": "https://github.com/defai-digital/automatosx/issues"
16
+ },
17
+ "main": "./dist/index.js",
18
+ "types": "./dist/index.d.ts",
19
+ "exports": {
20
+ ".": {
21
+ "types": "./dist/index.d.ts",
22
+ "import": "./dist/index.js"
23
+ }
24
+ },
25
+ "files": [
26
+ "dist"
27
+ ],
28
+ "engines": {
29
+ "node": ">=20.0.0"
30
+ },
31
+ "publishConfig": {
32
+ "access": "public"
33
+ },
34
+ "dependencies": {
35
+ "@defai.digital/contracts": "13.0.3"
36
+ },
37
+ "scripts": {
38
+ "build": "tsc --build",
39
+ "clean": "rm -rf dist *.tsbuildinfo"
40
+ }
41
+ }