@context-action/core 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
- controller.next();
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
- controller.next();
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
- controller.next();
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
- controller.next();
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
@@ -426,7 +426,7 @@ var import_defineProperty = /* @__PURE__ */ __toESM(require_defineProperty(), 1)
426
426
  * // 핸들러 등록
427
427
  * register.register('updateUser', ({ id, name }, controller) => {
428
428
  * userStore.setValue({ id, name });
429
- * controller.next();
429
+ * // 핸들러가 자동으로 다음 핸들러로 진행
430
430
  * }, { priority: 10 });
431
431
  *
432
432
  * // 액션 디스패치
@@ -812,7 +812,6 @@ var ActionRegister = class {
812
812
  async executePipeline(context, autoAbortController, autoAbortOptions) {
813
813
  const createController = (_registration, _index) => {
814
814
  return {
815
- next: () => {},
816
815
  abort: (reason) => {
817
816
  context.aborted = true;
818
817
  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;
@@ -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":"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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"],"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;
@@ -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":"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"}
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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"}
package/dist/index.js CHANGED
@@ -425,7 +425,7 @@ var import_defineProperty = /* @__PURE__ */ __toESM(require_defineProperty(), 1)
425
425
  * // 핸들러 등록
426
426
  * register.register('updateUser', ({ id, name }, controller) => {
427
427
  * userStore.setValue({ id, name });
428
- * controller.next();
428
+ * // 핸들러가 자동으로 다음 핸들러로 진행
429
429
  * }, { priority: 10 });
430
430
  *
431
431
  * // 액션 디스패치
@@ -811,7 +811,6 @@ var ActionRegister = class {
811
811
  async executePipeline(context, autoAbortController, autoAbortOptions) {
812
812
  const createController = (_registration, _index) => {
813
813
  return {
814
- next: () => {},
815
814
  abort: (reason) => {
816
815
  context.aborted = true;
817
816
  context.abortReason = reason;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["context: PipelineContext<T, R>","createController: (registration: HandlerRegistration<T, R>, index: number) => PipelineController<T, R>","error: any","handlerResult: R | undefined","_typeof","o","_typeof","toPrimitive","toPropertyKey","_defineProperty","actionKey: string","debounceMs: number","throttleMs: number","config: ActionRegisterConfig","action: K","handler: ActionHandler<T[K], R>","config: HandlerConfig","registration: HandlerRegistration<T[K], R>","payload?: T[K]","options?: import('./types.js').DispatchOptions","autoAbortController: AbortController | undefined","abortHandler","throttleMs: number | undefined","debounceMs: number | undefined","context: PipelineContext<T[K], any>","context: PipelineContext<T[K], R>","executionError: Error | undefined","handlerResults: Array<{\n id: string;\n executed: boolean;\n duration?: number;\n result?: R;\n error?: Error;\n metadata?: Record<string, any>;\n }>","errors: Array<{\n handlerId: string;\n error: Error;\n timestamp: number;\n }>","executionResult: ExecutionResult<R>","handlers: HandlerRegistration<T[K], any>[]","filterOptions?: import('./types.js').DispatchOptions['filter']","context: PipelineContext<any, R>","resultOptions?: import('./types.js').DispatchOptions['result']","autoAbortController?: AbortController","autoAbortOptions?: { allowHandlerAbort?: boolean }","_registration: HandlerRegistration<T[K], any>","_index: number","reason?: string","modifier: (payload: T[K]) => T[K]","priority: number","result: any","merger: (previousResults: any[], currentResult: any) => any","executedHandlers: HandlerRegistration<T[K], any>[]","success: boolean","duration: number","tag: string","category: string","mode: ExecutionMode"],"sources":["../src/execution-modes.ts","../../../node_modules/.pnpm/@oxc-project+runtime@0.81.0/node_modules/@oxc-project/runtime/src/helpers/typeof.js","../../../node_modules/.pnpm/@oxc-project+runtime@0.81.0/node_modules/@oxc-project/runtime/src/helpers/toPrimitive.js","../../../node_modules/.pnpm/@oxc-project+runtime@0.81.0/node_modules/@oxc-project/runtime/src/helpers/toPropertyKey.js","../../../node_modules/.pnpm/@oxc-project+runtime@0.81.0/node_modules/@oxc-project/runtime/src/helpers/defineProperty.js","../src/action-guard.ts","../src/ActionRegister.ts"],"sourcesContent":["/**\n * @fileoverview Execution mode implementations for ActionRegister\n * Provides different execution strategies for action pipelines\n */\n\nimport type { \n HandlerRegistration, \n PipelineContext, \n PipelineController\n} from './types.js';\n\n/**\n * Execute handlers in sequential mode (one after another)\n */\nexport async function executeSequential<T, R = void>(\n context: PipelineContext<T, R>,\n createController: (registration: HandlerRegistration<T, R>, index: number) => PipelineController<T, R>\n): Promise<void> {\n\n let i = 0;\n \n while (i < context.handlers.length) {\n // Check for abort or termination\n if (context.aborted || context.terminated) {\n break;\n }\n\n const registration = context.handlers[i];\n context.currentIndex = i;\n\n /** Check condition if provided */\n if (registration.config.condition && !registration.config.condition()) {\n i++;\n continue;\n }\n\n /** Check validation if provided */\n if (registration.config.validation && !registration.config.validation(context.payload)) {\n i++;\n continue;\n }\n\n const controller = createController(registration, i);\n\n try {\n // Check for abort before executing handler\n if (context.aborted) {\n break;\n }\n \n const result = registration.handler(context.payload, controller);\n\n /** Wait for async handlers if they're blocking */\n if (registration.config.blocking && result instanceof Promise) {\n const handlerResult = await result;\n \n /** Collect result if handler returned something and wasn't terminated */\n if (handlerResult !== undefined && !context.terminated) {\n context.results.push(handlerResult);\n }\n } else if (result !== undefined && !context.terminated) {\n /** Collect synchronous result */\n if (result instanceof Promise) {\n // Non-blocking async handler - don't wait but collect result when resolved\n result.then(asyncResult => {\n if (asyncResult !== undefined && !context.terminated) {\n context.results.push(asyncResult);\n }\n }).catch(() => {\n // Ignore errors from non-blocking handlers\n });\n } else {\n context.results.push(result);\n }\n }\n\n /** Check if pipeline was terminated by controller.return() */\n if (context.terminated) {\n break;\n }\n\n /** Handle jump to priority AFTER handler execution */\n if (context.jumpToPriority !== undefined) {\n const jumpIndex = context.handlers.findIndex(\n handler => handler.config.priority === context.jumpToPriority\n );\n \n if (jumpIndex !== -1) {\n // Jump to the target index directly (position movement)\n i = jumpIndex;\n context.jumpToPriority = undefined;\n continue; // Continue to execute the handler at jump destination\n } else {\n // Invalid jump target, clear and continue normally\n context.jumpToPriority = undefined;\n i++;\n }\n } else {\n // Normal progression to next handler\n i++;\n }\n\n } catch (error: any) {\n if (registration.config.blocking) {\n throw error;\n }\n // For non-blocking handlers, continue to next handler\n i++;\n }\n }\n}\n\n/**\n * Execute handlers in parallel mode (all at once)\n */\nexport async function executeParallel<T, R = void>(\n context: PipelineContext<T, R>,\n createController: (registration: HandlerRegistration<T, R>, index: number) => PipelineController<T, R>\n): Promise<void> {\n\n /** Filter handlers that should run */\n const runnableHandlers = context.handlers.filter((registration, _index) => {\n /** Check condition */\n if (registration.config.condition && !registration.config.condition()) {\n return false;\n }\n\n /** Check validation */\n if (registration.config.validation && !registration.config.validation(context.payload)) {\n return false;\n }\n\n return true;\n });\n\n /** Create promises for all handlers */\n const handlerPromises = runnableHandlers.map(async (registration, _index) => {\n const controller = createController(registration, _index);\n \n try {\n const result = registration.handler(context.payload, controller);\n \n let handlerResult: R | undefined;\n if (result instanceof Promise) {\n handlerResult = await result;\n } else {\n handlerResult = result;\n }\n \n /** Collect result if handler returned something and pipeline wasn't terminated */\n if (handlerResult !== undefined && !context.terminated) {\n context.results.push(handlerResult);\n }\n \n return { \n success: true, \n handlerId: registration.id, \n result: handlerResult,\n terminated: context.terminated \n };\n \n } catch (error: any) {\n if (registration.config.blocking) {\n throw error;\n }\n \n return { success: false, handlerId: registration.id, error };\n }\n });\n\n /** Wait for all handlers to complete */\n const results = await Promise.allSettled(handlerPromises);\n \n /** Check for any rejected blocking handlers */\n const failures = results.filter((result, index) => {\n if (result.status === 'rejected') {\n const registration = runnableHandlers[index];\n return registration.config.blocking;\n }\n return false;\n });\n\n if (failures.length > 0) {\n const firstFailure = failures[0] as PromiseRejectedResult;\n throw firstFailure.reason;\n }\n\n /** Check if any handler terminated the pipeline */\n const terminatedResults = results.filter(result => \n result.status === 'fulfilled' && result.value.terminated\n );\n \n if (terminatedResults.length > 0) {\n context.terminated = true;\n // In parallel mode, we can't determine which handler's termination result to use,\n // so we use the first one that terminated\n const firstTerminated = terminatedResults[0] as PromiseFulfilledResult<any>;\n context.terminationResult = firstTerminated.value.result;\n }\n}\n\n/**\n * Execute handlers in race mode (first to complete wins)\n */\nexport async function executeRace<T, R = void>(\n context: PipelineContext<T, R>,\n createController: (registration: HandlerRegistration<T, R>, index: number) => PipelineController<T, R>\n): Promise<void> {\n\n /** Filter handlers that should run */\n const runnableHandlers = context.handlers.filter((registration, _index) => {\n /** Check condition */\n if (registration.config.condition && !registration.config.condition()) {\n return false;\n }\n\n /** Check validation */\n if (registration.config.validation && !registration.config.validation(context.payload)) {\n return false;\n }\n\n return true;\n });\n\n if (runnableHandlers.length === 0) {\n return;\n }\n\n /** Create promises for all handlers */\n const handlerPromises = runnableHandlers.map(async (registration, _index) => {\n const controller = createController(registration, _index);\n \n try {\n const result = registration.handler(context.payload, controller);\n \n let handlerResult: R | undefined;\n if (result instanceof Promise) {\n handlerResult = await result;\n } else {\n handlerResult = result;\n }\n \n return { \n success: true, \n handlerId: registration.id, \n registration,\n result: handlerResult,\n terminated: context.terminated\n };\n \n } catch (error: any) {\n return { success: false, handlerId: registration.id, error, registration };\n }\n });\n\n /** Race all handlers */\n const winner = await Promise.race(handlerPromises);\n\n /** If the winner failed and was blocking, throw the error */\n if (!winner.success && winner.registration?.config.blocking) {\n throw winner.error;\n }\n\n /** Collect result from the winning handler */\n if (winner.success && winner.result !== undefined) {\n context.results.push(winner.result);\n }\n\n /** Check if the winning handler terminated the pipeline */\n if (winner.success && winner.terminated) {\n context.terminated = true;\n context.terminationResult = winner.result;\n }\n}","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nmodule.exports = toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nmodule.exports = toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\n * @fileoverview Action Guard system for debouncing, throttling and blocking\n * Provides rate limiting and user experience optimization for actions\n */\n\n\n/**\n * Action guard state tracking for debouncing and throttling\n * @memberof core-concepts\n * @internal\n * @since 1.0.0\n * \n * Tracks timing and execution state for action execution control\n */\ninterface GuardState {\n /** Timestamp of last successful execution for throttling calculations */\n lastExecuted: number;\n \n /** Active debounce timer - cleared when new debounce requests arrive */\n debounceTimer?: NodeJS.Timeout;\n \n /** Active throttle timer - tracks when throttle period will end */\n throttleTimer?: NodeJS.Timeout;\n \n /** Flag indicating if action is currently in throttled state */\n isThrottled: boolean;\n}\n\n/**\n * Action Guard system for managing action execution timing\n * @implements action-guard\n * @implements performance-optimization \n * @implements user-experience-optimization\n * @implements class-naming\n * @memberof core-concepts\n * @internal\n * @since 1.0.0\n * \n * Manages action execution timing through debouncing and throttling\n * @implements performance-optimization\n * \n * @example\n * ```typescript\n * const guard = new ActionGuard(logger);\n * \n * // Debounce search input (wait 300ms after typing stops)\n * if (await guard.debounce('search', 300)) {\n * executeSearch(); \n * }\n * \n * // Throttle scroll handler (max once per 100ms)\n * if (guard.throttle('scroll', 100)) {\n * updateScrollPosition();\n * }\n * ```\n */\nexport class ActionGuard {\n private guards = new Map<string, GuardState>();\n\n constructor() {\n // ActionGuard without logger\n }\n\n /**\n * Check if action should be debounced\n * @param actionKey - Unique key for the action\n * @param debounceMs - Debounce delay in milliseconds\n * @returns Promise that resolves when debounce period is complete\n */\n async debounce(actionKey: string, debounceMs: number): Promise<boolean> {\n\n /** Get or create guard state for this action */\n let state = this.guards.get(actionKey);\n if (!state) {\n /** Initialize new guard state with default values */\n state = {\n lastExecuted: 0,\n isThrottled: false\n };\n this.guards.set(actionKey, state);\n }\n\n /** Clear any existing debounce timer to restart the delay period */\n /** This implements the \"debounce\" behavior where rapid calls reset the timer */\n if (state.debounceTimer) {\n clearTimeout(state.debounceTimer);\n }\n\n /** Create new debounce promise that resolves after the delay period */\n /** The promise will only resolve if no new debounce requests arrive */\n return new Promise((resolve) => {\n state!.debounceTimer = setTimeout(() => {\n /** Clean up timer reference to prevent memory leaks */\n state!.debounceTimer = undefined;\n /** Update last execution timestamp for throttling calculations */\n state!.lastExecuted = Date.now();\n resolve(true);\n }, debounceMs);\n \n });\n }\n\n /**\n * Check if action should be throttled\n * @param actionKey - Unique key for the action\n * @param throttleMs - Throttle delay in milliseconds\n * @returns True if action should proceed, false if throttled\n */\n throttle(actionKey: string, throttleMs: number): boolean {\n\n /** Get or create guard state for this action */\n let state = this.guards.get(actionKey);\n if (!state) {\n /** Initialize new guard state with default values */\n state = {\n lastExecuted: 0,\n isThrottled: false\n };\n this.guards.set(actionKey, state);\n }\n\n const now = Date.now();\n const timeSinceLastExecution = now - state.lastExecuted;\n\n /** Check if enough time has passed since last execution */\n /** If throttle period has elapsed, allow immediate execution */\n if (timeSinceLastExecution >= throttleMs) {\n /** Update execution timestamp and clear throttled state */\n state.lastExecuted = now;\n state.isThrottled = false;\n \n \n return true;\n }\n\n /** If already in throttled state, don't create duplicate timers */\n /** This prevents timer accumulation and unnecessary processing */\n if (state.isThrottled) {\n return false;\n }\n\n /** Set throttle timer to automatically clear the throttled state */\n /** Calculate remaining time until throttle period expires */\n state.isThrottled = true;\n const remainingTime = throttleMs - timeSinceLastExecution;\n \n /** Create timer to reset throttled state when period expires */\n state.throttleTimer = setTimeout(() => {\n /** Clear throttled state and timer reference */\n state!.isThrottled = false;\n state!.throttleTimer = undefined;\n }, remainingTime);\n\n\n return false;\n }\n\n /**\n * Clear all guards for an action\n * @param actionKey - Action key to clear\n */\n clearGuards(actionKey: string): void {\n \n const state = this.guards.get(actionKey);\n if (state) {\n /** Clear debounce timer if active to prevent memory leaks */\n if (state.debounceTimer) {\n clearTimeout(state.debounceTimer);\n }\n /** Clear throttle timer if active to prevent memory leaks */\n if (state.throttleTimer) {\n clearTimeout(state.throttleTimer);\n }\n /** Remove guard state from memory */\n this.guards.delete(actionKey);\n \n }\n }\n\n /**\n * Clear all guards\n */\n clearAll(): void {\n \n /** Iterate through all guard states and clear their timers */\n /** This prevents memory leaks when clearing the entire guard system */\n for (const [, state] of this.guards) {\n /** Clear any active debounce timers */\n if (state.debounceTimer) {\n clearTimeout(state.debounceTimer);\n }\n /** Clear any active throttle timers */\n if (state.throttleTimer) {\n clearTimeout(state.throttleTimer);\n }\n }\n \n /** Remove all guard states from memory */\n this.guards.clear();\n }\n\n /**\n * Get current guard state for debugging\n * @param actionKey - Action key to inspect\n */\n getGuardState(actionKey: string): GuardState | undefined {\n return this.guards.get(actionKey);\n }\n\n /**\n * Get all active guards for debugging\n */\n getAllGuardStates(): Map<string, GuardState> {\n return new Map(this.guards);\n }\n}","\nimport {\n ActionPayloadMap,\n ActionHandler,\n HandlerConfig,\n HandlerRegistration,\n PipelineContext,\n PipelineController,\n ActionRegisterConfig,\n UnregisterFunction,\n ExecutionMode,\n ExecutionResult,\n ActionRegistryInfo,\n ActionHandlerStats,\n} from './types.js';\nimport { executeSequential, executeParallel, executeRace } from './execution-modes.js';\nimport { ActionGuard } from './action-guard.js';\n\n/**\n * 중앙화된 액션 등록 및 디스패치 시스템으로, 타입 안전한 액션 파이프라인 관리를 제공하는 핵심 클래스입니다.\n * \n * @implements {ActionRegister}\n * @implements {Action Pipeline System}\n * @memberof core-concepts\n * \n * @example\n * ```typescript\n * interface AppActions extends ActionPayloadMap {\n * updateUser: { id: string; name: string };\n * calculateTotal: void;\n * }\n * \n * const register = new ActionRegister<AppActions>({\n * name: 'AppRegister',\n * logLevel: LogLevel.DEBUG\n * });\n * \n * // 핸들러 등록\n * register.register('updateUser', ({ id, name }, controller) => {\n * userStore.setValue({ id, name });\n * controller.next();\n * }, { priority: 10 });\n * \n * // 액션 디스패치\n * await register.dispatch('updateUser', { id: '1', name: 'John' });\n * ```\n */\nexport class ActionRegister<T extends ActionPayloadMap = ActionPayloadMap> {\n private pipelines = new Map<keyof T, HandlerRegistration<any, any>[]>();\n private handlerCounter = 0;\n private readonly actionGuard: ActionGuard;\n private executionMode: ExecutionMode = 'sequential';\n private actionExecutionModes = new Map<keyof T, ExecutionMode>();\n public readonly name: string;\n private readonly registryConfig: ActionRegisterConfig['registry'];\n private executionStats = new Map<keyof T, {\n totalExecutions: number;\n totalDuration: number;\n successCount: number;\n errorCount: number;\n }>();\n\n constructor(config: ActionRegisterConfig = {}) {\n this.name = config.name || 'ActionRegister';\n this.registryConfig = config.registry;\n this.actionGuard = new ActionGuard();\n \n if (this.registryConfig?.defaultExecutionMode) {\n this.executionMode = this.registryConfig.defaultExecutionMode;\n }\n \n if (this.registryConfig?.debug && process.env.NODE_ENV === 'development') {\n console.log(`🎯 ActionRegister created: ${this.name}`, {\n defaultExecutionMode: this.executionMode,\n maxHandlers: this.registryConfig.maxHandlers,\n autoCleanup: this.registryConfig.autoCleanup ?? true\n });\n }\n }\n\n register<K extends keyof T, R = void>(\n action: K,\n handler: ActionHandler<T[K], R>,\n config: HandlerConfig = {}\n ): UnregisterFunction {\n \n // Generate unique handler ID with security consideration\n // Use counter + random suffix to prevent ID prediction attacks\n const handlerId = config.id || `handler_${++this.handlerCounter}_${Math.random().toString(36).substr(2, 5)}`;\n \n // Create handler registration with defaults\n const registration: HandlerRegistration<T[K], R> = {\n handler,\n config: {\n // Existing fields\n priority: config.priority ?? 0,\n id: handlerId,\n blocking: config.blocking ?? false,\n once: config.once ?? false,\n condition: config.condition || (() => true),\n debounce: config.debounce ?? undefined,\n throttle: config.throttle ?? undefined,\n validation: config.validation ?? undefined,\n middleware: config.middleware ?? false,\n \n // New metadata fields\n tags: config.tags ?? [],\n category: config.category ?? undefined,\n description: config.description ?? undefined,\n version: config.version ?? undefined,\n returnType: config.returnType ?? 'value',\n timeout: config.timeout ?? undefined,\n retries: config.retries ?? 0,\n dependencies: config.dependencies ?? [],\n conflicts: config.conflicts ?? [],\n environment: config.environment ?? undefined,\n feature: config.feature ?? undefined,\n metrics: config.metrics ?? {\n collectTiming: false,\n collectErrors: false,\n customMetrics: {}\n },\n metadata: config.metadata ?? {},\n } as Required<HandlerConfig>,\n id: handlerId,\n };\n \n // Initialize pipeline if it doesn't exist\n if (!this.pipelines.has(action)) {\n this.pipelines.set(action, []);\n }\n\n const pipeline = this.pipelines.get(action)!;\n \n // Check for duplicate handler IDs and prevent duplicate registration\n const existingIndex = pipeline.findIndex(reg => reg.id === handlerId);\n if (existingIndex !== -1) {\n // Return a no-op unregister function for the duplicate\n return () => {};\n }\n \n // Check maximum handlers limit\n if (this.registryConfig?.maxHandlers && pipeline.length >= this.registryConfig.maxHandlers) {\n throw new Error(\n `Maximum number of handlers (${this.registryConfig.maxHandlers}) reached for action '${String(action)}' in registry '${this.name}'`\n );\n }\n\n // Add handler to pipeline\n pipeline.push(registration);\n \n // Sort pipeline by priority (highest first)\n pipeline.sort((a, b) => b.config.priority - a.config.priority);\n \n if (this.registryConfig?.debug && process.env.NODE_ENV === 'development') {\n console.log(`🎯 Handler registered: ${String(action)}`, {\n handlerId,\n priority: config.priority,\n tags: config.tags,\n category: config.category,\n totalHandlers: pipeline.length,\n registry: this.name\n });\n }\n\n // Return unregister function that removes this specific registration\n return () => {\n const index = pipeline.findIndex((reg) => reg.id === handlerId && reg === registration);\n if (index !== -1) {\n pipeline.splice(index, 1);\n \n if (this.registryConfig?.debug && process.env.NODE_ENV === 'development') {\n console.log(`🎯 Handler unregistered: ${String(action)}`, {\n handlerId,\n remainingHandlers: pipeline.length,\n registry: this.name\n });\n }\n }\n };\n }\n\n async dispatch<K extends keyof T>(\n action: K,\n payload?: T[K],\n options?: import('./types.js').DispatchOptions\n ): Promise<void> {\n // Auto-abort: Create AbortController if enabled\n let autoAbortController: AbortController | undefined;\n let effectiveSignal = options?.signal;\n \n if (options?.autoAbort?.enabled) {\n autoAbortController = new AbortController();\n effectiveSignal = autoAbortController.signal;\n \n // Provide access to the created controller\n if (options.autoAbort.onControllerCreated) {\n options.autoAbort.onControllerCreated(autoAbortController);\n }\n \n // If original signal exists, link them together\n if (options?.signal) {\n const originalSignal = options.signal;\n if (originalSignal.aborted) {\n autoAbortController.abort();\n } else {\n const abortHandler = () => autoAbortController!.abort();\n originalSignal.addEventListener('abort', abortHandler, { once: true });\n }\n }\n }\n \n // Check if dispatch is aborted before starting\n if (effectiveSignal?.aborted) {\n return;\n }\n \n const pipeline = this.pipelines.get(action);\n if (!pipeline || pipeline.length === 0) {\n return;\n }\n\n // Apply handler filtering first\n const filteredHandlers = this.filterHandlers([...pipeline], options?.filter);\n\n // Apply ActionGuard controls - check both dispatch options and handler configs\n const actionKey = String(action);\n \n // Get throttle/debounce settings from dispatch options or handler configs\n let throttleMs: number | undefined;\n let debounceMs: number | undefined;\n \n // Priority: dispatch options > handler config\n if (options?.throttle !== undefined) {\n throttleMs = options.throttle;\n } else if (filteredHandlers.length > 0) {\n // Use throttle from the first handler that has it (handlers are sorted by priority)\n for (const handler of filteredHandlers) {\n if (handler.config.throttle !== undefined) {\n throttleMs = handler.config.throttle;\n break;\n }\n }\n }\n \n if (options?.debounce !== undefined) {\n debounceMs = options.debounce;\n } else if (filteredHandlers.length > 0) {\n // Use debounce from the first handler that has it (handlers are sorted by priority)\n for (const handler of filteredHandlers) {\n if (handler.config.debounce !== undefined) {\n debounceMs = handler.config.debounce;\n break;\n }\n }\n }\n \n // Apply debounce if specified\n if (debounceMs !== undefined) {\n const shouldProceed = await this.actionGuard.debounce(actionKey, debounceMs);\n if (!shouldProceed) {\n return; // Debounced - don't execute\n }\n }\n \n // Apply throttle if specified\n if (throttleMs !== undefined) {\n const shouldProceed = this.actionGuard.throttle(actionKey, throttleMs);\n if (!shouldProceed) {\n return; // Throttled - don't execute\n }\n }\n\n // Determine execution mode for this action (with option override)\n const currentExecutionMode = options?.executionMode || \n this.actionExecutionModes.get(action) || \n this.executionMode;\n\n // Create pipeline execution context\n const context: PipelineContext<T[K], any> = {\n action: String(action),\n payload: payload as T[K],\n handlers: filteredHandlers, // Use filtered handlers\n aborted: false,\n abortReason: undefined,\n currentIndex: 0,\n jumpToPriority: undefined,\n executionMode: currentExecutionMode,\n \n // New result collection fields\n results: [],\n terminated: false,\n terminationResult: undefined,\n };\n\n const startTime = Date.now();\n let executionSuccess = true;\n \n // Add abort listener if signal provided (use effectiveSignal for auto-abort)\n const abortHandler = effectiveSignal ? () => {\n context.aborted = true;\n context.abortReason = 'Action dispatch aborted by signal';\n } : undefined;\n \n if (effectiveSignal && abortHandler) {\n effectiveSignal.addEventListener('abort', abortHandler);\n }\n \n try {\n await this.executePipeline(context, autoAbortController, options?.autoAbort);\n } catch (error) {\n executionSuccess = false;\n throw error;\n } finally {\n // Clean up abort listener\n if (effectiveSignal && abortHandler) {\n effectiveSignal.removeEventListener('abort', abortHandler);\n }\n // Track execution statistics\n const duration = Date.now() - startTime;\n this.updateExecutionStats(action, executionSuccess, duration);\n }\n }\n\n async dispatchWithResult<K extends keyof T, R = void>(\n action: K,\n payload?: T[K],\n options?: import('./types.js').DispatchOptions\n ): Promise<ExecutionResult<R>> {\n const startTime = Date.now();\n \n // Auto-abort: Create AbortController if enabled (same as dispatch)\n let autoAbortController: AbortController | undefined;\n let effectiveSignal = options?.signal;\n \n if (options?.autoAbort?.enabled) {\n autoAbortController = new AbortController();\n effectiveSignal = autoAbortController.signal;\n \n // Provide access to the created controller\n if (options.autoAbort.onControllerCreated) {\n options.autoAbort.onControllerCreated(autoAbortController);\n }\n \n // If original signal exists, link them together\n if (options?.signal) {\n const originalSignal = options.signal;\n if (originalSignal.aborted) {\n autoAbortController.abort();\n } else {\n const abortHandler = () => autoAbortController!.abort();\n originalSignal.addEventListener('abort', abortHandler, { once: true });\n }\n }\n }\n \n // Check if dispatch is aborted before starting\n if (effectiveSignal?.aborted) {\n return {\n success: false,\n aborted: true,\n abortReason: 'Action dispatch aborted by signal',\n terminated: false,\n result: undefined,\n results: [],\n execution: {\n duration: 0,\n handlersExecuted: 0,\n handlersSkipped: 0,\n handlersFailed: 0,\n startTime,\n endTime: startTime,\n },\n handlers: [],\n errors: [],\n };\n }\n \n const pipeline = this.pipelines.get(action);\n \n if (!pipeline || pipeline.length === 0) {\n return {\n success: true,\n aborted: false,\n terminated: false,\n result: undefined,\n results: [],\n execution: {\n duration: 0,\n handlersExecuted: 0,\n handlersSkipped: 0,\n handlersFailed: 0,\n startTime,\n endTime: startTime,\n },\n handlers: [],\n errors: [],\n };\n }\n\n // Apply handler filtering first\n const filteredHandlers = this.filterHandlers([...pipeline], options?.filter);\n\n // Apply ActionGuard controls - check both dispatch options and handler configs\n const actionKey = String(action);\n \n // Get throttle/debounce settings from dispatch options or handler configs\n let throttleMs: number | undefined;\n let debounceMs: number | undefined;\n \n // Priority: dispatch options > handler config\n if (options?.throttle !== undefined) {\n throttleMs = options.throttle;\n } else if (filteredHandlers.length > 0) {\n // Use throttle from the first handler that has it (handlers are sorted by priority)\n for (const handler of filteredHandlers) {\n if (handler.config.throttle !== undefined) {\n throttleMs = handler.config.throttle;\n break;\n }\n }\n }\n \n if (options?.debounce !== undefined) {\n debounceMs = options.debounce;\n } else if (filteredHandlers.length > 0) {\n // Use debounce from the first handler that has it (handlers are sorted by priority)\n for (const handler of filteredHandlers) {\n if (handler.config.debounce !== undefined) {\n debounceMs = handler.config.debounce;\n break;\n }\n }\n }\n \n // Apply debounce if specified\n if (debounceMs !== undefined) {\n const shouldProceed = await this.actionGuard.debounce(actionKey, debounceMs);\n if (!shouldProceed) {\n return {\n success: false,\n aborted: true,\n abortReason: 'Debounced execution',\n terminated: false,\n result: undefined,\n results: [],\n execution: {\n duration: Date.now() - startTime,\n handlersExecuted: 0,\n handlersSkipped: pipeline.length,\n handlersFailed: 0,\n startTime,\n endTime: Date.now(),\n },\n handlers: [],\n errors: [],\n };\n }\n }\n \n // Apply throttle if specified\n if (throttleMs !== undefined) {\n const shouldProceed = this.actionGuard.throttle(actionKey, throttleMs);\n if (!shouldProceed) {\n return {\n success: false,\n aborted: true,\n abortReason: 'Throttled execution',\n terminated: false,\n result: undefined,\n results: [],\n execution: {\n duration: Date.now() - startTime,\n handlersExecuted: 0,\n handlersSkipped: pipeline.length,\n handlersFailed: 0,\n startTime,\n endTime: Date.now(),\n },\n handlers: [],\n errors: [],\n };\n }\n }\n\n // Determine execution mode for this action (with option override)\n const currentExecutionMode = options?.executionMode || \n this.actionExecutionModes.get(action) || \n this.executionMode;\n\n // Create pipeline execution context\n const context: PipelineContext<T[K], R> = {\n action: String(action),\n payload: payload as T[K],\n handlers: filteredHandlers,\n aborted: false,\n abortReason: undefined,\n currentIndex: 0,\n jumpToPriority: undefined,\n executionMode: currentExecutionMode,\n \n // Result collection fields\n results: [],\n terminated: false,\n terminationResult: undefined,\n };\n\n let executionError: Error | undefined;\n const handlerResults: Array<{\n id: string;\n executed: boolean;\n duration?: number;\n result?: R;\n error?: Error;\n metadata?: Record<string, any>;\n }> = [];\n\n const errors: Array<{\n handlerId: string;\n error: Error;\n timestamp: number;\n }> = [];\n\n // Add abort listener if signal provided (use effectiveSignal for auto-abort)\n const abortHandler = effectiveSignal ? () => {\n context.aborted = true;\n context.abortReason = 'Action dispatch aborted by signal';\n } : undefined;\n \n if (effectiveSignal && abortHandler) {\n effectiveSignal.addEventListener('abort', abortHandler);\n }\n \n try {\n await this.executePipeline(context, autoAbortController, options?.autoAbort);\n } catch (error) {\n executionError = error instanceof Error ? error : new Error(String(error));\n errors.push({\n handlerId: 'pipeline',\n error: executionError,\n timestamp: Date.now(),\n });\n } finally {\n // Clean up abort listener\n if (effectiveSignal && abortHandler) {\n effectiveSignal.removeEventListener('abort', abortHandler);\n }\n }\n\n const endTime = Date.now();\n const executionSuccess = !executionError && !context.aborted;\n \n // Track execution statistics\n this.updateExecutionStats(action, executionSuccess, endTime - startTime);\n\n // Process results based on options\n const processedResult = this.processResults(context, options?.result);\n\n // Build execution result\n const executionResult: ExecutionResult<R> = {\n success: !executionError && !context.aborted,\n aborted: context.aborted,\n abortReason: context.abortReason,\n terminated: context.terminated,\n result: processedResult,\n results: context.results,\n execution: {\n duration: endTime - startTime,\n handlersExecuted: context.currentIndex + (context.aborted ? 0 : 1),\n handlersSkipped: Math.max(0, filteredHandlers.length - (context.currentIndex + 1)),\n handlersFailed: errors.length,\n startTime,\n endTime,\n },\n handlers: handlerResults,\n errors,\n };\n\n /** Clean up one-time handlers after execution */\n this.cleanupOneTimeHandlers(action, context.handlers);\n\n return executionResult;\n }\n\n private filterHandlers<K extends keyof T>(\n handlers: HandlerRegistration<T[K], any>[],\n filterOptions?: import('./types.js').DispatchOptions['filter']\n ): HandlerRegistration<T[K], any>[] {\n if (!filterOptions) {\n return handlers;\n }\n\n return handlers.filter(registration => {\n const config = registration.config;\n\n // Check include filters\n if (filterOptions.tags && filterOptions.tags.length > 0) {\n const hasMatchingTag = filterOptions.tags.some(tag => config.tags.includes(tag));\n if (!hasMatchingTag) return false;\n }\n\n if (filterOptions.category && config.category !== filterOptions.category) {\n return false;\n }\n\n if (filterOptions.handlerIds && filterOptions.handlerIds.length > 0) {\n if (!filterOptions.handlerIds.includes(config.id)) {\n return false;\n }\n }\n\n if (filterOptions.environment && config.environment !== filterOptions.environment) {\n return false;\n }\n\n if (filterOptions.feature && config.feature !== filterOptions.feature) {\n return false;\n }\n\n // Check exclude filters\n if (filterOptions.excludeTags && filterOptions.excludeTags.length > 0) {\n const hasExcludedTag = filterOptions.excludeTags.some(tag => config.tags.includes(tag));\n if (hasExcludedTag) return false;\n }\n\n if (filterOptions.excludeCategory && config.category === filterOptions.excludeCategory) {\n return false;\n }\n\n if (filterOptions.excludeHandlerIds && filterOptions.excludeHandlerIds.length > 0) {\n if (filterOptions.excludeHandlerIds.includes(config.id)) {\n return false;\n }\n }\n\n // Custom filter\n if (filterOptions.custom && !filterOptions.custom(config)) {\n return false;\n }\n\n return true;\n });\n }\n\n private processResults<R>(\n context: PipelineContext<any, R>,\n resultOptions?: import('./types.js').DispatchOptions['result']\n ): R | undefined {\n if (!resultOptions || !resultOptions.collect) {\n return undefined;\n }\n\n const results = context.results;\n \n // Handle termination result\n if (context.terminated && context.terminationResult !== undefined) {\n return context.terminationResult;\n }\n\n // Apply maxResults limit\n const limitedResults = resultOptions.maxResults \n ? results.slice(0, resultOptions.maxResults)\n : results;\n\n if (limitedResults.length === 0) {\n return undefined;\n }\n\n // Process results based on strategy\n switch (resultOptions.strategy) {\n case 'first':\n return limitedResults[0];\n case 'last':\n return limitedResults[limitedResults.length - 1];\n case 'all':\n return limitedResults as unknown as R;\n case 'merge':\n if (resultOptions.merger) {\n return resultOptions.merger(limitedResults);\n }\n // Default merge: return last result\n return limitedResults[limitedResults.length - 1];\n case 'custom':\n if (resultOptions.merger) {\n return resultOptions.merger(limitedResults);\n }\n throw new Error('Custom result strategy requires a merger function');\n default:\n // Default: return all results\n return limitedResults as unknown as R;\n }\n }\n\n private async executePipeline<K extends keyof T>(\n context: PipelineContext<T[K], any>, \n autoAbortController?: AbortController,\n autoAbortOptions?: { allowHandlerAbort?: boolean }\n ): Promise<void> {\n const createController = (_registration: HandlerRegistration<T[K], any>, _index: number): PipelineController<T[K], any> => {\n return {\n next: () => {},\n abort: (reason?: string) => {\n context.aborted = true;\n context.abortReason = reason;\n \n // Auto-abort: Handler can trigger pipeline abort if enabled\n if (autoAbortController && autoAbortOptions?.allowHandlerAbort) {\n autoAbortController.abort(reason);\n }\n },\n modifyPayload: (modifier: (payload: T[K]) => T[K]) => {\n context.payload = modifier(context.payload);\n },\n getPayload: () => context.payload,\n jumpToPriority: (priority: number) => {\n context.jumpToPriority = priority;\n },\n return: (result: any) => {\n context.terminated = true;\n context.terminationResult = result;\n },\n setResult: (result: any) => {\n context.results.push(result);\n },\n getResults: () => {\n return [...context.results];\n },\n mergeResult: (merger: (previousResults: any[], currentResult: any) => any) => {\n const currentResult = context.results[context.results.length - 1];\n const previousResults = context.results.slice(0, -1);\n const mergedResult = merger(previousResults, currentResult);\n context.results[context.results.length - 1] = mergedResult;\n },\n };\n };\n\n switch (context.executionMode) {\n case 'sequential':\n await executeSequential<T[K], any>(context, createController);\n break;\n case 'parallel':\n await executeParallel<T[K], any>(context, createController);\n break;\n case 'race':\n await executeRace<T[K], any>(context, createController);\n break;\n default:\n throw new Error(`Unknown execution mode: ${context.executionMode}`);\n }\n\n this.cleanupOneTimeHandlers(context.action as K, context.handlers);\n }\n\n private cleanupOneTimeHandlers<K extends keyof T>(action: K, executedHandlers: HandlerRegistration<T[K], any>[]): void {\n const pipeline = this.pipelines.get(action);\n if (!pipeline) return;\n\n const oneTimeHandlers = executedHandlers.filter(reg => reg.config.once);\n if (oneTimeHandlers.length === 0) return;\n\n oneTimeHandlers.forEach(registration => {\n const index = pipeline.findIndex(reg => reg.id === registration.id);\n if (index !== -1) {\n pipeline.splice(index, 1);\n \n if (this.registryConfig?.debug && process.env.NODE_ENV === 'development') {\n console.log(`🎯 One-time handler removed: ${String(action)}`, {\n handlerId: registration.id,\n remainingHandlers: pipeline.length,\n registry: this.name\n });\n }\n }\n });\n }\n\n /**\n * Update execution statistics for an action\n * \n * @param action Action name\n * @param success Whether execution was successful\n * @param duration Execution duration in milliseconds\n */\n private updateExecutionStats<K extends keyof T>(action: K, success: boolean, duration: number): void {\n if (!this.executionStats.has(action)) {\n this.executionStats.set(action, {\n totalExecutions: 0,\n totalDuration: 0,\n successCount: 0,\n errorCount: 0,\n });\n }\n\n const stats = this.executionStats.get(action)!;\n stats.totalExecutions++;\n stats.totalDuration += duration;\n \n if (success) {\n stats.successCount++;\n } else {\n stats.errorCount++;\n }\n }\n\n getHandlerCount<K extends keyof T>(action: K): number {\n const pipeline = this.pipelines.get(action);\n return pipeline ? pipeline.length : 0;\n }\n\n hasHandlers<K extends keyof T>(action: K): boolean {\n return this.getHandlerCount(action) > 0;\n }\n\n getRegisteredActions(): (keyof T)[] {\n return Array.from(this.pipelines.keys());\n }\n\n clearAction<K extends keyof T>(action: K): void {\n this.pipelines.delete(action);\n }\n\n clearAll(): void {\n this.pipelines.clear();\n }\n\n getName(): string {\n return this.name;\n }\n\n /**\n * Get comprehensive registry information (similar to DeclarativeStoreRegistry pattern)\n * \n * @returns Registry information including actions, handlers, and execution modes\n */\n getRegistryInfo(): ActionRegistryInfo<T> {\n const totalHandlers = Array.from(this.pipelines.values()).reduce(\n (total, pipeline) => total + pipeline.length, \n 0\n );\n \n return {\n name: this.name,\n totalActions: this.pipelines.size,\n totalHandlers,\n registeredActions: Array.from(this.pipelines.keys()),\n actionExecutionModes: new Map(this.actionExecutionModes),\n defaultExecutionMode: this.executionMode,\n };\n }\n\n /**\n * Get detailed statistics for a specific action\n * \n * @param action Action name to get statistics for\n * @returns Detailed handler statistics\n */\n getActionStats<K extends keyof T>(action: K): ActionHandlerStats<T> | null {\n const pipeline = this.pipelines.get(action);\n if (!pipeline) {\n return null;\n }\n\n // Group handlers by priority\n const priorityMap = new Map<number, typeof pipeline>();\n pipeline.forEach(handler => {\n if (!priorityMap.has(handler.config.priority)) {\n priorityMap.set(handler.config.priority, []);\n }\n priorityMap.get(handler.config.priority)!.push(handler);\n });\n\n const handlersByPriority = Array.from(priorityMap.entries())\n .sort(([a], [b]) => b - a) // Sort by priority (highest first)\n .map(([priority, handlers]) => ({\n priority,\n handlers: handlers.map(h => ({\n id: h.config.id,\n tags: h.config.tags,\n category: h.config.category,\n description: h.config.description,\n version: h.config.version,\n }))\n }));\n\n // Get execution statistics if available\n const stats = this.executionStats.get(action);\n const executionStats = stats ? {\n totalExecutions: stats.totalExecutions,\n averageDuration: stats.totalExecutions > 0 ? stats.totalDuration / stats.totalExecutions : 0,\n successRate: stats.totalExecutions > 0 ? (stats.successCount / stats.totalExecutions) * 100 : 0,\n errorCount: stats.errorCount,\n } : undefined;\n\n return {\n action,\n handlerCount: pipeline.length,\n handlersByPriority,\n executionStats,\n };\n }\n\n /**\n * Get statistics for all registered actions\n * \n * @returns Array of statistics for all actions\n */\n getAllActionStats(): Array<ActionHandlerStats<T>> {\n return Array.from(this.pipelines.keys())\n .map(action => this.getActionStats(action))\n .filter((stats): stats is ActionHandlerStats<T> => stats !== null);\n }\n\n /**\n * Get handlers by tag across all actions\n * \n * @param tag Tag to filter handlers by\n * @returns Map of actions to handlers with the specified tag\n */\n getHandlersByTag(tag: string): Map<keyof T, HandlerRegistration<any, any>[]> {\n const result = new Map<keyof T, HandlerRegistration<any, any>[]>();\n \n for (const [action, pipeline] of this.pipelines.entries()) {\n const matchingHandlers = pipeline.filter(handler => \n handler.config.tags.includes(tag)\n );\n \n if (matchingHandlers.length > 0) {\n result.set(action, matchingHandlers);\n }\n }\n \n return result;\n }\n\n /**\n * Get handlers by category across all actions\n * \n * @param category Category to filter handlers by\n * @returns Map of actions to handlers with the specified category\n */\n getHandlersByCategory(category: string): Map<keyof T, HandlerRegistration<any, any>[]> {\n const result = new Map<keyof T, HandlerRegistration<any, any>[]>();\n \n for (const [action, pipeline] of this.pipelines.entries()) {\n const matchingHandlers = pipeline.filter(handler => \n handler.config.category === category\n );\n \n if (matchingHandlers.length > 0) {\n result.set(action, matchingHandlers);\n }\n }\n \n return result;\n }\n\n /**\n * Set execution mode for a specific action\n * \n * @param action Action name\n * @param mode Execution mode to set\n */\n setActionExecutionMode<K extends keyof T>(action: K, mode: ExecutionMode): void {\n this.actionExecutionModes.set(action, mode);\n \n if (this.registryConfig?.debug && process.env.NODE_ENV === 'development') {\n console.log(`🎯 Execution mode set for action '${String(action)}': ${mode}`);\n }\n }\n\n /**\n * Get execution mode for a specific action\n * \n * @param action Action name\n * @returns Execution mode for the action, or default if not set\n */\n getActionExecutionMode<K extends keyof T>(action: K): ExecutionMode {\n return this.actionExecutionModes.get(action) || this.executionMode;\n }\n\n /**\n * Remove execution mode override for a specific action\n * \n * @param action Action name\n */\n removeActionExecutionMode<K extends keyof T>(action: K): void {\n this.actionExecutionModes.delete(action);\n \n if (this.registryConfig?.debug && process.env.NODE_ENV === 'development') {\n console.log(`🎯 Execution mode reset for action '${String(action)}' to default: ${this.executionMode}`);\n }\n }\n\n /**\n * Clear execution statistics for all actions\n */\n clearExecutionStats(): void {\n this.executionStats.clear();\n \n if (this.registryConfig?.debug && process.env.NODE_ENV === 'development') {\n console.log(`🎯 Execution statistics cleared for registry: ${this.name}`);\n }\n }\n\n /**\n * Clear execution statistics for a specific action\n * \n * @param action Action name\n */\n clearActionExecutionStats<K extends keyof T>(action: K): void {\n this.executionStats.delete(action);\n \n if (this.registryConfig?.debug && process.env.NODE_ENV === 'development') {\n console.log(`🎯 Execution statistics cleared for action: ${String(action)}`);\n }\n }\n\n /**\n * Get registry configuration (for debugging and inspection)\n * \n * @returns Current registry configuration\n */\n getRegistryConfig(): ActionRegisterConfig['registry'] {\n return this.registryConfig;\n }\n\n /**\n * Check if registry has debug mode enabled\n * \n * @returns Whether debug mode is enabled\n */\n isDebugEnabled(): boolean {\n return Boolean(this.registryConfig?.debug && process.env.NODE_ENV === 'development');\n }\n}"],"x_google_ignoreList":[1,2,3,4],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcA,eAAsB,kBACpBA,SACAC,kBACe;CAEf,IAAI,IAAI;AAER,QAAO,IAAI,QAAQ,SAAS,QAAQ;AAElC,MAAI,QAAQ,WAAW,QAAQ,WAC7B;EAGF,MAAM,eAAe,QAAQ,SAAS;EACtC,QAAQ,eAAe;;AAGvB,MAAI,aAAa,OAAO,aAAa,CAAC,aAAa,OAAO,WAAW,EAAE;GACrE;AACA;EACD;;AAGD,MAAI,aAAa,OAAO,cAAc,CAAC,aAAa,OAAO,WAAW,QAAQ,QAAQ,EAAE;GACtF;AACA;EACD;EAED,MAAM,aAAa,iBAAiB,cAAc,EAAE;AAEpD,MAAI;AAEF,OAAI,QAAQ,QACV;GAGF,MAAM,SAAS,aAAa,QAAQ,QAAQ,SAAS,WAAW;;AAGhE,OAAI,aAAa,OAAO,YAAY,kBAAkB,SAAS;IAC7D,MAAM,gBAAgB,MAAM;;AAG5B,QAAI,kBAAkB,UAAa,CAAC,QAAQ,YAC1C,QAAQ,QAAQ,KAAK,cAAc;GAEtC,WAAU,WAAW,UAAa,CAAC,QAAQ;;AAE1C,OAAI,kBAAkB,SAEpB,OAAO,KAAK,iBAAe;AACzB,QAAI,gBAAgB,UAAa,CAAC,QAAQ,YACxC,QAAQ,QAAQ,KAAK,YAAY;GAEpC,EAAC,CAAC,MAAM,MAAM,CAEd,EAAC;QAEF,QAAQ,QAAQ,KAAK,OAAO;;AAKhC,OAAI,QAAQ,WACV;;AAIF,OAAI,QAAQ,mBAAmB,QAAW;IACxC,MAAM,YAAY,QAAQ,SAAS,UACjC,aAAW,QAAQ,OAAO,aAAa,QAAQ,eAChD;AAED,QAAI,cAAc,IAAI;KAEpB,IAAI;KACJ,QAAQ,iBAAiB;AACzB;IACD,OAAM;KAEL,QAAQ,iBAAiB;KACzB;IACD;GACF,OAEC;EAGH,SAAQC,OAAY;AACnB,OAAI,aAAa,OAAO,SACtB,OAAM;GAGR;EACD;CACF;AACF;;;;AAKD,eAAsB,gBACpBF,SACAC,kBACe;;CAGf,MAAM,mBAAmB,QAAQ,SAAS,OAAO,CAAC,cAAc,WAAW;;AAEzE,MAAI,aAAa,OAAO,aAAa,CAAC,aAAa,OAAO,WAAW,CACnE,QAAO;;AAIT,MAAI,aAAa,OAAO,cAAc,CAAC,aAAa,OAAO,WAAW,QAAQ,QAAQ,CACpF,QAAO;AAGT,SAAO;CACR,EAAC;;CAGF,MAAM,kBAAkB,iBAAiB,IAAI,OAAO,cAAc,WAAW;EAC3E,MAAM,aAAa,iBAAiB,cAAc,OAAO;AAEzD,MAAI;GACF,MAAM,SAAS,aAAa,QAAQ,QAAQ,SAAS,WAAW;GAEhE,IAAIE;AACJ,OAAI,kBAAkB,SACpB,gBAAgB,MAAM;QAEtB,gBAAgB;;AAIlB,OAAI,kBAAkB,UAAa,CAAC,QAAQ,YAC1C,QAAQ,QAAQ,KAAK,cAAc;AAGrC,UAAO;IACL,SAAS;IACT,WAAW,aAAa;IACxB,QAAQ;IACR,YAAY,QAAQ;GACrB;EAEF,SAAQD,OAAY;AACnB,OAAI,aAAa,OAAO,SACtB,OAAM;AAGR,UAAO;IAAE,SAAS;IAAO,WAAW,aAAa;IAAI;GAAO;EAC7D;CACF,EAAC;;CAGF,MAAM,UAAU,MAAM,QAAQ,WAAW,gBAAgB;;CAGzD,MAAM,WAAW,QAAQ,OAAO,CAAC,QAAQ,UAAU;AACjD,MAAI,OAAO,WAAW,YAAY;GAChC,MAAM,eAAe,iBAAiB;AACtC,UAAO,aAAa,OAAO;EAC5B;AACD,SAAO;CACR,EAAC;AAEF,KAAI,SAAS,SAAS,GAAG;EACvB,MAAM,eAAe,SAAS;AAC9B,QAAM,aAAa;CACpB;;CAGD,MAAM,oBAAoB,QAAQ,OAAO,YACvC,OAAO,WAAW,eAAe,OAAO,MAAM,WAC/C;AAED,KAAI,kBAAkB,SAAS,GAAG;EAChC,QAAQ,aAAa;EAGrB,MAAM,kBAAkB,kBAAkB;EAC1C,QAAQ,oBAAoB,gBAAgB,MAAM;CACnD;AACF;;;;AAKD,eAAsB,YACpBF,SACAC,kBACe;;CAGf,MAAM,mBAAmB,QAAQ,SAAS,OAAO,CAAC,cAAc,WAAW;;AAEzE,MAAI,aAAa,OAAO,aAAa,CAAC,aAAa,OAAO,WAAW,CACnE,QAAO;;AAIT,MAAI,aAAa,OAAO,cAAc,CAAC,aAAa,OAAO,WAAW,QAAQ,QAAQ,CACpF,QAAO;AAGT,SAAO;CACR,EAAC;AAEF,KAAI,iBAAiB,WAAW,EAC9B;;CAIF,MAAM,kBAAkB,iBAAiB,IAAI,OAAO,cAAc,WAAW;EAC3E,MAAM,aAAa,iBAAiB,cAAc,OAAO;AAEzD,MAAI;GACF,MAAM,SAAS,aAAa,QAAQ,QAAQ,SAAS,WAAW;GAEhE,IAAIE;AACJ,OAAI,kBAAkB,SACpB,gBAAgB,MAAM;QAEtB,gBAAgB;AAGlB,UAAO;IACL,SAAS;IACT,WAAW,aAAa;IACxB;IACA,QAAQ;IACR,YAAY,QAAQ;GACrB;EAEF,SAAQD,OAAY;AACnB,UAAO;IAAE,SAAS;IAAO,WAAW,aAAa;IAAI;IAAO;GAAc;EAC3E;CACF,EAAC;;CAGF,MAAM,SAAS,MAAM,QAAQ,KAAK,gBAAgB;;AAGlD,KAAI,CAAC,OAAO,WAAW,OAAO,cAAc,OAAO,SACjD,OAAM,OAAO;;AAIf,KAAI,OAAO,WAAW,OAAO,WAAW,QACtC,QAAQ,QAAQ,KAAK,OAAO,OAAO;;AAIrC,KAAI,OAAO,WAAW,OAAO,YAAY;EACvC,QAAQ,aAAa;EACrB,QAAQ,oBAAoB,OAAO;CACpC;AACF;;;;;CCjRD,SAASE,UAAQ,GAAG;AAClB;AAEA,SAAO,OAAO,UAAUA,YAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUC,KAAG;AACjH,UAAO,OAAOA;EACf,IAAG,SAAUA,KAAG;AACf,UAAOA,OAAK,cAAc,OAAO,UAAUA,IAAE,gBAAgB,UAAUA,QAAM,OAAO,YAAY,WAAW,OAAOA;EACnH,GAAE,OAAO,QAAQ,aAAa,MAAM,OAAO,QAAQ,aAAa,OAAO,SAASD,UAAQ,EAAE;CAC5F;CACD,OAAO,UAAUA,WAAS,OAAO,QAAQ,aAAa,MAAM,OAAO,QAAQ,aAAa,OAAO;;;;;;CCT/F,IAAIE,6BAAiC;CACrC,SAASC,cAAY,GAAG,GAAG;AACzB,MAAI,YAAYD,UAAQ,EAAE,IAAI,CAAC,EAAG,QAAO;EACzC,IAAI,IAAI,EAAE,OAAO;AACjB,MAAI,KAAK,MAAM,GAAG;GAChB,IAAI,IAAI,EAAE,KAAK,GAAG,KAAK,UAAU;AACjC,OAAI,YAAYA,UAAQ,EAAE,CAAE,QAAO;AACnC,SAAM,IAAI,UAAU;EACrB;AACD,UAAQ,aAAa,IAAI,SAAS,QAAQ,EAAE;CAC7C;CACD,OAAO,UAAUC,eAAa,OAAO,QAAQ,aAAa,MAAM,OAAO,QAAQ,aAAa,OAAO;;;;;;CCXnG,IAAI,2BAAiC;CACrC,IAAI;CACJ,SAASC,gBAAc,GAAG;EACxB,IAAI,IAAI,YAAY,GAAG,SAAS;AAChC,SAAO,YAAY,QAAQ,EAAE,GAAG,IAAI,IAAI;CACzC;CACD,OAAO,UAAUA,iBAAe,OAAO,QAAQ,aAAa,MAAM,OAAO,QAAQ,aAAa,OAAO;;;;;;CCNrG,IAAI;CACJ,SAASC,kBAAgB,GAAG,GAAG,GAAG;AAChC,UAAQ,IAAI,cAAc,EAAE,KAAK,IAAI,OAAO,eAAe,GAAG,GAAG;GAC/D,OAAO;GACP,YAAY,CAAC;GACb,cAAc,CAAC;GACf,UAAU,CAAC;EACZ,EAAC,GAAG,EAAE,KAAK,GAAG;CAChB;CACD,OAAO,UAAUA,mBAAiB,OAAO,QAAQ,aAAa,MAAM,OAAO,QAAQ,aAAa,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC+CvG,IAAa,cAAb,MAAyB;CAGvB,cAAc;6CAFN,0BAAS,IAAI;CAIpB;;;;;;;CAQD,MAAM,SAASC,WAAmBC,YAAsC;;EAGtE,IAAI,QAAQ,KAAK,OAAO,IAAI,UAAU;AACtC,MAAI,CAAC,OAAO;;GAEV,QAAQ;IACN,cAAc;IACd,aAAa;GACd;GACD,KAAK,OAAO,IAAI,WAAW,MAAM;EAClC;;;AAID,MAAI,MAAM,eACR,aAAa,MAAM,cAAc;;;AAKnC,SAAO,IAAI,QAAQ,CAAC,YAAY;GAC9B,MAAO,gBAAgB,WAAW,MAAM;;IAEtC,MAAO,gBAAgB;;IAEvB,MAAO,eAAe,KAAK,KAAK;IAChC,QAAQ,KAAK;GACd,GAAE,WAAW;EAEf;CACF;;;;;;;CAQD,SAASD,WAAmBE,YAA6B;;EAGvD,IAAI,QAAQ,KAAK,OAAO,IAAI,UAAU;AACtC,MAAI,CAAC,OAAO;;GAEV,QAAQ;IACN,cAAc;IACd,aAAa;GACd;GACD,KAAK,OAAO,IAAI,WAAW,MAAM;EAClC;EAED,MAAM,MAAM,KAAK,KAAK;EACtB,MAAM,yBAAyB,MAAM,MAAM;;;AAI3C,MAAI,0BAA0B,YAAY;;GAExC,MAAM,eAAe;GACrB,MAAM,cAAc;AAGpB,UAAO;EACR;;;AAID,MAAI,MAAM,YACR,QAAO;;;EAKT,MAAM,cAAc;EACpB,MAAM,gBAAgB,aAAa;;EAGnC,MAAM,gBAAgB,WAAW,MAAM;;GAErC,MAAO,cAAc;GACrB,MAAO,gBAAgB;EACxB,GAAE,cAAc;AAGjB,SAAO;CACR;;;;;CAMD,YAAYF,WAAyB;EAEnC,MAAM,QAAQ,KAAK,OAAO,IAAI,UAAU;AACxC,MAAI,OAAO;;AAET,OAAI,MAAM,eACR,aAAa,MAAM,cAAc;;AAGnC,OAAI,MAAM,eACR,aAAa,MAAM,cAAc;;GAGnC,KAAK,OAAO,OAAO,UAAU;EAE9B;CACF;;;;CAKD,WAAiB;;;AAIf,OAAK,MAAM,GAAG,MAAM,IAAI,KAAK,QAAQ;;AAEnC,OAAI,MAAM,eACR,aAAa,MAAM,cAAc;;AAGnC,OAAI,MAAM,eACR,aAAa,MAAM,cAAc;EAEpC;;EAGD,KAAK,OAAO,OAAO;CACpB;;;;;CAMD,cAAcA,WAA2C;AACvD,SAAO,KAAK,OAAO,IAAI,UAAU;CAClC;;;;CAKD,oBAA6C;AAC3C,SAAO,IAAI,IAAI,KAAK;CACrB;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxKD,IAAa,iBAAb,MAA2E;CAezE,YAAYG,SAA+B,CAAE,GAAE;2CAdvC,6BAAY,IAAI;2CAChB,kBAAiB;2CACR;2CACT,iBAA+B;2CAC/B,wCAAuB,IAAI;2CACnB;2CACC;2CACT,kCAAiB,IAAI;EAQ3B,KAAK,OAAO,OAAO,QAAQ;EAC3B,KAAK,iBAAiB,OAAO;EAC7B,KAAK,cAAc,IAAI;AAEvB,MAAI,KAAK,gBAAgB,sBACvB,KAAK,gBAAgB,KAAK,eAAe;AAG3C,MAAI,KAAK,gBAAgB,SAAS,QAAQ,IAAI,aAAa,eACzD,QAAQ,IAAI,CAAC,2BAA2B,EAAE,KAAK,MAAM,EAAE;GACrD,sBAAsB,KAAK;GAC3B,aAAa,KAAK,eAAe;GACjC,aAAa,KAAK,eAAe,eAAe;EACjD,EAAC;CAEL;CAED,SACEC,QACAC,SACAC,SAAwB,CAAE,GACN;EAIpB,MAAM,YAAY,OAAO,MAAM,CAAC,QAAQ,EAAE,EAAE,KAAK,eAAe,CAAC,EAAE,KAAK,QAAQ,CAAC,SAAS,GAAG,CAAC,OAAO,GAAG,EAAE,EAAE;EAG5G,MAAMC,eAA6C;GACjD;GACA,QAAQ;IAEN,UAAU,OAAO,YAAY;IAC7B,IAAI;IACJ,UAAU,OAAO,YAAY;IAC7B,MAAM,OAAO,QAAQ;IACrB,WAAW,OAAO,cAAc,MAAM;IACtC,UAAU,OAAO,YAAY;IAC7B,UAAU,OAAO,YAAY;IAC7B,YAAY,OAAO,cAAc;IACjC,YAAY,OAAO,cAAc;IAGjC,MAAM,OAAO,QAAQ,CAAE;IACvB,UAAU,OAAO,YAAY;IAC7B,aAAa,OAAO,eAAe;IACnC,SAAS,OAAO,WAAW;IAC3B,YAAY,OAAO,cAAc;IACjC,SAAS,OAAO,WAAW;IAC3B,SAAS,OAAO,WAAW;IAC3B,cAAc,OAAO,gBAAgB,CAAE;IACvC,WAAW,OAAO,aAAa,CAAE;IACjC,aAAa,OAAO,eAAe;IACnC,SAAS,OAAO,WAAW;IAC3B,SAAS,OAAO,WAAW;KACzB,eAAe;KACf,eAAe;KACf,eAAe,CAAE;IAClB;IACD,UAAU,OAAO,YAAY,CAAE;GAChC;GACD,IAAI;EACL;AAGD,MAAI,CAAC,KAAK,UAAU,IAAI,OAAO,EAC7B,KAAK,UAAU,IAAI,QAAQ,CAAE,EAAC;EAGhC,MAAM,WAAW,KAAK,UAAU,IAAI,OAAO;EAG3C,MAAM,gBAAgB,SAAS,UAAU,SAAO,IAAI,OAAO,UAAU;AACrE,MAAI,kBAAkB,GAEpB,QAAO,MAAM,CAAE;AAIjB,MAAI,KAAK,gBAAgB,eAAe,SAAS,UAAU,KAAK,eAAe,YAC7E,OAAM,IAAI,MACR,CAAC,4BAA4B,EAAE,KAAK,eAAe,YAAY,sBAAsB,EAAE,OAAO,OAAO,CAAC,eAAe,EAAE,KAAK,KAAK,CAAC,CAAC;EAKvI,SAAS,KAAK,aAAa;EAG3B,SAAS,KAAK,CAAC,GAAG,MAAM,EAAE,OAAO,WAAW,EAAE,OAAO,SAAS;AAE9D,MAAI,KAAK,gBAAgB,SAAS,QAAQ,IAAI,aAAa,eACzD,QAAQ,IAAI,CAAC,uBAAuB,EAAE,OAAO,OAAO,EAAE,EAAE;GACtD;GACA,UAAU,OAAO;GACjB,MAAM,OAAO;GACb,UAAU,OAAO;GACjB,eAAe,SAAS;GACxB,UAAU,KAAK;EAChB,EAAC;AAIJ,SAAO,MAAM;GACX,MAAM,QAAQ,SAAS,UAAU,CAAC,QAAQ,IAAI,OAAO,aAAa,QAAQ,aAAa;AACvF,OAAI,UAAU,IAAI;IAChB,SAAS,OAAO,OAAO,EAAE;AAEzB,QAAI,KAAK,gBAAgB,SAAS,QAAQ,IAAI,aAAa,eACzD,QAAQ,IAAI,CAAC,yBAAyB,EAAE,OAAO,OAAO,EAAE,EAAE;KACxD;KACA,mBAAmB,SAAS;KAC5B,UAAU,KAAK;IAChB,EAAC;GAEL;EACF;CACF;CAED,MAAM,SACJH,QACAI,SACAC,SACe;EAEf,IAAIC;EACJ,IAAI,kBAAkB,SAAS;AAE/B,MAAI,SAAS,WAAW,SAAS;GAC/B,sBAAsB,IAAI;GAC1B,kBAAkB,oBAAoB;AAGtC,OAAI,QAAQ,UAAU,qBACpB,QAAQ,UAAU,oBAAoB,oBAAoB;AAI5D,OAAI,SAAS,QAAQ;IACnB,MAAM,iBAAiB,QAAQ;AAC/B,QAAI,eAAe,SACjB,oBAAoB,OAAO;SACtB;KACL,MAAMC,iBAAe,MAAM,oBAAqB,OAAO;KACvD,eAAe,iBAAiB,SAASA,gBAAc,EAAE,MAAM,KAAM,EAAC;IACvE;GACF;EACF;AAGD,MAAI,iBAAiB,QACnB;EAGF,MAAM,WAAW,KAAK,UAAU,IAAI,OAAO;AAC3C,MAAI,CAAC,YAAY,SAAS,WAAW,EACnC;EAIF,MAAM,mBAAmB,KAAK,eAAe,CAAC,GAAG,QAAS,GAAE,SAAS,OAAO;EAG5E,MAAM,YAAY,OAAO,OAAO;EAGhC,IAAIC;EACJ,IAAIC;AAGJ,MAAI,SAAS,aAAa,QACxB,aAAa,QAAQ;WACZ,iBAAiB,SAAS,GAEnC;QAAK,MAAM,WAAW,iBACpB,KAAI,QAAQ,OAAO,aAAa,QAAW;IACzC,aAAa,QAAQ,OAAO;AAC5B;GACD;EACF;AAGH,MAAI,SAAS,aAAa,QACxB,aAAa,QAAQ;WACZ,iBAAiB,SAAS,GAEnC;QAAK,MAAM,WAAW,iBACpB,KAAI,QAAQ,OAAO,aAAa,QAAW;IACzC,aAAa,QAAQ,OAAO;AAC5B;GACD;EACF;AAIH,MAAI,eAAe,QAAW;GAC5B,MAAM,gBAAgB,MAAM,KAAK,YAAY,SAAS,WAAW,WAAW;AAC5E,OAAI,CAAC,cACH;EAEH;AAGD,MAAI,eAAe,QAAW;GAC5B,MAAM,gBAAgB,KAAK,YAAY,SAAS,WAAW,WAAW;AACtE,OAAI,CAAC,cACH;EAEH;EAGD,MAAM,uBAAuB,SAAS,iBACV,KAAK,qBAAqB,IAAI,OAAO,IACrC,KAAK;EAGjC,MAAMC,UAAsC;GAC1C,QAAQ,OAAO,OAAO;GACb;GACT,UAAU;GACV,SAAS;GACT,aAAa;GACb,cAAc;GACd,gBAAgB;GAChB,eAAe;GAGf,SAAS,CAAE;GACX,YAAY;GACZ,mBAAmB;EACpB;EAED,MAAM,YAAY,KAAK,KAAK;EAC5B,IAAI,mBAAmB;EAGvB,MAAM,eAAe,kBAAkB,MAAM;GAC3C,QAAQ,UAAU;GAClB,QAAQ,cAAc;EACvB,IAAG;AAEJ,MAAI,mBAAmB,cACrB,gBAAgB,iBAAiB,SAAS,aAAa;AAGzD,MAAI;GACF,MAAM,KAAK,gBAAgB,SAAS,qBAAqB,SAAS,UAAU;EAC7E,SAAQ,OAAO;GACd,mBAAmB;AACnB,SAAM;EACP,UAAS;AAER,OAAI,mBAAmB,cACrB,gBAAgB,oBAAoB,SAAS,aAAa;GAG5D,MAAM,WAAW,KAAK,KAAK,GAAG;GAC9B,KAAK,qBAAqB,QAAQ,kBAAkB,SAAS;EAC9D;CACF;CAED,MAAM,mBACJV,QACAI,SACAC,SAC6B;EAC7B,MAAM,YAAY,KAAK,KAAK;EAG5B,IAAIC;EACJ,IAAI,kBAAkB,SAAS;AAE/B,MAAI,SAAS,WAAW,SAAS;GAC/B,sBAAsB,IAAI;GAC1B,kBAAkB,oBAAoB;AAGtC,OAAI,QAAQ,UAAU,qBACpB,QAAQ,UAAU,oBAAoB,oBAAoB;AAI5D,OAAI,SAAS,QAAQ;IACnB,MAAM,iBAAiB,QAAQ;AAC/B,QAAI,eAAe,SACjB,oBAAoB,OAAO;SACtB;KACL,MAAMC,iBAAe,MAAM,oBAAqB,OAAO;KACvD,eAAe,iBAAiB,SAASA,gBAAc,EAAE,MAAM,KAAM,EAAC;IACvE;GACF;EACF;AAGD,MAAI,iBAAiB,QACnB,QAAO;GACL,SAAS;GACT,SAAS;GACT,aAAa;GACb,YAAY;GACZ,QAAQ;GACR,SAAS,CAAE;GACX,WAAW;IACT,UAAU;IACV,kBAAkB;IAClB,iBAAiB;IACjB,gBAAgB;IAChB;IACA,SAAS;GACV;GACD,UAAU,CAAE;GACZ,QAAQ,CAAE;EACX;EAGH,MAAM,WAAW,KAAK,UAAU,IAAI,OAAO;AAE3C,MAAI,CAAC,YAAY,SAAS,WAAW,EACnC,QAAO;GACL,SAAS;GACT,SAAS;GACT,YAAY;GACZ,QAAQ;GACR,SAAS,CAAE;GACX,WAAW;IACT,UAAU;IACV,kBAAkB;IAClB,iBAAiB;IACjB,gBAAgB;IAChB;IACA,SAAS;GACV;GACD,UAAU,CAAE;GACZ,QAAQ,CAAE;EACX;EAIH,MAAM,mBAAmB,KAAK,eAAe,CAAC,GAAG,QAAS,GAAE,SAAS,OAAO;EAG5E,MAAM,YAAY,OAAO,OAAO;EAGhC,IAAIC;EACJ,IAAIC;AAGJ,MAAI,SAAS,aAAa,QACxB,aAAa,QAAQ;WACZ,iBAAiB,SAAS,GAEnC;QAAK,MAAM,WAAW,iBACpB,KAAI,QAAQ,OAAO,aAAa,QAAW;IACzC,aAAa,QAAQ,OAAO;AAC5B;GACD;EACF;AAGH,MAAI,SAAS,aAAa,QACxB,aAAa,QAAQ;WACZ,iBAAiB,SAAS,GAEnC;QAAK,MAAM,WAAW,iBACpB,KAAI,QAAQ,OAAO,aAAa,QAAW;IACzC,aAAa,QAAQ,OAAO;AAC5B;GACD;EACF;AAIH,MAAI,eAAe,QAAW;GAC5B,MAAM,gBAAgB,MAAM,KAAK,YAAY,SAAS,WAAW,WAAW;AAC5E,OAAI,CAAC,cACH,QAAO;IACL,SAAS;IACT,SAAS;IACT,aAAa;IACb,YAAY;IACZ,QAAQ;IACR,SAAS,CAAE;IACX,WAAW;KACT,UAAU,KAAK,KAAK,GAAG;KACvB,kBAAkB;KAClB,iBAAiB,SAAS;KAC1B,gBAAgB;KAChB;KACA,SAAS,KAAK,KAAK;IACpB;IACD,UAAU,CAAE;IACZ,QAAQ,CAAE;GACX;EAEJ;AAGD,MAAI,eAAe,QAAW;GAC5B,MAAM,gBAAgB,KAAK,YAAY,SAAS,WAAW,WAAW;AACtE,OAAI,CAAC,cACH,QAAO;IACL,SAAS;IACT,SAAS;IACT,aAAa;IACb,YAAY;IACZ,QAAQ;IACR,SAAS,CAAE;IACX,WAAW;KACT,UAAU,KAAK,KAAK,GAAG;KACvB,kBAAkB;KAClB,iBAAiB,SAAS;KAC1B,gBAAgB;KAChB;KACA,SAAS,KAAK,KAAK;IACpB;IACD,UAAU,CAAE;IACZ,QAAQ,CAAE;GACX;EAEJ;EAGD,MAAM,uBAAuB,SAAS,iBACV,KAAK,qBAAqB,IAAI,OAAO,IACrC,KAAK;EAGjC,MAAME,UAAoC;GACxC,QAAQ,OAAO,OAAO;GACb;GACT,UAAU;GACV,SAAS;GACT,aAAa;GACb,cAAc;GACd,gBAAgB;GAChB,eAAe;GAGf,SAAS,CAAE;GACX,YAAY;GACZ,mBAAmB;EACpB;EAED,IAAIC;EACJ,MAAMC,iBAOD,CAAE;EAEP,MAAMC,SAID,CAAE;EAGP,MAAM,eAAe,kBAAkB,MAAM;GAC3C,QAAQ,UAAU;GAClB,QAAQ,cAAc;EACvB,IAAG;AAEJ,MAAI,mBAAmB,cACrB,gBAAgB,iBAAiB,SAAS,aAAa;AAGzD,MAAI;GACF,MAAM,KAAK,gBAAgB,SAAS,qBAAqB,SAAS,UAAU;EAC7E,SAAQ,OAAO;GACd,iBAAiB,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,MAAM;GACzE,OAAO,KAAK;IACV,WAAW;IACX,OAAO;IACP,WAAW,KAAK,KAAK;GACtB,EAAC;EACH,UAAS;AAER,OAAI,mBAAmB,cACrB,gBAAgB,oBAAoB,SAAS,aAAa;EAE7D;EAED,MAAM,UAAU,KAAK,KAAK;EAC1B,MAAM,mBAAmB,CAAC,kBAAkB,CAAC,QAAQ;EAGrD,KAAK,qBAAqB,QAAQ,kBAAkB,UAAU,UAAU;EAGxE,MAAM,kBAAkB,KAAK,eAAe,SAAS,SAAS,OAAO;EAGrE,MAAMC,kBAAsC;GAC1C,SAAS,CAAC,kBAAkB,CAAC,QAAQ;GACrC,SAAS,QAAQ;GACjB,aAAa,QAAQ;GACrB,YAAY,QAAQ;GACpB,QAAQ;GACR,SAAS,QAAQ;GACjB,WAAW;IACT,UAAU,UAAU;IACpB,kBAAkB,QAAQ,gBAAgB,QAAQ,UAAU,IAAI;IAChE,iBAAiB,KAAK,IAAI,GAAG,iBAAiB,UAAU,QAAQ,eAAe,GAAG;IAClF,gBAAgB,OAAO;IACvB;IACA;GACD;GACD,UAAU;GACV;EACD;;EAGD,KAAK,uBAAuB,QAAQ,QAAQ,SAAS;AAErD,SAAO;CACR;CAED,AAAQ,eACNC,UACAC,eACkC;AAClC,MAAI,CAAC,cACH,QAAO;AAGT,SAAO,SAAS,OAAO,kBAAgB;GACrC,MAAM,SAAS,aAAa;AAG5B,OAAI,cAAc,QAAQ,cAAc,KAAK,SAAS,GAAG;IACvD,MAAM,iBAAiB,cAAc,KAAK,KAAK,SAAO,OAAO,KAAK,SAAS,IAAI,CAAC;AAChF,QAAI,CAAC,eAAgB,QAAO;GAC7B;AAED,OAAI,cAAc,YAAY,OAAO,aAAa,cAAc,SAC9D,QAAO;AAGT,OAAI,cAAc,cAAc,cAAc,WAAW,SAAS,GAChE;QAAI,CAAC,cAAc,WAAW,SAAS,OAAO,GAAG,CAC/C,QAAO;GACR;AAGH,OAAI,cAAc,eAAe,OAAO,gBAAgB,cAAc,YACpE,QAAO;AAGT,OAAI,cAAc,WAAW,OAAO,YAAY,cAAc,QAC5D,QAAO;AAIT,OAAI,cAAc,eAAe,cAAc,YAAY,SAAS,GAAG;IACrE,MAAM,iBAAiB,cAAc,YAAY,KAAK,SAAO,OAAO,KAAK,SAAS,IAAI,CAAC;AACvF,QAAI,eAAgB,QAAO;GAC5B;AAED,OAAI,cAAc,mBAAmB,OAAO,aAAa,cAAc,gBACrE,QAAO;AAGT,OAAI,cAAc,qBAAqB,cAAc,kBAAkB,SAAS,GAC9E;QAAI,cAAc,kBAAkB,SAAS,OAAO,GAAG,CACrD,QAAO;GACR;AAIH,OAAI,cAAc,UAAU,CAAC,cAAc,OAAO,OAAO,CACvD,QAAO;AAGT,UAAO;EACR,EAAC;CACH;CAED,AAAQ,eACNC,SACAC,eACe;AACf,MAAI,CAAC,iBAAiB,CAAC,cAAc,QACnC,QAAO;EAGT,MAAM,UAAU,QAAQ;AAGxB,MAAI,QAAQ,cAAc,QAAQ,sBAAsB,OACtD,QAAO,QAAQ;EAIjB,MAAM,iBAAiB,cAAc,aACjC,QAAQ,MAAM,GAAG,cAAc,WAAW,GAC1C;AAEJ,MAAI,eAAe,WAAW,EAC5B,QAAO;AAIT,UAAQ,cAAc,UAAtB;GACE,KAAK,QACH,QAAO,eAAe;GACxB,KAAK,OACH,QAAO,eAAe,eAAe,SAAS;GAChD,KAAK,MACH,QAAO;GACT,KAAK;AACH,QAAI,cAAc,OAChB,QAAO,cAAc,OAAO,eAAe;AAG7C,WAAO,eAAe,eAAe,SAAS;GAChD,KAAK;AACH,QAAI,cAAc,OAChB,QAAO,cAAc,OAAO,eAAe;AAE7C,UAAM,IAAI,MAAM;GAClB,QAEE,QAAO;EACV;CACF;CAED,MAAc,gBACZT,SACAU,qBACAC,kBACe;EACf,MAAM,mBAAmB,CAACC,eAA+CC,WAAkD;AACzH,UAAO;IACL,MAAM,MAAM,CAAE;IACd,OAAO,CAACC,WAAoB;KAC1B,QAAQ,UAAU;KAClB,QAAQ,cAAc;AAGtB,SAAI,uBAAuB,kBAAkB,mBAC3C,oBAAoB,MAAM,OAAO;IAEpC;IACD,eAAe,CAACC,aAAsC;KACpD,QAAQ,UAAU,SAAS,QAAQ,QAAQ;IAC5C;IACD,YAAY,MAAM,QAAQ;IAC1B,gBAAgB,CAACC,aAAqB;KACpC,QAAQ,iBAAiB;IAC1B;IACD,QAAQ,CAACC,WAAgB;KACvB,QAAQ,aAAa;KACrB,QAAQ,oBAAoB;IAC7B;IACD,WAAW,CAACA,WAAgB;KAC1B,QAAQ,QAAQ,KAAK,OAAO;IAC7B;IACD,YAAY,MAAM;AAChB,YAAO,CAAC,GAAG,QAAQ,OAAQ;IAC5B;IACD,aAAa,CAACC,WAAgE;KAC5E,MAAM,gBAAgB,QAAQ,QAAQ,QAAQ,QAAQ,SAAS;KAC/D,MAAM,kBAAkB,QAAQ,QAAQ,MAAM,GAAG,GAAG;KACpD,MAAM,eAAe,OAAO,iBAAiB,cAAc;KAC3D,QAAQ,QAAQ,QAAQ,QAAQ,SAAS,KAAK;IAC/C;GACF;EACF;AAED,UAAQ,QAAQ,eAAhB;GACE,KAAK;IACH,MAAM,kBAA6B,SAAS,iBAAiB;AAC7D;GACF,KAAK;IACH,MAAM,gBAA2B,SAAS,iBAAiB;AAC3D;GACF,KAAK;IACH,MAAM,YAAuB,SAAS,iBAAiB;AACvD;GACF,QACE,OAAM,IAAI,MAAM,CAAC,wBAAwB,EAAE,QAAQ,eAAe;EACrE;EAED,KAAK,uBAAuB,QAAQ,QAAa,QAAQ,SAAS;CACnE;CAED,AAAQ,uBAA0C5B,QAAW6B,kBAA0D;EACrH,MAAM,WAAW,KAAK,UAAU,IAAI,OAAO;AAC3C,MAAI,CAAC,SAAU;EAEf,MAAM,kBAAkB,iBAAiB,OAAO,SAAO,IAAI,OAAO,KAAK;AACvE,MAAI,gBAAgB,WAAW,EAAG;EAElC,gBAAgB,QAAQ,kBAAgB;GACtC,MAAM,QAAQ,SAAS,UAAU,SAAO,IAAI,OAAO,aAAa,GAAG;AACnE,OAAI,UAAU,IAAI;IAChB,SAAS,OAAO,OAAO,EAAE;AAEzB,QAAI,KAAK,gBAAgB,SAAS,QAAQ,IAAI,aAAa,eACzD,QAAQ,IAAI,CAAC,6BAA6B,EAAE,OAAO,OAAO,EAAE,EAAE;KAC5D,WAAW,aAAa;KACxB,mBAAmB,SAAS;KAC5B,UAAU,KAAK;IAChB,EAAC;GAEL;EACF,EAAC;CACH;;;;;;;;CASD,AAAQ,qBAAwC7B,QAAW8B,SAAkBC,UAAwB;AACnG,MAAI,CAAC,KAAK,eAAe,IAAI,OAAO,EAClC,KAAK,eAAe,IAAI,QAAQ;GAC9B,iBAAiB;GACjB,eAAe;GACf,cAAc;GACd,YAAY;EACb,EAAC;EAGJ,MAAM,QAAQ,KAAK,eAAe,IAAI,OAAO;EAC7C,MAAM;EACN,MAAM,iBAAiB;AAEvB,MAAI,SACF,MAAM;OAEN,MAAM;CAET;CAED,gBAAmC/B,QAAmB;EACpD,MAAM,WAAW,KAAK,UAAU,IAAI,OAAO;AAC3C,SAAO,WAAW,SAAS,SAAS;CACrC;CAED,YAA+BA,QAAoB;AACjD,SAAO,KAAK,gBAAgB,OAAO,GAAG;CACvC;CAED,uBAAoC;AAClC,SAAO,MAAM,KAAK,KAAK,UAAU,MAAM,CAAC;CACzC;CAED,YAA+BA,QAAiB;EAC9C,KAAK,UAAU,OAAO,OAAO;CAC9B;CAED,WAAiB;EACf,KAAK,UAAU,OAAO;CACvB;CAED,UAAkB;AAChB,SAAO,KAAK;CACb;;;;;;CAOD,kBAAyC;EACvC,MAAM,gBAAgB,MAAM,KAAK,KAAK,UAAU,QAAQ,CAAC,CAAC,OACxD,CAAC,OAAO,aAAa,QAAQ,SAAS,QACtC,EACD;AAED,SAAO;GACL,MAAM,KAAK;GACX,cAAc,KAAK,UAAU;GAC7B;GACA,mBAAmB,MAAM,KAAK,KAAK,UAAU,MAAM,CAAC;GACpD,sBAAsB,IAAI,IAAI,KAAK;GACnC,sBAAsB,KAAK;EAC5B;CACF;;;;;;;CAQD,eAAkCA,QAAyC;EACzE,MAAM,WAAW,KAAK,UAAU,IAAI,OAAO;AAC3C,MAAI,CAAC,SACH,QAAO;EAIT,MAAM,8BAAc,IAAI;EACxB,SAAS,QAAQ,aAAW;AAC1B,OAAI,CAAC,YAAY,IAAI,QAAQ,OAAO,SAAS,EAC3C,YAAY,IAAI,QAAQ,OAAO,UAAU,CAAE,EAAC;GAE9C,YAAY,IAAI,QAAQ,OAAO,SAAS,CAAE,KAAK,QAAQ;EACxD,EAAC;EAEF,MAAM,qBAAqB,MAAM,KAAK,YAAY,SAAS,CAAC,CACzD,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE,CACzB,IAAI,CAAC,CAAC,UAAU,SAAS,MAAM;GAC9B;GACA,UAAU,SAAS,IAAI,QAAM;IAC3B,IAAI,EAAE,OAAO;IACb,MAAM,EAAE,OAAO;IACf,UAAU,EAAE,OAAO;IACnB,aAAa,EAAE,OAAO;IACtB,SAAS,EAAE,OAAO;GACnB,GAAE;EACJ,GAAE;EAGL,MAAM,QAAQ,KAAK,eAAe,IAAI,OAAO;EAC7C,MAAM,iBAAiB,QAAQ;GAC7B,iBAAiB,MAAM;GACvB,iBAAiB,MAAM,kBAAkB,IAAI,MAAM,gBAAgB,MAAM,kBAAkB;GAC3F,aAAa,MAAM,kBAAkB,IAAK,MAAM,eAAe,MAAM,kBAAmB,MAAM;GAC9F,YAAY,MAAM;EACnB,IAAG;AAEJ,SAAO;GACL;GACA,cAAc,SAAS;GACvB;GACA;EACD;CACF;;;;;;CAOD,oBAAkD;AAChD,SAAO,MAAM,KAAK,KAAK,UAAU,MAAM,CAAC,CACrC,IAAI,YAAU,KAAK,eAAe,OAAO,CAAC,CAC1C,OAAO,CAAC,UAA0C,UAAU,KAAK;CACrE;;;;;;;CAQD,iBAAiBgC,KAA4D;EAC3E,MAAM,yBAAS,IAAI;AAEnB,OAAK,MAAM,CAAC,QAAQ,SAAS,IAAI,KAAK,UAAU,SAAS,EAAE;GACzD,MAAM,mBAAmB,SAAS,OAAO,aACvC,QAAQ,OAAO,KAAK,SAAS,IAAI,CAClC;AAED,OAAI,iBAAiB,SAAS,GAC5B,OAAO,IAAI,QAAQ,iBAAiB;EAEvC;AAED,SAAO;CACR;;;;;;;CAQD,sBAAsBC,UAAiE;EACrF,MAAM,yBAAS,IAAI;AAEnB,OAAK,MAAM,CAAC,QAAQ,SAAS,IAAI,KAAK,UAAU,SAAS,EAAE;GACzD,MAAM,mBAAmB,SAAS,OAAO,aACvC,QAAQ,OAAO,aAAa,SAC7B;AAED,OAAI,iBAAiB,SAAS,GAC5B,OAAO,IAAI,QAAQ,iBAAiB;EAEvC;AAED,SAAO;CACR;;;;;;;CAQD,uBAA0CjC,QAAWkC,MAA2B;EAC9E,KAAK,qBAAqB,IAAI,QAAQ,KAAK;AAE3C,MAAI,KAAK,gBAAgB,SAAS,QAAQ,IAAI,aAAa,eACzD,QAAQ,IAAI,CAAC,kCAAkC,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC;CAE/E;;;;;;;CAQD,uBAA0ClC,QAA0B;AAClE,SAAO,KAAK,qBAAqB,IAAI,OAAO,IAAI,KAAK;CACtD;;;;;;CAOD,0BAA6CA,QAAiB;EAC5D,KAAK,qBAAqB,OAAO,OAAO;AAExC,MAAI,KAAK,gBAAgB,SAAS,QAAQ,IAAI,aAAa,eACzD,QAAQ,IAAI,CAAC,oCAAoC,EAAE,OAAO,OAAO,CAAC,cAAc,EAAE,KAAK,eAAe,CAAC;CAE1G;;;;CAKD,sBAA4B;EAC1B,KAAK,eAAe,OAAO;AAE3B,MAAI,KAAK,gBAAgB,SAAS,QAAQ,IAAI,aAAa,eACzD,QAAQ,IAAI,CAAC,8CAA8C,EAAE,KAAK,MAAM,CAAC;CAE5E;;;;;;CAOD,0BAA6CA,QAAiB;EAC5D,KAAK,eAAe,OAAO,OAAO;AAElC,MAAI,KAAK,gBAAgB,SAAS,QAAQ,IAAI,aAAa,eACzD,QAAQ,IAAI,CAAC,4CAA4C,EAAE,OAAO,OAAO,EAAE,CAAC;CAE/E;;;;;;CAOD,oBAAsD;AACpD,SAAO,KAAK;CACb;;;;;;CAOD,iBAA0B;AACxB,SAAO,QAAQ,KAAK,gBAAgB,SAAS,QAAQ,IAAI,aAAa,cAAc;CACrF;AACF"}
1
+ {"version":3,"file":"index.js","names":["context: PipelineContext<T, R>","createController: (registration: HandlerRegistration<T, R>, index: number) => PipelineController<T, R>","error: any","handlerResult: R | undefined","_typeof","o","_typeof","toPrimitive","toPropertyKey","_defineProperty","actionKey: string","debounceMs: number","throttleMs: number","config: ActionRegisterConfig","action: K","handler: ActionHandler<T[K], R>","config: HandlerConfig","registration: HandlerRegistration<T[K], R>","payload?: T[K]","options?: import('./types.js').DispatchOptions","autoAbortController: AbortController | undefined","abortHandler","throttleMs: number | undefined","debounceMs: number | undefined","context: PipelineContext<T[K], any>","context: PipelineContext<T[K], R>","executionError: Error | undefined","handlerResults: Array<{\n id: string;\n executed: boolean;\n duration?: number;\n result?: R;\n error?: Error;\n metadata?: Record<string, any>;\n }>","errors: Array<{\n handlerId: string;\n error: Error;\n timestamp: number;\n }>","executionResult: ExecutionResult<R>","handlers: HandlerRegistration<T[K], any>[]","filterOptions?: import('./types.js').DispatchOptions['filter']","context: PipelineContext<any, R>","resultOptions?: import('./types.js').DispatchOptions['result']","autoAbortController?: AbortController","autoAbortOptions?: { allowHandlerAbort?: boolean }","_registration: HandlerRegistration<T[K], any>","_index: number","reason?: string","modifier: (payload: T[K]) => T[K]","priority: number","result: any","merger: (previousResults: any[], currentResult: any) => any","executedHandlers: HandlerRegistration<T[K], any>[]","success: boolean","duration: number","tag: string","category: string","mode: ExecutionMode"],"sources":["../src/execution-modes.ts","../../../node_modules/.pnpm/@oxc-project+runtime@0.81.0/node_modules/@oxc-project/runtime/src/helpers/typeof.js","../../../node_modules/.pnpm/@oxc-project+runtime@0.81.0/node_modules/@oxc-project/runtime/src/helpers/toPrimitive.js","../../../node_modules/.pnpm/@oxc-project+runtime@0.81.0/node_modules/@oxc-project/runtime/src/helpers/toPropertyKey.js","../../../node_modules/.pnpm/@oxc-project+runtime@0.81.0/node_modules/@oxc-project/runtime/src/helpers/defineProperty.js","../src/action-guard.ts","../src/ActionRegister.ts"],"sourcesContent":["/**\n * @fileoverview Execution mode implementations for ActionRegister\n * Provides different execution strategies for action pipelines\n */\n\nimport type { \n HandlerRegistration, \n PipelineContext, \n PipelineController\n} from './types.js';\n\n/**\n * Execute handlers in sequential mode (one after another)\n */\nexport async function executeSequential<T, R = void>(\n context: PipelineContext<T, R>,\n createController: (registration: HandlerRegistration<T, R>, index: number) => PipelineController<T, R>\n): Promise<void> {\n\n let i = 0;\n \n while (i < context.handlers.length) {\n // Check for abort or termination\n if (context.aborted || context.terminated) {\n break;\n }\n\n const registration = context.handlers[i];\n context.currentIndex = i;\n\n /** Check condition if provided */\n if (registration.config.condition && !registration.config.condition()) {\n i++;\n continue;\n }\n\n /** Check validation if provided */\n if (registration.config.validation && !registration.config.validation(context.payload)) {\n i++;\n continue;\n }\n\n const controller = createController(registration, i);\n\n try {\n // Check for abort before executing handler\n if (context.aborted) {\n break;\n }\n \n const result = registration.handler(context.payload, controller);\n\n /** Wait for async handlers if they're blocking */\n if (registration.config.blocking && result instanceof Promise) {\n const handlerResult = await result;\n \n /** Collect result if handler returned something and wasn't terminated */\n if (handlerResult !== undefined && !context.terminated) {\n context.results.push(handlerResult);\n }\n } else if (result !== undefined && !context.terminated) {\n /** Collect synchronous result */\n if (result instanceof Promise) {\n // Non-blocking async handler - don't wait but collect result when resolved\n result.then(asyncResult => {\n if (asyncResult !== undefined && !context.terminated) {\n context.results.push(asyncResult);\n }\n }).catch(() => {\n // Ignore errors from non-blocking handlers\n });\n } else {\n context.results.push(result);\n }\n }\n\n /** Check if pipeline was terminated by controller.return() */\n if (context.terminated) {\n break;\n }\n\n /** Handle jump to priority AFTER handler execution */\n if (context.jumpToPriority !== undefined) {\n const jumpIndex = context.handlers.findIndex(\n handler => handler.config.priority === context.jumpToPriority\n );\n \n if (jumpIndex !== -1) {\n // Jump to the target index directly (position movement)\n i = jumpIndex;\n context.jumpToPriority = undefined;\n continue; // Continue to execute the handler at jump destination\n } else {\n // Invalid jump target, clear and continue normally\n context.jumpToPriority = undefined;\n i++;\n }\n } else {\n // Normal progression to next handler\n i++;\n }\n\n } catch (error: any) {\n if (registration.config.blocking) {\n throw error;\n }\n // For non-blocking handlers, continue to next handler\n i++;\n }\n }\n}\n\n/**\n * Execute handlers in parallel mode (all at once)\n */\nexport async function executeParallel<T, R = void>(\n context: PipelineContext<T, R>,\n createController: (registration: HandlerRegistration<T, R>, index: number) => PipelineController<T, R>\n): Promise<void> {\n\n /** Filter handlers that should run */\n const runnableHandlers = context.handlers.filter((registration, _index) => {\n /** Check condition */\n if (registration.config.condition && !registration.config.condition()) {\n return false;\n }\n\n /** Check validation */\n if (registration.config.validation && !registration.config.validation(context.payload)) {\n return false;\n }\n\n return true;\n });\n\n /** Create promises for all handlers */\n const handlerPromises = runnableHandlers.map(async (registration, _index) => {\n const controller = createController(registration, _index);\n \n try {\n const result = registration.handler(context.payload, controller);\n \n let handlerResult: R | undefined;\n if (result instanceof Promise) {\n handlerResult = await result;\n } else {\n handlerResult = result;\n }\n \n /** Collect result if handler returned something and pipeline wasn't terminated */\n if (handlerResult !== undefined && !context.terminated) {\n context.results.push(handlerResult);\n }\n \n return { \n success: true, \n handlerId: registration.id, \n result: handlerResult,\n terminated: context.terminated \n };\n \n } catch (error: any) {\n if (registration.config.blocking) {\n throw error;\n }\n \n return { success: false, handlerId: registration.id, error };\n }\n });\n\n /** Wait for all handlers to complete */\n const results = await Promise.allSettled(handlerPromises);\n \n /** Check for any rejected blocking handlers */\n const failures = results.filter((result, index) => {\n if (result.status === 'rejected') {\n const registration = runnableHandlers[index];\n return registration.config.blocking;\n }\n return false;\n });\n\n if (failures.length > 0) {\n const firstFailure = failures[0] as PromiseRejectedResult;\n throw firstFailure.reason;\n }\n\n /** Check if any handler terminated the pipeline */\n const terminatedResults = results.filter(result => \n result.status === 'fulfilled' && result.value.terminated\n );\n \n if (terminatedResults.length > 0) {\n context.terminated = true;\n // In parallel mode, we can't determine which handler's termination result to use,\n // so we use the first one that terminated\n const firstTerminated = terminatedResults[0] as PromiseFulfilledResult<any>;\n context.terminationResult = firstTerminated.value.result;\n }\n}\n\n/**\n * Execute handlers in race mode (first to complete wins)\n */\nexport async function executeRace<T, R = void>(\n context: PipelineContext<T, R>,\n createController: (registration: HandlerRegistration<T, R>, index: number) => PipelineController<T, R>\n): Promise<void> {\n\n /** Filter handlers that should run */\n const runnableHandlers = context.handlers.filter((registration, _index) => {\n /** Check condition */\n if (registration.config.condition && !registration.config.condition()) {\n return false;\n }\n\n /** Check validation */\n if (registration.config.validation && !registration.config.validation(context.payload)) {\n return false;\n }\n\n return true;\n });\n\n if (runnableHandlers.length === 0) {\n return;\n }\n\n /** Create promises for all handlers */\n const handlerPromises = runnableHandlers.map(async (registration, _index) => {\n const controller = createController(registration, _index);\n \n try {\n const result = registration.handler(context.payload, controller);\n \n let handlerResult: R | undefined;\n if (result instanceof Promise) {\n handlerResult = await result;\n } else {\n handlerResult = result;\n }\n \n return { \n success: true, \n handlerId: registration.id, \n registration,\n result: handlerResult,\n terminated: context.terminated\n };\n \n } catch (error: any) {\n return { success: false, handlerId: registration.id, error, registration };\n }\n });\n\n /** Race all handlers */\n const winner = await Promise.race(handlerPromises);\n\n /** If the winner failed and was blocking, throw the error */\n if (!winner.success && winner.registration?.config.blocking) {\n throw winner.error;\n }\n\n /** Collect result from the winning handler */\n if (winner.success && winner.result !== undefined) {\n context.results.push(winner.result);\n }\n\n /** Check if the winning handler terminated the pipeline */\n if (winner.success && winner.terminated) {\n context.terminated = true;\n context.terminationResult = winner.result;\n }\n}","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nmodule.exports = toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nmodule.exports = toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\n * @fileoverview Action Guard system for debouncing, throttling and blocking\n * Provides rate limiting and user experience optimization for actions\n */\n\n\n/**\n * Action guard state tracking for debouncing and throttling\n * @memberof core-concepts\n * @internal\n * @since 1.0.0\n * \n * Tracks timing and execution state for action execution control\n */\ninterface GuardState {\n /** Timestamp of last successful execution for throttling calculations */\n lastExecuted: number;\n \n /** Active debounce timer - cleared when new debounce requests arrive */\n debounceTimer?: NodeJS.Timeout;\n \n /** Active throttle timer - tracks when throttle period will end */\n throttleTimer?: NodeJS.Timeout;\n \n /** Flag indicating if action is currently in throttled state */\n isThrottled: boolean;\n}\n\n/**\n * Action Guard system for managing action execution timing\n * @implements action-guard\n * @implements performance-optimization \n * @implements user-experience-optimization\n * @implements class-naming\n * @memberof core-concepts\n * @internal\n * @since 1.0.0\n * \n * Manages action execution timing through debouncing and throttling\n * @implements performance-optimization\n * \n * @example\n * ```typescript\n * const guard = new ActionGuard(logger);\n * \n * // Debounce search input (wait 300ms after typing stops)\n * if (await guard.debounce('search', 300)) {\n * executeSearch(); \n * }\n * \n * // Throttle scroll handler (max once per 100ms)\n * if (guard.throttle('scroll', 100)) {\n * updateScrollPosition();\n * }\n * ```\n */\nexport class ActionGuard {\n private guards = new Map<string, GuardState>();\n\n constructor() {\n // ActionGuard without logger\n }\n\n /**\n * Check if action should be debounced\n * @param actionKey - Unique key for the action\n * @param debounceMs - Debounce delay in milliseconds\n * @returns Promise that resolves when debounce period is complete\n */\n async debounce(actionKey: string, debounceMs: number): Promise<boolean> {\n\n /** Get or create guard state for this action */\n let state = this.guards.get(actionKey);\n if (!state) {\n /** Initialize new guard state with default values */\n state = {\n lastExecuted: 0,\n isThrottled: false\n };\n this.guards.set(actionKey, state);\n }\n\n /** Clear any existing debounce timer to restart the delay period */\n /** This implements the \"debounce\" behavior where rapid calls reset the timer */\n if (state.debounceTimer) {\n clearTimeout(state.debounceTimer);\n }\n\n /** Create new debounce promise that resolves after the delay period */\n /** The promise will only resolve if no new debounce requests arrive */\n return new Promise((resolve) => {\n state!.debounceTimer = setTimeout(() => {\n /** Clean up timer reference to prevent memory leaks */\n state!.debounceTimer = undefined;\n /** Update last execution timestamp for throttling calculations */\n state!.lastExecuted = Date.now();\n resolve(true);\n }, debounceMs);\n \n });\n }\n\n /**\n * Check if action should be throttled\n * @param actionKey - Unique key for the action\n * @param throttleMs - Throttle delay in milliseconds\n * @returns True if action should proceed, false if throttled\n */\n throttle(actionKey: string, throttleMs: number): boolean {\n\n /** Get or create guard state for this action */\n let state = this.guards.get(actionKey);\n if (!state) {\n /** Initialize new guard state with default values */\n state = {\n lastExecuted: 0,\n isThrottled: false\n };\n this.guards.set(actionKey, state);\n }\n\n const now = Date.now();\n const timeSinceLastExecution = now - state.lastExecuted;\n\n /** Check if enough time has passed since last execution */\n /** If throttle period has elapsed, allow immediate execution */\n if (timeSinceLastExecution >= throttleMs) {\n /** Update execution timestamp and clear throttled state */\n state.lastExecuted = now;\n state.isThrottled = false;\n \n \n return true;\n }\n\n /** If already in throttled state, don't create duplicate timers */\n /** This prevents timer accumulation and unnecessary processing */\n if (state.isThrottled) {\n return false;\n }\n\n /** Set throttle timer to automatically clear the throttled state */\n /** Calculate remaining time until throttle period expires */\n state.isThrottled = true;\n const remainingTime = throttleMs - timeSinceLastExecution;\n \n /** Create timer to reset throttled state when period expires */\n state.throttleTimer = setTimeout(() => {\n /** Clear throttled state and timer reference */\n state!.isThrottled = false;\n state!.throttleTimer = undefined;\n }, remainingTime);\n\n\n return false;\n }\n\n /**\n * Clear all guards for an action\n * @param actionKey - Action key to clear\n */\n clearGuards(actionKey: string): void {\n \n const state = this.guards.get(actionKey);\n if (state) {\n /** Clear debounce timer if active to prevent memory leaks */\n if (state.debounceTimer) {\n clearTimeout(state.debounceTimer);\n }\n /** Clear throttle timer if active to prevent memory leaks */\n if (state.throttleTimer) {\n clearTimeout(state.throttleTimer);\n }\n /** Remove guard state from memory */\n this.guards.delete(actionKey);\n \n }\n }\n\n /**\n * Clear all guards\n */\n clearAll(): void {\n \n /** Iterate through all guard states and clear their timers */\n /** This prevents memory leaks when clearing the entire guard system */\n for (const [, state] of this.guards) {\n /** Clear any active debounce timers */\n if (state.debounceTimer) {\n clearTimeout(state.debounceTimer);\n }\n /** Clear any active throttle timers */\n if (state.throttleTimer) {\n clearTimeout(state.throttleTimer);\n }\n }\n \n /** Remove all guard states from memory */\n this.guards.clear();\n }\n\n /**\n * Get current guard state for debugging\n * @param actionKey - Action key to inspect\n */\n getGuardState(actionKey: string): GuardState | undefined {\n return this.guards.get(actionKey);\n }\n\n /**\n * Get all active guards for debugging\n */\n getAllGuardStates(): Map<string, GuardState> {\n return new Map(this.guards);\n }\n}","\nimport {\n ActionPayloadMap,\n ActionHandler,\n HandlerConfig,\n HandlerRegistration,\n PipelineContext,\n PipelineController,\n ActionRegisterConfig,\n UnregisterFunction,\n ExecutionMode,\n ExecutionResult,\n ActionRegistryInfo,\n ActionHandlerStats,\n} from './types.js';\nimport { executeSequential, executeParallel, executeRace } from './execution-modes.js';\nimport { ActionGuard } from './action-guard.js';\n\n/**\n * 중앙화된 액션 등록 및 디스패치 시스템으로, 타입 안전한 액션 파이프라인 관리를 제공하는 핵심 클래스입니다.\n * \n * @implements {ActionRegister}\n * @implements {Action Pipeline System}\n * @memberof core-concepts\n * \n * @example\n * ```typescript\n * interface AppActions extends ActionPayloadMap {\n * updateUser: { id: string; name: string };\n * calculateTotal: void;\n * }\n * \n * const register = new ActionRegister<AppActions>({\n * name: 'AppRegister',\n * logLevel: LogLevel.DEBUG\n * });\n * \n * // 핸들러 등록\n * register.register('updateUser', ({ id, name }, controller) => {\n * userStore.setValue({ id, name });\n * // 핸들러가 자동으로 다음 핸들러로 진행\n * }, { priority: 10 });\n * \n * // 액션 디스패치\n * await register.dispatch('updateUser', { id: '1', name: 'John' });\n * ```\n */\nexport class ActionRegister<T extends ActionPayloadMap = ActionPayloadMap> {\n private pipelines = new Map<keyof T, HandlerRegistration<any, any>[]>();\n private handlerCounter = 0;\n private readonly actionGuard: ActionGuard;\n private executionMode: ExecutionMode = 'sequential';\n private actionExecutionModes = new Map<keyof T, ExecutionMode>();\n public readonly name: string;\n private readonly registryConfig: ActionRegisterConfig['registry'];\n private executionStats = new Map<keyof T, {\n totalExecutions: number;\n totalDuration: number;\n successCount: number;\n errorCount: number;\n }>();\n\n constructor(config: ActionRegisterConfig = {}) {\n this.name = config.name || 'ActionRegister';\n this.registryConfig = config.registry;\n this.actionGuard = new ActionGuard();\n \n if (this.registryConfig?.defaultExecutionMode) {\n this.executionMode = this.registryConfig.defaultExecutionMode;\n }\n \n if (this.registryConfig?.debug && process.env.NODE_ENV === 'development') {\n console.log(`🎯 ActionRegister created: ${this.name}`, {\n defaultExecutionMode: this.executionMode,\n maxHandlers: this.registryConfig.maxHandlers,\n autoCleanup: this.registryConfig.autoCleanup ?? true\n });\n }\n }\n\n register<K extends keyof T, R = void>(\n action: K,\n handler: ActionHandler<T[K], R>,\n config: HandlerConfig = {}\n ): UnregisterFunction {\n \n // Generate unique handler ID with security consideration\n // Use counter + random suffix to prevent ID prediction attacks\n const handlerId = config.id || `handler_${++this.handlerCounter}_${Math.random().toString(36).substr(2, 5)}`;\n \n // Create handler registration with defaults\n const registration: HandlerRegistration<T[K], R> = {\n handler,\n config: {\n // Existing fields\n priority: config.priority ?? 0,\n id: handlerId,\n blocking: config.blocking ?? false,\n once: config.once ?? false,\n condition: config.condition || (() => true),\n debounce: config.debounce ?? undefined,\n throttle: config.throttle ?? undefined,\n validation: config.validation ?? undefined,\n middleware: config.middleware ?? false,\n \n // New metadata fields\n tags: config.tags ?? [],\n category: config.category ?? undefined,\n description: config.description ?? undefined,\n version: config.version ?? undefined,\n returnType: config.returnType ?? 'value',\n timeout: config.timeout ?? undefined,\n retries: config.retries ?? 0,\n dependencies: config.dependencies ?? [],\n conflicts: config.conflicts ?? [],\n environment: config.environment ?? undefined,\n feature: config.feature ?? undefined,\n metrics: config.metrics ?? {\n collectTiming: false,\n collectErrors: false,\n customMetrics: {}\n },\n metadata: config.metadata ?? {},\n } as Required<HandlerConfig>,\n id: handlerId,\n };\n \n // Initialize pipeline if it doesn't exist\n if (!this.pipelines.has(action)) {\n this.pipelines.set(action, []);\n }\n\n const pipeline = this.pipelines.get(action)!;\n \n // Check for duplicate handler IDs and prevent duplicate registration\n const existingIndex = pipeline.findIndex(reg => reg.id === handlerId);\n if (existingIndex !== -1) {\n // Return a no-op unregister function for the duplicate\n return () => {};\n }\n \n // Check maximum handlers limit\n if (this.registryConfig?.maxHandlers && pipeline.length >= this.registryConfig.maxHandlers) {\n throw new Error(\n `Maximum number of handlers (${this.registryConfig.maxHandlers}) reached for action '${String(action)}' in registry '${this.name}'`\n );\n }\n\n // Add handler to pipeline\n pipeline.push(registration);\n \n // Sort pipeline by priority (highest first)\n pipeline.sort((a, b) => b.config.priority - a.config.priority);\n \n if (this.registryConfig?.debug && process.env.NODE_ENV === 'development') {\n console.log(`🎯 Handler registered: ${String(action)}`, {\n handlerId,\n priority: config.priority,\n tags: config.tags,\n category: config.category,\n totalHandlers: pipeline.length,\n registry: this.name\n });\n }\n\n // Return unregister function that removes this specific registration\n return () => {\n const index = pipeline.findIndex((reg) => reg.id === handlerId && reg === registration);\n if (index !== -1) {\n pipeline.splice(index, 1);\n \n if (this.registryConfig?.debug && process.env.NODE_ENV === 'development') {\n console.log(`🎯 Handler unregistered: ${String(action)}`, {\n handlerId,\n remainingHandlers: pipeline.length,\n registry: this.name\n });\n }\n }\n };\n }\n\n async dispatch<K extends keyof T>(\n action: K,\n payload?: T[K],\n options?: import('./types.js').DispatchOptions\n ): Promise<void> {\n // Auto-abort: Create AbortController if enabled\n let autoAbortController: AbortController | undefined;\n let effectiveSignal = options?.signal;\n \n if (options?.autoAbort?.enabled) {\n autoAbortController = new AbortController();\n effectiveSignal = autoAbortController.signal;\n \n // Provide access to the created controller\n if (options.autoAbort.onControllerCreated) {\n options.autoAbort.onControllerCreated(autoAbortController);\n }\n \n // If original signal exists, link them together\n if (options?.signal) {\n const originalSignal = options.signal;\n if (originalSignal.aborted) {\n autoAbortController.abort();\n } else {\n const abortHandler = () => autoAbortController!.abort();\n originalSignal.addEventListener('abort', abortHandler, { once: true });\n }\n }\n }\n \n // Check if dispatch is aborted before starting\n if (effectiveSignal?.aborted) {\n return;\n }\n \n const pipeline = this.pipelines.get(action);\n if (!pipeline || pipeline.length === 0) {\n return;\n }\n\n // Apply handler filtering first\n const filteredHandlers = this.filterHandlers([...pipeline], options?.filter);\n\n // Apply ActionGuard controls - check both dispatch options and handler configs\n const actionKey = String(action);\n \n // Get throttle/debounce settings from dispatch options or handler configs\n let throttleMs: number | undefined;\n let debounceMs: number | undefined;\n \n // Priority: dispatch options > handler config\n if (options?.throttle !== undefined) {\n throttleMs = options.throttle;\n } else if (filteredHandlers.length > 0) {\n // Use throttle from the first handler that has it (handlers are sorted by priority)\n for (const handler of filteredHandlers) {\n if (handler.config.throttle !== undefined) {\n throttleMs = handler.config.throttle;\n break;\n }\n }\n }\n \n if (options?.debounce !== undefined) {\n debounceMs = options.debounce;\n } else if (filteredHandlers.length > 0) {\n // Use debounce from the first handler that has it (handlers are sorted by priority)\n for (const handler of filteredHandlers) {\n if (handler.config.debounce !== undefined) {\n debounceMs = handler.config.debounce;\n break;\n }\n }\n }\n \n // Apply debounce if specified\n if (debounceMs !== undefined) {\n const shouldProceed = await this.actionGuard.debounce(actionKey, debounceMs);\n if (!shouldProceed) {\n return; // Debounced - don't execute\n }\n }\n \n // Apply throttle if specified\n if (throttleMs !== undefined) {\n const shouldProceed = this.actionGuard.throttle(actionKey, throttleMs);\n if (!shouldProceed) {\n return; // Throttled - don't execute\n }\n }\n\n // Determine execution mode for this action (with option override)\n const currentExecutionMode = options?.executionMode || \n this.actionExecutionModes.get(action) || \n this.executionMode;\n\n // Create pipeline execution context\n const context: PipelineContext<T[K], any> = {\n action: String(action),\n payload: payload as T[K],\n handlers: filteredHandlers, // Use filtered handlers\n aborted: false,\n abortReason: undefined,\n currentIndex: 0,\n jumpToPriority: undefined,\n executionMode: currentExecutionMode,\n \n // New result collection fields\n results: [],\n terminated: false,\n terminationResult: undefined,\n };\n\n const startTime = Date.now();\n let executionSuccess = true;\n \n // Add abort listener if signal provided (use effectiveSignal for auto-abort)\n const abortHandler = effectiveSignal ? () => {\n context.aborted = true;\n context.abortReason = 'Action dispatch aborted by signal';\n } : undefined;\n \n if (effectiveSignal && abortHandler) {\n effectiveSignal.addEventListener('abort', abortHandler);\n }\n \n try {\n await this.executePipeline(context, autoAbortController, options?.autoAbort);\n } catch (error) {\n executionSuccess = false;\n throw error;\n } finally {\n // Clean up abort listener\n if (effectiveSignal && abortHandler) {\n effectiveSignal.removeEventListener('abort', abortHandler);\n }\n // Track execution statistics\n const duration = Date.now() - startTime;\n this.updateExecutionStats(action, executionSuccess, duration);\n }\n }\n\n async dispatchWithResult<K extends keyof T, R = void>(\n action: K,\n payload?: T[K],\n options?: import('./types.js').DispatchOptions\n ): Promise<ExecutionResult<R>> {\n const startTime = Date.now();\n \n // Auto-abort: Create AbortController if enabled (same as dispatch)\n let autoAbortController: AbortController | undefined;\n let effectiveSignal = options?.signal;\n \n if (options?.autoAbort?.enabled) {\n autoAbortController = new AbortController();\n effectiveSignal = autoAbortController.signal;\n \n // Provide access to the created controller\n if (options.autoAbort.onControllerCreated) {\n options.autoAbort.onControllerCreated(autoAbortController);\n }\n \n // If original signal exists, link them together\n if (options?.signal) {\n const originalSignal = options.signal;\n if (originalSignal.aborted) {\n autoAbortController.abort();\n } else {\n const abortHandler = () => autoAbortController!.abort();\n originalSignal.addEventListener('abort', abortHandler, { once: true });\n }\n }\n }\n \n // Check if dispatch is aborted before starting\n if (effectiveSignal?.aborted) {\n return {\n success: false,\n aborted: true,\n abortReason: 'Action dispatch aborted by signal',\n terminated: false,\n result: undefined,\n results: [],\n execution: {\n duration: 0,\n handlersExecuted: 0,\n handlersSkipped: 0,\n handlersFailed: 0,\n startTime,\n endTime: startTime,\n },\n handlers: [],\n errors: [],\n };\n }\n \n const pipeline = this.pipelines.get(action);\n \n if (!pipeline || pipeline.length === 0) {\n return {\n success: true,\n aborted: false,\n terminated: false,\n result: undefined,\n results: [],\n execution: {\n duration: 0,\n handlersExecuted: 0,\n handlersSkipped: 0,\n handlersFailed: 0,\n startTime,\n endTime: startTime,\n },\n handlers: [],\n errors: [],\n };\n }\n\n // Apply handler filtering first\n const filteredHandlers = this.filterHandlers([...pipeline], options?.filter);\n\n // Apply ActionGuard controls - check both dispatch options and handler configs\n const actionKey = String(action);\n \n // Get throttle/debounce settings from dispatch options or handler configs\n let throttleMs: number | undefined;\n let debounceMs: number | undefined;\n \n // Priority: dispatch options > handler config\n if (options?.throttle !== undefined) {\n throttleMs = options.throttle;\n } else if (filteredHandlers.length > 0) {\n // Use throttle from the first handler that has it (handlers are sorted by priority)\n for (const handler of filteredHandlers) {\n if (handler.config.throttle !== undefined) {\n throttleMs = handler.config.throttle;\n break;\n }\n }\n }\n \n if (options?.debounce !== undefined) {\n debounceMs = options.debounce;\n } else if (filteredHandlers.length > 0) {\n // Use debounce from the first handler that has it (handlers are sorted by priority)\n for (const handler of filteredHandlers) {\n if (handler.config.debounce !== undefined) {\n debounceMs = handler.config.debounce;\n break;\n }\n }\n }\n \n // Apply debounce if specified\n if (debounceMs !== undefined) {\n const shouldProceed = await this.actionGuard.debounce(actionKey, debounceMs);\n if (!shouldProceed) {\n return {\n success: false,\n aborted: true,\n abortReason: 'Debounced execution',\n terminated: false,\n result: undefined,\n results: [],\n execution: {\n duration: Date.now() - startTime,\n handlersExecuted: 0,\n handlersSkipped: pipeline.length,\n handlersFailed: 0,\n startTime,\n endTime: Date.now(),\n },\n handlers: [],\n errors: [],\n };\n }\n }\n \n // Apply throttle if specified\n if (throttleMs !== undefined) {\n const shouldProceed = this.actionGuard.throttle(actionKey, throttleMs);\n if (!shouldProceed) {\n return {\n success: false,\n aborted: true,\n abortReason: 'Throttled execution',\n terminated: false,\n result: undefined,\n results: [],\n execution: {\n duration: Date.now() - startTime,\n handlersExecuted: 0,\n handlersSkipped: pipeline.length,\n handlersFailed: 0,\n startTime,\n endTime: Date.now(),\n },\n handlers: [],\n errors: [],\n };\n }\n }\n\n // Determine execution mode for this action (with option override)\n const currentExecutionMode = options?.executionMode || \n this.actionExecutionModes.get(action) || \n this.executionMode;\n\n // Create pipeline execution context\n const context: PipelineContext<T[K], R> = {\n action: String(action),\n payload: payload as T[K],\n handlers: filteredHandlers,\n aborted: false,\n abortReason: undefined,\n currentIndex: 0,\n jumpToPriority: undefined,\n executionMode: currentExecutionMode,\n \n // Result collection fields\n results: [],\n terminated: false,\n terminationResult: undefined,\n };\n\n let executionError: Error | undefined;\n const handlerResults: Array<{\n id: string;\n executed: boolean;\n duration?: number;\n result?: R;\n error?: Error;\n metadata?: Record<string, any>;\n }> = [];\n\n const errors: Array<{\n handlerId: string;\n error: Error;\n timestamp: number;\n }> = [];\n\n // Add abort listener if signal provided (use effectiveSignal for auto-abort)\n const abortHandler = effectiveSignal ? () => {\n context.aborted = true;\n context.abortReason = 'Action dispatch aborted by signal';\n } : undefined;\n \n if (effectiveSignal && abortHandler) {\n effectiveSignal.addEventListener('abort', abortHandler);\n }\n \n try {\n await this.executePipeline(context, autoAbortController, options?.autoAbort);\n } catch (error) {\n executionError = error instanceof Error ? error : new Error(String(error));\n errors.push({\n handlerId: 'pipeline',\n error: executionError,\n timestamp: Date.now(),\n });\n } finally {\n // Clean up abort listener\n if (effectiveSignal && abortHandler) {\n effectiveSignal.removeEventListener('abort', abortHandler);\n }\n }\n\n const endTime = Date.now();\n const executionSuccess = !executionError && !context.aborted;\n \n // Track execution statistics\n this.updateExecutionStats(action, executionSuccess, endTime - startTime);\n\n // Process results based on options\n const processedResult = this.processResults(context, options?.result);\n\n // Build execution result\n const executionResult: ExecutionResult<R> = {\n success: !executionError && !context.aborted,\n aborted: context.aborted,\n abortReason: context.abortReason,\n terminated: context.terminated,\n result: processedResult,\n results: context.results,\n execution: {\n duration: endTime - startTime,\n handlersExecuted: context.currentIndex + (context.aborted ? 0 : 1),\n handlersSkipped: Math.max(0, filteredHandlers.length - (context.currentIndex + 1)),\n handlersFailed: errors.length,\n startTime,\n endTime,\n },\n handlers: handlerResults,\n errors,\n };\n\n /** Clean up one-time handlers after execution */\n this.cleanupOneTimeHandlers(action, context.handlers);\n\n return executionResult;\n }\n\n private filterHandlers<K extends keyof T>(\n handlers: HandlerRegistration<T[K], any>[],\n filterOptions?: import('./types.js').DispatchOptions['filter']\n ): HandlerRegistration<T[K], any>[] {\n if (!filterOptions) {\n return handlers;\n }\n\n return handlers.filter(registration => {\n const config = registration.config;\n\n // Check include filters\n if (filterOptions.tags && filterOptions.tags.length > 0) {\n const hasMatchingTag = filterOptions.tags.some(tag => config.tags.includes(tag));\n if (!hasMatchingTag) return false;\n }\n\n if (filterOptions.category && config.category !== filterOptions.category) {\n return false;\n }\n\n if (filterOptions.handlerIds && filterOptions.handlerIds.length > 0) {\n if (!filterOptions.handlerIds.includes(config.id)) {\n return false;\n }\n }\n\n if (filterOptions.environment && config.environment !== filterOptions.environment) {\n return false;\n }\n\n if (filterOptions.feature && config.feature !== filterOptions.feature) {\n return false;\n }\n\n // Check exclude filters\n if (filterOptions.excludeTags && filterOptions.excludeTags.length > 0) {\n const hasExcludedTag = filterOptions.excludeTags.some(tag => config.tags.includes(tag));\n if (hasExcludedTag) return false;\n }\n\n if (filterOptions.excludeCategory && config.category === filterOptions.excludeCategory) {\n return false;\n }\n\n if (filterOptions.excludeHandlerIds && filterOptions.excludeHandlerIds.length > 0) {\n if (filterOptions.excludeHandlerIds.includes(config.id)) {\n return false;\n }\n }\n\n // Custom filter\n if (filterOptions.custom && !filterOptions.custom(config)) {\n return false;\n }\n\n return true;\n });\n }\n\n private processResults<R>(\n context: PipelineContext<any, R>,\n resultOptions?: import('./types.js').DispatchOptions['result']\n ): R | undefined {\n if (!resultOptions || !resultOptions.collect) {\n return undefined;\n }\n\n const results = context.results;\n \n // Handle termination result\n if (context.terminated && context.terminationResult !== undefined) {\n return context.terminationResult;\n }\n\n // Apply maxResults limit\n const limitedResults = resultOptions.maxResults \n ? results.slice(0, resultOptions.maxResults)\n : results;\n\n if (limitedResults.length === 0) {\n return undefined;\n }\n\n // Process results based on strategy\n switch (resultOptions.strategy) {\n case 'first':\n return limitedResults[0];\n case 'last':\n return limitedResults[limitedResults.length - 1];\n case 'all':\n return limitedResults as unknown as R;\n case 'merge':\n if (resultOptions.merger) {\n return resultOptions.merger(limitedResults);\n }\n // Default merge: return last result\n return limitedResults[limitedResults.length - 1];\n case 'custom':\n if (resultOptions.merger) {\n return resultOptions.merger(limitedResults);\n }\n throw new Error('Custom result strategy requires a merger function');\n default:\n // Default: return all results\n return limitedResults as unknown as R;\n }\n }\n\n private async executePipeline<K extends keyof T>(\n context: PipelineContext<T[K], any>, \n autoAbortController?: AbortController,\n autoAbortOptions?: { allowHandlerAbort?: boolean }\n ): Promise<void> {\n const createController = (_registration: HandlerRegistration<T[K], any>, _index: number): PipelineController<T[K], any> => {\n return {\n abort: (reason?: string) => {\n context.aborted = true;\n context.abortReason = reason;\n \n // Auto-abort: Handler can trigger pipeline abort if enabled\n if (autoAbortController && autoAbortOptions?.allowHandlerAbort) {\n autoAbortController.abort(reason);\n }\n },\n modifyPayload: (modifier: (payload: T[K]) => T[K]) => {\n context.payload = modifier(context.payload);\n },\n getPayload: () => context.payload,\n jumpToPriority: (priority: number) => {\n context.jumpToPriority = priority;\n },\n return: (result: any) => {\n context.terminated = true;\n context.terminationResult = result;\n },\n setResult: (result: any) => {\n context.results.push(result);\n },\n getResults: () => {\n return [...context.results];\n },\n mergeResult: (merger: (previousResults: any[], currentResult: any) => any) => {\n const currentResult = context.results[context.results.length - 1];\n const previousResults = context.results.slice(0, -1);\n const mergedResult = merger(previousResults, currentResult);\n context.results[context.results.length - 1] = mergedResult;\n },\n };\n };\n\n switch (context.executionMode) {\n case 'sequential':\n await executeSequential<T[K], any>(context, createController);\n break;\n case 'parallel':\n await executeParallel<T[K], any>(context, createController);\n break;\n case 'race':\n await executeRace<T[K], any>(context, createController);\n break;\n default:\n throw new Error(`Unknown execution mode: ${context.executionMode}`);\n }\n\n this.cleanupOneTimeHandlers(context.action as K, context.handlers);\n }\n\n private cleanupOneTimeHandlers<K extends keyof T>(action: K, executedHandlers: HandlerRegistration<T[K], any>[]): void {\n const pipeline = this.pipelines.get(action);\n if (!pipeline) return;\n\n const oneTimeHandlers = executedHandlers.filter(reg => reg.config.once);\n if (oneTimeHandlers.length === 0) return;\n\n oneTimeHandlers.forEach(registration => {\n const index = pipeline.findIndex(reg => reg.id === registration.id);\n if (index !== -1) {\n pipeline.splice(index, 1);\n \n if (this.registryConfig?.debug && process.env.NODE_ENV === 'development') {\n console.log(`🎯 One-time handler removed: ${String(action)}`, {\n handlerId: registration.id,\n remainingHandlers: pipeline.length,\n registry: this.name\n });\n }\n }\n });\n }\n\n /**\n * Update execution statistics for an action\n * \n * @param action Action name\n * @param success Whether execution was successful\n * @param duration Execution duration in milliseconds\n */\n private updateExecutionStats<K extends keyof T>(action: K, success: boolean, duration: number): void {\n if (!this.executionStats.has(action)) {\n this.executionStats.set(action, {\n totalExecutions: 0,\n totalDuration: 0,\n successCount: 0,\n errorCount: 0,\n });\n }\n\n const stats = this.executionStats.get(action)!;\n stats.totalExecutions++;\n stats.totalDuration += duration;\n \n if (success) {\n stats.successCount++;\n } else {\n stats.errorCount++;\n }\n }\n\n getHandlerCount<K extends keyof T>(action: K): number {\n const pipeline = this.pipelines.get(action);\n return pipeline ? pipeline.length : 0;\n }\n\n hasHandlers<K extends keyof T>(action: K): boolean {\n return this.getHandlerCount(action) > 0;\n }\n\n getRegisteredActions(): (keyof T)[] {\n return Array.from(this.pipelines.keys());\n }\n\n clearAction<K extends keyof T>(action: K): void {\n this.pipelines.delete(action);\n }\n\n clearAll(): void {\n this.pipelines.clear();\n }\n\n getName(): string {\n return this.name;\n }\n\n /**\n * Get comprehensive registry information (similar to DeclarativeStoreRegistry pattern)\n * \n * @returns Registry information including actions, handlers, and execution modes\n */\n getRegistryInfo(): ActionRegistryInfo<T> {\n const totalHandlers = Array.from(this.pipelines.values()).reduce(\n (total, pipeline) => total + pipeline.length, \n 0\n );\n \n return {\n name: this.name,\n totalActions: this.pipelines.size,\n totalHandlers,\n registeredActions: Array.from(this.pipelines.keys()),\n actionExecutionModes: new Map(this.actionExecutionModes),\n defaultExecutionMode: this.executionMode,\n };\n }\n\n /**\n * Get detailed statistics for a specific action\n * \n * @param action Action name to get statistics for\n * @returns Detailed handler statistics\n */\n getActionStats<K extends keyof T>(action: K): ActionHandlerStats<T> | null {\n const pipeline = this.pipelines.get(action);\n if (!pipeline) {\n return null;\n }\n\n // Group handlers by priority\n const priorityMap = new Map<number, typeof pipeline>();\n pipeline.forEach(handler => {\n if (!priorityMap.has(handler.config.priority)) {\n priorityMap.set(handler.config.priority, []);\n }\n priorityMap.get(handler.config.priority)!.push(handler);\n });\n\n const handlersByPriority = Array.from(priorityMap.entries())\n .sort(([a], [b]) => b - a) // Sort by priority (highest first)\n .map(([priority, handlers]) => ({\n priority,\n handlers: handlers.map(h => ({\n id: h.config.id,\n tags: h.config.tags,\n category: h.config.category,\n description: h.config.description,\n version: h.config.version,\n }))\n }));\n\n // Get execution statistics if available\n const stats = this.executionStats.get(action);\n const executionStats = stats ? {\n totalExecutions: stats.totalExecutions,\n averageDuration: stats.totalExecutions > 0 ? stats.totalDuration / stats.totalExecutions : 0,\n successRate: stats.totalExecutions > 0 ? (stats.successCount / stats.totalExecutions) * 100 : 0,\n errorCount: stats.errorCount,\n } : undefined;\n\n return {\n action,\n handlerCount: pipeline.length,\n handlersByPriority,\n executionStats,\n };\n }\n\n /**\n * Get statistics for all registered actions\n * \n * @returns Array of statistics for all actions\n */\n getAllActionStats(): Array<ActionHandlerStats<T>> {\n return Array.from(this.pipelines.keys())\n .map(action => this.getActionStats(action))\n .filter((stats): stats is ActionHandlerStats<T> => stats !== null);\n }\n\n /**\n * Get handlers by tag across all actions\n * \n * @param tag Tag to filter handlers by\n * @returns Map of actions to handlers with the specified tag\n */\n getHandlersByTag(tag: string): Map<keyof T, HandlerRegistration<any, any>[]> {\n const result = new Map<keyof T, HandlerRegistration<any, any>[]>();\n \n for (const [action, pipeline] of this.pipelines.entries()) {\n const matchingHandlers = pipeline.filter(handler => \n handler.config.tags.includes(tag)\n );\n \n if (matchingHandlers.length > 0) {\n result.set(action, matchingHandlers);\n }\n }\n \n return result;\n }\n\n /**\n * Get handlers by category across all actions\n * \n * @param category Category to filter handlers by\n * @returns Map of actions to handlers with the specified category\n */\n getHandlersByCategory(category: string): Map<keyof T, HandlerRegistration<any, any>[]> {\n const result = new Map<keyof T, HandlerRegistration<any, any>[]>();\n \n for (const [action, pipeline] of this.pipelines.entries()) {\n const matchingHandlers = pipeline.filter(handler => \n handler.config.category === category\n );\n \n if (matchingHandlers.length > 0) {\n result.set(action, matchingHandlers);\n }\n }\n \n return result;\n }\n\n /**\n * Set execution mode for a specific action\n * \n * @param action Action name\n * @param mode Execution mode to set\n */\n setActionExecutionMode<K extends keyof T>(action: K, mode: ExecutionMode): void {\n this.actionExecutionModes.set(action, mode);\n \n if (this.registryConfig?.debug && process.env.NODE_ENV === 'development') {\n console.log(`🎯 Execution mode set for action '${String(action)}': ${mode}`);\n }\n }\n\n /**\n * Get execution mode for a specific action\n * \n * @param action Action name\n * @returns Execution mode for the action, or default if not set\n */\n getActionExecutionMode<K extends keyof T>(action: K): ExecutionMode {\n return this.actionExecutionModes.get(action) || this.executionMode;\n }\n\n /**\n * Remove execution mode override for a specific action\n * \n * @param action Action name\n */\n removeActionExecutionMode<K extends keyof T>(action: K): void {\n this.actionExecutionModes.delete(action);\n \n if (this.registryConfig?.debug && process.env.NODE_ENV === 'development') {\n console.log(`🎯 Execution mode reset for action '${String(action)}' to default: ${this.executionMode}`);\n }\n }\n\n /**\n * Clear execution statistics for all actions\n */\n clearExecutionStats(): void {\n this.executionStats.clear();\n \n if (this.registryConfig?.debug && process.env.NODE_ENV === 'development') {\n console.log(`🎯 Execution statistics cleared for registry: ${this.name}`);\n }\n }\n\n /**\n * Clear execution statistics for a specific action\n * \n * @param action Action name\n */\n clearActionExecutionStats<K extends keyof T>(action: K): void {\n this.executionStats.delete(action);\n \n if (this.registryConfig?.debug && process.env.NODE_ENV === 'development') {\n console.log(`🎯 Execution statistics cleared for action: ${String(action)}`);\n }\n }\n\n /**\n * Get registry configuration (for debugging and inspection)\n * \n * @returns Current registry configuration\n */\n getRegistryConfig(): ActionRegisterConfig['registry'] {\n return this.registryConfig;\n }\n\n /**\n * Check if registry has debug mode enabled\n * \n * @returns Whether debug mode is enabled\n */\n isDebugEnabled(): boolean {\n return Boolean(this.registryConfig?.debug && process.env.NODE_ENV === 'development');\n }\n}"],"x_google_ignoreList":[1,2,3,4],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcA,eAAsB,kBACpBA,SACAC,kBACe;CAEf,IAAI,IAAI;AAER,QAAO,IAAI,QAAQ,SAAS,QAAQ;AAElC,MAAI,QAAQ,WAAW,QAAQ,WAC7B;EAGF,MAAM,eAAe,QAAQ,SAAS;EACtC,QAAQ,eAAe;;AAGvB,MAAI,aAAa,OAAO,aAAa,CAAC,aAAa,OAAO,WAAW,EAAE;GACrE;AACA;EACD;;AAGD,MAAI,aAAa,OAAO,cAAc,CAAC,aAAa,OAAO,WAAW,QAAQ,QAAQ,EAAE;GACtF;AACA;EACD;EAED,MAAM,aAAa,iBAAiB,cAAc,EAAE;AAEpD,MAAI;AAEF,OAAI,QAAQ,QACV;GAGF,MAAM,SAAS,aAAa,QAAQ,QAAQ,SAAS,WAAW;;AAGhE,OAAI,aAAa,OAAO,YAAY,kBAAkB,SAAS;IAC7D,MAAM,gBAAgB,MAAM;;AAG5B,QAAI,kBAAkB,UAAa,CAAC,QAAQ,YAC1C,QAAQ,QAAQ,KAAK,cAAc;GAEtC,WAAU,WAAW,UAAa,CAAC,QAAQ;;AAE1C,OAAI,kBAAkB,SAEpB,OAAO,KAAK,iBAAe;AACzB,QAAI,gBAAgB,UAAa,CAAC,QAAQ,YACxC,QAAQ,QAAQ,KAAK,YAAY;GAEpC,EAAC,CAAC,MAAM,MAAM,CAEd,EAAC;QAEF,QAAQ,QAAQ,KAAK,OAAO;;AAKhC,OAAI,QAAQ,WACV;;AAIF,OAAI,QAAQ,mBAAmB,QAAW;IACxC,MAAM,YAAY,QAAQ,SAAS,UACjC,aAAW,QAAQ,OAAO,aAAa,QAAQ,eAChD;AAED,QAAI,cAAc,IAAI;KAEpB,IAAI;KACJ,QAAQ,iBAAiB;AACzB;IACD,OAAM;KAEL,QAAQ,iBAAiB;KACzB;IACD;GACF,OAEC;EAGH,SAAQC,OAAY;AACnB,OAAI,aAAa,OAAO,SACtB,OAAM;GAGR;EACD;CACF;AACF;;;;AAKD,eAAsB,gBACpBF,SACAC,kBACe;;CAGf,MAAM,mBAAmB,QAAQ,SAAS,OAAO,CAAC,cAAc,WAAW;;AAEzE,MAAI,aAAa,OAAO,aAAa,CAAC,aAAa,OAAO,WAAW,CACnE,QAAO;;AAIT,MAAI,aAAa,OAAO,cAAc,CAAC,aAAa,OAAO,WAAW,QAAQ,QAAQ,CACpF,QAAO;AAGT,SAAO;CACR,EAAC;;CAGF,MAAM,kBAAkB,iBAAiB,IAAI,OAAO,cAAc,WAAW;EAC3E,MAAM,aAAa,iBAAiB,cAAc,OAAO;AAEzD,MAAI;GACF,MAAM,SAAS,aAAa,QAAQ,QAAQ,SAAS,WAAW;GAEhE,IAAIE;AACJ,OAAI,kBAAkB,SACpB,gBAAgB,MAAM;QAEtB,gBAAgB;;AAIlB,OAAI,kBAAkB,UAAa,CAAC,QAAQ,YAC1C,QAAQ,QAAQ,KAAK,cAAc;AAGrC,UAAO;IACL,SAAS;IACT,WAAW,aAAa;IACxB,QAAQ;IACR,YAAY,QAAQ;GACrB;EAEF,SAAQD,OAAY;AACnB,OAAI,aAAa,OAAO,SACtB,OAAM;AAGR,UAAO;IAAE,SAAS;IAAO,WAAW,aAAa;IAAI;GAAO;EAC7D;CACF,EAAC;;CAGF,MAAM,UAAU,MAAM,QAAQ,WAAW,gBAAgB;;CAGzD,MAAM,WAAW,QAAQ,OAAO,CAAC,QAAQ,UAAU;AACjD,MAAI,OAAO,WAAW,YAAY;GAChC,MAAM,eAAe,iBAAiB;AACtC,UAAO,aAAa,OAAO;EAC5B;AACD,SAAO;CACR,EAAC;AAEF,KAAI,SAAS,SAAS,GAAG;EACvB,MAAM,eAAe,SAAS;AAC9B,QAAM,aAAa;CACpB;;CAGD,MAAM,oBAAoB,QAAQ,OAAO,YACvC,OAAO,WAAW,eAAe,OAAO,MAAM,WAC/C;AAED,KAAI,kBAAkB,SAAS,GAAG;EAChC,QAAQ,aAAa;EAGrB,MAAM,kBAAkB,kBAAkB;EAC1C,QAAQ,oBAAoB,gBAAgB,MAAM;CACnD;AACF;;;;AAKD,eAAsB,YACpBF,SACAC,kBACe;;CAGf,MAAM,mBAAmB,QAAQ,SAAS,OAAO,CAAC,cAAc,WAAW;;AAEzE,MAAI,aAAa,OAAO,aAAa,CAAC,aAAa,OAAO,WAAW,CACnE,QAAO;;AAIT,MAAI,aAAa,OAAO,cAAc,CAAC,aAAa,OAAO,WAAW,QAAQ,QAAQ,CACpF,QAAO;AAGT,SAAO;CACR,EAAC;AAEF,KAAI,iBAAiB,WAAW,EAC9B;;CAIF,MAAM,kBAAkB,iBAAiB,IAAI,OAAO,cAAc,WAAW;EAC3E,MAAM,aAAa,iBAAiB,cAAc,OAAO;AAEzD,MAAI;GACF,MAAM,SAAS,aAAa,QAAQ,QAAQ,SAAS,WAAW;GAEhE,IAAIE;AACJ,OAAI,kBAAkB,SACpB,gBAAgB,MAAM;QAEtB,gBAAgB;AAGlB,UAAO;IACL,SAAS;IACT,WAAW,aAAa;IACxB;IACA,QAAQ;IACR,YAAY,QAAQ;GACrB;EAEF,SAAQD,OAAY;AACnB,UAAO;IAAE,SAAS;IAAO,WAAW,aAAa;IAAI;IAAO;GAAc;EAC3E;CACF,EAAC;;CAGF,MAAM,SAAS,MAAM,QAAQ,KAAK,gBAAgB;;AAGlD,KAAI,CAAC,OAAO,WAAW,OAAO,cAAc,OAAO,SACjD,OAAM,OAAO;;AAIf,KAAI,OAAO,WAAW,OAAO,WAAW,QACtC,QAAQ,QAAQ,KAAK,OAAO,OAAO;;AAIrC,KAAI,OAAO,WAAW,OAAO,YAAY;EACvC,QAAQ,aAAa;EACrB,QAAQ,oBAAoB,OAAO;CACpC;AACF;;;;;CCjRD,SAASE,UAAQ,GAAG;AAClB;AAEA,SAAO,OAAO,UAAUA,YAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUC,KAAG;AACjH,UAAO,OAAOA;EACf,IAAG,SAAUA,KAAG;AACf,UAAOA,OAAK,cAAc,OAAO,UAAUA,IAAE,gBAAgB,UAAUA,QAAM,OAAO,YAAY,WAAW,OAAOA;EACnH,GAAE,OAAO,QAAQ,aAAa,MAAM,OAAO,QAAQ,aAAa,OAAO,SAASD,UAAQ,EAAE;CAC5F;CACD,OAAO,UAAUA,WAAS,OAAO,QAAQ,aAAa,MAAM,OAAO,QAAQ,aAAa,OAAO;;;;;;CCT/F,IAAIE,6BAAiC;CACrC,SAASC,cAAY,GAAG,GAAG;AACzB,MAAI,YAAYD,UAAQ,EAAE,IAAI,CAAC,EAAG,QAAO;EACzC,IAAI,IAAI,EAAE,OAAO;AACjB,MAAI,KAAK,MAAM,GAAG;GAChB,IAAI,IAAI,EAAE,KAAK,GAAG,KAAK,UAAU;AACjC,OAAI,YAAYA,UAAQ,EAAE,CAAE,QAAO;AACnC,SAAM,IAAI,UAAU;EACrB;AACD,UAAQ,aAAa,IAAI,SAAS,QAAQ,EAAE;CAC7C;CACD,OAAO,UAAUC,eAAa,OAAO,QAAQ,aAAa,MAAM,OAAO,QAAQ,aAAa,OAAO;;;;;;CCXnG,IAAI,2BAAiC;CACrC,IAAI;CACJ,SAASC,gBAAc,GAAG;EACxB,IAAI,IAAI,YAAY,GAAG,SAAS;AAChC,SAAO,YAAY,QAAQ,EAAE,GAAG,IAAI,IAAI;CACzC;CACD,OAAO,UAAUA,iBAAe,OAAO,QAAQ,aAAa,MAAM,OAAO,QAAQ,aAAa,OAAO;;;;;;CCNrG,IAAI;CACJ,SAASC,kBAAgB,GAAG,GAAG,GAAG;AAChC,UAAQ,IAAI,cAAc,EAAE,KAAK,IAAI,OAAO,eAAe,GAAG,GAAG;GAC/D,OAAO;GACP,YAAY,CAAC;GACb,cAAc,CAAC;GACf,UAAU,CAAC;EACZ,EAAC,GAAG,EAAE,KAAK,GAAG;CAChB;CACD,OAAO,UAAUA,mBAAiB,OAAO,QAAQ,aAAa,MAAM,OAAO,QAAQ,aAAa,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC+CvG,IAAa,cAAb,MAAyB;CAGvB,cAAc;6CAFN,0BAAS,IAAI;CAIpB;;;;;;;CAQD,MAAM,SAASC,WAAmBC,YAAsC;;EAGtE,IAAI,QAAQ,KAAK,OAAO,IAAI,UAAU;AACtC,MAAI,CAAC,OAAO;;GAEV,QAAQ;IACN,cAAc;IACd,aAAa;GACd;GACD,KAAK,OAAO,IAAI,WAAW,MAAM;EAClC;;;AAID,MAAI,MAAM,eACR,aAAa,MAAM,cAAc;;;AAKnC,SAAO,IAAI,QAAQ,CAAC,YAAY;GAC9B,MAAO,gBAAgB,WAAW,MAAM;;IAEtC,MAAO,gBAAgB;;IAEvB,MAAO,eAAe,KAAK,KAAK;IAChC,QAAQ,KAAK;GACd,GAAE,WAAW;EAEf;CACF;;;;;;;CAQD,SAASD,WAAmBE,YAA6B;;EAGvD,IAAI,QAAQ,KAAK,OAAO,IAAI,UAAU;AACtC,MAAI,CAAC,OAAO;;GAEV,QAAQ;IACN,cAAc;IACd,aAAa;GACd;GACD,KAAK,OAAO,IAAI,WAAW,MAAM;EAClC;EAED,MAAM,MAAM,KAAK,KAAK;EACtB,MAAM,yBAAyB,MAAM,MAAM;;;AAI3C,MAAI,0BAA0B,YAAY;;GAExC,MAAM,eAAe;GACrB,MAAM,cAAc;AAGpB,UAAO;EACR;;;AAID,MAAI,MAAM,YACR,QAAO;;;EAKT,MAAM,cAAc;EACpB,MAAM,gBAAgB,aAAa;;EAGnC,MAAM,gBAAgB,WAAW,MAAM;;GAErC,MAAO,cAAc;GACrB,MAAO,gBAAgB;EACxB,GAAE,cAAc;AAGjB,SAAO;CACR;;;;;CAMD,YAAYF,WAAyB;EAEnC,MAAM,QAAQ,KAAK,OAAO,IAAI,UAAU;AACxC,MAAI,OAAO;;AAET,OAAI,MAAM,eACR,aAAa,MAAM,cAAc;;AAGnC,OAAI,MAAM,eACR,aAAa,MAAM,cAAc;;GAGnC,KAAK,OAAO,OAAO,UAAU;EAE9B;CACF;;;;CAKD,WAAiB;;;AAIf,OAAK,MAAM,GAAG,MAAM,IAAI,KAAK,QAAQ;;AAEnC,OAAI,MAAM,eACR,aAAa,MAAM,cAAc;;AAGnC,OAAI,MAAM,eACR,aAAa,MAAM,cAAc;EAEpC;;EAGD,KAAK,OAAO,OAAO;CACpB;;;;;CAMD,cAAcA,WAA2C;AACvD,SAAO,KAAK,OAAO,IAAI,UAAU;CAClC;;;;CAKD,oBAA6C;AAC3C,SAAO,IAAI,IAAI,KAAK;CACrB;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxKD,IAAa,iBAAb,MAA2E;CAezE,YAAYG,SAA+B,CAAE,GAAE;2CAdvC,6BAAY,IAAI;2CAChB,kBAAiB;2CACR;2CACT,iBAA+B;2CAC/B,wCAAuB,IAAI;2CACnB;2CACC;2CACT,kCAAiB,IAAI;EAQ3B,KAAK,OAAO,OAAO,QAAQ;EAC3B,KAAK,iBAAiB,OAAO;EAC7B,KAAK,cAAc,IAAI;AAEvB,MAAI,KAAK,gBAAgB,sBACvB,KAAK,gBAAgB,KAAK,eAAe;AAG3C,MAAI,KAAK,gBAAgB,SAAS,QAAQ,IAAI,aAAa,eACzD,QAAQ,IAAI,CAAC,2BAA2B,EAAE,KAAK,MAAM,EAAE;GACrD,sBAAsB,KAAK;GAC3B,aAAa,KAAK,eAAe;GACjC,aAAa,KAAK,eAAe,eAAe;EACjD,EAAC;CAEL;CAED,SACEC,QACAC,SACAC,SAAwB,CAAE,GACN;EAIpB,MAAM,YAAY,OAAO,MAAM,CAAC,QAAQ,EAAE,EAAE,KAAK,eAAe,CAAC,EAAE,KAAK,QAAQ,CAAC,SAAS,GAAG,CAAC,OAAO,GAAG,EAAE,EAAE;EAG5G,MAAMC,eAA6C;GACjD;GACA,QAAQ;IAEN,UAAU,OAAO,YAAY;IAC7B,IAAI;IACJ,UAAU,OAAO,YAAY;IAC7B,MAAM,OAAO,QAAQ;IACrB,WAAW,OAAO,cAAc,MAAM;IACtC,UAAU,OAAO,YAAY;IAC7B,UAAU,OAAO,YAAY;IAC7B,YAAY,OAAO,cAAc;IACjC,YAAY,OAAO,cAAc;IAGjC,MAAM,OAAO,QAAQ,CAAE;IACvB,UAAU,OAAO,YAAY;IAC7B,aAAa,OAAO,eAAe;IACnC,SAAS,OAAO,WAAW;IAC3B,YAAY,OAAO,cAAc;IACjC,SAAS,OAAO,WAAW;IAC3B,SAAS,OAAO,WAAW;IAC3B,cAAc,OAAO,gBAAgB,CAAE;IACvC,WAAW,OAAO,aAAa,CAAE;IACjC,aAAa,OAAO,eAAe;IACnC,SAAS,OAAO,WAAW;IAC3B,SAAS,OAAO,WAAW;KACzB,eAAe;KACf,eAAe;KACf,eAAe,CAAE;IAClB;IACD,UAAU,OAAO,YAAY,CAAE;GAChC;GACD,IAAI;EACL;AAGD,MAAI,CAAC,KAAK,UAAU,IAAI,OAAO,EAC7B,KAAK,UAAU,IAAI,QAAQ,CAAE,EAAC;EAGhC,MAAM,WAAW,KAAK,UAAU,IAAI,OAAO;EAG3C,MAAM,gBAAgB,SAAS,UAAU,SAAO,IAAI,OAAO,UAAU;AACrE,MAAI,kBAAkB,GAEpB,QAAO,MAAM,CAAE;AAIjB,MAAI,KAAK,gBAAgB,eAAe,SAAS,UAAU,KAAK,eAAe,YAC7E,OAAM,IAAI,MACR,CAAC,4BAA4B,EAAE,KAAK,eAAe,YAAY,sBAAsB,EAAE,OAAO,OAAO,CAAC,eAAe,EAAE,KAAK,KAAK,CAAC,CAAC;EAKvI,SAAS,KAAK,aAAa;EAG3B,SAAS,KAAK,CAAC,GAAG,MAAM,EAAE,OAAO,WAAW,EAAE,OAAO,SAAS;AAE9D,MAAI,KAAK,gBAAgB,SAAS,QAAQ,IAAI,aAAa,eACzD,QAAQ,IAAI,CAAC,uBAAuB,EAAE,OAAO,OAAO,EAAE,EAAE;GACtD;GACA,UAAU,OAAO;GACjB,MAAM,OAAO;GACb,UAAU,OAAO;GACjB,eAAe,SAAS;GACxB,UAAU,KAAK;EAChB,EAAC;AAIJ,SAAO,MAAM;GACX,MAAM,QAAQ,SAAS,UAAU,CAAC,QAAQ,IAAI,OAAO,aAAa,QAAQ,aAAa;AACvF,OAAI,UAAU,IAAI;IAChB,SAAS,OAAO,OAAO,EAAE;AAEzB,QAAI,KAAK,gBAAgB,SAAS,QAAQ,IAAI,aAAa,eACzD,QAAQ,IAAI,CAAC,yBAAyB,EAAE,OAAO,OAAO,EAAE,EAAE;KACxD;KACA,mBAAmB,SAAS;KAC5B,UAAU,KAAK;IAChB,EAAC;GAEL;EACF;CACF;CAED,MAAM,SACJH,QACAI,SACAC,SACe;EAEf,IAAIC;EACJ,IAAI,kBAAkB,SAAS;AAE/B,MAAI,SAAS,WAAW,SAAS;GAC/B,sBAAsB,IAAI;GAC1B,kBAAkB,oBAAoB;AAGtC,OAAI,QAAQ,UAAU,qBACpB,QAAQ,UAAU,oBAAoB,oBAAoB;AAI5D,OAAI,SAAS,QAAQ;IACnB,MAAM,iBAAiB,QAAQ;AAC/B,QAAI,eAAe,SACjB,oBAAoB,OAAO;SACtB;KACL,MAAMC,iBAAe,MAAM,oBAAqB,OAAO;KACvD,eAAe,iBAAiB,SAASA,gBAAc,EAAE,MAAM,KAAM,EAAC;IACvE;GACF;EACF;AAGD,MAAI,iBAAiB,QACnB;EAGF,MAAM,WAAW,KAAK,UAAU,IAAI,OAAO;AAC3C,MAAI,CAAC,YAAY,SAAS,WAAW,EACnC;EAIF,MAAM,mBAAmB,KAAK,eAAe,CAAC,GAAG,QAAS,GAAE,SAAS,OAAO;EAG5E,MAAM,YAAY,OAAO,OAAO;EAGhC,IAAIC;EACJ,IAAIC;AAGJ,MAAI,SAAS,aAAa,QACxB,aAAa,QAAQ;WACZ,iBAAiB,SAAS,GAEnC;QAAK,MAAM,WAAW,iBACpB,KAAI,QAAQ,OAAO,aAAa,QAAW;IACzC,aAAa,QAAQ,OAAO;AAC5B;GACD;EACF;AAGH,MAAI,SAAS,aAAa,QACxB,aAAa,QAAQ;WACZ,iBAAiB,SAAS,GAEnC;QAAK,MAAM,WAAW,iBACpB,KAAI,QAAQ,OAAO,aAAa,QAAW;IACzC,aAAa,QAAQ,OAAO;AAC5B;GACD;EACF;AAIH,MAAI,eAAe,QAAW;GAC5B,MAAM,gBAAgB,MAAM,KAAK,YAAY,SAAS,WAAW,WAAW;AAC5E,OAAI,CAAC,cACH;EAEH;AAGD,MAAI,eAAe,QAAW;GAC5B,MAAM,gBAAgB,KAAK,YAAY,SAAS,WAAW,WAAW;AACtE,OAAI,CAAC,cACH;EAEH;EAGD,MAAM,uBAAuB,SAAS,iBACV,KAAK,qBAAqB,IAAI,OAAO,IACrC,KAAK;EAGjC,MAAMC,UAAsC;GAC1C,QAAQ,OAAO,OAAO;GACb;GACT,UAAU;GACV,SAAS;GACT,aAAa;GACb,cAAc;GACd,gBAAgB;GAChB,eAAe;GAGf,SAAS,CAAE;GACX,YAAY;GACZ,mBAAmB;EACpB;EAED,MAAM,YAAY,KAAK,KAAK;EAC5B,IAAI,mBAAmB;EAGvB,MAAM,eAAe,kBAAkB,MAAM;GAC3C,QAAQ,UAAU;GAClB,QAAQ,cAAc;EACvB,IAAG;AAEJ,MAAI,mBAAmB,cACrB,gBAAgB,iBAAiB,SAAS,aAAa;AAGzD,MAAI;GACF,MAAM,KAAK,gBAAgB,SAAS,qBAAqB,SAAS,UAAU;EAC7E,SAAQ,OAAO;GACd,mBAAmB;AACnB,SAAM;EACP,UAAS;AAER,OAAI,mBAAmB,cACrB,gBAAgB,oBAAoB,SAAS,aAAa;GAG5D,MAAM,WAAW,KAAK,KAAK,GAAG;GAC9B,KAAK,qBAAqB,QAAQ,kBAAkB,SAAS;EAC9D;CACF;CAED,MAAM,mBACJV,QACAI,SACAC,SAC6B;EAC7B,MAAM,YAAY,KAAK,KAAK;EAG5B,IAAIC;EACJ,IAAI,kBAAkB,SAAS;AAE/B,MAAI,SAAS,WAAW,SAAS;GAC/B,sBAAsB,IAAI;GAC1B,kBAAkB,oBAAoB;AAGtC,OAAI,QAAQ,UAAU,qBACpB,QAAQ,UAAU,oBAAoB,oBAAoB;AAI5D,OAAI,SAAS,QAAQ;IACnB,MAAM,iBAAiB,QAAQ;AAC/B,QAAI,eAAe,SACjB,oBAAoB,OAAO;SACtB;KACL,MAAMC,iBAAe,MAAM,oBAAqB,OAAO;KACvD,eAAe,iBAAiB,SAASA,gBAAc,EAAE,MAAM,KAAM,EAAC;IACvE;GACF;EACF;AAGD,MAAI,iBAAiB,QACnB,QAAO;GACL,SAAS;GACT,SAAS;GACT,aAAa;GACb,YAAY;GACZ,QAAQ;GACR,SAAS,CAAE;GACX,WAAW;IACT,UAAU;IACV,kBAAkB;IAClB,iBAAiB;IACjB,gBAAgB;IAChB;IACA,SAAS;GACV;GACD,UAAU,CAAE;GACZ,QAAQ,CAAE;EACX;EAGH,MAAM,WAAW,KAAK,UAAU,IAAI,OAAO;AAE3C,MAAI,CAAC,YAAY,SAAS,WAAW,EACnC,QAAO;GACL,SAAS;GACT,SAAS;GACT,YAAY;GACZ,QAAQ;GACR,SAAS,CAAE;GACX,WAAW;IACT,UAAU;IACV,kBAAkB;IAClB,iBAAiB;IACjB,gBAAgB;IAChB;IACA,SAAS;GACV;GACD,UAAU,CAAE;GACZ,QAAQ,CAAE;EACX;EAIH,MAAM,mBAAmB,KAAK,eAAe,CAAC,GAAG,QAAS,GAAE,SAAS,OAAO;EAG5E,MAAM,YAAY,OAAO,OAAO;EAGhC,IAAIC;EACJ,IAAIC;AAGJ,MAAI,SAAS,aAAa,QACxB,aAAa,QAAQ;WACZ,iBAAiB,SAAS,GAEnC;QAAK,MAAM,WAAW,iBACpB,KAAI,QAAQ,OAAO,aAAa,QAAW;IACzC,aAAa,QAAQ,OAAO;AAC5B;GACD;EACF;AAGH,MAAI,SAAS,aAAa,QACxB,aAAa,QAAQ;WACZ,iBAAiB,SAAS,GAEnC;QAAK,MAAM,WAAW,iBACpB,KAAI,QAAQ,OAAO,aAAa,QAAW;IACzC,aAAa,QAAQ,OAAO;AAC5B;GACD;EACF;AAIH,MAAI,eAAe,QAAW;GAC5B,MAAM,gBAAgB,MAAM,KAAK,YAAY,SAAS,WAAW,WAAW;AAC5E,OAAI,CAAC,cACH,QAAO;IACL,SAAS;IACT,SAAS;IACT,aAAa;IACb,YAAY;IACZ,QAAQ;IACR,SAAS,CAAE;IACX,WAAW;KACT,UAAU,KAAK,KAAK,GAAG;KACvB,kBAAkB;KAClB,iBAAiB,SAAS;KAC1B,gBAAgB;KAChB;KACA,SAAS,KAAK,KAAK;IACpB;IACD,UAAU,CAAE;IACZ,QAAQ,CAAE;GACX;EAEJ;AAGD,MAAI,eAAe,QAAW;GAC5B,MAAM,gBAAgB,KAAK,YAAY,SAAS,WAAW,WAAW;AACtE,OAAI,CAAC,cACH,QAAO;IACL,SAAS;IACT,SAAS;IACT,aAAa;IACb,YAAY;IACZ,QAAQ;IACR,SAAS,CAAE;IACX,WAAW;KACT,UAAU,KAAK,KAAK,GAAG;KACvB,kBAAkB;KAClB,iBAAiB,SAAS;KAC1B,gBAAgB;KAChB;KACA,SAAS,KAAK,KAAK;IACpB;IACD,UAAU,CAAE;IACZ,QAAQ,CAAE;GACX;EAEJ;EAGD,MAAM,uBAAuB,SAAS,iBACV,KAAK,qBAAqB,IAAI,OAAO,IACrC,KAAK;EAGjC,MAAME,UAAoC;GACxC,QAAQ,OAAO,OAAO;GACb;GACT,UAAU;GACV,SAAS;GACT,aAAa;GACb,cAAc;GACd,gBAAgB;GAChB,eAAe;GAGf,SAAS,CAAE;GACX,YAAY;GACZ,mBAAmB;EACpB;EAED,IAAIC;EACJ,MAAMC,iBAOD,CAAE;EAEP,MAAMC,SAID,CAAE;EAGP,MAAM,eAAe,kBAAkB,MAAM;GAC3C,QAAQ,UAAU;GAClB,QAAQ,cAAc;EACvB,IAAG;AAEJ,MAAI,mBAAmB,cACrB,gBAAgB,iBAAiB,SAAS,aAAa;AAGzD,MAAI;GACF,MAAM,KAAK,gBAAgB,SAAS,qBAAqB,SAAS,UAAU;EAC7E,SAAQ,OAAO;GACd,iBAAiB,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,MAAM;GACzE,OAAO,KAAK;IACV,WAAW;IACX,OAAO;IACP,WAAW,KAAK,KAAK;GACtB,EAAC;EACH,UAAS;AAER,OAAI,mBAAmB,cACrB,gBAAgB,oBAAoB,SAAS,aAAa;EAE7D;EAED,MAAM,UAAU,KAAK,KAAK;EAC1B,MAAM,mBAAmB,CAAC,kBAAkB,CAAC,QAAQ;EAGrD,KAAK,qBAAqB,QAAQ,kBAAkB,UAAU,UAAU;EAGxE,MAAM,kBAAkB,KAAK,eAAe,SAAS,SAAS,OAAO;EAGrE,MAAMC,kBAAsC;GAC1C,SAAS,CAAC,kBAAkB,CAAC,QAAQ;GACrC,SAAS,QAAQ;GACjB,aAAa,QAAQ;GACrB,YAAY,QAAQ;GACpB,QAAQ;GACR,SAAS,QAAQ;GACjB,WAAW;IACT,UAAU,UAAU;IACpB,kBAAkB,QAAQ,gBAAgB,QAAQ,UAAU,IAAI;IAChE,iBAAiB,KAAK,IAAI,GAAG,iBAAiB,UAAU,QAAQ,eAAe,GAAG;IAClF,gBAAgB,OAAO;IACvB;IACA;GACD;GACD,UAAU;GACV;EACD;;EAGD,KAAK,uBAAuB,QAAQ,QAAQ,SAAS;AAErD,SAAO;CACR;CAED,AAAQ,eACNC,UACAC,eACkC;AAClC,MAAI,CAAC,cACH,QAAO;AAGT,SAAO,SAAS,OAAO,kBAAgB;GACrC,MAAM,SAAS,aAAa;AAG5B,OAAI,cAAc,QAAQ,cAAc,KAAK,SAAS,GAAG;IACvD,MAAM,iBAAiB,cAAc,KAAK,KAAK,SAAO,OAAO,KAAK,SAAS,IAAI,CAAC;AAChF,QAAI,CAAC,eAAgB,QAAO;GAC7B;AAED,OAAI,cAAc,YAAY,OAAO,aAAa,cAAc,SAC9D,QAAO;AAGT,OAAI,cAAc,cAAc,cAAc,WAAW,SAAS,GAChE;QAAI,CAAC,cAAc,WAAW,SAAS,OAAO,GAAG,CAC/C,QAAO;GACR;AAGH,OAAI,cAAc,eAAe,OAAO,gBAAgB,cAAc,YACpE,QAAO;AAGT,OAAI,cAAc,WAAW,OAAO,YAAY,cAAc,QAC5D,QAAO;AAIT,OAAI,cAAc,eAAe,cAAc,YAAY,SAAS,GAAG;IACrE,MAAM,iBAAiB,cAAc,YAAY,KAAK,SAAO,OAAO,KAAK,SAAS,IAAI,CAAC;AACvF,QAAI,eAAgB,QAAO;GAC5B;AAED,OAAI,cAAc,mBAAmB,OAAO,aAAa,cAAc,gBACrE,QAAO;AAGT,OAAI,cAAc,qBAAqB,cAAc,kBAAkB,SAAS,GAC9E;QAAI,cAAc,kBAAkB,SAAS,OAAO,GAAG,CACrD,QAAO;GACR;AAIH,OAAI,cAAc,UAAU,CAAC,cAAc,OAAO,OAAO,CACvD,QAAO;AAGT,UAAO;EACR,EAAC;CACH;CAED,AAAQ,eACNC,SACAC,eACe;AACf,MAAI,CAAC,iBAAiB,CAAC,cAAc,QACnC,QAAO;EAGT,MAAM,UAAU,QAAQ;AAGxB,MAAI,QAAQ,cAAc,QAAQ,sBAAsB,OACtD,QAAO,QAAQ;EAIjB,MAAM,iBAAiB,cAAc,aACjC,QAAQ,MAAM,GAAG,cAAc,WAAW,GAC1C;AAEJ,MAAI,eAAe,WAAW,EAC5B,QAAO;AAIT,UAAQ,cAAc,UAAtB;GACE,KAAK,QACH,QAAO,eAAe;GACxB,KAAK,OACH,QAAO,eAAe,eAAe,SAAS;GAChD,KAAK,MACH,QAAO;GACT,KAAK;AACH,QAAI,cAAc,OAChB,QAAO,cAAc,OAAO,eAAe;AAG7C,WAAO,eAAe,eAAe,SAAS;GAChD,KAAK;AACH,QAAI,cAAc,OAChB,QAAO,cAAc,OAAO,eAAe;AAE7C,UAAM,IAAI,MAAM;GAClB,QAEE,QAAO;EACV;CACF;CAED,MAAc,gBACZT,SACAU,qBACAC,kBACe;EACf,MAAM,mBAAmB,CAACC,eAA+CC,WAAkD;AACzH,UAAO;IACL,OAAO,CAACC,WAAoB;KAC1B,QAAQ,UAAU;KAClB,QAAQ,cAAc;AAGtB,SAAI,uBAAuB,kBAAkB,mBAC3C,oBAAoB,MAAM,OAAO;IAEpC;IACD,eAAe,CAACC,aAAsC;KACpD,QAAQ,UAAU,SAAS,QAAQ,QAAQ;IAC5C;IACD,YAAY,MAAM,QAAQ;IAC1B,gBAAgB,CAACC,aAAqB;KACpC,QAAQ,iBAAiB;IAC1B;IACD,QAAQ,CAACC,WAAgB;KACvB,QAAQ,aAAa;KACrB,QAAQ,oBAAoB;IAC7B;IACD,WAAW,CAACA,WAAgB;KAC1B,QAAQ,QAAQ,KAAK,OAAO;IAC7B;IACD,YAAY,MAAM;AAChB,YAAO,CAAC,GAAG,QAAQ,OAAQ;IAC5B;IACD,aAAa,CAACC,WAAgE;KAC5E,MAAM,gBAAgB,QAAQ,QAAQ,QAAQ,QAAQ,SAAS;KAC/D,MAAM,kBAAkB,QAAQ,QAAQ,MAAM,GAAG,GAAG;KACpD,MAAM,eAAe,OAAO,iBAAiB,cAAc;KAC3D,QAAQ,QAAQ,QAAQ,QAAQ,SAAS,KAAK;IAC/C;GACF;EACF;AAED,UAAQ,QAAQ,eAAhB;GACE,KAAK;IACH,MAAM,kBAA6B,SAAS,iBAAiB;AAC7D;GACF,KAAK;IACH,MAAM,gBAA2B,SAAS,iBAAiB;AAC3D;GACF,KAAK;IACH,MAAM,YAAuB,SAAS,iBAAiB;AACvD;GACF,QACE,OAAM,IAAI,MAAM,CAAC,wBAAwB,EAAE,QAAQ,eAAe;EACrE;EAED,KAAK,uBAAuB,QAAQ,QAAa,QAAQ,SAAS;CACnE;CAED,AAAQ,uBAA0C5B,QAAW6B,kBAA0D;EACrH,MAAM,WAAW,KAAK,UAAU,IAAI,OAAO;AAC3C,MAAI,CAAC,SAAU;EAEf,MAAM,kBAAkB,iBAAiB,OAAO,SAAO,IAAI,OAAO,KAAK;AACvE,MAAI,gBAAgB,WAAW,EAAG;EAElC,gBAAgB,QAAQ,kBAAgB;GACtC,MAAM,QAAQ,SAAS,UAAU,SAAO,IAAI,OAAO,aAAa,GAAG;AACnE,OAAI,UAAU,IAAI;IAChB,SAAS,OAAO,OAAO,EAAE;AAEzB,QAAI,KAAK,gBAAgB,SAAS,QAAQ,IAAI,aAAa,eACzD,QAAQ,IAAI,CAAC,6BAA6B,EAAE,OAAO,OAAO,EAAE,EAAE;KAC5D,WAAW,aAAa;KACxB,mBAAmB,SAAS;KAC5B,UAAU,KAAK;IAChB,EAAC;GAEL;EACF,EAAC;CACH;;;;;;;;CASD,AAAQ,qBAAwC7B,QAAW8B,SAAkBC,UAAwB;AACnG,MAAI,CAAC,KAAK,eAAe,IAAI,OAAO,EAClC,KAAK,eAAe,IAAI,QAAQ;GAC9B,iBAAiB;GACjB,eAAe;GACf,cAAc;GACd,YAAY;EACb,EAAC;EAGJ,MAAM,QAAQ,KAAK,eAAe,IAAI,OAAO;EAC7C,MAAM;EACN,MAAM,iBAAiB;AAEvB,MAAI,SACF,MAAM;OAEN,MAAM;CAET;CAED,gBAAmC/B,QAAmB;EACpD,MAAM,WAAW,KAAK,UAAU,IAAI,OAAO;AAC3C,SAAO,WAAW,SAAS,SAAS;CACrC;CAED,YAA+BA,QAAoB;AACjD,SAAO,KAAK,gBAAgB,OAAO,GAAG;CACvC;CAED,uBAAoC;AAClC,SAAO,MAAM,KAAK,KAAK,UAAU,MAAM,CAAC;CACzC;CAED,YAA+BA,QAAiB;EAC9C,KAAK,UAAU,OAAO,OAAO;CAC9B;CAED,WAAiB;EACf,KAAK,UAAU,OAAO;CACvB;CAED,UAAkB;AAChB,SAAO,KAAK;CACb;;;;;;CAOD,kBAAyC;EACvC,MAAM,gBAAgB,MAAM,KAAK,KAAK,UAAU,QAAQ,CAAC,CAAC,OACxD,CAAC,OAAO,aAAa,QAAQ,SAAS,QACtC,EACD;AAED,SAAO;GACL,MAAM,KAAK;GACX,cAAc,KAAK,UAAU;GAC7B;GACA,mBAAmB,MAAM,KAAK,KAAK,UAAU,MAAM,CAAC;GACpD,sBAAsB,IAAI,IAAI,KAAK;GACnC,sBAAsB,KAAK;EAC5B;CACF;;;;;;;CAQD,eAAkCA,QAAyC;EACzE,MAAM,WAAW,KAAK,UAAU,IAAI,OAAO;AAC3C,MAAI,CAAC,SACH,QAAO;EAIT,MAAM,8BAAc,IAAI;EACxB,SAAS,QAAQ,aAAW;AAC1B,OAAI,CAAC,YAAY,IAAI,QAAQ,OAAO,SAAS,EAC3C,YAAY,IAAI,QAAQ,OAAO,UAAU,CAAE,EAAC;GAE9C,YAAY,IAAI,QAAQ,OAAO,SAAS,CAAE,KAAK,QAAQ;EACxD,EAAC;EAEF,MAAM,qBAAqB,MAAM,KAAK,YAAY,SAAS,CAAC,CACzD,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE,CACzB,IAAI,CAAC,CAAC,UAAU,SAAS,MAAM;GAC9B;GACA,UAAU,SAAS,IAAI,QAAM;IAC3B,IAAI,EAAE,OAAO;IACb,MAAM,EAAE,OAAO;IACf,UAAU,EAAE,OAAO;IACnB,aAAa,EAAE,OAAO;IACtB,SAAS,EAAE,OAAO;GACnB,GAAE;EACJ,GAAE;EAGL,MAAM,QAAQ,KAAK,eAAe,IAAI,OAAO;EAC7C,MAAM,iBAAiB,QAAQ;GAC7B,iBAAiB,MAAM;GACvB,iBAAiB,MAAM,kBAAkB,IAAI,MAAM,gBAAgB,MAAM,kBAAkB;GAC3F,aAAa,MAAM,kBAAkB,IAAK,MAAM,eAAe,MAAM,kBAAmB,MAAM;GAC9F,YAAY,MAAM;EACnB,IAAG;AAEJ,SAAO;GACL;GACA,cAAc,SAAS;GACvB;GACA;EACD;CACF;;;;;;CAOD,oBAAkD;AAChD,SAAO,MAAM,KAAK,KAAK,UAAU,MAAM,CAAC,CACrC,IAAI,YAAU,KAAK,eAAe,OAAO,CAAC,CAC1C,OAAO,CAAC,UAA0C,UAAU,KAAK;CACrE;;;;;;;CAQD,iBAAiBgC,KAA4D;EAC3E,MAAM,yBAAS,IAAI;AAEnB,OAAK,MAAM,CAAC,QAAQ,SAAS,IAAI,KAAK,UAAU,SAAS,EAAE;GACzD,MAAM,mBAAmB,SAAS,OAAO,aACvC,QAAQ,OAAO,KAAK,SAAS,IAAI,CAClC;AAED,OAAI,iBAAiB,SAAS,GAC5B,OAAO,IAAI,QAAQ,iBAAiB;EAEvC;AAED,SAAO;CACR;;;;;;;CAQD,sBAAsBC,UAAiE;EACrF,MAAM,yBAAS,IAAI;AAEnB,OAAK,MAAM,CAAC,QAAQ,SAAS,IAAI,KAAK,UAAU,SAAS,EAAE;GACzD,MAAM,mBAAmB,SAAS,OAAO,aACvC,QAAQ,OAAO,aAAa,SAC7B;AAED,OAAI,iBAAiB,SAAS,GAC5B,OAAO,IAAI,QAAQ,iBAAiB;EAEvC;AAED,SAAO;CACR;;;;;;;CAQD,uBAA0CjC,QAAWkC,MAA2B;EAC9E,KAAK,qBAAqB,IAAI,QAAQ,KAAK;AAE3C,MAAI,KAAK,gBAAgB,SAAS,QAAQ,IAAI,aAAa,eACzD,QAAQ,IAAI,CAAC,kCAAkC,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC;CAE/E;;;;;;;CAQD,uBAA0ClC,QAA0B;AAClE,SAAO,KAAK,qBAAqB,IAAI,OAAO,IAAI,KAAK;CACtD;;;;;;CAOD,0BAA6CA,QAAiB;EAC5D,KAAK,qBAAqB,OAAO,OAAO;AAExC,MAAI,KAAK,gBAAgB,SAAS,QAAQ,IAAI,aAAa,eACzD,QAAQ,IAAI,CAAC,oCAAoC,EAAE,OAAO,OAAO,CAAC,cAAc,EAAE,KAAK,eAAe,CAAC;CAE1G;;;;CAKD,sBAA4B;EAC1B,KAAK,eAAe,OAAO;AAE3B,MAAI,KAAK,gBAAgB,SAAS,QAAQ,IAAI,aAAa,eACzD,QAAQ,IAAI,CAAC,8CAA8C,EAAE,KAAK,MAAM,CAAC;CAE5E;;;;;;CAOD,0BAA6CA,QAAiB;EAC5D,KAAK,eAAe,OAAO,OAAO;AAElC,MAAI,KAAK,gBAAgB,SAAS,QAAQ,IAAI,aAAa,eACzD,QAAQ,IAAI,CAAC,4CAA4C,EAAE,OAAO,OAAO,EAAE,CAAC;CAE/E;;;;;;CAOD,oBAAsD;AACpD,SAAO,KAAK;CACb;;;;;;CAOD,iBAA0B;AACxB,SAAO,QAAQ,KAAK,gBAAgB,SAAS,QAAQ,IAAI,aAAa,cAAc;CACrF;AACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@context-action/core",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "type": "module",
5
5
  "description": "Type-safe action pipeline management library for JavaScript/TypeScript",
6
6
  "main": "dist/index.cjs",
@@ -27,12 +27,14 @@
27
27
  "scripts": {
28
28
  "build": "tsdown",
29
29
  "build:watch": "tsdown --watch",
30
- "test": "jest --passWithNoTests",
30
+ "test": "jest",
31
31
  "test:watch": "jest --watch",
32
+ "test:coverage": "jest --coverage",
33
+ "test:ci": "jest --ci --coverage --maxWorkers=2",
32
34
  "lint": "eslint src --ext .ts",
33
35
  "lint:fix": "eslint src --ext .ts --fix",
34
36
  "type-check": "tsc --noEmit",
35
- "clean": "rimraf dist",
37
+ "clean": "rimraf dist coverage",
36
38
  "prepublishOnly": "pnpm run build"
37
39
  },
38
40
  "keywords": [