@odinlin/utils 0.0.2 → 1.0.1

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 (387) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +16 -20
  3. package/dist/browser/_virtual/rolldown_runtime.cjs +29 -0
  4. package/dist/browser/array/arrayCast.cjs +29 -0
  5. package/dist/browser/array/arrayCast.d.ts +27 -0
  6. package/dist/browser/array/arrayCast.d.ts.map +1 -0
  7. package/dist/browser/array/arrayCast.js +30 -0
  8. package/dist/browser/array/arrayCast.js.map +1 -0
  9. package/dist/browser/array/index.cjs +3 -0
  10. package/dist/browser/array/index.d.ts +2 -0
  11. package/dist/browser/array/index.js +3 -0
  12. package/dist/browser/browser.cjs +198 -0
  13. package/dist/browser/browser.d.ts +38 -0
  14. package/dist/browser/browser.js +31 -0
  15. package/dist/browser/constants/index.cjs +19 -0
  16. package/dist/browser/constants/index.d.ts +16 -0
  17. package/dist/browser/constants/index.d.ts.map +1 -0
  18. package/dist/browser/constants/index.js +17 -0
  19. package/dist/browser/constants/index.js.map +1 -0
  20. package/dist/browser/date/index.cjs +8 -0
  21. package/dist/browser/date/index.d.ts +3 -0
  22. package/dist/browser/date/index.js +4 -0
  23. package/dist/browser/date/prettyMs.cjs +9 -0
  24. package/dist/browser/date/prettyMs.d.ts +8 -0
  25. package/dist/browser/date/prettyMs.d.ts.map +1 -0
  26. package/dist/browser/date/prettyMs.js +8 -0
  27. package/dist/browser/date/prettyMs.js.map +1 -0
  28. package/dist/browser/date/timeAgo.cjs +14 -0
  29. package/dist/browser/date/timeAgo.d.ts +15 -0
  30. package/dist/browser/date/timeAgo.d.ts.map +1 -0
  31. package/dist/browser/date/timeAgo.js +11 -0
  32. package/dist/browser/date/timeAgo.js.map +1 -0
  33. package/dist/browser/file/browser.cjs +25 -0
  34. package/dist/browser/file/browser.d.ts +7 -0
  35. package/dist/browser/file/browser.js +7 -0
  36. package/dist/browser/file/fileBuffer.browser.cjs +115 -0
  37. package/dist/browser/file/fileBuffer.browser.d.ts +88 -0
  38. package/dist/browser/file/fileBuffer.browser.d.ts.map +1 -0
  39. package/dist/browser/file/fileBuffer.browser.js +115 -0
  40. package/dist/browser/file/fileBuffer.browser.js.map +1 -0
  41. package/dist/browser/file/fileBytes.cjs +9 -0
  42. package/dist/browser/file/fileBytes.d.ts +8 -0
  43. package/dist/browser/file/fileBytes.d.ts.map +1 -0
  44. package/dist/browser/file/fileBytes.js +8 -0
  45. package/dist/browser/file/fileBytes.js.map +1 -0
  46. package/dist/browser/file/fileType.browser.cjs +22 -0
  47. package/dist/browser/file/fileType.browser.d.ts +19 -0
  48. package/dist/browser/file/fileType.browser.d.ts.map +1 -0
  49. package/dist/browser/file/fileType.browser.js +15 -0
  50. package/dist/browser/file/fileType.browser.js.map +1 -0
  51. package/dist/browser/file/fileXml.browser.cjs +8 -0
  52. package/dist/browser/file/fileXml.browser.d.ts +12 -0
  53. package/dist/browser/file/fileXml.browser.d.ts.map +1 -0
  54. package/dist/browser/file/fileXml.browser.js +7 -0
  55. package/dist/browser/file/fileXml.browser.js.map +1 -0
  56. package/dist/browser/file/interface.d.ts +26 -0
  57. package/dist/browser/file/interface.d.ts.map +1 -0
  58. package/dist/browser/function/index.cjs +10 -0
  59. package/dist/browser/function/index.d.ts +8 -0
  60. package/dist/browser/function/index.d.ts.map +1 -0
  61. package/dist/browser/function/index.js +9 -0
  62. package/dist/browser/function/index.js.map +1 -0
  63. package/dist/browser/is/index.cjs +42 -0
  64. package/dist/browser/is/index.d.ts +7 -0
  65. package/dist/browser/is/index.js +8 -0
  66. package/dist/browser/is/isJSON.cjs +44 -0
  67. package/dist/browser/is/isJSON.d.ts +30 -0
  68. package/dist/browser/is/isJSON.d.ts.map +1 -0
  69. package/dist/browser/is/isJSON.js +41 -0
  70. package/dist/browser/is/isJSON.js.map +1 -0
  71. package/dist/browser/is/isPlatform.cjs +20 -0
  72. package/dist/browser/is/isPlatform.d.ts +16 -0
  73. package/dist/browser/is/isPlatform.d.ts.map +1 -0
  74. package/dist/browser/is/isPlatform.js +19 -0
  75. package/dist/browser/is/isPlatform.js.map +1 -0
  76. package/dist/browser/is/isPrimitive.cjs +91 -0
  77. package/dist/browser/is/isPrimitive.d.ts +79 -0
  78. package/dist/browser/is/isPrimitive.d.ts.map +1 -0
  79. package/dist/browser/is/isPrimitive.js +79 -0
  80. package/dist/browser/is/isPrimitive.js.map +1 -0
  81. package/dist/browser/is/isPrimitiveWithout.cjs +86 -0
  82. package/dist/browser/is/isPrimitiveWithout.d.ts +72 -0
  83. package/dist/browser/is/isPrimitiveWithout.d.ts.map +1 -0
  84. package/dist/browser/is/isPrimitiveWithout.js +74 -0
  85. package/dist/browser/is/isPrimitiveWithout.js.map +1 -0
  86. package/dist/browser/is/isTagOf.cjs +21 -0
  87. package/dist/browser/is/isTagOf.d.ts +12 -0
  88. package/dist/browser/is/isTagOf.d.ts.map +1 -0
  89. package/dist/browser/is/isTagOf.js +21 -0
  90. package/dist/browser/is/isTagOf.js.map +1 -0
  91. package/dist/browser/is/isTypeOf.cjs +29 -0
  92. package/dist/browser/is/isTypeOf.d.ts +16 -0
  93. package/dist/browser/is/isTypeOf.d.ts.map +1 -0
  94. package/dist/browser/is/isTypeOf.js +28 -0
  95. package/dist/browser/is/isTypeOf.js.map +1 -0
  96. package/dist/browser/object/index.cjs +3 -0
  97. package/dist/browser/object/index.d.ts +2 -0
  98. package/dist/browser/object/index.js +3 -0
  99. package/dist/browser/object/objectClone.cjs +22 -0
  100. package/dist/browser/object/objectClone.d.ts +8 -0
  101. package/dist/browser/object/objectClone.d.ts.map +1 -0
  102. package/dist/browser/object/objectClone.js +22 -0
  103. package/dist/browser/object/objectClone.js.map +1 -0
  104. package/dist/browser/promise/awaitTo.cjs +8 -0
  105. package/dist/browser/promise/awaitTo.d.ts +7 -0
  106. package/dist/browser/promise/awaitTo.d.ts.map +1 -0
  107. package/dist/browser/promise/awaitTo.js +8 -0
  108. package/dist/browser/promise/awaitTo.js.map +1 -0
  109. package/dist/browser/promise/delay.cjs +8 -0
  110. package/dist/browser/promise/delay.d.ts +5 -0
  111. package/dist/browser/promise/delay.d.ts.map +1 -0
  112. package/dist/browser/promise/delay.js +8 -0
  113. package/dist/browser/promise/delay.js.map +1 -0
  114. package/dist/browser/promise/index.cjs +8 -0
  115. package/dist/browser/promise/index.d.ts +4 -0
  116. package/dist/browser/promise/index.js +5 -0
  117. package/dist/browser/promise/pLimit.cjs +11 -0
  118. package/dist/browser/promise/pLimit.d.ts +10 -0
  119. package/dist/browser/promise/pLimit.d.ts.map +1 -0
  120. package/dist/browser/promise/pLimit.js +9 -0
  121. package/dist/browser/promise/pLimit.js.map +1 -0
  122. package/dist/browser/regexp/OTHERS.cjs +16 -0
  123. package/dist/browser/regexp/OTHERS.d.ts +14 -0
  124. package/dist/browser/regexp/OTHERS.d.ts.map +1 -0
  125. package/dist/browser/regexp/OTHERS.js +15 -0
  126. package/dist/browser/regexp/OTHERS.js.map +1 -0
  127. package/dist/browser/regexp/RULES.cjs +698 -0
  128. package/dist/browser/regexp/RULES.d.ts +434 -0
  129. package/dist/browser/regexp/RULES.d.ts.map +1 -0
  130. package/dist/browser/regexp/RULES.js +615 -0
  131. package/dist/browser/regexp/RULES.js.map +1 -0
  132. package/dist/browser/regexp/index.cjs +89 -0
  133. package/dist/browser/regexp/index.d.ts +13 -0
  134. package/dist/browser/regexp/index.d.ts.map +1 -0
  135. package/dist/browser/regexp/index.js +4 -0
  136. package/dist/browser/request/browser.cjs +8 -0
  137. package/dist/browser/request/browser.d.ts +4 -0
  138. package/dist/browser/request/browser.js +4 -0
  139. package/dist/browser/request/instance.cjs +135 -0
  140. package/dist/browser/request/instance.d.ts +45 -0
  141. package/dist/browser/request/instance.d.ts.map +1 -0
  142. package/dist/browser/request/instance.js +134 -0
  143. package/dist/browser/request/instance.js.map +1 -0
  144. package/dist/browser/request/interceptors.browser.cjs +66 -0
  145. package/dist/browser/request/interceptors.browser.d.ts +25 -0
  146. package/dist/browser/request/interceptors.browser.d.ts.map +1 -0
  147. package/dist/browser/request/interceptors.browser.js +63 -0
  148. package/dist/browser/request/interceptors.browser.js.map +1 -0
  149. package/dist/browser/request/interface.d.ts +54 -0
  150. package/dist/browser/request/interface.d.ts.map +1 -0
  151. package/dist/browser/string/className.cjs +13 -0
  152. package/dist/browser/string/className.d.ts +11 -0
  153. package/dist/browser/string/className.d.ts.map +1 -0
  154. package/dist/browser/string/className.js +10 -0
  155. package/dist/browser/string/className.js.map +1 -0
  156. package/dist/browser/string/index.cjs +7 -0
  157. package/dist/browser/string/index.d.ts +3 -0
  158. package/dist/browser/string/index.js +4 -0
  159. package/dist/browser/string/proto.cjs +37 -0
  160. package/dist/browser/string/proto.d.ts +19 -0
  161. package/dist/browser/string/proto.d.ts.map +1 -0
  162. package/dist/browser/string/proto.js +36 -0
  163. package/dist/browser/string/proto.js.map +1 -0
  164. package/dist/browser/tree/index.cjs +7 -0
  165. package/dist/browser/tree/index.d.ts +5 -0
  166. package/dist/browser/tree/index.js +5 -0
  167. package/dist/browser/tree/interface.d.ts +40 -0
  168. package/dist/browser/tree/interface.d.ts.map +1 -0
  169. package/dist/browser/tree/treeFilter.cjs +58 -0
  170. package/dist/browser/tree/treeFilter.d.ts +14 -0
  171. package/dist/browser/tree/treeFilter.d.ts.map +1 -0
  172. package/dist/browser/tree/treeFilter.js +59 -0
  173. package/dist/browser/tree/treeFilter.js.map +1 -0
  174. package/dist/browser/tree/treeFlatten.cjs +23 -0
  175. package/dist/browser/tree/treeFlatten.d.ts +15 -0
  176. package/dist/browser/tree/treeFlatten.d.ts.map +1 -0
  177. package/dist/browser/tree/treeFlatten.js +24 -0
  178. package/dist/browser/tree/treeFlatten.js.map +1 -0
  179. package/dist/browser/tree/treeGenerate.cjs +37 -0
  180. package/dist/browser/tree/treeGenerate.d.ts +16 -0
  181. package/dist/browser/tree/treeGenerate.d.ts.map +1 -0
  182. package/dist/browser/tree/treeGenerate.js +37 -0
  183. package/dist/browser/tree/treeGenerate.js.map +1 -0
  184. package/dist/noExternal/browser.esm.html +94 -0
  185. package/dist/noExternal/browser.esm.js +10740 -0
  186. package/dist/noExternal/browser.esm.min.js +16 -0
  187. package/dist/noExternal/browser.esm.min.js.map +1 -0
  188. package/dist/noExternal/browser.umd.html +28 -0
  189. package/dist/noExternal/browser.umd.js +10912 -0
  190. package/dist/noExternal/browser.umd.min.js +16 -0
  191. package/dist/noExternal/browser.umd.min.js.map +1 -0
  192. package/dist/noExternal/node.cjs.js +21905 -0
  193. package/dist/noExternal/node.cjs.min.js +37 -0
  194. package/dist/noExternal/node.cjs.min.js.map +1 -0
  195. package/dist/noExternal/node.esm.js +21733 -0
  196. package/dist/noExternal/node.esm.min.js +36 -0
  197. package/dist/noExternal/node.esm.min.js.map +1 -0
  198. package/dist/node/_virtual/rolldown_runtime.cjs +29 -0
  199. package/dist/node/array/arrayCast.cjs +29 -0
  200. package/dist/node/array/arrayCast.d.ts +27 -0
  201. package/dist/node/array/arrayCast.d.ts.map +1 -0
  202. package/dist/node/array/arrayCast.js +30 -0
  203. package/dist/node/array/arrayCast.js.map +1 -0
  204. package/dist/node/array/index.cjs +3 -0
  205. package/dist/node/array/index.d.ts +2 -0
  206. package/dist/node/array/index.js +3 -0
  207. package/dist/node/constants/index.cjs +19 -0
  208. package/dist/node/constants/index.d.ts +16 -0
  209. package/dist/node/constants/index.d.ts.map +1 -0
  210. package/dist/node/constants/index.js +17 -0
  211. package/dist/node/constants/index.js.map +1 -0
  212. package/dist/node/date/index.cjs +8 -0
  213. package/dist/node/date/index.d.ts +3 -0
  214. package/dist/node/date/index.js +4 -0
  215. package/dist/node/date/prettyMs.cjs +9 -0
  216. package/dist/node/date/prettyMs.d.ts +8 -0
  217. package/dist/node/date/prettyMs.d.ts.map +1 -0
  218. package/dist/node/date/prettyMs.js +8 -0
  219. package/dist/node/date/prettyMs.js.map +1 -0
  220. package/dist/node/date/timeAgo.cjs +14 -0
  221. package/dist/node/date/timeAgo.d.ts +15 -0
  222. package/dist/node/date/timeAgo.d.ts.map +1 -0
  223. package/dist/node/date/timeAgo.js +11 -0
  224. package/dist/node/date/timeAgo.js.map +1 -0
  225. package/dist/node/file/fileBuffer.node.cjs +115 -0
  226. package/dist/node/file/fileBuffer.node.d.ts +88 -0
  227. package/dist/node/file/fileBuffer.node.d.ts.map +1 -0
  228. package/dist/node/file/fileBuffer.node.js +115 -0
  229. package/dist/node/file/fileBuffer.node.js.map +1 -0
  230. package/dist/node/file/fileBytes.cjs +9 -0
  231. package/dist/node/file/fileBytes.d.ts +8 -0
  232. package/dist/node/file/fileBytes.d.ts.map +1 -0
  233. package/dist/node/file/fileBytes.js +8 -0
  234. package/dist/node/file/fileBytes.js.map +1 -0
  235. package/dist/node/file/fileType.node.cjs +22 -0
  236. package/dist/node/file/fileType.node.d.ts +19 -0
  237. package/dist/node/file/fileType.node.d.ts.map +1 -0
  238. package/dist/node/file/fileType.node.js +15 -0
  239. package/dist/node/file/fileType.node.js.map +1 -0
  240. package/dist/node/file/fileXml.node.cjs +10 -0
  241. package/dist/node/file/fileXml.node.d.ts +8 -0
  242. package/dist/node/file/fileXml.node.d.ts.map +1 -0
  243. package/dist/node/file/fileXml.node.js +9 -0
  244. package/dist/node/file/fileXml.node.js.map +1 -0
  245. package/dist/node/file/interface.d.ts +26 -0
  246. package/dist/node/file/interface.d.ts.map +1 -0
  247. package/dist/node/file/node.cjs +25 -0
  248. package/dist/node/file/node.d.ts +7 -0
  249. package/dist/node/file/node.js +7 -0
  250. package/dist/node/function/index.cjs +10 -0
  251. package/dist/node/function/index.d.ts +8 -0
  252. package/dist/node/function/index.d.ts.map +1 -0
  253. package/dist/node/function/index.js +9 -0
  254. package/dist/node/function/index.js.map +1 -0
  255. package/dist/node/is/index.cjs +42 -0
  256. package/dist/node/is/index.d.ts +7 -0
  257. package/dist/node/is/index.js +8 -0
  258. package/dist/node/is/isJSON.cjs +44 -0
  259. package/dist/node/is/isJSON.d.ts +30 -0
  260. package/dist/node/is/isJSON.d.ts.map +1 -0
  261. package/dist/node/is/isJSON.js +41 -0
  262. package/dist/node/is/isJSON.js.map +1 -0
  263. package/dist/node/is/isPlatform.cjs +20 -0
  264. package/dist/node/is/isPlatform.d.ts +16 -0
  265. package/dist/node/is/isPlatform.d.ts.map +1 -0
  266. package/dist/node/is/isPlatform.js +19 -0
  267. package/dist/node/is/isPlatform.js.map +1 -0
  268. package/dist/node/is/isPrimitive.cjs +91 -0
  269. package/dist/node/is/isPrimitive.d.ts +79 -0
  270. package/dist/node/is/isPrimitive.d.ts.map +1 -0
  271. package/dist/node/is/isPrimitive.js +79 -0
  272. package/dist/node/is/isPrimitive.js.map +1 -0
  273. package/dist/node/is/isPrimitiveWithout.cjs +86 -0
  274. package/dist/node/is/isPrimitiveWithout.d.ts +72 -0
  275. package/dist/node/is/isPrimitiveWithout.d.ts.map +1 -0
  276. package/dist/node/is/isPrimitiveWithout.js +74 -0
  277. package/dist/node/is/isPrimitiveWithout.js.map +1 -0
  278. package/dist/node/is/isTagOf.cjs +21 -0
  279. package/dist/node/is/isTagOf.d.ts +12 -0
  280. package/dist/node/is/isTagOf.d.ts.map +1 -0
  281. package/dist/node/is/isTagOf.js +21 -0
  282. package/dist/node/is/isTagOf.js.map +1 -0
  283. package/dist/node/is/isTypeOf.cjs +29 -0
  284. package/dist/node/is/isTypeOf.d.ts +16 -0
  285. package/dist/node/is/isTypeOf.d.ts.map +1 -0
  286. package/dist/node/is/isTypeOf.js +28 -0
  287. package/dist/node/is/isTypeOf.js.map +1 -0
  288. package/dist/node/node.cjs +198 -0
  289. package/dist/node/node.d.ts +38 -0
  290. package/dist/node/node.js +31 -0
  291. package/dist/node/object/index.cjs +3 -0
  292. package/dist/node/object/index.d.ts +2 -0
  293. package/dist/node/object/index.js +3 -0
  294. package/dist/node/object/objectClone.cjs +22 -0
  295. package/dist/node/object/objectClone.d.ts +8 -0
  296. package/dist/node/object/objectClone.d.ts.map +1 -0
  297. package/dist/node/object/objectClone.js +22 -0
  298. package/dist/node/object/objectClone.js.map +1 -0
  299. package/dist/node/promise/awaitTo.cjs +8 -0
  300. package/dist/node/promise/awaitTo.d.ts +7 -0
  301. package/dist/node/promise/awaitTo.d.ts.map +1 -0
  302. package/dist/node/promise/awaitTo.js +8 -0
  303. package/dist/node/promise/awaitTo.js.map +1 -0
  304. package/dist/node/promise/delay.cjs +8 -0
  305. package/dist/node/promise/delay.d.ts +5 -0
  306. package/dist/node/promise/delay.d.ts.map +1 -0
  307. package/dist/node/promise/delay.js +8 -0
  308. package/dist/node/promise/delay.js.map +1 -0
  309. package/dist/node/promise/index.cjs +8 -0
  310. package/dist/node/promise/index.d.ts +4 -0
  311. package/dist/node/promise/index.js +5 -0
  312. package/dist/node/promise/pLimit.cjs +11 -0
  313. package/dist/node/promise/pLimit.d.ts +10 -0
  314. package/dist/node/promise/pLimit.d.ts.map +1 -0
  315. package/dist/node/promise/pLimit.js +9 -0
  316. package/dist/node/promise/pLimit.js.map +1 -0
  317. package/dist/node/regexp/OTHERS.cjs +16 -0
  318. package/dist/node/regexp/OTHERS.d.ts +14 -0
  319. package/dist/node/regexp/OTHERS.d.ts.map +1 -0
  320. package/dist/node/regexp/OTHERS.js +15 -0
  321. package/dist/node/regexp/OTHERS.js.map +1 -0
  322. package/dist/node/regexp/RULES.cjs +698 -0
  323. package/dist/node/regexp/RULES.d.ts +434 -0
  324. package/dist/node/regexp/RULES.d.ts.map +1 -0
  325. package/dist/node/regexp/RULES.js +615 -0
  326. package/dist/node/regexp/RULES.js.map +1 -0
  327. package/dist/node/regexp/index.cjs +89 -0
  328. package/dist/node/regexp/index.d.ts +13 -0
  329. package/dist/node/regexp/index.d.ts.map +1 -0
  330. package/dist/node/regexp/index.js +4 -0
  331. package/dist/node/request/instance.cjs +135 -0
  332. package/dist/node/request/instance.d.ts +45 -0
  333. package/dist/node/request/instance.d.ts.map +1 -0
  334. package/dist/node/request/instance.js +134 -0
  335. package/dist/node/request/instance.js.map +1 -0
  336. package/dist/node/request/interceptors.node.cjs +66 -0
  337. package/dist/node/request/interceptors.node.d.ts +25 -0
  338. package/dist/node/request/interceptors.node.d.ts.map +1 -0
  339. package/dist/node/request/interceptors.node.js +63 -0
  340. package/dist/node/request/interceptors.node.js.map +1 -0
  341. package/dist/node/request/interface.d.ts +54 -0
  342. package/dist/node/request/interface.d.ts.map +1 -0
  343. package/dist/node/request/node.cjs +8 -0
  344. package/dist/node/request/node.d.ts +4 -0
  345. package/dist/node/request/node.js +4 -0
  346. package/dist/node/string/className.cjs +13 -0
  347. package/dist/node/string/className.d.ts +11 -0
  348. package/dist/node/string/className.d.ts.map +1 -0
  349. package/dist/node/string/className.js +10 -0
  350. package/dist/node/string/className.js.map +1 -0
  351. package/dist/node/string/index.cjs +7 -0
  352. package/dist/node/string/index.d.ts +3 -0
  353. package/dist/node/string/index.js +4 -0
  354. package/dist/node/string/proto.cjs +37 -0
  355. package/dist/node/string/proto.d.ts +19 -0
  356. package/dist/node/string/proto.d.ts.map +1 -0
  357. package/dist/node/string/proto.js +36 -0
  358. package/dist/node/string/proto.js.map +1 -0
  359. package/dist/node/tree/index.cjs +7 -0
  360. package/dist/node/tree/index.d.ts +5 -0
  361. package/dist/node/tree/index.js +5 -0
  362. package/dist/node/tree/interface.d.ts +40 -0
  363. package/dist/node/tree/interface.d.ts.map +1 -0
  364. package/dist/node/tree/treeFilter.cjs +58 -0
  365. package/dist/node/tree/treeFilter.d.ts +14 -0
  366. package/dist/node/tree/treeFilter.d.ts.map +1 -0
  367. package/dist/node/tree/treeFilter.js +59 -0
  368. package/dist/node/tree/treeFilter.js.map +1 -0
  369. package/dist/node/tree/treeFlatten.cjs +23 -0
  370. package/dist/node/tree/treeFlatten.d.ts +15 -0
  371. package/dist/node/tree/treeFlatten.d.ts.map +1 -0
  372. package/dist/node/tree/treeFlatten.js +24 -0
  373. package/dist/node/tree/treeFlatten.js.map +1 -0
  374. package/dist/node/tree/treeGenerate.cjs +37 -0
  375. package/dist/node/tree/treeGenerate.d.ts +16 -0
  376. package/dist/node/tree/treeGenerate.d.ts.map +1 -0
  377. package/dist/node/tree/treeGenerate.js +37 -0
  378. package/dist/node/tree/treeGenerate.js.map +1 -0
  379. package/dist/version.d.ts +5 -0
  380. package/dist/version.d.ts.map +1 -0
  381. package/dist/version.js +10 -0
  382. package/dist/version.js.map +1 -0
  383. package/package.json +98 -57
  384. package/LICENSE +0 -21
  385. package/dist/index.cjs +0 -403
  386. package/dist/index.d.ts +0 -496
  387. package/dist/index.mjs +0 -307
