@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
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//#region src/business/formatBankCard/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 银行卡号格式化,每 4 位用空格分隔
|
|
4
|
+
*
|
|
5
|
+
* @param cardNo - 银行卡号
|
|
6
|
+
* @returns 格式化后的卡号
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import formatBankCard from '@tanwan/utils/formatBankCard'
|
|
11
|
+
* formatBankCard('6222021234567890')
|
|
12
|
+
* // '6222 0212 3456 7890'
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
function formatBankCard(cardNo) {
|
|
16
|
+
return cardNo.replace(/(\d{4})(?=\d)/g, "$1 ");
|
|
17
|
+
}
|
|
18
|
+
//#endregion
|
|
19
|
+
export { formatBankCard as default };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
//#region src/business/formatCurrency/index.ts
|
|
2
|
+
function formatCurrency(amount, options = {}) {
|
|
3
|
+
const { unit = "cent", symbol = "¥", decimals = 2 } = options;
|
|
4
|
+
return `${symbol}${(unit === "cent" ? amount / 100 : amount).toFixed(decimals).replace(/\B(?=(\d{3})+(?!\d))/g, ",")}`;
|
|
5
|
+
}
|
|
6
|
+
//#endregion
|
|
7
|
+
module.exports = formatCurrency;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
//#region src/business/formatCurrency/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 金额格式化
|
|
4
|
+
*
|
|
5
|
+
* @param amount - 金额(分,整数),或元(当 unit 为 'yuan' 时)
|
|
6
|
+
* @param options - 配置项
|
|
7
|
+
* @param options.unit - 单位,`'cent'`(分,默认)| `'yuan'`(元)
|
|
8
|
+
* @param options.symbol - 货币符号,默认 `'¥'`
|
|
9
|
+
* @param options.decimals - 小数位数,默认 2
|
|
10
|
+
* @returns 格式化后的金额字符串
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* import formatCurrency from '@tanwan/utils/formatCurrency'
|
|
15
|
+
* formatCurrency(1234567) // '¥12,345.67'(分 → 元)
|
|
16
|
+
* formatCurrency(12345, { unit: 'yuan' }) // '¥12,345.00'
|
|
17
|
+
* formatCurrency(1234567, { symbol: '$' }) // '$12,345.67'
|
|
18
|
+
* formatCurrency(1234567, { decimals: 0 }) // '¥12,346'
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
interface FormatCurrencyOptions {
|
|
22
|
+
unit?: "cent" | "yuan";
|
|
23
|
+
symbol?: string;
|
|
24
|
+
decimals?: number;
|
|
25
|
+
}
|
|
26
|
+
declare function formatCurrency(amount: number, options?: FormatCurrencyOptions): string;
|
|
27
|
+
export = formatCurrency;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
//#region src/business/formatCurrency/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 金额格式化
|
|
4
|
+
*
|
|
5
|
+
* @param amount - 金额(分,整数),或元(当 unit 为 'yuan' 时)
|
|
6
|
+
* @param options - 配置项
|
|
7
|
+
* @param options.unit - 单位,`'cent'`(分,默认)| `'yuan'`(元)
|
|
8
|
+
* @param options.symbol - 货币符号,默认 `'¥'`
|
|
9
|
+
* @param options.decimals - 小数位数,默认 2
|
|
10
|
+
* @returns 格式化后的金额字符串
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* import formatCurrency from '@tanwan/utils/formatCurrency'
|
|
15
|
+
* formatCurrency(1234567) // '¥12,345.67'(分 → 元)
|
|
16
|
+
* formatCurrency(12345, { unit: 'yuan' }) // '¥12,345.00'
|
|
17
|
+
* formatCurrency(1234567, { symbol: '$' }) // '$12,345.67'
|
|
18
|
+
* formatCurrency(1234567, { decimals: 0 }) // '¥12,346'
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
interface FormatCurrencyOptions {
|
|
22
|
+
unit?: "cent" | "yuan";
|
|
23
|
+
symbol?: string;
|
|
24
|
+
decimals?: number;
|
|
25
|
+
}
|
|
26
|
+
declare function formatCurrency(amount: number, options?: FormatCurrencyOptions): string;
|
|
27
|
+
//#endregion
|
|
28
|
+
export { formatCurrency as default };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
//#region src/business/formatCurrency/index.ts
|
|
2
|
+
function formatCurrency(amount, options = {}) {
|
|
3
|
+
const { unit = "cent", symbol = "¥", decimals = 2 } = options;
|
|
4
|
+
return `${symbol}${(unit === "cent" ? amount / 100 : amount).toFixed(decimals).replace(/\B(?=(\d{3})+(?!\d))/g, ",")}`;
|
|
5
|
+
}
|
|
6
|
+
//#endregion
|
|
7
|
+
export { formatCurrency as default };
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
//#region src/business/formatFileSize/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 文件大小格式化
|
|
4
|
+
*
|
|
5
|
+
* @param bytes - 字节数
|
|
6
|
+
* @param decimals - 小数位数,默认 2
|
|
7
|
+
* @returns 格式化后的文件大小字符串
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import formatFileSize from '@tanwan/utils/formatFileSize'
|
|
12
|
+
* formatFileSize(0) // '0 B'
|
|
13
|
+
* formatFileSize(1024) // '1 KB'
|
|
14
|
+
* formatFileSize(1536000) // '1.46 MB'
|
|
15
|
+
* formatFileSize(1073741824) // '1 GB'
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
function formatFileSize(bytes, decimals = 2) {
|
|
19
|
+
if (bytes === 0) return "0 B";
|
|
20
|
+
const units = [
|
|
21
|
+
"B",
|
|
22
|
+
"KB",
|
|
23
|
+
"MB",
|
|
24
|
+
"GB",
|
|
25
|
+
"TB",
|
|
26
|
+
"PB"
|
|
27
|
+
];
|
|
28
|
+
const k = 1024;
|
|
29
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
30
|
+
return `${Number.parseFloat((bytes / k ** i).toFixed(decimals))} ${units[i]}`;
|
|
31
|
+
}
|
|
32
|
+
//#endregion
|
|
33
|
+
module.exports = formatFileSize;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//#region src/business/formatFileSize/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 文件大小格式化
|
|
4
|
+
*
|
|
5
|
+
* @param bytes - 字节数
|
|
6
|
+
* @param decimals - 小数位数,默认 2
|
|
7
|
+
* @returns 格式化后的文件大小字符串
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import formatFileSize from '@tanwan/utils/formatFileSize'
|
|
12
|
+
* formatFileSize(0) // '0 B'
|
|
13
|
+
* formatFileSize(1024) // '1 KB'
|
|
14
|
+
* formatFileSize(1536000) // '1.46 MB'
|
|
15
|
+
* formatFileSize(1073741824) // '1 GB'
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
declare function formatFileSize(bytes: number, decimals?: number): string;
|
|
19
|
+
export = formatFileSize;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
//#region src/business/formatFileSize/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 文件大小格式化
|
|
4
|
+
*
|
|
5
|
+
* @param bytes - 字节数
|
|
6
|
+
* @param decimals - 小数位数,默认 2
|
|
7
|
+
* @returns 格式化后的文件大小字符串
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import formatFileSize from '@tanwan/utils/formatFileSize'
|
|
12
|
+
* formatFileSize(0) // '0 B'
|
|
13
|
+
* formatFileSize(1024) // '1 KB'
|
|
14
|
+
* formatFileSize(1536000) // '1.46 MB'
|
|
15
|
+
* formatFileSize(1073741824) // '1 GB'
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
declare function formatFileSize(bytes: number, decimals?: number): string;
|
|
19
|
+
//#endregion
|
|
20
|
+
export { formatFileSize as default };
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
//#region src/business/formatFileSize/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 文件大小格式化
|
|
4
|
+
*
|
|
5
|
+
* @param bytes - 字节数
|
|
6
|
+
* @param decimals - 小数位数,默认 2
|
|
7
|
+
* @returns 格式化后的文件大小字符串
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import formatFileSize from '@tanwan/utils/formatFileSize'
|
|
12
|
+
* formatFileSize(0) // '0 B'
|
|
13
|
+
* formatFileSize(1024) // '1 KB'
|
|
14
|
+
* formatFileSize(1536000) // '1.46 MB'
|
|
15
|
+
* formatFileSize(1073741824) // '1 GB'
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
function formatFileSize(bytes, decimals = 2) {
|
|
19
|
+
if (bytes === 0) return "0 B";
|
|
20
|
+
const units = [
|
|
21
|
+
"B",
|
|
22
|
+
"KB",
|
|
23
|
+
"MB",
|
|
24
|
+
"GB",
|
|
25
|
+
"TB",
|
|
26
|
+
"PB"
|
|
27
|
+
];
|
|
28
|
+
const k = 1024;
|
|
29
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
30
|
+
return `${Number.parseFloat((bytes / k ** i).toFixed(decimals))} ${units[i]}`;
|
|
31
|
+
}
|
|
32
|
+
//#endregion
|
|
33
|
+
export { formatFileSize as default };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/business/formatIdCard/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 身份证号格式化 / 脱敏
|
|
4
|
+
*
|
|
5
|
+
* @param idCard - 18 位身份证号
|
|
6
|
+
* @param mode - `'display'`(显示) | `'mask'`(脱敏,默认)
|
|
7
|
+
* @returns 格式化后的身份证号
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import formatIdCard from '@tanwan/utils/formatIdCard'
|
|
12
|
+
* formatIdCard('510123199001011234') // '510123********1234'
|
|
13
|
+
* formatIdCard('510123199001011234', 'display') // '510123 19900101 1234'
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
function formatIdCard(idCard, mode = "mask") {
|
|
17
|
+
if (mode === "display") return idCard.replace(/(\d{6})(\d{8})(\d{4})/, "$1 $2 $3");
|
|
18
|
+
return idCard.replace(/(\d{6})\d{8}(\d{4})/, "$1********$2");
|
|
19
|
+
}
|
|
20
|
+
//#endregion
|
|
21
|
+
module.exports = formatIdCard;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
//#region src/business/formatIdCard/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 身份证号格式化 / 脱敏
|
|
4
|
+
*
|
|
5
|
+
* @param idCard - 18 位身份证号
|
|
6
|
+
* @param mode - `'display'`(显示) | `'mask'`(脱敏,默认)
|
|
7
|
+
* @returns 格式化后的身份证号
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import formatIdCard from '@tanwan/utils/formatIdCard'
|
|
12
|
+
* formatIdCard('510123199001011234') // '510123********1234'
|
|
13
|
+
* formatIdCard('510123199001011234', 'display') // '510123 19900101 1234'
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
declare function formatIdCard(idCard: string, mode?: "display" | "mask"): string;
|
|
17
|
+
export = formatIdCard;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region src/business/formatIdCard/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 身份证号格式化 / 脱敏
|
|
4
|
+
*
|
|
5
|
+
* @param idCard - 18 位身份证号
|
|
6
|
+
* @param mode - `'display'`(显示) | `'mask'`(脱敏,默认)
|
|
7
|
+
* @returns 格式化后的身份证号
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import formatIdCard from '@tanwan/utils/formatIdCard'
|
|
12
|
+
* formatIdCard('510123199001011234') // '510123********1234'
|
|
13
|
+
* formatIdCard('510123199001011234', 'display') // '510123 19900101 1234'
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
declare function formatIdCard(idCard: string, mode?: "display" | "mask"): string;
|
|
17
|
+
//#endregion
|
|
18
|
+
export { formatIdCard as default };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/business/formatIdCard/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 身份证号格式化 / 脱敏
|
|
4
|
+
*
|
|
5
|
+
* @param idCard - 18 位身份证号
|
|
6
|
+
* @param mode - `'display'`(显示) | `'mask'`(脱敏,默认)
|
|
7
|
+
* @returns 格式化后的身份证号
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import formatIdCard from '@tanwan/utils/formatIdCard'
|
|
12
|
+
* formatIdCard('510123199001011234') // '510123********1234'
|
|
13
|
+
* formatIdCard('510123199001011234', 'display') // '510123 19900101 1234'
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
function formatIdCard(idCard, mode = "mask") {
|
|
17
|
+
if (mode === "display") return idCard.replace(/(\d{6})(\d{8})(\d{4})/, "$1 $2 $3");
|
|
18
|
+
return idCard.replace(/(\d{6})\d{8}(\d{4})/, "$1********$2");
|
|
19
|
+
}
|
|
20
|
+
//#endregion
|
|
21
|
+
export { formatIdCard as default };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/business/formatPhone/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 手机号格式化
|
|
4
|
+
*
|
|
5
|
+
* @param phone - 11 位手机号字符串
|
|
6
|
+
* @param mode - `'display'`(显示:188-1234-5678,默认)| `'mask'`(脱敏:188****5678)
|
|
7
|
+
* @returns 格式化后的手机号
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import formatPhone from '@tanwan/utils/formatPhone'
|
|
12
|
+
* formatPhone('18812345678') // '188-1234-5678'
|
|
13
|
+
* formatPhone('18812345678', 'mask') // '188****5678'
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
function formatPhone(phone, mode = "display") {
|
|
17
|
+
if (mode === "mask") return phone.replace(/(\d{3})\d{4}(\d{4})/, "$1****$2");
|
|
18
|
+
return phone.replace(/(\d{3})(\d{4})(\d{4})/, "$1-$2-$3");
|
|
19
|
+
}
|
|
20
|
+
//#endregion
|
|
21
|
+
module.exports = formatPhone;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
//#region src/business/formatPhone/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 手机号格式化
|
|
4
|
+
*
|
|
5
|
+
* @param phone - 11 位手机号字符串
|
|
6
|
+
* @param mode - `'display'`(显示:188-1234-5678,默认)| `'mask'`(脱敏:188****5678)
|
|
7
|
+
* @returns 格式化后的手机号
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import formatPhone from '@tanwan/utils/formatPhone'
|
|
12
|
+
* formatPhone('18812345678') // '188-1234-5678'
|
|
13
|
+
* formatPhone('18812345678', 'mask') // '188****5678'
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
declare function formatPhone(phone: string, mode?: "display" | "mask"): string;
|
|
17
|
+
export = formatPhone;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region src/business/formatPhone/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 手机号格式化
|
|
4
|
+
*
|
|
5
|
+
* @param phone - 11 位手机号字符串
|
|
6
|
+
* @param mode - `'display'`(显示:188-1234-5678,默认)| `'mask'`(脱敏:188****5678)
|
|
7
|
+
* @returns 格式化后的手机号
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import formatPhone from '@tanwan/utils/formatPhone'
|
|
12
|
+
* formatPhone('18812345678') // '188-1234-5678'
|
|
13
|
+
* formatPhone('18812345678', 'mask') // '188****5678'
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
declare function formatPhone(phone: string, mode?: "display" | "mask"): string;
|
|
17
|
+
//#endregion
|
|
18
|
+
export { formatPhone as default };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/business/formatPhone/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 手机号格式化
|
|
4
|
+
*
|
|
5
|
+
* @param phone - 11 位手机号字符串
|
|
6
|
+
* @param mode - `'display'`(显示:188-1234-5678,默认)| `'mask'`(脱敏:188****5678)
|
|
7
|
+
* @returns 格式化后的手机号
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import formatPhone from '@tanwan/utils/formatPhone'
|
|
12
|
+
* formatPhone('18812345678') // '188-1234-5678'
|
|
13
|
+
* formatPhone('18812345678', 'mask') // '188****5678'
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
function formatPhone(phone, mode = "display") {
|
|
17
|
+
if (mode === "mask") return phone.replace(/(\d{3})\d{4}(\d{4})/, "$1****$2");
|
|
18
|
+
return phone.replace(/(\d{3})(\d{4})(\d{4})/, "$1-$2-$3");
|
|
19
|
+
}
|
|
20
|
+
//#endregion
|
|
21
|
+
export { formatPhone as default };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
//#region src/business/generateCode/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 生成随机验证码
|
|
4
|
+
*
|
|
5
|
+
* @param length - 验证码长度,默认 6
|
|
6
|
+
* @param type - 类型:`'number'` | `'letter'` | `'mixed'`(默认)
|
|
7
|
+
* @returns 随机验证码字符串
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import generateCode from '@tanwan/utils/generateCode'
|
|
12
|
+
* generateCode() // 'a3Bk9M'(混合)
|
|
13
|
+
* generateCode(4) // 'G2xP'
|
|
14
|
+
* generateCode(6, 'number') // '382410'
|
|
15
|
+
* generateCode(6, 'letter') // 'aBcDeF'
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
function generateCode(length = 6, type = "mixed") {
|
|
19
|
+
const pool = {
|
|
20
|
+
number: "0123456789",
|
|
21
|
+
letter: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
|
|
22
|
+
mixed: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
|
|
23
|
+
}[type];
|
|
24
|
+
let result = "";
|
|
25
|
+
for (let i = 0; i < length; i++) result += pool[Math.floor(Math.random() * pool.length)];
|
|
26
|
+
return result;
|
|
27
|
+
}
|
|
28
|
+
//#endregion
|
|
29
|
+
module.exports = generateCode;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//#region src/business/generateCode/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 生成随机验证码
|
|
4
|
+
*
|
|
5
|
+
* @param length - 验证码长度,默认 6
|
|
6
|
+
* @param type - 类型:`'number'` | `'letter'` | `'mixed'`(默认)
|
|
7
|
+
* @returns 随机验证码字符串
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import generateCode from '@tanwan/utils/generateCode'
|
|
12
|
+
* generateCode() // 'a3Bk9M'(混合)
|
|
13
|
+
* generateCode(4) // 'G2xP'
|
|
14
|
+
* generateCode(6, 'number') // '382410'
|
|
15
|
+
* generateCode(6, 'letter') // 'aBcDeF'
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
declare function generateCode(length?: number, type?: "number" | "letter" | "mixed"): string;
|
|
19
|
+
export = generateCode;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
//#region src/business/generateCode/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 生成随机验证码
|
|
4
|
+
*
|
|
5
|
+
* @param length - 验证码长度,默认 6
|
|
6
|
+
* @param type - 类型:`'number'` | `'letter'` | `'mixed'`(默认)
|
|
7
|
+
* @returns 随机验证码字符串
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import generateCode from '@tanwan/utils/generateCode'
|
|
12
|
+
* generateCode() // 'a3Bk9M'(混合)
|
|
13
|
+
* generateCode(4) // 'G2xP'
|
|
14
|
+
* generateCode(6, 'number') // '382410'
|
|
15
|
+
* generateCode(6, 'letter') // 'aBcDeF'
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
declare function generateCode(length?: number, type?: "number" | "letter" | "mixed"): string;
|
|
19
|
+
//#endregion
|
|
20
|
+
export { generateCode as default };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
//#region src/business/generateCode/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 生成随机验证码
|
|
4
|
+
*
|
|
5
|
+
* @param length - 验证码长度,默认 6
|
|
6
|
+
* @param type - 类型:`'number'` | `'letter'` | `'mixed'`(默认)
|
|
7
|
+
* @returns 随机验证码字符串
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import generateCode from '@tanwan/utils/generateCode'
|
|
12
|
+
* generateCode() // 'a3Bk9M'(混合)
|
|
13
|
+
* generateCode(4) // 'G2xP'
|
|
14
|
+
* generateCode(6, 'number') // '382410'
|
|
15
|
+
* generateCode(6, 'letter') // 'aBcDeF'
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
function generateCode(length = 6, type = "mixed") {
|
|
19
|
+
const pool = {
|
|
20
|
+
number: "0123456789",
|
|
21
|
+
letter: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
|
|
22
|
+
mixed: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
|
|
23
|
+
}[type];
|
|
24
|
+
let result = "";
|
|
25
|
+
for (let i = 0; i < length; i++) result += pool[Math.floor(Math.random() * pool.length)];
|
|
26
|
+
return result;
|
|
27
|
+
}
|
|
28
|
+
//#endregion
|
|
29
|
+
export { generateCode as default };
|
package/dist/getAge.cjs
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
//#region src/business/getAge/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 计算年龄
|
|
4
|
+
*
|
|
5
|
+
* @param source - 身份证号(18 位)或 `YYYY-MM-DD` 日期字符串
|
|
6
|
+
* @param baseDate - 计算的基准日期,默认为当天
|
|
7
|
+
* @returns 年龄(周岁)
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import getAge from '@tanwan/utils/getAge'
|
|
12
|
+
* getAge('1990-05-15') // 按当天计算
|
|
13
|
+
* getAge('110101199001011234') // 从身份证计算
|
|
14
|
+
* getAge('1990-05-15', '2024-01-01') // 按指定日期计算
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
function getAge(source, baseDate) {
|
|
18
|
+
let birthStr;
|
|
19
|
+
if (source.length === 18) birthStr = `${source.substring(6, 10)}-${source.substring(10, 12)}-${source.substring(12, 14)}`;
|
|
20
|
+
else birthStr = source;
|
|
21
|
+
const birth = new Date(birthStr);
|
|
22
|
+
const base = baseDate ? new Date(baseDate) : /* @__PURE__ */ new Date();
|
|
23
|
+
let age = base.getFullYear() - birth.getFullYear();
|
|
24
|
+
const monthDiff = base.getMonth() - birth.getMonth();
|
|
25
|
+
const dayDiff = base.getDate() - birth.getDate();
|
|
26
|
+
if (monthDiff < 0 || monthDiff === 0 && dayDiff < 0) age--;
|
|
27
|
+
return age;
|
|
28
|
+
}
|
|
29
|
+
//#endregion
|
|
30
|
+
module.exports = getAge;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region src/business/getAge/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 计算年龄
|
|
4
|
+
*
|
|
5
|
+
* @param source - 身份证号(18 位)或 `YYYY-MM-DD` 日期字符串
|
|
6
|
+
* @param baseDate - 计算的基准日期,默认为当天
|
|
7
|
+
* @returns 年龄(周岁)
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import getAge from '@tanwan/utils/getAge'
|
|
12
|
+
* getAge('1990-05-15') // 按当天计算
|
|
13
|
+
* getAge('110101199001011234') // 从身份证计算
|
|
14
|
+
* getAge('1990-05-15', '2024-01-01') // 按指定日期计算
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
declare function getAge(source: string, baseDate?: string | Date): number;
|
|
18
|
+
export = getAge;
|
package/dist/getAge.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//#region src/business/getAge/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 计算年龄
|
|
4
|
+
*
|
|
5
|
+
* @param source - 身份证号(18 位)或 `YYYY-MM-DD` 日期字符串
|
|
6
|
+
* @param baseDate - 计算的基准日期,默认为当天
|
|
7
|
+
* @returns 年龄(周岁)
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import getAge from '@tanwan/utils/getAge'
|
|
12
|
+
* getAge('1990-05-15') // 按当天计算
|
|
13
|
+
* getAge('110101199001011234') // 从身份证计算
|
|
14
|
+
* getAge('1990-05-15', '2024-01-01') // 按指定日期计算
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
declare function getAge(source: string, baseDate?: string | Date): number;
|
|
18
|
+
//#endregion
|
|
19
|
+
export { getAge as default };
|
package/dist/getAge.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
//#region src/business/getAge/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 计算年龄
|
|
4
|
+
*
|
|
5
|
+
* @param source - 身份证号(18 位)或 `YYYY-MM-DD` 日期字符串
|
|
6
|
+
* @param baseDate - 计算的基准日期,默认为当天
|
|
7
|
+
* @returns 年龄(周岁)
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import getAge from '@tanwan/utils/getAge'
|
|
12
|
+
* getAge('1990-05-15') // 按当天计算
|
|
13
|
+
* getAge('110101199001011234') // 从身份证计算
|
|
14
|
+
* getAge('1990-05-15', '2024-01-01') // 按指定日期计算
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
function getAge(source, baseDate) {
|
|
18
|
+
let birthStr;
|
|
19
|
+
if (source.length === 18) birthStr = `${source.substring(6, 10)}-${source.substring(10, 12)}-${source.substring(12, 14)}`;
|
|
20
|
+
else birthStr = source;
|
|
21
|
+
const birth = new Date(birthStr);
|
|
22
|
+
const base = baseDate ? new Date(baseDate) : /* @__PURE__ */ new Date();
|
|
23
|
+
let age = base.getFullYear() - birth.getFullYear();
|
|
24
|
+
const monthDiff = base.getMonth() - birth.getMonth();
|
|
25
|
+
const dayDiff = base.getDate() - birth.getDate();
|
|
26
|
+
if (monthDiff < 0 || monthDiff === 0 && dayDiff < 0) age--;
|
|
27
|
+
return age;
|
|
28
|
+
}
|
|
29
|
+
//#endregion
|
|
30
|
+
export { getAge as default };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
//#region src/object/getByPath/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 通过路径字符串安全获取嵌套对象的值
|
|
4
|
+
*
|
|
5
|
+
* @param obj - 源对象
|
|
6
|
+
* @param path - 属性路径,支持点号分隔和方括号,如 `'a.b[0].c'`
|
|
7
|
+
* @param defaultValue - 路径不存在时的默认值
|
|
8
|
+
* @returns 路径对应的值,或默认值
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import getByPath from '@tanwan/utils/getByPath'
|
|
13
|
+
* const obj = { a: { b: [{ c: 42 }] } }
|
|
14
|
+
* getByPath(obj, 'a.b[0].c') // 42
|
|
15
|
+
* getByPath(obj, 'a.x.y') // undefined
|
|
16
|
+
* getByPath(obj, 'a.x.y', 'none') // 'none'
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
function getByPath(obj, path, defaultValue) {
|
|
20
|
+
const keys = path.replace(/\[(\d+)\]/g, ".$1").split(".").filter(Boolean);
|
|
21
|
+
let current = obj;
|
|
22
|
+
for (const key of keys) {
|
|
23
|
+
if (current === null || current === void 0 || typeof current !== "object") return defaultValue;
|
|
24
|
+
current = current[key];
|
|
25
|
+
}
|
|
26
|
+
return current === void 0 ? defaultValue : current;
|
|
27
|
+
}
|
|
28
|
+
//#endregion
|
|
29
|
+
module.exports = getByPath;
|