@fluixi/utils 1.0.0-alpha.100

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 (364) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +68 -0
  3. package/dist/index.cjs +2858 -0
  4. package/dist/index.d.ts +2 -0
  5. package/dist/index.d.ts.map +1 -0
  6. package/dist/index.js +1 -0
  7. package/dist/index.mjs +2838 -0
  8. package/dist/lib/array/advanced.cjs +2227 -0
  9. package/dist/lib/array/advanced.d.ts +1116 -0
  10. package/dist/lib/array/advanced.d.ts.map +1 -0
  11. package/dist/lib/array/advanced.js +2429 -0
  12. package/dist/lib/array/advanced.mjs +2204 -0
  13. package/dist/lib/array/array.cjs +57 -0
  14. package/dist/lib/array/array.d.ts +6 -0
  15. package/dist/lib/array/array.d.ts.map +1 -0
  16. package/dist/lib/array/array.js +31 -0
  17. package/dist/lib/array/array.mjs +36 -0
  18. package/dist/lib/array/index.cjs +2344 -0
  19. package/dist/lib/array/index.d.ts +4 -0
  20. package/dist/lib/array/index.d.ts.map +1 -0
  21. package/dist/lib/array/index.js +3 -0
  22. package/dist/lib/array/index.mjs +2322 -0
  23. package/dist/lib/array/utils.cjs +103 -0
  24. package/dist/lib/array/utils.d.ts +100 -0
  25. package/dist/lib/array/utils.d.ts.map +1 -0
  26. package/dist/lib/array/utils.js +165 -0
  27. package/dist/lib/array/utils.mjs +82 -0
  28. package/dist/lib/color/color.cjs +2190 -0
  29. package/dist/lib/color/color.d.ts +366 -0
  30. package/dist/lib/color/color.d.ts.map +1 -0
  31. package/dist/lib/color/color.js +722 -0
  32. package/dist/lib/color/color.mjs +2167 -0
  33. package/dist/lib/color/constants.cjs +380 -0
  34. package/dist/lib/color/constants.d.ts +361 -0
  35. package/dist/lib/color/constants.d.ts.map +1 -0
  36. package/dist/lib/color/constants.js +358 -0
  37. package/dist/lib/color/constants.mjs +359 -0
  38. package/dist/lib/color/conversions.cjs +629 -0
  39. package/dist/lib/color/conversions.d.ts +166 -0
  40. package/dist/lib/color/conversions.d.ts.map +1 -0
  41. package/dist/lib/color/conversions.js +766 -0
  42. package/dist/lib/color/conversions.mjs +608 -0
  43. package/dist/lib/color/helpers.cjs +2534 -0
  44. package/dist/lib/color/helpers.d.ts +75 -0
  45. package/dist/lib/color/helpers.d.ts.map +1 -0
  46. package/dist/lib/color/helpers.js +419 -0
  47. package/dist/lib/color/helpers.mjs +2511 -0
  48. package/dist/lib/color/index.cjs +2641 -0
  49. package/dist/lib/color/index.d.ts +12 -0
  50. package/dist/lib/color/index.d.ts.map +1 -0
  51. package/dist/lib/color/index.js +15 -0
  52. package/dist/lib/color/index.mjs +2619 -0
  53. package/dist/lib/color/types.cjs +18 -0
  54. package/dist/lib/color/types.d.ts +179 -0
  55. package/dist/lib/color/types.d.ts.map +1 -0
  56. package/dist/lib/color/types.js +1 -0
  57. package/dist/lib/color/types.mjs +0 -0
  58. package/dist/lib/color/utils.cjs +962 -0
  59. package/dist/lib/color/utils.d.ts +199 -0
  60. package/dist/lib/color/utils.d.ts.map +1 -0
  61. package/dist/lib/color/utils.js +858 -0
  62. package/dist/lib/color/utils.mjs +939 -0
  63. package/dist/lib/compare/comparators.cjs +171 -0
  64. package/dist/lib/compare/comparators.d.ts +65 -0
  65. package/dist/lib/compare/comparators.d.ts.map +1 -0
  66. package/dist/lib/compare/comparators.js +210 -0
  67. package/dist/lib/compare/comparators.mjs +150 -0
  68. package/dist/lib/compare/index.cjs +172 -0
  69. package/dist/lib/compare/index.d.ts +2 -0
  70. package/dist/lib/compare/index.d.ts.map +1 -0
  71. package/dist/lib/compare/index.js +1 -0
  72. package/dist/lib/compare/index.mjs +152 -0
  73. package/dist/lib/cookie/codec.cjs +72 -0
  74. package/dist/lib/cookie/codec.d.ts +22 -0
  75. package/dist/lib/cookie/codec.d.ts.map +1 -0
  76. package/dist/lib/cookie/codec.js +67 -0
  77. package/dist/lib/cookie/codec.mjs +51 -0
  78. package/dist/lib/cookie/index.cjs +75 -0
  79. package/dist/lib/cookie/index.d.ts +2 -0
  80. package/dist/lib/cookie/index.d.ts.map +1 -0
  81. package/dist/lib/cookie/index.js +1 -0
  82. package/dist/lib/cookie/index.mjs +53 -0
  83. package/dist/lib/crypto/hash.cjs +83 -0
  84. package/dist/lib/crypto/hash.d.ts +6 -0
  85. package/dist/lib/crypto/hash.d.ts.map +1 -0
  86. package/dist/lib/crypto/hash.js +53 -0
  87. package/dist/lib/crypto/hash.mjs +62 -0
  88. package/dist/lib/crypto/index.cjs +85 -0
  89. package/dist/lib/crypto/index.d.ts +2 -0
  90. package/dist/lib/crypto/index.d.ts.map +1 -0
  91. package/dist/lib/crypto/index.js +1 -0
  92. package/dist/lib/crypto/index.mjs +62 -0
  93. package/dist/lib/dom/events.cjs +40 -0
  94. package/dist/lib/dom/events.d.ts +159 -0
  95. package/dist/lib/dom/events.d.ts.map +1 -0
  96. package/dist/lib/dom/events.js +50 -0
  97. package/dist/lib/dom/events.mjs +19 -0
  98. package/dist/lib/dom/index.cjs +78 -0
  99. package/dist/lib/dom/index.d.ts +3 -0
  100. package/dist/lib/dom/index.d.ts.map +1 -0
  101. package/dist/lib/dom/index.js +2 -0
  102. package/dist/lib/dom/index.mjs +56 -0
  103. package/dist/lib/dom/utils.cjs +57 -0
  104. package/dist/lib/dom/utils.d.ts +6 -0
  105. package/dist/lib/dom/utils.d.ts.map +1 -0
  106. package/dist/lib/dom/utils.js +37 -0
  107. package/dist/lib/dom/utils.mjs +36 -0
  108. package/dist/lib/functions/functions.cjs +366 -0
  109. package/dist/lib/functions/functions.d.ts +329 -0
  110. package/dist/lib/functions/functions.d.ts.map +1 -0
  111. package/dist/lib/functions/functions.js +585 -0
  112. package/dist/lib/functions/functions.mjs +345 -0
  113. package/dist/lib/functions/index.cjs +369 -0
  114. package/dist/lib/functions/index.d.ts +3 -0
  115. package/dist/lib/functions/index.d.ts.map +1 -0
  116. package/dist/lib/functions/index.js +1 -0
  117. package/dist/lib/functions/index.mjs +347 -0
  118. package/dist/lib/functions/types.cjs +18 -0
  119. package/dist/lib/functions/types.d.ts +2 -0
  120. package/dist/lib/functions/types.d.ts.map +1 -0
  121. package/dist/lib/functions/types.js +1 -0
  122. package/dist/lib/functions/types.mjs +0 -0
  123. package/dist/lib/helpers.cjs +78 -0
  124. package/dist/lib/helpers.d.ts +13 -0
  125. package/dist/lib/helpers.d.ts.map +1 -0
  126. package/dist/lib/helpers.js +66 -0
  127. package/dist/lib/helpers.mjs +59 -0
  128. package/dist/lib/index.cjs +2857 -0
  129. package/dist/lib/index.d.ts +6 -0
  130. package/dist/lib/index.d.ts.map +1 -0
  131. package/dist/lib/index.js +8 -0
  132. package/dist/lib/index.mjs +2836 -0
  133. package/dist/lib/maths/constants.cjs +70 -0
  134. package/dist/lib/maths/constants.d.ts +84 -0
  135. package/dist/lib/maths/constants.d.ts.map +1 -0
  136. package/dist/lib/maths/constants.js +79 -0
  137. package/dist/lib/maths/constants.mjs +50 -0
  138. package/dist/lib/maths/fn/advanced.cjs +231 -0
  139. package/dist/lib/maths/fn/advanced.d.ts +149 -0
  140. package/dist/lib/maths/fn/advanced.d.ts.map +1 -0
  141. package/dist/lib/maths/fn/advanced.js +264 -0
  142. package/dist/lib/maths/fn/advanced.mjs +208 -0
  143. package/dist/lib/maths/fn/basic.cjs +212 -0
  144. package/dist/lib/maths/fn/basic.d.ts +182 -0
  145. package/dist/lib/maths/fn/basic.d.ts.map +1 -0
  146. package/dist/lib/maths/fn/basic.js +343 -0
  147. package/dist/lib/maths/fn/basic.mjs +191 -0
  148. package/dist/lib/maths/fn/complex.cjs +268 -0
  149. package/dist/lib/maths/fn/complex.d.ts +153 -0
  150. package/dist/lib/maths/fn/complex.d.ts.map +1 -0
  151. package/dist/lib/maths/fn/complex.js +383 -0
  152. package/dist/lib/maths/fn/complex.mjs +247 -0
  153. package/dist/lib/maths/fn/index.cjs +877 -0
  154. package/dist/lib/maths/fn/index.d.ts +10 -0
  155. package/dist/lib/maths/fn/index.d.ts.map +1 -0
  156. package/dist/lib/maths/fn/index.js +9 -0
  157. package/dist/lib/maths/fn/index.mjs +855 -0
  158. package/dist/lib/maths/fn/trigo.cjs +179 -0
  159. package/dist/lib/maths/fn/trigo.d.ts +147 -0
  160. package/dist/lib/maths/fn/trigo.d.ts.map +1 -0
  161. package/dist/lib/maths/fn/trigo.js +227 -0
  162. package/dist/lib/maths/fn/trigo.mjs +156 -0
  163. package/dist/lib/maths/fn/vector.cjs +728 -0
  164. package/dist/lib/maths/fn/vector.d.ts +512 -0
  165. package/dist/lib/maths/fn/vector.d.ts.map +1 -0
  166. package/dist/lib/maths/fn/vector.js +1136 -0
  167. package/dist/lib/maths/fn/vector.mjs +707 -0
  168. package/dist/lib/maths/formatter.cjs +61 -0
  169. package/dist/lib/maths/formatter.d.ts +35 -0
  170. package/dist/lib/maths/formatter.d.ts.map +1 -0
  171. package/dist/lib/maths/formatter.js +56 -0
  172. package/dist/lib/maths/formatter.mjs +40 -0
  173. package/dist/lib/maths/guards.cjs +164 -0
  174. package/dist/lib/maths/guards.d.ts +166 -0
  175. package/dist/lib/maths/guards.d.ts.map +1 -0
  176. package/dist/lib/maths/guards.js +315 -0
  177. package/dist/lib/maths/guards.mjs +144 -0
  178. package/dist/lib/maths/index.cjs +1152 -0
  179. package/dist/lib/maths/index.d.ts +24 -0
  180. package/dist/lib/maths/index.d.ts.map +1 -0
  181. package/dist/lib/maths/index.js +29 -0
  182. package/dist/lib/maths/index.mjs +1130 -0
  183. package/dist/lib/maths/parser.cjs +75 -0
  184. package/dist/lib/maths/parser.d.ts +20 -0
  185. package/dist/lib/maths/parser.d.ts.map +1 -0
  186. package/dist/lib/maths/parser.js +78 -0
  187. package/dist/lib/maths/parser.mjs +54 -0
  188. package/dist/lib/maths/random.cjs +49 -0
  189. package/dist/lib/maths/random.d.ts +27 -0
  190. package/dist/lib/maths/random.d.ts.map +1 -0
  191. package/dist/lib/maths/random.js +49 -0
  192. package/dist/lib/maths/random.mjs +28 -0
  193. package/dist/lib/maths/types/advanced.cjs +18 -0
  194. package/dist/lib/maths/types/advanced.d.ts +357 -0
  195. package/dist/lib/maths/types/advanced.d.ts.map +1 -0
  196. package/dist/lib/maths/types/advanced.js +5 -0
  197. package/dist/lib/maths/types/advanced.mjs +0 -0
  198. package/dist/lib/maths/types/basic.cjs +18 -0
  199. package/dist/lib/maths/types/basic.d.ts +95 -0
  200. package/dist/lib/maths/types/basic.d.ts.map +1 -0
  201. package/dist/lib/maths/types/basic.js +5 -0
  202. package/dist/lib/maths/types/basic.mjs +0 -0
  203. package/dist/lib/maths/types/index.cjs +19 -0
  204. package/dist/lib/maths/types/index.d.ts +4 -0
  205. package/dist/lib/maths/types/index.d.ts.map +1 -0
  206. package/dist/lib/maths/types/index.js +3 -0
  207. package/dist/lib/maths/types/index.mjs +1 -0
  208. package/dist/lib/maths/types/negative.cjs +18 -0
  209. package/dist/lib/maths/types/negative.d.ts +51 -0
  210. package/dist/lib/maths/types/negative.d.ts.map +1 -0
  211. package/dist/lib/maths/types/negative.js +5 -0
  212. package/dist/lib/maths/types/negative.mjs +0 -0
  213. package/dist/lib/maths/types/operations.cjs +18 -0
  214. package/dist/lib/maths/types/operations.d.ts +188 -0
  215. package/dist/lib/maths/types/operations.d.ts.map +1 -0
  216. package/dist/lib/maths/types/operations.js +6 -0
  217. package/dist/lib/maths/types/operations.mjs +0 -0
  218. package/dist/lib/object/clone.cjs +88 -0
  219. package/dist/lib/object/clone.d.ts +46 -0
  220. package/dist/lib/object/clone.d.ts.map +1 -0
  221. package/dist/lib/object/clone.js +104 -0
  222. package/dist/lib/object/clone.mjs +65 -0
  223. package/dist/lib/object/diff.cjs +573 -0
  224. package/dist/lib/object/diff.d.ts +203 -0
  225. package/dist/lib/object/diff.d.ts.map +1 -0
  226. package/dist/lib/object/diff.js +805 -0
  227. package/dist/lib/object/diff.mjs +550 -0
  228. package/dist/lib/object/getter-setter.cjs +2351 -0
  229. package/dist/lib/object/getter-setter.d.ts +361 -0
  230. package/dist/lib/object/getter-setter.d.ts.map +1 -0
  231. package/dist/lib/object/getter-setter.js +1771 -0
  232. package/dist/lib/object/getter-setter.mjs +2330 -0
  233. package/dist/lib/object/index.cjs +3956 -0
  234. package/dist/lib/object/index.d.ts +13 -0
  235. package/dist/lib/object/index.d.ts.map +1 -0
  236. package/dist/lib/object/index.js +12 -0
  237. package/dist/lib/object/index.mjs +3936 -0
  238. package/dist/lib/object/merge.cjs +1029 -0
  239. package/dist/lib/object/merge.d.ts +93 -0
  240. package/dist/lib/object/merge.d.ts.map +1 -0
  241. package/dist/lib/object/merge.js +474 -0
  242. package/dist/lib/object/merge.mjs +1006 -0
  243. package/dist/lib/object/object.cjs +280 -0
  244. package/dist/lib/object/object.d.ts +128 -0
  245. package/dist/lib/object/object.d.ts.map +1 -0
  246. package/dist/lib/object/object.js +432 -0
  247. package/dist/lib/object/object.mjs +257 -0
  248. package/dist/lib/object/omit.cjs +2022 -0
  249. package/dist/lib/object/omit.d.ts +351 -0
  250. package/dist/lib/object/omit.d.ts.map +1 -0
  251. package/dist/lib/object/omit.js +656 -0
  252. package/dist/lib/object/omit.mjs +1999 -0
  253. package/dist/lib/object/reconcile.cjs +126 -0
  254. package/dist/lib/object/reconcile.d.ts +7 -0
  255. package/dist/lib/object/reconcile.d.ts.map +1 -0
  256. package/dist/lib/object/reconcile.js +122 -0
  257. package/dist/lib/object/reconcile.mjs +105 -0
  258. package/dist/lib/object/selector.cjs +303 -0
  259. package/dist/lib/object/selector.d.ts +50 -0
  260. package/dist/lib/object/selector.d.ts.map +1 -0
  261. package/dist/lib/object/selector.js +371 -0
  262. package/dist/lib/object/selector.mjs +282 -0
  263. package/dist/lib/object/sort.cjs +209 -0
  264. package/dist/lib/object/sort.d.ts +149 -0
  265. package/dist/lib/object/sort.d.ts.map +1 -0
  266. package/dist/lib/object/sort.js +298 -0
  267. package/dist/lib/object/sort.mjs +186 -0
  268. package/dist/lib/object/transform.cjs +2211 -0
  269. package/dist/lib/object/transform.d.ts +620 -0
  270. package/dist/lib/object/transform.d.ts.map +1 -0
  271. package/dist/lib/object/transform.js +1058 -0
  272. package/dist/lib/object/transform.mjs +2190 -0
  273. package/dist/lib/object/types.cjs +18 -0
  274. package/dist/lib/object/types.d.ts +250 -0
  275. package/dist/lib/object/types.d.ts.map +1 -0
  276. package/dist/lib/object/types.js +1 -0
  277. package/dist/lib/object/types.mjs +0 -0
  278. package/dist/lib/object/utils.cjs +326 -0
  279. package/dist/lib/object/utils.d.ts +165 -0
  280. package/dist/lib/object/utils.d.ts.map +1 -0
  281. package/dist/lib/object/utils.js +444 -0
  282. package/dist/lib/object/utils.mjs +305 -0
  283. package/dist/lib/primitive/boolean/boolean.cjs +407 -0
  284. package/dist/lib/primitive/boolean/boolean.d.ts +276 -0
  285. package/dist/lib/primitive/boolean/boolean.d.ts.map +1 -0
  286. package/dist/lib/primitive/boolean/boolean.js +615 -0
  287. package/dist/lib/primitive/boolean/boolean.mjs +386 -0
  288. package/dist/lib/primitive/boolean/index.cjs +382 -0
  289. package/dist/lib/primitive/boolean/index.d.ts +3 -0
  290. package/dist/lib/primitive/boolean/index.d.ts.map +1 -0
  291. package/dist/lib/primitive/boolean/index.js +2 -0
  292. package/dist/lib/primitive/boolean/index.mjs +359 -0
  293. package/dist/lib/primitive/boolean/types.cjs +18 -0
  294. package/dist/lib/primitive/boolean/types.d.ts +14 -0
  295. package/dist/lib/primitive/boolean/types.d.ts.map +1 -0
  296. package/dist/lib/primitive/boolean/types.js +1 -0
  297. package/dist/lib/primitive/boolean/types.mjs +0 -0
  298. package/dist/lib/primitive/date/date.cjs +1126 -0
  299. package/dist/lib/primitive/date/date.d.ts +641 -0
  300. package/dist/lib/primitive/date/date.d.ts.map +1 -0
  301. package/dist/lib/primitive/date/date.js +1998 -0
  302. package/dist/lib/primitive/date/date.mjs +1105 -0
  303. package/dist/lib/primitive/date/index.cjs +1128 -0
  304. package/dist/lib/primitive/date/index.d.ts +3 -0
  305. package/dist/lib/primitive/date/index.d.ts.map +1 -0
  306. package/dist/lib/primitive/date/index.js +2 -0
  307. package/dist/lib/primitive/date/index.mjs +1105 -0
  308. package/dist/lib/primitive/date/types.cjs +18 -0
  309. package/dist/lib/primitive/date/types.d.ts +205 -0
  310. package/dist/lib/primitive/date/types.d.ts.map +1 -0
  311. package/dist/lib/primitive/date/types.js +7 -0
  312. package/dist/lib/primitive/date/types.mjs +0 -0
  313. package/dist/lib/primitive/index.cjs +2338 -0
  314. package/dist/lib/primitive/index.d.ts +5 -0
  315. package/dist/lib/primitive/index.d.ts.map +1 -0
  316. package/dist/lib/primitive/index.js +4 -0
  317. package/dist/lib/primitive/index.mjs +2316 -0
  318. package/dist/lib/primitive/string/index.cjs +875 -0
  319. package/dist/lib/primitive/string/index.d.ts +3 -0
  320. package/dist/lib/primitive/string/index.d.ts.map +1 -0
  321. package/dist/lib/primitive/string/index.js +2 -0
  322. package/dist/lib/primitive/string/index.mjs +852 -0
  323. package/dist/lib/primitive/string/parser-2.cjs +543 -0
  324. package/dist/lib/primitive/string/parser-2.d.ts +17 -0
  325. package/dist/lib/primitive/string/parser-2.d.ts.map +1 -0
  326. package/dist/lib/primitive/string/parser-2.js +656 -0
  327. package/dist/lib/primitive/string/parser-2.mjs +522 -0
  328. package/dist/lib/primitive/string/parser.cjs +236 -0
  329. package/dist/lib/primitive/string/parser.d.ts +9 -0
  330. package/dist/lib/primitive/string/parser.d.ts.map +1 -0
  331. package/dist/lib/primitive/string/parser.js +775 -0
  332. package/dist/lib/primitive/string/parser.mjs +215 -0
  333. package/dist/lib/primitive/string/string.cjs +926 -0
  334. package/dist/lib/primitive/string/string.d.ts +535 -0
  335. package/dist/lib/primitive/string/string.d.ts.map +1 -0
  336. package/dist/lib/primitive/string/string.js +1301 -0
  337. package/dist/lib/primitive/string/string.mjs +903 -0
  338. package/dist/lib/primitive/string/types.cjs +18 -0
  339. package/dist/lib/primitive/string/types.d.ts +318 -0
  340. package/dist/lib/primitive/string/types.d.ts.map +1 -0
  341. package/dist/lib/primitive/string/types.js +5 -0
  342. package/dist/lib/primitive/string/types.mjs +0 -0
  343. package/dist/lib/primitive/types.cjs +18 -0
  344. package/dist/lib/primitive/types.d.ts +27 -0
  345. package/dist/lib/primitive/types.d.ts.map +1 -0
  346. package/dist/lib/primitive/types.js +1 -0
  347. package/dist/lib/primitive/types.mjs +0 -0
  348. package/dist/lib/url/index.cjs +327 -0
  349. package/dist/lib/url/index.d.ts +3 -0
  350. package/dist/lib/url/index.d.ts.map +1 -0
  351. package/dist/lib/url/index.js +2 -0
  352. package/dist/lib/url/index.mjs +304 -0
  353. package/dist/lib/url/parser.cjs +325 -0
  354. package/dist/lib/url/parser.d.ts +216 -0
  355. package/dist/lib/url/parser.d.ts.map +1 -0
  356. package/dist/lib/url/parser.js +488 -0
  357. package/dist/lib/url/parser.mjs +304 -0
  358. package/dist/lib/url/types.cjs +18 -0
  359. package/dist/lib/url/types.d.ts +18 -0
  360. package/dist/lib/url/types.d.ts.map +1 -0
  361. package/dist/lib/url/types.js +1 -0
  362. package/dist/lib/url/types.mjs +0 -0
  363. package/dist/tsconfig.lib.tsbuildinfo +1 -0
  364. package/package.json +127 -0
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/lib/object/reconcile.ts
21
+ var reconcile_exports = {};
22
+ __export(reconcile_exports, {
23
+ reconcile: () => reconcile
24
+ });
25
+ module.exports = __toCommonJS(reconcile_exports);
26
+ function isPlain(v) {
27
+ if (v == null || typeof v !== "object") return false;
28
+ const p = Object.getPrototypeOf(v);
29
+ return p === Object.prototype || p === null;
30
+ }
31
+ function reconcileValue(next, current, opts) {
32
+ if (next === current) return current;
33
+ if (Array.isArray(next)) return reconcileArr(next, Array.isArray(current) ? current : [], opts);
34
+ if (isPlain(next)) return reconcileObj(next, isPlain(current) ? current : {}, opts);
35
+ return next;
36
+ }
37
+ function reconcileArr(next, current, opts) {
38
+ const { key, keepRef } = opts;
39
+ const curLen = current.length;
40
+ const nextLen = next.length;
41
+ const curItems = new Array(curLen);
42
+ for (let i = 0; i < curLen; i++) curItems[i] = current[i];
43
+ if (key === false) {
44
+ if (keepRef) {
45
+ for (let i = 0; i < nextLen; i++) {
46
+ const rv = reconcileValue(next[i], curItems[i], opts);
47
+ if (rv !== curItems[i]) current[i] = rv;
48
+ }
49
+ if (curLen > nextLen) current.splice(nextLen);
50
+ return current;
51
+ }
52
+ let changed2 = nextLen !== curLen;
53
+ const out = new Array(nextLen);
54
+ for (let i = 0; i < nextLen; i++) {
55
+ out[i] = reconcileValue(next[i], curItems[i], opts);
56
+ if (out[i] !== curItems[i]) changed2 = true;
57
+ }
58
+ return changed2 ? out : current;
59
+ }
60
+ const currentMap = /* @__PURE__ */ new Map();
61
+ for (let i = 0; i < curLen; i++) {
62
+ const item = curItems[i];
63
+ if (item != null && typeof item === "object" && key in item) {
64
+ currentMap.set(item[key], item);
65
+ }
66
+ }
67
+ const resolved = new Array(nextLen);
68
+ for (let i = 0; i < nextLen; i++) {
69
+ const n = next[i];
70
+ if (n != null && typeof n === "object" && key in n) {
71
+ resolved[i] = reconcileValue(n, currentMap.get(n[key]), opts);
72
+ } else {
73
+ resolved[i] = reconcileValue(n, curItems[i], opts);
74
+ }
75
+ }
76
+ if (keepRef) {
77
+ for (let i = 0; i < nextLen; i++) {
78
+ if (resolved[i] !== curItems[i]) current[i] = resolved[i];
79
+ }
80
+ if (curLen > nextLen) current.splice(nextLen);
81
+ return current;
82
+ }
83
+ let changed = nextLen !== curLen;
84
+ for (let i = 0; !changed && i < nextLen; i++) {
85
+ if (resolved[i] !== curItems[i]) changed = true;
86
+ }
87
+ return changed ? resolved : current;
88
+ }
89
+ function reconcileObj(next, current, opts) {
90
+ const { merge, keepRef } = opts;
91
+ const nextKeys = Object.keys(next);
92
+ const currentKeys = Object.keys(current);
93
+ const curValues = /* @__PURE__ */ Object.create(null);
94
+ for (let i = 0; i < currentKeys.length; i++) {
95
+ curValues[currentKeys[i]] = current[currentKeys[i]];
96
+ }
97
+ let out = null;
98
+ const getOut = () => {
99
+ if (!out) out = keepRef ? current : { ...curValues };
100
+ return out;
101
+ };
102
+ if (!merge) {
103
+ for (let i = 0; i < currentKeys.length; i++) {
104
+ const k = currentKeys[i];
105
+ if (!(k in next)) delete getOut()[k];
106
+ }
107
+ }
108
+ for (let i = 0; i < nextKeys.length; i++) {
109
+ const k = nextKeys[i];
110
+ const cv = curValues[k];
111
+ const rv = reconcileValue(next[k], cv, opts);
112
+ if (rv !== cv || !(k in curValues)) getOut()[k] = rv;
113
+ }
114
+ return out ?? current;
115
+ }
116
+ function reconcile(next, options) {
117
+ const opts = {
118
+ key: options?.key !== void 0 ? options.key : "id",
119
+ merge: options?.merge ?? false,
120
+ keepRef: options?.keepRef ?? false
121
+ };
122
+ return (current) => {
123
+ if (current === void 0 || current === null) return next;
124
+ return reconcileValue(next, current, opts);
125
+ };
126
+ }
@@ -0,0 +1,7 @@
1
+ export interface ReconcileOptions {
2
+ key?: string | false;
3
+ merge?: boolean;
4
+ keepRef?: boolean;
5
+ }
6
+ export declare function reconcile<T>(next: T, options?: ReconcileOptions): (current: T | undefined) => T;
7
+ //# sourceMappingURL=reconcile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reconcile.d.ts","sourceRoot":"","sources":["../../../src/lib/object/reconcile.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAqHD,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,SAAS,KAAK,CAAC,CAU/F"}
@@ -0,0 +1,122 @@
1
+ function isPlain(v) {
2
+ if (v == null || typeof v !== 'object')
3
+ return false;
4
+ const p = Object.getPrototypeOf(v);
5
+ return p === Object.prototype || p === null;
6
+ }
7
+ function reconcileValue(next, current, opts) {
8
+ if (next === current)
9
+ return current;
10
+ if (Array.isArray(next))
11
+ return reconcileArr(next, Array.isArray(current) ? current : [], opts);
12
+ if (isPlain(next))
13
+ return reconcileObj(next, isPlain(current) ? current : {}, opts);
14
+ return next;
15
+ }
16
+ function reconcileArr(next, current, opts) {
17
+ const { key, keepRef } = opts;
18
+ const curLen = current.length;
19
+ const nextLen = next.length;
20
+ // Snapshot once: avoids repeated proxy reads returning different references
21
+ const curItems = new Array(curLen);
22
+ for (let i = 0; i < curLen; i++)
23
+ curItems[i] = current[i];
24
+ if (key === false) {
25
+ // Index-based
26
+ if (keepRef) {
27
+ for (let i = 0; i < nextLen; i++) {
28
+ const rv = reconcileValue(next[i], curItems[i], opts);
29
+ if (rv !== curItems[i])
30
+ current[i] = rv;
31
+ }
32
+ if (curLen > nextLen)
33
+ current.splice(nextLen);
34
+ return current;
35
+ }
36
+ let changed = nextLen !== curLen;
37
+ const out = new Array(nextLen);
38
+ for (let i = 0; i < nextLen; i++) {
39
+ out[i] = reconcileValue(next[i], curItems[i], opts);
40
+ if (out[i] !== curItems[i])
41
+ changed = true;
42
+ }
43
+ return changed ? out : current;
44
+ }
45
+ // Key-based: build lookup from snapshot
46
+ const currentMap = new Map();
47
+ for (let i = 0; i < curLen; i++) {
48
+ const item = curItems[i];
49
+ if (item != null && typeof item === 'object' && key in item) {
50
+ currentMap.set(item[key], item);
51
+ }
52
+ }
53
+ const resolved = new Array(nextLen);
54
+ for (let i = 0; i < nextLen; i++) {
55
+ const n = next[i];
56
+ if (n != null && typeof n === 'object' && key in n) {
57
+ resolved[i] = reconcileValue(n, currentMap.get(n[key]), opts);
58
+ }
59
+ else {
60
+ resolved[i] = reconcileValue(n, curItems[i], opts);
61
+ }
62
+ }
63
+ if (keepRef) {
64
+ for (let i = 0; i < nextLen; i++) {
65
+ if (resolved[i] !== curItems[i])
66
+ current[i] = resolved[i];
67
+ }
68
+ if (curLen > nextLen)
69
+ current.splice(nextLen);
70
+ return current;
71
+ }
72
+ // Immutable: compare resolved positions against snapshotted positions
73
+ let changed = nextLen !== curLen;
74
+ for (let i = 0; !changed && i < nextLen; i++) {
75
+ if (resolved[i] !== curItems[i])
76
+ changed = true;
77
+ }
78
+ return changed ? resolved : current;
79
+ }
80
+ function reconcileObj(next, current, opts) {
81
+ const { merge, keepRef } = opts;
82
+ const nextKeys = Object.keys(next);
83
+ const currentKeys = Object.keys(current);
84
+ // Snapshot current values once to avoid repeated proxy reads
85
+ const curValues = Object.create(null);
86
+ for (let i = 0; i < currentKeys.length; i++) {
87
+ curValues[currentKeys[i]] = current[currentKeys[i]];
88
+ }
89
+ let out = null;
90
+ const getOut = () => {
91
+ if (!out)
92
+ out = keepRef ? current : { ...curValues };
93
+ return out;
94
+ };
95
+ if (!merge) {
96
+ for (let i = 0; i < currentKeys.length; i++) {
97
+ const k = currentKeys[i];
98
+ if (!(k in next))
99
+ delete getOut()[k];
100
+ }
101
+ }
102
+ for (let i = 0; i < nextKeys.length; i++) {
103
+ const k = nextKeys[i];
104
+ const cv = curValues[k];
105
+ const rv = reconcileValue(next[k], cv, opts);
106
+ if (rv !== cv || !(k in curValues))
107
+ getOut()[k] = rv;
108
+ }
109
+ return out ?? current;
110
+ }
111
+ export function reconcile(next, options) {
112
+ const opts = {
113
+ key: options?.key !== undefined ? options.key : 'id',
114
+ merge: options?.merge ?? false,
115
+ keepRef: options?.keepRef ?? false,
116
+ };
117
+ return (current) => {
118
+ if (current === undefined || current === null)
119
+ return next;
120
+ return reconcileValue(next, current, opts);
121
+ };
122
+ }
@@ -0,0 +1,105 @@
1
+ // src/lib/object/reconcile.ts
2
+ function isPlain(v) {
3
+ if (v == null || typeof v !== "object") return false;
4
+ const p = Object.getPrototypeOf(v);
5
+ return p === Object.prototype || p === null;
6
+ }
7
+ function reconcileValue(next, current, opts) {
8
+ if (next === current) return current;
9
+ if (Array.isArray(next)) return reconcileArr(next, Array.isArray(current) ? current : [], opts);
10
+ if (isPlain(next)) return reconcileObj(next, isPlain(current) ? current : {}, opts);
11
+ return next;
12
+ }
13
+ function reconcileArr(next, current, opts) {
14
+ const { key, keepRef } = opts;
15
+ const curLen = current.length;
16
+ const nextLen = next.length;
17
+ const curItems = new Array(curLen);
18
+ for (let i = 0; i < curLen; i++) curItems[i] = current[i];
19
+ if (key === false) {
20
+ if (keepRef) {
21
+ for (let i = 0; i < nextLen; i++) {
22
+ const rv = reconcileValue(next[i], curItems[i], opts);
23
+ if (rv !== curItems[i]) current[i] = rv;
24
+ }
25
+ if (curLen > nextLen) current.splice(nextLen);
26
+ return current;
27
+ }
28
+ let changed2 = nextLen !== curLen;
29
+ const out = new Array(nextLen);
30
+ for (let i = 0; i < nextLen; i++) {
31
+ out[i] = reconcileValue(next[i], curItems[i], opts);
32
+ if (out[i] !== curItems[i]) changed2 = true;
33
+ }
34
+ return changed2 ? out : current;
35
+ }
36
+ const currentMap = /* @__PURE__ */ new Map();
37
+ for (let i = 0; i < curLen; i++) {
38
+ const item = curItems[i];
39
+ if (item != null && typeof item === "object" && key in item) {
40
+ currentMap.set(item[key], item);
41
+ }
42
+ }
43
+ const resolved = new Array(nextLen);
44
+ for (let i = 0; i < nextLen; i++) {
45
+ const n = next[i];
46
+ if (n != null && typeof n === "object" && key in n) {
47
+ resolved[i] = reconcileValue(n, currentMap.get(n[key]), opts);
48
+ } else {
49
+ resolved[i] = reconcileValue(n, curItems[i], opts);
50
+ }
51
+ }
52
+ if (keepRef) {
53
+ for (let i = 0; i < nextLen; i++) {
54
+ if (resolved[i] !== curItems[i]) current[i] = resolved[i];
55
+ }
56
+ if (curLen > nextLen) current.splice(nextLen);
57
+ return current;
58
+ }
59
+ let changed = nextLen !== curLen;
60
+ for (let i = 0; !changed && i < nextLen; i++) {
61
+ if (resolved[i] !== curItems[i]) changed = true;
62
+ }
63
+ return changed ? resolved : current;
64
+ }
65
+ function reconcileObj(next, current, opts) {
66
+ const { merge, keepRef } = opts;
67
+ const nextKeys = Object.keys(next);
68
+ const currentKeys = Object.keys(current);
69
+ const curValues = /* @__PURE__ */ Object.create(null);
70
+ for (let i = 0; i < currentKeys.length; i++) {
71
+ curValues[currentKeys[i]] = current[currentKeys[i]];
72
+ }
73
+ let out = null;
74
+ const getOut = () => {
75
+ if (!out) out = keepRef ? current : { ...curValues };
76
+ return out;
77
+ };
78
+ if (!merge) {
79
+ for (let i = 0; i < currentKeys.length; i++) {
80
+ const k = currentKeys[i];
81
+ if (!(k in next)) delete getOut()[k];
82
+ }
83
+ }
84
+ for (let i = 0; i < nextKeys.length; i++) {
85
+ const k = nextKeys[i];
86
+ const cv = curValues[k];
87
+ const rv = reconcileValue(next[k], cv, opts);
88
+ if (rv !== cv || !(k in curValues)) getOut()[k] = rv;
89
+ }
90
+ return out ?? current;
91
+ }
92
+ function reconcile(next, options) {
93
+ const opts = {
94
+ key: options?.key !== void 0 ? options.key : "id",
95
+ merge: options?.merge ?? false,
96
+ keepRef: options?.keepRef ?? false
97
+ };
98
+ return (current) => {
99
+ if (current === void 0 || current === null) return next;
100
+ return reconcileValue(next, current, opts);
101
+ };
102
+ }
103
+ export {
104
+ reconcile
105
+ };
@@ -0,0 +1,303 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/lib/object/selector.ts
21
+ var selector_exports = {};
22
+ __export(selector_exports, {
23
+ createFilterFunction: () => createFilterFunction,
24
+ createSelector: () => createSelector,
25
+ detectSelectorType: () => detectSelectorType,
26
+ parseSelector: () => parseSelector,
27
+ stringifySelector: () => stringifySelector,
28
+ validateSelector: () => validateSelector
29
+ });
30
+ module.exports = __toCommonJS(selector_exports);
31
+ var parseSelector = (selector, options = {}) => {
32
+ const { type = "auto", throwOnError = false } = options;
33
+ if (!selector || typeof selector !== "string") {
34
+ return [];
35
+ }
36
+ const segments = [];
37
+ let current = "";
38
+ let inBrackets = false;
39
+ let inQuotes = false;
40
+ let quoteChar = "";
41
+ let bracketContent = "";
42
+ let bracketDepth = 0;
43
+ const detectType = (str) => {
44
+ if (str.includes("..")) return "descendant";
45
+ if (str.includes("[?(")) return "filter";
46
+ if (str.includes("[:") || str.includes("[0:")) return "slice";
47
+ if (str.includes("[,") || str.includes("[0,1]")) return "union";
48
+ if (str.includes("[*]") || str.includes(".*.")) return "wildcard";
49
+ if (str.includes("[]")) return "array-wildcard";
50
+ if (str.includes("[") && str.includes("]")) return "bracket";
51
+ return "dot";
52
+ };
53
+ const actualType = type === "auto" ? detectType(selector) : type;
54
+ const parseBracketContent = (content) => {
55
+ const trimmed = content.trim();
56
+ if (trimmed === "*" || trimmed === "") {
57
+ return {
58
+ type: "wildcard",
59
+ value: trimmed === "" ? "[]" : "*",
60
+ raw: trimmed === "" ? "[]" : content
61
+ };
62
+ }
63
+ if (trimmed === "[]") {
64
+ return { type: "wildcard", value: "[]", raw: content };
65
+ }
66
+ if (/^-?\d+$/.test(trimmed)) {
67
+ return { type: "index", value: parseInt(trimmed, 10), raw: content };
68
+ }
69
+ if (trimmed.includes(":")) {
70
+ const parts = trimmed.split(":").map((p) => p.trim());
71
+ const start = parts[0] === "" ? 0 : parseInt(parts[0], 10);
72
+ const end = parts[1] === "" ? Infinity : parseInt(parts[1], 10);
73
+ if (isNaN(start) || isNaN(end)) {
74
+ if (throwOnError) throw new Error(`Invalid slice notation: ${content}`);
75
+ return { type: "wildcard", value: "*", raw: content };
76
+ }
77
+ return { type: "slice", value: [start, end], raw: content };
78
+ }
79
+ if (trimmed.includes(",")) {
80
+ const indices = trimmed.split(",").map((p) => {
81
+ const num = parseInt(p.trim(), 10);
82
+ return isNaN(num) ? -1 : num;
83
+ }).filter((n) => n >= 0);
84
+ if (indices.length === 0) {
85
+ if (throwOnError) throw new Error(`Invalid union notation: ${content}`);
86
+ return { type: "wildcard", value: "*", raw: content };
87
+ }
88
+ return { type: "union", value: indices, raw: content };
89
+ }
90
+ if (trimmed.startsWith("?(") && trimmed.endsWith(")")) {
91
+ const expr = trimmed.slice(2, -1);
92
+ try {
93
+ const filterFn = createFilterFunction(expr);
94
+ return { type: "filter", value: filterFn, raw: content };
95
+ } catch (error) {
96
+ if (throwOnError) throw error;
97
+ return { type: "wildcard", value: "*", raw: content };
98
+ }
99
+ }
100
+ if (trimmed.startsWith('"') && trimmed.endsWith('"') || trimmed.startsWith("'") && trimmed.endsWith("'")) {
101
+ return { type: "property", value: trimmed.slice(1, -1), raw: content };
102
+ }
103
+ return { type: "property", value: trimmed, raw: content };
104
+ };
105
+ for (let i = 0; i < selector.length; i++) {
106
+ const char = selector[i];
107
+ const nextChar = selector[i + 1];
108
+ if ((char === '"' || char === "'") && !inQuotes) {
109
+ inQuotes = true;
110
+ quoteChar = char;
111
+ continue;
112
+ } else if (char === quoteChar && inQuotes) {
113
+ inQuotes = false;
114
+ quoteChar = "";
115
+ if (!(char === '"' || char === "'")) {
116
+ if (inBrackets) {
117
+ bracketContent += char;
118
+ } else {
119
+ current += char;
120
+ }
121
+ }
122
+ continue;
123
+ }
124
+ if (inQuotes) {
125
+ if (inBrackets) {
126
+ bracketContent += char;
127
+ } else {
128
+ current += char;
129
+ }
130
+ continue;
131
+ }
132
+ if (char === "[" && !inBrackets) {
133
+ if (current) {
134
+ segments.push({ type: "property", value: current, raw: current });
135
+ current = "";
136
+ }
137
+ inBrackets = true;
138
+ bracketContent = "";
139
+ continue;
140
+ }
141
+ if (char === "]" && inBrackets && !inQuotes) {
142
+ inBrackets = false;
143
+ const segment = parseBracketContent(bracketContent);
144
+ segments.push(segment);
145
+ continue;
146
+ }
147
+ let lastDot = segments.length > 0 ? segments[segments.length - 1] : null;
148
+ if (char === "." && !inBrackets && !inQuotes) {
149
+ if (nextChar === ".") {
150
+ const l = selector.split("..")[0];
151
+ segments.push({ type: "property", value: l, raw: l });
152
+ segments.push({ type: "descendant", value: "..", raw: ".." });
153
+ i++;
154
+ } else if (current) {
155
+ if (current === "*") {
156
+ segments.push({ type: "wildcard", value: current, raw: current });
157
+ } else {
158
+ segments.push({ type: "property", value: current, raw: current });
159
+ }
160
+ current = "";
161
+ }
162
+ continue;
163
+ }
164
+ if (inBrackets) {
165
+ bracketContent += char;
166
+ } else {
167
+ if (lastDot && lastDot.type !== "descendant") {
168
+ current += char;
169
+ } else {
170
+ const l = selector.split(lastDot?.raw)[1];
171
+ if (l !== void 0) {
172
+ current = l;
173
+ } else {
174
+ current += char;
175
+ }
176
+ }
177
+ }
178
+ }
179
+ if (current) {
180
+ segments.push({ type: "property", value: current, raw: current });
181
+ }
182
+ return segments.map((segment) => {
183
+ if (segment.type === "property" && typeof segment.value === "string") {
184
+ if (/^-?\d+$/.test(segment.value)) {
185
+ const num = parseInt(segment.value, 10);
186
+ if (!isNaN(num)) {
187
+ return { ...segment, type: "index", value: num };
188
+ }
189
+ }
190
+ }
191
+ return segment;
192
+ });
193
+ };
194
+ var createFilterFunction = (expr) => {
195
+ const safeExpr = expr.replace(/@\.([a-zA-Z_$][\w$]*)/g, (_, prop) => `item.${prop}`).replace(/@/g, "item");
196
+ try {
197
+ return new Function("item", `return ${safeExpr}`);
198
+ } catch (error) {
199
+ throw new Error(`Invalid filter expression: ${expr}`);
200
+ }
201
+ };
202
+ var stringifySelector = (segments) => {
203
+ const parts = [];
204
+ for (let i = 0; i < segments.length; i++) {
205
+ const segment = segments[i];
206
+ const prevSegment = i > 0 ? segments[i - 1] : null;
207
+ switch (segment.type) {
208
+ case "property":
209
+ const needsQuotes = /[\.\[\]\s]/.test(String(segment.value));
210
+ if (needsQuotes) {
211
+ parts.push(`["${segment.value}"]`);
212
+ } else {
213
+ if (prevSegment && prevSegment.type !== "descendant") {
214
+ parts.push(".");
215
+ }
216
+ parts.push(String(segment.value));
217
+ }
218
+ break;
219
+ case "index":
220
+ parts.push(`[${segment.value}]`);
221
+ break;
222
+ case "wildcard":
223
+ if (segment.value === "[]") {
224
+ parts.push("[]");
225
+ } else {
226
+ parts.push("[*]");
227
+ }
228
+ break;
229
+ case "slice":
230
+ const [start, end] = segment.value;
231
+ parts.push(`[${start}:${end === Infinity ? "" : end}]`);
232
+ break;
233
+ case "union":
234
+ const indices = segment.value;
235
+ parts.push(`[${indices.join(",")}]`);
236
+ break;
237
+ case "filter":
238
+ parts.push(`[?(${segment.raw?.slice(2, -1) || ""})]`);
239
+ break;
240
+ case "descendant":
241
+ parts.push("..");
242
+ break;
243
+ }
244
+ }
245
+ return parts.join("").replace(/\.\[/g, "[");
246
+ };
247
+ var validateSelector = (selector, options = {}) => {
248
+ if (Array.isArray(selector)) {
249
+ return selector.map(
250
+ (sel) => validateSelector(sel, options)
251
+ );
252
+ }
253
+ if (!/^[a-zA-Z]/.test(selector)) {
254
+ return {
255
+ valid: false,
256
+ error: `Selector starts with '.'`,
257
+ type: detectSelectorType(selector)
258
+ };
259
+ }
260
+ if (!/[a-zA-Z]$/.test(selector)) {
261
+ return {
262
+ valid: false,
263
+ error: `Selector end with '.'`,
264
+ type: detectSelectorType(selector)
265
+ };
266
+ }
267
+ try {
268
+ const segments = parseSelector(selector, { throwOnError: true });
269
+ const type = detectSelectorType(selector);
270
+ if (options.allowedTypes) {
271
+ if (!options.allowedTypes.includes(type)) {
272
+ return {
273
+ valid: false,
274
+ error: `Selector type ${type} not allowed. Allowed: ${options.allowedTypes.join(
275
+ ", "
276
+ )}`,
277
+ type
278
+ };
279
+ }
280
+ }
281
+ return { valid: true, type: detectSelectorType(selector) };
282
+ } catch (error) {
283
+ return { valid: false, error: error.message };
284
+ }
285
+ };
286
+ var detectSelectorType = (selector) => {
287
+ if (selector.includes("..")) return "descendant";
288
+ if (selector.includes("[?(")) return "filter";
289
+ if (selector.includes("[:") || selector.includes("[0:")) return "slice";
290
+ if (/\[[^\]]*,[^\]]*\]/.test(selector)) return "union";
291
+ if (selector.includes("[*]") || selector.includes(".*.")) return "wildcard";
292
+ if (selector.includes("[]")) return "array-wildcard";
293
+ if (selector.includes("[") && selector.includes("]")) return "bracket";
294
+ return "dot";
295
+ };
296
+ var createSelector = (template, replacements) => {
297
+ return template.replace(/\{(\w+)\}/g, (_, key) => {
298
+ if (key in replacements) {
299
+ return String(replacements[key]);
300
+ }
301
+ return `{${key}}`;
302
+ });
303
+ };