@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
@@ -1 +0,0 @@
1
- {"version":3,"file":"isArray.js","names":[],"sources":["../../src/base/isArray/index.ts"],"sourcesContent":["/**\n * 检测变量是否为数组\n * @example\n * ```ts\n * import isArray from '@tw/utils/isArray'\n * isArray([1, 2, 3]) // true\n * isArray('hello') // false\n * ```\n */\nexport default function isArray<T>(v: unknown): v is T[] {\n return Array.isArray(v);\n}\n"],"mappings":";;;;;;;;;;AASA,SAAwB,QAAW,GAAsB;AACvD,QAAO,MAAM,QAAQ,EAAE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"isObject.d.cts","names":[],"sources":["../../src/base/isObject/index.ts"],"mappings":";;;;;;;;;;;iBAUwB,QAAA,CAAS,CAAA,YAAa,CAAA,IAAK,MAAA;AAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"isObject.d.ts","names":[],"sources":["../../src/base/isObject/index.ts"],"mappings":";;;;;;;;;;;iBAUwB,QAAA,CAAS,CAAA,YAAa,CAAA,IAAK,MAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"isObject.js","names":[],"sources":["../../src/base/isObject/index.ts"],"sourcesContent":["/**\n * 检测变量是否为普通对象(非null、非数组)\n * @example\n * ```ts\n * import isObject from '@tw/utils/isObject'\n * isObject({ a: 1 }) // true\n * isObject(null) // false\n * isObject([1, 2]) // false\n * ```\n */\nexport default function isObject(v: unknown): v is Record<string, unknown> {\n return typeof v === 'object' && v !== null && !Array.isArray(v);\n}\n"],"mappings":";;;;;;;;;;;AAUA,SAAwB,SAAS,GAA0C;AACzE,QAAO,OAAO,MAAM,YAAY,MAAM,QAAQ,CAAC,MAAM,QAAQ,EAAE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"isString.d.cts","names":[],"sources":["../../src/base/isString/index.ts"],"mappings":";;;;;;;;;;iBASwB,QAAA,CAAS,CAAA,YAAa,CAAA;AAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"isString.d.ts","names":[],"sources":["../../src/base/isString/index.ts"],"mappings":";;;;;;;;;;iBASwB,QAAA,CAAS,CAAA,YAAa,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"isString.js","names":[],"sources":["../../src/base/isString/index.ts"],"sourcesContent":["/**\n * 检测变量是否为字符串\n * @example\n * ```ts\n * import isString from '@tw/utils/isString'\n * isString('hello') // true\n * isString(123) // false\n * ```\n */\nexport default function isString(v: unknown): v is string {\n return typeof v === 'string';\n}\n"],"mappings":";;;;;;;;;;AASA,SAAwB,SAAS,GAAyB;AACxD,QAAO,OAAO,MAAM"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"formatDate.d.cts","names":[],"sources":["../../src/date/formatDate/index.ts"],"mappings":";;;;;;;;;;iBASwB,UAAA,CAAW,IAAA,oBAAwB,IAAA,EAAM,GAAA;AAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"formatDate.d.ts","names":[],"sources":["../../src/date/formatDate/index.ts"],"mappings":";;;;;;;;;;iBASwB,UAAA,CAAW,IAAA,oBAAwB,IAAA,EAAM,GAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"formatDate.js","names":[],"sources":["../../src/date/formatDate/index.ts"],"sourcesContent":["/**\n * 格式化日期\n * @example\n * ```ts\n * import formatDate from '@tw/utils/formatDate'\n * formatDate(new Date('2024-01-01'), 'yyyy-MM-dd') // '2024-01-01'\n * formatDate(1609459200000, 'yyyy/MM/dd HH:mm') // '2021/01/01 08:00'\n * ```\n */\nexport default function formatDate(date: number | string | Date, fmt = 'yyyy-MM-dd HH:mm:ss'): string {\n if (date == null) return 'Invalid Date';\n\n const iOSReg = /-/g;\n let d: Date;\n\n if (typeof date === 'string') {\n // iOS 日期字符串中包含 -,需要替换为 /\n d = new Date(iOSReg.test(date) ? date.replace(iOSReg, '/') : date);\n } else {\n d = new Date(date);\n }\n\n if (isNaN(d.getTime())) return 'Invalid Date';\n\n const o: Record<string, number> = {\n 'M+': d.getMonth() + 1,\n 'd+': d.getDate(),\n 'H+': d.getHours(),\n 'h+': d.getHours() % 12 || 12,\n 'm+': d.getMinutes(),\n 's+': d.getSeconds(),\n };\n\n // 处理年份\n const yearMatch = fmt.match(/(y+)/);\n if (yearMatch) {\n fmt = fmt.replace(yearMatch[0], String(d.getFullYear()).slice(4 - yearMatch[1].length));\n }\n\n for (const k in o) {\n const match = fmt.match(new RegExp(`(${k})`));\n if (match) {\n const str = String(o[k]);\n fmt = fmt.replace(match[0], match[1].length === 1 ? str : str.padStart(2, '0'));\n }\n }\n\n return fmt;\n}\n"],"mappings":";;;;;;;;;;AASA,SAAwB,WAAW,MAA8B,MAAM,uBAA+B;AACpG,KAAI,QAAQ,KAAM,QAAO;CAEzB,MAAM,SAAS;CACf,IAAI;AAEJ,KAAI,OAAO,SAAS,SAElB,KAAI,IAAI,KAAK,OAAO,KAAK,KAAK,GAAG,KAAK,QAAQ,QAAQ,IAAI,GAAG,KAAK;KAElE,KAAI,IAAI,KAAK,KAAK;AAGpB,KAAI,MAAM,EAAE,SAAS,CAAC,CAAE,QAAO;CAE/B,MAAM,IAA4B;EAChC,MAAM,EAAE,UAAU,GAAG;EACrB,MAAM,EAAE,SAAS;EACjB,MAAM,EAAE,UAAU;EAClB,MAAM,EAAE,UAAU,GAAG,MAAM;EAC3B,MAAM,EAAE,YAAY;EACpB,MAAM,EAAE,YAAY;EACrB;CAGD,MAAM,YAAY,IAAI,MAAM,OAAO;AACnC,KAAI,UACF,OAAM,IAAI,QAAQ,UAAU,IAAI,OAAO,EAAE,aAAa,CAAC,CAAC,MAAM,IAAI,UAAU,GAAG,OAAO,CAAC;AAGzF,MAAK,MAAM,KAAK,GAAG;EACjB,MAAM,QAAQ,IAAI,MAAM,IAAI,OAAO,IAAI,EAAE,GAAG,CAAC;AAC7C,MAAI,OAAO;GACT,MAAM,MAAM,OAAO,EAAE,GAAG;AACxB,SAAM,IAAI,QAAQ,MAAM,IAAI,MAAM,GAAG,WAAW,IAAI,MAAM,IAAI,SAAS,GAAG,IAAI,CAAC;;;AAInF,QAAO"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"getRelativeTime.d.cts","names":[],"sources":["../../src/date/getRelativeTime/index.ts"],"mappings":";;;;;;;;;;iBASwB,eAAA,CAAgB,IAAA,oBAAwB,IAAA,EAAM,GAAA,GAAK,IAAA;AAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"getRelativeTime.d.ts","names":[],"sources":["../../src/date/getRelativeTime/index.ts"],"mappings":";;;;;;;;;;iBASwB,eAAA,CAAgB,IAAA,oBAAwB,IAAA,EAAM,GAAA,GAAK,IAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"getRelativeTime.js","names":[],"sources":["../../src/date/getRelativeTime/index.ts"],"sourcesContent":["/**\n * 获取相对时间描述(如\"3分钟前\")\n * @example\n * ```ts\n * import getRelativeTime from '@tw/utils/getRelativeTime'\n * getRelativeTime(Date.now() - 60000) // '1分钟前'\n * getRelativeTime(Date.now() - 3600000) // '1小时前'\n * ```\n */\nexport default function getRelativeTime(date: number | string | Date, now: Date = new Date()): string {\n const d = new Date(date);\n const diff = now.getTime() - d.getTime();\n const seconds = Math.floor(diff / 1000);\n const minutes = Math.floor(seconds / 60);\n const hours = Math.floor(minutes / 60);\n const days = Math.floor(hours / 24);\n const months = Math.floor(days / 30);\n const years = Math.floor(days / 365);\n\n if (seconds < 0) return '刚刚';\n if (seconds < 60) return `${seconds}秒前`;\n if (minutes < 60) return `${minutes}分钟前`;\n if (hours < 24) return `${hours}小时前`;\n if (days < 30) return `${days}天前`;\n if (months < 12) return `${months}个月前`;\n return `${years}年前`;\n}\n"],"mappings":";;;;;;;;;;AASA,SAAwB,gBAAgB,MAA8B,sBAAY,IAAI,MAAM,EAAU;CACpG,MAAM,IAAI,IAAI,KAAK,KAAK;CACxB,MAAM,OAAO,IAAI,SAAS,GAAG,EAAE,SAAS;CACxC,MAAM,UAAU,KAAK,MAAM,OAAO,IAAK;CACvC,MAAM,UAAU,KAAK,MAAM,UAAU,GAAG;CACxC,MAAM,QAAQ,KAAK,MAAM,UAAU,GAAG;CACtC,MAAM,OAAO,KAAK,MAAM,QAAQ,GAAG;CACnC,MAAM,SAAS,KAAK,MAAM,OAAO,GAAG;CACpC,MAAM,QAAQ,KAAK,MAAM,OAAO,IAAI;AAEpC,KAAI,UAAU,EAAG,QAAO;AACxB,KAAI,UAAU,GAAI,QAAO,GAAG,QAAQ;AACpC,KAAI,UAAU,GAAI,QAAO,GAAG,QAAQ;AACpC,KAAI,QAAQ,GAAI,QAAO,GAAG,MAAM;AAChC,KAAI,OAAO,GAAI,QAAO,GAAG,KAAK;AAC9B,KAAI,SAAS,GAAI,QAAO,GAAG,OAAO;AAClC,QAAO,GAAG,MAAM"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"debounce.d.cts","names":[],"sources":["../../src/function/debounce/index.ts"],"mappings":";;;;;;;;;;;iBAUwB,QAAA,eAAuB,IAAA,gBAAA,CAC7C,IAAA,EAAM,CAAA,EACN,IAAA,UACA,SAAA,iBACK,IAAA,EAAM,UAAA,CAAW,CAAA;AAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"debounce.d.ts","names":[],"sources":["../../src/function/debounce/index.ts"],"mappings":";;;;;;;;;;;iBAUwB,QAAA,eAAuB,IAAA,gBAAA,CAC7C,IAAA,EAAM,CAAA,EACN,IAAA,UACA,SAAA,iBACK,IAAA,EAAM,UAAA,CAAW,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"debounce.js","names":[],"sources":["../../src/function/debounce/index.ts"],"sourcesContent":["/**\n * 防抖函数\n * @example\n * ```ts\n * import debounce from '@tw/utils/debounce'\n * const search = debounce((keyword: string) => {\n * console.log('搜索:', keyword)\n * }, 300)\n * ```\n */\nexport default function debounce<T extends (...args: any[]) => any>(\n func: T,\n wait: number,\n immediate = false,\n): (...args: Parameters<T>) => void {\n let timer: ReturnType<typeof setTimeout> | null = null;\n let canImmediate = immediate;\n\n return function (this: unknown, ...args: Parameters<T>) {\n if (canImmediate) {\n func.apply(this, args);\n canImmediate = false;\n }\n\n if (timer) {\n clearTimeout(timer);\n }\n\n timer = setTimeout(() => {\n if (!immediate) {\n func.apply(this, args);\n }\n timer = null;\n canImmediate = immediate;\n }, wait);\n };\n}\n"],"mappings":";;;;;;;;;;;AAUA,SAAwB,SACtB,MACA,MACA,YAAY,OACsB;CAClC,IAAI,QAA8C;CAClD,IAAI,eAAe;AAEnB,QAAO,SAAyB,GAAG,MAAqB;AACtD,MAAI,cAAc;AAChB,QAAK,MAAM,MAAM,KAAK;AACtB,kBAAe;;AAGjB,MAAI,MACF,cAAa,MAAM;AAGrB,UAAQ,iBAAiB;AACvB,OAAI,CAAC,UACH,MAAK,MAAM,MAAM,KAAK;AAExB,WAAQ;AACR,kBAAe;KACd,KAAK"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"throttle.d.cts","names":[],"sources":["../../src/function/throttle/index.ts"],"mappings":";;;;;;;;;;;iBAUwB,QAAA,eAAuB,IAAA,gBAAA,CAC7C,IAAA,EAAM,CAAA,EACN,IAAA,eACK,IAAA,EAAM,UAAA,CAAW,CAAA;AAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"throttle.d.ts","names":[],"sources":["../../src/function/throttle/index.ts"],"mappings":";;;;;;;;;;;iBAUwB,QAAA,eAAuB,IAAA,gBAAA,CAC7C,IAAA,EAAM,CAAA,EACN,IAAA,eACK,IAAA,EAAM,UAAA,CAAW,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"throttle.js","names":[],"sources":["../../src/function/throttle/index.ts"],"sourcesContent":["/**\n * 节流函数\n * @example\n * ```ts\n * import throttle from '@tw/utils/throttle'\n * const onScroll = throttle(() => {\n * console.log('滚动事件触发')\n * }, 200)\n * ```\n */\nexport default function throttle<T extends (...args: any[]) => any>(\n func: T,\n wait: number,\n): (...args: Parameters<T>) => void {\n let timer: ReturnType<typeof setTimeout> | null = null;\n let lastArgs: Parameters<T> | null = null;\n\n return function (this: unknown, ...args: Parameters<T>) {\n lastArgs = args;\n\n if (timer) return;\n\n timer = setTimeout(() => {\n if (lastArgs) {\n func.apply(this, lastArgs);\n lastArgs = null;\n }\n timer = null;\n }, wait);\n };\n}\n"],"mappings":";;;;;;;;;;;AAUA,SAAwB,SACtB,MACA,MACkC;CAClC,IAAI,QAA8C;CAClD,IAAI,WAAiC;AAErC,QAAO,SAAyB,GAAG,MAAqB;AACtD,aAAW;AAEX,MAAI,MAAO;AAEX,UAAQ,iBAAiB;AACvB,OAAI,UAAU;AACZ,SAAK,MAAM,MAAM,SAAS;AAC1B,eAAW;;AAEb,WAAQ;KACP,KAAK"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"clamp.d.cts","names":[],"sources":["../../src/number/clamp/index.ts"],"mappings":";;;;;;;;;;;iBAUwB,KAAA,CAAM,KAAA,UAAe,GAAA,UAAa,GAAA;AAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"clamp.d.ts","names":[],"sources":["../../src/number/clamp/index.ts"],"mappings":";;;;;;;;;;;iBAUwB,KAAA,CAAM,KAAA,UAAe,GAAA,UAAa,GAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"clamp.js","names":[],"sources":["../../src/number/clamp/index.ts"],"sourcesContent":["/**\n * 将数值限制在指定范围内\n * @example\n * ```ts\n * import clamp from '@tw/utils/clamp'\n * clamp(10, 0, 5) // 5\n * clamp(-1, 0, 5) // 0\n * clamp(3, 0, 5) // 3\n * ```\n */\nexport default function clamp(value: number, min: number, max: number): number {\n return Math.min(Math.max(value, min), max);\n}\n"],"mappings":";;;;;;;;;;;AAUA,SAAwB,MAAM,OAAe,KAAa,KAAqB;AAC7E,QAAO,KAAK,IAAI,KAAK,IAAI,OAAO,IAAI,EAAE,IAAI"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"formatThousands.d.cts","names":[],"sources":["../../src/number/formatThousands/index.ts"],"mappings":";;;;;;;;;;iBASwB,eAAA,CAAgB,GAAA;AAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"formatThousands.d.ts","names":[],"sources":["../../src/number/formatThousands/index.ts"],"mappings":";;;;;;;;;;iBASwB,eAAA,CAAgB,GAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"formatThousands.js","names":[],"sources":["../../src/number/formatThousands/index.ts"],"sourcesContent":["/**\n * 千分位格式化数字\n * @example\n * ```ts\n * import formatThousands from '@tw/utils/formatThousands'\n * formatThousands(1234567) // '1,234,567'\n * formatThousands(1234567.89) // '1,234,567.89'\n * ```\n */\nexport default function formatThousands(num: number | string): string {\n const parts = String(num).split('.');\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n return parts.join('.');\n}\n"],"mappings":";;;;;;;;;;AASA,SAAwB,gBAAgB,KAA8B;CACpE,MAAM,QAAQ,OAAO,IAAI,CAAC,MAAM,IAAI;AACpC,OAAM,KAAK,MAAM,GAAG,QAAQ,yBAAyB,IAAI;AACzD,QAAO,MAAM,KAAK,IAAI"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"randomInt.d.cts","names":[],"sources":["../../src/number/randomInt/index.ts"],"mappings":";;;;;;;;;;iBASwB,SAAA,CAAU,GAAA,UAAa,GAAA;AAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"randomInt.d.ts","names":[],"sources":["../../src/number/randomInt/index.ts"],"mappings":";;;;;;;;;;iBASwB,SAAA,CAAU,GAAA,UAAa,GAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"randomInt.js","names":[],"sources":["../../src/number/randomInt/index.ts"],"sourcesContent":["/**\n * 生成指定范围内的随机整数\n * @example\n * ```ts\n * import randomInt from '@tw/utils/randomInt'\n * randomInt(1, 10) // 3(介于 1-10 之间)\n * randomInt(0, 1) // 0 或 1\n * ```\n */\nexport default function randomInt(min: number, max: number): number {\n return Math.floor(Math.random() * (max - min + 1)) + min;\n}\n"],"mappings":";;;;;;;;;;AASA,SAAwB,UAAU,KAAa,KAAqB;AAClE,QAAO,KAAK,MAAM,KAAK,QAAQ,IAAI,MAAM,MAAM,GAAG,GAAG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"camelCase.d.cts","names":[],"sources":["../../src/string/camelCase/index.ts"],"mappings":";;;;iBAGwB,SAAA,CAAU,GAAA,UAAa,OAAA;AAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"camelCase.d.ts","names":[],"sources":["../../src/string/camelCase/index.ts"],"mappings":";;;;iBAGwB,SAAA,CAAU,GAAA,UAAa,OAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"camelCase.js","names":[],"sources":["../../src/string/camelCase/index.ts"],"sourcesContent":["/**\n * 将字符串转换为驼峰命名\n */\nexport default function camelCase(str: string, capital = false): string {\n const reg = /[-_.\\s]+(\\w|$)/g;\n let result = str.replace(reg, (_, c) => c.toUpperCase());\n\n if (capital && result.length > 0) {\n result = result[0].toUpperCase() + result.slice(1);\n }\n console.log(result);\n return result;\n}\n"],"mappings":";;;;AAGA,SAAwB,UAAU,KAAa,UAAU,OAAe;CAEtE,IAAI,SAAS,IAAI,QAAQ,oBAAM,GAAG,MAAM,EAAE,aAAa,CAAC;AAExD,KAAI,WAAW,OAAO,SAAS,EAC7B,UAAS,OAAO,GAAG,aAAa,GAAG,OAAO,MAAM,EAAE;AAEpD,SAAQ,IAAI,OAAO;AACnB,QAAO"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"capitalize.d.cts","names":[],"sources":["../../src/string/capitalize/index.ts"],"mappings":";;;;;;;;;;iBASwB,UAAA,CAAW,GAAA;AAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"capitalize.d.ts","names":[],"sources":["../../src/string/capitalize/index.ts"],"mappings":";;;;;;;;;;iBASwB,UAAA,CAAW,GAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"capitalize.js","names":[],"sources":["../../src/string/capitalize/index.ts"],"sourcesContent":["/**\n * 首字母大写\n * @example\n * ```ts\n * import capitalize from '@tw/utils/capitalize'\n * capitalize('hello') // 'Hello'\n * capitalize('hello world') // 'Hello world'\n * ```\n */\nexport default function capitalize(str: string): string {\n if (!str) return str;\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n"],"mappings":";;;;;;;;;;AASA,SAAwB,WAAW,KAAqB;AACtD,KAAI,CAAC,IAAK,QAAO;AACjB,QAAO,IAAI,OAAO,EAAE,CAAC,aAAa,GAAG,IAAI,MAAM,EAAE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"kebabCase.d.cts","names":[],"sources":["../../src/string/kebabCase/index.ts"],"mappings":";;;;iBAGwB,SAAA,CAAU,GAAA;AAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"kebabCase.d.ts","names":[],"sources":["../../src/string/kebabCase/index.ts"],"mappings":";;;;iBAGwB,SAAA,CAAU,GAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"kebabCase.js","names":[],"sources":["../../src/string/kebabCase/index.ts"],"sourcesContent":["/**\n * 将字符串转换为短横线命名(kebab-case)\n */\nexport default function kebabCase(str: string): string {\n return str\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/([A-Z])([A-Z][a-z])/g, '$1-$2')\n .replace(/[-_.\\s]+/g, '-')\n .toLowerCase();\n}\n"],"mappings":";;;;AAGA,SAAwB,UAAU,KAAqB;AACrD,QAAO,IACJ,QAAQ,mBAAmB,QAAQ,CACnC,QAAQ,wBAAwB,QAAQ,CACxC,QAAQ,aAAa,IAAI,CACzB,aAAa"}
File without changes