@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.
Files changed (452) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/addClass.cjs +19 -0
  3. package/dist/addClass.d.cts +16 -0
  4. package/dist/addClass.d.ts +17 -0
  5. package/dist/addClass.js +19 -0
  6. package/dist/{string/camelCase.d.cts → camelCase.d.cts} +1 -2
  7. package/dist/{string/camelCase.d.ts → camelCase.d.ts} +1 -2
  8. package/dist/{string/camelCase.js → camelCase.js} +0 -2
  9. package/dist/{string/capitalize.d.cts → capitalize.d.cts} +1 -2
  10. package/dist/{string/capitalize.d.ts → capitalize.d.ts} +1 -2
  11. package/dist/{string/capitalize.js → capitalize.js} +0 -2
  12. package/dist/{array/chunk.d.cts → chunk.d.cts} +1 -2
  13. package/dist/{array/chunk.d.ts → chunk.d.ts} +1 -2
  14. package/dist/{array/chunk.js → chunk.js} +0 -2
  15. package/dist/{number/clamp.d.cts → clamp.d.cts} +1 -2
  16. package/dist/{number/clamp.d.ts → clamp.d.ts} +1 -2
  17. package/dist/{number/clamp.js → clamp.js} +0 -2
  18. package/dist/convertCurrencyToChinese.cjs +56 -0
  19. package/dist/convertCurrencyToChinese.d.cts +18 -0
  20. package/dist/convertCurrencyToChinese.d.ts +19 -0
  21. package/dist/convertCurrencyToChinese.js +56 -0
  22. package/dist/copyToClipboard.cjs +38 -0
  23. package/dist/copyToClipboard.d.cts +17 -0
  24. package/dist/copyToClipboard.d.ts +18 -0
  25. package/dist/copyToClipboard.js +38 -0
  26. package/dist/createElement.cjs +27 -0
  27. package/dist/createElement.d.cts +21 -0
  28. package/dist/createElement.d.ts +22 -0
  29. package/dist/createElement.js +27 -0
  30. package/dist/{function/debounce.d.cts → debounce.d.cts} +1 -2
  31. package/dist/{function/debounce.d.ts → debounce.d.ts} +1 -2
  32. package/dist/{function/debounce.js → debounce.js} +0 -2
  33. package/dist/debounceSubmit.cjs +34 -0
  34. package/dist/debounceSubmit.d.cts +22 -0
  35. package/dist/debounceSubmit.d.ts +23 -0
  36. package/dist/debounceSubmit.js +34 -0
  37. package/dist/decodeBase64.cjs +19 -0
  38. package/dist/decodeBase64.d.cts +16 -0
  39. package/dist/decodeBase64.d.ts +17 -0
  40. package/dist/decodeBase64.js +19 -0
  41. package/dist/{base/deepClone.cjs → deepClone.cjs} +2 -2
  42. package/dist/{base/deepClone.d.cts → deepClone.d.cts} +1 -2
  43. package/dist/{base/deepClone.d.ts → deepClone.d.ts} +1 -2
  44. package/dist/{base/deepClone.js → deepClone.js} +0 -2
  45. package/dist/deepMerge.cjs +39 -0
  46. package/dist/deepMerge.d.cts +25 -0
  47. package/dist/deepMerge.d.ts +26 -0
  48. package/dist/deepMerge.js +39 -0
  49. package/dist/{function/delay.d.cts → delay.d.cts} +1 -2
  50. package/dist/{function/delay.d.ts → delay.d.ts} +1 -2
  51. package/dist/{function/delay.js → delay.js} +0 -2
  52. package/dist/difference.cjs +24 -0
  53. package/dist/difference.d.cts +20 -0
  54. package/dist/difference.d.ts +21 -0
  55. package/dist/difference.js +24 -0
  56. package/dist/downloadFile.cjs +31 -0
  57. package/dist/downloadFile.d.cts +20 -0
  58. package/dist/downloadFile.d.ts +21 -0
  59. package/dist/downloadFile.js +31 -0
  60. package/dist/encodeBase64.cjs +20 -0
  61. package/dist/encodeBase64.d.cts +17 -0
  62. package/dist/encodeBase64.d.ts +18 -0
  63. package/dist/encodeBase64.js +20 -0
  64. package/dist/{array/flatten.d.cts → flatten.d.cts} +1 -2
  65. package/dist/{array/flatten.d.ts → flatten.d.ts} +1 -2
  66. package/dist/{array/flatten.js → flatten.js} +0 -2
  67. package/dist/formatBankCard.cjs +19 -0
  68. package/dist/formatBankCard.d.cts +16 -0
  69. package/dist/formatBankCard.d.ts +17 -0
  70. package/dist/formatBankCard.js +19 -0
  71. package/dist/formatCurrency.cjs +7 -0
  72. package/dist/formatCurrency.d.cts +27 -0
  73. package/dist/formatCurrency.d.ts +28 -0
  74. package/dist/formatCurrency.js +7 -0
  75. package/dist/{date/formatDate.d.cts → formatDate.d.cts} +1 -2
  76. package/dist/{date/formatDate.d.ts → formatDate.d.ts} +1 -2
  77. package/dist/{date/formatDate.js → formatDate.js} +0 -2
  78. package/dist/formatFileSize.cjs +33 -0
  79. package/dist/formatFileSize.d.cts +19 -0
  80. package/dist/formatFileSize.d.ts +20 -0
  81. package/dist/formatFileSize.js +33 -0
  82. package/dist/formatIdCard.cjs +21 -0
  83. package/dist/formatIdCard.d.cts +17 -0
  84. package/dist/formatIdCard.d.ts +18 -0
  85. package/dist/formatIdCard.js +21 -0
  86. package/dist/formatPhone.cjs +21 -0
  87. package/dist/formatPhone.d.cts +17 -0
  88. package/dist/formatPhone.d.ts +18 -0
  89. package/dist/formatPhone.js +21 -0
  90. package/dist/{number/formatThousands.d.cts → formatThousands.d.cts} +1 -2
  91. package/dist/{number/formatThousands.d.ts → formatThousands.d.ts} +1 -2
  92. package/dist/{number/formatThousands.js → formatThousands.js} +0 -2
  93. package/dist/generateCode.cjs +29 -0
  94. package/dist/generateCode.d.cts +19 -0
  95. package/dist/generateCode.d.ts +20 -0
  96. package/dist/generateCode.js +29 -0
  97. package/dist/getAge.cjs +30 -0
  98. package/dist/getAge.d.cts +18 -0
  99. package/dist/getAge.d.ts +19 -0
  100. package/dist/getAge.js +30 -0
  101. package/dist/getByPath.cjs +29 -0
  102. package/dist/getByPath.d.cts +20 -0
  103. package/dist/getByPath.d.ts +21 -0
  104. package/dist/getByPath.js +29 -0
  105. package/dist/getCssVar.cjs +22 -0
  106. package/dist/getCssVar.d.cts +18 -0
  107. package/dist/getCssVar.d.ts +19 -0
  108. package/dist/getCssVar.js +22 -0
  109. package/dist/{date/getRelativeTime.d.cts → getRelativeTime.d.cts} +1 -2
  110. package/dist/{date/getRelativeTime.d.ts → getRelativeTime.d.ts} +1 -2
  111. package/dist/{date/getRelativeTime.js → getRelativeTime.js} +0 -2
  112. package/dist/getScrollTop.cjs +28 -0
  113. package/dist/getScrollTop.d.cts +18 -0
  114. package/dist/getScrollTop.d.ts +19 -0
  115. package/dist/getScrollTop.js +28 -0
  116. package/dist/getStorage.cjs +27 -0
  117. package/dist/getStorage.d.cts +18 -0
  118. package/dist/getStorage.d.ts +19 -0
  119. package/dist/getStorage.js +27 -0
  120. package/dist/getStyle.cjs +20 -0
  121. package/dist/getStyle.d.cts +17 -0
  122. package/dist/getStyle.d.ts +18 -0
  123. package/dist/getStyle.js +20 -0
  124. package/dist/getTextWidth.cjs +26 -0
  125. package/dist/getTextWidth.d.cts +16 -0
  126. package/dist/getTextWidth.d.ts +17 -0
  127. package/dist/getTextWidth.js +26 -0
  128. package/dist/{array/groupBy.d.cts → groupBy.d.cts} +1 -2
  129. package/dist/{array/groupBy.d.ts → groupBy.d.ts} +1 -2
  130. package/dist/{array/groupBy.js → groupBy.js} +0 -2
  131. package/dist/hasClass.cjs +19 -0
  132. package/dist/hasClass.d.cts +16 -0
  133. package/dist/hasClass.d.ts +17 -0
  134. package/dist/hasClass.js +19 -0
  135. package/dist/index.cjs +180 -54
  136. package/dist/index.d.cts +91 -28
  137. package/dist/index.d.ts +91 -28
  138. package/dist/index.iife.js +1 -1
  139. package/dist/index.js +91 -28
  140. package/dist/insertAfter.cjs +19 -0
  141. package/dist/insertAfter.d.cts +15 -0
  142. package/dist/insertAfter.d.ts +16 -0
  143. package/dist/insertAfter.js +19 -0
  144. package/dist/intersection.cjs +24 -0
  145. package/dist/intersection.d.cts +20 -0
  146. package/dist/intersection.d.ts +21 -0
  147. package/dist/intersection.js +24 -0
  148. package/dist/invert.cjs +21 -0
  149. package/dist/invert.d.cts +16 -0
  150. package/dist/invert.d.ts +17 -0
  151. package/dist/invert.js +21 -0
  152. package/dist/{base/isArray.d.cts → isArray.d.cts} +1 -2
  153. package/dist/{base/isArray.d.ts → isArray.d.ts} +1 -2
  154. package/dist/{base/isArray.js → isArray.js} +0 -2
  155. package/dist/isBrowser.cjs +17 -0
  156. package/dist/isBrowser.d.cts +14 -0
  157. package/dist/isBrowser.d.ts +15 -0
  158. package/dist/isBrowser.js +17 -0
  159. package/dist/isDate.cjs +18 -0
  160. package/dist/isDate.d.cts +15 -0
  161. package/dist/isDate.d.ts +16 -0
  162. package/dist/isDate.js +18 -0
  163. package/dist/{base/isEmpty.cjs → isEmpty.cjs} +2 -2
  164. package/dist/{base/isEmpty.d.cts → isEmpty.d.cts} +1 -2
  165. package/dist/{base/isEmpty.d.ts → isEmpty.d.ts} +1 -2
  166. package/dist/{base/isEmpty.js → isEmpty.js} +0 -2
  167. package/dist/isFunction.cjs +19 -0
  168. package/dist/isFunction.d.cts +16 -0
  169. package/dist/isFunction.d.ts +17 -0
  170. package/dist/isFunction.js +19 -0
  171. package/dist/isInViewport.cjs +22 -0
  172. package/dist/isInViewport.d.cts +17 -0
  173. package/dist/isInViewport.d.ts +18 -0
  174. package/dist/isInViewport.js +22 -0
  175. package/dist/isNil.cjs +19 -0
  176. package/dist/isNil.d.cts +16 -0
  177. package/dist/isNil.d.ts +17 -0
  178. package/dist/isNil.js +19 -0
  179. package/dist/isNumber.cjs +19 -0
  180. package/dist/isNumber.d.cts +16 -0
  181. package/dist/isNumber.d.ts +17 -0
  182. package/dist/isNumber.js +19 -0
  183. package/dist/{base/isObject.d.cts → isObject.d.cts} +1 -2
  184. package/dist/{base/isObject.d.ts → isObject.d.ts} +1 -2
  185. package/dist/{base/isObject.js → isObject.js} +0 -2
  186. package/dist/isPrimitive.cjs +21 -0
  187. package/dist/isPrimitive.d.cts +18 -0
  188. package/dist/isPrimitive.d.ts +19 -0
  189. package/dist/isPrimitive.js +21 -0
  190. package/dist/isPromise.cjs +18 -0
  191. package/dist/isPromise.d.cts +15 -0
  192. package/dist/isPromise.d.ts +16 -0
  193. package/dist/isPromise.js +18 -0
  194. package/dist/{base/isString.d.cts → isString.d.cts} +1 -2
  195. package/dist/{base/isString.d.ts → isString.d.ts} +1 -2
  196. package/dist/{base/isString.js → isString.js} +0 -2
  197. package/dist/joinUrl.cjs +25 -0
  198. package/dist/joinUrl.d.cts +19 -0
  199. package/dist/joinUrl.d.ts +20 -0
  200. package/dist/joinUrl.js +25 -0
  201. package/dist/{string/kebabCase.d.cts → kebabCase.d.cts} +1 -2
  202. package/dist/{string/kebabCase.d.ts → kebabCase.d.ts} +1 -2
  203. package/dist/{string/kebabCase.js → kebabCase.js} +0 -2
  204. package/dist/lazyLoadImages.cjs +36 -0
  205. package/dist/lazyLoadImages.d.cts +19 -0
  206. package/dist/lazyLoadImages.d.ts +20 -0
  207. package/dist/lazyLoadImages.js +36 -0
  208. package/dist/listToTree.cjs +25 -0
  209. package/dist/listToTree.d.cts +32 -0
  210. package/dist/listToTree.d.ts +33 -0
  211. package/dist/listToTree.js +25 -0
  212. package/dist/mapValues.cjs +25 -0
  213. package/dist/mapValues.d.cts +20 -0
  214. package/dist/mapValues.d.ts +21 -0
  215. package/dist/mapValues.js +25 -0
  216. package/dist/maskString.cjs +28 -0
  217. package/dist/maskString.d.cts +24 -0
  218. package/dist/maskString.d.ts +25 -0
  219. package/dist/maskString.js +28 -0
  220. package/dist/memoize.cjs +32 -0
  221. package/dist/memoize.d.cts +22 -0
  222. package/dist/memoize.d.ts +23 -0
  223. package/dist/memoize.js +32 -0
  224. package/dist/off.cjs +22 -0
  225. package/dist/off.d.cts +19 -0
  226. package/dist/off.d.ts +20 -0
  227. package/dist/off.js +22 -0
  228. package/dist/{object/omit.d.cts → omit.d.cts} +1 -2
  229. package/dist/{object/omit.d.ts → omit.d.ts} +1 -2
  230. package/dist/{object/omit.js → omit.js} +0 -2
  231. package/dist/on.cjs +21 -0
  232. package/dist/on.d.cts +18 -0
  233. package/dist/on.d.ts +19 -0
  234. package/dist/on.js +21 -0
  235. package/dist/once.cjs +31 -0
  236. package/dist/once.d.cts +20 -0
  237. package/dist/once.d.ts +21 -0
  238. package/dist/once.js +31 -0
  239. package/dist/{url/parseQueryString.d.cts → parseQueryString.d.cts} +1 -2
  240. package/dist/{url/parseQueryString.d.ts → parseQueryString.d.ts} +1 -2
  241. package/dist/{url/parseQueryString.js → parseQueryString.js} +0 -2
  242. package/dist/pascalCase.cjs +18 -0
  243. package/dist/pascalCase.d.cts +15 -0
  244. package/dist/pascalCase.d.ts +16 -0
  245. package/dist/pascalCase.js +18 -0
  246. package/dist/{object/pick.d.cts → pick.d.cts} +1 -2
  247. package/dist/{object/pick.d.ts → pick.d.ts} +1 -2
  248. package/dist/{object/pick.js → pick.js} +0 -2
  249. package/dist/{number/randomInt.d.cts → randomInt.d.cts} +1 -2
  250. package/dist/{number/randomInt.d.ts → randomInt.d.ts} +1 -2
  251. package/dist/{number/randomInt.js → randomInt.js} +0 -2
  252. package/dist/{array/range.d.cts → range.d.cts} +1 -2
  253. package/dist/{array/range.d.ts → range.d.ts} +1 -2
  254. package/dist/{array/range.js → range.js} +0 -2
  255. package/dist/removeClass.cjs +19 -0
  256. package/dist/removeClass.d.cts +16 -0
  257. package/dist/removeClass.d.ts +17 -0
  258. package/dist/removeClass.js +19 -0
  259. package/dist/removeElement.cjs +17 -0
  260. package/dist/removeElement.d.cts +14 -0
  261. package/dist/removeElement.d.ts +15 -0
  262. package/dist/removeElement.js +17 -0
  263. package/dist/removeStorage.cjs +19 -0
  264. package/dist/removeStorage.d.cts +14 -0
  265. package/dist/removeStorage.d.ts +15 -0
  266. package/dist/removeStorage.js +19 -0
  267. package/dist/retry.cjs +27 -0
  268. package/dist/retry.d.cts +17 -0
  269. package/dist/retry.d.ts +18 -0
  270. package/dist/retry.js +27 -0
  271. package/dist/sample.cjs +20 -0
  272. package/dist/sample.d.cts +16 -0
  273. package/dist/sample.d.ts +17 -0
  274. package/dist/sample.js +20 -0
  275. package/dist/scrollToElement.cjs +23 -0
  276. package/dist/scrollToElement.d.cts +16 -0
  277. package/dist/scrollToElement.d.ts +17 -0
  278. package/dist/scrollToElement.js +23 -0
  279. package/dist/setCssVar.cjs +22 -0
  280. package/dist/setCssVar.d.cts +18 -0
  281. package/dist/setCssVar.d.ts +19 -0
  282. package/dist/setCssVar.js +22 -0
  283. package/dist/setStorage.cjs +25 -0
  284. package/dist/setStorage.d.cts +17 -0
  285. package/dist/setStorage.d.ts +18 -0
  286. package/dist/setStorage.js +25 -0
  287. package/dist/setStyle.cjs +22 -0
  288. package/dist/setStyle.d.cts +19 -0
  289. package/dist/setStyle.d.ts +20 -0
  290. package/dist/setStyle.js +22 -0
  291. package/dist/{array/shuffle.d.cts → shuffle.d.cts} +1 -2
  292. package/dist/{array/shuffle.d.ts → shuffle.d.ts} +1 -2
  293. package/dist/{array/shuffle.js → shuffle.js} +0 -2
  294. package/dist/snakeCase.cjs +18 -0
  295. package/dist/snakeCase.d.cts +15 -0
  296. package/dist/snakeCase.d.ts +16 -0
  297. package/dist/snakeCase.js +18 -0
  298. package/dist/sortBy.cjs +30 -0
  299. package/dist/sortBy.d.cts +20 -0
  300. package/dist/sortBy.d.ts +21 -0
  301. package/dist/sortBy.js +30 -0
  302. package/dist/{url/stringifyQueryString.d.cts → stringifyQueryString.d.cts} +1 -2
  303. package/dist/{url/stringifyQueryString.d.ts → stringifyQueryString.d.ts} +1 -2
  304. package/dist/{url/stringifyQueryString.js → stringifyQueryString.js} +0 -2
  305. package/dist/{function/throttle.d.cts → throttle.d.cts} +1 -2
  306. package/dist/{function/throttle.d.ts → throttle.d.ts} +1 -2
  307. package/dist/{function/throttle.js → throttle.js} +0 -2
  308. package/dist/toggleClass.cjs +22 -0
  309. package/dist/toggleClass.d.cts +19 -0
  310. package/dist/toggleClass.d.ts +20 -0
  311. package/dist/toggleClass.js +22 -0
  312. package/dist/treeFind.cjs +34 -0
  313. package/dist/treeFind.d.cts +25 -0
  314. package/dist/treeFind.d.ts +26 -0
  315. package/dist/treeFind.js +34 -0
  316. package/dist/treeToList.cjs +33 -0
  317. package/dist/treeToList.d.cts +24 -0
  318. package/dist/treeToList.d.ts +25 -0
  319. package/dist/treeToList.js +33 -0
  320. package/dist/truncate.cjs +23 -0
  321. package/dist/truncate.d.cts +19 -0
  322. package/dist/truncate.d.ts +20 -0
  323. package/dist/truncate.js +23 -0
  324. package/dist/uniqBy.cjs +30 -0
  325. package/dist/uniqBy.d.cts +20 -0
  326. package/dist/uniqBy.d.ts +21 -0
  327. package/dist/uniqBy.js +30 -0
  328. package/dist/{array/unique.d.cts → unique.d.cts} +1 -2
  329. package/dist/{array/unique.d.ts → unique.d.ts} +1 -2
  330. package/dist/{array/unique.js → unique.js} +0 -2
  331. package/dist/{string/uuid.d.cts → uuid.d.cts} +1 -2
  332. package/dist/{string/uuid.d.ts → uuid.d.ts} +1 -2
  333. package/dist/{string/uuid.js → uuid.js} +0 -2
  334. package/dist/validateEmail.cjs +19 -0
  335. package/dist/validateEmail.d.cts +16 -0
  336. package/dist/validateEmail.d.ts +17 -0
  337. package/dist/validateEmail.js +19 -0
  338. package/dist/validateIdCard.cjs +62 -0
  339. package/dist/validateIdCard.d.cts +15 -0
  340. package/dist/validateIdCard.d.ts +16 -0
  341. package/dist/validateIdCard.js +62 -0
  342. package/dist/validatePhone.cjs +19 -0
  343. package/dist/validatePhone.d.cts +16 -0
  344. package/dist/validatePhone.d.ts +17 -0
  345. package/dist/validatePhone.js +19 -0
  346. package/package.json +340 -83
  347. package/dist/array/chunk.d.cts.map +0 -1
  348. package/dist/array/chunk.d.ts.map +0 -1
  349. package/dist/array/chunk.js.map +0 -1
  350. package/dist/array/flatten.d.cts.map +0 -1
  351. package/dist/array/flatten.d.ts.map +0 -1
  352. package/dist/array/flatten.js.map +0 -1
  353. package/dist/array/groupBy.d.cts.map +0 -1
  354. package/dist/array/groupBy.d.ts.map +0 -1
  355. package/dist/array/groupBy.js.map +0 -1
  356. package/dist/array/range.d.cts.map +0 -1
  357. package/dist/array/range.d.ts.map +0 -1
  358. package/dist/array/range.js.map +0 -1
  359. package/dist/array/shuffle.d.cts.map +0 -1
  360. package/dist/array/shuffle.d.ts.map +0 -1
  361. package/dist/array/shuffle.js.map +0 -1
  362. package/dist/array/unique.d.cts.map +0 -1
  363. package/dist/array/unique.d.ts.map +0 -1
  364. package/dist/array/unique.js.map +0 -1
  365. package/dist/base/deepClone.d.cts.map +0 -1
  366. package/dist/base/deepClone.d.ts.map +0 -1
  367. package/dist/base/deepClone.js.map +0 -1
  368. package/dist/base/isArray.d.cts.map +0 -1
  369. package/dist/base/isArray.d.ts.map +0 -1
  370. package/dist/base/isArray.js.map +0 -1
  371. package/dist/base/isEmpty.d.cts.map +0 -1
  372. package/dist/base/isEmpty.d.ts.map +0 -1
  373. package/dist/base/isEmpty.js.map +0 -1
  374. package/dist/base/isObject.d.cts.map +0 -1
  375. package/dist/base/isObject.d.ts.map +0 -1
  376. package/dist/base/isObject.js.map +0 -1
  377. package/dist/base/isString.d.cts.map +0 -1
  378. package/dist/base/isString.d.ts.map +0 -1
  379. package/dist/base/isString.js.map +0 -1
  380. package/dist/date/formatDate.d.cts.map +0 -1
  381. package/dist/date/formatDate.d.ts.map +0 -1
  382. package/dist/date/formatDate.js.map +0 -1
  383. package/dist/date/getRelativeTime.d.cts.map +0 -1
  384. package/dist/date/getRelativeTime.d.ts.map +0 -1
  385. package/dist/date/getRelativeTime.js.map +0 -1
  386. package/dist/function/debounce.d.cts.map +0 -1
  387. package/dist/function/debounce.d.ts.map +0 -1
  388. package/dist/function/debounce.js.map +0 -1
  389. package/dist/function/delay.d.cts.map +0 -1
  390. package/dist/function/delay.d.ts.map +0 -1
  391. package/dist/function/delay.js.map +0 -1
  392. package/dist/function/throttle.d.cts.map +0 -1
  393. package/dist/function/throttle.d.ts.map +0 -1
  394. package/dist/function/throttle.js.map +0 -1
  395. package/dist/number/clamp.d.cts.map +0 -1
  396. package/dist/number/clamp.d.ts.map +0 -1
  397. package/dist/number/clamp.js.map +0 -1
  398. package/dist/number/formatThousands.d.cts.map +0 -1
  399. package/dist/number/formatThousands.d.ts.map +0 -1
  400. package/dist/number/formatThousands.js.map +0 -1
  401. package/dist/number/randomInt.d.cts.map +0 -1
  402. package/dist/number/randomInt.d.ts.map +0 -1
  403. package/dist/number/randomInt.js.map +0 -1
  404. package/dist/object/omit.d.cts.map +0 -1
  405. package/dist/object/omit.d.ts.map +0 -1
  406. package/dist/object/omit.js.map +0 -1
  407. package/dist/object/pick.d.cts.map +0 -1
  408. package/dist/object/pick.d.ts.map +0 -1
  409. package/dist/object/pick.js.map +0 -1
  410. package/dist/string/camelCase.d.cts.map +0 -1
  411. package/dist/string/camelCase.d.ts.map +0 -1
  412. package/dist/string/camelCase.js.map +0 -1
  413. package/dist/string/capitalize.d.cts.map +0 -1
  414. package/dist/string/capitalize.d.ts.map +0 -1
  415. package/dist/string/capitalize.js.map +0 -1
  416. package/dist/string/kebabCase.d.cts.map +0 -1
  417. package/dist/string/kebabCase.d.ts.map +0 -1
  418. package/dist/string/kebabCase.js.map +0 -1
  419. package/dist/string/uuid.d.cts.map +0 -1
  420. package/dist/string/uuid.d.ts.map +0 -1
  421. package/dist/string/uuid.js.map +0 -1
  422. package/dist/url/parseQueryString.d.cts.map +0 -1
  423. package/dist/url/parseQueryString.d.ts.map +0 -1
  424. package/dist/url/parseQueryString.js.map +0 -1
  425. package/dist/url/stringifyQueryString.d.cts.map +0 -1
  426. package/dist/url/stringifyQueryString.d.ts.map +0 -1
  427. package/dist/url/stringifyQueryString.js.map +0 -1
  428. /package/dist/{string/camelCase.cjs → camelCase.cjs} +0 -0
  429. /package/dist/{string/capitalize.cjs → capitalize.cjs} +0 -0
  430. /package/dist/{array/chunk.cjs → chunk.cjs} +0 -0
  431. /package/dist/{number/clamp.cjs → clamp.cjs} +0 -0
  432. /package/dist/{function/debounce.cjs → debounce.cjs} +0 -0
  433. /package/dist/{function/delay.cjs → delay.cjs} +0 -0
  434. /package/dist/{array/flatten.cjs → flatten.cjs} +0 -0
  435. /package/dist/{date/formatDate.cjs → formatDate.cjs} +0 -0
  436. /package/dist/{number/formatThousands.cjs → formatThousands.cjs} +0 -0
  437. /package/dist/{date/getRelativeTime.cjs → getRelativeTime.cjs} +0 -0
  438. /package/dist/{array/groupBy.cjs → groupBy.cjs} +0 -0
  439. /package/dist/{base/isArray.cjs → isArray.cjs} +0 -0
  440. /package/dist/{base/isObject.cjs → isObject.cjs} +0 -0
  441. /package/dist/{base/isString.cjs → isString.cjs} +0 -0
  442. /package/dist/{string/kebabCase.cjs → kebabCase.cjs} +0 -0
  443. /package/dist/{object/omit.cjs → omit.cjs} +0 -0
  444. /package/dist/{url/parseQueryString.cjs → parseQueryString.cjs} +0 -0
  445. /package/dist/{object/pick.cjs → pick.cjs} +0 -0
  446. /package/dist/{number/randomInt.cjs → randomInt.cjs} +0 -0
  447. /package/dist/{array/range.cjs → range.cjs} +0 -0
  448. /package/dist/{array/shuffle.cjs → shuffle.cjs} +0 -0
  449. /package/dist/{url/stringifyQueryString.cjs → stringifyQueryString.cjs} +0 -0
  450. /package/dist/{function/throttle.cjs → throttle.cjs} +0 -0
  451. /package/dist/{array/unique.cjs → unique.cjs} +0 -0
  452. /package/dist/{string/uuid.cjs → uuid.cjs} +0 -0
