@context-action/core 0.1.0 → 0.2.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 +4 -4
- package/dist/index.cjs +215 -15
- package/dist/index.d.cts +7 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +215 -15
- package/dist/index.js.map +1 -1
- package/package.json +7 -4
package/README.md
CHANGED
|
@@ -43,12 +43,12 @@ const actions = new ActionRegister<MyActions>();
|
|
|
43
43
|
// Register handlers
|
|
44
44
|
actions.register('increment', (_, controller) => {
|
|
45
45
|
console.log('Increment called');
|
|
46
|
-
|
|
46
|
+
// Handler automatically continues to next handler
|
|
47
47
|
});
|
|
48
48
|
|
|
49
49
|
actions.register('setCount', (count, controller) => {
|
|
50
50
|
console.log(`Setting count to: ${count}`);
|
|
51
|
-
|
|
51
|
+
// Handler automatically continues to next handler
|
|
52
52
|
});
|
|
53
53
|
|
|
54
54
|
// Dispatch actions
|
|
@@ -102,7 +102,7 @@ actions.register('validate', (data, controller) => {
|
|
|
102
102
|
|
|
103
103
|
// Modify data for next handlers
|
|
104
104
|
controller.modifyPayload(data => ({ ...data, validated: true }));
|
|
105
|
-
|
|
105
|
+
// Handler automatically continues to next handler
|
|
106
106
|
});
|
|
107
107
|
```
|
|
108
108
|
|
|
@@ -172,7 +172,7 @@ import { ActionRegister } from '@context-action/core';
|
|
|
172
172
|
const actions = new ActionRegister();
|
|
173
173
|
actions.register('test', (payload, controller) => {
|
|
174
174
|
console.log('Handler executed:', payload);
|
|
175
|
-
|
|
175
|
+
// Handler automatically continues to next handler
|
|
176
176
|
});
|
|
177
177
|
await actions.dispatch('test', { message: 'Hello!' });" > test-logging.js
|
|
178
178
|
|
package/dist/index.cjs
CHANGED
|
@@ -236,7 +236,7 @@ var require_toPropertyKey = /* @__PURE__ */ __commonJS({ "../../node_modules/.pn
|
|
|
236
236
|
//#region ../../node_modules/.pnpm/@oxc-project+runtime@0.81.0/node_modules/@oxc-project/runtime/src/helpers/defineProperty.js
|
|
237
237
|
var require_defineProperty = /* @__PURE__ */ __commonJS({ "../../node_modules/.pnpm/@oxc-project+runtime@0.81.0/node_modules/@oxc-project/runtime/src/helpers/defineProperty.js": ((exports, module) => {
|
|
238
238
|
var toPropertyKey = require_toPropertyKey();
|
|
239
|
-
function _defineProperty$
|
|
239
|
+
function _defineProperty$3(e, r, t) {
|
|
240
240
|
return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
|
|
241
241
|
value: t,
|
|
242
242
|
enumerable: !0,
|
|
@@ -244,12 +244,12 @@ var require_defineProperty = /* @__PURE__ */ __commonJS({ "../../node_modules/.p
|
|
|
244
244
|
writable: !0
|
|
245
245
|
}) : e[r] = t, e;
|
|
246
246
|
}
|
|
247
|
-
module.exports = _defineProperty$
|
|
247
|
+
module.exports = _defineProperty$3, module.exports.__esModule = true, module.exports["default"] = module.exports;
|
|
248
248
|
}) });
|
|
249
249
|
|
|
250
250
|
//#endregion
|
|
251
251
|
//#region src/action-guard.ts
|
|
252
|
-
var import_defineProperty$
|
|
252
|
+
var import_defineProperty$2 = /* @__PURE__ */ __toESM(require_defineProperty(), 1);
|
|
253
253
|
/**
|
|
254
254
|
* Action Guard system for managing action execution timing
|
|
255
255
|
* @implements action-guard
|
|
@@ -280,7 +280,7 @@ var import_defineProperty$1 = /* @__PURE__ */ __toESM(require_defineProperty(),
|
|
|
280
280
|
*/
|
|
281
281
|
var ActionGuard = class {
|
|
282
282
|
constructor() {
|
|
283
|
-
(0, import_defineProperty$
|
|
283
|
+
(0, import_defineProperty$2.default)(this, "guards", /* @__PURE__ */ new Map());
|
|
284
284
|
}
|
|
285
285
|
/**
|
|
286
286
|
* Check if action should be debounced
|
|
@@ -300,15 +300,21 @@ var ActionGuard = class {
|
|
|
300
300
|
this.guards.set(actionKey, state);
|
|
301
301
|
}
|
|
302
302
|
/** Clear any existing debounce timer to restart the delay period */
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
303
|
+
if (state.debounceTimer) {
|
|
304
|
+
clearTimeout(state.debounceTimer);
|
|
305
|
+
if (state.debounceResolve) {
|
|
306
|
+
state.debounceResolve(false);
|
|
307
|
+
state.debounceResolve = void 0;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
/** Create new debounce promise */
|
|
307
311
|
return new Promise((resolve) => {
|
|
312
|
+
state.debounceResolve = resolve;
|
|
308
313
|
state.debounceTimer = setTimeout(() => {
|
|
309
|
-
/** Clean up timer
|
|
314
|
+
/** Clean up timer and resolver references */
|
|
310
315
|
state.debounceTimer = void 0;
|
|
311
|
-
|
|
316
|
+
state.debounceResolve = void 0;
|
|
317
|
+
/** Update last execution timestamp */
|
|
312
318
|
state.lastExecuted = Date.now();
|
|
313
319
|
resolve(true);
|
|
314
320
|
}, debounceMs);
|
|
@@ -364,7 +370,10 @@ var ActionGuard = class {
|
|
|
364
370
|
const state = this.guards.get(actionKey);
|
|
365
371
|
if (state) {
|
|
366
372
|
/** Clear debounce timer if active to prevent memory leaks */
|
|
367
|
-
if (state.debounceTimer)
|
|
373
|
+
if (state.debounceTimer) {
|
|
374
|
+
clearTimeout(state.debounceTimer);
|
|
375
|
+
if (state.debounceResolve) state.debounceResolve(false);
|
|
376
|
+
}
|
|
368
377
|
/** Clear throttle timer if active to prevent memory leaks */
|
|
369
378
|
if (state.throttleTimer) clearTimeout(state.throttleTimer);
|
|
370
379
|
/** Remove guard state from memory */
|
|
@@ -379,7 +388,10 @@ var ActionGuard = class {
|
|
|
379
388
|
/** This prevents memory leaks when clearing the entire guard system */
|
|
380
389
|
for (const [, state] of this.guards) {
|
|
381
390
|
/** Clear any active debounce timers */
|
|
382
|
-
if (state.debounceTimer)
|
|
391
|
+
if (state.debounceTimer) {
|
|
392
|
+
clearTimeout(state.debounceTimer);
|
|
393
|
+
if (state.debounceResolve) state.debounceResolve(false);
|
|
394
|
+
}
|
|
383
395
|
/** Clear any active throttle timers */
|
|
384
396
|
if (state.throttleTimer) clearTimeout(state.throttleTimer);
|
|
385
397
|
}
|
|
@@ -401,6 +413,112 @@ var ActionGuard = class {
|
|
|
401
413
|
}
|
|
402
414
|
};
|
|
403
415
|
|
|
416
|
+
//#endregion
|
|
417
|
+
//#region src/concurrency/OperationQueue.ts
|
|
418
|
+
var import_defineProperty$1 = /* @__PURE__ */ __toESM(require_defineProperty(), 1);
|
|
419
|
+
/**
|
|
420
|
+
* 작업 큐 관리자
|
|
421
|
+
*
|
|
422
|
+
* 핵심 기능:
|
|
423
|
+
* 1. 작업 직렬화 - 모든 작업을 순서대로 실행
|
|
424
|
+
* 2. 우선순위 지원 - 중요한 작업 우선 처리
|
|
425
|
+
* 3. 에러 처리 - 개별 작업 실패가 전체에 영향 주지 않음
|
|
426
|
+
* 4. 메모리 관리 - 완료된 작업 자동 정리
|
|
427
|
+
*/
|
|
428
|
+
var OperationQueue = class {
|
|
429
|
+
constructor(name = "OperationQueue") {
|
|
430
|
+
this.name = name;
|
|
431
|
+
(0, import_defineProperty$1.default)(this, "queue", []);
|
|
432
|
+
(0, import_defineProperty$1.default)(this, "isProcessing", false);
|
|
433
|
+
(0, import_defineProperty$1.default)(this, "operationCounter", 0);
|
|
434
|
+
}
|
|
435
|
+
/**
|
|
436
|
+
* 작업을 큐에 추가하고 실행 결과를 반환
|
|
437
|
+
*
|
|
438
|
+
* @param operation 실행할 작업
|
|
439
|
+
* @param priority 우선순위 (높을수록 먼저 실행)
|
|
440
|
+
* @returns Promise로 래핑된 작업 결과
|
|
441
|
+
*/
|
|
442
|
+
enqueue(operation, priority = 0) {
|
|
443
|
+
return new Promise((resolve, reject) => {
|
|
444
|
+
const queuedOperation = {
|
|
445
|
+
id: `${this.name}-${++this.operationCounter}`,
|
|
446
|
+
operation,
|
|
447
|
+
resolve,
|
|
448
|
+
reject,
|
|
449
|
+
priority,
|
|
450
|
+
timestamp: Date.now()
|
|
451
|
+
};
|
|
452
|
+
let insertIndex = this.queue.length;
|
|
453
|
+
for (let i = 0; i < this.queue.length; i++) if ((this.queue[i].priority || 0) < priority) {
|
|
454
|
+
insertIndex = i;
|
|
455
|
+
break;
|
|
456
|
+
}
|
|
457
|
+
this.queue.splice(insertIndex, 0, queuedOperation);
|
|
458
|
+
this.processQueue();
|
|
459
|
+
});
|
|
460
|
+
}
|
|
461
|
+
/**
|
|
462
|
+
* 큐 처리 메인 로직
|
|
463
|
+
*
|
|
464
|
+
* 한 번에 하나씩 순서대로 작업을 실행하여 동시성 문제 방지
|
|
465
|
+
*/
|
|
466
|
+
async processQueue() {
|
|
467
|
+
if (this.isProcessing || this.queue.length === 0) return;
|
|
468
|
+
this.isProcessing = true;
|
|
469
|
+
try {
|
|
470
|
+
while (this.queue.length > 0) {
|
|
471
|
+
const operation = this.queue.shift();
|
|
472
|
+
try {
|
|
473
|
+
const result = await Promise.resolve(operation.operation());
|
|
474
|
+
operation.resolve(result);
|
|
475
|
+
} catch (error) {
|
|
476
|
+
operation.reject(error);
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
} finally {
|
|
480
|
+
this.isProcessing = false;
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
/**
|
|
484
|
+
* 현재 큐 상태 조회 (디버깅용)
|
|
485
|
+
*/
|
|
486
|
+
getQueueInfo() {
|
|
487
|
+
return {
|
|
488
|
+
name: this.name,
|
|
489
|
+
queueLength: this.queue.length,
|
|
490
|
+
isProcessing: this.isProcessing,
|
|
491
|
+
operations: this.queue.map((op) => ({
|
|
492
|
+
id: op.id,
|
|
493
|
+
priority: op.priority,
|
|
494
|
+
timestamp: op.timestamp
|
|
495
|
+
}))
|
|
496
|
+
};
|
|
497
|
+
}
|
|
498
|
+
/**
|
|
499
|
+
* 큐 비우기 (테스트용)
|
|
500
|
+
*/
|
|
501
|
+
clear() {
|
|
502
|
+
this.queue.forEach((operation) => {
|
|
503
|
+
operation.reject(/* @__PURE__ */ new Error("Queue cleared"));
|
|
504
|
+
});
|
|
505
|
+
this.queue = [];
|
|
506
|
+
this.isProcessing = false;
|
|
507
|
+
}
|
|
508
|
+
/**
|
|
509
|
+
* 큐 크기 조회
|
|
510
|
+
*/
|
|
511
|
+
get size() {
|
|
512
|
+
return this.queue.length;
|
|
513
|
+
}
|
|
514
|
+
/**
|
|
515
|
+
* 처리 중 여부 조회
|
|
516
|
+
*/
|
|
517
|
+
get processing() {
|
|
518
|
+
return this.isProcessing;
|
|
519
|
+
}
|
|
520
|
+
};
|
|
521
|
+
|
|
404
522
|
//#endregion
|
|
405
523
|
//#region src/ActionRegister.ts
|
|
406
524
|
var import_defineProperty = /* @__PURE__ */ __toESM(require_defineProperty(), 1);
|
|
@@ -426,7 +544,7 @@ var import_defineProperty = /* @__PURE__ */ __toESM(require_defineProperty(), 1)
|
|
|
426
544
|
* // 핸들러 등록
|
|
427
545
|
* register.register('updateUser', ({ id, name }, controller) => {
|
|
428
546
|
* userStore.setValue({ id, name });
|
|
429
|
-
*
|
|
547
|
+
* // 핸들러가 자동으로 다음 핸들러로 진행
|
|
430
548
|
* }, { priority: 10 });
|
|
431
549
|
*
|
|
432
550
|
* // 액션 디스패치
|
|
@@ -443,18 +561,93 @@ var ActionRegister = class {
|
|
|
443
561
|
(0, import_defineProperty.default)(this, "name", void 0);
|
|
444
562
|
(0, import_defineProperty.default)(this, "registryConfig", void 0);
|
|
445
563
|
(0, import_defineProperty.default)(this, "executionStats", /* @__PURE__ */ new Map());
|
|
564
|
+
(0, import_defineProperty.default)(this, "registrationQueue", void 0);
|
|
565
|
+
(0, import_defineProperty.default)(this, "dispatchQueue", void 0);
|
|
446
566
|
this.name = config.name || "ActionRegister";
|
|
447
567
|
this.registryConfig = config.registry;
|
|
448
568
|
this.actionGuard = new ActionGuard();
|
|
569
|
+
this.registrationQueue = new OperationQueue(`${this.name}-Registration`);
|
|
570
|
+
this.dispatchQueue = new OperationQueue(`${this.name}-Dispatch`);
|
|
449
571
|
if (this.registryConfig?.defaultExecutionMode) this.executionMode = this.registryConfig.defaultExecutionMode;
|
|
450
572
|
if (this.registryConfig?.debug && process.env.NODE_ENV === "development") console.log(`🎯 ActionRegister created: ${this.name}`, {
|
|
451
573
|
defaultExecutionMode: this.executionMode,
|
|
452
574
|
maxHandlers: this.registryConfig.maxHandlers,
|
|
453
|
-
autoCleanup: this.registryConfig.autoCleanup ?? true
|
|
575
|
+
autoCleanup: this.registryConfig.autoCleanup ?? true,
|
|
576
|
+
concurrencyProtection: true
|
|
454
577
|
});
|
|
455
578
|
}
|
|
456
579
|
register(action, handler, config = {}) {
|
|
457
580
|
const handlerId = config.id || `handler_${++this.handlerCounter}_${Math.random().toString(36).substr(2, 5)}`;
|
|
581
|
+
const unregisterFn = this._performRegistrationSync(action, handler, config, handlerId);
|
|
582
|
+
return unregisterFn;
|
|
583
|
+
}
|
|
584
|
+
/**
|
|
585
|
+
* 🆕 동기적 등록 수행 (개선된 버전)
|
|
586
|
+
*/
|
|
587
|
+
_performRegistrationSync(action, handler, config, handlerId) {
|
|
588
|
+
const registration = {
|
|
589
|
+
handler,
|
|
590
|
+
config: {
|
|
591
|
+
priority: config.priority ?? 0,
|
|
592
|
+
id: handlerId,
|
|
593
|
+
blocking: config.blocking ?? false,
|
|
594
|
+
once: config.once ?? false,
|
|
595
|
+
condition: config.condition || (() => true),
|
|
596
|
+
debounce: config.debounce ?? void 0,
|
|
597
|
+
throttle: config.throttle ?? void 0,
|
|
598
|
+
validation: config.validation ?? void 0,
|
|
599
|
+
middleware: config.middleware ?? false,
|
|
600
|
+
tags: config.tags ?? [],
|
|
601
|
+
category: config.category ?? void 0,
|
|
602
|
+
description: config.description ?? void 0,
|
|
603
|
+
version: config.version ?? void 0,
|
|
604
|
+
returnType: config.returnType ?? "value",
|
|
605
|
+
timeout: config.timeout ?? void 0,
|
|
606
|
+
retries: config.retries ?? 0,
|
|
607
|
+
dependencies: config.dependencies ?? [],
|
|
608
|
+
conflicts: config.conflicts ?? [],
|
|
609
|
+
environment: config.environment ?? void 0,
|
|
610
|
+
feature: config.feature ?? void 0,
|
|
611
|
+
metrics: config.metrics ?? {
|
|
612
|
+
collectTiming: false,
|
|
613
|
+
collectErrors: false,
|
|
614
|
+
customMetrics: {}
|
|
615
|
+
},
|
|
616
|
+
metadata: config.metadata ?? {}
|
|
617
|
+
},
|
|
618
|
+
id: handlerId
|
|
619
|
+
};
|
|
620
|
+
if (!this.pipelines.has(action)) this.pipelines.set(action, []);
|
|
621
|
+
const pipeline = this.pipelines.get(action);
|
|
622
|
+
const existingIndex = pipeline.findIndex((reg) => reg.id === handlerId);
|
|
623
|
+
if (existingIndex !== -1) return () => {};
|
|
624
|
+
if (this.registryConfig?.maxHandlers && pipeline.length >= this.registryConfig.maxHandlers) throw new Error(`Maximum number of handlers (${this.registryConfig.maxHandlers}) reached for action '${String(action)}' in registry '${this.name}'`);
|
|
625
|
+
pipeline.push(registration);
|
|
626
|
+
pipeline.sort((a, b) => b.config.priority - a.config.priority);
|
|
627
|
+
if (this.registryConfig?.debug && process.env.NODE_ENV === "development") console.log(`🎯 Handler registered: ${String(action)}`, {
|
|
628
|
+
handlerId,
|
|
629
|
+
priority: config.priority,
|
|
630
|
+
tags: config.tags,
|
|
631
|
+
category: config.category,
|
|
632
|
+
totalHandlers: pipeline.length,
|
|
633
|
+
registry: this.name
|
|
634
|
+
});
|
|
635
|
+
return () => {
|
|
636
|
+
const index = pipeline.findIndex((reg) => reg.id === handlerId && reg === registration);
|
|
637
|
+
if (index !== -1) {
|
|
638
|
+
pipeline.splice(index, 1);
|
|
639
|
+
if (this.registryConfig?.debug && process.env.NODE_ENV === "development") console.log(`🎯 Handler unregistered: ${String(action)}`, {
|
|
640
|
+
handlerId,
|
|
641
|
+
remainingHandlers: pipeline.length,
|
|
642
|
+
registry: this.name
|
|
643
|
+
});
|
|
644
|
+
}
|
|
645
|
+
};
|
|
646
|
+
}
|
|
647
|
+
/**
|
|
648
|
+
* 🆕 실제 등록 작업 수행 (큐에서 호출됨)
|
|
649
|
+
*/
|
|
650
|
+
_performRegistration(action, handler, config, handlerId) {
|
|
458
651
|
const registration = {
|
|
459
652
|
handler,
|
|
460
653
|
config: {
|
|
@@ -515,6 +708,14 @@ var ActionRegister = class {
|
|
|
515
708
|
};
|
|
516
709
|
}
|
|
517
710
|
async dispatch(action, payload, options) {
|
|
711
|
+
return this.dispatchQueue.enqueue(async () => {
|
|
712
|
+
return this._performDispatch(action, payload, options);
|
|
713
|
+
});
|
|
714
|
+
}
|
|
715
|
+
/**
|
|
716
|
+
* 🆕 실제 디스패치 작업 수행 (큐에서 호출됨)
|
|
717
|
+
*/
|
|
718
|
+
async _performDispatch(action, payload, options) {
|
|
518
719
|
let autoAbortController;
|
|
519
720
|
let effectiveSignal = options?.signal;
|
|
520
721
|
if (options?.autoAbort?.enabled) {
|
|
@@ -812,7 +1013,6 @@ var ActionRegister = class {
|
|
|
812
1013
|
async executePipeline(context, autoAbortController, autoAbortOptions) {
|
|
813
1014
|
const createController = (_registration, _index) => {
|
|
814
1015
|
return {
|
|
815
|
-
next: () => {},
|
|
816
1016
|
abort: (reason) => {
|
|
817
1017
|
context.aborted = true;
|
|
818
1018
|
context.abortReason = reason;
|
package/dist/index.d.cts
CHANGED
|
@@ -3,7 +3,6 @@ interface ActionPayloadMap {
|
|
|
3
3
|
[actionName: string]: unknown;
|
|
4
4
|
}
|
|
5
5
|
interface PipelineController<T = any, R = void> {
|
|
6
|
-
next(): void;
|
|
7
6
|
abort(reason?: string): void;
|
|
8
7
|
modifyPayload(modifier: (payload: T) => T): void;
|
|
9
8
|
getPayload(): T;
|
|
@@ -172,9 +171,14 @@ declare class ActionRegister<T extends ActionPayloadMap = ActionPayloadMap> {
|
|
|
172
171
|
readonly name: string;
|
|
173
172
|
private readonly registryConfig;
|
|
174
173
|
private executionStats;
|
|
174
|
+
private registrationQueue;
|
|
175
|
+
private dispatchQueue;
|
|
175
176
|
constructor(config?: ActionRegisterConfig);
|
|
176
177
|
register<K extends keyof T, R = void>(action: K, handler: ActionHandler<T[K], R>, config?: HandlerConfig): UnregisterFunction;
|
|
178
|
+
private _performRegistrationSync;
|
|
179
|
+
private _performRegistration;
|
|
177
180
|
dispatch<K extends keyof T>(action: K, payload?: T[K], options?: DispatchOptions): Promise<void>;
|
|
181
|
+
private _performDispatch;
|
|
178
182
|
dispatchWithResult<K extends keyof T, R = void>(action: K, payload?: T[K], options?: DispatchOptions): Promise<ExecutionResult<R>>;
|
|
179
183
|
private filterHandlers;
|
|
180
184
|
private processResults;
|
|
@@ -207,6 +211,8 @@ interface GuardState {
|
|
|
207
211
|
debounceTimer?: NodeJS.Timeout;
|
|
208
212
|
throttleTimer?: NodeJS.Timeout;
|
|
209
213
|
isThrottled: boolean;
|
|
214
|
+
debouncePromise?: Promise<boolean>;
|
|
215
|
+
debounceResolve?: (value: boolean) => void;
|
|
210
216
|
}
|
|
211
217
|
declare class ActionGuard {
|
|
212
218
|
private guards;
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/types.ts","../src/ActionRegister.ts","../src/action-guard.ts","../src/execution-modes.ts"],"sourcesContent":[],"mappings":";UAgBiB,gBAAA;EAAA,CAAA,UAAA,EAAA,MAAgB,CAAA,EAAA,OAAA;
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/types.ts","../src/ActionRegister.ts","../src/action-guard.ts","../src/execution-modes.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,7 +3,6 @@ interface ActionPayloadMap {
|
|
|
3
3
|
[actionName: string]: unknown;
|
|
4
4
|
}
|
|
5
5
|
interface PipelineController<T = any, R = void> {
|
|
6
|
-
next(): void;
|
|
7
6
|
abort(reason?: string): void;
|
|
8
7
|
modifyPayload(modifier: (payload: T) => T): void;
|
|
9
8
|
getPayload(): T;
|
|
@@ -172,9 +171,14 @@ declare class ActionRegister<T extends ActionPayloadMap = ActionPayloadMap> {
|
|
|
172
171
|
readonly name: string;
|
|
173
172
|
private readonly registryConfig;
|
|
174
173
|
private executionStats;
|
|
174
|
+
private registrationQueue;
|
|
175
|
+
private dispatchQueue;
|
|
175
176
|
constructor(config?: ActionRegisterConfig);
|
|
176
177
|
register<K extends keyof T, R = void>(action: K, handler: ActionHandler<T[K], R>, config?: HandlerConfig): UnregisterFunction;
|
|
178
|
+
private _performRegistrationSync;
|
|
179
|
+
private _performRegistration;
|
|
177
180
|
dispatch<K extends keyof T>(action: K, payload?: T[K], options?: DispatchOptions): Promise<void>;
|
|
181
|
+
private _performDispatch;
|
|
178
182
|
dispatchWithResult<K extends keyof T, R = void>(action: K, payload?: T[K], options?: DispatchOptions): Promise<ExecutionResult<R>>;
|
|
179
183
|
private filterHandlers;
|
|
180
184
|
private processResults;
|
|
@@ -207,6 +211,8 @@ interface GuardState {
|
|
|
207
211
|
debounceTimer?: NodeJS.Timeout;
|
|
208
212
|
throttleTimer?: NodeJS.Timeout;
|
|
209
213
|
isThrottled: boolean;
|
|
214
|
+
debouncePromise?: Promise<boolean>;
|
|
215
|
+
debounceResolve?: (value: boolean) => void;
|
|
210
216
|
}
|
|
211
217
|
declare class ActionGuard {
|
|
212
218
|
private guards;
|
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/execution-modes.ts"],"sourcesContent":[],"mappings":";UAgBiB,gBAAA;EAAA,CAAA,UAAA,EAAA,MAAgB,CAAA,EAAA,OAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/types.ts","../src/ActionRegister.ts","../src/action-guard.ts","../src/execution-modes.ts"],"sourcesContent":[],"mappings":"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"}
|