funx 1.2.1
funx: ^1.2.1 copied to clipboard
Composable function decorators for advanced execution control and reliability.
1.2.1 #
- Priority Queue: Priority-based execution ordering
PriorityQueueExtension<T, R>forFunc1<T, R>PriorityQueueExtension2<T1, T2, R>forFunc2<T1, T2, R>- Priority extraction via
priorityFnfunction - Configurable parameters:
maxQueueSize: Queue capacity limit (default: 1000)maxConcurrent: Parallel execution limit (default: 1)starvationPrevention: Auto-boost waiting items (default: true)
- Four queue overflow policies:
QueueFullPolicy.dropLowestPriority: Remove lowest priority itemQueueFullPolicy.dropNew: Reject incoming itemQueueFullPolicy.error: Throw StateErrorQueueFullPolicy.waitForSpace: Block until capacity available
- Starvation prevention with 5-second threshold
- Callbacks:
onItemDropped,onStarvationPrevention - Status queries:
queueLength,activeCount - Support for integer, fractional, and negative priorities
- Automatic priority-based sorting (highest first)
1.1.0 #
-
Scheduling: Time-based function execution control
- Schedule: Execute functions at specific times or recurring intervals
ScheduleExtension,ScheduleExtension1,ScheduleExtension2,ScheduleExtensionSyncfor all function types- Three scheduling modes:
ScheduleMode.once: Execute at specific DateTimeScheduleMode.recurring: Execute at fixed intervalsScheduleMode.custom: Custom scheduling logic with scheduler function
- Missed execution policies:
MissedExecutionPolicy.skip: Skip missed executionsMissedExecutionPolicy.executeImmediately: Execute immediately when missedMissedExecutionPolicy.catchUp: Execute all missed occurrencesMissedExecutionPolicy.reschedule: Reschedule from current time
- Subscription-based lifecycle control (pause, resume, cancel)
- Execution tracking with iteration count and timestamps
- Optional
maxIterationslimit - Optional
stopConditionpredicate - Callbacks:
onTick,onMissedExecution,onScheduleError executeImmediatelyoption for recurring schedules
- Schedule: Execute functions at specific times or recurring intervals
-
Backpressure: Control function execution under high load
BackpressureExtension<T, R>forFunc1<T, R>BackpressureExtension2<T1, T2, R>forFunc2<T1, T2, R>- Six backpressure strategies:
BackpressureStrategy.drop: Reject new requests when busyBackpressureStrategy.dropOldest: Remove oldest buffered item for new onesBackpressureStrategy.buffer: Queue requests up to buffer limitBackpressureStrategy.sample: Probabilistic acceptance based on sample rateBackpressureStrategy.throttle: Queue and process sequentiallyBackpressureStrategy.error: Throw exception immediately when busy
- Configurable parameters:
bufferSize: Maximum buffered items (default: 100)maxConcurrent: Maximum concurrent executions (default: 10)sampleRate: Sample acceptance rate 0.0-1.0 (default: 0.1)
- Callbacks:
onOverflow,onBufferFull - Status queries:
bufferSize,activeExecutions,isUnderPressure - Automatic buffer management and cleanup
1.0.0 #
- Complete implementation of all functional programming utilities
- Categories: error handling, concurrency, performance, reliability, timing, transformation, validation, observability, orchestration, state management, control flow
- Comprehensive test coverage
- Full documentation with examples
- Benchmarks and performance analysis
0.11.0 #
- State: State management and snapshots
- Snapshot: Capture and restore function state
SnapshotExtension,SnapshotExtension1,SnapshotExtension2forFunc,Func1,Func2- State capture before execution
- State restoration capabilities
- Custom snapshot and restore functions
- Support for complex state management
- Automatic state tracking
- Manual snapshot creation and restoration
- Snapshot: Capture and restore function state
0.10.0 #
- Orchestration: Complex function coordination and execution patterns
-
Race: Execute multiple functions, return first successful result
RaceExtension,RaceExtension1,RaceExtension2forFunc,Func1,Func2- Parallel execution with
Future.any - Returns first successful result
- Cancels remaining operations
- Configurable list of racing functions
- Error handling for all failures
-
All: Execute multiple functions, return all results or fail if any fails
AllExtension,AllExtension1,AllExtension2forFunc,Func1,Func2- Parallel execution with
Future.wait - Collects all successful results
- Fails if any function fails
- Configurable list of functions to execute
- Maintains execution order in results
-
Saga: Distributed transaction pattern with compensating actions
Sagaclass for orchestrating multi-step transactionsSagaStepfor defining transaction steps- Forward execution with automatic rollback on failure
- Compensating transactions for each step
- Step-by-step execution tracking
- Automatic compensation on failure
SagaExtension,SagaExtension1,SagaExtension2for wrapping functions in saga context
-
0.9.0 #
- Observability: Function execution monitoring and audit trails
-
Tap: Side-effect observation without modifying results
TapExtension,TapExtension1,TapExtension2forFunc,Func1,Func2onValuecallback for successful executionsonErrorcallback for failures with stack traces- Non-intrusive observation pattern
- Useful for logging and debugging
- Preserves original function behavior
-
Monitor: Comprehensive execution metrics and monitoring
MonitorExtensionwith global instance supportMonitorExtension1,MonitorExtension2forFunc1andFunc2- Tracks total calls, successes, and failures
- Measures min/max/average execution duration
- Calculates success/failure rates
- Real-time metrics collection
getMetrics()for retrieving statistics- Thread-safe metric updates
-
Audit: Detailed execution logging and audit trails
AuditExtension1,AuditExtension2forFunc1andFunc2AuditLog<T, R>class for log entries- Records arguments, results, errors, and timing
- Configurable maximum log retention
onAuditcallback for custom audit handlers- Retrieval of all logs, success logs, or failure logs
- Support for compliance and security auditing
-
0.8.0 #
- Transformation: Function result and call manipulation
-
Proxy: Intercept and modify function calls
ProxyExtension,ProxyExtension1,ProxyExtension2forFunc,Func1,Func2beforeCallcallback executed before function invocationafterCallcallback to transform results after executiontransformArg/transformArgsto modify arguments before executiononErrorcallback for error handling with stack trace- All callbacks optional for flexible interception
-
Transform: Transform function results to different types
TransformExtension,TransformExtension1,TransformExtension2- Generic type transformation via mapper function
- Chainable transformations for complex pipelines
- Support for async mappers
- Type-safe result conversion
-
Merge: Combine results from multiple function sources
MergeExtension1,MergeExtension2forFunc1andFunc2- Parallel execution with
Future.wait - Combiner function for result aggregation
- Support for multiple source functions
- Maintains source execution order in results
-
0.7.0 #
- Control Flow: Advanced execution control patterns
-
Switch: Dynamic function selection based on selector
SwitchExtension1,SwitchExtension2forFunc1andFunc2SwitchExceptionthrown when no case matches and no default provided- Selector function determines which case to execute
- Map of cases for different selector values
- Optional default case for fallback behavior
-
Conditional: If-then-else execution logic
ConditionalExtension,ConditionalExtension1,ConditionalExtension2- Condition predicate determines execution path
- Optional
otherwisealternative for false conditions - Throws
StateErrorwhen condition false and no alternative - Condition receives function arguments for context
-
Repeat: Controlled loop and polling mechanism
RepeatExtension,RepeatExtension1,RepeatExtension2- Configurable iteration count via
timesparameter - Optional
intervalfor delays between iterations untilpredicate for conditional stoppingonIterationcallback after each execution- Support for infinite loops with stop conditions
- Returns last execution result
-
0.6.0 #
-
Guard: Pre and post-condition validation for functions
GuardExceptionfor guard failuresGuardExtension,GuardExtension1,GuardExtension2forFunc,Func1,Func2- Pre-condition validation before execution
- Post-condition validation after execution with result
- Custom error messages for failed conditions
- Exception includes failing value for debugging
-
Validate: Argument validation before function execution
ValidationExceptionwith detailed error informationValidationModeenum (failFast, aggregate)ValidateExtension1,ValidateExtension2forFunc1andFunc2- Multiple validators support
- Fail-fast mode (stops at first error)
- Aggregate mode (collects all errors)
- Validation error callbacks
0.5.0 #
-
Catch: Type-safe error handling with specific handlers
CatchExtension,CatchExtension1,CatchExtension2forFunc,Func1,Func2Map<Type, Handler>for type-specific error handlingcatchAllhandler for unmatched errorsonCatchcallback for each caught errorrethrowUnhandledoption for unhandled errors- Stack trace preservation
-
Default: Provide default values when function execution fails
DefaultExtension,DefaultExtension1,DefaultExtension2- Default value or default factory support
defaultIfpredicate to determine when to use defaultonDefaultcallback when default value is used- Graceful error recovery
0.4.0 #
-
Once: Execute function only once and cache result forever
OnceExtension,OnceExtension1,OnceExtension2forFunc,Func1,Func2- Result and error caching
- Reset functionality with optional predicate
- Cache invalidation support
-
Lazy: Defer function execution until first call
LazyExtension,LazyExtension1,LazyExtension2- Deferred initialization pattern
- Lazy loading support
-
Memoize: Cache function results with TTL and eviction policies
MemoizeExtension,MemoizeExtension1,MemoizeExtension2- Configurable time-to-live (TTL)
- Maximum cache size limits
- Multiple eviction policies:
EvictionPolicy.lru: Least Recently UsedEvictionPolicy.lfu: Least Frequently UsedEvictionPolicy.fifo: First In First Out
- Per-argument caching for
Func1andFunc2 - Manual cache clearing
-
Deduplicate: Prevent duplicate function calls within a time window
DeduplicateExtension,DeduplicateExtension1,DeduplicateExtension2- Configurable deduplication window
- Per-argument deduplication tracking
- Manual reset functionality
-
Share: Share single execution among concurrent callers
ShareExtension,ShareExtension1,ShareExtension2- Concurrent call deduplication
- Per-argument sharing for
Func1andFunc2 - Automatic cleanup after execution
-
Batch: Accumulate calls and execute in batches
BatchExtension,BatchExtension2forFunc1andFunc2- Configurable batch size (
maxSize) - Configurable wait time (
maxWait) - Custom batch executor
- Manual flush and cancel support
- Individual result handling
-
RateLimit: Control function execution rate
RateLimitExtension,RateLimitExtension1,RateLimitExtension2- Multiple rate limiting strategies:
RateLimitStrategy.tokenBucket: Allows bursts, maintains average rateRateLimitStrategy.leakyBucket: Enforces steady rate, no burstsRateLimitStrategy.fixedWindow: Fixed time window limitingRateLimitStrategy.slidingWindow: Sliding time window limiting
- Configurable rate limits (calls per window)
- Manual reset and disposal
-
WarmUp: Pre-execute functions for eager loading
WarmUpExtension,WarmUpExtension1,WarmUpExtension2- Multiple trigger strategies:
WarmUpTrigger.onInit: Warm up immediatelyWarmUpTrigger.onFirstCall: Warm up on first callWarmUpTrigger.manual: Manual warm-up control
- Periodic refresh support (
keepFresh) - Manual warm-up with
warmUpWith()for Func1/Func2 - Resource disposal
-
Compress/Decompress: Automatic data compression
CompressExtension1,CompressBytesExtension1for compressionDecompressExtension,DecompressBytesExtensionfor decompression- Multiple algorithms:
CompressionAlgorithm.gzip: GZIP compressionCompressionAlgorithm.zlib: ZLIB compression
- Configurable compression levels (none, fast, balanced, best)
- Automatic threshold-based compression
- Support for both string and byte data
-
CacheAside: Cache-aside pattern with automatic loading
CacheAsideExtension1,CacheAsideExtension2Cache<K,V>interface for custom cache backendsInMemoryCacheimplementation included- Configurable TTL for cache entries
- Multiple refresh strategies:
RefreshStrategy.none: No automatic refreshRefreshStrategy.backgroundRefresh: Refresh in backgroundRefreshStrategy.refreshOnAccess: Refresh on next access
- Cache hit/miss callbacks
- Manual cache invalidation
0.3.0 #
-
Retry: Automatic retry with configurable backoff strategies
RetryExtension,RetryExtension1,RetryExtension2forFunc,Func1,Func2- Configurable maximum attempts
- Multiple backoff strategies:
ConstantBackoff: Fixed delay between retriesLinearBackoff: Linearly increasing delaysExponentialBackoff: Exponentially increasing delays (default)FibonacciBackoff: Fibonacci sequence-based delaysDecorrelatedJitterBackoff: Randomized exponential backoffCustomBackoff: User-defined backoff logic
- Optional retry predicate (
retryIf) - Retry callbacks (
onRetry)
-
CircuitBreaker: Prevent cascading failures with circuit breaker pattern
CircuitBreakerclass with three states (CLOSED, OPEN, HALF_OPEN)CircuitBreakerExtension,CircuitBreakerExtension1,CircuitBreakerExtension2- Configurable failure threshold
- Configurable success threshold for recovery
- Automatic state transitions
- State change callbacks
- Reset functionality
-
Fallback: Provide fallback values or functions on error
FallbackExtension,FallbackExtension1,FallbackExtension2- Fallback value or fallback function support
- Optional fallback predicate (
fallbackIf) - Fallback callbacks (
onFallback) - Chainable fallback cascades
-
Recover: Execute recovery actions on errors
RecoveryStrategyclass for defining recovery behaviorRecoverExtension,RecoverExtension1,RecoverExtension2- Configurable recovery actions
- Optional recovery predicate (
shouldRecover) - Configurable error rethrow behavior
- Support for cleanup, reconnection, and state reset patterns
0.2.0 #
Core Concurrency Primitives #
-
Lock: Mutual exclusion mechanism for protecting critical sections
Lockclass with acquire/release methodsLockExtension,LockExtension1,LockExtension2forFunc,Func1,Func2- Support for timeout handling
- Thread-safe synchronized execution
-
RWLock: Read-Write lock for concurrent reads and exclusive writes
RWLockclass with separate read/write lock acquisitionReadLockExtension,ReadLockExtension1,ReadLockExtension2for concurrent readsWriteLockExtension,WriteLockExtension1,WriteLockExtension2for exclusive writes- Writer priority support
- Timeout support for both read and write locks
-
Semaphore: Concurrent execution limiting mechanism
Semaphoreclass with configurable maximum concurrent operationsSemaphoreExtension,SemaphoreExtension1,SemaphoreExtension2- FIFO and LIFO queuing modes
- Available permits tracking
- Timeout handling
Advanced Synchronization #
-
Barrier: Multi-party synchronization mechanism
Barrierclass for coordinating N parties- Cyclic mode for reusable barriers
- Barrier action callbacks
BarrierExtension,BarrierExtension1,BarrierExtension2- Timeout support with callbacks
-
CountdownLatch: Wait-for-N-operations pattern
CountdownLatchclass with countdown functionality- Completion callbacks
CountdownLatchExtension,CountdownLatchExtension1,CountdownLatchExtension2- Automatic countdown after function execution
-
Monitor: Mutex with condition variables
Monitorclass for synchronized executionwaitWhileandwaitUntilcondition waitingnotifyandnotifyAllfor waking waitersMonitorExtension,MonitorExtension1,MonitorExtension2
Resource Management #
-
Bulkhead: Resource isolation and pool management
Bulkheadclass with configurable pool size- Round-robin pool selection
- Queue size management
BulkheadExtension,BulkheadExtension1,BulkheadExtension2- Isolation failure callbacks
-
FunctionQueue: Sequential or controlled parallel execution
FunctionQueueclass with configurable concurrency- FIFO, LIFO, and Priority queuing modes
- Priority function support
- Maximum queue size limits
- Queue change callbacks
QueueExtension1,QueueExtension2forFunc1andFunc2
0.1.0 #
Core Function Wrappers #
Func<R>: Asynchronous function wrapper with no parametersFunc1<T, R>: Asynchronous function wrapper with one parameterFunc2<T1, T2, R>: Asynchronous function wrapper with two parametersFuncSync<R>: Synchronous function wrapper with no parameters
Timing Control Mechanisms #
-
Debounce: Delay function execution until after a specified time has elapsed
DebounceExtension,DebounceExtension1,DebounceExtension2- Configurable delay duration
- Leading and trailing edge support
-
Throttle: Limit function execution rate to once per specified interval
ThrottleExtension,ThrottleExtension1,ThrottleExtension2- Configurable interval
- Leading and trailing edge support
-
Delay: Add a delay before function execution
DelayExtension,DelayExtension1,DelayExtension2- Configurable delay duration
-
Defer: Defer function execution to the next event loop iteration
DeferExtension,DeferExtension1,DeferExtension2
-
Timeout: Add timeout control to function execution
TimeoutExtension,TimeoutExtension1,TimeoutExtension2- Configurable timeout duration
- Custom timeout callbacks
-
IdleCallback: Execute function when system is idle
IdleCallbackExtension,IdleCallbackExtension1,IdleCallbackExtension2- Configurable idle timeout