@@ -0,0 +1,34 @@
1
+ //#region src/business/debounceSubmit/index.ts
2
+ /**
3
+ * 包装异步函数,防止重复提交
4
+ *
5
+ * 在函数执行期间,后续调用会被忽略直到第一次调用完成
6
+ *
7
+ * @param fn - 异步提交函数
8
+ * @returns 包装后的函数
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import debounceSubmit from '@tanwan/utils/debounceSubmit'
13
+ * const submit = debounceSubmit(async (data: FormData) => {
14
+ * await fetch('/api/submit', { method: 'POST', body: data })
15
+ * })
16
+ *
17
+ * await submit(formData) // 第一次执行
18
+ * await submit(formData) // 忽略(上一次还在执行中)
19
+ * ```
20
+ */
21
+ function debounceSubmit(fn) {
22
+ let pending = false;
23
+ return (async (...args) => {
24
+ if (pending) return;
25
+ pending = true;
26
+ try {
27
+ return await fn(...args);
28
+ } finally {
29
+ pending = false;
30
+ }
31
+ });
32
+ }
33
+ //#endregion
34
+ export { debounceSubmit as default };
@@ -0,0 +1,19 @@
1
+ //#region src/business/decodeBase64/index.ts
2
+ /**
3
+ * Base64 解码(支持中文)
4
+ *
5
+ * @param str - Base64 编码的字符串
6
+ * @returns 解码结果
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * import { encodeBase64, decodeBase64 } from '@tanwan/utils'
11
+ * decodeBase64('SGVsbG8=') // 'Hello'
12
+ * decodeBase64('5L2g5aW9') // '你好'
13
+ * ```
14
+ */
15
+ function decodeBase64(str) {
16
+ return decodeURIComponent(escape(atob(str)));
17
+ }
18
+ //#endregion
19
+ module.exports = decodeBase64;
@@ -0,0 +1,16 @@
1
+ //#region src/business/decodeBase64/index.d.ts
2
+ /**
3
+ * Base64 解码(支持中文)
4
+ *
5
+ * @param str - Base64 编码的字符串
6
+ * @returns 解码结果
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * import { encodeBase64, decodeBase64 } from '@tanwan/utils'
11
+ * decodeBase64('SGVsbG8=') // 'Hello'
12
+ * decodeBase64('5L2g5aW9') // '你好'
13
+ * ```
14
+ */
15
+ declare function decodeBase64(str: string): string;
16
+ export = decodeBase64;
@@ -0,0 +1,17 @@
1
+ //#region src/business/decodeBase64/index.d.ts
2
+ /**
3
+ * Base64 解码(支持中文)
4
+ *
5
+ * @param str - Base64 编码的字符串
6
+ * @returns 解码结果
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * import { encodeBase64, decodeBase64 } from '@tanwan/utils'
11
+ * decodeBase64('SGVsbG8=') // 'Hello'
12
+ * decodeBase64('5L2g5aW9') // '你好'
13
+ * ```
14
+ */
15
+ declare function decodeBase64(str: string): string;
16
+ //#endregion
17
+ export { decodeBase64 as default };
@@ -0,0 +1,19 @@
1
+ //#region src/business/decodeBase64/index.ts
2
+ /**
3
+ * Base64 解码(支持中文)
4
+ *
5
+ * @param str - Base64 编码的字符串
6
+ * @returns 解码结果
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * import { encodeBase64, decodeBase64 } from '@tanwan/utils'
11
+ * decodeBase64('SGVsbG8=') // 'Hello'
12
+ * decodeBase64('5L2g5aW9') // '你好'
13
+ * ```
14
+ */
15
+ function decodeBase64(str) {
16
+ return decodeURIComponent(escape(atob(str)));
17
+ }
18
+ //#endregion
19
+ export { decodeBase64 as default };
@@ -1,4 +1,4 @@
1
- const require_base_isObject = require("./isObject.cjs");
1
+ const require_isObject = require("./isObject.cjs");
2
2
  //#region src/base/deepClone/index.ts
