@tanwan/utils 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/dist/addClass.cjs +19 -0
- package/dist/addClass.d.cts +16 -0
- package/dist/addClass.d.ts +17 -0
- package/dist/addClass.js +19 -0
- package/dist/{string/camelCase.d.cts → camelCase.d.cts} +1 -2
- package/dist/{string/camelCase.d.ts → camelCase.d.ts} +1 -2
- package/dist/{string/camelCase.js → camelCase.js} +0 -2
- package/dist/{string/capitalize.d.cts → capitalize.d.cts} +1 -2
- package/dist/{string/capitalize.d.ts → capitalize.d.ts} +1 -2
- package/dist/{string/capitalize.js → capitalize.js} +0 -2
- package/dist/{array/chunk.d.cts → chunk.d.cts} +1 -2
- package/dist/{array/chunk.d.ts → chunk.d.ts} +1 -2
- package/dist/{array/chunk.js → chunk.js} +0 -2
- package/dist/{number/clamp.d.cts → clamp.d.cts} +1 -2
- package/dist/{number/clamp.d.ts → clamp.d.ts} +1 -2
- package/dist/{number/clamp.js → clamp.js} +0 -2
- package/dist/convertCurrencyToChinese.cjs +56 -0
- package/dist/convertCurrencyToChinese.d.cts +18 -0
- package/dist/convertCurrencyToChinese.d.ts +19 -0
- package/dist/convertCurrencyToChinese.js +56 -0
- package/dist/copyToClipboard.cjs +38 -0
- package/dist/copyToClipboard.d.cts +17 -0
- package/dist/copyToClipboard.d.ts +18 -0
- package/dist/copyToClipboard.js +38 -0
- package/dist/createElement.cjs +27 -0
- package/dist/createElement.d.cts +21 -0
- package/dist/createElement.d.ts +22 -0
- package/dist/createElement.js +27 -0
- package/dist/{function/debounce.d.cts → debounce.d.cts} +1 -2
- package/dist/{function/debounce.d.ts → debounce.d.ts} +1 -2
- package/dist/{function/debounce.js → debounce.js} +0 -2
- package/dist/debounceSubmit.cjs +34 -0
- package/dist/debounceSubmit.d.cts +22 -0
- package/dist/debounceSubmit.d.ts +23 -0
- package/dist/debounceSubmit.js +34 -0
- package/dist/decodeBase64.cjs +19 -0
- package/dist/decodeBase64.d.cts +16 -0
- package/dist/decodeBase64.d.ts +17 -0
- package/dist/decodeBase64.js +19 -0
- package/dist/{base/deepClone.cjs → deepClone.cjs} +2 -2
- package/dist/{base/deepClone.d.cts → deepClone.d.cts} +1 -2
- package/dist/{base/deepClone.d.ts → deepClone.d.ts} +1 -2
- package/dist/{base/deepClone.js → deepClone.js} +0 -2
- package/dist/deepMerge.cjs +39 -0
- package/dist/deepMerge.d.cts +25 -0
- package/dist/deepMerge.d.ts +26 -0
- package/dist/deepMerge.js +39 -0
- package/dist/{function/delay.d.cts → delay.d.cts} +1 -2
- package/dist/{function/delay.d.ts → delay.d.ts} +1 -2
- package/dist/{function/delay.js → delay.js} +0 -2
- package/dist/difference.cjs +24 -0
- package/dist/difference.d.cts +20 -0
- package/dist/difference.d.ts +21 -0
- package/dist/difference.js +24 -0
- package/dist/downloadFile.cjs +31 -0
- package/dist/downloadFile.d.cts +20 -0
- package/dist/downloadFile.d.ts +21 -0
- package/dist/downloadFile.js +31 -0
- package/dist/encodeBase64.cjs +20 -0
- package/dist/encodeBase64.d.cts +17 -0
- package/dist/encodeBase64.d.ts +18 -0
- package/dist/encodeBase64.js +20 -0
- package/dist/{array/flatten.d.cts → flatten.d.cts} +1 -2
- package/dist/{array/flatten.d.ts → flatten.d.ts} +1 -2
- package/dist/{array/flatten.js → flatten.js} +0 -2
- package/dist/formatBankCard.cjs +19 -0
- package/dist/formatBankCard.d.cts +16 -0
- package/dist/formatBankCard.d.ts +17 -0
- package/dist/formatBankCard.js +19 -0
- package/dist/formatCurrency.cjs +7 -0
- package/dist/formatCurrency.d.cts +27 -0
- package/dist/formatCurrency.d.ts +28 -0
- package/dist/formatCurrency.js +7 -0
- package/dist/{date/formatDate.d.cts → formatDate.d.cts} +1 -2
- package/dist/{date/formatDate.d.ts → formatDate.d.ts} +1 -2
- package/dist/{date/formatDate.js → formatDate.js} +0 -2
- package/dist/formatFileSize.cjs +33 -0
- package/dist/formatFileSize.d.cts +19 -0
- package/dist/formatFileSize.d.ts +20 -0
- package/dist/formatFileSize.js +33 -0
- package/dist/formatIdCard.cjs +21 -0
- package/dist/formatIdCard.d.cts +17 -0
- package/dist/formatIdCard.d.ts +18 -0
- package/dist/formatIdCard.js +21 -0
- package/dist/formatPhone.cjs +21 -0
- package/dist/formatPhone.d.cts +17 -0
- package/dist/formatPhone.d.ts +18 -0
- package/dist/formatPhone.js +21 -0
- package/dist/{number/formatThousands.d.cts → formatThousands.d.cts} +1 -2
- package/dist/{number/formatThousands.d.ts → formatThousands.d.ts} +1 -2
- package/dist/{number/formatThousands.js → formatThousands.js} +0 -2
- package/dist/generateCode.cjs +29 -0
- package/dist/generateCode.d.cts +19 -0
- package/dist/generateCode.d.ts +20 -0
- package/dist/generateCode.js +29 -0
- package/dist/getAge.cjs +30 -0
- package/dist/getAge.d.cts +18 -0
- package/dist/getAge.d.ts +19 -0
- package/dist/getAge.js +30 -0
- package/dist/getByPath.cjs +29 -0
- package/dist/getByPath.d.cts +20 -0
- package/dist/getByPath.d.ts +21 -0
- package/dist/getByPath.js +29 -0
- package/dist/getCssVar.cjs +22 -0
- package/dist/getCssVar.d.cts +18 -0
- package/dist/getCssVar.d.ts +19 -0
- package/dist/getCssVar.js +22 -0
- package/dist/{date/getRelativeTime.d.cts → getRelativeTime.d.cts} +1 -2
- package/dist/{date/getRelativeTime.d.ts → getRelativeTime.d.ts} +1 -2
- package/dist/{date/getRelativeTime.js → getRelativeTime.js} +0 -2
- package/dist/getScrollTop.cjs +28 -0
- package/dist/getScrollTop.d.cts +18 -0
- package/dist/getScrollTop.d.ts +19 -0
- package/dist/getScrollTop.js +28 -0
- package/dist/getStorage.cjs +27 -0
- package/dist/getStorage.d.cts +18 -0
- package/dist/getStorage.d.ts +19 -0
- package/dist/getStorage.js +27 -0
- package/dist/getStyle.cjs +20 -0
- package/dist/getStyle.d.cts +17 -0
- package/dist/getStyle.d.ts +18 -0
- package/dist/getStyle.js +20 -0
- package/dist/getTextWidth.cjs +26 -0
- package/dist/getTextWidth.d.cts +16 -0
- package/dist/getTextWidth.d.ts +17 -0
- package/dist/getTextWidth.js +26 -0
- package/dist/{array/groupBy.d.cts → groupBy.d.cts} +1 -2
- package/dist/{array/groupBy.d.ts → groupBy.d.ts} +1 -2
- package/dist/{array/groupBy.js → groupBy.js} +0 -2
- package/dist/hasClass.cjs +19 -0
- package/dist/hasClass.d.cts +16 -0
- package/dist/hasClass.d.ts +17 -0
- package/dist/hasClass.js +19 -0
- package/dist/index.cjs +180 -54
- package/dist/index.d.cts +91 -28
- package/dist/index.d.ts +91 -28
- package/dist/index.iife.js +1 -1
- package/dist/index.js +91 -28
- package/dist/insertAfter.cjs +19 -0
- package/dist/insertAfter.d.cts +15 -0
- package/dist/insertAfter.d.ts +16 -0
- package/dist/insertAfter.js +19 -0
- package/dist/intersection.cjs +24 -0
- package/dist/intersection.d.cts +20 -0
- package/dist/intersection.d.ts +21 -0
- package/dist/intersection.js +24 -0
- package/dist/invert.cjs +21 -0
- package/dist/invert.d.cts +16 -0
- package/dist/invert.d.ts +17 -0
- package/dist/invert.js +21 -0
- package/dist/{base/isArray.d.cts → isArray.d.cts} +1 -2
- package/dist/{base/isArray.d.ts → isArray.d.ts} +1 -2
- package/dist/{base/isArray.js → isArray.js} +0 -2
- package/dist/isBrowser.cjs +17 -0
- package/dist/isBrowser.d.cts +14 -0
- package/dist/isBrowser.d.ts +15 -0
- package/dist/isBrowser.js +17 -0
- package/dist/isDate.cjs +18 -0
- package/dist/isDate.d.cts +15 -0
- package/dist/isDate.d.ts +16 -0
- package/dist/isDate.js +18 -0
- package/dist/{base/isEmpty.cjs → isEmpty.cjs} +2 -2
- package/dist/{base/isEmpty.d.cts → isEmpty.d.cts} +1 -2
- package/dist/{base/isEmpty.d.ts → isEmpty.d.ts} +1 -2
- package/dist/{base/isEmpty.js → isEmpty.js} +0 -2
- package/dist/isFunction.cjs +19 -0
- package/dist/isFunction.d.cts +16 -0
- package/dist/isFunction.d.ts +17 -0
- package/dist/isFunction.js +19 -0
- package/dist/isInViewport.cjs +22 -0
- package/dist/isInViewport.d.cts +17 -0
- package/dist/isInViewport.d.ts +18 -0
- package/dist/isInViewport.js +22 -0
- package/dist/isNil.cjs +19 -0
- package/dist/isNil.d.cts +16 -0
- package/dist/isNil.d.ts +17 -0
- package/dist/isNil.js +19 -0
- package/dist/isNumber.cjs +19 -0
- package/dist/isNumber.d.cts +16 -0
- package/dist/isNumber.d.ts +17 -0
- package/dist/isNumber.js +19 -0
- package/dist/{base/isObject.d.cts → isObject.d.cts} +1 -2
- package/dist/{base/isObject.d.ts → isObject.d.ts} +1 -2
- package/dist/{base/isObject.js → isObject.js} +0 -2
- package/dist/isPrimitive.cjs +21 -0
- package/dist/isPrimitive.d.cts +18 -0
- package/dist/isPrimitive.d.ts +19 -0
- package/dist/isPrimitive.js +21 -0
- package/dist/isPromise.cjs +18 -0
- package/dist/isPromise.d.cts +15 -0
- package/dist/isPromise.d.ts +16 -0
- package/dist/isPromise.js +18 -0
- package/dist/{base/isString.d.cts → isString.d.cts} +1 -2
- package/dist/{base/isString.d.ts → isString.d.ts} +1 -2
- package/dist/{base/isString.js → isString.js} +0 -2
- package/dist/joinUrl.cjs +25 -0
- package/dist/joinUrl.d.cts +19 -0
- package/dist/joinUrl.d.ts +20 -0
- package/dist/joinUrl.js +25 -0
- package/dist/{string/kebabCase.d.cts → kebabCase.d.cts} +1 -2
- package/dist/{string/kebabCase.d.ts → kebabCase.d.ts} +1 -2
- package/dist/{string/kebabCase.js → kebabCase.js} +0 -2
- package/dist/lazyLoadImages.cjs +36 -0
- package/dist/lazyLoadImages.d.cts +19 -0
- package/dist/lazyLoadImages.d.ts +20 -0
- package/dist/lazyLoadImages.js +36 -0
- package/dist/listToTree.cjs +25 -0
- package/dist/listToTree.d.cts +32 -0
- package/dist/listToTree.d.ts +33 -0
- package/dist/listToTree.js +25 -0
- package/dist/mapValues.cjs +25 -0
- package/dist/mapValues.d.cts +20 -0
- package/dist/mapValues.d.ts +21 -0
- package/dist/mapValues.js +25 -0
- package/dist/maskString.cjs +28 -0
- package/dist/maskString.d.cts +24 -0
- package/dist/maskString.d.ts +25 -0
- package/dist/maskString.js +28 -0
- package/dist/memoize.cjs +32 -0
- package/dist/memoize.d.cts +22 -0
- package/dist/memoize.d.ts +23 -0
- package/dist/memoize.js +32 -0
- package/dist/off.cjs +22 -0
- package/dist/off.d.cts +19 -0
- package/dist/off.d.ts +20 -0
- package/dist/off.js +22 -0
- package/dist/{object/omit.d.cts → omit.d.cts} +1 -2
- package/dist/{object/omit.d.ts → omit.d.ts} +1 -2
- package/dist/{object/omit.js → omit.js} +0 -2
- package/dist/on.cjs +21 -0
- package/dist/on.d.cts +18 -0
- package/dist/on.d.ts +19 -0
- package/dist/on.js +21 -0
- package/dist/once.cjs +31 -0
- package/dist/once.d.cts +20 -0
- package/dist/once.d.ts +21 -0
- package/dist/once.js +31 -0
- package/dist/{url/parseQueryString.d.cts → parseQueryString.d.cts} +1 -2
- package/dist/{url/parseQueryString.d.ts → parseQueryString.d.ts} +1 -2
- package/dist/{url/parseQueryString.js → parseQueryString.js} +0 -2
- package/dist/pascalCase.cjs +18 -0
- package/dist/pascalCase.d.cts +15 -0
- package/dist/pascalCase.d.ts +16 -0
- package/dist/pascalCase.js +18 -0
- package/dist/{object/pick.d.cts → pick.d.cts} +1 -2
- package/dist/{object/pick.d.ts → pick.d.ts} +1 -2
- package/dist/{object/pick.js → pick.js} +0 -2
- package/dist/{number/randomInt.d.cts → randomInt.d.cts} +1 -2
- package/dist/{number/randomInt.d.ts → randomInt.d.ts} +1 -2
- package/dist/{number/randomInt.js → randomInt.js} +0 -2
- package/dist/{array/range.d.cts → range.d.cts} +1 -2
- package/dist/{array/range.d.ts → range.d.ts} +1 -2
- package/dist/{array/range.js → range.js} +0 -2
- package/dist/removeClass.cjs +19 -0
- package/dist/removeClass.d.cts +16 -0
- package/dist/removeClass.d.ts +17 -0
- package/dist/removeClass.js +19 -0
- package/dist/removeElement.cjs +17 -0
- package/dist/removeElement.d.cts +14 -0
- package/dist/removeElement.d.ts +15 -0
- package/dist/removeElement.js +17 -0
- package/dist/removeStorage.cjs +19 -0
- package/dist/removeStorage.d.cts +14 -0
- package/dist/removeStorage.d.ts +15 -0
- package/dist/removeStorage.js +19 -0
- package/dist/retry.cjs +27 -0
- package/dist/retry.d.cts +17 -0
- package/dist/retry.d.ts +18 -0
- package/dist/retry.js +27 -0
- package/dist/sample.cjs +20 -0
- package/dist/sample.d.cts +16 -0
- package/dist/sample.d.ts +17 -0
- package/dist/sample.js +20 -0
- package/dist/scrollToElement.cjs +23 -0
- package/dist/scrollToElement.d.cts +16 -0
- package/dist/scrollToElement.d.ts +17 -0
- package/dist/scrollToElement.js +23 -0
- package/dist/setCssVar.cjs +22 -0
- package/dist/setCssVar.d.cts +18 -0
- package/dist/setCssVar.d.ts +19 -0
- package/dist/setCssVar.js +22 -0
- package/dist/setStorage.cjs +25 -0
- package/dist/setStorage.d.cts +17 -0
- package/dist/setStorage.d.ts +18 -0
- package/dist/setStorage.js +25 -0
- package/dist/setStyle.cjs +22 -0
- package/dist/setStyle.d.cts +19 -0
- package/dist/setStyle.d.ts +20 -0
- package/dist/setStyle.js +22 -0
- package/dist/{array/shuffle.d.cts → shuffle.d.cts} +1 -2
- package/dist/{array/shuffle.d.ts → shuffle.d.ts} +1 -2
- package/dist/{array/shuffle.js → shuffle.js} +0 -2
- package/dist/snakeCase.cjs +18 -0
- package/dist/snakeCase.d.cts +15 -0
- package/dist/snakeCase.d.ts +16 -0
- package/dist/snakeCase.js +18 -0
- package/dist/sortBy.cjs +30 -0
- package/dist/sortBy.d.cts +20 -0
- package/dist/sortBy.d.ts +21 -0
- package/dist/sortBy.js +30 -0
- package/dist/{url/stringifyQueryString.d.cts → stringifyQueryString.d.cts} +1 -2
- package/dist/{url/stringifyQueryString.d.ts → stringifyQueryString.d.ts} +1 -2
- package/dist/{url/stringifyQueryString.js → stringifyQueryString.js} +0 -2
- package/dist/{function/throttle.d.cts → throttle.d.cts} +1 -2
- package/dist/{function/throttle.d.ts → throttle.d.ts} +1 -2
- package/dist/{function/throttle.js → throttle.js} +0 -2
- package/dist/toggleClass.cjs +22 -0
- package/dist/toggleClass.d.cts +19 -0
- package/dist/toggleClass.d.ts +20 -0
- package/dist/toggleClass.js +22 -0
- package/dist/treeFind.cjs +34 -0
- package/dist/treeFind.d.cts +25 -0
- package/dist/treeFind.d.ts +26 -0
- package/dist/treeFind.js +34 -0
- package/dist/treeToList.cjs +33 -0
- package/dist/treeToList.d.cts +24 -0
- package/dist/treeToList.d.ts +25 -0
- package/dist/treeToList.js +33 -0
- package/dist/truncate.cjs +23 -0
- package/dist/truncate.d.cts +19 -0
- package/dist/truncate.d.ts +20 -0
- package/dist/truncate.js +23 -0
- package/dist/uniqBy.cjs +30 -0
- package/dist/uniqBy.d.cts +20 -0
- package/dist/uniqBy.d.ts +21 -0
- package/dist/uniqBy.js +30 -0
- package/dist/{array/unique.d.cts → unique.d.cts} +1 -2
- package/dist/{array/unique.d.ts → unique.d.ts} +1 -2
- package/dist/{array/unique.js → unique.js} +0 -2
- package/dist/{string/uuid.d.cts → uuid.d.cts} +1 -2
- package/dist/{string/uuid.d.ts → uuid.d.ts} +1 -2
- package/dist/{string/uuid.js → uuid.js} +0 -2
- package/dist/validateEmail.cjs +19 -0
- package/dist/validateEmail.d.cts +16 -0
- package/dist/validateEmail.d.ts +17 -0
- package/dist/validateEmail.js +19 -0
- package/dist/validateIdCard.cjs +62 -0
- package/dist/validateIdCard.d.cts +15 -0
- package/dist/validateIdCard.d.ts +16 -0
- package/dist/validateIdCard.js +62 -0
- package/dist/validatePhone.cjs +19 -0
- package/dist/validatePhone.d.cts +16 -0
- package/dist/validatePhone.d.ts +17 -0
- package/dist/validatePhone.js +19 -0
- package/package.json +340 -83
- package/dist/array/chunk.d.cts.map +0 -1
- package/dist/array/chunk.d.ts.map +0 -1
- package/dist/array/chunk.js.map +0 -1
- package/dist/array/flatten.d.cts.map +0 -1
- package/dist/array/flatten.d.ts.map +0 -1
- package/dist/array/flatten.js.map +0 -1
- package/dist/array/groupBy.d.cts.map +0 -1
- package/dist/array/groupBy.d.ts.map +0 -1
- package/dist/array/groupBy.js.map +0 -1
- package/dist/array/range.d.cts.map +0 -1
- package/dist/array/range.d.ts.map +0 -1
- package/dist/array/range.js.map +0 -1
- package/dist/array/shuffle.d.cts.map +0 -1
- package/dist/array/shuffle.d.ts.map +0 -1
- package/dist/array/shuffle.js.map +0 -1
- package/dist/array/unique.d.cts.map +0 -1
- package/dist/array/unique.d.ts.map +0 -1
- package/dist/array/unique.js.map +0 -1
- package/dist/base/deepClone.d.cts.map +0 -1
- package/dist/base/deepClone.d.ts.map +0 -1
- package/dist/base/deepClone.js.map +0 -1
- package/dist/base/isArray.d.cts.map +0 -1
- package/dist/base/isArray.d.ts.map +0 -1
- package/dist/base/isArray.js.map +0 -1
- package/dist/base/isEmpty.d.cts.map +0 -1
- package/dist/base/isEmpty.d.ts.map +0 -1
- package/dist/base/isEmpty.js.map +0 -1
- package/dist/base/isObject.d.cts.map +0 -1
- package/dist/base/isObject.d.ts.map +0 -1
- package/dist/base/isObject.js.map +0 -1
- package/dist/base/isString.d.cts.map +0 -1
- package/dist/base/isString.d.ts.map +0 -1
- package/dist/base/isString.js.map +0 -1
- package/dist/date/formatDate.d.cts.map +0 -1
- package/dist/date/formatDate.d.ts.map +0 -1
- package/dist/date/formatDate.js.map +0 -1
- package/dist/date/getRelativeTime.d.cts.map +0 -1
- package/dist/date/getRelativeTime.d.ts.map +0 -1
- package/dist/date/getRelativeTime.js.map +0 -1
- package/dist/function/debounce.d.cts.map +0 -1
- package/dist/function/debounce.d.ts.map +0 -1
- package/dist/function/debounce.js.map +0 -1
- package/dist/function/delay.d.cts.map +0 -1
- package/dist/function/delay.d.ts.map +0 -1
- package/dist/function/delay.js.map +0 -1
- package/dist/function/throttle.d.cts.map +0 -1
- package/dist/function/throttle.d.ts.map +0 -1
- package/dist/function/throttle.js.map +0 -1
- package/dist/number/clamp.d.cts.map +0 -1
- package/dist/number/clamp.d.ts.map +0 -1
- package/dist/number/clamp.js.map +0 -1
- package/dist/number/formatThousands.d.cts.map +0 -1
- package/dist/number/formatThousands.d.ts.map +0 -1
- package/dist/number/formatThousands.js.map +0 -1
- package/dist/number/randomInt.d.cts.map +0 -1
- package/dist/number/randomInt.d.ts.map +0 -1
- package/dist/number/randomInt.js.map +0 -1
- package/dist/object/omit.d.cts.map +0 -1
- package/dist/object/omit.d.ts.map +0 -1
- package/dist/object/omit.js.map +0 -1
- package/dist/object/pick.d.cts.map +0 -1
- package/dist/object/pick.d.ts.map +0 -1
- package/dist/object/pick.js.map +0 -1
- package/dist/string/camelCase.d.cts.map +0 -1
- package/dist/string/camelCase.d.ts.map +0 -1
- package/dist/string/camelCase.js.map +0 -1
- package/dist/string/capitalize.d.cts.map +0 -1
- package/dist/string/capitalize.d.ts.map +0 -1
- package/dist/string/capitalize.js.map +0 -1
- package/dist/string/kebabCase.d.cts.map +0 -1
- package/dist/string/kebabCase.d.ts.map +0 -1
- package/dist/string/kebabCase.js.map +0 -1
- package/dist/string/uuid.d.cts.map +0 -1
- package/dist/string/uuid.d.ts.map +0 -1
- package/dist/string/uuid.js.map +0 -1
- package/dist/url/parseQueryString.d.cts.map +0 -1
- package/dist/url/parseQueryString.d.ts.map +0 -1
- package/dist/url/parseQueryString.js.map +0 -1
- package/dist/url/stringifyQueryString.d.cts.map +0 -1
- package/dist/url/stringifyQueryString.d.ts.map +0 -1
- package/dist/url/stringifyQueryString.js.map +0 -1
- /package/dist/{string/camelCase.cjs → camelCase.cjs} +0 -0
- /package/dist/{string/capitalize.cjs → capitalize.cjs} +0 -0
- /package/dist/{array/chunk.cjs → chunk.cjs} +0 -0
- /package/dist/{number/clamp.cjs → clamp.cjs} +0 -0
- /package/dist/{function/debounce.cjs → debounce.cjs} +0 -0
- /package/dist/{function/delay.cjs → delay.cjs} +0 -0
- /package/dist/{array/flatten.cjs → flatten.cjs} +0 -0
- /package/dist/{date/formatDate.cjs → formatDate.cjs} +0 -0
- /package/dist/{number/formatThousands.cjs → formatThousands.cjs} +0 -0
- /package/dist/{date/getRelativeTime.cjs → getRelativeTime.cjs} +0 -0
- /package/dist/{array/groupBy.cjs → groupBy.cjs} +0 -0
- /package/dist/{base/isArray.cjs → isArray.cjs} +0 -0
- /package/dist/{base/isObject.cjs → isObject.cjs} +0 -0
- /package/dist/{base/isString.cjs → isString.cjs} +0 -0
- /package/dist/{string/kebabCase.cjs → kebabCase.cjs} +0 -0
- /package/dist/{object/omit.cjs → omit.cjs} +0 -0
- /package/dist/{url/parseQueryString.cjs → parseQueryString.cjs} +0 -0
- /package/dist/{object/pick.cjs → pick.cjs} +0 -0
- /package/dist/{number/randomInt.cjs → randomInt.cjs} +0 -0
- /package/dist/{array/range.cjs → range.cjs} +0 -0
- /package/dist/{array/shuffle.cjs → shuffle.cjs} +0 -0
- /package/dist/{url/stringifyQueryString.cjs → stringifyQueryString.cjs} +0 -0
- /package/dist/{function/throttle.cjs → throttle.cjs} +0 -0
- /package/dist/{array/unique.cjs → unique.cjs} +0 -0
- /package/dist/{string/uuid.cjs → uuid.cjs} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"range.d.cts","names":[],"sources":["../../src/array/range/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;iBAiBwB,KAAA,CAAM,KAAA,UAAe,GAAA,UAAa,IAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"range.d.ts","names":[],"sources":["../../src/array/range/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;iBAiBwB,KAAA,CAAM,KAAA,UAAe,GAAA,UAAa,IAAA"}
|
package/dist/array/range.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"range.js","names":[],"sources":["../../src/array/range/index.ts"],"sourcesContent":["/**\n * 生成数字序列数组\n *\n * @param start - 起始值(包含)\n * @param end - 结束值(不包含)\n * @param step - 步长,默认为 1\n * @returns 数字序列数组\n *\n * @example\n * ```ts\n * import range from '@tanwan/utils/range'\n * range(1, 5) // [1, 2, 3, 4]\n * range(0, 10, 2) // [0, 2, 4, 6, 8]\n * range(5, 0, -1) // [5, 4, 3, 2, 1]\n * range(0, 0) // []\n * ```\n */\nexport default function range(start: number, end: number, step = 1): number[] {\n if (step === 0) {\n throw new Error('step 不能为 0');\n }\n\n const result: number[] = [];\n\n if (step > 0) {\n for (let i = start; i < end; i += step) {\n result.push(i);\n }\n } else {\n for (let i = start; i > end; i += step) {\n result.push(i);\n }\n }\n\n return result;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAiBA,SAAwB,MAAM,OAAe,KAAa,OAAO,GAAa;AAC5E,KAAI,SAAS,EACX,OAAM,IAAI,MAAM,aAAa;CAG/B,MAAM,SAAmB,EAAE;AAE3B,KAAI,OAAO,EACT,MAAK,IAAI,IAAI,OAAO,IAAI,KAAK,KAAK,KAChC,QAAO,KAAK,EAAE;KAGhB,MAAK,IAAI,IAAI,OAAO,IAAI,KAAK,KAAK,KAChC,QAAO,KAAK,EAAE;AAIlB,QAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shuffle.d.cts","names":[],"sources":["../../src/array/shuffle/index.ts"],"mappings":";;;;;;;;;iBAQwB,OAAA,GAAA,CAAW,GAAA,EAAK,CAAA,KAAM,CAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shuffle.d.ts","names":[],"sources":["../../src/array/shuffle/index.ts"],"mappings":";;;;;;;;;iBAQwB,OAAA,GAAA,CAAW,GAAA,EAAK,CAAA,KAAM,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shuffle.js","names":[],"sources":["../../src/array/shuffle/index.ts"],"sourcesContent":["/**\n * 数组洗牌(Fisher-Yates 算法)\n * @example\n * ```ts\n * import shuffle from '@tanwan/utils/shuffle'\n * shuffle([1, 2, 3, 4, 5]) // [3, 1, 5, 2, 4](随机)\n * ```\n */\nexport default function shuffle<T>(arr: T[]): T[] {\n const result = [...arr];\n for (let i = result.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [result[i], result[j]] = [result[j], result[i]];\n }\n return result;\n}\n"],"mappings":";;;;;;;;;AAQA,SAAwB,QAAW,KAAe;CAChD,MAAM,SAAS,CAAC,GAAG,IAAI;AACvB,MAAK,IAAI,IAAI,OAAO,SAAS,GAAG,IAAI,GAAG,KAAK;EAC1C,MAAM,IAAI,KAAK,MAAM,KAAK,QAAQ,IAAI,IAAI,GAAG;AAC7C,GAAC,OAAO,IAAI,OAAO,MAAM,CAAC,OAAO,IAAI,OAAO,GAAG;;AAEjD,QAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"unique.d.cts","names":[],"sources":["../../src/array/unique/index.ts"],"mappings":";;;;;;;;;;iBASwB,MAAA,GAAA,CAAU,GAAA,EAAK,CAAA,KAAM,CAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"unique.d.ts","names":[],"sources":["../../src/array/unique/index.ts"],"mappings":";;;;;;;;;;iBASwB,MAAA,GAAA,CAAU,GAAA,EAAK,CAAA,KAAM,CAAA"}
|
package/dist/array/unique.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"unique.js","names":[],"sources":["../../src/array/unique/index.ts"],"sourcesContent":["/**\n * 数组去重\n * @example\n * ```ts\n * import unique from '@tanwan/utils/unique'\n * unique([1, 2, 2, 3]) // [1, 2, 3]\n * unique(['a', 'b', 'a']) // ['a', 'b']\n * ```\n */\nexport default function unique<T>(arr: T[]): T[] {\n return [...new Set(arr)];\n}\n"],"mappings":";;;;;;;;;;AASA,SAAwB,OAAU,KAAe;AAC/C,QAAO,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deepClone.d.cts","names":[],"sources":["../../src/base/deepClone/index.ts"],"mappings":";;;;;;;;;;;;iBAawB,SAAA,GAAA,CAAa,CAAA,EAAG,CAAA,EAAG,KAAA,GAAO,OAAA,oBAA4D,CAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deepClone.d.ts","names":[],"sources":["../../src/base/deepClone/index.ts"],"mappings":";;;;;;;;;;;;iBAawB,SAAA,GAAA,CAAa,CAAA,EAAG,CAAA,EAAG,KAAA,GAAO,OAAA,oBAA4D,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deepClone.js","names":[],"sources":["../../src/base/deepClone/index.ts"],"sourcesContent":["import isObject from '../isObject';\n\n/**\n * 深拷贝变量\n * @example\n * ```ts\n * import deepClone from '@tanwan/utils/deepClone'\n * const obj = { a: 1, b: { c: 2 } }\n * const clone = deepClone(obj)\n * clone.b.c = 3\n * obj.b.c // 2(原对象不受影响)\n * ```\n */\nexport default function deepClone<T>(v: T, cache: WeakMap<object, unknown> = new WeakMap<object, unknown>()): T {\n // 基本类型直接返回\n if (v === null || typeof v !== 'object') {\n return v;\n }\n\n // 检测循环引用\n if (cache.has(v as object)) {\n return cache.get(v as object) as T;\n }\n\n if (Array.isArray(v)) {\n const cloned: unknown[] = [];\n cache.set(v as object, cloned);\n for (let i = 0; i < v.length; i++) {\n cloned[i] = deepClone(v[i], cache);\n }\n return cloned as T;\n }\n\n if (v instanceof Date) {\n return new Date(v.getTime()) as T;\n }\n\n if (v instanceof RegExp) {\n return new RegExp(v.source, v.flags) as T;\n }\n\n if (v instanceof Map) {\n const cloned = new Map();\n cache.set(v as object, cloned);\n for (const [key, value] of v) {\n cloned.set(key, deepClone(value, cache));\n }\n return cloned as T;\n }\n\n if (v instanceof Set) {\n const cloned = new Set();\n cache.set(v as object, cloned);\n for (const value of v) {\n cloned.add(deepClone(value, cache));\n }\n return cloned as T;\n }\n\n if (v instanceof WeakMap) {\n throw new Error('Cannot clone WeakMap');\n }\n\n if (v instanceof WeakSet) {\n throw new Error('Cannot clone WeakSet');\n }\n\n if (isObject(v)) {\n const cloned: Record<string, unknown> = {};\n cache.set(v as object, cloned);\n for (const key in v) {\n if (Object.prototype.hasOwnProperty.call(v, key)) {\n cloned[key] = deepClone(v[key], cache);\n }\n }\n return cloned as T;\n }\n\n return v;\n}\n"],"mappings":";;;;;;;;;;;;;AAaA,SAAwB,UAAa,GAAM,wBAAkC,IAAI,SAA0B,EAAK;AAE9G,KAAI,MAAM,QAAQ,OAAO,MAAM,SAC7B,QAAO;AAIT,KAAI,MAAM,IAAI,EAAY,CACxB,QAAO,MAAM,IAAI,EAAY;AAG/B,KAAI,MAAM,QAAQ,EAAE,EAAE;EACpB,MAAM,SAAoB,EAAE;AAC5B,QAAM,IAAI,GAAa,OAAO;AAC9B,OAAK,IAAI,IAAI,GAAG,IAAI,EAAE,QAAQ,IAC5B,QAAO,KAAK,UAAU,EAAE,IAAI,MAAM;AAEpC,SAAO;;AAGT,KAAI,aAAa,KACf,QAAO,IAAI,KAAK,EAAE,SAAS,CAAC;AAG9B,KAAI,aAAa,OACf,QAAO,IAAI,OAAO,EAAE,QAAQ,EAAE,MAAM;AAGtC,KAAI,aAAa,KAAK;EACpB,MAAM,yBAAS,IAAI,KAAK;AACxB,QAAM,IAAI,GAAa,OAAO;AAC9B,OAAK,MAAM,CAAC,KAAK,UAAU,EACzB,QAAO,IAAI,KAAK,UAAU,OAAO,MAAM,CAAC;AAE1C,SAAO;;AAGT,KAAI,aAAa,KAAK;EACpB,MAAM,yBAAS,IAAI,KAAK;AACxB,QAAM,IAAI,GAAa,OAAO;AAC9B,OAAK,MAAM,SAAS,EAClB,QAAO,IAAI,UAAU,OAAO,MAAM,CAAC;AAErC,SAAO;;AAGT,KAAI,aAAa,QACf,OAAM,IAAI,MAAM,uBAAuB;AAGzC,KAAI,aAAa,QACf,OAAM,IAAI,MAAM,uBAAuB;AAGzC,KAAI,SAAS,EAAE,EAAE;EACf,MAAM,SAAkC,EAAE;AAC1C,QAAM,IAAI,GAAa,OAAO;AAC9B,OAAK,MAAM,OAAO,EAChB,KAAI,OAAO,UAAU,eAAe,KAAK,GAAG,IAAI,CAC9C,QAAO,OAAO,UAAU,EAAE,MAAM,MAAM;AAG1C,SAAO;;AAGT,QAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"isArray.d.cts","names":[],"sources":["../../src/base/isArray/index.ts"],"mappings":";;;;;;;;;;iBASwB,OAAA,GAAA,CAAW,CAAA,YAAa,CAAA,IAAK,CAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"isArray.d.ts","names":[],"sources":["../../src/base/isArray/index.ts"],"mappings":";;;;;;;;;;iBASwB,OAAA,GAAA,CAAW,CAAA,YAAa,CAAA,IAAK,CAAA"}
|
package/dist/base/isArray.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"isArray.js","names":[],"sources":["../../src/base/isArray/index.ts"],"sourcesContent":["/**\n * 检测变量是否为数组\n * @example\n * ```ts\n * import isArray from '@tanwan/utils/isArray'\n * isArray([1, 2, 3]) // true\n * isArray('hello') // false\n * ```\n */\nexport default function isArray<T>(v: unknown): v is T[] {\n return Array.isArray(v);\n}\n"],"mappings":";;;;;;;;;;AASA,SAAwB,QAAW,GAAsB;AACvD,QAAO,MAAM,QAAQ,EAAE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"isEmpty.d.cts","names":[],"sources":["../../src/base/isEmpty/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgCwB,OAAA,CAAQ,KAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"isEmpty.d.ts","names":[],"sources":["../../src/base/isEmpty/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgCwB,OAAA,CAAQ,KAAA"}
|
package/dist/base/isEmpty.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"isEmpty.js","names":[],"sources":["../../src/base/isEmpty/index.ts"],"sourcesContent":["import isObject from '../isObject';\n\n/**\n * 判断值是否为空\n *\n * 以下情况视为空:\n * - `null` / `undefined`\n * - 空字符串 `''`\n * - 空数组 `[]`\n * - 普通空对象 `{}`\n * - 空 `Map` / 空 `Set`\n *\n * 数字 `0`、布尔值 `false` 等视为非空\n *\n * @param value - 待检测的值\n * @returns 是否为空\n *\n * @example\n * ```ts\n * import isEmpty from '@tanwan/utils/isEmpty'\n * isEmpty(null) // true\n * isEmpty(undefined) // true\n * isEmpty('') // true\n * isEmpty([]) // true\n * isEmpty({}) // true\n * isEmpty(new Map()) // true\n * isEmpty(new Set()) // true\n * isEmpty(0) // false\n * isEmpty(false) // false\n * isEmpty('hello') // false\n * ```\n */\nexport default function isEmpty(value: unknown): boolean {\n if (value === null || value === undefined) {\n return true;\n }\n\n if (typeof value === 'string') {\n return value.length === 0;\n }\n\n if (Array.isArray(value)) {\n return value.length === 0;\n }\n\n if (value instanceof Map || value instanceof Set) {\n return value.size === 0;\n }\n\n if (isObject(value)) {\n return Object.keys(value).length === 0;\n }\n\n return false;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,SAAwB,QAAQ,OAAyB;AACvD,KAAI,UAAU,QAAQ,UAAU,KAAA,EAC9B,QAAO;AAGT,KAAI,OAAO,UAAU,SACnB,QAAO,MAAM,WAAW;AAG1B,KAAI,MAAM,QAAQ,MAAM,CACtB,QAAO,MAAM,WAAW;AAG1B,KAAI,iBAAiB,OAAO,iBAAiB,IAC3C,QAAO,MAAM,SAAS;AAGxB,KAAI,SAAS,MAAM,CACjB,QAAO,OAAO,KAAK,MAAM,CAAC,WAAW;AAGvC,QAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"isObject.d.cts","names":[],"sources":["../../src/base/isObject/index.ts"],"mappings":";;;;;;;;;;;iBAUwB,QAAA,CAAS,CAAA,YAAa,CAAA,IAAK,MAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"isObject.d.ts","names":[],"sources":["../../src/base/isObject/index.ts"],"mappings":";;;;;;;;;;;iBAUwB,QAAA,CAAS,CAAA,YAAa,CAAA,IAAK,MAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"isObject.js","names":[],"sources":["../../src/base/isObject/index.ts"],"sourcesContent":["/**\n * 检测变量是否为普通对象(非null、非数组)\n * @example\n * ```ts\n * import isObject from '@tanwan/utils/isObject'\n * isObject({ a: 1 }) // true\n * isObject(null) // false\n * isObject([1, 2]) // false\n * ```\n */\nexport default function isObject(v: unknown): v is Record<string, unknown> {\n return typeof v === 'object' && v !== null && !Array.isArray(v);\n}\n"],"mappings":";;;;;;;;;;;AAUA,SAAwB,SAAS,GAA0C;AACzE,QAAO,OAAO,MAAM,YAAY,MAAM,QAAQ,CAAC,MAAM,QAAQ,EAAE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"isString.d.cts","names":[],"sources":["../../src/base/isString/index.ts"],"mappings":";;;;;;;;;;iBASwB,QAAA,CAAS,CAAA,YAAa,CAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"isString.d.ts","names":[],"sources":["../../src/base/isString/index.ts"],"mappings":";;;;;;;;;;iBASwB,QAAA,CAAS,CAAA,YAAa,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"isString.js","names":[],"sources":["../../src/base/isString/index.ts"],"sourcesContent":["/**\n * 检测变量是否为字符串\n * @example\n * ```ts\n * import isString from '@tanwan/utils/isString'\n * isString('hello') // true\n * isString(123) // false\n * ```\n */\nexport default function isString(v: unknown): v is string {\n return typeof v === 'string';\n}\n"],"mappings":";;;;;;;;;;AASA,SAAwB,SAAS,GAAyB;AACxD,QAAO,OAAO,MAAM"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"formatDate.d.cts","names":[],"sources":["../../src/date/formatDate/index.ts"],"mappings":";;;;;;;;;;iBASwB,UAAA,CAAW,IAAA,oBAAwB,IAAA,EAAM,GAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"formatDate.d.ts","names":[],"sources":["../../src/date/formatDate/index.ts"],"mappings":";;;;;;;;;;iBASwB,UAAA,CAAW,IAAA,oBAAwB,IAAA,EAAM,GAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"formatDate.js","names":[],"sources":["../../src/date/formatDate/index.ts"],"sourcesContent":["/**\n * 格式化日期\n * @example\n * ```ts\n * import formatDate from '@tanwan/utils/formatDate'\n * formatDate(new Date('2024-01-01'), 'yyyy-MM-dd') // '2024-01-01'\n * formatDate(1609459200000, 'yyyy/MM/dd HH:mm') // '2021/01/01 08:00'\n * ```\n */\nexport default function formatDate(date: number | string | Date, fmt = 'yyyy-MM-dd HH:mm:ss'): string {\n if (date == null) return 'Invalid Date';\n\n const iOSReg = /-/g;\n let d: Date;\n\n if (typeof date === 'string') {\n // iOS 日期字符串中包含 -,需要替换为 /\n d = new Date(iOSReg.test(date) ? date.replace(iOSReg, '/') : date);\n } else {\n d = new Date(date);\n }\n\n if (isNaN(d.getTime())) return 'Invalid Date';\n\n const o: Record<string, number> = {\n 'M+': d.getMonth() + 1,\n 'd+': d.getDate(),\n 'H+': d.getHours(),\n 'h+': d.getHours() % 12 || 12,\n 'm+': d.getMinutes(),\n 's+': d.getSeconds(),\n };\n\n // 处理年份\n const yearMatch = fmt.match(/(y+)/);\n if (yearMatch) {\n fmt = fmt.replace(yearMatch[0], String(d.getFullYear()).slice(4 - yearMatch[1].length));\n }\n\n for (const k in o) {\n const match = fmt.match(new RegExp(`(${k})`));\n if (match) {\n const str = String(o[k]);\n fmt = fmt.replace(match[0], match[1].length === 1 ? str : str.padStart(2, '0'));\n }\n }\n\n return fmt;\n}\n"],"mappings":";;;;;;;;;;AASA,SAAwB,WAAW,MAA8B,MAAM,uBAA+B;AACpG,KAAI,QAAQ,KAAM,QAAO;CAEzB,MAAM,SAAS;CACf,IAAI;AAEJ,KAAI,OAAO,SAAS,SAElB,KAAI,IAAI,KAAK,OAAO,KAAK,KAAK,GAAG,KAAK,QAAQ,QAAQ,IAAI,GAAG,KAAK;KAElE,KAAI,IAAI,KAAK,KAAK;AAGpB,KAAI,MAAM,EAAE,SAAS,CAAC,CAAE,QAAO;CAE/B,MAAM,IAA4B;EAChC,MAAM,EAAE,UAAU,GAAG;EACrB,MAAM,EAAE,SAAS;EACjB,MAAM,EAAE,UAAU;EAClB,MAAM,EAAE,UAAU,GAAG,MAAM;EAC3B,MAAM,EAAE,YAAY;EACpB,MAAM,EAAE,YAAY;EACrB;CAGD,MAAM,YAAY,IAAI,MAAM,OAAO;AACnC,KAAI,UACF,OAAM,IAAI,QAAQ,UAAU,IAAI,OAAO,EAAE,aAAa,CAAC,CAAC,MAAM,IAAI,UAAU,GAAG,OAAO,CAAC;AAGzF,MAAK,MAAM,KAAK,GAAG;EACjB,MAAM,QAAQ,IAAI,MAAM,IAAI,OAAO,IAAI,EAAE,GAAG,CAAC;AAC7C,MAAI,OAAO;GACT,MAAM,MAAM,OAAO,EAAE,GAAG;AACxB,SAAM,IAAI,QAAQ,MAAM,IAAI,MAAM,GAAG,WAAW,IAAI,MAAM,IAAI,SAAS,GAAG,IAAI,CAAC;;;AAInF,QAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getRelativeTime.d.cts","names":[],"sources":["../../src/date/getRelativeTime/index.ts"],"mappings":";;;;;;;;;;iBASwB,eAAA,CAAgB,IAAA,oBAAwB,IAAA,EAAM,GAAA,GAAK,IAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getRelativeTime.d.ts","names":[],"sources":["../../src/date/getRelativeTime/index.ts"],"mappings":";;;;;;;;;;iBASwB,eAAA,CAAgB,IAAA,oBAAwB,IAAA,EAAM,GAAA,GAAK,IAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getRelativeTime.js","names":[],"sources":["../../src/date/getRelativeTime/index.ts"],"sourcesContent":["/**\n * 获取相对时间描述(如\"3分钟前\")\n * @example\n * ```ts\n * import getRelativeTime from '@tanwan/utils/getRelativeTime'\n * getRelativeTime(Date.now() - 60000) // '1分钟前'\n * getRelativeTime(Date.now() - 3600000) // '1小时前'\n * ```\n */\nexport default function getRelativeTime(date: number | string | Date, now: Date = new Date()): string {\n const d = new Date(date);\n const diff = now.getTime() - d.getTime();\n const seconds = Math.floor(diff / 1000);\n const minutes = Math.floor(seconds / 60);\n const hours = Math.floor(minutes / 60);\n const days = Math.floor(hours / 24);\n const months = Math.floor(days / 30);\n const years = Math.floor(days / 365);\n\n if (seconds < 0) return '刚刚';\n if (seconds < 60) return `${seconds}秒前`;\n if (minutes < 60) return `${minutes}分钟前`;\n if (hours < 24) return `${hours}小时前`;\n if (days < 30) return `${days}天前`;\n if (months < 12) return `${months}个月前`;\n return `${years}年前`;\n}\n"],"mappings":";;;;;;;;;;AASA,SAAwB,gBAAgB,MAA8B,sBAAY,IAAI,MAAM,EAAU;CACpG,MAAM,IAAI,IAAI,KAAK,KAAK;CACxB,MAAM,OAAO,IAAI,SAAS,GAAG,EAAE,SAAS;CACxC,MAAM,UAAU,KAAK,MAAM,OAAO,IAAK;CACvC,MAAM,UAAU,KAAK,MAAM,UAAU,GAAG;CACxC,MAAM,QAAQ,KAAK,MAAM,UAAU,GAAG;CACtC,MAAM,OAAO,KAAK,MAAM,QAAQ,GAAG;CACnC,MAAM,SAAS,KAAK,MAAM,OAAO,GAAG;CACpC,MAAM,QAAQ,KAAK,MAAM,OAAO,IAAI;AAEpC,KAAI,UAAU,EAAG,QAAO;AACxB,KAAI,UAAU,GAAI,QAAO,GAAG,QAAQ;AACpC,KAAI,UAAU,GAAI,QAAO,GAAG,QAAQ;AACpC,KAAI,QAAQ,GAAI,QAAO,GAAG,MAAM;AAChC,KAAI,OAAO,GAAI,QAAO,GAAG,KAAK;AAC9B,KAAI,SAAS,GAAI,QAAO,GAAG,OAAO;AAClC,QAAO,GAAG,MAAM"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"debounce.d.cts","names":[],"sources":["../../src/function/debounce/index.ts"],"mappings":";;;;;;;;;;;iBAUwB,QAAA,eAAuB,IAAA,gBAAA,CAC7C,IAAA,EAAM,CAAA,EACN,IAAA,UACA,SAAA,iBACK,IAAA,EAAM,UAAA,CAAW,CAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"debounce.d.ts","names":[],"sources":["../../src/function/debounce/index.ts"],"mappings":";;;;;;;;;;;iBAUwB,QAAA,eAAuB,IAAA,gBAAA,CAC7C,IAAA,EAAM,CAAA,EACN,IAAA,UACA,SAAA,iBACK,IAAA,EAAM,UAAA,CAAW,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"debounce.js","names":[],"sources":["../../src/function/debounce/index.ts"],"sourcesContent":["/**\n * 防抖函数\n * @example\n * ```ts\n * import debounce from '@tanwan/utils/debounce'\n * const search = debounce((keyword: string) => {\n * console.log('搜索:', keyword)\n * }, 300)\n * ```\n */\nexport default function debounce<T extends (...args: any[]) => any>(\n func: T,\n wait: number,\n immediate = false,\n): (...args: Parameters<T>) => void {\n let timer: ReturnType<typeof setTimeout> | null = null;\n let canImmediate = immediate;\n\n return function (this: unknown, ...args: Parameters<T>) {\n if (canImmediate) {\n func.apply(this, args);\n canImmediate = false;\n }\n\n if (timer) {\n clearTimeout(timer);\n }\n\n timer = setTimeout(() => {\n if (!immediate) {\n func.apply(this, args);\n }\n timer = null;\n canImmediate = immediate;\n }, wait);\n };\n}\n"],"mappings":";;;;;;;;;;;AAUA,SAAwB,SACtB,MACA,MACA,YAAY,OACsB;CAClC,IAAI,QAA8C;CAClD,IAAI,eAAe;AAEnB,QAAO,SAAyB,GAAG,MAAqB;AACtD,MAAI,cAAc;AAChB,QAAK,MAAM,MAAM,KAAK;AACtB,kBAAe;;AAGjB,MAAI,MACF,cAAa,MAAM;AAGrB,UAAQ,iBAAiB;AACvB,OAAI,CAAC,UACH,MAAK,MAAM,MAAM,KAAK;AAExB,WAAQ;AACR,kBAAe;KACd,KAAK"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"delay.d.cts","names":[],"sources":["../../src/function/delay/index.ts"],"mappings":";;;;;;;AAc4C;;;;;;;;iBAApB,KAAA,CAAM,EAAA,YAAc,OAAA;AAAA,iBACpB,KAAA,GAAA,CAAS,EAAA,UAAY,KAAA,EAAO,CAAA,GAAI,OAAA,CAAQ,CAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"delay.d.ts","names":[],"sources":["../../src/function/delay/index.ts"],"mappings":";;;;;;;AAc4C;;;;;;;;iBAApB,KAAA,CAAM,EAAA,YAAc,OAAA;AAAA,iBACpB,KAAA,GAAA,CAAS,EAAA,UAAY,KAAA,EAAO,CAAA,GAAI,OAAA,CAAQ,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"delay.js","names":[],"sources":["../../src/function/delay/index.ts"],"sourcesContent":["/**\n * 返回一个在指定毫秒后 resolve 的 Promise\n *\n * @param ms - 延迟毫秒数,默认为 0\n * @param value - 可选,resolve 时传递的值\n * @returns 在延迟后 resolve 的 Promise\n *\n * @example\n * ```ts\n * import delay from '@tanwan/utils/delay'\n * await delay(1000) // 等待 1 秒后 resolve\n * const result = await delay(500, 'done') // 500ms 后 resolve 'done'\n * ```\n */\nexport default function delay(ms?: number): Promise<void>;\nexport default function delay<T>(ms: number, value: T): Promise<T>;\nexport default function delay<T>(ms = 0, value?: T): Promise<T | void> {\n return new Promise((resolve) => {\n setTimeout(() => resolve(value), ms);\n });\n}\n"],"mappings":";AAgBA,SAAwB,MAAS,KAAK,GAAG,OAA8B;AACrE,QAAO,IAAI,SAAS,YAAY;AAC9B,mBAAiB,QAAQ,MAAM,EAAE,GAAG;GACpC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"throttle.d.cts","names":[],"sources":["../../src/function/throttle/index.ts"],"mappings":";;;;;;;;;;;iBAUwB,QAAA,eAAuB,IAAA,gBAAA,CAC7C,IAAA,EAAM,CAAA,EACN,IAAA,eACK,IAAA,EAAM,UAAA,CAAW,CAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"throttle.d.ts","names":[],"sources":["../../src/function/throttle/index.ts"],"mappings":";;;;;;;;;;;iBAUwB,QAAA,eAAuB,IAAA,gBAAA,CAC7C,IAAA,EAAM,CAAA,EACN,IAAA,eACK,IAAA,EAAM,UAAA,CAAW,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"throttle.js","names":[],"sources":["../../src/function/throttle/index.ts"],"sourcesContent":["/**\n * 节流函数\n * @example\n * ```ts\n * import throttle from '@tanwan/utils/throttle'\n * const onScroll = throttle(() => {\n * console.log('滚动事件触发')\n * }, 200)\n * ```\n */\nexport default function throttle<T extends (...args: any[]) => any>(\n func: T,\n wait: number,\n): (...args: Parameters<T>) => void {\n let timer: ReturnType<typeof setTimeout> | null = null;\n let lastArgs: Parameters<T> | null = null;\n\n return function (this: unknown, ...args: Parameters<T>) {\n lastArgs = args;\n\n if (timer) return;\n\n timer = setTimeout(() => {\n if (lastArgs) {\n func.apply(this, lastArgs);\n lastArgs = null;\n }\n timer = null;\n }, wait);\n };\n}\n"],"mappings":";;;;;;;;;;;AAUA,SAAwB,SACtB,MACA,MACkC;CAClC,IAAI,QAA8C;CAClD,IAAI,WAAiC;AAErC,QAAO,SAAyB,GAAG,MAAqB;AACtD,aAAW;AAEX,MAAI,MAAO;AAEX,UAAQ,iBAAiB;AACvB,OAAI,UAAU;AACZ,SAAK,MAAM,MAAM,SAAS;AAC1B,eAAW;;AAEb,WAAQ;KACP,KAAK"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clamp.d.cts","names":[],"sources":["../../src/number/clamp/index.ts"],"mappings":";;;;;;;;;;;iBAUwB,KAAA,CAAM,KAAA,UAAe,GAAA,UAAa,GAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clamp.d.ts","names":[],"sources":["../../src/number/clamp/index.ts"],"mappings":";;;;;;;;;;;iBAUwB,KAAA,CAAM,KAAA,UAAe,GAAA,UAAa,GAAA"}
|
package/dist/number/clamp.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clamp.js","names":[],"sources":["../../src/number/clamp/index.ts"],"sourcesContent":["/**\n * 将数值限制在指定范围内\n * @example\n * ```ts\n * import clamp from '@tanwan/utils/clamp'\n * clamp(10, 0, 5) // 5\n * clamp(-1, 0, 5) // 0\n * clamp(3, 0, 5) // 3\n * ```\n */\nexport default function clamp(value: number, min: number, max: number): number {\n return Math.min(Math.max(value, min), max);\n}\n"],"mappings":";;;;;;;;;;;AAUA,SAAwB,MAAM,OAAe,KAAa,KAAqB;AAC7E,QAAO,KAAK,IAAI,KAAK,IAAI,OAAO,IAAI,EAAE,IAAI"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"formatThousands.d.cts","names":[],"sources":["../../src/number/formatThousands/index.ts"],"mappings":";;;;;;;;;;iBASwB,eAAA,CAAgB,GAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"formatThousands.d.ts","names":[],"sources":["../../src/number/formatThousands/index.ts"],"mappings":";;;;;;;;;;iBASwB,eAAA,CAAgB,GAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"formatThousands.js","names":[],"sources":["../../src/number/formatThousands/index.ts"],"sourcesContent":["/**\n * 千分位格式化数字\n * @example\n * ```ts\n * import formatThousands from '@tanwan/utils/formatThousands'\n * formatThousands(1234567) // '1,234,567'\n * formatThousands(1234567.89) // '1,234,567.89'\n * ```\n */\nexport default function formatThousands(num: number | string): string {\n const parts = String(num).split('.');\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n return parts.join('.');\n}\n"],"mappings":";;;;;;;;;;AASA,SAAwB,gBAAgB,KAA8B;CACpE,MAAM,QAAQ,OAAO,IAAI,CAAC,MAAM,IAAI;AACpC,OAAM,KAAK,MAAM,GAAG,QAAQ,yBAAyB,IAAI;AACzD,QAAO,MAAM,KAAK,IAAI"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"randomInt.d.cts","names":[],"sources":["../../src/number/randomInt/index.ts"],"mappings":";;;;;;;;;;iBASwB,SAAA,CAAU,GAAA,UAAa,GAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"randomInt.d.ts","names":[],"sources":["../../src/number/randomInt/index.ts"],"mappings":";;;;;;;;;;iBASwB,SAAA,CAAU,GAAA,UAAa,GAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"randomInt.js","names":[],"sources":["../../src/number/randomInt/index.ts"],"sourcesContent":["/**\n * 生成指定范围内的随机整数\n * @example\n * ```ts\n * import randomInt from '@tanwan/utils/randomInt'\n * randomInt(1, 10) // 3(介于 1-10 之间)\n * randomInt(0, 1) // 0 或 1\n * ```\n */\nexport default function randomInt(min: number, max: number): number {\n return Math.floor(Math.random() * (max - min + 1)) + min;\n}\n"],"mappings":";;;;;;;;;;AASA,SAAwB,UAAU,KAAa,KAAqB;AAClE,QAAO,KAAK,MAAM,KAAK,QAAQ,IAAI,MAAM,MAAM,GAAG,GAAG"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"omit.d.cts","names":[],"sources":["../../src/object/omit/index.ts"],"mappings":";;;;;;;;;;;;;;;iBAcwB,IAAA,WAAe,MAAA,mCAAyC,CAAA,CAAA,CAAG,GAAA,EAAK,CAAA,EAAG,IAAA,EAAM,CAAA,KAAM,IAAA,CAAK,CAAA,EAAG,CAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"omit.d.ts","names":[],"sources":["../../src/object/omit/index.ts"],"mappings":";;;;;;;;;;;;;;;iBAcwB,IAAA,WAAe,MAAA,mCAAyC,CAAA,CAAA,CAAG,GAAA,EAAK,CAAA,EAAG,IAAA,EAAM,CAAA,KAAM,IAAA,CAAK,CAAA,EAAG,CAAA"}
|
package/dist/object/omit.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"omit.js","names":[],"sources":["../../src/object/omit/index.ts"],"sourcesContent":["/**\n * 从对象中排除指定 key,返回新对象\n *\n * @param obj - 源对象\n * @param keys - 要排除的 key 数组\n * @returns 排除指定 key 后的新对象\n *\n * @example\n * ```ts\n * import omit from '@tanwan/utils/omit'\n * omit({ a: 1, b: 2, c: 3 }, ['a', 'c']) // { b: 2 }\n * omit({ x: 'foo' }, []) // { x: 'foo' }\n * ```\n */\nexport default function omit<T extends Record<string, unknown>, K extends keyof T>(obj: T, keys: K[]): Omit<T, K> {\n const keySet = new Set<K>(keys);\n const result = {} as Record<string, unknown>;\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && !keySet.has(key as unknown as K)) {\n result[key] = obj[key];\n }\n }\n return result as Omit<T, K>;\n}\n"],"mappings":";;;;;;;;;;;;;;;AAcA,SAAwB,KAA2D,KAAQ,MAAuB;CAChH,MAAM,SAAS,IAAI,IAAO,KAAK;CAC/B,MAAM,SAAS,EAAE;AACjB,MAAK,MAAM,OAAO,IAChB,KAAI,OAAO,UAAU,eAAe,KAAK,KAAK,IAAI,IAAI,CAAC,OAAO,IAAI,IAAoB,CACpF,QAAO,OAAO,IAAI;AAGtB,QAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pick.d.cts","names":[],"sources":["../../src/object/pick/index.ts"],"mappings":";;;;;;;;;;;;;;;iBAcwB,IAAA,WAAe,MAAA,mCAAyC,CAAA,CAAA,CAAG,GAAA,EAAK,CAAA,EAAG,IAAA,EAAM,CAAA,KAAM,IAAA,CAAK,CAAA,EAAG,CAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pick.d.ts","names":[],"sources":["../../src/object/pick/index.ts"],"mappings":";;;;;;;;;;;;;;;iBAcwB,IAAA,WAAe,MAAA,mCAAyC,CAAA,CAAA,CAAG,GAAA,EAAK,CAAA,EAAG,IAAA,EAAM,CAAA,KAAM,IAAA,CAAK,CAAA,EAAG,CAAA"}
|
package/dist/object/pick.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pick.js","names":[],"sources":["../../src/object/pick/index.ts"],"sourcesContent":["/**\n * 从对象中选取指定 key,返回新对象\n *\n * @param obj - 源对象\n * @param keys - 要选取的 key 数组\n * @returns 包含指定 key 的新对象\n *\n * @example\n * ```ts\n * import pick from '@tanwan/utils/pick'\n * pick({ a: 1, b: 2, c: 3 }, ['a', 'c']) // { a: 1, c: 3 }\n * pick({ x: 'foo' }, ['y']) // {}\n * ```\n */\nexport default function pick<T extends Record<string, unknown>, K extends keyof T>(obj: T, keys: K[]): Pick<T, K> {\n const result = {} as Pick<T, K>;\n for (const key of keys) {\n if (key in obj) {\n result[key] = obj[key];\n }\n }\n return result;\n}\n"],"mappings":";;;;;;;;;;;;;;;AAcA,SAAwB,KAA2D,KAAQ,MAAuB;CAChH,MAAM,SAAS,EAAE;AACjB,MAAK,MAAM,OAAO,KAChB,KAAI,OAAO,IACT,QAAO,OAAO,IAAI;AAGtB,QAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"camelCase.d.cts","names":[],"sources":["../../src/string/camelCase/index.ts"],"mappings":";;;;iBAGwB,SAAA,CAAU,GAAA,UAAa,OAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"camelCase.d.ts","names":[],"sources":["../../src/string/camelCase/index.ts"],"mappings":";;;;iBAGwB,SAAA,CAAU,GAAA,UAAa,OAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"camelCase.js","names":[],"sources":["../../src/string/camelCase/index.ts"],"sourcesContent":["/**\n * 将字符串转换为驼峰命名\n */\nexport default function camelCase(str: string, capital = false): string {\n const reg = /[-_.\\s]+(\\w|$)/g;\n let result = str.replace(reg, (_, c) => c.toUpperCase());\n\n if (capital && result.length > 0) {\n result = result[0].toUpperCase() + result.slice(1);\n }\n return result;\n}\n"],"mappings":";;;;AAGA,SAAwB,UAAU,KAAa,UAAU,OAAe;CAEtE,IAAI,SAAS,IAAI,QAAQ,oBAAM,GAAG,MAAM,EAAE,aAAa,CAAC;AAExD,KAAI,WAAW,OAAO,SAAS,EAC7B,UAAS,OAAO,GAAG,aAAa,GAAG,OAAO,MAAM,EAAE;AAEpD,QAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"capitalize.d.cts","names":[],"sources":["../../src/string/capitalize/index.ts"],"mappings":";;;;;;;;;;iBASwB,UAAA,CAAW,GAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"capitalize.d.ts","names":[],"sources":["../../src/string/capitalize/index.ts"],"mappings":";;;;;;;;;;iBASwB,UAAA,CAAW,GAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"capitalize.js","names":[],"sources":["../../src/string/capitalize/index.ts"],"sourcesContent":["/**\n * 首字母大写\n * @example\n * ```ts\n * import capitalize from '@tanwan/utils/capitalize'\n * capitalize('hello') // 'Hello'\n * capitalize('hello world') // 'Hello world'\n * ```\n */\nexport default function capitalize(str: string): string {\n if (!str) return str;\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n"],"mappings":";;;;;;;;;;AASA,SAAwB,WAAW,KAAqB;AACtD,KAAI,CAAC,IAAK,QAAO;AACjB,QAAO,IAAI,OAAO,EAAE,CAAC,aAAa,GAAG,IAAI,MAAM,EAAE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"kebabCase.d.cts","names":[],"sources":["../../src/string/kebabCase/index.ts"],"mappings":";;;;iBAGwB,SAAA,CAAU,GAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"kebabCase.d.ts","names":[],"sources":["../../src/string/kebabCase/index.ts"],"mappings":";;;;iBAGwB,SAAA,CAAU,GAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"kebabCase.js","names":[],"sources":["../../src/string/kebabCase/index.ts"],"sourcesContent":["/**\n * 将字符串转换为短横线命名(kebab-case)\n */\nexport default function kebabCase(str: string): string {\n return str\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/([A-Z])([A-Z][a-z])/g, '$1-$2')\n .replace(/[-_.\\s]+/g, '-')\n .toLowerCase();\n}\n"],"mappings":";;;;AAGA,SAAwB,UAAU,KAAqB;AACrD,QAAO,IACJ,QAAQ,mBAAmB,QAAQ,CACnC,QAAQ,wBAAwB,QAAQ,CACxC,QAAQ,aAAa,IAAI,CACzB,aAAa"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"uuid.d.cts","names":[],"sources":["../../src/string/uuid/index.ts"],"mappings":";;;;;;;;;;;;;;iBAawB,IAAA,CAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"uuid.d.ts","names":[],"sources":["../../src/string/uuid/index.ts"],"mappings":";;;;;;;;;;;;;;iBAawB,IAAA,CAAA"}
|
package/dist/string/uuid.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"uuid.js","names":[],"sources":["../../src/string/uuid/index.ts"],"sourcesContent":["/**\n * 生成 UUID v4\n *\n * 优先使用 `crypto.randomUUID()`,不支持时自动降级为手动生成方案\n *\n * @returns UUID v4 格式字符串,例如 `'550e8400-e29b-41d4-a716-446655440000'`\n *\n * @example\n * ```ts\n * import uuid from '@tanwan/utils/uuid'\n * uuid() // 'a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d'\n * ```\n */\nexport default function uuid(): string {\n if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') {\n return crypto.randomUUID();\n }\n\n // fallback:手动生成 UUID v4\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n"],"mappings":";;;;;;;;;;;;;;AAaA,SAAwB,OAAe;AACrC,KAAI,OAAO,WAAW,eAAe,OAAO,OAAO,eAAe,WAChE,QAAO,OAAO,YAAY;AAI5B,QAAO,uCAAuC,QAAQ,UAAU,MAAM;EACpE,MAAM,IAAK,KAAK,QAAQ,GAAG,KAAM;AAEjC,UADU,MAAM,MAAM,IAAK,IAAI,IAAO,GAC7B,SAAS,GAAG;GACrB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseQueryString.d.cts","names":[],"sources":["../../src/url/parseQueryString/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;iBAkBwB,gBAAA,CACtB,KAAA,YACC,MAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseQueryString.d.ts","names":[],"sources":["../../src/url/parseQueryString/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;iBAkBwB,gBAAA,CACtB,KAAA,YACC,MAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseQueryString.js","names":[],"sources":["../../src/url/parseQueryString/index.ts"],"sourcesContent":["/**\n * 解析 URL 查询字符串为对象\n *\n * 支持重复 key 解析为数组,数字字符串自动转为 number,布尔字符串自动转为 boolean\n *\n * @param query - 查询字符串(可带或不带前导 `?`),默认为当前页面 `location.search`\n * @returns 解析后的键值对对象\n *\n * @example\n * ```ts\n * import parseQueryString from '@tanwan/utils/parseQueryString'\n * parseQueryString('?name=John&age=25') // { name: 'John', age: 25 }\n * parseQueryString('name=John&age=25') // { name: 'John', age: 25 }\n * parseQueryString('?ids=1&ids=2') // { ids: [1, 2] }\n * parseQueryString('?active=true&count=0') // { active: true, count: 0 }\n * parseQueryString('') // {}\n * ```\n */\nexport default function parseQueryString(\n query?: string,\n): Record<string, string | number | boolean | (string | number | boolean)[]> {\n const qs = query ?? (typeof location !== 'undefined' ? location.search : '');\n\n if (!qs) {\n return {};\n }\n\n const str = qs.startsWith('?') ? qs.slice(1) : qs;\n if (!str) {\n return {};\n }\n\n const result: Record<string, string | number | boolean | (string | number | boolean)[]> = {};\n\n for (const part of str.split('&')) {\n if (!part) continue;\n\n const [rawKey, rawValue = ''] = part.split('=');\n const key = decodeURIComponent(rawKey);\n const value = decodeURIComponent(rawValue);\n\n const parsed = parseValue(value);\n\n if (key in result) {\n const existing = result[key];\n if (Array.isArray(existing)) {\n existing.push(parsed);\n } else {\n result[key] = [existing, parsed];\n }\n } else {\n result[key] = parsed;\n }\n }\n\n return result;\n}\n\nfunction parseValue(value: string): string | number | boolean {\n if (value === 'true') return true;\n if (value === 'false') return false;\n if (value === '') return '';\n const num = Number(value);\n if (!Number.isNaN(num) && String(num) === value) return num;\n return value;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAkBA,SAAwB,iBACtB,OAC2E;CAC3E,MAAM,KAAK,UAAU,OAAO,aAAa,cAAc,SAAS,SAAS;AAEzE,KAAI,CAAC,GACH,QAAO,EAAE;CAGX,MAAM,MAAM,GAAG,WAAW,IAAI,GAAG,GAAG,MAAM,EAAE,GAAG;AAC/C,KAAI,CAAC,IACH,QAAO,EAAE;CAGX,MAAM,SAAoF,EAAE;AAE5F,MAAK,MAAM,QAAQ,IAAI,MAAM,IAAI,EAAE;AACjC,MAAI,CAAC,KAAM;EAEX,MAAM,CAAC,QAAQ,WAAW,MAAM,KAAK,MAAM,IAAI;EAC/C,MAAM,MAAM,mBAAmB,OAAO;EAGtC,MAAM,SAAS,WAFD,mBAAmB,SAEF,CAAC;AAEhC,MAAI,OAAO,QAAQ;GACjB,MAAM,WAAW,OAAO;AACxB,OAAI,MAAM,QAAQ,SAAS,CACzB,UAAS,KAAK,OAAO;OAErB,QAAO,OAAO,CAAC,UAAU,OAAO;QAGlC,QAAO,OAAO;;AAIlB,QAAO;;AAGT,SAAS,WAAW,OAA0C;AAC5D,KAAI,UAAU,OAAQ,QAAO;AAC7B,KAAI,UAAU,QAAS,QAAO;AAC9B,KAAI,UAAU,GAAI,QAAO;CACzB,MAAM,MAAM,OAAO,MAAM;AACzB,KAAI,CAAC,OAAO,MAAM,IAAI,IAAI,OAAO,IAAI,KAAK,MAAO,QAAO;AACxD,QAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stringifyQueryString.d.cts","names":[],"sources":["../../src/url/stringifyQueryString/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;iBAkBwB,oBAAA,CAAqB,MAAA,EAAQ,MAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stringifyQueryString.d.ts","names":[],"sources":["../../src/url/stringifyQueryString/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;iBAkBwB,oBAAA,CAAqB,MAAA,EAAQ,MAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stringifyQueryString.js","names":[],"sources":["../../src/url/stringifyQueryString/index.ts"],"sourcesContent":["/**\n * 将对象序列化为 URL 查询字符串\n *\n * 支持嵌套对象用 `encodeURIComponent` 编码,数组值生成重复 key\n *\n * @param params - 要序列化的键值对对象\n * @returns 查询字符串(不含前导 `?`),无参数时返回空字符串\n *\n * @example\n * ```ts\n * import stringifyQueryString from '@tanwan/utils/stringifyQueryString'\n * stringifyQueryString({ name: 'John', age: 25 }) // 'name=John&age=25'\n * stringifyQueryString({ ids: [1, 2, 3] }) // 'ids=1&ids=2&ids=3'\n * stringifyQueryString({ q: 'hello world' }) // 'q=hello%20world'\n * stringifyQueryString({ a: null, b: undefined }) // 'a='\n * stringifyQueryString({}) // ''\n * ```\n */\nexport default function stringifyQueryString(params: Record<string, unknown>): string {\n const parts: string[] = [];\n\n for (const key of Object.keys(params)) {\n const value = params[key];\n\n if (value === undefined) {\n continue;\n }\n\n if (value === null) {\n parts.push(`${encodeURIComponent(key)}=`);\n continue;\n }\n\n if (Array.isArray(value)) {\n for (const item of value) {\n parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(item))}`);\n }\n continue;\n }\n\n parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);\n }\n\n return parts.join('&');\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAkBA,SAAwB,qBAAqB,QAAyC;CACpF,MAAM,QAAkB,EAAE;AAE1B,MAAK,MAAM,OAAO,OAAO,KAAK,OAAO,EAAE;EACrC,MAAM,QAAQ,OAAO;AAErB,MAAI,UAAU,KAAA,EACZ;AAGF,MAAI,UAAU,MAAM;AAClB,SAAM,KAAK,GAAG,mBAAmB,IAAI,CAAC,GAAG;AACzC;;AAGF,MAAI,MAAM,QAAQ,MAAM,EAAE;AACxB,QAAK,MAAM,QAAQ,MACjB,OAAM,KAAK,GAAG,mBAAmB,IAAI,CAAC,GAAG,mBAAmB,OAAO,KAAK,CAAC,GAAG;AAE9E;;AAGF,QAAM,KAAK,GAAG,mBAAmB,IAAI,CAAC,GAAG,mBAAmB,OAAO,MAAM,CAAC,GAAG;;AAG/E,QAAO,MAAM,KAAK,IAAI"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|