umt 2.12.2 → 2.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (463) hide show
  1. package/README.md +60 -0
  2. package/module/Array/arraysJoin.js +1 -1
  3. package/module/Array/arraysJoin.js.map +1 -1
  4. package/module/Array/chunk.js +1 -2
  5. package/module/Array/chunk.js.map +1 -1
  6. package/module/Array/generateNumberArray.js +13 -3
  7. package/module/Array/generateNumberArray.js.map +1 -1
  8. package/module/Array/getArraysDiff.js +5 -1
  9. package/module/Array/getArraysDiff.js.map +1 -1
  10. package/module/Array/mergeSort.js +45 -18
  11. package/module/Array/mergeSort.js.map +1 -1
  12. package/module/Array/pop.js +2 -1
  13. package/module/Array/pop.js.map +1 -1
  14. package/module/Array/randomSelect.js +8 -0
  15. package/module/Array/randomSelect.js.map +1 -1
  16. package/module/Array/sortingHelpers/rangeValidator.js +3 -2
  17. package/module/Array/sortingHelpers/rangeValidator.js.map +1 -1
  18. package/module/Array/timSort.js +25 -23
  19. package/module/Array/timSort.js.map +1 -1
  20. package/module/Array/ultraNumberSort.js +206 -133
  21. package/module/Array/ultraNumberSort.js.map +1 -1
  22. package/module/Async/defer.d.ts +18 -0
  23. package/module/Async/defer.js +19 -0
  24. package/module/Async/defer.js.map +1 -0
  25. package/module/Async/index.d.ts +4 -0
  26. package/module/Async/index.js +5 -0
  27. package/module/Async/index.js.map +1 -0
  28. package/module/Async/parallel.d.ts +10 -0
  29. package/module/Async/parallel.js +44 -0
  30. package/module/Async/parallel.js.map +1 -0
  31. package/module/Async/sleep.d.ts +8 -0
  32. package/module/Async/sleep.js +11 -0
  33. package/module/Async/sleep.js.map +1 -0
  34. package/module/Async/timeout.d.ts +10 -0
  35. package/module/Async/timeout.js +22 -0
  36. package/module/Async/timeout.js.map +1 -0
  37. package/module/Color/cmykToRgba.js +6 -7
  38. package/module/Color/cmykToRgba.js.map +1 -1
  39. package/module/Color/hexaToRgba.js +1 -8
  40. package/module/Color/hexaToRgba.js.map +1 -1
  41. package/module/Color/hslaToRgba.d.ts +0 -1
  42. package/module/Color/hslaToRgba.js +7 -22
  43. package/module/Color/hslaToRgba.js.map +1 -1
  44. package/module/Color/rgbaToCmyk.js +0 -11
  45. package/module/Color/rgbaToCmyk.js.map +1 -1
  46. package/module/Color/rgbaToHexA.js +2 -15
  47. package/module/Color/rgbaToHexA.js.map +1 -1
  48. package/module/Color/rgbaToHsla.d.ts +0 -1
  49. package/module/Color/rgbaToHsla.js +0 -12
  50. package/module/Color/rgbaToHsla.js.map +1 -1
  51. package/module/Crypto/constants.d.ts +2 -0
  52. package/module/Crypto/constants.js +3 -0
  53. package/module/Crypto/constants.js.map +1 -0
  54. package/module/Crypto/decodeBase32.js +2 -4
  55. package/module/Crypto/decodeBase32.js.map +1 -1
  56. package/module/Crypto/decodeBase58.js +2 -4
  57. package/module/Crypto/decodeBase58.js.map +1 -1
  58. package/module/Crypto/encodeBase32.js +2 -1
  59. package/module/Crypto/encodeBase32.js.map +1 -1
  60. package/module/Crypto/encodeBase58.js +2 -1
  61. package/module/Crypto/encodeBase58.js.map +1 -1
  62. package/module/DataStructure/index.d.ts +2 -0
  63. package/module/DataStructure/index.js +2 -0
  64. package/module/DataStructure/index.js.map +1 -1
  65. package/module/DataStructure/lruCache.d.ts +139 -0
  66. package/module/DataStructure/lruCache.js +172 -0
  67. package/module/DataStructure/lruCache.js.map +1 -0
  68. package/module/DataStructure/ttlCache.d.ts +139 -0
  69. package/module/DataStructure/ttlCache.js +172 -0
  70. package/module/DataStructure/ttlCache.js.map +1 -0
  71. package/module/Error/flatMapResult.d.ts +23 -0
  72. package/module/Error/flatMapResult.js +28 -0
  73. package/module/Error/flatMapResult.js.map +1 -0
  74. package/module/Error/index.d.ts +3 -0
  75. package/module/Error/index.js +3 -0
  76. package/module/Error/index.js.map +1 -1
  77. package/module/Error/mapResult.d.ts +21 -0
  78. package/module/Error/mapResult.js +27 -0
  79. package/module/Error/mapResult.js.map +1 -0
  80. package/module/Error/matchResult.d.ts +25 -0
  81. package/module/Error/matchResult.js +27 -0
  82. package/module/Error/matchResult.js.map +1 -0
  83. package/module/Error/safeExecute.d.ts +16 -3
  84. package/module/Error/safeExecute.js +5 -2
  85. package/module/Error/safeExecute.js.map +1 -1
  86. package/module/Function/debounce.d.ts +38 -0
  87. package/module/Function/debounce.js +67 -0
  88. package/module/Function/debounce.js.map +1 -0
  89. package/module/Function/index.d.ts +4 -0
  90. package/module/Function/index.js +4 -0
  91. package/module/Function/index.js.map +1 -1
  92. package/module/Function/memoize.d.ts +36 -0
  93. package/module/Function/memoize.js +54 -0
  94. package/module/Function/memoize.js.map +1 -0
  95. package/module/Function/once.d.ts +18 -0
  96. package/module/Function/once.js +29 -0
  97. package/module/Function/once.js.map +1 -0
  98. package/module/Function/throttle.d.ts +25 -0
  99. package/module/Function/throttle.js +55 -0
  100. package/module/Function/throttle.js.map +1 -0
  101. package/module/IP/cidrToLong.d.ts +0 -1
  102. package/module/IP/cidrToLong.js +0 -4
  103. package/module/IP/cidrToLong.js.map +1 -1
  104. package/module/IP/cidrToSubnetMask.d.ts +0 -1
  105. package/module/IP/cidrToSubnetMask.js +0 -1
  106. package/module/IP/cidrToSubnetMask.js.map +1 -1
  107. package/module/IP/getNetworkAddress.d.ts +0 -1
  108. package/module/IP/getNetworkAddress.js +2 -32
  109. package/module/IP/getNetworkAddress.js.map +1 -1
  110. package/module/IP/ipToBinaryString.d.ts +0 -1
  111. package/module/IP/ipToBinaryString.js +2 -25
  112. package/module/IP/ipToBinaryString.js.map +1 -1
  113. package/module/IP/ipToLong.d.ts +0 -1
  114. package/module/IP/ipToLong.js +0 -1
  115. package/module/IP/ipToLong.js.map +1 -1
  116. package/module/IP/isInRange.d.ts +0 -1
  117. package/module/IP/isInRange.js +5 -28
  118. package/module/IP/isInRange.js.map +1 -1
  119. package/module/IP/isPrivateIp.d.ts +0 -1
  120. package/module/IP/isPrivateIp.js +1 -10
  121. package/module/IP/isPrivateIp.js.map +1 -1
  122. package/module/IP/longToIp.d.ts +0 -1
  123. package/module/IP/longToIp.js +0 -8
  124. package/module/IP/longToIp.js.map +1 -1
  125. package/module/IP/subnetMaskToCidr.d.ts +0 -1
  126. package/module/IP/subnetMaskToCidr.js +2 -23
  127. package/module/IP/subnetMaskToCidr.js.map +1 -1
  128. package/module/Iterator/index.d.ts +3 -0
  129. package/module/Iterator/index.js +4 -0
  130. package/module/Iterator/index.js.map +1 -0
  131. package/module/Iterator/lazyFilter.d.ts +10 -0
  132. package/module/Iterator/lazyFilter.js +19 -0
  133. package/module/Iterator/lazyFilter.js.map +1 -0
  134. package/module/Iterator/lazyMap.d.ts +10 -0
  135. package/module/Iterator/lazyMap.js +17 -0
  136. package/module/Iterator/lazyMap.js.map +1 -0
  137. package/module/Iterator/lazyTake.d.ts +10 -0
  138. package/module/Iterator/lazyTake.js +20 -0
  139. package/module/Iterator/lazyTake.js.map +1 -0
  140. package/module/Math/addition.js +20 -4
  141. package/module/Math/addition.js.map +1 -1
  142. package/module/Math/average.js +3 -3
  143. package/module/Math/average.js.map +1 -1
  144. package/module/Math/bitwise.js +1 -1
  145. package/module/Math/bitwise.js.map +1 -1
  146. package/module/Math/calculator/core.js +2 -1
  147. package/module/Math/calculator/core.js.map +1 -1
  148. package/module/Math/calculator/literalExpression.js +1 -1
  149. package/module/Math/clamp.d.ts +16 -0
  150. package/module/Math/clamp.js +19 -0
  151. package/module/Math/clamp.js.map +1 -0
  152. package/module/Math/correlationCoefficient.js +0 -3
  153. package/module/Math/correlationCoefficient.js.map +1 -1
  154. package/module/Math/inRange.d.ts +19 -0
  155. package/module/Math/inRange.js +24 -0
  156. package/module/Math/inRange.js.map +1 -0
  157. package/module/Math/index.d.ts +3 -0
  158. package/module/Math/index.js +3 -0
  159. package/module/Math/index.js.map +1 -1
  160. package/module/Math/median.js +2 -2
  161. package/module/Math/median.js.map +1 -1
  162. package/module/Math/nCr.js +2 -4
  163. package/module/Math/nCr.js.map +1 -1
  164. package/module/Math/percentile.js +2 -5
  165. package/module/Math/percentile.js.map +1 -1
  166. package/module/Math/primeFactorization.js +1 -1
  167. package/module/Math/primeFactorization.js.map +1 -1
  168. package/module/Math/sumPrecise.d.ts +14 -0
  169. package/module/Math/sumPrecise.js +27 -0
  170. package/module/Math/sumPrecise.js.map +1 -0
  171. package/module/Math/uuidv7.js +56 -22
  172. package/module/Math/uuidv7.js.map +1 -1
  173. package/module/Number/formatNumber.d.ts +42 -0
  174. package/module/Number/formatNumber.js +44 -0
  175. package/module/Number/formatNumber.js.map +1 -0
  176. package/module/Number/index.d.ts +3 -0
  177. package/module/Number/index.js +4 -0
  178. package/module/Number/index.js.map +1 -0
  179. package/module/Number/toOrdinal.d.ts +20 -0
  180. package/module/Number/toOrdinal.js +37 -0
  181. package/module/Number/toOrdinal.js.map +1 -0
  182. package/module/Number/toPercentage.d.ts +20 -0
  183. package/module/Number/toPercentage.js +27 -0
  184. package/module/Number/toPercentage.js.map +1 -0
  185. package/module/Object/deepClone.d.ts +15 -0
  186. package/module/Object/deepClone.js +62 -0
  187. package/module/Object/deepClone.js.map +1 -0
  188. package/module/Object/getObjectsCommon.d.ts +23 -0
  189. package/module/Object/getObjectsCommon.js +60 -0
  190. package/module/Object/getObjectsCommon.js.map +1 -0
  191. package/module/Object/getObjectsDiff.d.ts +25 -0
  192. package/module/Object/getObjectsDiff.js +79 -0
  193. package/module/Object/getObjectsDiff.js.map +1 -0
  194. package/module/Object/index.d.ts +6 -0
  195. package/module/Object/index.js +6 -0
  196. package/module/Object/index.js.map +1 -1
  197. package/module/Object/isPlainObject.d.ts +16 -0
  198. package/module/Object/isPlainObject.js +32 -0
  199. package/module/Object/isPlainObject.js.map +1 -0
  200. package/module/Object/mapKeys.d.ts +15 -0
  201. package/module/Object/mapKeys.js +28 -0
  202. package/module/Object/mapKeys.js.map +1 -0
  203. package/module/Object/mapValues.d.ts +15 -0
  204. package/module/Object/mapValues.js +27 -0
  205. package/module/Object/mapValues.js.map +1 -0
  206. package/module/Object/mergeDeep.js +4 -9
  207. package/module/Object/mergeDeep.js.map +1 -1
  208. package/module/Object/omit.d.ts +1 -1
  209. package/module/Object/omit.js.map +1 -1
  210. package/module/Object/pickDeep.js +6 -1
  211. package/module/Object/pickDeep.js.map +1 -1
  212. package/module/Predicate/every.d.ts +14 -0
  213. package/module/Predicate/every.js +22 -0
  214. package/module/Predicate/every.js.map +1 -0
  215. package/module/Predicate/index.d.ts +6 -0
  216. package/module/Predicate/index.js +7 -0
  217. package/module/Predicate/index.js.map +1 -0
  218. package/module/Predicate/isNotNullish.d.ts +11 -0
  219. package/module/Predicate/isNotNullish.js +12 -0
  220. package/module/Predicate/isNotNullish.js.map +1 -0
  221. package/module/Predicate/isNullish.d.ts +11 -0
  222. package/module/Predicate/isNullish.js +12 -0
  223. package/module/Predicate/isNullish.js.map +1 -0
  224. package/module/Predicate/matches.d.ts +11 -0
  225. package/module/Predicate/matches.js +20 -0
  226. package/module/Predicate/matches.js.map +1 -0
  227. package/module/Predicate/not.d.ts +10 -0
  228. package/module/Predicate/not.js +11 -0
  229. package/module/Predicate/not.js.map +1 -0
  230. package/module/Predicate/some.d.ts +15 -0
  231. package/module/Predicate/some.js +23 -0
  232. package/module/Predicate/some.js.map +1 -0
  233. package/module/String/camelCase.js +2 -2
  234. package/module/String/camelCase.js.map +1 -1
  235. package/module/String/escapeHtml.js +1 -1
  236. package/module/String/formatString/getValue.js +1 -1
  237. package/module/String/formatString/getValue.js.map +1 -1
  238. package/module/String/fromBase64.d.ts +0 -1
  239. package/module/String/fromBase64.js +1 -9
  240. package/module/String/fromBase64.js.map +1 -1
  241. package/module/String/fuzzySearch.js +74 -6
  242. package/module/String/fuzzySearch.js.map +1 -1
  243. package/module/String/kebabCase.js +1 -1
  244. package/module/String/kebabCase.js.map +1 -1
  245. package/module/String/levenshteinDistance.js +1 -2
  246. package/module/String/levenshteinDistance.js.map +1 -1
  247. package/module/String/randomString.js +23 -2
  248. package/module/String/randomString.js.map +1 -1
  249. package/module/String/reverseString.js +1 -1
  250. package/module/String/reverseString.js.map +1 -1
  251. package/module/String/slugify.js +1 -1
  252. package/module/String/toHalfWidth.js +2 -2
  253. package/module/String/toHalfWidth.js.map +1 -1
  254. package/module/String/truncate.js +0 -3
  255. package/module/String/truncate.js.map +1 -1
  256. package/module/String/unescapeHtml.js +1 -1
  257. package/module/String/unescapeHtml.js.map +1 -1
  258. package/module/Time/convertTime.js +4 -3
  259. package/module/Time/convertTime.js.map +1 -1
  260. package/module/Tool/escapeRegExp.d.ts +8 -0
  261. package/module/Tool/escapeRegExp.js +11 -0
  262. package/module/Tool/escapeRegExp.js.map +1 -0
  263. package/module/Tool/index.d.ts +1 -0
  264. package/module/Tool/index.js +1 -0
  265. package/module/Tool/index.js.map +1 -1
  266. package/module/URL/buildUrl.d.ts +17 -0
  267. package/module/URL/buildUrl.js +24 -0
  268. package/module/URL/buildUrl.js.map +1 -0
  269. package/module/URL/index.d.ts +4 -0
  270. package/module/URL/index.js +5 -0
  271. package/module/URL/index.js.map +1 -0
  272. package/module/URL/isAbsoluteUrl.d.ts +20 -0
  273. package/module/URL/isAbsoluteUrl.js +23 -0
  274. package/module/URL/isAbsoluteUrl.js.map +1 -0
  275. package/module/URL/joinPath.d.ts +24 -0
  276. package/module/URL/joinPath.js +43 -0
  277. package/module/URL/joinPath.js.map +1 -0
  278. package/module/URL/parseQueryString.d.ts +22 -0
  279. package/module/URL/parseQueryString.js +34 -0
  280. package/module/URL/parseQueryString.js.map +1 -0
  281. package/module/Validate/parseEmail.js +5 -5
  282. package/module/Validate/parseEmail.js.map +1 -1
  283. package/module/es5/Array/arraysJoin.js +1 -1
  284. package/module/es5/Array/chunk.js +3 -2
  285. package/module/es5/Array/generateNumberArray.js +21 -3
  286. package/module/es5/Array/getArraysDiff.js +5 -3
  287. package/module/es5/Array/mergeSort.js +51 -19
  288. package/module/es5/Array/pop.js +2 -7
  289. package/module/es5/Array/randomSelect.js +8 -0
  290. package/module/es5/Array/sortingHelpers/rangeValidator.js +3 -2
  291. package/module/es5/Array/timSort.js +25 -23
  292. package/module/es5/Array/ultraNumberSort.js +221 -207
  293. package/module/es5/Async/defer.d.ts +18 -0
  294. package/module/es5/Async/defer.js +32 -0
  295. package/module/es5/Async/index.d.ts +4 -0
  296. package/module/es5/Async/index.js +49 -0
  297. package/module/es5/Async/parallel.d.ts +10 -0
  298. package/module/es5/Async/parallel.js +48 -0
  299. package/module/es5/Async/sleep.d.ts +8 -0
  300. package/module/es5/Async/sleep.js +18 -0
  301. package/module/es5/Async/timeout.d.ts +10 -0
  302. package/module/es5/Async/timeout.js +29 -0
  303. package/module/es5/Color/cmykToRgba.js +6 -7
  304. package/module/es5/Color/hexaToRgba.js +7 -5
  305. package/module/es5/Color/hslaToRgba.d.ts +0 -1
  306. package/module/es5/Color/hslaToRgba.js +7 -22
  307. package/module/es5/Color/rgbaToCmyk.js +0 -4
  308. package/module/es5/Color/rgbaToHexA.js +2 -6
  309. package/module/es5/Color/rgbaToHsla.d.ts +0 -1
  310. package/module/es5/Color/rgbaToHsla.js +0 -5
  311. package/module/es5/Crypto/constants.d.ts +2 -0
  312. package/module/es5/Crypto/constants.js +8 -0
  313. package/module/es5/Crypto/decodeBase32.js +2 -4
  314. package/module/es5/Crypto/decodeBase58.js +2 -4
  315. package/module/es5/Crypto/encodeBase32.js +2 -1
  316. package/module/es5/Crypto/encodeBase58.js +2 -1
  317. package/module/es5/DataStructure/index.d.ts +2 -0
  318. package/module/es5/DataStructure/index.js +22 -0
  319. package/module/es5/DataStructure/lruCache.d.ts +139 -0
  320. package/module/es5/DataStructure/lruCache.js +205 -0
  321. package/module/es5/DataStructure/ttlCache.d.ts +139 -0
  322. package/module/es5/DataStructure/ttlCache.js +211 -0
  323. package/module/es5/Error/flatMapResult.d.ts +23 -0
  324. package/module/es5/Error/flatMapResult.js +33 -0
  325. package/module/es5/Error/index.d.ts +3 -0
  326. package/module/es5/Error/index.js +33 -0
  327. package/module/es5/Error/mapResult.d.ts +21 -0
  328. package/module/es5/Error/mapResult.js +32 -0
  329. package/module/es5/Error/matchResult.d.ts +25 -0
  330. package/module/es5/Error/matchResult.js +32 -0
  331. package/module/es5/Error/safeExecute.d.ts +16 -3
  332. package/module/es5/Error/safeExecute.js +3 -3
  333. package/module/es5/Function/debounce.d.ts +38 -0
  334. package/module/es5/Function/debounce.js +88 -0
  335. package/module/es5/Function/index.d.ts +4 -0
  336. package/module/es5/Function/index.js +44 -0
  337. package/module/es5/Function/memoize.d.ts +36 -0
  338. package/module/es5/Function/memoize.js +73 -0
  339. package/module/es5/Function/once.d.ts +18 -0
  340. package/module/es5/Function/once.js +37 -0
  341. package/module/es5/Function/throttle.d.ts +25 -0
  342. package/module/es5/Function/throttle.js +69 -0
  343. package/module/es5/IP/cidrToLong.d.ts +0 -1
  344. package/module/es5/IP/cidrToLong.js +0 -4
  345. package/module/es5/IP/cidrToSubnetMask.d.ts +0 -1
  346. package/module/es5/IP/cidrToSubnetMask.js +0 -1
  347. package/module/es5/IP/getNetworkAddress.d.ts +0 -1
  348. package/module/es5/IP/getNetworkAddress.js +2 -31
  349. package/module/es5/IP/ipToBinaryString.d.ts +0 -1
  350. package/module/es5/IP/ipToBinaryString.js +1 -40
  351. package/module/es5/IP/ipToLong.d.ts +0 -1
  352. package/module/es5/IP/ipToLong.js +0 -1
  353. package/module/es5/IP/isInRange.d.ts +0 -1
  354. package/module/es5/IP/isInRange.js +5 -29
  355. package/module/es5/IP/isPrivateIp.d.ts +0 -1
  356. package/module/es5/IP/isPrivateIp.js +3 -12
  357. package/module/es5/IP/longToIp.d.ts +0 -1
  358. package/module/es5/IP/longToIp.js +0 -6
  359. package/module/es5/IP/subnetMaskToCidr.d.ts +0 -1
  360. package/module/es5/IP/subnetMaskToCidr.js +2 -26
  361. package/module/es5/Iterator/index.d.ts +3 -0
  362. package/module/es5/Iterator/index.js +38 -0
  363. package/module/es5/Iterator/lazyFilter.d.ts +10 -0
  364. package/module/es5/Iterator/lazyFilter.js +63 -0
  365. package/module/es5/Iterator/lazyMap.d.ts +10 -0
  366. package/module/es5/Iterator/lazyMap.js +59 -0
  367. package/module/es5/Iterator/lazyTake.d.ts +10 -0
  368. package/module/es5/Iterator/lazyTake.js +65 -0
  369. package/module/es5/Math/addition.js +24 -14
  370. package/module/es5/Math/average.js +3 -5
  371. package/module/es5/Math/bitwise.js +1 -1
  372. package/module/es5/Math/calculator/core.js +2 -1
  373. package/module/es5/Math/calculator/literalExpression.js +1 -1
  374. package/module/es5/Math/clamp.d.ts +16 -0
  375. package/module/es5/Math/clamp.js +24 -0
  376. package/module/es5/Math/correlationCoefficient.js +0 -3
  377. package/module/es5/Math/inRange.d.ts +19 -0
  378. package/module/es5/Math/inRange.js +29 -0
  379. package/module/es5/Math/index.d.ts +3 -0
  380. package/module/es5/Math/index.js +33 -0
  381. package/module/es5/Math/median.js +2 -2
  382. package/module/es5/Math/nCr.js +2 -4
  383. package/module/es5/Math/percentile.js +2 -11
  384. package/module/es5/Math/primeFactorization.js +1 -1
  385. package/module/es5/Math/sumPrecise.d.ts +14 -0
  386. package/module/es5/Math/sumPrecise.js +41 -0
  387. package/module/es5/Math/uuidv7.js +25 -40
  388. package/module/es5/Number/formatNumber.d.ts +42 -0
  389. package/module/es5/Number/formatNumber.js +58 -0
  390. package/module/es5/Number/index.d.ts +3 -0
  391. package/module/es5/Number/index.js +38 -0
  392. package/module/es5/Number/toOrdinal.d.ts +20 -0
  393. package/module/es5/Number/toOrdinal.js +42 -0
  394. package/module/es5/Number/toPercentage.d.ts +20 -0
  395. package/module/es5/Number/toPercentage.js +33 -0
  396. package/module/es5/Object/deepClone.d.ts +15 -0
  397. package/module/es5/Object/deepClone.js +107 -0
  398. package/module/es5/Object/getObjectsCommon.d.ts +23 -0
  399. package/module/es5/Object/getObjectsCommon.js +92 -0
  400. package/module/es5/Object/getObjectsDiff.d.ts +25 -0
  401. package/module/es5/Object/getObjectsDiff.js +146 -0
  402. package/module/es5/Object/index.d.ts +6 -0
  403. package/module/es5/Object/index.js +66 -0
  404. package/module/es5/Object/isPlainObject.d.ts +16 -0
  405. package/module/es5/Object/isPlainObject.js +39 -0
  406. package/module/es5/Object/mapKeys.d.ts +15 -0
  407. package/module/es5/Object/mapKeys.js +33 -0
  408. package/module/es5/Object/mapValues.d.ts +15 -0
  409. package/module/es5/Object/mapValues.js +32 -0
  410. package/module/es5/Object/mergeDeep.js +7 -10
  411. package/module/es5/Object/omit.d.ts +1 -1
  412. package/module/es5/Object/pickDeep.js +4 -6
  413. package/module/es5/Predicate/every.d.ts +14 -0
  414. package/module/es5/Predicate/every.js +33 -0
  415. package/module/es5/Predicate/index.d.ts +6 -0
  416. package/module/es5/Predicate/index.js +71 -0
  417. package/module/es5/Predicate/isNotNullish.d.ts +11 -0
  418. package/module/es5/Predicate/isNotNullish.js +19 -0
  419. package/module/es5/Predicate/isNullish.d.ts +11 -0
  420. package/module/es5/Predicate/isNullish.js +19 -0
  421. package/module/es5/Predicate/matches.d.ts +11 -0
  422. package/module/es5/Predicate/matches.js +28 -0
  423. package/module/es5/Predicate/not.d.ts +10 -0
  424. package/module/es5/Predicate/not.js +20 -0
  425. package/module/es5/Predicate/some.d.ts +15 -0
  426. package/module/es5/Predicate/some.js +34 -0
  427. package/module/es5/String/camelCase.js +2 -2
  428. package/module/es5/String/escapeHtml.js +1 -1
  429. package/module/es5/String/formatString/getValue.js +1 -1
  430. package/module/es5/String/fromBase64.d.ts +0 -1
  431. package/module/es5/String/fromBase64.js +9 -8
  432. package/module/es5/String/fuzzySearch.js +84 -9
  433. package/module/es5/String/kebabCase.js +1 -1
  434. package/module/es5/String/levenshteinDistance.js +3 -2
  435. package/module/es5/String/randomString.js +24 -2
  436. package/module/es5/String/reverseString.js +7 -1
  437. package/module/es5/String/slugify.js +1 -1
  438. package/module/es5/String/toHalfWidth.js +2 -2
  439. package/module/es5/String/truncate.js +0 -3
  440. package/module/es5/String/unescapeHtml.js +1 -1
  441. package/module/es5/Time/convertTime.js +4 -3
  442. package/module/es5/Tool/escapeRegExp.d.ts +8 -0
  443. package/module/es5/Tool/escapeRegExp.js +18 -0
  444. package/module/es5/Tool/index.d.ts +1 -0
  445. package/module/es5/Tool/index.js +11 -0
  446. package/module/es5/URL/buildUrl.d.ts +17 -0
  447. package/module/es5/URL/buildUrl.js +31 -0
  448. package/module/es5/URL/index.d.ts +4 -0
  449. package/module/es5/URL/index.js +49 -0
  450. package/module/es5/URL/isAbsoluteUrl.d.ts +20 -0
  451. package/module/es5/URL/isAbsoluteUrl.js +28 -0
  452. package/module/es5/URL/joinPath.d.ts +24 -0
  453. package/module/es5/URL/joinPath.js +48 -0
  454. package/module/es5/URL/parseQueryString.d.ts +22 -0
  455. package/module/es5/URL/parseQueryString.js +57 -0
  456. package/module/es5/Validate/parseEmail.js +5 -5
  457. package/module/es5/index.d.ts +25 -20
  458. package/module/es5/index.js +135 -80
  459. package/module/es5/tsconfig.tsbuildinfo +1 -1
  460. package/module/index.d.ts +25 -20
  461. package/module/index.js +25 -20
  462. package/module/index.js.map +1 -1
  463. package/package.json +43 -17
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.fuzzySearch = void 0;
7
- var _levenshteinDistance = require("./levenshteinDistance");
8
7
  var _quickSort = require("../Array/quickSort");