3
3
  /**
4
4
  * 深拷贝变量
@@ -36,7 +36,7 @@ function deepClone(v, cache = /* @__PURE__ */ new WeakMap()) {
36
36
  }
37
37
  if (v instanceof WeakMap) throw new Error("Cannot clone WeakMap");
38
38
  if (v instanceof WeakSet) throw new Error("Cannot clone WeakSet");
39
- if (require_base_isObject(v)) {
39
+ if (require_isObject(v)) {
40
40
  const cloned = {};
41
41
  cache.set(v, cloned);
42
42
  for (const key in v) if (Object.prototype.hasOwnProperty.call(v, key)) cloned[key] = deepClone(v[key], cache);
@@ -11,5 +11,4 @@
11
11
  * ```
12
12
  */
13
13
  declare function deepClone<T>(v: T, cache?: WeakMap<object, unknown>): T;
14
- export = deepClone;
15
- //# sourceMappingURL=deepClone.d.cts.map
14
+ export = deepClone;
@@ -12,5 +12,4 @@
12
12
  */
13
13
  declare function deepClone<T>(v: T, cache?: WeakMap<object, unknown>): T;
14
14
  //#endregion
15
- export { deepClone as default };
16
- //# sourceMappingURL=deepClone.d.ts.map
15
+ export { deepClone as default };
@@ -46,5 +46,3 @@ function deepClone(v, cache = /* @__PURE__ */ new WeakMap()) {
46
46
  }
47
47
  //#endregion
48
48
  export { deepClone as default };
49
-
50
- //# sourceMappingURL=deepClone.js.map
@@ -0,0 +1,39 @@
1
+ const require_isObject = require("./isObject.cjs");
2
+ //#region src/object/deepMerge/index.ts
3
+ /**
4
+ * 深度合并多个对象,返回新对象
5
+ *
6
+ * - 后面的对象会覆盖前面对象的同名属性
7
+ * - 嵌套对象会递归合并,数组和基本类型直接覆盖
8
+ *
9
+ * @param sources - 要合并的源对象列表
10
+ * @returns 合并后的新对象
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * import deepMerge from '@tanwan/utils/deepMerge'
15
+ * deepMerge({ a: 1 }, { b: 2 })
16
+ * // { a: 1, b: 2 }
17
+ *
18
+ * deepMerge({ a: { x: 1 } }, { a: { y: 2 } })
19
+ * // { a: { x: 1, y: 2 } }
20
+ *
21
+ * deepMerge({ a: [1] }, { a: [2] })
22
+ * // { a: [2] }
23
+ * ```
24
+ */
25
+ function deepMerge(...sources) {
26
+ const result = {};
27
+ for (const source of sources) {
28
+ if (!source) continue;
29
+ for (const key of Object.keys(source)) {
30
+ const sv = source[key];
31
+ const rv = result[key];
32
+ if (require_isObject(sv) && require_isObject(rv) && !Array.isArray(sv) && !Array.isArray(rv)) result[key] = deepMerge(rv, sv);
33
+ else result[key] = sv;
34
+ }
35
+ }
36
+ return result;
37
+ }
38
+ //#endregion
39
+ module.exports = deepMerge;
@@ -0,0 +1,25 @@
1
+ //#region src/object/deepMerge/index.d.ts
2
+ /**
3
+ * 深度合并多个对象,返回新对象
4
+ *
5
+ * - 后面的对象会覆盖前面对象的同名属性
6
+ * - 嵌套对象会递归合并,数组和基本类型直接覆盖
7
+ *
8
+ * @param sources - 要合并的源对象列表
9
+ * @returns 合并后的新对象
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * import deepMerge from '@tanwan/utils/deepMerge'
14
+ * deepMerge({ a: 1 }, { b: 2 })
15
+ * // { a: 1, b: 2 }
16
+ *
17
+ * deepMerge({ a: { x: 1 } }, { a: { y: 2 } })
18
+ * // { a: { x: 1, y: 2 } }
19
+ *
20
+ * deepMerge({ a: [1] }, { a: [2] })
21
+ * // { a: [2] }
22
+ * ```
23
+ */
24
+ declare function deepMerge<T extends Record<string, unknown>>(...sources: T[]): T;
25
+ export = deepMerge;
@@ -0,0 +1,26 @@
1
+ //#region src/object/deepMerge/index.d.ts
2
+ /**
3
+ * 深度合并多个对象,返回新对象
4
+ *
5
+ * - 后面的对象会覆盖前面对象的同名属性
6
+ * - 嵌套对象会递归合并,数组和基本类型直接覆盖
7
+ *
8
+ * @param sources - 要合并的源对象列表
9
+ * @returns 合并后的新对象
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * import deepMerge from '@tanwan/utils/deepMerge'
14
+ * deepMerge({ a: 1 }, { b: 2 })
15
+ * // { a: 1, b: 2 }
16
+ *
17
+ * deepMerge({ a: { x: 1 } }, { a: { y: 2 } })
18
+ * // { a: { x: 1, y: 2 } }
19
+ *
20
+ * deepMerge({ a: [1] }, { a: [2] })
21
+ * // { a: [2] }
22
+ * ```
23
+ */
24
+ declare function deepMerge<T extends Record<string, unknown>>(...sources: T[]): T;
25
+ //#endregion
26
+ export { deepMerge as default };
@@ -0,0 +1,39 @@
1
+ import isObject from "./isObject.js";
2
+ //#region src/object/deepMerge/index.ts
3
+ /**
4
+ * 深度合并多个对象,返回新对象
5
+ *
6
+ * - 后面的对象会覆盖前面对象的同名属性
7
+ * - 嵌套对象会递归合并,数组和基本类型直接覆盖
8
+ *
9
+ * @param sources - 要合并的源对象列表
10
+ * @returns 合并后的新对象
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * import deepMerge from '@tanwan/utils/deepMerge'
15
+ * deepMerge({ a: 1 }, { b: 2 })
16
+ * // { a: 1, b: 2 }
17
+ *
18
+ * deepMerge({ a: { x: 1 } }, { a: { y: 2 } })
19
+ * // { a: { x: 1, y: 2 } }
20
+ *
21
+ * deepMerge({ a: [1] }, { a: [2] })
22
+ * // { a: [2] }
23
+ * ```
24
+ */
25
+ function deepMerge(...sources) {
26
+ const result = {};
27
+ for (const source of sources) {
28
+ if (!source) continue;
29
+ for (const key of Object.keys(source)) {
30
+ const sv = source[key];
31
+ const rv = result[key];
32
+ if (isObject(sv) && isObject(rv) && !Array.isArray(sv) && !Array.isArray(rv)) result[key] = deepMerge(rv, sv);
33
+ else result[key] = sv;
34
+ }
35
+ }
36
+ return result;
37
+ }
38
+ //#endregion
39
+ export { deepMerge as default };
@@ -15,5 +15,4 @@
15
15
  */
16
16
  declare function delay(ms?: number): Promise<void>;
17
17
  declare function delay<T>(ms: number, value: T): Promise<T>;
18
- export = delay;
19
- //# sourceMappingURL=delay.d.cts.map
18
+ export = delay;
@@ -16,5 +16,4 @@
16
16
  declare function delay(ms?: number): Promise<void>;
17
17
  declare function delay<T>(ms: number, value: T): Promise<T>;
18
18
  //#endregion
19
- export { delay as default };
20
- //# sourceMappingURL=delay.d.ts.map
19
+ export { delay as default };
@@ -6,5 +6,3 @@ function delay(ms = 0, value) {
6
6
  }
7
7
  //#endregion
8
8
  export { delay as default };
9
-
10
- //# sourceMappingURL=delay.js.map
@@ -0,0 +1,24 @@
1
+ //#region src/array/difference/index.ts
2
+ /**
3
+ * 计算两个数组的差集 —— 返回在 `source` 中但不在 `target` 中的元素
4
+ *
5
+ * @param source - 被减数组
6
+ * @param target - 要排除的元素数组
7
+ * @returns 差集新数组
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * import difference from '@tanwan/utils/difference'
12
+ * difference([1, 2, 3], [2])
13
+ * // [1, 3]
14
+ *
15
+ * difference(['a', 'b', 'c'], ['b', 'd'])
16
+ * // ['a', 'c']
17
+ * ```
18
+ */
19
+ function difference(source, target) {
20
+ const targetSet = new Set(target);
21
+ return source.filter((item) => !targetSet.has(item));
22
+ }
23
+ //#endregion
24
+ module.exports = difference;
@@ -0,0 +1,20 @@
1
+ //#region src/array/difference/index.d.ts
2
+ /**
3
+ * 计算两个数组的差集 —— 返回在 `source` 中但不在 `target` 中的元素
4
+ *
5
+ * @param source - 被减数组
6
+ * @param target - 要排除的元素数组
7
+ * @returns 差集新数组
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * import difference from '@tanwan/utils/difference'
12
+ * difference([1, 2, 3], [2])
13
+ * // [1, 3]
14
+ *
15
+ * difference(['a', 'b', 'c'], ['b', 'd'])
16
+ * // ['a', 'c']
17
+ * ```
18
+ */
19
+ declare function difference<T>(source: T[], target: T[]): T[];
20
+ export = difference;
@@ -0,0 +1,21 @@
1
+ //#region src/array/difference/index.d.ts
2
+ /**
3
+ * 计算两个数组的差集 —— 返回在 `source` 中但不在 `target` 中的元素
4
+ *
5
+ * @param source - 被减数组
6
+ * @param target - 要排除的元素数组
7
+ * @returns 差集新数组
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * import difference from '@tanwan/utils/difference'
12
+ * difference([1, 2, 3], [2])
13
+ * // [1, 3]
14
+ *
15
+ * difference(['a', 'b', 'c'], ['b', 'd'])
16
+ * // ['a', 'c']
17
+ * ```
18
+ */
19
+ declare function difference<T>(source: T[], target: T[]): T[];
20
+ //#endregion
21
+ export { difference as default };
@@ -0,0 +1,24 @@
1
+ //#region src/array/difference/index.ts
2
+ /**
3
+ * 计算两个数组的差集 —— 返回在 `source` 中但不在 `target` 中的元素
4
+ *
5
+ * @param source - 被减数组
6
+ * @param target - 要排除的元素数组
7
+ * @returns 差集新数组
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * import difference from '@tanwan/utils/difference'
12
+ * difference([1, 2, 3], [2])
13
+ * // [1, 3]
14
+ *
15
+ * difference(['a', 'b', 'c'], ['b', 'd'])
16
+ * // ['a', 'c']
17
+ * ```
18
+ */
19
+ function difference(source, target) {
20
+ const targetSet = new Set(target);
21
+ return source.filter((item) => !targetSet.has(item));
22
+ }
23
+ //#endregion
24
+ export { difference 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
+ module.exports = downloadFile;
@@ -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 };
@@ -9,5 +9,4 @@
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;
@@ -10,5 +10,4 @@
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 };
@@ -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 };