@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.
Files changed (425) 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.cjs → camelCase.cjs} +0 -1
  7. package/dist/{string/camelCase.d.cts → camelCase.d.cts} +1 -2
  8. package/dist/{string/camelCase.d.ts → camelCase.d.ts} +1 -2
  9. package/dist/{string/camelCase.js → camelCase.js} +0 -3
  10. package/dist/{string/capitalize.cjs → capitalize.cjs} +1 -1
  11. package/dist/{string/capitalize.d.cts → capitalize.d.cts} +2 -3
  12. package/dist/{string/capitalize.d.ts → capitalize.d.ts} +2 -3
  13. package/dist/{string/capitalize.js → capitalize.js} +1 -3
  14. package/dist/{array/chunk.cjs → chunk.cjs} +1 -1
  15. package/dist/{array/chunk.d.cts → chunk.d.cts} +2 -3
  16. package/dist/{array/chunk.d.ts → chunk.d.ts} +2 -3
  17. package/dist/{array/chunk.js → chunk.js} +1 -3
  18. package/dist/{number/clamp.cjs → clamp.cjs} +1 -1
  19. package/dist/{number/clamp.d.cts → clamp.d.cts} +2 -3
  20. package/dist/{number/clamp.d.ts → clamp.d.ts} +2 -3
  21. package/dist/{number/clamp.js → clamp.js} +1 -3
  22. package/dist/convertCurrencyToChinese.cjs +56 -0
  23. package/dist/convertCurrencyToChinese.d.cts +18 -0
  24. package/dist/convertCurrencyToChinese.d.ts +19 -0
  25. package/dist/convertCurrencyToChinese.js +56 -0
  26. package/dist/copyToClipboard.cjs +38 -0
  27. package/dist/copyToClipboard.d.cts +17 -0
  28. package/dist/copyToClipboard.d.ts +18 -0
  29. package/dist/copyToClipboard.js +38 -0
  30. package/dist/createElement.cjs +27 -0
  31. package/dist/createElement.d.cts +21 -0
  32. package/dist/createElement.d.ts +22 -0
  33. package/dist/createElement.js +27 -0
  34. package/dist/{function/debounce.cjs → debounce.cjs} +1 -1
  35. package/dist/{function/debounce.d.cts → debounce.d.cts} +2 -3
  36. package/dist/{function/debounce.d.ts → debounce.d.ts} +2 -3
  37. package/dist/{function/debounce.js → debounce.js} +1 -3
  38. package/dist/debounceSubmit.cjs +34 -0
  39. package/dist/debounceSubmit.d.cts +22 -0
  40. package/dist/debounceSubmit.d.ts +23 -0
  41. package/dist/debounceSubmit.js +34 -0
  42. package/dist/decodeBase64.cjs +19 -0
  43. package/dist/decodeBase64.d.cts +16 -0
  44. package/dist/decodeBase64.d.ts +17 -0
  45. package/dist/decodeBase64.js +19 -0
  46. package/dist/{base/deepClone.cjs → deepClone.cjs} +3 -3
  47. package/dist/{base/deepClone.d.cts → deepClone.d.cts} +2 -3
  48. package/dist/{base/deepClone.d.ts → deepClone.d.ts} +2 -3
  49. package/dist/{base/deepClone.js → deepClone.js} +1 -3
  50. package/dist/deepMerge.cjs +39 -0
  51. package/dist/deepMerge.d.cts +25 -0
  52. package/dist/deepMerge.d.ts +26 -0
  53. package/dist/deepMerge.js +39 -0
  54. package/dist/delay.cjs +8 -0
  55. package/dist/delay.d.cts +18 -0
  56. package/dist/delay.d.ts +19 -0
  57. package/dist/delay.js +8 -0
  58. package/dist/difference.cjs +24 -0
  59. package/dist/difference.d.cts +20 -0
  60. package/dist/difference.d.ts +21 -0
  61. package/dist/difference.js +24 -0
  62. package/dist/downloadFile.cjs +31 -0
  63. package/dist/downloadFile.d.cts +20 -0
  64. package/dist/downloadFile.d.ts +21 -0
  65. package/dist/downloadFile.js +31 -0
  66. package/dist/encodeBase64.cjs +20 -0
  67. package/dist/encodeBase64.d.cts +17 -0
  68. package/dist/encodeBase64.d.ts +18 -0
  69. package/dist/encodeBase64.js +20 -0
  70. package/dist/{array/flatten.cjs → flatten.cjs} +1 -1
  71. package/dist/{array/flatten.d.cts → flatten.d.cts} +2 -3
  72. package/dist/{array/flatten.d.ts → flatten.d.ts} +2 -3
  73. package/dist/{array/flatten.js → flatten.js} +1 -3
  74. package/dist/formatBankCard.cjs +19 -0
  75. package/dist/formatBankCard.d.cts +16 -0
  76. package/dist/formatBankCard.d.ts +17 -0
  77. package/dist/formatBankCard.js +19 -0
  78. package/dist/formatCurrency.cjs +7 -0
  79. package/dist/formatCurrency.d.cts +27 -0
  80. package/dist/formatCurrency.d.ts +28 -0
  81. package/dist/formatCurrency.js +7 -0
  82. package/dist/{date/formatDate.cjs → formatDate.cjs} +1 -1
  83. package/dist/{date/formatDate.d.cts → formatDate.d.cts} +2 -3
  84. package/dist/{date/formatDate.d.ts → formatDate.d.ts} +2 -3
  85. package/dist/{date/formatDate.js → formatDate.js} +1 -3
  86. package/dist/formatFileSize.cjs +33 -0
  87. package/dist/formatFileSize.d.cts +19 -0
  88. package/dist/formatFileSize.d.ts +20 -0
  89. package/dist/formatFileSize.js +33 -0
  90. package/dist/formatIdCard.cjs +21 -0
  91. package/dist/formatIdCard.d.cts +17 -0
  92. package/dist/formatIdCard.d.ts +18 -0
  93. package/dist/formatIdCard.js +21 -0
  94. package/dist/formatPhone.cjs +21 -0
  95. package/dist/formatPhone.d.cts +17 -0
  96. package/dist/formatPhone.d.ts +18 -0
  97. package/dist/formatPhone.js +21 -0
  98. package/dist/{number/formatThousands.cjs → formatThousands.cjs} +1 -1
  99. package/dist/{number/formatThousands.d.cts → formatThousands.d.cts} +2 -3
  100. package/dist/{number/formatThousands.d.ts → formatThousands.d.ts} +2 -3
  101. package/dist/{number/formatThousands.js → formatThousands.js} +1 -3
  102. package/dist/generateCode.cjs +29 -0
  103. package/dist/generateCode.d.cts +19 -0
  104. package/dist/generateCode.d.ts +20 -0
  105. package/dist/generateCode.js +29 -0
  106. package/dist/getAge.cjs +30 -0
  107. package/dist/getAge.d.cts +18 -0
  108. package/dist/getAge.d.ts +19 -0
  109. package/dist/getAge.js +30 -0
  110. package/dist/getByPath.cjs +29 -0
  111. package/dist/getByPath.d.cts +20 -0
  112. package/dist/getByPath.d.ts +21 -0
  113. package/dist/getByPath.js +29 -0
  114. package/dist/getCssVar.cjs +22 -0
  115. package/dist/getCssVar.d.cts +18 -0
  116. package/dist/getCssVar.d.ts +19 -0
  117. package/dist/getCssVar.js +22 -0
  118. package/dist/{date/getRelativeTime.cjs → getRelativeTime.cjs} +1 -1
  119. package/dist/{date/getRelativeTime.d.cts → getRelativeTime.d.cts} +2 -3
  120. package/dist/{date/getRelativeTime.d.ts → getRelativeTime.d.ts} +2 -3
  121. package/dist/{date/getRelativeTime.js → getRelativeTime.js} +1 -3
  122. package/dist/getScrollTop.cjs +28 -0
  123. package/dist/getScrollTop.d.cts +18 -0
  124. package/dist/getScrollTop.d.ts +19 -0
  125. package/dist/getScrollTop.js +28 -0
  126. package/dist/getStorage.cjs +27 -0
  127. package/dist/getStorage.d.cts +18 -0
  128. package/dist/getStorage.d.ts +19 -0
  129. package/dist/getStorage.js +27 -0
  130. package/dist/getStyle.cjs +20 -0
  131. package/dist/getStyle.d.cts +17 -0
  132. package/dist/getStyle.d.ts +18 -0
  133. package/dist/getStyle.js +20 -0
  134. package/dist/getTextWidth.cjs +26 -0
  135. package/dist/getTextWidth.d.cts +16 -0
  136. package/dist/getTextWidth.d.ts +17 -0
  137. package/dist/getTextWidth.js +26 -0
  138. package/dist/groupBy.cjs +36 -0
  139. package/dist/groupBy.d.cts +26 -0
  140. package/dist/groupBy.d.ts +27 -0
  141. package/dist/groupBy.js +36 -0
  142. package/dist/hasClass.cjs +19 -0
  143. package/dist/hasClass.d.cts +16 -0
  144. package/dist/hasClass.d.ts +17 -0
  145. package/dist/hasClass.js +19 -0
  146. package/dist/index.cjs +180 -36
  147. package/dist/index.d.cts +91 -19
  148. package/dist/index.d.ts +91 -19
  149. package/dist/index.iife.js +1 -1
  150. package/dist/index.js +91 -19
  151. package/dist/insertAfter.cjs +19 -0
  152. package/dist/insertAfter.d.cts +15 -0
  153. package/dist/insertAfter.d.ts +16 -0
  154. package/dist/insertAfter.js +19 -0
  155. package/dist/intersection.cjs +24 -0
  156. package/dist/intersection.d.cts +20 -0
  157. package/dist/intersection.d.ts +21 -0
  158. package/dist/intersection.js +24 -0
  159. package/dist/invert.cjs +21 -0
  160. package/dist/invert.d.cts +16 -0
  161. package/dist/invert.d.ts +17 -0
  162. package/dist/invert.js +21 -0
  163. package/dist/{base/isArray.cjs → isArray.cjs} +1 -1
  164. package/dist/{base/isArray.d.cts → isArray.d.cts} +2 -3
  165. package/dist/{base/isArray.d.ts → isArray.d.ts} +2 -3
  166. package/dist/{base/isArray.js → isArray.js} +1 -3
  167. package/dist/isBrowser.cjs +17 -0
  168. package/dist/isBrowser.d.cts +14 -0
  169. package/dist/isBrowser.d.ts +15 -0
  170. package/dist/isBrowser.js +17 -0
  171. package/dist/isDate.cjs +18 -0
  172. package/dist/isDate.d.cts +15 -0
  173. package/dist/isDate.d.ts +16 -0
  174. package/dist/isDate.js +18 -0
  175. package/dist/isEmpty.cjs +42 -0
  176. package/dist/isEmpty.d.cts +33 -0
  177. package/dist/isEmpty.d.ts +34 -0
  178. package/dist/isEmpty.js +42 -0
  179. package/dist/isFunction.cjs +19 -0
  180. package/dist/isFunction.d.cts +16 -0
  181. package/dist/isFunction.d.ts +17 -0
  182. package/dist/isFunction.js +19 -0
  183. package/dist/isInViewport.cjs +22 -0
  184. package/dist/isInViewport.d.cts +17 -0
  185. package/dist/isInViewport.d.ts +18 -0
  186. package/dist/isInViewport.js +22 -0
  187. package/dist/isNil.cjs +19 -0
  188. package/dist/isNil.d.cts +16 -0
  189. package/dist/isNil.d.ts +17 -0
  190. package/dist/isNil.js +19 -0
  191. package/dist/isNumber.cjs +19 -0
  192. package/dist/isNumber.d.cts +16 -0
  193. package/dist/isNumber.d.ts +17 -0
  194. package/dist/isNumber.js +19 -0
  195. package/dist/{base/isObject.cjs → isObject.cjs} +1 -1
  196. package/dist/{base/isObject.d.cts → isObject.d.cts} +2 -3
  197. package/dist/{base/isObject.d.ts → isObject.d.ts} +2 -3
  198. package/dist/{base/isObject.js → isObject.js} +1 -3
  199. package/dist/isPrimitive.cjs +21 -0
  200. package/dist/isPrimitive.d.cts +18 -0
  201. package/dist/isPrimitive.d.ts +19 -0
  202. package/dist/isPrimitive.js +21 -0
  203. package/dist/isPromise.cjs +18 -0
  204. package/dist/isPromise.d.cts +15 -0
  205. package/dist/isPromise.d.ts +16 -0
  206. package/dist/isPromise.js +18 -0
  207. package/dist/{base/isString.cjs → isString.cjs} +1 -1
  208. package/dist/{base/isString.d.cts → isString.d.cts} +2 -3
  209. package/dist/{base/isString.d.ts → isString.d.ts} +2 -3
  210. package/dist/{base/isString.js → isString.js} +1 -3
  211. package/dist/joinUrl.cjs +25 -0
  212. package/dist/joinUrl.d.cts +19 -0
  213. package/dist/joinUrl.d.ts +20 -0
  214. package/dist/joinUrl.js +25 -0
  215. package/dist/{string/kebabCase.d.cts → kebabCase.d.cts} +1 -2
  216. package/dist/{string/kebabCase.d.ts → kebabCase.d.ts} +1 -2
  217. package/dist/{string/kebabCase.js → kebabCase.js} +0 -2
  218. package/dist/lazyLoadImages.cjs +36 -0
  219. package/dist/lazyLoadImages.d.cts +19 -0
  220. package/dist/lazyLoadImages.d.ts +20 -0
  221. package/dist/lazyLoadImages.js +36 -0
  222. package/dist/listToTree.cjs +25 -0
  223. package/dist/listToTree.d.cts +32 -0
  224. package/dist/listToTree.d.ts +33 -0
  225. package/dist/listToTree.js +25 -0
  226. package/dist/mapValues.cjs +25 -0
  227. package/dist/mapValues.d.cts +20 -0
  228. package/dist/mapValues.d.ts +21 -0
  229. package/dist/mapValues.js +25 -0
  230. package/dist/maskString.cjs +28 -0
  231. package/dist/maskString.d.cts +24 -0
  232. package/dist/maskString.d.ts +25 -0
  233. package/dist/maskString.js +28 -0
  234. package/dist/memoize.cjs +32 -0
  235. package/dist/memoize.d.cts +22 -0
  236. package/dist/memoize.d.ts +23 -0
  237. package/dist/memoize.js +32 -0
  238. package/dist/off.cjs +22 -0
  239. package/dist/off.d.cts +19 -0
  240. package/dist/off.d.ts +20 -0
  241. package/dist/off.js +22 -0
  242. package/dist/omit.cjs +23 -0
  243. package/dist/omit.d.cts +17 -0
  244. package/dist/omit.d.ts +18 -0
  245. package/dist/omit.js +23 -0
  246. package/dist/on.cjs +21 -0
  247. package/dist/on.d.cts +18 -0
  248. package/dist/on.d.ts +19 -0
  249. package/dist/on.js +21 -0
  250. package/dist/once.cjs +31 -0
  251. package/dist/once.d.cts +20 -0
  252. package/dist/once.d.ts +21 -0
  253. package/dist/once.js +31 -0
  254. package/dist/parseQueryString.cjs +48 -0
  255. package/dist/parseQueryString.d.cts +21 -0
  256. package/dist/parseQueryString.d.ts +22 -0
  257. package/dist/parseQueryString.js +48 -0
  258. package/dist/pascalCase.cjs +18 -0
  259. package/dist/pascalCase.d.cts +15 -0
  260. package/dist/pascalCase.d.ts +16 -0
  261. package/dist/pascalCase.js +18 -0
  262. package/dist/pick.cjs +22 -0
  263. package/dist/pick.d.cts +17 -0
  264. package/dist/pick.d.ts +18 -0
  265. package/dist/pick.js +22 -0
  266. package/dist/{number/randomInt.cjs → randomInt.cjs} +1 -1
  267. package/dist/{number/randomInt.d.cts → randomInt.d.cts} +2 -3
  268. package/dist/{number/randomInt.d.ts → randomInt.d.ts} +2 -3
  269. package/dist/{number/randomInt.js → randomInt.js} +1 -3
  270. package/dist/range.cjs +27 -0
  271. package/dist/range.d.cts +20 -0
  272. package/dist/range.d.ts +21 -0
  273. package/dist/range.js +27 -0
  274. package/dist/removeClass.cjs +19 -0
  275. package/dist/removeClass.d.cts +16 -0
  276. package/dist/removeClass.d.ts +17 -0
  277. package/dist/removeClass.js +19 -0
  278. package/dist/removeElement.cjs +17 -0
  279. package/dist/removeElement.d.cts +14 -0
  280. package/dist/removeElement.d.ts +15 -0
  281. package/dist/removeElement.js +17 -0
  282. package/dist/removeStorage.cjs +19 -0
  283. package/dist/removeStorage.d.cts +14 -0
  284. package/dist/removeStorage.d.ts +15 -0
  285. package/dist/removeStorage.js +19 -0
  286. package/dist/retry.cjs +27 -0
  287. package/dist/retry.d.cts +17 -0
  288. package/dist/retry.d.ts +18 -0
  289. package/dist/retry.js +27 -0
  290. package/dist/sample.cjs +20 -0
  291. package/dist/sample.d.cts +16 -0
  292. package/dist/sample.d.ts +17 -0
  293. package/dist/sample.js +20 -0
  294. package/dist/scrollToElement.cjs +23 -0
  295. package/dist/scrollToElement.d.cts +16 -0
  296. package/dist/scrollToElement.d.ts +17 -0
  297. package/dist/scrollToElement.js +23 -0
  298. package/dist/setCssVar.cjs +22 -0
  299. package/dist/setCssVar.d.cts +18 -0
  300. package/dist/setCssVar.d.ts +19 -0
  301. package/dist/setCssVar.js +22 -0
  302. package/dist/setStorage.cjs +25 -0
  303. package/dist/setStorage.d.cts +17 -0
  304. package/dist/setStorage.d.ts +18 -0
  305. package/dist/setStorage.js +25 -0
  306. package/dist/setStyle.cjs +22 -0
  307. package/dist/setStyle.d.cts +19 -0
  308. package/dist/setStyle.d.ts +20 -0
  309. package/dist/setStyle.js +22 -0
  310. package/dist/{array/shuffle.cjs → shuffle.cjs} +1 -1
  311. package/dist/{array/shuffle.d.cts → shuffle.d.cts} +2 -3
  312. package/dist/{array/shuffle.d.ts → shuffle.d.ts} +2 -3
  313. package/dist/{array/shuffle.js → shuffle.js} +1 -3
  314. package/dist/snakeCase.cjs +18 -0
  315. package/dist/snakeCase.d.cts +15 -0
  316. package/dist/snakeCase.d.ts +16 -0
  317. package/dist/snakeCase.js +18 -0
  318. package/dist/sortBy.cjs +30 -0
  319. package/dist/sortBy.d.cts +20 -0
  320. package/dist/sortBy.d.ts +21 -0
  321. package/dist/sortBy.js +30 -0
  322. package/dist/stringifyQueryString.cjs +38 -0
  323. package/dist/stringifyQueryString.d.cts +21 -0
  324. package/dist/stringifyQueryString.d.ts +22 -0
  325. package/dist/stringifyQueryString.js +38 -0
  326. package/dist/{function/throttle.cjs → throttle.cjs} +1 -1
  327. package/dist/{function/throttle.d.cts → throttle.d.cts} +2 -3
  328. package/dist/{function/throttle.d.ts → throttle.d.ts} +2 -3
  329. package/dist/{function/throttle.js → throttle.js} +1 -3
  330. package/dist/toggleClass.cjs +22 -0
  331. package/dist/toggleClass.d.cts +19 -0
  332. package/dist/toggleClass.d.ts +20 -0
  333. package/dist/toggleClass.js +22 -0
  334. package/dist/treeFind.cjs +34 -0
  335. package/dist/treeFind.d.cts +25 -0
  336. package/dist/treeFind.d.ts +26 -0
  337. package/dist/treeFind.js +34 -0
  338. package/dist/treeToList.cjs +33 -0
  339. package/dist/treeToList.d.cts +24 -0
  340. package/dist/treeToList.d.ts +25 -0
  341. package/dist/treeToList.js +33 -0
  342. package/dist/truncate.cjs +23 -0
  343. package/dist/truncate.d.cts +19 -0
  344. package/dist/truncate.d.ts +20 -0
  345. package/dist/truncate.js +23 -0
  346. package/dist/uniqBy.cjs +30 -0
  347. package/dist/uniqBy.d.cts +20 -0
  348. package/dist/uniqBy.d.ts +21 -0
  349. package/dist/uniqBy.js +30 -0
  350. package/dist/{array/unique.cjs → unique.cjs} +1 -1
  351. package/dist/{array/unique.d.cts → unique.d.cts} +2 -3
  352. package/dist/{array/unique.d.ts → unique.d.ts} +2 -3
  353. package/dist/{array/unique.js → unique.js} +1 -3
  354. package/dist/uuid.cjs +23 -0
  355. package/dist/uuid.d.cts +16 -0
  356. package/dist/uuid.d.ts +17 -0
  357. package/dist/uuid.js +23 -0
  358. package/dist/validateEmail.cjs +19 -0
  359. package/dist/validateEmail.d.cts +16 -0
  360. package/dist/validateEmail.d.ts +17 -0
  361. package/dist/validateEmail.js +19 -0
  362. package/dist/validateIdCard.cjs +62 -0
  363. package/dist/validateIdCard.d.cts +15 -0
  364. package/dist/validateIdCard.d.ts +16 -0
  365. package/dist/validateIdCard.js +62 -0
  366. package/dist/validatePhone.cjs +19 -0
  367. package/dist/validatePhone.d.cts +16 -0
  368. package/dist/validatePhone.d.ts +17 -0
  369. package/dist/validatePhone.js +19 -0
  370. package/package.json +351 -58
  371. package/dist/array/chunk.d.cts.map +0 -1
  372. package/dist/array/chunk.d.ts.map +0 -1
  373. package/dist/array/chunk.js.map +0 -1
  374. package/dist/array/flatten.d.cts.map +0 -1
  375. package/dist/array/flatten.d.ts.map +0 -1
  376. package/dist/array/flatten.js.map +0 -1
  377. package/dist/array/shuffle.d.cts.map +0 -1
  378. package/dist/array/shuffle.d.ts.map +0 -1
  379. package/dist/array/shuffle.js.map +0 -1
  380. package/dist/array/unique.d.cts.map +0 -1
  381. package/dist/array/unique.d.ts.map +0 -1
  382. package/dist/array/unique.js.map +0 -1
  383. package/dist/base/deepClone.d.cts.map +0 -1
  384. package/dist/base/deepClone.d.ts.map +0 -1
  385. package/dist/base/deepClone.js.map +0 -1
  386. package/dist/base/isArray.d.cts.map +0 -1
  387. package/dist/base/isArray.d.ts.map +0 -1
  388. package/dist/base/isArray.js.map +0 -1
  389. package/dist/base/isObject.d.cts.map +0 -1
  390. package/dist/base/isObject.d.ts.map +0 -1
  391. package/dist/base/isObject.js.map +0 -1
  392. package/dist/base/isString.d.cts.map +0 -1
  393. package/dist/base/isString.d.ts.map +0 -1
  394. package/dist/base/isString.js.map +0 -1
  395. package/dist/date/formatDate.d.cts.map +0 -1
  396. package/dist/date/formatDate.d.ts.map +0 -1
  397. package/dist/date/formatDate.js.map +0 -1
  398. package/dist/date/getRelativeTime.d.cts.map +0 -1
  399. package/dist/date/getRelativeTime.d.ts.map +0 -1
  400. package/dist/date/getRelativeTime.js.map +0 -1
  401. package/dist/function/debounce.d.cts.map +0 -1
  402. package/dist/function/debounce.d.ts.map +0 -1
  403. package/dist/function/debounce.js.map +0 -1
  404. package/dist/function/throttle.d.cts.map +0 -1
  405. package/dist/function/throttle.d.ts.map +0 -1
  406. package/dist/function/throttle.js.map +0 -1
  407. package/dist/number/clamp.d.cts.map +0 -1
  408. package/dist/number/clamp.d.ts.map +0 -1
  409. package/dist/number/clamp.js.map +0 -1
  410. package/dist/number/formatThousands.d.cts.map +0 -1
  411. package/dist/number/formatThousands.d.ts.map +0 -1
  412. package/dist/number/formatThousands.js.map +0 -1
  413. package/dist/number/randomInt.d.cts.map +0 -1
  414. package/dist/number/randomInt.d.ts.map +0 -1
  415. package/dist/number/randomInt.js.map +0 -1
  416. package/dist/string/camelCase.d.cts.map +0 -1
  417. package/dist/string/camelCase.d.ts.map +0 -1
  418. package/dist/string/camelCase.js.map +0 -1
  419. package/dist/string/capitalize.d.cts.map +0 -1
  420. package/dist/string/capitalize.d.ts.map +0 -1
  421. package/dist/string/capitalize.js.map +0 -1
  422. package/dist/string/kebabCase.d.cts.map +0 -1
  423. package/dist/string/kebabCase.d.ts.map +0 -1
  424. package/dist/string/kebabCase.js.map +0 -1
  425. /package/dist/{string/kebabCase.cjs → kebabCase.cjs} +0 -0
