@bitfiber/utils 1.0.1 → 1.0.3
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/LICENSE.txt +1 -1
- package/README.md +1 -1
- package/dist/arr/at/at.js.map +1 -0
- package/{arr → dist/arr}/cnd/cnd.d.ts +63 -1
- package/{arr → dist/arr}/cnd/cnd.js +1 -1
- package/dist/arr/cnd/cnd.js.map +1 -0
- package/dist/arr/diff-arr/diff-arr.d.ts +30 -0
- package/dist/arr/diff-arr/diff-arr.js.map +1 -0
- package/dist/arr/fill/fill.js.map +1 -0
- package/{arr → dist/arr}/for-each-arr/for-each-arr.d.ts +1 -1
- package/{arr → dist/arr}/for-each-arr/for-each-arr.js +1 -1
- package/dist/arr/for-each-arr/for-each-arr.js.map +1 -0
- package/{arr → dist/arr}/index-by/index-by.d.ts +1 -1
- package/{arr → dist/arr}/index-by/index-by.js +1 -1
- package/dist/arr/index-by/index-by.js.map +1 -0
- package/dist/arr/index.d.ts +8 -0
- package/dist/arr/index.js +9 -0
- package/dist/arr/index.js.map +1 -0
- package/{arr → dist/arr}/pluck/pluck.d.ts +1 -1
- package/dist/arr/pluck/pluck.js.map +1 -0
- package/dist/arr/within/within.js.map +1 -0
- package/dist/common/copy/copy.js.map +1 -0
- package/dist/common/equals/equals.js.map +1 -0
- package/{common → dist/common}/error.d.ts +7 -1
- package/dist/common/error.js.map +1 -0
- package/dist/common/for-each/for-each.js.map +1 -0
- package/dist/common/get-unique-num-id/get-unique-num-id.js.map +1 -0
- package/{common → dist/common}/get-unique-str-id/get-unique-str-id.js +1 -1
- package/dist/common/get-unique-str-id/get-unique-str-id.js.map +1 -0
- package/dist/common/has-iterator/has-iterator.js.map +1 -0
- package/dist/common/index.d.ts +17 -0
- package/dist/common/index.js +17 -0
- package/dist/common/index.js.map +1 -0
- package/dist/common/interrupt.d.ts +4 -0
- package/dist/common/interrupt.js +5 -0
- package/dist/common/interrupt.js.map +1 -0
- package/dist/common/is/is.js.map +1 -0
- package/dist/common/is-empty/is-empty.js.map +1 -0
- package/dist/common/random/random.js.map +1 -0
- package/dist/common/same/same.js.map +1 -0
- package/dist/common/stub/stub.js.map +1 -0
- package/dist/common/to-float/to-float.js.map +1 -0
- package/dist/common/to-int/to-int.js.map +1 -0
- package/dist/common/to-sorted-string/to-sorted-string.js.map +1 -0
- package/{common → dist/common}/types.d.ts +0 -11
- package/{arr → dist/common}/types.js.map +1 -1
- package/dist/dom/closest/closest.js.map +1 -0
- package/{dom → dist/dom}/document/document.js +1 -1
- package/dist/dom/document/document.js.map +1 -0
- package/{dom → dist/dom}/download-file/download-file.js +1 -1
- package/dist/dom/download-file/download-file.js.map +1 -0
- package/{dom → dist/dom}/for-each-elements/for-each-elements.js +1 -1
- package/dist/dom/for-each-elements/for-each-elements.js.map +1 -0
- package/{dom → dist/dom}/for-each-nodes/for-each-nodes.js +1 -1
- package/dist/dom/for-each-nodes/for-each-nodes.js.map +1 -0
- package/dist/dom/get-all-styles/get-all-styles.js.map +1 -0
- package/dist/dom/get-body/get-body.js.map +1 -0
- package/dist/dom/get-html/get-html.js.map +1 -0
- package/dist/dom/get-non-static-parent/get-non-static-parent.js.map +1 -0
- package/dist/dom/get-offset-from-doc/get-offset-from-doc.js.map +1 -0
- package/{dom → dist/dom}/get-offset-from-parent/get-offset-from-parent.js +1 -1
- package/dist/dom/get-offset-from-parent/get-offset-from-parent.js.map +1 -0
- package/dist/dom/get-offset-from-win/get-offset-from-win.js.map +1 -0
- package/dist/dom/get-scroll-width/get-scroll-width.js.map +1 -0
- package/dist/dom/get-style/get-style.js.map +1 -0
- package/{dom → dist/dom}/get-styles/get-styles.d.ts +1 -1
- package/dist/dom/get-styles/get-styles.js.map +1 -0
- package/{dom → dist/dom}/get-valid-style-name/get-valid-style-name.js +1 -1
- package/dist/dom/get-valid-style-name/get-valid-style-name.js.map +1 -0
- package/{dom → dist/dom}/get-window/get-window.js +1 -1
- package/dist/dom/get-window/get-window.js.map +1 -0
- package/dist/dom/has-name/has-name.js.map +1 -0
- package/dist/dom/index.d.ts +25 -0
- package/dist/dom/index.js +25 -0
- package/dist/dom/index.js.map +1 -0
- package/dist/dom/is-comment/is-comment.js.map +1 -0
- package/dist/dom/is-element/is-element.js.map +1 -0
- package/dist/dom/is-text/is-text.js.map +1 -0
- package/{dom → dist/dom}/set-offset-from-parent/set-offset-from-parent.js +1 -1
- package/dist/dom/set-offset-from-parent/set-offset-from-parent.js.map +1 -0
- package/dist/dom/set-style/set-style.js.map +1 -0
- package/{dom → dist/dom}/set-styles/set-styles.d.ts +1 -1
- package/dist/dom/set-styles/set-styles.js.map +1 -0
- package/{num → dist/dom}/types.js.map +1 -1
- package/{env → dist/env}/get-browser/get-browser.js +1 -1
- package/dist/env/get-browser/get-browser.js.map +1 -0
- package/{env → dist/env}/get-engine/get-engine.js +1 -1
- package/dist/env/get-engine/get-engine.js.map +1 -0
- package/{env → dist/env}/get-os/get-os.js +1 -1
- package/dist/env/get-os/get-os.js.map +1 -0
- package/{env → dist/env}/get-platform/get-platform.js +1 -1
- package/dist/env/get-platform/get-platform.js.map +1 -0
- package/dist/env/index.d.ts +21 -0
- package/dist/env/index.js +21 -0
- package/dist/env/index.js.map +1 -0
- package/dist/env/is-browser/is-browser.js.map +1 -0
- package/dist/env/is-chrome-like/is-chrome-like.js.map +1 -0
- package/dist/env/is-desktop/is-desktop.js.map +1 -0
- package/dist/env/is-engine/is-engine.js.map +1 -0
- package/dist/env/is-firefox-like/is-firefox-like.js.map +1 -0
- package/dist/env/is-mobile/is-mobile.js.map +1 -0
- package/dist/env/is-os/is-os.js.map +1 -0
- package/dist/env/is-portable/is-portable.js.map +1 -0
- package/dist/env/is-safari-like/is-safari-like.js.map +1 -0
- package/dist/env/is-stationary/is-stationary.js.map +1 -0
- package/dist/env/is-tablet/is-tablet.js.map +1 -0
- package/dist/env/is-tv/is-tv.js.map +1 -0
- package/{env → dist/env}/matches/matches.js +1 -1
- package/dist/env/matches/matches.js.map +1 -0
- package/{env → dist/env}/matches-with-browsers/matches-with-browsers.js +1 -1
- package/dist/env/matches-with-browsers/matches-with-browsers.js.map +1 -0
- package/{env → dist/env}/matches-with-version/matches-with-version.js +1 -1
- package/dist/env/matches-with-version/matches-with-version.js.map +1 -0
- package/{env → dist/env}/private/private.d.ts +1 -1
- package/{env → dist/env}/private/private.js +4 -4
- package/dist/env/private/private.js.map +1 -0
- package/{dom → dist/env}/types.js.map +1 -1
- package/{env → dist/env}/user-agent/user-agent.js +4 -1
- package/dist/env/user-agent/user-agent.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/{num/types.d.ts → dist/num/in-range/in-range.d.ts} +7 -0
- package/{num → dist/num}/in-range/in-range.js +1 -1
- package/dist/num/in-range/in-range.js.map +1 -0
- package/dist/num/index.d.ts +2 -0
- package/dist/num/index.js +3 -0
- package/dist/num/index.js.map +1 -0
- package/dist/num/round/round.js.map +1 -0
- package/{obj → dist/obj}/constant/constant.d.ts +1 -1
- package/dist/obj/constant/constant.js.map +1 -0
- package/{obj → dist/obj}/deep-constant/deep-constant.d.ts +1 -1
- package/{obj → dist/obj}/deep-constant/deep-constant.js +1 -1
- package/dist/obj/deep-constant/deep-constant.js.map +1 -0
- package/{obj/types.d.ts → dist/obj/diff-obj/diff-obj.d.ts} +8 -1
- package/{obj → dist/obj}/diff-obj/diff-obj.js +1 -1
- package/dist/obj/diff-obj/diff-obj.js.map +1 -0
- package/{obj → dist/obj}/exclude/exclude.d.ts +1 -1
- package/{obj → dist/obj}/exclude/exclude.js +1 -1
- package/dist/obj/exclude/exclude.js.map +1 -0
- package/{obj → dist/obj}/extend/extend.d.ts +1 -1
- package/{obj → dist/obj}/extend/extend.js +1 -1
- package/dist/obj/extend/extend.js.map +1 -0
- package/{obj → dist/obj}/for-each-obj/for-each-obj.d.ts +1 -1
- package/{obj → dist/obj}/for-each-obj/for-each-obj.js +1 -1
- package/dist/obj/for-each-obj/for-each-obj.js.map +1 -0
- package/{obj → dist/obj}/has-own/has-own.d.ts +1 -1
- package/dist/obj/has-own/has-own.js.map +1 -0
- package/{obj → dist/obj}/include/include.d.ts +1 -1
- package/{obj → dist/obj}/include/include.js +1 -1
- package/dist/obj/include/include.js.map +1 -0
- package/dist/obj/index.d.ts +12 -0
- package/dist/obj/index.js +13 -0
- package/dist/obj/index.js.map +1 -0
- package/{obj → dist/obj}/keys/keys.d.ts +1 -1
- package/dist/obj/keys/keys.js.map +1 -0
- package/{obj → dist/obj}/map-obj/map-obj.d.ts +1 -1
- package/dist/obj/map-obj/map-obj.js.map +1 -0
- package/{obj → dist/obj}/map-obj-to-arr/map-obj-to-arr.d.ts +1 -1
- package/dist/obj/map-obj-to-arr/map-obj-to-arr.js.map +1 -0
- package/{obj → dist/obj}/values/values.d.ts +1 -1
- package/dist/obj/values/values.js.map +1 -0
- package/dist/str/index.d.ts +3 -0
- package/dist/str/index.js +4 -0
- package/dist/str/index.js.map +1 -0
- package/dist/str/to-camel-case/to-camel-case.js.map +1 -0
- package/dist/str/to-hash/to-hash.js.map +1 -0
- package/dist/str/with-capital/with-capital.js.map +1 -0
- package/package.json +71 -73
- package/src/arr/at/at.ts +10 -0
- package/src/arr/cnd/cnd.ts +188 -0
- package/src/arr/diff-arr/diff-arr.ts +66 -0
- package/src/arr/fill/fill.ts +10 -0
- package/src/arr/for-each-arr/for-each-arr.ts +25 -0
- package/src/arr/index-by/index-by.ts +19 -0
- package/src/arr/index.ts +11 -0
- package/src/arr/pluck/pluck.ts +14 -0
- package/src/arr/within/within.ts +14 -0
- package/src/common/copy/copy.ts +89 -0
- package/src/common/equals/equals.ts +142 -0
- package/src/common/error.ts +34 -0
- package/src/common/for-each/for-each.ts +36 -0
- package/src/common/get-unique-num-id/get-unique-num-id.ts +8 -0
- package/src/common/get-unique-str-id/get-unique-str-id.ts +18 -0
- package/src/common/has-iterator/has-iterator.ts +7 -0
- package/src/common/index.ts +23 -0
- package/{common/types.js → src/common/interrupt.ts} +0 -1
- package/src/common/is/is.ts +244 -0
- package/src/common/is-empty/is-empty.ts +26 -0
- package/src/common/random/random.ts +8 -0
- package/src/common/same/same.ts +8 -0
- package/src/common/stub/stub.ts +7 -0
- package/src/common/to-float/to-float.ts +10 -0
- package/src/common/to-int/to-int.ts +10 -0
- package/src/common/to-sorted-string/to-sorted-string.ts +58 -0
- package/src/common/types.ts +66 -0
- package/src/dom/closest/closest.ts +24 -0
- package/src/dom/document/document.ts +25 -0
- package/src/dom/download-file/download-file.ts +31 -0
- package/src/dom/for-each-elements/for-each-elements.ts +17 -0
- package/src/dom/for-each-nodes/for-each-nodes.ts +15 -0
- package/src/dom/get-all-styles/get-all-styles.ts +10 -0
- package/src/dom/get-body/get-body.ts +9 -0
- package/src/dom/get-html/get-html.ts +9 -0
- package/src/dom/get-non-static-parent/get-non-static-parent.ts +9 -0
- package/src/dom/get-offset-from-doc/get-offset-from-doc.ts +18 -0
- package/src/dom/get-offset-from-parent/get-offset-from-parent.ts +48 -0
- package/src/dom/get-offset-from-win/get-offset-from-win.ts +9 -0
- package/src/dom/get-scroll-width/get-scroll-width.ts +33 -0
- package/src/dom/get-style/get-style.ts +25 -0
- package/src/dom/get-styles/get-styles.ts +14 -0
- package/src/dom/get-valid-style-name/get-valid-style-name.ts +45 -0
- package/src/dom/get-window/get-window.ts +17 -0
- package/src/dom/has-name/has-name.ts +8 -0
- package/src/dom/index.ts +25 -0
- package/src/dom/is-comment/is-comment.ts +7 -0
- package/src/dom/is-element/is-element.ts +7 -0
- package/src/dom/is-text/is-text.ts +7 -0
- package/src/dom/set-offset-from-parent/set-offset-from-parent.ts +46 -0
- package/src/dom/set-style/set-style.ts +14 -0
- package/src/dom/set-styles/set-styles.ts +17 -0
- package/src/dom/types.ts +20 -0
- package/src/env/get-browser/get-browser.ts +38 -0
- package/src/env/get-engine/get-engine.ts +27 -0
- package/src/env/get-os/get-os.ts +31 -0
- package/src/env/get-platform/get-platform.ts +34 -0
- package/src/env/index.ts +24 -0
- package/src/env/is-browser/is-browser.ts +15 -0
- package/src/env/is-chrome-like/is-chrome-like.ts +9 -0
- package/src/env/is-desktop/is-desktop.ts +9 -0
- package/src/env/is-engine/is-engine.ts +12 -0
- package/src/env/is-firefox-like/is-firefox-like.ts +9 -0
- package/src/env/is-mobile/is-mobile.ts +9 -0
- package/src/env/is-os/is-os.ts +13 -0
- package/src/env/is-portable/is-portable.ts +8 -0
- package/src/env/is-safari-like/is-safari-like.ts +9 -0
- package/src/env/is-stationary/is-stationary.ts +8 -0
- package/src/env/is-tablet/is-tablet.ts +9 -0
- package/src/env/is-tv/is-tv.ts +9 -0
- package/src/env/matches/matches.ts +55 -0
- package/src/env/matches-with-browsers/matches-with-browsers.ts +55 -0
- package/src/env/matches-with-version/matches-with-version.ts +44 -0
- package/src/env/private/private.ts +82 -0
- package/src/env/types.ts +146 -0
- package/src/env/user-agent/user-agent.ts +29 -0
- package/src/index.ts +7 -0
- package/src/num/in-range/in-range.ts +54 -0
- package/src/num/index.ts +2 -0
- package/src/num/round/round.ts +10 -0
- package/src/obj/constant/constant.ts +9 -0
- package/src/obj/deep-constant/deep-constant.ts +20 -0
- package/src/obj/diff-obj/diff-obj.ts +87 -0
- package/src/obj/exclude/exclude.ts +18 -0
- package/src/obj/extend/extend.ts +54 -0
- package/src/obj/for-each-obj/for-each-obj.ts +17 -0
- package/src/obj/has-own/has-own.ts +12 -0
- package/src/obj/include/include.ts +17 -0
- package/src/obj/index.ts +12 -0
- package/src/obj/keys/keys.ts +9 -0
- package/src/obj/map-obj/map-obj.ts +14 -0
- package/src/obj/map-obj-to-arr/map-obj-to-arr.ts +14 -0
- package/src/obj/values/values.ts +12 -0
- package/src/str/index.ts +3 -0
- package/src/str/to-camel-case/to-camel-case.ts +17 -0
- package/src/str/to-hash/to-hash.ts +21 -0
- package/src/str/with-capital/with-capital.ts +8 -0
- package/arr/at/at.js.map +0 -1
- package/arr/cnd/cnd.js.map +0 -1
- package/arr/diff-arr/diff-arr.d.ts +0 -10
- package/arr/diff-arr/diff-arr.js.map +0 -1
- package/arr/fill/fill.js.map +0 -1
- package/arr/for-each-arr/for-each-arr.js.map +0 -1
- package/arr/index-by/index-by.js.map +0 -1
- package/arr/index.d.ts +0 -9
- package/arr/index.js +0 -10
- package/arr/index.js.map +0 -1
- package/arr/pluck/pluck.js.map +0 -1
- package/arr/types.d.ts +0 -84
- package/arr/within/within.js.map +0 -1
- package/common/copy/copy.js.map +0 -1
- package/common/equals/equals.js.map +0 -1
- package/common/error.js.map +0 -1
- package/common/for-each/for-each.js.map +0 -1
- package/common/get-unique-num-id/get-unique-num-id.js.map +0 -1
- package/common/get-unique-str-id/get-unique-str-id.js.map +0 -1
- package/common/has-iterator/has-iterator.js.map +0 -1
- package/common/index.d.ts +0 -16
- package/common/index.js +0 -17
- package/common/index.js.map +0 -1
- package/common/is/is.js.map +0 -1
- package/common/is-empty/is-empty.js.map +0 -1
- package/common/random/random.js.map +0 -1
- package/common/same/same.js.map +0 -1
- package/common/stub/stub.js.map +0 -1
- package/common/to-float/to-float.js.map +0 -1
- package/common/to-int/to-int.js.map +0 -1
- package/common/to-sorted-string/to-sorted-string.js.map +0 -1
- package/common/types.js.map +0 -1
- package/dom/closest/closest.js.map +0 -1
- package/dom/document/document.js.map +0 -1
- package/dom/download-file/download-file.js.map +0 -1
- package/dom/for-each-elements/for-each-elements.js.map +0 -1
- package/dom/for-each-nodes/for-each-nodes.js.map +0 -1
- package/dom/get-all-styles/get-all-styles.js.map +0 -1
- package/dom/get-body/get-body.js.map +0 -1
- package/dom/get-html/get-html.js.map +0 -1
- package/dom/get-non-static-parent/get-non-static-parent.js.map +0 -1
- package/dom/get-offset-from-doc/get-offset-from-doc.js.map +0 -1
- package/dom/get-offset-from-parent/get-offset-from-parent.js.map +0 -1
- package/dom/get-offset-from-win/get-offset-from-win.js.map +0 -1
- package/dom/get-scroll-width/get-scroll-width.js.map +0 -1
- package/dom/get-style/get-style.js.map +0 -1
- package/dom/get-styles/get-styles.js.map +0 -1
- package/dom/get-valid-style-name/get-valid-style-name.js.map +0 -1
- package/dom/get-window/get-window.js.map +0 -1
- package/dom/has-name/has-name.js.map +0 -1
- package/dom/index.d.ts +0 -25
- package/dom/index.js +0 -26
- package/dom/index.js.map +0 -1
- package/dom/is-comment/is-comment.js.map +0 -1
- package/dom/is-element/is-element.js.map +0 -1
- package/dom/is-text/is-text.js.map +0 -1
- package/dom/set-offset-from-parent/set-offset-from-parent.js.map +0 -1
- package/dom/set-style/set-style.js.map +0 -1
- package/dom/set-styles/set-styles.js.map +0 -1
- package/env/get-browser/get-browser.js.map +0 -1
- package/env/get-engine/get-engine.js.map +0 -1
- package/env/get-os/get-os.js.map +0 -1
- package/env/get-platform/get-platform.js.map +0 -1
- package/env/index.d.ts +0 -21
- package/env/index.js +0 -22
- package/env/index.js.map +0 -1
- package/env/is-browser/is-browser.js.map +0 -1
- package/env/is-chrome-like/is-chrome-like.js.map +0 -1
- package/env/is-desktop/is-desktop.js.map +0 -1
- package/env/is-engine/is-engine.js.map +0 -1
- package/env/is-firefox-like/is-firefox-like.js.map +0 -1
- package/env/is-mobile/is-mobile.js.map +0 -1
- package/env/is-os/is-os.js.map +0 -1
- package/env/is-portable/is-portable.js.map +0 -1
- package/env/is-safari-like/is-safari-like.js.map +0 -1
- package/env/is-stationary/is-stationary.js.map +0 -1
- package/env/is-tablet/is-tablet.js.map +0 -1
- package/env/is-tv/is-tv.js.map +0 -1
- package/env/matches/matches.js.map +0 -1
- package/env/matches-with-browsers/matches-with-browsers.js.map +0 -1
- package/env/matches-with-version/matches-with-version.js.map +0 -1
- package/env/private/private.js.map +0 -1
- package/env/types.js.map +0 -1
- package/env/user-agent/user-agent.js.map +0 -1
- package/index.d.ts +0 -7
- package/index.js +0 -8
- package/index.js.map +0 -1
- package/num/in-range/in-range.d.ts +0 -8
- package/num/in-range/in-range.js.map +0 -1
- package/num/index.d.ts +0 -3
- package/num/index.js +0 -4
- package/num/index.js.map +0 -1
- package/num/round/round.js.map +0 -1
- package/num/types.js +0 -2
- package/obj/constant/constant.js.map +0 -1
- package/obj/deep-constant/deep-constant.js.map +0 -1
- package/obj/diff-obj/diff-obj.d.ts +0 -9
- package/obj/diff-obj/diff-obj.js.map +0 -1
- package/obj/exclude/exclude.js.map +0 -1
- package/obj/extend/extend.js.map +0 -1
- package/obj/for-each-obj/for-each-obj.js.map +0 -1
- package/obj/has-own/has-own.js.map +0 -1
- package/obj/include/include.js.map +0 -1
- package/obj/index.d.ts +0 -13
- package/obj/index.js +0 -14
- package/obj/index.js.map +0 -1
- package/obj/keys/keys.js.map +0 -1
- package/obj/map-obj/map-obj.js.map +0 -1
- package/obj/map-obj-to-arr/map-obj-to-arr.js.map +0 -1
- package/obj/types.js +0 -2
- package/obj/types.js.map +0 -1
- package/obj/values/values.js.map +0 -1
- package/str/index.d.ts +0 -3
- package/str/index.js +0 -4
- package/str/index.js.map +0 -1
- package/str/to-camel-case/to-camel-case.js.map +0 -1
- package/str/to-hash/to-hash.js.map +0 -1
- package/str/with-capital/with-capital.js.map +0 -1
- /package/{arr → dist/arr}/at/at.d.ts +0 -0
- /package/{arr → dist/arr}/at/at.js +0 -0
- /package/{arr → dist/arr}/diff-arr/diff-arr.js +0 -0
- /package/{arr → dist/arr}/fill/fill.d.ts +0 -0
- /package/{arr → dist/arr}/fill/fill.js +0 -0
- /package/{arr → dist/arr}/pluck/pluck.js +0 -0
- /package/{arr → dist/arr}/within/within.d.ts +0 -0
- /package/{arr → dist/arr}/within/within.js +0 -0
- /package/{common → dist/common}/copy/copy.d.ts +0 -0
- /package/{common → dist/common}/copy/copy.js +0 -0
- /package/{common → dist/common}/equals/equals.d.ts +0 -0
- /package/{common → dist/common}/equals/equals.js +0 -0
- /package/{common → dist/common}/error.js +0 -0
- /package/{common → dist/common}/for-each/for-each.d.ts +0 -0
- /package/{common → dist/common}/for-each/for-each.js +0 -0
- /package/{common → dist/common}/get-unique-num-id/get-unique-num-id.d.ts +0 -0
- /package/{common → dist/common}/get-unique-num-id/get-unique-num-id.js +0 -0
- /package/{common → dist/common}/get-unique-str-id/get-unique-str-id.d.ts +0 -0
- /package/{common → dist/common}/has-iterator/has-iterator.d.ts +0 -0
- /package/{common → dist/common}/has-iterator/has-iterator.js +0 -0
- /package/{common → dist/common}/is/is.d.ts +0 -0
- /package/{common → dist/common}/is/is.js +0 -0
- /package/{common → dist/common}/is-empty/is-empty.d.ts +0 -0
- /package/{common → dist/common}/is-empty/is-empty.js +0 -0
- /package/{common → dist/common}/random/random.d.ts +0 -0
- /package/{common → dist/common}/random/random.js +0 -0
- /package/{common → dist/common}/same/same.d.ts +0 -0
- /package/{common → dist/common}/same/same.js +0 -0
- /package/{common → dist/common}/stub/stub.d.ts +0 -0
- /package/{common → dist/common}/stub/stub.js +0 -0
- /package/{common → dist/common}/to-float/to-float.d.ts +0 -0
- /package/{common → dist/common}/to-float/to-float.js +0 -0
- /package/{common → dist/common}/to-int/to-int.d.ts +0 -0
- /package/{common → dist/common}/to-int/to-int.js +0 -0
- /package/{common → dist/common}/to-sorted-string/to-sorted-string.d.ts +0 -0
- /package/{common → dist/common}/to-sorted-string/to-sorted-string.js +0 -0
- /package/{arr → dist/common}/types.js +0 -0
- /package/{dom → dist/dom}/closest/closest.d.ts +0 -0
- /package/{dom → dist/dom}/closest/closest.js +0 -0
- /package/{dom → dist/dom}/document/document.d.ts +0 -0
- /package/{dom → dist/dom}/download-file/download-file.d.ts +0 -0
- /package/{dom → dist/dom}/for-each-elements/for-each-elements.d.ts +0 -0
- /package/{dom → dist/dom}/for-each-nodes/for-each-nodes.d.ts +0 -0
- /package/{dom → dist/dom}/get-all-styles/get-all-styles.d.ts +0 -0
- /package/{dom → dist/dom}/get-all-styles/get-all-styles.js +0 -0
- /package/{dom → dist/dom}/get-body/get-body.d.ts +0 -0
- /package/{dom → dist/dom}/get-body/get-body.js +0 -0
- /package/{dom → dist/dom}/get-html/get-html.d.ts +0 -0
- /package/{dom → dist/dom}/get-html/get-html.js +0 -0
- /package/{dom → dist/dom}/get-non-static-parent/get-non-static-parent.d.ts +0 -0
- /package/{dom → dist/dom}/get-non-static-parent/get-non-static-parent.js +0 -0
- /package/{dom → dist/dom}/get-offset-from-doc/get-offset-from-doc.d.ts +0 -0
- /package/{dom → dist/dom}/get-offset-from-doc/get-offset-from-doc.js +0 -0
- /package/{dom → dist/dom}/get-offset-from-parent/get-offset-from-parent.d.ts +0 -0
- /package/{dom → dist/dom}/get-offset-from-win/get-offset-from-win.d.ts +0 -0
- /package/{dom → dist/dom}/get-offset-from-win/get-offset-from-win.js +0 -0
- /package/{dom → dist/dom}/get-scroll-width/get-scroll-width.d.ts +0 -0
- /package/{dom → dist/dom}/get-scroll-width/get-scroll-width.js +0 -0
- /package/{dom → dist/dom}/get-style/get-style.d.ts +0 -0
- /package/{dom → dist/dom}/get-style/get-style.js +0 -0
- /package/{dom → dist/dom}/get-styles/get-styles.js +0 -0
- /package/{dom → dist/dom}/get-valid-style-name/get-valid-style-name.d.ts +0 -0
- /package/{dom → dist/dom}/get-window/get-window.d.ts +0 -0
- /package/{dom → dist/dom}/has-name/has-name.d.ts +0 -0
- /package/{dom → dist/dom}/has-name/has-name.js +0 -0
- /package/{dom → dist/dom}/is-comment/is-comment.d.ts +0 -0
- /package/{dom → dist/dom}/is-comment/is-comment.js +0 -0
- /package/{dom → dist/dom}/is-element/is-element.d.ts +0 -0
- /package/{dom → dist/dom}/is-element/is-element.js +0 -0
- /package/{dom → dist/dom}/is-text/is-text.d.ts +0 -0
- /package/{dom → dist/dom}/is-text/is-text.js +0 -0
- /package/{dom → dist/dom}/set-offset-from-parent/set-offset-from-parent.d.ts +0 -0
- /package/{dom → dist/dom}/set-style/set-style.d.ts +0 -0
- /package/{dom → dist/dom}/set-style/set-style.js +0 -0
- /package/{dom → dist/dom}/set-styles/set-styles.js +0 -0
- /package/{dom → dist/dom}/types.d.ts +0 -0
- /package/{dom → dist/dom}/types.js +0 -0
- /package/{env → dist/env}/get-browser/get-browser.d.ts +0 -0
- /package/{env → dist/env}/get-engine/get-engine.d.ts +0 -0
- /package/{env → dist/env}/get-os/get-os.d.ts +0 -0
- /package/{env → dist/env}/get-platform/get-platform.d.ts +0 -0
- /package/{env → dist/env}/is-browser/is-browser.d.ts +0 -0
- /package/{env → dist/env}/is-browser/is-browser.js +0 -0
- /package/{env → dist/env}/is-chrome-like/is-chrome-like.d.ts +0 -0
- /package/{env → dist/env}/is-chrome-like/is-chrome-like.js +0 -0
- /package/{env → dist/env}/is-desktop/is-desktop.d.ts +0 -0
- /package/{env → dist/env}/is-desktop/is-desktop.js +0 -0
- /package/{env → dist/env}/is-engine/is-engine.d.ts +0 -0
- /package/{env → dist/env}/is-engine/is-engine.js +0 -0
- /package/{env → dist/env}/is-firefox-like/is-firefox-like.d.ts +0 -0
- /package/{env → dist/env}/is-firefox-like/is-firefox-like.js +0 -0
- /package/{env → dist/env}/is-mobile/is-mobile.d.ts +0 -0
- /package/{env → dist/env}/is-mobile/is-mobile.js +0 -0
- /package/{env → dist/env}/is-os/is-os.d.ts +0 -0
- /package/{env → dist/env}/is-os/is-os.js +0 -0
- /package/{env → dist/env}/is-portable/is-portable.d.ts +0 -0
- /package/{env → dist/env}/is-portable/is-portable.js +0 -0
- /package/{env → dist/env}/is-safari-like/is-safari-like.d.ts +0 -0
- /package/{env → dist/env}/is-safari-like/is-safari-like.js +0 -0
- /package/{env → dist/env}/is-stationary/is-stationary.d.ts +0 -0
- /package/{env → dist/env}/is-stationary/is-stationary.js +0 -0
- /package/{env → dist/env}/is-tablet/is-tablet.d.ts +0 -0
- /package/{env → dist/env}/is-tablet/is-tablet.js +0 -0
- /package/{env → dist/env}/is-tv/is-tv.d.ts +0 -0
- /package/{env → dist/env}/is-tv/is-tv.js +0 -0
- /package/{env → dist/env}/matches/matches.d.ts +0 -0
- /package/{env → dist/env}/matches-with-browsers/matches-with-browsers.d.ts +0 -0
- /package/{env → dist/env}/matches-with-version/matches-with-version.d.ts +0 -0
- /package/{env → dist/env}/types.d.ts +0 -0
- /package/{env → dist/env}/types.js +0 -0
- /package/{env → dist/env}/user-agent/user-agent.d.ts +0 -0
- /package/{num → dist/num}/round/round.d.ts +0 -0
- /package/{num → dist/num}/round/round.js +0 -0
- /package/{obj → dist/obj}/constant/constant.js +0 -0
- /package/{obj → dist/obj}/has-own/has-own.js +0 -0
- /package/{obj → dist/obj}/keys/keys.js +0 -0
- /package/{obj → dist/obj}/map-obj/map-obj.js +0 -0
- /package/{obj → dist/obj}/map-obj-to-arr/map-obj-to-arr.js +0 -0
- /package/{obj → dist/obj}/values/values.js +0 -0
- /package/{str → dist/str}/to-camel-case/to-camel-case.d.ts +0 -0
- /package/{str → dist/str}/to-camel-case/to-camel-case.js +0 -0
- /package/{str → dist/str}/to-hash/to-hash.d.ts +0 -0
- /package/{str → dist/str}/to-hash/to-hash.js +0 -0
- /package/{str → dist/str}/with-capital/with-capital.d.ts +0 -0
- /package/{str → dist/str}/with-capital/with-capital.js +0 -0
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import {
|
|
2
|
+
isNumber, isBigInt, isBoolean, isString, isDate, isRegExp, isFunction, isMap, isSet, isObject, isArray, isTypedArray,
|
|
3
|
+
isBlob, isArrayBuffer, isWindow, isDocument, isFile, isFormData, isPromise, isObservable,
|
|
4
|
+
} from '../';
|
|
5
|
+
import {forEachObj} from '../../obj';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Creates a deep copy of a value of any type
|
|
9
|
+
* Objects, arrays, sets, maps etc. will be ignored if they have been visited to prevent looping
|
|
10
|
+
* @param value - anything
|
|
11
|
+
*/
|
|
12
|
+
export function copy<T>(value: T): T {
|
|
13
|
+
return _copy(value, new Map());
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function _copy(value: any, visited: Map<any, any>): any {
|
|
17
|
+
if (!value || isString(value) || isNumber(value) || isBigInt(value) || isBoolean(value) || isFunction(value)) {
|
|
18
|
+
return value;
|
|
19
|
+
} else if (isDate(value)) {
|
|
20
|
+
return new Date(value.getTime());
|
|
21
|
+
} else if (isArray(value)) {
|
|
22
|
+
if (visited.has(value)) {
|
|
23
|
+
return visited.get(value);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const arr: any[] = [];
|
|
27
|
+
visited.set(value, arr);
|
|
28
|
+
value.forEach(item => arr.push(_copy(item, visited)));
|
|
29
|
+
|
|
30
|
+
return arr;
|
|
31
|
+
} else if (isSet(value)) {
|
|
32
|
+
if (visited.has(value)) {
|
|
33
|
+
return visited.get(value);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const newSet = new Set();
|
|
37
|
+
visited.set(value, newSet);
|
|
38
|
+
value.forEach(item => newSet.add(_copy(item, visited)));
|
|
39
|
+
|
|
40
|
+
return newSet;
|
|
41
|
+
} else if (isMap(value)) {
|
|
42
|
+
if (visited.has(value)) {
|
|
43
|
+
return visited.get(value);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const newMap = new Map();
|
|
47
|
+
visited.set(value, newMap);
|
|
48
|
+
|
|
49
|
+
value.forEach((item, key) => newMap.set(_copy(key, visited), _copy(item, visited)));
|
|
50
|
+
|
|
51
|
+
return newMap;
|
|
52
|
+
} else if (isRegExp(value)) {
|
|
53
|
+
// @ts-ignore
|
|
54
|
+
const reg = new RegExp(value.source, value.toString().match(/[^/]*$/)[0]);
|
|
55
|
+
reg.lastIndex = value.lastIndex;
|
|
56
|
+
return reg;
|
|
57
|
+
} else if (isBlob(value)) {
|
|
58
|
+
return new Blob([value], {type: value.type});
|
|
59
|
+
} else if (isArrayBuffer(value)) {
|
|
60
|
+
return value.slice(0);
|
|
61
|
+
} else if (isTypedArray(value)) {
|
|
62
|
+
// @ts-ignore
|
|
63
|
+
return new value.constructor(value.buffer.slice(0), value.byteOffset, value.length);
|
|
64
|
+
} else if (isWindow(value) || isDocument(value) || isFile(value) || isFormData(value) || isPromise(value)
|
|
65
|
+
|| isObservable(value)) {
|
|
66
|
+
return value;
|
|
67
|
+
} else if (isObject(value)) {
|
|
68
|
+
if (visited.has(value)) {
|
|
69
|
+
return visited.get(value);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
const obj = Object.create(Object.getPrototypeOf(value));
|
|
73
|
+
visited.set(value, obj);
|
|
74
|
+
|
|
75
|
+
forEachObj(value, (val, key) => {
|
|
76
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
77
|
+
|
|
78
|
+
if (descriptor?.get || descriptor?.set) {
|
|
79
|
+
Object.defineProperty(obj, key, descriptor);
|
|
80
|
+
} else {
|
|
81
|
+
obj[key] = _copy(val, visited);
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
return obj;
|
|
86
|
+
} else {
|
|
87
|
+
return value;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Index, isNaN, isDate, isRegExp, isFunction, isDefined, isMap, isSet, isObject, isArray, isTypedArray,
|
|
3
|
+
} from '../';
|
|
4
|
+
import {hasOwn} from '../../obj';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Determines whether two values are equal.
|
|
8
|
+
* The comparison is performed to the full depth of nesting.
|
|
9
|
+
* Objects are equal if they have the same fields with equal values.
|
|
10
|
+
* Arrays and sets are equal if they have the same length and equal values in the same order.
|
|
11
|
+
* Maps are equal if they have the same keys with equal values.
|
|
12
|
+
* Objects, arrays, sets, maps etc. will be ignored if they have been visited to prevent looping
|
|
13
|
+
* @param value1 - anything
|
|
14
|
+
* @param value2 - anything
|
|
15
|
+
* @param sortFn - if added, arrays and sets will be sorted before comparison
|
|
16
|
+
*/
|
|
17
|
+
export function equals(value1: any, value2: any, sortFn?: (a: any, b: any) => number): boolean {
|
|
18
|
+
return _equals(value1, value2, new Map<any, true>(), sortFn);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function _equals(obj1: any, obj2: any, visited: Map<any, true>, sortFn?: (a: any, b: any) => number): boolean {
|
|
22
|
+
if (obj1 === obj2 || (isNaN(obj1) && isNaN(obj2))) {
|
|
23
|
+
return true;
|
|
24
|
+
} else if (isArray(obj1) || isTypedArray(obj1)) {
|
|
25
|
+
if (visited.has(obj1)) {
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
visited.set(obj1, true);
|
|
29
|
+
|
|
30
|
+
if ((!isArray(obj2) && !isTypedArray(obj2)) || obj1.length !== obj2.length) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
let arr1 = obj1;
|
|
35
|
+
let arr2 = obj2;
|
|
36
|
+
|
|
37
|
+
if (sortFn) {
|
|
38
|
+
arr1 = [...obj1].sort(sortFn);
|
|
39
|
+
arr2 = [...obj2].sort(sortFn);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
for (let i = 0; i < arr1.length; i++) {
|
|
43
|
+
if (!_equals(arr1[i], arr2[i], visited, sortFn)) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return true;
|
|
49
|
+
} else if (isFunction(obj1)) {
|
|
50
|
+
return false;
|
|
51
|
+
} else if (isDate(obj1)) {
|
|
52
|
+
return isDate(obj2) && obj1.getTime() === obj2.getTime();
|
|
53
|
+
} else if (isRegExp(obj1)) {
|
|
54
|
+
return isRegExp(obj2) && obj1.toString() === obj2.toString();
|
|
55
|
+
} else if (isMap(obj1)) {
|
|
56
|
+
if (visited.has(obj1)) {
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
visited.set(obj1, true);
|
|
60
|
+
|
|
61
|
+
if (!isMap(obj2) || obj1.size !== obj2.size) {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
const map = new Map<any, true>();
|
|
66
|
+
|
|
67
|
+
for (const [key, value] of obj1) {
|
|
68
|
+
if (!_equals(value, obj2.get(key), visited, sortFn)) {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
map.set(key, true);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
for (const [key, value] of obj2) {
|
|
76
|
+
if (!map.has(key) && isDefined(value)) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return true;
|
|
82
|
+
} else if (isSet(obj1)) {
|
|
83
|
+
if (visited.has(obj1)) {
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
visited.set(obj1, true);
|
|
87
|
+
|
|
88
|
+
if (!isSet(obj2) || obj1.size !== obj2.size) {
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const arr1 = Array.from(obj1);
|
|
93
|
+
const arr2 = Array.from(obj2);
|
|
94
|
+
|
|
95
|
+
if (sortFn) {
|
|
96
|
+
arr1.sort(sortFn);
|
|
97
|
+
arr2.sort(sortFn);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
for (let i = 0; i < arr1.length; i++) {
|
|
101
|
+
if (!_equals(arr1[i], arr2[i], visited, sortFn)) {
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
return true;
|
|
107
|
+
} else if (isObject(obj1)) {
|
|
108
|
+
if (visited.has(obj1)) {
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
111
|
+
visited.set(obj1, true);
|
|
112
|
+
|
|
113
|
+
if (!isObject(obj2) || isArray(obj2) || isTypedArray(obj2) || isDate(obj2) || isRegExp(obj2) || isMap(obj2)
|
|
114
|
+
|| isSet(obj2)) {
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
const obj: Index<true> = {};
|
|
119
|
+
|
|
120
|
+
for (const key in obj1) {
|
|
121
|
+
if (!hasOwn(obj1, key) || isFunction(obj1[key])) {
|
|
122
|
+
continue;
|
|
123
|
+
} else if (!_equals(obj1[key], obj2[key], visited, sortFn)) {
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
obj[key] = true;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
for (const key in obj2) {
|
|
131
|
+
if (!hasOwn(obj2, key) || isFunction(obj2[key])) {
|
|
132
|
+
continue;
|
|
133
|
+
} else if (!hasOwn(obj, key) && isDefined(obj2[key])) {
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
return true;
|
|
139
|
+
} else {
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents additional error options the BfError class
|
|
3
|
+
*/
|
|
4
|
+
export interface BfErrorOptions {
|
|
5
|
+
code?: string;
|
|
6
|
+
data?: any;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Extends the Error class and adds additional parameters: date, code, data
|
|
11
|
+
*/
|
|
12
|
+
export class BfError extends Error {
|
|
13
|
+
/**
|
|
14
|
+
* Creation date
|
|
15
|
+
*/
|
|
16
|
+
readonly date = new Date();
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Unique error code
|
|
20
|
+
*/
|
|
21
|
+
readonly code?: string;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Any additional data for error handling
|
|
25
|
+
*/
|
|
26
|
+
readonly data?: any;
|
|
27
|
+
|
|
28
|
+
constructor(massage?: string, options?: BfErrorOptions) {
|
|
29
|
+
super(massage);
|
|
30
|
+
this.name = 'BfError';
|
|
31
|
+
this.code = options?.code;
|
|
32
|
+
this.data = options?.data;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import {NumStr, BfError, INTERRUPT, isNumber, isFunction, isMap, isSet, isObject, hasIterator} from '../';
|
|
2
|
+
import {forEachArr} from '../../arr';
|
|
3
|
+
import {forEachObj} from '../../obj';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Iterates through all the items of any iterable object and calls a handler for each item
|
|
7
|
+
* If the handler returns INTERRUPT, the loop will be interrupted
|
|
8
|
+
* @param obj - any iterable object
|
|
9
|
+
* @param handler - function called for each item
|
|
10
|
+
* @param reverse - iterates in reverse order if true
|
|
11
|
+
*/
|
|
12
|
+
export function forEach(obj: any, handler: (value: any, key: NumStr, obj: any) => any, reverse?: boolean): void {
|
|
13
|
+
if (hasIterator(obj)) {
|
|
14
|
+
if (isMap(obj)) {
|
|
15
|
+
const iterable = Array.from(obj);
|
|
16
|
+
forEachArr(iterable, entry => handler(entry[1], entry[0], obj), reverse);
|
|
17
|
+
} else if (isFunction(obj.forEach) || isNumber(obj.length)) {
|
|
18
|
+
const iterable: any = isSet(obj) ? Array.from(obj) : obj;
|
|
19
|
+
forEachArr(iterable, (value, i) => handler(value, i, obj), reverse);
|
|
20
|
+
} else {
|
|
21
|
+
let i = 0;
|
|
22
|
+
for (const item of obj) {
|
|
23
|
+
if (handler(item, i++, obj) === INTERRUPT) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
} else if (isObject(obj)) {
|
|
29
|
+
forEachObj(obj, handler);
|
|
30
|
+
} else {
|
|
31
|
+
throw new BfError('Invalid iterable object', {
|
|
32
|
+
code: 'bf_utils_forEach_1',
|
|
33
|
+
data: obj,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import {random} from '../random/random';
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* Counter for the getUniqueStrId function
|
|
5
|
+
*/
|
|
6
|
+
let counter = 0;
|
|
7
|
+
|
|
8
|
+
/*
|
|
9
|
+
* Salt for the getUniqueStrId function
|
|
10
|
+
*/
|
|
11
|
+
const salt = random(7);
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Returns a unique string identifier for the current session
|
|
15
|
+
*/
|
|
16
|
+
export function getUniqueStrId(): string {
|
|
17
|
+
return `${salt}${++counter}`;
|
|
18
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export {
|
|
2
|
+
Nullish, NumStr, NumStrSym, Fn, Arr, TypedArr, Obj, Index, ArrObj, UnionToIntersection, ValueUnion, ValueIntersection,
|
|
3
|
+
} from './types';
|
|
4
|
+
export {INTERRUPT} from './interrupt';
|
|
5
|
+
export {BfError, BfErrorOptions} from './error';
|
|
6
|
+
export {stub} from './stub/stub';
|
|
7
|
+
export {
|
|
8
|
+
isNull, isUndefined, isDefined, isNullish, isNaN, isString, isNumber, isBigInt, isBoolean, isSymbol, isFunction,
|
|
9
|
+
isObject, isArray, isSet, isMap, isDate, isRegExp, isFile, isBlob, isFormData, isArrayBuffer, isDocument, isWindow,
|
|
10
|
+
isPromise, isObservable, isTypedArray, isUsualObject,
|
|
11
|
+
} from './is/is';
|
|
12
|
+
export {isEmpty} from './is-empty/is-empty';
|
|
13
|
+
export {same} from './same/same';
|
|
14
|
+
export {random} from './random/random';
|
|
15
|
+
export {toInt} from './to-int/to-int';
|
|
16
|
+
export {toFloat} from './to-float/to-float';
|
|
17
|
+
export {hasIterator} from './has-iterator/has-iterator';
|
|
18
|
+
export {getUniqueStrId} from './get-unique-str-id/get-unique-str-id';
|
|
19
|
+
export {getUniqueNumId} from './get-unique-num-id/get-unique-num-id';
|
|
20
|
+
export {toSortedString} from './to-sorted-string/to-sorted-string';
|
|
21
|
+
export {forEach} from './for-each/for-each';
|
|
22
|
+
export {equals} from './equals/equals';
|
|
23
|
+
export {copy} from './copy/copy';
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
import {Fn, TypedArr, Obj, Nullish} from '../';
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* Why is typeof or constructor used to check type?
|
|
5
|
+
* For 100 000 000 iterations type checking is spending:
|
|
6
|
+
* by typeof: ~75 milliseconds
|
|
7
|
+
* by constructor: ~75 milliseconds
|
|
8
|
+
* by instanceof: ~255 milliseconds
|
|
9
|
+
* by toString.call: ~850 milliseconds
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Returns true if the value is null, otherwise false
|
|
14
|
+
* @param value - anything
|
|
15
|
+
*/
|
|
16
|
+
export function isNull(value: any): value is null {
|
|
17
|
+
return value === null;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Returns true if the value is undefined, otherwise false
|
|
22
|
+
* @param value - anything
|
|
23
|
+
*/
|
|
24
|
+
export function isUndefined(value: any): value is undefined {
|
|
25
|
+
return typeof value === 'undefined';
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Returns true if the value is defined, otherwise false
|
|
30
|
+
* @param value - anything
|
|
31
|
+
*/
|
|
32
|
+
export function isDefined(value: any): boolean {
|
|
33
|
+
return typeof value !== 'undefined';
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Returns true if the value is undefined or null, otherwise false
|
|
38
|
+
* @param value - anything
|
|
39
|
+
*/
|
|
40
|
+
export function isNullish(value: any): value is Nullish {
|
|
41
|
+
return isNull(value) || isUndefined(value);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Returns true if the value is NaN, otherwise false
|
|
46
|
+
* @param value - anything
|
|
47
|
+
*/
|
|
48
|
+
export function isNaN(value: any): value is typeof NaN {
|
|
49
|
+
return Number.isNaN(value);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Returns true if the value is a string, otherwise false
|
|
54
|
+
* @param value - anything
|
|
55
|
+
*/
|
|
56
|
+
export function isString(value: any): value is string {
|
|
57
|
+
return typeof value === 'string';
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Returns true if the value is a number, otherwise false
|
|
62
|
+
* @param value - anything
|
|
63
|
+
*/
|
|
64
|
+
export function isNumber(value: any): value is number {
|
|
65
|
+
return typeof value === 'number';
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Returns true if the value is a big integer, otherwise false
|
|
70
|
+
* @param value - anything
|
|
71
|
+
*/
|
|
72
|
+
export function isBigInt(value: any): value is bigint {
|
|
73
|
+
return typeof value === 'bigint';
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Returns true if the value is a boolean, otherwise false
|
|
78
|
+
* @param value - anything
|
|
79
|
+
*/
|
|
80
|
+
export function isBoolean(value: any): value is boolean {
|
|
81
|
+
return typeof value === 'boolean';
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Returns true if the value is a symbol, otherwise false
|
|
86
|
+
* @param value - anything
|
|
87
|
+
*/
|
|
88
|
+
export function isSymbol(value: any): value is symbol {
|
|
89
|
+
return typeof value === 'symbol';
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Returns true if the value is a function, otherwise false
|
|
94
|
+
* @param value - anything
|
|
95
|
+
*/
|
|
96
|
+
export function isFunction(value: any): value is Fn {
|
|
97
|
+
return typeof value === 'function';
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Returns true if the value is an object, otherwise false
|
|
102
|
+
* @param value - anything
|
|
103
|
+
*/
|
|
104
|
+
export function isObject(value: any): value is Obj {
|
|
105
|
+
return !!value && typeof value === 'object';
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Returns true if the value is an array, otherwise false
|
|
110
|
+
* @param value - anything
|
|
111
|
+
*/
|
|
112
|
+
export function isArray(value: any): value is Array<any> {
|
|
113
|
+
return Array.isArray(value);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Returns true if the value is a set, otherwise false
|
|
118
|
+
* @param value - anything
|
|
119
|
+
*/
|
|
120
|
+
export function isSet(value: any): value is Set<any> {
|
|
121
|
+
return !!value && value.constructor === Set;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Returns true if the value is a map, otherwise false
|
|
126
|
+
* @param value - anything
|
|
127
|
+
*/
|
|
128
|
+
export function isMap(value: any): value is Map<any, any> {
|
|
129
|
+
return !!value && value.constructor === Map;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Returns true if the value is a date, otherwise false
|
|
134
|
+
* @param value - anything
|
|
135
|
+
*/
|
|
136
|
+
export function isDate(value: any): value is Date {
|
|
137
|
+
return !!value && value.constructor === Date;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Returns true if the value is a regular expression, otherwise false
|
|
142
|
+
* @param value - anything
|
|
143
|
+
*/
|
|
144
|
+
export function isRegExp(value: any): value is RegExp {
|
|
145
|
+
return !!value && value.constructor === RegExp;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Returns true if the value is a file, otherwise false
|
|
150
|
+
* @param value - anything
|
|
151
|
+
*/
|
|
152
|
+
export function isFile(value: any): value is File {
|
|
153
|
+
return !!value && value.constructor === File;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Returns true if the value is a blob, otherwise false
|
|
158
|
+
* @param value - anything
|
|
159
|
+
*/
|
|
160
|
+
export function isBlob(value: any): value is Blob {
|
|
161
|
+
return !!value && value.constructor === Blob;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Returns true if the value is form data, otherwise false
|
|
166
|
+
* @param value - anything
|
|
167
|
+
*/
|
|
168
|
+
export function isFormData(value: any): value is FormData {
|
|
169
|
+
return !!value && value.constructor === FormData;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Returns true if the value is an array buffer, otherwise false
|
|
174
|
+
* @param value - anything
|
|
175
|
+
*/
|
|
176
|
+
export function isArrayBuffer(value: any): value is ArrayBuffer {
|
|
177
|
+
return !!value && value.constructor === ArrayBuffer;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Returns true if the value is a document, otherwise false
|
|
182
|
+
* @param value - anything
|
|
183
|
+
*/
|
|
184
|
+
export function isDocument(value: any): value is Document {
|
|
185
|
+
return !!value && typeof Document === 'function' && value.constructor === Document;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Returns true if the value is a window, otherwise false
|
|
190
|
+
* @param value - anything
|
|
191
|
+
*/
|
|
192
|
+
export function isWindow(value: any): value is Window {
|
|
193
|
+
return !!value && value.window === value;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Returns true if the value is a promise, otherwise false
|
|
198
|
+
* @param value - anything
|
|
199
|
+
*/
|
|
200
|
+
export function isPromise(value: any): value is Promise<any> {
|
|
201
|
+
return !!value && (value.constructor === Promise || (isFunction(value.then) && isFunction(value.catch)));
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Returns true if the value is an observable, otherwise false
|
|
206
|
+
* @param value - anything
|
|
207
|
+
*/
|
|
208
|
+
export function isObservable(value: any): boolean {
|
|
209
|
+
return !!value && isFunction(value.pipe) && isFunction(value.subscribe);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* Returns true if the value is a typed array, otherwise false
|
|
214
|
+
* @param value - anything
|
|
215
|
+
*/
|
|
216
|
+
export function isTypedArray(value: any): value is TypedArr {
|
|
217
|
+
switch (value?.constructor) {
|
|
218
|
+
case Int8Array:
|
|
219
|
+
case Int16Array:
|
|
220
|
+
case Int32Array:
|
|
221
|
+
case Float32Array:
|
|
222
|
+
case Float64Array:
|
|
223
|
+
case Uint8Array:
|
|
224
|
+
case Uint8ClampedArray:
|
|
225
|
+
case Uint16Array:
|
|
226
|
+
case Uint32Array:
|
|
227
|
+
// case BigInt64Array:
|
|
228
|
+
// case BigUint64Array:
|
|
229
|
+
return true;
|
|
230
|
+
default:
|
|
231
|
+
return false;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Returns true if the value is a usual object, otherwise false
|
|
237
|
+
* @param value - anything
|
|
238
|
+
*/
|
|
239
|
+
export function isUsualObject(value: any): value is Obj {
|
|
240
|
+
return isObject(value) && !isArray(value) && !isTypedArray(value) && !isSet(value) && !isMap(value) && !isDate(value)
|
|
241
|
+
&& !isRegExp(value) && !isFile(value) && !isBlob(value) && !isFormData(value) && !isArrayBuffer(value) && !isWindow(
|
|
242
|
+
value,
|
|
243
|
+
) && !isDocument(value) && !isPromise(value) && !isObservable(value);
|
|
244
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import {isNumber, isBigInt, isBoolean, isSymbol, isString, isDate, isRegExp, isFunction, isDefined} from '../';
|
|
2
|
+
import {hasOwn} from '../../obj';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Returns true if the value is empty (null, undefined, NaN, Infinity, '', {}, [], Int32Array(), Set(), Map()),
|
|
6
|
+
* otherwise false
|
|
7
|
+
* @param value - anything
|
|
8
|
+
*/
|
|
9
|
+
export function isEmpty(value: any): boolean {
|
|
10
|
+
if (isNumber(value) || isBigInt(value) || isBoolean(value) || isSymbol(value)) {
|
|
11
|
+
return false;
|
|
12
|
+
} else if (!value) {
|
|
13
|
+
return true;
|
|
14
|
+
} else if (isString(value) || isDate(value) || isRegExp(value) || isFunction(value)) {
|
|
15
|
+
return false;
|
|
16
|
+
} else if (isFunction(value.forEach)) {
|
|
17
|
+
return value.length === 0 || value.size === 0;
|
|
18
|
+
} else {
|
|
19
|
+
for (const key in value) {
|
|
20
|
+
if (hasOwn(value, key) && isDefined(value[key])) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns a random integer between 0 and number, not exceeding a certain number of digits
|
|
3
|
+
* @param numberOfDigits - number of digits (default: 7, maximum: 15)
|
|
4
|
+
*/
|
|
5
|
+
export function random(numberOfDigits = 7): number {
|
|
6
|
+
numberOfDigits = numberOfDigits <= 15 ? numberOfDigits : 15;
|
|
7
|
+
return Math.round(Math.random() * Math.pow(10, numberOfDigits));
|
|
8
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import {NumStr, isNumber} from '../';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Converts a string to a float and replaces NaN and Infinity with 0
|
|
5
|
+
* @param value - a string or number
|
|
6
|
+
*/
|
|
7
|
+
export function toFloat(value: NumStr): number {
|
|
8
|
+
const num = isNumber(value) ? value : parseFloat(value);
|
|
9
|
+
return isFinite(num) ? num : 0;
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import {NumStr, isNumber} from '../';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Converts a string to an integer and replaces NaN and Infinity with 0
|
|
5
|
+
* @param value - a string or number
|
|
6
|
+
*/
|
|
7
|
+
export function toInt(value: NumStr): number {
|
|
8
|
+
const num = isNumber(value) ? value : parseInt(value, 10);
|
|
9
|
+
return isFinite(num) ? num : 0;
|
|
10
|
+
}
|