nestjs-serverless-workflow 0.0.8 → 0.1.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.
- package/dist/adapter/durable-lambda.adapter.d.ts.map +1 -1
- package/dist/adapter/durable-lambda.adapter.js +52 -10
- package/dist/adapter/durable-lambda.adapter.js.map +1 -1
- package/dist/core/providers/orchestrator.service.d.ts +2 -6
- package/dist/core/providers/orchestrator.service.d.ts.map +1 -1
- package/dist/core/providers/orchestrator.service.js +8 -8
- package/dist/core/providers/orchestrator.service.js.map +1 -1
- package/dist/core/providers/router.service.d.ts +2 -1
- package/dist/core/providers/router.service.d.ts.map +1 -1
- package/dist/core/providers/router.service.js +12 -2
- package/dist/core/providers/router.service.js.map +1 -1
- package/dist/core/types/shared.type.d.ts +8 -0
- package/dist/core/types/shared.type.d.ts.map +1 -1
- package/dist/core/types/transit-result.type.d.ts +3 -0
- package/dist/core/types/transit-result.type.d.ts.map +1 -1
- package/dist/core/types/workflow-definition.interface.d.ts +14 -2
- package/dist/core/types/workflow-definition.interface.d.ts.map +1 -1
- package/package.json +4 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"durable-lambda.adapter.d.ts","sourceRoot":"","sources":["../../packages/adapter/durable-lambda.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"durable-lambda.adapter.d.ts","sourceRoot":"","sources":["../../packages/adapter/durable-lambda.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAI9D,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,GAAG,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACxD,eAAe,CAAC,CAAC,EACf,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EACjD,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE;YAAE,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,GAC7E,OAAO,CAAC,CAAC,CAAC,CAAC;IACd,IAAI,CAAC,QAAQ,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtF,MAAM,EAAE;QAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,CAAA;KAAE,CAAC;CACjD;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,MAAM,EAAE,OAAO,EACjD,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,KAAK,OAAO,CAAC,OAAO,CAAC,KAC/D,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAmBnD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,yBAAyB;;;;EAyErC,CAAC"}
|
|
@@ -1,4 +1,21 @@
|
|
|
1
|
-
import { OrchestratorService } from '../core/index.js';
|
|
1
|
+
import { OrchestratorService, RetryBackoff } from '../core/index.js';
|
|
2
|
+
import { UnretriableException } from '../exception/unretriable.exception.js';
|
|
3
|
+
const DEFAULT_CALLBACK_TIMEOUT = { hours: 24 };
|
|
4
|
+
/**
|
|
5
|
+
* Parse a callback result from the SDK.
|
|
6
|
+
* The real SDK delivers callback results as JSON strings via SendDurableExecutionCallbackSuccess.
|
|
7
|
+
*/
|
|
8
|
+
function parseCallbackResult(raw) {
|
|
9
|
+
if (typeof raw === 'string') {
|
|
10
|
+
try {
|
|
11
|
+
return JSON.parse(raw);
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return raw;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return raw;
|
|
18
|
+
}
|
|
2
19
|
/**
|
|
3
20
|
* Creates a Lambda handler that wraps the workflow orchestrator in a durable execution.
|
|
4
21
|
*
|
|
@@ -22,18 +39,18 @@ export const DurableLambdaEventHandler = (app, withDurableExecution) => {
|
|
|
22
39
|
};
|
|
23
40
|
let iteration = 0;
|
|
24
41
|
while (true) {
|
|
25
|
-
const result = await orchestrator
|
|
42
|
+
const result = await transitWithRetry(orchestrator, currentEvent, iteration, ctx);
|
|
26
43
|
switch (result.status) {
|
|
27
44
|
case 'final':
|
|
28
45
|
return { urn: event.urn, status: 'completed', state: result.state };
|
|
29
46
|
case 'idle': {
|
|
30
|
-
const
|
|
47
|
+
const timeout = result.timeout ?? DEFAULT_CALLBACK_TIMEOUT;
|
|
48
|
+
const raw = await ctx.waitForCallback(`idle:${result.state}:${iteration}`, async (callbackId) => {
|
|
31
49
|
// External systems use this callbackId to resume the workflow
|
|
32
50
|
// via SendDurableExecutionCallbackSuccess Lambda API
|
|
33
51
|
ctx.logger.info(`Waiting for callback at idle state ${result.state}`, { callbackId });
|
|
34
|
-
},
|
|
35
|
-
|
|
36
|
-
{ timeout: { hours: 24 } });
|
|
52
|
+
}, { timeout });
|
|
53
|
+
const callbackPayload = parseCallbackResult(raw);
|
|
37
54
|
currentEvent = {
|
|
38
55
|
event: callbackPayload.event,
|
|
39
56
|
urn: event.urn,
|
|
@@ -49,12 +66,12 @@ export const DurableLambdaEventHandler = (app, withDurableExecution) => {
|
|
|
49
66
|
break;
|
|
50
67
|
}
|
|
51
68
|
case 'no_transition': {
|
|
69
|
+
const timeout = result.timeout ?? DEFAULT_CALLBACK_TIMEOUT;
|
|
52
70
|
// No unambiguous auto-transition — wait for explicit event via callback
|
|
53
|
-
const
|
|
71
|
+
const raw = await ctx.waitForCallback(`awaiting:${result.state}:${iteration}`, async (callbackId) => {
|
|
54
72
|
ctx.logger.info(`No auto-transition from ${result.state}, waiting for explicit event`, { callbackId });
|
|
55
|
-
},
|
|
56
|
-
|
|
57
|
-
{ timeout: { hours: 24 } });
|
|
73
|
+
}, { timeout });
|
|
74
|
+
const noTransitionPayload = parseCallbackResult(raw);
|
|
58
75
|
currentEvent = {
|
|
59
76
|
event: noTransitionPayload.event,
|
|
60
77
|
urn: event.urn,
|
|
@@ -68,4 +85,29 @@ export const DurableLambdaEventHandler = (app, withDurableExecution) => {
|
|
|
68
85
|
}
|
|
69
86
|
});
|
|
70
87
|
};
|
|
88
|
+
/**
|
|
89
|
+
* Wraps `orchestrator.transit()` with retry logic when the handler has `@WithRetry()` config.
|
|
90
|
+
* Each attempt is checkpointed via `ctx.step()` so replays skip completed attempts.
|
|
91
|
+
*/
|
|
92
|
+
async function transitWithRetry(orchestrator, currentEvent, iteration, ctx) {
|
|
93
|
+
const retryConfig = orchestrator.getRetryConfig(currentEvent.event);
|
|
94
|
+
const maxAttempts = retryConfig?.maxAttempts ?? 1;
|
|
95
|
+
let lastError;
|
|
96
|
+
for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
|
97
|
+
try {
|
|
98
|
+
return await ctx.step(`transit:${currentEvent.event}:${iteration}:${attempt}`, () => orchestrator.transit(currentEvent));
|
|
99
|
+
}
|
|
100
|
+
catch (e) {
|
|
101
|
+
if (e instanceof UnretriableException)
|
|
102
|
+
throw e;
|
|
103
|
+
lastError = e;
|
|
104
|
+
if (attempt < maxAttempts - 1) {
|
|
105
|
+
const delay = RetryBackoff.calculateDelay(attempt, retryConfig);
|
|
106
|
+
ctx.logger.info(`Handler ${currentEvent.event} failed (attempt ${attempt + 1}/${maxAttempts}), retrying in ${delay}ms`);
|
|
107
|
+
await ctx.wait({ seconds: Math.ceil(delay / 1000) });
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
throw lastError;
|
|
112
|
+
}
|
|
71
113
|
//# sourceMappingURL=durable-lambda.adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"durable-lambda.adapter.js","sourceRoot":"","sources":["../../packages/adapter/durable-lambda.adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"durable-lambda.adapter.js","sourceRoot":"","sources":["../../packages/adapter/durable-lambda.adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,8 @@
|
|
|
1
|
-
import { type TransitResult } from '../../core/index.js';
|
|
1
|
+
import { type IBackoffRetryConfig, type TransitResult } from '../../core/index.js';
|
|
2
2
|
import { type OnModuleInit } from '@nestjs/common';
|
|
3
3
|
import { DiscoveryService, ModuleRef } from '@nestjs/core';
|
|
4
4
|
import type { IWorkflowEvent } from '../types/workflow-event.interface.js';
|
|
5
5
|
import { StateRouterHelperFactory } from './router.factory.js';
|
|
6
|
-
/**
|
|
7
|
-
* TODO:
|
|
8
|
-
* 1. Retry Service: Retry in state handler level via `IRetryHandler`
|
|
9
|
-
* +) Bind configs to lambda retry config
|
|
10
|
-
*/
|
|
11
6
|
export declare class OrchestratorService implements OnModuleInit {
|
|
12
7
|
private readonly discoveryService;
|
|
13
8
|
private readonly routerHelperFactory;
|
|
@@ -16,6 +11,7 @@ export declare class OrchestratorService implements OnModuleInit {
|
|
|
16
11
|
private readonly logger;
|
|
17
12
|
constructor(discoveryService: DiscoveryService, routerHelperFactory: StateRouterHelperFactory, moduleRef: ModuleRef);
|
|
18
13
|
onModuleInit(): void;
|
|
14
|
+
getRetryConfig(event: string): IBackoffRetryConfig | undefined;
|
|
19
15
|
transit(params: IWorkflowEvent): Promise<TransitResult>;
|
|
20
16
|
}
|
|
21
17
|
//# sourceMappingURL=orchestrator.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.service.d.ts","sourceRoot":"","sources":["../../../packages/core/providers/orchestrator.service.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"orchestrator.service.d.ts","sourceRoot":"","sources":["../../../packages/core/providers/orchestrator.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,mBAAmB,EAMxB,KAAK,aAAa,EACnB,MAAM,QAAQ,CAAC;AAEhB,OAAO,EAA2C,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,qBACa,mBAAoB,YAAW,YAAY;IAKpD,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAN5B,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwC;IAE/D,YACmB,gBAAgB,EAAE,gBAAgB,EAClC,mBAAmB,EAAE,wBAAwB,EAC7C,SAAS,EAAE,SAAS,EACnC;IAEJ,YAAY,SA4CX;IAED,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAE7D;IAEK,OAAO,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAqG5D;CACF"}
|
|
@@ -12,11 +12,6 @@ import { UnretriableException } from '../../exception/unretriable.exception.js';
|
|
|
12
12
|
import { BadRequestException, Injectable, Logger } from '@nestjs/common';
|
|
13
13
|
import { DiscoveryService, ModuleRef } from '@nestjs/core';
|
|
14
14
|
import { StateRouterHelperFactory } from './router.factory.js';
|
|
15
|
-
/**
|
|
16
|
-
* TODO:
|
|
17
|
-
* 1. Retry Service: Retry in state handler level via `IRetryHandler`
|
|
18
|
-
* +) Bind configs to lambda retry config
|
|
19
|
-
*/
|
|
20
15
|
let OrchestratorService = class OrchestratorService {
|
|
21
16
|
discoveryService;
|
|
22
17
|
routerHelperFactory;
|
|
@@ -62,6 +57,9 @@ let OrchestratorService = class OrchestratorService {
|
|
|
62
57
|
}
|
|
63
58
|
this.logger.log(`StateRouter initialized with ${this.routes.size} routes: `, Array.from(this.routes.keys()));
|
|
64
59
|
}
|
|
60
|
+
getRetryConfig(event) {
|
|
61
|
+
return this.routes.get(event)?.retryConfig;
|
|
62
|
+
}
|
|
65
63
|
async transit(params) {
|
|
66
64
|
const { urn, payload, event } = params;
|
|
67
65
|
const route = this.routes.get(event);
|
|
@@ -83,7 +81,8 @@ let OrchestratorService = class OrchestratorService {
|
|
|
83
81
|
// Idle states: silently wait when a transition exists but conditions aren't met
|
|
84
82
|
if (hasEventStateMatch && routerHelper.isInIdleStatus(entity)) {
|
|
85
83
|
logger.log(`Entity ${urn} is in idle state ${entityStatus}. Conditions not met — waiting for next event.`);
|
|
86
|
-
|
|
84
|
+
const timeout = routerHelper.getIdleTimeout(entityStatus) ?? definition.defaultCallbackTimeout;
|
|
85
|
+
return { status: 'idle', state: entityStatus, timeout };
|
|
87
86
|
}
|
|
88
87
|
if (defaultHandler) {
|
|
89
88
|
logger.log(`Falling back to the default transition`, urn);
|
|
@@ -109,7 +108,8 @@ let OrchestratorService = class OrchestratorService {
|
|
|
109
108
|
// Idle state — wait for explicit external event
|
|
110
109
|
if (routerHelper.isInIdleStatus(entity)) {
|
|
111
110
|
logger.log(`Element ${urn} reached idle state: ${updatedStatus}. Waiting for explicit event.`);
|
|
112
|
-
|
|
111
|
+
const timeout = routerHelper.getIdleTimeout(updatedStatus) ?? definition.defaultCallbackTimeout;
|
|
112
|
+
return { status: 'idle', state: updatedStatus, timeout };
|
|
113
113
|
}
|
|
114
114
|
// Find next valid transition
|
|
115
115
|
const { transition: nextTransition } = routerHelper.findValidTransition(entity, handlerOutput, {
|
|
@@ -117,7 +117,7 @@ let OrchestratorService = class OrchestratorService {
|
|
|
117
117
|
});
|
|
118
118
|
if (!nextTransition) {
|
|
119
119
|
logger.warn(`There's no valid next transition from ${updatedStatus} or the condition is not met. (${urn})`);
|
|
120
|
-
return { status: 'no_transition', state: updatedStatus };
|
|
120
|
+
return { status: 'no_transition', state: updatedStatus, timeout: definition.defaultCallbackTimeout };
|
|
121
121
|
}
|
|
122
122
|
const nextEvent = Array.isArray(nextTransition.event) ? nextTransition.event[0] : nextTransition.event;
|
|
123
123
|
logger.log(`Next event: ${nextEvent} for entity ${urn}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.service.js","sourceRoot":"","sources":["../../../packages/core/providers/orchestrator.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EACL,WAAW,EACX,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,GAQrB,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,EAAqB,MAAM,gBAAgB,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"orchestrator.service.js","sourceRoot":"","sources":["../../../packages/core/providers/orchestrator.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Logger } from '@nestjs/common';
|
|
2
|
-
import type { ITransitionEvent, IWorkflowDefinition, IWorkflowEntity } from '../types/index.js';
|
|
2
|
+
import type { Duration, ITransitionEvent, IWorkflowDefinition, IWorkflowEntity } from '../types/index.js';
|
|
3
3
|
export declare class RouterService<T, Event, State> {
|
|
4
4
|
private readonly event;
|
|
5
5
|
private readonly entityService;
|
|
@@ -16,6 +16,7 @@ export declare class RouterService<T, Event, State> {
|
|
|
16
16
|
private matchesState;
|
|
17
17
|
private matchesEvent;
|
|
18
18
|
isInIdleStatus(entity: T): boolean;
|
|
19
|
+
getIdleTimeout(state: string | number): Duration | undefined;
|
|
19
20
|
buildParamDecorators(entity: T, payload: any, target: any, propertyKey: string | symbol): any[];
|
|
20
21
|
}
|
|
21
22
|
//# sourceMappingURL=router.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.service.d.ts","sourceRoot":"","sources":["../../../packages/core/providers/router.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"router.service.d.ts","sourceRoot":"","sources":["../../../packages/core/providers/router.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEjG,qBAAa,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK;IAEtC,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJzB,YACmB,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,eAAe,EAC9B,kBAAkB,EAAE,mBAAmB,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EACxD,MAAM,EAAE,MAAM,EAC7B;IAEE,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAe5D;IAED,mBAAmB,CAAC,CAAC,EACnB,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,CAAC,EACV,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,GACrC;QAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;QAAC,kBAAkB,EAAE,OAAO,CAAA;KAAE,CA0B1F;IAED,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,YAAY;IAIpB,cAAc,CAAC,MAAM,EAAE,CAAC,GAAG,OAAO,CAUjC;IAED,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAO3D;IAED,oBAAoB,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,SAmBtF;CACF"}
|
|
@@ -60,8 +60,18 @@ export class RouterService {
|
|
|
60
60
|
if (!status) {
|
|
61
61
|
throw new Error('Entity status is not defined. Unable to determine if the entity is idle or not.');
|
|
62
62
|
}
|
|
63
|
-
|
|
64
|
-
|
|
63
|
+
return this.workflowDefinition.states.idles.some((entry) => typeof entry === 'object' && entry !== null && 'state' in entry
|
|
64
|
+
? entry.state === status
|
|
65
|
+
: entry === status);
|
|
66
|
+
}
|
|
67
|
+
getIdleTimeout(state) {
|
|
68
|
+
for (const entry of this.workflowDefinition.states.idles) {
|
|
69
|
+
if (typeof entry === 'object' && entry !== null && 'state' in entry) {
|
|
70
|
+
if (entry.state === state)
|
|
71
|
+
return entry.timeout;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return undefined;
|
|
65
75
|
}
|
|
66
76
|
buildParamDecorators(entity, payload, target, propertyKey) {
|
|
67
77
|
// Metadata is stored on the prototype when decorators are applied
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.service.js","sourceRoot":"","sources":["../../../packages/core/providers/router.service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"router.service.js","sourceRoot":"","sources":["../../../packages/core/providers/router.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,4 +2,12 @@ export type TWithout<T, U> = {
|
|
|
2
2
|
[P in Exclude<keyof T, keyof U>]?: never;
|
|
3
3
|
};
|
|
4
4
|
export type TEither<T, U> = T extends object ? (U extends object ? (TWithout<T, U> & U) | (TWithout<U, T> & T) : U) : T;
|
|
5
|
+
/**
|
|
6
|
+
* Duration for timeout configuration (callback waits, retries, etc.)
|
|
7
|
+
*/
|
|
8
|
+
export interface Duration {
|
|
9
|
+
hours?: number;
|
|
10
|
+
minutes?: number;
|
|
11
|
+
seconds?: number;
|
|
12
|
+
}
|
|
5
13
|
//# sourceMappingURL=shared.type.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.type.d.ts","sourceRoot":"","sources":["../../../packages/core/types/shared.type.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI;KAAG,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK;CAAE,CAAC;AAG1E,MAAM,MAAM,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,MAAM,GAAG,CAAC,CAAC,SAAS,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"shared.type.d.ts","sourceRoot":"","sources":["../../../packages/core/types/shared.type.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI;KAAG,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK;CAAE,CAAC;AAG1E,MAAM,MAAM,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,MAAM,GAAG,CAAC,CAAC,SAAS,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAExH;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Duration } from './shared.type.js';
|
|
1
2
|
import type { IWorkflowEvent } from './workflow-event.interface.js';
|
|
2
3
|
export type TransitResult = {
|
|
3
4
|
status: 'final';
|
|
@@ -5,11 +6,13 @@ export type TransitResult = {
|
|
|
5
6
|
} | {
|
|
6
7
|
status: 'idle';
|
|
7
8
|
state: string | number;
|
|
9
|
+
timeout?: Duration;
|
|
8
10
|
} | {
|
|
9
11
|
status: 'continued';
|
|
10
12
|
nextEvent: IWorkflowEvent;
|
|
11
13
|
} | {
|
|
12
14
|
status: 'no_transition';
|
|
13
15
|
state: string | number;
|
|
16
|
+
timeout?: Duration;
|
|
14
17
|
};
|
|
15
18
|
//# sourceMappingURL=transit-result.type.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transit-result.type.d.ts","sourceRoot":"","sources":["../../../packages/core/types/transit-result.type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE,MAAM,MAAM,aAAa,GACrB;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GAC3C;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"transit-result.type.d.ts","sourceRoot":"","sources":["../../../packages/core/types/transit-result.type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE,MAAM,MAAM,aAAa,GACrB;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GAC3C;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,QAAQ,CAAA;CAAE,GAC9D;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,cAAc,CAAA;CAAE,GAClD;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,QAAQ,CAAA;CAAE,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { IBackoffRetryConfig, ITransitionEvent, IWorkflowEntity } from '../../core/index.js';
|
|
1
|
+
import type { Duration, IBackoffRetryConfig, ITransitionEvent, IWorkflowEntity } from '../../core/index.js';
|
|
2
2
|
/**
|
|
3
3
|
* Defines the structure of a workflow definition, which includes the following properties:
|
|
4
4
|
* - `FinalStates`: An array of states that represent the final states of the workflow.
|
|
@@ -9,13 +9,25 @@ import type { IBackoffRetryConfig, ITransitionEvent, IWorkflowEntity } from '../
|
|
|
9
9
|
* - `Conditions`: An optional array of condition functions.
|
|
10
10
|
* - `Entity`: An optional entity service or configuration for loading/updating entities.
|
|
11
11
|
*/
|
|
12
|
+
/**
|
|
13
|
+
* An idle state entry — either a bare state value or a state with per-state timeout.
|
|
14
|
+
*/
|
|
15
|
+
export type IdleStateEntry<State> = State | {
|
|
16
|
+
state: State;
|
|
17
|
+
timeout?: Duration;
|
|
18
|
+
};
|
|
12
19
|
export interface IWorkflowDefinition<T, Event, State> {
|
|
13
20
|
name: string;
|
|
14
21
|
states: {
|
|
15
22
|
finals: State[];
|
|
16
|
-
idles: State[];
|
|
23
|
+
idles: IdleStateEntry<State>[];
|
|
17
24
|
failed: State;
|
|
18
25
|
};
|
|
26
|
+
/**
|
|
27
|
+
* Default timeout for callback waits (idle & no_transition states).
|
|
28
|
+
* Per-state timeouts in `idles` take precedence over this value.
|
|
29
|
+
*/
|
|
30
|
+
defaultCallbackTimeout?: Duration;
|
|
19
31
|
transitions: ITransitionEvent<T, Event, State, any>[];
|
|
20
32
|
conditions?: (<P>(entity: T, payload?: P | T | object | string) => boolean)[];
|
|
21
33
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-definition.interface.d.ts","sourceRoot":"","sources":["../../../packages/core/types/workflow-definition.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"workflow-definition.interface.d.ts","sourceRoot":"","sources":["../../../packages/core/types/workflow-definition.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAE/F;;;;;;;;;GASG;AACH;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,KAAK,IAAI,KAAK,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,OAAO,CAAC,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEjF,MAAM,WAAW,mBAAmB,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QACN,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,EAAE,KAAK,CAAC;KACf,CAAC;IACF;;;OAGG;IACH,sBAAsB,CAAC,EAAE,QAAQ,CAAC;IAClC,WAAW,EAAE,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;IACtD,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,MAAM,KAAK,OAAO,CAAC,EAAE,CAAC;IAC9E;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,GAAG,CAAC;IACd,UAAU,EAAE,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7C,cAAc,CAAC,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC;IACtC,aAAa,EAAE,eAAe,CAAC;IAC/B,WAAW,CAAC,EAAE,mBAAmB,CAAC;CACnC;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;CAC9C;AAED,MAAM,MAAM,eAAe,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM,IAAI,CAAC,CAAC,EACjD,MAAM,EAAE,CAAC,EACT,KAAK,EAAE,KAAK,EACZ,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,MAAM,KAC9B,OAAO,CAAC,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nestjs-serverless-workflow",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Workflow and State Machines for NestJS",
|
|
6
6
|
"license": "MIT",
|
|
@@ -64,6 +64,8 @@
|
|
|
64
64
|
"rxjs": "^7.8.0"
|
|
65
65
|
},
|
|
66
66
|
"devDependencies": {
|
|
67
|
+
"@aws/durable-execution-sdk-js": "^1.1.0",
|
|
68
|
+
"@aws/durable-execution-sdk-js-testing": "^1.1.1",
|
|
67
69
|
"@nestjs/common": "^11.1.3",
|
|
68
70
|
"@nestjs/core": "^11.1.3",
|
|
69
71
|
"@nestjs/platform-express": "^11.0.1",
|
|
@@ -137,5 +139,5 @@
|
|
|
137
139
|
"bugs": {
|
|
138
140
|
"url": "https://github.com/tung-dnt/nestjs-serverless-workflow/issues"
|
|
139
141
|
},
|
|
140
|
-
"homepage": "https://
|
|
142
|
+
"homepage": "https://tung-dnt.github.io/nestjs-serverless-workflow/"
|
|
141
143
|
}
|