package/dist/on.cjs ADDED
@@ -0,0 +1,21 @@
1
+ //#region src/dom/on/index.ts
2
+ /**
3
+ * 给元素绑定事件
4
+ *
5
+ * @param el - DOM 元素
6
+ * @param event - 事件名
7
+ * @param handler - 事件处理函数
8
+ * @param options - addEventListener 选项
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import on from '@tanwan/utils/on'
13
+ * on(el, 'click', () => console.log('clicked'))
14
+ * on(el, 'scroll', handler, { passive: true })
15
+ * ```
16
+ */
17
+ function on(el, event, handler, options) {
18
+ el.addEventListener(event, handler, options);
19
+ }
20
+ //#endregion
21
+ module.exports = on;
package/dist/on.d.cts ADDED
@@ -0,0 +1,18 @@
1
+ //#region src/dom/on/index.d.ts
2
+ /**
3
+ * 给元素绑定事件
4
+ *
5
+ * @param el - DOM 元素
6
+ * @param event - 事件名
7
+ * @param handler - 事件处理函数
8
+ * @param options - addEventListener 选项
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import on from '@tanwan/utils/on'
13
+ * on(el, 'click', () => console.log('clicked'))
14
+ * on(el, 'scroll', handler, { passive: true })
15
+ * ```
16
+ */
17
+ declare function on(el: EventTarget, event: string, handler: EventListenerOrEventListenerObject, options?: AddEventListenerOptions): void;
18
+ export = on;
package/dist/on.d.ts ADDED
@@ -0,0 +1,19 @@
1
+ //#region src/dom/on/index.d.ts
2
+ /**
3
+ * 给元素绑定事件
4
+ *
5
+ * @param el - DOM 元素
6
+ * @param event - 事件名
7
+ * @param handler - 事件处理函数
8
+ * @param options - addEventListener 选项
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import on from '@tanwan/utils/on'
13
+ * on(el, 'click', () => console.log('clicked'))
14
+ * on(el, 'scroll', handler, { passive: true })
15
+ * ```
16
+ */
17
+ declare function on(el: EventTarget, event: string, handler: EventListenerOrEventListenerObject, options?: AddEventListenerOptions): void;
18
+ //#endregion
19
+ export { on as default };
package/dist/on.js ADDED
@@ -0,0 +1,21 @@
1
+ //#region src/dom/on/index.ts
2
+ /**
3
+ * 给元素绑定事件
4
+ *
5
+ * @param el - DOM 元素
6
+ * @param event - 事件名
7
+ * @param handler - 事件处理函数
8
+ * @param options - addEventListener 选项
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import on from '@tanwan/utils/on'
13
+ * on(el, 'click', () => console.log('clicked'))
14
+ * on(el, 'scroll', handler, { passive: true })
15
+ * ```
16
+ */
17
+ function on(el, event, handler, options) {
18
+ el.addEventListener(event, handler, options);
19
+ }
20
+ //#endregion
21
+ export { on as default };
package/dist/once.cjs ADDED
@@ -0,0 +1,31 @@
1
+ //#region src/function/once/index.ts
2
+ /**
3
+ * 包装函数,确保它只执行一次,后续调用返回第一次的结果
4
+ *
5
+ * @param fn - 需要只执行一次的函数
6
+ * @returns 包装后的函数
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * import once from '@tanwan/utils/once'
11
+ * const initialize = once(() => {
12
+ * console.log('只执行一次')
13
+ * return 'done'
14
+ * })
15
+ * initialize() // 'done'(输出日志)
16
+ * initialize() // 'done'(不输出日志)
17
+ * ```
18
+ */
19
+ function once(fn) {
20
+ let called = false;
21
+ let result;
22
+ return ((...args) => {
23
+ if (!called) {
24
+ called = true;
25
+ result = fn(...args);
26
+ }
27
+ return result;
28
+ });
29
+ }
30
+ //#endregion
31
+ module.exports = once;
@@ -0,0 +1,20 @@
1
+ //#region src/function/once/index.d.ts
2
+ /**
3
+ * 包装函数,确保它只执行一次,后续调用返回第一次的结果
4
+ *
5
+ * @param fn - 需要只执行一次的函数
6
+ * @returns 包装后的函数
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * import once from '@tanwan/utils/once'
11
+ * const initialize = once(() => {
12
+ * console.log('只执行一次')
13
+ * return 'done'
14
+ * })
15
+ * initialize() // 'done'(输出日志)
16
+ * initialize() // 'done'(不输出日志)
17
+ * ```
18
+ */
19
+ declare function once<T extends (...args: unknown[]) => unknown>(fn: T): T;
20
+ export = once;
package/dist/once.d.ts ADDED
@@ -0,0 +1,21 @@
1
+ //#region src/function/once/index.d.ts
2
+ /**
3
+ * 包装函数,确保它只执行一次,后续调用返回第一次的结果
4
+ *
5
+ * @param fn - 需要只执行一次的函数
6
+ * @returns 包装后的函数
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * import once from '@tanwan/utils/once'
11
+ * const initialize = once(() => {
12
+ * console.log('只执行一次')
13
+ * return 'done'
14
+ * })
15
+ * initialize() // 'done'(输出日志)
16
+ * initialize() // 'done'(不输出日志)
17
+ * ```
18
+ */
19
+ declare function once<T extends (...args: unknown[]) => unknown>(fn: T): T;
20
+ //#endregion
21
+ export { once as default };
package/dist/once.js ADDED
@@ -0,0 +1,31 @@
1
+ //#region src/function/once/index.ts
2
+ /**
3
+ * 包装函数,确保它只执行一次,后续调用返回第一次的结果
4
+ *
5
+ * @param fn - 需要只执行一次的函数
6
+ * @returns 包装后的函数
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * import once from '@tanwan/utils/once'
11
+ * const initialize = once(() => {
12
+ * console.log('只执行一次')
13
+ * return 'done'
14
+ * })
15
+ * initialize() // 'done'(输出日志)
16
+ * initialize() // 'done'(不输出日志)
17
+ * ```
18
+ */
19
+ function once(fn) {
20
+ let called = false;
21
+ let result;
22
+ return ((...args) => {
23
+ if (!called) {
24
+ called = true;
25
+ result = fn(...args);
26
+ }
27
+ return result;
28
+ });
29
+ }
30
+ //#endregion
31
+ export { once as default };
@@ -0,0 +1,48 @@
1
+ //#region src/url/parseQueryString/index.ts
2
+ /**
3
+ * 解析 URL 查询字符串为对象
4
+ *
5
+ * 支持重复 key 解析为数组,数字字符串自动转为 number,布尔字符串自动转为 boolean
6
+ *
7
+ * @param query - 查询字符串(可带或不带前导 `?`),默认为当前页面 `location.search`
8
+ * @returns 解析后的键值对对象
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import parseQueryString from '@tanwan/utils/parseQueryString'
13
+ * parseQueryString('?name=John&age=25') // { name: 'John', age: 25 }
14
+ * parseQueryString('name=John&age=25') // { name: 'John', age: 25 }
15
+ * parseQueryString('?ids=1&ids=2') // { ids: [1, 2] }
16
+ * parseQueryString('?active=true&count=0') // { active: true, count: 0 }
17
+ * parseQueryString('') // {}
18
+ * ```
19
+ */
20
+ function parseQueryString(query) {
21
+ const qs = query ?? (typeof location !== "undefined" ? location.search : "");
22
+ if (!qs) return {};
23
+ const str = qs.startsWith("?") ? qs.slice(1) : qs;
24
+ if (!str) return {};
25
+ const result = {};
26
+ for (const part of str.split("&")) {
27
+ if (!part) continue;
28
+ const [rawKey, rawValue = ""] = part.split("=");
29
+ const key = decodeURIComponent(rawKey);
30
+ const parsed = parseValue(decodeURIComponent(rawValue));
31
+ if (key in result) {
32
+ const existing = result[key];
33
+ if (Array.isArray(existing)) existing.push(parsed);
34
+ else result[key] = [existing, parsed];
35
+ } else result[key] = parsed;
36
+ }
37
+ return result;
38
+ }
39
+ function parseValue(value) {
40
+ if (value === "true") return true;
41
+ if (value === "false") return false;
42
+ if (value === "") return "";
43
+ const num = Number(value);
44
+ if (!Number.isNaN(num) && String(num) === value) return num;
45
+ return value;
46
+ }
47
+ //#endregion
48
+ module.exports = parseQueryString;
@@ -0,0 +1,21 @@
1
+ //#region src/url/parseQueryString/index.d.ts
2
+ /**
3
+ * 解析 URL 查询字符串为对象
4
+ *
5
+ * 支持重复 key 解析为数组,数字字符串自动转为 number,布尔字符串自动转为 boolean
6
+ *
7
+ * @param query - 查询字符串(可带或不带前导 `?`),默认为当前页面 `location.search`
8
+ * @returns 解析后的键值对对象
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import parseQueryString from '@tanwan/utils/parseQueryString'
13
+ * parseQueryString('?name=John&age=25') // { name: 'John', age: 25 }
14
+ * parseQueryString('name=John&age=25') // { name: 'John', age: 25 }
15
+ * parseQueryString('?ids=1&ids=2') // { ids: [1, 2] }
16
+ * parseQueryString('?active=true&count=0') // { active: true, count: 0 }
17
+ * parseQueryString('') // {}
18
+ * ```
19
+ */
20
+ declare function parseQueryString(query?: string): Record<string, string | number | boolean | (string | number | boolean)[]>;
21
+ export = parseQueryString;
@@ -0,0 +1,22 @@
1
+ //#region src/url/parseQueryString/index.d.ts
2
+ /**
3
+ * 解析 URL 查询字符串为对象
4
+ *
5
+ * 支持重复 key 解析为数组,数字字符串自动转为 number,布尔字符串自动转为 boolean
6
+ *
7
+ * @param query - 查询字符串(可带或不带前导 `?`),默认为当前页面 `location.search`
8
+ * @returns 解析后的键值对对象
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import parseQueryString from '@tanwan/utils/parseQueryString'
13
+ * parseQueryString('?name=John&age=25') // { name: 'John', age: 25 }
14
+ * parseQueryString('name=John&age=25') // { name: 'John', age: 25 }
15
+ * parseQueryString('?ids=1&ids=2') // { ids: [1, 2] }
16
+ * parseQueryString('?active=true&count=0') // { active: true, count: 0 }
17
+ * parseQueryString('') // {}
18
+ * ```
19
+ */
20
+ declare function parseQueryString(query?: string): Record<string, string | number | boolean | (string | number | boolean)[]>;
21
+ //#endregion
22
+ export { parseQueryString as default };
@@ -0,0 +1,48 @@
1
+ //#region src/url/parseQueryString/index.ts
2
+ /**
3
+ * 解析 URL 查询字符串为对象
4
+ *
5
+ * 支持重复 key 解析为数组,数字字符串自动转为 number,布尔字符串自动转为 boolean
6
+ *
7
+ * @param query - 查询字符串(可带或不带前导 `?`),默认为当前页面 `location.search`
8
+ * @returns 解析后的键值对对象
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import parseQueryString from '@tanwan/utils/parseQueryString'
13
+ * parseQueryString('?name=John&age=25') // { name: 'John', age: 25 }
14
+ * parseQueryString('name=John&age=25') // { name: 'John', age: 25 }
15
+ * parseQueryString('?ids=1&ids=2') // { ids: [1, 2] }
16
+ * parseQueryString('?active=true&count=0') // { active: true, count: 0 }
17
+ * parseQueryString('') // {}
18
+ * ```
19
+ */
20
+ function parseQueryString(query) {
21
+ const qs = query ?? (typeof location !== "undefined" ? location.search : "");
22
+ if (!qs) return {};
23
+ const str = qs.startsWith("?") ? qs.slice(1) : qs;
24
+ if (!str) return {};
25
+ const result = {};
26
+ for (const part of str.split("&")) {
27
+ if (!part) continue;
28
+ const [rawKey, rawValue = ""] = part.split("=");
29
+ const key = decodeURIComponent(rawKey);
30
+ const parsed = parseValue(decodeURIComponent(rawValue));
31
+ if (key in result) {
32
+ const existing = result[key];
33
+ if (Array.isArray(existing)) existing.push(parsed);
34
+ else result[key] = [existing, parsed];
35
+ } else result[key] = parsed;
36
+ }
37
+ return result;
38
+ }
39
+ function parseValue(value) {
40
+ if (value === "true") return true;
41
+ if (value === "false") return false;
42
+ if (value === "") return "";
43
+ const num = Number(value);
44
+ if (!Number.isNaN(num) && String(num) === value) return num;
45
+ return value;
46
+ }
47
+ //#endregion
48
+ export { parseQueryString as default };
@@ -0,0 +1,18 @@
1
+ //#region src/string/pascalCase/index.ts
2
+ /**
3
+ * 将字符串转换为帕斯卡命名(PascalCase)
4
+ *
5
+ * @example
6
+ * ```ts
7
+ * import pascalCase from '@tanwan/utils/pascalCase'
8
+ * pascalCase('foo-bar') // 'FooBar'
9
+ * pascalCase('foo_bar') // 'FooBar'
10
+ * pascalCase('foo bar') // 'FooBar'
11
+ * pascalCase('fooBar') // 'FooBar'
12
+ * ```
13
+ */
14
+ function pascalCase(str) {
15
+ return str.replace(/[-_.\s]+(\w|$)/g, (_, c) => c.toUpperCase()).replace(/^[a-z]/, (c) => c.toUpperCase());
16
+ }
17
+ //#endregion
18
+ module.exports = pascalCase;
@@ -0,0 +1,15 @@
1
+ //#region src/string/pascalCase/index.d.ts
2
+ /**
3
+ * 将字符串转换为帕斯卡命名(PascalCase)
4
+ *
5
+ * @example
6
+ * ```ts
7
+ * import pascalCase from '@tanwan/utils/pascalCase'
8
+ * pascalCase('foo-bar') // 'FooBar'
9
+ * pascalCase('foo_bar') // 'FooBar'
10
+ * pascalCase('foo bar') // 'FooBar'
11
+ * pascalCase('fooBar') // 'FooBar'
12
+ * ```
13
+ */
14
+ declare function pascalCase(str: string): string;
15
+ export = pascalCase;
@@ -0,0 +1,16 @@
1
+ //#region src/string/pascalCase/index.d.ts
2
+ /**
3
+ * 将字符串转换为帕斯卡命名(PascalCase)
4
+ *
5
+ * @example
6
+ * ```ts
7
+ * import pascalCase from '@tanwan/utils/pascalCase'
8
+ * pascalCase('foo-bar') // 'FooBar'
9
+ * pascalCase('foo_bar') // 'FooBar'
10
+ * pascalCase('foo bar') // 'FooBar'
11
+ * pascalCase('fooBar') // 'FooBar'
12
+ * ```
13
+ */
14
+ declare function pascalCase(str: string): string;
15
+ //#endregion
16
+ export { pascalCase as default };
@@ -0,0 +1,18 @@
1
+ //#region src/string/pascalCase/index.ts
2
+ /**
3
+ * 将字符串转换为帕斯卡命名(PascalCase)
4
+ *
5
+ * @example
6
+ * ```ts
7
+ * import pascalCase from '@tanwan/utils/pascalCase'
8
+ * pascalCase('foo-bar') // 'FooBar'
9
+ * pascalCase('foo_bar') // 'FooBar'
10
+ * pascalCase('foo bar') // 'FooBar'
11
+ * pascalCase('fooBar') // 'FooBar'
12
+ * ```
13
+ */
14
+ function pascalCase(str) {
15
+ return str.replace(/[-_.\s]+(\w|$)/g, (_, c) => c.toUpperCase()).replace(/^[a-z]/, (c) => c.toUpperCase());
16
+ }
17
+ //#endregion
18
+ export { pascalCase as default };
package/dist/pick.cjs ADDED
@@ -0,0 +1,22 @@
1
+ //#region src/object/pick/index.ts
2
+ /**
3
+ * 从对象中选取指定 key,返回新对象
4
+ *
5
+ * @param obj - 源对象
6
+ * @param keys - 要选取的 key 数组
7
+ * @returns 包含指定 key 的新对象
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * import pick from '@tanwan/utils/pick'
12
+ * pick({ a: 1, b: 2, c: 3 }, ['a', 'c']) // { a: 1, c: 3 }
13
+ * pick({ x: 'foo' }, ['y']) // {}
14
+ * ```
15
+ */
16
+ function pick(obj, keys) {
17
+ const result = {};
18
+ for (const key of keys) if (key in obj) result[key] = obj[key];
19
+ return result;
20
+ }
21
+ //#endregion
22
+ module.exports = pick;
@@ -0,0 +1,17 @@
1
+ //#region src/object/pick/index.d.ts
2
+ /**
3
+ * 从对象中选取指定 key,返回新对象
4
+ *
5
+ * @param obj - 源对象
6
+ * @param keys - 要选取的 key 数组
7
+ * @returns 包含指定 key 的新对象
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * import pick from '@tanwan/utils/pick'
12
+ * pick({ a: 1, b: 2, c: 3 }, ['a', 'c']) // { a: 1, c: 3 }
13
+ * pick({ x: 'foo' }, ['y']) // {}
14
+ * ```
15
+ */
16
+ declare function pick<T extends Record<string, unknown>, K extends keyof T>(obj: T, keys: K[]): Pick<T, K>;
17
+ export = pick;
package/dist/pick.d.ts ADDED
@@ -0,0 +1,18 @@
1
+ //#region src/object/pick/index.d.ts
2
+ /**
3
+ * 从对象中选取指定 key,返回新对象
4
+ *
5
+ * @param obj - 源对象
6
+ * @param keys - 要选取的 key 数组
7
+ * @returns 包含指定 key 的新对象
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * import pick from '@tanwan/utils/pick'
12
+ * pick({ a: 1, b: 2, c: 3 }, ['a', 'c']) // { a: 1, c: 3 }
13
+ * pick({ x: 'foo' }, ['y']) // {}
14
+ * ```
15
+ */
16
+ declare function pick<T extends Record<string, unknown>, K extends keyof T>(obj: T, keys: K[]): Pick<T, K>;
17
+ //#endregion
18
+ export { pick as default };
package/dist/pick.js ADDED
@@ -0,0 +1,22 @@
1
+ //#region src/object/pick/index.ts
2
+ /**
3
+ * 从对象中选取指定 key,返回新对象
4
+ *
5
+ * @param obj - 源对象
6
+ * @param keys - 要选取的 key 数组
7
+ * @returns 包含指定 key 的新对象
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * import pick from '@tanwan/utils/pick'
12
+ * pick({ a: 1, b: 2, c: 3 }, ['a', 'c']) // { a: 1, c: 3 }
13
+ * pick({ x: 'foo' }, ['y']) // {}
14
+ * ```
15
+ */
16
+ function pick(obj, keys) {
17
+ const result = {};
18
+ for (const key of keys) if (key in obj) result[key] = obj[key];
19
+ return result;
20
+ }
21
+ //#endregion
22
+ export { pick as default };
@@ -3,7 +3,7 @@
3
3
  * 生成指定范围内的随机整数
