@fluixi/utils 1.0.0-alpha.53

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 (354) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +73 -0
  3. package/dist/index.cjs +1 -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 +1 -0
  8. package/dist/lib/array/advanced.cjs +1 -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 +1 -0
  13. package/dist/lib/array/array.cjs +1 -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 +1 -0
  18. package/dist/lib/array/index.cjs +1 -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 +1 -0
  23. package/dist/lib/array/utils.cjs +1 -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 +1 -0
  28. package/dist/lib/color/color.cjs +1 -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 +1 -0
  33. package/dist/lib/color/constants.cjs +1 -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 +1 -0
  38. package/dist/lib/color/conversions.cjs +1 -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 +1 -0
  43. package/dist/lib/color/helpers.cjs +1 -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 +1 -0
  48. package/dist/lib/color/index.cjs +1 -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 +1 -0
  53. package/dist/lib/color/types.cjs +1 -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 +1 -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 +1 -0
  63. package/dist/lib/compare/comparators.cjs +1 -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 +1 -0
  68. package/dist/lib/compare/index.cjs +1 -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 +1 -0
  73. package/dist/lib/crypto/hash.cjs +1 -0
  74. package/dist/lib/crypto/hash.d.ts +6 -0
  75. package/dist/lib/crypto/hash.d.ts.map +1 -0
  76. package/dist/lib/crypto/hash.js +53 -0
  77. package/dist/lib/crypto/hash.mjs +1 -0
  78. package/dist/lib/crypto/index.cjs +1 -0
  79. package/dist/lib/crypto/index.d.ts +2 -0
  80. package/dist/lib/crypto/index.d.ts.map +1 -0
  81. package/dist/lib/crypto/index.js +1 -0
  82. package/dist/lib/crypto/index.mjs +1 -0
  83. package/dist/lib/dom/events.cjs +1 -0
  84. package/dist/lib/dom/events.d.ts +159 -0
  85. package/dist/lib/dom/events.d.ts.map +1 -0
  86. package/dist/lib/dom/events.js +50 -0
  87. package/dist/lib/dom/events.mjs +1 -0
  88. package/dist/lib/dom/index.cjs +1 -0
  89. package/dist/lib/dom/index.d.ts +3 -0
  90. package/dist/lib/dom/index.d.ts.map +1 -0
  91. package/dist/lib/dom/index.js +2 -0
  92. package/dist/lib/dom/index.mjs +1 -0
  93. package/dist/lib/dom/utils.cjs +1 -0
  94. package/dist/lib/dom/utils.d.ts +6 -0
  95. package/dist/lib/dom/utils.d.ts.map +1 -0
  96. package/dist/lib/dom/utils.js +37 -0
  97. package/dist/lib/dom/utils.mjs +1 -0
  98. package/dist/lib/functions/functions.cjs +1 -0
  99. package/dist/lib/functions/functions.d.ts +329 -0
  100. package/dist/lib/functions/functions.d.ts.map +1 -0
  101. package/dist/lib/functions/functions.js +585 -0
  102. package/dist/lib/functions/functions.mjs +1 -0
  103. package/dist/lib/functions/index.cjs +1 -0
  104. package/dist/lib/functions/index.d.ts +3 -0
  105. package/dist/lib/functions/index.d.ts.map +1 -0
  106. package/dist/lib/functions/index.js +1 -0
  107. package/dist/lib/functions/index.mjs +1 -0
  108. package/dist/lib/functions/types.cjs +1 -0
  109. package/dist/lib/functions/types.d.ts +2 -0
  110. package/dist/lib/functions/types.d.ts.map +1 -0
  111. package/dist/lib/functions/types.js +1 -0
  112. package/dist/lib/functions/types.mjs +0 -0
  113. package/dist/lib/helpers.cjs +1 -0
  114. package/dist/lib/helpers.d.ts +13 -0
  115. package/dist/lib/helpers.d.ts.map +1 -0
  116. package/dist/lib/helpers.js +66 -0
  117. package/dist/lib/helpers.mjs +1 -0
  118. package/dist/lib/index.cjs +1 -0
  119. package/dist/lib/index.d.ts +6 -0
  120. package/dist/lib/index.d.ts.map +1 -0
  121. package/dist/lib/index.js +8 -0
  122. package/dist/lib/index.mjs +1 -0
  123. package/dist/lib/maths/constants.cjs +1 -0
  124. package/dist/lib/maths/constants.d.ts +84 -0
  125. package/dist/lib/maths/constants.d.ts.map +1 -0
  126. package/dist/lib/maths/constants.js +79 -0
  127. package/dist/lib/maths/constants.mjs +1 -0
  128. package/dist/lib/maths/fn/advanced.cjs +1 -0
  129. package/dist/lib/maths/fn/advanced.d.ts +149 -0
  130. package/dist/lib/maths/fn/advanced.d.ts.map +1 -0
  131. package/dist/lib/maths/fn/advanced.js +264 -0
  132. package/dist/lib/maths/fn/advanced.mjs +1 -0
  133. package/dist/lib/maths/fn/basic.cjs +1 -0
  134. package/dist/lib/maths/fn/basic.d.ts +182 -0
  135. package/dist/lib/maths/fn/basic.d.ts.map +1 -0
  136. package/dist/lib/maths/fn/basic.js +343 -0
  137. package/dist/lib/maths/fn/basic.mjs +1 -0
  138. package/dist/lib/maths/fn/complex.cjs +1 -0
  139. package/dist/lib/maths/fn/complex.d.ts +153 -0
  140. package/dist/lib/maths/fn/complex.d.ts.map +1 -0
  141. package/dist/lib/maths/fn/complex.js +383 -0
  142. package/dist/lib/maths/fn/complex.mjs +1 -0
  143. package/dist/lib/maths/fn/index.cjs +1 -0
  144. package/dist/lib/maths/fn/index.d.ts +10 -0
  145. package/dist/lib/maths/fn/index.d.ts.map +1 -0
  146. package/dist/lib/maths/fn/index.js +9 -0
  147. package/dist/lib/maths/fn/index.mjs +1 -0
  148. package/dist/lib/maths/fn/trigo.cjs +1 -0
  149. package/dist/lib/maths/fn/trigo.d.ts +147 -0
  150. package/dist/lib/maths/fn/trigo.d.ts.map +1 -0
  151. package/dist/lib/maths/fn/trigo.js +227 -0
  152. package/dist/lib/maths/fn/trigo.mjs +1 -0
  153. package/dist/lib/maths/fn/vector.cjs +1 -0
  154. package/dist/lib/maths/fn/vector.d.ts +512 -0
  155. package/dist/lib/maths/fn/vector.d.ts.map +1 -0
  156. package/dist/lib/maths/fn/vector.js +1136 -0
  157. package/dist/lib/maths/fn/vector.mjs +1 -0
  158. package/dist/lib/maths/formatter.cjs +1 -0
  159. package/dist/lib/maths/formatter.d.ts +35 -0
  160. package/dist/lib/maths/formatter.d.ts.map +1 -0
  161. package/dist/lib/maths/formatter.js +56 -0
  162. package/dist/lib/maths/formatter.mjs +1 -0
  163. package/dist/lib/maths/guards.cjs +1 -0
  164. package/dist/lib/maths/guards.d.ts +166 -0
  165. package/dist/lib/maths/guards.d.ts.map +1 -0
  166. package/dist/lib/maths/guards.js +315 -0
  167. package/dist/lib/maths/guards.mjs +1 -0
  168. package/dist/lib/maths/index.cjs +1 -0
  169. package/dist/lib/maths/index.d.ts +24 -0
  170. package/dist/lib/maths/index.d.ts.map +1 -0
  171. package/dist/lib/maths/index.js +29 -0
  172. package/dist/lib/maths/index.mjs +1 -0
  173. package/dist/lib/maths/parser.cjs +1 -0
  174. package/dist/lib/maths/parser.d.ts +20 -0
  175. package/dist/lib/maths/parser.d.ts.map +1 -0
  176. package/dist/lib/maths/parser.js +78 -0
  177. package/dist/lib/maths/parser.mjs +1 -0
  178. package/dist/lib/maths/random.cjs +1 -0
  179. package/dist/lib/maths/random.d.ts +27 -0
  180. package/dist/lib/maths/random.d.ts.map +1 -0
  181. package/dist/lib/maths/random.js +49 -0
  182. package/dist/lib/maths/random.mjs +1 -0
  183. package/dist/lib/maths/types/advanced.cjs +1 -0
  184. package/dist/lib/maths/types/advanced.d.ts +357 -0
  185. package/dist/lib/maths/types/advanced.d.ts.map +1 -0
  186. package/dist/lib/maths/types/advanced.js +5 -0
  187. package/dist/lib/maths/types/advanced.mjs +0 -0
  188. package/dist/lib/maths/types/basic.cjs +1 -0
  189. package/dist/lib/maths/types/basic.d.ts +95 -0
  190. package/dist/lib/maths/types/basic.d.ts.map +1 -0
  191. package/dist/lib/maths/types/basic.js +5 -0
  192. package/dist/lib/maths/types/basic.mjs +0 -0
  193. package/dist/lib/maths/types/index.cjs +1 -0
  194. package/dist/lib/maths/types/index.d.ts +4 -0
  195. package/dist/lib/maths/types/index.d.ts.map +1 -0
  196. package/dist/lib/maths/types/index.js +3 -0
  197. package/dist/lib/maths/types/index.mjs +0 -0
  198. package/dist/lib/maths/types/negative.cjs +1 -0
  199. package/dist/lib/maths/types/negative.d.ts +51 -0
  200. package/dist/lib/maths/types/negative.d.ts.map +1 -0
  201. package/dist/lib/maths/types/negative.js +5 -0
  202. package/dist/lib/maths/types/negative.mjs +0 -0
  203. package/dist/lib/maths/types/operations.cjs +1 -0
  204. package/dist/lib/maths/types/operations.d.ts +188 -0
  205. package/dist/lib/maths/types/operations.d.ts.map +1 -0
  206. package/dist/lib/maths/types/operations.js +6 -0
  207. package/dist/lib/maths/types/operations.mjs +0 -0
  208. package/dist/lib/object/clone.cjs +1 -0
  209. package/dist/lib/object/clone.d.ts +46 -0
  210. package/dist/lib/object/clone.d.ts.map +1 -0
  211. package/dist/lib/object/clone.js +104 -0
  212. package/dist/lib/object/clone.mjs +1 -0
  213. package/dist/lib/object/diff.cjs +1 -0
  214. package/dist/lib/object/diff.d.ts +203 -0
  215. package/dist/lib/object/diff.d.ts.map +1 -0
  216. package/dist/lib/object/diff.js +805 -0
  217. package/dist/lib/object/diff.mjs +1 -0
  218. package/dist/lib/object/getter-setter.cjs +1 -0
  219. package/dist/lib/object/getter-setter.d.ts +361 -0
  220. package/dist/lib/object/getter-setter.d.ts.map +1 -0
  221. package/dist/lib/object/getter-setter.js +1771 -0
  222. package/dist/lib/object/getter-setter.mjs +1 -0
  223. package/dist/lib/object/index.cjs +6 -0
  224. package/dist/lib/object/index.d.ts +13 -0
  225. package/dist/lib/object/index.d.ts.map +1 -0
  226. package/dist/lib/object/index.js +12 -0
  227. package/dist/lib/object/index.mjs +6 -0
  228. package/dist/lib/object/merge.cjs +1 -0
  229. package/dist/lib/object/merge.d.ts +93 -0
  230. package/dist/lib/object/merge.d.ts.map +1 -0
  231. package/dist/lib/object/merge.js +474 -0
  232. package/dist/lib/object/merge.mjs +1 -0
  233. package/dist/lib/object/object.cjs +1 -0
  234. package/dist/lib/object/object.d.ts +128 -0
  235. package/dist/lib/object/object.d.ts.map +1 -0
  236. package/dist/lib/object/object.js +432 -0
  237. package/dist/lib/object/object.mjs +1 -0
  238. package/dist/lib/object/omit.cjs +1 -0
  239. package/dist/lib/object/omit.d.ts +351 -0
  240. package/dist/lib/object/omit.d.ts.map +1 -0
  241. package/dist/lib/object/omit.js +656 -0
  242. package/dist/lib/object/omit.mjs +1 -0
  243. package/dist/lib/object/reconcile.cjs +1 -0
  244. package/dist/lib/object/reconcile.d.ts +7 -0
  245. package/dist/lib/object/reconcile.d.ts.map +1 -0
  246. package/dist/lib/object/reconcile.js +122 -0
  247. package/dist/lib/object/reconcile.mjs +1 -0
  248. package/dist/lib/object/selector.cjs +1 -0
  249. package/dist/lib/object/selector.d.ts +50 -0
  250. package/dist/lib/object/selector.d.ts.map +1 -0
  251. package/dist/lib/object/selector.js +371 -0
  252. package/dist/lib/object/selector.mjs +1 -0
  253. package/dist/lib/object/sort.cjs +1 -0
  254. package/dist/lib/object/sort.d.ts +149 -0
  255. package/dist/lib/object/sort.d.ts.map +1 -0
  256. package/dist/lib/object/sort.js +298 -0
  257. package/dist/lib/object/sort.mjs +1 -0
  258. package/dist/lib/object/transform.cjs +1 -0
  259. package/dist/lib/object/transform.d.ts +620 -0
  260. package/dist/lib/object/transform.d.ts.map +1 -0
  261. package/dist/lib/object/transform.js +1058 -0
  262. package/dist/lib/object/transform.mjs +1 -0
  263. package/dist/lib/object/types.cjs +1 -0
  264. package/dist/lib/object/types.d.ts +250 -0
  265. package/dist/lib/object/types.d.ts.map +1 -0
  266. package/dist/lib/object/types.js +1 -0
  267. package/dist/lib/object/types.mjs +0 -0
  268. package/dist/lib/object/utils.cjs +6 -0
  269. package/dist/lib/object/utils.d.ts +165 -0
  270. package/dist/lib/object/utils.d.ts.map +1 -0
  271. package/dist/lib/object/utils.js +444 -0
  272. package/dist/lib/object/utils.mjs +6 -0
  273. package/dist/lib/primitive/boolean/boolean.cjs +1 -0
  274. package/dist/lib/primitive/boolean/boolean.d.ts +276 -0
  275. package/dist/lib/primitive/boolean/boolean.d.ts.map +1 -0
  276. package/dist/lib/primitive/boolean/boolean.js +615 -0
  277. package/dist/lib/primitive/boolean/boolean.mjs +1 -0
  278. package/dist/lib/primitive/boolean/index.cjs +1 -0
  279. package/dist/lib/primitive/boolean/index.d.ts +3 -0
  280. package/dist/lib/primitive/boolean/index.d.ts.map +1 -0
  281. package/dist/lib/primitive/boolean/index.js +2 -0
  282. package/dist/lib/primitive/boolean/index.mjs +1 -0
  283. package/dist/lib/primitive/boolean/types.cjs +1 -0
  284. package/dist/lib/primitive/boolean/types.d.ts +14 -0
  285. package/dist/lib/primitive/boolean/types.d.ts.map +1 -0
  286. package/dist/lib/primitive/boolean/types.js +1 -0
  287. package/dist/lib/primitive/boolean/types.mjs +0 -0
  288. package/dist/lib/primitive/date/date.cjs +1 -0
  289. package/dist/lib/primitive/date/date.d.ts +641 -0
  290. package/dist/lib/primitive/date/date.d.ts.map +1 -0
  291. package/dist/lib/primitive/date/date.js +1998 -0
  292. package/dist/lib/primitive/date/date.mjs +1 -0
  293. package/dist/lib/primitive/date/index.cjs +1 -0
  294. package/dist/lib/primitive/date/index.d.ts +3 -0
  295. package/dist/lib/primitive/date/index.d.ts.map +1 -0
  296. package/dist/lib/primitive/date/index.js +2 -0
  297. package/dist/lib/primitive/date/index.mjs +1 -0
  298. package/dist/lib/primitive/date/types.cjs +1 -0
  299. package/dist/lib/primitive/date/types.d.ts +205 -0
  300. package/dist/lib/primitive/date/types.d.ts.map +1 -0
  301. package/dist/lib/primitive/date/types.js +7 -0
  302. package/dist/lib/primitive/date/types.mjs +0 -0
  303. package/dist/lib/primitive/index.cjs +5 -0
  304. package/dist/lib/primitive/index.d.ts +5 -0
  305. package/dist/lib/primitive/index.d.ts.map +1 -0
  306. package/dist/lib/primitive/index.js +4 -0
  307. package/dist/lib/primitive/index.mjs +5 -0
  308. package/dist/lib/primitive/string/index.cjs +5 -0
  309. package/dist/lib/primitive/string/index.d.ts +3 -0
  310. package/dist/lib/primitive/string/index.d.ts.map +1 -0
  311. package/dist/lib/primitive/string/index.js +2 -0
  312. package/dist/lib/primitive/string/index.mjs +5 -0
  313. package/dist/lib/primitive/string/parser-2.cjs +8 -0
  314. package/dist/lib/primitive/string/parser-2.d.ts +17 -0
  315. package/dist/lib/primitive/string/parser-2.d.ts.map +1 -0
  316. package/dist/lib/primitive/string/parser-2.js +656 -0
  317. package/dist/lib/primitive/string/parser-2.mjs +8 -0
  318. package/dist/lib/primitive/string/parser.cjs +3 -0
  319. package/dist/lib/primitive/string/parser.d.ts +9 -0
  320. package/dist/lib/primitive/string/parser.d.ts.map +1 -0
  321. package/dist/lib/primitive/string/parser.js +775 -0
  322. package/dist/lib/primitive/string/parser.mjs +3 -0
  323. package/dist/lib/primitive/string/string.cjs +5 -0
  324. package/dist/lib/primitive/string/string.d.ts +535 -0
  325. package/dist/lib/primitive/string/string.d.ts.map +1 -0
  326. package/dist/lib/primitive/string/string.js +1301 -0
  327. package/dist/lib/primitive/string/string.mjs +5 -0
  328. package/dist/lib/primitive/string/types.cjs +1 -0
  329. package/dist/lib/primitive/string/types.d.ts +318 -0
  330. package/dist/lib/primitive/string/types.d.ts.map +1 -0
  331. package/dist/lib/primitive/string/types.js +5 -0
  332. package/dist/lib/primitive/string/types.mjs +0 -0
  333. package/dist/lib/primitive/types.cjs +1 -0
  334. package/dist/lib/primitive/types.d.ts +27 -0
  335. package/dist/lib/primitive/types.d.ts.map +1 -0
  336. package/dist/lib/primitive/types.js +1 -0
  337. package/dist/lib/primitive/types.mjs +0 -0
  338. package/dist/lib/url/index.cjs +1 -0
  339. package/dist/lib/url/index.d.ts +3 -0
  340. package/dist/lib/url/index.d.ts.map +1 -0
  341. package/dist/lib/url/index.js +2 -0
  342. package/dist/lib/url/index.mjs +1 -0
  343. package/dist/lib/url/parser.cjs +1 -0
  344. package/dist/lib/url/parser.d.ts +216 -0
  345. package/dist/lib/url/parser.d.ts.map +1 -0
  346. package/dist/lib/url/parser.js +488 -0
  347. package/dist/lib/url/parser.mjs +1 -0
  348. package/dist/lib/url/types.cjs +1 -0
  349. package/dist/lib/url/types.d.ts +18 -0
  350. package/dist/lib/url/types.d.ts.map +1 -0
  351. package/dist/lib/url/types.js +1 -0
  352. package/dist/lib/url/types.mjs +0 -0
  353. package/dist/tsconfig.lib.tsbuildinfo +1 -0
  354. package/package.json +150 -0