9
8
  function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
10
9
  function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
@@ -25,19 +24,95 @@ var fuzzySearch = exports.fuzzySearch = function fuzzySearch(query, items) {
25
24
  return [];
26
25
  }
27
26
  var results = [];
27
+ var lowerQuery = query.toLowerCase();
28
+ var queryLength = query.length;
29
+
30
+ // Reusable row array to avoid allocations
31
+ // We allocate enough space for typical use cases or grow it if needed.
32
+ // Using dynamic array instead of new Array() to satisfy linter
33
+ var rowBuffer = [];
28
34
  var _iterator = _createForOfIteratorHelper(items),
29
35
  _step;
30
36
  try {
31
37
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
32
38
  var item = _step.value;
33
- var distance = (0, _levenshteinDistance.levenshteinDistance)(query.toLowerCase(), item.toLowerCase());
34
- var maxLength = Math.max(query.length, item.length);
35
- var score = 1 - distance / maxLength;
36
- if (score >= threshold) {
37
- results.push({
38
- item: item,
39
- score: score
40
- });
39
+ var itemLength = item.length;
40
+ var maxLength = Math.max(itemLength, queryLength);
41
+ var maxAllowedDistance = Math.floor(maxLength * (1 - threshold));
42
+ if (Math.abs(queryLength - itemLength) > maxAllowedDistance) {
43
+ continue;
44
+ }
45
+ var lowerItem = item.toLowerCase();
46
+
47
+ // Inline Levenshtein with early exit
48
+ // We want to transform lowerQuery -> lowerItem (or vice versa)
49
+ // To minimize space, we use the shorter string for the columns (row array).
50
+ var string1 = lowerQuery;
51
+ var string2 = lowerItem;
52
+ var length1 = queryLength;
53
+ var length2 = itemLength;
54
+ if (length1 > length2) {
55
+ string1 = lowerItem;
56
+ string2 = lowerQuery;
57
+ length1 = itemLength;
58
+ length2 = queryLength;
59
+ }
60
+
61
+ // Initialize first row: 0, 1, 2, ..., length1
62
+ for (var columnIndex = 0; columnIndex <= length1; columnIndex++) {
63
+ rowBuffer[columnIndex] = columnIndex;
64
+ }
65
+ var minDistanceInRow = 0;
66
+
67
+ // Iterate through each character of string2 (rows)
68
+ for (var rowIndex = 1; rowIndex <= length2; rowIndex++) {
69
+ var previousDiagonal = rowBuffer[0];
70
+ rowBuffer[0] = rowIndex;
71
+
72
+ // eslint-disable-next-line unicorn/prefer-code-point
73
+ var char2 = string2.charCodeAt(rowIndex - 1);
74
+ // Reset min distance for this row
75
+ minDistanceInRow = rowBuffer[0];
76
+ for (var _columnIndex = 1; _columnIndex <= length1; _columnIndex++) {
77
+ var temporary = rowBuffer[_columnIndex];
78
+ // eslint-disable-next-line unicorn/prefer-code-point
79
+ var cost = string1.charCodeAt(_columnIndex - 1) === char2 ? 0 : 1;
80
+
81
+ // min(deletion, insertion, substitution)
82
+ // deletion: row[j] (from previous row)
83
+ // insertion: row[j-1] (current row)
84
+ // substitution: previousDiagonal + cost
85
+ var deletion = rowBuffer[_columnIndex] + 1;
86
+ var insertion = rowBuffer[_columnIndex - 1] + 1;
87
+ var substitution = previousDiagonal + cost;
88
+ var value = deletion;
89
+ if (insertion < value) {
90
+ value = insertion;
91
+ }
92
+ if (substitution < value) {
93
+ value = substitution;
94
+ }
95
+ rowBuffer[_columnIndex] = value;
96
+ previousDiagonal = temporary;
97
+ if (value < minDistanceInRow) {
98
+ minDistanceInRow = value;
99
+ }
100
+ }
101
+
102
+ // Early exit if the minimum distance in this row exceeds the max allowed
103
+ if (minDistanceInRow > maxAllowedDistance) {
104
+ break;
105
+ }
106
+ }
107
+ if (minDistanceInRow <= maxAllowedDistance) {
108
+ var trueDistance = rowBuffer[length1];
109
+ if (trueDistance <= maxAllowedDistance) {
110
+ var score = 1 - trueDistance / maxLength;
111
+ results.push({
112
+ item: item,
113
+ score: score
114
+ });
115
+ }
41
116
  }
42
117
  }
43
118
  } catch (err) {
@@ -18,7 +18,7 @@ var kebabCase = exports.kebabCase = function kebabCase(string_) {
18
18
  // Replace spaces and underscores with dashes
19
19
  .replaceAll(/[\s_]+/g, "-")
20
20
  // Remove special characters except alphanumeric and dashes
21
- .replaceAll(/[^a-zA-Z0-9-]/g, "-")
21
+ .replaceAll(/[^\dA-Za-z-]/g, "-")
22
22
  // Remove multiple consecutive dashes
23
23
  .replaceAll(/-+/g, "-")
24
24
  // Remove leading and trailing dashes
@@ -31,8 +31,9 @@ var _levenshteinDistance = exports.levenshteinDistance = function levenshteinDis
31
31
 
32
32
  // Create a single row array to store distances
33
33
  // We only need the current row and the previous diagonal value
34
- // eslint-disable-next-line unicorn/no-new-array
35
- var row = new Array(length1 + 1);
34
+ var row = Array.from({
35
+ length: length1 + 1
36
+ });
36
37
 
37
38
  // Initialize first row (0 to length1)
38
39
  for (var index = 0; index <= length1; index++) {
@@ -14,9 +14,31 @@ var randomString = exports.randomString = function randomString() {
14
14
  var size = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 8;
15
15
  var _char = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
16
16
  var length = _char.length;
17
+ if (length === 0) {
18
+ return "";
19
+ }
17
20
  var id = "";
18
- for (var index = 0; index < size; index++) {
19
- id += _char[Math.trunc(Math.random() * length)];
21
+ // 65536 bytes is the limit for getRandomValues in some environments
22
+ // Uint32Array has 4 bytes per element, so 65536 / 4 = 16384 elements.
23
+ var CHUNK_SIZE = 16384;
24
+ var bufferSize = Math.min(size, CHUNK_SIZE);
25
+ var buffer = new Uint32Array(bufferSize);
26
+
27
+ // Calculate the rejection limit to avoid modulo bias.
28
+ // We want to reject values that fall into the remainder range of the random number generator
29
+ // relative to the character set length.
30
+ // 2^32 = 4294967296
31
+ var MAX_UINT32_PLUS_ONE = 4294967296;
32
+ var limit = MAX_UINT32_PLUS_ONE - MAX_UINT32_PLUS_ONE % length;
33
+ while (id.length < size) {
34
+ globalThis.crypto.getRandomValues(buffer);
35
+ for (var index = 0; index < bufferSize && id.length < size; index++) {
36
+ var value = buffer[index];
37
+ // Rejection sampling: only use values less than the limit to ensure uniform distribution
38
+ if (value < limit) {
39
+ id += _char[value % length];
40
+ }
41
+ }
20
42
  }
21
43
  return id;
22
44
  };
@@ -4,6 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.reverseString = void 0;
7
+ function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
8
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
9
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
10
+ function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
11
+ function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
12
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
7
13
  /**
8
14
  * Reverses a string
9
15
  * @param {string} char - String to reverse
@@ -11,5 +17,5 @@ exports.reverseString = void 0;
11
17
  * @example reverseString("Hello"); // "olleH"
12
18
  */
13
19
  var reverseString = exports.reverseString = function reverseString(_char) {
14
- return _char.split("").reverse().join("");
20
+ return _toConsumableArray(_char).reverse().join("");
15
21
  };
@@ -14,5 +14,5 @@ exports.slugify = void 0;
14
14
  * slugify("Japanese: こんにちは"); // "japanese"
15
15
  */
16
16
  var slugify = exports.slugify = function slugify(string_) {
17
- return string_.normalize("NFD").replaceAll(/[\u0300-\u036F]/g, "").toLowerCase().replaceAll(/[^\w\s-]/g, "-").replaceAll(/\s+/g, "-").replaceAll(/_+/g, "-").replaceAll(/-+/g, "-").replaceAll(/^-+|-+$/g, "");
17
+ return string_.normalize("NFD").replaceAll(/[\u0300-\u036F]/g, "").toLowerCase().replaceAll(/[^\s\w-]/g, "-").replaceAll(/\s+/g, "-").replaceAll(/_+/g, "-").replaceAll(/-+/g, "-").replaceAll(/^-+|-+$/g, "");
18
18
  };
@@ -11,8 +11,8 @@ exports.toHalfWidth = void 0;
11
11
  */
12
12
  var toHalfWidth = exports.toHalfWidth = function toHalfWidth(string_) {
13
13
  return string_.replaceAll(/[0-9A-Za-z]/g, function (s) {
14
- // eslint-disable-next-line unicorn/prefer-code-point
15
- var code = s.charCodeAt(0);
14
+ var code = s.codePointAt(0);
15
+ // biome-ignore lint/style/noNonNullAssertion: code is not null
16
16
  return String.fromCodePoint(code - 0xfee0);
17
17
  });
18
18
  };
@@ -17,9 +17,6 @@ exports.truncate = void 0;
17
17
  */
18
18
  var truncate = exports.truncate = function truncate(string_, length) {
19
19
  var suffix = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "...";
20
- if (length < 0) {
21
- throw new Error("Length must be non-negative");
22
- }
23
20
  if (string_.length <= length) {
24
21
  return string_;
25
22
  }
@@ -36,7 +36,7 @@ var htmlUnescapeMap = {
36
36
  * ```
37
37
  */
38
38
  var unescapeHtml = exports.unescapeHtml = function unescapeHtml(string_) {
39
- var entityRegex = /&(?:amp|lt|gt|quot|#39|#x27|#x2F|#x60|#x3D);|&#(\d*);|&#x([0-9a-fA-F]*);/g;
39
+ var entityRegex = /&(?:amp|lt|gt|quot|#39|#x27|#x2F|#x60|#x3D);|&#(\d*);|&#x([\dA-Fa-f]*);/g;
40
40
  return string_.replaceAll(entityRegex, function (match, dec, hex) {
41
41
  if (dec !== undefined) {
42
42
  var codePoint = Number.parseInt(dec, 10);
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.convertTime = void 0;
7
+ var _clock = require("../Consts/clock");
7
8
  var _Math = require("../Math");
8
9
  var _normalizeTimeUnit = require("../Time/normalizeTimeUnit");
9
10
  /**
@@ -11,9 +12,9 @@ var _normalizeTimeUnit = require("../Time/normalizeTimeUnit");
11
12
  */
12
13
  var conversionRates = {
13
14
  milliseconds: 1,
14
- seconds: 1000,
15
- minutes: 60000,
16
- hours: 3600000
15
+ seconds: _clock.OneSecondMs,
16
+ minutes: _clock.OneMinuteMs,
17
+ hours: _clock.OneHourMs
17
18
  };
18
19
 
19
20
  /**
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Escapes characters in a string for use in a regular expression.
3
+ * @param {string} string - The string to escape.
4
+ * @returns {string} The escaped string.
5
+ * @example
6
+ * escapeRegExp("a.b"); // "a\\.b"
7
+ */
8
+ export declare const escapeRegExp: (string: string) => string;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.escapeRegExp = void 0;
7
+ var _templateObject;
8
+ function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
9
+ /**
10
+ * Escapes characters in a string for use in a regular expression.
11
+ * @param {string} string - The string to escape.
12
+ * @returns {string} The escaped string.
13
+ * @example
14
+ * escapeRegExp("a.b"); // "a\\.b"
15
+ */
16
+ var escapeRegExp = exports.escapeRegExp = function escapeRegExp(string) {
17
+ return string.replaceAll(/[$()*+.?[\\\]^{|}]/g, String.raw(_templateObject || (_templateObject = _taggedTemplateLiteral(["$&"], ["\\$&"]))));
18
+ };
@@ -1,4 +1,5 @@
1
1
  export * from "./createPipeline";
2
+ export * from "./escapeRegExp";
2
3
  export * from "./parseJson";
3
4
  export * from "./pipe";
4
5
  export * from "./unwrap";
@@ -14,6 +14,17 @@ Object.keys(_createPipeline).forEach(function (key) {
14
14
  }
15
15
  });
16
16
  });
17
+ var _escapeRegExp = require("./escapeRegExp");
18
+ Object.keys(_escapeRegExp).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _escapeRegExp[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function get() {
24
+ return _escapeRegExp[key];
25
+ }
26
+ });
27
+ });
17
28
  var _parseJson = require("./parseJson");
18
29
  Object.keys(_parseJson).forEach(function (key) {
19
30
  if (key === "default" || key === "__esModule") return;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Builds a URL with query parameters appended.
3
+ *
4
+ * @param base - The base URL string
5
+ * @param params - An object of key-value pairs to append as query parameters
6
+ * @returns The complete URL string with query parameters
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * buildUrl("https://example.com", { page: "1", q: "search" });
11
+ * // "https://example.com/?page=1&q=search"
12
+ *
13
+ * buildUrl("https://example.com/path", { foo: "bar" });
14
+ * // "https://example.com/path?foo=bar"
15
+ * ```
16
+ */
17
+ export declare const buildUrl: (base: string, parameters?: Record<string, string>) => string;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.buildUrl = void 0;
7
+ /**
8
+ * Builds a URL with query parameters appended.
9
+ *
10
+ * @param base - The base URL string
11
+ * @param params - An object of key-value pairs to append as query parameters
12
+ * @returns The complete URL string with query parameters
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * buildUrl("https://example.com", { page: "1", q: "search" });
17
+ * // "https://example.com/?page=1&q=search"
18
+ *
19
+ * buildUrl("https://example.com/path", { foo: "bar" });
20
+ * // "https://example.com/path?foo=bar"
21
+ * ```
22
+ */
23
+ var buildUrl = exports.buildUrl = function buildUrl(base) {
24
+ var parameters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
25
+ var url = new URL(base);
26
+ for (var _i = 0, _Object$keys = Object.keys(parameters); _i < _Object$keys.length; _i++) {
27
+ var key = _Object$keys[_i];
28
+ url.searchParams.append(key, parameters[key]);
29
+ }
30
+ return url.toString();
31
+ };
@@ -0,0 +1,4 @@
1
+ export * from "./buildUrl";
2
+ export * from "./isAbsoluteUrl";
3
+ export * from "./joinPath";
4
+ export * from "./parseQueryString";
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _buildUrl = require("./buildUrl");
7
+ Object.keys(_buildUrl).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _buildUrl[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function get() {
13
+ return _buildUrl[key];
14
+ }
15
+ });
16
+ });
17
+ var _isAbsoluteUrl = require("./isAbsoluteUrl");
18
+ Object.keys(_isAbsoluteUrl).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _isAbsoluteUrl[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function get() {
24
+ return _isAbsoluteUrl[key];
25
+ }
26
+ });
27
+ });
28
+ var _joinPath = require("./joinPath");
29
+ Object.keys(_joinPath).forEach(function (key) {
30
+ if (key === "default" || key === "__esModule") return;
31
+ if (key in exports && exports[key] === _joinPath[key]) return;
32
+ Object.defineProperty(exports, key, {
33
+ enumerable: true,
34
+ get: function get() {
35
+ return _joinPath[key];
36
+ }
37
+ });
38
+ });
39
+ var _parseQueryString = require("./parseQueryString");
40
+ Object.keys(_parseQueryString).forEach(function (key) {
41
+ if (key === "default" || key === "__esModule") return;
42
+ if (key in exports && exports[key] === _parseQueryString[key]) return;
43
+ Object.defineProperty(exports, key, {
44
+ enumerable: true,
45
+ get: function get() {
46
+ return _parseQueryString[key];
47
+ }
48
+ });
49
+ });
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Checks whether a URL string is absolute (RFC 3986).
3
+ *
4
+ * An absolute URL starts with a scheme followed by a colon,
5
+ * where the scheme begins with a letter and may contain
6
+ * letters, digits, plus, hyphen, or period.
7
+ *
8
+ * @param url - The URL string to check
9
+ * @returns True if the URL is absolute, false otherwise
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * isAbsoluteUrl("https://example.com"); // true
14
+ * isAbsoluteUrl("ftp://files.example"); // true
15
+ * isAbsoluteUrl("/path/to/page"); // false
16
+ * isAbsoluteUrl("relative/path"); // false
17
+ * isAbsoluteUrl("mailto:user@host"); // true
18
+ * ```
19
+ */
20
+ export declare const isAbsoluteUrl: (url: string) => boolean;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isAbsoluteUrl = void 0;
7
+ /**
8
+ * Checks whether a URL string is absolute (RFC 3986).
9
+ *
10
+ * An absolute URL starts with a scheme followed by a colon,
11
+ * where the scheme begins with a letter and may contain
12
+ * letters, digits, plus, hyphen, or period.
13
+ *
14
+ * @param url - The URL string to check
15
+ * @returns True if the URL is absolute, false otherwise
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * isAbsoluteUrl("https://example.com"); // true
20
+ * isAbsoluteUrl("ftp://files.example"); // true
21
+ * isAbsoluteUrl("/path/to/page"); // false
22
+ * isAbsoluteUrl("relative/path"); // false
23
+ * isAbsoluteUrl("mailto:user@host"); // true
24
+ * ```
25
+ */
26
+ var isAbsoluteUrl = exports.isAbsoluteUrl = function isAbsoluteUrl(url) {
27
+ return /^[a-z][\d+.a-z-]*:/i.test(url);
28
+ };
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Joins multiple path segments into a single path,
3
+ * normalizing slashes between segments.
4
+ *
5
+ * Leading slash of the first segment is preserved.
6
+ * Trailing slash of the last segment is preserved.
7
+ * All intermediate slashes are normalized to a single slash.
8
+ *
9
+ * @param segments - The path segments to join
10
+ * @returns The joined and normalized path
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * joinPath("https://example.com/", "/api/", "/users");
15
+ * // "https://example.com/api/users"
16
+ *
17
+ * joinPath("/a/", "/b/", "/c");
18
+ * // "/a/b/c"
19
+ *
20
+ * joinPath("a", "b", "c");
21
+ * // "a/b/c"
22
+ * ```
23
+ */
24
+ export declare const joinPath: (...segments: string[]) => string;
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.joinPath = void 0;
7
+ /**
8
+ * Joins multiple path segments into a single path,
9
+ * normalizing slashes between segments.
10
+ *
11
+ * Leading slash of the first segment is preserved.
12
+ * Trailing slash of the last segment is preserved.
13
+ * All intermediate slashes are normalized to a single slash.
14
+ *
15
+ * @param segments - The path segments to join
16
+ * @returns The joined and normalized path
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * joinPath("https://example.com/", "/api/", "/users");
21
+ * // "https://example.com/api/users"
22
+ *
23
+ * joinPath("/a/", "/b/", "/c");
24
+ * // "/a/b/c"
25
+ *
26
+ * joinPath("a", "b", "c");
27
+ * // "a/b/c"
28
+ * ```
29
+ */
30
+ var joinPath = exports.joinPath = function joinPath() {
31
+ if (arguments.length === 0) {
32
+ return "";
33
+ }
34
+ var normalized = [];
35
+ for (var index = 0; index < arguments.length; index++) {
36
+ var segment = index < 0 || arguments.length <= index ? undefined : arguments[index];
37
+ if (index > 0) {
38
+ segment = segment.replace(/^\/+/, "");
39
+ }
40
+ if (index < arguments.length - 1) {
41
+ segment = segment.replace(/\/+$/, "");
42
+ }
43
+ if (segment.length > 0) {
44
+ normalized.push(segment);
45
+ }
46
+ }
47
+ return normalized.join("/");
48
+ };
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Parses a query string into a key-value record.
3
+ *
4
+ * Accepts either a full URL or a raw query string
5
+ * (with or without leading "?").
6
+ *
7
+ * @param query - The query string or URL to parse
8
+ * @returns A record of key-value pairs from the query string
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * parseQueryString("?page=1&q=search");
13
+ * // { page: "1", q: "search" }
14
+ *
15
+ * parseQueryString("foo=bar&baz=qux");
16
+ * // { foo: "bar", baz: "qux" }
17
+ *
18
+ * parseQueryString("https://example.com?a=1&b=2");
19
+ * // { a: "1", b: "2" }
20
+ * ```
21
+ */
22
+ export declare const parseQueryString: (query: string) => Record<string, string>;
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.parseQueryString = void 0;
7
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
8
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
9
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
10
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
11
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
12
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
13
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
14
+ /**
15
+ * Parses a query string into a key-value record.
16
+ *
17
+ * Accepts either a full URL or a raw query string
18
+ * (with or without leading "?").
19
+ *
20
+ * @param query - The query string or URL to parse
21
+ * @returns A record of key-value pairs from the query string
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * parseQueryString("?page=1&q=search");
26
+ * // { page: "1", q: "search" }
27
+ *
28
+ * parseQueryString("foo=bar&baz=qux");
29
+ * // { foo: "bar", baz: "qux" }
30
+ *
31
+ * parseQueryString("https://example.com?a=1&b=2");
32
+ * // { a: "1", b: "2" }
33
+ * ```
34
+ */
35
+ var parseQueryString = exports.parseQueryString = function parseQueryString(query) {
36
+ var searchString = query;
37
+ if (query.includes("://")) {
38
+ searchString = new URL(query).search;
39
+ }
40
+ var parameters = new URLSearchParams(searchString);
41
+ var result = {};
42
+ var _iterator = _createForOfIteratorHelper(parameters),
43
+ _step;
44
+ try {
45
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
46
+ var _step$value = _slicedToArray(_step.value, 2),
47
+ key = _step$value[0],
48
+ value = _step$value[1];
49
+ result[key] = value;
50
+ }
51
+ } catch (err) {
52
+ _iterator.e(err);
53
+ } finally {
54
+ _iterator.f();
55
+ }
56
+ return result;
57
+ };