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.
@@ -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;AAG9D,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;AAEnD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,yBAAyB;;;;EAuErC,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.transit(currentEvent);
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 callbackPayload = await ctx.waitForCallback(`idle:${result.state}:${iteration}`, async (callbackId) => {
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
- // TODO: remove hard-coded, exposed via execution function
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 noTransitionPayload = await ctx.waitForCallback(`awaiting:${result.state}:${iteration}`, async (callbackId) => {
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
- // TODO: remove hard-coded, exposed via execution function
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":"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"}
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,EAWL,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;;;;GAIG;AACH,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;IAEK,OAAO,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAmG5D;CACF"}
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
- return { status: 'idle', state: entityStatus };
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
- return { status: 'idle', state: updatedStatus };
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":"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"}
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;AAEvF,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,CAOjC;IAED,oBAAoB,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,SAmBtF;CACF"}
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
- const definedIdleStatuses = this.workflowDefinition.states.idles;
64
- return definedIdleStatuses.includes(status);
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,GAC1C;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,cAAc,CAAA;CAAE,GAClD;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC"}
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;AAErF;;;;;;;;;GASG;AACH,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,KAAK,EAAE,CAAC;QACf,MAAM,EAAE,KAAK,CAAC;KACf,CAAC;IACF,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"}
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.0.8",
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://github.com/tung-dnt/nestjs-serverless-workflow#readme"
142
+ "homepage": "https://tung-dnt.github.io/nestjs-serverless-workflow/"
141
143
  }