@@ -0,0 +1,5 @@
1
+ function T(e,t={}){let{allowComments:r=!0,allowUnquotedKeys:n=!0,allowSingleQuotes:a=!0,allowTrailingCommas:u=!0,allowUndefined:h=!1}=t,i=e.trim();if(r&&(i=i.replace(/\/\*[\s\S]*?\*\//g,""),i=i.split(`
2
+ `).map(f=>{let b=!1,l="",g=!1;for(let m=0;m<f.length;m++){let y=f[m];if(g){g=!1;continue}if(y==="\\"){g=!0;continue}if(!b&&(y==='"'||y==="'"))b=!0,l=y;else if(b&&y===l)b=!1,l="";else if(!b&&y==="/"&&f[m+1]==="/")return f.substring(0,m)}return f}).join(`
3
+ `)),n&&(i=i.replace(/([{,]\s*)([a-zA-Z_$][a-zA-Z0-9_$]*)(\s*:)/g,'$1"$2"$3')),a){let c="",s=!1,f=!1,b=!1,l=0;for(;l<i.length;){let g=i[l];if(b){c+=g,b=!1,l++;continue}if(g==="\\"){b=!0,c+=g,l++;continue}g==="'"&&!f?s?(c+='"',s=!1):(c+='"',s=!0):(g==='"'&&!s&&(f?f=!1:f=!0),c+=g),l++}i=c}if(u){let c="",s=!1,f="",b=!1,l=0;for(;l<i.length;){let g=i[l];if(b){c+=g,b=!1,l++;continue}if(g==="\\"){b=!0,c+=g,l++;continue}if((g==='"'||g==="'")&&!s)s=!0,f=g,c+=g;else if(s&&g===f)s=!1,f="",c+=g;else if(!s&&g===","){let m=l+1;for(;m<i.length&&/\s/.test(i[m]);)m++;if(m<i.length&&(i[m]==="]"||i[m]==="}")){l++;continue}else c+=g}else c+=g;l++}i=c}if(h){let c="",s=!1,f="",b=!1,l=0;for(;l<i.length;){if(b){c+=i[l],b=!1,l++;continue}if(i[l]==="\\"){b=!0,c+=i[l],l++;continue}if((i[l]==='"'||i[l]==="'")&&!s)s=!0,f=i[l],c+=i[l];else if(s&&i[l]===f)s=!1,f="",c+=i[l];else if(!s&&i.substr(l,9)==="undefined"){let g=l>0?i[l-1]:"",m=l+8<i.length?i[l+9]:"";if(/[a-zA-Z0-9_$]/.test(g)||/[a-zA-Z0-9_$]/.test(m))c+=i[l];else{c+="null",l+=9;continue}}else c+=i[l];l++}i=c}try{return JSON.parse(i)}catch{return}}var S=e=>e.trim(),j=e=>e.trimStart(),L=e=>e.trimEnd(),N=e=>e.replace(/[^a-zA-Z0-9]+(.)/g,(t,r)=>r.toUpperCase()).replace(/^[A-Z]/,t=>t.toLowerCase()),W=e=>e.replace(/[^a-zA-Z0-9]+(.)/g,(t,r)=>r.toUpperCase()).replace(/^[a-z]/,t=>t.toUpperCase()),z=e=>e.replace(/([a-z])([A-Z])/g,"$1-$2").replace(/[_\s]+/g,"-").toLowerCase(),E=e=>e.replace(/([a-z])([A-Z])/g,"$1_$2").replace(/[-\s]+/g,"_").toLowerCase(),Z=e=>e&&e.charAt(0).toUpperCase()+e.slice(1),_=e=>e.replace(/\b\w+/g,t=>t.charAt(0).toUpperCase()+t.slice(1).toLowerCase()),J=(e,t,r=0)=>e.startsWith(t,r),U=(e,t,r)=>e.endsWith(t,r),K=(e,t)=>e.includes(t),F=(e,t)=>e.toLowerCase().includes(t.toLowerCase()),q=(e,t,r)=>typeof e.replaceAll=="function"?e.replaceAll(t,r):e.replace(new RegExp($(t),"g"),r),I=(e,t,r)=>e.replace(new RegExp($(t),"gi"),r),$=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),Q=e=>{let t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;"};return e.replace(/[&<>"'/]/g,r=>t[r]||r)},M=e=>{let t={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'","&#x2F;":"/"};return e.replace(/&(?:amp|lt|gt|quot|#39|#x2F);/g,r=>t[r]||r)},V=(e,t,r="...")=>e.length<=t?e:e.slice(0,t-r.length)+r,D=(e,t,r=" ",n="start")=>{let a=t-e.length;if(a<=0)return e;let u=r.repeat(a);switch(n){case"start":return u+e;case"end":return e+u;case"both":let h=Math.floor(a/2),i=a-h;return r.repeat(h)+e+r.repeat(i)}},H=e=>e.trim().length===0,B=e=>/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(e.trim()),G=e=>{try{return new URL(e),!0}catch{return!1}},X=e=>{try{return new URL(e).hostname.replace(/^www\./,"")}catch{return""}},Y=(e=10,t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789")=>{let r="",n=t.length;for(let a=0;a<e;a++)r+=t.charAt(Math.floor(Math.random()*n));return r},v=(e,t,r=!0)=>{if(!t)return 0;let n=r?e:e.toLowerCase(),a=r?t:t.toLowerCase(),u=0,h=0;for(;(h=n.indexOf(a,h))!==-1;)u++,h+=a.length;return u},k=e=>e.replace(/\s+/g,""),C=e=>e.split("").reverse().join(""),ee=(e,t=!1)=>{let n=(t?e:e.toLowerCase()).replace(/[^a-z0-9]/gi,"");return n===C(n)},te=e=>e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,""),re=(e,t=0,r=0,n="*")=>{if(t+r>=e.length)return e;let a=e.slice(0,t),u=r>0?e.slice(-r):"",h=n.repeat(e.length-t-r);return a+h+u},ne=(e,t=2)=>e.split(/\s+/).slice(0,t).map(r=>r.charAt(0).toUpperCase()).join(""),se=e=>e.replace(/\r\n/g,`
4
+ `).replace(/\r/g,`
5
+ `),ie=(e,t=80)=>{let r=e.split(" "),n=[],a="";for(let u of r){let h=a.length+u.length+1;a.length+u.length<=t?a+=(a?" ":"")+u:(a&&n.push(a),a=u)}return a&&n.push(a),n},ae=e=>typeof e=="string",oe=(e,t)=>{if(e==null)return t!==void 0?t:"";let r=e;if(Array.isArray(r)){if(r.length===0)return t!==void 0?t:""}else if(typeof r=="object"&&Object.keys(r).length===0)return t!==void 0?t:"";if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return String(e);try{return String(e)}catch{return t!==void 0?t:""}},le=(e,t=!0)=>{if(!t||new Set(["&nbsp;"," ","  ","_space_"]).has(e))return e;let n=/[.*+?^${}()|[\]\\]/g;return e.replace(n,"\\$&")};function A(e,t,r,n){if(t<0||t>e.length)throw new Error("Start index out of bounds");if(r<t||r>e.length)throw new Error("End index out of bounds");let a=e.substring(0,t),u=e.substring(r);return a+n+u}var ue=(e,t,r="start",n="")=>{if(!e||!t||t.length===0||e.length<t.length)return e;if(r==="both"){let u=e;return u.startsWith(t)&&(u=A(u,0,t.length,n)),u.endsWith(t)&&(u=A(u,u.length-t.length,u.length,n)),u}return r==="start"&&e.startsWith(t)||r==="end"&&e.endsWith(t)?r==="start"?n+e.substring(t.length):e.substring(0,e.length-t.length)+n:e},ce=(e,t)=>{let{pattern:r,position:n,newValue:a,useRegex:u=!1,flags:h}={...t};if(!e)return e;a||(a="");let i,c=typeof n>"u"||n==="start";if(u&&r instanceof RegExp){i=r;let s=i.source;n&&(n==="start"?r=`^${s}`:n==="end"?r=`${s}$`:r=`^${s}|${s}$`,r=new RegExp(r,h))}else if(u)n&&(n==="start"?r=`^${r}`:n==="end"?r=`${r}$`:n==="both"&&(r=`^${r}|${r}$`)),i=new RegExp(r,h);else{let s=r;i=new RegExp(c?`^${s}`:n==="end"?`${s}$`:n==="both"?`^${s}|${s}$`:`${s}`,h||"g")}return e.replace(i,a)},w=e=>{if(!e.startsWith("[")||!e.endsWith("]"))return e;let t=e.slice(1,-1).trim();if(t==="")return[];try{let c=`[${t}]`,s=JSON.parse(c);if(Array.isArray(s))return s}catch{}let r=[],n="",a=!1,u="",h=!1,i=0;for(let c=0;c<t.length;c++){let s=t[c];if(h){n+=s,h=!1;continue}if(s==="\\"&&a){h=!0;continue}(s==='"'||s==="'")&&!a?(a=!0,u=s):s===u&&a?(a=!1,u=""):s==="["&&!a?(i++,n+=s):s==="]"&&!a?(i--,n+=s):s===","&&!a&&i===0?(r.push(n.trim()),n=""):n+=s}return n.trim()&&r.push(n.trim()),r.map(c=>{let s=c.trim();return s.startsWith('"')&&s.endsWith('"')||s.startsWith("'")&&s.endsWith("'")?s.slice(1,-1):s})},fe=e=>{let t=e.trim();if(t.startsWith("[")&&t.endsWith("]")){let r=w(t);return Array.isArray(r)?r:t}if(t.startsWith("{")&&t.endsWith("}"))try{return JSON.parse(t)}catch{let r=T(t);if(r!==void 0)return r;let n=t.replace(/([{,]\s*)(\w+)(\s*:)/g,'$1"$2"$3').replace(/:\s*'([^']*)'/g,':"$1"');try{return JSON.parse(n)}catch{return t}}try{return JSON.parse(t)}catch{return t}},ge=e=>Array.isArray(e)&&e.every(t=>typeof t=="string"),R=(e,t={})=>{let{delimiters:r=["|"],valueKey:n,labelKey:a,defaultObject:u,trimItems:h=!0,filterEmpty:i=!0,returnObjects:c,parsePrimitives:s=!1,preserveNullUndefined:f=!1}=t,b=c??(n!==void 0||a!==void 0||u!==void 0),l=o=>{let p=u?{...u}:{},d=h?o.trim():o;if(n!==void 0&&(p[n]=s?g(d):d),n!==a||n===void 0&&a===void 0){let x;n===void 0&&a===void 0?x=c?"label":n:x=a,x!==void 0&&(p[x]=d)}return p},g=o=>{let p=o.trim();if(p==="")return f?null:"";if(p.toLowerCase()==="null")return f?null:"null";if(p.toLowerCase()==="undefined")return f?null:"undefined";if(p.toLowerCase()==="true")return!0;if(p.toLowerCase()==="false")return!1;if(/^-?\d+$/.test(p)){let d=parseInt(p,10);return isNaN(d)?h?p:o:d}if(/^-?\d+\.\d+$/.test(p)){let d=parseFloat(p);return isNaN(d)?h?p:o:d}return h?p:o},m=o=>{if(o==null)return f?o:null;if(typeof o=="string"){let d=h?o.trim():o;return o==="null"?null:o==="undefined"?f?void 0:"undefined":o===""?f?null:"":i&&d===""?f?d:null:b?l(d):s?g(d):d}if(typeof o=="number"||typeof o=="boolean")if(b){let d=u?{...u}:{};return n!==void 0&&(d[n]=o),a!==void 0&&a!==n&&(d[a]=String(o)),d}else return o;if(typeof o=="object"&&!Array.isArray(o))return b?u?{...u,...o}:o:n&&o[n]!==void 0?o[n]:o;if(Array.isArray(o)){let d=JSON.stringify(o);return b?l(d):d}let p=String(o);return b?l(p):p};if(Array.isArray(e)){let o=e.map(m);return f?o:o.filter(p=>p!==null)}if(typeof e!="string")return e==null?[]:m(String(e))?[m(String(e))]:[];let y=e.trim();if(y==="")return[];if(y.startsWith("[")&&y.endsWith("]")||y.startsWith("{")&&y.endsWith("}"))try{let o=JSON.parse(y);if(Array.isArray(o)){let d=o.map(m);return f?d:d.filter(x=>x!==null)}let p=m(o);return p?[p]:[]}catch{}let P=w(y);if(Array.isArray(P)){let o=P.map(p=>m(p));return f?o:o.filter(p=>p!==null)}for(let o of r)if(y.includes(o)){let d=(h?y:e).split(o).map(x=>m(x));return f?d:d.filter(x=>x!==null&&(!i||x!==""))}let O=m(y);return O?[O]:[]},pe=(e,t={})=>R(e,{...t,returnObjects:!1}),de=(e,t={})=>R(e,{...t,returnObjects:!0}),he=e=>e.every(t=>t==null||typeof t=="string"||typeof t=="number"||typeof t=="boolean"),be=e=>{let t=e.trim();if(t===""||t.toLowerCase()==="null")return null;if(t.toLowerCase()!=="undefined"){if(t.toLowerCase()==="true")return!0;if(t.toLowerCase()==="false")return!1;if(/^-?\d+$/.test(t)){let r=parseInt(t,10);return isNaN(r)?t:r}if(/^-?\d+\.\d+$/.test(t)){let r=parseFloat(t);return isNaN(r)?t:r}if(/^-?\d+(?:\.\d+)?[eE][+-]?\d+$/.test(t)){let r=parseFloat(t);return isNaN(r)?t:r}return t}},xe={trim:S,trimStart:j,trimEnd:L,toCamelCase:N,toPascalCase:W,toKebabCase:z,toSnakeCase:E,capitalize:Z,toTitleCase:_,startsWith:J,endsWith:U,includes:K,includesIgnoreCase:F,replaceStringByIndex:A,replaceAll:q,replaceAllIgnoreCase:I,escapeRegExp:$,escapeHtml:Q,unescapeHtml:M,truncate:V,pad:D,isEmpty:H,isValidEmail:B,isValidUrl:G,extractDomain:X,randomString:Y,countOccurrences:v,removeWhitespace:k,reverse:C,isPalindrome:ee,slugify:te,mask:re,getInitials:ne,normalizeLineEndings:se,wordWrap:ie,isString:ae,toString:oe,escapeString:le,replaceString:ue,replaceStringPattern:ce,stringToObjectArray:R,parseArrayLiteral:w,parseLiteral:fe,isStringArray:ge,stringToPrimitiveArray:pe,stringToObjectArrayOnly:de,isPrimitiveArray:he,parsePrimitiveValue:be};export{Z as capitalize,v as countOccurrences,xe as default,U as endsWith,Q as escapeHtml,$ as escapeRegExp,le as escapeString,X as extractDomain,ne as getInitials,K as includes,F as includesIgnoreCase,H as isEmpty,ee as isPalindrome,he as isPrimitiveArray,ae as isString,ge as isStringArray,B as isValidEmail,G as isValidUrl,re as mask,se as normalizeLineEndings,D as pad,w as parseArrayLiteral,fe as parseLiteral,be as parsePrimitiveValue,Y as randomString,k as removeWhitespace,q as replaceAll,I as replaceAllIgnoreCase,ue as replaceString,ce as replaceStringPattern,C as reverse,te as slugify,J as startsWith,R as stringToObjectArray,de as stringToObjectArrayOnly,pe as stringToPrimitiveArray,N as toCamelCase,z as toKebabCase,W as toPascalCase,E as toSnakeCase,oe as toString,_ as toTitleCase,S as trim,L as trimEnd,j as trimStart,V as truncate,M as unescapeHtml,ie as wordWrap};
@@ -0,0 +1 @@
1
+ "use strict";var s=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var T=(t,e,x,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of d(e))!g.call(t,n)&&n!==x&&s(t,n,{get:()=>e[n],enumerable:!(r=i(e,n))||r.enumerable});return t};var p=t=>T(s({},"__esModule",{value:!0}),t);var u={};module.exports=p(u);
@@ -0,0 +1,318 @@
1
+ /**
2
+ * Types for filtering and manipulating union string types.
3
+ * @module FilterStringTypes
4
+ */
5
+ /**
6
+ * Filters a union of strings to only those that match a literal string.
7
+ *
8
+ * @template T - Union of string types
9
+ * @template Match - String literal to match
10
+ *
11
+ * @example
12
+ * type T = FilterExact<'apple' | 'banana' | 'orange', 'apple'>; // 'apple'
13
+ */
14
+ export type FilterExact<T extends string, Match extends string> = T extends Match ? T : never;
15
+ /**
16
+ * Filters a union of strings to only those that DO NOT match a literal string.
17
+ *
18
+ * @template T - Union of string types
19
+ * @template ExcludeMatch - String literal to exclude
20
+ *
21
+ * @example
22
+ * type T = FilterExclude<'apple' | 'banana' | 'orange', 'apple'>; // 'banana' | 'orange'
23
+ */
24
+ export type FilterExclude<T extends string, ExcludeMatch extends string> = T extends ExcludeMatch ? never : T;
25
+ /**
26
+ * Filters a union of strings to only those that start with a prefix.
27
+ *
28
+ * @template T - Union of string types
29
+ * @template Prefix - Prefix to match
30
+ *
31
+ * @example
32
+ * type T = FilterStartsWith<'apple' | 'application' | 'banana' | 'app', 'app'>;
33
+ * // 'apple' | 'application' | 'app'
34
+ */
35
+ export type FilterStartsWith<T extends string, Prefix extends string> = T extends `${Prefix}${string}` ? T : never;
36
+ export type ReplaceStartsWith<T extends string, Prefix extends string> = T extends `${Prefix}${infer Rest}` ? Rest : never;
37
+ /**
38
+ * Filters a union of strings to only those that end with a suffix.
39
+ *
40
+ * @template T - Union of string types
41
+ * @template Suffix - Suffix to match
42
+ *
43
+ * @example
44
+ * type T = FilterEndsWith<'apple' | 'pineapple' | 'banana', 'apple'>;
45
+ * // 'apple' | 'pineapple'
46
+ */
47
+ export type FilterEndsWith<T extends string, Suffix extends string> = T extends `${string}${Suffix}` ? T : never;
48
+ /**
49
+ * Filters a union of strings to only those that contain a substring.
50
+ *
51
+ * @template T - Union of string types
52
+ * @template Substring - Substring to match
53
+ *
54
+ * @example
55
+ * type T = FilterContains<'apple' | 'pineapple' | 'banana', 'apple'>;
56
+ * // 'apple' | 'pineapple'
57
+ */
58
+ export type FilterContains<T extends string, Substring extends string> = T extends `${string}${Substring}${string}` ? T : never;
59
+ /**
60
+ * Filters a union of strings to only those that match a pattern using template literals.
61
+ *
62
+ * @template T - Union of string types
63
+ * @template Pattern - Template literal pattern
64
+ *
65
+ * @example
66
+ * type T = FilterPattern<'user_1' | 'user_2' | 'admin_1', `user_${number}`>;
67
+ * // 'user_1' | 'user_2'
68
+ */
69
+ export type FilterPattern<T extends string, Pattern extends string> = T extends Pattern ? T : never;
70
+ /**
71
+ * Filters a union of strings to only those that match a regular expression pattern.
72
+ * Note: TypeScript can't fully validate regex at type level, but we can approximate.
73
+ *
74
+ * @template T - Union of string types
75
+ * @template Pattern - String representation of regex pattern
76
+ *
77
+ * @example
78
+ * type T = FilterRegex<'abc123' | 'def456' | 'xyz', `^[a-z]{3}\\d{3}$`>;
79
+ * // 'abc123' | 'def456'
80
+ */
81
+ export type FilterRegex<T extends string, Pattern extends string> = T extends string ? Pattern extends `^${infer Start}${infer Rest}$` ? FilterRegexDetailed<T, Start, Rest> : never : never;
82
+ type FilterRegexDetailed<T extends string, Start extends string, Rest extends string> = T extends `${infer TStart}${infer TRest}` ? TStart extends Start ? TRest extends Rest ? T : never : never : never;
83
+ /**
84
+ * Filters a union of strings by minimum length.
85
+ *
86
+ * @template T - Union of string types
87
+ * @template MinLength - Minimum length required
88
+ *
89
+ * @example
90
+ * type T = FilterMinLength<'a' | 'ab' | 'abc' | 'abcd', 3>;
91
+ * // 'abc' | 'abcd'
92
+ */
93
+ export type FilterMinLength<T extends string, MinLength extends number> = T extends string ? Length<T> extends infer L ? L extends number ? L extends MinLength ? T : L extends number ? GreaterThanOrEqual<L, MinLength> extends true ? T : never : never : never : never : never;
94
+ /**
95
+ * Filters a union of strings by maximum length.
96
+ *
97
+ * @template T - Union of string types
98
+ * @template MaxLength - Maximum length allowed
99
+ *
100
+ * @example
101
+ * type T = FilterMaxLength<'a' | 'ab' | 'abc' | 'abcd', 3>;
102
+ * // 'a' | 'ab' | 'abc'
103
+ */
104
+ export type FilterMaxLength<T extends string, MaxLength extends number> = T extends string ? Length<T> extends infer L ? L extends number ? L extends MaxLength ? T : L extends number ? LessThanOrEqual<L, MaxLength> extends true ? T : never : never : never : never : never;
105
+ /**
106
+ * Filters a union of strings to only those with a specific length.
107
+ *
108
+ * @template T - Union of string types
109
+ * @template Len - Exact length required
110
+ *
111
+ * @example
112
+ * type T = FilterLength<'a' | 'ab' | 'abc', 2>;
113
+ * // 'ab'
114
+ */
115
+ export type FilterLength<T extends string, Len extends number> = T extends string ? Length<T> extends Len ? T : never : never;
116
+ /**
117
+ * Filters a union of strings to only those that DO NOT start with a prefix.
118
+ *
119
+ * @template T - Union of string types
120
+ * @template Prefix - Prefix to avoid
121
+ *
122
+ * @example
123
+ * type T = FilterNotStartsWith<'apple' | 'banana' | 'apricot', 'ap'>;
124
+ * // 'banana'
125
+ */
126
+ export type FilterNotStartsWith<T extends string, Prefix extends string> = T extends `${Prefix}${string}` ? never : T;
127
+ /**
128
+ * Filters a union of strings to only those that DO NOT end with a suffix.
129
+ *
130
+ * @template T - Union of string types
131
+ * @template Suffix - Suffix to avoid
132
+ *
133
+ * @example
134
+ * type T = FilterNotEndsWith<'apple' | 'banana' | 'pineapple', 'apple'>;
135
+ * // 'banana'
136
+ */
137
+ export type FilterNotEndsWith<T extends string, Suffix extends string> = T extends `${string}${Suffix}` ? never : T;
138
+ /**
139
+ * Filters a union of strings to only those that DO NOT contain a substring.
140
+ *
141
+ * @template T - Union of string types
142
+ * @template Substring - Substring to avoid
143
+ *
144
+ * @example
145
+ * type T = FilterNotContains<'apple' | 'banana' | 'pineapple', 'apple'>;
146
+ * // 'banana'
147
+ */
148
+ export type FilterNotContains<T extends string, Substring extends string> = T extends `${string}${Substring}${string}` ? never : T;
149
+ /**
150
+ * Filters a union of strings case-insensitively.
151
+ *
152
+ * @template T - Union of string types
153
+ * @template Match - String to match (case-insensitive)
154
+ *
155
+ * @example
156
+ * type T = FilterCaseInsensitive<'Apple' | 'banana' | 'APPLE', 'apple'>;
157
+ * // 'Apple' | 'APPLE'
158
+ */
159
+ export type FilterCaseInsensitive<T extends string, Match extends string> = T extends string ? Uppercase<T> extends Uppercase<Match> ? T : never : never;
160
+ /**
161
+ * Filters a union of strings to only lowercase strings.
162
+ *
163
+ * @template T - Union of string types
164
+ *
165
+ * @example
166
+ * type T = FilterLowercase<'apple' | 'BANANA' | 'Apple'>;
167
+ * // 'apple'
168
+ */
169
+ export type FilterLowercase<T extends string> = T extends Lowercase<T> ? T : never;
170
+ /**
171
+ * Filters a union of strings to only uppercase strings.
172
+ *
173
+ * @template T - Union of string types
174
+ *
175
+ * @example
176
+ * type T = FilterUppercase<'APPLE' | 'banana' | 'Apple'>;
177
+ * // 'APPLE'
178
+ */
179
+ export type FilterUppercase<T extends string> = T extends Uppercase<T> ? T : never;
180
+ /**
181
+ * Extracts the prefix from strings that match a pattern.
182
+ *
183
+ * @template T - Union of string types
184
+ * @template Prefix - Prefix to extract
185
+ *
186
+ * @example
187
+ * type T = ExtractPrefix<'apple_pie' | 'banana_split' | 'apple_juice', 'apple_'>;
188
+ * // 'apple_pie' | 'apple_juice'
189
+ */
190
+ export type ExtractPrefix<T extends string, Prefix extends string> = FilterStartsWith<T, Prefix>;
191
+ /**
192
+ * Extracts the suffix from strings that match a pattern.
193
+ *
194
+ * @template T - Union of string types
195
+ * @template Suffix - Suffix to extract
196
+ *
197
+ * @example
198
+ * type T = ExtractSuffix<'apple_pie' | 'banana_split' | 'cherry_pie', '_pie'>;
199
+ * // 'apple_pie' | 'cherry_pie'
200
+ */
201
+ export type ExtractSuffix<T extends string, Suffix extends string> = FilterEndsWith<T, Suffix>;
202
+ /**
203
+ * Removes a prefix from matching strings and returns the rest.
204
+ *
205
+ * @template T - Union of string types
206
+ * @template Prefix - Prefix to remove
207
+ *
208
+ * @example
209
+ * type T = RemovePrefix<'apple_pie' | 'banana_split' | 'apple_juice', 'apple_'>;
210
+ * // 'pie' | 'juice'
211
+ */
212
+ export type RemovePrefix<T extends string, Prefix extends string> = T extends `${Prefix}${infer Rest}` ? Rest : never;
213
+ /**
214
+ * Removes a suffix from matching strings and returns the rest.
215
+ *
216
+ * @template T - Union of string types
217
+ * @template Suffix - Suffix to remove
218
+ *
219
+ * @example
220
+ * type T = RemoveSuffix<'apple_pie' | 'banana_split' | 'cherry_pie', '_pie'>;
221
+ * // 'apple' | 'cherry'
222
+ */
223
+ export type RemoveSuffix<T extends string, Suffix extends string> = T extends `${infer Rest}${Suffix}` ? Rest : never;
224
+ /**
225
+ * Intersection of two string unions.
226
+ *
227
+ * @template A - First union of strings
228
+ * @template B - Second union of strings
229
+ *
230
+ * @example
231
+ * type T = StringIntersection<'a' | 'b' | 'c', 'b' | 'c' | 'd'>;
232
+ * // 'b' | 'c'
233
+ */
234
+ export type StringIntersection<A extends string, B extends string> = A extends B ? A : never;
235
+ /**
236
+ * Difference between two string unions (A - B).
237
+ *
238
+ * @template A - First union of strings
239
+ * @template B - Second union of strings to subtract
240
+ *
241
+ * @example
242
+ * type T = StringDifference<'a' | 'b' | 'c', 'b' | 'c' | 'd'>;
243
+ * // 'a'
244
+ */
245
+ export type StringDifference<A extends string, B extends string> = A extends B ? never : A;
246
+ /**
247
+ * Union of two string unions (deduplicated).
248
+ *
249
+ * @template A - First union of strings
250
+ * @template B - Second union of strings
251
+ *
252
+ * @example
253
+ * type T = StringUnion<'a' | 'b', 'b' | 'c'>;
254
+ * // 'a' | 'b' | 'c'
255
+ */
256
+ export type StringUnion<A extends string, B extends string> = A | B;
257
+ /**
258
+ * Symmetric difference between two string unions (elements in A or B but not both).
259
+ *
260
+ * @template A - First union of strings
261
+ * @template B - Second union of strings
262
+ *
263
+ * @example
264
+ * type T = StringSymmetricDifference<'a' | 'b' | 'c', 'b' | 'c' | 'd'>;
265
+ * // 'a' | 'd'
266
+ */
267
+ export type StringSymmetricDifference<A extends string, B extends string> = StringUnion<StringDifference<A, B>, StringDifference<B, A>>;
268
+ type Tuple<N extends number, T = unknown, Acc extends T[] = []> = Acc['length'] extends N ? Acc : Tuple<N, T, [...Acc, T]>;
269
+ type TupleToNumber<T extends unknown[]> = T['length'];
270
+ type Add<A extends number, B extends number> = TupleToNumber<[...Tuple<A>, ...Tuple<B>]> & number;
271
+ type Length<S extends string, Depth extends number = 0> = Depth extends 0 ? never : S extends `${string}${string}${string}${string}${string}${string}${string}${string}${string}${string}${infer Rest}` ? Add<10, Length<Rest, Decrement<Depth>>> : S extends `${string}${string}${string}${string}${string}` ? Add<5, Length<DropFirstN<S, 5>, Decrement<Depth>>> : S extends `${string}${string}` ? Add<2, Length<DropFirstN<S, 2>, Decrement<Depth>>> : S extends `${string}` ? 1 : 0;
272
+ type DropFirstN<S extends string, N extends number, Acc extends string = ''> = N extends 0 ? `${Acc}${S}` : S extends `${infer First}${infer Rest}` ? DropFirstN<Rest, Decrement<N>, `${Acc}`> : Acc;
273
+ type LessThanOrEqual<A extends number, B extends number> = A extends B ? true : A extends number ? B extends number ? `${A}` extends `-${infer NA}` ? `${B}` extends `-${infer NB}` ? NA extends NB ? true : never : true : `${B}` extends `-${string}` ? false : never : never : never;
274
+ type GreaterThanOrEqual<A extends number, B extends number> = A extends B ? true : LessThanOrEqual<B, A>;
275
+ type Decrement<N extends number> = N extends 0 ? 0 : N extends 1 ? 0 : N extends 2 ? 1 : N extends 3 ? 2 : N extends 4 ? 3 : N extends 5 ? 4 : N extends 6 ? 5 : N extends 7 ? 6 : N extends 8 ? 7 : N extends 9 ? 8 : N extends 10 ? 9 : number;
276
+ /**
277
+ * Checks if a string union is empty (never).
278
+ *
279
+ * @template T - Union of strings to check
280
+ *
281
+ * @example
282
+ * type T = IsEmptyUnion<'a' | 'b'>; // false
283
+ * type U = IsEmptyUnion<never>; // true
284
+ */
285
+ export type IsEmptyUnion<T> = [
286
+ T
287
+ ] extends [never] ? true : false;
288
+ /**
289
+ * Converts a string union to a tuple type (preserves order as much as possible).
290
+ *
291
+ * @template T - Union of strings
292
+ *
293
+ * @example
294
+ * type T = UnionToTuple<'a' | 'b' | 'c'>;
295
+ * // ['a', 'b', 'c'] or some permutation
296
+ */
297
+ export type UnionToTuple<T extends string> = UnionToTupleRec<T, []>;
298
+ type UnionToTupleRec<T extends string, Acc extends string[]> = IsEmptyUnion<T> extends true ? Acc : T extends infer U extends string ? UnionToTupleRec<Exclude<T, U>, [...Acc, U]> : never;
299
+ /**
300
+ * Gets the first string in a union.
301
+ *
302
+ * @template T - Union of strings
303
+ *
304
+ * @example
305
+ * type T = FirstInUnion<'a' | 'b' | 'c'>; // 'a'
306
+ */
307
+ export type FirstInUnion<T extends string> = UnionToTuple<T>[0] extends infer First extends string ? First : never;
308
+ /**
309
+ * Gets the last string in a union.
310
+ *
311
+ * @template T - Union of strings
312
+ *
313
+ * @example
314
+ * type T = LastInUnion<'a' | 'b' | 'c'>; // 'c'
315
+ */
316
+ export type LastInUnion<T extends string> = UnionToTuple<T> extends [...any[], infer Last extends string] ? Last : never;
317
+ export {};
318
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lib/primitive/string/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH;;;;;;;;EAQE;AACF,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,SAAS,MAAM,IAC7D,CAAC,SAAS,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC;AAE7B;;;;;;;;EAQE;AACF,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,EAAE,YAAY,SAAS,MAAM,IACtE,CAAC,SAAS,YAAY,GAAG,KAAK,GAAG,CAAC,CAAC;AAEpC;;;;;;;;;EASE;AACF,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,SAAS,MAAM,IACnE,CAAC,SAAS,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;AAC5C,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,SAAS,MAAM,IACpE,CAAC,SAAS,GAAG,MAAM,GAAG,MAAM,IAAI,EAAE,GAAG,IAAI,GAAG,KAAK,CAAC;AAGnD;;;;;;;;;EASE;AACF,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,SAAS,MAAM,IACjE,CAAC,SAAS,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;AAE5C;;;;;;;;;EASE;AACF,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,SAAS,SAAS,MAAM,IACpE,CAAC,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;AAExD;;;;;;;;;EASE;AACF,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,EAAE,OAAO,SAAS,MAAM,IACjE,CAAC,SAAS,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC;AAM/B;;;;;;;;;;EAUE;AACF,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,OAAO,SAAS,MAAM,IAC/D,CAAC,SAAS,MAAM,GACd,OAAO,SAAS,IAAI,MAAM,KAAK,GAAG,MAAM,IAAI,GAAG,GAC7C,mBAAmB,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,GACnC,KAAK,GACL,KAAK,CAAC;AAGX,KAAK,mBAAmB,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,SAAS,MAAM,EAAE,IAAI,SAAS,MAAM,IACnF,CAAC,SAAS,GAAG,MAAM,MAAM,GAAG,MAAM,KAAK,EAAE,GACvC,MAAM,SAAS,KAAK,GAClB,KAAK,SAAS,IAAI,GAAG,CAAC,GAAG,KAAK,GAC9B,KAAK,GACP,KAAK,CAAC;AAET;;;;;;;;;EASE;AACF,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,SAAS,SAAS,MAAM,IACrE,CAAC,SAAS,MAAM,GACd,MAAM,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,GACvB,CAAC,SAAS,MAAM,GACd,CAAC,SAAS,SAAS,GAAG,CAAC,GACrB,CAAC,SAAS,MAAM,GACd,kBAAkB,CAAC,CAAC,EAAE,SAAS,CAAC,SAAS,IAAI,GAAG,CAAC,GAAG,KAAK,GAC3D,KAAK,GACP,KAAK,GACP,KAAK,GACP,KAAK,CAAC;AAET;;;;;;;;;EASE;AACF,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,SAAS,SAAS,MAAM,IACrE,CAAC,SAAS,MAAM,GACd,MAAM,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,GACvB,CAAC,SAAS,MAAM,GACd,CAAC,SAAS,SAAS,GAAG,CAAC,GACrB,CAAC,SAAS,MAAM,GACd,eAAe,CAAC,CAAC,EAAE,SAAS,CAAC,SAAS,IAAI,GAAG,CAAC,GAAG,KAAK,GACxD,KAAK,GACP,KAAK,GACP,KAAK,GACP,KAAK,CAAC;AAET;;;;;;;;;EASE;AACF,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,IAC5D,CAAC,SAAS,MAAM,GACd,MAAM,CAAC,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG,KAAK,GACjC,KAAK,CAAC;AAMT;;;;;;;;;EASE;AACF,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,SAAS,MAAM,IACtE,CAAC,SAAS,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;AAE5C;;;;;;;;;EASE;AACF,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,SAAS,MAAM,IACpE,CAAC,SAAS,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;AAE5C;;;;;;;;;EASE;AACF,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAAE,SAAS,SAAS,MAAM,IACvE,CAAC,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;AAMxD;;;;;;;;;EASE;AACF,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,SAAS,MAAM,IACvE,CAAC,SAAS,MAAM,GACd,SAAS,CAAC,CAAC,CAAC,SAAS,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,GACjD,KAAK,CAAC;AAET;;;;;;;;EAQE;AACF,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,MAAM,IAC3C,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAEpC;;;;;;;;EAQE;AACF,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,MAAM,IAC3C,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAMpC;;;;;;;;;EASE;AACF,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,SAAS,MAAM,IAChE,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAE7B;;;;;;;;;EASE;AACF,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,SAAS,MAAM,IAChE,cAAc,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAE3B;;;;;;;;;EASE;AACF,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,SAAS,MAAM,IAC/D,CAAC,SAAS,GAAG,MAAM,GAAG,MAAM,IAAI,EAAE,GAAG,IAAI,GAAG,KAAK,CAAC;AAEnD;;;;;;;;;EASE;AACF,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,SAAS,MAAM,IAC/D,CAAC,SAAS,GAAG,MAAM,IAAI,GAAG,MAAM,EAAE,GAAG,IAAI,GAAG,KAAK,CAAC;AAMnD;;;;;;;;;EASE;AACF,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,IAChE,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAEzB;;;;;;;;;EASE;AACF,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,IAC9D,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;AAEzB;;;;;;;;;EASE;AACF,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,IACzD,CAAC,GAAG,CAAC,CAAC;AAEP;;;;;;;;;EASE;AACF,MAAM,MAAM,yBAAyB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,IACvE,WAAW,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE5D,KAAK,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,GAAG,OAAO,EAAE,GAAG,SAAS,CAAC,EAAE,GAAG,EAAE,IAC9D,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACzD,KAAK,aAAa,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;AACvD,KAAK,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,IAAI,aAAa,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AAOlG,KAAK,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,SAAS,MAAM,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,GAAG,KAAK,GAChF,CAAC,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,IAAI,EAAE,GACjH,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,GACzC,CAAC,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GACvD,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,GACpD,CAAC,SAAS,GAAG,MAAM,GAAG,MAAM,EAAE,GAC5B,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,GACpD,CAAC,SAAS,GAAG,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAG/B,KAAK,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,GAAG,EAAE,IAC1E,CAAC,SAAS,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,GAC1B,CAAC,SAAS,GAAG,MAAM,KAAK,GAAG,MAAM,IAAI,EAAE,GACrC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,GACxC,GAAG,CAAC;AAGP,KAAK,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,IACtD,CAAC,SAAS,CAAC,GAAG,IAAI,GAClB,CAAC,SAAS,MAAM,GAAG,CAAC,SAAS,MAAM,GACjC,GAAG,CAAC,EAAE,SAAS,IAAI,MAAM,EAAE,EAAE,GAC3B,GAAG,CAAC,EAAE,SAAS,IAAI,MAAM,EAAE,EAAE,GAC3B,EAAE,SAAS,EAAE,GAAG,IAAI,GACpB,KAAK,GACL,IAAI,GACN,GAAG,CAAC,EAAE,SAAS,IAAI,MAAM,EAAE,GAAG,KAAK,GACnC,KAAK,GACP,KAAK,GAAG,KAAK,CAAC;AAEjB,KAAK,kBAAkB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,IACzD,CAAC,SAAS,CAAC,GAAG,IAAI,GAClB,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAIvB,KAAK,SAAS,CAAC,CAAC,SAAS,MAAM,IAC9B,CAAC,SAAS,CAAC,GAAG,CAAC,GACf,CAAC,SAAS,CAAC,GAAG,CAAC,GACf,CAAC,SAAS,CAAC,GAAG,CAAC,GACf,CAAC,SAAS,CAAC,GAAG,CAAC,GACf,CAAC,SAAS,CAAC,GAAG,CAAC,GACf,CAAC,SAAS,CAAC,GAAG,CAAC,GACf,CAAC,SAAS,CAAC,GAAG,CAAC,GACf,CAAC,SAAS,CAAC,GAAG,CAAC,GACf,CAAC,SAAS,CAAC,GAAG,CAAC,GACf,CAAC,SAAS,CAAC,GAAG,CAAC,GACf,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;AAU3B;;;;;;;;EAQE;AACF,MAAM,MAAM,YAAY,CAAC,CAAC,IACzB;IAAC,CAAC;CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AAEpC;;;;;;;;EAQE;AACF,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,MAAM,IACxC,eAAe,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAExB,KAAK,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE,IAC1D,YAAY,CAAC,CAAC,CAAC,SAAS,IAAI,GAAG,GAAG,GAClC,CAAC,SAAS,MAAM,CAAC,SAAS,MAAM,GAC9B,eAAe,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,GAC3C,KAAK,CAAC;AAET;;;;;;;EAOE;AACF,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,MAAM,IACxC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,KAAK,SAAS,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;AAEvE;;;;;;;EAOE;AACF,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,IACvC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,GAAG,EAAE,EAAE,MAAM,IAAI,SAAS,MAAM,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Types for filtering and manipulating union string types.
3
+ * @module FilterStringTypes
4
+ */
5
+ export {};
File without changes
@@ -0,0 +1 @@
1
+ "use strict";var s=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var y=(n,e,d,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of l(e))!p.call(n,t)&&t!==d&&s(n,t,{get:()=>e[t],enumerable:!(r=i(e,t))||r.enumerable});return n};var u=n=>y(s({},"__esModule",{value:!0}),n);var a={};module.exports=u(a);
@@ -0,0 +1,27 @@
1
+ export type Null = null;
2
+ export type IsUndefined<T> = T extends undefined ? true : false;
3
+ export type IsNull<T> = T extends Null ? true : false;
4
+ export type IsNullOrUndefined<T> = IsUndefined<T> extends true ? true : IsNull<T>;
5
+ export type UndefinedType = undefined;
6
+ export type UndefinedOrNullType = UndefinedType | Null;
7
+ export type ClassType = new (...args: any[]) => any;
8
+ export type FnType = (...args: any[]) => any;
9
+ export type IsDefined<T> = IsUndefined<T> extends true ? false : IsNull<T> extends true ? false : true;
10
+ export type StringOrNumber = string | number;
11
+ export type CheckType<T extends any> = {
12
+ is_undefined: T extends typeof undefined ? true : false;
13
+ is_null: T extends typeof undefined ? true : false;
14
+ is_array: T extends Array<any> ? true : false;
15
+ is_object: T extends StringOrNumber ? false : T extends Array<any> ? false : T extends Object ? true : false;
16
+ is_string: T extends String ? true : false;
17
+ is_number: T extends Number ? true : false;
18
+ typeOf: T extends undefined ? 'undefined' : T extends String ? 'string' : T extends Number ? 'number' : T extends Object ? 'object' : 'undefined';
19
+ keys: Array<any>;
20
+ };
21
+ export type CompareFunction = (a: any, b: any) => boolean;
22
+ export type IBool = true | false | null;
23
+ export type NonNullablePrimitiveType = string | number | boolean | symbol | bigint | Date;
24
+ export type PrimitiveType = NonNullablePrimitiveType | null | undefined;
25
+ export type ObjectKind = 'class' | 'instance' | 'function' | 'array' | 'object' | 'primitive' | 'null' | 'date' | 'undefined';
26
+ export type ObjectType = ClassType | FnType | any[] | object | PrimitiveType | UndefinedType | Null;
27
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/primitive/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC;AACxB,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC;AAChE,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;AACtD,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,SAAS,IAAI,GAC1D,IAAI,GACJ,MAAM,CAAC,CAAC,CAAC,CAAC;AACd,MAAM,MAAM,aAAa,GAAG,SAAS,CAAC;AACtC,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG,IAAI,CAAC;AACvD,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;AACpD,MAAM,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;AAC7C,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,SAAS,IAAI,GAClD,KAAK,GACL,MAAM,CAAC,CAAC,CAAC,SAAS,IAAI,GACtB,KAAK,GACL,IAAI,CAAC;AACT,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,CAAC;AAC7C,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,GAAG,IAAI;IACrC,YAAY,EAAE,CAAC,SAAS,OAAO,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC;IACxD,OAAO,EAAE,CAAC,SAAS,OAAO,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC;IACnD,QAAQ,EAAE,CAAC,SAAS,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;IAC9C,SAAS,EAAE,CAAC,SAAS,cAAc,GAC/B,KAAK,GACL,CAAC,SAAS,KAAK,CAAC,GAAG,CAAC,GACpB,KAAK,GACL,CAAC,SAAS,MAAM,GAChB,IAAI,GACJ,KAAK,CAAC;IACV,SAAS,EAAE,CAAC,SAAS,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;IAC3C,SAAS,EAAE,CAAC,SAAS,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;IAC3C,MAAM,EAAE,CAAC,SAAS,SAAS,GACvB,WAAW,GACX,CAAC,SAAS,MAAM,GAChB,QAAQ,GACR,CAAC,SAAS,MAAM,GAChB,QAAQ,GACR,CAAC,SAAS,MAAM,GAChB,QAAQ,GACR,WAAW,CAAC;IAChB,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;CAClB,CAAC;AACF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC;AAC1D,MAAM,MAAM,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;AACxC,MAAM,MAAM,wBAAwB,GAChC,MAAM,GACN,MAAM,GACN,OAAO,GACP,MAAM,GACN,MAAM,GACN,IAAI,CAAC;AACT,MAAM,MAAM,aAAa,GAAG,wBAAwB,GAAG,IAAI,GAAG,SAAS,CAAC;AAExE,MAAM,MAAM,UAAU,GAClB,OAAO,GACP,UAAU,GACV,UAAU,GACV,OAAO,GACP,QAAQ,GACR,WAAW,GACX,MAAM,GACN,MAAM,GACN,WAAW,CAAC;AAEhB,MAAM,MAAM,UAAU,GAClB,SAAS,GACT,MAAM,GACN,GAAG,EAAE,GACL,MAAM,GACN,aAAa,GACb,aAAa,GACb,IAAI,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
File without changes
@@ -0,0 +1 @@
1
+ "use strict";var l=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var R=(t,r)=>{for(var n in r)l(t,n,{get:r[n],enumerable:!0})},b=(t,r,n,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let e of m(r))!f.call(t,e)&&e!==n&&l(t,e,{get:()=>r[e],enumerable:!(s=p(r,e))||s.enumerable});return t};var d=t=>b(l({},"__esModule",{value:!0}),t);var I={};R(I,{addQueryParams:()=>j,buildUrl:()=>A,extractUrls:()=>B,getDomain:()=>Q,getQueryParam:()=>L,getQueryParams:()=>O,getUrlExtension:()=>q,isAbsoluteUrl:()=>g,isRelativeUrl:()=>x,isSameOrigin:()=>D,isValidUrl:()=>P,joinUrl:()=>$,matchesUrlPattern:()=>C,normalizeUrl:()=>E,parseQueryString:()=>y,parseQueryStringAdvanced:()=>S,parseUrl:()=>U,removeQueryParams:()=>w,sanitizeUrl:()=>_,toAbsoluteUrl:()=>W,toQueryString:()=>h,url_parser:()=>u});module.exports=d(I);var u=t=>{try{let r=new URL(t);return{hash:r.hash,host:r.host,hostname:r.hostname,href:r.href,origin:r.origin,pathname:r.pathname,port:r.port,search:r.search,searchParams:r.searchParams.toString(),protocol:r.protocol}}catch{return null}};function U(t){return u(t)}function P(t){try{return new URL(t),!0}catch{return!1}}function g(t){try{return new URL(t),!0}catch{return!1}}function x(t){return!g(t)}function y(t){let r={};return new URLSearchParams(t).forEach((s,e)=>{r[e]=s}),r}function S(t){let r={};return new URLSearchParams(t).forEach((s,e)=>{r[e]?Array.isArray(r[e])?r[e].push(s):r[e]=[r[e],s]:r[e]=s}),r}function h(t,r={}){let{encode:n=!0,arrayFormat:s="repeat"}=r,e=new URLSearchParams;Object.entries(t).forEach(([i,o])=>{o!=null&&(Array.isArray(o)?o.forEach(c=>{s==="brackets"?e.append(`${i}[]`,String(c)):e.append(i,String(c))}):e.append(i,String(o)))});let a=e.toString();return n||(a=decodeURIComponent(a)),a}function j(t,r){try{let n=new URL(t);return Object.entries(r).forEach(([s,e])=>{e==null?n.searchParams.delete(s):Array.isArray(e)?(n.searchParams.delete(s),e.forEach(a=>n.searchParams.append(s,String(a)))):n.searchParams.set(s,String(e))}),n.toString()}catch{return t}}function w(t,...r){try{let n=new URL(t);return r.forEach(s=>n.searchParams.delete(s)),n.toString()}catch{return t}}function L(t,r){try{return new URL(t).searchParams.get(r)}catch{return null}}function O(t,r){try{return new URL(t).searchParams.getAll(r)}catch{return[]}}function A(t){let{protocol:r="https",hostname:n,port:s,pathname:e="",query:a,hash:i}=t,o=`${r}://${n}`;return s&&(o+=`:${s}`),e&&(o+=e.startsWith("/")?e:`/${e}`),a&&Object.keys(a).length>0&&(o+=`?${h(a)}`),i&&(o+=i.startsWith("#")?i:`#${i}`),o}function $(t,...r){try{let n=new URL(t),e=[n.pathname==="/"?"":n.pathname,...r].filter(Boolean).map(a=>a.replace(/^\/+|\/+$/g,""));return n.pathname="/"+e.filter(Boolean).join("/"),n.toString()}catch{return"/"+[t,...r].filter(Boolean).map(s=>s.replace(/^\/+|\/+$/g,"")).join("/")}}function E(t,r={}){let{removeTrailingSlash:n=!0,removeDefaultPort:s=!0,sortQuery:e=!1}=r;try{let a=new URL(t);if(s&&(a.protocol==="http:"&&a.port==="80"||a.protocol==="https:"&&a.port==="443")&&(a.port=""),n&&a.pathname.endsWith("/")&&a.pathname!=="/"&&(a.pathname=a.pathname.slice(0,-1)),e){let i=Array.from(a.searchParams.entries());i.sort((o,c)=>o[0].localeCompare(c[0])),a.search=new URLSearchParams(i).toString()}return a.toString()}catch{return t}}function Q(t,r={}){let{includeSubdomain:n=!1}=r;try{let e=new URL(t).hostname;if(n)return e;let a=e.split(".");return a.length>=2?a.slice(-2).join("."):e}catch{return null}}function q(t){try{let n=new URL(t).pathname,s=n.lastIndexOf("."),e=n.lastIndexOf("/");return s>e&&s<n.length-1?n.slice(s+1):null}catch{return null}}function D(t,r){try{let n=new URL(t),s=new URL(r);return n.origin===s.origin}catch{return!1}}function W(t,r){try{return new URL(t,r).toString()}catch{return t}}function _(t){let r=["javascript:","data:","vbscript:"];try{let n=new URL(t);return r.some(s=>n.protocol===s)?null:t}catch{let n=t.toLowerCase().trim();return r.some(s=>n.startsWith(s))?null:t}}function B(t,r={}){let{unique:n=!0}=r,s=/https?:\/\/[^\s<>"{}|\\^`\]]+/gi,e=t.match(s)||[];return n?Array.from(new Set(e)):e}function C(t,r){try{let n=new URL(t),s=new URL(r);if(s.protocol!=="*:"&&n.protocol!==s.protocol||s.hostname!=="*"&&n.hostname!==s.hostname)return!1;let e=s.pathname.replace(/\*\*/g,".*").replace(/\*/g,"[^/]*").replace(/[.+?^${}()|[\]\\]/g,"\\$&");return new RegExp(`^${e}$`).test(n.pathname)}catch{return!1}}
@@ -0,0 +1,3 @@
1
+ export * from './parser.js';
2
+ export * from './types.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/url/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './parser.js';
2
+ export * from './types.js';
@@ -0,0 +1 @@
1
+ var l=t=>{try{let r=new URL(t);return{hash:r.hash,host:r.host,hostname:r.hostname,href:r.href,origin:r.origin,pathname:r.pathname,port:r.port,search:r.search,searchParams:r.searchParams.toString(),protocol:r.protocol}}catch{return null}};function h(t){return l(t)}function p(t){try{return new URL(t),!0}catch{return!1}}function u(t){try{return new URL(t),!0}catch{return!1}}function m(t){return!u(t)}function f(t){let r={};return new URLSearchParams(t).forEach((e,s)=>{r[s]=e}),r}function R(t){let r={};return new URLSearchParams(t).forEach((e,s)=>{r[s]?Array.isArray(r[s])?r[s].push(e):r[s]=[r[s],e]:r[s]=e}),r}function g(t,r={}){let{encode:n=!0,arrayFormat:e="repeat"}=r,s=new URLSearchParams;Object.entries(t).forEach(([i,o])=>{o!=null&&(Array.isArray(o)?o.forEach(c=>{e==="brackets"?s.append(`${i}[]`,String(c)):s.append(i,String(c))}):s.append(i,String(o)))});let a=s.toString();return n||(a=decodeURIComponent(a)),a}function b(t,r){try{let n=new URL(t);return Object.entries(r).forEach(([e,s])=>{s==null?n.searchParams.delete(e):Array.isArray(s)?(n.searchParams.delete(e),s.forEach(a=>n.searchParams.append(e,String(a)))):n.searchParams.set(e,String(s))}),n.toString()}catch{return t}}function d(t,...r){try{let n=new URL(t);return r.forEach(e=>n.searchParams.delete(e)),n.toString()}catch{return t}}function U(t,r){try{return new URL(t).searchParams.get(r)}catch{return null}}function P(t,r){try{return new URL(t).searchParams.getAll(r)}catch{return[]}}function x(t){let{protocol:r="https",hostname:n,port:e,pathname:s="",query:a,hash:i}=t,o=`${r}://${n}`;return e&&(o+=`:${e}`),s&&(o+=s.startsWith("/")?s:`/${s}`),a&&Object.keys(a).length>0&&(o+=`?${g(a)}`),i&&(o+=i.startsWith("#")?i:`#${i}`),o}function y(t,...r){try{let n=new URL(t),s=[n.pathname==="/"?"":n.pathname,...r].filter(Boolean).map(a=>a.replace(/^\/+|\/+$/g,""));return n.pathname="/"+s.filter(Boolean).join("/"),n.toString()}catch{return"/"+[t,...r].filter(Boolean).map(e=>e.replace(/^\/+|\/+$/g,"")).join("/")}}function S(t,r={}){let{removeTrailingSlash:n=!0,removeDefaultPort:e=!0,sortQuery:s=!1}=r;try{let a=new URL(t);if(e&&(a.protocol==="http:"&&a.port==="80"||a.protocol==="https:"&&a.port==="443")&&(a.port=""),n&&a.pathname.endsWith("/")&&a.pathname!=="/"&&(a.pathname=a.pathname.slice(0,-1)),s){let i=Array.from(a.searchParams.entries());i.sort((o,c)=>o[0].localeCompare(c[0])),a.search=new URLSearchParams(i).toString()}return a.toString()}catch{return t}}function j(t,r={}){let{includeSubdomain:n=!1}=r;try{let s=new URL(t).hostname;if(n)return s;let a=s.split(".");return a.length>=2?a.slice(-2).join("."):s}catch{return null}}function w(t){try{let n=new URL(t).pathname,e=n.lastIndexOf("."),s=n.lastIndexOf("/");return e>s&&e<n.length-1?n.slice(e+1):null}catch{return null}}function L(t,r){try{let n=new URL(t),e=new URL(r);return n.origin===e.origin}catch{return!1}}function O(t,r){try{return new URL(t,r).toString()}catch{return t}}function A(t){let r=["javascript:","data:","vbscript:"];try{let n=new URL(t);return r.some(e=>n.protocol===e)?null:t}catch{let n=t.toLowerCase().trim();return r.some(e=>n.startsWith(e))?null:t}}function $(t,r={}){let{unique:n=!0}=r,e=/https?:\/\/[^\s<>"{}|\\^`\]]+/gi,s=t.match(e)||[];return n?Array.from(new Set(s)):s}function E(t,r){try{let n=new URL(t),e=new URL(r);if(e.protocol!=="*:"&&n.protocol!==e.protocol||e.hostname!=="*"&&n.hostname!==e.hostname)return!1;let s=e.pathname.replace(/\*\*/g,".*").replace(/\*/g,"[^/]*").replace(/[.+?^${}()|[\]\\]/g,"\\$&");return new RegExp(`^${s}$`).test(n.pathname)}catch{return!1}}export{b as addQueryParams,x as buildUrl,$ as extractUrls,j as getDomain,U as getQueryParam,P as getQueryParams,w as getUrlExtension,u as isAbsoluteUrl,m as isRelativeUrl,L as isSameOrigin,p as isValidUrl,y as joinUrl,E as matchesUrlPattern,S as normalizeUrl,f as parseQueryString,R as parseQueryStringAdvanced,h as parseUrl,d as removeQueryParams,A as sanitizeUrl,O as toAbsoluteUrl,g as toQueryString,l as url_parser};
@@ -0,0 +1 @@
1
+ "use strict";var l=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var R=(t,r)=>{for(var n in r)l(t,n,{get:r[n],enumerable:!0})},b=(t,r,n,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let e of m(r))!f.call(t,e)&&e!==n&&l(t,e,{get:()=>r[e],enumerable:!(s=p(r,e))||s.enumerable});return t};var d=t=>b(l({},"__esModule",{value:!0}),t);var I={};R(I,{addQueryParams:()=>j,buildUrl:()=>A,extractUrls:()=>B,getDomain:()=>Q,getQueryParam:()=>L,getQueryParams:()=>O,getUrlExtension:()=>q,isAbsoluteUrl:()=>g,isRelativeUrl:()=>y,isSameOrigin:()=>D,isValidUrl:()=>P,joinUrl:()=>$,matchesUrlPattern:()=>C,normalizeUrl:()=>E,parseQueryString:()=>x,parseQueryStringAdvanced:()=>S,parseUrl:()=>U,removeQueryParams:()=>w,sanitizeUrl:()=>_,toAbsoluteUrl:()=>W,toQueryString:()=>h,url_parser:()=>u});module.exports=d(I);var u=t=>{try{let r=new URL(t);return{hash:r.hash,host:r.host,hostname:r.hostname,href:r.href,origin:r.origin,pathname:r.pathname,port:r.port,search:r.search,searchParams:r.searchParams.toString(),protocol:r.protocol}}catch{return null}};function U(t){return u(t)}function P(t){try{return new URL(t),!0}catch{return!1}}function g(t){try{return new URL(t),!0}catch{return!1}}function y(t){return!g(t)}function x(t){let r={};return new URLSearchParams(t).forEach((s,e)=>{r[e]=s}),r}function S(t){let r={};return new URLSearchParams(t).forEach((s,e)=>{r[e]?Array.isArray(r[e])?r[e].push(s):r[e]=[r[e],s]:r[e]=s}),r}function h(t,r={}){let{encode:n=!0,arrayFormat:s="repeat"}=r,e=new URLSearchParams;Object.entries(t).forEach(([i,o])=>{o!=null&&(Array.isArray(o)?o.forEach(c=>{s==="brackets"?e.append(`${i}[]`,String(c)):e.append(i,String(c))}):e.append(i,String(o)))});let a=e.toString();return n||(a=decodeURIComponent(a)),a}function j(t,r){try{let n=new URL(t);return Object.entries(r).forEach(([s,e])=>{e==null?n.searchParams.delete(s):Array.isArray(e)?(n.searchParams.delete(s),e.forEach(a=>n.searchParams.append(s,String(a)))):n.searchParams.set(s,String(e))}),n.toString()}catch{return t}}function w(t,...r){try{let n=new URL(t);return r.forEach(s=>n.searchParams.delete(s)),n.toString()}catch{return t}}function L(t,r){try{return new URL(t).searchParams.get(r)}catch{return null}}function O(t,r){try{return new URL(t).searchParams.getAll(r)}catch{return[]}}function A(t){let{protocol:r="https",hostname:n,port:s,pathname:e="",query:a,hash:i}=t,o=`${r}://${n}`;return s&&(o+=`:${s}`),e&&(o+=e.startsWith("/")?e:`/${e}`),a&&Object.keys(a).length>0&&(o+=`?${h(a)}`),i&&(o+=i.startsWith("#")?i:`#${i}`),o}function $(t,...r){try{let n=new URL(t),e=[n.pathname==="/"?"":n.pathname,...r].filter(Boolean).map(a=>a.replace(/^\/+|\/+$/g,""));return n.pathname="/"+e.filter(Boolean).join("/"),n.toString()}catch{return"/"+[t,...r].filter(Boolean).map(s=>s.replace(/^\/+|\/+$/g,"")).join("/")}}function E(t,r={}){let{removeTrailingSlash:n=!0,removeDefaultPort:s=!0,sortQuery:e=!1}=r;try{let a=new URL(t);if(s&&(a.protocol==="http:"&&a.port==="80"||a.protocol==="https:"&&a.port==="443")&&(a.port=""),n&&a.pathname.endsWith("/")&&a.pathname!=="/"&&(a.pathname=a.pathname.slice(0,-1)),e){let i=Array.from(a.searchParams.entries());i.sort((o,c)=>o[0].localeCompare(c[0])),a.search=new URLSearchParams(i).toString()}return a.toString()}catch{return t}}function Q(t,r={}){let{includeSubdomain:n=!1}=r;try{let e=new URL(t).hostname;if(n)return e;let a=e.split(".");return a.length>=2?a.slice(-2).join("."):e}catch{return null}}function q(t){try{let n=new URL(t).pathname,s=n.lastIndexOf("."),e=n.lastIndexOf("/");return s>e&&s<n.length-1?n.slice(s+1):null}catch{return null}}function D(t,r){try{let n=new URL(t),s=new URL(r);return n.origin===s.origin}catch{return!1}}function W(t,r){try{return new URL(t,r).toString()}catch{return t}}function _(t){let r=["javascript:","data:","vbscript:"];try{let n=new URL(t);return r.some(s=>n.protocol===s)?null:t}catch{let n=t.toLowerCase().trim();return r.some(s=>n.startsWith(s))?null:t}}function B(t,r={}){let{unique:n=!0}=r,s=/https?:\/\/[^\s<>"{}|\\^`\]]+/gi,e=t.match(s)||[];return n?Array.from(new Set(e)):e}function C(t,r){try{let n=new URL(t),s=new URL(r);if(s.protocol!=="*:"&&n.protocol!==s.protocol||s.hostname!=="*"&&n.hostname!==s.hostname)return!1;let e=s.pathname.replace(/\*\*/g,".*").replace(/\*/g,"[^/]*").replace(/[.+?^${}()|[\]\\]/g,"\\$&");return new RegExp(`^${e}$`).test(n.pathname)}catch{return!1}}