ec2-instance-running-scheduler 0.2.7 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,23 +3,23 @@
3
3
  */
4
4
  /** Value of `Params.Mode` from the EventBridge Scheduler payload. */
5
5
  export type RunningSchedulerMode = 'Start' | 'Stop';
6
- /** Upper bounds for per-instance stable-state polling in the running scheduler Lambda. */
7
- export interface ResourcePollingLimits {
8
- /** Maximum describe/poll iterations before failing (each loop may include a durable wait). */
6
+ /** Upper bounds for per-instance stable-state waiting in the running scheduler Lambda handler. */
7
+ export interface ResourceWaitLimits {
8
+ /** Maximum describe/wait loop iterations before failing (each loop may include a durable wait). */
9
9
  readonly maxLoopCount: number;
10
- /** Maximum wall-clock seconds from the first poll iteration before failing. */
10
+ /** Maximum wall-clock seconds from the first wait iteration before failing. */
11
11
  readonly maxElapsedSeconds: number;
12
12
  }
13
- /** Default polling limits (90 loops × 20s wait ≈ 30 minutes of waits; 30 minutes elapsed). */
14
- export declare const DEFAULT_RESOURCE_POLLING_LIMITS: ResourcePollingLimits;
13
+ /** Default wait limits (90 loops × 20s wait ≈ 30 minutes of waits; 30 minutes elapsed). */
14
+ export declare const DEFAULT_RESOURCE_WAIT_LIMITS: ResourceWaitLimits;
15
15
  /**
16
- * Why per-instance polling stopped with an error.
16
+ * Why per-instance waiting stopped with an error.
17
17
  *
18
- * - `MaxLoopCountExceeded` – {@link getPollingAbortReason} hit {@link ResourcePollingLimits.maxLoopCount}.
19
- * - `MaxElapsedTimeExceeded` – elapsed wall-clock time exceeded {@link ResourcePollingLimits.maxElapsedSeconds}.
18
+ * - `MaxLoopCountExceeded` – {@link getWaitAbortReason} hit {@link ResourceWaitLimits.maxLoopCount}.
19
+ * - `MaxElapsedTimeExceeded` – elapsed wall-clock time exceeded {@link ResourceWaitLimits.maxElapsedSeconds}.
20
20
  * - `UnexpectedInstanceState` – state is neither stable, actionable, nor a known transition.
21
21
  */
22
- export type ResourcePollingFailureReason = 'MaxLoopCountExceeded' | 'MaxElapsedTimeExceeded' | 'UnexpectedInstanceState';
22
+ export type ResourceWaitFailureReason = 'MaxLoopCountExceeded' | 'MaxElapsedTimeExceeded' | 'UnexpectedInstanceState';
23
23
  /**
24
24
  * Whether the instance is already in the goal state for the scheduler mode (no start/stop needed).
25
25
  *
@@ -37,33 +37,33 @@ export declare const isDesiredStableState: (mode: RunningSchedulerMode, currentS
37
37
  */
38
38
  export declare const isTransitioningState: (mode: RunningSchedulerMode, currentState: string) => boolean;
39
39
  /**
40
- * Returns a polling abort reason when loop count or elapsed time exceeds configured limits.
40
+ * Returns a wait abort reason when loop count or elapsed time exceeds configured limits.
41
41
  *
42
- * @param loopCount - Zero-based iteration count for the current poll loop.
43
- * @param startedAtMs - Epoch milliseconds recorded at the start of polling (durable step).
42
+ * @param loopCount - Zero-based iteration count for the current wait loop.
43
+ * @param startedAtMs - Epoch milliseconds recorded at the start of waiting (durable step).
44
44
  * @param nowMs - Current epoch milliseconds (from a durable step when replay matters).
45
- * @param limits - Configured {@link ResourcePollingLimits}.
46
- * @returns Abort reason, or `undefined` when polling may continue.
45
+ * @param limits - Configured {@link ResourceWaitLimits}.
46
+ * @returns Abort reason, or `undefined` when waiting may continue.
47
47
  */
48
- export declare const getPollingAbortReason: (loopCount: number, startedAtMs: number, nowMs: number, limits: ResourcePollingLimits) => "MaxLoopCountExceeded" | "MaxElapsedTimeExceeded" | undefined;
49
- /** Inputs for {@link formatResourcePollingFailure}. */
50
- export interface ResourcePollingFailureContext {
48
+ export declare const getWaitAbortReason: (loopCount: number, startedAtMs: number, nowMs: number, limits: ResourceWaitLimits) => "MaxLoopCountExceeded" | "MaxElapsedTimeExceeded" | undefined;
49
+ /** Inputs for {@link formatResourceWaitFailure}. */
50
+ export interface ResourceWaitFailureContext {
51
51
  /** EC2 instance id parsed from the target ARN. */
52
52
  readonly identifier: string;
53
53
  /** Scheduler mode from the invocation payload. */
54
54
  readonly mode: RunningSchedulerMode;
55
55
  /** Last observed instance state from `DescribeInstances`. */
56
56
  readonly currentState: string;
57
- /** Zero-based poll loop iteration when the failure occurred. */
57
+ /** Zero-based wait loop iteration when the failure occurred. */
58
58
  readonly loopCount: number;
59
- /** Active polling limits for limit-related failure messages. */
60
- readonly limits: ResourcePollingLimits;
59
+ /** Active wait limits for limit-related failure messages. */
60
+ readonly limits: ResourceWaitLimits;
61
61
  }
62
62
  /**
63
- * Builds a stable, grep-friendly error message for polling failures.
63
+ * Builds a stable, grep-friendly error message for wait failures.
64
64
  *
65
65
  * @param reason - Failure category.
66
66
  * @param context - Instance id, mode, state, loop count, and limits.
67
- * @returns Message prefixed with `ResourcePollingFailed:` (e.g. `ResourcePollingFailed:MaxLoopCountExceeded: ...`).
67
+ * @returns Message prefixed with `ResourceWaitFailed:` (e.g. `ResourceWaitFailed:MaxLoopCountExceeded: ...`).
68
68
  */
69
- export declare const formatResourcePollingFailure: (reason: ResourcePollingFailureReason, context: ResourcePollingFailureContext) => string;
69
+ export declare const formatResourceWaitFailure: (reason: ResourceWaitFailureReason, context: ResourceWaitFailureContext) => string;
@@ -3,9 +3,9 @@
3
3
  * Pure predicates for the EC2 running scheduler Lambda (no AWS SDK).
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.formatResourcePollingFailure = exports.getPollingAbortReason = exports.isTransitioningState = exports.isDesiredStableState = exports.DEFAULT_RESOURCE_POLLING_LIMITS = void 0;
7
- /** Default polling limits (90 loops × 20s wait ≈ 30 minutes of waits; 30 minutes elapsed). */
8
- exports.DEFAULT_RESOURCE_POLLING_LIMITS = {
6
+ exports.formatResourceWaitFailure = exports.getWaitAbortReason = exports.isTransitioningState = exports.isDesiredStableState = exports.DEFAULT_RESOURCE_WAIT_LIMITS = void 0;
7
+ /** Default wait limits (90 loops × 20s wait ≈ 30 minutes of waits; 30 minutes elapsed). */
8
+ exports.DEFAULT_RESOURCE_WAIT_LIMITS = {
9
9
  maxLoopCount: 90,
10
10
  maxElapsedSeconds: 1800,
11
11
  };
@@ -29,15 +29,15 @@ const isTransitioningState = (mode, currentState) => (mode === 'Start' && curren
29
29
  (mode === 'Stop' && (currentState === 'stopping' || currentState === 'shutting-down'));
30
30
  exports.isTransitioningState = isTransitioningState;
31
31
  /**
32
- * Returns a polling abort reason when loop count or elapsed time exceeds configured limits.
32
+ * Returns a wait abort reason when loop count or elapsed time exceeds configured limits.
33
33
  *
34
- * @param loopCount - Zero-based iteration count for the current poll loop.
35
- * @param startedAtMs - Epoch milliseconds recorded at the start of polling (durable step).
34
+ * @param loopCount - Zero-based iteration count for the current wait loop.
35
+ * @param startedAtMs - Epoch milliseconds recorded at the start of waiting (durable step).
36
36
  * @param nowMs - Current epoch milliseconds (from a durable step when replay matters).
37
- * @param limits - Configured {@link ResourcePollingLimits}.
38
- * @returns Abort reason, or `undefined` when polling may continue.
37
+ * @param limits - Configured {@link ResourceWaitLimits}.
38
+ * @returns Abort reason, or `undefined` when waiting may continue.
39
39
  */
40
- const getPollingAbortReason = (loopCount, startedAtMs, nowMs, limits) => {
40
+ const getWaitAbortReason = (loopCount, startedAtMs, nowMs, limits) => {
41
41
  if (loopCount >= limits.maxLoopCount) {
42
42
  return 'MaxLoopCountExceeded';
43
43
  }
@@ -47,23 +47,23 @@ const getPollingAbortReason = (loopCount, startedAtMs, nowMs, limits) => {
47
47
  }
48
48
  return undefined;
49
49
  };
50
- exports.getPollingAbortReason = getPollingAbortReason;
50
+ exports.getWaitAbortReason = getWaitAbortReason;
51
51
  /**
52
- * Builds a stable, grep-friendly error message for polling failures.
52
+ * Builds a stable, grep-friendly error message for wait failures.
53
53
  *
54
54
  * @param reason - Failure category.
55
55
  * @param context - Instance id, mode, state, loop count, and limits.
56
- * @returns Message prefixed with `ResourcePollingFailed:` (e.g. `ResourcePollingFailed:MaxLoopCountExceeded: ...`).
56
+ * @returns Message prefixed with `ResourceWaitFailed:` (e.g. `ResourceWaitFailed:MaxLoopCountExceeded: ...`).
57
57
  */
58
- const formatResourcePollingFailure = (reason, context) => {
58
+ const formatResourceWaitFailure = (reason, context) => {
59
59
  const common = `identifier=${context.identifier} mode=${context.mode} currentState=${context.currentState} loopCount=${context.loopCount}`;
60
60
  if (reason === 'MaxLoopCountExceeded') {
61
- return `ResourcePollingFailed:MaxLoopCountExceeded: ${common} maxLoopCount=${context.limits.maxLoopCount}`;
61
+ return `ResourceWaitFailed:MaxLoopCountExceeded: ${common} maxLoopCount=${context.limits.maxLoopCount}`;
62
62
  }
63
63
  if (reason === 'MaxElapsedTimeExceeded') {
64
- return `ResourcePollingFailed:MaxElapsedTimeExceeded: ${common} maxElapsedSeconds=${context.limits.maxElapsedSeconds}`;
64
+ return `ResourceWaitFailed:MaxElapsedTimeExceeded: ${common} maxElapsedSeconds=${context.limits.maxElapsedSeconds}`;
65
65
  }
66
- return `ResourcePollingFailed:UnexpectedInstanceState: ${common}`;
66
+ return `ResourceWaitFailed:UnexpectedInstanceState: ${common}`;
67
67
  };
68
- exports.formatResourcePollingFailure = formatResourcePollingFailure;
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVubmluZy1zY2hlZHVsZXItcHJlZGljYXRlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mdW5jcy9ydW5uaW5nLXNjaGVkdWxlci1wcmVkaWNhdGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7O0FBYUgsOEZBQThGO0FBQ2pGLFFBQUEsK0JBQStCLEdBQTBCO0lBQ3BFLFlBQVksRUFBRSxFQUFFO0lBQ2hCLGlCQUFpQixFQUFFLElBQUk7Q0FDeEIsQ0FBQztBQWNGOzs7Ozs7R0FNRztBQUNJLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxJQUEwQixFQUFFLFlBQW9CLEVBQVcsRUFBRSxDQUNoRyxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksWUFBWSxLQUFLLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxZQUFZLEtBQUssU0FBUyxDQUFDLENBQUM7QUFEekYsUUFBQSxvQkFBb0Isd0JBQ3FFO0FBRXRHOzs7Ozs7R0FNRztBQUNJLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxJQUEwQixFQUFFLFlBQW9CLEVBQVcsRUFBRSxDQUNoRyxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksWUFBWSxLQUFLLFNBQVMsQ0FBQztJQUNoRCxDQUFDLElBQUksS0FBSyxNQUFNLElBQUksQ0FBQyxZQUFZLEtBQUssVUFBVSxJQUFJLFlBQVksS0FBSyxlQUFlLENBQUMsQ0FBQyxDQUFDO0FBRjVFLFFBQUEsb0JBQW9CLHdCQUV3RDtBQUV6Rjs7Ozs7Ozs7R0FRRztBQUNJLE1BQU0scUJBQXFCLEdBQUcsQ0FDbkMsU0FBaUIsRUFDakIsV0FBbUIsRUFDbkIsS0FBYSxFQUNiLE1BQTZCLEVBQ2tDLEVBQUU7SUFDakUsSUFBSSxTQUFTLElBQUksTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3JDLE9BQU8sc0JBQXNCLENBQUM7SUFDaEMsQ0FBQztJQUNELE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNwRCxJQUFJLGNBQWMsSUFBSSxNQUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUMvQyxPQUFPLHdCQUF3QixDQUFDO0lBQ2xDLENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDLENBQUM7QUFkVyxRQUFBLHFCQUFxQix5QkFjaEM7QUFnQkY7Ozs7OztHQU1HO0FBQ0ksTUFBTSw0QkFBNEIsR0FBRyxDQUMxQyxNQUFvQyxFQUNwQyxPQUFzQyxFQUM5QixFQUFFO0lBQ1YsTUFBTSxNQUFNLEdBQ1YsY0FBYyxPQUFPLENBQUMsVUFBVSxTQUFTLE9BQU8sQ0FBQyxJQUFJLGlCQUFpQixPQUFPLENBQUMsWUFBWSxjQUFjLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUM5SCxJQUFJLE1BQU0sS0FBSyxzQkFBc0IsRUFBRSxDQUFDO1FBQ3RDLE9BQU8sK0NBQStDLE1BQU0saUJBQWlCLE9BQU8sQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDN0csQ0FBQztJQUNELElBQUksTUFBTSxLQUFLLHdCQUF3QixFQUFFLENBQUM7UUFDeEMsT0FBTyxpREFBaUQsTUFBTSxzQkFBc0IsT0FBTyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQ3pILENBQUM7SUFDRCxPQUFPLGtEQUFrRCxNQUFNLEVBQUUsQ0FBQztBQUNwRSxDQUFDLENBQUM7QUFiVyxRQUFBLDRCQUE0QixnQ0FhdkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFB1cmUgcHJlZGljYXRlcyBmb3IgdGhlIEVDMiBydW5uaW5nIHNjaGVkdWxlciBMYW1iZGEgKG5vIEFXUyBTREspLlxuICovXG5cbi8qKiBWYWx1ZSBvZiBgUGFyYW1zLk1vZGVgIGZyb20gdGhlIEV2ZW50QnJpZGdlIFNjaGVkdWxlciBwYXlsb2FkLiAqL1xuZXhwb3J0IHR5cGUgUnVubmluZ1NjaGVkdWxlck1vZGUgPSAnU3RhcnQnIHwgJ1N0b3AnO1xuXG4vKiogVXBwZXIgYm91bmRzIGZvciBwZXItaW5zdGFuY2Ugc3RhYmxlLXN0YXRlIHBvbGxpbmcgaW4gdGhlIHJ1bm5pbmcgc2NoZWR1bGVyIExhbWJkYS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VQb2xsaW5nTGltaXRzIHtcbiAgLyoqIE1heGltdW0gZGVzY3JpYmUvcG9sbCBpdGVyYXRpb25zIGJlZm9yZSBmYWlsaW5nIChlYWNoIGxvb3AgbWF5IGluY2x1ZGUgYSBkdXJhYmxlIHdhaXQpLiAqL1xuICByZWFkb25seSBtYXhMb29wQ291bnQ6IG51bWJlcjtcbiAgLyoqIE1heGltdW0gd2FsbC1jbG9jayBzZWNvbmRzIGZyb20gdGhlIGZpcnN0IHBvbGwgaXRlcmF0aW9uIGJlZm9yZSBmYWlsaW5nLiAqL1xuICByZWFkb25seSBtYXhFbGFwc2VkU2Vjb25kczogbnVtYmVyO1xufVxuXG4vKiogRGVmYXVsdCBwb2xsaW5nIGxpbWl0cyAoOTAgbG9vcHMgw5cgMjBzIHdhaXQg4omIIDMwIG1pbnV0ZXMgb2Ygd2FpdHM7IDMwIG1pbnV0ZXMgZWxhcHNlZCkuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9SRVNPVVJDRV9QT0xMSU5HX0xJTUlUUzogUmVzb3VyY2VQb2xsaW5nTGltaXRzID0ge1xuICBtYXhMb29wQ291bnQ6IDkwLFxuICBtYXhFbGFwc2VkU2Vjb25kczogMTgwMCxcbn07XG5cbi8qKlxuICogV2h5IHBlci1pbnN0YW5jZSBwb2xsaW5nIHN0b3BwZWQgd2l0aCBhbiBlcnJvci5cbiAqXG4gKiAtIGBNYXhMb29wQ291bnRFeGNlZWRlZGAg4oCTIHtAbGluayBnZXRQb2xsaW5nQWJvcnRSZWFzb259IGhpdCB7QGxpbmsgUmVzb3VyY2VQb2xsaW5nTGltaXRzLm1heExvb3BDb3VudH0uXG4gKiAtIGBNYXhFbGFwc2VkVGltZUV4Y2VlZGVkYCDigJMgZWxhcHNlZCB3YWxsLWNsb2NrIHRpbWUgZXhjZWVkZWQge0BsaW5rIFJlc291cmNlUG9sbGluZ0xpbWl0cy5tYXhFbGFwc2VkU2Vjb25kc30uXG4gKiAtIGBVbmV4cGVjdGVkSW5zdGFuY2VTdGF0ZWAg4oCTIHN0YXRlIGlzIG5laXRoZXIgc3RhYmxlLCBhY3Rpb25hYmxlLCBub3IgYSBrbm93biB0cmFuc2l0aW9uLlxuICovXG5leHBvcnQgdHlwZSBSZXNvdXJjZVBvbGxpbmdGYWlsdXJlUmVhc29uID1cbiAgfCAnTWF4TG9vcENvdW50RXhjZWVkZWQnXG4gIHwgJ01heEVsYXBzZWRUaW1lRXhjZWVkZWQnXG4gIHwgJ1VuZXhwZWN0ZWRJbnN0YW5jZVN0YXRlJztcblxuLyoqXG4gKiBXaGV0aGVyIHRoZSBpbnN0YW5jZSBpcyBhbHJlYWR5IGluIHRoZSBnb2FsIHN0YXRlIGZvciB0aGUgc2NoZWR1bGVyIG1vZGUgKG5vIHN0YXJ0L3N0b3AgbmVlZGVkKS5cbiAqXG4gKiBAcGFyYW0gbW9kZSAtIGBTdGFydGAgZXhwZWN0cyBgcnVubmluZ2A7IGBTdG9wYCBleHBlY3RzIGBzdG9wcGVkYC5cbiAqIEBwYXJhbSBjdXJyZW50U3RhdGUgLSBJbnN0YW5jZSBzdGF0ZSBmcm9tIGBEZXNjcmliZUluc3RhbmNlc2AgKGUuZy4gYHJ1bm5pbmdgLCBgcGVuZGluZ2ApLlxuICogQHJldHVybnMgYHRydWVgIHdoZW4gdGhlIGluc3RhbmNlIG1hdGNoZXMgdGhlIHRhcmdldCBzdGF0ZSBmb3IgYG1vZGVgLlxuICovXG5leHBvcnQgY29uc3QgaXNEZXNpcmVkU3RhYmxlU3RhdGUgPSAobW9kZTogUnVubmluZ1NjaGVkdWxlck1vZGUsIGN1cnJlbnRTdGF0ZTogc3RyaW5nKTogYm9vbGVhbiA9PlxuICAobW9kZSA9PT0gJ1N0YXJ0JyAmJiBjdXJyZW50U3RhdGUgPT09ICdydW5uaW5nJykgfHwgKG1vZGUgPT09ICdTdG9wJyAmJiBjdXJyZW50U3RhdGUgPT09ICdzdG9wcGVkJyk7XG5cbi8qKlxuICogV2hldGhlciB0aGUgaW5zdGFuY2UgaXMgaW4gYSBrbm93biB0cmFuc2l0aW9uYWwgc3RhdGUgZm9yIHRoZSBzY2hlZHVsZXIgbW9kZS5cbiAqXG4gKiBAcGFyYW0gbW9kZSAtIGBTdGFydGAgb3IgYFN0b3BgLlxuICogQHBhcmFtIGN1cnJlbnRTdGF0ZSAtIEluc3RhbmNlIHN0YXRlIGZyb20gYERlc2NyaWJlSW5zdGFuY2VzYC5cbiAqIEByZXR1cm5zIGB0cnVlYCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBtb3ZpbmcgdG93YXJkIHRoZSBnb2FsIHN0YXRlIGZvciBgbW9kZWAuXG4gKi9cbmV4cG9ydCBjb25zdCBpc1RyYW5zaXRpb25pbmdTdGF0ZSA9IChtb2RlOiBSdW5uaW5nU2NoZWR1bGVyTW9kZSwgY3VycmVudFN0YXRlOiBzdHJpbmcpOiBib29sZWFuID0+XG4gIChtb2RlID09PSAnU3RhcnQnICYmIGN1cnJlbnRTdGF0ZSA9PT0gJ3BlbmRpbmcnKSB8fFxuICAobW9kZSA9PT0gJ1N0b3AnICYmIChjdXJyZW50U3RhdGUgPT09ICdzdG9wcGluZycgfHwgY3VycmVudFN0YXRlID09PSAnc2h1dHRpbmctZG93bicpKTtcblxuLyoqXG4gKiBSZXR1cm5zIGEgcG9sbGluZyBhYm9ydCByZWFzb24gd2hlbiBsb29wIGNvdW50IG9yIGVsYXBzZWQgdGltZSBleGNlZWRzIGNvbmZpZ3VyZWQgbGltaXRzLlxuICpcbiAqIEBwYXJhbSBsb29wQ291bnQgLSBaZXJvLWJhc2VkIGl0ZXJhdGlvbiBjb3VudCBmb3IgdGhlIGN1cnJlbnQgcG9sbCBsb29wLlxuICogQHBhcmFtIHN0YXJ0ZWRBdE1zIC0gRXBvY2ggbWlsbGlzZWNvbmRzIHJlY29yZGVkIGF0IHRoZSBzdGFydCBvZiBwb2xsaW5nIChkdXJhYmxlIHN0ZXApLlxuICogQHBhcmFtIG5vd01zIC0gQ3VycmVudCBlcG9jaCBtaWxsaXNlY29uZHMgKGZyb20gYSBkdXJhYmxlIHN0ZXAgd2hlbiByZXBsYXkgbWF0dGVycykuXG4gKiBAcGFyYW0gbGltaXRzIC0gQ29uZmlndXJlZCB7QGxpbmsgUmVzb3VyY2VQb2xsaW5nTGltaXRzfS5cbiAqIEByZXR1cm5zIEFib3J0IHJlYXNvbiwgb3IgYHVuZGVmaW5lZGAgd2hlbiBwb2xsaW5nIG1heSBjb250aW51ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldFBvbGxpbmdBYm9ydFJlYXNvbiA9IChcbiAgbG9vcENvdW50OiBudW1iZXIsXG4gIHN0YXJ0ZWRBdE1zOiBudW1iZXIsXG4gIG5vd01zOiBudW1iZXIsXG4gIGxpbWl0czogUmVzb3VyY2VQb2xsaW5nTGltaXRzLFxuKTogJ01heExvb3BDb3VudEV4Y2VlZGVkJyB8ICdNYXhFbGFwc2VkVGltZUV4Y2VlZGVkJyB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmIChsb29wQ291bnQgPj0gbGltaXRzLm1heExvb3BDb3VudCkge1xuICAgIHJldHVybiAnTWF4TG9vcENvdW50RXhjZWVkZWQnO1xuICB9XG4gIGNvbnN0IGVsYXBzZWRTZWNvbmRzID0gKG5vd01zIC0gc3RhcnRlZEF0TXMpIC8gMTAwMDtcbiAgaWYgKGVsYXBzZWRTZWNvbmRzID49IGxpbWl0cy5tYXhFbGFwc2VkU2Vjb25kcykge1xuICAgIHJldHVybiAnTWF4RWxhcHNlZFRpbWVFeGNlZWRlZCc7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbi8qKiBJbnB1dHMgZm9yIHtAbGluayBmb3JtYXRSZXNvdXJjZVBvbGxpbmdGYWlsdXJlfS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VQb2xsaW5nRmFpbHVyZUNvbnRleHQge1xuICAvKiogRUMyIGluc3RhbmNlIGlkIHBhcnNlZCBmcm9tIHRoZSB0YXJnZXQgQVJOLiAqL1xuICByZWFkb25seSBpZGVudGlmaWVyOiBzdHJpbmc7XG4gIC8qKiBTY2hlZHVsZXIgbW9kZSBmcm9tIHRoZSBpbnZvY2F0aW9uIHBheWxvYWQuICovXG4gIHJlYWRvbmx5IG1vZGU6IFJ1bm5pbmdTY2hlZHVsZXJNb2RlO1xuICAvKiogTGFzdCBvYnNlcnZlZCBpbnN0YW5jZSBzdGF0ZSBmcm9tIGBEZXNjcmliZUluc3RhbmNlc2AuICovXG4gIHJlYWRvbmx5IGN1cnJlbnRTdGF0ZTogc3RyaW5nO1xuICAvKiogWmVyby1iYXNlZCBwb2xsIGxvb3AgaXRlcmF0aW9uIHdoZW4gdGhlIGZhaWx1cmUgb2NjdXJyZWQuICovXG4gIHJlYWRvbmx5IGxvb3BDb3VudDogbnVtYmVyO1xuICAvKiogQWN0aXZlIHBvbGxpbmcgbGltaXRzIGZvciBsaW1pdC1yZWxhdGVkIGZhaWx1cmUgbWVzc2FnZXMuICovXG4gIHJlYWRvbmx5IGxpbWl0czogUmVzb3VyY2VQb2xsaW5nTGltaXRzO1xufVxuXG4vKipcbiAqIEJ1aWxkcyBhIHN0YWJsZSwgZ3JlcC1mcmllbmRseSBlcnJvciBtZXNzYWdlIGZvciBwb2xsaW5nIGZhaWx1cmVzLlxuICpcbiAqIEBwYXJhbSByZWFzb24gLSBGYWlsdXJlIGNhdGVnb3J5LlxuICogQHBhcmFtIGNvbnRleHQgLSBJbnN0YW5jZSBpZCwgbW9kZSwgc3RhdGUsIGxvb3AgY291bnQsIGFuZCBsaW1pdHMuXG4gKiBAcmV0dXJucyBNZXNzYWdlIHByZWZpeGVkIHdpdGggYFJlc291cmNlUG9sbGluZ0ZhaWxlZDpgIChlLmcuIGBSZXNvdXJjZVBvbGxpbmdGYWlsZWQ6TWF4TG9vcENvdW50RXhjZWVkZWQ6IC4uLmApLlxuICovXG5leHBvcnQgY29uc3QgZm9ybWF0UmVzb3VyY2VQb2xsaW5nRmFpbHVyZSA9IChcbiAgcmVhc29uOiBSZXNvdXJjZVBvbGxpbmdGYWlsdXJlUmVhc29uLFxuICBjb250ZXh0OiBSZXNvdXJjZVBvbGxpbmdGYWlsdXJlQ29udGV4dCxcbik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGNvbW1vbiA9XG4gICAgYGlkZW50aWZpZXI9JHtjb250ZXh0LmlkZW50aWZpZXJ9IG1vZGU9JHtjb250ZXh0Lm1vZGV9IGN1cnJlbnRTdGF0ZT0ke2NvbnRleHQuY3VycmVudFN0YXRlfSBsb29wQ291bnQ9JHtjb250ZXh0Lmxvb3BDb3VudH1gO1xuICBpZiAocmVhc29uID09PSAnTWF4TG9vcENvdW50RXhjZWVkZWQnKSB7XG4gICAgcmV0dXJuIGBSZXNvdXJjZVBvbGxpbmdGYWlsZWQ6TWF4TG9vcENvdW50RXhjZWVkZWQ6ICR7Y29tbW9ufSBtYXhMb29wQ291bnQ9JHtjb250ZXh0LmxpbWl0cy5tYXhMb29wQ291bnR9YDtcbiAgfVxuICBpZiAocmVhc29uID09PSAnTWF4RWxhcHNlZFRpbWVFeGNlZWRlZCcpIHtcbiAgICByZXR1cm4gYFJlc291cmNlUG9sbGluZ0ZhaWxlZDpNYXhFbGFwc2VkVGltZUV4Y2VlZGVkOiAke2NvbW1vbn0gbWF4RWxhcHNlZFNlY29uZHM9JHtjb250ZXh0LmxpbWl0cy5tYXhFbGFwc2VkU2Vjb25kc31gO1xuICB9XG4gIHJldHVybiBgUmVzb3VyY2VQb2xsaW5nRmFpbGVkOlVuZXhwZWN0ZWRJbnN0YW5jZVN0YXRlOiAke2NvbW1vbn1gO1xufTtcbiJdfQ==
68
+ exports.formatResourceWaitFailure = formatResourceWaitFailure;
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVubmluZy1zY2hlZHVsZXItcHJlZGljYXRlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mdW5jcy9ydW5uaW5nLXNjaGVkdWxlci1wcmVkaWNhdGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7O0FBYUgsMkZBQTJGO0FBQzlFLFFBQUEsNEJBQTRCLEdBQXVCO0lBQzlELFlBQVksRUFBRSxFQUFFO0lBQ2hCLGlCQUFpQixFQUFFLElBQUk7Q0FDeEIsQ0FBQztBQWNGOzs7Ozs7R0FNRztBQUNJLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxJQUEwQixFQUFFLFlBQW9CLEVBQVcsRUFBRSxDQUNoRyxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksWUFBWSxLQUFLLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxZQUFZLEtBQUssU0FBUyxDQUFDLENBQUM7QUFEekYsUUFBQSxvQkFBb0Isd0JBQ3FFO0FBRXRHOzs7Ozs7R0FNRztBQUNJLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxJQUEwQixFQUFFLFlBQW9CLEVBQVcsRUFBRSxDQUNoRyxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksWUFBWSxLQUFLLFNBQVMsQ0FBQztJQUNoRCxDQUFDLElBQUksS0FBSyxNQUFNLElBQUksQ0FBQyxZQUFZLEtBQUssVUFBVSxJQUFJLFlBQVksS0FBSyxlQUFlLENBQUMsQ0FBQyxDQUFDO0FBRjVFLFFBQUEsb0JBQW9CLHdCQUV3RDtBQUV6Rjs7Ozs7Ozs7R0FRRztBQUNJLE1BQU0sa0JBQWtCLEdBQUcsQ0FDaEMsU0FBaUIsRUFDakIsV0FBbUIsRUFDbkIsS0FBYSxFQUNiLE1BQTBCLEVBQ3FDLEVBQUU7SUFDakUsSUFBSSxTQUFTLElBQUksTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3JDLE9BQU8sc0JBQXNCLENBQUM7SUFDaEMsQ0FBQztJQUNELE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNwRCxJQUFJLGNBQWMsSUFBSSxNQUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUMvQyxPQUFPLHdCQUF3QixDQUFDO0lBQ2xDLENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDLENBQUM7QUFkVyxRQUFBLGtCQUFrQixzQkFjN0I7QUFnQkY7Ozs7OztHQU1HO0FBQ0ksTUFBTSx5QkFBeUIsR0FBRyxDQUN2QyxNQUFpQyxFQUNqQyxPQUFtQyxFQUMzQixFQUFFO0lBQ1YsTUFBTSxNQUFNLEdBQ1YsY0FBYyxPQUFPLENBQUMsVUFBVSxTQUFTLE9BQU8sQ0FBQyxJQUFJLGlCQUFpQixPQUFPLENBQUMsWUFBWSxjQUFjLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUM5SCxJQUFJLE1BQU0sS0FBSyxzQkFBc0IsRUFBRSxDQUFDO1FBQ3RDLE9BQU8sNENBQTRDLE1BQU0saUJBQWlCLE9BQU8sQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUcsQ0FBQztJQUNELElBQUksTUFBTSxLQUFLLHdCQUF3QixFQUFFLENBQUM7UUFDeEMsT0FBTyw4Q0FBOEMsTUFBTSxzQkFBc0IsT0FBTyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQ3RILENBQUM7SUFDRCxPQUFPLCtDQUErQyxNQUFNLEVBQUUsQ0FBQztBQUNqRSxDQUFDLENBQUM7QUFiVyxRQUFBLHlCQUF5Qiw2QkFhcEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFB1cmUgcHJlZGljYXRlcyBmb3IgdGhlIEVDMiBydW5uaW5nIHNjaGVkdWxlciBMYW1iZGEgKG5vIEFXUyBTREspLlxuICovXG5cbi8qKiBWYWx1ZSBvZiBgUGFyYW1zLk1vZGVgIGZyb20gdGhlIEV2ZW50QnJpZGdlIFNjaGVkdWxlciBwYXlsb2FkLiAqL1xuZXhwb3J0IHR5cGUgUnVubmluZ1NjaGVkdWxlck1vZGUgPSAnU3RhcnQnIHwgJ1N0b3AnO1xuXG4vKiogVXBwZXIgYm91bmRzIGZvciBwZXItaW5zdGFuY2Ugc3RhYmxlLXN0YXRlIHdhaXRpbmcgaW4gdGhlIHJ1bm5pbmcgc2NoZWR1bGVyIExhbWJkYSBoYW5kbGVyLiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZVdhaXRMaW1pdHMge1xuICAvKiogTWF4aW11bSBkZXNjcmliZS93YWl0IGxvb3AgaXRlcmF0aW9ucyBiZWZvcmUgZmFpbGluZyAoZWFjaCBsb29wIG1heSBpbmNsdWRlIGEgZHVyYWJsZSB3YWl0KS4gKi9cbiAgcmVhZG9ubHkgbWF4TG9vcENvdW50OiBudW1iZXI7XG4gIC8qKiBNYXhpbXVtIHdhbGwtY2xvY2sgc2Vjb25kcyBmcm9tIHRoZSBmaXJzdCB3YWl0IGl0ZXJhdGlvbiBiZWZvcmUgZmFpbGluZy4gKi9cbiAgcmVhZG9ubHkgbWF4RWxhcHNlZFNlY29uZHM6IG51bWJlcjtcbn1cblxuLyoqIERlZmF1bHQgd2FpdCBsaW1pdHMgKDkwIGxvb3BzIMOXIDIwcyB3YWl0IOKJiCAzMCBtaW51dGVzIG9mIHdhaXRzOyAzMCBtaW51dGVzIGVsYXBzZWQpLiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUkVTT1VSQ0VfV0FJVF9MSU1JVFM6IFJlc291cmNlV2FpdExpbWl0cyA9IHtcbiAgbWF4TG9vcENvdW50OiA5MCxcbiAgbWF4RWxhcHNlZFNlY29uZHM6IDE4MDAsXG59O1xuXG4vKipcbiAqIFdoeSBwZXItaW5zdGFuY2Ugd2FpdGluZyBzdG9wcGVkIHdpdGggYW4gZXJyb3IuXG4gKlxuICogLSBgTWF4TG9vcENvdW50RXhjZWVkZWRgIOKAkyB7QGxpbmsgZ2V0V2FpdEFib3J0UmVhc29ufSBoaXQge0BsaW5rIFJlc291cmNlV2FpdExpbWl0cy5tYXhMb29wQ291bnR9LlxuICogLSBgTWF4RWxhcHNlZFRpbWVFeGNlZWRlZGAg4oCTIGVsYXBzZWQgd2FsbC1jbG9jayB0aW1lIGV4Y2VlZGVkIHtAbGluayBSZXNvdXJjZVdhaXRMaW1pdHMubWF4RWxhcHNlZFNlY29uZHN9LlxuICogLSBgVW5leHBlY3RlZEluc3RhbmNlU3RhdGVgIOKAkyBzdGF0ZSBpcyBuZWl0aGVyIHN0YWJsZSwgYWN0aW9uYWJsZSwgbm9yIGEga25vd24gdHJhbnNpdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgUmVzb3VyY2VXYWl0RmFpbHVyZVJlYXNvbiA9XG4gIHwgJ01heExvb3BDb3VudEV4Y2VlZGVkJ1xuICB8ICdNYXhFbGFwc2VkVGltZUV4Y2VlZGVkJ1xuICB8ICdVbmV4cGVjdGVkSW5zdGFuY2VTdGF0ZSc7XG5cbi8qKlxuICogV2hldGhlciB0aGUgaW5zdGFuY2UgaXMgYWxyZWFkeSBpbiB0aGUgZ29hbCBzdGF0ZSBmb3IgdGhlIHNjaGVkdWxlciBtb2RlIChubyBzdGFydC9zdG9wIG5lZWRlZCkuXG4gKlxuICogQHBhcmFtIG1vZGUgLSBgU3RhcnRgIGV4cGVjdHMgYHJ1bm5pbmdgOyBgU3RvcGAgZXhwZWN0cyBgc3RvcHBlZGAuXG4gKiBAcGFyYW0gY3VycmVudFN0YXRlIC0gSW5zdGFuY2Ugc3RhdGUgZnJvbSBgRGVzY3JpYmVJbnN0YW5jZXNgIChlLmcuIGBydW5uaW5nYCwgYHBlbmRpbmdgKS5cbiAqIEByZXR1cm5zIGB0cnVlYCB3aGVuIHRoZSBpbnN0YW5jZSBtYXRjaGVzIHRoZSB0YXJnZXQgc3RhdGUgZm9yIGBtb2RlYC5cbiAqL1xuZXhwb3J0IGNvbnN0IGlzRGVzaXJlZFN0YWJsZVN0YXRlID0gKG1vZGU6IFJ1bm5pbmdTY2hlZHVsZXJNb2RlLCBjdXJyZW50U3RhdGU6IHN0cmluZyk6IGJvb2xlYW4gPT5cbiAgKG1vZGUgPT09ICdTdGFydCcgJiYgY3VycmVudFN0YXRlID09PSAncnVubmluZycpIHx8IChtb2RlID09PSAnU3RvcCcgJiYgY3VycmVudFN0YXRlID09PSAnc3RvcHBlZCcpO1xuXG4vKipcbiAqIFdoZXRoZXIgdGhlIGluc3RhbmNlIGlzIGluIGEga25vd24gdHJhbnNpdGlvbmFsIHN0YXRlIGZvciB0aGUgc2NoZWR1bGVyIG1vZGUuXG4gKlxuICogQHBhcmFtIG1vZGUgLSBgU3RhcnRgIG9yIGBTdG9wYC5cbiAqIEBwYXJhbSBjdXJyZW50U3RhdGUgLSBJbnN0YW5jZSBzdGF0ZSBmcm9tIGBEZXNjcmliZUluc3RhbmNlc2AuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgd2hlbiB0aGUgaW5zdGFuY2UgaXMgbW92aW5nIHRvd2FyZCB0aGUgZ29hbCBzdGF0ZSBmb3IgYG1vZGVgLlxuICovXG5leHBvcnQgY29uc3QgaXNUcmFuc2l0aW9uaW5nU3RhdGUgPSAobW9kZTogUnVubmluZ1NjaGVkdWxlck1vZGUsIGN1cnJlbnRTdGF0ZTogc3RyaW5nKTogYm9vbGVhbiA9PlxuICAobW9kZSA9PT0gJ1N0YXJ0JyAmJiBjdXJyZW50U3RhdGUgPT09ICdwZW5kaW5nJykgfHxcbiAgKG1vZGUgPT09ICdTdG9wJyAmJiAoY3VycmVudFN0YXRlID09PSAnc3RvcHBpbmcnIHx8IGN1cnJlbnRTdGF0ZSA9PT0gJ3NodXR0aW5nLWRvd24nKSk7XG5cbi8qKlxuICogUmV0dXJucyBhIHdhaXQgYWJvcnQgcmVhc29uIHdoZW4gbG9vcCBjb3VudCBvciBlbGFwc2VkIHRpbWUgZXhjZWVkcyBjb25maWd1cmVkIGxpbWl0cy5cbiAqXG4gKiBAcGFyYW0gbG9vcENvdW50IC0gWmVyby1iYXNlZCBpdGVyYXRpb24gY291bnQgZm9yIHRoZSBjdXJyZW50IHdhaXQgbG9vcC5cbiAqIEBwYXJhbSBzdGFydGVkQXRNcyAtIEVwb2NoIG1pbGxpc2Vjb25kcyByZWNvcmRlZCBhdCB0aGUgc3RhcnQgb2Ygd2FpdGluZyAoZHVyYWJsZSBzdGVwKS5cbiAqIEBwYXJhbSBub3dNcyAtIEN1cnJlbnQgZXBvY2ggbWlsbGlzZWNvbmRzIChmcm9tIGEgZHVyYWJsZSBzdGVwIHdoZW4gcmVwbGF5IG1hdHRlcnMpLlxuICogQHBhcmFtIGxpbWl0cyAtIENvbmZpZ3VyZWQge0BsaW5rIFJlc291cmNlV2FpdExpbWl0c30uXG4gKiBAcmV0dXJucyBBYm9ydCByZWFzb24sIG9yIGB1bmRlZmluZWRgIHdoZW4gd2FpdGluZyBtYXkgY29udGludWUuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRXYWl0QWJvcnRSZWFzb24gPSAoXG4gIGxvb3BDb3VudDogbnVtYmVyLFxuICBzdGFydGVkQXRNczogbnVtYmVyLFxuICBub3dNczogbnVtYmVyLFxuICBsaW1pdHM6IFJlc291cmNlV2FpdExpbWl0cyxcbik6ICdNYXhMb29wQ291bnRFeGNlZWRlZCcgfCAnTWF4RWxhcHNlZFRpbWVFeGNlZWRlZCcgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAobG9vcENvdW50ID49IGxpbWl0cy5tYXhMb29wQ291bnQpIHtcbiAgICByZXR1cm4gJ01heExvb3BDb3VudEV4Y2VlZGVkJztcbiAgfVxuICBjb25zdCBlbGFwc2VkU2Vjb25kcyA9IChub3dNcyAtIHN0YXJ0ZWRBdE1zKSAvIDEwMDA7XG4gIGlmIChlbGFwc2VkU2Vjb25kcyA+PSBsaW1pdHMubWF4RWxhcHNlZFNlY29uZHMpIHtcbiAgICByZXR1cm4gJ01heEVsYXBzZWRUaW1lRXhjZWVkZWQnO1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59O1xuXG4vKiogSW5wdXRzIGZvciB7QGxpbmsgZm9ybWF0UmVzb3VyY2VXYWl0RmFpbHVyZX0uICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlV2FpdEZhaWx1cmVDb250ZXh0IHtcbiAgLyoqIEVDMiBpbnN0YW5jZSBpZCBwYXJzZWQgZnJvbSB0aGUgdGFyZ2V0IEFSTi4gKi9cbiAgcmVhZG9ubHkgaWRlbnRpZmllcjogc3RyaW5nO1xuICAvKiogU2NoZWR1bGVyIG1vZGUgZnJvbSB0aGUgaW52b2NhdGlvbiBwYXlsb2FkLiAqL1xuICByZWFkb25seSBtb2RlOiBSdW5uaW5nU2NoZWR1bGVyTW9kZTtcbiAgLyoqIExhc3Qgb2JzZXJ2ZWQgaW5zdGFuY2Ugc3RhdGUgZnJvbSBgRGVzY3JpYmVJbnN0YW5jZXNgLiAqL1xuICByZWFkb25seSBjdXJyZW50U3RhdGU6IHN0cmluZztcbiAgLyoqIFplcm8tYmFzZWQgd2FpdCBsb29wIGl0ZXJhdGlvbiB3aGVuIHRoZSBmYWlsdXJlIG9jY3VycmVkLiAqL1xuICByZWFkb25seSBsb29wQ291bnQ6IG51bWJlcjtcbiAgLyoqIEFjdGl2ZSB3YWl0IGxpbWl0cyBmb3IgbGltaXQtcmVsYXRlZCBmYWlsdXJlIG1lc3NhZ2VzLiAqL1xuICByZWFkb25seSBsaW1pdHM6IFJlc291cmNlV2FpdExpbWl0cztcbn1cblxuLyoqXG4gKiBCdWlsZHMgYSBzdGFibGUsIGdyZXAtZnJpZW5kbHkgZXJyb3IgbWVzc2FnZSBmb3Igd2FpdCBmYWlsdXJlcy5cbiAqXG4gKiBAcGFyYW0gcmVhc29uIC0gRmFpbHVyZSBjYXRlZ29yeS5cbiAqIEBwYXJhbSBjb250ZXh0IC0gSW5zdGFuY2UgaWQsIG1vZGUsIHN0YXRlLCBsb29wIGNvdW50LCBhbmQgbGltaXRzLlxuICogQHJldHVybnMgTWVzc2FnZSBwcmVmaXhlZCB3aXRoIGBSZXNvdXJjZVdhaXRGYWlsZWQ6YCAoZS5nLiBgUmVzb3VyY2VXYWl0RmFpbGVkOk1heExvb3BDb3VudEV4Y2VlZGVkOiAuLi5gKS5cbiAqL1xuZXhwb3J0IGNvbnN0IGZvcm1hdFJlc291cmNlV2FpdEZhaWx1cmUgPSAoXG4gIHJlYXNvbjogUmVzb3VyY2VXYWl0RmFpbHVyZVJlYXNvbixcbiAgY29udGV4dDogUmVzb3VyY2VXYWl0RmFpbHVyZUNvbnRleHQsXG4pOiBzdHJpbmcgPT4ge1xuICBjb25zdCBjb21tb24gPVxuICAgIGBpZGVudGlmaWVyPSR7Y29udGV4dC5pZGVudGlmaWVyfSBtb2RlPSR7Y29udGV4dC5tb2RlfSBjdXJyZW50U3RhdGU9JHtjb250ZXh0LmN1cnJlbnRTdGF0ZX0gbG9vcENvdW50PSR7Y29udGV4dC5sb29wQ291bnR9YDtcbiAgaWYgKHJlYXNvbiA9PT0gJ01heExvb3BDb3VudEV4Y2VlZGVkJykge1xuICAgIHJldHVybiBgUmVzb3VyY2VXYWl0RmFpbGVkOk1heExvb3BDb3VudEV4Y2VlZGVkOiAke2NvbW1vbn0gbWF4TG9vcENvdW50PSR7Y29udGV4dC5saW1pdHMubWF4TG9vcENvdW50fWA7XG4gIH1cbiAgaWYgKHJlYXNvbiA9PT0gJ01heEVsYXBzZWRUaW1lRXhjZWVkZWQnKSB7XG4gICAgcmV0dXJuIGBSZXNvdXJjZVdhaXRGYWlsZWQ6TWF4RWxhcHNlZFRpbWVFeGNlZWRlZDogJHtjb21tb259IG1heEVsYXBzZWRTZWNvbmRzPSR7Y29udGV4dC5saW1pdHMubWF4RWxhcHNlZFNlY29uZHN9YDtcbiAgfVxuICByZXR1cm4gYFJlc291cmNlV2FpdEZhaWxlZDpVbmV4cGVjdGVkSW5zdGFuY2VTdGF0ZTogJHtjb21tb259YDtcbn07XG4iXX0=
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Environment variable names for per-instance wait limits.
3
+ *
4
+ * Values are set by {@link EC2InstanceRunningScheduler} and read at handler cold start.
5
+ */
6
+ /**
7
+ * Lambda environment variable name for max wait loop count.
8
+ *
9
+ * @see {@link parseResourceWaitLimitsFromEnv} in `running-scheduler-wait-env.ts`
10
+ */
11
+ export declare const PROCESS_RESOURCE_MAX_LOOP_COUNT_ENV = "PROCESS_RESOURCE_MAX_LOOP_COUNT";
12
+ /**
13
+ * Lambda environment variable name for max wait elapsed seconds.
14
+ *
15
+ * @see {@link parseResourceWaitLimitsFromEnv} in `running-scheduler-wait-env.ts`
16
+ */
17
+ export declare const PROCESS_RESOURCE_MAX_ELAPSED_SECONDS_ENV = "PROCESS_RESOURCE_MAX_ELAPSED_SECONDS";
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ /**
3
+ * Environment variable names for per-instance wait limits.
4
+ *
5
+ * Values are set by {@link EC2InstanceRunningScheduler} and read at handler cold start.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.PROCESS_RESOURCE_MAX_ELAPSED_SECONDS_ENV = exports.PROCESS_RESOURCE_MAX_LOOP_COUNT_ENV = void 0;
9
+ /**
10
+ * Lambda environment variable name for max wait loop count.
11
+ *
12
+ * @see {@link parseResourceWaitLimitsFromEnv} in `running-scheduler-wait-env.ts`
13
+ */
14
+ exports.PROCESS_RESOURCE_MAX_LOOP_COUNT_ENV = 'PROCESS_RESOURCE_MAX_LOOP_COUNT';
15
+ /**
16
+ * Lambda environment variable name for max wait elapsed seconds.
17
+ *
18
+ * @see {@link parseResourceWaitLimitsFromEnv} in `running-scheduler-wait-env.ts`
19
+ */
20
+ exports.PROCESS_RESOURCE_MAX_ELAPSED_SECONDS_ENV = 'PROCESS_RESOURCE_MAX_ELAPSED_SECONDS';
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVubmluZy1zY2hlZHVsZXItd2FpdC1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZnVuY3MvcnVubmluZy1zY2hlZHVsZXItd2FpdC1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7O0dBSUc7OztBQUVIOzs7O0dBSUc7QUFDVSxRQUFBLG1DQUFtQyxHQUFHLGlDQUFpQyxDQUFDO0FBRXJGOzs7O0dBSUc7QUFDVSxRQUFBLHdDQUF3QyxHQUFHLHNDQUFzQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBFbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lcyBmb3IgcGVyLWluc3RhbmNlIHdhaXQgbGltaXRzLlxuICpcbiAqIFZhbHVlcyBhcmUgc2V0IGJ5IHtAbGluayBFQzJJbnN0YW5jZVJ1bm5pbmdTY2hlZHVsZXJ9IGFuZCByZWFkIGF0IGhhbmRsZXIgY29sZCBzdGFydC5cbiAqL1xuXG4vKipcbiAqIExhbWJkYSBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lIGZvciBtYXggd2FpdCBsb29wIGNvdW50LlxuICpcbiAqIEBzZWUge0BsaW5rIHBhcnNlUmVzb3VyY2VXYWl0TGltaXRzRnJvbUVudn0gaW4gYHJ1bm5pbmctc2NoZWR1bGVyLXdhaXQtZW52LnRzYFxuICovXG5leHBvcnQgY29uc3QgUFJPQ0VTU19SRVNPVVJDRV9NQVhfTE9PUF9DT1VOVF9FTlYgPSAnUFJPQ0VTU19SRVNPVVJDRV9NQVhfTE9PUF9DT1VOVCc7XG5cbi8qKlxuICogTGFtYmRhIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWUgZm9yIG1heCB3YWl0IGVsYXBzZWQgc2Vjb25kcy5cbiAqXG4gKiBAc2VlIHtAbGluayBwYXJzZVJlc291cmNlV2FpdExpbWl0c0Zyb21FbnZ9IGluIGBydW5uaW5nLXNjaGVkdWxlci13YWl0LWVudi50c2BcbiAqL1xuZXhwb3J0IGNvbnN0IFBST0NFU1NfUkVTT1VSQ0VfTUFYX0VMQVBTRURfU0VDT05EU19FTlYgPSAnUFJPQ0VTU19SRVNPVVJDRV9NQVhfRUxBUFNFRF9TRUNPTkRTJztcbiJdfQ==
@@ -0,0 +1,9 @@
1
+ import { type ResourceWaitLimits } from './running-scheduler-predicates';
2
+ /**
3
+ * Reads per-instance wait limits from Lambda environment variables set by the CDK construct.
4
+ *
5
+ * @returns Parsed limits, using {@link DEFAULT_RESOURCE_WAIT_LIMITS} when variables are unset.
6
+ * @throws {import('strict-env-resolver').StrictEnvValidationError} When a set variable is not a finite number.
7
+ * @throws {Error} When a set variable is zero or negative.
8
+ */
9
+ export declare const parseResourceWaitLimitsFromEnv: () => ResourceWaitLimits;
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseResourceWaitLimitsFromEnv = void 0;
4
+ /**
5
+ * Lambda-only environment parsing for per-instance wait limits.
6
+ *
7
+ * Bundled into the running scheduler function; not imported from CDK constructs.
8
+ */
9
+ const strict_env_resolver_1 = require("strict-env-resolver");
10
+ const running_scheduler_predicates_1 = require("./running-scheduler-predicates");
11
+ const running_scheduler_wait_config_1 = require("./running-scheduler-wait-config");
12
+ /**
13
+ * Ensures a parsed env integer is strictly positive.
14
+ *
15
+ * `StrictEnvType.Number` accepts any finite number (including zero and negatives);
16
+ * wait limits require values greater than zero.
17
+ *
18
+ * @param key - Environment variable name used in error messages.
19
+ * @param value - Parsed number from {@link StrictEnvResolver.resolveAll}.
20
+ * @returns `value` when it is greater than zero.
21
+ * @throws {Error} When `value` is zero or negative.
22
+ */
23
+ const assertPositiveEnvInt = (key, value) => {
24
+ if (value <= 0) {
25
+ const raw = process.env[key];
26
+ throw new Error(`Invalid ${key}: must be a positive integer (got "${raw ?? ''}")`);
27
+ }
28
+ return value;
29
+ };
30
+ /**
31
+ * Reads per-instance wait limits from Lambda environment variables set by the CDK construct.
32
+ *
33
+ * @returns Parsed limits, using {@link DEFAULT_RESOURCE_WAIT_LIMITS} when variables are unset.
34
+ * @throws {import('strict-env-resolver').StrictEnvValidationError} When a set variable is not a finite number.
35
+ * @throws {Error} When a set variable is zero or negative.
36
+ */
37
+ const parseResourceWaitLimitsFromEnv = () => {
38
+ const parsed = strict_env_resolver_1.StrictEnvResolver.resolveAll({
39
+ [running_scheduler_wait_config_1.PROCESS_RESOURCE_MAX_LOOP_COUNT_ENV]: [
40
+ strict_env_resolver_1.StrictEnvType.Number,
41
+ { default: running_scheduler_predicates_1.DEFAULT_RESOURCE_WAIT_LIMITS.maxLoopCount },
42
+ ],
43
+ [running_scheduler_wait_config_1.PROCESS_RESOURCE_MAX_ELAPSED_SECONDS_ENV]: [
44
+ strict_env_resolver_1.StrictEnvType.Number,
45
+ { default: running_scheduler_predicates_1.DEFAULT_RESOURCE_WAIT_LIMITS.maxElapsedSeconds },
46
+ ],
47
+ });
48
+ return {
49
+ maxLoopCount: assertPositiveEnvInt(running_scheduler_wait_config_1.PROCESS_RESOURCE_MAX_LOOP_COUNT_ENV, parsed[running_scheduler_wait_config_1.PROCESS_RESOURCE_MAX_LOOP_COUNT_ENV]),
50
+ maxElapsedSeconds: assertPositiveEnvInt(running_scheduler_wait_config_1.PROCESS_RESOURCE_MAX_ELAPSED_SECONDS_ENV, parsed[running_scheduler_wait_config_1.PROCESS_RESOURCE_MAX_ELAPSED_SECONDS_ENV]),
51
+ };
52
+ };
53
+ exports.parseResourceWaitLimitsFromEnv = parseResourceWaitLimitsFromEnv;
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVubmluZy1zY2hlZHVsZXItd2FpdC1lbnYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZnVuY3MvcnVubmluZy1zY2hlZHVsZXItd2FpdC1lbnYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7Ozs7R0FJRztBQUNILDZEQUF1RTtBQUN2RSxpRkFHd0M7QUFDeEMsbUZBR3lDO0FBRXpDOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLG9CQUFvQixHQUFHLENBQUMsR0FBVyxFQUFFLEtBQWEsRUFBVSxFQUFFO0lBQ2xFLElBQUksS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2YsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsR0FBRyxzQ0FBc0MsR0FBRyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBRUY7Ozs7OztHQU1HO0FBQ0ksTUFBTSw4QkFBOEIsR0FBRyxHQUF1QixFQUFFO0lBQ3JFLE1BQU0sTUFBTSxHQUFHLHVDQUFpQixDQUFDLFVBQVUsQ0FBQztRQUMxQyxDQUFDLG1FQUFtQyxDQUFDLEVBQUU7WUFDckMsbUNBQWEsQ0FBQyxNQUFNO1lBQ3BCLEVBQUUsT0FBTyxFQUFFLDJEQUE0QixDQUFDLFlBQVksRUFBRTtTQUN2RDtRQUNELENBQUMsd0VBQXdDLENBQUMsRUFBRTtZQUMxQyxtQ0FBYSxDQUFDLE1BQU07WUFDcEIsRUFBRSxPQUFPLEVBQUUsMkRBQTRCLENBQUMsaUJBQWlCLEVBQUU7U0FDNUQ7S0FDRixDQUFDLENBQUM7SUFFSCxPQUFPO1FBQ0wsWUFBWSxFQUFFLG9CQUFvQixDQUNoQyxtRUFBbUMsRUFDbkMsTUFBTSxDQUFDLG1FQUFtQyxDQUFDLENBQzVDO1FBQ0QsaUJBQWlCLEVBQUUsb0JBQW9CLENBQ3JDLHdFQUF3QyxFQUN4QyxNQUFNLENBQUMsd0VBQXdDLENBQUMsQ0FDakQ7S0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBdEJXLFFBQUEsOEJBQThCLGtDQXNCekMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIExhbWJkYS1vbmx5IGVudmlyb25tZW50IHBhcnNpbmcgZm9yIHBlci1pbnN0YW5jZSB3YWl0IGxpbWl0cy5cbiAqXG4gKiBCdW5kbGVkIGludG8gdGhlIHJ1bm5pbmcgc2NoZWR1bGVyIGZ1bmN0aW9uOyBub3QgaW1wb3J0ZWQgZnJvbSBDREsgY29uc3RydWN0cy5cbiAqL1xuaW1wb3J0IHsgU3RyaWN0RW52UmVzb2x2ZXIsIFN0cmljdEVudlR5cGUgfSBmcm9tICdzdHJpY3QtZW52LXJlc29sdmVyJztcbmltcG9ydCB7XG4gIERFRkFVTFRfUkVTT1VSQ0VfV0FJVF9MSU1JVFMsXG4gIHR5cGUgUmVzb3VyY2VXYWl0TGltaXRzLFxufSBmcm9tICcuL3J1bm5pbmctc2NoZWR1bGVyLXByZWRpY2F0ZXMnO1xuaW1wb3J0IHtcbiAgUFJPQ0VTU19SRVNPVVJDRV9NQVhfRUxBUFNFRF9TRUNPTkRTX0VOVixcbiAgUFJPQ0VTU19SRVNPVVJDRV9NQVhfTE9PUF9DT1VOVF9FTlYsXG59IGZyb20gJy4vcnVubmluZy1zY2hlZHVsZXItd2FpdC1jb25maWcnO1xuXG4vKipcbiAqIEVuc3VyZXMgYSBwYXJzZWQgZW52IGludGVnZXIgaXMgc3RyaWN0bHkgcG9zaXRpdmUuXG4gKlxuICogYFN0cmljdEVudlR5cGUuTnVtYmVyYCBhY2NlcHRzIGFueSBmaW5pdGUgbnVtYmVyIChpbmNsdWRpbmcgemVybyBhbmQgbmVnYXRpdmVzKTtcbiAqIHdhaXQgbGltaXRzIHJlcXVpcmUgdmFsdWVzIGdyZWF0ZXIgdGhhbiB6ZXJvLlxuICpcbiAqIEBwYXJhbSBrZXkgLSBFbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lIHVzZWQgaW4gZXJyb3IgbWVzc2FnZXMuXG4gKiBAcGFyYW0gdmFsdWUgLSBQYXJzZWQgbnVtYmVyIGZyb20ge0BsaW5rIFN0cmljdEVudlJlc29sdmVyLnJlc29sdmVBbGx9LlxuICogQHJldHVybnMgYHZhbHVlYCB3aGVuIGl0IGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLlxuICogQHRocm93cyB7RXJyb3J9IFdoZW4gYHZhbHVlYCBpcyB6ZXJvIG9yIG5lZ2F0aXZlLlxuICovXG5jb25zdCBhc3NlcnRQb3NpdGl2ZUVudkludCA9IChrZXk6IHN0cmluZywgdmFsdWU6IG51bWJlcik6IG51bWJlciA9PiB7XG4gIGlmICh2YWx1ZSA8PSAwKSB7XG4gICAgY29uc3QgcmF3ID0gcHJvY2Vzcy5lbnZba2V5XTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgJHtrZXl9OiBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciAoZ290IFwiJHtyYXcgPz8gJyd9XCIpYCk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufTtcblxuLyoqXG4gKiBSZWFkcyBwZXItaW5zdGFuY2Ugd2FpdCBsaW1pdHMgZnJvbSBMYW1iZGEgZW52aXJvbm1lbnQgdmFyaWFibGVzIHNldCBieSB0aGUgQ0RLIGNvbnN0cnVjdC5cbiAqXG4gKiBAcmV0dXJucyBQYXJzZWQgbGltaXRzLCB1c2luZyB7QGxpbmsgREVGQVVMVF9SRVNPVVJDRV9XQUlUX0xJTUlUU30gd2hlbiB2YXJpYWJsZXMgYXJlIHVuc2V0LlxuICogQHRocm93cyB7aW1wb3J0KCdzdHJpY3QtZW52LXJlc29sdmVyJykuU3RyaWN0RW52VmFsaWRhdGlvbkVycm9yfSBXaGVuIGEgc2V0IHZhcmlhYmxlIGlzIG5vdCBhIGZpbml0ZSBudW1iZXIuXG4gKiBAdGhyb3dzIHtFcnJvcn0gV2hlbiBhIHNldCB2YXJpYWJsZSBpcyB6ZXJvIG9yIG5lZ2F0aXZlLlxuICovXG5leHBvcnQgY29uc3QgcGFyc2VSZXNvdXJjZVdhaXRMaW1pdHNGcm9tRW52ID0gKCk6IFJlc291cmNlV2FpdExpbWl0cyA9PiB7XG4gIGNvbnN0IHBhcnNlZCA9IFN0cmljdEVudlJlc29sdmVyLnJlc29sdmVBbGwoe1xuICAgIFtQUk9DRVNTX1JFU09VUkNFX01BWF9MT09QX0NPVU5UX0VOVl06IFtcbiAgICAgIFN0cmljdEVudlR5cGUuTnVtYmVyLFxuICAgICAgeyBkZWZhdWx0OiBERUZBVUxUX1JFU09VUkNFX1dBSVRfTElNSVRTLm1heExvb3BDb3VudCB9LFxuICAgIF0sXG4gICAgW1BST0NFU1NfUkVTT1VSQ0VfTUFYX0VMQVBTRURfU0VDT05EU19FTlZdOiBbXG4gICAgICBTdHJpY3RFbnZUeXBlLk51bWJlcixcbiAgICAgIHsgZGVmYXVsdDogREVGQVVMVF9SRVNPVVJDRV9XQUlUX0xJTUlUUy5tYXhFbGFwc2VkU2Vjb25kcyB9LFxuICAgIF0sXG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgbWF4TG9vcENvdW50OiBhc3NlcnRQb3NpdGl2ZUVudkludChcbiAgICAgIFBST0NFU1NfUkVTT1VSQ0VfTUFYX0xPT1BfQ09VTlRfRU5WLFxuICAgICAgcGFyc2VkW1BST0NFU1NfUkVTT1VSQ0VfTUFYX0xPT1BfQ09VTlRfRU5WXSxcbiAgICApLFxuICAgIG1heEVsYXBzZWRTZWNvbmRzOiBhc3NlcnRQb3NpdGl2ZUVudkludChcbiAgICAgIFBST0NFU1NfUkVTT1VSQ0VfTUFYX0VMQVBTRURfU0VDT05EU19FTlYsXG4gICAgICBwYXJzZWRbUFJPQ0VTU19SRVNPVVJDRV9NQVhfRUxBUFNFRF9TRUNPTkRTX0VOVl0sXG4gICAgKSxcbiAgfTtcbn07XG4iXX0=
@@ -29,15 +29,22 @@ export interface SchedulerEvent {
29
29
  * in parallel (bounded concurrency), posts a parent Slack message and per-instance thread replies,
30
30
  * and uses durable `step` / `wait` / `map` so the run can resume across suspensions.
31
31
  *
32
- * Reads per-instance polling limits from `PROCESS_RESOURCE_MAX_LOOP_COUNT` and
33
- * `PROCESS_RESOURCE_MAX_ELAPSED_SECONDS` via {@link parseResourcePollingLimitsFromEnv}.
32
+ * Reads per-instance wait limits from `PROCESS_RESOURCE_MAX_LOOP_COUNT` and
33
+ * `PROCESS_RESOURCE_MAX_ELAPSED_SECONDS` via {@link parseResourceWaitLimitsFromEnv}.
34
+ * Loads the Slack secret via {@link secretFetcher} (Parameters and Secrets Lambda Extension).
35
+ * Slack API failures are logged as `running-scheduler: Slack post failed` for CloudWatch log filters.
34
36
  *
35
37
  * @param event - Payload from EventBridge Scheduler; must include `Params.TagKey`, `Params.TagValues`, `Params.Mode`.
36
38
  * @param ctx - Root durable execution context.
37
39
  * @returns
38
40
  * - `{ status: 'TargetResourcesNotFound' }` when no instances match the tag filter.
39
41
  * - `{ status: 'Completed', processed, results }` when instances were handled (`results` entries match {@link processOneResource} return shape).
40
- * @throws {Error} If `Params` is invalid, polling env vars are invalid, `SLACK_SECRET_NAME` is unset,
41
- * the Slack secret is incomplete, or instance processing fails (including `ResourcePollingFailed:*` errors).
42
+ * @throws {Error} If `Params` is invalid, wait env vars are not positive integers,
43
+ * the Slack secret is incomplete, instance processing fails (including `ResourceWaitFailed:*` errors),
44
+ * or the secret cannot be read from the extension (e.g. outside Lambda or missing `AWS_SESSION_TOKEN`).
45
+ * @throws {import('strict-env-resolver').StrictEnvValidationError} When required env vars are missing or not valid numbers.
46
+ * @throws {import('fetch-retrier').FetchRetrierHttpError} When the extension returns a non-retriable HTTP error.
47
+ * @throws {import('fetch-retrier').FetchRetrierNetworkError} When extension requests fail at the network level.
48
+ * @throws {import('fetch-retrier').FetchRetrierAbortError} When extension requests time out after all retries.
42
49
  */
43
50
  export declare const handler: import("@aws/durable-execution-sdk-js").DurableLambdaHandler;