@pawells/typescript-common 2.0.0 → 2.1.6
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 +370 -223
- package/{build → dist}/array/array-chunk.d.ts +1 -1
- package/{build → dist}/array/array-chunk.js +2 -3
- package/{build → dist}/array/array-compact.d.ts +1 -1
- package/{build → dist}/array/array-compact.js +1 -2
- package/{build → dist}/array/array-contains.d.ts +1 -1
- package/{build → dist}/array/array-contains.js +2 -3
- package/{build → dist}/array/array-count-by.d.ts +1 -1
- package/{build → dist}/array/array-count-by.js +2 -3
- package/{build → dist}/array/array-difference.d.ts +12 -5
- package/dist/array/array-difference.d.ts.map +1 -0
- package/dist/array/array-difference.js +70 -0
- package/dist/array/array-element.js +1 -0
- package/{build → dist}/array/array-filter.d.ts +1 -1
- package/{build → dist}/array/array-filter.js +1 -2
- package/{build → dist}/array/array-flatten.d.ts +2 -2
- package/{build → dist}/array/array-flatten.d.ts.map +1 -1
- package/{build → dist}/array/array-flatten.js +1 -2
- package/{build → dist}/array/array-group-by.d.ts +1 -1
- package/{build → dist}/array/array-group-by.d.ts.map +1 -1
- package/{build → dist}/array/array-group-by.js +10 -9
- package/{build → dist}/array/array-intersection.d.ts +12 -5
- package/dist/array/array-intersection.d.ts.map +1 -0
- package/dist/array/array-intersection.js +79 -0
- package/{build → dist}/array/array-partition.d.ts +1 -1
- package/{build → dist}/array/array-partition.js +2 -3
- package/{build → dist}/array/array-range.d.ts +1 -1
- package/{build → dist}/array/array-range.js +1 -2
- package/{build → dist}/array/array-sample.d.ts +2 -2
- package/{build → dist}/array/array-sample.js +3 -5
- package/{build → dist}/array/array-shuffle.d.ts +1 -1
- package/{build → dist}/array/array-shuffle.js +1 -2
- package/{build → dist}/array/array-sort-by.d.ts +1 -1
- package/{build → dist}/array/array-sort-by.js +1 -2
- package/{build → dist}/array/array-zip.d.ts +1 -1
- package/{build → dist}/array/array-zip.js +1 -2
- package/{build → dist}/array/assert.d.ts +5 -5
- package/{build → dist}/array/assert.d.ts.map +1 -1
- package/{build → dist}/array/assert.js +13 -14
- package/{build → dist}/array/index.d.ts +1 -0
- package/{build → dist}/array/index.d.ts.map +1 -1
- package/{build → dist}/array/index.js +1 -1
- package/dist/array/iterators.d.ts +40 -0
- package/dist/array/iterators.d.ts.map +1 -0
- package/dist/array/iterators.js +54 -0
- package/{build → dist}/array/types.d.ts +20 -2
- package/{build → dist}/array/types.d.ts.map +1 -1
- package/dist/array/types.js +1 -0
- package/{build → dist}/array/unique.d.ts +1 -1
- package/{build → dist}/array/unique.js +1 -2
- package/dist/asserts/errors.d.ts.map +1 -0
- package/{build → dist}/asserts/errors.js +5 -3
- package/{build → dist}/asserts/generic.d.ts +23 -3
- package/dist/asserts/generic.d.ts.map +1 -0
- package/{build → dist}/asserts/generic.js +39 -7
- package/dist/asserts/index.d.ts +47 -0
- package/dist/asserts/index.d.ts.map +1 -0
- package/dist/asserts/index.js +46 -0
- package/{build → dist}/asserts/internal-utils.d.ts.map +1 -1
- package/{build → dist}/asserts/internal-utils.js +0 -1
- package/{build → dist}/asserts/types.d.ts +56 -17
- package/dist/asserts/types.d.ts.map +1 -0
- package/dist/asserts/types.js +1 -0
- package/{build → dist}/asserts/utils.d.ts +5 -21
- package/dist/asserts/utils.d.ts.map +1 -0
- package/{build → dist}/asserts/utils.js +14 -39
- package/{build → dist}/boolean/assert.d.ts +1 -2
- package/{build → dist}/boolean/assert.d.ts.map +1 -1
- package/{build → dist}/boolean/assert.js +1 -3
- package/dist/boolean/index.d.ts +13 -0
- package/dist/boolean/index.d.ts.map +1 -0
- package/dist/boolean/index.js +12 -0
- package/{build → dist}/enum/enum-entries.d.ts +1 -1
- package/dist/enum/enum-entries.d.ts.map +1 -0
- package/{build → dist}/enum/enum-entries.js +0 -1
- package/{build → dist}/enum/enum-key-by-value.d.ts +1 -1
- package/dist/enum/enum-key-by-value.d.ts.map +1 -0
- package/{build → dist}/enum/enum-key-by-value.js +0 -1
- package/{build → dist}/enum/enum-keys.js +0 -1
- package/{build → dist}/enum/enum-safe-value.d.ts +1 -1
- package/dist/enum/enum-safe-value.d.ts.map +1 -0
- package/{build → dist}/enum/enum-safe-value.js +0 -1
- package/{build → dist}/enum/enum-values.js +0 -1
- package/{build → dist}/enum/index.d.ts +1 -1
- package/dist/enum/index.d.ts.map +1 -0
- package/{build → dist}/enum/index.js +1 -2
- package/dist/enum/types.js +1 -0
- package/{build → dist}/enum/validate-enum-value.d.ts +1 -1
- package/dist/enum/validate-enum-value.d.ts.map +1 -0
- package/{build → dist}/enum/validate-enum-value.js +0 -1
- package/{build → dist}/function/compose.d.ts +6 -0
- package/dist/function/compose.d.ts.map +1 -0
- package/{build → dist}/function/compose.js +0 -1
- package/{build → dist}/function/debounce.d.ts +6 -0
- package/dist/function/debounce.d.ts.map +1 -0
- package/{build → dist}/function/debounce.js +6 -1
- package/{build → dist}/function/index.js +0 -1
- package/dist/function/memoize.d.ts +56 -0
- package/dist/function/memoize.d.ts.map +1 -0
- package/dist/function/memoize.js +72 -0
- package/{build → dist}/function/once.d.ts.map +1 -1
- package/{build → dist}/function/once.js +1 -1
- package/{build → dist}/function/sleep.js +0 -1
- package/{build → dist}/function/throttle.d.ts +7 -0
- package/dist/function/throttle.d.ts.map +1 -0
- package/{build → dist}/function/throttle.js +7 -1
- package/dist/function/types.d.ts +18 -0
- package/dist/function/types.d.ts.map +1 -0
- package/dist/function/types.js +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/json.sanitization.d.ts +14 -0
- package/dist/json.sanitization.d.ts.map +1 -0
- package/dist/json.sanitization.js +37 -0
- package/{build → dist}/lru-cache.d.ts +19 -0
- package/dist/lru-cache.d.ts.map +1 -0
- package/{build → dist}/lru-cache.js +24 -2
- package/{build → dist}/number/assert.js +0 -1
- package/dist/number/index.d.ts +13 -0
- package/dist/number/index.d.ts.map +1 -0
- package/dist/number/index.js +12 -0
- package/{build → dist}/object/assert-object.d.ts +5 -1
- package/{build → dist}/object/assert-object.d.ts.map +1 -1
- package/{build → dist}/object/assert-object.js +4 -1
- package/{build → dist}/object/assert.d.ts +1 -1
- package/dist/object/assert.d.ts.map +1 -0
- package/{build → dist}/object/assert.js +7 -29
- package/{build → dist}/object/clone.d.ts +6 -0
- package/dist/object/clone.d.ts.map +1 -0
- package/{build → dist}/object/clone.js +14 -5
- package/{build → dist}/object/equals.d.ts.map +1 -1
- package/{build → dist}/object/equals.js +3 -7
- package/dist/object/filter-cached.d.ts +26 -0
- package/{build → dist}/object/filter-cached.d.ts.map +1 -1
- package/{build → dist}/object/filter-cached.js +27 -6
- package/{build → dist}/object/filter.d.ts.map +1 -1
- package/{build → dist}/object/filter.js +22 -6
- package/{build → dist}/object/has-circular-reference.d.ts.map +1 -1
- package/{build → dist}/object/has-circular-reference.js +4 -2
- package/{build → dist}/object/hash.d.ts +4 -0
- package/dist/object/hash.d.ts.map +1 -0
- package/{build → dist}/object/hash.js +20 -7
- package/{build → dist}/object/index.d.ts +2 -2
- package/{build → dist}/object/index.d.ts.map +1 -1
- package/{build → dist}/object/index.js +1 -2
- package/{build → dist}/object/json-circular-replacer.d.ts.map +1 -1
- package/{build → dist}/object/json-circular-replacer.js +0 -1
- package/{build → dist}/object/key-value-pairs.js +0 -1
- package/dist/object/map-cached.d.ts +31 -0
- package/dist/object/map-cached.d.ts.map +1 -0
- package/{build → dist}/object/map-cached.js +34 -6
- package/{build → dist}/object/map.js +0 -1
- package/{build → dist}/object/merge.d.ts.map +1 -1
- package/{build → dist}/object/merge.js +7 -7
- package/{build → dist}/object/object-diff.d.ts +2 -2
- package/{build → dist}/object/object-diff.d.ts.map +1 -1
- package/{build → dist}/object/object-diff.js +11 -5
- package/{build → dist}/object/object-flatten.d.ts +1 -1
- package/{build → dist}/object/object-flatten.d.ts.map +1 -1
- package/{build → dist}/object/object-flatten.js +10 -4
- package/{build → dist}/object/object-invert.js +0 -1
- package/{build → dist}/object/omit.js +0 -1
- package/{build → dist}/object/pick.js +0 -1
- package/{build → dist}/object/property-paths.d.ts +2 -0
- package/{build → dist}/object/property-paths.d.ts.map +1 -1
- package/{build → dist}/object/property-paths.js +8 -7
- package/dist/object/security-utils.d.ts +193 -0
- package/dist/object/security-utils.d.ts.map +1 -0
- package/dist/object/security-utils.js +304 -0
- package/{build → dist}/object/sort-keys.d.ts +15 -1
- package/dist/object/sort-keys.d.ts.map +1 -0
- package/dist/object/sort-keys.js +73 -0
- package/{build → dist}/object/types.d.ts +0 -61
- package/dist/object/types.d.ts.map +1 -0
- package/dist/object/types.js +1 -0
- package/{build → dist}/string/assert.d.ts +24 -0
- package/dist/string/assert.d.ts.map +1 -0
- package/{build → dist}/string/assert.js +30 -1
- package/{build → dist}/string/case-conversion.js +0 -1
- package/{build → dist}/string/comparison.d.ts.map +1 -1
- package/{build → dist}/string/comparison.js +3 -1
- package/{build → dist}/string/formatting.d.ts.map +1 -1
- package/{build → dist}/string/formatting.js +5 -3
- package/{build → dist}/string/index.js +0 -1
- package/{build → dist}/string/transformation.js +0 -1
- package/dist/string/types.d.ts +118 -0
- package/dist/string/types.d.ts.map +1 -0
- package/dist/string/types.js +1 -0
- package/{build → dist}/string/validation.js +0 -1
- package/dist/time/elapsed-time/constants.d.ts +36 -0
- package/{build → dist}/time/elapsed-time/constants.d.ts.map +1 -1
- package/{build → dist}/time/elapsed-time/constants.js +32 -3
- package/{build → dist}/time/elapsed-time/elapsed-time.d.ts +74 -22
- package/dist/time/elapsed-time/elapsed-time.d.ts.map +1 -0
- package/{build → dist}/time/elapsed-time/elapsed-time.js +183 -89
- package/dist/time/elapsed-time/types.d.ts +336 -0
- package/dist/time/elapsed-time/types.d.ts.map +1 -0
- package/dist/time/elapsed-time/types.js +1 -0
- package/{build → dist}/time/elapsed-time/utils.d.ts +1 -1
- package/dist/time/elapsed-time/utils.d.ts.map +1 -0
- package/{build → dist}/time/elapsed-time/utils.js +0 -1
- package/dist/time/index.d.ts +14 -0
- package/dist/time/index.d.ts.map +1 -0
- package/{build → dist}/time/index.js +0 -5
- package/{build → dist}/time/stopwatch/entry.d.ts +1 -1
- package/dist/time/stopwatch/entry.d.ts.map +1 -0
- package/{build → dist}/time/stopwatch/entry.js +0 -1
- package/{build → dist}/time/stopwatch/stopwatch.d.ts +27 -3
- package/dist/time/stopwatch/stopwatch.d.ts.map +1 -0
- package/{build → dist}/time/stopwatch/stopwatch.js +32 -4
- package/dist/zod-util.d.ts +145 -0
- package/dist/zod-util.d.ts.map +1 -0
- package/dist/zod-util.js +126 -0
- package/package.json +51 -67
- package/LICENSE +0 -21
- package/build/array/array-chunk.js.map +0 -1
- package/build/array/array-compact.js.map +0 -1
- package/build/array/array-contains.js.map +0 -1
- package/build/array/array-count-by.js.map +0 -1
- package/build/array/array-difference.d.ts.map +0 -1
- package/build/array/array-difference.js +0 -51
- package/build/array/array-difference.js.map +0 -1
- package/build/array/array-element.js +0 -2
- package/build/array/array-element.js.map +0 -1
- package/build/array/array-filter.js.map +0 -1
- package/build/array/array-flatten.js.map +0 -1
- package/build/array/array-group-by.js.map +0 -1
- package/build/array/array-intersection.d.ts.map +0 -1
- package/build/array/array-intersection.js +0 -57
- package/build/array/array-intersection.js.map +0 -1
- package/build/array/array-partition.js.map +0 -1
- package/build/array/array-range.js.map +0 -1
- package/build/array/array-sample.js.map +0 -1
- package/build/array/array-shuffle.js.map +0 -1
- package/build/array/array-sort-by.js.map +0 -1
- package/build/array/array-zip.js.map +0 -1
- package/build/array/assert.js.map +0 -1
- package/build/array/index.js.map +0 -1
- package/build/array/types.js +0 -2
- package/build/array/types.js.map +0 -1
- package/build/array/unique.js.map +0 -1
- package/build/asserts/errors.d.ts.map +0 -1
- package/build/asserts/errors.js.map +0 -1
- package/build/asserts/generic.d.ts.map +0 -1
- package/build/asserts/generic.js.map +0 -1
- package/build/asserts/index.d.ts +0 -41
- package/build/asserts/index.d.ts.map +0 -1
- package/build/asserts/index.js +0 -41
- package/build/asserts/index.js.map +0 -1
- package/build/asserts/internal-utils.js.map +0 -1
- package/build/asserts/types.d.ts.map +0 -1
- package/build/asserts/types.js +0 -2
- package/build/asserts/types.js.map +0 -1
- package/build/asserts/utils.d.ts.map +0 -1
- package/build/asserts/utils.js.map +0 -1
- package/build/boolean/assert.js.map +0 -1
- package/build/boolean/index.d.ts +0 -9
- package/build/boolean/index.d.ts.map +0 -1
- package/build/boolean/index.js +0 -9
- package/build/boolean/index.js.map +0 -1
- package/build/enum/enum-entries.d.ts.map +0 -1
- package/build/enum/enum-entries.js.map +0 -1
- package/build/enum/enum-key-by-value.d.ts.map +0 -1
- package/build/enum/enum-key-by-value.js.map +0 -1
- package/build/enum/enum-keys.js.map +0 -1
- package/build/enum/enum-safe-value.d.ts.map +0 -1
- package/build/enum/enum-safe-value.js.map +0 -1
- package/build/enum/enum-values.js.map +0 -1
- package/build/enum/index.d.ts.map +0 -1
- package/build/enum/index.js.map +0 -1
- package/build/enum/types.js +0 -2
- package/build/enum/types.js.map +0 -1
- package/build/enum/validate-enum-value.d.ts.map +0 -1
- package/build/enum/validate-enum-value.js.map +0 -1
- package/build/function/compose.d.ts.map +0 -1
- package/build/function/compose.js.map +0 -1
- package/build/function/debounce.d.ts.map +0 -1
- package/build/function/debounce.js.map +0 -1
- package/build/function/index.js.map +0 -1
- package/build/function/memoize.d.ts +0 -30
- package/build/function/memoize.d.ts.map +0 -1
- package/build/function/memoize.js +0 -44
- package/build/function/memoize.js.map +0 -1
- package/build/function/once.js.map +0 -1
- package/build/function/sleep.js.map +0 -1
- package/build/function/throttle.d.ts.map +0 -1
- package/build/function/throttle.js.map +0 -1
- package/build/function/types.d.ts +0 -5
- package/build/function/types.d.ts.map +0 -1
- package/build/function/types.js +0 -2
- package/build/function/types.js.map +0 -1
- package/build/index.d.ts +0 -38
- package/build/index.d.ts.map +0 -1
- package/build/index.js +0 -64
- package/build/index.js.map +0 -1
- package/build/lru-cache.d.ts.map +0 -1
- package/build/lru-cache.js.map +0 -1
- package/build/number/assert.js.map +0 -1
- package/build/number/index.d.ts +0 -9
- package/build/number/index.d.ts.map +0 -1
- package/build/number/index.js +0 -9
- package/build/number/index.js.map +0 -1
- package/build/object/assert-object.js.map +0 -1
- package/build/object/assert.d.ts.map +0 -1
- package/build/object/assert.js.map +0 -1
- package/build/object/clone.d.ts.map +0 -1
- package/build/object/clone.js.map +0 -1
- package/build/object/equals.js.map +0 -1
- package/build/object/filter-cached.d.ts +0 -21
- package/build/object/filter-cached.js.map +0 -1
- package/build/object/filter.js.map +0 -1
- package/build/object/has-circular-reference.js.map +0 -1
- package/build/object/hash.d.ts.map +0 -1
- package/build/object/hash.js.map +0 -1
- package/build/object/index.js.map +0 -1
- package/build/object/json-circular-replacer.js.map +0 -1
- package/build/object/key-value-pairs.js.map +0 -1
- package/build/object/map-cached.d.ts +0 -20
- package/build/object/map-cached.d.ts.map +0 -1
- package/build/object/map-cached.js.map +0 -1
- package/build/object/map.js.map +0 -1
- package/build/object/merge.js.map +0 -1
- package/build/object/object-diff.js.map +0 -1
- package/build/object/object-flatten.js.map +0 -1
- package/build/object/object-invert.js.map +0 -1
- package/build/object/omit.js.map +0 -1
- package/build/object/pick.js.map +0 -1
- package/build/object/property-paths.js.map +0 -1
- package/build/object/security-utils.d.ts +0 -59
- package/build/object/security-utils.d.ts.map +0 -1
- package/build/object/security-utils.js +0 -161
- package/build/object/security-utils.js.map +0 -1
- package/build/object/sort-keys.d.ts.map +0 -1
- package/build/object/sort-keys.js +0 -52
- package/build/object/sort-keys.js.map +0 -1
- package/build/object/types.d.ts.map +0 -1
- package/build/object/types.js +0 -6
- package/build/object/types.js.map +0 -1
- package/build/string/assert.d.ts.map +0 -1
- package/build/string/assert.js.map +0 -1
- package/build/string/case-conversion.js.map +0 -1
- package/build/string/comparison.js.map +0 -1
- package/build/string/formatting.js.map +0 -1
- package/build/string/index.js.map +0 -1
- package/build/string/transformation.js.map +0 -1
- package/build/string/types.d.ts +0 -44
- package/build/string/types.d.ts.map +0 -1
- package/build/string/types.js +0 -2
- package/build/string/types.js.map +0 -1
- package/build/string/validation.js.map +0 -1
- package/build/time/elapsed-time/constants.d.ts +0 -10
- package/build/time/elapsed-time/constants.js.map +0 -1
- package/build/time/elapsed-time/elapsed-time.d.ts.map +0 -1
- package/build/time/elapsed-time/elapsed-time.js.map +0 -1
- package/build/time/elapsed-time/types.d.ts +0 -150
- package/build/time/elapsed-time/types.d.ts.map +0 -1
- package/build/time/elapsed-time/types.js +0 -2
- package/build/time/elapsed-time/types.js.map +0 -1
- package/build/time/elapsed-time/utils.d.ts.map +0 -1
- package/build/time/elapsed-time/utils.js.map +0 -1
- package/build/time/index.d.ts +0 -18
- package/build/time/index.d.ts.map +0 -1
- package/build/time/index.js.map +0 -1
- package/build/time/stopwatch/entry-types.d.ts +0 -13
- package/build/time/stopwatch/entry-types.d.ts.map +0 -1
- package/build/time/stopwatch/entry-types.js +0 -2
- package/build/time/stopwatch/entry-types.js.map +0 -1
- package/build/time/stopwatch/entry.d.ts.map +0 -1
- package/build/time/stopwatch/entry.js.map +0 -1
- package/build/time/stopwatch/stopwatch.d.ts.map +0 -1
- package/build/time/stopwatch/stopwatch.js.map +0 -1
- /package/{build → dist}/array/array-chunk.d.ts.map +0 -0
- /package/{build → dist}/array/array-compact.d.ts.map +0 -0
- /package/{build → dist}/array/array-contains.d.ts.map +0 -0
- /package/{build → dist}/array/array-count-by.d.ts.map +0 -0
- /package/{build → dist}/array/array-element.d.ts +0 -0
- /package/{build → dist}/array/array-element.d.ts.map +0 -0
- /package/{build → dist}/array/array-filter.d.ts.map +0 -0
- /package/{build → dist}/array/array-partition.d.ts.map +0 -0
- /package/{build → dist}/array/array-range.d.ts.map +0 -0
- /package/{build → dist}/array/array-sample.d.ts.map +0 -0
- /package/{build → dist}/array/array-shuffle.d.ts.map +0 -0
- /package/{build → dist}/array/array-sort-by.d.ts.map +0 -0
- /package/{build → dist}/array/array-zip.d.ts.map +0 -0
- /package/{build → dist}/array/unique.d.ts.map +0 -0
- /package/{build → dist}/asserts/errors.d.ts +0 -0
- /package/{build → dist}/asserts/internal-utils.d.ts +0 -0
- /package/{build → dist}/enum/enum-keys.d.ts +0 -0
- /package/{build → dist}/enum/enum-keys.d.ts.map +0 -0
- /package/{build → dist}/enum/enum-values.d.ts +0 -0
- /package/{build → dist}/enum/enum-values.d.ts.map +0 -0
- /package/{build → dist}/enum/types.d.ts +0 -0
- /package/{build → dist}/enum/types.d.ts.map +0 -0
- /package/{build → dist}/function/index.d.ts +0 -0
- /package/{build → dist}/function/index.d.ts.map +0 -0
- /package/{build → dist}/function/once.d.ts +0 -0
- /package/{build → dist}/function/sleep.d.ts +0 -0
- /package/{build → dist}/function/sleep.d.ts.map +0 -0
- /package/{build → dist}/number/assert.d.ts +0 -0
- /package/{build → dist}/number/assert.d.ts.map +0 -0
- /package/{build → dist}/object/equals.d.ts +0 -0
- /package/{build → dist}/object/filter.d.ts +0 -0
- /package/{build → dist}/object/has-circular-reference.d.ts +0 -0
- /package/{build → dist}/object/json-circular-replacer.d.ts +0 -0
- /package/{build → dist}/object/key-value-pairs.d.ts +0 -0
- /package/{build → dist}/object/key-value-pairs.d.ts.map +0 -0
- /package/{build → dist}/object/map.d.ts +0 -0
- /package/{build → dist}/object/map.d.ts.map +0 -0
- /package/{build → dist}/object/merge.d.ts +0 -0
- /package/{build → dist}/object/object-invert.d.ts +0 -0
- /package/{build → dist}/object/object-invert.d.ts.map +0 -0
- /package/{build → dist}/object/omit.d.ts +0 -0
- /package/{build → dist}/object/omit.d.ts.map +0 -0
- /package/{build → dist}/object/pick.d.ts +0 -0
- /package/{build → dist}/object/pick.d.ts.map +0 -0
- /package/{build → dist}/string/case-conversion.d.ts +0 -0
- /package/{build → dist}/string/case-conversion.d.ts.map +0 -0
- /package/{build → dist}/string/comparison.d.ts +0 -0
- /package/{build → dist}/string/formatting.d.ts +0 -0
- /package/{build → dist}/string/index.d.ts +0 -0
- /package/{build → dist}/string/index.d.ts.map +0 -0
- /package/{build → dist}/string/transformation.d.ts +0 -0
- /package/{build → dist}/string/transformation.d.ts.map +0 -0
- /package/{build → dist}/string/validation.d.ts +0 -0
- /package/{build → dist}/string/validation.d.ts.map +0 -0
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents a single time unit with its numeric value.
|
|
3
|
+
* Used internally for formatting operations to map unit names to their calculated values.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```typescript
|
|
7
|
+
* const hour: ITimeUnitValue = { unit: 'hour', value: 2 };
|
|
8
|
+
* const minutes: ITimeUnitValue = { unit: 'minute', value: 30 };
|
|
9
|
+
* ```
|
|
10
|
+
*/
|
|
11
|
+
export interface ITimeUnitValue {
|
|
12
|
+
/** The time unit type (week, day, hour, minute, second, millisecond) */
|
|
13
|
+
unit: TTimeUnit;
|
|
14
|
+
/** The numeric value for this time unit */
|
|
15
|
+
value: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Complete formatting options for elapsed time output.
|
|
19
|
+
* Controls how time values are displayed, including negative value handling, unit visibility, and label customization.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* // Show at most 2 units, hide zero-valued units, wrap negative values in parentheses
|
|
24
|
+
* const options: ITimeElapsedFormatOptions = {
|
|
25
|
+
* maxUnits: 2,
|
|
26
|
+
* showZeroValues: false,
|
|
27
|
+
* negativeValueFormat: 'Parenthesis'
|
|
28
|
+
* };
|
|
29
|
+
*
|
|
30
|
+
* const elapsed = new ElapsedTime(-3661000);
|
|
31
|
+
* elapsed.Format('medium', options); // "(1 hour 1 min)"
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export interface ITimeElapsedFormatOptions {
|
|
35
|
+
/** How to format negative values: 'Empty' (no indicator), 'NegativeSign' (prefix with -), 'Parenthesis' (wrap in parentheses), or 'Brackets' (wrap in brackets) */
|
|
36
|
+
negativeValueFormat?: 'Empty' | 'NegativeSign' | 'Parenthesis' | 'Brackets' | undefined;
|
|
37
|
+
/** Show zero value units in formatter output (default: false) */
|
|
38
|
+
showZeroValues?: boolean | undefined;
|
|
39
|
+
/** Maximum number of units to include in formatter output (default: unlimited) */
|
|
40
|
+
maxUnits?: number | undefined;
|
|
41
|
+
/** Custom unit labels for formatter */
|
|
42
|
+
unitLabels?: {
|
|
43
|
+
week?: string | ((_value: number) => string) | undefined;
|
|
44
|
+
day?: string | ((_value: number) => string) | undefined;
|
|
45
|
+
hour?: string | ((_value: number) => string) | undefined;
|
|
46
|
+
minute?: string | ((_value: number) => string) | undefined;
|
|
47
|
+
second?: string | ((_value: number) => string) | undefined;
|
|
48
|
+
millisecond?: string | ((_value: number) => string) | undefined;
|
|
49
|
+
} | undefined;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Predefined time format styles for elapsed time display.
|
|
53
|
+
*
|
|
54
|
+
* - `concise` - Ultra-compact single-letter units: "1h 30m 45s"
|
|
55
|
+
* - `short` - Abbreviated readable units: "1hr 30min 45sec"
|
|
56
|
+
* - `medium` - Balanced readability: "1 hour 30 min 45 sec"
|
|
57
|
+
* - `long` - Full English words with pluralization: "1 hour 30 minutes 45 seconds"
|
|
58
|
+
* - `mostSignificant` - Only the 2 most significant units: "1 hour 30 min"
|
|
59
|
+
* - `time` - Clock format with hours and minutes: "1:30"
|
|
60
|
+
* - `timeWithSeconds` - Extended clock format: "1:30:45"
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* ```typescript
|
|
64
|
+
* const elapsed = new ElapsedTime(5425000); // 1h 30m 25s
|
|
65
|
+
*
|
|
66
|
+
* elapsed.Format('concise'); // "1h 30m 25s"
|
|
67
|
+
* elapsed.Format('short'); // "1hr 30min 25sec"
|
|
68
|
+
* elapsed.Format('medium'); // "1 hour 30 min 25 sec"
|
|
69
|
+
* elapsed.Format('long'); // "1 hour 30 minutes 25 seconds"
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
export type TTimeElapsedFormats = 'concise' | 'short' | 'medium' | 'long' | 'mostSignificant' | 'time' | 'timeWithSeconds';
|
|
73
|
+
/**
|
|
74
|
+
* Available time unit types for elapsed time calculations and formatting.
|
|
75
|
+
* Each unit represents a standard time component used in duration decomposition.
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* ```typescript
|
|
79
|
+
* const units: TTimeUnit[] = ['week', 'day', 'hour', 'minute', 'second', 'millisecond'];
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
export type TTimeUnit = 'week' | 'day' | 'hour' | 'minute' | 'second' | 'millisecond';
|
|
83
|
+
/**
|
|
84
|
+
* Static string label for a time unit.
|
|
85
|
+
* Used for format styles that use fixed labels regardless of value (e.g., "h", "min", "sec").
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* ```typescript
|
|
89
|
+
* const label: TUnitLabelString = "h";
|
|
90
|
+
* const label2: TUnitLabelString = "hour";
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
export type TUnitLabelString = string;
|
|
94
|
+
/**
|
|
95
|
+
* Function that generates a time unit label with support for pluralization.
|
|
96
|
+
* Accepts the numeric value and returns the appropriate label string.
|
|
97
|
+
*
|
|
98
|
+
* @param value - The numeric value to determine singular/plural form
|
|
99
|
+
* @returns The appropriate label string (e.g., "hour" or "hours")
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* ```typescript
|
|
103
|
+
* const pluralize: TUnitLabelFunction = (value: number) =>
|
|
104
|
+
* value === 1 ? 'hour' : 'hours';
|
|
105
|
+
*
|
|
106
|
+
* console.log(pluralize(1)); // "hour"
|
|
107
|
+
* console.log(pluralize(2)); // "hours"
|
|
108
|
+
* ```
|
|
109
|
+
*/
|
|
110
|
+
export type TUnitLabelFunction = (value: number) => string;
|
|
111
|
+
/**
|
|
112
|
+
* Unit label as either a static string or a function with pluralization support.
|
|
113
|
+
* Allows flexible label definitions for different formatting styles.
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* ```typescript
|
|
117
|
+
* // Static string label
|
|
118
|
+
* const label1: TUnitLabel = "h";
|
|
119
|
+
*
|
|
120
|
+
* // Function-based label with pluralization
|
|
121
|
+
* const label2: TUnitLabel = (value: number) => value === 1 ? 'hour' : 'hours';
|
|
122
|
+
* ```
|
|
123
|
+
*/
|
|
124
|
+
export type TUnitLabel = TUnitLabelString | TUnitLabelFunction;
|
|
125
|
+
/**
|
|
126
|
+
* Mapping of time units to their corresponding labels.
|
|
127
|
+
* Base interface that all unit label configurations implement.
|
|
128
|
+
*
|
|
129
|
+
* @example
|
|
130
|
+
* ```typescript
|
|
131
|
+
* const labels: IUnitLabelMap = {
|
|
132
|
+
* millisecond: 'ms',
|
|
133
|
+
* second: 's',
|
|
134
|
+
* minute: 'm',
|
|
135
|
+
* hour: 'h',
|
|
136
|
+
* day: 'd',
|
|
137
|
+
* week: 'w'
|
|
138
|
+
* };
|
|
139
|
+
* ```
|
|
140
|
+
*/
|
|
141
|
+
export interface IUnitLabelMap {
|
|
142
|
+
/** Label for milliseconds */
|
|
143
|
+
millisecond: TUnitLabel;
|
|
144
|
+
/** Label for seconds */
|
|
145
|
+
second: TUnitLabel;
|
|
146
|
+
/** Label for minutes */
|
|
147
|
+
minute: TUnitLabel;
|
|
148
|
+
/** Label for hours */
|
|
149
|
+
hour: TUnitLabel;
|
|
150
|
+
/** Label for days */
|
|
151
|
+
day: TUnitLabel;
|
|
152
|
+
/** Label for weeks */
|
|
153
|
+
week: TUnitLabel;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Concise format style with single-character unit labels.
|
|
157
|
+
* Used for ultra-compact time representations (e.g., "1h 30m 45s").
|
|
158
|
+
*
|
|
159
|
+
* @example
|
|
160
|
+
* ```typescript
|
|
161
|
+
* const labels: IConciseUnitLabels = {
|
|
162
|
+
* style: 'concise',
|
|
163
|
+
* millisecond: 'ms',
|
|
164
|
+
* second: 's',
|
|
165
|
+
* minute: 'm',
|
|
166
|
+
* hour: 'h',
|
|
167
|
+
* day: 'd',
|
|
168
|
+
* week: 'w'
|
|
169
|
+
* };
|
|
170
|
+
* ```
|
|
171
|
+
*/
|
|
172
|
+
export interface IConciseUnitLabels extends IUnitLabelMap {
|
|
173
|
+
readonly style?: 'concise';
|
|
174
|
+
millisecond: 'ms';
|
|
175
|
+
second: 's';
|
|
176
|
+
minute: 'm';
|
|
177
|
+
hour: 'h';
|
|
178
|
+
day: 'd';
|
|
179
|
+
week: 'w';
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Long format style with full English words and proper pluralization support.
|
|
183
|
+
* Used for readable time representations (e.g., "1 hour 30 minutes 45 seconds").
|
|
184
|
+
* All labels are functions that handle singular/plural forms based on the value.
|
|
185
|
+
*
|
|
186
|
+
* @example
|
|
187
|
+
* ```typescript
|
|
188
|
+
* const labels: ILongUnitLabels = {
|
|
189
|
+
* style: 'long',
|
|
190
|
+
* hour: (value) => value === 1 ? 'hour' : 'hours',
|
|
191
|
+
* minute: (value) => value === 1 ? 'minute' : 'minutes'
|
|
192
|
+
* };
|
|
193
|
+
*
|
|
194
|
+
* labels.hour(1); // "hour"
|
|
195
|
+
* labels.hour(2); // "hours"
|
|
196
|
+
* ```
|
|
197
|
+
*/
|
|
198
|
+
export interface ILongUnitLabels extends IUnitLabelMap {
|
|
199
|
+
readonly style?: 'long';
|
|
200
|
+
millisecond: TUnitLabelFunction;
|
|
201
|
+
second: TUnitLabelFunction;
|
|
202
|
+
minute: TUnitLabelFunction;
|
|
203
|
+
hour: TUnitLabelFunction;
|
|
204
|
+
day: TUnitLabelFunction;
|
|
205
|
+
week: TUnitLabelFunction;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Medium format style with abbreviated but readable unit labels.
|
|
209
|
+
* Provides a balanced middle ground between concise and long formats.
|
|
210
|
+
* Used for moderately compact time representations (e.g., "1 hour 30 min 45 sec").
|
|
211
|
+
*
|
|
212
|
+
* @example
|
|
213
|
+
* ```typescript
|
|
214
|
+
* const labels: IMediumUnitLabels = {
|
|
215
|
+
* style: 'medium',
|
|
216
|
+
* millisecond: 'ms',
|
|
217
|
+
* second: 'sec',
|
|
218
|
+
* minute: 'min',
|
|
219
|
+
* hour: 'hour',
|
|
220
|
+
* day: 'day',
|
|
221
|
+
* week: 'week'
|
|
222
|
+
* };
|
|
223
|
+
* ```
|
|
224
|
+
*/
|
|
225
|
+
export interface IMediumUnitLabels extends IUnitLabelMap {
|
|
226
|
+
readonly style?: 'medium';
|
|
227
|
+
millisecond: 'ms';
|
|
228
|
+
second: 'sec';
|
|
229
|
+
minute: 'min';
|
|
230
|
+
hour: 'hour';
|
|
231
|
+
day: 'day';
|
|
232
|
+
week: 'week';
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Short format style with short but readable abbreviations.
|
|
236
|
+
* Provides compact labels that remain more readable than concise format.
|
|
237
|
+
* Used for semi-compact time representations (e.g., "1hr 30min 45sec").
|
|
238
|
+
*
|
|
239
|
+
* @example
|
|
240
|
+
* ```typescript
|
|
241
|
+
* const labels: IShortUnitLabels = {
|
|
242
|
+
* style: 'short',
|
|
243
|
+
* millisecond: 'ms',
|
|
244
|
+
* second: 'sec',
|
|
245
|
+
* minute: 'min',
|
|
246
|
+
* hour: 'hr',
|
|
247
|
+
* day: 'd',
|
|
248
|
+
* week: 'wk'
|
|
249
|
+
* };
|
|
250
|
+
* ```
|
|
251
|
+
*/
|
|
252
|
+
export interface IShortUnitLabels extends IUnitLabelMap {
|
|
253
|
+
readonly style?: 'short';
|
|
254
|
+
millisecond: 'ms';
|
|
255
|
+
second: 'sec';
|
|
256
|
+
minute: 'min';
|
|
257
|
+
hour: 'hr';
|
|
258
|
+
day: 'd';
|
|
259
|
+
week: 'wk';
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Complete set of default unit label configurations for all predefined formatting styles.
|
|
263
|
+
* Maps format style names to their corresponding unit label sets.
|
|
264
|
+
*
|
|
265
|
+
* @example
|
|
266
|
+
* ```typescript
|
|
267
|
+
* const conciseLabels = {
|
|
268
|
+
* concise: { style: 'concise', hour: 'h', minute: 'm', second: 's' },
|
|
269
|
+
* long: { style: 'long', hour: (v) => v === 1 ? 'hour' : 'hours' },
|
|
270
|
+
* medium: { style: 'medium', hour: 'hour', minute: 'min', second: 'sec' },
|
|
271
|
+
* short: { style: 'short', hour: 'hr', minute: 'min', second: 'sec' }
|
|
272
|
+
* };
|
|
273
|
+
* ```
|
|
274
|
+
*/
|
|
275
|
+
export interface IDefaultUnitLabels {
|
|
276
|
+
concise: IConciseUnitLabels;
|
|
277
|
+
long: ILongUnitLabels;
|
|
278
|
+
medium: IMediumUnitLabels;
|
|
279
|
+
short: IShortUnitLabels;
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Configuration options for the FormatElapsedTime convenience function.
|
|
283
|
+
* Allows customization of the output format through maxUnits and custom unit labels.
|
|
284
|
+
* Always formats using the 'concise' style with optional overrides.
|
|
285
|
+
*
|
|
286
|
+
* @example
|
|
287
|
+
* ```typescript
|
|
288
|
+
* // Limit to 2 units
|
|
289
|
+
* const config1: IFormatConfig = { maxUnits: 2 };
|
|
290
|
+
* FormatElapsedTime(5425000, config1); // "1h 30m"
|
|
291
|
+
*
|
|
292
|
+
* // Custom labels
|
|
293
|
+
* const config2: IFormatConfig = {
|
|
294
|
+
* unitLabels: { hour: 'hrs', minute: 'mins', second: 'secs' }
|
|
295
|
+
* };
|
|
296
|
+
* FormatElapsedTime(3661000, config2); // "1 hrs 1 mins 1 secs"
|
|
297
|
+
* ```
|
|
298
|
+
*/
|
|
299
|
+
export interface IFormatConfig {
|
|
300
|
+
/** Maximum number of units to display */
|
|
301
|
+
maxUnits?: number;
|
|
302
|
+
/** Unit labels to use for formatting. When omitted, the format's default labels are used. */
|
|
303
|
+
unitLabels?: Partial<IUnitLabelMap>;
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Mapping of all predefined elapsed time format styles to their configurations.
|
|
307
|
+
* Each format provides a complete IFormatConfig with specific unitLabels and optional settings.
|
|
308
|
+
*
|
|
309
|
+
* @example
|
|
310
|
+
* ```typescript
|
|
311
|
+
* const config: IFormatConfig = {
|
|
312
|
+
* unitLabels: { hour: 'h', minute: 'm', second: 's' },
|
|
313
|
+
* maxUnits: undefined
|
|
314
|
+
* };
|
|
315
|
+
*
|
|
316
|
+
* const elapsed = new ElapsedTime(5425000);
|
|
317
|
+
* elapsed.Format('concise'); // Uses FORMATS.concise configuration
|
|
318
|
+
* ```
|
|
319
|
+
*/
|
|
320
|
+
export interface IFormats {
|
|
321
|
+
/** Format like "1h 30m 45s" */
|
|
322
|
+
concise: IFormatConfig;
|
|
323
|
+
/** Format like "1 hour 30 minutes 45 seconds" with proper pluralization */
|
|
324
|
+
long: IFormatConfig;
|
|
325
|
+
/** Format like "1 hour 30 min 45 sec" */
|
|
326
|
+
medium: IFormatConfig;
|
|
327
|
+
/** Format showing only the most significant 2 units */
|
|
328
|
+
mostSignificant: IFormatConfig;
|
|
329
|
+
/** Format like "1hr 30min 45sec" */
|
|
330
|
+
short: IFormatConfig;
|
|
331
|
+
/** Format showing only hours and minutes like "1:30" */
|
|
332
|
+
time: IFormatConfig;
|
|
333
|
+
/** Format showing hours, minutes and seconds like "1:30:45" */
|
|
334
|
+
timeWithSeconds: IFormatConfig;
|
|
335
|
+
}
|
|
336
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/time/elapsed-time/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/time/elapsed-time/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAE5D;;;;;;;;;;;;;GAaG;AACH,iBAAS,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,yBAAyB,CAAC,GAAG,yBAAyB,CAOnG;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Time measurement utilities.
|
|
3
|
+
*
|
|
4
|
+
* Provides the {@link ElapsedTime} value-object for representing and formatting
|
|
5
|
+
* durations, and the {@link Stopwatch} class for recording timestamped events
|
|
6
|
+
* such as starts, stops, pauses, resumes, and laps.
|
|
7
|
+
*
|
|
8
|
+
* @module time
|
|
9
|
+
*/
|
|
10
|
+
export * from './elapsed-time/elapsed-time.js';
|
|
11
|
+
export type { ITimeUnitValue, ITimeElapsedFormatOptions, TTimeElapsedFormats, TTimeUnit, IUnitLabelMap, } from './elapsed-time/types.js';
|
|
12
|
+
export * from './stopwatch/stopwatch.js';
|
|
13
|
+
export * from './stopwatch/entry.js';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/time/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc,gCAAgC,CAAC;AAC/C,YAAY,EACX,cAAc,EACd,yBAAyB,EACzB,mBAAmB,EACnB,SAAS,EACT,aAAa,GACb,MAAM,yBAAyB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC"}
|
|
@@ -8,10 +8,5 @@
|
|
|
8
8
|
* @module time
|
|
9
9
|
*/
|
|
10
10
|
export * from './elapsed-time/elapsed-time.js';
|
|
11
|
-
export * from './elapsed-time/types.js';
|
|
12
|
-
export * from './elapsed-time/constants.js';
|
|
13
|
-
export * from './elapsed-time/utils.js';
|
|
14
11
|
export * from './stopwatch/stopwatch.js';
|
|
15
12
|
export * from './stopwatch/entry.js';
|
|
16
|
-
export * from './stopwatch/entry-types.js';
|
|
17
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../../../src/time/stopwatch/entry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,cAAc;IAed,OAAO,CAAC,QAAQ,CAAC,UAAU;IAdvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA0B;IAErD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IAErC;;;;;;;;;OASG;gBAC0B,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM;IAOtF;;;;;;;;;OASG;IACH,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED;;;;;;;;;;;;;;OAcG;IACH,IAAW,OAAO,IAAI,WAAW,CAUhC;IAED;;;;;;;;;;;;;;OAcG;IACH,IAAW,YAAY,IAAI,WAAW,CAUrC;CACD"}
|
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
import { ElapsedTime } from '../elapsed-time/elapsed-time.js';
|
|
2
2
|
import { StopwatchEntry } from './entry.js';
|
|
3
|
+
import { SimpleError } from '../../asserts/errors.js';
|
|
4
|
+
/**
|
|
5
|
+
* Error thrown by Stopwatch when an invalid operation is attempted.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* const sw = new Stopwatch();
|
|
10
|
+
* sw.Start();
|
|
11
|
+
* sw.Stop();
|
|
12
|
+
* sw.Resume(); // Throws StopwatchError
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export declare class StopwatchError extends SimpleError {
|
|
16
|
+
/**
|
|
17
|
+
* @param message - Description of the stopwatch state error
|
|
18
|
+
*/
|
|
19
|
+
constructor(message: string);
|
|
20
|
+
}
|
|
3
21
|
/**
|
|
4
22
|
* Represents a stopwatch for measuring time intervals.
|
|
5
23
|
*
|
|
@@ -117,11 +135,12 @@ export declare class Stopwatch {
|
|
|
117
135
|
/**
|
|
118
136
|
* Starts the stopwatch by recording an initial timestamp entry.
|
|
119
137
|
*
|
|
120
|
-
* If the stopwatch has already been started, this is
|
|
138
|
+
* If the stopwatch has already been started, this is idempotent and the
|
|
121
139
|
* existing latest entry is returned without creating a new one.
|
|
122
140
|
*
|
|
123
|
-
* @returns The start
|
|
124
|
-
*
|
|
141
|
+
* @returns The new start entry if the stopwatch was not running,
|
|
142
|
+
* or the existing latest entry if `Start()` was called while already running.
|
|
143
|
+
* Check `this.Running` before calling to distinguish the two cases.
|
|
125
144
|
*
|
|
126
145
|
* @example
|
|
127
146
|
* ```typescript
|
|
@@ -181,6 +200,11 @@ export declare class Stopwatch {
|
|
|
181
200
|
* After resuming, elapsed-time calculations continue to accumulate from where
|
|
182
201
|
* they left off.
|
|
183
202
|
*
|
|
203
|
+
* @remarks
|
|
204
|
+
* Calling `Resume()` after {@link Stop} has no effect and returns `null`, since
|
|
205
|
+
* `Stop()` sets the internal `_pausedAt` flag to a non-null value. The stopwatch
|
|
206
|
+
* must be explicitly {@link Reset} and {@link Start}ed again to begin timing anew.
|
|
207
|
+
*
|
|
184
208
|
* @returns A new {@link StopwatchEntry} recording the resume time, or `null`
|
|
185
209
|
* if the stopwatch was not paused.
|
|
186
210
|
*
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stopwatch.d.ts","sourceRoot":"","sources":["../../../src/time/stopwatch/stopwatch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD;;;;;;;;;;GAUG;AACH,qBAAa,cAAe,SAAQ,WAAW;IAC9C;;OAEG;gBACS,OAAO,EAAE,MAAM;CAG3B;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,qBAAa,SAAS;IACrB,OAAO,CAAC,MAAM,CAAwB;IAEtC,OAAO,CAAC,SAAS,CAAuB;IAExC,OAAO,CAAC,QAAQ,CAAS;IAEzB;;;;;;;;;;;;OAYG;gBACS,gBAAgB,UAAQ;IAMpC;;;;OAIG;IACH,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED;;;;;OAKG;IACH,IAAW,KAAK,IAAI,cAAc,GAAG,SAAS,CAE7C;IAED;;;;;OAKG;IACH,IAAW,MAAM,IAAI,cAAc,GAAG,SAAS,CAE9C;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,IAAW,OAAO,IAAI,WAAW,CAUhC;IAED;;;;;OAKG;IACH,IAAW,KAAK,IAAI,cAAc,EAAE,CAEnC;IAED;;OAEG;IACH,IAAW,OAAO,IAAI,cAAc,EAAE,CAErC;IAED;;;OAGG;IACH,IAAW,QAAQ,IAAI,MAAM,GAAG,IAAI,CAEnC;IAED;;;;;;;;;;;;;;;;OAgBG;IACI,KAAK,IAAI,cAAc,GAAG,SAAS;IAU1C;;;;;;;;;;;;;;;;;;;;OAoBG;IACI,IAAI,IAAI,cAAc,GAAG,SAAS;IAmBzC;;;;;;;;;;;;;;;;;;;OAmBG;IACI,KAAK,IAAI,cAAc,GAAG,IAAI;IAQrC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACI,MAAM,IAAI,cAAc,GAAG,IAAI;IActC;;;;;;;;;;;;;;;;OAgBG;IACI,KAAK,IAAI,cAAc;IAW9B;;;;;;;;;;;;;;;;;;OAkBG;IACI,GAAG,IAAI,WAAW;IAUzB;;;;;;;;;;;;;;;OAeG;IACI,KAAK,IAAI,IAAI;CAKpB"}
|
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
import { ElapsedTime } from '../elapsed-time/elapsed-time.js';
|
|
2
2
|
import { StopwatchEntry } from './entry.js';
|
|
3
|
+
import { SimpleError } from '../../asserts/errors.js';
|
|
4
|
+
/**
|
|
5
|
+
* Error thrown by Stopwatch when an invalid operation is attempted.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* const sw = new Stopwatch();
|
|
10
|
+
* sw.Start();
|
|
11
|
+
* sw.Stop();
|
|
12
|
+
* sw.Resume(); // Throws StopwatchError
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export class StopwatchError extends SimpleError {
|
|
16
|
+
/**
|
|
17
|
+
* @param message - Description of the stopwatch state error
|
|
18
|
+
*/
|
|
19
|
+
constructor(message) {
|
|
20
|
+
super(message);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
3
23
|
/**
|
|
4
24
|
* Represents a stopwatch for measuring time intervals.
|
|
5
25
|
*
|
|
@@ -144,11 +164,12 @@ export class Stopwatch {
|
|
|
144
164
|
/**
|
|
145
165
|
* Starts the stopwatch by recording an initial timestamp entry.
|
|
146
166
|
*
|
|
147
|
-
* If the stopwatch has already been started, this is
|
|
167
|
+
* If the stopwatch has already been started, this is idempotent and the
|
|
148
168
|
* existing latest entry is returned without creating a new one.
|
|
149
169
|
*
|
|
150
|
-
* @returns The start
|
|
151
|
-
*
|
|
170
|
+
* @returns The new start entry if the stopwatch was not running,
|
|
171
|
+
* or the existing latest entry if `Start()` was called while already running.
|
|
172
|
+
* Check `this.Running` before calling to distinguish the two cases.
|
|
152
173
|
*
|
|
153
174
|
* @example
|
|
154
175
|
* ```typescript
|
|
@@ -238,6 +259,11 @@ export class Stopwatch {
|
|
|
238
259
|
* After resuming, elapsed-time calculations continue to accumulate from where
|
|
239
260
|
* they left off.
|
|
240
261
|
*
|
|
262
|
+
* @remarks
|
|
263
|
+
* Calling `Resume()` after {@link Stop} has no effect and returns `null`, since
|
|
264
|
+
* `Stop()` sets the internal `_pausedAt` flag to a non-null value. The stopwatch
|
|
265
|
+
* must be explicitly {@link Reset} and {@link Start}ed again to begin timing anew.
|
|
266
|
+
*
|
|
241
267
|
* @returns A new {@link StopwatchEntry} recording the resume time, or `null`
|
|
242
268
|
* if the stopwatch was not paused.
|
|
243
269
|
*
|
|
@@ -250,6 +276,9 @@ export class Stopwatch {
|
|
|
250
276
|
* ```
|
|
251
277
|
*/
|
|
252
278
|
Resume() {
|
|
279
|
+
if (this._stopped) {
|
|
280
|
+
throw new StopwatchError('Cannot resume after stopwatch has been stopped');
|
|
281
|
+
}
|
|
253
282
|
if (this._pausedAt === null)
|
|
254
283
|
return null;
|
|
255
284
|
const current = Date.now();
|
|
@@ -334,4 +363,3 @@ export class Stopwatch {
|
|
|
334
363
|
this._stopped = false;
|
|
335
364
|
}
|
|
336
365
|
}
|
|
337
|
-
//# sourceMappingURL=stopwatch.js.map
|