@tanwan/utils 1.0.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.cjs → camelCase.cjs} +0 -1
- 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 -3
- package/dist/{string/capitalize.cjs → capitalize.cjs} +1 -1
- package/dist/{string/capitalize.d.cts → capitalize.d.cts} +2 -3
- package/dist/{string/capitalize.d.ts → capitalize.d.ts} +2 -3
- package/dist/{string/capitalize.js → capitalize.js} +1 -3
- package/dist/{array/chunk.cjs → chunk.cjs} +1 -1
- package/dist/{array/chunk.d.cts → chunk.d.cts} +2 -3
- package/dist/{array/chunk.d.ts → chunk.d.ts} +2 -3
- package/dist/{array/chunk.js → chunk.js} +1 -3
- package/dist/{number/clamp.cjs → clamp.cjs} +1 -1
- package/dist/{number/clamp.d.cts → clamp.d.cts} +2 -3
- package/dist/{number/clamp.d.ts → clamp.d.ts} +2 -3
- package/dist/{number/clamp.js → clamp.js} +1 -3
- 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.cjs → debounce.cjs} +1 -1
- package/dist/{function/debounce.d.cts → debounce.d.cts} +2 -3
- package/dist/{function/debounce.d.ts → debounce.d.ts} +2 -3
- package/dist/{function/debounce.js → debounce.js} +1 -3
- 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} +3 -3
- package/dist/{base/deepClone.d.cts → deepClone.d.cts} +2 -3
- package/dist/{base/deepClone.d.ts → deepClone.d.ts} +2 -3
- package/dist/{base/deepClone.js → deepClone.js} +1 -3
- 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/delay.cjs +8 -0
- package/dist/delay.d.cts +18 -0
- package/dist/delay.d.ts +19 -0
- package/dist/delay.js +8 -0
- 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.cjs → flatten.cjs} +1 -1
- package/dist/{array/flatten.d.cts → flatten.d.cts} +2 -3
- package/dist/{array/flatten.d.ts → flatten.d.ts} +2 -3
- package/dist/{array/flatten.js → flatten.js} +1 -3
- 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.cjs → formatDate.cjs} +1 -1
- package/dist/{date/formatDate.d.cts → formatDate.d.cts} +2 -3
- package/dist/{date/formatDate.d.ts → formatDate.d.ts} +2 -3
- package/dist/{date/formatDate.js → formatDate.js} +1 -3
- 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.cjs → formatThousands.cjs} +1 -1
- package/dist/{number/formatThousands.d.cts → formatThousands.d.cts} +2 -3
- package/dist/{number/formatThousands.d.ts → formatThousands.d.ts} +2 -3
- package/dist/{number/formatThousands.js → formatThousands.js} +1 -3
- 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.cjs → getRelativeTime.cjs} +1 -1
- package/dist/{date/getRelativeTime.d.cts → getRelativeTime.d.cts} +2 -3
- package/dist/{date/getRelativeTime.d.ts → getRelativeTime.d.ts} +2 -3
- package/dist/{date/getRelativeTime.js → getRelativeTime.js} +1 -3
- 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/groupBy.cjs +36 -0
- package/dist/groupBy.d.cts +26 -0
- package/dist/groupBy.d.ts +27 -0
- package/dist/groupBy.js +36 -0
- 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 -36
- package/dist/index.d.cts +91 -19
- package/dist/index.d.ts +91 -19
- package/dist/index.iife.js +1 -1
- package/dist/index.js +91 -19
- 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.cjs → isArray.cjs} +1 -1
- package/dist/{base/isArray.d.cts → isArray.d.cts} +2 -3
- package/dist/{base/isArray.d.ts → isArray.d.ts} +2 -3
- package/dist/{base/isArray.js → isArray.js} +1 -3
- 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/isEmpty.cjs +42 -0
- package/dist/isEmpty.d.cts +33 -0
- package/dist/isEmpty.d.ts +34 -0
- package/dist/isEmpty.js +42 -0
- 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.cjs → isObject.cjs} +1 -1
- package/dist/{base/isObject.d.cts → isObject.d.cts} +2 -3
- package/dist/{base/isObject.d.ts → isObject.d.ts} +2 -3
- package/dist/{base/isObject.js → isObject.js} +1 -3
- 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.cjs → isString.cjs} +1 -1
- package/dist/{base/isString.d.cts → isString.d.cts} +2 -3
- package/dist/{base/isString.d.ts → isString.d.ts} +2 -3
- package/dist/{base/isString.js → isString.js} +1 -3
- 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/omit.cjs +23 -0
- package/dist/omit.d.cts +17 -0
- package/dist/omit.d.ts +18 -0
- package/dist/omit.js +23 -0
- 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/parseQueryString.cjs +48 -0
- package/dist/parseQueryString.d.cts +21 -0
- package/dist/parseQueryString.d.ts +22 -0
- package/dist/parseQueryString.js +48 -0
- 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/pick.cjs +22 -0
- package/dist/pick.d.cts +17 -0
- package/dist/pick.d.ts +18 -0
- package/dist/pick.js +22 -0
- package/dist/{number/randomInt.cjs → randomInt.cjs} +1 -1
- package/dist/{number/randomInt.d.cts → randomInt.d.cts} +2 -3
- package/dist/{number/randomInt.d.ts → randomInt.d.ts} +2 -3
- package/dist/{number/randomInt.js → randomInt.js} +1 -3
- package/dist/range.cjs +27 -0
- package/dist/range.d.cts +20 -0
- package/dist/range.d.ts +21 -0
- package/dist/range.js +27 -0
- 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.cjs → shuffle.cjs} +1 -1
- package/dist/{array/shuffle.d.cts → shuffle.d.cts} +2 -3
- package/dist/{array/shuffle.d.ts → shuffle.d.ts} +2 -3
- package/dist/{array/shuffle.js → shuffle.js} +1 -3
- 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/stringifyQueryString.cjs +38 -0
- package/dist/stringifyQueryString.d.cts +21 -0
- package/dist/stringifyQueryString.d.ts +22 -0
- package/dist/stringifyQueryString.js +38 -0
- package/dist/{function/throttle.cjs → throttle.cjs} +1 -1
- package/dist/{function/throttle.d.cts → throttle.d.cts} +2 -3
- package/dist/{function/throttle.d.ts → throttle.d.ts} +2 -3
- package/dist/{function/throttle.js → throttle.js} +1 -3
- 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.cjs → unique.cjs} +1 -1
- package/dist/{array/unique.d.cts → unique.d.cts} +2 -3
- package/dist/{array/unique.d.ts → unique.d.ts} +2 -3
- package/dist/{array/unique.js → unique.js} +1 -3
- package/dist/uuid.cjs +23 -0
- package/dist/uuid.d.cts +16 -0
- package/dist/uuid.d.ts +17 -0
- package/dist/uuid.js +23 -0
- 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 +351 -58
- 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/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/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/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/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/kebabCase.cjs → kebabCase.cjs} +0 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
//#region src/business/downloadFile/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 下载文件(支持 URL 或 Blob)
|
|
4
|
+
*
|
|
5
|
+
* @param source - 文件 URL 地址或 Blob 对象
|
|
6
|
+
* @param filename - 下载文件名
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import downloadFile from '@tanwan/utils/downloadFile'
|
|
11
|
+
* // 下载 URL
|
|
12
|
+
* downloadFile('https://example.com/file.pdf', 'document.pdf')
|
|
13
|
+
*
|
|
14
|
+
* // 下载 Blob
|
|
15
|
+
* const blob = new Blob(['hello'], { type: 'text/plain' })
|
|
16
|
+
* downloadFile(blob, 'hello.txt')
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
declare function downloadFile(source: string | Blob, filename: string): void;
|
|
20
|
+
export = downloadFile;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/business/downloadFile/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 下载文件(支持 URL 或 Blob)
|
|
4
|
+
*
|
|
5
|
+
* @param source - 文件 URL 地址或 Blob 对象
|
|
6
|
+
* @param filename - 下载文件名
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import downloadFile from '@tanwan/utils/downloadFile'
|
|
11
|
+
* // 下载 URL
|
|
12
|
+
* downloadFile('https://example.com/file.pdf', 'document.pdf')
|
|
13
|
+
*
|
|
14
|
+
* // 下载 Blob
|
|
15
|
+
* const blob = new Blob(['hello'], { type: 'text/plain' })
|
|
16
|
+
* downloadFile(blob, 'hello.txt')
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
declare function downloadFile(source: string | Blob, filename: string): void;
|
|
20
|
+
//#endregion
|
|
21
|
+
export { downloadFile as default };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
//#region src/business/downloadFile/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* 下载文件(支持 URL 或 Blob)
|
|
4
|
+
*
|
|
5
|
+
* @param source - 文件 URL 地址或 Blob 对象
|
|
6
|
+
* @param filename - 下载文件名
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import downloadFile from '@tanwan/utils/downloadFile'
|
|
11
|
+
* // 下载 URL
|
|
12
|
+
* downloadFile('https://example.com/file.pdf', 'document.pdf')
|
|
13
|
+
*
|
|
14
|
+
* // 下载 Blob
|
|
15
|
+
* const blob = new Blob(['hello'], { type: 'text/plain' })
|
|
16
|
+
* downloadFile(blob, 'hello.txt')
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
function downloadFile(source, filename) {
|
|
20
|
+
const url = typeof source === "string" ? source : URL.createObjectURL(source);
|
|
21
|
+
const a = document.createElement("a");
|
|
22
|
+
a.href = url;
|
|
23
|
+
a.download = filename;
|
|
24
|
+
a.style.display = "none";
|
|
25
|
+
document.body.appendChild(a);
|
|
26
|
+
a.click();
|
|
27
|
+
document.body.removeChild(a);
|
|
28
|
+
if (source instanceof Blob) URL.revokeObjectURL(url);
|
|
29
|
+
}
|
|
30
|
+
//#endregion
|
|
31
|
+
export { downloadFile as default };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
//#region src/business/encodeBase64/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* Base64 编码(支持中文)
|
|
4
|
+
*
|
|
5
|
+
* @param str - 待编码的字符串
|
|
6
|
+
* @returns Base64 编码结果
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import { encodeBase64, decodeBase64 } from '@tanwan/utils'
|
|
11
|
+
* encodeBase64('Hello') // 'SGVsbG8='
|
|
12
|
+
* encodeBase64('你好') // '5L2g5aW9'
|
|
13
|
+
* decodeBase64('5L2g5aW9') // '你好'
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
function encodeBase64(str) {
|
|
17
|
+
return btoa(unescape(encodeURIComponent(str)));
|
|
18
|
+
}
|
|
19
|
+
//#endregion
|
|
20
|
+
module.exports = encodeBase64;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
//#region src/business/encodeBase64/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Base64 编码(支持中文)
|
|
4
|
+
*
|
|
5
|
+
* @param str - 待编码的字符串
|
|
6
|
+
* @returns Base64 编码结果
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import { encodeBase64, decodeBase64 } from '@tanwan/utils'
|
|
11
|
+
* encodeBase64('Hello') // 'SGVsbG8='
|
|
12
|
+
* encodeBase64('你好') // '5L2g5aW9'
|
|
13
|
+
* decodeBase64('5L2g5aW9') // '你好'
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
declare function encodeBase64(str: string): string;
|
|
17
|
+
export = encodeBase64;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region src/business/encodeBase64/index.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Base64 编码(支持中文)
|
|
4
|
+
*
|
|
5
|
+
* @param str - 待编码的字符串
|
|
6
|
+
* @returns Base64 编码结果
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import { encodeBase64, decodeBase64 } from '@tanwan/utils'
|
|
11
|
+
* encodeBase64('Hello') // 'SGVsbG8='
|
|
12
|
+
* encodeBase64('你好') // '5L2g5aW9'
|
|
13
|
+
* decodeBase64('5L2g5aW9') // '你好'
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
declare function encodeBase64(str: string): string;
|
|
17
|
+
//#endregion
|
|
18
|
+
export { encodeBase64 as default };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
//#region src/business/encodeBase64/index.ts
|
|
2
|
+
/**
|
|
3
|
+
* Base64 编码(支持中文)
|
|
4
|
+
*
|
|
5
|
+
* @param str - 待编码的字符串
|
|
6
|
+
* @returns Base64 编码结果
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import { encodeBase64, decodeBase64 } from '@tanwan/utils'
|
|
11
|
+
* encodeBase64('Hello') // 'SGVsbG8='
|
|
12
|
+
* encodeBase64('你好') // '5L2g5aW9'
|
|
13
|
+
* decodeBase64('5L2g5aW9') // '你好'
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
function encodeBase64(str) {
|
|
17
|
+
return btoa(unescape(encodeURIComponent(str)));
|
|
18
|
+
}
|
|
19
|
+
//#endregion
|
|
20
|
+
export { encodeBase64 as default };
|
|
@@ -3,11 +3,10 @@
|
|
|
3
3
|
* 数组扁平化
|
|
4
4
|
* @example
|
|
5
5
|
* ```ts
|
|
6
|
-
* import flatten from '@
|
|
6
|
+
* import flatten from '@tanwan/utils/flatten'
|
|
7
7
|
* flatten([1, [2, [3, 4]]]) // [1, 2, 3, 4]
|
|
8
8
|
* flatten([1, [2, 3]], 1) // [1, 2, 3]
|
|
9
9
|
* ```
|
|
10
10
|
*/
|
|
11
11
|
declare function flatten<T>(arr: unknown[], depth?: number): T[];
|
|
12
|
-
export = flatten;
|
|
13
|
-
//# sourceMappingURL=flatten.d.cts.map
|
|
12
|
+
export = flatten;
|
|
@@ -3,12 +3,11 @@
|
|
|
3
3
|
* 数组扁平化
|
|
4
4
|
* @example
|
|
5
5
|
* ```ts
|
|
6
|
-
* import flatten from '@
|
|
6
|
+
* import flatten from '@tanwan/utils/flatten'
|
|
7
7
|
* flatten([1, [2, [3, 4]]]) // [1, 2, 3, 4]
|
|
8
8
|
* flatten([1, [2, 3]], 1) // [1, 2, 3]
|
|
9
9
|
* ```
|
|
10
10
|
*/
|
|
11
11
|
declare function flatten<T>(arr: unknown[], depth?: number): T[];
|
|
12
12
|
//#endregion
|
|
13
|
-
export { flatten as default };
|
|
14
|
-
//# sourceMappingURL=flatten.d.ts.map
|
|
13
|
+
export { flatten as default };
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* 数组扁平化
|
|
4
4
|
* @example
|
|
5
5
|
* ```ts
|
|
6
|
-
* import flatten from '@
|
|
6
|
+
* import flatten from '@tanwan/utils/flatten'
|
|
7
7
|
* flatten([1, [2, [3, 4]]]) // [1, 2, 3, 4]
|
|
8
8
|
* flatten([1, [2, 3]], 1) // [1, 2, 3]
|
|
9
9
|
* ```
|
|
@@ -17,5 +17,3 @@ function flatten(arr, depth = Infinity) {
|
|
|
17
17
|
}
|
|
18
18
|
//#endregion
|
|
19
19
|
export { flatten as default };
|
|
20
|
-
|
|
21
|
-
//# sourceMappingURL=flatten.js.map
|
|
@@ -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
|
+
module.exports = formatBankCard;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//#region src/business/formatBankCard/index.d.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
|
+
declare function formatBankCard(cardNo: string): string;
|
|
16
|
+
export = formatBankCard;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
//#region src/business/formatBankCard/index.d.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
|
+
declare function formatBankCard(cardNo: string): string;
|
|
16
|
+
//#endregion
|
|
17
|
+
export { formatBankCard as default };
|
|
@@ -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 };
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* 格式化日期
|
|
4
4
|
* @example
|
|
5
5
|
* ```ts
|
|
6
|
-
* import formatDate from '@
|
|
6
|
+
* import formatDate from '@tanwan/utils/formatDate'
|
|
7
7
|
* formatDate(new Date('2024-01-01'), 'yyyy-MM-dd') // '2024-01-01'
|
|
8
8
|
* formatDate(1609459200000, 'yyyy/MM/dd HH:mm') // '2021/01/01 08:00'
|
|
9
9
|
* ```
|
|
@@ -3,11 +3,10 @@
|
|
|
3
3
|
* 格式化日期
|
|
4
4
|
* @example
|
|
5
5
|
* ```ts
|
|
6
|
-
* import formatDate from '@
|
|
6
|
+
* import formatDate from '@tanwan/utils/formatDate'
|
|
7
7
|
* formatDate(new Date('2024-01-01'), 'yyyy-MM-dd') // '2024-01-01'
|
|
8
8
|
* formatDate(1609459200000, 'yyyy/MM/dd HH:mm') // '2021/01/01 08:00'
|
|
9
9
|
* ```
|
|
10
10
|
*/
|
|
11
11
|
declare function formatDate(date: number | string | Date, fmt?: string): string;
|
|
12
|
-
export = formatDate;
|
|
13
|
-
//# sourceMappingURL=formatDate.d.cts.map
|
|
12
|
+
export = formatDate;
|
|
@@ -3,12 +3,11 @@
|
|
|
3
3
|
* 格式化日期
|
|
4
4
|
* @example
|
|
5
5
|
* ```ts
|
|
6
|
-
* import formatDate from '@
|
|
6
|
+
* import formatDate from '@tanwan/utils/formatDate'
|
|
7
7
|
* formatDate(new Date('2024-01-01'), 'yyyy-MM-dd') // '2024-01-01'
|
|
8
8
|
* formatDate(1609459200000, 'yyyy/MM/dd HH:mm') // '2021/01/01 08:00'
|
|
9
9
|
* ```
|
|
10
10
|
*/
|
|
11
11
|
declare function formatDate(date: number | string | Date, fmt?: string): string;
|
|
12
12
|
//#endregion
|
|
13
|
-
export { formatDate as default };
|
|
14
|
-
//# sourceMappingURL=formatDate.d.ts.map
|
|
13
|
+
export { formatDate as default };
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* 格式化日期
|
|
4
4
|
* @example
|
|
5
5
|
* ```ts
|
|
6
|
-
* import formatDate from '@
|
|
6
|
+
* import formatDate from '@tanwan/utils/formatDate'
|
|
7
7
|
* formatDate(new Date('2024-01-01'), 'yyyy-MM-dd') // '2024-01-01'
|
|
8
8
|
* formatDate(1609459200000, 'yyyy/MM/dd HH:mm') // '2021/01/01 08:00'
|
|
9
9
|
* ```
|
|
@@ -36,5 +36,3 @@ function formatDate(date, fmt = "yyyy-MM-dd HH:mm:ss") {
|
|
|
36
36
|
}
|
|
37
37
|
//#endregion
|
|
38
38
|
export { formatDate as default };
|
|
39
|
-
|
|
40
|
-
//# sourceMappingURL=formatDate.js.map
|
|
@@ -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;
|