FunctionWrapper
├─ Logging & Monitoring
│ ├─ log(fn)
│ ├─ time(fn)
│ ├─ profile(fn)
│ ├─ changelog(fn)
│ ├─ feedback(fn, logger)
│ └─ watch(fn)
│
├─ Execution Control
│ ├─ once(fn)
│ ├─ after(fn, n)
│ ├─ before(fn, n)
│ ├─ lock(fn)
│ ├─ queue(fn)
│ ├─ repeat(fn, n)
│ ├─ delayFn(fn, delay)
│ ├─ timeLimit(fn, timeout)
│ ├─ sandbox(fn, timeout)
│ ├─ afterIdle(fn, timeout)
│ └─ smartIdle(fn, options)
│
├─ Error Handling & Safety
│ ├─ catch(fn, onError, fallback)
│ ├─ safeJson(fn)
│ ├─ undoable(fn, inverseFn)
│ ├─ cancelable(fn)
│ ├─ ensure(fn, validator)
│ └─ restrict(fn, isAllowed)
│
├─ Input/Output Transformation
│ ├─ tap(fn, tapFn)
│ ├─ mask(fn, masker)
│ ├─ transformOutput(fn, transformer)
│ ├─ evolve(fn, evolver)
│ ├─ locale(fn, formatter)
│ ├─ randomizeArgs(fn)
│ ├─ randomBehavior(fn, behaviors)
│ └─ predict(fn, modelFn)
│
├─ Caching & Memoization
│ ├─ memo(fn)
│ ├─ replay(fn)
│ └─ oncePerArgs(fn)
│
├─ Functional Composition
│ ├─ chainable(fn)
│ ├─ pipe(...fns)
│ └─ hook(fn, {before, after})
│
├─ Retry & Simulation
│ ├─ retry(fn, retries, delayMs)
│ └─ simulate(fn, {failRate, corrupt, delay})
│
├─ Conditional Execution
│ ├─ delayIf(fn, condition, delayMs)
│ ├─ eventual(fn, checkFn, interval)
│ ├─ filterArgs(fn, filterFn)
│ ├─ warnOnArgs(fn, warningFn)
│ └─ alertOn(fn, condition)
│
├─ Repeat & Batch
│ ├─ batch(fn, chunkSize, cb)
│ └─ delayEach(fn, delayMs)
│
└─ Unit & Stats
├─ unit(fn, unit)
└─ stats(fn)