4
4
  * @example
5
5
  * ```ts
6
- * import randomInt from '@tw/utils/randomInt'
6
+ * import randomInt from '@tanwan/utils/randomInt'
7
7
  * randomInt(1, 10) // 3(介于 1-10 之间)
8
8
  * randomInt(0, 1) // 0 或 1
9
9
  * ```
@@ -3,11 +3,10 @@
3
3
  * 生成指定范围内的随机整数
4
4
  * @example
5
5
  * ```ts
6
- * import randomInt from '@tw/utils/randomInt'
6
+ * import randomInt from '@tanwan/utils/randomInt'
7
7
  * randomInt(1, 10) // 3(介于 1-10 之间)
8
8
  * randomInt(0, 1) // 0 或 1
9
9
  * ```
10
10
  */
11
11
  declare function randomInt(min: number, max: number): number;
12
- export = randomInt;
13
- //# sourceMappingURL=randomInt.d.cts.map
12
+ export = randomInt;
@@ -3,12 +3,11 @@
3
3
  * 生成指定范围内的随机整数
4
4
  * @example
5
5
  * ```ts
6
- * import randomInt from '@tw/utils/randomInt'
6
+ * import randomInt from '@tanwan/utils/randomInt'
7
7
  * randomInt(1, 10) // 3(介于 1-10 之间)
8
8
  * randomInt(0, 1) // 0 或 1
9
9
  * ```
