yummies 5.4.4 → 5.4.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/.changeset/README.md +8 -0
- package/.changeset/config.json +11 -0
- package/.github/FUNDING.yml +1 -0
- package/.github/workflows/main.yml +34 -0
- package/.github/workflows/version-or-publish.yml +45 -0
- package/.nvmrc +1 -0
- package/.vscode/settings.json +19 -0
- package/CHANGELOG.md +215 -0
- package/CONTRIBUTING.md +8 -0
- package/Makefile +7 -0
- package/assets/logo.png +0 -0
- package/assets/logo.pxz +0 -0
- package/biome.json +3 -0
- package/commitfmt.toml +18 -0
- package/lefthook.yml +14 -0
- package/package.json +3 -389
- package/scripts/post-build.ts +71 -0
- package/src/async.ts +86 -0
- package/src/common.ts +26 -0
- package/src/complex/counter.test.ts +41 -0
- package/src/complex/counter.ts +40 -0
- package/src/complex/global-config.ts +55 -0
- package/src/complex/index.ts +3 -0
- package/src/complex/modules-factory.ts +65 -0
- package/src/cookie.ts +11 -0
- package/src/css.ts +60 -0
- package/src/data.test.ts +99 -0
- package/src/data.ts +65 -0
- package/src/date-time.test.ts +119 -0
- package/src/date-time.ts +236 -0
- package/src/device.ts +42 -0
- package/src/encodings.ts +270 -0
- package/src/errors.ts +40 -0
- package/src/file.ts +25 -0
- package/src/format/_exports.ts +4 -0
- package/{dist/format/constants.js → src/format/constants.ts} +2 -0
- package/{dist/format/index.js → src/format/index.ts} +2 -1
- package/src/format/number.test.ts +16 -0
- package/src/format/number.ts +96 -0
- package/src/format/percent.ts +40 -0
- package/src/format/skip-spaces.ts +4 -0
- package/src/html.ts +238 -0
- package/{dist/id.js → src/id.ts} +16 -6
- package/src/imports.ts +52 -0
- package/src/math.ts +20 -0
- package/src/media.ts +134 -0
- package/src/mobx/apply-observable.ts +20 -0
- package/src/mobx/create-enhanced-atom.ts +28 -0
- package/src/mobx/deep-observable-struct.test.ts +69 -0
- package/src/mobx/deep-observable-struct.ts +69 -0
- package/src/mobx/get-mobx-administration.ts +10 -0
- package/src/mobx/index.ts +5 -0
- package/src/mobx/lazy-observe.ts +59 -0
- package/src/ms.ts +20 -0
- package/src/number.ts +14 -0
- package/src/parser/_exports.ts +3 -0
- package/{dist/parser/index.js → src/parser/index.ts} +2 -1
- package/src/parser/number.test.ts +38 -0
- package/src/parser/number.ts +73 -0
- package/src/parser/percent.ts +11 -0
- package/src/parser/string.ts +29 -0
- package/src/price.ts +33 -0
- package/src/random.ts +27 -0
- package/src/react/hooks/index.ts +21 -0
- package/src/react/hooks/use-abort-controller.ts +15 -0
- package/src/react/hooks/use-abort-signal.ts +5 -0
- package/src/react/hooks/use-click-outside.ts +27 -0
- package/{dist/react/hooks/use-constant.js → src/react/hooks/use-constant.ts} +9 -6
- package/{dist/react/hooks/use-define-ref.js → src/react/hooks/use-define-ref.ts} +10 -7
- package/src/react/hooks/use-element-ref.ts +11 -0
- package/src/react/hooks/use-event-listener.ts +29 -0
- package/src/react/hooks/use-event.ts +23 -0
- package/src/react/hooks/use-flag.ts +27 -0
- package/src/react/hooks/use-force-update.ts +9 -0
- package/src/react/hooks/use-initial-height.ts +16 -0
- package/{dist/react/hooks/use-instance.js → src/react/hooks/use-instance.ts} +31 -9
- package/src/react/hooks/use-intersection-observer.ts +18 -0
- package/src/react/hooks/use-last-defined-value.ts +9 -0
- package/src/react/hooks/use-last-value-ref.ts +11 -0
- package/src/react/hooks/use-life-cycle.ts +17 -0
- package/src/react/hooks/use-resize-observer.ts +14 -0
- package/src/react/hooks/use-sync-ref.ts +7 -0
- package/src/react/hooks/use-toggle.ts +9 -0
- package/src/react/hooks/use-value.ts +10 -0
- package/src/react/hooks/use-visibility-state.ts +19 -0
- package/src/react/index.ts +1 -0
- package/src/sound.ts +15 -0
- package/src/storage.ts +137 -0
- package/src/text.test.ts +91 -0
- package/src/text.ts +60 -0
- package/src/type-guard/_exports.ts +154 -0
- package/src/type-guard/index.test.ts +127 -0
- package/{dist/type-guard/index.js → src/type-guard/index.ts} +2 -1
- package/src/vibrate.ts +8 -0
- package/tsconfig.json +26 -0
- package/tsconfig.test.json +33 -0
- package/vitest.config.ts +20 -0
- package/dist/async.cjs +0 -70
- package/dist/async.d.cts +0 -28
- package/dist/async.d.cts.map +0 -1
- package/dist/async.d.ts +0 -28
- package/dist/async.d.ts.map +0 -1
- package/dist/async.js +0 -62
- package/dist/common.cjs +0 -18
- package/dist/common.d.cts +0 -15
- package/dist/common.d.cts.map +0 -1
- package/dist/common.d.ts +0 -15
- package/dist/common.d.ts.map +0 -1
- package/dist/common.js +0 -14
- package/dist/complex/counter.cjs +0 -21
- package/dist/complex/counter.d.cts +0 -15
- package/dist/complex/counter.d.cts.map +0 -1
- package/dist/complex/counter.d.ts +0 -15
- package/dist/complex/counter.d.ts.map +0 -1
- package/dist/complex/counter.js +0 -17
- package/dist/complex/global-config.cjs +0 -46
- package/dist/complex/global-config.d.cts +0 -11
- package/dist/complex/global-config.d.cts.map +0 -1
- package/dist/complex/global-config.d.ts +0 -11
- package/dist/complex/global-config.d.ts.map +0 -1
- package/dist/complex/global-config.js +0 -41
- package/dist/complex/index.cjs +0 -19
- package/dist/complex/index.d.cts +0 -4
- package/dist/complex/index.d.cts.map +0 -1
- package/dist/complex/index.d.ts +0 -4
- package/dist/complex/index.d.ts.map +0 -1
- package/dist/complex/index.js +0 -3
- package/dist/complex/modules-factory.cjs +0 -50
- package/dist/complex/modules-factory.d.cts +0 -49
- package/dist/complex/modules-factory.d.cts.map +0 -1
- package/dist/complex/modules-factory.d.ts +0 -49
- package/dist/complex/modules-factory.d.ts.map +0 -1
- package/dist/complex/modules-factory.js +0 -46
- package/dist/cookie.cjs +0 -13
- package/dist/cookie.d.cts +0 -3
- package/dist/cookie.d.cts.map +0 -1
- package/dist/cookie.d.ts +0 -3
- package/dist/cookie.d.ts.map +0 -1
- package/dist/cookie.js +0 -9
- package/dist/css.cjs +0 -28
- package/dist/css.d.cts +0 -36
- package/dist/css.d.cts.map +0 -1
- package/dist/css.d.ts +0 -36
- package/dist/css.d.ts.map +0 -1
- package/dist/css.js +0 -20
- package/dist/data.cjs +0 -58
- package/dist/data.d.cts +0 -4
- package/dist/data.d.cts.map +0 -1
- package/dist/data.d.ts +0 -4
- package/dist/data.d.ts.map +0 -1
- package/dist/data.js +0 -52
- package/dist/date-time.cjs +0 -171
- package/dist/date-time.d.cts +0 -28
- package/dist/date-time.d.cts.map +0 -1
- package/dist/date-time.d.ts +0 -28
- package/dist/date-time.d.ts.map +0 -1
- package/dist/date-time.js +0 -160
- package/dist/device.cjs +0 -28
- package/dist/device.d.cts +0 -8
- package/dist/device.d.cts.map +0 -1
- package/dist/device.d.ts +0 -8
- package/dist/device.d.ts.map +0 -1
- package/dist/device.js +0 -21
- package/dist/encodings.cjs +0 -270
- package/dist/encodings.d.cts +0 -2
- package/dist/encodings.d.cts.map +0 -1
- package/dist/encodings.d.ts +0 -2
- package/dist/encodings.d.ts.map +0 -1
- package/dist/encodings.js +0 -267
- package/dist/errors.cjs +0 -34
- package/dist/errors.d.cts +0 -19
- package/dist/errors.d.cts.map +0 -1
- package/dist/errors.d.ts +0 -19
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -30
- package/dist/file.cjs +0 -29
- package/dist/file.d.cts +0 -3
- package/dist/file.d.cts.map +0 -1
- package/dist/file.d.ts +0 -3
- package/dist/file.d.ts.map +0 -1
- package/dist/file.js +0 -24
- package/dist/format/_exports.cjs +0 -20
- package/dist/format/_exports.d.cts +0 -5
- package/dist/format/_exports.d.cts.map +0 -1
- package/dist/format/_exports.d.ts +0 -5
- package/dist/format/_exports.d.ts.map +0 -1
- package/dist/format/_exports.js +0 -4
- package/dist/format/constants.cjs +0 -6
- package/dist/format/constants.d.cts +0 -4
- package/dist/format/constants.d.cts.map +0 -1
- package/dist/format/constants.d.ts +0 -4
- package/dist/format/constants.d.ts.map +0 -1
- package/dist/format/index.cjs +0 -40
- package/dist/format/index.d.cts +0 -3
- package/dist/format/index.d.cts.map +0 -1
- package/dist/format/index.d.ts +0 -3
- package/dist/format/index.d.ts.map +0 -1
- package/dist/format/number.cjs +0 -48
- package/dist/format/number.d.cts +0 -36
- package/dist/format/number.d.cts.map +0 -1
- package/dist/format/number.d.ts +0 -36
- package/dist/format/number.d.ts.map +0 -1
- package/dist/format/number.js +0 -44
- package/dist/format/percent.cjs +0 -27
- package/dist/format/percent.d.cts +0 -15
- package/dist/format/percent.d.cts.map +0 -1
- package/dist/format/percent.d.ts +0 -15
- package/dist/format/percent.d.ts.map +0 -1
- package/dist/format/percent.js +0 -23
- package/dist/format/skip-spaces.cjs +0 -8
- package/dist/format/skip-spaces.d.cts +0 -5
- package/dist/format/skip-spaces.d.cts.map +0 -1
- package/dist/format/skip-spaces.d.ts +0 -5
- package/dist/format/skip-spaces.d.ts.map +0 -1
- package/dist/format/skip-spaces.js +0 -4
- package/dist/html.cjs +0 -202
- package/dist/html.d.cts +0 -44
- package/dist/html.d.cts.map +0 -1
- package/dist/html.d.ts +0 -44
- package/dist/html.d.ts.map +0 -1
- package/dist/html.js +0 -182
- package/dist/id.cjs +0 -76
- package/dist/id.d.cts +0 -63
- package/dist/id.d.cts.map +0 -1
- package/dist/id.d.ts +0 -63
- package/dist/id.d.ts.map +0 -1
- package/dist/imports.cjs +0 -45
- package/dist/imports.d.cts +0 -15
- package/dist/imports.d.cts.map +0 -1
- package/dist/imports.d.ts +0 -15
- package/dist/imports.d.ts.map +0 -1
- package/dist/imports.js +0 -40
- package/dist/math.cjs +0 -23
- package/dist/math.d.cts +0 -13
- package/dist/math.d.cts.map +0 -1
- package/dist/math.d.ts +0 -13
- package/dist/math.d.ts.map +0 -1
- package/dist/math.js +0 -17
- package/dist/media.cjs +0 -115
- package/dist/media.d.cts +0 -20
- package/dist/media.d.cts.map +0 -1
- package/dist/media.d.ts +0 -20
- package/dist/media.d.ts.map +0 -1
- package/dist/media.js +0 -103
- package/dist/mobx/apply-observable.cjs +0 -16
- package/dist/mobx/apply-observable.d.cts +0 -4
- package/dist/mobx/apply-observable.d.cts.map +0 -1
- package/dist/mobx/apply-observable.d.ts +0 -4
- package/dist/mobx/apply-observable.d.ts.map +0 -1
- package/dist/mobx/apply-observable.js +0 -12
- package/dist/mobx/create-enhanced-atom.cjs +0 -16
- package/dist/mobx/create-enhanced-atom.d.cts +0 -11
- package/dist/mobx/create-enhanced-atom.d.cts.map +0 -1
- package/dist/mobx/create-enhanced-atom.d.ts +0 -11
- package/dist/mobx/create-enhanced-atom.d.ts.map +0 -1
- package/dist/mobx/create-enhanced-atom.js +0 -12
- package/dist/mobx/deep-observable-struct.cjs +0 -61
- package/dist/mobx/deep-observable-struct.d.cts +0 -7
- package/dist/mobx/deep-observable-struct.d.cts.map +0 -1
- package/dist/mobx/deep-observable-struct.d.ts +0 -7
- package/dist/mobx/deep-observable-struct.d.ts.map +0 -1
- package/dist/mobx/deep-observable-struct.js +0 -57
- package/dist/mobx/get-mobx-administration.cjs +0 -6
- package/dist/mobx/get-mobx-administration.d.cts +0 -6
- package/dist/mobx/get-mobx-administration.d.cts.map +0 -1
- package/dist/mobx/get-mobx-administration.d.ts +0 -6
- package/dist/mobx/get-mobx-administration.d.ts.map +0 -1
- package/dist/mobx/get-mobx-administration.js +0 -2
- package/dist/mobx/index.cjs +0 -21
- package/dist/mobx/index.d.cts +0 -6
- package/dist/mobx/index.d.cts.map +0 -1
- package/dist/mobx/index.d.ts +0 -6
- package/dist/mobx/index.d.ts.map +0 -1
- package/dist/mobx/index.js +0 -5
- package/dist/mobx/lazy-observe.cjs +0 -47
- package/dist/mobx/lazy-observe.d.cts +0 -8
- package/dist/mobx/lazy-observe.d.cts.map +0 -1
- package/dist/mobx/lazy-observe.d.ts +0 -8
- package/dist/mobx/lazy-observe.d.ts.map +0 -1
- package/dist/mobx/lazy-observe.js +0 -43
- package/dist/ms.cjs +0 -22
- package/dist/ms.d.cts +0 -19
- package/dist/ms.d.cts.map +0 -1
- package/dist/ms.d.ts +0 -19
- package/dist/ms.d.ts.map +0 -1
- package/dist/ms.js +0 -18
- package/dist/number.cjs +0 -16
- package/dist/number.d.cts +0 -8
- package/dist/number.d.cts.map +0 -1
- package/dist/number.d.ts +0 -8
- package/dist/number.d.ts.map +0 -1
- package/dist/number.js +0 -13
- package/dist/parser/_exports.cjs +0 -19
- package/dist/parser/_exports.d.cts +0 -4
- package/dist/parser/_exports.d.cts.map +0 -1
- package/dist/parser/_exports.d.ts +0 -4
- package/dist/parser/_exports.d.ts.map +0 -1
- package/dist/parser/_exports.js +0 -3
- package/dist/parser/index.cjs +0 -40
- package/dist/parser/index.d.cts +0 -3
- package/dist/parser/index.d.cts.map +0 -1
- package/dist/parser/index.d.ts +0 -3
- package/dist/parser/index.d.ts.map +0 -1
- package/dist/parser/number.cjs +0 -48
- package/dist/parser/number.d.cts +0 -21
- package/dist/parser/number.d.cts.map +0 -1
- package/dist/parser/number.d.ts +0 -21
- package/dist/parser/number.d.ts.map +0 -1
- package/dist/parser/number.js +0 -44
- package/dist/parser/percent.cjs +0 -8
- package/dist/parser/percent.d.cts +0 -4
- package/dist/parser/percent.d.cts.map +0 -1
- package/dist/parser/percent.d.ts +0 -4
- package/dist/parser/percent.d.ts.map +0 -1
- package/dist/parser/percent.js +0 -4
- package/dist/parser/string.cjs +0 -18
- package/dist/parser/string.d.cts +0 -7
- package/dist/parser/string.d.cts.map +0 -1
- package/dist/parser/string.d.ts +0 -7
- package/dist/parser/string.d.ts.map +0 -1
- package/dist/parser/string.js +0 -14
- package/dist/price.cjs +0 -21
- package/dist/price.d.cts +0 -6
- package/dist/price.d.cts.map +0 -1
- package/dist/price.d.ts +0 -6
- package/dist/price.d.ts.map +0 -1
- package/dist/price.js +0 -17
- package/dist/random.cjs +0 -25
- package/dist/random.d.cts +0 -9
- package/dist/random.d.cts.map +0 -1
- package/dist/random.d.ts +0 -9
- package/dist/random.d.ts.map +0 -1
- package/dist/random.js +0 -14
- package/dist/react/hooks/index.cjs +0 -37
- package/dist/react/hooks/index.d.cts +0 -22
- package/dist/react/hooks/index.d.cts.map +0 -1
- package/dist/react/hooks/index.d.ts +0 -22
- package/dist/react/hooks/index.d.ts.map +0 -1
- package/dist/react/hooks/index.js +0 -21
- package/dist/react/hooks/use-abort-controller.cjs +0 -15
- package/dist/react/hooks/use-abort-controller.d.cts +0 -2
- package/dist/react/hooks/use-abort-controller.d.cts.map +0 -1
- package/dist/react/hooks/use-abort-controller.d.ts +0 -2
- package/dist/react/hooks/use-abort-controller.d.ts.map +0 -1
- package/dist/react/hooks/use-abort-controller.js +0 -11
- package/dist/react/hooks/use-abort-signal.cjs +0 -8
- package/dist/react/hooks/use-abort-signal.d.cts +0 -2
- package/dist/react/hooks/use-abort-signal.d.cts.map +0 -1
- package/dist/react/hooks/use-abort-signal.d.ts +0 -2
- package/dist/react/hooks/use-abort-signal.d.ts.map +0 -1
- package/dist/react/hooks/use-abort-signal.js +0 -4
- package/dist/react/hooks/use-click-outside.cjs +0 -17
- package/dist/react/hooks/use-click-outside.d.cts +0 -9
- package/dist/react/hooks/use-click-outside.d.cts.map +0 -1
- package/dist/react/hooks/use-click-outside.d.ts +0 -9
- package/dist/react/hooks/use-click-outside.d.ts.map +0 -1
- package/dist/react/hooks/use-click-outside.js +0 -13
- package/dist/react/hooks/use-constant.cjs +0 -19
- package/dist/react/hooks/use-constant.d.cts +0 -9
- package/dist/react/hooks/use-constant.d.cts.map +0 -1
- package/dist/react/hooks/use-constant.d.ts +0 -9
- package/dist/react/hooks/use-constant.d.ts.map +0 -1
- package/dist/react/hooks/use-define-ref.cjs +0 -19
- package/dist/react/hooks/use-define-ref.d.cts +0 -10
- package/dist/react/hooks/use-define-ref.d.cts.map +0 -1
- package/dist/react/hooks/use-define-ref.d.ts +0 -10
- package/dist/react/hooks/use-define-ref.d.ts.map +0 -1
- package/dist/react/hooks/use-element-ref.cjs +0 -12
- package/dist/react/hooks/use-element-ref.d.cts +0 -2
- package/dist/react/hooks/use-element-ref.d.cts.map +0 -1
- package/dist/react/hooks/use-element-ref.d.ts +0 -2
- package/dist/react/hooks/use-element-ref.d.ts.map +0 -1
- package/dist/react/hooks/use-element-ref.js +0 -8
- package/dist/react/hooks/use-event-listener.cjs +0 -17
- package/dist/react/hooks/use-event-listener.d.cts +0 -8
- package/dist/react/hooks/use-event-listener.d.cts.map +0 -1
- package/dist/react/hooks/use-event-listener.d.ts +0 -8
- package/dist/react/hooks/use-event-listener.d.ts.map +0 -1
- package/dist/react/hooks/use-event-listener.js +0 -13
- package/dist/react/hooks/use-event.cjs +0 -23
- package/dist/react/hooks/use-event.d.cts +0 -3
- package/dist/react/hooks/use-event.d.cts.map +0 -1
- package/dist/react/hooks/use-event.d.ts +0 -3
- package/dist/react/hooks/use-event.d.ts.map +0 -1
- package/dist/react/hooks/use-event.js +0 -19
- package/dist/react/hooks/use-flag.cjs +0 -19
- package/dist/react/hooks/use-flag.d.cts +0 -8
- package/dist/react/hooks/use-flag.d.cts.map +0 -1
- package/dist/react/hooks/use-flag.d.ts +0 -8
- package/dist/react/hooks/use-flag.d.ts.map +0 -1
- package/dist/react/hooks/use-flag.js +0 -15
- package/dist/react/hooks/use-force-update.cjs +0 -11
- package/dist/react/hooks/use-force-update.d.cts +0 -2
- package/dist/react/hooks/use-force-update.d.cts.map +0 -1
- package/dist/react/hooks/use-force-update.d.ts +0 -2
- package/dist/react/hooks/use-force-update.d.ts.map +0 -1
- package/dist/react/hooks/use-force-update.js +0 -7
- package/dist/react/hooks/use-initial-height.cjs +0 -15
- package/dist/react/hooks/use-initial-height.d.cts +0 -5
- package/dist/react/hooks/use-initial-height.d.cts.map +0 -1
- package/dist/react/hooks/use-initial-height.d.ts +0 -5
- package/dist/react/hooks/use-initial-height.d.ts.map +0 -1
- package/dist/react/hooks/use-initial-height.js +0 -11
- package/dist/react/hooks/use-instance.cjs +0 -31
- package/dist/react/hooks/use-instance.d.cts +0 -27
- package/dist/react/hooks/use-instance.d.cts.map +0 -1
- package/dist/react/hooks/use-instance.d.ts +0 -27
- package/dist/react/hooks/use-instance.d.ts.map +0 -1
- package/dist/react/hooks/use-intersection-observer.cjs +0 -14
- package/dist/react/hooks/use-intersection-observer.d.cts +0 -2
- package/dist/react/hooks/use-intersection-observer.d.cts.map +0 -1
- package/dist/react/hooks/use-intersection-observer.d.ts +0 -2
- package/dist/react/hooks/use-intersection-observer.d.ts.map +0 -1
- package/dist/react/hooks/use-intersection-observer.js +0 -10
- package/dist/react/hooks/use-last-defined-value.cjs +0 -12
- package/dist/react/hooks/use-last-defined-value.d.cts +0 -2
- package/dist/react/hooks/use-last-defined-value.d.cts.map +0 -1
- package/dist/react/hooks/use-last-defined-value.d.ts +0 -2
- package/dist/react/hooks/use-last-defined-value.d.ts.map +0 -1
- package/dist/react/hooks/use-last-defined-value.js +0 -8
- package/dist/react/hooks/use-last-value-ref.cjs +0 -12
- package/dist/react/hooks/use-last-value-ref.d.cts +0 -2
- package/dist/react/hooks/use-last-value-ref.d.cts.map +0 -1
- package/dist/react/hooks/use-last-value-ref.d.ts +0 -2
- package/dist/react/hooks/use-last-value-ref.d.ts.map +0 -1
- package/dist/react/hooks/use-last-value-ref.js +0 -8
- package/dist/react/hooks/use-life-cycle.cjs +0 -14
- package/dist/react/hooks/use-life-cycle.d.cts +0 -5
- package/dist/react/hooks/use-life-cycle.d.cts.map +0 -1
- package/dist/react/hooks/use-life-cycle.d.ts +0 -5
- package/dist/react/hooks/use-life-cycle.d.ts.map +0 -1
- package/dist/react/hooks/use-life-cycle.js +0 -10
- package/dist/react/hooks/use-resize-observer.cjs +0 -15
- package/dist/react/hooks/use-resize-observer.d.cts +0 -2
- package/dist/react/hooks/use-resize-observer.d.cts.map +0 -1
- package/dist/react/hooks/use-resize-observer.d.ts +0 -2
- package/dist/react/hooks/use-resize-observer.d.ts.map +0 -1
- package/dist/react/hooks/use-resize-observer.js +0 -11
- package/dist/react/hooks/use-sync-ref.cjs +0 -10
- package/dist/react/hooks/use-sync-ref.d.cts +0 -2
- package/dist/react/hooks/use-sync-ref.d.cts.map +0 -1
- package/dist/react/hooks/use-sync-ref.d.ts +0 -2
- package/dist/react/hooks/use-sync-ref.d.ts.map +0 -1
- package/dist/react/hooks/use-sync-ref.js +0 -6
- package/dist/react/hooks/use-toggle.cjs +0 -10
- package/dist/react/hooks/use-toggle.d.cts +0 -2
- package/dist/react/hooks/use-toggle.d.cts.map +0 -1
- package/dist/react/hooks/use-toggle.d.ts +0 -2
- package/dist/react/hooks/use-toggle.d.ts.map +0 -1
- package/dist/react/hooks/use-toggle.js +0 -6
- package/dist/react/hooks/use-value.cjs +0 -12
- package/dist/react/hooks/use-value.d.cts +0 -5
- package/dist/react/hooks/use-value.d.cts.map +0 -1
- package/dist/react/hooks/use-value.d.ts +0 -5
- package/dist/react/hooks/use-value.d.ts.map +0 -1
- package/dist/react/hooks/use-value.js +0 -8
- package/dist/react/hooks/use-visibility-state.cjs +0 -18
- package/dist/react/hooks/use-visibility-state.d.cts +0 -2
- package/dist/react/hooks/use-visibility-state.d.cts.map +0 -1
- package/dist/react/hooks/use-visibility-state.d.ts +0 -2
- package/dist/react/hooks/use-visibility-state.d.ts.map +0 -1
- package/dist/react/hooks/use-visibility-state.js +0 -14
- package/dist/react/index.cjs +0 -17
- package/dist/react/index.d.cts +0 -2
- package/dist/react/index.d.cts.map +0 -1
- package/dist/react/index.d.ts +0 -2
- package/dist/react/index.d.ts.map +0 -1
- package/dist/react/index.js +0 -1
- package/dist/sound.cjs +0 -16
- package/dist/sound.d.cts +0 -7
- package/dist/sound.d.cts.map +0 -1
- package/dist/sound.d.ts +0 -7
- package/dist/sound.d.ts.map +0 -1
- package/dist/sound.js +0 -12
- package/dist/storage.cjs +0 -48
- package/dist/storage.d.cts +0 -39
- package/dist/storage.d.cts.map +0 -1
- package/dist/storage.d.ts +0 -39
- package/dist/storage.d.ts.map +0 -1
- package/dist/storage.js +0 -43
- package/dist/text.cjs +0 -53
- package/dist/text.d.cts +0 -15
- package/dist/text.d.cts.map +0 -1
- package/dist/text.d.ts +0 -15
- package/dist/text.d.ts.map +0 -1
- package/dist/text.js +0 -48
- package/dist/type-guard/_exports.cjs +0 -129
- package/dist/type-guard/_exports.d.cts +0 -86
- package/dist/type-guard/_exports.d.cts.map +0 -1
- package/dist/type-guard/_exports.d.ts +0 -86
- package/dist/type-guard/_exports.d.ts.map +0 -1
- package/dist/type-guard/_exports.js +0 -125
- package/dist/type-guard/index.cjs +0 -40
- package/dist/type-guard/index.d.cts +0 -3
- package/dist/type-guard/index.d.cts.map +0 -1
- package/dist/type-guard/index.d.ts +0 -3
- package/dist/type-guard/index.d.ts.map +0 -1
- package/dist/utils/types.cjs +0 -2
- package/dist/utils/types.d.cts +0 -395
- package/dist/utils/types.d.cts.map +0 -1
- package/dist/utils/types.d.ts +0 -395
- package/dist/utils/types.d.ts.map +0 -1
- package/dist/utils/types.js +0 -1
- package/dist/vibrate.cjs +0 -12
- package/dist/vibrate.d.cts +0 -5
- package/dist/vibrate.d.cts.map +0 -1
- package/dist/vibrate.d.ts +0 -5
- package/dist/vibrate.d.ts.map +0 -1
- package/dist/vibrate.js +0 -8
- package/utility-types.d.ts +0 -395
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { AnyObject, Maybe } from '../utils/types.js';
|
|
2
|
+
|
|
3
|
+
const createGlobalPoint = <TValue>(accessSymbol?: keyof any) => {
|
|
4
|
+
if (accessSymbol == null) {
|
|
5
|
+
let storedValue: TValue | undefined;
|
|
6
|
+
return {
|
|
7
|
+
get: (): TValue => storedValue!,
|
|
8
|
+
set: (value: TValue): TValue => {
|
|
9
|
+
storedValue = value;
|
|
10
|
+
return value;
|
|
11
|
+
},
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const _globalThis = globalThis as AnyObject;
|
|
16
|
+
|
|
17
|
+
return {
|
|
18
|
+
get: (): TValue => _globalThis[accessSymbol],
|
|
19
|
+
set: (value: TValue): TValue => {
|
|
20
|
+
_globalThis[accessSymbol] = value;
|
|
21
|
+
return value;
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Создает глобальный конфиг, который может быть доступен в любой точке в коде
|
|
28
|
+
*/
|
|
29
|
+
export const createGlobalConfig = <T extends AnyObject>(
|
|
30
|
+
defaultValue: T,
|
|
31
|
+
accessSymbol?: keyof any,
|
|
32
|
+
) => {
|
|
33
|
+
const globalPoint = createGlobalPoint<T>(accessSymbol);
|
|
34
|
+
return globalPoint.get() || globalPoint.set(defaultValue);
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export const createGlobalDynamicConfig = <T extends AnyObject>(
|
|
38
|
+
processFn: (change: Maybe<Partial<T>>, current: Maybe<T>) => T,
|
|
39
|
+
accessSymbol?: keyof any,
|
|
40
|
+
) => {
|
|
41
|
+
const globalPoint = createGlobalPoint<T | null | undefined>(accessSymbol);
|
|
42
|
+
|
|
43
|
+
const getValue = () => {
|
|
44
|
+
return globalPoint.get() ?? globalPoint.set(processFn(null, null))!;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
return {
|
|
48
|
+
get: getValue,
|
|
49
|
+
set: globalPoint.set,
|
|
50
|
+
update: (value: Partial<T>) => {
|
|
51
|
+
const currentValue = getValue();
|
|
52
|
+
Object.assign(currentValue, processFn(value, currentValue));
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
AnyObject,
|
|
3
|
+
Class,
|
|
4
|
+
EmptyObject,
|
|
5
|
+
IsPartial,
|
|
6
|
+
} from '../utils/types.js';
|
|
7
|
+
|
|
8
|
+
type ModuleLoaderConfig<TPredefinedDeps extends AnyObject = EmptyObject> = {
|
|
9
|
+
factory<TInstance, TDeps extends TPredefinedDeps>(
|
|
10
|
+
moduleClass: Class<TInstance, [TDeps]>,
|
|
11
|
+
deps: TDeps,
|
|
12
|
+
): TInstance;
|
|
13
|
+
} & (TPredefinedDeps extends EmptyObject
|
|
14
|
+
? { deps?: TPredefinedDeps }
|
|
15
|
+
: { deps: TPredefinedDeps });
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Класс `ModulesFactory` является универсальной фабрикой для создания экземпляров указанного класса с зависимостями.
|
|
19
|
+
* Он использует объект конфигурации для определения того, как эти экземпляры создаются.
|
|
20
|
+
*
|
|
21
|
+
* Важное примечание - эта сущность работает только с классами конструктор которых имеет один параметр
|
|
22
|
+
*
|
|
23
|
+
* @template TPredefinedDeps - Тип, расширяющий `AnyObject`, представляющий предопределенные зависимости, которые использует фабрика.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```
|
|
27
|
+
* const factory = new ModulesFactory({
|
|
28
|
+
* factory: (MyClass, deps) => new MyClass(deps),
|
|
29
|
+
* deps: { someDependency: new Dependency() }
|
|
30
|
+
* });
|
|
31
|
+
*
|
|
32
|
+
* const instance = factory.create(MyClass, { extraDependency: new ExtraDependency() });
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export class ModulesFactory<TPredefinedDeps extends AnyObject = EmptyObject> {
|
|
36
|
+
/**
|
|
37
|
+
* Создает новый экземпляр `ModulesFactory`.
|
|
38
|
+
*
|
|
39
|
+
* @param config - Объект конфигурации для фабрики, включающий функцию фабрики и необязательные зависимости.
|
|
40
|
+
*/
|
|
41
|
+
constructor(private config: ModuleLoaderConfig<TPredefinedDeps>) {}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Создает экземпляр указанного класса, внедряя необходимые зависимости.
|
|
45
|
+
*
|
|
46
|
+
* @template TInstance - Тип создаваемого экземпляра.
|
|
47
|
+
* @template TDeps - Тип зависимостей, необходимых для экземпляра.
|
|
48
|
+
*
|
|
49
|
+
* @param Constructor - Конструктор класса для создаваемого экземпляра.
|
|
50
|
+
* @param args - Необязательные дополнительные зависимости для объединения с предопределенными зависимостями.
|
|
51
|
+
*
|
|
52
|
+
* @returns Экземпляр указанного класса с внедренными зависимостями.
|
|
53
|
+
*/
|
|
54
|
+
create<TInstance, TDeps extends TPredefinedDeps = TPredefinedDeps>(
|
|
55
|
+
Constructor: Class<TInstance, [TDeps]>,
|
|
56
|
+
...args: IsPartial<Omit<TDeps, keyof TPredefinedDeps>> extends true
|
|
57
|
+
? [extraDeps?: Omit<TDeps, keyof TPredefinedDeps>]
|
|
58
|
+
: [extraDeps: Omit<TDeps, keyof TPredefinedDeps>]
|
|
59
|
+
) {
|
|
60
|
+
return this.config.factory(Constructor, {
|
|
61
|
+
...this.config.deps!,
|
|
62
|
+
...args[0],
|
|
63
|
+
} as any);
|
|
64
|
+
}
|
|
65
|
+
}
|
package/src/cookie.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { AnyObject } from './utils/types.js';
|
|
2
|
+
|
|
3
|
+
export const parseCookie = (cookiesString = document.cookie) => {
|
|
4
|
+
return cookiesString
|
|
5
|
+
.split(';')
|
|
6
|
+
.map((cookieString) => cookieString.trim().split('='))
|
|
7
|
+
.reduce<AnyObject>((acc, current) => {
|
|
8
|
+
acc[current[0]] = current[1];
|
|
9
|
+
return acc;
|
|
10
|
+
}, {});
|
|
11
|
+
};
|
package/src/css.ts
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { cva as cvaLib } from 'class-variance-authority';
|
|
2
|
+
import clsx, { type ClassValue } from 'clsx';
|
|
3
|
+
import { twMerge } from 'tailwind-merge';
|
|
4
|
+
|
|
5
|
+
type ClassProp = {
|
|
6
|
+
class?: ClassValue;
|
|
7
|
+
className?: ClassValue;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
type StringToBoolean<T> = T extends 'true' | 'false' ? boolean : T;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Перевод значения в пикселях в rem строковое
|
|
14
|
+
*/
|
|
15
|
+
export const toRem = (px: number, remValue = 16) => `${px / remValue}rem`;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* classNames/clsx но с примесями tailwind-merge
|
|
19
|
+
*/
|
|
20
|
+
export const cx = (...args: Parameters<typeof clsx>) => twMerge(clsx(...args));
|
|
21
|
+
|
|
22
|
+
type ConfigSchema = Record<string, Record<string, ClassValue>>;
|
|
23
|
+
type ConfigVariants<T extends ConfigSchema> = {
|
|
24
|
+
[Variant in keyof T]?: StringToBoolean<keyof T[Variant]> | null | undefined;
|
|
25
|
+
};
|
|
26
|
+
type ConfigVariantsMulti<T extends ConfigSchema> = {
|
|
27
|
+
[Variant in keyof T]?:
|
|
28
|
+
| StringToBoolean<keyof T[Variant]>
|
|
29
|
+
| StringToBoolean<keyof T[Variant]>[]
|
|
30
|
+
| undefined;
|
|
31
|
+
};
|
|
32
|
+
type Config<T> = T extends ConfigSchema
|
|
33
|
+
? {
|
|
34
|
+
variants?: T;
|
|
35
|
+
defaultVariants?: ConfigVariants<T>;
|
|
36
|
+
compoundVariants?: (T extends ConfigSchema
|
|
37
|
+
? (ConfigVariants<T> | ConfigVariantsMulti<T>) & ClassProp
|
|
38
|
+
: ClassProp)[];
|
|
39
|
+
}
|
|
40
|
+
: never;
|
|
41
|
+
|
|
42
|
+
type Props<T> = T extends ConfigSchema
|
|
43
|
+
? ConfigVariants<T> & ClassProp
|
|
44
|
+
: ClassProp;
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Class Variance Authority но с примесями tailwind-merge
|
|
48
|
+
*
|
|
49
|
+
* https://cva.style/docs
|
|
50
|
+
*/
|
|
51
|
+
export const cva = ((...args: any[]) => {
|
|
52
|
+
const schema = cvaLib(...args);
|
|
53
|
+
return (...inputArgs: any[]) => twMerge(schema(...inputArgs));
|
|
54
|
+
}) as any as <T>(
|
|
55
|
+
base?: ClassValue,
|
|
56
|
+
config?: Config<T>,
|
|
57
|
+
) => (props?: Props<T>) => string;
|
|
58
|
+
|
|
59
|
+
export type { VariantProps } from 'class-variance-authority';
|
|
60
|
+
export type { ClassValue } from 'clsx';
|
package/src/data.test.ts
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { describe } from 'node:test';
|
|
2
|
+
import { expect, it } from 'vitest';
|
|
3
|
+
|
|
4
|
+
import { isShallowEqual } from './data';
|
|
5
|
+
|
|
6
|
+
describe('data tests', () => {
|
|
7
|
+
describe('isShallowEqual', () => {
|
|
8
|
+
it('two nulls', () => {
|
|
9
|
+
expect(isShallowEqual(null, null)).toBeTruthy();
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
it('two undefineds', () => {
|
|
13
|
+
expect(isShallowEqual(undefined, undefined)).toBeTruthy();
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
it('two empty objects', () => {
|
|
17
|
+
expect(isShallowEqual({}, {})).toBeTruthy();
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
it('two empty arrays', () => {
|
|
21
|
+
expect(isShallowEqual([], [])).toBeTruthy();
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
it('two empty arrays with different length', () => {
|
|
25
|
+
expect(isShallowEqual([1], [])).toBeFalsy();
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
it('two arrays with same values', () => {
|
|
29
|
+
expect(isShallowEqual([1, 2, 3], [1, 2, 3])).toBeTruthy();
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it('two arrays with different order', () => {
|
|
33
|
+
expect(isShallowEqual([1, 2, 3], [3, 2, 1])).toBeFalsy();
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
it('two arrays with different length', () => {
|
|
37
|
+
expect(isShallowEqual([1, 2, 3], [1, 2, 3, 4])).toBeFalsy();
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
it('two objects with same keys and values', () => {
|
|
41
|
+
expect(isShallowEqual({ a: 1, b: 2 }, { a: 1, b: 2 })).toBeTruthy();
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
it('two objects with same keys and values in different order', () => {
|
|
45
|
+
expect(isShallowEqual({ a: 1, b: 2 }, { b: 2, a: 1 })).toBeTruthy();
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
it('two objects with different keys', () => {
|
|
49
|
+
expect(isShallowEqual({ a: 1, b: 2 }, { a: 1, c: 2 })).toBeFalsy();
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
it('two objects with same keys and different values', () => {
|
|
53
|
+
expect(isShallowEqual({ a: 1, b: 2 }, { a: 1, b: 3 })).toBeFalsy();
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
it('two objects with same keys, different values and different order', () => {
|
|
57
|
+
expect(isShallowEqual({ a: 1, b: 2 }, { b: 3, a: 1 })).toBeFalsy();
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
it('two objects with extra key on first object', () => {
|
|
61
|
+
expect(isShallowEqual({ a: 1, b: 2, c: 3 }, { a: 1, b: 2 })).toBeFalsy();
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
it('two objects with extra key on second object', () => {
|
|
65
|
+
expect(isShallowEqual({ a: 1, b: 2 }, { a: 1, b: 2, c: 3 })).toBeFalsy();
|
|
66
|
+
});
|
|
67
|
+
it('first is null, second is object', () => {
|
|
68
|
+
expect(isShallowEqual(null, { a: 1 })).toBeFalsy();
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
it('first is object, second is null', () => {
|
|
72
|
+
expect(isShallowEqual({ a: 1 }, null)).toBeFalsy();
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
it('first is undefined, second is object', () => {
|
|
76
|
+
expect(isShallowEqual(undefined, { a: 1 })).toBeFalsy();
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
it('first is object, second is undefined', () => {
|
|
80
|
+
expect(isShallowEqual({ a: 1 }, undefined)).toBeFalsy();
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
it('two objects with different class but same keys and values', () => {
|
|
84
|
+
class A {
|
|
85
|
+
constructor(
|
|
86
|
+
public a: number,
|
|
87
|
+
public b: number,
|
|
88
|
+
) {}
|
|
89
|
+
}
|
|
90
|
+
class B {
|
|
91
|
+
constructor(
|
|
92
|
+
public a: number,
|
|
93
|
+
public b: number,
|
|
94
|
+
) {}
|
|
95
|
+
}
|
|
96
|
+
expect(isShallowEqual(new A(1, 2), new B(1, 2))).toBeFalsy();
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
});
|
package/src/data.ts
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { AnyObject } from './utils/types.js';
|
|
2
|
+
|
|
3
|
+
export const isShallowEqual = (a: unknown, b: unknown): boolean => {
|
|
4
|
+
if (a === b) return true;
|
|
5
|
+
|
|
6
|
+
if (
|
|
7
|
+
typeof a !== 'object' ||
|
|
8
|
+
typeof b !== 'object' ||
|
|
9
|
+
a === null ||
|
|
10
|
+
b === null
|
|
11
|
+
) {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
if (a.constructor !== b.constructor) return false;
|
|
16
|
+
|
|
17
|
+
const isArrayA = Array.isArray(a);
|
|
18
|
+
|
|
19
|
+
if (isArrayA !== Array.isArray(b)) return false;
|
|
20
|
+
|
|
21
|
+
if (isArrayA) {
|
|
22
|
+
const arrA = a as unknown[];
|
|
23
|
+
const arrB = b as unknown[];
|
|
24
|
+
if (arrA.length !== arrB.length) return false;
|
|
25
|
+
|
|
26
|
+
for (const [i, element] of arrA.entries()) {
|
|
27
|
+
if (element !== arrB[i]) return false;
|
|
28
|
+
}
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
if (a instanceof Date) return a.getTime() === (b as Date).getTime();
|
|
33
|
+
|
|
34
|
+
if (a instanceof RegExp) return a.toString() === (b as RegExp).toString();
|
|
35
|
+
|
|
36
|
+
const aKeys = Object.keys(a);
|
|
37
|
+
const bKeys = Object.keys(b);
|
|
38
|
+
|
|
39
|
+
if (aKeys.length !== bKeys.length) return false;
|
|
40
|
+
|
|
41
|
+
const bObj = b as AnyObject;
|
|
42
|
+
for (const key of aKeys) {
|
|
43
|
+
if (!Object.hasOwn(bObj, key) || (a as AnyObject)[key] !== bObj[key]) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return true;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
export const flatMapDeep = <TSource, TNewValue>(
|
|
52
|
+
arr: TSource | TSource[],
|
|
53
|
+
fn: (value: TSource, i: number, arr: TSource[]) => TNewValue,
|
|
54
|
+
): TNewValue[] =>
|
|
55
|
+
Array.isArray(arr)
|
|
56
|
+
? arr.flatMap((c: TSource): TNewValue[] => flatMapDeep(c, fn))
|
|
57
|
+
: [fn(arr, 0, [arr])];
|
|
58
|
+
|
|
59
|
+
export const safeJsonParse = (json: string) => {
|
|
60
|
+
try {
|
|
61
|
+
return JSON.parse(json);
|
|
62
|
+
} catch {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
};
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { describe, expect, test } from 'vitest';
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
changeDate,
|
|
5
|
+
dayTimeDuration,
|
|
6
|
+
getFormatDuration,
|
|
7
|
+
timeDuration,
|
|
8
|
+
} from './date-time.js';
|
|
9
|
+
import { unitsToMs } from './ms.js';
|
|
10
|
+
|
|
11
|
+
describe('date-time', () => {
|
|
12
|
+
describe('dayTimeDuration', () => {
|
|
13
|
+
test('-1 minute', () => {
|
|
14
|
+
expect(dayTimeDuration(-unitsToMs.min)).toStrictEqual({
|
|
15
|
+
days: 0,
|
|
16
|
+
hours: 0,
|
|
17
|
+
seconds: 0,
|
|
18
|
+
minutes: 0,
|
|
19
|
+
milliseconds: 0,
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
test('1 minute', () => {
|
|
24
|
+
expect(dayTimeDuration(unitsToMs.min)).toStrictEqual({
|
|
25
|
+
days: 0,
|
|
26
|
+
hours: 0,
|
|
27
|
+
seconds: 0,
|
|
28
|
+
minutes: 1,
|
|
29
|
+
milliseconds: 0,
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
test('30 minutes 45 seconds', () => {
|
|
34
|
+
expect(
|
|
35
|
+
dayTimeDuration(unitsToMs.min * 30 + unitsToMs.sec * 45),
|
|
36
|
+
).toStrictEqual({
|
|
37
|
+
days: 0,
|
|
38
|
+
hours: 0,
|
|
39
|
+
seconds: 45,
|
|
40
|
+
minutes: 30,
|
|
41
|
+
milliseconds: 0,
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
test('34 days 59 minutes 59 seconds', () => {
|
|
46
|
+
expect(
|
|
47
|
+
dayTimeDuration(
|
|
48
|
+
34 * unitsToMs.day + unitsToMs.min * 59 + unitsToMs.sec * 59,
|
|
49
|
+
),
|
|
50
|
+
).toStrictEqual({
|
|
51
|
+
days: 34,
|
|
52
|
+
hours: 0,
|
|
53
|
+
minutes: 59,
|
|
54
|
+
seconds: 59,
|
|
55
|
+
milliseconds: 0,
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
describe('timeDuration', () => {
|
|
60
|
+
test('-1 minute', () => {
|
|
61
|
+
expect(timeDuration(-unitsToMs.min)).toStrictEqual({
|
|
62
|
+
hours: 0,
|
|
63
|
+
seconds: 0,
|
|
64
|
+
minutes: 0,
|
|
65
|
+
milliseconds: 0,
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
test('1 minute', () => {
|
|
70
|
+
expect(timeDuration(unitsToMs.min)).toStrictEqual({
|
|
71
|
+
hours: 0,
|
|
72
|
+
seconds: 0,
|
|
73
|
+
minutes: 1,
|
|
74
|
+
milliseconds: 0,
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
test('30 minutes 45 seconds', () => {
|
|
79
|
+
expect(
|
|
80
|
+
timeDuration(unitsToMs.min * 30 + unitsToMs.sec * 45),
|
|
81
|
+
).toStrictEqual({
|
|
82
|
+
hours: 0,
|
|
83
|
+
seconds: 45,
|
|
84
|
+
minutes: 30,
|
|
85
|
+
milliseconds: 0,
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
test('34 days 59 minutes 59 seconds', () => {
|
|
90
|
+
expect(
|
|
91
|
+
timeDuration(
|
|
92
|
+
34 * unitsToMs.day + unitsToMs.min * 59 + unitsToMs.sec * 59,
|
|
93
|
+
),
|
|
94
|
+
).toStrictEqual({
|
|
95
|
+
hours: 2_937_600_000,
|
|
96
|
+
minutes: 59,
|
|
97
|
+
seconds: 59,
|
|
98
|
+
milliseconds: 0,
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
describe('getFormatDuration', () => {
|
|
103
|
+
test('30 minutes', () => {
|
|
104
|
+
const dateA = new Date(`2025-02-10T09:53:00.000Z`);
|
|
105
|
+
const dateB = changeDate(dateA, 30, 'minutes');
|
|
106
|
+
expect(getFormatDuration(dateA, dateB)).toBe('30 минут');
|
|
107
|
+
});
|
|
108
|
+
test('2 hours 45 minutes 10 seconds', () => {
|
|
109
|
+
const dateA = new Date(`2025-02-10T09:53:00.000Z`);
|
|
110
|
+
const dateB = changeDate(dateA, 2, 'hours', 45, 'minutes', 10, 'seconds');
|
|
111
|
+
expect(getFormatDuration(dateA, dateB)).toBe('2 часа 45 минут 10 секунд');
|
|
112
|
+
});
|
|
113
|
+
test('2 hours 45 minutes 10 seconds (compact)', () => {
|
|
114
|
+
const dateA = new Date(`2025-02-10T09:53:00.000Z`);
|
|
115
|
+
const dateB = changeDate(dateA, 2, 'hours', 45, 'minutes', 10, 'seconds');
|
|
116
|
+
expect(getFormatDuration(dateA, dateB, true)).toBe('2 ч 45 мин 10 сек');
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
});
|