@take-out/helpers 0.0.28
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 +21 -0
- package/README.md +90 -0
- package/dist/cjs/array/fuzzy.cjs +51 -0
- package/dist/cjs/array/fuzzy.js +43 -0
- package/dist/cjs/array/fuzzy.js.map +6 -0
- package/dist/cjs/array/fuzzy.native.js +57 -0
- package/dist/cjs/array/fuzzy.native.js.map +6 -0
- package/dist/cjs/array/getRandomItem.cjs +30 -0
- package/dist/cjs/array/getRandomItem.js +25 -0
- package/dist/cjs/array/getRandomItem.js.map +6 -0
- package/dist/cjs/array/getRandomItem.native.js +31 -0
- package/dist/cjs/array/getRandomItem.native.js.map +6 -0
- package/dist/cjs/array/takeLast.cjs +26 -0
- package/dist/cjs/array/takeLast.js +21 -0
- package/dist/cjs/array/takeLast.js.map +6 -0
- package/dist/cjs/array/takeLast.native.js +28 -0
- package/dist/cjs/array/takeLast.native.js.map +6 -0
- package/dist/cjs/array/uniqBy.cjs +33 -0
- package/dist/cjs/array/uniqBy.js +28 -0
- package/dist/cjs/array/uniqBy.js.map +6 -0
- package/dist/cjs/array/uniqBy.native.js +44 -0
- package/dist/cjs/array/uniqBy.native.js.map +6 -0
- package/dist/cjs/assert.cjs +45 -0
- package/dist/cjs/assert.js +44 -0
- package/dist/cjs/assert.js.map +6 -0
- package/dist/cjs/assert.native.js +58 -0
- package/dist/cjs/assert.native.js.map +6 -0
- package/dist/cjs/async/abortable.cjs +49 -0
- package/dist/cjs/async/abortable.js +47 -0
- package/dist/cjs/async/abortable.js.map +6 -0
- package/dist/cjs/async/abortable.native.js +61 -0
- package/dist/cjs/async/abortable.native.js.map +6 -0
- package/dist/cjs/async/asyncContext.cjs +108 -0
- package/dist/cjs/async/asyncContext.js +104 -0
- package/dist/cjs/async/asyncContext.js.map +6 -0
- package/dist/cjs/async/asyncContext.native.js +108 -0
- package/dist/cjs/async/asyncContext.native.js.map +6 -0
- package/dist/cjs/async/idle.cjs +47 -0
- package/dist/cjs/async/idle.js +36 -0
- package/dist/cjs/async/idle.js.map +6 -0
- package/dist/cjs/async/idle.native.js +58 -0
- package/dist/cjs/async/idle.native.js.map +6 -0
- package/dist/cjs/async/interval.cjs +29 -0
- package/dist/cjs/async/interval.js +25 -0
- package/dist/cjs/async/interval.js.map +6 -0
- package/dist/cjs/async/interval.native.js +29 -0
- package/dist/cjs/async/interval.native.js.map +6 -0
- package/dist/cjs/async/isAborted.cjs +26 -0
- package/dist/cjs/async/isAborted.js +21 -0
- package/dist/cjs/async/isAborted.js.map +6 -0
- package/dist/cjs/async/isAborted.native.js +28 -0
- package/dist/cjs/async/isAborted.native.js.map +6 -0
- package/dist/cjs/async/sleep.cjs +29 -0
- package/dist/cjs/async/sleep.js +25 -0
- package/dist/cjs/async/sleep.js.map +6 -0
- package/dist/cjs/async/sleep.native.js +31 -0
- package/dist/cjs/async/sleep.native.js.map +6 -0
- package/dist/cjs/async/useAsync.cjs +44 -0
- package/dist/cjs/async/useAsync.js +37 -0
- package/dist/cjs/async/useAsync.js.map +6 -0
- package/dist/cjs/async/useAsync.native.js +50 -0
- package/dist/cjs/async/useAsync.native.js.map +6 -0
- package/dist/cjs/async/useAsyncEffect.cjs +74 -0
- package/dist/cjs/async/useAsyncEffect.js +68 -0
- package/dist/cjs/async/useAsyncEffect.js.map +6 -0
- package/dist/cjs/async/useAsyncEffect.native.js +76 -0
- package/dist/cjs/async/useAsyncEffect.native.js.map +6 -0
- package/dist/cjs/async/useLazyMount.cjs +45 -0
- package/dist/cjs/async/useLazyMount.js +38 -0
- package/dist/cjs/async/useLazyMount.js.map +6 -0
- package/dist/cjs/async/useLazyMount.native.js +40 -0
- package/dist/cjs/async/useLazyMount.native.js.map +6 -0
- package/dist/cjs/async/useLazyValue.cjs +39 -0
- package/dist/cjs/async/useLazyValue.js +35 -0
- package/dist/cjs/async/useLazyValue.js.map +6 -0
- package/dist/cjs/async/useLazyValue.native.js +35 -0
- package/dist/cjs/async/useLazyValue.native.js.map +6 -0
- package/dist/cjs/browser/clearIndexedDB.cjs +34 -0
- package/dist/cjs/browser/clearIndexedDB.js +31 -0
- package/dist/cjs/browser/clearIndexedDB.js.map +6 -0
- package/dist/cjs/browser/clearIndexedDB.native.js +42 -0
- package/dist/cjs/browser/clearIndexedDB.native.js.map +6 -0
- package/dist/cjs/browser/isActiveElementFormField.cjs +28 -0
- package/dist/cjs/browser/isActiveElementFormField.js +23 -0
- package/dist/cjs/browser/isActiveElementFormField.js.map +6 -0
- package/dist/cjs/browser/isActiveElementFormField.native.js +28 -0
- package/dist/cjs/browser/isActiveElementFormField.native.js.map +6 -0
- package/dist/cjs/browser/localStorage.cjs +200 -0
- package/dist/cjs/browser/localStorage.js +185 -0
- package/dist/cjs/browser/localStorage.js.map +6 -0
- package/dist/cjs/browser/localStorage.native.js +205 -0
- package/dist/cjs/browser/localStorage.native.js.map +6 -0
- package/dist/cjs/browser/openPopup.cjs +41 -0
- package/dist/cjs/browser/openPopup.js +31 -0
- package/dist/cjs/browser/openPopup.js.map +6 -0
- package/dist/cjs/browser/openPopup.native.js +36 -0
- package/dist/cjs/browser/openPopup.native.js.map +6 -0
- package/dist/cjs/client-only.cjs +1 -0
- package/dist/cjs/client-only.js +2 -0
- package/dist/cjs/client-only.js.map +6 -0
- package/dist/cjs/client-only.native.js +3 -0
- package/dist/cjs/client-only.native.js.map +6 -0
- package/dist/cjs/constants.cjs +52 -0
- package/dist/cjs/constants.js +38 -0
- package/dist/cjs/constants.js.map +6 -0
- package/dist/cjs/constants.native.js +54 -0
- package/dist/cjs/constants.native.js.map +6 -0
- package/dist/cjs/debug/debugLog.cjs +29 -0
- package/dist/cjs/debug/debugLog.js +24 -0
- package/dist/cjs/debug/debugLog.js.map +6 -0
- package/dist/cjs/debug/debugLog.native.js +29 -0
- package/dist/cjs/debug/debugLog.native.js.map +6 -0
- package/dist/cjs/debug/debugUseState.cjs +44 -0
- package/dist/cjs/debug/debugUseState.js +41 -0
- package/dist/cjs/debug/debugUseState.js.map +6 -0
- package/dist/cjs/debug/debugUseState.native.js +49 -0
- package/dist/cjs/debug/debugUseState.native.js.map +6 -0
- package/dist/cjs/emitter.cjs +209 -0
- package/dist/cjs/emitter.js +183 -0
- package/dist/cjs/emitter.js.map +6 -0
- package/dist/cjs/emitter.native.js +275 -0
- package/dist/cjs/emitter.native.js.map +6 -0
- package/dist/cjs/ensure/ensure.cjs +41 -0
- package/dist/cjs/ensure/ensure.js +40 -0
- package/dist/cjs/ensure/ensure.js.map +6 -0
- package/dist/cjs/ensure/ensure.native.js +54 -0
- package/dist/cjs/ensure/ensure.native.js.map +6 -0
- package/dist/cjs/ensure/ensureOne.cjs +33 -0
- package/dist/cjs/ensure/ensureOne.js +27 -0
- package/dist/cjs/ensure/ensureOne.js.map +6 -0
- package/dist/cjs/ensure/ensureOne.native.js +35 -0
- package/dist/cjs/ensure/ensureOne.native.js.map +6 -0
- package/dist/cjs/error/errors.cjs +36 -0
- package/dist/cjs/error/errors.js +31 -0
- package/dist/cjs/error/errors.js.map +6 -0
- package/dist/cjs/error/errors.native.js +137 -0
- package/dist/cjs/error/errors.native.js.map +6 -0
- package/dist/cjs/function/emptyFn.cjs +26 -0
- package/dist/cjs/function/emptyFn.js +22 -0
- package/dist/cjs/function/emptyFn.js.map +6 -0
- package/dist/cjs/function/emptyFn.native.js +27 -0
- package/dist/cjs/function/emptyFn.native.js.map +6 -0
- package/dist/cjs/function/identityFn.cjs +26 -0
- package/dist/cjs/function/identityFn.js +21 -0
- package/dist/cjs/function/identityFn.js.map +6 -0
- package/dist/cjs/function/identityFn.native.js +28 -0
- package/dist/cjs/function/identityFn.native.js.map +6 -0
- package/dist/cjs/function/throttle.cjs +45 -0
- package/dist/cjs/function/throttle.js +36 -0
- package/dist/cjs/function/throttle.js.map +6 -0
- package/dist/cjs/function/throttle.native.js +41 -0
- package/dist/cjs/function/throttle.native.js.map +6 -0
- package/dist/cjs/global/globalEffect.cjs +32 -0
- package/dist/cjs/global/globalEffect.js +26 -0
- package/dist/cjs/global/globalEffect.js.map +6 -0
- package/dist/cjs/global/globalEffect.native.js +34 -0
- package/dist/cjs/global/globalEffect.native.js.map +6 -0
- package/dist/cjs/global/globalValue.cjs +30 -0
- package/dist/cjs/global/globalValue.js +24 -0
- package/dist/cjs/global/globalValue.js.map +6 -0
- package/dist/cjs/global/globalValue.native.js +29 -0
- package/dist/cjs/global/globalValue.native.js.map +6 -0
- package/dist/cjs/index.cjs +88 -0
- package/dist/cjs/index.js +82 -0
- package/dist/cjs/index.js.map +6 -0
- package/dist/cjs/index.native.js +148 -0
- package/dist/cjs/index.native.js.map +6 -0
- package/dist/cjs/number/formatNumber.cjs +55 -0
- package/dist/cjs/number/formatNumber.js +48 -0
- package/dist/cjs/number/formatNumber.js.map +6 -0
- package/dist/cjs/number/formatNumber.native.js +52 -0
- package/dist/cjs/number/formatNumber.native.js.map +6 -0
- package/dist/cjs/object/decorateObject.cjs +30 -0
- package/dist/cjs/object/decorateObject.js +26 -0
- package/dist/cjs/object/decorateObject.js.map +6 -0
- package/dist/cjs/object/decorateObject.native.js +44 -0
- package/dist/cjs/object/decorateObject.native.js.map +6 -0
- package/dist/cjs/object/isEqualDeep.cjs +30 -0
- package/dist/cjs/object/isEqualDeep.js +23 -0
- package/dist/cjs/object/isEqualDeep.js.map +6 -0
- package/dist/cjs/object/isEqualDeep.native.js +28 -0
- package/dist/cjs/object/isEqualDeep.native.js.map +6 -0
- package/dist/cjs/object/isEqualIdentity.cjs +26 -0
- package/dist/cjs/object/isEqualIdentity.js +21 -0
- package/dist/cjs/object/isEqualIdentity.js.map +6 -0
- package/dist/cjs/object/isEqualIdentity.native.js +28 -0
- package/dist/cjs/object/isEqualIdentity.native.js.map +6 -0
- package/dist/cjs/object/isEqualJSON.cjs +26 -0
- package/dist/cjs/object/isEqualJSON.js +21 -0
- package/dist/cjs/object/isEqualJSON.js.map +6 -0
- package/dist/cjs/object/isEqualJSON.native.js +28 -0
- package/dist/cjs/object/isEqualJSON.native.js.map +6 -0
- package/dist/cjs/object/isEqualNever.cjs +26 -0
- package/dist/cjs/object/isEqualNever.js +21 -0
- package/dist/cjs/object/isEqualNever.js.map +6 -0
- package/dist/cjs/object/isEqualNever.native.js +28 -0
- package/dist/cjs/object/isEqualNever.native.js.map +6 -0
- package/dist/cjs/object/mapObject.cjs +30 -0
- package/dist/cjs/object/mapObject.js +26 -0
- package/dist/cjs/object/mapObject.js.map +6 -0
- package/dist/cjs/object/mapObject.native.js +31 -0
- package/dist/cjs/object/mapObject.native.js.map +6 -0
- package/dist/cjs/object/object.cjs +40 -0
- package/dist/cjs/object/object.js +37 -0
- package/dist/cjs/object/object.js.map +6 -0
- package/dist/cjs/object/object.native.js +49 -0
- package/dist/cjs/object/object.native.js.map +6 -0
- package/dist/cjs/object/objectUniqueKey.cjs +30 -0
- package/dist/cjs/object/objectUniqueKey.js +24 -0
- package/dist/cjs/object/objectUniqueKey.js.map +6 -0
- package/dist/cjs/object/objectUniqueKey.native.js +32 -0
- package/dist/cjs/object/objectUniqueKey.native.js.map +6 -0
- package/dist/cjs/react/createGlobalContext.cjs +30 -0
- package/dist/cjs/react/createGlobalContext.js +24 -0
- package/dist/cjs/react/createGlobalContext.js.map +6 -0
- package/dist/cjs/react/createGlobalContext.native.js +31 -0
- package/dist/cjs/react/createGlobalContext.native.js.map +6 -0
- package/dist/cjs/react/getCurrentComponentStack.cjs +62 -0
- package/dist/cjs/react/getCurrentComponentStack.js +54 -0
- package/dist/cjs/react/getCurrentComponentStack.js.map +6 -0
- package/dist/cjs/react/getCurrentComponentStack.native.js +69 -0
- package/dist/cjs/react/getCurrentComponentStack.native.js.map +6 -0
- package/dist/cjs/server/ensureEnv.cjs +32 -0
- package/dist/cjs/server/ensureEnv.js +31 -0
- package/dist/cjs/server/ensureEnv.js.map +6 -0
- package/dist/cjs/server/ensureEnv.native.js +36 -0
- package/dist/cjs/server/ensureEnv.native.js.map +6 -0
- package/dist/cjs/server/getHeaders.cjs +31 -0
- package/dist/cjs/server/getHeaders.js +26 -0
- package/dist/cjs/server/getHeaders.js.map +6 -0
- package/dist/cjs/server/getHeaders.native.js +31 -0
- package/dist/cjs/server/getHeaders.native.js.map +6 -0
- package/dist/cjs/server/prettyPrintRequest.cjs +28 -0
- package/dist/cjs/server/prettyPrintRequest.js +23 -0
- package/dist/cjs/server/prettyPrintRequest.js.map +6 -0
- package/dist/cjs/server/prettyPrintRequest.native.js +28 -0
- package/dist/cjs/server/prettyPrintRequest.native.js.map +6 -0
- package/dist/cjs/server/prettyPrintResponse.cjs +37 -0
- package/dist/cjs/server/prettyPrintResponse.js +30 -0
- package/dist/cjs/server/prettyPrintResponse.js.map +6 -0
- package/dist/cjs/server/prettyPrintResponse.native.js +35 -0
- package/dist/cjs/server/prettyPrintResponse.native.js.map +6 -0
- package/dist/cjs/server/streamToString.cjs +47 -0
- package/dist/cjs/server/streamToString.js +36 -0
- package/dist/cjs/server/streamToString.js.map +6 -0
- package/dist/cjs/server/streamToString.native.js +42 -0
- package/dist/cjs/server/streamToString.native.js.map +6 -0
- package/dist/cjs/server-only.cjs +1 -0
- package/dist/cjs/server-only.js +3 -0
- package/dist/cjs/server-only.js.map +6 -0
- package/dist/cjs/server-only.native.js +4 -0
- package/dist/cjs/server-only.native.js.map +6 -0
- package/dist/cjs/string/dedent.cjs +38 -0
- package/dist/cjs/string/dedent.js +33 -0
- package/dist/cjs/string/dedent.js.map +6 -0
- package/dist/cjs/string/dedent.native.js +48 -0
- package/dist/cjs/string/dedent.native.js.map +6 -0
- package/dist/cjs/string/ellipsis.cjs +29 -0
- package/dist/cjs/string/ellipsis.js +24 -0
- package/dist/cjs/string/ellipsis.js.map +6 -0
- package/dist/cjs/string/ellipsis.native.js +29 -0
- package/dist/cjs/string/ellipsis.native.js.map +6 -0
- package/dist/cjs/string/hash.cjs +32 -0
- package/dist/cjs/string/hash.js +27 -0
- package/dist/cjs/string/hash.js.map +6 -0
- package/dist/cjs/string/hash.native.js +38 -0
- package/dist/cjs/string/hash.native.js.map +6 -0
- package/dist/cjs/string/insertAtIndex.cjs +29 -0
- package/dist/cjs/string/insertAtIndex.js +25 -0
- package/dist/cjs/string/insertAtIndex.js.map +6 -0
- package/dist/cjs/string/insertAtIndex.native.js +30 -0
- package/dist/cjs/string/insertAtIndex.native.js.map +6 -0
- package/dist/cjs/string/pickLast.cjs +28 -0
- package/dist/cjs/string/pickLast.js +24 -0
- package/dist/cjs/string/pickLast.js.map +6 -0
- package/dist/cjs/string/pickLast.native.js +29 -0
- package/dist/cjs/string/pickLast.native.js.map +6 -0
- package/dist/cjs/string/pluralize.cjs +41 -0
- package/dist/cjs/string/pluralize.js +38 -0
- package/dist/cjs/string/pluralize.js.map +6 -0
- package/dist/cjs/string/pluralize.native.js +28 -0
- package/dist/cjs/string/pluralize.native.js.map +6 -0
- package/dist/cjs/string/randomId.cjs +26 -0
- package/dist/cjs/string/randomId.js +21 -0
- package/dist/cjs/string/randomId.js.map +6 -0
- package/dist/cjs/string/randomId.native.js +28 -0
- package/dist/cjs/string/randomId.native.js.map +6 -0
- package/dist/cjs/string/slugify.cjs +26 -0
- package/dist/cjs/string/slugify.js +21 -0
- package/dist/cjs/string/slugify.js.map +6 -0
- package/dist/cjs/string/slugify.native.js +28 -0
- package/dist/cjs/string/slugify.native.js.map +6 -0
- package/dist/cjs/string/truncateList.cjs +31 -0
- package/dist/cjs/string/truncateList.js +26 -0
- package/dist/cjs/string/truncateList.js.map +6 -0
- package/dist/cjs/string/truncateList.native.js +32 -0
- package/dist/cjs/string/truncateList.native.js.map +6 -0
- package/dist/cjs/time/formatDate.cjs +47 -0
- package/dist/cjs/time/formatDate.js +51 -0
- package/dist/cjs/time/formatDate.js.map +6 -0
- package/dist/cjs/time/formatDate.native.js +63 -0
- package/dist/cjs/time/formatDate.native.js.map +6 -0
- package/dist/cjs/time/formatDateRelative.cjs +55 -0
- package/dist/cjs/time/formatDateRelative.js +48 -0
- package/dist/cjs/time/formatDateRelative.js.map +6 -0
- package/dist/cjs/time/formatDateRelative.native.js +53 -0
- package/dist/cjs/time/formatDateRelative.native.js.map +6 -0
- package/dist/cjs/time/time.cjs +45 -0
- package/dist/cjs/time/time.js +40 -0
- package/dist/cjs/time/time.js.map +6 -0
- package/dist/cjs/time/time.native.js +75 -0
- package/dist/cjs/time/time.native.js.map +6 -0
- package/dist/cjs/types/NullToOptional.cjs +16 -0
- package/dist/cjs/types/NullToOptional.js +14 -0
- package/dist/cjs/types/NullToOptional.js.map +6 -0
- package/dist/cjs/types/NullToOptional.native.js +15 -0
- package/dist/cjs/types/NullToOptional.native.js.map +6 -0
- package/dist/cjs/types/object.cjs +16 -0
- package/dist/cjs/types/object.js +14 -0
- package/dist/cjs/types/object.js.map +6 -0
- package/dist/cjs/types/object.native.js +15 -0
- package/dist/cjs/types/object.native.js.map +6 -0
- package/dist/cjs/types/react.cjs +16 -0
- package/dist/cjs/types/react.js +14 -0
- package/dist/cjs/types/react.js.map +6 -0
- package/dist/cjs/types/react.native.js +15 -0
- package/dist/cjs/types/react.native.js.map +6 -0
- package/dist/cjs/types/timer.cjs +16 -0
- package/dist/cjs/types/timer.js +14 -0
- package/dist/cjs/types/timer.js.map +6 -0
- package/dist/cjs/types/timer.native.js +15 -0
- package/dist/cjs/types/timer.native.js.map +6 -0
- package/dist/cjs/types/tuple.cjs +16 -0
- package/dist/cjs/types/tuple.js +14 -0
- package/dist/cjs/types/tuple.js.map +6 -0
- package/dist/cjs/types/tuple.native.js +15 -0
- package/dist/cjs/types/tuple.native.js.map +6 -0
- package/dist/cjs/url/urlSanitize.cjs +35 -0
- package/dist/cjs/url/urlSanitize.js +31 -0
- package/dist/cjs/url/urlSanitize.js.map +6 -0
- package/dist/cjs/url/urlSanitize.native.js +42 -0
- package/dist/cjs/url/urlSanitize.native.js.map +6 -0
- package/dist/cjs/url/urlValidate.cjs +29 -0
- package/dist/cjs/url/urlValidate.js +26 -0
- package/dist/cjs/url/urlValidate.js.map +6 -0
- package/dist/cjs/url/urlValidate.native.js +29 -0
- package/dist/cjs/url/urlValidate.native.js.map +6 -0
- package/dist/esm/array/fuzzy.js +19 -0
- package/dist/esm/array/fuzzy.js.map +6 -0
- package/dist/esm/array/fuzzy.mjs +17 -0
- package/dist/esm/array/fuzzy.mjs.map +1 -0
- package/dist/esm/array/fuzzy.native.js +25 -0
- package/dist/esm/array/fuzzy.native.js.map +1 -0
- package/dist/esm/array/getRandomItem.js +9 -0
- package/dist/esm/array/getRandomItem.js.map +6 -0
- package/dist/esm/array/getRandomItem.mjs +7 -0
- package/dist/esm/array/getRandomItem.mjs.map +1 -0
- package/dist/esm/array/getRandomItem.native.js +8 -0
- package/dist/esm/array/getRandomItem.native.js.map +1 -0
- package/dist/esm/array/takeLast.js +5 -0
- package/dist/esm/array/takeLast.js.map +6 -0
- package/dist/esm/array/takeLast.mjs +3 -0
- package/dist/esm/array/takeLast.mjs.map +1 -0
- package/dist/esm/array/takeLast.native.js +5 -0
- package/dist/esm/array/takeLast.native.js.map +1 -0
- package/dist/esm/array/uniqBy.js +12 -0
- package/dist/esm/array/uniqBy.js.map +6 -0
- package/dist/esm/array/uniqBy.mjs +10 -0
- package/dist/esm/array/uniqBy.mjs.map +1 -0
- package/dist/esm/array/uniqBy.native.js +24 -0
- package/dist/esm/array/uniqBy.native.js.map +1 -0
- package/dist/esm/assert.js +28 -0
- package/dist/esm/assert.js.map +6 -0
- package/dist/esm/assert.mjs +19 -0
- package/dist/esm/assert.mjs.map +1 -0
- package/dist/esm/assert.native.js +25 -0
- package/dist/esm/assert.native.js.map +1 -0
- package/dist/esm/async/abortable.js +31 -0
- package/dist/esm/async/abortable.js.map +6 -0
- package/dist/esm/async/abortable.mjs +24 -0
- package/dist/esm/async/abortable.mjs.map +1 -0
- package/dist/esm/async/abortable.native.js +32 -0
- package/dist/esm/async/abortable.native.js.map +1 -0
- package/dist/esm/async/asyncContext.js +80 -0
- package/dist/esm/async/asyncContext.js.map +6 -0
- package/dist/esm/async/asyncContext.mjs +74 -0
- package/dist/esm/async/asyncContext.mjs.map +1 -0
- package/dist/esm/async/asyncContext.native.js +77 -0
- package/dist/esm/async/asyncContext.native.js.map +1 -0
- package/dist/esm/async/idle.js +21 -0
- package/dist/esm/async/idle.js.map +6 -0
- package/dist/esm/async/idle.mjs +24 -0
- package/dist/esm/async/idle.mjs.map +1 -0
- package/dist/esm/async/idle.native.js +31 -0
- package/dist/esm/async/idle.native.js.map +1 -0
- package/dist/esm/async/interval.js +9 -0
- package/dist/esm/async/interval.js.map +6 -0
- package/dist/esm/async/interval.mjs +6 -0
- package/dist/esm/async/interval.mjs.map +1 -0
- package/dist/esm/async/interval.native.js +6 -0
- package/dist/esm/async/interval.native.js.map +1 -0
- package/dist/esm/async/isAborted.js +5 -0
- package/dist/esm/async/isAborted.js.map +6 -0
- package/dist/esm/async/isAborted.mjs +3 -0
- package/dist/esm/async/isAborted.mjs.map +1 -0
- package/dist/esm/async/isAborted.native.js +5 -0
- package/dist/esm/async/isAborted.native.js.map +1 -0
- package/dist/esm/async/sleep.js +9 -0
- package/dist/esm/async/sleep.js.map +6 -0
- package/dist/esm/async/sleep.mjs +6 -0
- package/dist/esm/async/sleep.mjs.map +1 -0
- package/dist/esm/async/sleep.native.js +8 -0
- package/dist/esm/async/sleep.native.js.map +1 -0
- package/dist/esm/async/useAsync.js +21 -0
- package/dist/esm/async/useAsync.js.map +6 -0
- package/dist/esm/async/useAsync.mjs +21 -0
- package/dist/esm/async/useAsync.mjs.map +1 -0
- package/dist/esm/async/useAsync.native.js +24 -0
- package/dist/esm/async/useAsync.native.js.map +1 -0
- package/dist/esm/async/useAsyncEffect.js +54 -0
- package/dist/esm/async/useAsyncEffect.js.map +6 -0
- package/dist/esm/async/useAsyncEffect.mjs +50 -0
- package/dist/esm/async/useAsyncEffect.mjs.map +1 -0
- package/dist/esm/async/useAsyncEffect.native.js +60 -0
- package/dist/esm/async/useAsyncEffect.native.js.map +1 -0
- package/dist/esm/async/useLazyMount.js +24 -0
- package/dist/esm/async/useLazyMount.js.map +6 -0
- package/dist/esm/async/useLazyMount.mjs +21 -0
- package/dist/esm/async/useLazyMount.mjs.map +1 -0
- package/dist/esm/async/useLazyMount.native.js +24 -0
- package/dist/esm/async/useLazyMount.native.js.map +1 -0
- package/dist/esm/async/useLazyValue.js +21 -0
- package/dist/esm/async/useLazyValue.js.map +6 -0
- package/dist/esm/async/useLazyValue.mjs +16 -0
- package/dist/esm/async/useLazyValue.mjs.map +1 -0
- package/dist/esm/async/useLazyValue.native.js +17 -0
- package/dist/esm/async/useLazyValue.native.js.map +1 -0
- package/dist/esm/browser/clearIndexedDB.js +15 -0
- package/dist/esm/browser/clearIndexedDB.js.map +6 -0
- package/dist/esm/browser/clearIndexedDB.mjs +11 -0
- package/dist/esm/browser/clearIndexedDB.mjs.map +1 -0
- package/dist/esm/browser/clearIndexedDB.native.js +19 -0
- package/dist/esm/browser/clearIndexedDB.native.js.map +1 -0
- package/dist/esm/browser/isActiveElementFormField.js +7 -0
- package/dist/esm/browser/isActiveElementFormField.js.map +6 -0
- package/dist/esm/browser/isActiveElementFormField.mjs +5 -0
- package/dist/esm/browser/isActiveElementFormField.mjs.map +1 -0
- package/dist/esm/browser/isActiveElementFormField.native.js +5 -0
- package/dist/esm/browser/isActiveElementFormField.native.js.map +1 -0
- package/dist/esm/browser/localStorage.js +169 -0
- package/dist/esm/browser/localStorage.js.map +6 -0
- package/dist/esm/browser/localStorage.mjs +176 -0
- package/dist/esm/browser/localStorage.mjs.map +1 -0
- package/dist/esm/browser/localStorage.native.js +192 -0
- package/dist/esm/browser/localStorage.native.js.map +1 -0
- package/dist/esm/browser/openPopup.js +15 -0
- package/dist/esm/browser/openPopup.js.map +6 -0
- package/dist/esm/browser/openPopup.mjs +18 -0
- package/dist/esm/browser/openPopup.mjs.map +1 -0
- package/dist/esm/browser/openPopup.native.js +18 -0
- package/dist/esm/browser/openPopup.native.js.map +1 -0
- package/dist/esm/client-only.js +2 -0
- package/dist/esm/client-only.js.map +6 -0
- package/dist/esm/client-only.mjs +2 -0
- package/dist/esm/client-only.mjs.map +1 -0
- package/dist/esm/client-only.native.js +2 -0
- package/dist/esm/client-only.native.js.map +1 -0
- package/dist/esm/constants.js +23 -0
- package/dist/esm/constants.js.map +6 -0
- package/dist/esm/constants.mjs +18 -0
- package/dist/esm/constants.mjs.map +1 -0
- package/dist/esm/constants.native.js +20 -0
- package/dist/esm/constants.native.js.map +1 -0
- package/dist/esm/debug/debugLog.js +8 -0
- package/dist/esm/debug/debugLog.js.map +6 -0
- package/dist/esm/debug/debugLog.mjs +6 -0
- package/dist/esm/debug/debugLog.mjs.map +1 -0
- package/dist/esm/debug/debugLog.native.js +6 -0
- package/dist/esm/debug/debugLog.native.js.map +1 -0
- package/dist/esm/debug/debugUseState.js +25 -0
- package/dist/esm/debug/debugUseState.js.map +6 -0
- package/dist/esm/debug/debugUseState.mjs +21 -0
- package/dist/esm/debug/debugUseState.mjs.map +1 -0
- package/dist/esm/debug/debugUseState.native.js +21 -0
- package/dist/esm/debug/debugUseState.native.js.map +1 -0
- package/dist/esm/emitter.js +167 -0
- package/dist/esm/emitter.js.map +6 -0
- package/dist/esm/emitter.mjs +166 -0
- package/dist/esm/emitter.mjs.map +1 -0
- package/dist/esm/emitter.native.js +229 -0
- package/dist/esm/emitter.native.js.map +1 -0
- package/dist/esm/ensure/ensure.js +24 -0
- package/dist/esm/ensure/ensure.js.map +6 -0
- package/dist/esm/ensure/ensure.mjs +15 -0
- package/dist/esm/ensure/ensure.mjs.map +1 -0
- package/dist/esm/ensure/ensure.native.js +21 -0
- package/dist/esm/ensure/ensure.native.js.map +1 -0
- package/dist/esm/ensure/ensureOne.js +11 -0
- package/dist/esm/ensure/ensureOne.js.map +6 -0
- package/dist/esm/ensure/ensureOne.mjs +10 -0
- package/dist/esm/ensure/ensureOne.mjs.map +1 -0
- package/dist/esm/ensure/ensureOne.native.js +13 -0
- package/dist/esm/ensure/ensureOne.native.js.map +1 -0
- package/dist/esm/error/errors.js +15 -0
- package/dist/esm/error/errors.js.map +6 -0
- package/dist/esm/error/errors.mjs +12 -0
- package/dist/esm/error/errors.mjs.map +1 -0
- package/dist/esm/error/errors.native.js +105 -0
- package/dist/esm/error/errors.native.js.map +1 -0
- package/dist/esm/function/emptyFn.js +6 -0
- package/dist/esm/function/emptyFn.js.map +6 -0
- package/dist/esm/function/emptyFn.mjs +3 -0
- package/dist/esm/function/emptyFn.mjs.map +1 -0
- package/dist/esm/function/emptyFn.native.js +3 -0
- package/dist/esm/function/emptyFn.native.js.map +1 -0
- package/dist/esm/function/identityFn.js +5 -0
- package/dist/esm/function/identityFn.js.map +6 -0
- package/dist/esm/function/identityFn.mjs +3 -0
- package/dist/esm/function/identityFn.mjs.map +1 -0
- package/dist/esm/function/identityFn.native.js +5 -0
- package/dist/esm/function/identityFn.native.js.map +1 -0
- package/dist/esm/function/throttle.js +20 -0
- package/dist/esm/function/throttle.js.map +6 -0
- package/dist/esm/function/throttle.mjs +22 -0
- package/dist/esm/function/throttle.mjs.map +1 -0
- package/dist/esm/function/throttle.native.js +26 -0
- package/dist/esm/function/throttle.native.js.map +1 -0
- package/dist/esm/global/globalEffect.js +10 -0
- package/dist/esm/global/globalEffect.js.map +6 -0
- package/dist/esm/global/globalEffect.mjs +9 -0
- package/dist/esm/global/globalEffect.mjs.map +1 -0
- package/dist/esm/global/globalEffect.native.js +12 -0
- package/dist/esm/global/globalEffect.native.js.map +1 -0
- package/dist/esm/global/globalValue.js +8 -0
- package/dist/esm/global/globalValue.js.map +6 -0
- package/dist/esm/global/globalValue.mjs +7 -0
- package/dist/esm/global/globalValue.mjs.map +1 -0
- package/dist/esm/global/globalValue.native.js +7 -0
- package/dist/esm/global/globalValue.native.js.map +1 -0
- package/dist/esm/index.js +66 -0
- package/dist/esm/index.js.map +6 -0
- package/dist/esm/index.mjs +64 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/index.native.js +64 -0
- package/dist/esm/index.native.js.map +1 -0
- package/dist/esm/number/formatNumber.js +32 -0
- package/dist/esm/number/formatNumber.js.map +6 -0
- package/dist/esm/number/formatNumber.mjs +30 -0
- package/dist/esm/number/formatNumber.mjs.map +1 -0
- package/dist/esm/number/formatNumber.native.js +31 -0
- package/dist/esm/number/formatNumber.native.js.map +1 -0
- package/dist/esm/object/decorateObject.js +10 -0
- package/dist/esm/object/decorateObject.js.map +6 -0
- package/dist/esm/object/decorateObject.mjs +7 -0
- package/dist/esm/object/decorateObject.mjs.map +1 -0
- package/dist/esm/object/decorateObject.native.js +23 -0
- package/dist/esm/object/decorateObject.native.js.map +1 -0
- package/dist/esm/object/isEqualDeep.js +8 -0
- package/dist/esm/object/isEqualDeep.js.map +6 -0
- package/dist/esm/object/isEqualDeep.mjs +6 -0
- package/dist/esm/object/isEqualDeep.mjs.map +1 -0
- package/dist/esm/object/isEqualDeep.native.js +6 -0
- package/dist/esm/object/isEqualDeep.native.js.map +1 -0
- package/dist/esm/object/isEqualIdentity.js +5 -0
- package/dist/esm/object/isEqualIdentity.js.map +6 -0
- package/dist/esm/object/isEqualIdentity.mjs +3 -0
- package/dist/esm/object/isEqualIdentity.mjs.map +1 -0
- package/dist/esm/object/isEqualIdentity.native.js +5 -0
- package/dist/esm/object/isEqualIdentity.native.js.map +1 -0
- package/dist/esm/object/isEqualJSON.js +5 -0
- package/dist/esm/object/isEqualJSON.js.map +6 -0
- package/dist/esm/object/isEqualJSON.mjs +3 -0
- package/dist/esm/object/isEqualJSON.mjs.map +1 -0
- package/dist/esm/object/isEqualJSON.native.js +5 -0
- package/dist/esm/object/isEqualJSON.native.js.map +1 -0
- package/dist/esm/object/isEqualNever.js +5 -0
- package/dist/esm/object/isEqualNever.js.map +6 -0
- package/dist/esm/object/isEqualNever.mjs +3 -0
- package/dist/esm/object/isEqualNever.mjs.map +1 -0
- package/dist/esm/object/isEqualNever.native.js +5 -0
- package/dist/esm/object/isEqualNever.native.js.map +1 -0
- package/dist/esm/object/mapObject.js +10 -0
- package/dist/esm/object/mapObject.js.map +6 -0
- package/dist/esm/object/mapObject.mjs +7 -0
- package/dist/esm/object/mapObject.mjs.map +1 -0
- package/dist/esm/object/mapObject.native.js +7 -0
- package/dist/esm/object/mapObject.native.js.map +1 -0
- package/dist/esm/object/object.js +21 -0
- package/dist/esm/object/object.js.map +6 -0
- package/dist/esm/object/object.mjs +14 -0
- package/dist/esm/object/object.mjs.map +1 -0
- package/dist/esm/object/object.native.js +17 -0
- package/dist/esm/object/object.native.js.map +1 -0
- package/dist/esm/object/objectUniqueKey.js +8 -0
- package/dist/esm/object/objectUniqueKey.js.map +6 -0
- package/dist/esm/object/objectUniqueKey.mjs +7 -0
- package/dist/esm/object/objectUniqueKey.mjs.map +1 -0
- package/dist/esm/object/objectUniqueKey.native.js +10 -0
- package/dist/esm/object/objectUniqueKey.native.js.map +1 -0
- package/dist/esm/react/createGlobalContext.js +9 -0
- package/dist/esm/react/createGlobalContext.js.map +6 -0
- package/dist/esm/react/createGlobalContext.mjs +7 -0
- package/dist/esm/react/createGlobalContext.mjs.map +1 -0
- package/dist/esm/react/createGlobalContext.native.js +9 -0
- package/dist/esm/react/createGlobalContext.native.js.map +1 -0
- package/dist/esm/react/getCurrentComponentStack.js +30 -0
- package/dist/esm/react/getCurrentComponentStack.js.map +6 -0
- package/dist/esm/react/getCurrentComponentStack.mjs +28 -0
- package/dist/esm/react/getCurrentComponentStack.mjs.map +1 -0
- package/dist/esm/react/getCurrentComponentStack.native.js +42 -0
- package/dist/esm/react/getCurrentComponentStack.native.js.map +1 -0
- package/dist/esm/server/ensureEnv.js +15 -0
- package/dist/esm/server/ensureEnv.js.map +6 -0
- package/dist/esm/server/ensureEnv.mjs +9 -0
- package/dist/esm/server/ensureEnv.mjs.map +1 -0
- package/dist/esm/server/ensureEnv.native.js +9 -0
- package/dist/esm/server/ensureEnv.native.js.map +1 -0
- package/dist/esm/server/getHeaders.js +10 -0
- package/dist/esm/server/getHeaders.js.map +6 -0
- package/dist/esm/server/getHeaders.mjs +8 -0
- package/dist/esm/server/getHeaders.mjs.map +1 -0
- package/dist/esm/server/getHeaders.native.js +8 -0
- package/dist/esm/server/getHeaders.native.js.map +1 -0
- package/dist/esm/server/prettyPrintRequest.js +7 -0
- package/dist/esm/server/prettyPrintRequest.js.map +6 -0
- package/dist/esm/server/prettyPrintRequest.mjs +5 -0
- package/dist/esm/server/prettyPrintRequest.mjs.map +1 -0
- package/dist/esm/server/prettyPrintRequest.native.js +5 -0
- package/dist/esm/server/prettyPrintRequest.native.js.map +1 -0
- package/dist/esm/server/prettyPrintResponse.js +15 -0
- package/dist/esm/server/prettyPrintResponse.js.map +6 -0
- package/dist/esm/server/prettyPrintResponse.mjs +14 -0
- package/dist/esm/server/prettyPrintResponse.mjs.map +1 -0
- package/dist/esm/server/prettyPrintResponse.native.js +14 -0
- package/dist/esm/server/prettyPrintResponse.native.js.map +1 -0
- package/dist/esm/server/streamToString.js +20 -0
- package/dist/esm/server/streamToString.js.map +6 -0
- package/dist/esm/server/streamToString.mjs +24 -0
- package/dist/esm/server/streamToString.mjs.map +1 -0
- package/dist/esm/server/streamToString.native.js +24 -0
- package/dist/esm/server/streamToString.native.js.map +1 -0
- package/dist/esm/server-only.js +3 -0
- package/dist/esm/server-only.js.map +6 -0
- package/dist/esm/server-only.mjs +2 -0
- package/dist/esm/server-only.mjs.map +1 -0
- package/dist/esm/server-only.native.js +2 -0
- package/dist/esm/server-only.native.js.map +1 -0
- package/dist/esm/string/dedent.js +17 -0
- package/dist/esm/string/dedent.js.map +6 -0
- package/dist/esm/string/dedent.mjs +15 -0
- package/dist/esm/string/dedent.mjs.map +1 -0
- package/dist/esm/string/dedent.native.js +25 -0
- package/dist/esm/string/dedent.native.js.map +1 -0
- package/dist/esm/string/ellipsis.js +8 -0
- package/dist/esm/string/ellipsis.js.map +6 -0
- package/dist/esm/string/ellipsis.mjs +6 -0
- package/dist/esm/string/ellipsis.mjs.map +1 -0
- package/dist/esm/string/ellipsis.native.js +7 -0
- package/dist/esm/string/ellipsis.native.js.map +1 -0
- package/dist/esm/string/hash.js +11 -0
- package/dist/esm/string/hash.js.map +6 -0
- package/dist/esm/string/hash.mjs +8 -0
- package/dist/esm/string/hash.mjs.map +1 -0
- package/dist/esm/string/hash.native.js +13 -0
- package/dist/esm/string/hash.native.js.map +1 -0
- package/dist/esm/string/insertAtIndex.js +9 -0
- package/dist/esm/string/insertAtIndex.js.map +6 -0
- package/dist/esm/string/insertAtIndex.mjs +6 -0
- package/dist/esm/string/insertAtIndex.mjs.map +1 -0
- package/dist/esm/string/insertAtIndex.native.js +6 -0
- package/dist/esm/string/insertAtIndex.native.js.map +1 -0
- package/dist/esm/string/pickLast.js +8 -0
- package/dist/esm/string/pickLast.js.map +6 -0
- package/dist/esm/string/pickLast.mjs +5 -0
- package/dist/esm/string/pickLast.mjs.map +1 -0
- package/dist/esm/string/pickLast.native.js +5 -0
- package/dist/esm/string/pickLast.native.js.map +1 -0
- package/dist/esm/string/pluralize.js +22 -0
- package/dist/esm/string/pluralize.js.map +6 -0
- package/dist/esm/string/pluralize.mjs +17 -0
- package/dist/esm/string/pluralize.mjs.map +1 -0
- package/dist/esm/string/pluralize.native.js +5 -0
- package/dist/esm/string/pluralize.native.js.map +1 -0
- package/dist/esm/string/randomId.js +5 -0
- package/dist/esm/string/randomId.js.map +6 -0
- package/dist/esm/string/randomId.mjs +3 -0
- package/dist/esm/string/randomId.mjs.map +1 -0
- package/dist/esm/string/randomId.native.js +5 -0
- package/dist/esm/string/randomId.native.js.map +1 -0
- package/dist/esm/string/slugify.js +5 -0
- package/dist/esm/string/slugify.js.map +6 -0
- package/dist/esm/string/slugify.mjs +3 -0
- package/dist/esm/string/slugify.mjs.map +1 -0
- package/dist/esm/string/slugify.native.js +5 -0
- package/dist/esm/string/slugify.native.js.map +1 -0
- package/dist/esm/string/truncateList.js +10 -0
- package/dist/esm/string/truncateList.js.map +6 -0
- package/dist/esm/string/truncateList.mjs +8 -0
- package/dist/esm/string/truncateList.mjs.map +1 -0
- package/dist/esm/string/truncateList.native.js +9 -0
- package/dist/esm/string/truncateList.native.js.map +1 -0
- package/dist/esm/time/formatDate.js +35 -0
- package/dist/esm/time/formatDate.js.map +6 -0
- package/dist/esm/time/formatDate.mjs +24 -0
- package/dist/esm/time/formatDate.mjs.map +1 -0
- package/dist/esm/time/formatDate.native.js +24 -0
- package/dist/esm/time/formatDate.native.js.map +1 -0
- package/dist/esm/time/formatDateRelative.js +32 -0
- package/dist/esm/time/formatDateRelative.js.map +6 -0
- package/dist/esm/time/formatDateRelative.mjs +32 -0
- package/dist/esm/time/formatDateRelative.mjs.map +1 -0
- package/dist/esm/time/formatDateRelative.native.js +34 -0
- package/dist/esm/time/formatDateRelative.native.js.map +1 -0
- package/dist/esm/time/time.js +24 -0
- package/dist/esm/time/time.js.map +6 -0
- package/dist/esm/time/time.mjs +22 -0
- package/dist/esm/time/time.mjs.map +1 -0
- package/dist/esm/time/time.native.js +52 -0
- package/dist/esm/time/time.native.js.map +1 -0
- package/dist/esm/types/NullToOptional.js +1 -0
- package/dist/esm/types/NullToOptional.js.map +6 -0
- package/dist/esm/types/NullToOptional.mjs +2 -0
- package/dist/esm/types/NullToOptional.mjs.map +1 -0
- package/dist/esm/types/NullToOptional.native.js +2 -0
- package/dist/esm/types/NullToOptional.native.js.map +1 -0
- package/dist/esm/types/object.js +1 -0
- package/dist/esm/types/object.js.map +6 -0
- package/dist/esm/types/object.mjs +2 -0
- package/dist/esm/types/object.mjs.map +1 -0
- package/dist/esm/types/object.native.js +2 -0
- package/dist/esm/types/object.native.js.map +1 -0
- package/dist/esm/types/react.js +1 -0
- package/dist/esm/types/react.js.map +6 -0
- package/dist/esm/types/react.mjs +2 -0
- package/dist/esm/types/react.mjs.map +1 -0
- package/dist/esm/types/react.native.js +2 -0
- package/dist/esm/types/react.native.js.map +1 -0
- package/dist/esm/types/timer.js +1 -0
- package/dist/esm/types/timer.js.map +6 -0
- package/dist/esm/types/timer.mjs +2 -0
- package/dist/esm/types/timer.mjs.map +1 -0
- package/dist/esm/types/timer.native.js +2 -0
- package/dist/esm/types/timer.native.js.map +1 -0
- package/dist/esm/types/tuple.js +1 -0
- package/dist/esm/types/tuple.js.map +6 -0
- package/dist/esm/types/tuple.mjs +2 -0
- package/dist/esm/types/tuple.mjs.map +1 -0
- package/dist/esm/types/tuple.native.js +2 -0
- package/dist/esm/types/tuple.native.js.map +1 -0
- package/dist/esm/url/urlSanitize.js +15 -0
- package/dist/esm/url/urlSanitize.js.map +6 -0
- package/dist/esm/url/urlSanitize.mjs +12 -0
- package/dist/esm/url/urlSanitize.mjs.map +1 -0
- package/dist/esm/url/urlSanitize.native.js +12 -0
- package/dist/esm/url/urlSanitize.native.js.map +1 -0
- package/dist/esm/url/urlValidate.js +10 -0
- package/dist/esm/url/urlValidate.js.map +6 -0
- package/dist/esm/url/urlValidate.mjs +6 -0
- package/dist/esm/url/urlValidate.mjs.map +1 -0
- package/dist/esm/url/urlValidate.native.js +6 -0
- package/dist/esm/url/urlValidate.native.js.map +1 -0
- package/package.json +77 -0
- package/src/array/fuzzy.ts +39 -0
- package/src/array/getRandomItem.ts +5 -0
- package/src/array/takeLast.ts +3 -0
- package/src/array/uniqBy.ts +19 -0
- package/src/assert.ts +29 -0
- package/src/async/abortable.ts +60 -0
- package/src/async/asyncContext.ts +144 -0
- package/src/async/idle.ts +68 -0
- package/src/async/interval.ts +12 -0
- package/src/async/isAborted.ts +2 -0
- package/src/async/sleep.ts +8 -0
- package/src/async/useAsync.ts +38 -0
- package/src/async/useAsyncEffect.ts +120 -0
- package/src/async/useLazyMount.ts +32 -0
- package/src/async/useLazyValue.ts +30 -0
- package/src/browser/clearIndexedDB.ts +18 -0
- package/src/browser/isActiveElementFormField.ts +10 -0
- package/src/browser/localStorage.ts +311 -0
- package/src/browser/openPopup.ts +30 -0
- package/src/client-only.ts +3 -0
- package/src/constants.ts +34 -0
- package/src/debug/debugLog.ts +13 -0
- package/src/debug/debugUseState.ts +35 -0
- package/src/emitter.tsx +377 -0
- package/src/ensure/ensure.ts +31 -0
- package/src/ensure/ensureOne.ts +17 -0
- package/src/error/errors.ts +13 -0
- package/src/function/emptyFn.ts +1 -0
- package/src/function/identityFn.ts +1 -0
- package/src/function/throttle.ts +73 -0
- package/src/global/globalEffect.ts +14 -0
- package/src/global/globalValue.ts +40 -0
- package/src/index.ts +103 -0
- package/src/number/formatNumber.ts +40 -0
- package/src/object/decorateObject.ts +16 -0
- package/src/object/isEqualDeep.ts +7 -0
- package/src/object/isEqualIdentity.ts +1 -0
- package/src/object/isEqualJSON.ts +2 -0
- package/src/object/isEqualNever.ts +1 -0
- package/src/object/mapObject.ts +14 -0
- package/src/object/object.ts +33 -0
- package/src/object/objectUniqueKey.ts +12 -0
- package/src/react/createGlobalContext.ts +9 -0
- package/src/react/getCurrentComponentStack.ts +56 -0
- package/src/server/ensureEnv.ts +18 -0
- package/src/server/getHeaders.ts +7 -0
- package/src/server/prettyPrintRequest.ts +16 -0
- package/src/server/prettyPrintResponse.ts +15 -0
- package/src/server/streamToString.ts +19 -0
- package/src/server-only.ts +3 -0
- package/src/string/dedent.ts +30 -0
- package/src/string/ellipsis.ts +9 -0
- package/src/string/hash.ts +19 -0
- package/src/string/insertAtIndex.ts +7 -0
- package/src/string/pickLast.ts +10 -0
- package/src/string/pluralize.native.ts +6 -0
- package/src/string/pluralize.ts +21 -0
- package/src/string/randomId.ts +1 -0
- package/src/string/slugify.ts +7 -0
- package/src/string/truncateList.ts +28 -0
- package/src/time/formatDate.tsx +47 -0
- package/src/time/formatDateRelative.ts +72 -0
- package/src/time/time.ts +51 -0
- package/src/types/NullToOptional.d.ts.map +1 -0
- package/src/types/NullToOptional.ts +5 -0
- package/src/types/object.d.ts.map +1 -0
- package/src/types/object.ts +38 -0
- package/src/types/react.d.ts.map +1 -0
- package/src/types/react.ts +1 -0
- package/src/types/timer.d.ts.map +1 -0
- package/src/types/timer.ts +1 -0
- package/src/types/tuple.d.ts.map +1 -0
- package/src/types/tuple.ts +1 -0
- package/src/url/urlSanitize.ts +20 -0
- package/src/url/urlValidate.ts +11 -0
- package/types/array/fuzzy.d.ts +10 -0
- package/types/array/fuzzy.d.ts.map +16 -0
- package/types/array/getRandomItem.d.ts +3 -0
- package/types/array/getRandomItem.d.ts.map +13 -0
- package/types/array/takeLast.d.ts +3 -0
- package/types/array/takeLast.d.ts.map +14 -0
- package/types/array/uniqBy.d.ts +12 -0
- package/types/array/uniqBy.d.ts.map +15 -0
- package/types/assert.d.ts +6 -0
- package/types/assert.d.ts.map +15 -0
- package/types/async/abortable.d.ts +10 -0
- package/types/async/abortable.d.ts.map +18 -0
- package/types/async/asyncContext.d.ts +8 -0
- package/types/async/asyncContext.d.ts.map +14 -0
- package/types/async/idle.d.ts +8 -0
- package/types/async/idle.d.ts.map +14 -0
- package/types/async/interval.d.ts +3 -0
- package/types/async/interval.d.ts.map +15 -0
- package/types/async/isAborted.d.ts +3 -0
- package/types/async/isAborted.d.ts.map +13 -0
- package/types/async/sleep.d.ts +3 -0
- package/types/async/sleep.d.ts.map +14 -0
- package/types/async/useAsync.d.ts +3 -0
- package/types/async/useAsync.d.ts.map +14 -0
- package/types/async/useAsyncEffect.d.ts +12 -0
- package/types/async/useAsyncEffect.d.ts.map +16 -0
- package/types/async/useLazyMount.d.ts +9 -0
- package/types/async/useLazyMount.d.ts.map +13 -0
- package/types/async/useLazyValue.d.ts +6 -0
- package/types/async/useLazyValue.d.ts.map +13 -0
- package/types/browser/clearIndexedDB.d.ts +3 -0
- package/types/browser/clearIndexedDB.d.ts.map +11 -0
- package/types/browser/isActiveElementFormField.d.ts +3 -0
- package/types/browser/isActiveElementFormField.d.ts.map +11 -0
- package/types/browser/localStorage.d.ts +31 -0
- package/types/browser/localStorage.d.ts.map +22 -0
- package/types/browser/openPopup.d.ts +4 -0
- package/types/browser/openPopup.d.ts.map +16 -0
- package/types/client-only.d.ts +2 -0
- package/types/client-only.d.ts.map +11 -0
- package/types/constants.d.ts +11 -0
- package/types/constants.d.ts.map +17 -0
- package/types/debug/debugLog.d.ts +11 -0
- package/types/debug/debugLog.d.ts.map +14 -0
- package/types/debug/debugUseState.d.ts +3 -0
- package/types/debug/debugUseState.d.ts.map +13 -0
- package/types/emitter.d.ts +78 -0
- package/types/emitter.d.ts.map +43 -0
- package/types/ensure/catchEnsureErrors.d.ts +3 -0
- package/types/ensure/catchEnsureErrors.d.ts.map +13 -0
- package/types/ensure/ensure.d.ts +6 -0
- package/types/ensure/ensure.d.ts.map +15 -0
- package/types/ensure/ensureOne.d.ts +3 -0
- package/types/ensure/ensureOne.d.ts.map +15 -0
- package/types/ensure/ensureSingleton.d.ts +7 -0
- package/types/ensure/ensureSingleton.d.ts.map +14 -0
- package/types/error/errors.d.ts +8 -0
- package/types/error/errors.d.ts.map +13 -0
- package/types/files/download.d.ts +4 -0
- package/types/files/download.d.ts.map +16 -0
- package/types/function/emptyFn.d.ts +3 -0
- package/types/function/emptyFn.d.ts.map +11 -0
- package/types/function/identityFn.d.ts +3 -0
- package/types/function/identityFn.d.ts.map +13 -0
- package/types/function/throttle.d.ts +22 -0
- package/types/function/throttle.d.ts.map +13 -0
- package/types/global/globalContext.d.ts +6 -0
- package/types/global/globalContext.d.ts.map +14 -0
- package/types/global/globalEffect.d.ts +3 -0
- package/types/global/globalEffect.d.ts.map +14 -0
- package/types/global/globalValue.d.ts +24 -0
- package/types/global/globalValue.d.ts.map +15 -0
- package/types/index.d.ts +87 -0
- package/types/index.d.ts.map +11 -0
- package/types/number/formatNumber.d.ts +11 -0
- package/types/number/formatNumber.d.ts.map +14 -0
- package/types/object/decorateObject.d.ts +3 -0
- package/types/object/decorateObject.d.ts.map +15 -0
- package/types/object/isEqualDeep.d.ts +6 -0
- package/types/object/isEqualDeep.d.ts.map +14 -0
- package/types/object/isEqualIdentity.d.ts +3 -0
- package/types/object/isEqualIdentity.d.ts.map +14 -0
- package/types/object/isEqualJSON.d.ts +3 -0
- package/types/object/isEqualJSON.d.ts.map +14 -0
- package/types/object/isEqualNever.d.ts +3 -0
- package/types/object/isEqualNever.d.ts.map +14 -0
- package/types/object/mapObject.d.ts +6 -0
- package/types/object/mapObject.d.ts.map +16 -0
- package/types/object/object.d.ts +12 -0
- package/types/object/object.d.ts.map +17 -0
- package/types/object/objectUniqueKey.d.ts +3 -0
- package/types/object/objectUniqueKey.d.ts.map +13 -0
- package/types/react/createGlobalContext.d.ts +6 -0
- package/types/react/createGlobalContext.d.ts.map +14 -0
- package/types/react/getCurrentComponentStack.d.ts +3 -0
- package/types/react/getCurrentComponentStack.d.ts.map +13 -0
- package/types/server/ensureEnv.d.ts +4 -0
- package/types/server/ensureEnv.d.ts.map +14 -0
- package/types/server/getHeaders.d.ts +3 -0
- package/types/server/getHeaders.d.ts.map +13 -0
- package/types/server/prettyPrintRequest.d.ts +5 -0
- package/types/server/prettyPrintRequest.d.ts.map +13 -0
- package/types/server/prettyPrintResponse.d.ts +3 -0
- package/types/server/prettyPrintResponse.d.ts.map +13 -0
- package/types/server/streamToString.d.ts +3 -0
- package/types/server/streamToString.d.ts.map +13 -0
- package/types/server-only.d.ts +2 -0
- package/types/server-only.d.ts.map +11 -0
- package/types/string/dedent.d.ts +3 -0
- package/types/string/dedent.d.ts.map +13 -0
- package/types/string/ellipsis.d.ts +3 -0
- package/types/string/ellipsis.d.ts.map +14 -0
- package/types/string/hash.d.ts +5 -0
- package/types/string/hash.d.ts.map +14 -0
- package/types/string/insertAtIndex.d.ts +3 -0
- package/types/string/insertAtIndex.d.ts.map +15 -0
- package/types/string/pickLast.d.ts +3 -0
- package/types/string/pickLast.d.ts.map +14 -0
- package/types/string/pluralize.d.ts +5 -0
- package/types/string/pluralize.d.ts.map +16 -0
- package/types/string/pluralize.native.d.ts +4 -0
- package/types/string/pluralize.native.d.ts.map +13 -0
- package/types/string/randomId.d.ts +3 -0
- package/types/string/randomId.d.ts.map +11 -0
- package/types/string/slugify.d.ts +3 -0
- package/types/string/slugify.d.ts.map +13 -0
- package/types/string/truncateList.d.ts +17 -0
- package/types/string/truncateList.d.ts.map +15 -0
- package/types/time/formatDate.d.ts +5 -0
- package/types/time/formatDate.d.ts.map +14 -0
- package/types/time/formatDateRelative.d.ts +3 -0
- package/types/time/formatDateRelative.d.ts.map +13 -0
- package/types/time/time.d.ts +29 -0
- package/types/time/time.d.ts.map +14 -0
- package/types/types/NullToOptional.d.ts +3 -0
- package/types/types/NullToOptional.d.ts.map +11 -0
- package/types/types/object.d.ts +18 -0
- package/types/types/object.d.ts.map +14 -0
- package/types/types/react.d.ts +3 -0
- package/types/types/react.d.ts.map +11 -0
- package/types/types/timer.d.ts +3 -0
- package/types/types/timer.d.ts.map +11 -0
- package/types/types/tuple.d.ts +3 -0
- package/types/types/tuple.d.ts.map +11 -0
- package/types/url/urlSanitize.d.ts +3 -0
- package/types/url/urlSanitize.d.ts.map +13 -0
- package/types/url/urlValidate.d.ts +3 -0
- package/types/url/urlValidate.d.ts.map +13 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mappings": "UASU,oBAAoB;CAC5B;CACA;;;;CAKA;AACD;AAED,OAAO,iBAAS;CAAmB;CAAkB;EACnDA,cACA,EAAE,QAAgB,kBAA0B,cAAmC,GAAnB;CA0C1D,MAAMC,KAAK,MAAI;CAcf,MAAMA,KAAK,GAAGC,OAAO;CAyBrB,SAASD,KAAK;CA6Bd,SAASA,KAAK;CAKd;CAmCA,YAAYE,aAAaC,WAAWC,OAAO;CAoB3C;;AAoBJ,OAAO,iBAAS,wBAAwB,GACtCF,aACAG,UAAS;CAMP,WAAS;CAIT,MAAMC,OAAO;CAIb;CAIA;CAIA;CAIA,YAAYC,WAAWC,OAAO",
|
|
3
|
+
"names": [
|
|
4
|
+
"name: string",
|
|
5
|
+
"key: K",
|
|
6
|
+
"value: V",
|
|
7
|
+
"key: string",
|
|
8
|
+
"listener: (value: V | undefined) => void",
|
|
9
|
+
"value: V | undefined",
|
|
10
|
+
"options: LocalStorageOptions",
|
|
11
|
+
"value: T",
|
|
12
|
+
"listener: (value: T | undefined) => void",
|
|
13
|
+
"value: T | undefined"
|
|
14
|
+
],
|
|
15
|
+
"sources": [
|
|
16
|
+
"src/browser/localStorage.ts"
|
|
17
|
+
],
|
|
18
|
+
"sourcesContent": [
|
|
19
|
+
"const created = new Set<string>()\n\nconst STORAGE_TRACKING_KEY = '__localStorage_tracking__'\nconst STORAGE_ORDER_KEY = '__localStorage_order__'\n\ninterface StorageTracking {\n [key: string]: number // key -> size in bytes\n}\n\ninterface LocalStorageOptions {\n synced?: boolean\n disableSetOnBlur?: boolean\n\n /**\n * Limit in kB\n */\n storageLimit?: number\n}\n\nexport function createLocalStorage<K extends string, V>(\n name: string,\n { synced = false, disableSetOnBlur = false, storageLimit }: LocalStorageOptions = {}\n) {\n if (created.has(name)) {\n throw new Error(`Already defined this localStorage namespace: ${name}`)\n }\n created.add(name)\n\n let isWindowActive = true\n if (typeof window !== 'undefined' && disableSetOnBlur) {\n const handleFocus = () => {\n isWindowActive = true\n }\n const handleBlur = () => {\n isWindowActive = false\n }\n\n window.addEventListener('focus', handleFocus)\n window.addEventListener('blur', handleBlur)\n\n isWindowActive = document.hasFocus()\n }\n\n const listeners = new Map<string, Set<(value: any) => void>>()\n\n if (synced && typeof window !== 'undefined') {\n const handleStorageChange = (event: StorageEvent) => {\n if (event.key?.startsWith(`${name}:`) && event.storageArea === localStorage) {\n const key = event.key.slice(name.length + 1)\n const newValue = event.newValue ? JSON.parse(event.newValue) : undefined\n const keyListeners = listeners.get(key)\n if (keyListeners) {\n keyListeners.forEach((listener) => listener(newValue))\n }\n }\n }\n\n window.addEventListener('storage', handleStorageChange)\n }\n\n const getFullKey = (key: string) => `${name}:${key}`\n\n return {\n get: (key: K): V | undefined => {\n if (typeof localStorage === 'undefined') {\n console.warn(`No localStorage`)\n return\n }\n\n const fullKey = getFullKey(key)\n const item = localStorage.getItem(fullKey)\n if (item && storageLimit) {\n updateKeyAccess(fullKey)\n }\n return item ? JSON.parse(item) : undefined\n },\n\n set: (key: K, value: V): void => {\n if (typeof localStorage === 'undefined') {\n console.warn(`No localStorage`)\n return\n }\n\n if (disableSetOnBlur && !isWindowActive) {\n return\n }\n\n const fullKey = getFullKey(key)\n const serializedValue = JSON.stringify(value)\n\n if (storageLimit) {\n const newSize = getStringSizeInBytes(serializedValue)\n enforceStorageLimit(fullKey, newSize, storageLimit)\n const tracking = getStorageTracking()\n tracking[fullKey] = newSize\n setStorageTracking(tracking)\n updateKeyAccess(fullKey)\n }\n\n localStorage.setItem(fullKey, serializedValue)\n },\n\n remove: (key: K): void => {\n if (typeof localStorage === 'undefined') {\n console.warn(`No localStorage`)\n return\n }\n\n // don't remove if window is not active and disablesetonblur is true\n if (disableSetOnBlur && !isWindowActive) {\n return\n }\n\n const fullKey = getFullKey(key)\n localStorage.removeItem(fullKey)\n\n // clean up tracking data if storage limit is enabled\n if (storageLimit) {\n const tracking = getStorageTracking()\n delete tracking[fullKey]\n setStorageTracking(tracking)\n\n const order = getStorageOrder()\n const index = order.indexOf(fullKey)\n if (index > -1) {\n order.splice(index, 1)\n setStorageOrder(order)\n }\n }\n },\n\n exists: (key: K): boolean => {\n const fullKey = getFullKey(key)\n return localStorage.getItem(fullKey) != null\n },\n\n clear: (): void => {\n if (typeof localStorage === 'undefined') {\n console.warn(`No localStorage`)\n return\n }\n\n // Remove all keys with this namespace\n const keysToRemove: string[] = []\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i)\n if (key?.startsWith(`${name}:`)) {\n keysToRemove.push(key)\n }\n }\n\n keysToRemove.forEach((key) => localStorage.removeItem(key))\n\n // Clean up tracking data\n if (storageLimit) {\n const tracking = getStorageTracking()\n const order = getStorageOrder()\n\n keysToRemove.forEach((key) => {\n delete tracking[key]\n const index = order.indexOf(key)\n if (index > -1) {\n order.splice(index, 1)\n }\n })\n\n setStorageTracking(tracking)\n setStorageOrder(order)\n }\n },\n\n subscribe: (key: string, listener: (value: V | undefined) => void): (() => void) => {\n if (!synced) {\n console.warn(`Subscribe only works when synced option is enabled`)\n return () => {}\n }\n\n if (!listeners.has(key)) {\n listeners.set(key, new Set())\n }\n const keyListeners = listeners.get(key)!\n keyListeners.add(listener)\n\n return () => {\n keyListeners.delete(listener)\n if (keyListeners.size === 0) {\n listeners.delete(key)\n }\n }\n },\n\n keys: (): string[] => {\n if (typeof localStorage === 'undefined') {\n return []\n }\n\n const keys: string[] = []\n const prefix = `${name}:`\n\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i)\n if (key?.startsWith(prefix)) {\n keys.push(key.slice(prefix.length))\n }\n }\n\n return keys\n },\n }\n}\n\nexport function createLocalStorageValue<T>(\n key: string,\n options: LocalStorageOptions = {}\n) {\n const storage = createLocalStorage<string, T>(`single:${key}`, options)\n const storageKey = 'value'\n\n return {\n get: (): T | undefined => {\n return storage.get(storageKey)\n },\n\n set: (value: T): void => {\n storage.set(storageKey, value)\n },\n\n remove: (): void => {\n storage.remove(storageKey)\n },\n\n exists: (): boolean => {\n return storage.exists(storageKey)\n },\n\n clear: (): void => {\n storage.clear()\n },\n\n subscribe: (listener: (value: T | undefined) => void): (() => void) => {\n return storage.subscribe(storageKey, listener)\n },\n }\n}\n\nfunction getStorageTracking(): StorageTracking {\n if (typeof localStorage === 'undefined') return {}\n const tracking = localStorage.getItem(STORAGE_TRACKING_KEY)\n return tracking ? JSON.parse(tracking) : {}\n}\n\nfunction setStorageTracking(tracking: StorageTracking): void {\n if (typeof localStorage === 'undefined') return\n localStorage.setItem(STORAGE_TRACKING_KEY, JSON.stringify(tracking))\n}\n\nfunction getStorageOrder(): string[] {\n if (typeof localStorage === 'undefined') return []\n const order = localStorage.getItem(STORAGE_ORDER_KEY)\n return order ? JSON.parse(order) : []\n}\n\nfunction setStorageOrder(order: string[]): void {\n if (typeof localStorage === 'undefined') return\n localStorage.setItem(STORAGE_ORDER_KEY, JSON.stringify(order))\n}\n\nfunction getStringSizeInBytes(str: string): number {\n return new Blob([str]).size\n}\n\nfunction updateKeyAccess(key: string): void {\n const order = getStorageOrder()\n const index = order.indexOf(key)\n if (index > -1) {\n order.splice(index, 1)\n }\n order.push(key) // move to end (most recent)\n setStorageOrder(order)\n}\n\nfunction enforceStorageLimit(newKey: string, newSize: number, limitKB: number): void {\n const tracking = getStorageTracking()\n const order = getStorageOrder()\n\n let totalSize = Object.values(tracking).reduce((sum, size) => sum + size, 0)\n totalSize += newSize // add the new item size\n\n const limitBytes = limitKB * 1024\n\n while (totalSize > limitBytes && order.length > 0) {\n const oldestKey = order.shift()!\n\n if (\n oldestKey === newKey ||\n oldestKey === STORAGE_TRACKING_KEY ||\n oldestKey === STORAGE_ORDER_KEY\n ) {\n continue\n }\n\n const oldSize = tracking[oldestKey] || 0\n totalSize -= oldSize\n\n localStorage.removeItem(oldestKey)\n delete tracking[oldestKey]\n }\n\n setStorageTracking(tracking)\n setStorageOrder(order)\n}\n"
|
|
20
|
+
],
|
|
21
|
+
"version": 3
|
|
22
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mappings": ";AAEA,OAAO,iBAAS,kBACdA,aACAC,eACAC,eACAC",
|
|
3
|
+
"names": [
|
|
4
|
+
"url: string",
|
|
5
|
+
"title: string",
|
|
6
|
+
"width: number",
|
|
7
|
+
"height: number"
|
|
8
|
+
],
|
|
9
|
+
"sources": [
|
|
10
|
+
"src/browser/openPopup.ts"
|
|
11
|
+
],
|
|
12
|
+
"sourcesContent": [
|
|
13
|
+
"// note safari enhanced privacy will break this as it reports screen height as smaller\n\nexport function openCenteredPopup(\n url: string,\n title: string,\n width: number,\n height: number\n) {\n // availWidth/availHeight accounts for taskbars, docks, and other UI elements\n const screenWidth = screen.availWidth || screen.width\n const screenHeight = screen.availHeight || screen.height\n\n const shouldGuess = screenHeight < height\n\n // if we are guessing, at least make it a bit more likely to be centered\n // and not just touching the top which looks broken\n const left = Math.max(0, (screenWidth - width) / 2) + (shouldGuess ? 100 : 0)\n const top = Math.max(150, shouldGuess ? 150 : Math.max(0, (screenHeight - height) / 2))\n\n const windowFeatures = `\n width=${width},\n height=${height},\n left=${left},\n top=${top},\n scrollbars=yes,\n resizable=yes\n `\n\n return window.open(url, title, windowFeatures)\n}\n"
|
|
14
|
+
],
|
|
15
|
+
"version": 3
|
|
16
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const isTauri: boolean;
|
|
2
|
+
export declare const isNative: boolean;
|
|
3
|
+
// TODO move to probably ~/interface/constants
|
|
4
|
+
export declare const IS_MAC_DESKTOP: boolean;
|
|
5
|
+
export declare const IS_SAFARI: boolean;
|
|
6
|
+
export { isAndroid, isClient, isIos, isServer, isWeb } from "@tamagui/constants";
|
|
7
|
+
export declare const EMPTY_ARRAY: never;
|
|
8
|
+
export declare const EMPTY_OBJECT: never;
|
|
9
|
+
export declare const DEBUG_LEVEL: number;
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mappings": "AAEA,OAAO,cAAMA;AAKb,OAAO,cAAMC;;AAIb,OAAO,cAAMC;AAGb,OAAO,cAAMC;AAMb,SAAS,WAAW,UAAU,OAAO,UAAU,aAAa;AAE5D,OAAO,cAAM;AACb,OAAO,cAAM;AAQb,OAAO,cAAMC",
|
|
3
|
+
"names": [
|
|
4
|
+
"isTauri: boolean",
|
|
5
|
+
"isNative: boolean",
|
|
6
|
+
"IS_MAC_DESKTOP: boolean",
|
|
7
|
+
"IS_SAFARI: boolean",
|
|
8
|
+
"DEBUG_LEVEL: number"
|
|
9
|
+
],
|
|
10
|
+
"sources": [
|
|
11
|
+
"src/constants.ts"
|
|
12
|
+
],
|
|
13
|
+
"sourcesContent": [
|
|
14
|
+
"import { isWeb } from '@tamagui/constants'\n\nexport const isTauri: boolean =\n typeof window !== 'undefined' &&\n // @ts-expect-error\n window['__TAURI__'] !== undefined\n\nexport const isNative: boolean = !isWeb && !isTauri\n\n// TODO move to probably ~/interface/constants\n\nexport const IS_MAC_DESKTOP: boolean =\n typeof navigator !== 'undefined' && /Macintosh|MacIntel/.test(navigator.platform)\n\nexport const IS_SAFARI: boolean =\n isTauri ||\n (typeof navigator !== 'undefined' &&\n /Version\\/[\\d.]+.*Safari/.test(navigator.userAgent) &&\n /Apple Computer/.test(navigator.vendor))\n\nexport { isAndroid, isClient, isIos, isServer, isWeb } from '@tamagui/constants'\n\nexport const EMPTY_ARRAY = [] as never\nexport const EMPTY_OBJECT = {} as never\n\nconst getDebugLevelFromUrl = (): number | null => {\n if (typeof window === 'undefined') return null\n const match = window.location?.search?.match(/debug=(\\d+)/)\n return match?.[1] ? parseInt(match[1], 10) : null\n}\n\nexport const DEBUG_LEVEL: number = process.env.DEBUG_LEVEL\n ? +process.env.DEBUG_LEVEL\n : (getDebugLevelFromUrl() ?? (process.env.NODE_ENV === 'development' ? 1 : 0))\n"
|
|
15
|
+
],
|
|
16
|
+
"version": 3
|
|
17
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Debug utility that logs a value and passes it through unchanged.
|
|
3
|
+
* Useful for debugging chains of operations without breaking the flow.
|
|
4
|
+
*
|
|
5
|
+
* @param value - The value to log and pass through
|
|
6
|
+
* @param label - Optional label to prefix the log output
|
|
7
|
+
* @returns The original value unchanged
|
|
8
|
+
*/
|
|
9
|
+
export declare function debugLog<T>(value: T, label?: string): T;
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=debugLog.d.ts.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mappings": ";;;;;;;;AAQA,OAAO,iBAAS,SAAS,GAAGA,OAAO,GAAGC,iBAAiB",
|
|
3
|
+
"names": [
|
|
4
|
+
"value: T",
|
|
5
|
+
"label?: string"
|
|
6
|
+
],
|
|
7
|
+
"sources": [
|
|
8
|
+
"src/debug/debugLog.ts"
|
|
9
|
+
],
|
|
10
|
+
"sourcesContent": [
|
|
11
|
+
"/**\n * Debug utility that logs a value and passes it through unchanged.\n * Useful for debugging chains of operations without breaking the flow.\n *\n * @param value - The value to log and pass through\n * @param label - Optional label to prefix the log output\n * @returns The original value unchanged\n */\nexport function debugLog<T>(value: T, label?: string): T {\n const output = label ? `[${label}]` : '[DEBUG]'\n console.info(output, value)\n return value\n}\n"
|
|
12
|
+
],
|
|
13
|
+
"version": 3
|
|
14
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mappings": "AAEA,OAAO,iBAAS,cAAc,GAC5BA,WAAW,GAAG,MAAM,SAAS,MAAM,eAAe,QAChD,GAAG,MAAM,SAAS,MAAM,eAAe",
|
|
3
|
+
"names": [
|
|
4
|
+
"useState: [T, React.Dispatch<React.SetStateAction<T>>]"
|
|
5
|
+
],
|
|
6
|
+
"sources": [
|
|
7
|
+
"src/debug/debugUseState.ts"
|
|
8
|
+
],
|
|
9
|
+
"sourcesContent": [
|
|
10
|
+
"import { useCallback } from 'react'\n\nexport function debugUseState<T>(\n useState: [T, React.Dispatch<React.SetStateAction<T>>]\n): [T, React.Dispatch<React.SetStateAction<T>>] {\n const [state, setState] = useState\n\n const wrappedSetState = useCallback(\n (newValue: T | ((prevState: T) => T)) => {\n if (typeof newValue === 'function') {\n // Handle callback style\n setState((prevState: T) => {\n const nextState = (newValue as (prevState: T) => T)(prevState)\n console.trace('State update (callback):', {\n prevState,\n nextState,\n stack: new Error().stack,\n })\n return nextState\n })\n } else {\n // Handle direct value style\n console.trace('State update (direct):', {\n prevState: state,\n nextState: newValue,\n stack: new Error().stack,\n })\n setState(newValue)\n }\n },\n [setState, state]\n )\n\n return [state, wrappedSetState]\n}\n"
|
|
11
|
+
],
|
|
12
|
+
"version": 3
|
|
13
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import type { JSX, PropsWithChildren } from "react";
|
|
2
|
+
type EmitterOptions<T> = CreateEmitterOpts<T> & {
|
|
3
|
+
name: string;
|
|
4
|
+
};
|
|
5
|
+
type CreateEmitterOpts<T> = {
|
|
6
|
+
silent?: boolean;
|
|
7
|
+
comparator?: (a: T, b: T) => boolean;
|
|
8
|
+
};
|
|
9
|
+
export declare class Emitter<const T> {
|
|
10
|
+
private disposables;
|
|
11
|
+
value: T;
|
|
12
|
+
options?: EmitterOptions<T>;
|
|
13
|
+
constructor(value: T, options?: EmitterOptions<T>);
|
|
14
|
+
listen: (disposable: (cb: T) => void) => (() => void);
|
|
15
|
+
emit: (next: T) => void;
|
|
16
|
+
nextValue: () => Promise<T>;
|
|
17
|
+
}
|
|
18
|
+
// just createEmitter but ensures it doesn't mess up on HMR
|
|
19
|
+
export declare function createGlobalEmitter<T>(name: string, defaultValue: T, options?: CreateEmitterOpts<T>): Emitter<T>;
|
|
20
|
+
export declare function createEmitter<T>(name: string, defaultValue: T, options?: CreateEmitterOpts<T>): Emitter<T>;
|
|
21
|
+
export type EmitterType<E extends Emitter<any>> = E extends Emitter<infer Val> ? Val : never;
|
|
22
|
+
export declare const useEmitter: <E extends Emitter<any>>(emitter: E, cb: (cb: EmitterType<E>) => void, args?: any[]) => void;
|
|
23
|
+
export declare const useEmitterValue: <E extends Emitter<any>>(emitter: E, options?: {
|
|
24
|
+
disable?: boolean;
|
|
25
|
+
}) => EmitterType<E>;
|
|
26
|
+
/**
|
|
27
|
+
* By default selectors run every render, as well as when emitters update. This is a change
|
|
28
|
+
* from the previous behavior where they only ran when emitters changed value.
|
|
29
|
+
*
|
|
30
|
+
* The reason for this is because emitters capture the variables in scope of the component
|
|
31
|
+
* each render already by using "useGet" by default, which makes them easier to use - you
|
|
32
|
+
* don't need to pass an args[] array except for edge cases.
|
|
33
|
+
*
|
|
34
|
+
* Before explaining why we switched to the default, understand the different uses:
|
|
35
|
+
*
|
|
36
|
+
* - Default behavior - selector is updated every render, and ran every render, as well as
|
|
37
|
+
* when emitter value changes, so you basically are always up to date.
|
|
38
|
+
*
|
|
39
|
+
* - Set an args[] array as the fourth argument - this will stop the automatic capturing
|
|
40
|
+
* and instead update selector only when you change args[] yourself. This is good for when you
|
|
41
|
+
* want explicit control over re-selection and rendering.
|
|
42
|
+
*
|
|
43
|
+
* - With { lazy: true }, the selector only runs when the emitter value changes. If used with
|
|
44
|
+
* args[], you capture the context of the selector based on args[], if not, it's based on the
|
|
45
|
+
* current render.
|
|
46
|
+
*
|
|
47
|
+
* I made this change when we had 16 usages of useEmitterSelector and 100% of them are doing very
|
|
48
|
+
* cheap calculations, so this feels like the right pattern. For the rare case of a heavy selector,
|
|
49
|
+
* you have the option to control it.
|
|
50
|
+
*
|
|
51
|
+
*/
|
|
52
|
+
export declare const useEmitterSelector: <
|
|
53
|
+
E extends Emitter<any>,
|
|
54
|
+
T extends EmitterType<E>,
|
|
55
|
+
R
|
|
56
|
+
>(emitter: E, selector: (value: T) => R, options?: {
|
|
57
|
+
disable?: boolean;
|
|
58
|
+
lazy?: boolean;
|
|
59
|
+
}, args?: any[]) => R;
|
|
60
|
+
export declare const useEmittersSelector: <
|
|
61
|
+
const E extends readonly Emitter<any>[],
|
|
62
|
+
R
|
|
63
|
+
>(emitters: E, selector: (values: { [K in keyof E] : EmitterType<E[K]> }) => R, options?: {
|
|
64
|
+
disable?: boolean;
|
|
65
|
+
isEqual?: (a: R, b: R) => boolean;
|
|
66
|
+
}) => R;
|
|
67
|
+
export declare const createUseEmitter: <E extends Emitter<any>>(emitter: E) => ((cb: (val: EmitterType<E>) => void, args?: any[]) => void);
|
|
68
|
+
export declare const createUseSelector: <E extends Emitter<any>>(emitter: E) => (<R>(selector: (value: EmitterType<E>) => R, options?: {
|
|
69
|
+
disable?: boolean;
|
|
70
|
+
lazy?: boolean;
|
|
71
|
+
}, args?: any[]) => R);
|
|
72
|
+
export declare function createContextualEmitter<T>(name: string, defaultValue: T, defaultOptions?: Omit<EmitterOptions<T>, "name">): readonly [() => Emitter<T>, (props: PropsWithChildren<{
|
|
73
|
+
value?: T;
|
|
74
|
+
silent?: boolean;
|
|
75
|
+
}>) => JSX.Element];
|
|
76
|
+
export {};
|
|
77
|
+
|
|
78
|
+
//# sourceMappingURL=emitter.d.ts.map
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mappings": "AACA,cAAc,KAAK,yBAAyB,OAAO;KA+B9C,eAAe,KAAK,kBAAkB,KAAK;CAC9C;AACD;KAEI,kBAAkB,KAAK;CAC1B;CACA,cAAcA,GAAG,GAAGC,GAAG;AACxB;AAED,OAAO,cAAM,cAAc,GAAG;CAC5B,QAAQ;CACR,OAAO;CACP,UAAU,eAAe;CAEzB,YAAYC,OAAO,GAAGC,UAAU,eAAe;CAK/C,SAAUC,aAAaC,IAAI;CAO3B,OAAQC,MAAM;CAqCd,iBAAgB,QAAQ;AAQzB;;AAGD,OAAO,iBAAS,oBAAoB,GAClCC,cACAC,cAAc,GACdC,UAAU,kBAAkB,KAC3B,QAAQ;AAIX,OAAO,iBAAS,cAAc,GAC5BF,cACAC,cAAc,GACdC,UAAU,kBAAkB,KAC3B,QAAQ;AAKX,YAAY,YAAY,UAAU,gBAAgB,UAAU,cAAc,OACtE;AAGJ,OAAO,cAAM,aAAc,UAAU,cACnCC,SAAS,GACTC,KAAKC,IAAI,YAAY,aACrBC;AAeF,OAAO,cAAM,kBAAmB,UAAU,cACxCH,SAAS,GACTI,UAAU;CAAE;AAAmB,MAC9B,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCf,OAAO,cAAM;CAAsB,UAAU;CAAc,UAAU,YAAY;CAAI;EACnFJ,SAAS,GACTK,WAAWb,OAAO,MAAM,GACxBc,UAAU;CACR;CACA;AACD,GACDC,iBACC;AAgCH,OAAO,cAAM;OAA6B,mBAAmB;CAAgB;EAC3EC,UAAU,GACVC,WAAWC,WAAW,WAAW,KAAI,YAAY,EAAE,UAAU,GAC7DC,UAAU;CAAE;CAAmB,WAAWC,GAAG,GAAGC,GAAG;AAAe,MACjE;AAgDH,OAAO,cAAM,mBAAoB,UAAU,cACzCb,SAAS,QACNc,KAAKC,KAAK,YAAY,aAAaZ;AAKxC,OAAO,cAAM,oBAAqB,UAAU,cAC1CH,SAAS,QACN,GACHgB,WAAWC,OAAO,YAAY,OAAO,GACrCC,UAAU;CAAE;CAAmB;AAAgB,GAC/Cf,iBACG;AAUL,OAAO,iBAAS,wBAAwB,GACtCN,cACAC,cAAc,GACdqB,iBAAiB,KAAK,eAAe,IAAI,0BAEnC,QAAQ,KACbC,OAAO,kBAAkB;CAAE,QAAQ;CAAG;AAAkB,OAAM,IAAI",
|
|
3
|
+
"names": [
|
|
4
|
+
"a: T",
|
|
5
|
+
"b: T",
|
|
6
|
+
"value: T",
|
|
7
|
+
"options?: EmitterOptions<T>",
|
|
8
|
+
"disposable: (cb: T) => void",
|
|
9
|
+
"cb: T",
|
|
10
|
+
"next: T",
|
|
11
|
+
"name: string",
|
|
12
|
+
"defaultValue: T",
|
|
13
|
+
"options?: CreateEmitterOpts<T>",
|
|
14
|
+
"emitter: E",
|
|
15
|
+
"cb: (cb: EmitterType<E>) => void",
|
|
16
|
+
"cb: EmitterType<E>",
|
|
17
|
+
"args?: any[]",
|
|
18
|
+
"options?: { disable?: boolean }",
|
|
19
|
+
"selector: (value: T) => R",
|
|
20
|
+
"options?: {\n disable?: boolean\n lazy?: boolean\n }",
|
|
21
|
+
"args: any[]",
|
|
22
|
+
"emitters: E",
|
|
23
|
+
"selector: (values: { [K in keyof E]: EmitterType<E[K]> }) => R",
|
|
24
|
+
"values: { [K in keyof E]: EmitterType<E[K]> }",
|
|
25
|
+
"options?: { disable?: boolean; isEqual?: (a: R, b: R) => boolean }",
|
|
26
|
+
"a: R",
|
|
27
|
+
"b: R",
|
|
28
|
+
"cb: (val: EmitterType<E>) => void",
|
|
29
|
+
"val: EmitterType<E>",
|
|
30
|
+
"selector: (value: EmitterType<E>) => R",
|
|
31
|
+
"value: EmitterType<E>",
|
|
32
|
+
"options?: { disable?: boolean; lazy?: boolean }",
|
|
33
|
+
"defaultOptions?: Omit<EmitterOptions<T>, 'name'>",
|
|
34
|
+
"props: PropsWithChildren<{ value?: T; silent?: boolean }>"
|
|
35
|
+
],
|
|
36
|
+
"sources": [
|
|
37
|
+
"src/emitter.tsx"
|
|
38
|
+
],
|
|
39
|
+
"sourcesContent": [
|
|
40
|
+
"import { dequal } from 'dequal'\nimport type { JSX, PropsWithChildren } from 'react'\nimport * as React from 'react'\nimport { use, useLayoutEffect, useState } from 'react'\nimport { handleAbortError } from './async/abortable'\nimport { DEBUG_LEVEL, EMPTY_ARRAY } from './constants'\nimport { AbortError } from './error/errors'\nimport { createGlobalContext } from './react/createGlobalContext'\nimport { globalValue } from './global/globalValue'\n\n// keeps a reference to the current value easily\n\n// TODO can replace with useEffectEvent\nfunction useGet<A>(\n currentValue: A,\n initialValue?: any,\n forwardToFunction?: boolean\n): () => A {\n const curRef = React.useRef<any>(initialValue ?? currentValue)\n\n useLayoutEffect(() => {\n curRef.current = currentValue\n })\n\n return React.useCallback(\n forwardToFunction\n ? (...args) => curRef.current?.apply(null, args)\n : () => curRef.current,\n []\n )\n}\n\ntype EmitterOptions<T> = CreateEmitterOpts<T> & {\n name: string\n}\n\ntype CreateEmitterOpts<T> = {\n silent?: boolean\n comparator?: (a: T, b: T) => boolean\n}\n\nexport class Emitter<const T> {\n private disposables = new Set<(cb: any) => void>()\n value: T\n options?: EmitterOptions<T>\n\n constructor(value: T, options?: EmitterOptions<T>) {\n this.value = value\n this.options = options\n }\n\n listen = (disposable: (cb: T) => void): (() => void) => {\n this.disposables.add(disposable)\n return (): void => {\n this.disposables.delete(disposable)\n }\n }\n\n emit = (next: T): void => {\n if (process.env.NODE_ENV === 'development') {\n setCache(this, next)\n }\n const compare = this.options?.comparator\n if (compare) {\n if (this.value && compare(this.value, next)) {\n return\n }\n } else {\n if (this.value === next) {\n if (process.env.NODE_ENV === 'development') {\n console.warn(\n `[emitter] ${this.options?.name} no comparator option but received same value!\n \nthis will emit the same value again, which can be desirable, but we warn to ensure it's not unintended:\n\n- if you want this behavior, add { comparator: isEqualNever }\n- if you want only non-equal values: { comparator: isEqualIdentity }\n- if you want only deeply non-equal values: { comparator: isEqualDeep }`\n )\n }\n }\n }\n this.value = next\n if (DEBUG_LEVEL > 1) {\n if (!this.options?.silent) {\n const name = this.options?.name\n console.groupCollapsed(`📣 ${name}`)\n console.info(next)\n console.trace(`trace >`)\n console.groupEnd()\n }\n }\n this.disposables.forEach((cb) => cb(next))\n }\n\n nextValue = (): Promise<T> => {\n return new Promise<T>((res) => {\n const dispose = this.listen((val) => {\n dispose()\n res(val)\n })\n })\n }\n}\n\n// just createEmitter but ensures it doesn't mess up on HMR\nexport function createGlobalEmitter<T>(\n name: string,\n defaultValue: T,\n options?: CreateEmitterOpts<T>\n): Emitter<T> {\n return globalValue(name, () => createEmitter(name, defaultValue, options))\n}\n\nexport function createEmitter<T>(\n name: string,\n defaultValue: T,\n options?: CreateEmitterOpts<T>\n): Emitter<T> {\n const existing = createOrUpdateCache(name, defaultValue) as T\n return new Emitter<T>(existing || defaultValue, { name, ...options })\n}\n\nexport type EmitterType<E extends Emitter<any>> = E extends Emitter<infer Val>\n ? Val\n : never\n\nexport const useEmitter = <E extends Emitter<any>>(\n emitter: E,\n cb: (cb: EmitterType<E>) => void,\n args?: any[]\n): void => {\n const getCallback = useGet(cb)\n\n useLayoutEffect(() => {\n return emitter.listen((val) => {\n try {\n getCallback()(val)\n } catch (err) {\n handleAbortError(err)\n }\n })\n }, [emitter, getCallback])\n}\n\nexport const useEmitterValue = <E extends Emitter<any>>(\n emitter: E,\n options?: { disable?: boolean }\n): EmitterType<E> => {\n const [state, setState] = useState<EmitterType<E>>(emitter.value)\n const disabled = options?.disable\n\n useLayoutEffect(() => {\n if (disabled) return\n if (emitter.value !== state) {\n setState(emitter.value)\n }\n return emitter.listen(setState)\n }, [disabled, emitter, state])\n\n return state\n}\n\n/**\n * By default selectors run every render, as well as when emitters update. This is a change\n * from the previous behavior where they only ran when emitters changed value.\n *\n * The reason for this is because emitters capture the variables in scope of the component\n * each render already by using \"useGet\" by default, which makes them easier to use - you\n * don't need to pass an args[] array except for edge cases.\n *\n * Before explaining why we switched to the default, understand the different uses:\n *\n * - Default behavior - selector is updated every render, and ran every render, as well as\n * when emitter value changes, so you basically are always up to date.\n *\n * - Set an args[] array as the fourth argument - this will stop the automatic capturing\n * and instead update selector only when you change args[] yourself. This is good for when you\n * want explicit control over re-selection and rendering.\n *\n * - With { lazy: true }, the selector only runs when the emitter value changes. If used with\n * args[], you capture the context of the selector based on args[], if not, it's based on the\n * current render.\n *\n * I made this change when we had 16 usages of useEmitterSelector and 100% of them are doing very\n * cheap calculations, so this feels like the right pattern. For the rare case of a heavy selector,\n * you have the option to control it.\n *\n */\nexport const useEmitterSelector = <E extends Emitter<any>, T extends EmitterType<E>, R>(\n emitter: E,\n selector: (value: T) => R,\n options?: {\n disable?: boolean\n lazy?: boolean\n },\n args: any[] = EMPTY_ARRAY\n): R => {\n const [state, setState] = useState<R>(() => selector(emitter.value))\n const disabled = options?.disable\n const getSelector = useGet(selector)\n\n if (options?.lazy !== true) {\n const next = selector(emitter.value)\n if (next !== state) {\n setState(next)\n }\n }\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: we are using args fine\n useLayoutEffect(() => {\n if (disabled) return\n return emitter.listen((val) => {\n try {\n const selectorFn = args !== EMPTY_ARRAY ? selector : getSelector()\n const next = selectorFn(val)\n setState(next)\n } catch (error) {\n if (error instanceof AbortError) {\n return\n }\n throw error\n }\n })\n }, [disabled, emitter, getSelector, ...args])\n\n return state\n}\n\nexport const useEmittersSelector = <const E extends readonly Emitter<any>[], R>(\n emitters: E,\n selector: (values: { [K in keyof E]: EmitterType<E[K]> }) => R,\n options?: { disable?: boolean; isEqual?: (a: R, b: R) => boolean }\n): R => {\n const getSelector = useGet(selector)\n const disabled = options?.disable\n\n const [state, setState] = useState<R>(() => {\n const values = emitters.map((e) => e.value) as { [K in keyof E]: EmitterType<E[K]> }\n return getSelector()(values)\n })\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: ignore\n useLayoutEffect(() => {\n if (disabled) {\n return\n }\n\n const handler = () => {\n const values = emitters.map((e) => e.value) as {\n [K in keyof E]: EmitterType<E[K]>\n }\n try {\n const next = getSelector()(values)\n setState((prev) => {\n if (options?.isEqual?.(prev, next)) {\n return prev\n }\n if (dequal(prev, next)) {\n return prev\n }\n return next\n })\n } catch (error) {\n if (error instanceof AbortError) {\n return\n }\n throw error\n }\n }\n\n const disposals = emitters.map((emitter) => emitter.listen(handler))\n\n return () => {\n disposals.forEach((d) => d())\n }\n }, [disabled, getSelector, ...emitters])\n\n return state\n}\n\nexport const createUseEmitter = <E extends Emitter<any>>(\n emitter: E\n): ((cb: (val: EmitterType<E>) => void, args?: any[]) => void) => {\n return (cb: (val: EmitterType<E>) => void, args?: any[]) =>\n useEmitter(emitter, cb, args)\n}\n\nexport const createUseSelector = <E extends Emitter<any>>(\n emitter: E\n): (<R>(\n selector: (value: EmitterType<E>) => R,\n options?: { disable?: boolean; lazy?: boolean },\n args?: any[]\n) => R) => {\n return <R,>(\n selector: (value: EmitterType<E>) => R,\n options?: { disable?: boolean; lazy?: boolean },\n args?: any[]\n ): R => {\n return useEmitterSelector(emitter, selector, options, args)\n }\n}\n\nexport function createContextualEmitter<T>(\n name: string,\n defaultValue: T,\n defaultOptions?: Omit<EmitterOptions<T>, 'name'>\n): readonly [\n () => Emitter<T>,\n (props: PropsWithChildren<{ value?: T; silent?: boolean }>) => JSX.Element,\n] {\n const id = Math.random().toString(36)\n const EmitterContext = createGlobalContext<Emitter<T> | null>(\n `contextual-emitter/${id}`,\n null\n )\n\n const useContextEmitter = () => {\n const emitter = use(EmitterContext)\n if (!emitter) {\n throw new Error('useContextEmitter must be used within an EmitterProvider')\n }\n return emitter\n }\n\n type ProvideEmitterProps = PropsWithChildren<{\n value?: T\n silent?: boolean\n }>\n\n const ProvideEmitter = (props: ProvideEmitterProps) => {\n const { children, value, silent } = props\n const [emitter] = useState(\n () => new Emitter<T>(value ?? defaultValue, { name, silent, ...defaultOptions })\n )\n\n useLayoutEffect(() => {\n if (value !== undefined && value !== emitter.value) {\n emitter.emit(value)\n }\n }, [value, emitter])\n\n return <EmitterContext.Provider value={emitter}>{children}</EmitterContext.Provider>\n }\n\n return [useContextEmitter, ProvideEmitter] as const\n}\n\nconst HMRCache =\n process.env.NODE_ENV === 'development'\n ? new Map<string, { originalDefaultValue: unknown; currentValue: unknown }>()\n : null\n\nfunction setCache(emitter: Emitter<any>, value: unknown) {\n const name = emitter.options?.name\n if (!name) return\n const cache = HMRCache?.get(name)\n if (!cache) return\n cache.currentValue = value\n}\n\nfunction createOrUpdateCache(name: string, defaultValueProp: unknown) {\n const existing = HMRCache?.get(name)\n const defaultValue = dequal(existing?.originalDefaultValue, defaultValueProp)\n ? existing?.currentValue\n : defaultValueProp\n\n if (!existing) {\n HMRCache?.set(name, {\n originalDefaultValue: defaultValueProp,\n currentValue: defaultValue,\n })\n }\n\n return defaultValue\n}\n"
|
|
41
|
+
],
|
|
42
|
+
"version": 3
|
|
43
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mappings": "AAEA,OAAO,iBAAS,kBAAkB,UAAU,UAAUA,IAAI,IAAI",
|
|
3
|
+
"names": [
|
|
4
|
+
"fn: T"
|
|
5
|
+
],
|
|
6
|
+
"sources": [
|
|
7
|
+
"src/ensure/catchEnsureErrors.ts"
|
|
8
|
+
],
|
|
9
|
+
"sourcesContent": [
|
|
10
|
+
"import { EnsureError } from '../error/errors'\n\nexport function catchEnsureErrors<T extends Function>(fn: T): T {\n return ((...args: any[]) => {\n try {\n return fn(...args)\n } catch (error) {\n if (error instanceof EnsureError) {\n console.error(`EnsureError: ${error.message}`)\n return\n }\n throw error\n }\n }) as unknown as T\n}\n"
|
|
11
|
+
],
|
|
12
|
+
"version": 3
|
|
13
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function ensureExists<T>(value: T | undefined | null, msg?: string): asserts value is T;
|
|
2
|
+
export declare function ensure<T>(value: T, msg?: string): asserts value is Exclude<T, null | undefined | false>;
|
|
3
|
+
export declare function ensureError(val: unknown): asserts val is Error;
|
|
4
|
+
export declare function ensureString(val: unknown, name?: string): asserts val is string;
|
|
5
|
+
|
|
6
|
+
//# sourceMappingURL=ensure.d.ts.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mappings": "AAEA,OAAO,iBAAS,aAAa,GAC3BA,OAAO,sBACP,uBACS,SAAS;AAMpB,OAAO,iBAAS,OAAO,GACrBC,OAAO,GACP,uBACS,SAAS,QAAQ,sBAAsB;AAMlD,OAAO,iBAAS,YAAYC,uBAAuB,OAAO;AAM1D,OAAO,iBAAS,aAAaA,cAAc,wBAA6B",
|
|
3
|
+
"names": [
|
|
4
|
+
"value: T | undefined | null",
|
|
5
|
+
"value: T",
|
|
6
|
+
"val: unknown"
|
|
7
|
+
],
|
|
8
|
+
"sources": [
|
|
9
|
+
"src/ensure/ensure.ts"
|
|
10
|
+
],
|
|
11
|
+
"sourcesContent": [
|
|
12
|
+
"import { EnsureError } from '../error/errors'\n\nexport function ensureExists<T>(\n value: T | undefined | null,\n msg = ''\n): asserts value is T {\n if (value === undefined || value === null) {\n throw new EnsureError(`Invalid nullish value (${value}): ${msg}`)\n }\n}\n\nexport function ensure<T>(\n value: T,\n msg = ''\n): asserts value is Exclude<T, null | undefined | false> {\n if (!value) {\n throw new EnsureError(`ensure() invalid: (${value}): ${msg} ${new Error().stack}`)\n }\n}\n\nexport function ensureError(val: unknown): asserts val is Error {\n if (!(val instanceof Error)) {\n throw val\n }\n}\n\nexport function ensureString(val: unknown, name = '(unnamed)'): asserts val is string {\n if (typeof val !== 'string') {\n throw new EnsureError(`No string ${name}`)\n }\n}\n"
|
|
13
|
+
],
|
|
14
|
+
"version": 3
|
|
15
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mappings": "AAIA,OAAO,iBAAS,UAAU,GAAGA,aAAaC,UAAUC,QAAQ,gBAAgB,IAAI",
|
|
3
|
+
"names": [
|
|
4
|
+
"key: string",
|
|
5
|
+
"factory: (signal: AbortSignal) => T",
|
|
6
|
+
"signal: AbortSignal"
|
|
7
|
+
],
|
|
8
|
+
"sources": [
|
|
9
|
+
"src/ensure/ensureOne.ts"
|
|
10
|
+
],
|
|
11
|
+
"sourcesContent": [
|
|
12
|
+
"// Ensures only one instance ever exists, but replaces it every time it's called\n\nconst Controllers = new WeakMap<symbol, AbortController>()\n\nexport function ensureOne<T>(key: string, factory: (signal: AbortSignal) => T): T {\n const symbolKey = Symbol.for(key)\n const g = globalThis as Record<symbol, unknown>\n\n if (g[symbolKey]) {\n Controllers.get(symbolKey)?.abort()\n }\n\n const controller = new AbortController()\n g[symbolKey] = factory(controller.signal)\n\n return g[symbolKey] as T\n}\n"
|
|
13
|
+
],
|
|
14
|
+
"version": 3
|
|
15
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// Ensures a singleton value is stored on `globalThis` using a symbol key.
|
|
2
|
+
// This creates a stable singleton that survives hot-reloads during development.
|
|
3
|
+
// We store values on globalThis using `Symbol.for` keys to avoid collisions
|
|
4
|
+
// across independently bundled modules.
|
|
5
|
+
export declare function ensureSingleton<T>(key: string, factory: () => T): T;
|
|
6
|
+
|
|
7
|
+
//# sourceMappingURL=ensureSingleton.d.ts.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mappings": ";;;;AAMA,OAAO,iBAAS,gBAAgB,GAAGA,aAAaC,eAAe,IAAI",
|
|
3
|
+
"names": [
|
|
4
|
+
"key: string",
|
|
5
|
+
"factory: () => T"
|
|
6
|
+
],
|
|
7
|
+
"sources": [
|
|
8
|
+
"src/ensure/ensureSingleton.ts"
|
|
9
|
+
],
|
|
10
|
+
"sourcesContent": [
|
|
11
|
+
"// Ensures a singleton value is stored on `globalThis` using a symbol key.\n// This creates a stable singleton that survives hot-reloads during development.\n\n// We store values on globalThis using `Symbol.for` keys to avoid collisions\n// across independently bundled modules.\n\nexport function ensureSingleton<T>(key: string, factory: () => T): T {\n const symbolKey = Symbol.for(key)\n const g = globalThis as Record<symbol, unknown>\n\n if (!g[symbolKey]) {\n g[symbolKey] = factory()\n }\n\n return g[symbolKey] as T\n}\n"
|
|
12
|
+
],
|
|
13
|
+
"version": 3
|
|
14
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mappings": "AAAA,OAAO,cAAM,mBAAmB,MAAM;CACpC,YAAY;AAIb;AAED,OAAO,cAAM,oBAAoB,MAAM;CACrC,YAAYA;AAIb",
|
|
3
|
+
"names": [
|
|
4
|
+
"message: string"
|
|
5
|
+
],
|
|
6
|
+
"sources": [
|
|
7
|
+
"src/error/errors.ts"
|
|
8
|
+
],
|
|
9
|
+
"sourcesContent": [
|
|
10
|
+
"export class AbortError extends Error {\n constructor(message = '') {\n super(message)\n this.name = 'AbortError'\n }\n}\n\nexport class EnsureError extends Error {\n constructor(message: string) {\n super(message)\n this.name = 'EnsureError'\n }\n}\n"
|
|
11
|
+
],
|
|
12
|
+
"version": 3
|
|
13
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mappings": "AAuCA,OAAO,iBAAe,aACpBA,cACAC,kBACA;AAYF,OAAO,iBAAe,gBAAgBC,aAAaC",
|
|
3
|
+
"names": [
|
|
4
|
+
"data: string",
|
|
5
|
+
"filename: string",
|
|
6
|
+
"url: string",
|
|
7
|
+
"filename?: string"
|
|
8
|
+
],
|
|
9
|
+
"sources": [
|
|
10
|
+
"src/files/download.ts"
|
|
11
|
+
],
|
|
12
|
+
"sourcesContent": [
|
|
13
|
+
"import { isTauri } from '../constants'\n\nasync function saveInTauri(data: string | Blob, filename: string) {\n // @ts-ignore - tauri plugins only available in tauri environment\n const { save } = await import('@tauri-apps/plugin-dialog')\n // @ts-ignore - tauri plugins only available in tauri environment\n const { writeTextFile, writeBinaryFile } = await import('@tauri-apps/plugin-fs')\n\n const extension = filename.split('.').pop() || ''\n const filePath = await save({\n defaultPath: filename,\n filters: [\n {\n name: `${extension.toUpperCase()} files`,\n extensions: [extension],\n },\n ],\n })\n\n if (filePath) {\n if (typeof data === 'string') {\n await writeTextFile(filePath, data)\n } else {\n const arrayBuffer = await data.arrayBuffer()\n await writeBinaryFile(filePath, new Uint8Array(arrayBuffer))\n }\n }\n}\n\nfunction downloadInBrowser(url: string, filename: string) {\n const a = document.createElement('a')\n a.href = url\n a.download = filename\n a.target = '_blank'\n document.body.appendChild(a)\n a.click()\n document.body.removeChild(a)\n}\n\nexport async function downloadFile(\n data: string,\n filename: string,\n mimeType = 'application/json'\n) {\n if (isTauri) {\n await saveInTauri(data, filename)\n } else {\n const blob = new Blob([data], { type: mimeType })\n const url = URL.createObjectURL(blob)\n downloadInBrowser(url, filename)\n URL.revokeObjectURL(url)\n }\n}\n\nexport async function downloadFromUrl(url: string, filename?: string) {\n const resolvedFilename = filename || url.split('/').pop() || 'download'\n\n if (isTauri) {\n try {\n const response = await fetch(url)\n const blob = await response.blob()\n await saveInTauri(blob, resolvedFilename)\n } catch (error) {\n console.error('Failed to download file:', error)\n downloadInBrowser(url, resolvedFilename)\n }\n } else {\n downloadInBrowser(url, resolvedFilename)\n }\n}\n"
|
|
14
|
+
],
|
|
15
|
+
"version": 3
|
|
16
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface ThrottleOptions {
|
|
2
|
+
/**
|
|
3
|
+
* Fire immediately on the first call.
|
|
4
|
+
*/
|
|
5
|
+
start?: boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Fire as soon as `wait` has passed.
|
|
8
|
+
*/
|
|
9
|
+
middle?: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Cancel after the first successful call.
|
|
12
|
+
*/
|
|
13
|
+
once?: boolean;
|
|
14
|
+
}
|
|
15
|
+
interface Throttler<T extends unknown[]> {
|
|
16
|
+
(...args: T): void;
|
|
17
|
+
cancel(): void;
|
|
18
|
+
}
|
|
19
|
+
export declare function throttle<T extends unknown[]>(callback: (...args: T) => unknown, wait?: number, { start, middle, once }?: ThrottleOptions): Throttler<T>;
|
|
20
|
+
export {};
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=throttle.d.ts.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mappings": "AAIA,iBAAiB,gBAAgB;;;;CAI/B;;;;CAIA;;;;CAIA;AACD;UAES,UAAU,qBAAqB;EACtC,GAAG,MAAM;CACV;AACD;AAED,OAAO,iBAAS,SAAS,qBACvBA,WAAW,GAAG,MAAM,eACpB,eACA,EAAE,OAAc,QAAe,MAA+B,GAAf,kBAC9C,UAAU",
|
|
3
|
+
"names": [
|
|
4
|
+
"callback: (...args: T) => unknown"
|
|
5
|
+
],
|
|
6
|
+
"sources": [
|
|
7
|
+
"src/function/throttle.ts"
|
|
8
|
+
],
|
|
9
|
+
"sourcesContent": [
|
|
10
|
+
"// via @github/mini-throttle https://raw.githubusercontent.com/github/mini-throttle/refs/heads/main/index.ts\n\nimport type { Timer } from '../types/timer'\n\nexport interface ThrottleOptions {\n /**\n * Fire immediately on the first call.\n */\n start?: boolean\n /**\n * Fire as soon as `wait` has passed.\n */\n middle?: boolean\n /**\n * Cancel after the first successful call.\n */\n once?: boolean\n}\n\ninterface Throttler<T extends unknown[]> {\n (...args: T): void\n cancel(): void\n}\n\nexport function throttle<T extends unknown[]>(\n callback: (...args: T) => unknown,\n wait = 0,\n { start = true, middle = true, once = false }: ThrottleOptions = {}\n): Throttler<T> {\n let innerStart = start\n let last = 0\n let timer: Timer\n let cancelled = false\n function fn(this: unknown, ...args: T) {\n if (cancelled) return\n const delta = Date.now() - last\n last = Date.now()\n\n if (start && middle && delta >= wait) {\n innerStart = true\n }\n\n if (innerStart) {\n innerStart = false\n callback.apply(this, args)\n if (once) fn.cancel()\n } else if ((middle && delta < wait) || !middle) {\n clearTimeout(timer)\n timer = setTimeout(\n () => {\n last = Date.now()\n callback.apply(this, args)\n if (once) fn.cancel()\n },\n !middle ? wait : wait - delta\n )\n }\n }\n fn.cancel = () => {\n clearTimeout(timer)\n cancelled = true\n }\n return fn\n}\n\n// we have debounce from tamagui already\n// export function debounce<T extends unknown[]>(\n// callback: (...args: T) => unknown,\n// wait = 0,\n// { start = false, middle = false, once = false }: ThrottleOptions = {}\n// ): Throttler<T> {\n// return throttle(callback, wait, { start, middle, once })\n// }\n"
|
|
11
|
+
],
|
|
12
|
+
"version": 3
|
|
13
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type Context } from "react";
|
|
2
|
+
// create or retrieve a React context that is stored on `globalThis`.
|
|
3
|
+
// this ensures a stable singleton that survives hot-reloads during development.
|
|
4
|
+
export declare function createGlobalContext<T>(key: string, defaultValue: T): Context<T>;
|
|
5
|
+
|
|
6
|
+
//# sourceMappingURL=globalContext.d.ts.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mappings": "AAAA,cAAc,eAA8B,OAAO;;;AAMnD,OAAO,iBAAS,oBAAoB,GAAGA,aAAaC,cAAc,IAAI,QAAQ",
|
|
3
|
+
"names": [
|
|
4
|
+
"key: string",
|
|
5
|
+
"defaultValue: T"
|
|
6
|
+
],
|
|
7
|
+
"sources": [
|
|
8
|
+
"src/global/globalContext.ts"
|
|
9
|
+
],
|
|
10
|
+
"sourcesContent": [
|
|
11
|
+
"import { type Context, createContext } from 'react'\nimport { ensureSingleton } from '../ensure/ensureSingleton'\n\n// create or retrieve a React context that is stored on `globalThis`.\n// this ensures a stable singleton that survives hot-reloads during development.\n\nexport function createGlobalContext<T>(key: string, defaultValue: T): Context<T> {\n return ensureSingleton(key, () => createContext<T>(defaultValue))\n}\n"
|
|
12
|
+
],
|
|
13
|
+
"version": 3
|
|
14
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mappings": "AAAA,OAAO,iBAAS,aAAaA,aAAaC",
|
|
3
|
+
"names": [
|
|
4
|
+
"key: string",
|
|
5
|
+
"factory: () => void | (() => void)"
|
|
6
|
+
],
|
|
7
|
+
"sources": [
|
|
8
|
+
"src/global/globalEffect.ts"
|
|
9
|
+
],
|
|
10
|
+
"sourcesContent": [
|
|
11
|
+
"export function globalEffect(key: string, factory: () => void | (() => void)): void {\n const disposeKey = Symbol.for(key)\n const g = globalThis as Record<symbol, () => void>\n\n if (g[disposeKey]) {\n g[disposeKey]?.()\n }\n\n const dispose = factory()\n\n if (dispose) {\n g[disposeKey] = dispose\n }\n}\n"
|
|
12
|
+
],
|
|
13
|
+
"version": 3
|
|
14
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helper to store a value that's not duplicated within the global context Uses
|
|
3
|
+
* a symbol stored on `globalThis` to achieve it.
|
|
4
|
+
*
|
|
5
|
+
* There's two main uses for this (for us, so far):
|
|
6
|
+
*
|
|
7
|
+
* - in dev mode, HMR re-runs files, but you may want to preserve globals
|
|
8
|
+
*
|
|
9
|
+
* - in published node modules, sometimes Vite or other bundlers can cause
|
|
10
|
+
* duplicate dependencies either through bad setup or heuristics, they may
|
|
11
|
+
* compile a module but then another code path doesn't compile it, so you
|
|
12
|
+
* have duplicate modules. in this case it can be good to just use a
|
|
13
|
+
* globalValue and warn the end-user. because you can't account for ever
|
|
14
|
+
* possible weird configuration, and often fixing that config can be a
|
|
15
|
+
* massive pain in the ass, it's better to retain functionality while
|
|
16
|
+
* warning them so they can fix it at their own pace. this often happens
|
|
17
|
+
* with WeakMaps.
|
|
18
|
+
*
|
|
19
|
+
*/
|
|
20
|
+
export declare function globalValue<T>(key: string, factory: () => T, opts?: {
|
|
21
|
+
warnMessage?: string;
|
|
22
|
+
}): T;
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=globalValue.d.ts.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;AAoBA,OAAO,iBAAS,YAAY,GAC1BA,aACAC,eAAe,GACfC,OAAO;CACL;AACD,IACA",
|
|
3
|
+
"names": [
|
|
4
|
+
"key: string",
|
|
5
|
+
"factory: () => T",
|
|
6
|
+
"opts?: {\n warnMessage?: string\n }"
|
|
7
|
+
],
|
|
8
|
+
"sources": [
|
|
9
|
+
"src/global/globalValue.ts"
|
|
10
|
+
],
|
|
11
|
+
"sourcesContent": [
|
|
12
|
+
"/**\n * Helper to store a value that's not duplicated within the global context Uses\n * a symbol stored on `globalThis` to achieve it.\n *\n * There's two main uses for this (for us, so far):\n *\n * - in dev mode, HMR re-runs files, but you may want to preserve globals\n *\n * - in published node modules, sometimes Vite or other bundlers can cause\n * duplicate dependencies either through bad setup or heuristics, they may\n * compile a module but then another code path doesn't compile it, so you\n * have duplicate modules. in this case it can be good to just use a\n * globalValue and warn the end-user. because you can't account for ever\n * possible weird configuration, and often fixing that config can be a\n * massive pain in the ass, it's better to retain functionality while\n * warning them so they can fix it at their own pace. this often happens\n * with WeakMaps.\n *\n */\n\nexport function globalValue<T>(\n key: string,\n factory: () => T,\n opts?: {\n warnMessage?: string\n }\n): T {\n const symbolKey = Symbol.for(key)\n const g = globalThis as Record<symbol, unknown>\n\n if (!g[symbolKey]) {\n g[symbolKey] = factory()\n } else {\n if (opts?.warnMessage) {\n console.warn(`[globalValue] ${opts.warnMessage}`)\n }\n }\n\n return g[symbolKey] as T\n}\n"
|
|
13
|
+
],
|
|
14
|
+
"version": 3
|
|
15
|
+
}
|