@vielzeug/toolkit 1.1.2 → 2.0.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 +419 -0
- 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/async/sleep.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { assert as
|
|
2
|
-
async
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { assert as e } from "../function/assert.js";
|
|
2
|
+
//#region src/async/sleep.ts
|
|
3
|
+
async function t(t) {
|
|
4
|
+
return e(typeof t == "number" && t >= 0 && Number.isFinite(t), "Timeout must be a non-negative finite number", {
|
|
5
|
+
args: { timeout: t },
|
|
6
|
+
type: TypeError
|
|
7
|
+
}), new Promise((e) => setTimeout(e, t));
|
|
8
8
|
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
//# sourceMappingURL=sleep.js.map
|
|
9
|
+
//#endregion
|
|
10
|
+
export { t as sleep };
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=sleep.js.map
|
package/dist/async/sleep.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sleep.js","sources":["../../src/async/sleep.ts"],"sourcesContent":["import { assert } from '../function/assert';\n\n/**\n * Creates a Promise that resolves after a specified amount of time.\n *\n * @example\n * ```ts\n * sleep(1000).then(() => console.log('Hello, world!')); // logs 'Hello, world!' after 1 second\n * ```\n *\n * @param timeout - The number of milliseconds to wait before resolving the Promise.\n *\n * @returns A Promise that resolves after the specified time.\n *\n * @throws {TypeError} If timeout is not a non-negative number.\n */\nexport async function sleep(timeout: number): Promise<void> {\n assert(\n typeof timeout === 'number' && timeout >= 0 && Number.isFinite(timeout),\n 'Timeout must be a non-negative finite number',\n { args: { timeout }, type: TypeError },\n );\n return new Promise((resolve) => setTimeout(resolve, timeout));\n}\n"],"
|
|
1
|
+
{"version":3,"file":"sleep.js","names":[],"sources":["../../src/async/sleep.ts"],"sourcesContent":["import { assert } from '../function/assert';\n\n/**\n * Creates a Promise that resolves after a specified amount of time.\n *\n * @example\n * ```ts\n * sleep(1000).then(() => console.log('Hello, world!')); // logs 'Hello, world!' after 1 second\n * ```\n *\n * @param timeout - The number of milliseconds to wait before resolving the Promise.\n *\n * @returns A Promise that resolves after the specified time.\n *\n * @throws {TypeError} If timeout is not a non-negative number.\n */\nexport async function sleep(timeout: number): Promise<void> {\n assert(\n typeof timeout === 'number' && timeout >= 0 && Number.isFinite(timeout),\n 'Timeout must be a non-negative finite number',\n { args: { timeout }, type: TypeError },\n );\n\n return new Promise((resolve) => setTimeout(resolve, timeout));\n}\n"],"mappings":";;AAgBA,eAAsB,EAAM,GAAgC;AAO1D,QANA,EACE,OAAO,KAAY,YAAY,KAAW,KAAK,OAAO,SAAS,EAAQ,EACvE,gDACA;EAAE,MAAM,EAAE,YAAS;EAAE,MAAM;EAAW,CACvC,EAEM,IAAI,SAAS,MAAY,WAAW,GAAS,EAAQ,CAAC"}
|
package/dist/async/waitFor.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
//# sourceMappingURL=waitFor.cjs.map
|
|
1
|
+
async function e(e,t={}){let{interval:n=100,signal:r,timeout:i=5e3}=t,a=AbortSignal.timeout(i),o=r?AbortSignal.any([r,a]):a;return o.throwIfAborted(),new Promise((t,r)=>{let i=null,a=()=>{i!==null&&(clearTimeout(i),i=null),o.removeEventListener(`abort`,s)},s=()=>{a(),r(o.reason)},c=async()=>{try{if(o.aborted){a(),r(o.reason);return}if(await e()){a(),t();return}i=setTimeout(c,n)}catch(e){a(),r(e)}};o.addEventListener(`abort`,s,{once:!0}),c()})}exports.waitFor=e;
|
|
2
|
+
//# sourceMappingURL=waitFor.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"waitFor.cjs","sources":["../../src/async/waitFor.ts"],"sourcesContent":["/**\n * Waits for a condition to become true by polling.\n * Useful for waiting for DOM elements, API states, or other conditions.\n *\n * @example\n * ```ts\n * // Wait for an element to appear\n * await waitFor(() => document.querySelector('#myElement') !== null);\n *\n * // Wait for API to be ready\n * await waitFor(\n * async () => {\n * const res = await fetch('/api/health');\n * return res.ok;\n * },\n * { timeout: 30000, interval: 1000 }\n * );\n * ```\n *\n * @param condition - Function that returns true when condition is met\n * @param options - Configuration options\n * @param options.timeout - Maximum time to wait in ms (default: 5000)\n * @param options.interval - Polling interval in ms (default: 100)\n * @param options.signal - AbortSignal to cancel waiting\n * @returns Promise that resolves when condition becomes true\n * @throws {
|
|
1
|
+
{"version":3,"file":"waitFor.cjs","names":[],"sources":["../../src/async/waitFor.ts"],"sourcesContent":["/**\n * Waits for a condition to become true by polling.\n * Useful for waiting for DOM elements, API states, or other conditions.\n *\n * @example\n * ```ts\n * // Wait for an element to appear\n * await waitFor(() => document.querySelector('#myElement') !== null);\n *\n * // Wait for API to be ready\n * await waitFor(\n * async () => {\n * const res = await fetch('/api/health');\n * return res.ok;\n * },\n * { timeout: 30000, interval: 1000 }\n * );\n * ```\n *\n * @param condition - Function that returns true when condition is met\n * @param options - Configuration options\n * @param options.timeout - Maximum time to wait in ms (default: 5000)\n * @param options.interval - Polling interval in ms (default: 100)\n * @param options.signal - AbortSignal to cancel waiting\n * @returns Promise that resolves when condition becomes true\n * @throws {unknown} Rejects with the merged AbortSignal reason (timeout or abort)\n */\nexport async function waitFor(\n condition: () => boolean | Promise<boolean>,\n options: {\n interval?: number;\n signal?: AbortSignal;\n timeout?: number;\n } = {},\n): Promise<void> {\n const { interval = 100, signal, timeout: timeoutMs = 5000 } = options;\n const timeoutSignal = AbortSignal.timeout(timeoutMs);\n const mergedSignal = signal ? AbortSignal.any([signal, timeoutSignal]) : timeoutSignal;\n\n mergedSignal.throwIfAborted();\n\n return new Promise<void>((resolve, reject) => {\n let intervalId: ReturnType<typeof setTimeout> | null = null;\n\n const cleanup = () => {\n if (intervalId !== null) {\n clearTimeout(intervalId);\n intervalId = null;\n }\n\n mergedSignal.removeEventListener('abort', onAbort);\n };\n\n const onAbort = () => {\n cleanup();\n reject(mergedSignal.reason);\n };\n\n const check = async () => {\n try {\n if (mergedSignal.aborted) {\n cleanup();\n reject(mergedSignal.reason);\n\n return;\n }\n\n const result = await condition();\n\n if (result) {\n cleanup();\n resolve();\n\n return;\n }\n\n intervalId = setTimeout(check, interval);\n } catch (error) {\n cleanup();\n reject(error);\n }\n };\n\n mergedSignal.addEventListener('abort', onAbort, { once: true });\n\n // Start checking\n check();\n });\n}\n"],"mappings":"AA2BA,eAAsB,EACpB,EACA,EAII,EAAE,CACS,CACf,GAAM,CAAE,WAAW,IAAK,SAAQ,QAAS,EAAY,KAAS,EACxD,EAAgB,YAAY,QAAQ,EAAU,CAC9C,EAAe,EAAS,YAAY,IAAI,CAAC,EAAQ,EAAc,CAAC,CAAG,EAIzE,OAFA,EAAa,gBAAgB,CAEtB,IAAI,SAAe,EAAS,IAAW,CAC5C,IAAI,EAAmD,KAEjD,MAAgB,CAChB,IAAe,OACjB,aAAa,EAAW,CACxB,EAAa,MAGf,EAAa,oBAAoB,QAAS,EAAQ,EAG9C,MAAgB,CACpB,GAAS,CACT,EAAO,EAAa,OAAO,EAGvB,EAAQ,SAAY,CACxB,GAAI,CACF,GAAI,EAAa,QAAS,CACxB,GAAS,CACT,EAAO,EAAa,OAAO,CAE3B,OAKF,GAFe,MAAM,GAAW,CAEpB,CACV,GAAS,CACT,GAAS,CAET,OAGF,EAAa,WAAW,EAAO,EAAS,OACjC,EAAO,CACd,GAAS,CACT,EAAO,EAAM,GAIjB,EAAa,iBAAiB,QAAS,EAAS,CAAE,KAAM,GAAM,CAAC,CAG/D,GAAO,EACP"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Waits for a condition to become true by polling.
|
|
3
|
+
* Useful for waiting for DOM elements, API states, or other conditions.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* // Wait for an element to appear
|
|
8
|
+
* await waitFor(() => document.querySelector('#myElement') !== null);
|
|
9
|
+
*
|
|
10
|
+
* // Wait for API to be ready
|
|
11
|
+
* await waitFor(
|
|
12
|
+
* async () => {
|
|
13
|
+
* const res = await fetch('/api/health');
|
|
14
|
+
* return res.ok;
|
|
15
|
+
* },
|
|
16
|
+
* { timeout: 30000, interval: 1000 }
|
|
17
|
+
* );
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* @param condition - Function that returns true when condition is met
|
|
21
|
+
* @param options - Configuration options
|
|
22
|
+
* @param options.timeout - Maximum time to wait in ms (default: 5000)
|
|
23
|
+
* @param options.interval - Polling interval in ms (default: 100)
|
|
24
|
+
* @param options.signal - AbortSignal to cancel waiting
|
|
25
|
+
* @returns Promise that resolves when condition becomes true
|
|
26
|
+
* @throws {unknown} Rejects with the merged AbortSignal reason (timeout or abort)
|
|
27
|
+
*/
|
|
28
|
+
export declare function waitFor(condition: () => boolean | Promise<boolean>, options?: {
|
|
29
|
+
interval?: number;
|
|
30
|
+
signal?: AbortSignal;
|
|
31
|
+
timeout?: number;
|
|
32
|
+
}): Promise<void>;
|
|
33
|
+
//# sourceMappingURL=waitFor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waitFor.d.ts","sourceRoot":"","sources":["../../src/async/waitFor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,OAAO,CAC3B,SAAS,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,EAC3C,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CACb,GACL,OAAO,CAAC,IAAI,CAAC,CAsDf"}
|
package/dist/async/waitFor.js
CHANGED
|
@@ -1,37 +1,30 @@
|
|
|
1
|
-
async
|
|
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
|
-
o = setTimeout(a, l);
|
|
27
|
-
} catch (s) {
|
|
28
|
-
r(), e(s);
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
t && t.addEventListener("abort", i, { once: !0 }), a();
|
|
32
|
-
});
|
|
1
|
+
//#region src/async/waitFor.ts
|
|
2
|
+
async function e(e, t = {}) {
|
|
3
|
+
let { interval: n = 100, signal: r, timeout: i = 5e3 } = t, a = AbortSignal.timeout(i), o = r ? AbortSignal.any([r, a]) : a;
|
|
4
|
+
return o.throwIfAborted(), new Promise((t, r) => {
|
|
5
|
+
let i = null, a = () => {
|
|
6
|
+
i !== null && (clearTimeout(i), i = null), o.removeEventListener("abort", s);
|
|
7
|
+
}, s = () => {
|
|
8
|
+
a(), r(o.reason);
|
|
9
|
+
}, c = async () => {
|
|
10
|
+
try {
|
|
11
|
+
if (o.aborted) {
|
|
12
|
+
a(), r(o.reason);
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
if (await e()) {
|
|
16
|
+
a(), t();
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
i = setTimeout(c, n);
|
|
20
|
+
} catch (e) {
|
|
21
|
+
a(), r(e);
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
o.addEventListener("abort", s, { once: !0 }), c();
|
|
25
|
+
});
|
|
33
26
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
//# sourceMappingURL=waitFor.js.map
|
|
27
|
+
//#endregion
|
|
28
|
+
export { e as waitFor };
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=waitFor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"waitFor.js","sources":["../../src/async/waitFor.ts"],"sourcesContent":["/**\n * Waits for a condition to become true by polling.\n * Useful for waiting for DOM elements, API states, or other conditions.\n *\n * @example\n * ```ts\n * // Wait for an element to appear\n * await waitFor(() => document.querySelector('#myElement') !== null);\n *\n * // Wait for API to be ready\n * await waitFor(\n * async () => {\n * const res = await fetch('/api/health');\n * return res.ok;\n * },\n * { timeout: 30000, interval: 1000 }\n * );\n * ```\n *\n * @param condition - Function that returns true when condition is met\n * @param options - Configuration options\n * @param options.timeout - Maximum time to wait in ms (default: 5000)\n * @param options.interval - Polling interval in ms (default: 100)\n * @param options.signal - AbortSignal to cancel waiting\n * @returns Promise that resolves when condition becomes true\n * @throws {
|
|
1
|
+
{"version":3,"file":"waitFor.js","names":[],"sources":["../../src/async/waitFor.ts"],"sourcesContent":["/**\n * Waits for a condition to become true by polling.\n * Useful for waiting for DOM elements, API states, or other conditions.\n *\n * @example\n * ```ts\n * // Wait for an element to appear\n * await waitFor(() => document.querySelector('#myElement') !== null);\n *\n * // Wait for API to be ready\n * await waitFor(\n * async () => {\n * const res = await fetch('/api/health');\n * return res.ok;\n * },\n * { timeout: 30000, interval: 1000 }\n * );\n * ```\n *\n * @param condition - Function that returns true when condition is met\n * @param options - Configuration options\n * @param options.timeout - Maximum time to wait in ms (default: 5000)\n * @param options.interval - Polling interval in ms (default: 100)\n * @param options.signal - AbortSignal to cancel waiting\n * @returns Promise that resolves when condition becomes true\n * @throws {unknown} Rejects with the merged AbortSignal reason (timeout or abort)\n */\nexport async function waitFor(\n condition: () => boolean | Promise<boolean>,\n options: {\n interval?: number;\n signal?: AbortSignal;\n timeout?: number;\n } = {},\n): Promise<void> {\n const { interval = 100, signal, timeout: timeoutMs = 5000 } = options;\n const timeoutSignal = AbortSignal.timeout(timeoutMs);\n const mergedSignal = signal ? AbortSignal.any([signal, timeoutSignal]) : timeoutSignal;\n\n mergedSignal.throwIfAborted();\n\n return new Promise<void>((resolve, reject) => {\n let intervalId: ReturnType<typeof setTimeout> | null = null;\n\n const cleanup = () => {\n if (intervalId !== null) {\n clearTimeout(intervalId);\n intervalId = null;\n }\n\n mergedSignal.removeEventListener('abort', onAbort);\n };\n\n const onAbort = () => {\n cleanup();\n reject(mergedSignal.reason);\n };\n\n const check = async () => {\n try {\n if (mergedSignal.aborted) {\n cleanup();\n reject(mergedSignal.reason);\n\n return;\n }\n\n const result = await condition();\n\n if (result) {\n cleanup();\n resolve();\n\n return;\n }\n\n intervalId = setTimeout(check, interval);\n } catch (error) {\n cleanup();\n reject(error);\n }\n };\n\n mergedSignal.addEventListener('abort', onAbort, { once: true });\n\n // Start checking\n check();\n });\n}\n"],"mappings":";AA2BA,eAAsB,EACpB,GACA,IAII,EAAE,EACS;CACf,IAAM,EAAE,cAAW,KAAK,WAAQ,SAAS,IAAY,QAAS,GACxD,IAAgB,YAAY,QAAQ,EAAU,EAC9C,IAAe,IAAS,YAAY,IAAI,CAAC,GAAQ,EAAc,CAAC,GAAG;AAIzE,QAFA,EAAa,gBAAgB,EAEtB,IAAI,SAAe,GAAS,MAAW;EAC5C,IAAI,IAAmD,MAEjD,UAAgB;AAMpB,GALI,MAAe,SACjB,aAAa,EAAW,EACxB,IAAa,OAGf,EAAa,oBAAoB,SAAS,EAAQ;KAG9C,UAAgB;AAEpB,GADA,GAAS,EACT,EAAO,EAAa,OAAO;KAGvB,IAAQ,YAAY;AACxB,OAAI;AACF,QAAI,EAAa,SAAS;AAExB,KADA,GAAS,EACT,EAAO,EAAa,OAAO;AAE3B;;AAKF,QAFe,MAAM,GAAW,EAEpB;AAEV,KADA,GAAS,EACT,GAAS;AAET;;AAGF,QAAa,WAAW,GAAO,EAAS;YACjC,GAAO;AAEd,IADA,GAAS,EACT,EAAO,EAAM;;;AAOjB,EAHA,EAAa,iBAAiB,SAAS,GAAS,EAAE,MAAM,IAAM,CAAC,EAG/D,GAAO;GACP"}
|
package/dist/date/expires.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
//# sourceMappingURL=expires.cjs.map
|
|
1
|
+
function e(e,t=7){let n=typeof e==`string`?new Date(e):e,r=n.getTime();if(Number.isNaN(r))return`UNKNOWN`;if(n.getFullYear()>=9999)return`NEVER`;let i=r-Date.now();return i<=0?`EXPIRED`:i<=t*24*60*60*1e3?`SOON`:`LATER`}exports.expires=e;
|
|
2
|
+
//# sourceMappingURL=expires.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expires.cjs","sources":["../../src/date/expires.ts"],"sourcesContent":["// #region Expires\nexport type Expires = 'EXPIRED' | 'SOON' | 'LATER' | 'NEVER' | 'UNKNOWN';\n// #endregion Expires\n\n/**\n * Determines the expiry status of a given date.\n *\n * @param date - The date to check, as a string or Date object.\n * @param days - Number of days before expiry to be considered \"SOON\" (default: 7).\n * @returns\n * - 'EXPIRED' if the date is in the past,\n * - 'SOON' if the date is within the next `days`,\n * - 'LATER' if the date is further in the future,\n * - 'NEVER' if the year is >= 9999,\n * - 'UNKNOWN' if the date is invalid.\n */\nexport function expires(date: string | Date, days = 7): Expires {\n const target = typeof date === 'string' ? new Date(date) : date;\n const targetTime = target.getTime();\n\n if (Number.isNaN(targetTime)) return 'UNKNOWN';\n if (target.getFullYear() >= 9999) return 'NEVER';\n\n const now = Date.now();\n const diff = targetTime - now;\n\n if (diff <= 0) return 'EXPIRED';\n if (diff <= days * 24 * 60 * 60 * 1000) return 'SOON';\n\n return 'LATER';\n}\n"],"
|
|
1
|
+
{"version":3,"file":"expires.cjs","names":[],"sources":["../../src/date/expires.ts"],"sourcesContent":["// #region Expires\nexport type Expires = 'EXPIRED' | 'SOON' | 'LATER' | 'NEVER' | 'UNKNOWN';\n// #endregion Expires\n\n/**\n * Determines the expiry status of a given date.\n *\n * @param date - The date to check, as a string or Date object.\n * @param days - Number of days before expiry to be considered \"SOON\" (default: 7).\n * @returns\n * - 'EXPIRED' if the date is in the past,\n * - 'SOON' if the date is within the next `days`,\n * - 'LATER' if the date is further in the future,\n * - 'NEVER' if the year is >= 9999,\n * - 'UNKNOWN' if the date is invalid.\n */\nexport function expires(date: string | Date, days = 7): Expires {\n const target = typeof date === 'string' ? new Date(date) : date;\n const targetTime = target.getTime();\n\n if (Number.isNaN(targetTime)) return 'UNKNOWN';\n\n if (target.getFullYear() >= 9999) return 'NEVER';\n\n const now = Date.now();\n const diff = targetTime - now;\n\n if (diff <= 0) return 'EXPIRED';\n\n if (diff <= days * 24 * 60 * 60 * 1000) return 'SOON';\n\n return 'LATER';\n}\n"],"mappings":"AAgBA,SAAgB,EAAQ,EAAqB,EAAO,EAAY,CAC9D,IAAM,EAAS,OAAO,GAAS,SAAW,IAAI,KAAK,EAAK,CAAG,EACrD,EAAa,EAAO,SAAS,CAEnC,GAAI,OAAO,MAAM,EAAW,CAAE,MAAO,UAErC,GAAI,EAAO,aAAa,EAAI,KAAM,MAAO,QAGzC,IAAM,EAAO,EADD,KAAK,KAAK,CAOtB,OAJI,GAAQ,EAAU,UAElB,GAAQ,EAAO,GAAK,GAAK,GAAK,IAAa,OAExC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type Expires = 'EXPIRED' | 'SOON' | 'LATER' | 'NEVER' | 'UNKNOWN';
|
|
2
|
+
/**
|
|
3
|
+
* Determines the expiry status of a given date.
|
|
4
|
+
*
|
|
5
|
+
* @param date - The date to check, as a string or Date object.
|
|
6
|
+
* @param days - Number of days before expiry to be considered "SOON" (default: 7).
|
|
7
|
+
* @returns
|
|
8
|
+
* - 'EXPIRED' if the date is in the past,
|
|
9
|
+
* - 'SOON' if the date is within the next `days`,
|
|
10
|
+
* - 'LATER' if the date is further in the future,
|
|
11
|
+
* - 'NEVER' if the year is >= 9999,
|
|
12
|
+
* - 'UNKNOWN' if the date is invalid.
|
|
13
|
+
*/
|
|
14
|
+
export declare function expires(date: string | Date, days?: number): Expires;
|
|
15
|
+
//# sourceMappingURL=expires.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expires.d.ts","sourceRoot":"","sources":["../../src/date/expires.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;AAGzE;;;;;;;;;;;GAWG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,SAAI,GAAG,OAAO,CAgB9D"}
|
package/dist/date/expires.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
//#region src/date/expires.ts
|
|
2
|
+
function e(e, t = 7) {
|
|
3
|
+
let n = typeof e == "string" ? new Date(e) : e, r = n.getTime();
|
|
4
|
+
if (Number.isNaN(r)) return "UNKNOWN";
|
|
5
|
+
if (n.getFullYear() >= 9999) return "NEVER";
|
|
6
|
+
let i = r - Date.now();
|
|
7
|
+
return i <= 0 ? "EXPIRED" : i <= t * 24 * 60 * 60 * 1e3 ? "SOON" : "LATER";
|
|
7
8
|
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
//# sourceMappingURL=expires.js.map
|
|
9
|
+
//#endregion
|
|
10
|
+
export { e as expires };
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=expires.js.map
|
package/dist/date/expires.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expires.js","sources":["../../src/date/expires.ts"],"sourcesContent":["// #region Expires\nexport type Expires = 'EXPIRED' | 'SOON' | 'LATER' | 'NEVER' | 'UNKNOWN';\n// #endregion Expires\n\n/**\n * Determines the expiry status of a given date.\n *\n * @param date - The date to check, as a string or Date object.\n * @param days - Number of days before expiry to be considered \"SOON\" (default: 7).\n * @returns\n * - 'EXPIRED' if the date is in the past,\n * - 'SOON' if the date is within the next `days`,\n * - 'LATER' if the date is further in the future,\n * - 'NEVER' if the year is >= 9999,\n * - 'UNKNOWN' if the date is invalid.\n */\nexport function expires(date: string | Date, days = 7): Expires {\n const target = typeof date === 'string' ? new Date(date) : date;\n const targetTime = target.getTime();\n\n if (Number.isNaN(targetTime)) return 'UNKNOWN';\n if (target.getFullYear() >= 9999) return 'NEVER';\n\n const now = Date.now();\n const diff = targetTime - now;\n\n if (diff <= 0) return 'EXPIRED';\n if (diff <= days * 24 * 60 * 60 * 1000) return 'SOON';\n\n return 'LATER';\n}\n"],"
|
|
1
|
+
{"version":3,"file":"expires.js","names":[],"sources":["../../src/date/expires.ts"],"sourcesContent":["// #region Expires\nexport type Expires = 'EXPIRED' | 'SOON' | 'LATER' | 'NEVER' | 'UNKNOWN';\n// #endregion Expires\n\n/**\n * Determines the expiry status of a given date.\n *\n * @param date - The date to check, as a string or Date object.\n * @param days - Number of days before expiry to be considered \"SOON\" (default: 7).\n * @returns\n * - 'EXPIRED' if the date is in the past,\n * - 'SOON' if the date is within the next `days`,\n * - 'LATER' if the date is further in the future,\n * - 'NEVER' if the year is >= 9999,\n * - 'UNKNOWN' if the date is invalid.\n */\nexport function expires(date: string | Date, days = 7): Expires {\n const target = typeof date === 'string' ? new Date(date) : date;\n const targetTime = target.getTime();\n\n if (Number.isNaN(targetTime)) return 'UNKNOWN';\n\n if (target.getFullYear() >= 9999) return 'NEVER';\n\n const now = Date.now();\n const diff = targetTime - now;\n\n if (diff <= 0) return 'EXPIRED';\n\n if (diff <= days * 24 * 60 * 60 * 1000) return 'SOON';\n\n return 'LATER';\n}\n"],"mappings":";AAgBA,SAAgB,EAAQ,GAAqB,IAAO,GAAY;CAC9D,IAAM,IAAS,OAAO,KAAS,WAAW,IAAI,KAAK,EAAK,GAAG,GACrD,IAAa,EAAO,SAAS;AAEnC,KAAI,OAAO,MAAM,EAAW,CAAE,QAAO;AAErC,KAAI,EAAO,aAAa,IAAI,KAAM,QAAO;CAGzC,IAAM,IAAO,IADD,KAAK,KAAK;AAOtB,QAJI,KAAQ,IAAU,YAElB,KAAQ,IAAO,KAAK,KAAK,KAAK,MAAa,SAExC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/date/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
|
package/dist/date/interval.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
//# sourceMappingURL=interval.cjs.map
|
|
1
|
+
const e=require(`../function/assert.cjs`),t=require(`../typed/isDate.cjs`);function n(n,i,{interval:a=`day`,latest:o=!1,steps:s=1}={}){let c=new Date(n),l=new Date(i);e.assertAll([t.isDate(c),t.isDate(l)],`Invalid date format. Use a valid Date object or ISO string.`,{args:{end:i,start:n},type:TypeError});let u=[],d=new Date(r(c,a,0));for(;d<=l;)u.push(d),d=new Date(r(d,a,s));return o&&u.length>0&&u[u.length-1]<l&&u.push(l),u}function r(e,t,n){let r=e.getFullYear(),i=e.getMonth(),a=e.getDate();switch(t){case`day`:return new Date(Date.UTC(r,i,a+n));case`month`:return new Date(Date.UTC(r,i+n,a));case`monthEnd`:return new Date(Date.UTC(r,i+n+1,0));case`monthStart`:return new Date(Date.UTC(r,i+n,1));case`week`:return new Date(Date.UTC(r,i,a+7*n));case`year`:return new Date(Date.UTC(r+n,i,a));case`yearEnd`:return new Date(Date.UTC(r+n,11,31));case`yearStart`:return new Date(Date.UTC(r+n,0,1))}}exports.interval=n;
|
|
2
|
+
//# sourceMappingURL=interval.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interval.cjs","sources":["../../src/date/interval.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"interval.cjs","names":[],"sources":["../../src/date/interval.ts"],"sourcesContent":["import { assertAll } from '../function/assert';\nimport { isDate } from '../typed/isDate';\n\n// #region IntervalTypes\ntype IntervalType = 'day' | 'week' | 'month' | 'monthStart' | 'monthEnd' | 'year' | 'yearStart' | 'yearEnd';\ntype IntervalOptions = {\n interval?: IntervalType;\n latest?: boolean;\n steps?: number;\n};\n// #endregion IntervalTypes\n\n/**\n * Generates an array of dates between a start and end date, with a specified interval and step size.\n *\n * @example\n * ```ts\n * const options = { interval: 'day', steps: 1, latest: false };\n *\n * interval('2022-01-01', '2022-01-31', options); // Returns an array of dates for every day in January 2022\n * ```\n *\n * @param start - The start date (Date object or ISO string).\n * @param end - The end date (Date object or ISO string).\n * @param options - Options for an interval and steps.\n *\n * @returns An array of generated dates.\n */\nexport function interval(\n start: Date | string,\n end: Date | string,\n { interval = 'day', latest = false, steps = 1 }: IntervalOptions = {},\n): Date[] {\n const startDate = new Date(start);\n const endDate = new Date(end);\n\n assertAll([isDate(startDate), isDate(endDate)], 'Invalid date format. Use a valid Date object or ISO string.', {\n args: { end, start },\n type: TypeError,\n });\n\n const dateArray: Date[] = [];\n let currentDate = new Date(incrementDate(startDate, interval, 0));\n\n while (currentDate <= endDate) {\n dateArray.push(currentDate);\n currentDate = new Date(incrementDate(currentDate, interval, steps));\n }\n\n if (latest && dateArray.length > 0 && dateArray[dateArray.length - 1] < endDate) {\n dateArray.push(endDate);\n }\n\n return dateArray;\n}\n\nfunction incrementDate(date: Date, interval: IntervalType, steps: number): Date {\n const year = date.getFullYear();\n const month = date.getMonth();\n const day = date.getDate();\n\n switch (interval) {\n case 'day':\n return new Date(Date.UTC(year, month, day + steps));\n case 'month':\n return new Date(Date.UTC(year, month + steps, day));\n case 'monthEnd':\n return new Date(Date.UTC(year, month + steps + 1, 0));\n case 'monthStart':\n return new Date(Date.UTC(year, month + steps, 1));\n case 'week':\n return new Date(Date.UTC(year, month, day + 7 * steps));\n case 'year':\n return new Date(Date.UTC(year + steps, month, day));\n case 'yearEnd':\n return new Date(Date.UTC(year + steps, 11, 31));\n case 'yearStart':\n return new Date(Date.UTC(year + steps, 0, 1));\n }\n}\n"],"mappings":"2EA4BA,SAAgB,EACd,EACA,EACA,CAAE,WAAW,MAAO,SAAS,GAAO,QAAQ,GAAuB,EAAE,CAC7D,CACR,IAAM,EAAY,IAAI,KAAK,EAAM,CAC3B,EAAU,IAAI,KAAK,EAAI,CAE7B,EAAA,UAAU,CAAC,EAAA,OAAO,EAAU,CAAE,EAAA,OAAO,EAAQ,CAAC,CAAE,8DAA+D,CAC7G,KAAM,CAAE,MAAK,QAAO,CACpB,KAAM,UACP,CAAC,CAEF,IAAM,EAAoB,EAAE,CACxB,EAAc,IAAI,KAAK,EAAc,EAAW,EAAU,EAAE,CAAC,CAEjE,KAAO,GAAe,GACpB,EAAU,KAAK,EAAY,CAC3B,EAAc,IAAI,KAAK,EAAc,EAAa,EAAU,EAAM,CAAC,CAOrE,OAJI,GAAU,EAAU,OAAS,GAAK,EAAU,EAAU,OAAS,GAAK,GACtE,EAAU,KAAK,EAAQ,CAGlB,EAGT,SAAS,EAAc,EAAY,EAAwB,EAAqB,CAC9E,IAAM,EAAO,EAAK,aAAa,CACzB,EAAQ,EAAK,UAAU,CACvB,EAAM,EAAK,SAAS,CAE1B,OAAQ,EAAR,CACE,IAAK,MACH,OAAO,IAAI,KAAK,KAAK,IAAI,EAAM,EAAO,EAAM,EAAM,CAAC,CACrD,IAAK,QACH,OAAO,IAAI,KAAK,KAAK,IAAI,EAAM,EAAQ,EAAO,EAAI,CAAC,CACrD,IAAK,WACH,OAAO,IAAI,KAAK,KAAK,IAAI,EAAM,EAAQ,EAAQ,EAAG,EAAE,CAAC,CACvD,IAAK,aACH,OAAO,IAAI,KAAK,KAAK,IAAI,EAAM,EAAQ,EAAO,EAAE,CAAC,CACnD,IAAK,OACH,OAAO,IAAI,KAAK,KAAK,IAAI,EAAM,EAAO,EAAM,EAAI,EAAM,CAAC,CACzD,IAAK,OACH,OAAO,IAAI,KAAK,KAAK,IAAI,EAAO,EAAO,EAAO,EAAI,CAAC,CACrD,IAAK,UACH,OAAO,IAAI,KAAK,KAAK,IAAI,EAAO,EAAO,GAAI,GAAG,CAAC,CACjD,IAAK,YACH,OAAO,IAAI,KAAK,KAAK,IAAI,EAAO,EAAO,EAAG,EAAE,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
type IntervalType = 'day' | 'week' | 'month' | 'monthStart' | 'monthEnd' | 'year' | 'yearStart' | 'yearEnd';
|
|
2
|
+
type IntervalOptions = {
|
|
3
|
+
interval?: IntervalType;
|
|
4
|
+
latest?: boolean;
|
|
5
|
+
steps?: number;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Generates an array of dates between a start and end date, with a specified interval and step size.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* const options = { interval: 'day', steps: 1, latest: false };
|
|
13
|
+
*
|
|
14
|
+
* interval('2022-01-01', '2022-01-31', options); // Returns an array of dates for every day in January 2022
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* @param start - The start date (Date object or ISO string).
|
|
18
|
+
* @param end - The end date (Date object or ISO string).
|
|
19
|
+
* @param options - Options for an interval and steps.
|
|
20
|
+
*
|
|
21
|
+
* @returns An array of generated dates.
|
|
22
|
+
*/
|
|
23
|
+
export declare function interval(start: Date | string, end: Date | string, { interval, latest, steps }?: IntervalOptions): Date[];
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=interval.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interval.d.ts","sourceRoot":"","sources":["../../src/date/interval.ts"],"names":[],"mappings":"AAIA,KAAK,YAAY,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,GAAG,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;AAC5G,KAAK,eAAe,GAAG;IACrB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAGF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,QAAQ,CACtB,KAAK,EAAE,IAAI,GAAG,MAAM,EACpB,GAAG,EAAE,IAAI,GAAG,MAAM,EAClB,EAAE,QAAgB,EAAE,MAAc,EAAE,KAAS,EAAE,GAAE,eAAoB,GACpE,IAAI,EAAE,CAsBR"}
|
package/dist/date/interval.js
CHANGED
|
@@ -1,39 +1,33 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { isDate as
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
1
|
+
import { assertAll as e } from "../function/assert.js";
|
|
2
|
+
import { isDate as t } from "../typed/isDate.js";
|
|
3
|
+
//#region src/date/interval.ts
|
|
4
|
+
function n(n, i, { interval: a = "day", latest: o = !1, steps: s = 1 } = {}) {
|
|
5
|
+
let c = new Date(n), l = new Date(i);
|
|
6
|
+
e([t(c), t(l)], "Invalid date format. Use a valid Date object or ISO string.", {
|
|
7
|
+
args: {
|
|
8
|
+
end: i,
|
|
9
|
+
start: n
|
|
10
|
+
},
|
|
11
|
+
type: TypeError
|
|
12
|
+
});
|
|
13
|
+
let u = [], d = new Date(r(c, a, 0));
|
|
14
|
+
for (; d <= l;) u.push(d), d = new Date(r(d, a, s));
|
|
15
|
+
return o && u.length > 0 && u[u.length - 1] < l && u.push(l), u;
|
|
14
16
|
}
|
|
15
|
-
function
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
return new Date(Date.UTC(t, a + e + 1, 0));
|
|
28
|
-
case "Y":
|
|
29
|
-
return new Date(Date.UTC(t + e, a, n));
|
|
30
|
-
case "YS":
|
|
31
|
-
return new Date(Date.UTC(t + e, 0, 1));
|
|
32
|
-
case "YE":
|
|
33
|
-
return new Date(Date.UTC(t + e, 11, 31));
|
|
34
|
-
}
|
|
17
|
+
function r(e, t, n) {
|
|
18
|
+
let r = e.getFullYear(), i = e.getMonth(), a = e.getDate();
|
|
19
|
+
switch (t) {
|
|
20
|
+
case "day": return new Date(Date.UTC(r, i, a + n));
|
|
21
|
+
case "month": return new Date(Date.UTC(r, i + n, a));
|
|
22
|
+
case "monthEnd": return new Date(Date.UTC(r, i + n + 1, 0));
|
|
23
|
+
case "monthStart": return new Date(Date.UTC(r, i + n, 1));
|
|
24
|
+
case "week": return new Date(Date.UTC(r, i, a + 7 * n));
|
|
25
|
+
case "year": return new Date(Date.UTC(r + n, i, a));
|
|
26
|
+
case "yearEnd": return new Date(Date.UTC(r + n, 11, 31));
|
|
27
|
+
case "yearStart": return new Date(Date.UTC(r + n, 0, 1));
|
|
28
|
+
}
|
|
35
29
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
//# sourceMappingURL=interval.js.map
|
|
30
|
+
//#endregion
|
|
31
|
+
export { n as interval };
|
|
32
|
+
|
|
33
|
+
//# sourceMappingURL=interval.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interval.js","sources":["../../src/date/interval.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"interval.js","names":[],"sources":["../../src/date/interval.ts"],"sourcesContent":["import { assertAll } from '../function/assert';\nimport { isDate } from '../typed/isDate';\n\n// #region IntervalTypes\ntype IntervalType = 'day' | 'week' | 'month' | 'monthStart' | 'monthEnd' | 'year' | 'yearStart' | 'yearEnd';\ntype IntervalOptions = {\n interval?: IntervalType;\n latest?: boolean;\n steps?: number;\n};\n// #endregion IntervalTypes\n\n/**\n * Generates an array of dates between a start and end date, with a specified interval and step size.\n *\n * @example\n * ```ts\n * const options = { interval: 'day', steps: 1, latest: false };\n *\n * interval('2022-01-01', '2022-01-31', options); // Returns an array of dates for every day in January 2022\n * ```\n *\n * @param start - The start date (Date object or ISO string).\n * @param end - The end date (Date object or ISO string).\n * @param options - Options for an interval and steps.\n *\n * @returns An array of generated dates.\n */\nexport function interval(\n start: Date | string,\n end: Date | string,\n { interval = 'day', latest = false, steps = 1 }: IntervalOptions = {},\n): Date[] {\n const startDate = new Date(start);\n const endDate = new Date(end);\n\n assertAll([isDate(startDate), isDate(endDate)], 'Invalid date format. Use a valid Date object or ISO string.', {\n args: { end, start },\n type: TypeError,\n });\n\n const dateArray: Date[] = [];\n let currentDate = new Date(incrementDate(startDate, interval, 0));\n\n while (currentDate <= endDate) {\n dateArray.push(currentDate);\n currentDate = new Date(incrementDate(currentDate, interval, steps));\n }\n\n if (latest && dateArray.length > 0 && dateArray[dateArray.length - 1] < endDate) {\n dateArray.push(endDate);\n }\n\n return dateArray;\n}\n\nfunction incrementDate(date: Date, interval: IntervalType, steps: number): Date {\n const year = date.getFullYear();\n const month = date.getMonth();\n const day = date.getDate();\n\n switch (interval) {\n case 'day':\n return new Date(Date.UTC(year, month, day + steps));\n case 'month':\n return new Date(Date.UTC(year, month + steps, day));\n case 'monthEnd':\n return new Date(Date.UTC(year, month + steps + 1, 0));\n case 'monthStart':\n return new Date(Date.UTC(year, month + steps, 1));\n case 'week':\n return new Date(Date.UTC(year, month, day + 7 * steps));\n case 'year':\n return new Date(Date.UTC(year + steps, month, day));\n case 'yearEnd':\n return new Date(Date.UTC(year + steps, 11, 31));\n case 'yearStart':\n return new Date(Date.UTC(year + steps, 0, 1));\n }\n}\n"],"mappings":";;;AA4BA,SAAgB,EACd,GACA,GACA,EAAE,cAAW,OAAO,YAAS,IAAO,WAAQ,MAAuB,EAAE,EAC7D;CACR,IAAM,IAAY,IAAI,KAAK,EAAM,EAC3B,IAAU,IAAI,KAAK,EAAI;AAE7B,GAAU,CAAC,EAAO,EAAU,EAAE,EAAO,EAAQ,CAAC,EAAE,+DAA+D;EAC7G,MAAM;GAAE;GAAK;GAAO;EACpB,MAAM;EACP,CAAC;CAEF,IAAM,IAAoB,EAAE,EACxB,IAAc,IAAI,KAAK,EAAc,GAAW,GAAU,EAAE,CAAC;AAEjE,QAAO,KAAe,GAEpB,CADA,EAAU,KAAK,EAAY,EAC3B,IAAc,IAAI,KAAK,EAAc,GAAa,GAAU,EAAM,CAAC;AAOrE,QAJI,KAAU,EAAU,SAAS,KAAK,EAAU,EAAU,SAAS,KAAK,KACtE,EAAU,KAAK,EAAQ,EAGlB;;AAGT,SAAS,EAAc,GAAY,GAAwB,GAAqB;CAC9E,IAAM,IAAO,EAAK,aAAa,EACzB,IAAQ,EAAK,UAAU,EACvB,IAAM,EAAK,SAAS;AAE1B,SAAQ,GAAR;EACE,KAAK,MACH,QAAO,IAAI,KAAK,KAAK,IAAI,GAAM,GAAO,IAAM,EAAM,CAAC;EACrD,KAAK,QACH,QAAO,IAAI,KAAK,KAAK,IAAI,GAAM,IAAQ,GAAO,EAAI,CAAC;EACrD,KAAK,WACH,QAAO,IAAI,KAAK,KAAK,IAAI,GAAM,IAAQ,IAAQ,GAAG,EAAE,CAAC;EACvD,KAAK,aACH,QAAO,IAAI,KAAK,KAAK,IAAI,GAAM,IAAQ,GAAO,EAAE,CAAC;EACnD,KAAK,OACH,QAAO,IAAI,KAAK,KAAK,IAAI,GAAM,GAAO,IAAM,IAAI,EAAM,CAAC;EACzD,KAAK,OACH,QAAO,IAAI,KAAK,KAAK,IAAI,IAAO,GAAO,GAAO,EAAI,CAAC;EACrD,KAAK,UACH,QAAO,IAAI,KAAK,KAAK,IAAI,IAAO,GAAO,IAAI,GAAG,CAAC;EACjD,KAAK,YACH,QAAO,IAAI,KAAK,KAAK,IAAI,IAAO,GAAO,GAAG,EAAE,CAAC"}
|
package/dist/date/timeDiff.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
//# sourceMappingURL=timeDiff.cjs.map
|
|
1
|
+
var e=[`year`,`month`,`week`,`day`,`hour`,`minute`,`second`],t=1e3,n=60*t,r=60*n,i=24*r,a=7*i,o=30*i,s=[{ms:365*i,unit:`year`},{ms:o,unit:`month`},{ms:a,unit:`week`},{ms:i,unit:`day`},{ms:r,unit:`hour`},{ms:n,unit:`minute`},{ms:t,unit:`second`}];function c(t,n=new Date,r=e){let i=typeof t==`string`?Date.parse(t):t.getTime(),a=typeof n==`string`?Date.parse(n):n.getTime();if(Number.isNaN(i)||Number.isNaN(a))return;let o=s.filter(e=>r.includes(e.unit)),c=Math.abs(i-a),l=o[o.length-1]?.unit??`second`;if(c<=0)return{unit:l,value:0};let u=o.find(e=>c>=e.ms);return u?{unit:u.unit,value:Math.floor(c/u.ms)}:{unit:l,value:0}}exports.timeDiff=c;
|
|
2
|
+
//# sourceMappingURL=timeDiff.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timeDiff.cjs","sources":["../../src/date/timeDiff.ts"],"sourcesContent":["// #region TimeDiffTypes\nexport type TimeUnit = '
|
|
1
|
+
{"version":3,"file":"timeDiff.cjs","names":[],"sources":["../../src/date/timeDiff.ts"],"sourcesContent":["// #region TimeDiffTypes\nexport type TimeUnit = 'year' | 'month' | 'week' | 'day' | 'hour' | 'minute' | 'second';\nexport type TimeResult = { unit: TimeUnit; value: number };\n// #endregion TimeDiffTypes\n\nconst ALL_UNITS: TimeUnit[] = ['year', 'month', 'week', 'day', 'hour', 'minute', 'second'];\n\nconst MS_PER_SECOND = 1000;\nconst MS_PER_MINUTE = 60 * MS_PER_SECOND;\nconst MS_PER_HOUR = 60 * MS_PER_MINUTE;\nconst MS_PER_DAY = 24 * MS_PER_HOUR;\nconst MS_PER_WEEK = 7 * MS_PER_DAY;\nconst MS_PER_MONTH = 30 * MS_PER_DAY;\nconst MS_PER_YEAR = 365 * MS_PER_DAY;\n\nconst TIME_UNITS = [\n { ms: MS_PER_YEAR, unit: 'year' as const },\n { ms: MS_PER_MONTH, unit: 'month' as const },\n { ms: MS_PER_WEEK, unit: 'week' as const },\n { ms: MS_PER_DAY, unit: 'day' as const },\n { ms: MS_PER_HOUR, unit: 'hour' as const },\n { ms: MS_PER_MINUTE, unit: 'minute' as const },\n { ms: MS_PER_SECOND, unit: 'second' as const },\n];\n\n/**\n * Calculates the remaining time until a target date.\n *\n * @example\n * ```ts\n * timeDiff(new Date(Date.now() + 1000 * 60 * 60 * 24 * 5)); // { value: 5, unit: 'day' }\n * timeDiff(new Date(Date.now() - 1000 * 60 * 60 * 24 * 3), 'past'); // { value: 3, unit: 'day' }\n * timeDiff(new Date(Date.now() + 1000 * 60 * 60 * 24 * 31)); // { value: 1, unit: 'month' }\n * timeDiff(new Date(Date.now() + 1000 * 60 * 60 * 24 * 365)); // { value: 1, unit: 'year' }\n * ```\n *\n * @param a - The target date (Date object or ISO string).\n * @param b - The target date (Date object or ISO string).\n * @param allowedUnits - (optional) array of units to filter the result. If provided, only these units will be considered.\n *\n * @returns An object containing the remaining time and its unit ('DAY', 'HOUR', or 'MINUTE').\n */\nexport function timeDiff(\n a: Date | string,\n b: Date | string = new Date(),\n allowedUnits: TimeUnit[] = ALL_UNITS,\n): TimeResult | undefined {\n const aDate = typeof a === 'string' ? Date.parse(a) : a.getTime();\n const bDate = typeof b === 'string' ? Date.parse(b) : b.getTime();\n\n if (Number.isNaN(aDate) || Number.isNaN(bDate)) {\n return undefined;\n }\n\n const units = TIME_UNITS.filter((u) => allowedUnits.includes(u.unit));\n const diff = Math.abs(aDate - bDate);\n const smallestUnit = units[units.length - 1]?.unit ?? 'second';\n\n if (diff <= 0) {\n return { unit: smallestUnit, value: 0 };\n }\n\n // Find the largest unit that fits\n const bestUnit = units.find((u) => diff >= u.ms);\n\n if (bestUnit) {\n return { unit: bestUnit.unit, value: Math.floor(diff / bestUnit.ms) };\n }\n\n return { unit: smallestUnit, value: 0 };\n}\n"],"mappings":"AAKA,IAAM,EAAwB,CAAC,OAAQ,QAAS,OAAQ,MAAO,OAAQ,SAAU,SAAS,CAEpF,EAAgB,IAChB,EAAgB,GAAK,EACrB,EAAc,GAAK,EACnB,EAAa,GAAK,EAClB,EAAc,EAAI,EAClB,EAAe,GAAK,EAGpB,EAAa,CACjB,CAAE,GAHgB,IAAM,EAGL,KAAM,OAAiB,CAC1C,CAAE,GAAI,EAAc,KAAM,QAAkB,CAC5C,CAAE,GAAI,EAAa,KAAM,OAAiB,CAC1C,CAAE,GAAI,EAAY,KAAM,MAAgB,CACxC,CAAE,GAAI,EAAa,KAAM,OAAiB,CAC1C,CAAE,GAAI,EAAe,KAAM,SAAmB,CAC9C,CAAE,GAAI,EAAe,KAAM,SAAmB,CAC/C,CAmBD,SAAgB,EACd,EACA,EAAmB,IAAI,KACvB,EAA2B,EACH,CACxB,IAAM,EAAQ,OAAO,GAAM,SAAW,KAAK,MAAM,EAAE,CAAG,EAAE,SAAS,CAC3D,EAAQ,OAAO,GAAM,SAAW,KAAK,MAAM,EAAE,CAAG,EAAE,SAAS,CAEjE,GAAI,OAAO,MAAM,EAAM,EAAI,OAAO,MAAM,EAAM,CAC5C,OAGF,IAAM,EAAQ,EAAW,OAAQ,GAAM,EAAa,SAAS,EAAE,KAAK,CAAC,CAC/D,EAAO,KAAK,IAAI,EAAQ,EAAM,CAC9B,EAAe,EAAM,EAAM,OAAS,IAAI,MAAQ,SAEtD,GAAI,GAAQ,EACV,MAAO,CAAE,KAAM,EAAc,MAAO,EAAG,CAIzC,IAAM,EAAW,EAAM,KAAM,GAAM,GAAQ,EAAE,GAAG,CAMhD,OAJI,EACK,CAAE,KAAM,EAAS,KAAM,MAAO,KAAK,MAAM,EAAO,EAAS,GAAG,CAAE,CAGhE,CAAE,KAAM,EAAc,MAAO,EAAG"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export type TimeUnit = 'year' | 'month' | 'week' | 'day' | 'hour' | 'minute' | 'second';
|
|
2
|
+
export type TimeResult = {
|
|
3
|
+
unit: TimeUnit;
|
|
4
|
+
value: number;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Calculates the remaining time until a target date.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* timeDiff(new Date(Date.now() + 1000 * 60 * 60 * 24 * 5)); // { value: 5, unit: 'day' }
|
|
12
|
+
* timeDiff(new Date(Date.now() - 1000 * 60 * 60 * 24 * 3), 'past'); // { value: 3, unit: 'day' }
|
|
13
|
+
* timeDiff(new Date(Date.now() + 1000 * 60 * 60 * 24 * 31)); // { value: 1, unit: 'month' }
|
|
14
|
+
* timeDiff(new Date(Date.now() + 1000 * 60 * 60 * 24 * 365)); // { value: 1, unit: 'year' }
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* @param a - The target date (Date object or ISO string).
|
|
18
|
+
* @param b - The target date (Date object or ISO string).
|
|
19
|
+
* @param allowedUnits - (optional) array of units to filter the result. If provided, only these units will be considered.
|
|
20
|
+
*
|
|
21
|
+
* @returns An object containing the remaining time and its unit ('DAY', 'HOUR', or 'MINUTE').
|
|
22
|
+
*/
|
|
23
|
+
export declare function timeDiff(a: Date | string, b?: Date | string, allowedUnits?: TimeUnit[]): TimeResult | undefined;
|
|
24
|
+
//# sourceMappingURL=timeDiff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeDiff.d.ts","sourceRoot":"","sources":["../../src/date/timeDiff.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;AACxF,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAuB3D;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,QAAQ,CACtB,CAAC,EAAE,IAAI,GAAG,MAAM,EAChB,CAAC,GAAE,IAAI,GAAG,MAAmB,EAC7B,YAAY,GAAE,QAAQ,EAAc,GACnC,UAAU,GAAG,SAAS,CAwBxB"}
|