typetify 2.1.0 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +131 -0
- package/README.md +108 -0
- package/dist/async/index.js +1 -49
- package/dist/async/index.mjs +1 -4
- package/dist/chunk-272Z3AXV.js +1 -0
- package/dist/chunk-2YRFWQ6M.mjs +1 -0
- package/dist/chunk-35CB7HNN.js +1 -0
- package/dist/chunk-4JG7CFRK.js +1 -0
- package/dist/chunk-5FBZYPQM.mjs +1 -0
- package/dist/chunk-5XQRYI2Q.mjs +1 -0
- package/dist/chunk-6HA2SN23.js +1 -0
- package/dist/chunk-6NWIIOHH.js +1 -0
- package/dist/chunk-6WGRWYAD.js +1 -0
- package/dist/chunk-7LBL6CYT.js +1 -0
- package/dist/chunk-7UMXGQE4.mjs +1 -0
- package/dist/chunk-7XHBEA63.js +1 -0
- package/dist/chunk-B3R73UK5.mjs +1 -0
- package/dist/chunk-BLUG7TSP.js +1 -0
- package/dist/chunk-EAHFED6V.mjs +1 -0
- package/dist/chunk-EKSHS4DL.mjs +1 -0
- package/dist/chunk-F76ECQKE.js +1 -0
- package/dist/chunk-FHCBXSNA.js +1 -0
- package/dist/chunk-GKOA3XGQ.js +1 -0
- package/dist/chunk-GQIJLGEZ.mjs +1 -0
- package/dist/chunk-I4YSQ4HB.js +1 -0
- package/dist/chunk-JZXLCA2E.mjs +1 -0
- package/dist/chunk-M5OMYDI7.mjs +1 -0
- package/dist/chunk-MB77QAOC.mjs +1 -0
- package/dist/chunk-MPY3WRLG.mjs +1 -0
- package/dist/chunk-NENRAPOL.mjs +1 -0
- package/dist/chunk-NOW4Q26G.mjs +1 -0
- package/dist/chunk-P4UNM7SF.js +1 -0
- package/dist/chunk-P5E2JDCX.mjs +1 -0
- package/dist/chunk-Q7SUL7MD.js +1 -0
- package/dist/chunk-QKNZICUO.mjs +1 -0
- package/dist/chunk-RHMANSTA.mjs +1 -0
- package/dist/chunk-SF64HETW.js +1 -0
- package/dist/chunk-T66YO63J.js +1 -0
- package/dist/chunk-TNK6EVQK.mjs +1 -0
- package/dist/chunk-TSJFKV3R.js +1 -0
- package/dist/chunk-TVCWWECJ.mjs +1 -0
- package/dist/chunk-U7MK5AR5.mjs +1 -0
- package/dist/chunk-W5I352FJ.js +1 -0
- package/dist/chunk-WAT4QJB2.js +1 -0
- package/dist/chunk-WCG5ODRX.mjs +1 -0
- package/dist/chunk-WDFIRO2J.js +1 -0
- package/dist/chunk-WOT6VMZA.js +1 -0
- package/dist/chunk-WS743BFA.js +1 -0
- package/dist/chunk-WWU7P2L2.mjs +1 -0
- package/dist/chunk-XPY5CWKZ.mjs +1 -0
- package/dist/collection/index.d.mts +125 -1
- package/dist/collection/index.d.ts +125 -1
- package/dist/collection/index.js +1 -125
- package/dist/collection/index.mjs +1 -4
- package/dist/color/index.d.mts +274 -0
- package/dist/color/index.d.ts +274 -0
- package/dist/color/index.js +1 -0
- package/dist/color/index.mjs +1 -0
- package/dist/core/index.js +1 -41
- package/dist/core/index.mjs +1 -4
- package/dist/decorator/index.js +1 -57
- package/dist/decorator/index.mjs +1 -4
- package/dist/dom/index.d.mts +353 -0
- package/dist/dom/index.d.ts +353 -0
- package/dist/dom/index.js +1 -0
- package/dist/dom/index.mjs +1 -0
- package/dist/dx/index.js +1 -53
- package/dist/dx/index.mjs +1 -4
- package/dist/flow/index.js +1 -50
- package/dist/flow/index.mjs +1 -5
- package/dist/fn/index.js +1 -37
- package/dist/fn/index.mjs +1 -4
- package/dist/guards/index.js +1 -233
- package/dist/guards/index.mjs +1 -4
- package/dist/index.d.mts +482 -410
- package/dist/index.d.ts +482 -410
- package/dist/index.js +3 -2507
- package/dist/index.mjs +3 -1546
- package/dist/input/index.js +1 -74
- package/dist/input/index.mjs +1 -5
- package/dist/iterator/index.js +1 -85
- package/dist/iterator/index.mjs +1 -4
- package/dist/logic/index.js +1 -201
- package/dist/logic/index.mjs +1 -4
- package/dist/math/index.js +1 -45
- package/dist/math/index.mjs +1 -4
- package/dist/narrowing/index.js +1 -141
- package/dist/narrowing/index.mjs +1 -4
- package/dist/object/index.d.mts +137 -1
- package/dist/object/index.d.ts +137 -1
- package/dist/object/index.js +1 -113
- package/dist/object/index.mjs +1 -4
- package/dist/result/index.js +1 -86
- package/dist/result/index.mjs +1 -5
- package/dist/schema/index.js +1 -110
- package/dist/schema/index.mjs +1 -5
- package/dist/storage/index.d.mts +197 -0
- package/dist/storage/index.d.ts +197 -0
- package/dist/storage/index.js +1 -0
- package/dist/storage/index.mjs +1 -0
- package/dist/string/index.d.mts +201 -1
- package/dist/string/index.d.ts +201 -1
- package/dist/string/index.js +1 -49
- package/dist/string/index.mjs +1 -4
- package/dist/typed/index.js +1 -193
- package/dist/typed/index.mjs +1 -4
- package/package.json +23 -3
- package/dist/async/index.js.map +0 -1
- package/dist/async/index.mjs.map +0 -1
- package/dist/chunk-2LJ6NZ6K.js +0 -108
- package/dist/chunk-2LJ6NZ6K.js.map +0 -1
- package/dist/chunk-4NXETABV.mjs +0 -116
- package/dist/chunk-4NXETABV.mjs.map +0 -1
- package/dist/chunk-6ZBTL74K.js +0 -129
- package/dist/chunk-6ZBTL74K.js.map +0 -1
- package/dist/chunk-7G4ZSMQX.js +0 -470
- package/dist/chunk-7G4ZSMQX.js.map +0 -1
- package/dist/chunk-CN3GYRJN.mjs +0 -137
- package/dist/chunk-CN3GYRJN.mjs.map +0 -1
- package/dist/chunk-CNTE6ZVH.js +0 -359
- package/dist/chunk-CNTE6ZVH.js.map +0 -1
- package/dist/chunk-CWHYQWNU.mjs +0 -224
- package/dist/chunk-CWHYQWNU.mjs.map +0 -1
- package/dist/chunk-DBENOSTA.js +0 -156
- package/dist/chunk-DBENOSTA.js.map +0 -1
- package/dist/chunk-DWIG5GF2.js +0 -135
- package/dist/chunk-DWIG5GF2.js.map +0 -1
- package/dist/chunk-EAUTTWTQ.mjs +0 -231
- package/dist/chunk-EAUTTWTQ.mjs.map +0 -1
- package/dist/chunk-FEX5C4OH.mjs +0 -1007
- package/dist/chunk-FEX5C4OH.mjs.map +0 -1
- package/dist/chunk-FN553YPU.js +0 -441
- package/dist/chunk-FN553YPU.js.map +0 -1
- package/dist/chunk-FT2EK4AM.mjs +0 -420
- package/dist/chunk-FT2EK4AM.mjs.map +0 -1
- package/dist/chunk-FXWYPHA3.mjs +0 -13
- package/dist/chunk-FXWYPHA3.mjs.map +0 -1
- package/dist/chunk-GS3PP67B.js +0 -200
- package/dist/chunk-GS3PP67B.js.map +0 -1
- package/dist/chunk-IGA3VEZM.mjs +0 -503
- package/dist/chunk-IGA3VEZM.mjs.map +0 -1
- package/dist/chunk-J5LGTIGS.mjs +0 -9
- package/dist/chunk-J5LGTIGS.mjs.map +0 -1
- package/dist/chunk-JB6UXRKD.mjs +0 -97
- package/dist/chunk-JB6UXRKD.mjs.map +0 -1
- package/dist/chunk-JQAQV75V.js +0 -561
- package/dist/chunk-JQAQV75V.js.map +0 -1
- package/dist/chunk-JQHUBZ4M.js +0 -88
- package/dist/chunk-JQHUBZ4M.js.map +0 -1
- package/dist/chunk-LT7JK7RJ.js +0 -87
- package/dist/chunk-LT7JK7RJ.js.map +0 -1
- package/dist/chunk-N6IUADIP.mjs +0 -414
- package/dist/chunk-N6IUADIP.mjs.map +0 -1
- package/dist/chunk-OEJK37LO.mjs +0 -328
- package/dist/chunk-OEJK37LO.mjs.map +0 -1
- package/dist/chunk-OKB3MS5F.js +0 -547
- package/dist/chunk-OKB3MS5F.js.map +0 -1
- package/dist/chunk-OPVES6W2.js +0 -16
- package/dist/chunk-OPVES6W2.js.map +0 -1
- package/dist/chunk-OWNUKWXV.js +0 -291
- package/dist/chunk-OWNUKWXV.js.map +0 -1
- package/dist/chunk-POD52NJ3.mjs +0 -526
- package/dist/chunk-POD52NJ3.mjs.map +0 -1
- package/dist/chunk-PQTXSQ4P.js +0 -369
- package/dist/chunk-PQTXSQ4P.js.map +0 -1
- package/dist/chunk-PZ5AY32C.js +0 -11
- package/dist/chunk-PZ5AY32C.js.map +0 -1
- package/dist/chunk-QFR7DVAJ.mjs +0 -63
- package/dist/chunk-QFR7DVAJ.mjs.map +0 -1
- package/dist/chunk-S535LAXW.js +0 -1054
- package/dist/chunk-S535LAXW.js.map +0 -1
- package/dist/chunk-SGQNLTRK.js +0 -73
- package/dist/chunk-SGQNLTRK.js.map +0 -1
- package/dist/chunk-SRDWUHDY.mjs +0 -188
- package/dist/chunk-SRDWUHDY.mjs.map +0 -1
- package/dist/chunk-TXU7NTT4.js +0 -249
- package/dist/chunk-TXU7NTT4.js.map +0 -1
- package/dist/chunk-TZEWREAC.mjs +0 -277
- package/dist/chunk-TZEWREAC.mjs.map +0 -1
- package/dist/chunk-V6CWFDIJ.mjs +0 -123
- package/dist/chunk-V6CWFDIJ.mjs.map +0 -1
- package/dist/chunk-X55EORNF.js +0 -259
- package/dist/chunk-X55EORNF.js.map +0 -1
- package/dist/chunk-YBJC5WMX.mjs +0 -341
- package/dist/chunk-YBJC5WMX.mjs.map +0 -1
- package/dist/chunk-YOPAXITF.mjs +0 -75
- package/dist/chunk-YOPAXITF.mjs.map +0 -1
- package/dist/chunk-ZE4FDBRI.mjs +0 -79
- package/dist/chunk-ZE4FDBRI.mjs.map +0 -1
- package/dist/collection/index.js.map +0 -1
- package/dist/collection/index.mjs.map +0 -1
- package/dist/core/index.js.map +0 -1
- package/dist/core/index.mjs.map +0 -1
- package/dist/decorator/index.js.map +0 -1
- package/dist/decorator/index.mjs.map +0 -1
- package/dist/dx/index.js.map +0 -1
- package/dist/dx/index.mjs.map +0 -1
- package/dist/flow/index.js.map +0 -1
- package/dist/flow/index.mjs.map +0 -1
- package/dist/fn/index.js.map +0 -1
- package/dist/fn/index.mjs.map +0 -1
- package/dist/guards/index.js.map +0 -1
- package/dist/guards/index.mjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/dist/input/index.js.map +0 -1
- package/dist/input/index.mjs.map +0 -1
- package/dist/iterator/index.js.map +0 -1
- package/dist/iterator/index.mjs.map +0 -1
- package/dist/logic/index.js.map +0 -1
- package/dist/logic/index.mjs.map +0 -1
- package/dist/math/index.js.map +0 -1
- package/dist/math/index.mjs.map +0 -1
- package/dist/narrowing/index.js.map +0 -1
- package/dist/narrowing/index.mjs.map +0 -1
- package/dist/object/index.js.map +0 -1
- package/dist/object/index.mjs.map +0 -1
- package/dist/result/index.js.map +0 -1
- package/dist/result/index.mjs.map +0 -1
- package/dist/schema/index.js.map +0 -1
- package/dist/schema/index.mjs.map +0 -1
- package/dist/string/index.js.map +0 -1
- package/dist/string/index.mjs.map +0 -1
- package/dist/typed/index.js.map +0 -1
- package/dist/typed/index.mjs.map +0 -1
package/dist/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/reactive/index.ts","../src/reactive/signal.ts","../src/reactive/undoable.ts","../src/cache/index.ts","../src/cache/smartCache.ts","../src/event/index.ts","../src/event/eventBus.ts","../src/pipeline/index.ts","../src/pipeline/pipe.ts","../src/pipeline/middleware.ts","../src/di/index.ts","../src/di/container.ts","../src/env/index.ts","../src/env/env.ts","../src/router/index.ts","../src/router/router.ts","../src/form/index.ts","../src/form/form.ts","../src/feature/index.ts","../src/feature/featureFlags.ts","../src/array/index.ts","../src/array/concat.ts","../src/array/differenceBy.ts","../src/array/differenceWith.ts","../src/array/dropRight.ts","../src/array/dropRightWhile.ts","../src/array/fill.ts","../src/array/findIndex.ts","../src/array/findLastIndex.ts","../src/array/flattenDeep.ts","../src/array/flattenDepth.ts","../src/array/fromPairs.ts","../src/array/indexOf.ts","../src/array/intersectionBy.ts","../src/array/intersectionWith.ts","../src/array/join.ts","../src/array/lastIndexOf.ts","../src/array/nth.ts","../src/array/pull.ts","../src/array/pullAll.ts","../src/array/pullAllBy.ts","../src/array/pullAllWith.ts","../src/array/pullAt.ts","../src/array/remove.ts","../src/array/reverse.ts","../src/array/slice.ts","../src/array/sortedIndex.ts","../src/array/sortedIndexBy.ts","../src/array/sortedIndexOf.ts","../src/array/sortedLastIndex.ts","../src/array/sortedLastIndexBy.ts","../src/array/sortedLastIndexOf.ts","../src/array/sortedUniq.ts","../src/array/sortedUniqBy.ts","../src/array/takeRight.ts","../src/array/takeRightWhile.ts","../src/array/union.ts","../src/array/unionBy.ts","../src/array/unionWith.ts","../src/array/uniqBy.ts","../src/array/uniqWith.ts","../src/array/unzipWith.ts","../src/array/without.ts","../src/array/xor.ts","../src/array/xorBy.ts","../src/array/xorWith.ts","../src/array/zipObject.ts","../src/array/zipObjectDeep.ts","../src/array/zipWith.ts","../src/index.ts"],"names":["effect","memoize","match","compose","pipe","err","flatten","computed"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Reactive Module - Fine-grained reactivity primitives\n */\n\nexport { signal, computed, effect, batch } from './signal'\nexport type { Signal, ReadonlySignal } from './signal'\n\nexport { createUndoableState, createAutoUndoableState } from './undoable'\nexport type { UndoableState, UndoableOptions } from './undoable'\n","/**\n * Reactive Signals - Fine-grained reactivity like Solid.js\n * \n * Signals are the foundation of reactive programming.\n * They hold a value and notify subscribers when it changes.\n */\n\ntype Subscriber<T> = (value: T) => void\ntype Unsubscribe = () => void\n\nexport interface Signal<T> {\n /** Get the current value */\n (): T\n /** Set a new value */\n set(value: T): void\n /** Update value using a function */\n update(fn: (current: T) => T): void\n /** Subscribe to changes */\n subscribe(fn: Subscriber<T>): Unsubscribe\n /** Get value without tracking */\n peek(): T\n}\n\nexport interface ReadonlySignal<T> {\n /** Get the current value */\n (): T\n /** Subscribe to changes */\n subscribe(fn: Subscriber<T>): Unsubscribe\n /** Get value without tracking */\n peek(): T\n}\n\n// Global tracking context for computed values\nlet currentComputed: (() => void) | null = null\n\n/**\n * Creates a reactive signal that notifies subscribers on change.\n * \n * @example\n * const count = signal(0)\n * \n * // Read value\n * console.log(count()) // 0\n * \n * // Set value\n * count.set(5)\n * \n * // Update with function\n * count.update(n => n + 1)\n * \n * // Subscribe to changes\n * const unsubscribe = count.subscribe(value => {\n * console.log('Count changed:', value)\n * })\n */\nexport function signal<T>(initialValue: T): Signal<T> {\n let value = initialValue\n const subscribers = new Set<Subscriber<T>>()\n\n const read = (): T => {\n // Track this signal if we're inside a computed\n if (currentComputed) {\n subscribers.add(currentComputed as Subscriber<T>)\n }\n return value\n }\n\n read.set = (newValue: T): void => {\n if (!Object.is(value, newValue)) {\n value = newValue\n subscribers.forEach(fn => fn(value))\n }\n }\n\n read.update = (fn: (current: T) => T): void => {\n read.set(fn(value))\n }\n\n read.subscribe = (fn: Subscriber<T>): Unsubscribe => {\n subscribers.add(fn)\n return () => subscribers.delete(fn)\n }\n\n read.peek = (): T => value\n\n return read as Signal<T>\n}\n\n/**\n * Creates a computed value that automatically updates when dependencies change.\n * \n * @example\n * const firstName = signal('John')\n * const lastName = signal('Doe')\n * \n * const fullName = computed(() => `${firstName()} ${lastName()}`)\n * \n * console.log(fullName()) // \"John Doe\"\n * \n * firstName.set('Jane')\n * console.log(fullName()) // \"Jane Doe\"\n */\nexport function computed<T>(fn: () => T): ReadonlySignal<T> {\n const internalSignal = signal<T>(undefined as T)\n \n const recompute = () => {\n const prevComputed = currentComputed\n currentComputed = recompute\n try {\n internalSignal.set(fn())\n } finally {\n currentComputed = prevComputed\n }\n }\n\n // Initial computation\n recompute()\n\n const read = (): T => internalSignal()\n read.subscribe = internalSignal.subscribe\n read.peek = internalSignal.peek\n\n return read as ReadonlySignal<T>\n}\n\n/**\n * Runs a function whenever its dependencies change.\n * \n * @example\n * const count = signal(0)\n * \n * const stop = effect(() => {\n * console.log('Count is:', count())\n * })\n * \n * count.set(1) // Logs: \"Count is: 1\"\n * count.set(2) // Logs: \"Count is: 2\"\n * \n * stop() // Stop the effect\n */\nexport function effect(fn: () => void | (() => void)): Unsubscribe {\n let cleanup: (() => void) | void\n\n const run = () => {\n if (cleanup) cleanup()\n const prevComputed = currentComputed\n currentComputed = run\n try {\n cleanup = fn()\n } finally {\n currentComputed = prevComputed\n }\n }\n\n run()\n\n return () => {\n if (cleanup) cleanup()\n }\n}\n\n/**\n * Batches multiple signal updates into a single notification.\n * \n * @example\n * const a = signal(1)\n * const b = signal(2)\n * \n * // Without batch: 2 notifications\n * // With batch: 1 notification\n * batch(() => {\n * a.set(10)\n * b.set(20)\n * })\n */\nlet batchDepth = 0\nlet pendingEffects: Set<() => void> = new Set()\n\nexport function batch(fn: () => void): void {\n batchDepth++\n try {\n fn()\n } finally {\n batchDepth--\n if (batchDepth === 0) {\n const effects = pendingEffects\n pendingEffects = new Set()\n effects.forEach(effect => effect())\n }\n }\n}\n","/**\n * Undoable State - State management with undo/redo history\n * \n * Perfect for editors, forms, and any UI that needs history.\n */\n\nimport { signal } from './signal'\nimport type { Signal } from './signal'\n\nexport interface UndoableState<T> {\n /** Current state value */\n value: Signal<T>\n /** Undo the last change */\n undo(): void\n /** Redo the last undone change */\n redo(): void\n /** Check if undo is available */\n canUndo(): boolean\n /** Check if redo is available */\n canRedo(): boolean\n /** Clear all history */\n clearHistory(): void\n /** Get history length */\n historyLength(): number\n /** Commit current state (creates a checkpoint) */\n commit(): void\n}\n\nexport interface UndoableOptions {\n /** Maximum history size (default: 100) */\n maxHistory?: number\n /** Debounce commits in ms (default: 0 = no debounce) */\n debounce?: number\n}\n\n/**\n * Creates an undoable state with undo/redo capabilities.\n * \n * @example\n * const state = createUndoableState({ count: 0, text: '' })\n * \n * state.value.set({ count: 1, text: 'hello' })\n * state.commit()\n * \n * state.value.set({ count: 2, text: 'world' })\n * state.commit()\n * \n * console.log(state.value().count) // 2\n * \n * state.undo()\n * console.log(state.value().count) // 1\n * \n * state.redo()\n * console.log(state.value().count) // 2\n * \n * @example\n * // With auto-commit on every change\n * const counter = createUndoableState(0)\n * \n * counter.value.set(1)\n * counter.commit()\n * counter.value.set(2)\n * counter.commit()\n * \n * counter.undo() // Back to 1\n * counter.undo() // Back to 0\n */\nexport function createUndoableState<T>(\n initialValue: T,\n options: UndoableOptions = {}\n): UndoableState<T> {\n const { maxHistory = 100 } = options\n\n const value = signal<T>(initialValue)\n const history: T[] = [initialValue]\n let currentIndex = 0\n\n const canUndo = (): boolean => currentIndex > 0\n const canRedo = (): boolean => currentIndex < history.length - 1\n\n const undo = (): void => {\n if (canUndo()) {\n currentIndex--\n value.set(structuredClone(history[currentIndex]!))\n }\n }\n\n const redo = (): void => {\n if (canRedo()) {\n currentIndex++\n value.set(structuredClone(history[currentIndex]!))\n }\n }\n\n const commit = (): void => {\n const currentValue = value()\n \n // Don't commit if value hasn't changed\n if (currentIndex < history.length && \n JSON.stringify(history[currentIndex]) === JSON.stringify(currentValue)) {\n return\n }\n\n // Remove any redo history\n history.splice(currentIndex + 1)\n \n // Add new state\n history.push(structuredClone(currentValue))\n currentIndex = history.length - 1\n\n // Trim history if too long\n if (history.length > maxHistory) {\n history.shift()\n currentIndex--\n }\n }\n\n const clearHistory = (): void => {\n const currentValue = value()\n history.length = 0\n history.push(structuredClone(currentValue))\n currentIndex = 0\n }\n\n const historyLength = (): number => history.length\n\n return {\n value,\n undo,\n redo,\n canUndo,\n canRedo,\n clearHistory,\n historyLength,\n commit,\n }\n}\n\n/**\n * Creates an undoable state that auto-commits on every change.\n * \n * @example\n * const state = createAutoUndoableState({ name: '', age: 0 })\n * \n * state.set({ name: 'John', age: 30 })\n * state.set({ name: 'Jane', age: 25 })\n * \n * state.undo() // { name: 'John', age: 30 }\n * state.undo() // { name: '', age: 0 }\n */\nexport function createAutoUndoableState<T>(\n initialValue: T,\n options: UndoableOptions = {}\n): {\n (): T\n set(value: T): void\n update(fn: (current: T) => T): void\n undo(): void\n redo(): void\n canUndo(): boolean\n canRedo(): boolean\n} {\n const undoable = createUndoableState(initialValue, options)\n\n const read = (): T => undoable.value()\n\n read.set = (newValue: T): void => {\n undoable.value.set(newValue)\n undoable.commit()\n }\n\n read.update = (fn: (current: T) => T): void => {\n read.set(fn(undoable.value()))\n }\n\n read.undo = undoable.undo\n read.redo = undoable.redo\n read.canUndo = undoable.canUndo\n read.canRedo = undoable.canRedo\n\n return read\n}\n","/**\n * Cache Module - Smart caching utilities\n */\n\nexport { smartCache, memoize } from './smartCache'\nexport type { CacheOptions } from './smartCache'\n","/**\n * Smart Cache - Intelligent caching with TTL and invalidation\n */\n\nexport interface CacheOptions<K extends unknown[], V> {\n /** Time to live in milliseconds or string like '5m', '1h', '1d' */\n ttl?: number | string\n /** Maximum cache size */\n maxSize?: number\n /** Custom key generator */\n key?: (...args: K) => string\n /** Events that invalidate the cache */\n invalidateOn?: string[]\n /** Called when cache is hit */\n onHit?: (key: string, value: V) => void\n /** Called when cache is missed */\n onMiss?: (key: string) => void\n}\n\ninterface CacheEntry<V> {\n value: V\n expiresAt: number\n}\n\nfunction parseTTL(ttl: number | string): number {\n if (typeof ttl === 'number') return ttl\n \n const match = ttl.match(/^(\\d+)(ms|s|m|h|d)$/)\n if (!match) throw new Error(`Invalid TTL format: ${ttl}`)\n \n const [, value, unit] = match\n const num = parseInt(value!, 10)\n \n switch (unit) {\n case 'ms': return num\n case 's': return num * 1000\n case 'm': return num * 60 * 1000\n case 'h': return num * 60 * 60 * 1000\n case 'd': return num * 24 * 60 * 60 * 1000\n default: return num\n }\n}\n\n/**\n * Creates a smart cache wrapper around a function.\n * \n * @example\n * const fetchUser = smartCache(\n * async (userId: string) => {\n * const response = await fetch(`/api/users/${userId}`)\n * return response.json()\n * },\n * { \n * ttl: '5m',\n * maxSize: 100,\n * key: (userId) => `user:${userId}`\n * }\n * )\n * \n * // First call - fetches from API\n * const user1 = await fetchUser('123')\n * \n * // Second call - returns cached value\n * const user2 = await fetchUser('123')\n * \n * // Invalidate cache\n * fetchUser.invalidate('123')\n * \n * // Clear all cache\n * fetchUser.clear()\n */\nexport function smartCache<K extends unknown[], V>(\n fn: (...args: K) => V | Promise<V>,\n options: CacheOptions<K, V> = {}\n): ((...args: K) => Promise<V>) & {\n invalidate: (...args: K) => void\n invalidateAll: () => void\n clear: () => void\n has: (...args: K) => boolean\n size: () => number\n} {\n const {\n ttl = Infinity,\n maxSize = 1000,\n key = (...args: K) => JSON.stringify(args),\n onHit,\n onMiss,\n } = options\n\n const ttlMs = parseTTL(ttl)\n const cache = new Map<string, CacheEntry<V>>()\n\n const getKey = (...args: K): string => key(...args)\n\n const isExpired = (entry: CacheEntry<V>): boolean => {\n return Date.now() > entry.expiresAt\n }\n\n const evictOldest = (): void => {\n if (cache.size >= maxSize) {\n const firstKey = cache.keys().next().value\n if (firstKey) cache.delete(firstKey)\n }\n }\n\n const cached = async (...args: K): Promise<V> => {\n const cacheKey = getKey(...args)\n const entry = cache.get(cacheKey)\n\n if (entry && !isExpired(entry)) {\n onHit?.(cacheKey, entry.value)\n return entry.value\n }\n\n onMiss?.(cacheKey)\n \n // Remove expired entry\n if (entry) cache.delete(cacheKey)\n\n // Evict if at capacity\n evictOldest()\n\n // Fetch new value\n const value = await fn(...args)\n \n cache.set(cacheKey, {\n value,\n expiresAt: Date.now() + ttlMs,\n })\n\n return value\n }\n\n cached.invalidate = (...args: K): void => {\n const cacheKey = getKey(...args)\n cache.delete(cacheKey)\n }\n\n cached.invalidateAll = (): void => {\n cache.clear()\n }\n\n cached.clear = cached.invalidateAll\n\n cached.has = (...args: K): boolean => {\n const cacheKey = getKey(...args)\n const entry = cache.get(cacheKey)\n return entry !== undefined && !isExpired(entry)\n }\n\n cached.size = (): number => cache.size\n\n return cached\n}\n\n/**\n * Creates a simple memoization cache (no TTL, infinite size).\n * \n * @example\n * const expensive = memoize((n: number) => {\n * console.log('Computing...')\n * return n * n\n * })\n * \n * expensive(5) // Logs \"Computing...\", returns 25\n * expensive(5) // Returns 25 (cached)\n */\nexport function memoize<K extends unknown[], V>(\n fn: (...args: K) => V\n): (...args: K) => V {\n const cache = new Map<string, V>()\n\n return (...args: K): V => {\n const key = JSON.stringify(args)\n if (cache.has(key)) {\n return cache.get(key)!\n }\n const result = fn(...args)\n cache.set(key, result)\n return result\n }\n}\n","/**\n * Event Module - Type-safe event handling\n */\n\nexport { createEventBus, createTypedEmitter } from './eventBus'\nexport type { EventBus } from './eventBus'\n","/**\n * Type-Safe Event Bus - Decoupled communication with full type safety\n */\n\ntype EventHandler<T> = (data: T) => void\ntype Unsubscribe = () => void\n\nexport interface EventBus<Events extends Record<string, unknown>> {\n /** Subscribe to an event */\n on<K extends keyof Events>(event: K, handler: EventHandler<Events[K]>): Unsubscribe\n /** Subscribe to an event (fires only once) */\n once<K extends keyof Events>(event: K, handler: EventHandler<Events[K]>): Unsubscribe\n /** Emit an event */\n emit<K extends keyof Events>(event: K, data: Events[K]): void\n /** Remove all handlers for an event */\n off<K extends keyof Events>(event: K): void\n /** Remove all handlers */\n clear(): void\n /** Get number of handlers for an event */\n listenerCount<K extends keyof Events>(event: K): number\n}\n\n/**\n * Creates a type-safe event bus for decoupled communication.\n * \n * @example\n * // Define your events with their payload types\n * type AppEvents = {\n * 'user.login': { userId: string; timestamp: number }\n * 'user.logout': { userId: string }\n * 'order.created': { orderId: string; amount: number }\n * 'notification': string\n * }\n * \n * const events = createEventBus<AppEvents>()\n * \n * // Subscribe to events (fully typed!)\n * events.on('user.login', (data) => {\n * console.log(`User ${data.userId} logged in at ${data.timestamp}`)\n * })\n * \n * // Emit events (type-checked!)\n * events.emit('user.login', { \n * userId: '123', \n * timestamp: Date.now() \n * })\n * \n * // TypeScript error: missing 'timestamp'\n * events.emit('user.login', { userId: '123' })\n * \n * // TypeScript error: unknown event\n * events.emit('unknown.event', {})\n */\nexport function createEventBus<\n Events extends Record<string, unknown>\n>(): EventBus<Events> {\n const handlers = new Map<keyof Events, Set<EventHandler<unknown>>>()\n\n const getHandlers = <K extends keyof Events>(event: K): Set<EventHandler<Events[K]>> => {\n if (!handlers.has(event)) {\n handlers.set(event, new Set())\n }\n return handlers.get(event) as Set<EventHandler<Events[K]>>\n }\n\n return {\n on<K extends keyof Events>(event: K, handler: EventHandler<Events[K]>): Unsubscribe {\n const eventHandlers = getHandlers(event)\n eventHandlers.add(handler)\n return () => eventHandlers.delete(handler)\n },\n\n once<K extends keyof Events>(event: K, handler: EventHandler<Events[K]>): Unsubscribe {\n const wrappedHandler: EventHandler<Events[K]> = (data) => {\n handler(data)\n getHandlers(event).delete(wrappedHandler)\n }\n return this.on(event, wrappedHandler)\n },\n\n emit<K extends keyof Events>(event: K, data: Events[K]): void {\n const eventHandlers = getHandlers(event)\n eventHandlers.forEach(handler => handler(data))\n },\n\n off<K extends keyof Events>(event: K): void {\n handlers.delete(event)\n },\n\n clear(): void {\n handlers.clear()\n },\n\n listenerCount<K extends keyof Events>(event: K): number {\n return getHandlers(event).size\n },\n }\n}\n\n/**\n * Creates a typed event emitter for a single component/class.\n * \n * @example\n * class UserService {\n * private events = createTypedEmitter<{\n * created: User\n * updated: User\n * deleted: string\n * }>()\n * \n * readonly on = this.events.on\n * \n * async createUser(data: CreateUserDto) {\n * const user = await db.users.create(data)\n * this.events.emit('created', user)\n * return user\n * }\n * }\n */\nexport function createTypedEmitter<Events extends Record<string, unknown>>() {\n return createEventBus<Events>()\n}\n","/**\n * Pipeline Module - Functional composition and middleware\n */\n\nexport { pipe, pipeAsync, flow } from './pipe'\nexport { createMiddleware, compose } from './middleware'\nexport type { Middleware, MiddlewarePipeline, NextFunction } from './middleware'\n","/**\n * Pipeline - Functional composition with full type inference\n */\n\n/**\n * Pipes a value through a series of functions.\n * Each function receives the result of the previous one.\n * \n * @example\n * const result = pipe(\n * [1, 2, 3, 4, 5],\n * arr => arr.filter(x => x % 2 === 0),\n * arr => arr.map(x => x * 2),\n * arr => arr.reduce((a, b) => a + b, 0)\n * )\n * // result: 12\n * \n * @example\n * // With async functions\n * const user = await pipeAsync(\n * userId,\n * id => fetchUser(id),\n * user => enrichUserData(user),\n * user => validateUser(user)\n * )\n */\nexport function pipe<A>(value: A): A\nexport function pipe<A, B>(value: A, fn1: (a: A) => B): B\nexport function pipe<A, B, C>(value: A, fn1: (a: A) => B, fn2: (b: B) => C): C\nexport function pipe<A, B, C, D>(\n value: A,\n fn1: (a: A) => B,\n fn2: (b: B) => C,\n fn3: (c: C) => D\n): D\nexport function pipe<A, B, C, D, E>(\n value: A,\n fn1: (a: A) => B,\n fn2: (b: B) => C,\n fn3: (c: C) => D,\n fn4: (d: D) => E\n): E\nexport function pipe<A, B, C, D, E, F>(\n value: A,\n fn1: (a: A) => B,\n fn2: (b: B) => C,\n fn3: (c: C) => D,\n fn4: (d: D) => E,\n fn5: (e: E) => F\n): F\nexport function pipe<A, B, C, D, E, F, G>(\n value: A,\n fn1: (a: A) => B,\n fn2: (b: B) => C,\n fn3: (c: C) => D,\n fn4: (d: D) => E,\n fn5: (e: E) => F,\n fn6: (f: F) => G\n): G\nexport function pipe<A, B, C, D, E, F, G, H>(\n value: A,\n fn1: (a: A) => B,\n fn2: (b: B) => C,\n fn3: (c: C) => D,\n fn4: (d: D) => E,\n fn5: (e: E) => F,\n fn6: (f: F) => G,\n fn7: (g: G) => H\n): H\nexport function pipe<A, B, C, D, E, F, G, H, I>(\n value: A,\n fn1: (a: A) => B,\n fn2: (b: B) => C,\n fn3: (c: C) => D,\n fn4: (d: D) => E,\n fn5: (e: E) => F,\n fn6: (f: F) => G,\n fn7: (g: G) => H,\n fn8: (h: H) => I\n): I\nexport function pipe(value: unknown, ...fns: ((arg: unknown) => unknown)[]): unknown {\n return fns.reduce((acc, fn) => fn(acc), value)\n}\n\n/**\n * Async version of pipe that handles promises.\n */\nexport async function pipeAsync<A>(value: A): Promise<A>\nexport async function pipeAsync<A, B>(value: A, fn1: (a: A) => B | Promise<B>): Promise<B>\nexport async function pipeAsync<A, B, C>(\n value: A,\n fn1: (a: A) => B | Promise<B>,\n fn2: (b: B) => C | Promise<C>\n): Promise<C>\nexport async function pipeAsync<A, B, C, D>(\n value: A,\n fn1: (a: A) => B | Promise<B>,\n fn2: (b: B) => C | Promise<C>,\n fn3: (c: C) => D | Promise<D>\n): Promise<D>\nexport async function pipeAsync<A, B, C, D, E>(\n value: A,\n fn1: (a: A) => B | Promise<B>,\n fn2: (b: B) => C | Promise<C>,\n fn3: (c: C) => D | Promise<D>,\n fn4: (d: D) => E | Promise<E>\n): Promise<E>\nexport async function pipeAsync<A, B, C, D, E, F>(\n value: A,\n fn1: (a: A) => B | Promise<B>,\n fn2: (b: B) => C | Promise<C>,\n fn3: (c: C) => D | Promise<D>,\n fn4: (d: D) => E | Promise<E>,\n fn5: (e: E) => F | Promise<F>\n): Promise<F>\nexport async function pipeAsync(\n value: unknown,\n ...fns: ((arg: unknown) => unknown | Promise<unknown>)[]\n): Promise<unknown> {\n let result = value\n for (const fn of fns) {\n result = await fn(result)\n }\n return result\n}\n\n/**\n * Creates a pipeline function that can be reused.\n * \n * @example\n * const processUser = flow(\n * (user: User) => validateUser(user),\n * user => enrichUser(user),\n * user => formatUser(user)\n * )\n * \n * const result = processUser(rawUser)\n */\nexport function flow<A, B>(fn1: (a: A) => B): (a: A) => B\nexport function flow<A, B, C>(fn1: (a: A) => B, fn2: (b: B) => C): (a: A) => C\nexport function flow<A, B, C, D>(\n fn1: (a: A) => B,\n fn2: (b: B) => C,\n fn3: (c: C) => D\n): (a: A) => D\nexport function flow<A, B, C, D, E>(\n fn1: (a: A) => B,\n fn2: (b: B) => C,\n fn3: (c: C) => D,\n fn4: (d: D) => E\n): (a: A) => E\nexport function flow<A, B, C, D, E, F>(\n fn1: (a: A) => B,\n fn2: (b: B) => C,\n fn3: (c: C) => D,\n fn4: (d: D) => E,\n fn5: (e: E) => F\n): (a: A) => F\nexport function flow(...fns: ((arg: unknown) => unknown)[]): (a: unknown) => unknown {\n return (value: unknown) => fns.reduce((acc, fn) => fn(acc), value)\n}\n","/**\n * Middleware Pipeline - Express-style middleware with type safety\n */\n\nexport type NextFunction = () => Promise<void> | void\nexport type Middleware<Context> = (ctx: Context, next: NextFunction) => Promise<void> | void\n\nexport interface MiddlewarePipeline<Context> {\n /** Add a middleware to the pipeline */\n use(middleware: Middleware<Context>): MiddlewarePipeline<Context>\n /** Execute the pipeline with a context */\n execute(ctx: Context): Promise<void>\n /** Create a handler that executes the pipeline */\n handler(): (ctx: Context) => Promise<void>\n}\n\n/**\n * Creates a middleware pipeline for processing requests or data.\n * \n * @example\n * interface RequestContext {\n * user?: User\n * body: unknown\n * headers: Record<string, string>\n * }\n * \n * const pipeline = createMiddleware<RequestContext>()\n * .use(async (ctx, next) => {\n * // Authentication\n * const token = ctx.headers['authorization']\n * ctx.user = await validateToken(token)\n * await next()\n * })\n * .use(async (ctx, next) => {\n * // Logging\n * console.log('Request from:', ctx.user?.id)\n * await next()\n * console.log('Request completed')\n * })\n * .use(async (ctx, next) => {\n * // Rate limiting\n * await checkRateLimit(ctx.user?.id)\n * await next()\n * })\n * \n * // Execute the pipeline\n * await pipeline.execute({\n * body: { name: 'John' },\n * headers: { authorization: 'Bearer ...' }\n * })\n */\nexport function createMiddleware<Context>(): MiddlewarePipeline<Context> {\n const middlewares: Middleware<Context>[] = []\n\n const pipeline: MiddlewarePipeline<Context> = {\n use(middleware: Middleware<Context>): MiddlewarePipeline<Context> {\n middlewares.push(middleware)\n return pipeline\n },\n\n async execute(ctx: Context): Promise<void> {\n let index = 0\n\n const next: NextFunction = async () => {\n if (index < middlewares.length) {\n const middleware = middlewares[index++]!\n await middleware(ctx, next)\n }\n }\n\n await next()\n },\n\n handler(): (ctx: Context) => Promise<void> {\n return (ctx: Context) => pipeline.execute(ctx)\n },\n }\n\n return pipeline\n}\n\n/**\n * Composes multiple middlewares into a single middleware.\n * \n * @example\n * const authMiddleware = compose(\n * validateToken,\n * checkPermissions,\n * loadUser\n * )\n * \n * pipeline.use(authMiddleware)\n */\nexport function compose<Context>(\n ...middlewares: Middleware<Context>[]\n): Middleware<Context> {\n return async (ctx: Context, next: NextFunction) => {\n let index = 0\n\n const dispatch = async (): Promise<void> => {\n if (index < middlewares.length) {\n const middleware = middlewares[index++]!\n await middleware(ctx, dispatch)\n } else {\n await next()\n }\n }\n\n await dispatch()\n }\n}\n","/**\n * Dependency Injection Module\n */\n\nexport { createContainer, createTypedContainer } from './container'\nexport type { Container } from './container'\n","/**\n * Dependency Injection Container - Type-safe DI with automatic resolution\n */\n\ntype Factory<T> = (container: Container) => T\ntype ServiceKey = string | symbol\n\ninterface ServiceDescriptor<T> {\n factory: Factory<T>\n singleton: boolean\n instance?: T\n}\n\nexport interface Container {\n /** Register a service factory */\n register<T>(key: ServiceKey, factory: Factory<T>): Container\n /** Register a singleton service */\n singleton<T>(key: ServiceKey, factory: Factory<T>): Container\n /** Register a constant value */\n constant<T>(key: ServiceKey, value: T): Container\n /** Resolve a service by key */\n resolve<T>(key: ServiceKey): T\n /** Check if a service is registered */\n has(key: ServiceKey): boolean\n /** Create a child container */\n createChild(): Container\n}\n\n/**\n * Creates a dependency injection container.\n * \n * @example\n * // Define your services\n * class Logger {\n * log(msg: string) { console.log(msg) }\n * }\n * \n * class Database {\n * constructor(private logger: Logger) {}\n * query(sql: string) {\n * this.logger.log(`Executing: ${sql}`)\n * return []\n * }\n * }\n * \n * class UserService {\n * constructor(private db: Database) {}\n * getUsers() {\n * return this.db.query('SELECT * FROM users')\n * }\n * }\n * \n * // Create container and register services\n * const container = createContainer()\n * .singleton('logger', () => new Logger())\n * .singleton('db', (c) => new Database(c.resolve('logger')))\n * .register('userService', (c) => new UserService(c.resolve('db')))\n * \n * // Resolve services\n * const userService = container.resolve<UserService>('userService')\n * userService.getUsers()\n * \n * @example\n * // With constants\n * const container = createContainer()\n * .constant('apiUrl', 'https://api.example.com')\n * .constant('apiKey', process.env.API_KEY)\n * .singleton('api', (c) => new ApiClient(\n * c.resolve('apiUrl'),\n * c.resolve('apiKey')\n * ))\n */\nexport function createContainer(parent?: Container): Container {\n const services = new Map<ServiceKey, ServiceDescriptor<unknown>>()\n\n const container: Container = {\n register<T>(key: ServiceKey, factory: Factory<T>): Container {\n services.set(key, { factory, singleton: false })\n return container\n },\n\n singleton<T>(key: ServiceKey, factory: Factory<T>): Container {\n services.set(key, { factory, singleton: true })\n return container\n },\n\n constant<T>(key: ServiceKey, value: T): Container {\n services.set(key, { \n factory: () => value, \n singleton: true, \n instance: value \n })\n return container\n },\n\n resolve<T>(key: ServiceKey): T {\n const descriptor = services.get(key) as ServiceDescriptor<T> | undefined\n\n if (!descriptor) {\n if (parent) {\n return parent.resolve<T>(key)\n }\n throw new Error(`Service not found: ${String(key)}`)\n }\n\n if (descriptor.singleton) {\n if (descriptor.instance === undefined) {\n descriptor.instance = descriptor.factory(container)\n }\n return descriptor.instance as T\n }\n\n return descriptor.factory(container) as T\n },\n\n has(key: ServiceKey): boolean {\n return services.has(key) || (parent?.has(key) ?? false)\n },\n\n createChild(): Container {\n return createContainer(container)\n },\n }\n\n return container\n}\n\n/**\n * Creates a typed container with predefined service types.\n * \n * @example\n * interface Services {\n * logger: Logger\n * db: Database\n * userService: UserService\n * }\n * \n * const container = createTypedContainer<Services>()\n * .singleton('logger', () => new Logger())\n * .singleton('db', (c) => new Database(c.resolve('logger')))\n * \n * // Fully typed!\n * const logger = container.resolve('logger') // Type: Logger\n */\nexport function createTypedContainer<Services extends Record<string, unknown>>(): {\n register<K extends keyof Services>(\n key: K,\n factory: (container: { resolve<K2 extends keyof Services>(key: K2): Services[K2] }) => Services[K]\n ): ReturnType<typeof createTypedContainer<Services>>\n singleton<K extends keyof Services>(\n key: K,\n factory: (container: { resolve<K2 extends keyof Services>(key: K2): Services[K2] }) => Services[K]\n ): ReturnType<typeof createTypedContainer<Services>>\n constant<K extends keyof Services>(key: K, value: Services[K]): ReturnType<typeof createTypedContainer<Services>>\n resolve<K extends keyof Services>(key: K): Services[K]\n has(key: keyof Services): boolean\n} {\n const container = createContainer()\n \n return {\n register(key, factory) {\n container.register(key as string, factory as Factory<unknown>)\n return this\n },\n singleton(key, factory) {\n container.singleton(key as string, factory as Factory<unknown>)\n return this\n },\n constant(key, value) {\n container.constant(key as string, value)\n return this\n },\n resolve(key) {\n return container.resolve(key as string)\n },\n has(key) {\n return container.has(key as string)\n },\n }\n}\n","/**\n * Environment Module - Type-safe environment variables\n */\n\nexport { env, createEnv } from './env'\n","/**\n * Type-Safe Environment Variables\n */\n\ntype EnvSchema = Record<string, EnvVar<unknown>>\n\nexport interface EnvVar<T> {\n _type: T\n _parse: (value: string | undefined) => T\n _default?: T | undefined\n}\n\n/**\n * Environment variable type builders\n */\nexport const env = {\n /**\n * String environment variable\n */\n string(options?: { default?: string }): EnvVar<string> {\n return {\n _type: '' as string,\n _parse: (value) => {\n if (value === undefined) {\n if (options?.default !== undefined) return options.default\n throw new Error('Required environment variable is missing')\n }\n return value\n },\n _default: options?.default,\n }\n },\n\n /**\n * Number environment variable\n */\n number(options?: { default?: number }): EnvVar<number> {\n return {\n _type: 0 as number,\n _parse: (value) => {\n if (value === undefined) {\n if (options?.default !== undefined) return options.default\n throw new Error('Required environment variable is missing')\n }\n const num = Number(value)\n if (isNaN(num)) throw new Error(`Invalid number: ${value}`)\n return num\n },\n _default: options?.default,\n }\n },\n\n /**\n * Boolean environment variable\n */\n boolean(options?: { default?: boolean }): EnvVar<boolean> {\n return {\n _type: false as boolean,\n _parse: (value) => {\n if (value === undefined) {\n if (options?.default !== undefined) return options.default\n throw new Error('Required environment variable is missing')\n }\n return value === 'true' || value === '1' || value === 'yes'\n },\n _default: options?.default,\n }\n },\n\n /**\n * Enum environment variable\n */\n enum<T extends string>(values: readonly T[], options?: { default?: T }): EnvVar<T> {\n return {\n _type: '' as T,\n _parse: (value) => {\n if (value === undefined) {\n if (options?.default !== undefined) return options.default\n throw new Error('Required environment variable is missing')\n }\n if (!values.includes(value as T)) {\n throw new Error(`Invalid value: ${value}. Expected one of: ${values.join(', ')}`)\n }\n return value as T\n },\n _default: options?.default,\n }\n },\n\n /**\n * URL environment variable\n */\n url(options?: { default?: string }): EnvVar<string> {\n return {\n _type: '' as string,\n _parse: (value) => {\n if (value === undefined) {\n if (options?.default !== undefined) return options.default\n throw new Error('Required environment variable is missing')\n }\n try {\n new URL(value)\n return value\n } catch {\n throw new Error(`Invalid URL: ${value}`)\n }\n },\n _default: options?.default,\n }\n },\n\n /**\n * JSON environment variable\n */\n json<T>(options?: { default?: T }): EnvVar<T> {\n return {\n _type: {} as T,\n _parse: (value) => {\n if (value === undefined) {\n if (options?.default !== undefined) return options.default\n throw new Error('Required environment variable is missing')\n }\n try {\n return JSON.parse(value) as T\n } catch {\n throw new Error(`Invalid JSON: ${value}`)\n }\n },\n _default: options?.default,\n }\n },\n\n /**\n * Array environment variable (comma-separated)\n */\n array(options?: { default?: string[]; separator?: string }): EnvVar<string[]> {\n const separator = options?.separator ?? ','\n return {\n _type: [] as string[],\n _parse: (value) => {\n if (value === undefined) {\n if (options?.default !== undefined) return options.default\n throw new Error('Required environment variable is missing')\n }\n return value.split(separator).map(s => s.trim())\n },\n _default: options?.default,\n }\n },\n}\n\ntype InferEnv<T extends EnvSchema> = {\n [K in keyof T]: T[K]['_type']\n}\n\n/**\n * Creates a type-safe environment configuration.\n * \n * @example\n * const config = createEnv({\n * DATABASE_URL: env.url(),\n * API_KEY: env.string(),\n * PORT: env.number({ default: 3000 }),\n * NODE_ENV: env.enum(['development', 'production', 'test'] as const),\n * DEBUG: env.boolean({ default: false }),\n * ALLOWED_ORIGINS: env.array({ default: ['localhost'] }),\n * })\n * \n * // All values are typed!\n * config.DATABASE_URL // string (validated as URL)\n * config.PORT // number\n * config.NODE_ENV // 'development' | 'production' | 'test'\n * config.DEBUG // boolean\n */\nexport function createEnv<T extends EnvSchema>(\n schema: T,\n envSource: Record<string, string | undefined> = typeof process !== 'undefined' ? process.env : {}\n): InferEnv<T> {\n const result: Record<string, unknown> = {}\n const errors: string[] = []\n\n for (const [key, varDef] of Object.entries(schema)) {\n try {\n result[key] = varDef._parse(envSource[key])\n } catch (error) {\n errors.push(`${key}: ${(error as Error).message}`)\n }\n }\n\n if (errors.length > 0) {\n throw new Error(`Environment validation failed:\\n${errors.join('\\n')}`)\n }\n\n return result as InferEnv<T>\n}\n","/**\n * Router Module - Type-safe routing\n */\n\nexport { route, createRouter } from './router'\nexport type { Route, Router } from './router'\n","/**\n * Type-Safe Router - Routes with typed parameters\n */\n\ntype ParamType = 'string' | 'number' | 'boolean'\n\ninterface RouteParams {\n [key: string]: ParamType\n}\n\ntype InferParamType<T extends ParamType> = \n T extends 'string' ? string :\n T extends 'number' ? number :\n T extends 'boolean' ? boolean :\n never\n\ntype InferParams<T extends RouteParams> = {\n [K in keyof T]: InferParamType<T[K]>\n}\n\nexport interface Route<Params extends RouteParams = Record<string, never>> {\n path: string\n params: Params\n build: (params: InferParams<Params>) => string\n match: (path: string) => InferParams<Params> | null\n}\n\n/**\n * Creates a type-safe route definition.\n * \n * @example\n * const userRoute = route('/users/:id', { id: 'string' })\n * \n * // Build URL (type-checked!)\n * userRoute.build({ id: '123' }) // '/users/123'\n * \n * // Match URL\n * userRoute.match('/users/123') // { id: '123' }\n * userRoute.match('/posts/123') // null\n */\nexport function route<Params extends RouteParams = Record<string, never>>(\n path: string,\n params?: Params\n): Route<Params> {\n const paramNames = (path.match(/:(\\w+)/g) || []).map(p => p.slice(1))\n const paramDefs = params || ({} as Params)\n\n const build = (values: InferParams<Params>): string => {\n let result = path\n for (const name of paramNames) {\n const value = (values as Record<string, unknown>)[name]\n result = result.replace(`:${name}`, String(value))\n }\n return result\n }\n\n const match = (testPath: string): InferParams<Params> | null => {\n const pattern = path.replace(/:(\\w+)/g, '([^/]+)')\n const regex = new RegExp(`^${pattern}$`)\n const matches = testPath.match(regex)\n\n if (!matches) return null\n\n const result: Record<string, unknown> = {}\n paramNames.forEach((name, index) => {\n const value = matches[index + 1]\n const type = paramDefs[name as keyof Params]\n \n if (type === 'number') {\n result[name] = Number(value)\n } else if (type === 'boolean') {\n result[name] = value === 'true'\n } else {\n result[name] = value\n }\n })\n\n return result as InferParams<Params>\n }\n\n return { path, params: paramDefs, build, match }\n}\n\nexport interface Router<Routes extends Record<string, Route<RouteParams>>> {\n routes: Routes\n navigate: <K extends keyof Routes>(\n name: K,\n params: Routes[K] extends Route<infer P> ? InferParams<P> : never\n ) => string\n match: (path: string) => { name: keyof Routes; params: Record<string, unknown> } | null\n}\n\n/**\n * Creates a type-safe router with named routes.\n * \n * @example\n * const router = createRouter({\n * home: route('/'),\n * users: route('/users'),\n * user: route('/users/:id', { id: 'string' }),\n * post: route('/posts/:postId/comments/:commentId', { \n * postId: 'number', \n * commentId: 'number' \n * }),\n * })\n * \n * // Navigate (fully typed!)\n * router.navigate('user', { id: '123' }) // '/users/123'\n * router.navigate('post', { postId: 1, commentId: 5 }) // '/posts/1/comments/5'\n * \n * // TypeScript error: missing 'id'\n * router.navigate('user', {})\n * \n * // Match current path\n * const matched = router.match('/users/123')\n * // { name: 'user', params: { id: '123' } }\n */\nexport function createRouter<Routes extends Record<string, Route<RouteParams>>>(\n routes: Routes\n): Router<Routes> {\n return {\n routes,\n \n navigate(name, params) {\n const routeDef = routes[name]\n if (!routeDef) throw new Error(`Route not found: ${String(name)}`)\n return routeDef.build(params as InferParams<RouteParams>)\n },\n\n match(path) {\n for (const [name, routeDef] of Object.entries(routes)) {\n const params = routeDef.match(path)\n if (params) {\n return { name: name as keyof Routes, params }\n }\n }\n return null\n },\n }\n}\n","/**\n * Form Module - Type-safe form handling\n */\n\nexport { createForm, field } from './form'\nexport type { FormState, FieldState } from './form'\n","/**\n * Type-Safe Form - Form handling with validation\n */\n\nimport { signal } from '../reactive/signal'\nimport type { Signal } from '../reactive/signal'\n\nexport interface FieldState<T> {\n value: Signal<T>\n error: Signal<string | null>\n touched: Signal<boolean>\n dirty: Signal<boolean>\n}\n\nexport interface FormState<T extends Record<string, unknown>> {\n fields: { [K in keyof T]: FieldState<T[K]> }\n values: () => T\n errors: () => Partial<Record<keyof T, string>>\n isValid: () => boolean\n isDirty: () => boolean\n isTouched: () => boolean\n reset: () => void\n validate: () => boolean\n submit: (handler: (values: T) => void | Promise<void>) => Promise<void>\n}\n\ntype Validator<T> = (value: T) => string | null\n\ninterface FieldConfig<T> {\n initial: T\n validate?: Validator<T> | undefined\n}\n\n/**\n * Creates a form field configuration.\n */\nexport function field<T>(initial: T, validate?: Validator<T>): FieldConfig<T> {\n return { initial, validate }\n}\n\n/**\n * Creates a type-safe form with validation.\n * \n * @example\n * const form = createForm({\n * email: field('', (v) => !v.includes('@') ? 'Invalid email' : null),\n * password: field('', (v) => v.length < 8 ? 'Min 8 characters' : null),\n * remember: field(false),\n * })\n * \n * // Access field values\n * form.fields.email.value.set('test@example.com')\n * \n * // Check validation\n * console.log(form.isValid()) // true/false\n * console.log(form.errors()) // { email: null, password: 'Min 8 characters' }\n * \n * // Submit form\n * await form.submit(async (values) => {\n * await api.login(values)\n * })\n * \n * // Reset form\n * form.reset()\n */\nexport function createForm<T extends Record<string, unknown>>(\n config: { [K in keyof T]: FieldConfig<T[K]> }\n): FormState<T> {\n const fieldEntries = Object.entries(config) as [keyof T, FieldConfig<T[keyof T]>][]\n \n const fields = {} as { [K in keyof T]: FieldState<T[K]> }\n \n for (const [key, fieldConfig] of fieldEntries) {\n const value = signal(fieldConfig.initial)\n const error = signal<string | null>(null)\n const touched = signal(false)\n const dirty = signal(false)\n \n const initialValue = fieldConfig.initial\n \n // Subscribe to value changes for validation\n value.subscribe((v) => {\n dirty.set(v !== initialValue)\n if (fieldConfig.validate) {\n error.set(fieldConfig.validate(v))\n }\n })\n \n fields[key] = { value, error, touched, dirty } as FieldState<T[typeof key]>\n }\n\n const values = (): T => {\n const result = {} as T\n for (const key of Object.keys(fields) as (keyof T)[]) {\n result[key] = fields[key].value() as T[typeof key]\n }\n return result\n }\n\n const errors = (): Partial<Record<keyof T, string>> => {\n const result: Partial<Record<keyof T, string>> = {}\n for (const key of Object.keys(fields) as (keyof T)[]) {\n const err = fields[key].error()\n if (err) result[key] = err\n }\n return result\n }\n\n const isValid = (): boolean => {\n return Object.keys(fields).every(key => \n fields[key as keyof T].error() === null\n )\n }\n\n const isDirty = (): boolean => {\n return Object.keys(fields).some(key => \n fields[key as keyof T].dirty()\n )\n }\n\n const isTouched = (): boolean => {\n return Object.keys(fields).some(key => \n fields[key as keyof T].touched()\n )\n }\n\n const reset = (): void => {\n for (const [key, fieldConfig] of fieldEntries) {\n fields[key].value.set(fieldConfig.initial as T[typeof key])\n fields[key].error.set(null)\n fields[key].touched.set(false)\n fields[key].dirty.set(false)\n }\n }\n\n const validate = (): boolean => {\n for (const [key, fieldConfig] of fieldEntries) {\n if (fieldConfig.validate) {\n const err = fieldConfig.validate(fields[key].value())\n fields[key].error.set(err)\n }\n fields[key].touched.set(true)\n }\n return isValid()\n }\n\n const submit = async (handler: (values: T) => void | Promise<void>): Promise<void> => {\n if (validate()) {\n await handler(values())\n }\n }\n\n return {\n fields,\n values,\n errors,\n isValid,\n isDirty,\n isTouched,\n reset,\n validate,\n submit,\n }\n}\n","/**\n * Feature Module - Type-safe feature flags\n */\n\nexport { createFeatureFlags, flag } from './featureFlags'\nexport type { FeatureFlags } from './featureFlags'\n","/**\n * Type-Safe Feature Flags\n */\n\ntype FlagType = 'boolean' | 'string' | 'number'\n\nexport interface FlagConfig {\n type: FlagType\n default: unknown\n}\n\ntype InferFlagType<T extends FlagType> = \n T extends 'boolean' ? boolean :\n T extends 'string' ? string :\n T extends 'number' ? number :\n never\n\ntype FlagSchema = Record<string, FlagConfig>\n\ntype InferFlags<T extends FlagSchema> = {\n [K in keyof T]: InferFlagType<T[K]['type']>\n}\n\n/**\n * Flag type builders\n */\nexport const flag = {\n boolean(defaultValue = false): FlagConfig {\n return { type: 'boolean', default: defaultValue }\n },\n string(defaultValue = ''): FlagConfig {\n return { type: 'string', default: defaultValue }\n },\n number(defaultValue = 0): FlagConfig {\n return { type: 'number', default: defaultValue }\n },\n}\n\nexport interface FeatureFlags<T extends FlagSchema> {\n /** Check if a boolean flag is enabled */\n is<K extends keyof T>(key: K): T[K]['type'] extends 'boolean' ? boolean : never\n /** Get a flag value */\n get<K extends keyof T>(key: K): InferFlagType<T[K]['type']>\n /** Set a flag value */\n set<K extends keyof T>(key: K, value: InferFlagType<T[K]['type']>): void\n /** Get all flags */\n all(): InferFlags<T>\n /** Reset all flags to defaults */\n reset(): void\n /** Load flags from an object */\n load(flags: Partial<InferFlags<T>>): void\n}\n\n/**\n * Creates a type-safe feature flag system.\n * \n * @example\n * const flags = createFeatureFlags({\n * newDashboard: flag.boolean(false),\n * betaFeatures: flag.boolean(false),\n * maxUploadSize: flag.number(10),\n * theme: flag.string('light'),\n * })\n * \n * // Check boolean flags\n * if (flags.is('newDashboard')) {\n * renderNewDashboard()\n * }\n * \n * // Get any flag value\n * const maxSize = flags.get('maxUploadSize') // number\n * const theme = flags.get('theme') // string\n * \n * // Set flags\n * flags.set('betaFeatures', true)\n * flags.set('maxUploadSize', 50)\n * \n * // Load from config/API\n * flags.load({\n * newDashboard: true,\n * maxUploadSize: 100,\n * })\n */\nexport function createFeatureFlags<T extends FlagSchema>(\n schema: T\n): FeatureFlags<T> {\n const values: Record<string, unknown> = {}\n \n // Initialize with defaults\n for (const [key, config] of Object.entries(schema)) {\n values[key] = config.default\n }\n\n return {\n is(key) {\n const config = schema[key as string]\n if (config?.type !== 'boolean') {\n throw new Error(`Flag '${String(key)}' is not a boolean flag`)\n }\n return values[key as string] as ReturnType<FeatureFlags<T>['is']>\n },\n\n get(key) {\n return values[key as string] as InferFlagType<T[typeof key]['type']>\n },\n\n set(key, value) {\n values[key as string] = value\n },\n\n all() {\n return { ...values } as InferFlags<T>\n },\n\n reset() {\n for (const [key, config] of Object.entries(schema)) {\n values[key] = config.default\n }\n },\n\n load(flags) {\n for (const [key, value] of Object.entries(flags)) {\n if (key in schema && value !== undefined) {\n values[key] = value\n }\n }\n },\n }\n}\n","export { concat } from './concat'\nexport { differenceBy } from './differenceBy'\nexport { differenceWith } from './differenceWith'\nexport { dropRight } from './dropRight'\nexport { dropRightWhile } from './dropRightWhile'\nexport { fill } from './fill'\nexport { findIndex } from './findIndex'\nexport { findLastIndex } from './findLastIndex'\nexport { flattenDeep } from './flattenDeep'\nexport { flattenDepth } from './flattenDepth'\nexport { fromPairs } from './fromPairs'\nexport { indexOf } from './indexOf'\nexport { intersectionBy } from './intersectionBy'\nexport { intersectionWith } from './intersectionWith'\nexport { join } from './join'\nexport { lastIndexOf } from './lastIndexOf'\nexport { nth } from './nth'\nexport { pull } from './pull'\nexport { pullAll } from './pullAll'\nexport { pullAllBy } from './pullAllBy'\nexport { pullAllWith } from './pullAllWith'\nexport { pullAt } from './pullAt'\nexport { remove } from './remove'\nexport { reverse } from './reverse'\nexport { slice } from './slice'\nexport { sortedIndex } from './sortedIndex'\nexport { sortedIndexBy } from './sortedIndexBy'\nexport { sortedIndexOf } from './sortedIndexOf'\nexport { sortedLastIndex } from './sortedLastIndex'\nexport { sortedLastIndexBy } from './sortedLastIndexBy'\nexport { sortedLastIndexOf } from './sortedLastIndexOf'\nexport { sortedUniq } from './sortedUniq'\nexport { sortedUniqBy } from './sortedUniqBy'\nexport { takeRight } from './takeRight'\nexport { takeRightWhile } from './takeRightWhile'\nexport { union } from './union'\nexport { unionBy } from './unionBy'\nexport { unionWith } from './unionWith'\nexport { uniqBy } from './uniqBy'\nexport { uniqWith } from './uniqWith'\nexport { unzipWith } from './unzipWith'\nexport { without } from './without'\nexport { xor } from './xor'\nexport { xorBy } from './xorBy'\nexport { xorWith } from './xorWith'\nexport { zipObject } from './zipObject'\nexport { zipObjectDeep } from './zipObjectDeep'\nexport { zipWith } from './zipWith'\n","/**\n * Creates a new array concatenating array with any additional arrays and/or values.\n *\n * @example\n * concat([1], 2, [3], [[4]])\n * // [1, 2, 3, [4]]\n */\nexport function concat<T>(...args: (T | readonly T[])[]): T[] {\n const result: T[] = []\n for (const arg of args) {\n if (Array.isArray(arg)) {\n result.push(...arg)\n } else {\n result.push(arg as T)\n }\n }\n return result\n}\n","/**\n * Like difference, but accepts an iteratee to compare by.\n *\n * @example\n * differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor)\n * // [1.2]\n */\nexport function differenceBy<T>(\n array: readonly T[],\n values: readonly T[],\n iteratee: (value: T) => unknown\n): T[] {\n const valuesSet = new Set(values.map(iteratee))\n return array.filter((item) => !valuesSet.has(iteratee(item)))\n}\n","/**\n * Like difference, but accepts a comparator function.\n *\n * @example\n * const objects = [{ x: 1, y: 2 }, { x: 2, y: 1 }]\n * differenceWith(objects, [{ x: 1, y: 2 }], isEqual)\n * // [{ x: 2, y: 1 }]\n */\nexport function differenceWith<T>(\n array: readonly T[],\n values: readonly T[],\n comparator: (a: T, b: T) => boolean\n): T[] {\n return array.filter(\n (item) => !values.some((value) => comparator(item, value))\n )\n}\n","/**\n * Creates a slice of array with n elements dropped from the end.\n *\n * @example\n * dropRight([1, 2, 3]) // [1, 2]\n * dropRight([1, 2, 3], 2) // [1]\n */\nexport function dropRight<T>(array: readonly T[], n: number = 1): T[] {\n if (n <= 0) return [...array]\n if (n >= array.length) return []\n return array.slice(0, -n)\n}\n","/**\n * Creates a slice of array excluding elements dropped from the end while predicate returns true.\n *\n * @example\n * dropRightWhile([1, 2, 3, 4], n => n > 2)\n * // [1, 2]\n */\nexport function dropRightWhile<T>(\n array: readonly T[],\n predicate: (value: T) => boolean\n): T[] {\n let endIndex = array.length\n for (let i = array.length - 1; i >= 0; i--) {\n if (!predicate(array[i]!)) {\n endIndex = i + 1\n break\n }\n if (i === 0) {\n endIndex = 0\n }\n }\n return array.slice(0, endIndex)\n}\n","/**\n * Fills elements of array with value from start up to end.\n *\n * @example\n * fill([1, 2, 3], 'a')\n * // ['a', 'a', 'a']\n *\n * fill([4, 6, 8, 10], '*', 1, 3)\n * // [4, '*', '*', 10]\n */\nexport function fill<T, U>(\n array: T[],\n value: U,\n start: number = 0,\n end: number = array.length\n): (T | U)[] {\n const result = [...array] as (T | U)[]\n const startIdx = start < 0 ? Math.max(array.length + start, 0) : start\n const endIdx = end < 0 ? Math.max(array.length + end, 0) : Math.min(end, array.length)\n\n for (let i = startIdx; i < endIdx; i++) {\n result[i] = value\n }\n return result\n}\n","/**\n * Returns the index of the first element predicate returns truthy for.\n *\n * @example\n * findIndex([1, 2, 3, 4], n => n > 2)\n * // 2\n */\nexport function findIndex<T>(\n array: readonly T[],\n predicate: (value: T) => boolean\n): number {\n for (let i = 0; i < array.length; i++) {\n if (predicate(array[i]!)) {\n return i\n }\n }\n return -1\n}\n","/**\n * Like findIndex but iterates from right to left.\n *\n * @example\n * findLastIndex([1, 2, 3, 4], n => n > 2)\n * // 3\n */\nexport function findLastIndex<T>(\n array: readonly T[],\n predicate: (value: T) => boolean\n): number {\n for (let i = array.length - 1; i >= 0; i--) {\n if (predicate(array[i]!)) {\n return i\n }\n }\n return -1\n}\n","/**\n * Recursively flattens array to a single level.\n *\n * @example\n * flattenDeep([1, [2, [3, [4]], 5]])\n * // [1, 2, 3, 4, 5]\n */\nexport function flattenDeep<T>(array: readonly unknown[]): T[] {\n const result: T[] = []\n\n function flatten(arr: readonly unknown[]): void {\n for (const item of arr) {\n if (Array.isArray(item)) {\n flatten(item)\n } else {\n result.push(item as T)\n }\n }\n }\n\n flatten(array)\n return result\n}\n","/**\n * Recursively flattens array up to depth times.\n *\n * @example\n * flattenDepth([1, [2, [3, [4]], 5]], 2)\n * // [1, 2, 3, [4], 5]\n */\nexport function flattenDepth<T>(\n array: readonly unknown[],\n depth: number = 1\n): T[] {\n if (depth <= 0) {\n return array.slice() as T[]\n }\n\n const result: unknown[] = []\n\n for (const item of array) {\n if (Array.isArray(item)) {\n result.push(...flattenDepth(item, depth - 1))\n } else {\n result.push(item)\n }\n }\n\n return result as T[]\n}\n","/**\n * Returns an object composed from key-value pairs.\n *\n * @example\n * fromPairs([['a', 1], ['b', 2]])\n * // { a: 1, b: 2 }\n */\nexport function fromPairs<K extends PropertyKey, V>(\n pairs: readonly (readonly [K, V])[]\n): Record<K, V> {\n const result = {} as Record<K, V>\n for (const [key, value] of pairs) {\n result[key] = value\n }\n return result\n}\n","/**\n * Gets the index at which the first occurrence of value is found.\n *\n * @example\n * indexOf([1, 2, 1, 2], 2) // 1\n * indexOf([1, 2, 1, 2], 2, 2) // 3\n */\nexport function indexOf<T>(\n array: readonly T[],\n value: T,\n fromIndex: number = 0\n): number {\n const startIndex = fromIndex < 0 ? Math.max(array.length + fromIndex, 0) : fromIndex\n for (let i = startIndex; i < array.length; i++) {\n if (array[i] === value) {\n return i\n }\n }\n return -1\n}\n","/**\n * Like intersection, but accepts an iteratee to compare by.\n *\n * @example\n * intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor)\n * // [2.1]\n */\nexport function intersectionBy<T>(\n array: readonly T[],\n values: readonly T[],\n iteratee: (value: T) => unknown\n): T[] {\n const valuesSet = new Set(values.map(iteratee))\n return array.filter((item) => valuesSet.has(iteratee(item)))\n}\n","/**\n * Like intersection, but accepts a comparator function.\n *\n * @example\n * const objects = [{ x: 1, y: 2 }, { x: 2, y: 1 }]\n * intersectionWith(objects, [{ x: 1, y: 2 }], isEqual)\n * // [{ x: 1, y: 2 }]\n */\nexport function intersectionWith<T>(\n array: readonly T[],\n values: readonly T[],\n comparator: (a: T, b: T) => boolean\n): T[] {\n return array.filter((item) =>\n values.some((value) => comparator(item, value))\n )\n}\n","/**\n * Converts all elements in array into a string separated by separator.\n *\n * @example\n * join(['a', 'b', 'c'], '~')\n * // 'a~b~c'\n */\nexport function join<T>(array: readonly T[], separator: string = ','): string {\n return array.join(separator)\n}\n","/**\n * Gets the index at which the last occurrence of value is found.\n *\n * @example\n * lastIndexOf([1, 2, 1, 2], 2)\n * // 3\n */\nexport function lastIndexOf<T>(\n array: readonly T[],\n value: T,\n fromIndex: number = array.length - 1\n): number {\n const startIndex = fromIndex < 0 ? array.length + fromIndex : Math.min(fromIndex, array.length - 1)\n for (let i = startIndex; i >= 0; i--) {\n if (array[i] === value) {\n return i\n }\n }\n return -1\n}\n","/**\n * Gets the element at index n of array. Negative indices count from the end.\n *\n * @example\n * nth(['a', 'b', 'c', 'd'], 1) // 'b'\n * nth(['a', 'b', 'c', 'd'], -2) // 'c'\n */\nexport function nth<T>(array: readonly T[], n: number = 0): T | undefined {\n const index = n < 0 ? array.length + n : n\n return array[index]\n}\n","/**\n * Removes all given values from array (mutates).\n *\n * @example\n * const array = ['a', 'b', 'c', 'a', 'b', 'c']\n * pull(array, 'a', 'c')\n * // array is now ['b', 'b']\n */\nexport function pull<T>(array: T[], ...values: T[]): T[] {\n const valuesSet = new Set(values)\n let writeIndex = 0\n\n for (let readIndex = 0; readIndex < array.length; readIndex++) {\n if (!valuesSet.has(array[readIndex]!)) {\n array[writeIndex] = array[readIndex]!\n writeIndex++\n }\n }\n\n array.length = writeIndex\n return array\n}\n","/**\n * Like pull, but accepts an array of values to remove.\n *\n * @example\n * const array = ['a', 'b', 'c', 'a', 'b', 'c']\n * pullAll(array, ['a', 'c'])\n * // array is now ['b', 'b']\n */\nexport function pullAll<T>(array: T[], values: readonly T[]): T[] {\n const valuesSet = new Set(values)\n let writeIndex = 0\n\n for (let readIndex = 0; readIndex < array.length; readIndex++) {\n if (!valuesSet.has(array[readIndex]!)) {\n array[writeIndex] = array[readIndex]!\n writeIndex++\n }\n }\n\n array.length = writeIndex\n return array\n}\n","/**\n * Like pullAll, but accepts an iteratee to compare by.\n *\n * @example\n * const array = [{ x: 1 }, { x: 2 }, { x: 3 }]\n * pullAllBy(array, [{ x: 1 }, { x: 3 }], o => o.x)\n * // array is now [{ x: 2 }]\n */\nexport function pullAllBy<T>(\n array: T[],\n values: readonly T[],\n iteratee: (value: T) => unknown\n): T[] {\n const valuesSet = new Set(values.map(iteratee))\n let writeIndex = 0\n\n for (let readIndex = 0; readIndex < array.length; readIndex++) {\n if (!valuesSet.has(iteratee(array[readIndex]!))) {\n array[writeIndex] = array[readIndex]!\n writeIndex++\n }\n }\n\n array.length = writeIndex\n return array\n}\n","/**\n * Like pullAll, but accepts a comparator function.\n *\n * @example\n * const array = [{ x: 1, y: 2 }, { x: 3, y: 4 }]\n * pullAllWith(array, [{ x: 3, y: 4 }], isEqual)\n * // array is now [{ x: 1, y: 2 }]\n */\nexport function pullAllWith<T>(\n array: T[],\n values: readonly T[],\n comparator: (a: T, b: T) => boolean\n): T[] {\n let writeIndex = 0\n\n for (let readIndex = 0; readIndex < array.length; readIndex++) {\n const shouldRemove = values.some((value) =>\n comparator(array[readIndex]!, value)\n )\n if (!shouldRemove) {\n array[writeIndex] = array[readIndex]!\n writeIndex++\n }\n }\n\n array.length = writeIndex\n return array\n}\n","/**\n * Removes elements from array at indexes and returns removed elements.\n *\n * @example\n * const array = ['a', 'b', 'c', 'd']\n * const pulled = pullAt(array, 1, 3)\n * // array is now ['a', 'c']\n * // pulled is ['b', 'd']\n */\nexport function pullAt<T>(array: T[], ...indexes: number[]): T[] {\n const removed: T[] = []\n const indexSet = new Set(indexes.filter((i) => i >= 0 && i < array.length))\n\n // Collect removed elements in order\n const sortedIndexes = [...indexSet].sort((a, b) => a - b)\n for (const index of sortedIndexes) {\n removed.push(array[index]!)\n }\n\n // Remove elements from array\n let writeIndex = 0\n for (let readIndex = 0; readIndex < array.length; readIndex++) {\n if (!indexSet.has(readIndex)) {\n array[writeIndex] = array[readIndex]!\n writeIndex++\n }\n }\n\n array.length = writeIndex\n return removed\n}\n","/**\n * Removes all elements from array that predicate returns truthy for.\n *\n * @example\n * const array = [1, 2, 3, 4]\n * const evens = remove(array, n => n % 2 === 0)\n * // array is now [1, 3]\n * // evens is [2, 4]\n */\nexport function remove<T>(\n array: T[],\n predicate: (value: T) => boolean\n): T[] {\n const removed: T[] = []\n let writeIndex = 0\n\n for (let readIndex = 0; readIndex < array.length; readIndex++) {\n const item = array[readIndex]!\n if (predicate(item)) {\n removed.push(item)\n } else {\n array[writeIndex] = item\n writeIndex++\n }\n }\n\n array.length = writeIndex\n return removed\n}\n","/**\n * Reverses array so that the first element becomes the last.\n *\n * @example\n * const array = [1, 2, 3]\n * reverse(array)\n * // array is now [3, 2, 1]\n */\nexport function reverse<T>(array: T[]): T[] {\n return array.reverse()\n}\n","/**\n * Creates a slice of array from start up to end.\n *\n * @example\n * slice([1, 2, 3, 4], 1, 3)\n * // [2, 3]\n */\nexport function slice<T>(\n array: readonly T[],\n start: number = 0,\n end: number = array.length\n): T[] {\n return array.slice(start, end)\n}\n","/**\n * Uses binary search to determine the lowest index to insert value.\n *\n * @example\n * sortedIndex([30, 50], 40)\n * // 1\n */\nexport function sortedIndex<T>(array: readonly T[], value: T): number {\n let low = 0\n let high = array.length\n\n while (low < high) {\n const mid = Math.floor((low + high) / 2)\n if (array[mid]! < value) {\n low = mid + 1\n } else {\n high = mid\n }\n }\n\n return low\n}\n","/**\n * Like sortedIndex, but accepts an iteratee.\n *\n * @example\n * sortedIndexBy([{ x: 4 }, { x: 5 }], { x: 4 }, o => o.x)\n * // 0\n */\nexport function sortedIndexBy<T>(\n array: readonly T[],\n value: T,\n iteratee: (value: T) => unknown\n): number {\n const computedValue = iteratee(value)\n let low = 0\n let high = array.length\n\n while (low < high) {\n const mid = Math.floor((low + high) / 2)\n if ((iteratee(array[mid]!) as number) < (computedValue as number)) {\n low = mid + 1\n } else {\n high = mid\n }\n }\n\n return low\n}\n","/**\n * Performs a binary search on a sorted array to find value.\n *\n * @example\n * sortedIndexOf([4, 5, 5, 5, 6], 5)\n * // 1\n */\nexport function sortedIndexOf<T>(array: readonly T[], value: T): number {\n let low = 0\n let high = array.length\n\n while (low < high) {\n const mid = Math.floor((low + high) / 2)\n if (array[mid]! < value) {\n low = mid + 1\n } else {\n high = mid\n }\n }\n\n return low < array.length && array[low] === value ? low : -1\n}\n","/**\n * Like sortedIndex, but returns the highest index.\n *\n * @example\n * sortedLastIndex([4, 5, 5, 5, 6], 5)\n * // 4\n */\nexport function sortedLastIndex<T>(array: readonly T[], value: T): number {\n let low = 0\n let high = array.length\n\n while (low < high) {\n const mid = Math.floor((low + high) / 2)\n if (array[mid]! <= value) {\n low = mid + 1\n } else {\n high = mid\n }\n }\n\n return low\n}\n","/**\n * Like sortedLastIndex, but accepts an iteratee.\n *\n * @example\n * sortedLastIndexBy([{ x: 4 }, { x: 5 }], { x: 4 }, o => o.x)\n * // 1\n */\nexport function sortedLastIndexBy<T>(\n array: readonly T[],\n value: T,\n iteratee: (value: T) => unknown\n): number {\n const computedValue = iteratee(value)\n let low = 0\n let high = array.length\n\n while (low < high) {\n const mid = Math.floor((low + high) / 2)\n if ((iteratee(array[mid]!) as number) <= (computedValue as number)) {\n low = mid + 1\n } else {\n high = mid\n }\n }\n\n return low\n}\n","/**\n * Like sortedIndexOf, but returns the highest index.\n *\n * @example\n * sortedLastIndexOf([4, 5, 5, 5, 6], 5)\n * // 3\n */\nexport function sortedLastIndexOf<T>(array: readonly T[], value: T): number {\n let low = 0\n let high = array.length\n\n while (low < high) {\n const mid = Math.floor((low + high) / 2)\n if (array[mid]! <= value) {\n low = mid + 1\n } else {\n high = mid\n }\n }\n\n return low > 0 && array[low - 1] === value ? low - 1 : -1\n}\n","/**\n * Returns a duplicate-free version of a sorted array.\n *\n * @example\n * sortedUniq([1, 1, 2])\n * // [1, 2]\n */\nexport function sortedUniq<T>(array: readonly T[]): T[] {\n if (array.length === 0) return []\n\n const result: T[] = [array[0]!]\n\n for (let i = 1; i < array.length; i++) {\n if (array[i] !== array[i - 1]) {\n result.push(array[i]!)\n }\n }\n\n return result\n}\n","/**\n * Like sortedUniq, but accepts an iteratee.\n *\n * @example\n * sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor)\n * // [1.1, 2.3]\n */\nexport function sortedUniqBy<T>(\n array: readonly T[],\n iteratee: (value: T) => unknown\n): T[] {\n if (array.length === 0) return []\n\n const result: T[] = [array[0]!]\n let lastComputed = iteratee(array[0]!)\n\n for (let i = 1; i < array.length; i++) {\n const computed = iteratee(array[i]!)\n if (computed !== lastComputed) {\n result.push(array[i]!)\n lastComputed = computed\n }\n }\n\n return result\n}\n","/**\n * Creates a slice of array with n elements taken from the end.\n *\n * @example\n * takeRight([1, 2, 3]) // [3]\n * takeRight([1, 2, 3], 2) // [2, 3]\n */\nexport function takeRight<T>(array: readonly T[], n: number = 1): T[] {\n if (n <= 0) return []\n if (n >= array.length) return [...array]\n return array.slice(-n)\n}\n","/**\n * Creates a slice of array with elements taken from the end while predicate returns true.\n *\n * @example\n * takeRightWhile([1, 2, 3, 4], n => n > 2)\n * // [3, 4]\n */\nexport function takeRightWhile<T>(\n array: readonly T[],\n predicate: (value: T) => boolean\n): T[] {\n let startIndex = array.length\n\n for (let i = array.length - 1; i >= 0; i--) {\n if (!predicate(array[i]!)) {\n break\n }\n startIndex = i\n }\n\n return array.slice(startIndex)\n}\n","/**\n * Creates an array of unique values from all given arrays.\n *\n * @example\n * union([2], [1, 2])\n * // [2, 1]\n */\nexport function union<T>(...arrays: readonly (readonly T[])[]): T[] {\n const seen = new Set<T>()\n const result: T[] = []\n\n for (const array of arrays) {\n for (const item of array) {\n if (!seen.has(item)) {\n seen.add(item)\n result.push(item)\n }\n }\n }\n\n return result\n}\n","/**\n * Like union, but accepts an iteratee to compare by.\n *\n * @example\n * unionBy([2.1], [1.2, 2.3], Math.floor)\n * // [2.1, 1.2]\n */\nexport function unionBy<T>(\n iteratee: (value: T) => unknown,\n ...arrays: readonly (readonly T[])[]\n): T[] {\n const seen = new Set<unknown>()\n const result: T[] = []\n\n for (const array of arrays) {\n for (const item of array) {\n const computed = iteratee(item)\n if (!seen.has(computed)) {\n seen.add(computed)\n result.push(item)\n }\n }\n }\n\n return result\n}\n","/**\n * Like union, but accepts a comparator function.\n *\n * @example\n * const objects = [{ x: 1, y: 2 }, { x: 2, y: 1 }]\n * const others = [{ x: 1, y: 1 }, { x: 1, y: 2 }]\n * unionWith(isEqual, objects, others)\n * // [{ x: 1, y: 2 }, { x: 2, y: 1 }, { x: 1, y: 1 }]\n */\nexport function unionWith<T>(\n comparator: (a: T, b: T) => boolean,\n ...arrays: readonly (readonly T[])[]\n): T[] {\n const result: T[] = []\n\n for (const array of arrays) {\n for (const item of array) {\n const exists = result.some((existing) => comparator(existing, item))\n if (!exists) {\n result.push(item)\n }\n }\n }\n\n return result\n}\n","/**\n * Like unique, but accepts an iteratee to compare by.\n *\n * @example\n * uniqBy([2.1, 1.2, 2.3], Math.floor)\n * // [2.1, 1.2]\n */\nexport function uniqBy<T>(\n array: readonly T[],\n iteratee: (value: T) => unknown\n): T[] {\n const seen = new Set<unknown>()\n const result: T[] = []\n\n for (const item of array) {\n const computed = iteratee(item)\n if (!seen.has(computed)) {\n seen.add(computed)\n result.push(item)\n }\n }\n\n return result\n}\n","/**\n * Like unique, but accepts a comparator function.\n *\n * @example\n * const objects = [{ x: 1, y: 2 }, { x: 2, y: 1 }, { x: 1, y: 2 }]\n * uniqWith(objects, isEqual)\n * // [{ x: 1, y: 2 }, { x: 2, y: 1 }]\n */\nexport function uniqWith<T>(\n array: readonly T[],\n comparator: (a: T, b: T) => boolean\n): T[] {\n const result: T[] = []\n\n for (const item of array) {\n const exists = result.some((existing) => comparator(existing, item))\n if (!exists) {\n result.push(item)\n }\n }\n\n return result\n}\n","/**\n * Like unzip, but accepts an iteratee to combine regrouped values.\n *\n * @example\n * unzipWith([[1, 10, 100], [2, 20, 200]], (...nums) => nums.reduce((a, b) => a + b, 0))\n * // [3, 30, 300]\n */\nexport function unzipWith<T, R>(\n array: readonly (readonly T[])[],\n iteratee: (...values: T[]) => R\n): R[] {\n if (array.length === 0) return []\n\n const maxLength = Math.max(...array.map((arr) => arr.length))\n const result: R[] = []\n\n for (let i = 0; i < maxLength; i++) {\n const values = array.map((arr) => arr[i] as T)\n result.push(iteratee(...values))\n }\n\n return result\n}\n","/**\n * Creates an array excluding all given values.\n *\n * @example\n * without([2, 1, 2, 3], 1, 2)\n * // [3]\n */\nexport function without<T>(array: readonly T[], ...values: T[]): T[] {\n const valuesSet = new Set(values)\n return array.filter((item) => !valuesSet.has(item))\n}\n","/**\n * Creates an array of unique values that is the symmetric difference of the given arrays.\n *\n * @example\n * xor([2, 1], [2, 3])\n * // [1, 3]\n */\nexport function xor<T>(...arrays: readonly (readonly T[])[]): T[] {\n const counts = new Map<T, number>()\n\n for (const array of arrays) {\n const seen = new Set<T>()\n for (const item of array) {\n if (!seen.has(item)) {\n seen.add(item)\n counts.set(item, (counts.get(item) ?? 0) + 1)\n }\n }\n }\n\n const result: T[] = []\n for (const [item, count] of counts) {\n if (count === 1) {\n result.push(item)\n }\n }\n\n return result\n}\n","/**\n * Like xor, but accepts an iteratee to compare by.\n *\n * @example\n * xorBy([2.1, 1.2], [2.3, 3.4], Math.floor)\n * // [1.2, 3.4]\n */\nexport function xorBy<T>(\n iteratee: (value: T) => unknown,\n ...arrays: readonly (readonly T[])[]\n): T[] {\n const counts = new Map<unknown, { count: number; item: T }>()\n\n for (const array of arrays) {\n const seen = new Set<unknown>()\n for (const item of array) {\n const computed = iteratee(item)\n if (!seen.has(computed)) {\n seen.add(computed)\n const existing = counts.get(computed)\n if (existing) {\n existing.count++\n } else {\n counts.set(computed, { count: 1, item })\n }\n }\n }\n }\n\n const result: T[] = []\n for (const { count, item } of counts.values()) {\n if (count === 1) {\n result.push(item)\n }\n }\n\n return result\n}\n","/**\n * Like xor, but accepts a comparator function.\n *\n * @example\n * const objects = [{ x: 1, y: 2 }, { x: 2, y: 1 }]\n * const others = [{ x: 1, y: 1 }, { x: 1, y: 2 }]\n * xorWith(isEqual, objects, others)\n * // [{ x: 2, y: 1 }, { x: 1, y: 1 }]\n */\nexport function xorWith<T>(\n comparator: (a: T, b: T) => boolean,\n ...arrays: readonly (readonly T[])[]\n): T[] {\n const allItems: { item: T; arrayIndex: number }[] = []\n\n arrays.forEach((array, arrayIndex) => {\n for (const item of array) {\n // Check if item already exists in this array's items\n const existsInSameArray = allItems.some(\n (existing) =>\n existing.arrayIndex === arrayIndex && comparator(existing.item, item)\n )\n if (!existsInSameArray) {\n allItems.push({ item, arrayIndex })\n }\n }\n })\n\n const result: T[] = []\n\n for (const { item } of allItems) {\n // Count how many arrays contain this item\n let arrayCount = 0\n for (let i = 0; i < arrays.length; i++) {\n if (arrays[i]!.some((other) => comparator(item, other))) {\n arrayCount++\n }\n }\n\n // Only include if it appears in exactly one array\n if (arrayCount === 1) {\n // Check if already in result\n if (!result.some((existing) => comparator(existing, item))) {\n result.push(item)\n }\n }\n }\n\n return result\n}\n","/**\n * Creates an object from arrays of keys and values.\n *\n * @example\n * zipObject(['a', 'b'], [1, 2])\n * // { a: 1, b: 2 }\n */\nexport function zipObject<K extends PropertyKey, V>(\n keys: readonly K[],\n values: readonly V[]\n): Record<K, V> {\n const result = {} as Record<K, V>\n const length = Math.min(keys.length, values.length)\n\n for (let i = 0; i < length; i++) {\n result[keys[i]!] = values[i]!\n }\n\n return result\n}\n","/**\n * Like zipObject, but supports property paths.\n *\n * @example\n * zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2])\n * // { a: { b: [{ c: 1 }, { d: 2 }] } }\n */\nexport function zipObjectDeep(\n keys: readonly string[],\n values: readonly unknown[]\n): object {\n const result: Record<string, unknown> = {}\n\n for (let i = 0; i < keys.length; i++) {\n const path = keys[i]!\n const value = values[i]\n\n // Parse path into segments\n const segments = path\n .replace(/\\[(\\d+)\\]/g, '.$1')\n .split('.')\n .filter(Boolean)\n\n let current: Record<string, unknown> = result\n\n for (let j = 0; j < segments.length - 1; j++) {\n const segment = segments[j]!\n const nextSegment = segments[j + 1]!\n const isNextArray = /^\\d+$/.test(nextSegment)\n\n if (!(segment in current)) {\n current[segment] = isNextArray ? [] : {}\n }\n\n current = current[segment] as Record<string, unknown>\n }\n\n const lastSegment = segments[segments.length - 1]!\n current[lastSegment] = value\n }\n\n return result\n}\n","/**\n * Like zip, but accepts an iteratee to combine grouped values.\n *\n * @example\n * zipWith((a, b, c) => a + b + c, [1, 2], [10, 20], [100, 200])\n * // [111, 222]\n */\nexport function zipWith<T, R>(\n iteratee: (...values: T[]) => R,\n ...arrays: readonly (readonly T[])[]\n): R[] {\n if (arrays.length === 0) return []\n\n const minLength = Math.min(...arrays.map((arr) => arr.length))\n const result: R[] = []\n\n for (let i = 0; i < minLength; i++) {\n const values = arrays.map((arr) => arr[i] as T)\n result.push(iteratee(...values))\n }\n\n return result\n}\n","// Core\nexport {\n isDefined,\n isNil,\n assert,\n assertDefined,\n fail,\n noop,\n identity,\n unreachable,\n} from './core'\n\n// Guards\nexport {\n isObject,\n isPlainObject,\n isString,\n isNumber,\n isBoolean,\n isFunction,\n isArray,\n isDate,\n isPromise,\n isError,\n isSymbol,\n hasKey,\n hasKeys,\n isEmpty,\n isNonEmpty,\n castArray,\n cloneWith,\n cloneDeepWith,\n conformsTo,\n eq,\n gt,\n gte,\n lt,\n lte,\n isArguments,\n isArrayBuffer,\n isArrayLike,\n isArrayLikeObject,\n isBuffer,\n isElement,\n isEqualWith,\n isFinite,\n isInteger,\n isLength,\n isMap,\n isMatch,\n isMatchWith,\n isNaN,\n isNative,\n isNull,\n isUndefined,\n isObjectLike,\n isRegExp,\n isSafeInteger,\n isSet,\n isTypedArray,\n isWeakMap,\n isWeakSet,\n toArray,\n toFinite,\n toInteger,\n toLength,\n toNumber,\n toPlainObject,\n toSafeInteger,\n toString,\n} from './guards'\n\n// Object\nexport {\n pick,\n omit,\n keysTyped,\n valuesTyped,\n entriesTyped,\n fromEntriesTyped,\n mapObject,\n filterObject,\n mergeShallow,\n clone,\n cloneDeep,\n get,\n set,\n invert,\n deepMerge,\n isEqual,\n has,\n unset,\n paths,\n transform,\n} from './object'\n\n// Async\nexport {\n awaitTo,\n sleep,\n withTimeout,\n retry,\n debounce,\n throttle,\n once,\n onceAsync,\n defer,\n parallel,\n} from './async'\nexport type { RetryOptions, Deferred } from './async'\n\n// Collection\nexport {\n unique,\n groupBy,\n indexBy,\n partition,\n chunk,\n compact,\n flatten,\n sortBy,\n first,\n last,\n range,\n shuffle,\n sample,\n zip,\n unzip,\n difference,\n intersection,\n take,\n drop,\n takeWhile,\n dropWhile,\n findLast,\n countBy,\n maxBy,\n minBy,\n sumBy,\n head,\n tail,\n init,\n} from './collection'\n\n// Input\nexport {\n safeJsonParse,\n safeJsonStringify,\n parseNumber,\n parseInteger,\n parseBoolean,\n parseDate,\n coerceString,\n coerceArray,\n trimAll,\n defaults,\n clamp,\n isEmail,\n isUrl,\n isUuid,\n isIpAddress,\n parseUrl,\n} from './input'\nexport type { JsonParseResult, JsonStringifyResult } from './input'\n\n// Flow\nexport {\n pipe,\n compose,\n tap,\n when,\n unless,\n match,\n tryCatch,\n tryCatchAsync,\n ifElse,\n constant,\n} from './flow'\nexport type { TryCatchResult, TryCatchAsyncResult } from './flow'\n\n// DX\nexport {\n debug,\n invariant,\n assertNever,\n exhaustive,\n todo,\n deprecated,\n measure,\n measureAsync,\n log,\n setLogLevel,\n getLogLevel,\n} from './dx'\nexport type { MeasureResult, LogLevel } from './dx'\n\n// Typed\nexport {\n defineConst,\n defineEnum,\n defineTuple,\n createMap,\n createSet,\n brand,\n narrow,\n} from './typed'\nexport type {\n Brand,\n EnumValue,\n DeepPartial,\n DeepReadonly,\n DeepRequired,\n ElementOf,\n RequireKeys,\n OptionalKeys,\n KeysOfType,\n Mutable,\n Awaited,\n ValueOf,\n NonNullableDeep,\n Nullable,\n Optional,\n Merge,\n RequireAtLeastOne,\n RequireExactlyOne,\n Prettify,\n PartialBy,\n RequiredBy,\n UnionToIntersection,\n PromiseValue,\n ArrayElement,\n Dictionary,\n ReadonlyDictionary,\n} from './typed'\n\n// String\nexport {\n capitalize,\n uncapitalize,\n camelCase,\n kebabCase,\n snakeCase,\n pascalCase,\n truncate,\n slugify,\n template,\n words,\n} from './string'\n\n// Function\nexport {\n memoize,\n negate,\n flip,\n partial,\n curry,\n ary,\n unary,\n} from './fn'\n\n// Math\nexport {\n sum,\n average,\n median,\n round,\n randomInt,\n randomFloat,\n percentage,\n min,\n max,\n} from './math'\n\n// Result\nexport {\n ok,\n err,\n some,\n none,\n mapResult,\n mapOption,\n mapErr,\n andThen,\n orElse,\n matchResult,\n matchOption,\n isOk,\n isErr,\n unwrap,\n unwrapOption,\n unwrapOr,\n unwrapOptionOr,\n fromNullable,\n toNullable,\n} from './result'\nexport type {\n Result,\n Ok,\n Err,\n Option,\n Some,\n None,\n} from './result'\n\n// Decorators\nexport {\n Bind,\n Debounce,\n Throttle,\n Memoize,\n Deprecated,\n Measure,\n Retry,\n Validate,\n Log,\n Sealed,\n Frozen,\n Lazy,\n} from './decorator'\n\n// Reactive\nexport {\n signal,\n computed,\n effect,\n batch,\n createUndoableState,\n createAutoUndoableState,\n} from './reactive'\nexport type { Signal, ReadonlySignal, UndoableState, UndoableOptions } from './reactive'\n\n// Cache\nexport { smartCache, memoize as smartMemoize } from './cache'\nexport type { CacheOptions } from './cache'\n\n// Event\nexport { createEventBus, createTypedEmitter } from './event'\nexport type { EventBus } from './event'\n\n// Pipeline\nexport { pipe as pipeValue, pipeAsync, flow } from './pipeline'\nexport { createMiddleware, compose as composeMiddleware } from './pipeline'\nexport type { Middleware, MiddlewarePipeline } from './pipeline'\n\n// DI\nexport { createContainer, createTypedContainer } from './di'\nexport type { Container } from './di'\n\n// Env\nexport { env, createEnv } from './env'\n\n// Router\nexport { route, createRouter } from './router'\nexport type { Route, Router } from './router'\n\n// Form\nexport { createForm, field } from './form'\nexport type { FormState, FieldState } from './form'\n\n// Feature Flags\nexport { createFeatureFlags, flag } from './feature'\nexport type { FeatureFlags } from './feature'\n\n// Array\nexport {\n concat,\n differenceBy,\n differenceWith,\n dropRight,\n dropRightWhile,\n fill,\n findIndex,\n findLastIndex,\n flattenDeep,\n flattenDepth,\n fromPairs,\n indexOf,\n intersectionBy,\n intersectionWith,\n join,\n lastIndexOf,\n nth,\n pull,\n pullAll,\n pullAllBy,\n pullAllWith,\n pullAt,\n remove,\n reverse,\n slice,\n sortedIndex,\n sortedIndexBy,\n sortedIndexOf,\n sortedLastIndex,\n sortedLastIndexBy,\n sortedLastIndexOf,\n sortedUniq,\n sortedUniqBy,\n takeRight,\n takeRightWhile,\n union,\n unionBy,\n unionWith,\n uniqBy,\n uniqWith,\n unzipWith,\n without,\n xor,\n xorBy,\n xorWith,\n zipObject,\n zipObjectDeep,\n zipWith,\n} from './array'\n\n// ============================================================================\n// NAMESPACE EXPORT\n// ============================================================================\n// Allows importing the entire library under a single namespace alias\n// to avoid naming conflicts with your own functions.\n//\n// Usage:\n// import { T } from 'typetify'\n// // or\n// import * as T from 'typetify'\n//\n// Then use: T.isDefined(), T.pick(), T.groupBy(), etc.\n// ============================================================================\n\nimport * as _core from './core'\nimport * as _guards from './guards'\nimport * as _object from './object'\nimport * as _async from './async'\nimport * as _collection from './collection'\nimport * as _input from './input'\nimport * as _flow from './flow'\nimport * as _dx from './dx'\nimport * as _string from './string'\nimport * as _fn from './fn'\nimport * as _math from './math'\nimport * as _result from './result'\nimport * as _decorator from './decorator'\nimport * as _array from './array'\n// Note: _typed excluded from namespace due to unique symbol export limitations\nimport * as _logic from './logic'\nimport * as _iterator from './iterator'\nimport * as _narrowing from './narrowing'\nimport * as _schema from './schema'\nimport * as _reactive from './reactive'\nimport * as _cache from './cache'\nimport * as _event from './event'\nimport * as _pipeline from './pipeline'\nimport * as _di from './di'\nimport * as _env from './env'\nimport * as _router from './router'\nimport * as _form from './form'\nimport * as _feature from './feature'\n\n/**\n * Typetify namespace - import all utilities under a single alias (like Lodash)\n * \n * @example\n * ```typescript\n * import { _ } from 'typetify'\n * \n * // Now use _.methodName() to avoid conflicts (just like Lodash!)\n * const items = [1, null, 2, undefined, 3]\n * const defined = items.filter(_.isDefined)\n * \n * const user = { id: 1, name: 'John', password: 'secret' }\n * const safe = _.pick(user, ['id', 'name'])\n * \n * const [error, data] = await _.awaitTo(fetchUser(id))\n * ```\n */\nexport const _ = {\n ..._core,\n ..._guards,\n ..._object,\n ..._async,\n ..._collection,\n ..._input,\n ..._flow,\n ..._dx,\n ..._string,\n ..._fn,\n ..._math,\n ..._result,\n ..._decorator,\n ..._array,\n // typed: excluded due to unique symbol export limitations - use direct imports\n ..._logic,\n ..._iterator,\n ..._narrowing,\n ..._schema,\n ..._reactive,\n ..._cache,\n ..._event,\n ..._pipeline,\n ..._di,\n ..._env,\n ..._router,\n ..._form,\n ..._feature,\n}\n\n// Also export as default for: import _ from 'typetify'\nexport default _\n"]}
|
package/dist/input/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|
package/dist/input/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.mjs"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.mjs"}
|
package/dist/logic/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|
package/dist/logic/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.mjs"}
|
package/dist/math/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|
package/dist/math/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.mjs"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.mjs"}
|
package/dist/object/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.mjs"}
|
package/dist/result/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.mjs"}
|
package/dist/schema/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.mjs"}
|
package/dist/string/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.mjs"}
|
package/dist/typed/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|
package/dist/typed/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.mjs"}
|