@vielzeug/toolkit 1.1.3 → 2.1.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/README.md +325 -452
- package/dist/array/chunk.cjs +2 -2
- package/dist/array/chunk.cjs.map +1 -1
- package/dist/array/chunk.d.ts +29 -0
- package/dist/array/chunk.d.ts.map +1 -0
- package/dist/array/chunk.js +22 -24
- package/dist/array/chunk.js.map +1 -1
- package/dist/array/contains.cjs +2 -2
- package/dist/array/contains.cjs.map +1 -1
- package/dist/array/contains.d.ts +19 -0
- package/dist/array/contains.d.ts.map +1 -0
- package/dist/array/contains.js +12 -9
- package/dist/array/contains.js.map +1 -1
- package/dist/array/fold.cjs +2 -0
- package/dist/array/fold.cjs.map +1 -0
- package/dist/array/fold.d.ts +21 -0
- package/dist/array/fold.d.ts.map +1 -0
- package/dist/array/fold.js +19 -0
- package/dist/array/fold.js.map +1 -0
- package/dist/array/group.cjs +2 -2
- package/dist/array/group.cjs.map +1 -1
- package/dist/array/group.d.ts +19 -0
- package/dist/array/group.d.ts.map +1 -0
- package/dist/array/group.js +18 -15
- package/dist/array/group.js.map +1 -1
- package/dist/array/index.d.ts +16 -0
- package/dist/array/index.d.ts.map +1 -0
- package/dist/array/keyBy.cjs +2 -0
- package/dist/array/keyBy.cjs.map +1 -0
- package/dist/array/keyBy.d.ts +20 -0
- package/dist/array/keyBy.d.ts.map +1 -0
- package/dist/array/keyBy.js +19 -0
- package/dist/array/keyBy.js.map +1 -0
- package/dist/array/list.cjs +2 -2
- package/dist/array/list.cjs.map +1 -1
- package/dist/array/list.d.ts +58 -0
- package/dist/array/list.d.ts.map +1 -0
- package/dist/array/list.js +103 -106
- package/dist/array/list.js.map +1 -1
- package/dist/array/pick.cjs +2 -2
- package/dist/array/pick.cjs.map +1 -1
- package/dist/array/pick.d.ts +19 -0
- package/dist/array/pick.d.ts.map +1 -0
- package/dist/array/pick.js +15 -14
- package/dist/array/pick.js.map +1 -1
- package/dist/array/remoteList.cjs +2 -2
- package/dist/array/remoteList.cjs.map +1 -1
- package/dist/array/remoteList.d.ts +64 -0
- package/dist/array/remoteList.d.ts.map +1 -0
- package/dist/array/remoteList.js +121 -122
- package/dist/array/remoteList.js.map +1 -1
- package/dist/array/replace.cjs +2 -0
- package/dist/array/replace.cjs.map +1 -0
- package/dist/array/replace.d.ts +20 -0
- package/dist/array/replace.d.ts.map +1 -0
- package/dist/array/replace.js +19 -0
- package/dist/array/replace.js.map +1 -0
- package/dist/array/rotate.cjs +2 -0
- package/dist/array/rotate.cjs.map +1 -0
- package/dist/array/rotate.d.ts +22 -0
- package/dist/array/rotate.d.ts.map +1 -0
- package/dist/array/rotate.js +19 -0
- package/dist/array/rotate.js.map +1 -0
- package/dist/array/search.cjs +2 -2
- package/dist/array/search.cjs.map +1 -1
- package/dist/array/search.d.ts +19 -0
- package/dist/array/search.d.ts.map +1 -0
- package/dist/array/search.js +23 -13
- package/dist/array/search.js.map +1 -1
- package/dist/array/select.cjs +2 -2
- package/dist/array/select.cjs.map +1 -1
- package/dist/array/select.d.ts +21 -0
- package/dist/array/select.d.ts.map +1 -0
- package/dist/array/select.js +16 -15
- package/dist/array/select.js.map +1 -1
- package/dist/array/sort.cjs +2 -2
- package/dist/array/sort.cjs.map +1 -1
- package/dist/array/sort.d.ts +26 -0
- package/dist/array/sort.d.ts.map +1 -0
- package/dist/array/sort.js +18 -12
- package/dist/array/sort.js.map +1 -1
- package/dist/array/toggle.cjs +2 -0
- package/dist/array/toggle.cjs.map +1 -0
- package/dist/array/toggle.d.ts +29 -0
- package/dist/array/toggle.d.ts.map +1 -0
- package/dist/array/toggle.js +9 -0
- package/dist/array/toggle.js.map +1 -0
- package/dist/array/uniq.cjs +2 -2
- package/dist/array/uniq.cjs.map +1 -1
- package/dist/array/uniq.d.ts +21 -0
- package/dist/array/uniq.d.ts.map +1 -0
- package/dist/array/uniq.js +15 -17
- package/dist/array/uniq.js.map +1 -1
- package/dist/async/attempt.cjs +2 -2
- package/dist/async/attempt.cjs.map +1 -1
- package/dist/async/attempt.d.ts +40 -0
- package/dist/async/attempt.d.ts.map +1 -0
- package/dist/async/attempt.js +19 -14
- package/dist/async/attempt.js.map +1 -1
- package/dist/async/defer.cjs +2 -2
- package/dist/async/defer.cjs.map +1 -1
- package/dist/async/defer.d.ts +23 -0
- package/dist/async/defer.d.ts.map +1 -0
- package/dist/async/defer.js +12 -9
- package/dist/async/defer.js.map +1 -1
- package/dist/async/index.d.ts +12 -0
- package/dist/async/index.d.ts.map +1 -0
- package/dist/async/parallel.cjs +2 -2
- package/dist/async/parallel.cjs.map +1 -1
- package/dist/async/parallel.d.ts +31 -0
- package/dist/async/parallel.d.ts.map +1 -0
- package/dist/async/parallel.js +26 -27
- package/dist/async/parallel.js.map +1 -1
- package/dist/async/pool.cjs +2 -2
- package/dist/async/pool.cjs.map +1 -1
- package/dist/async/pool.d.ts +21 -0
- package/dist/async/pool.d.ts.map +1 -0
- package/dist/async/pool.js +23 -21
- package/dist/async/pool.js.map +1 -1
- package/dist/async/predict.cjs +2 -2
- package/dist/async/predict.cjs.map +1 -1
- package/dist/async/predict.d.ts +24 -0
- package/dist/async/predict.d.ts.map +1 -0
- package/dist/async/predict.js +10 -12
- package/dist/async/predict.js.map +1 -1
- package/dist/async/queue.cjs +2 -2
- package/dist/async/queue.cjs.map +1 -1
- package/dist/async/queue.d.ts +43 -0
- package/dist/async/queue.d.ts.map +1 -0
- package/dist/async/queue.js +52 -56
- package/dist/async/queue.js.map +1 -1
- package/dist/async/race.cjs +2 -2
- package/dist/async/race.cjs.map +1 -1
- package/dist/async/race.d.ts +16 -0
- package/dist/async/race.d.ts.map +1 -0
- package/dist/async/race.js +8 -7
- package/dist/async/race.js.map +1 -1
- package/dist/async/retry.cjs +2 -2
- package/dist/async/retry.cjs.map +1 -1
- package/dist/async/retry.d.ts +32 -0
- package/dist/async/retry.d.ts.map +1 -0
- package/dist/async/retry.js +19 -24
- package/dist/async/retry.js.map +1 -1
- package/dist/async/scheduler.cjs +2 -0
- package/dist/async/scheduler.cjs.map +1 -0
- package/dist/async/scheduler.d.ts +51 -0
- package/dist/async/scheduler.d.ts.map +1 -0
- package/dist/async/scheduler.js +43 -0
- package/dist/async/scheduler.js.map +1 -0
- package/dist/async/sleep.cjs +2 -2
- package/dist/async/sleep.cjs.map +1 -1
- package/dist/async/sleep.d.ts +16 -0
- package/dist/async/sleep.d.ts.map +1 -0
- package/dist/async/sleep.js +11 -11
- package/dist/async/sleep.js.map +1 -1
- package/dist/async/waitFor.cjs +2 -2
- package/dist/async/waitFor.cjs.map +1 -1
- package/dist/async/waitFor.d.ts +33 -0
- package/dist/async/waitFor.d.ts.map +1 -0
- package/dist/async/waitFor.js +29 -36
- package/dist/async/waitFor.js.map +1 -1
- package/dist/date/expires.cjs +2 -2
- package/dist/date/expires.cjs.map +1 -1
- package/dist/date/expires.d.ts +15 -0
- package/dist/date/expires.d.ts.map +1 -0
- package/dist/date/expires.js +11 -10
- package/dist/date/expires.js.map +1 -1
- package/dist/date/index.d.ts +4 -0
- package/dist/date/index.d.ts.map +1 -0
- package/dist/date/interval.cjs +2 -2
- package/dist/date/interval.cjs.map +1 -1
- package/dist/date/interval.d.ts +25 -0
- package/dist/date/interval.d.ts.map +1 -0
- package/dist/date/interval.js +31 -37
- package/dist/date/interval.js.map +1 -1
- package/dist/date/timeDiff.cjs +2 -2
- package/dist/date/timeDiff.cjs.map +1 -1
- package/dist/date/timeDiff.d.ts +24 -0
- package/dist/date/timeDiff.d.ts.map +1 -0
- package/dist/date/timeDiff.js +58 -25
- package/dist/date/timeDiff.js.map +1 -1
- package/dist/function/assert.cjs +2 -3
- package/dist/function/assert.cjs.map +1 -1
- package/dist/function/assert.d.ts +38 -0
- package/dist/function/assert.d.ts.map +1 -0
- package/dist/function/assert.js +13 -11
- package/dist/function/assert.js.map +1 -1
- package/dist/function/assertParams.cjs +2 -2
- package/dist/function/assertParams.cjs.map +1 -1
- package/dist/function/assertParams.d.ts +24 -0
- package/dist/function/assertParams.d.ts.map +1 -0
- package/dist/function/assertParams.js +13 -12
- package/dist/function/assertParams.js.map +1 -1
- package/dist/function/compare.cjs +2 -2
- package/dist/function/compare.cjs.map +1 -1
- package/dist/function/compare.d.ts +23 -0
- package/dist/function/compare.d.ts.map +1 -0
- package/dist/function/compare.js +22 -21
- package/dist/function/compare.js.map +1 -1
- package/dist/function/compareBy.cjs +2 -2
- package/dist/function/compareBy.cjs.map +1 -1
- package/dist/function/compareBy.d.ts +24 -0
- package/dist/function/compareBy.d.ts.map +1 -0
- package/dist/function/compareBy.js +15 -14
- package/dist/function/compareBy.js.map +1 -1
- package/dist/function/compose.cjs +2 -2
- package/dist/function/compose.cjs.map +1 -1
- package/dist/function/compose.d.ts +22 -0
- package/dist/function/compose.d.ts.map +1 -0
- package/dist/function/compose.js +10 -13
- package/dist/function/compose.js.map +1 -1
- package/dist/function/curry.cjs +2 -2
- package/dist/function/curry.cjs.map +1 -1
- package/dist/function/curry.d.ts +21 -0
- package/dist/function/curry.d.ts.map +1 -0
- package/dist/function/curry.js +8 -7
- package/dist/function/curry.js.map +1 -1
- package/dist/function/debounce.cjs +2 -2
- package/dist/function/debounce.cjs.map +1 -1
- package/dist/function/debounce.d.ts +12 -0
- package/dist/function/debounce.d.ts.map +1 -0
- package/dist/function/debounce.js +34 -26
- package/dist/function/debounce.js.map +1 -1
- package/dist/function/fp.cjs +2 -2
- package/dist/function/fp.cjs.map +1 -1
- package/dist/function/fp.d.ts +24 -0
- package/dist/function/fp.d.ts.map +1 -0
- package/dist/function/fp.js +6 -10
- package/dist/function/fp.js.map +1 -1
- package/dist/function/index.d.ts +13 -0
- package/dist/function/index.d.ts.map +1 -0
- package/dist/function/memo.cjs +2 -2
- package/dist/function/memo.cjs.map +1 -1
- package/dist/function/memo.d.ts +30 -0
- package/dist/function/memo.d.ts.map +1 -0
- package/dist/function/memo.js +16 -24
- package/dist/function/memo.js.map +1 -1
- package/dist/function/once.cjs +2 -2
- package/dist/function/once.cjs.map +1 -1
- package/dist/function/once.d.ts +24 -0
- package/dist/function/once.d.ts.map +1 -0
- package/dist/function/once.js +10 -10
- package/dist/function/once.js.map +1 -1
- package/dist/function/pipe.cjs +2 -2
- package/dist/function/pipe.cjs.map +1 -1
- package/dist/function/pipe.d.ts +23 -0
- package/dist/function/pipe.d.ts.map +1 -0
- package/dist/function/pipe.js +10 -10
- package/dist/function/pipe.js.map +1 -1
- package/dist/function/throttle.cjs +2 -2
- package/dist/function/throttle.cjs.map +1 -1
- package/dist/function/throttle.d.ts +21 -0
- package/dist/function/throttle.d.ts.map +1 -0
- package/dist/function/throttle.js +45 -37
- package/dist/function/throttle.js.map +1 -1
- package/dist/index.cjs +1 -2
- package/dist/index.d.ts +77 -2813
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +75 -253
- package/dist/math/abs.cjs +2 -2
- package/dist/math/abs.cjs.map +1 -1
- package/dist/math/abs.d.ts +17 -0
- package/dist/math/abs.d.ts.map +1 -0
- package/dist/math/abs.js +7 -6
- package/dist/math/abs.js.map +1 -1
- package/dist/math/allocate.cjs +2 -2
- package/dist/math/allocate.cjs.map +1 -1
- package/dist/math/allocate.d.ts +24 -0
- package/dist/math/allocate.d.ts.map +1 -0
- package/dist/math/allocate.js +20 -28
- package/dist/math/allocate.js.map +1 -1
- package/dist/math/average.cjs +2 -2
- package/dist/math/average.cjs.map +1 -1
- package/dist/math/average.d.ts +16 -0
- package/dist/math/average.d.ts.map +1 -0
- package/dist/math/average.js +13 -24
- package/dist/math/average.js.map +1 -1
- package/dist/math/clamp.cjs +2 -2
- package/dist/math/clamp.cjs.map +1 -1
- package/dist/math/clamp.d.ts +18 -0
- package/dist/math/clamp.d.ts.map +1 -0
- package/dist/math/clamp.js +7 -6
- package/dist/math/clamp.js.map +1 -1
- package/dist/math/distribute.cjs +2 -2
- package/dist/math/distribute.cjs.map +1 -1
- package/dist/math/distribute.d.ts +24 -0
- package/dist/math/distribute.d.ts.map +1 -0
- package/dist/math/distribute.js +14 -17
- package/dist/math/distribute.js.map +1 -1
- package/dist/math/index.d.ts +14 -0
- package/dist/math/index.d.ts.map +1 -0
- package/dist/math/linspace.cjs +2 -0
- package/dist/math/linspace.cjs.map +1 -0
- package/dist/math/linspace.d.ts +19 -0
- package/dist/math/linspace.d.ts.map +1 -0
- package/dist/math/linspace.js +11 -0
- package/dist/math/linspace.js.map +1 -0
- package/dist/math/max.cjs +2 -2
- package/dist/math/max.cjs.map +1 -1
- package/dist/math/max.d.ts +23 -0
- package/dist/math/max.d.ts.map +1 -0
- package/dist/math/max.js +10 -11
- package/dist/math/max.js.map +1 -1
- package/dist/math/median.cjs +2 -2
- package/dist/math/median.cjs.map +1 -1
- package/dist/math/median.d.ts +17 -0
- package/dist/math/median.d.ts.map +1 -0
- package/dist/math/median.js +11 -10
- package/dist/math/median.js.map +1 -1
- package/dist/math/min.cjs +2 -2
- package/dist/math/min.cjs.map +1 -1
- package/dist/math/min.d.ts +23 -0
- package/dist/math/min.d.ts.map +1 -0
- package/dist/math/min.js +10 -11
- package/dist/math/min.js.map +1 -1
- package/dist/math/percent.cjs +2 -0
- package/dist/math/percent.cjs.map +1 -0
- package/dist/math/percent.d.ts +19 -0
- package/dist/math/percent.d.ts.map +1 -0
- package/dist/math/percent.js +8 -0
- package/dist/math/percent.js.map +1 -0
- package/dist/math/range.cjs +2 -2
- package/dist/math/range.cjs.map +1 -1
- package/dist/math/range.d.ts +23 -0
- package/dist/math/range.d.ts.map +1 -0
- package/dist/math/range.js +28 -17
- package/dist/math/range.js.map +1 -1
- package/dist/math/round.cjs +2 -2
- package/dist/math/round.cjs.map +1 -1
- package/dist/math/round.d.ts +21 -0
- package/dist/math/round.d.ts.map +1 -0
- package/dist/math/round.js +9 -8
- package/dist/math/round.js.map +1 -1
- package/dist/math/sum.cjs +2 -2
- package/dist/math/sum.cjs.map +1 -1
- package/dist/math/sum.d.ts +17 -0
- package/dist/math/sum.d.ts.map +1 -0
- package/dist/math/sum.js +11 -14
- package/dist/math/sum.js.map +1 -1
- package/dist/money/currency.cjs +2 -2
- package/dist/money/currency.cjs.map +1 -1
- package/dist/money/currency.d.ts +30 -0
- package/dist/money/currency.d.ts.map +1 -0
- package/dist/money/currency.js +19 -47
- package/dist/money/currency.js.map +1 -1
- package/dist/money/exchange.cjs +2 -2
- package/dist/money/exchange.cjs.map +1 -1
- package/dist/money/exchange.d.ts +29 -0
- package/dist/money/exchange.d.ts.map +1 -0
- package/dist/money/exchange.js +12 -12
- package/dist/money/exchange.js.map +1 -1
- package/dist/money/index.d.ts +4 -0
- package/dist/money/index.d.ts.map +1 -0
- package/dist/money/types.d.ts +9 -0
- package/dist/money/types.d.ts.map +1 -0
- package/dist/object/diff.cjs +2 -2
- package/dist/object/diff.cjs.map +1 -1
- package/dist/object/diff.d.ts +26 -0
- package/dist/object/diff.d.ts.map +1 -0
- package/dist/object/diff.js +19 -17
- package/dist/object/diff.js.map +1 -1
- package/dist/object/index.d.ts +9 -0
- package/dist/object/index.d.ts.map +1 -0
- package/dist/object/merge.cjs +2 -2
- package/dist/object/merge.cjs.map +1 -1
- package/dist/object/merge.d.ts +44 -0
- package/dist/object/merge.d.ts.map +1 -0
- package/dist/object/merge.js +27 -21
- package/dist/object/merge.js.map +1 -1
- package/dist/object/parseJSON.cjs +2 -2
- package/dist/object/parseJSON.cjs.map +1 -1
- package/dist/object/parseJSON.d.ts +32 -0
- package/dist/object/parseJSON.d.ts.map +1 -0
- package/dist/object/parseJSON.js +17 -18
- package/dist/object/parseJSON.js.map +1 -1
- package/dist/object/path.cjs +2 -2
- package/dist/object/path.cjs.map +1 -1
- package/dist/object/path.d.ts +32 -0
- package/dist/object/path.d.ts.map +1 -0
- package/dist/object/path.js +25 -23
- package/dist/object/path.js.map +1 -1
- package/dist/object/proxy.cjs +2 -0
- package/dist/object/proxy.cjs.map +1 -0
- package/dist/object/proxy.d.ts +30 -0
- package/dist/object/proxy.d.ts.map +1 -0
- package/dist/object/proxy.js +21 -0
- package/dist/object/proxy.js.map +1 -0
- package/dist/object/prune.cjs +2 -0
- package/dist/object/prune.cjs.map +1 -0
- package/dist/object/prune.d.ts +21 -0
- package/dist/object/prune.d.ts.map +1 -0
- package/dist/object/prune.js +31 -0
- package/dist/object/prune.js.map +1 -0
- package/dist/object/seek.cjs +2 -2
- package/dist/object/seek.cjs.map +1 -1
- package/dist/object/seek.d.ts +2 -0
- package/dist/object/seek.d.ts.map +1 -0
- package/dist/object/seek.js +25 -12
- package/dist/object/seek.js.map +1 -1
- package/dist/object/stash.cjs +2 -0
- package/dist/object/stash.cjs.map +1 -0
- package/dist/object/stash.d.ts +45 -0
- package/dist/object/stash.d.ts.map +1 -0
- package/dist/object/stash.js +99 -0
- package/dist/object/stash.js.map +1 -0
- package/dist/random/draw.cjs +2 -2
- package/dist/random/draw.cjs.map +1 -1
- package/dist/random/draw.d.ts +16 -0
- package/dist/random/draw.d.ts.map +1 -0
- package/dist/random/draw.js +13 -10
- package/dist/random/draw.js.map +1 -1
- package/dist/random/index.d.ts +5 -0
- package/dist/random/index.d.ts.map +1 -0
- package/dist/random/random.cjs +2 -2
- package/dist/random/random.cjs.map +1 -1
- package/dist/random/random.d.ts +14 -0
- package/dist/random/random.d.ts.map +1 -0
- package/dist/random/random.js +16 -9
- package/dist/random/random.js.map +1 -1
- package/dist/random/shuffle.cjs +2 -2
- package/dist/random/shuffle.cjs.map +1 -1
- package/dist/random/shuffle.d.ts +17 -0
- package/dist/random/shuffle.d.ts.map +1 -0
- package/dist/random/shuffle.js +18 -14
- package/dist/random/shuffle.js.map +1 -1
- package/dist/random/uuid.cjs +2 -2
- package/dist/random/uuid.cjs.map +1 -1
- package/dist/random/uuid.d.ts +12 -0
- package/dist/random/uuid.d.ts.map +1 -0
- package/dist/random/uuid.js +7 -9
- package/dist/random/uuid.js.map +1 -1
- package/dist/string/_caseUtils.cjs +2 -2
- package/dist/string/_caseUtils.cjs.map +1 -1
- package/dist/string/_caseUtils.d.ts +13 -0
- package/dist/string/_caseUtils.d.ts.map +1 -0
- package/dist/string/_caseUtils.js +8 -8
- package/dist/string/_caseUtils.js.map +1 -1
- package/dist/string/camelCase.cjs +2 -2
- package/dist/string/camelCase.cjs.map +1 -1
- package/dist/string/camelCase.d.ts +14 -0
- package/dist/string/camelCase.d.ts.map +1 -0
- package/dist/string/camelCase.js +8 -7
- package/dist/string/camelCase.js.map +1 -1
- package/dist/string/index.d.ts +7 -0
- package/dist/string/index.d.ts.map +1 -0
- package/dist/string/kebabCase.cjs +2 -2
- package/dist/string/kebabCase.cjs.map +1 -1
- package/dist/string/kebabCase.d.ts +15 -0
- package/dist/string/kebabCase.d.ts.map +1 -0
- package/dist/string/kebabCase.js +8 -7
- package/dist/string/kebabCase.js.map +1 -1
- package/dist/string/pascalCase.cjs +2 -2
- package/dist/string/pascalCase.cjs.map +1 -1
- package/dist/string/pascalCase.d.ts +15 -0
- package/dist/string/pascalCase.d.ts.map +1 -0
- package/dist/string/pascalCase.js +8 -7
- package/dist/string/pascalCase.js.map +1 -1
- package/dist/string/similarity.cjs +2 -2
- package/dist/string/similarity.cjs.map +1 -1
- package/dist/string/similarity.d.ts +20 -0
- package/dist/string/similarity.d.ts.map +1 -0
- package/dist/string/similarity.js +20 -36
- package/dist/string/similarity.js.map +1 -1
- package/dist/string/snakeCase.cjs +2 -2
- package/dist/string/snakeCase.cjs.map +1 -1
- package/dist/string/snakeCase.d.ts +15 -0
- package/dist/string/snakeCase.d.ts.map +1 -0
- package/dist/string/snakeCase.js +8 -7
- package/dist/string/snakeCase.js.map +1 -1
- package/dist/string/truncate.cjs +2 -2
- package/dist/string/truncate.cjs.map +1 -1
- package/dist/string/truncate.d.ts +28 -0
- package/dist/string/truncate.d.ts.map +1 -0
- package/dist/string/truncate.js +20 -17
- package/dist/string/truncate.js.map +1 -1
- package/dist/toolkit.cjs +2 -0
- package/dist/toolkit.cjs.map +1 -0
- package/dist/toolkit.js +1523 -0
- package/dist/toolkit.js.map +1 -0
- package/dist/typed/index.d.ts +24 -0
- package/dist/typed/index.d.ts.map +1 -0
- package/dist/typed/is.cjs +2 -2
- package/dist/typed/is.cjs.map +1 -1
- package/dist/typed/is.d.ts +95 -0
- package/dist/typed/is.d.ts.map +1 -0
- package/dist/typed/is.js +54 -42
- package/dist/typed/is.js.map +1 -1
- package/dist/typed/isArray.cjs +2 -2
- package/dist/typed/isArray.cjs.map +1 -1
- package/dist/typed/isArray.d.ts +16 -0
- package/dist/typed/isArray.d.ts.map +1 -0
- package/dist/typed/isArray.js +8 -8
- package/dist/typed/isArray.js.map +1 -1
- package/dist/typed/isBoolean.cjs +2 -2
- package/dist/typed/isBoolean.cjs.map +1 -1
- package/dist/typed/isBoolean.d.ts +23 -0
- package/dist/typed/isBoolean.d.ts.map +1 -0
- package/dist/typed/isBoolean.js +7 -6
- package/dist/typed/isBoolean.js.map +1 -1
- package/dist/typed/isDate.cjs +2 -2
- package/dist/typed/isDate.cjs.map +1 -1
- package/dist/typed/isDate.d.ts +16 -0
- package/dist/typed/isDate.d.ts.map +1 -0
- package/dist/typed/isDate.js +7 -8
- package/dist/typed/isDate.js.map +1 -1
- package/dist/typed/isDefined.cjs +2 -2
- package/dist/typed/isDefined.cjs.map +1 -1
- package/dist/typed/isDefined.d.ts +19 -0
- package/dist/typed/isDefined.d.ts.map +1 -0
- package/dist/typed/isDefined.js +7 -6
- package/dist/typed/isDefined.js.map +1 -1
- package/dist/typed/isEmpty.cjs +2 -2
- package/dist/typed/isEmpty.cjs.map +1 -1
- package/dist/typed/isEmpty.d.ts +24 -0
- package/dist/typed/isEmpty.d.ts.map +1 -0
- package/dist/typed/isEmpty.js +8 -9
- package/dist/typed/isEmpty.js.map +1 -1
- package/dist/typed/isEqual.cjs +2 -2
- package/dist/typed/isEqual.cjs.map +1 -1
- package/dist/typed/isEqual.d.ts +24 -0
- package/dist/typed/isEqual.d.ts.map +1 -0
- package/dist/typed/isEqual.js +27 -28
- package/dist/typed/isEqual.js.map +1 -1
- package/dist/typed/isEven.cjs +2 -2
- package/dist/typed/isEven.cjs.map +1 -1
- package/dist/typed/isEven.d.ts +9 -0
- package/dist/typed/isEven.d.ts.map +1 -0
- package/dist/typed/isEven.js +7 -6
- package/dist/typed/isEven.js.map +1 -1
- package/dist/typed/isFunction.cjs +2 -2
- package/dist/typed/isFunction.cjs.map +1 -1
- package/dist/typed/isFunction.d.ts +16 -0
- package/dist/typed/isFunction.d.ts.map +1 -0
- package/dist/typed/isFunction.js +7 -8
- package/dist/typed/isFunction.js.map +1 -1
- package/dist/typed/isMatch.cjs +2 -2
- package/dist/typed/isMatch.cjs.map +1 -1
- package/dist/typed/isMatch.d.ts +23 -0
- package/dist/typed/isMatch.d.ts.map +1 -0
- package/dist/typed/isMatch.js +16 -18
- package/dist/typed/isMatch.js.map +1 -1
- package/dist/typed/isNegative.cjs +2 -2
- package/dist/typed/isNegative.cjs.map +1 -1
- package/dist/typed/isNegative.d.ts +26 -0
- package/dist/typed/isNegative.d.ts.map +1 -0
- package/dist/typed/isNegative.js +7 -6
- package/dist/typed/isNegative.js.map +1 -1
- package/dist/typed/isNil.cjs +2 -2
- package/dist/typed/isNil.cjs.map +1 -1
- package/dist/typed/isNil.d.ts +17 -0
- package/dist/typed/isNil.d.ts.map +1 -0
- package/dist/typed/isNil.js +7 -8
- package/dist/typed/isNil.js.map +1 -1
- package/dist/typed/isNumber.cjs +2 -2
- package/dist/typed/isNumber.cjs.map +1 -1
- package/dist/typed/isNumber.d.ts +16 -0
- package/dist/typed/isNumber.d.ts.map +1 -0
- package/dist/typed/isNumber.js +8 -8
- package/dist/typed/isNumber.js.map +1 -1
- package/dist/typed/isObject.cjs +2 -2
- package/dist/typed/isObject.cjs.map +1 -1
- package/dist/typed/isObject.d.ts +19 -0
- package/dist/typed/isObject.d.ts.map +1 -0
- package/dist/typed/isObject.js +8 -8
- package/dist/typed/isObject.js.map +1 -1
- package/dist/typed/isOdd.cjs +2 -2
- package/dist/typed/isOdd.cjs.map +1 -1
- package/dist/typed/isOdd.d.ts +9 -0
- package/dist/typed/isOdd.d.ts.map +1 -0
- package/dist/typed/isOdd.js +7 -6
- package/dist/typed/isOdd.js.map +1 -1
- package/dist/typed/isPositive.cjs +2 -2
- package/dist/typed/isPositive.cjs.map +1 -1
- package/dist/typed/isPositive.d.ts +26 -0
- package/dist/typed/isPositive.d.ts.map +1 -0
- package/dist/typed/isPositive.js +7 -6
- package/dist/typed/isPositive.js.map +1 -1
- package/dist/typed/isPrimitive.cjs +2 -2
- package/dist/typed/isPrimitive.cjs.map +1 -1
- package/dist/typed/isPrimitive.d.ts +18 -0
- package/dist/typed/isPrimitive.d.ts.map +1 -0
- package/dist/typed/isPrimitive.js +8 -9
- package/dist/typed/isPrimitive.js.map +1 -1
- package/dist/typed/isPromise.cjs +2 -2
- package/dist/typed/isPromise.cjs.map +1 -1
- package/dist/typed/isPromise.d.ts +17 -0
- package/dist/typed/isPromise.d.ts.map +1 -0
- package/dist/typed/isPromise.js +7 -9
- package/dist/typed/isPromise.js.map +1 -1
- package/dist/typed/isRegex.cjs +2 -2
- package/dist/typed/isRegex.cjs.map +1 -1
- package/dist/typed/isRegex.d.ts +21 -0
- package/dist/typed/isRegex.d.ts.map +1 -0
- package/dist/typed/isRegex.js +7 -6
- package/dist/typed/isRegex.js.map +1 -1
- package/dist/typed/isString.cjs +2 -2
- package/dist/typed/isString.cjs.map +1 -1
- package/dist/typed/isString.d.ts +16 -0
- package/dist/typed/isString.d.ts.map +1 -0
- package/dist/typed/isString.js +8 -8
- package/dist/typed/isString.js.map +1 -1
- package/dist/typed/isWithin.cjs +2 -2
- package/dist/typed/isWithin.cjs.map +1 -1
- package/dist/typed/isWithin.d.ts +20 -0
- package/dist/typed/isWithin.d.ts.map +1 -0
- package/dist/typed/isWithin.js +9 -9
- package/dist/typed/isWithin.js.map +1 -1
- package/dist/typed/isZero.cjs +2 -2
- package/dist/typed/isZero.cjs.map +1 -1
- package/dist/typed/isZero.d.ts +25 -0
- package/dist/typed/isZero.d.ts.map +1 -0
- package/dist/typed/isZero.js +7 -6
- package/dist/typed/isZero.js.map +1 -1
- package/dist/typed/typeOf.cjs +2 -2
- package/dist/typed/typeOf.cjs.map +1 -1
- package/dist/typed/typeOf.d.ts +30 -0
- package/dist/typed/typeOf.d.ts.map +1 -0
- package/dist/typed/typeOf.js +11 -13
- package/dist/typed/typeOf.js.map +1 -1
- package/dist/types.d.ts +9 -0
- package/dist/types.d.ts.map +1 -0
- package/package.json +77 -12
- package/dist/array/aggregate.cjs +0 -2
- package/dist/array/aggregate.cjs.map +0 -1
- package/dist/array/aggregate.js +0 -16
- package/dist/array/aggregate.js.map +0 -1
- package/dist/array/alternate.cjs +0 -2
- package/dist/array/alternate.cjs.map +0 -1
- package/dist/array/alternate.js +0 -9
- package/dist/array/alternate.js.map +0 -1
- package/dist/array/arrange.cjs +0 -2
- package/dist/array/arrange.cjs.map +0 -1
- package/dist/array/arrange.js +0 -6
- package/dist/array/arrange.js.map +0 -1
- package/dist/array/compact.cjs +0 -2
- package/dist/array/compact.cjs.map +0 -1
- package/dist/array/compact.js +0 -9
- package/dist/array/compact.js.map +0 -1
- package/dist/array/every.cjs +0 -2
- package/dist/array/every.cjs.map +0 -1
- package/dist/array/every.js +0 -14
- package/dist/array/every.js.map +0 -1
- package/dist/array/filter.cjs +0 -2
- package/dist/array/filter.cjs.map +0 -1
- package/dist/array/filter.js +0 -14
- package/dist/array/filter.js.map +0 -1
- package/dist/array/find.cjs +0 -2
- package/dist/array/find.cjs.map +0 -1
- package/dist/array/find.js +0 -14
- package/dist/array/find.js.map +0 -1
- package/dist/array/findIndex.cjs +0 -2
- package/dist/array/findIndex.cjs.map +0 -1
- package/dist/array/findIndex.js +0 -14
- package/dist/array/findIndex.js.map +0 -1
- package/dist/array/findLast.cjs +0 -2
- package/dist/array/findLast.cjs.map +0 -1
- package/dist/array/findLast.js +0 -14
- package/dist/array/findLast.js.map +0 -1
- package/dist/array/flatten.cjs +0 -2
- package/dist/array/flatten.cjs.map +0 -1
- package/dist/array/flatten.js +0 -7
- package/dist/array/flatten.js.map +0 -1
- package/dist/array/map.cjs +0 -2
- package/dist/array/map.cjs.map +0 -1
- package/dist/array/map.js +0 -18
- package/dist/array/map.js.map +0 -1
- package/dist/array/reduce.cjs +0 -2
- package/dist/array/reduce.cjs.map +0 -1
- package/dist/array/reduce.js +0 -16
- package/dist/array/reduce.js.map +0 -1
- package/dist/array/shift.cjs +0 -2
- package/dist/array/shift.cjs.map +0 -1
- package/dist/array/shift.js +0 -13
- package/dist/array/shift.js.map +0 -1
- package/dist/array/some.cjs +0 -2
- package/dist/array/some.cjs.map +0 -1
- package/dist/array/some.js +0 -14
- package/dist/array/some.js.map +0 -1
- package/dist/array/substitute.cjs +0 -2
- package/dist/array/substitute.cjs.map +0 -1
- package/dist/array/substitute.js +0 -13
- package/dist/array/substitute.js.map +0 -1
- package/dist/async/delay.cjs +0 -2
- package/dist/async/delay.cjs.map +0 -1
- package/dist/async/delay.js +0 -8
- package/dist/async/delay.js.map +0 -1
- package/dist/function/proxy.cjs +0 -2
- package/dist/function/proxy.cjs.map +0 -1
- package/dist/function/proxy.js +0 -22
- package/dist/function/proxy.js.map +0 -1
- package/dist/function/prune.cjs +0 -2
- package/dist/function/prune.cjs.map +0 -1
- package/dist/function/prune.js +0 -30
- package/dist/function/prune.js.map +0 -1
- package/dist/function/worker.cjs +0 -14
- package/dist/function/worker.cjs.map +0 -1
- package/dist/function/worker.js +0 -29
- package/dist/function/worker.js.map +0 -1
- package/dist/index.cjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/logit/dist/logit.cjs +0 -2
- package/dist/logit/dist/logit.cjs.map +0 -1
- package/dist/logit/dist/logit.js +0 -263
- package/dist/logit/dist/logit.js.map +0 -1
- package/dist/math/add.cjs +0 -2
- package/dist/math/add.cjs.map +0 -1
- package/dist/math/add.js +0 -9
- package/dist/math/add.js.map +0 -1
- package/dist/math/boil.cjs +0 -2
- package/dist/math/boil.cjs.map +0 -1
- package/dist/math/boil.js +0 -17
- package/dist/math/boil.js.map +0 -1
- package/dist/math/divide.cjs +0 -2
- package/dist/math/divide.cjs.map +0 -1
- package/dist/math/divide.js +0 -11
- package/dist/math/divide.js.map +0 -1
- package/dist/math/multiply.cjs +0 -2
- package/dist/math/multiply.cjs.map +0 -1
- package/dist/math/multiply.js +0 -9
- package/dist/math/multiply.js.map +0 -1
- package/dist/math/rate.cjs +0 -2
- package/dist/math/rate.cjs.map +0 -1
- package/dist/math/rate.js +0 -9
- package/dist/math/rate.js.map +0 -1
- package/dist/math/subtract.cjs +0 -2
- package/dist/math/subtract.cjs.map +0 -1
- package/dist/math/subtract.js +0 -9
- package/dist/math/subtract.js.map +0 -1
- package/dist/object/cache.cjs +0 -2
- package/dist/object/cache.cjs.map +0 -1
- package/dist/object/cache.js +0 -63
- package/dist/object/cache.js.map +0 -1
- package/dist/object/clone.cjs +0 -2
- package/dist/object/clone.cjs.map +0 -1
- package/dist/object/clone.js +0 -17
- package/dist/object/clone.js.map +0 -1
- package/dist/object/entries.cjs +0 -2
- package/dist/object/entries.cjs.map +0 -1
- package/dist/object/entries.js +0 -9
- package/dist/object/entries.js.map +0 -1
- package/dist/object/keys.cjs +0 -2
- package/dist/object/keys.cjs.map +0 -1
- package/dist/object/keys.js +0 -9
- package/dist/object/keys.js.map +0 -1
- package/dist/object/values.cjs +0 -2
- package/dist/object/values.cjs.map +0 -1
- package/dist/object/values.js +0 -9
- package/dist/object/values.js.map +0 -1
- package/dist/typed/ge.cjs +0 -2
- package/dist/typed/ge.cjs.map +0 -1
- package/dist/typed/ge.js +0 -7
- package/dist/typed/ge.js.map +0 -1
- package/dist/typed/gt.cjs +0 -2
- package/dist/typed/gt.cjs.map +0 -1
- package/dist/typed/gt.js +0 -7
- package/dist/typed/gt.js.map +0 -1
- package/dist/typed/le.cjs +0 -2
- package/dist/typed/le.cjs.map +0 -1
- package/dist/typed/le.js +0 -7
- package/dist/typed/le.js.map +0 -1
- package/dist/typed/lt.cjs +0 -2
- package/dist/typed/lt.cjs.map +0 -1
- package/dist/typed/lt.js +0 -7
- package/dist/typed/lt.js.map +0 -1
package/dist/array/remoteList.js
CHANGED
|
@@ -1,123 +1,122 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
};
|
|
1
|
+
//#region src/array/remoteList.ts
|
|
2
|
+
function e(e) {
|
|
3
|
+
let t = /* @__PURE__ */ new Set(), n = Math.max(1, e.limit ?? 10), r = e.debounceMs ?? 300, i = 1, a = n, o = "", s = e.initialFilter, c = e.initialSort, l = [], u = 0, d = !1, f = null, p = /* @__PURE__ */ new Map(), m = /* @__PURE__ */ new Map(), h = (e) => JSON.stringify(e), g = () => ({
|
|
4
|
+
filter: s,
|
|
5
|
+
limit: a,
|
|
6
|
+
page: i,
|
|
7
|
+
search: o || void 0,
|
|
8
|
+
sort: c
|
|
9
|
+
}), _ = (e) => {
|
|
10
|
+
l = e.items, u = e.total ?? 0;
|
|
11
|
+
let t = Math.max(1, Math.ceil(u / a));
|
|
12
|
+
i = Math.min(Math.max(1, i), t);
|
|
13
|
+
}, v = () => {
|
|
14
|
+
for (let e of t) e();
|
|
15
|
+
}, y = async (t) => {
|
|
16
|
+
let n = h(t), r = p.get(n), i = e.cacheTtl;
|
|
17
|
+
if (r && (!i || Date.now() - r.ts < i)) {
|
|
18
|
+
_(r.result);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
if (m.has(n)) {
|
|
22
|
+
await m.get(n), _(p.get(n).result);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
d = !0, f = null, v();
|
|
26
|
+
let a = e.fetch(t).then((e) => {
|
|
27
|
+
p.set(n, {
|
|
28
|
+
result: e,
|
|
29
|
+
ts: Date.now()
|
|
30
|
+
}), _(e);
|
|
31
|
+
}).catch((e) => {
|
|
32
|
+
f = e?.message ?? "Request failed", l = [], u = 0;
|
|
33
|
+
}).finally(() => {
|
|
34
|
+
m.delete(n), d = !1, v();
|
|
35
|
+
});
|
|
36
|
+
m.set(n, a), await a;
|
|
37
|
+
}, b = async () => {
|
|
38
|
+
await y(g());
|
|
39
|
+
}, x, S = () => {
|
|
40
|
+
x && clearTimeout(x), x = setTimeout(() => {
|
|
41
|
+
x = void 0, b();
|
|
42
|
+
}, r);
|
|
43
|
+
};
|
|
44
|
+
return {
|
|
45
|
+
async batch(e) {
|
|
46
|
+
let t = i, n = a, r = o, l = s, u = c;
|
|
47
|
+
e({
|
|
48
|
+
goTo: (e) => {
|
|
49
|
+
t = Math.max(1, e | 0);
|
|
50
|
+
},
|
|
51
|
+
setFilter: (e) => {
|
|
52
|
+
l = e, t = 1;
|
|
53
|
+
},
|
|
54
|
+
setLimit: (e) => {
|
|
55
|
+
n = Math.max(1, e), t = 1;
|
|
56
|
+
},
|
|
57
|
+
setQuery: (e) => {
|
|
58
|
+
r = e, t = 1;
|
|
59
|
+
},
|
|
60
|
+
setSort: (e) => {
|
|
61
|
+
u = e, t = 1;
|
|
62
|
+
}
|
|
63
|
+
}), i = t, a = n, o = r, s = l, c = u, await b();
|
|
64
|
+
},
|
|
65
|
+
get current() {
|
|
66
|
+
return l;
|
|
67
|
+
},
|
|
68
|
+
async goTo(e) {
|
|
69
|
+
i = Math.max(1, e | 0), await b();
|
|
70
|
+
},
|
|
71
|
+
invalidate() {
|
|
72
|
+
p.clear();
|
|
73
|
+
},
|
|
74
|
+
get meta() {
|
|
75
|
+
let e = u === 0, t = Math.max(1, Math.ceil(u / a)), n = Math.min(i, t), r = e ? 0 : (n - 1) * a + 1;
|
|
76
|
+
return {
|
|
77
|
+
end: e ? 0 : Math.min(n * a, u),
|
|
78
|
+
error: f,
|
|
79
|
+
isEmpty: e,
|
|
80
|
+
isFirst: n <= 1,
|
|
81
|
+
isLast: n >= t,
|
|
82
|
+
limit: a,
|
|
83
|
+
loading: d,
|
|
84
|
+
page: n,
|
|
85
|
+
pages: t,
|
|
86
|
+
start: r,
|
|
87
|
+
total: u
|
|
88
|
+
};
|
|
89
|
+
},
|
|
90
|
+
async next() {
|
|
91
|
+
i += 1, await b();
|
|
92
|
+
},
|
|
93
|
+
async prev() {
|
|
94
|
+
i = Math.max(1, i - 1), await b();
|
|
95
|
+
},
|
|
96
|
+
async refresh() {
|
|
97
|
+
p.delete(h(g())), await b();
|
|
98
|
+
},
|
|
99
|
+
async reset() {
|
|
100
|
+
i = 1, a = n, o = "", s = e.initialFilter, c = e.initialSort, p.clear(), await b();
|
|
101
|
+
},
|
|
102
|
+
async search(e, t) {
|
|
103
|
+
o = e, i = 1, t?.immediate ? await b() : S();
|
|
104
|
+
},
|
|
105
|
+
async setFilter(e) {
|
|
106
|
+
s = e, i = 1, await b();
|
|
107
|
+
},
|
|
108
|
+
async setLimit(e) {
|
|
109
|
+
a = Math.max(1, e), i = 1, await b();
|
|
110
|
+
},
|
|
111
|
+
async setSort(e) {
|
|
112
|
+
c = e, i = 1, await b();
|
|
113
|
+
},
|
|
114
|
+
subscribe(e) {
|
|
115
|
+
return t.add(e), t.size === 1 && l.length === 0 && !d && b(), () => t.delete(e);
|
|
116
|
+
}
|
|
117
|
+
};
|
|
119
118
|
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
//# sourceMappingURL=remoteList.js.map
|
|
119
|
+
//#endregion
|
|
120
|
+
export { e as remoteList };
|
|
121
|
+
|
|
122
|
+
//# sourceMappingURL=remoteList.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remoteList.js","sources":["../../src/array/remoteList.ts"],"sourcesContent":["// #region RemoteMeta\nexport type RemoteMeta = Readonly<{\n end: number; // inclusive\n error: string | null;\n isEmpty: boolean;\n isFirst: boolean;\n isLast: boolean;\n limit: number;\n loading: boolean;\n page: number; // 1-based\n pages: number;\n start: number; // 1-based\n total: number;\n}>;\n// #endregion RemoteMeta\n\n// #region RemoteList\nexport type RemoteList<T, F, S> = {\n readonly current: readonly T[];\n readonly meta: RemoteMeta;\n subscribe(listener: () => void): () => void;\n\n goTo(page: number): Promise<void>;\n invalidate?(): void;\n next(): Promise<void>;\n prev(): Promise<void>;\n refresh(): Promise<void>;\n reset(): Promise<void>;\n search(query: string, opts?: { immediate?: boolean }): Promise<void>;\n setFilter(filter: F): Promise<void>;\n setLimit(n: number): Promise<void>;\n setSort(sort?: S): Promise<void>;\n\n // Batch updates across properties in one recompute/refetch\n batch(\n mutator: (ctx: {\n setLimit(n: number): void;\n setFilter(f: F): void;\n setSort(s?: S): void;\n setQuery(q: string): void;\n setData?(d: readonly T[]): void; // local-only\n goTo(p: number): void; // 1-based\n }) => void,\n ): Promise<void>;\n};\n// #endregion RemoteList\n\n// #region RemoteConfig\ntype RemoteQuery<F, S> = Readonly<{\n filter?: F;\n limit: number;\n page: number; // 1-based\n search?: string;\n sort?: S;\n}>;\n\ntype RemoteResult<T> = Readonly<{ items: readonly T[]; total: number }>;\n\ntype RemoteConfig<T, F, S> = Readonly<{\n debounceMs?: number;\n fetch: (q: RemoteQuery<F, S>) => Promise<RemoteResult<T>>;\n initialFilter?: F;\n initialSort?: S;\n limit?: number;\n}>;\n// #endregion RemoteConfig\n\nexport function remoteList<T, F = Record<string, unknown>, S = { key?: string; dir?: 'asc' | 'desc' }>(\n cfg: RemoteConfig<T, F, S>,\n): RemoteList<T, F, S> {\n const listeners = new Set<() => void>();\n\n const limitDefault = Math.max(1, cfg.limit ?? 10);\n const debounceMs = cfg.debounceMs ?? 300;\n\n let page = 1;\n let limit = limitDefault;\n let search = '';\n let filter = cfg.initialFilter as F | undefined;\n let sort = cfg.initialSort as S | undefined;\n\n let items: readonly T[] = [];\n let total = 0;\n let loading = false;\n let error: string | null = null;\n\n const cache = new Map<string, RemoteResult<T>>();\n const inflight = new Map<string, Promise<void>>();\n\n const keyOf = (q: RemoteQuery<F, S>) => JSON.stringify(q);\n const queryOf = (): RemoteQuery<F, S> => ({\n filter,\n limit,\n page,\n search: search || undefined,\n sort,\n });\n\n const assign = (res: RemoteResult<T>) => {\n items = res.items;\n total = res.total ?? 0;\n const pages = Math.max(1, Math.ceil(total / limit));\n page = Math.min(Math.max(1, page), pages);\n };\n\n const notify = () => {\n for (const l of listeners) {\n l();\n }\n };\n\n const fetchQuery = async (q: RemoteQuery<F, S>) => {\n const k = keyOf(q);\n if (cache.has(k)) {\n assign(cache.get(k)!);\n return;\n }\n if (inflight.has(k)) {\n await inflight.get(k);\n assign(cache.get(k)!);\n return;\n }\n loading = true;\n error = null;\n notify();\n const p = cfg\n .fetch(q)\n .then((res) => {\n cache.set(k, res);\n assign(res);\n })\n .catch((e) => {\n error = e?.message ?? 'Request failed';\n items = [];\n total = 0;\n })\n .finally(() => {\n inflight.delete(k);\n loading = false;\n notify();\n });\n inflight.set(k, p);\n await p;\n };\n\n const update = async () => {\n await fetchQuery(queryOf());\n };\n\n // debounced search\n let timer: ReturnType<typeof setTimeout> | undefined;\n const debounced = () => {\n if (timer) clearTimeout(timer);\n timer = setTimeout(() => {\n timer = undefined;\n void update();\n }, debounceMs);\n };\n\n // initial fetch is on the first subscriber or call to refresh; up to you\n return {\n async batch(mutator) {\n // Stage local copies\n let nextPage = page;\n let nextLimit = limit;\n let nextSearch = search;\n let nextFilter = filter as F | undefined;\n let nextSort = sort as S | undefined;\n\n mutator({\n goTo: (p: number) => {\n nextPage = Math.max(1, p | 0);\n },\n setFilter: (f: F) => {\n nextFilter = f;\n nextPage = 1;\n },\n setLimit: (n) => {\n nextLimit = Math.max(1, n);\n nextPage = 1;\n },\n setQuery: (q: string) => {\n nextSearch = q;\n nextPage = 1;\n },\n setSort: (s?: S) => {\n nextSort = s;\n nextPage = 1;\n },\n });\n\n // Apply and update at once\n page = nextPage;\n limit = nextLimit;\n search = nextSearch;\n filter = nextFilter;\n sort = nextSort;\n\n await update();\n },\n get current() {\n return items;\n },\n async goTo(p) {\n page = Math.max(1, p | 0);\n await update();\n },\n invalidate() {\n cache.clear();\n },\n get meta() {\n const isEmpty = total === 0;\n const pages = Math.max(1, Math.ceil(total / limit));\n const safePage = Math.min(page, pages);\n const start = isEmpty ? 0 : (safePage - 1) * limit + 1;\n const end = isEmpty ? 0 : Math.min(safePage * limit, total);\n return {\n end,\n error,\n isEmpty,\n isFirst: safePage <= 1,\n isLast: safePage >= pages,\n limit,\n loading,\n page: safePage,\n pages,\n start,\n total,\n };\n },\n async next() {\n page += 1;\n await update();\n },\n async prev() {\n page = Math.max(1, page - 1);\n await update();\n },\n async refresh() {\n cache.delete(keyOf(queryOf()));\n await update();\n },\n async reset() {\n page = 1;\n limit = limitDefault;\n search = '';\n filter = cfg.initialFilter as F | undefined;\n sort = cfg.initialSort as S | undefined;\n cache.clear();\n await update();\n },\n async search(q, opts) {\n search = q;\n page = 1;\n if (opts?.immediate) await update();\n else debounced();\n },\n async setFilter(f) {\n filter = f;\n page = 1;\n await update();\n },\n async setLimit(n) {\n limit = Math.max(1, n);\n page = 1;\n await update();\n },\n async setSort(s) {\n sort = s;\n page = 1;\n await update();\n },\n subscribe(listener) {\n listeners.add(listener);\n // optional: trigger an initial load on the first subscription\n if (listeners.size === 1 && items.length === 0 && !loading) {\n void update();\n }\n return () => listeners.delete(listener);\n },\n };\n}\n"],"names":["remoteList","cfg","listeners","limitDefault","debounceMs","page","limit","search","filter","sort","items","total","loading","error","cache","inflight","keyOf","q","queryOf","assign","res","pages","notify","l","fetchQuery","k","p","e","update","timer","debounced","mutator","nextPage","nextLimit","nextSearch","nextFilter","nextSort","f","n","s","isEmpty","safePage","start","opts","listener"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"remoteList.js","names":[],"sources":["../../src/array/remoteList.ts"],"sourcesContent":["import type { BaseList } from './list';\n\n// #region RemoteMeta\nexport type RemoteMeta = Readonly<{\n end: number; // inclusive\n error: string | null;\n isEmpty: boolean;\n isFirst: boolean;\n isLast: boolean;\n limit: number;\n loading: boolean;\n page: number; // 1-based\n pages: number;\n start: number; // 1-based\n total: number;\n}>;\n// #endregion RemoteMeta\n\n// #region RemoteList\nexport type RemoteList<T, F, S> = BaseList<T> & {\n // Batch updates across properties in one recompute/refetch\n batch(\n mutator: (ctx: {\n goTo(p: number): void; // 1-based\n setData?(d: readonly T[]): void; // local-only\n setFilter(f: F): void;\n setLimit(n: number): void;\n setQuery(q: string): void;\n setSort(s?: S): void;\n }) => void,\n ): Promise<void>;\n readonly current: readonly T[];\n goTo(page: number): Promise<void>;\n\n invalidate?(): void;\n readonly meta: RemoteMeta;\n next(): Promise<void>;\n prev(): Promise<void>;\n refresh(): Promise<void>;\n reset(): Promise<void>;\n search(query: string, opts?: { immediate?: boolean }): Promise<void>;\n setFilter(filter: F): Promise<void>;\n setLimit(n: number): Promise<void>;\n setSort(sort?: S): Promise<void>;\n subscribe(listener: () => void): () => void;\n};\n// #endregion RemoteList\n\n// #region RemoteConfig\ntype RemoteQuery<F, S> = Readonly<{\n filter?: F;\n limit: number;\n page: number; // 1-based\n search?: string;\n sort?: S;\n}>;\n\ntype RemoteResult<T> = Readonly<{ items: readonly T[]; total: number }>;\n\ntype RemoteConfig<T, F, S> = Readonly<{\n cacheTtl?: number; // milliseconds; omit (or 0) to cache indefinitely\n debounceMs?: number;\n fetch: (q: RemoteQuery<F, S>) => Promise<RemoteResult<T>>;\n initialFilter?: F;\n initialSort?: S;\n limit?: number;\n}>;\n// #endregion RemoteConfig\n\nexport function remoteList<T, F = Record<string, unknown>, S = { dir?: 'asc' | 'desc'; key?: string }>(\n cfg: RemoteConfig<T, F, S>,\n): RemoteList<T, F, S> {\n const listeners = new Set<() => void>();\n\n const limitDefault = Math.max(1, cfg.limit ?? 10);\n const debounceMs = cfg.debounceMs ?? 300;\n\n let page = 1;\n let limit = limitDefault;\n let search = '';\n let filter = cfg.initialFilter as F | undefined;\n let sort = cfg.initialSort as S | undefined;\n\n let items: readonly T[] = [];\n let total = 0;\n let loading = false;\n let error: string | null = null;\n\n const cache = new Map<string, { result: RemoteResult<T>; ts: number }>();\n const inflight = new Map<string, Promise<void>>();\n\n const keyOf = (q: RemoteQuery<F, S>) => JSON.stringify(q);\n const queryOf = (): RemoteQuery<F, S> => ({\n filter,\n limit,\n page,\n search: search || undefined,\n sort,\n });\n\n const assign = (res: RemoteResult<T>) => {\n items = res.items;\n total = res.total ?? 0;\n\n const pages = Math.max(1, Math.ceil(total / limit));\n\n page = Math.min(Math.max(1, page), pages);\n };\n\n const notify = () => {\n for (const l of listeners) {\n l();\n }\n };\n\n const fetchQuery = async (q: RemoteQuery<F, S>) => {\n const k = keyOf(q);\n const entry = cache.get(k);\n const ttl = cfg.cacheTtl;\n\n if (entry && (!ttl || Date.now() - entry.ts < ttl)) {\n assign(entry.result);\n\n return;\n }\n\n if (inflight.has(k)) {\n await inflight.get(k);\n assign(cache.get(k)!.result);\n\n return;\n }\n\n loading = true;\n error = null;\n notify();\n\n const p = cfg\n .fetch(q)\n .then((res) => {\n cache.set(k, { result: res, ts: Date.now() });\n assign(res);\n })\n .catch((e) => {\n error = e?.message ?? 'Request failed';\n items = [];\n total = 0;\n })\n .finally(() => {\n inflight.delete(k);\n loading = false;\n notify();\n });\n\n inflight.set(k, p);\n await p;\n };\n\n const update = async () => {\n await fetchQuery(queryOf());\n };\n\n // debounced search\n let timer: ReturnType<typeof setTimeout> | undefined;\n const debounced = () => {\n if (timer) clearTimeout(timer);\n\n timer = setTimeout(() => {\n timer = undefined;\n void update();\n }, debounceMs);\n };\n\n // initial fetch is on the first subscriber or call to refresh; up to you\n return {\n async batch(mutator) {\n // Stage local copies\n let nextPage = page;\n let nextLimit = limit;\n let nextSearch = search;\n let nextFilter = filter as F | undefined;\n let nextSort = sort as S | undefined;\n\n mutator({\n goTo: (p: number) => {\n nextPage = Math.max(1, p | 0);\n },\n setFilter: (f: F) => {\n nextFilter = f;\n nextPage = 1;\n },\n setLimit: (n) => {\n nextLimit = Math.max(1, n);\n nextPage = 1;\n },\n setQuery: (q: string) => {\n nextSearch = q;\n nextPage = 1;\n },\n setSort: (s?: S) => {\n nextSort = s;\n nextPage = 1;\n },\n });\n\n // Apply and update at once\n page = nextPage;\n limit = nextLimit;\n search = nextSearch;\n filter = nextFilter;\n sort = nextSort;\n\n await update();\n },\n get current() {\n return items;\n },\n async goTo(p) {\n page = Math.max(1, p | 0);\n await update();\n },\n invalidate() {\n cache.clear();\n },\n get meta() {\n const isEmpty = total === 0;\n const pages = Math.max(1, Math.ceil(total / limit));\n const safePage = Math.min(page, pages);\n const start = isEmpty ? 0 : (safePage - 1) * limit + 1;\n const end = isEmpty ? 0 : Math.min(safePage * limit, total);\n\n return {\n end,\n error,\n isEmpty,\n isFirst: safePage <= 1,\n isLast: safePage >= pages,\n limit,\n loading,\n page: safePage,\n pages,\n start,\n total,\n };\n },\n async next() {\n page += 1;\n await update();\n },\n async prev() {\n page = Math.max(1, page - 1);\n await update();\n },\n async refresh() {\n cache.delete(keyOf(queryOf()));\n await update();\n },\n async reset() {\n page = 1;\n limit = limitDefault;\n search = '';\n filter = cfg.initialFilter as F | undefined;\n sort = cfg.initialSort as S | undefined;\n cache.clear();\n await update();\n },\n async search(q, opts) {\n search = q;\n page = 1;\n\n if (opts?.immediate) await update();\n else debounced();\n },\n async setFilter(f) {\n filter = f;\n page = 1;\n await update();\n },\n async setLimit(n) {\n limit = Math.max(1, n);\n page = 1;\n await update();\n },\n async setSort(s) {\n sort = s;\n page = 1;\n await update();\n },\n subscribe(listener) {\n listeners.add(listener);\n\n // optional: trigger an initial load on the first subscription\n if (listeners.size === 1 && items.length === 0 && !loading) {\n void update();\n }\n\n return () => listeners.delete(listener);\n },\n };\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`../function/assert.cjs`),t=require(`../typed/isArray.cjs`);function n(n,r,i){e.assert(t.isArray(n),t.IS_ARRAY_ERROR_MSG,{args:{array:n},type:TypeError});let a=n.findIndex(r);return a===-1?n:[...n.slice(0,a),i,...n.slice(a+1)]}exports.replace=n;
|
|
2
|
+
//# sourceMappingURL=replace.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replace.cjs","names":[],"sources":["../../src/array/replace.ts"],"sourcesContent":["import type { Predicate } from '../types';\n\nimport { assert } from '../function/assert';\nimport { IS_ARRAY_ERROR_MSG, isArray } from '../typed/isArray';\n\n/**\n * Replaces the first element in an array that satisfies the provided predicate\n * function with a new value.\n *\n * @example\n * ```ts\n * replace([1, 2, 3], (n) => n === 2, 4) // [1, 4, 3]\n * ```\n *\n * @param array - The array to search.\n * @param predicate - A function to test each element of the array.\n * @param value - The new value to replace the found element.\n *\n * @return A new array with the replaced value.\n *\n * @throws {TypeError} If the first argument is not an array.\n */\nexport function replace<T>(array: T[], predicate: Predicate<T>, value: T): T[] {\n assert(isArray(array), IS_ARRAY_ERROR_MSG, { args: { array }, type: TypeError });\n\n const index = array.findIndex(predicate);\n\n if (index === -1) return array;\n\n return [...array.slice(0, index), value, ...array.slice(index + 1)];\n}\n"],"mappings":"4EAsBA,SAAgB,EAAW,EAAY,EAAyB,EAAe,CAC7E,EAAA,OAAO,EAAA,QAAQ,EAAM,CAAE,EAAA,mBAAoB,CAAE,KAAM,CAAE,QAAO,CAAE,KAAM,UAAW,CAAC,CAEhF,IAAM,EAAQ,EAAM,UAAU,EAAU,CAIxC,OAFI,IAAU,GAAW,EAElB,CAAC,GAAG,EAAM,MAAM,EAAG,EAAM,CAAE,EAAO,GAAG,EAAM,MAAM,EAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Predicate } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Replaces the first element in an array that satisfies the provided predicate
|
|
4
|
+
* function with a new value.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```ts
|
|
8
|
+
* replace([1, 2, 3], (n) => n === 2, 4) // [1, 4, 3]
|
|
9
|
+
* ```
|
|
10
|
+
*
|
|
11
|
+
* @param array - The array to search.
|
|
12
|
+
* @param predicate - A function to test each element of the array.
|
|
13
|
+
* @param value - The new value to replace the found element.
|
|
14
|
+
*
|
|
15
|
+
* @return A new array with the replaced value.
|
|
16
|
+
*
|
|
17
|
+
* @throws {TypeError} If the first argument is not an array.
|
|
18
|
+
*/
|
|
19
|
+
export declare function replace<T>(array: T[], predicate: Predicate<T>, value: T): T[];
|
|
20
|
+
//# sourceMappingURL=replace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replace.d.ts","sourceRoot":"","sources":["../../src/array/replace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAK1C;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAQ7E"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { assert as e } from "../function/assert.js";
|
|
2
|
+
import { IS_ARRAY_ERROR_MSG as t, isArray as n } from "../typed/isArray.js";
|
|
3
|
+
//#region src/array/replace.ts
|
|
4
|
+
function r(r, i, a) {
|
|
5
|
+
e(n(r), t, {
|
|
6
|
+
args: { array: r },
|
|
7
|
+
type: TypeError
|
|
8
|
+
});
|
|
9
|
+
let o = r.findIndex(i);
|
|
10
|
+
return o === -1 ? r : [
|
|
11
|
+
...r.slice(0, o),
|
|
12
|
+
a,
|
|
13
|
+
...r.slice(o + 1)
|
|
14
|
+
];
|
|
15
|
+
}
|
|
16
|
+
//#endregion
|
|
17
|
+
export { r as replace };
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=replace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replace.js","names":[],"sources":["../../src/array/replace.ts"],"sourcesContent":["import type { Predicate } from '../types';\n\nimport { assert } from '../function/assert';\nimport { IS_ARRAY_ERROR_MSG, isArray } from '../typed/isArray';\n\n/**\n * Replaces the first element in an array that satisfies the provided predicate\n * function with a new value.\n *\n * @example\n * ```ts\n * replace([1, 2, 3], (n) => n === 2, 4) // [1, 4, 3]\n * ```\n *\n * @param array - The array to search.\n * @param predicate - A function to test each element of the array.\n * @param value - The new value to replace the found element.\n *\n * @return A new array with the replaced value.\n *\n * @throws {TypeError} If the first argument is not an array.\n */\nexport function replace<T>(array: T[], predicate: Predicate<T>, value: T): T[] {\n assert(isArray(array), IS_ARRAY_ERROR_MSG, { args: { array }, type: TypeError });\n\n const index = array.findIndex(predicate);\n\n if (index === -1) return array;\n\n return [...array.slice(0, index), value, ...array.slice(index + 1)];\n}\n"],"mappings":";;;AAsBA,SAAgB,EAAW,GAAY,GAAyB,GAAe;AAC7E,GAAO,EAAQ,EAAM,EAAE,GAAoB;EAAE,MAAM,EAAE,UAAO;EAAE,MAAM;EAAW,CAAC;CAEhF,IAAM,IAAQ,EAAM,UAAU,EAAU;AAIxC,QAFI,MAAU,KAAW,IAElB;EAAC,GAAG,EAAM,MAAM,GAAG,EAAM;EAAE;EAAO,GAAG,EAAM,MAAM,IAAQ,EAAE;EAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`../function/assert.cjs`),t=require(`../typed/isArray.cjs`),n=require(`../typed/isNumber.cjs`);function r(r,i,{wrap:a=!1}={}){if(e.assert(t.isArray(r),t.IS_ARRAY_ERROR_MSG,{args:{array:r},type:TypeError}),e.assert(n.isNumber(i),n.IS_NUMBER_ERROR_MSG,{args:{positions:i},type:TypeError}),r.length===0)return r;let o=(i%r.length+r.length)%r.length,s=r.slice(o);return a?[...s,...r.slice(0,o)]:s}exports.rotate=r;
|
|
2
|
+
//# sourceMappingURL=rotate.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rotate.cjs","names":[],"sources":["../../src/array/rotate.ts"],"sourcesContent":["import { assert } from '../function/assert';\nimport { IS_ARRAY_ERROR_MSG, isArray } from '../typed/isArray';\nimport { IS_NUMBER_ERROR_MSG, isNumber } from '../typed/isNumber';\n\n/**\n * Rotates the elements of an array by a specified number of positions.\n *\n * @example\n * ```ts\n * const arr = [1, 2, 3, 4, 5];\n * rotate(arr, 2); // [3, 4, 5]\n * rotate(arr, 2, { wrap: true }); // [3, 4, 5, 1, 2]\n * ```\n * @param array - The array to rotate.\n * @param positions - The number of positions to rotate the array.\n * @param [options] - Options for the rotate operation.\n * @param [options.wrap] - If `true`, the rotated-out elements are appended to the end.\n *\n * @returns A new array with the elements rotated.\n *\n * @throws {TypeError} If the first argument is not an array, or the second argument is not a number.\n */\nexport function rotate<T>(array: T[], positions: number, { wrap = false }: { wrap?: boolean } = {}): T[] {\n assert(isArray(array), IS_ARRAY_ERROR_MSG, { args: { array }, type: TypeError });\n assert(isNumber(positions), IS_NUMBER_ERROR_MSG, { args: { positions }, type: TypeError });\n\n if (array.length === 0) return array;\n\n const normalizedPos = ((positions % array.length) + array.length) % array.length;\n const rotated = array.slice(normalizedPos);\n\n return wrap ? [...rotated, ...array.slice(0, normalizedPos)] : rotated;\n}\n"],"mappings":"+GAsBA,SAAgB,EAAU,EAAY,EAAmB,CAAE,OAAO,IAA8B,EAAE,CAAO,CAIvG,GAHA,EAAA,OAAO,EAAA,QAAQ,EAAM,CAAE,EAAA,mBAAoB,CAAE,KAAM,CAAE,QAAO,CAAE,KAAM,UAAW,CAAC,CAChF,EAAA,OAAO,EAAA,SAAS,EAAU,CAAE,EAAA,oBAAqB,CAAE,KAAM,CAAE,YAAW,CAAE,KAAM,UAAW,CAAC,CAEtF,EAAM,SAAW,EAAG,OAAO,EAE/B,IAAM,GAAkB,EAAY,EAAM,OAAU,EAAM,QAAU,EAAM,OACpE,EAAU,EAAM,MAAM,EAAc,CAE1C,OAAO,EAAO,CAAC,GAAG,EAAS,GAAG,EAAM,MAAM,EAAG,EAAc,CAAC,CAAG"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rotates the elements of an array by a specified number of positions.
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```ts
|
|
6
|
+
* const arr = [1, 2, 3, 4, 5];
|
|
7
|
+
* rotate(arr, 2); // [3, 4, 5]
|
|
8
|
+
* rotate(arr, 2, { wrap: true }); // [3, 4, 5, 1, 2]
|
|
9
|
+
* ```
|
|
10
|
+
* @param array - The array to rotate.
|
|
11
|
+
* @param positions - The number of positions to rotate the array.
|
|
12
|
+
* @param [options] - Options for the rotate operation.
|
|
13
|
+
* @param [options.wrap] - If `true`, the rotated-out elements are appended to the end.
|
|
14
|
+
*
|
|
15
|
+
* @returns A new array with the elements rotated.
|
|
16
|
+
*
|
|
17
|
+
* @throws {TypeError} If the first argument is not an array, or the second argument is not a number.
|
|
18
|
+
*/
|
|
19
|
+
export declare function rotate<T>(array: T[], positions: number, { wrap }?: {
|
|
20
|
+
wrap?: boolean;
|
|
21
|
+
}): T[];
|
|
22
|
+
//# sourceMappingURL=rotate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rotate.d.ts","sourceRoot":"","sources":["../../src/array/rotate.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,IAAY,EAAE,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,CAAC,EAAE,CAUvG"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { assert as e } from "../function/assert.js";
|
|
2
|
+
import { IS_ARRAY_ERROR_MSG as t, isArray as n } from "../typed/isArray.js";
|
|
3
|
+
import { IS_NUMBER_ERROR_MSG as r, isNumber as i } from "../typed/isNumber.js";
|
|
4
|
+
//#region src/array/rotate.ts
|
|
5
|
+
function a(a, o, { wrap: s = !1 } = {}) {
|
|
6
|
+
if (e(n(a), t, {
|
|
7
|
+
args: { array: a },
|
|
8
|
+
type: TypeError
|
|
9
|
+
}), e(i(o), r, {
|
|
10
|
+
args: { positions: o },
|
|
11
|
+
type: TypeError
|
|
12
|
+
}), a.length === 0) return a;
|
|
13
|
+
let c = (o % a.length + a.length) % a.length, l = a.slice(c);
|
|
14
|
+
return s ? [...l, ...a.slice(0, c)] : l;
|
|
15
|
+
}
|
|
16
|
+
//#endregion
|
|
17
|
+
export { a as rotate };
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=rotate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rotate.js","names":[],"sources":["../../src/array/rotate.ts"],"sourcesContent":["import { assert } from '../function/assert';\nimport { IS_ARRAY_ERROR_MSG, isArray } from '../typed/isArray';\nimport { IS_NUMBER_ERROR_MSG, isNumber } from '../typed/isNumber';\n\n/**\n * Rotates the elements of an array by a specified number of positions.\n *\n * @example\n * ```ts\n * const arr = [1, 2, 3, 4, 5];\n * rotate(arr, 2); // [3, 4, 5]\n * rotate(arr, 2, { wrap: true }); // [3, 4, 5, 1, 2]\n * ```\n * @param array - The array to rotate.\n * @param positions - The number of positions to rotate the array.\n * @param [options] - Options for the rotate operation.\n * @param [options.wrap] - If `true`, the rotated-out elements are appended to the end.\n *\n * @returns A new array with the elements rotated.\n *\n * @throws {TypeError} If the first argument is not an array, or the second argument is not a number.\n */\nexport function rotate<T>(array: T[], positions: number, { wrap = false }: { wrap?: boolean } = {}): T[] {\n assert(isArray(array), IS_ARRAY_ERROR_MSG, { args: { array }, type: TypeError });\n assert(isNumber(positions), IS_NUMBER_ERROR_MSG, { args: { positions }, type: TypeError });\n\n if (array.length === 0) return array;\n\n const normalizedPos = ((positions % array.length) + array.length) % array.length;\n const rotated = array.slice(normalizedPos);\n\n return wrap ? [...rotated, ...array.slice(0, normalizedPos)] : rotated;\n}\n"],"mappings":";;;;AAsBA,SAAgB,EAAU,GAAY,GAAmB,EAAE,UAAO,OAA8B,EAAE,EAAO;AAIvG,KAHA,EAAO,EAAQ,EAAM,EAAE,GAAoB;EAAE,MAAM,EAAE,UAAO;EAAE,MAAM;EAAW,CAAC,EAChF,EAAO,EAAS,EAAU,EAAE,GAAqB;EAAE,MAAM,EAAE,cAAW;EAAE,MAAM;EAAW,CAAC,EAEtF,EAAM,WAAW,EAAG,QAAO;CAE/B,IAAM,KAAkB,IAAY,EAAM,SAAU,EAAM,UAAU,EAAM,QACpE,IAAU,EAAM,MAAM,EAAc;AAE1C,QAAO,IAAO,CAAC,GAAG,GAAS,GAAG,EAAM,MAAM,GAAG,EAAc,CAAC,GAAG"}
|
package/dist/array/search.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
//# sourceMappingURL=search.cjs.map
|
|
1
|
+
const e=require(`../function/assert.cjs`),t=require(`../typed/isString.cjs`),n=require(`../typed/isWithin.cjs`),r=require(`../object/seek.cjs`);function i(i,a,o=.25){if(e.assert(t.isString(a),t.IS_STRING_ERROR_MSG,{args:{query:a},type:TypeError}),e.assert(n.isWithin(o,0,1),n.IS_WITHIN_ERROR_MSG,{args:{max:1,min:0,tone:o},type:TypeError}),!a)return[...i];let s=a.toLowerCase();return i.filter(e=>r.seek(e,s,o))}exports.search=i;
|
|
2
|
+
//# sourceMappingURL=search.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.cjs","sources":["../../src/array/search.ts"],"sourcesContent":["import { assert } from '../function/assert';\nimport { seek } from '../object/seek';\nimport { IS_STRING_ERROR_MSG, isString } from '../typed/isString';\nimport { IS_WITHIN_ERROR_MSG, isWithin } from '../typed/isWithin';\
|
|
1
|
+
{"version":3,"file":"search.cjs","names":[],"sources":["../../src/array/search.ts"],"sourcesContent":["import { assert } from '../function/assert';\nimport { seek } from '../object/seek';\nimport { IS_STRING_ERROR_MSG, isString } from '../typed/isString';\nimport { IS_WITHIN_ERROR_MSG, isWithin } from '../typed/isWithin';\n\n/**\n * Performs a search on an array of objects, checking all values for a match with the search string.\n *\n * @example\n * ```ts\n * const data = [{ name: 'John Doe', age: 25 }, { name: 'Jane Doe', age: 30 }];\n * search(data, 'doe', 0.5); // [{ name: 'John Doe', age: 25 }, { name: 'Jane Doe', age: 30 }]\n * ```\n *\n * @param array - The array of objects to search.\n * @param query - The string to search for.\n * @param [tone=0.25] - Degree of similarity between 0 and 1.\n *\n * @returns The filtered array of objects that match the search string.\n *\n * @throws {Error} If input values are invalid.\n */\nexport function search<T>(array: T[], query: string, tone = 0.25): T[] {\n assert(isString(query), IS_STRING_ERROR_MSG, { args: { query }, type: TypeError });\n assert(isWithin(tone, 0, 1), IS_WITHIN_ERROR_MSG, { args: { max: 1, min: 0, tone }, type: TypeError });\n\n if (!query) return [...array];\n\n const searchTerm = query.toLowerCase();\n\n return array.filter((obj) => seek(obj as object, searchTerm, tone));\n}\n"],"mappings":"gJAsBA,SAAgB,EAAU,EAAY,EAAe,EAAO,IAAW,CAIrE,GAHA,EAAA,OAAO,EAAA,SAAS,EAAM,CAAE,EAAA,oBAAqB,CAAE,KAAM,CAAE,QAAO,CAAE,KAAM,UAAW,CAAC,CAClF,EAAA,OAAO,EAAA,SAAS,EAAM,EAAG,EAAE,CAAE,EAAA,oBAAqB,CAAE,KAAM,CAAE,IAAK,EAAG,IAAK,EAAG,OAAM,CAAE,KAAM,UAAW,CAAC,CAElG,CAAC,EAAO,MAAO,CAAC,GAAG,EAAM,CAE7B,IAAM,EAAa,EAAM,aAAa,CAEtC,OAAO,EAAM,OAAQ,GAAQ,EAAA,KAAK,EAAe,EAAY,EAAK,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Performs a search on an array of objects, checking all values for a match with the search string.
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```ts
|
|
6
|
+
* const data = [{ name: 'John Doe', age: 25 }, { name: 'Jane Doe', age: 30 }];
|
|
7
|
+
* search(data, 'doe', 0.5); // [{ name: 'John Doe', age: 25 }, { name: 'Jane Doe', age: 30 }]
|
|
8
|
+
* ```
|
|
9
|
+
*
|
|
10
|
+
* @param array - The array of objects to search.
|
|
11
|
+
* @param query - The string to search for.
|
|
12
|
+
* @param [tone=0.25] - Degree of similarity between 0 and 1.
|
|
13
|
+
*
|
|
14
|
+
* @returns The filtered array of objects that match the search string.
|
|
15
|
+
*
|
|
16
|
+
* @throws {Error} If input values are invalid.
|
|
17
|
+
*/
|
|
18
|
+
export declare function search<T>(array: T[], query: string, tone?: number): T[];
|
|
19
|
+
//# sourceMappingURL=search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/array/search.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,SAAO,GAAG,CAAC,EAAE,CASrE"}
|
package/dist/array/search.js
CHANGED
|
@@ -1,14 +1,24 @@
|
|
|
1
|
-
import { assert as
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
function
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import { assert as e } from "../function/assert.js";
|
|
2
|
+
import { IS_STRING_ERROR_MSG as t, isString as n } from "../typed/isString.js";
|
|
3
|
+
import { IS_WITHIN_ERROR_MSG as r, isWithin as i } from "../typed/isWithin.js";
|
|
4
|
+
import { seek as a } from "../object/seek.js";
|
|
5
|
+
//#region src/array/search.ts
|
|
6
|
+
function o(o, s, c = .25) {
|
|
7
|
+
if (e(n(s), t, {
|
|
8
|
+
args: { query: s },
|
|
9
|
+
type: TypeError
|
|
10
|
+
}), e(i(c, 0, 1), r, {
|
|
11
|
+
args: {
|
|
12
|
+
max: 1,
|
|
13
|
+
min: 0,
|
|
14
|
+
tone: c
|
|
15
|
+
},
|
|
16
|
+
type: TypeError
|
|
17
|
+
}), !s) return [...o];
|
|
18
|
+
let l = s.toLowerCase();
|
|
19
|
+
return o.filter((e) => a(e, l, c));
|
|
10
20
|
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
//# sourceMappingURL=search.js.map
|
|
21
|
+
//#endregion
|
|
22
|
+
export { o as search };
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=search.js.map
|
package/dist/array/search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sources":["../../src/array/search.ts"],"sourcesContent":["import { assert } from '../function/assert';\nimport { seek } from '../object/seek';\nimport { IS_STRING_ERROR_MSG, isString } from '../typed/isString';\nimport { IS_WITHIN_ERROR_MSG, isWithin } from '../typed/isWithin';\
|
|
1
|
+
{"version":3,"file":"search.js","names":[],"sources":["../../src/array/search.ts"],"sourcesContent":["import { assert } from '../function/assert';\nimport { seek } from '../object/seek';\nimport { IS_STRING_ERROR_MSG, isString } from '../typed/isString';\nimport { IS_WITHIN_ERROR_MSG, isWithin } from '../typed/isWithin';\n\n/**\n * Performs a search on an array of objects, checking all values for a match with the search string.\n *\n * @example\n * ```ts\n * const data = [{ name: 'John Doe', age: 25 }, { name: 'Jane Doe', age: 30 }];\n * search(data, 'doe', 0.5); // [{ name: 'John Doe', age: 25 }, { name: 'Jane Doe', age: 30 }]\n * ```\n *\n * @param array - The array of objects to search.\n * @param query - The string to search for.\n * @param [tone=0.25] - Degree of similarity between 0 and 1.\n *\n * @returns The filtered array of objects that match the search string.\n *\n * @throws {Error} If input values are invalid.\n */\nexport function search<T>(array: T[], query: string, tone = 0.25): T[] {\n assert(isString(query), IS_STRING_ERROR_MSG, { args: { query }, type: TypeError });\n assert(isWithin(tone, 0, 1), IS_WITHIN_ERROR_MSG, { args: { max: 1, min: 0, tone }, type: TypeError });\n\n if (!query) return [...array];\n\n const searchTerm = query.toLowerCase();\n\n return array.filter((obj) => seek(obj as object, searchTerm, tone));\n}\n"],"mappings":";;;;;AAsBA,SAAgB,EAAU,GAAY,GAAe,IAAO,KAAW;AAIrE,KAHA,EAAO,EAAS,EAAM,EAAE,GAAqB;EAAE,MAAM,EAAE,UAAO;EAAE,MAAM;EAAW,CAAC,EAClF,EAAO,EAAS,GAAM,GAAG,EAAE,EAAE,GAAqB;EAAE,MAAM;GAAE,KAAK;GAAG,KAAK;GAAG;GAAM;EAAE,MAAM;EAAW,CAAC,EAElG,CAAC,EAAO,QAAO,CAAC,GAAG,EAAM;CAE7B,IAAM,IAAa,EAAM,aAAa;AAEtC,QAAO,EAAM,QAAQ,MAAQ,EAAK,GAAe,GAAY,EAAK,CAAC"}
|
package/dist/array/select.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
//# sourceMappingURL=select.cjs.map
|
|
1
|
+
const e=require(`../function/assert.cjs`),t=require(`../typed/isArray.cjs`),n=require(`../typed/isNil.cjs`);function r(r,i,a){e.assert(t.isArray(r),t.IS_ARRAY_ERROR_MSG,{args:{array:r},type:TypeError});let o=a??(e=>!n.isNil(e)),s=[];for(let e=0;e<r.length;e++)o(r[e],e,r)&&s.push(i(r[e],e,r));return s}exports.select=r;
|
|
2
|
+
//# sourceMappingURL=select.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select.cjs","sources":["../../src/array/select.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"select.cjs","names":[],"sources":["../../src/array/select.ts"],"sourcesContent":["import type { Predicate } from '../types';\n\nimport { assert } from '../function/assert';\nimport { IS_ARRAY_ERROR_MSG, isArray } from '../typed/isArray';\nimport { isNil } from '../typed/isNil';\n\n/**\n * Selects elements from an array based on a callback function and an optional predicate function.\n *\n * @example\n * ```ts\n * const arr = [1, 2, 3, 4];\n * select(arr, x => x * x, x => x > 2) // [9, 16]\n * select(arr, x => x * x) // [1, 4, 9, 16]\n * ```\n *\n * @param array - The array to select from.\n * @param callback - The function to map the values.\n * @param [predicate] - (optional) The function to filter the values.\n *\n * @returns A new array with the selected values.\n *\n * @throws {TypeError} If the provided array is not an array.\n */\nexport function select<T, R>(\n array: T[],\n callback: (item: T, index: number, array: T[]) => R,\n predicate?: Predicate<T>,\n): R[] {\n assert(isArray(array), IS_ARRAY_ERROR_MSG, { args: { array }, type: TypeError });\n\n const isValid = predicate ?? ((value: T) => !isNil(value));\n const result: R[] = [];\n\n for (let index = 0; index < array.length; index++) {\n if (isValid(array[index], index, array)) {\n result.push(callback(array[index], index, array));\n }\n }\n\n return result;\n}\n"],"mappings":"4GAwBA,SAAgB,EACd,EACA,EACA,EACK,CACL,EAAA,OAAO,EAAA,QAAQ,EAAM,CAAE,EAAA,mBAAoB,CAAE,KAAM,CAAE,QAAO,CAAE,KAAM,UAAW,CAAC,CAEhF,IAAM,EAAU,IAAe,GAAa,CAAC,EAAA,MAAM,EAAM,EACnD,EAAc,EAAE,CAEtB,IAAK,IAAI,EAAQ,EAAG,EAAQ,EAAM,OAAQ,IACpC,EAAQ,EAAM,GAAQ,EAAO,EAAM,EACrC,EAAO,KAAK,EAAS,EAAM,GAAQ,EAAO,EAAM,CAAC,CAIrD,OAAO"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Predicate } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Selects elements from an array based on a callback function and an optional predicate function.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* const arr = [1, 2, 3, 4];
|
|
8
|
+
* select(arr, x => x * x, x => x > 2) // [9, 16]
|
|
9
|
+
* select(arr, x => x * x) // [1, 4, 9, 16]
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* @param array - The array to select from.
|
|
13
|
+
* @param callback - The function to map the values.
|
|
14
|
+
* @param [predicate] - (optional) The function to filter the values.
|
|
15
|
+
*
|
|
16
|
+
* @returns A new array with the selected values.
|
|
17
|
+
*
|
|
18
|
+
* @throws {TypeError} If the provided array is not an array.
|
|
19
|
+
*/
|
|
20
|
+
export declare function select<T, R>(array: T[], callback: (item: T, index: number, array: T[]) => R, predicate?: Predicate<T>): R[];
|
|
21
|
+
//# sourceMappingURL=select.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/array/select.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAM1C;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,CAAC,EACzB,KAAK,EAAE,CAAC,EAAE,EACV,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EACnD,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,GACvB,CAAC,EAAE,CAaL"}
|
package/dist/array/select.js
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
import { assert as
|
|
2
|
-
import { IS_ARRAY_ERROR_MSG as
|
|
3
|
-
import { isNil as
|
|
4
|
-
|
|
5
|
-
function
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
import { assert as e } from "../function/assert.js";
|
|
2
|
+
import { IS_ARRAY_ERROR_MSG as t, isArray as n } from "../typed/isArray.js";
|
|
3
|
+
import { isNil as r } from "../typed/isNil.js";
|
|
4
|
+
//#region src/array/select.ts
|
|
5
|
+
function i(i, a, o) {
|
|
6
|
+
e(n(i), t, {
|
|
7
|
+
args: { array: i },
|
|
8
|
+
type: TypeError
|
|
9
|
+
});
|
|
10
|
+
let s = o ?? ((e) => !r(e)), c = [];
|
|
11
|
+
for (let e = 0; e < i.length; e++) s(i[e], e, i) && c.push(a(i[e], e, i));
|
|
12
|
+
return c;
|
|
11
13
|
}
|
|
12
|
-
|
|
13
|
-
export {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
//# sourceMappingURL=select.js.map
|
|
14
|
+
//#endregion
|
|
15
|
+
export { i as select };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=select.js.map
|