10
10
  */
11
11
  declare function randomInt(min: number, max: number): number;
12
12
  //#endregion
13
- export { randomInt as default };
14
- //# sourceMappingURL=randomInt.d.ts.map
13
+ export { randomInt as default };
@@ -3,7 +3,7 @@
3
3
  * 生成指定范围内的随机整数
4
4
  * @example
5
5
  * ```ts
6
- * import randomInt from '@tw/utils/randomInt'
6
+ * import randomInt from '@tanwan/utils/randomInt'
7
7
  * randomInt(1, 10) // 3(介于 1-10 之间)
8
8
  * randomInt(0, 1) // 0 或 1
9
9
  * ```
@@ -13,5 +13,3 @@ function randomInt(min, max) {
13
13
  }
14
14
  //#endregion
15
15
  export { randomInt as default };
16
-
17
- //# sourceMappingURL=randomInt.js.map
package/dist/range.cjs ADDED
@@ -0,0 +1,27 @@
1
+ //#region src/array/range/index.ts
2
+ /**
3
+ * 生成数字序列数组
4
+ *
5
+ * @param start - 起始值(包含)
6
+ * @param end - 结束值(不包含)
7
+ * @param step - 步长,默认为 1
8
+ * @returns 数字序列数组
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import range from '@tanwan/utils/range'
13
+ * range(1, 5) // [1, 2, 3, 4]
14
+ * range(0, 10, 2) // [0, 2, 4, 6, 8]
15
+ * range(5, 0, -1) // [5, 4, 3, 2, 1]
16
+ * range(0, 0) // []
17
+ * ```
18
+ */
19
+ function range(start, end, step = 1) {
20
+ if (step === 0) throw new Error("step 不能为 0");
21
+ const result = [];
22
+ if (step > 0) for (let i = start; i < end; i += step) result.push(i);
23
+ else for (let i = start; i > end; i += step) result.push(i);
24
+ return result;
25
+ }
26
+ //#endregion
27
+ module.exports = range;
@@ -0,0 +1,20 @@
1
+ //#region src/array/range/index.d.ts
2
+ /**
3
+ * 生成数字序列数组
4
+ *
5
+ * @param start - 起始值(包含)
6
+ * @param end - 结束值(不包含)
7
+ * @param step - 步长,默认为 1
8
+ * @returns 数字序列数组
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import range from '@tanwan/utils/range'
13
+ * range(1, 5) // [1, 2, 3, 4]
14
+ * range(0, 10, 2) // [0, 2, 4, 6, 8]
15
+ * range(5, 0, -1) // [5, 4, 3, 2, 1]
16
+ * range(0, 0) // []
17
+ * ```
18
+ */
19
+ declare function range(start: number, end: number, step?: number): number[];
20
+ export = range;
@@ -0,0 +1,21 @@
1
+ //#region src/array/range/index.d.ts
2
+ /**
3
+ * 生成数字序列数组
4
+ *
5
+ * @param start - 起始值(包含)
6
+ * @param end - 结束值(不包含)
7
+ * @param step - 步长,默认为 1
8
+ * @returns 数字序列数组
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import range from '@tanwan/utils/range'
13
+ * range(1, 5) // [1, 2, 3, 4]
14
+ * range(0, 10, 2) // [0, 2, 4, 6, 8]
15
+ * range(5, 0, -1) // [5, 4, 3, 2, 1]
16
+ * range(0, 0) // []
17
+ * ```
18
+ */
19
+ declare function range(start: number, end: number, step?: number): number[];
20
+ //#endregion
21
+ export { range as default };
package/dist/range.js ADDED
@@ -0,0 +1,27 @@
1
+ //#region src/array/range/index.ts
2
+ /**
3
+ * 生成数字序列数组
4
+ *
5
+ * @param start - 起始值(包含)
6
+ * @param end - 结束值(不包含)
7
+ * @param step - 步长,默认为 1
8
+ * @returns 数字序列数组
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import range from '@tanwan/utils/range'
13
+ * range(1, 5) // [1, 2, 3, 4]
14
+ * range(0, 10, 2) // [0, 2, 4, 6, 8]
15
+ * range(5, 0, -1) // [5, 4, 3, 2, 1]
16
+ * range(0, 0) // []
17
+ * ```
18
+ */
19
+ function range(start, end, step = 1) {
20
+ if (step === 0) throw new Error("step 不能为 0");
21
+ const result = [];
22
+ if (step > 0) for (let i = start; i < end; i += step) result.push(i);
23
+ else for (let i = start; i > end; i += step) result.push(i);
24
+ return result;
25
+ }
26
+ //#endregion
27
+ export { range as default };
@@ -0,0 +1,19 @@
1
+ //#region src/dom/removeClass/index.ts
2
+ /**
3
+ * 移除元素的 CSS class
4
+ *
5
+ * @param el - DOM 元素
6
+ * @param className - 要移除的 class(支持空格分隔多个)
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * import removeClass from '@tanwan/utils/removeClass'
11
+ * removeClass(el, 'active')
12
+ * removeClass(el, 'foo bar')
13
+ * ```
14
+ */
15
+ function removeClass(el, className) {
16
+ el.classList.remove(...className.split(/\s+/).filter(Boolean));
17
+ }
18
+ //#endregion
19
+ module.exports = removeClass;