@context-action/core 0.9.2 → 1.0.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.
- package/README.md +41 -38
- package/dist/index.cjs +1469 -742
- package/dist/index.d.cts +187 -44
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +187 -44
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1469 -742
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -14,33 +14,114 @@ interface ActionSchemaLike {
|
|
|
14
14
|
};
|
|
15
15
|
};
|
|
16
16
|
}
|
|
17
|
+
type ActionNames<T extends ActionPayloadMap> = Extract<keyof T, string>;
|
|
18
|
+
type ActionResultMap<T extends ActionPayloadMap> = Partial<Record<ActionNames<T>, unknown>>;
|
|
19
|
+
type ActionResult<TResultMap extends ActionPayloadMap, K extends PropertyKey> = K extends keyof TResultMap ? TResultMap[K] : void;
|
|
17
20
|
interface PipelineController<T = unknown, R = void> {
|
|
18
21
|
readonly signal?: AbortSignal;
|
|
19
22
|
abort(reason?: string): void;
|
|
20
23
|
modifyPayload(modifier: (payload: T) => T): void;
|
|
21
24
|
getPayload(): T;
|
|
22
25
|
jumpToPriority(priority: number): void;
|
|
23
|
-
return(result: R):
|
|
26
|
+
return(result: R): R;
|
|
24
27
|
setResult(result: R): void;
|
|
25
28
|
getResults(): R[];
|
|
26
29
|
mergeResult(merger: (previousResults: R[], currentResult: R) => R): void;
|
|
27
30
|
}
|
|
31
|
+
interface ActionEffectController<T = unknown> {
|
|
32
|
+
readonly signal?: AbortSignal;
|
|
33
|
+
getPayload(): T;
|
|
34
|
+
}
|
|
35
|
+
interface ActionGuardController<T = unknown> extends ActionEffectController<T> {
|
|
36
|
+
abort(reason?: string): void;
|
|
37
|
+
modifyPayload(modifier: (payload: T) => T): void;
|
|
38
|
+
}
|
|
39
|
+
interface ActionResultController<T = unknown, R = void> extends ActionEffectController<T> {
|
|
40
|
+
abort(reason?: string): void;
|
|
41
|
+
return(result: R): R;
|
|
42
|
+
setResult(result: R): void;
|
|
43
|
+
getResults(): readonly R[];
|
|
44
|
+
mergeResult(merger: (previousResults: readonly R[], currentResult: R) => R): void;
|
|
45
|
+
}
|
|
46
|
+
type HandlerRole = 'guard' | 'result' | 'observer' | 'legacy';
|
|
47
|
+
interface ActionObserverEvent<T = unknown, R = void> {
|
|
48
|
+
readonly action: string;
|
|
49
|
+
readonly payload: Readonly<T>;
|
|
50
|
+
readonly outcome: ExecutionResult<R>['outcome'];
|
|
51
|
+
readonly result: R | readonly R[] | undefined;
|
|
52
|
+
readonly errors: readonly HandlerError[];
|
|
53
|
+
readonly signal?: AbortSignal;
|
|
54
|
+
}
|
|
55
|
+
type ActionObserverHandler<T = unknown, R = void> = (event: ActionObserverEvent<T, R>) => void | Promise<void>;
|
|
56
|
+
interface ObserverConfig<T = unknown> extends Omit<HandlerConfig<T>, 'debounce' | 'throttle' | 'blocking' | 'errorPolicy'> {
|
|
57
|
+
when?: 'success' | 'failure' | 'always';
|
|
58
|
+
}
|
|
59
|
+
interface GuardConfig<T = unknown> extends Omit<HandlerConfig<T>, 'blocking' | 'scheduling' | 'errorPolicy' | 'debounce' | 'throttle' | 'when'> {}
|
|
60
|
+
interface EffectConfig<T = unknown> extends HandlerConfig<T> {
|
|
61
|
+
effectKind: 'guard' | 'observer';
|
|
62
|
+
}
|
|
28
63
|
type ActionHandler<T = unknown, R = void> = (payload: T, controller: PipelineController<T, R>) => R | Promise<R> | void | Promise<void>;
|
|
64
|
+
type ActionEffectHandler<T = unknown> = (payload: T, controller: ActionEffectController<T>) => void | Promise<void>;
|
|
65
|
+
type ActionGuardHandler<T = unknown> = (payload: T, controller: ActionGuardController<T>) => void | Promise<void>;
|
|
66
|
+
type ActionResultHandler<T = unknown, R = void> = (payload: T, controller: ActionResultController<T, R>) => R | Promise<R>;
|
|
67
|
+
type HandlerScheduling = 'await-before-next' | 'start-and-continue';
|
|
68
|
+
type HandlerErrorPolicy = 'fatal' | 'collect';
|
|
29
69
|
interface HandlerConfig<T = unknown> {
|
|
30
70
|
priority?: number;
|
|
31
71
|
id?: string;
|
|
32
72
|
blocking?: boolean;
|
|
73
|
+
scheduling?: HandlerScheduling;
|
|
74
|
+
errorPolicy?: HandlerErrorPolicy;
|
|
33
75
|
once?: boolean;
|
|
34
76
|
debounce?: number;
|
|
35
77
|
throttle?: number;
|
|
36
78
|
replaceExisting?: boolean;
|
|
37
79
|
cleanup?: () => void;
|
|
38
80
|
condition?: (payload: T) => boolean;
|
|
81
|
+
metadata?: Record<string, unknown>;
|
|
82
|
+
when?: 'success' | 'failure' | 'always';
|
|
39
83
|
}
|
|
84
|
+
interface ResolvedHandlerConfig<T = unknown> {
|
|
85
|
+
priority: number;
|
|
86
|
+
id: string;
|
|
87
|
+
blocking: boolean;
|
|
88
|
+
scheduling: HandlerScheduling;
|
|
89
|
+
errorPolicy: HandlerErrorPolicy;
|
|
90
|
+
once: boolean;
|
|
91
|
+
replaceExisting: boolean;
|
|
92
|
+
debounce?: number;
|
|
93
|
+
throttle?: number;
|
|
94
|
+
cleanup?: () => void;
|
|
95
|
+
condition?: (payload: T) => boolean;
|
|
96
|
+
metadata?: Record<string, unknown>;
|
|
97
|
+
}
|
|
98
|
+
declare function resolveHandlerConfig<T = unknown>(config: HandlerConfig<T> | undefined, handlerId: string): ResolvedHandlerConfig<T>;
|
|
40
99
|
interface HandlerRegistration<T = unknown, R = void> {
|
|
41
100
|
handler: ActionHandler<T, R>;
|
|
42
|
-
config:
|
|
101
|
+
config: ResolvedHandlerConfig<T>;
|
|
102
|
+
id: string;
|
|
103
|
+
role?: HandlerRole;
|
|
104
|
+
}
|
|
105
|
+
type HandlerExecutionStatus = 'running' | 'succeeded' | 'failed' | 'skipped' | 'cancelled';
|
|
106
|
+
interface HandlerExecutionOutcome<R = void> {
|
|
43
107
|
id: string;
|
|
108
|
+
status: HandlerExecutionStatus;
|
|
109
|
+
executed: boolean;
|
|
110
|
+
duration: number | undefined;
|
|
111
|
+
result: R | undefined;
|
|
112
|
+
error: Error | undefined;
|
|
113
|
+
metadata: Record<string, unknown> | undefined;
|
|
114
|
+
terminationRequested?: boolean;
|
|
115
|
+
terminationResult?: R;
|
|
116
|
+
}
|
|
117
|
+
interface PipelineControllerState<T = unknown, R = void> {
|
|
118
|
+
payload: T;
|
|
119
|
+
aborted: boolean;
|
|
120
|
+
abortReason: string | undefined;
|
|
121
|
+
jumpToPriority: number | undefined;
|
|
122
|
+
terminated: boolean;
|
|
123
|
+
terminationResult: R | undefined;
|
|
124
|
+
results: R[];
|
|
44
125
|
}
|
|
45
126
|
type ExecutionMode = 'sequential' | 'parallel' | 'race';
|
|
46
127
|
interface PipelineContext<T = unknown, R = void> {
|
|
@@ -48,7 +129,11 @@ interface PipelineContext<T = unknown, R = void> {
|
|
|
48
129
|
payload: T;
|
|
49
130
|
handlers: HandlerRegistration<T, R>[];
|
|
50
131
|
executedHandlers?: HandlerRegistration<T, R>[];
|
|
132
|
+
handlerOutcomes?: HandlerExecutionOutcome<R>[];
|
|
133
|
+
raceWinnerId?: string;
|
|
134
|
+
raceLoserOutcomes?: HandlerExecutionOutcome<R>[];
|
|
51
135
|
deferOnceCleanup?: boolean;
|
|
136
|
+
claimOnce?(registration: HandlerRegistration<T, R>): boolean;
|
|
52
137
|
signal?: AbortSignal;
|
|
53
138
|
trackHandlerPromise?<V>(promise: Promise<V>): Promise<V>;
|
|
54
139
|
collectedErrors?: HandlerError[];
|
|
@@ -71,6 +156,7 @@ interface ActionRegisterConfig {
|
|
|
71
156
|
defaultExecutionMode?: ExecutionMode;
|
|
72
157
|
useConcurrencyQueue?: boolean;
|
|
73
158
|
maxHandlersPerAction?: number;
|
|
159
|
+
maxJumps?: number;
|
|
74
160
|
errorHandler?: (error: Error, context: unknown) => void | Promise<void>;
|
|
75
161
|
schema?: Record<string, ActionSchemaLike>;
|
|
76
162
|
validateOnDispatch?: boolean;
|
|
@@ -88,6 +174,7 @@ interface DispatchOptions {
|
|
|
88
174
|
retryOnError?: {
|
|
89
175
|
maxAttempts: number;
|
|
90
176
|
delay: number;
|
|
177
|
+
attemptBarrier?: 'abort-and-drain' | 'abort-and-overlap';
|
|
91
178
|
};
|
|
92
179
|
autoAbort?: {
|
|
93
180
|
enabled: boolean;
|
|
@@ -101,7 +188,7 @@ interface DispatchOptions {
|
|
|
101
188
|
min?: number;
|
|
102
189
|
max?: number;
|
|
103
190
|
};
|
|
104
|
-
custom?: (config:
|
|
191
|
+
custom?: (config: Readonly<ResolvedHandlerConfig>) => boolean;
|
|
105
192
|
};
|
|
106
193
|
result?: {
|
|
107
194
|
strategy?: 'first' | 'last' | 'all' | 'merge' | 'custom';
|
|
@@ -116,6 +203,7 @@ interface ExecutionResult<R = void> {
|
|
|
116
203
|
aborted: boolean;
|
|
117
204
|
abortReason: string | undefined;
|
|
118
205
|
terminated: boolean;
|
|
206
|
+
outcome: 'completed' | 'completed_with_errors' | 'failed' | 'cancelled' | 'debounced' | 'throttled';
|
|
119
207
|
validation?: {
|
|
120
208
|
passed: boolean;
|
|
121
209
|
errors: string[];
|
|
@@ -130,6 +218,17 @@ interface ExecutionResult<R = void> {
|
|
|
130
218
|
}>;
|
|
131
219
|
execution: {
|
|
132
220
|
duration: number;
|
|
221
|
+
admissionDuration: number;
|
|
222
|
+
queueWaitDuration: number;
|
|
223
|
+
pipelineDuration: number;
|
|
224
|
+
retryDelayDuration?: number;
|
|
225
|
+
resultProcessingDuration?: number;
|
|
226
|
+
attempts?: Array<{
|
|
227
|
+
startTime: number;
|
|
228
|
+
endTime: number;
|
|
229
|
+
duration: number;
|
|
230
|
+
outcome: 'succeeded' | 'failed' | 'retried' | 'cancelled';
|
|
231
|
+
}>;
|
|
133
232
|
handlersExecuted: number;
|
|
134
233
|
handlersSkipped: number;
|
|
135
234
|
handlersFailed: number;
|
|
@@ -139,11 +238,19 @@ interface ExecutionResult<R = void> {
|
|
|
139
238
|
handlers: Array<{
|
|
140
239
|
id: string;
|
|
141
240
|
executed: boolean;
|
|
241
|
+
status: HandlerExecutionStatus;
|
|
142
242
|
duration: number | undefined;
|
|
143
243
|
result: R | undefined;
|
|
144
244
|
error: Error | undefined;
|
|
145
245
|
metadata: Record<string, unknown> | undefined;
|
|
146
246
|
}>;
|
|
247
|
+
raceDiagnostics?: {
|
|
248
|
+
winnerId?: string;
|
|
249
|
+
winner?: HandlerExecutionOutcome<R>;
|
|
250
|
+
loserSnapshots: Array<HandlerExecutionOutcome<R>>;
|
|
251
|
+
pendingLosersAtReturn: number;
|
|
252
|
+
observedLoserFailures: number;
|
|
253
|
+
};
|
|
147
254
|
errors: HandlerError[];
|
|
148
255
|
}
|
|
149
256
|
interface HandlerError {
|
|
@@ -153,13 +260,10 @@ interface HandlerError {
|
|
|
153
260
|
severity: 'blocking' | 'non-blocking';
|
|
154
261
|
}
|
|
155
262
|
type UnregisterFunction = () => void;
|
|
156
|
-
type
|
|
157
|
-
type
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
<K extends VoidActions<T>>(action: K, payload?: undefined, options?: DispatchOptions): Promise<void>;
|
|
161
|
-
<K extends PayloadActions<T>>(action: K, payload: T[K], options?: DispatchOptions): Promise<void>;
|
|
162
|
-
}
|
|
263
|
+
type DispatchArgs<P> = [P] extends [void] ? [payload?: undefined, options?: DispatchOptions] : [payload: P, options?: DispatchOptions];
|
|
264
|
+
type ReservedActionKey = 'then' | 'catch' | 'finally' | 'toJSON' | 'constructor' | '__proto__' | 'prototype';
|
|
265
|
+
type ProxyActionKey<T extends ActionPayloadMap> = Exclude<ActionNames<T>, ReservedActionKey>;
|
|
266
|
+
type ActionDispatcher<T extends ActionPayloadMap> = <K extends ActionNames<T>>(action: K, ...args: DispatchArgs<T[K]>) => Promise<void>;
|
|
163
267
|
interface ActionRegistryInfo<T extends ActionPayloadMap> {
|
|
164
268
|
name: string;
|
|
165
269
|
totalActions: number;
|
|
@@ -183,8 +287,10 @@ interface ActionHandlerStats<T extends ActionPayloadMap> {
|
|
|
183
287
|
}
|
|
184
288
|
//#endregion
|
|
185
289
|
//#region src/ActionRegister.d.ts
|
|
186
|
-
declare class ActionRegister<T extends ActionPayloadMap = Record<string, unknown
|
|
290
|
+
declare class ActionRegister<T extends ActionPayloadMap = Record<string, unknown>, TResultMap extends ActionResultMap<T> = {}> {
|
|
187
291
|
private pipelines;
|
|
292
|
+
private readonly observerHandlers;
|
|
293
|
+
private readonly claimedOnceHandlers;
|
|
188
294
|
private readonly actionGuard;
|
|
189
295
|
private executionMode;
|
|
190
296
|
private actionExecutionModes;
|
|
@@ -194,9 +300,9 @@ declare class ActionRegister<T extends ActionPayloadMap = Record<string, unknown
|
|
|
194
300
|
private readonly registryConfig;
|
|
195
301
|
private readonly isDebugMode;
|
|
196
302
|
private readonly maxHandlersPerAction;
|
|
303
|
+
private readonly maxJumps;
|
|
197
304
|
private dispatchQueue?;
|
|
198
305
|
private handlerIdCounter;
|
|
199
|
-
private controllerPool;
|
|
200
306
|
private lifecycleState;
|
|
201
307
|
private readonly lifecycleController;
|
|
202
308
|
private readonly activeDispatches;
|
|
@@ -205,21 +311,37 @@ declare class ActionRegister<T extends ActionPayloadMap = Record<string, unknown
|
|
|
205
311
|
private dispatchConstructionDepth;
|
|
206
312
|
private _actionsProxy?;
|
|
207
313
|
private _actionsWithResultProxy?;
|
|
314
|
+
private readonly actionDispatchers;
|
|
315
|
+
private readonly actionResultDispatchers;
|
|
208
316
|
constructor(config?: ActionRegisterConfig);
|
|
209
|
-
get actions(): { [K in
|
|
210
|
-
get actionsWithResult(): { [K in
|
|
211
|
-
register<K extends
|
|
317
|
+
get actions(): { [K in ProxyActionKey<T>]: (...args: DispatchArgs<T[K]>) => Promise<void>; };
|
|
318
|
+
get actionsWithResult(): { [K in ProxyActionKey<T>]: (...args: DispatchArgs<T[K]>) => Promise<ExecutionResult<ActionResult<TResultMap, K>>>; };
|
|
319
|
+
register<K extends ActionNames<T> & keyof TResultMap>(action: K, handler: ActionResultHandler<T[K], ActionResult<TResultMap, K>>, config?: HandlerConfig<T[K]>): UnregisterFunction;
|
|
320
|
+
register<K extends Exclude<ActionNames<T>, keyof TResultMap>, R = void>(action: K, handler: ActionHandler<T[K], R>, config?: HandlerConfig<T[K]>): UnregisterFunction;
|
|
321
|
+
registerEffect<K extends ActionNames<T>>(action: K, handler: ActionGuardHandler<T[K]>, config: EffectConfig<T[K]> & {
|
|
322
|
+
effectKind: 'guard';
|
|
323
|
+
}): UnregisterFunction;
|
|
324
|
+
registerEffect<K extends ActionNames<T>>(action: K, handler: ActionEffectHandler<T[K]>, config: EffectConfig<T[K]> & {
|
|
325
|
+
effectKind: 'observer';
|
|
326
|
+
}): UnregisterFunction;
|
|
327
|
+
registerGuard<K extends ActionNames<T>>(action: K, handler: ActionGuardHandler<T[K]>, config?: GuardConfig<T[K]>): UnregisterFunction;
|
|
328
|
+
registerObserver<K extends ActionNames<T>, R = ActionResult<TResultMap, K>, H extends (event: ActionObserverEvent<T[K], R>) => unknown = ActionObserverHandler<T[K], R>>(action: K, handler: H & (ReturnType<H> extends void | Promise<void> ? unknown : never), config?: ObserverConfig<T[K]>): UnregisterFunction;
|
|
329
|
+
registerResult<K extends ActionNames<T> & keyof TResultMap>(action: K, handler: ActionResultHandler<T[K], ActionResult<TResultMap, K>>, config?: HandlerConfig<T[K]>): UnregisterFunction;
|
|
330
|
+
private registerWithRole;
|
|
212
331
|
private log;
|
|
213
332
|
private assertAcceptingWork;
|
|
333
|
+
private assertStringActionKey;
|
|
214
334
|
private rejectedLifecyclePromise;
|
|
215
335
|
private generateHandlerId;
|
|
216
336
|
private createAbortSignal;
|
|
217
337
|
private _performRegistrationSync;
|
|
218
|
-
dispatch<K extends
|
|
219
|
-
dispatch<K extends keyof T>(action: K, payload?: undefined, options?: DispatchOptions): Promise<void>;
|
|
338
|
+
dispatch<K extends ActionNames<T>>(action: K, ...args: DispatchArgs<T[K]>): Promise<void>;
|
|
220
339
|
private executeWithRetry;
|
|
221
340
|
private trackDispatchPromise;
|
|
222
341
|
private trackHandlerPromise;
|
|
342
|
+
private withAttemptSignal;
|
|
343
|
+
private shouldDrainBeforeRetry;
|
|
344
|
+
private drainAttemptHandlers;
|
|
223
345
|
private trackGlobalHandlerPromise;
|
|
224
346
|
private waitForRetry;
|
|
225
347
|
private createTimeoutScope;
|
|
@@ -228,31 +350,43 @@ declare class ActionRegister<T extends ActionPayloadMap = Record<string, unknown
|
|
|
228
350
|
private invokeErrorHandler;
|
|
229
351
|
private validatePayload;
|
|
230
352
|
private createAbortedExecutionResult;
|
|
231
|
-
private
|
|
232
|
-
|
|
353
|
+
private resolveDispatchPlan;
|
|
354
|
+
private evaluateTimingGuards;
|
|
355
|
+
private getAttemptHandlers;
|
|
356
|
+
private getObservers;
|
|
357
|
+
private executeObservers;
|
|
358
|
+
private snapshotObserverEvent;
|
|
359
|
+
private safeSnapshotObserverEvent;
|
|
360
|
+
private executeGuardPhase;
|
|
361
|
+
private createGuardRejectedResult;
|
|
362
|
+
private createTimingGuardResult;
|
|
363
|
+
dispatchWithResult<K extends ActionNames<T> & keyof TResultMap>(action: K, ...args: DispatchArgs<T[K]>): Promise<ExecutionResult<ActionResult<TResultMap, K>>>;
|
|
364
|
+
dispatchWithResult<K extends Exclude<ActionNames<T>, keyof TResultMap>, R = void>(action: K, ...args: DispatchArgs<T[K]>): Promise<ExecutionResult<R>>;
|
|
233
365
|
private _performDispatchWithResult;
|
|
234
|
-
private
|
|
235
|
-
private getControllerFromPool;
|
|
366
|
+
private createController;
|
|
236
367
|
private filterHandlers;
|
|
368
|
+
private validateResultOptions;
|
|
237
369
|
private processResults;
|
|
238
370
|
private executePipeline;
|
|
239
371
|
private cleanupOneTimeHandlers;
|
|
240
|
-
|
|
241
|
-
|
|
372
|
+
private claimOnceRegistration;
|
|
373
|
+
getHandlerCount<K extends ActionNames<T>>(action: K): number;
|
|
374
|
+
hasHandlers<K extends ActionNames<T>>(action: K): boolean;
|
|
242
375
|
getRegisteredActions(): (keyof T)[];
|
|
243
|
-
clearAction<K extends
|
|
376
|
+
clearAction<K extends ActionNames<T>>(action: K): void;
|
|
244
377
|
clearAll(): void;
|
|
245
378
|
getName(): string;
|
|
246
379
|
getRegistryInfo(): ActionRegistryInfo<T>;
|
|
247
|
-
getActionStats<K extends
|
|
380
|
+
getActionStats<K extends ActionNames<T>>(action: K): ActionHandlerStats<T> | null;
|
|
248
381
|
getAllActionStats(): Array<ActionHandlerStats<T>>;
|
|
249
382
|
setExecutionMode(mode: ExecutionMode): void;
|
|
250
|
-
setActionExecutionMode<K extends
|
|
251
|
-
getActionExecutionMode<K extends
|
|
252
|
-
removeActionExecutionMode<K extends
|
|
383
|
+
setActionExecutionMode<K extends ActionNames<T>>(action: K, mode: ExecutionMode): void;
|
|
384
|
+
getActionExecutionMode<K extends ActionNames<T>>(action: K): ExecutionMode;
|
|
385
|
+
removeActionExecutionMode<K extends ActionNames<T>>(action: K): void;
|
|
253
386
|
getRegistryConfig(): ActionRegisterConfig['registry'];
|
|
254
387
|
isDebugEnabled(): boolean;
|
|
255
388
|
private createUnregisterFunction;
|
|
389
|
+
private getUnregisterFunctions;
|
|
256
390
|
private removeRegistration;
|
|
257
391
|
private runRegistrationCleanup;
|
|
258
392
|
getUnregisterFunctionCount(): number;
|
|
@@ -265,13 +399,16 @@ declare class ActionRegister<T extends ActionPayloadMap = Record<string, unknown
|
|
|
265
399
|
}
|
|
266
400
|
//#endregion
|
|
267
401
|
//#region src/action-guard.d.ts
|
|
402
|
+
type TimerHandle = ReturnType<typeof setTimeout>;
|
|
268
403
|
interface GuardState {
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
404
|
+
lastThrottleExecutedAt: number;
|
|
405
|
+
lastDebounceSettledAt: number;
|
|
406
|
+
debounceTimer: TimerHandle | undefined;
|
|
407
|
+
throttleTimer: TimerHandle | undefined;
|
|
272
408
|
isThrottled: boolean;
|
|
273
|
-
debouncePromise: Promise<boolean> | undefined;
|
|
274
409
|
debounceResolve: ((value: boolean) => void) | undefined;
|
|
410
|
+
debounceAbortCleanup: (() => void) | undefined;
|
|
411
|
+
debounceRequestId: number;
|
|
275
412
|
}
|
|
276
413
|
declare class ActionGuard {
|
|
277
414
|
private guards;
|
|
@@ -279,17 +416,13 @@ declare class ActionGuard {
|
|
|
279
416
|
private readonly autoCleanupEnabled;
|
|
280
417
|
private readonly maxIdleTime;
|
|
281
418
|
private readonly cleanupIntervalMs;
|
|
282
|
-
private readonly maxGuards;
|
|
283
|
-
private accessOrder;
|
|
284
419
|
constructor(autoCleanup?: boolean);
|
|
285
420
|
private ensureAutoCleanup;
|
|
286
421
|
private startAutoCleanup;
|
|
287
422
|
private stopAutoCleanup;
|
|
288
423
|
private performCleanup;
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
debounce(actionKey: string, debounceMs: number): Promise<boolean>;
|
|
292
|
-
throttle(actionKey: string, throttleMs: number): boolean;
|
|
424
|
+
debounce(actionKey: string, debounceMs: number, signal?: AbortSignal): Promise<boolean>;
|
|
425
|
+
throttle(actionKey: string, throttleMs: number, signal?: AbortSignal): boolean;
|
|
293
426
|
clearGuards(actionKey: string): void;
|
|
294
427
|
clearAll(): void;
|
|
295
428
|
getGuardState(actionKey: string): GuardState | undefined;
|
|
@@ -301,17 +434,22 @@ declare class ActionGuard {
|
|
|
301
434
|
};
|
|
302
435
|
}
|
|
303
436
|
//#endregion
|
|
304
|
-
//#region src/execution-modes.d.ts
|
|
305
|
-
declare function executeSequential<T, R = void>(context: PipelineContext<T, R>, createController: (registration: HandlerRegistration<T, R>, index: number) => PipelineController<T, R>): Promise<void>;
|
|
306
|
-
declare function executeParallel<T, R = void>(context: PipelineContext<T, R>, createController: (registration: HandlerRegistration<T, R>, index: number) => PipelineController<T, R>): Promise<void>;
|
|
307
|
-
declare function executeRace<T, R = void>(context: PipelineContext<T, R>, createController: (registration: HandlerRegistration<T, R>, index: number) => PipelineController<T, R>): Promise<void>;
|
|
308
|
-
//#endregion
|
|
309
437
|
//#region src/errors.d.ts
|
|
310
438
|
interface ZodIssueLike {
|
|
311
439
|
message: string;
|
|
312
440
|
path: readonly (string | number | symbol)[];
|
|
313
441
|
code: string;
|
|
314
442
|
}
|
|
443
|
+
declare class ActionResultProcessingError extends Error {
|
|
444
|
+
name: string;
|
|
445
|
+
constructor(message: string);
|
|
446
|
+
}
|
|
447
|
+
declare class ActionAttemptSupersededError extends Error {
|
|
448
|
+
readonly attempt: number;
|
|
449
|
+
name: string;
|
|
450
|
+
constructor(attempt: number);
|
|
451
|
+
}
|
|
452
|
+
declare function isActionResultProcessingError(error: unknown): error is ActionResultProcessingError;
|
|
315
453
|
declare class ActionValidationError extends Error {
|
|
316
454
|
name: string;
|
|
317
455
|
readonly zodError: unknown;
|
|
@@ -345,5 +483,10 @@ declare function isActionValidationError(error: unknown): error is ActionValidat
|
|
|
345
483
|
declare function isActionTimeoutError(error: unknown): error is ActionTimeoutError;
|
|
346
484
|
declare function isActionRegisterDestroyedError(error: unknown): error is ActionRegisterDestroyedError;
|
|
347
485
|
//#endregion
|
|
348
|
-
|
|
486
|
+
//#region src/execution-modes.d.ts
|
|
487
|
+
declare function executeSequential<T, R = void>(context: PipelineContext<T, R>, createController: (registration: HandlerRegistration<T, R>, index: number) => PipelineController<T, R>): Promise<void>;
|
|
488
|
+
declare function executeParallel<T, R = void>(context: PipelineContext<T, R>, createController: (registration: HandlerRegistration<T, R>, index: number, state: PipelineControllerState<T, R>) => PipelineController<T, R>): Promise<void>;
|
|
489
|
+
declare function executeRace<T, R = void>(context: PipelineContext<T, R>, createController: (registration: HandlerRegistration<T, R>, index: number, state: PipelineControllerState<T, R>) => PipelineController<T, R>): Promise<void>;
|
|
490
|
+
//#endregion
|
|
491
|
+
export { ActionAttemptSupersededError, type ActionDispatcher, type ActionEffectController, type ActionEffectHandler, ActionGuard, type ActionGuardController, type ActionGuardHandler, type ActionHandler, type ActionNames, type ActionObserverEvent, type ActionObserverHandler, type ActionPayloadMap, ActionRegister, type ActionRegisterConfig, ActionRegisterDestroyedError, type ActionResult, type ActionResultController, type ActionResultHandler, type ActionResultMap, ActionResultProcessingError, type ActionSchemaLike, ActionTimeoutError, ActionValidationError, type DispatchArgs, type DispatchOptions, type EffectConfig, type ExecutionMode, type ExecutionResult, type GuardConfig, type HandlerConfig, type HandlerErrorPolicy, type HandlerRegistration, type HandlerRole, type HandlerScheduling, type ObserverConfig, type PipelineContext, type PipelineController, type ProxyActionKey, type ReservedActionKey, type ResolvedHandlerConfig, type UnregisterFunction, executeParallel, executeRace, executeSequential, isActionRegisterDestroyedError, isActionResultProcessingError, isActionTimeoutError, isActionValidationError, resolveHandlerConfig };
|
|
349
492
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/types.ts","../src/ActionRegister.ts","../src/action-guard.ts","../src/
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/types.ts","../src/ActionRegister.ts","../src/action-guard.ts","../src/errors.ts","../src/execution-modes.ts"],"mappings":"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"}
|