@context-action/core 0.7.2 → 0.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -50,6 +50,16 @@ async function executeSequential(context, createController) {
50
50
  const controller = createController(registration, i);
51
51
  try {
52
52
  if (context.aborted) break;
53
+ if (registration.config.condition) try {
54
+ const shouldExecute = registration.config.condition(context.payload);
55
+ if (!shouldExecute) {
56
+ i++;
57
+ continue;
58
+ }
59
+ } catch {
60
+ i++;
61
+ continue;
62
+ }
53
63
  const result = registration.handler(context.payload, controller);
54
64
  if (registration.config.blocking) {
55
65
  const handlerResult = result instanceof Promise ? await result : result;
@@ -74,8 +84,20 @@ async function executeSequential(context, createController) {
74
84
  if (context.terminated) break;
75
85
  /** Handle jump to priority AFTER handler execution */
76
86
  if (context.jumpToPriority !== void 0) {
77
- const jumpIndex = context.handlers.findIndex((handler) => handler.config.priority === context.jumpToPriority);
78
- if (jumpIndex !== -1) {
87
+ context.jumpCount = (context.jumpCount || 0) + 1;
88
+ if (context.jumpCount > (context.maxJumps || 10)) {
89
+ console.error(`[ActionRegister] ERROR: Maximum jump limit (${context.maxJumps || 10}) exceeded. Aborting to prevent infinite loop. Check your jumpToPriority logic and conditions.`);
90
+ context.aborted = true;
91
+ context.abortReason = `Maximum jump limit exceeded (${context.jumpCount} jumps)`;
92
+ context.jumpToPriority = void 0;
93
+ break;
94
+ }
95
+ const jumpIndex = context.handlers.findIndex((handler) => (handler.config.priority || 0) <= context.jumpToPriority);
96
+ if (jumpIndex !== -1 && jumpIndex !== i) {
97
+ if (jumpIndex < i) {
98
+ const targetHandler = context.handlers[jumpIndex];
99
+ if (targetHandler && !targetHandler.config.condition) console.warn(`[ActionRegister] WARNING: Backward jumpToPriority to handler '${targetHandler.config.id || "unnamed"}' without condition. This may cause infinite loops! Consider adding a condition to prevent re-execution. Jump count: ${context.jumpCount}/${context.maxJumps || 10}`);
100
+ }
79
101
  i = jumpIndex;
80
102
  context.jumpToPriority = void 0;
81
103
  continue;
@@ -86,7 +108,9 @@ async function executeSequential(context, createController) {
86
108
  } else i++;
87
109
  } catch (error) {
88
110
  const handlerError = handleExecutionError(error, registration);
89
- throw handlerError.error;
111
+ errors.push(handlerError);
112
+ if (registration.config.blocking) throw handlerError.error;
113
+ i++;
90
114
  }
91
115
  }
92
116
  if (nonBlockingPromises.length > 0) await Promise.allSettled(nonBlockingPromises);
@@ -126,6 +150,24 @@ async function executeParallel(context, createController) {
126
150
  const handlerPromises = runnableHandlers.map(async (registration, _index) => {
127
151
  const controller = createController(registration, _index);
128
152
  try {
153
+ if (registration.config.condition) try {
154
+ const shouldExecute = registration.config.condition(context.payload);
155
+ if (!shouldExecute) return {
156
+ success: true,
157
+ handlerId: registration.id,
158
+ result: void 0,
159
+ terminated: false,
160
+ skipped: true
161
+ };
162
+ } catch {
163
+ return {
164
+ success: true,
165
+ handlerId: registration.id,
166
+ result: void 0,
167
+ terminated: false,
168
+ skipped: true
169
+ };
170
+ }
129
171
  const result = registration.handler(context.payload, controller);
130
172
  let handlerResult;
131
173
  if (result instanceof Promise) {
@@ -200,6 +242,26 @@ async function executeRace(context, createController) {
200
242
  const handlerPromises = runnableHandlers.map(async (registration, _index) => {
201
243
  const controller = createController(registration, _index);
202
244
  try {
245
+ if (registration.config.condition) try {
246
+ const shouldExecute = registration.config.condition(context.payload);
247
+ if (!shouldExecute) return {
248
+ success: true,
249
+ handlerId: registration.id,
250
+ registration,
251
+ result: void 0,
252
+ terminated: false,
253
+ skipped: true
254
+ };
255
+ } catch {
256
+ return {
257
+ success: true,
258
+ handlerId: registration.id,
259
+ registration,
260
+ result: void 0,
261
+ terminated: false,
262
+ skipped: true
263
+ };
264
+ }
203
265
  const result = registration.handler(context.payload, controller);
204
266
  let handlerResult;
205
267
  if (result instanceof Promise) {
@@ -529,13 +591,15 @@ var ActionGuard = class {
529
591
  //#region src/concurrency/OperationQueue.ts
530
592
  /**
531
593
  * 작업 큐 관리자
532
- *
594
+ *
533
595
  * 핵심 기능:
534
596
  * 1. 작업 직렬화 - 모든 작업을 순서대로 실행
535
597
  * 2. 우선순위 지원 - 중요한 작업 우선 처리
536
598
  * 3. 에러 처리 - 개별 작업 실패가 전체에 영향 주지 않음
537
599
  * 4. 메모리 관리 - 완료된 작업 자동 정리
538
600
  * 5. 🆕 동시성 제어 - maxConcurrency로 동시 실행 제한
601
+ * 6. 🆕 비동기 지원 - Promise.all() 완벽 지원
602
+ * 7. 🆕 이벤트 기반 처리 - 효율적인 큐 처리 시스템
539
603
  */
540
604
  var OperationQueue = class {
541
605
  constructor(name = "OperationQueue", maxConcurrency = 1) {
@@ -544,7 +608,7 @@ var OperationQueue = class {
544
608
  this.processingPromise = null;
545
609
  this.operationCounter = 0;
546
610
  this.activeOperations = 0;
547
- this.runningOperations = /* @__PURE__ */ new Set();
611
+ this.pendingResolvers = [];
548
612
  this.maxConcurrency = Math.max(1, maxConcurrency);
549
613
  }
550
614
  /**
@@ -573,13 +637,18 @@ var OperationQueue = class {
573
637
  }
574
638
  }
575
639
  this.queue.splice(insertIndex, 0, queuedOperation);
640
+ if (this.processingPromise) this.notifyNewOperation();
576
641
  this.processQueue();
577
642
  });
578
643
  }
579
644
  /**
580
- * 🆕 큐 처리 메인 로직 - 동시성 제어 지원
581
- *
582
- * maxConcurrency에 따라 동시 실행 작업 수를 제한하여 동시성 문제 방지
645
+ * 🆕 큐 처리 메인 로직 - 동시성 제어 및 비동기 지원
646
+ *
647
+ * 주요 특징:
648
+ * - maxConcurrency에 따라 동시 실행 작업 수를 제한하여 동시성 문제 방지
649
+ * - Promise.all() 시나리오에서 완벽한 순차적 실행 보장
650
+ * - 이벤트 기반 알림 시스템으로 효율적인 비동기 처리
651
+ * - 작업 완료 시 대기 중인 프로세스에게 자동 알림
583
652
  */
584
653
  async processQueue() {
585
654
  if (this.processingPromise) return this.processingPromise;
@@ -591,21 +660,46 @@ var OperationQueue = class {
591
660
  }
592
661
  }
593
662
  async _doProcess() {
594
- while (this.queue.length > 0 || this.runningOperations.size > 0) {
663
+ while (this.queue.length > 0 || this.activeOperations > 0) {
595
664
  while (this.queue.length > 0 && this.activeOperations < this.maxConcurrency) {
596
665
  const operation = this.queue.shift();
597
- this.activeOperations++;
598
- const operationPromise = this.executeOperation(operation);
599
- this.runningOperations.add(operationPromise);
600
- operationPromise.finally(() => {
601
- this.activeOperations--;
602
- this.runningOperations.delete(operationPromise);
603
- });
666
+ this.startOperation(operation);
604
667
  }
605
- if (this.runningOperations.size > 0) await Promise.race(this.runningOperations);
668
+ if (this.activeOperations > 0) await this.waitForAnyOperation();
606
669
  }
607
670
  }
608
671
  /**
672
+ * 🆕 개별 작업을 시작하고 완료를 추적
673
+ */
674
+ startOperation(operation) {
675
+ this.activeOperations++;
676
+ this.executeOperation(operation).finally(() => {
677
+ this.activeOperations--;
678
+ this.notifyOperationComplete();
679
+ });
680
+ }
681
+ /**
682
+ * 🆕 하나의 작업이 완료될 때까지 대기하거나 새로운 작업이 추가될 때까지 대기
683
+ */
684
+ waitForAnyOperation() {
685
+ return new Promise((resolve) => {
686
+ this.pendingResolvers.push(resolve);
687
+ });
688
+ }
689
+ /**
690
+ * 🆕 작업 완료 신호 - 대기 중인 프로세스들에게 알림
691
+ */
692
+ notifyOperationComplete() {
693
+ const resolvers = this.pendingResolvers.splice(0);
694
+ resolvers.forEach((resolve) => resolve());
695
+ }
696
+ /**
697
+ * 🆕 새로운 작업 추가 신호 - processQueue에서 호출
698
+ */
699
+ notifyNewOperation() {
700
+ this.notifyOperationComplete();
701
+ }
702
+ /**
609
703
  * 🆕 개별 작업 실행 로직
610
704
  */
611
705
  async executeOperation(operation) {
@@ -626,7 +720,6 @@ var OperationQueue = class {
626
720
  isProcessing: Boolean(this.processingPromise),
627
721
  activeOperations: this.activeOperations,
628
722
  maxConcurrency: this.maxConcurrency,
629
- runningOperationsCount: this.runningOperations.size,
630
723
  operations: this.queue.map((op) => ({
631
724
  id: op.id,
632
725
  priority: op.priority,
@@ -655,6 +748,8 @@ var OperationQueue = class {
655
748
  });
656
749
  this.queue = [];
657
750
  this.processingPromise = null;
751
+ const resolvers = this.pendingResolvers.splice(0);
752
+ resolvers.forEach((resolve) => resolve());
658
753
  }
659
754
  /**
660
755
  * 큐 크기 조회
@@ -693,7 +788,8 @@ var ActionRegister = class {
693
788
  this.executionMode = "sequential";
694
789
  this.actionExecutionModes = /* @__PURE__ */ new Map();
695
790
  this.unregisterFunctions = /* @__PURE__ */ new Map();
696
- this.filterCache = /* @__PURE__ */ new Map();
791
+ this.lastRegisteredTimestamps = /* @__PURE__ */ new Map();
792
+ this.filterCacheDisabled = true;
697
793
  this.handlerIdCounter = 0;
698
794
  this.controllerPool = [];
699
795
  this.maxControllerPoolSize = 10;
@@ -813,8 +909,9 @@ var ActionRegister = class {
813
909
  once: config.once ?? false,
814
910
  debounce: config.debounce ?? void 0,
815
911
  throttle: config.throttle ?? void 0,
816
- replaceExisting: config.replaceExisting ?? false,
817
- cleanup: config.cleanup
912
+ replaceExisting: config.replaceExisting ?? true,
913
+ cleanup: config.cleanup,
914
+ condition: config.condition
818
915
  },
819
916
  id: handlerId
820
917
  };
@@ -828,19 +925,16 @@ var ActionRegister = class {
828
925
  if (existingIndex !== -1) {
829
926
  const existing = pipeline[existingIndex];
830
927
  const existingUnregister = this.unregisterFunctions.get(handlerId);
831
- if (config.replaceExisting) {
832
- if (existingUnregister) {
833
- existingUnregister();
834
- this.unregisterFunctions.delete(handlerId);
835
- }
836
- if (existing && typeof existing.cleanup === "function") try {
837
- existing.cleanup();
928
+ if (registration.config.replaceExisting) {
929
+ if (existing && existing.config.cleanup && typeof existing.config.cleanup === "function") try {
930
+ existing.config.cleanup();
838
931
  } catch (cleanupError) {
839
932
  this.log(`Cleanup error for replaced handler: ${String(action)}`, cleanupError, "warn");
840
933
  }
934
+ if (existingUnregister) this.unregisterFunctions.delete(handlerId);
841
935
  pipeline[existingIndex] = registration;
842
936
  pipeline.sort((a, b) => b.config.priority - a.config.priority);
843
- this.invalidateFilterCache();
937
+ this.lastRegisteredTimestamps.set(action, /* @__PURE__ */ new Date());
844
938
  const newUnregister = this.createUnregisterFunction(action, handlerId, registration);
845
939
  this.unregisterFunctions.set(handlerId, newUnregister);
846
940
  this.log(`Handler replaced: ${String(action)}`, {
@@ -870,7 +964,7 @@ var ActionRegister = class {
870
964
  }
871
965
  pipeline.push(registration);
872
966
  pipeline.sort((a, b) => b.config.priority - a.config.priority);
873
- this.invalidateFilterCache();
967
+ this.lastRegisteredTimestamps.set(action, /* @__PURE__ */ new Date());
874
968
  const unregister = this.createUnregisterFunction(action, handlerId, registration);
875
969
  this.unregisterFunctions.set(handlerId, unregister);
876
970
  this.log(`Handler registered: ${String(action)}`, {
@@ -964,6 +1058,8 @@ var ActionRegister = class {
964
1058
  abortReason: void 0,
965
1059
  currentIndex: 0,
966
1060
  jumpToPriority: void 0,
1061
+ jumpCount: 0,
1062
+ maxJumps: 10,
967
1063
  executionMode: currentExecutionMode,
968
1064
  results: [],
969
1065
  terminated: false,
@@ -1055,6 +1151,8 @@ var ActionRegister = class {
1055
1151
  abortReason: void 0,
1056
1152
  currentIndex: 0,
1057
1153
  jumpToPriority: void 0,
1154
+ jumpCount: 0,
1155
+ maxJumps: 10,
1058
1156
  executionMode: currentExecutionMode,
1059
1157
  results: [],
1060
1158
  terminated: false,
@@ -1215,32 +1313,19 @@ var ActionRegister = class {
1215
1313
  return null;
1216
1314
  }
1217
1315
  /**
1218
- * 🔧 Calculate optimal cache size based on current handler count
1219
- * Note: This caches handler SELECTION metadata only, never execution results
1220
- */
1221
- get filterCacheMaxSize() {
1222
- const totalHandlers = Array.from(this.pipelines.values()).reduce((sum, pipeline) => sum + pipeline.length, 0);
1223
- return totalHandlers * 10 || 100;
1224
- }
1225
- /**
1226
- * 🔧 Generate cache key for filter options
1316
+ * 🔧 Generate optimized cache key for filter options
1227
1317
  */
1228
1318
  generateFilterCacheKey(filterOptions) {
1229
1319
  if (!filterOptions) return "no-filter";
1230
- const key = [
1231
- filterOptions.handlerIds?.sort().join(",") || "none",
1232
- filterOptions.excludeHandlerIds?.sort().join(",") || "none",
1233
- filterOptions.priority?.min?.toString() || "none",
1234
- filterOptions.priority?.max?.toString() || "none",
1235
- filterOptions.custom ? "custom" : "none"
1236
- ].join("|");
1237
- return key;
1238
- }
1239
- /**
1240
- * 🔧 Clear filter cache when pipelines change
1241
- */
1242
- invalidateFilterCache() {
1243
- this.filterCache.clear();
1320
+ const parts = [];
1321
+ if (filterOptions.handlerIds?.length) parts.push(`h:${filterOptions.handlerIds.slice().sort().join(",")}`);
1322
+ if (filterOptions.excludeHandlerIds?.length) parts.push(`e:${filterOptions.excludeHandlerIds.slice().sort().join(",")}`);
1323
+ if (filterOptions.priority) {
1324
+ const { min, max } = filterOptions.priority;
1325
+ if (min !== void 0 || max !== void 0) parts.push(`p:${min ?? "*"}-${max ?? "*"}`);
1326
+ }
1327
+ if (filterOptions.custom) return "custom-" + Date.now() + Math.random();
1328
+ return parts.length > 0 ? parts.join("|") : "no-filter";
1244
1329
  }
1245
1330
  /**
1246
1331
  * 🔧 Create or reuse PipelineController from pool for better performance
@@ -1254,7 +1339,11 @@ var ActionRegister = class {
1254
1339
  if (autoAbortController && autoAbortOptions?.allowHandlerAbort) autoAbortController.abort(reason);
1255
1340
  };
1256
1341
  controller.modifyPayload = (modifier) => {
1257
- context.payload = modifier(context.payload);
1342
+ try {
1343
+ context.payload = modifier(context.payload);
1344
+ } catch (modificationError) {
1345
+ this.log("Payload modification error", modificationError, "warn");
1346
+ }
1258
1347
  };
1259
1348
  controller.getPayload = () => context.payload;
1260
1349
  controller.jumpToPriority = (priority) => {
@@ -1286,36 +1375,27 @@ var ActionRegister = class {
1286
1375
  }
1287
1376
  filterHandlers(handlers, filterOptions) {
1288
1377
  if (!filterOptions) return handlers;
1289
- const cacheKey = this.generateFilterCacheKey(filterOptions);
1290
- if (!filterOptions.custom) {
1291
- const cached = this.filterCache.get(cacheKey);
1292
- if (cached) return cached;
1293
- }
1378
+ const handlerIdSet = filterOptions.handlerIds ? new Set(filterOptions.handlerIds) : null;
1379
+ const excludeIdSet = filterOptions.excludeHandlerIds ? new Set(filterOptions.excludeHandlerIds) : null;
1294
1380
  const filtered = handlers.filter((registration) => {
1295
1381
  const config = registration.config;
1296
- if (filterOptions.handlerIds?.length && !filterOptions.handlerIds.includes(config.id)) return false;
1297
- if (filterOptions.excludeHandlerIds?.length && filterOptions.excludeHandlerIds.includes(config.id)) return false;
1382
+ if (handlerIdSet && !handlerIdSet.has(config.id)) return false;
1383
+ if (excludeIdSet && excludeIdSet.has(config.id)) return false;
1298
1384
  if (filterOptions.priority) {
1299
- if (filterOptions.priority.min !== void 0 && config.priority < filterOptions.priority.min) return false;
1300
- if (filterOptions.priority.max !== void 0 && config.priority > filterOptions.priority.max) return false;
1385
+ const priority = config.priority;
1386
+ if (filterOptions.priority.min !== void 0 && priority < filterOptions.priority.min) return false;
1387
+ if (filterOptions.priority.max !== void 0 && priority > filterOptions.priority.max) return false;
1301
1388
  }
1302
1389
  if (filterOptions.custom && !filterOptions.custom(config)) return false;
1303
1390
  return true;
1304
1391
  });
1305
- if (!filterOptions.custom) {
1306
- const currentMaxSize = this.filterCacheMaxSize;
1307
- if (this.filterCache.size >= currentMaxSize) {
1308
- const oldestKey = this.filterCache.keys().next().value;
1309
- if (oldestKey !== void 0) this.filterCache.delete(oldestKey);
1310
- }
1311
- this.filterCache.set(cacheKey, filtered);
1312
- }
1313
1392
  return filtered;
1314
1393
  }
1315
1394
  processResults(context, resultOptions) {
1316
- if (!resultOptions || !resultOptions.collect) return void 0;
1317
1395
  const results = context.results;
1318
1396
  if (context.terminated && context.terminationResult !== void 0) return context.terminationResult;
1397
+ if (!resultOptions) return results.length > 0 ? results[results.length - 1] : void 0;
1398
+ if (!resultOptions.collect && !resultOptions.strategy) return void 0;
1319
1399
  const limitedResults = resultOptions.maxResults ? results.slice(0, resultOptions.maxResults) : results;
1320
1400
  if (limitedResults.length === 0) return void 0;
1321
1401
  switch (resultOptions.strategy) {
@@ -1328,7 +1408,9 @@ var ActionRegister = class {
1328
1408
  case "custom":
1329
1409
  if (resultOptions.merger) return resultOptions.merger(limitedResults);
1330
1410
  throw new Error("Custom result strategy requires a merger function");
1331
- default: return limitedResults;
1411
+ default:
1412
+ if (resultOptions.collect) return limitedResults;
1413
+ return limitedResults[limitedResults.length - 1];
1332
1414
  }
1333
1415
  }
1334
1416
  async executePipeline(context, autoAbortController, autoAbortOptions) {
@@ -1365,6 +1447,10 @@ var ActionRegister = class {
1365
1447
  });
1366
1448
  }
1367
1449
  });
1450
+ if (pipeline.length === 0) {
1451
+ this.pipelines.delete(action);
1452
+ this.lastRegisteredTimestamps.delete(action);
1453
+ }
1368
1454
  }
1369
1455
  /**
1370
1456
  * Get the number of registered handlers for an action
@@ -1418,7 +1504,7 @@ var ActionRegister = class {
1418
1504
  */
1419
1505
  clearAction(action) {
1420
1506
  this.pipelines.delete(action);
1421
- this.invalidateFilterCache();
1507
+ this.lastRegisteredTimestamps.delete(action);
1422
1508
  }
1423
1509
  /**
1424
1510
  * Remove all handlers for all actions
@@ -1429,7 +1515,7 @@ var ActionRegister = class {
1429
1515
  */
1430
1516
  clearAll() {
1431
1517
  this.pipelines.clear();
1432
- this.invalidateFilterCache();
1518
+ this.lastRegisteredTimestamps.clear();
1433
1519
  }
1434
1520
  /**
1435
1521
  * Get the name of this action register
@@ -1483,7 +1569,8 @@ var ActionRegister = class {
1483
1569
  handlerCount: pipeline.length,
1484
1570
  totalHandlers: pipeline.length,
1485
1571
  handlersByPriority,
1486
- executionStats
1572
+ executionStats,
1573
+ lastRegistered: this.lastRegisteredTimestamps.get(action)
1487
1574
  };
1488
1575
  }
1489
1576
  /**
@@ -1563,8 +1650,11 @@ var ActionRegister = class {
1563
1650
  const index = pipeline.findIndex((reg) => reg.id === handlerId && reg === registration);
1564
1651
  if (index !== -1) {
1565
1652
  pipeline.splice(index, 1);
1566
- this.invalidateFilterCache();
1567
1653
  this.unregisterFunctions.delete(handlerId);
1654
+ if (pipeline.length === 0) {
1655
+ this.pipelines.delete(action);
1656
+ this.lastRegisteredTimestamps.delete(action);
1657
+ }
1568
1658
  if (registration.config.cleanup && typeof registration.config.cleanup === "function") try {
1569
1659
  registration.config.cleanup();
1570
1660
  } catch (cleanupError) {
@@ -1572,7 +1662,8 @@ var ActionRegister = class {
1572
1662
  }
1573
1663
  this.log(`Handler unregistered: ${String(action)}`, {
1574
1664
  handlerId,
1575
- remainingHandlers: pipeline.length
1665
+ remainingHandlers: pipeline.length,
1666
+ actionRemoved: pipeline.length === 0
1576
1667
  });
1577
1668
  }
1578
1669
  };
@@ -1605,19 +1696,17 @@ var ActionRegister = class {
1605
1696
  * @public
1606
1697
  */
1607
1698
  destroy() {
1608
- this.unregisterFunctions.forEach((unregister) => {
1609
- try {
1610
- unregister();
1611
- } catch (error) {
1612
- this.log("Error during unregister in destroy", error, "error");
1613
- }
1614
- });
1615
1699
  this.unregisterFunctions.clear();
1700
+ for (const [action, pipeline] of this.pipelines.entries()) for (const registration of pipeline) if (registration.config.cleanup && typeof registration.config.cleanup === "function") try {
1701
+ registration.config.cleanup();
1702
+ } catch (cleanupError) {
1703
+ this.log(`Cleanup error for handler during destroy: ${String(action)}`, cleanupError, "warn");
1704
+ }
1616
1705
  this.pipelines.clear();
1706
+ this.lastRegisteredTimestamps.clear();
1617
1707
  this.actionGuard.destroy();
1618
1708
  this.dispatchQueue?.clear?.();
1619
1709
  this.actionExecutionModes.clear();
1620
- this.filterCache.clear();
1621
1710
  this.controllerPool.length = 0;
1622
1711
  this.log("ActionRegister destroyed");
1623
1712
  }
package/dist/index.d.cts CHANGED
@@ -22,6 +22,7 @@ interface HandlerConfig {
22
22
  throttle?: number;
23
23
  replaceExisting?: boolean;
24
24
  cleanup?: () => void;
25
+ condition?: (payload: any) => boolean;
25
26
  }
26
27
  interface HandlerRegistration<T = any, R = void> {
27
28
  handler: ActionHandler<T, R>;
@@ -37,6 +38,8 @@ interface PipelineContext<T = any, R = void> {
37
38
  abortReason: string | undefined;
38
39
  currentIndex: number;
39
40
  jumpToPriority: number | undefined;
41
+ jumpCount?: number;
42
+ maxJumps?: number;
40
43
  executionMode: ExecutionMode;
41
44
  results: R[];
42
45
  terminated: boolean;
@@ -161,12 +164,13 @@ declare class ActionRegister<T extends ActionPayloadMap = ActionPayloadMap> {
161
164
  private executionMode;
162
165
  private actionExecutionModes;
163
166
  private unregisterFunctions;
167
+ private lastRegisteredTimestamps;
164
168
  readonly name: string;
165
169
  private readonly registryConfig;
166
170
  private readonly isDebugMode;
167
171
  private readonly maxHandlersPerAction;
168
172
  private dispatchQueue?;
169
- private filterCache;
173
+ private filterCacheDisabled;
170
174
  private handlerIdCounter;
171
175
  private controllerPool;
172
176
  private readonly maxControllerPoolSize;
@@ -180,9 +184,7 @@ declare class ActionRegister<T extends ActionPayloadMap = ActionPayloadMap> {
180
184
  private _performDispatch;
181
185
  dispatchWithResult<K extends keyof T, R = void>(action: K, payload?: T[K], options?: DispatchOptions): Promise<ExecutionResult<R>>;
182
186
  private applyActionGuardControlsWithResult;
183
- private get filterCacheMaxSize();
184
187
  private generateFilterCacheKey;
185
- private invalidateFilterCache;
186
188
  private getControllerFromPool;
187
189
  private returnControllerToPool;
188
190
  private filterHandlers;
@@ -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","../src/react-helpers.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/types.ts","../src/ActionRegister.ts","../src/action-guard.ts","../src/execution-modes.ts","../src/react-helpers.ts"],"sourcesContent":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -22,6 +22,7 @@ interface HandlerConfig {
22
22
  throttle?: number;
23
23
  replaceExisting?: boolean;
24
24
  cleanup?: () => void;
25
+ condition?: (payload: any) => boolean;
25
26
  }
26
27
  interface HandlerRegistration<T = any, R = void> {
27
28
  handler: ActionHandler<T, R>;
@@ -37,6 +38,8 @@ interface PipelineContext<T = any, R = void> {
37
38
  abortReason: string | undefined;
38
39
  currentIndex: number;
39
40
  jumpToPriority: number | undefined;
41
+ jumpCount?: number;
42
+ maxJumps?: number;
40
43
  executionMode: ExecutionMode;
41
44
  results: R[];
42
45
  terminated: boolean;
@@ -161,12 +164,13 @@ declare class ActionRegister<T extends ActionPayloadMap = ActionPayloadMap> {
161
164
  private executionMode;
162
165
  private actionExecutionModes;
163
166
  private unregisterFunctions;
167
+ private lastRegisteredTimestamps;
164
168
  readonly name: string;
165
169
  private readonly registryConfig;
166
170
  private readonly isDebugMode;
167
171
  private readonly maxHandlersPerAction;
168
172
  private dispatchQueue?;
169
- private filterCache;
173
+ private filterCacheDisabled;
170
174
  private handlerIdCounter;
171
175
  private controllerPool;
172
176
  private readonly maxControllerPoolSize;
@@ -180,9 +184,7 @@ declare class ActionRegister<T extends ActionPayloadMap = ActionPayloadMap> {
180
184
  private _performDispatch;
181
185
  dispatchWithResult<K extends keyof T, R = void>(action: K, payload?: T[K], options?: DispatchOptions): Promise<ExecutionResult<R>>;
182
186
  private applyActionGuardControlsWithResult;
183
- private get filterCacheMaxSize();
184
187
  private generateFilterCacheKey;
185
- private invalidateFilterCache;
186
188
  private getControllerFromPool;
187
189
  private returnControllerToPool;
188
190
  private filterHandlers;