@@ -0,0 +1,63 @@
1
+ import { isNull, isString } from "../is/isPrimitive.js";
2
+ import { isJSONString } from "../is/isJSON.js";
3
+ import { FileBuffer } from "../file/fileBuffer.node.js";
4
+ import { Request } from "./instance.js";
5
+ import { AxiosError } from "axios";
6
+
7
+ //#region src/request/interceptors.node.ts
8
+ /**
9
+ * 预设拦截器 - 响应耗时
10
+ */
11
+ const presetInterceptorWithResponseLog = { response: {
12
+ onFulfilled(res) {
13
+ const { config } = res;
14
+ const requestId = config.headers["X-Request-Id"];
15
+ Request.getOptionValue(config, "enableTimeConsuming") && console.timeEnd(`[presetInterceptorWithLog] ${requestId}`);
16
+ return res;
17
+ },
18
+ onRejected(err) {
19
+ const requestId = err.config.headers["X-Request-Id"];
20
+ Request.getOptionValue(err.config, "enableTimeConsuming") && console.timeEnd(`[presetInterceptorWithLog] ${requestId}`);
21
+ throw err;
22
+ }
23
+ } };
24
+ /**
25
+ * 预设拦截器 - 响应尝试 JSON 解析,若解析成功,则将解析结果赋值给 res.dataJSON,不会影响后续拦截器的参数
26
+ * @description 若 responseType 为 json 或 forcedJSONParsing 为 true ,则尝试解析响应体为 JSON 字符串
27
+ * @description 其中前提是通过 `transformResponse: []` 覆盖内置的默认 transformResponse 函数
28
+ */
29
+ const presetInterceptorWithResponseJSON = { response: { async onFulfilled(res) {
30
+ const { config, request, data } = res;
31
+ const allowJSONRequested = config.responseType === "json" || (config.transitional?.forcedJSONParsing ?? true);
32
+ let tempData = null;
33
+ if (isString(data) && allowJSONRequested) tempData = data;
34
+ else if (FileBuffer.isBlob(data) && data.type === "application/json" && allowJSONRequested) tempData = (await FileBuffer.fromBlob(data)).toString();
35
+ if (isNull(tempData)) return res;
36
+ const [err, json] = isJSONString(tempData, config.parseReviver);
37
+ if (err) {
38
+ if (!(config.transitional?.silentJSONParsing ?? false)) throw err.name === "SyntaxError" ? AxiosError.from(err, AxiosError.ERR_BAD_RESPONSE, config, request, res) : err;
39
+ return res;
40
+ }
41
+ res.dataJSON = json;
42
+ return res;
43
+ } } };
44
+ /**
45
+ * 预设拦截器 - 请求耗时
46
+ */
47
+ const presetInterceptorWithRequestLog = { request: { onFulfilled(config) {
48
+ const requestId = Date.now().toString();
49
+ config.headers["X-Request-Id"] = requestId;
50
+ Request.getOptionValue(config, "enableTimeConsuming") && console.time(`[presetInterceptorWithLog] ${requestId}`);
51
+ return config;
52
+ } } };
53
+ /**
54
+ * 预设拦截器 - 请求认证
55
+ */
56
+ const presetInterceptorWithRequestAuth = { request: { onFulfilled(config) {
57
+ config.headers.setAuthorization(`Bearer ${sessionStorage.getItem("Authorization") || ""}`);
58
+ return config;
59
+ } } };
60
+
61
+ //#endregion
62
+ export { presetInterceptorWithRequestAuth, presetInterceptorWithRequestLog, presetInterceptorWithResponseJSON, presetInterceptorWithResponseLog };
63
+ //# sourceMappingURL=interceptors.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interceptors.node.js","names":["presetInterceptorWithResponseLog: AxiosInterceptorParameters","presetInterceptorWithResponseJSON: AxiosInterceptorParameters","tempData: string | null","presetInterceptorWithRequestLog: AxiosInterceptorParameters","presetInterceptorWithRequestAuth: AxiosInterceptorParameters"],"sources":["../../../src/request/interceptors.node.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport type { AxiosInterceptorParameters } from './interface'\nimport { AxiosError } from 'axios'\nimport { FileBuffer } from '../file/node'\nimport { isJSONString, isNull, isString } from '../is'\nimport { Request } from './instance'\n\n/**\n * 预设拦截器 - 响应耗时\n */\nexport const presetInterceptorWithResponseLog: AxiosInterceptorParameters = {\n response: {\n onFulfilled(res) {\n const { config } = res\n const requestId = config.headers['X-Request-Id']\n const enableTimeConsuming = Request.getOptionValue<boolean | undefined>(config, 'enableTimeConsuming')\n enableTimeConsuming && console.timeEnd(`[presetInterceptorWithLog] ${requestId}`)\n return res\n },\n onRejected(err) {\n const requestId = err.config.headers['X-Request-Id']\n const enableTimeConsuming = Request.getOptionValue<boolean | undefined>(err.config, 'enableTimeConsuming')\n enableTimeConsuming && console.timeEnd(`[presetInterceptorWithLog] ${requestId}`)\n throw err\n },\n },\n}\n\n/**\n * 预设拦截器 - 响应尝试 JSON 解析,若解析成功,则将解析结果赋值给 res.dataJSON,不会影响后续拦截器的参数\n * @description 若 responseType 为 json 或 forcedJSONParsing 为 true ,则尝试解析响应体为 JSON 字符串\n * @description 其中前提是通过 `transformResponse: []` 覆盖内置的默认 transformResponse 函数\n */\nexport const presetInterceptorWithResponseJSON: AxiosInterceptorParameters = {\n response: {\n async onFulfilled(res) {\n const { config, request, data } = res\n const responseType = config.responseType\n const JSONRequested = responseType === 'json'\n const allowJSONRequested = JSONRequested || (config.transitional?.forcedJSONParsing ?? true)\n\n let tempData: string | null = null\n // 类型为字符串,且 allowJSONRequested 为 true ,则尝试解析\n if (isString(data) && allowJSONRequested) {\n tempData = data\n }\n // 类型为 Blob ,且 mime type 为 application/json ,且 allowJSONRequested 为 true ,则尝试解析\n else if (FileBuffer.isBlob(data) && data.type === 'application/json' && allowJSONRequested) {\n const buf = await FileBuffer.fromBlob(data)\n tempData = buf.toString()\n }\n\n // 不满足上述条件,直接返回\n if (isNull(tempData)) return res\n // 通过 parseReviver 尝试解析 tempData 字符串\n const [err, json] = isJSONString<any>(tempData, config.parseReviver)\n // 优先处理错误,若 silentJSONParsing 为 false ,则抛出错误;否则返回原始值\n if (err) {\n const silentJSONParsing = config.transitional?.silentJSONParsing ?? false\n if (!silentJSONParsing) {\n throw err.name === 'SyntaxError' ? AxiosError.from(err, AxiosError.ERR_BAD_RESPONSE, config, request, res) : err\n }\n return res\n }\n // 若解析成功,则返回解析结果\n (res as any).dataJSON = json\n return res\n },\n },\n}\n\n/**\n * 预设拦截器 - 请求耗时\n */\nexport const presetInterceptorWithRequestLog: AxiosInterceptorParameters = {\n request: {\n onFulfilled(config) {\n const requestId = Date.now().toString()\n config.headers['X-Request-Id'] = requestId\n const enableTimeConsuming = Request.getOptionValue<boolean | undefined>(config, 'enableTimeConsuming')\n enableTimeConsuming && console.time(`[presetInterceptorWithLog] ${requestId}`)\n return config\n },\n },\n}\n\n/**\n * 预设拦截器 - 请求认证\n */\nexport const presetInterceptorWithRequestAuth: AxiosInterceptorParameters = {\n request: {\n onFulfilled(config) {\n config.headers.setAuthorization(`Bearer ${sessionStorage.getItem('Authorization') || ''}`)\n return config\n },\n },\n}\n"],"mappings":";;;;;;;;;;AAUA,MAAaA,mCAA+D,EAC1E,UAAU;CACR,YAAY,KAAK;EACf,MAAM,EAAE,WAAW;EACnB,MAAM,YAAY,OAAO,QAAQ;AAEjC,EAD4B,QAAQ,eAAoC,QAAQ,sBAAsB,IAC/E,QAAQ,QAAQ,8BAA8B,YAAY;AACjF,SAAO;;CAET,WAAW,KAAK;EACd,MAAM,YAAY,IAAI,OAAO,QAAQ;AAErC,EAD4B,QAAQ,eAAoC,IAAI,QAAQ,sBAAsB,IACnF,QAAQ,QAAQ,8BAA8B,YAAY;AACjF,QAAM;;CAET,EACF;;;;;;AAOD,MAAaC,oCAAgE,EAC3E,UAAU,EACR,MAAM,YAAY,KAAK;CACrB,MAAM,EAAE,QAAQ,SAAS,SAAS;CAGlC,MAAM,qBAFe,OAAO,iBACW,WACM,OAAO,cAAc,qBAAqB;CAEvF,IAAIC,WAA0B;AAE9B,KAAI,SAAS,KAAK,IAAI,mBACpB,YAAW;UAGJ,WAAW,OAAO,KAAK,IAAI,KAAK,SAAS,sBAAsB,mBAEtE,aADY,MAAM,WAAW,SAAS,KAAK,EAC5B,UAAU;AAI3B,KAAI,OAAO,SAAS,CAAE,QAAO;CAE7B,MAAM,CAAC,KAAK,QAAQ,aAAkB,UAAU,OAAO,aAAa;AAEpE,KAAI,KAAK;AAEP,MAAI,EADsB,OAAO,cAAc,qBAAqB,OAElE,OAAM,IAAI,SAAS,gBAAgB,WAAW,KAAK,KAAK,WAAW,kBAAkB,QAAQ,SAAS,IAAI,GAAG;AAE/G,SAAO;;AAGT,CAAC,IAAY,WAAW;AACxB,QAAO;GAEV,EACF;;;;AAKD,MAAaC,kCAA8D,EACzE,SAAS,EACP,YAAY,QAAQ;CAClB,MAAM,YAAY,KAAK,KAAK,CAAC,UAAU;AACvC,QAAO,QAAQ,kBAAkB;AAEjC,CAD4B,QAAQ,eAAoC,QAAQ,sBAAsB,IAC/E,QAAQ,KAAK,8BAA8B,YAAY;AAC9E,QAAO;GAEV,EACF;;;;AAKD,MAAaC,mCAA+D,EAC1E,SAAS,EACP,YAAY,QAAQ;AAClB,QAAO,QAAQ,iBAAiB,UAAU,eAAe,QAAQ,gBAAgB,IAAI,KAAK;AAC1F,QAAO;GAEV,EACF"}
@@ -0,0 +1,54 @@
1
+ import { Axios, AxiosRequestConfig, CreateAxiosDefaults } from "axios";
2
+
3
+ //#region src/request/interface.d.ts
4
+
5
+ /**
6
+ * 提取 axios 拦截器参数类型
7
+ */
8
+ interface AxiosInterceptorParameters {
9
+ /** 请求拦截器 */
10
+ request?: {
11
+ onFulfilled?: Parameters<Axios['interceptors']['request']['use']>[0];
12
+ onRejected?: Parameters<Axios['interceptors']['request']['use']>[1];
13
+ options?: Parameters<Axios['interceptors']['request']['use']>[2];
14
+ };
15
+ /** 响应拦截器 */
16
+ response?: {
17
+ onFulfilled?: Parameters<Axios['interceptors']['response']['use']>[0];
18
+ onRejected?: Parameters<Axios['interceptors']['response']['use']>[1];
19
+ };
20
+ }
21
+ /**
22
+ * 包装 axios.create 参数,额外传递自定义参数
23
+ * @function 1. 支持将额外的自定义 options 合并到 fetchOptions 并往下传递
24
+ * @function 2. 待注册的自定义拦截器
25
+ */
26
+ interface AxiosCreateDefaultsWrapper<CustomOptions extends Record<string, any> = Record<string, any>, ReqData = any> extends CreateAxiosDefaults<ReqData> {
27
+ /** custom 可在拦截器内传递的配置选项 */
28
+ options?: CustomOptions;
29
+ /** custom 待注册的自定义拦截器 - 拦截器 request 先注册后执行,拦截器 response 先注册先执行 */
30
+ interceptors?: Array<AxiosInterceptorParameters>;
31
+ }
32
+ /**
33
+ * 包装 axios 请求体
34
+ * @function 1. 支持 params 泛型
35
+ * @function 2. 支持 argsRegexp、args 实现动态路径
36
+ * @function 3. 支持将额外的自定义 options 合并到 fetchOptions 并往下传递
37
+ */
38
+ interface AxiosRequestConfigWrapper<CustomOptions extends Record<string, any> = Record<string, any>, ReqData = any, ReqParams = any, ReqArgs extends Record<string, any> = Record<string, any>> extends AxiosRequestConfig<ReqData> {
39
+ /** override 指定 query 参数的类型定义 */
40
+ params?: ReqParams;
41
+ /** custom 动态路径匹配规则 */
42
+ argsRegexp?: RegExp;
43
+ /** custom 动态路径匹配对象 */
44
+ args?: ReqArgs;
45
+ /** custom 可在拦截器内传递的配置选项 */
46
+ options?: CustomOptions;
47
+ }
48
+ /**
49
+ * 包装 axios 响应体,参考 await-to-js 包装 promise 实现错误优先,并实现类型收窄
50
+ */
51
+ type AxiosResponseWrapper<E extends Error, R = any> = [null, R] | [E, undefined];
52
+ //#endregion
53
+ export { AxiosCreateDefaultsWrapper, AxiosInterceptorParameters, AxiosRequestConfigWrapper, AxiosResponseWrapper };
54
+ //# sourceMappingURL=interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.d.ts","names":[],"sources":["../../../src/request/interface.ts"],"sourcesContent":[],"mappings":";;;;;;AAKA;AAG6B,UAHZ,0BAAA,CAGY;EAAX;EACU,OAAA,CAAA,EAAA;IAAX,WAAA,CAAA,EADC,UACD,CADY,KACZ,CAAA,cAAA,CAAA,CAAA,SAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IACQ,UAAA,CAAA,EADR,UACQ,CADG,KACH,CAAA,cAAA,CAAA,CAAA,SAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IAAX,OAAA,CAAA,EAAA,UAAA,CAAW,KAAX,CAAA,cAAA,CAAA,CAAA,SAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA;EAIe,CAAA;EAAX;EACU,QAAA,CAAA,EAAA;IAAX,WAAA,CAAA,EADC,UACD,CADY,KACZ,CAAA,cAAA,CAAA,CAAA,UAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IAAU,UAAA,CAAA,EAAV,UAAU,CAAC,KAAD,CAAA,cAAA,CAAA,CAAA,UAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA;EASV,CAAA;;;;;;;AAAmH,UAAnH,0BAAmH,CAAA,sBAAlE,MAAkE,CAAA,MAAA,EAAA,GAAA,CAAA,GAA5C,MAA4C,CAAA,MAAA,EAAA,GAAA,CAAA,EAAA,UAAA,GAAA,CAAA,SAAA,mBAAA,CAAoB,OAApB,CAAA,CAAA;EAAmB;EAatI,OAAA,CAAA,EAXL,aAWK;EAAgD;EAAsB,YAAA,CAAA,EATtE,KASsE,CAThE,0BASgE,CAAA;;;;;;;;AAC7E,UADO,yBACP,CAAA,sBADuD,MACvD,CAAA,MAAA,EAAA,GAAA,CAAA,GAD6E,MAC7E,CAAA,MAAA,EAAA,GAAA,CAAA,EAAA,UAAA,GAAA,EAAA,YAAA,GAAA,EAAA,gBADkJ,MAClJ,CAAA,MAAA,EAAA,GAAA,CAAA,GADwK,MACxK,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,SAAA,kBAAA,CAAmB,OAAnB,CAAA,CAAA;EAAkB;EAchB,MAAA,CAAA,EAZD,SAYC;EAA+B;EAAyB,UAAA,CAAA,EAVrD,MAUqD;EAAM;EAAC,IAAA,CAAA,EARlE,OAQkE;;YAN/D;;;;;KAMA,+BAA+B,yBAAyB,MAAM"}
@@ -0,0 +1,8 @@
1
+ const require_instance = require('./instance.cjs');
2
+ const require_interceptors_node = require('./interceptors.node.cjs');
3
+
4
+ exports.Request = require_instance.Request;
5
+ exports.presetInterceptorWithRequestAuth = require_interceptors_node.presetInterceptorWithRequestAuth;
6
+ exports.presetInterceptorWithRequestLog = require_interceptors_node.presetInterceptorWithRequestLog;
7
+ exports.presetInterceptorWithResponseJSON = require_interceptors_node.presetInterceptorWithResponseJSON;
8
+ exports.presetInterceptorWithResponseLog = require_interceptors_node.presetInterceptorWithResponseLog;
@@ -0,0 +1,4 @@
1
+ import { AxiosCreateDefaultsWrapper, AxiosInterceptorParameters, AxiosRequestConfigWrapper, AxiosResponseWrapper } from "./interface.js";
2
+ import { presetInterceptorWithRequestAuth, presetInterceptorWithRequestLog, presetInterceptorWithResponseJSON, presetInterceptorWithResponseLog } from "./interceptors.node.js";
3
+ import { Request } from "./instance.js";
4
+ export { AxiosCreateDefaultsWrapper, AxiosInterceptorParameters, AxiosRequestConfigWrapper, AxiosResponseWrapper, Request, presetInterceptorWithRequestAuth, presetInterceptorWithRequestLog, presetInterceptorWithResponseJSON, presetInterceptorWithResponseLog };
@@ -0,0 +1,4 @@
1
+ import { Request } from "./instance.js";
2
+ import { presetInterceptorWithRequestAuth, presetInterceptorWithRequestLog, presetInterceptorWithResponseJSON, presetInterceptorWithResponseLog } from "./interceptors.node.js";
3
+
4
+ export { Request, presetInterceptorWithRequestAuth, presetInterceptorWithRequestLog, presetInterceptorWithResponseJSON, presetInterceptorWithResponseLog };
@@ -0,0 +1,13 @@
1
+ const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
2
+ let classnames = require("classnames");
3
+ classnames = require_rolldown_runtime.__toESM(classnames);
4
+ let clsx = require("clsx");
5
+ clsx = require_rolldown_runtime.__toESM(clsx);
6
+
7
+ //#region src/string/className.ts
8
+ const stringClsn = (...args) => (0, classnames.default)(...args);
9
+ const stringClsx = clsx.default;
10
+
11
+ //#endregion
12
+ exports.stringClsn = stringClsn;
13
+ exports.stringClsx = stringClsx;
@@ -0,0 +1,11 @@
1
+ import { Argument } from "classnames";
2
+ import clsx, { ClassValue } from "clsx";
3
+
4
+ //#region src/string/className.d.ts
5
+ type StringClsnValue = Argument;
6
+ type StringClsxValue = ClassValue;
7
+ declare const stringClsn: (...args: Argument[]) => string;
8
+ declare const stringClsx: typeof clsx;
9
+ //#endregion
10
+ export { StringClsnValue, StringClsxValue, stringClsn, stringClsx };
11
+ //# sourceMappingURL=className.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"className.d.ts","names":[],"sources":["../../../src/string/className.ts"],"sourcesContent":[],"mappings":";;;;KAKY,eAAA,GAAkB;AAAlB,KACA,eAAA,GAAkB,UADA;AAClB,cAEC,UAFc,EAAG,CAAA,GAAA,IAAA,EAEM,QAFI,EAAA,EAAA,GAAA,MAAA;AAE3B,cACA,UADuB,EAAA,OACb,IADqB"}
@@ -0,0 +1,10 @@
1
+ import clsn from "classnames";
2
+ import clsx from "clsx";
3
+
4
+ //#region src/string/className.ts
5
+ const stringClsn = (...args) => clsn(...args);
6
+ const stringClsx = clsx;
7
+
8
+ //#endregion
9
+ export { stringClsn, stringClsx };
10
+ //# sourceMappingURL=className.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"className.js","names":[],"sources":["../../../src/string/className.ts"],"sourcesContent":["import type { Argument } from 'classnames'\nimport type { ClassValue } from 'clsx'\nimport clsn from 'classnames'\nimport clsx from 'clsx'\n\nexport type StringClsnValue = Argument\nexport type StringClsxValue = ClassValue\n\nexport const stringClsn = (...args: Argument[]): string => clsn(...args)\nexport const stringClsx = clsx\n"],"mappings":";;;;AAQA,MAAa,cAAc,GAAG,SAA6B,KAAK,GAAG,KAAK;AACxE,MAAa,aAAa"}
@@ -0,0 +1,7 @@
1
+ const require_className = require('./className.cjs');
2
+ const require_proto = require('./proto.cjs');
3
+
4
+ exports.stringClsn = require_className.stringClsn;
5
+ exports.stringClsx = require_className.stringClsx;
6
+ exports.stringReplaceParametersWithObj = require_proto.stringReplaceParametersWithObj;
7
+ exports.stringSliceParametersWithSort = require_proto.stringSliceParametersWithSort;
@@ -0,0 +1,3 @@
1
+ import { StringClsnValue, StringClsxValue, stringClsn, stringClsx } from "./className.js";
2
+ import { stringReplaceParametersWithObj, stringSliceParametersWithSort } from "./proto.js";
3
+ export { StringClsnValue, StringClsxValue, stringClsn, stringClsx, stringReplaceParametersWithObj, stringSliceParametersWithSort };
@@ -0,0 +1,4 @@
1
+ import { stringClsn, stringClsx } from "./className.js";
2
+ import { stringReplaceParametersWithObj, stringSliceParametersWithSort } from "./proto.js";
3
+
4
+ export { stringClsn, stringClsx, stringReplaceParametersWithObj, stringSliceParametersWithSort };
@@ -0,0 +1,37 @@
1
+ const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
2
+ const require_isPrimitive = require('../is/isPrimitive.cjs');
3
+ let es_toolkit = require("es-toolkit");
4
+
5
+ //#region src/string/proto.ts
6
+ /**
7
+ * 方法 `String.prototype.replace` 的第二个参数的快捷实现,可根据对象的键值对进行替换
8
+ *
9
+ * @example args = [ 'h', 0, 'hello' ]
10
+ * @example args = [ '[h]', 'h', 0, '[h][e][l][l][o]' ]
11
+ */
12
+ function stringReplaceParametersWithObj(obj) {
13
+ return (...args) => {
14
+ const substring = (0, es_toolkit.at)(args, [-3])[0];
15
+ if (substring && Object.prototype.hasOwnProperty.call(obj, substring)) return obj[substring];
16
+ return (0, es_toolkit.head)(args);
17
+ };
18
+ }
19
+ /**
20
+ * 方法 `String.prototype.slice` 的参数,额外支持索引区间排序问题
21
+ *
22
+ * @reference https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/slice
23
+ * @reference https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substring
24
+ * @reference https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substr
25
+ */
26
+ function stringSliceParametersWithSort(start, end) {
27
+ const startArg = Number.isSafeInteger(start) ? start : 0;
28
+ const endArg = !require_isPrimitive.isNotNumber(end) ? end : 0;
29
+ if (require_isPrimitive.isUndefined(endArg)) return [startArg];
30
+ if (startArg >= 0 && endArg < 0) return [startArg, endArg];
31
+ if (startArg < 0 && endArg >= 0) return [endArg, startArg];
32
+ return [startArg, endArg].sort((a, b) => a - b);
33
+ }
34
+
35
+ //#endregion
36
+ exports.stringReplaceParametersWithObj = stringReplaceParametersWithObj;
37
+ exports.stringSliceParametersWithSort = stringSliceParametersWithSort;
@@ -0,0 +1,19 @@
1
+ //#region src/string/proto.d.ts
2
+ /**
3
+ * 方法 `String.prototype.replace` 的第二个参数的快捷实现,可根据对象的键值对进行替换
4
+ *
5
+ * @example args = [ 'h', 0, 'hello' ]
6
+ * @example args = [ '[h]', 'h', 0, '[h][e][l][l][o]' ]
7
+ */
8
+ declare function stringReplaceParametersWithObj(obj: Record<string, string>): (...args: any[]) => string;
9
+ /**
10
+ * 方法 `String.prototype.slice` 的参数,额外支持索引区间排序问题
11
+ *
12
+ * @reference https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/slice
13
+ * @reference https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substring
14
+ * @reference https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substr
15
+ */
16
+ declare function stringSliceParametersWithSort(start?: number, end?: number): [number, number?];
17
+ //#endregion
18
+ export { stringReplaceParametersWithObj, stringSliceParametersWithSort };
19
+ //# sourceMappingURL=proto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proto.d.ts","names":[],"sources":["../../../src/string/proto.ts"],"sourcesContent":[],"mappings":";;AASA;AAiBA;;;;iBAjBgB,8BAAA,MAAoC;;;;;;;;iBAiBpC,6BAAA"}
@@ -0,0 +1,36 @@
1
+ import { isNotNumber, isUndefined as isUndefined$1 } from "../is/isPrimitive.js";
2
+ import { at, head } from "es-toolkit";
3
+
4
+ //#region src/string/proto.ts
5
+ /**
6
+ * 方法 `String.prototype.replace` 的第二个参数的快捷实现,可根据对象的键值对进行替换
7
+ *
8
+ * @example args = [ 'h', 0, 'hello' ]
9
+ * @example args = [ '[h]', 'h', 0, '[h][e][l][l][o]' ]
10
+ */
11
+ function stringReplaceParametersWithObj(obj) {
12
+ return (...args) => {
13
+ const substring = at(args, [-3])[0];
14
+ if (substring && Object.prototype.hasOwnProperty.call(obj, substring)) return obj[substring];
15
+ return head(args);
16
+ };
17
+ }
18
+ /**
19
+ * 方法 `String.prototype.slice` 的参数,额外支持索引区间排序问题
20
+ *
21
+ * @reference https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/slice
22
+ * @reference https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substring
23
+ * @reference https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substr
24
+ */
25
+ function stringSliceParametersWithSort(start, end) {
26
+ const startArg = Number.isSafeInteger(start) ? start : 0;
27
+ const endArg = !isNotNumber(end) ? end : 0;
28
+ if (isUndefined$1(endArg)) return [startArg];
29
+ if (startArg >= 0 && endArg < 0) return [startArg, endArg];
30
+ if (startArg < 0 && endArg >= 0) return [endArg, startArg];
31
+ return [startArg, endArg].sort((a, b) => a - b);
32
+ }
33
+
34
+ //#endregion
35
+ export { stringReplaceParametersWithObj, stringSliceParametersWithSort };
36
+ //# sourceMappingURL=proto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proto.js","names":["isUndefined"],"sources":["../../../src/string/proto.ts"],"sourcesContent":["import { at, head } from 'es-toolkit'\nimport { isNotNumber, isUndefined } from '../is'\n\n/**\n * 方法 `String.prototype.replace` 的第二个参数的快捷实现,可根据对象的键值对进行替换\n *\n * @example args = [ 'h', 0, 'hello' ]\n * @example args = [ '[h]', 'h', 0, '[h][e][l][l][o]' ]\n */\nexport function stringReplaceParametersWithObj(obj: Record<string, string>) {\n return (...args: any[]): string => {\n const substring = at(args, [-3])[0]\n if (substring && Object.prototype.hasOwnProperty.call(obj, substring)) {\n return obj[substring]\n }\n return head(args)\n }\n}\n\n/**\n * 方法 `String.prototype.slice` 的参数,额外支持索引区间排序问题\n *\n * @reference https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/slice\n * @reference https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substring\n * @reference https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substr\n */\nexport function stringSliceParametersWithSort(start?: number, end?: number): [number, number?] {\n const startArg = (Number.isSafeInteger(start) ? start : 0) as number // 不允许 undefined\n const endArg = !isNotNumber(end) ? end : 0 // 允许 undefined\n\n if (isUndefined(endArg)) {\n return [startArg]\n }\n if (startArg >= 0 && endArg < 0) {\n return [startArg, endArg]\n }\n if (startArg < 0 && endArg >= 0) {\n return [endArg, startArg]\n }\n // 相同区间按数值大小升序排列\n return ([startArg, endArg].sort((a, b) => a - b)) as [number, number]\n}\n"],"mappings":";;;;;;;;;;AASA,SAAgB,+BAA+B,KAA6B;AAC1E,SAAQ,GAAG,SAAwB;EACjC,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACjC,MAAI,aAAa,OAAO,UAAU,eAAe,KAAK,KAAK,UAAU,CACnE,QAAO,IAAI;AAEb,SAAO,KAAK,KAAK;;;;;;;;;;AAWrB,SAAgB,8BAA8B,OAAgB,KAAiC;CAC7F,MAAM,WAAY,OAAO,cAAc,MAAM,GAAG,QAAQ;CACxD,MAAM,SAAS,CAAC,YAAY,IAAI,GAAG,MAAM;AAEzC,KAAIA,cAAY,OAAO,CACrB,QAAO,CAAC,SAAS;AAEnB,KAAI,YAAY,KAAK,SAAS,EAC5B,QAAO,CAAC,UAAU,OAAO;AAE3B,KAAI,WAAW,KAAK,UAAU,EAC5B,QAAO,CAAC,QAAQ,SAAS;AAG3B,QAAQ,CAAC,UAAU,OAAO,CAAC,MAAM,GAAG,MAAM,IAAI,EAAE"}
@@ -0,0 +1,7 @@
1
+ const require_treeFilter = require('./treeFilter.cjs');
2
+ const require_treeFlatten = require('./treeFlatten.cjs');
3
+ const require_treeGenerate = require('./treeGenerate.cjs');
4
+
5
+ exports.treeFilter = require_treeFilter.treeFilter;
6
+ exports.treeFlatten = require_treeFlatten.treeFlatten;
7
+ exports.treeGenerate = require_treeGenerate.treeGenerate;
@@ -0,0 +1,5 @@
1
+ import { TreeFilterParams, TreeOptions } from "./interface.js";
2
+ import { treeFilter } from "./treeFilter.js";
3
+ import { treeFlatten } from "./treeFlatten.js";
4
+ import { treeGenerate } from "./treeGenerate.js";
5
+ export { TreeFilterParams, TreeOptions, treeFilter, treeFlatten, treeGenerate };
@@ -0,0 +1,5 @@
1
+ import { treeFilter } from "./treeFilter.js";
2
+ import { treeFlatten } from "./treeFlatten.js";
3
+ import { treeGenerate } from "./treeGenerate.js";
4
+
5
+ export { treeFilter, treeFlatten, treeGenerate };
@@ -0,0 +1,40 @@
1
+ //#region src/tree/interface.d.ts
2
+ /**
3
+ * 树形结构过滤函数的参数
4
+ */
5
+ interface TreeFilterParams {
6
+ /** 树节点 */
7
+ node: any;
8
+ /** 树节点当前层级的索引 */
9
+ index: number;
10
+ /** 树节点层级 */
11
+ level: number;
12
+ }
13
+ /**
14
+ * 树形相关函数的配置参数,聚合在一个 interface 内便于复用
15
+ */
16
+ interface TreeOptions {
17
+ /**
18
+ * @zh 当前节点关联父节点键名,默认值为 'pid'
19
+ */
20
+ parentIdKey?: string;
21
+ /**
22
+ * @zh 当前节点主键键名,默认值为 'id'
23
+ */
24
+ primaryIdKey?: string;
25
+ /**
26
+ * @zh 当前节点子树键名,默认值为 'children'
27
+ */
28
+ childrenKey?: string;
29
+ /**
30
+ * @zh 根节点关联值判断依据,默认值为 null
31
+ */
32
+ rootValue?: any;
33
+ /**
34
+ * @zh 树节点筛选函数,默认值为 null,表示不筛选
35
+ */
36
+ filter?: (node: TreeFilterParams['node'], index: TreeFilterParams['index'], level: TreeFilterParams['level']) => boolean;
37
+ }
38
+ //#endregion
39
+ export { TreeFilterParams, TreeOptions };
40
+ //# sourceMappingURL=interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.d.ts","names":[],"sources":["../../../src/tree/interface.ts"],"sourcesContent":[],"mappings":";;AAGA;AAYA;AAoBkB,UAhCD,gBAAA,CAgCC;EAAiC;EAAkC,IAAA,EAAA,GAAA;EAAgB;;;;;;;;UApBpF,WAAA;;;;;;;;;;;;;;;;;;;;kBAoBC,iCAAiC,kCAAkC"}
@@ -0,0 +1,58 @@
1
+ const require_isPrimitiveWithout = require('../is/isPrimitiveWithout.cjs');
2
+
3
+ //#region src/tree/treeFilter.ts
4
+ /**
5
+ * 递归过滤节点 - 保留匹配节点及其所有父节点路径
6
+ * @param {TreeFilterParams} params 递归过滤节点的参数
7
+ * @param {Required<Pick<TreeOptions, 'childrenKey' | 'filter'>>} options 递归过滤节点的选项
8
+ * @returns {[boolean, any]} [过滤结果, 过滤后的节点]
9
+ */
10
+ function treeFilterNode(params, options) {
11
+ const { node, index, level } = params;
12
+ const { childrenKey, filter } = options;
13
+ const filteredChildren = [];
14
+ const children = node[childrenKey];
15
+ if (require_isPrimitiveWithout.isArray(children) && children.length > 0) for (let i = 0; i < children.length; i++) {
16
+ const [flag, filteredNode] = treeFilterNode({
17
+ node: children[i],
18
+ index: i,
19
+ level: level + 1
20
+ }, options);
21
+ flag && filteredChildren.push(filteredNode);
22
+ }
23
+ if (filteredChildren.length > 0) return [true, {
24
+ ...node,
25
+ [childrenKey]: filteredChildren
26
+ }];
27
+ if (filter(node, index, level)) return [true, {
28
+ ...node,
29
+ [childrenKey]: []
30
+ }];
31
+ return [false, null];
32
+ }
33
+ /**
34
+ * 过滤树形结构 -保留匹配节点及其完整父节点路径
35
+ * @param items 原始树形数据数组
36
+ * @param options 配置选项
37
+ * @returns {any[]} 过滤后的树形数据
38
+ */
39
+ function treeFilter(items, options) {
40
+ const { childrenKey = "children", filter } = options || {};
41
+ if (!filter) return items;
42
+ const result = [];
43
+ for (let i = 0; i < items.length; i++) {
44
+ const [flag, filteredNode] = treeFilterNode({
45
+ node: items[i],
46
+ index: i,
47
+ level: 0
48
+ }, {
49
+ childrenKey,
50
+ filter
51
+ });
52
+ flag && result.push(filteredNode);
53
+ }
54
+ return result;
55
+ }
56
+
57
+ //#endregion
58
+ exports.treeFilter = treeFilter;
@@ -0,0 +1,14 @@
1
+ import { TreeOptions } from "./interface.js";
2
+
3
+ //#region src/tree/treeFilter.d.ts
4
+
5
+ /**
6
+ * 过滤树形结构 -保留匹配节点及其完整父节点路径
7
+ * @param items 原始树形数据数组
8
+ * @param options 配置选项
9
+ * @returns {any[]} 过滤后的树形数据
10
+ */
11
+ declare function treeFilter(items: any[], options?: Pick<TreeOptions, 'childrenKey' | 'filter'>): any[];
12
+ //#endregion
13
+ export { treeFilter };
14
+ //# sourceMappingURL=treeFilter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"treeFilter.d.ts","names":[],"sources":["../../../src/tree/treeFilter.ts"],"sourcesContent":[],"mappings":";;;;;;AA6CA;;;;iBAAgB,UAAA,yBAAmC,KAAK"}
@@ -0,0 +1,59 @@
1
+ import { isArray } from "../is/isPrimitiveWithout.js";
2
+
3
+ //#region src/tree/treeFilter.ts
4
+ /**
5
+ * 递归过滤节点 - 保留匹配节点及其所有父节点路径
6
+ * @param {TreeFilterParams} params 递归过滤节点的参数
7
+ * @param {Required<Pick<TreeOptions, 'childrenKey' | 'filter'>>} options 递归过滤节点的选项
8
+ * @returns {[boolean, any]} [过滤结果, 过滤后的节点]
9
+ */
10
+ function treeFilterNode(params, options) {
11
+ const { node, index, level } = params;
12
+ const { childrenKey, filter } = options;
13
+ const filteredChildren = [];
14
+ const children = node[childrenKey];
15
+ if (isArray(children) && children.length > 0) for (let i = 0; i < children.length; i++) {
16
+ const [flag, filteredNode] = treeFilterNode({
17
+ node: children[i],
18
+ index: i,
19
+ level: level + 1
20
+ }, options);
21
+ flag && filteredChildren.push(filteredNode);
22
+ }
23
+ if (filteredChildren.length > 0) return [true, {
24
+ ...node,
25
+ [childrenKey]: filteredChildren
26
+ }];
27
+ if (filter(node, index, level)) return [true, {
28
+ ...node,
29
+ [childrenKey]: []
30
+ }];
31
+ return [false, null];
32
+ }
33
+ /**
34
+ * 过滤树形结构 -保留匹配节点及其完整父节点路径
35
+ * @param items 原始树形数据数组
36
+ * @param options 配置选项
37
+ * @returns {any[]} 过滤后的树形数据
38
+ */
39
+ function treeFilter(items, options) {
40
+ const { childrenKey = "children", filter } = options || {};
41
+ if (!filter) return items;
42
+ const result = [];
43
+ for (let i = 0; i < items.length; i++) {
44
+ const [flag, filteredNode] = treeFilterNode({
45
+ node: items[i],
46
+ index: i,
47
+ level: 0
48
+ }, {
49
+ childrenKey,
50
+ filter
51
+ });
52
+ flag && result.push(filteredNode);
53
+ }
54
+ return result;
55
+ }
56
+
57
+ //#endregion
58
+ export { treeFilter };
59
+ //# sourceMappingURL=treeFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"treeFilter.js","names":["filteredChildren: any[]","result: any[]"],"sources":["../../../src/tree/treeFilter.ts"],"sourcesContent":["import type { TreeFilterParams, TreeOptions } from './interface'\nimport { isArray } from '../is'\n\n/**\n * 递归过滤节点 - 保留匹配节点及其所有父节点路径\n * @param {TreeFilterParams} params 递归过滤节点的参数\n * @param {Required<Pick<TreeOptions, 'childrenKey' | 'filter'>>} options 递归过滤节点的选项\n * @returns {[boolean, any]} [过滤结果, 过滤后的节点]\n */\nfunction treeFilterNode(params: TreeFilterParams, options: Required<Pick<TreeOptions, 'childrenKey' | 'filter'>>): [boolean, any] {\n const { node, index, level } = params\n const { childrenKey, filter } = options\n\n // 存储当前节点有匹配的子节点\n const filteredChildren: any[] = []\n // 得到子节点,并遍历子节点,递归处理子节点\n const children = node[childrenKey]\n if (isArray(children) && children.length > 0) {\n for (let i = 0; i < children.length; i++) {\n const [flag, filteredNode] = treeFilterNode({ node: children[i], index: i, level: level + 1 }, options)\n // 如果子节点被保留(可能是匹配节点或包含匹配子节点的节点)\n flag && filteredChildren.push(filteredNode)\n }\n }\n // 如果有过滤后的子节点,更新子节点列表, 则直接返回\n if (filteredChildren.length > 0) {\n return [true, { ...node, [childrenKey]: filteredChildren }]\n }\n\n // 如果没有过滤后的子节点,则需检查当前节点是否匹配,则清空 children 属性并返回\n const matched = filter(node, index, level)\n if (matched) {\n return [true, { ...node, [childrenKey]: [] }]\n }\n\n // 当前节点既不匹配也没有匹配的子节点,则不保留该节点\n return [false, null]\n}\n\n/**\n * 过滤树形结构 -保留匹配节点及其完整父节点路径\n * @param items 原始树形数据数组\n * @param options 配置选项\n * @returns {any[]} 过滤后的树形数据\n */\nexport function treeFilter(items: any[], options?: Pick<TreeOptions, 'childrenKey' | 'filter'>): any[] {\n const { childrenKey = 'children', filter } = options || {}\n\n // 如果没有提供过滤函数,直接返回原始数据\n if (!filter) return items\n\n // 处理根节点数组\n const result: any[] = []\n for (let i = 0; i < items.length; i++) {\n const [flag, filteredNode] = treeFilterNode({ node: items[i], index: i, level: 0 }, { childrenKey, filter })\n flag && result.push(filteredNode)\n }\n\n return result\n}\n"],"mappings":";;;;;;;;;AASA,SAAS,eAAe,QAA0B,SAAgF;CAChI,MAAM,EAAE,MAAM,OAAO,UAAU;CAC/B,MAAM,EAAE,aAAa,WAAW;CAGhC,MAAMA,mBAA0B,EAAE;CAElC,MAAM,WAAW,KAAK;AACtB,KAAI,QAAQ,SAAS,IAAI,SAAS,SAAS,EACzC,MAAK,IAAI,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;EACxC,MAAM,CAAC,MAAM,gBAAgB,eAAe;GAAE,MAAM,SAAS;GAAI,OAAO;GAAG,OAAO,QAAQ;GAAG,EAAE,QAAQ;AAEvG,UAAQ,iBAAiB,KAAK,aAAa;;AAI/C,KAAI,iBAAiB,SAAS,EAC5B,QAAO,CAAC,MAAM;EAAE,GAAG;GAAO,cAAc;EAAkB,CAAC;AAK7D,KADgB,OAAO,MAAM,OAAO,MAAM,CAExC,QAAO,CAAC,MAAM;EAAE,GAAG;GAAO,cAAc,EAAE;EAAE,CAAC;AAI/C,QAAO,CAAC,OAAO,KAAK;;;;;;;;AAStB,SAAgB,WAAW,OAAc,SAA8D;CACrG,MAAM,EAAE,cAAc,YAAY,WAAW,WAAW,EAAE;AAG1D,KAAI,CAAC,OAAQ,QAAO;CAGpB,MAAMC,SAAgB,EAAE;AACxB,MAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;EACrC,MAAM,CAAC,MAAM,gBAAgB,eAAe;GAAE,MAAM,MAAM;GAAI,OAAO;GAAG,OAAO;GAAG,EAAE;GAAE;GAAa;GAAQ,CAAC;AAC5G,UAAQ,OAAO,KAAK,aAAa;;AAGnC,QAAO"}
@@ -0,0 +1,23 @@
1
+ const require_isPrimitiveWithout = require('../is/isPrimitiveWithout.cjs');
2
+
3
+ //#region src/tree/treeFlatten.ts
4
+ /**
5
+ * @title 借助对象的引用将树形结构转化为平铺结构
6
+ * @param {any[]} items 树形结构数组
7
+ * @param {any} options 配置项
8
+ * @param {any} options.childrenKey 配置项,默认值为 'children'
9
+ * @returns 平铺结构数组
10
+ */
11
+ function treeFlatten(items, options) {
12
+ const { childrenKey = "children" } = options || {};
13
+ const aFlatten = [];
14
+ for (const item of items) {
15
+ const { [childrenKey]: children, ...restItem } = item;
16
+ aFlatten.push(restItem);
17
+ if (require_isPrimitiveWithout.isArray(children) && children.length) aFlatten.push(...treeFlatten(children, options));
18
+ }
19
+ return aFlatten;
20
+ }
21
+
22
+ //#endregion
23
+ exports.treeFlatten = treeFlatten;
@@ -0,0 +1,15 @@
1
+ import { TreeOptions } from "./interface.js";
2
+
3
+ //#region src/tree/treeFlatten.d.ts
4
+
5
+ /**
6
+ * @title 借助对象的引用将树形结构转化为平铺结构
7
+ * @param {any[]} items 树形结构数组
8
+ * @param {any} options 配置项
9
+ * @param {any} options.childrenKey 配置项,默认值为 'children'
10
+ * @returns 平铺结构数组
11
+ */
12
+ declare function treeFlatten(items: any[], options?: Pick<TreeOptions, 'childrenKey'>): any[];
13
+ //#endregion
14
+ export { treeFlatten };
15
+ //# sourceMappingURL=treeFlatten.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"treeFlatten.d.ts","names":[],"sources":["../../../src/tree/treeFlatten.ts"],"sourcesContent":[],"mappings":";;;;;;AAUA;;;;;iBAAgB,WAAA,yBAAoC,KAAK"}
@@ -0,0 +1,24 @@
1
+ import { isArray } from "../is/isPrimitiveWithout.js";
2
+
3
+ //#region src/tree/treeFlatten.ts
4
+ /**
5
+ * @title 借助对象的引用将树形结构转化为平铺结构
6
+ * @param {any[]} items 树形结构数组
7
+ * @param {any} options 配置项
8
+ * @param {any} options.childrenKey 配置项,默认值为 'children'
9
+ * @returns 平铺结构数组
10
+ */
11
+ function treeFlatten(items, options) {
12
+ const { childrenKey = "children" } = options || {};
13
+ const aFlatten = [];
14
+ for (const item of items) {
15
+ const { [childrenKey]: children, ...restItem } = item;
16
+ aFlatten.push(restItem);
17
+ if (isArray(children) && children.length) aFlatten.push(...treeFlatten(children, options));
18
+ }
19
+ return aFlatten;
20
+ }
21
+
22
+ //#endregion
23
+ export { treeFlatten };
24
+ //# sourceMappingURL=treeFlatten.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"treeFlatten.js","names":["aFlatten: any[]"],"sources":["../../../src/tree/treeFlatten.ts"],"sourcesContent":["import type { TreeOptions } from './interface'\nimport { isArray } from '../is'\n\n/**\n * @title 借助对象的引用将树形结构转化为平铺结构\n * @param {any[]} items 树形结构数组\n * @param {any} options 配置项\n * @param {any} options.childrenKey 配置项,默认值为 'children'\n * @returns 平铺结构数组\n */\nexport function treeFlatten(items: any[], options?: Pick<TreeOptions, 'childrenKey'>): any[] {\n const { childrenKey = 'children' } = options || {}\n\n // 平铺结构最终结果\n const aFlatten: any[] = []\n\n for (const item of items) {\n const { [childrenKey]: children, ...restItem } = item\n aFlatten.push(restItem)\n // item 若包含 children 则递归调用\n if (isArray(children) && children.length) {\n aFlatten.push(...treeFlatten(children, options))\n }\n }\n\n return aFlatten\n}\n"],"mappings":";;;;;;;;;;AAUA,SAAgB,YAAY,OAAc,SAAmD;CAC3F,MAAM,EAAE,cAAc,eAAe,WAAW,EAAE;CAGlD,MAAMA,WAAkB,EAAE;AAE1B,MAAK,MAAM,QAAQ,OAAO;EACxB,MAAM,GAAG,cAAc,UAAU,GAAG,aAAa;AACjD,WAAS,KAAK,SAAS;AAEvB,MAAI,QAAQ,SAAS,IAAI,SAAS,OAChC,UAAS,KAAK,GAAG,YAAY,UAAU,QAAQ,CAAC;;AAIpD,QAAO"}