@rzl-zone/utils-js 3.12.0 → 3.12.1-beta.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 (286) hide show
  1. package/{LICENSE.md → LICENSE} +3 -3
  2. package/README.md +62 -89
  3. package/dist/.references/index.d.cts +25 -0
  4. package/dist/.references/index.d.ts +25 -0
  5. package/dist/assertIsArray-BChqwPiP.cjs +26 -0
  6. package/dist/assertIsArray-BChqwPiP.cjs.map +1 -0
  7. package/dist/assertIsArray-BfAbIUfa.js +20 -0
  8. package/dist/assertIsArray-BfAbIUfa.js.map +1 -0
  9. package/dist/assertIsBoolean-BlBct0Fc.js +1073 -0
  10. package/dist/assertIsBoolean-BlBct0Fc.js.map +1 -0
  11. package/dist/assertIsBoolean-DozdtbNi.cjs +1283 -0
  12. package/dist/assertIsBoolean-DozdtbNi.cjs.map +1 -0
  13. package/dist/assertIsString-Bvk7bUL7.cjs +26 -0
  14. package/dist/assertIsString-Bvk7bUL7.cjs.map +1 -0
  15. package/dist/assertIsString-DqV9NwbI.js +20 -0
  16. package/dist/assertIsString-DqV9NwbI.js.map +1 -0
  17. package/dist/assertions/index.cjs +37 -40
  18. package/dist/assertions/index.cjs.map +1 -0
  19. package/dist/assertions/index.d.cts +12 -0
  20. package/dist/assertions/index.d.ts +10 -824
  21. package/dist/assertions/index.js +30 -13
  22. package/dist/assertions/index.js.map +1 -0
  23. package/dist/conversions/index.cjs +34 -103
  24. package/dist/conversions/index.d.cts +12 -0
  25. package/dist/conversions/index.d.ts +10 -1791
  26. package/dist/conversions/index.js +14 -24
  27. package/dist/conversions-CBs8-REq.cjs +448 -0
  28. package/dist/conversions-CBs8-REq.cjs.map +1 -0
  29. package/dist/conversions-EMJa3g-D.js +382 -0
  30. package/dist/conversions-EMJa3g-D.js.map +1 -0
  31. package/dist/events/index.cjs +55 -31
  32. package/dist/events/index.cjs.map +1 -0
  33. package/dist/events/index.d.cts +174 -0
  34. package/dist/events/index.d.ts +31 -35
  35. package/dist/events/index.js +50 -12
  36. package/dist/events/index.js.map +1 -0
  37. package/dist/formatEnvPort-DpIXzPAZ.js +159 -0
  38. package/dist/formatEnvPort-DpIXzPAZ.js.map +1 -0
  39. package/dist/formatEnvPort-hHNvOim-.cjs +171 -0
  40. package/dist/formatEnvPort-hHNvOim-.cjs.map +1 -0
  41. package/dist/formatters/index.cjs +21 -61
  42. package/dist/formatters/index.d.cts +12 -0
  43. package/dist/formatters/index.d.ts +10 -2152
  44. package/dist/formatters/index.js +10 -18
  45. package/dist/formatters-QcZO_Cpx.js +367 -0
  46. package/dist/formatters-QcZO_Cpx.js.map +1 -0
  47. package/dist/formatters-lAYgA11L.cjs +427 -0
  48. package/dist/formatters-lAYgA11L.cjs.map +1 -0
  49. package/dist/generators/index.cjs +161 -41
  50. package/dist/generators/index.cjs.map +1 -0
  51. package/dist/generators/index.d.cts +12 -0
  52. package/dist/generators/index.d.ts +10 -338
  53. package/dist/generators/index.js +154 -14
  54. package/dist/generators/index.js.map +1 -0
  55. package/dist/index-26W7ItWx.d.ts +760 -0
  56. package/dist/index-BPPQjAfs.d.cts +2359 -0
  57. package/dist/index-BXjlgBLz.d.cts +2139 -0
  58. package/dist/index-B_Wwo91H.d.ts +2359 -0
  59. package/dist/index-CpufydcI.d.cts +704 -0
  60. package/dist/index-Czc4O526.d.ts +333 -0
  61. package/dist/index-DPs1_p5G.d.cts +760 -0
  62. package/dist/index-DRpOyBSC.d.ts +1703 -0
  63. package/dist/index-DWWvtHUn.d.cts +822 -0
  64. package/dist/index-DnM0LD0n.d.cts +333 -0
  65. package/dist/index-GUZ9fK6T.d.ts +2139 -0
  66. package/dist/index-I4fAzwXV.d.ts +704 -0
  67. package/dist/index-JDrOl_19.d.ts +822 -0
  68. package/dist/index-b66P49Qe.d.cts +1703 -0
  69. package/dist/isBigInt-B1cijjqm.cjs +20 -0
  70. package/dist/isBigInt-B1cijjqm.cjs.map +1 -0
  71. package/dist/isBigInt-C0bN0Rhu.js +14 -0
  72. package/dist/isBigInt-C0bN0Rhu.js.map +1 -0
  73. package/dist/isEmptyObject-DI42NEo0.cjs +37 -0
  74. package/dist/isEmptyObject-DI42NEo0.cjs.map +1 -0
  75. package/dist/isEmptyObject-DeLVIJpl.js +25 -0
  76. package/dist/isEmptyObject-DeLVIJpl.js.map +1 -0
  77. package/dist/isEmptyString-BTUWYTbw.js +15 -0
  78. package/dist/isEmptyString-BTUWYTbw.js.map +1 -0
  79. package/dist/isEmptyString-CCK3bP74.cjs +21 -0
  80. package/dist/isEmptyString-CCK3bP74.cjs.map +1 -0
  81. package/dist/isEmptyValue-DMSMFTU8.cjs +30 -0
  82. package/dist/isEmptyValue-DMSMFTU8.cjs.map +1 -0
  83. package/dist/isEmptyValue-fjnfQnt5.js +24 -0
  84. package/dist/isEmptyValue-fjnfQnt5.js.map +1 -0
  85. package/dist/isEqual-B1fRgEuU.cjs +111 -0
  86. package/dist/isEqual-B1fRgEuU.cjs.map +1 -0
  87. package/dist/isEqual-DhyP8fB_.js +87 -0
  88. package/dist/isEqual-DhyP8fB_.js.map +1 -0
  89. package/dist/isFinite-BYMOo0os.js +15 -0
  90. package/dist/isFinite-BYMOo0os.js.map +1 -0
  91. package/dist/isFinite-sFkps2TY.cjs +21 -0
  92. package/dist/isFinite-sFkps2TY.cjs.map +1 -0
  93. package/dist/isInteger-DS9V7l_f.js +14 -0
  94. package/dist/isInteger-DS9V7l_f.js.map +1 -0
  95. package/dist/isInteger-FTCthMre.cjs +20 -0
  96. package/dist/isInteger-FTCthMre.cjs.map +1 -0
  97. package/dist/isPlainObject-DcFGh3_5.d.ts +530 -0
  98. package/dist/isPlainObject-doTI11Ib.d.cts +530 -0
  99. package/dist/isServer-D1TXfOs3.js +14 -0
  100. package/dist/isServer-D1TXfOs3.js.map +1 -0
  101. package/dist/isServer-q-QLFCqE.cjs +20 -0
  102. package/dist/isServer-q-QLFCqE.cjs.map +1 -0
  103. package/dist/isTypedArray-47R0wdrc.js +31 -0
  104. package/dist/isTypedArray-47R0wdrc.js.map +1 -0
  105. package/dist/isTypedArray-DiCoqffZ.cjs +43 -0
  106. package/dist/isTypedArray-DiCoqffZ.cjs.map +1 -0
  107. package/dist/isURL-CQiowFq2.js +14 -0
  108. package/dist/isURL-CQiowFq2.js.map +1 -0
  109. package/dist/isURL-WZypXsax.cjs +20 -0
  110. package/dist/isURL-WZypXsax.cjs.map +1 -0
  111. package/dist/isValidDomain-BSXshgkC.cjs +1788 -0
  112. package/dist/isValidDomain-BSXshgkC.cjs.map +1 -0
  113. package/dist/isValidDomain-DwA2EN79.js +1782 -0
  114. package/dist/isValidDomain-DwA2EN79.js.map +1 -0
  115. package/dist/next/index.cjs +119 -214
  116. package/dist/next/index.cjs.map +1 -0
  117. package/dist/next/index.d.cts +226 -0
  118. package/dist/next/index.d.ts +26 -31
  119. package/dist/next/index.js +117 -212
  120. package/dist/next/index.js.map +1 -0
  121. package/dist/next/server/index.cjs +25 -40
  122. package/dist/next/server/index.cjs.map +1 -0
  123. package/dist/next/server/index.d.cts +39 -0
  124. package/dist/next/server/index.d.ts +9 -10
  125. package/dist/next/server/index.js +23 -38
  126. package/dist/next/server/index.js.map +1 -0
  127. package/dist/noop-B2mTBhW-.cjs +18 -0
  128. package/dist/noop-B2mTBhW-.cjs.map +1 -0
  129. package/dist/noop-BzktGBVz.js +12 -0
  130. package/dist/noop-BzktGBVz.js.map +1 -0
  131. package/dist/normalizeSpaces-DQHR3Tlr.cjs +29 -0
  132. package/dist/normalizeSpaces-DQHR3Tlr.cjs.map +1 -0
  133. package/dist/normalizeSpaces-WS_iERJk.js +23 -0
  134. package/dist/normalizeSpaces-WS_iERJk.js.map +1 -0
  135. package/dist/normalizeString-2WLth_Gj.js +15 -0
  136. package/dist/normalizeString-2WLth_Gj.js.map +1 -0
  137. package/dist/normalizeString-D8euBcRD.cjs +21 -0
  138. package/dist/normalizeString-D8euBcRD.cjs.map +1 -0
  139. package/dist/operations/index.cjs +65 -32
  140. package/dist/operations/index.cjs.map +1 -0
  141. package/dist/operations/index.d.cts +139 -0
  142. package/dist/operations/index.d.ts +10 -15
  143. package/dist/operations/index.js +61 -17
  144. package/dist/operations/index.js.map +1 -0
  145. package/dist/parsers/index.cjs +12 -19
  146. package/dist/parsers/index.d.cts +239 -0
  147. package/dist/parsers/index.d.ts +71 -72
  148. package/dist/parsers/index.js +10 -12
  149. package/dist/parsers-DXtpsDyj.cjs +649 -0
  150. package/dist/parsers-DXtpsDyj.cjs.map +1 -0
  151. package/dist/parsers-Dpuq-V4u.js +643 -0
  152. package/dist/parsers-Dpuq-V4u.js.map +1 -0
  153. package/dist/parsing-B43x1sxn.js +50 -0
  154. package/dist/parsing-B43x1sxn.js.map +1 -0
  155. package/dist/parsing-lRoxn1Nz.cjs +56 -0
  156. package/dist/parsing-lRoxn1Nz.cjs.map +1 -0
  157. package/dist/predicates/index.cjs +91 -296
  158. package/dist/predicates/index.d.cts +13 -0
  159. package/dist/predicates/index.d.ts +12 -2482
  160. package/dist/predicates/index.js +23 -25
  161. package/dist/predicates-DiaYA7Ps.cjs +413 -0
  162. package/dist/predicates-DiaYA7Ps.cjs.map +1 -0
  163. package/dist/predicates-gNepszvo.js +257 -0
  164. package/dist/predicates-gNepszvo.js.map +1 -0
  165. package/dist/promises/index.cjs +76 -24
  166. package/dist/promises/index.cjs.map +1 -0
  167. package/dist/promises/index.d.cts +123 -0
  168. package/dist/promises/index.d.ts +28 -31
  169. package/dist/promises/index.js +73 -13
  170. package/dist/promises/index.js.map +1 -0
  171. package/dist/punyCode-CTWXVVFo.cjs +185 -0
  172. package/dist/punyCode-CTWXVVFo.cjs.map +1 -0
  173. package/dist/punyCode-hmiFzLWT.js +179 -0
  174. package/dist/punyCode-hmiFzLWT.js.map +1 -0
  175. package/dist/removeSpaces-BE8lfh-4.js +19 -0
  176. package/dist/removeSpaces-BE8lfh-4.js.map +1 -0
  177. package/dist/removeSpaces-DRRxNWlb.cjs +25 -0
  178. package/dist/removeSpaces-DRRxNWlb.cjs.map +1 -0
  179. package/dist/safeJsonParse-BBnQElk8.cjs +208 -0
  180. package/dist/safeJsonParse-BBnQElk8.cjs.map +1 -0
  181. package/dist/safeJsonParse-CXruaP0p.js +184 -0
  182. package/dist/safeJsonParse-CXruaP0p.js.map +1 -0
  183. package/dist/safeStableStringify-BNh3D0K0.js +88 -0
  184. package/dist/safeStableStringify-BNh3D0K0.js.map +1 -0
  185. package/dist/safeStableStringify-Cc62pfRp.cjs +106 -0
  186. package/dist/safeStableStringify-Cc62pfRp.cjs.map +1 -0
  187. package/dist/strings/index.cjs +76 -81
  188. package/dist/strings/index.cjs.map +1 -0
  189. package/dist/strings/index.d.cts +12 -0
  190. package/dist/strings/index.d.ts +10 -775
  191. package/dist/strings/index.js +59 -14
  192. package/dist/strings/index.js.map +1 -0
  193. package/dist/tailwind/index.cjs +19 -47
  194. package/dist/tailwind/index.d.cts +12 -0
  195. package/dist/tailwind/index.d.ts +11 -712
  196. package/dist/tailwind/index.js +10 -12
  197. package/dist/tailwind-DJ4cmLUw.cjs +247 -0
  198. package/dist/tailwind-DJ4cmLUw.cjs.map +1 -0
  199. package/dist/tailwind-IJvOdkZp.js +199 -0
  200. package/dist/tailwind-IJvOdkZp.js.map +1 -0
  201. package/dist/toStringArrayUnRecursive-CFs0jTEg.js +39 -0
  202. package/dist/toStringArrayUnRecursive-CFs0jTEg.js.map +1 -0
  203. package/dist/toStringArrayUnRecursive-xUaU8Ot9.cjs +51 -0
  204. package/dist/toStringArrayUnRecursive-xUaU8Ot9.cjs.map +1 -0
  205. package/dist/urls/index.cjs +129 -57
  206. package/dist/urls/index.cjs.map +1 -0
  207. package/dist/urls/index.d.cts +740 -0
  208. package/dist/urls/index.d.ts +218 -224
  209. package/dist/urls/index.js +121 -26
  210. package/dist/urls/index.js.map +1 -0
  211. package/package.json +203 -194
  212. package/dist/chunk-2AFQ33D3.cjs +0 -64
  213. package/dist/chunk-2CYDJVGM.js +0 -246
  214. package/dist/chunk-2MW4JDQ2.cjs +0 -598
  215. package/dist/chunk-2VTDXC3N.cjs +0 -1825
  216. package/dist/chunk-44XX2P34.js +0 -209
  217. package/dist/chunk-4YLBKLGS.cjs +0 -18
  218. package/dist/chunk-566CXQW7.cjs +0 -560
  219. package/dist/chunk-57EPKYID.cjs +0 -397
  220. package/dist/chunk-5MGEC3YG.js +0 -63
  221. package/dist/chunk-6EF52423.cjs +0 -249
  222. package/dist/chunk-6SCOKU3S.js +0 -109
  223. package/dist/chunk-6VUXD3CF.js +0 -119
  224. package/dist/chunk-7B76BSNK.cjs +0 -118
  225. package/dist/chunk-7Y6I2DSU.cjs +0 -101
  226. package/dist/chunk-A7S7E2EE.cjs +0 -308
  227. package/dist/chunk-AJZ6PMMZ.js +0 -16
  228. package/dist/chunk-AXGBL2IO.cjs +0 -251
  229. package/dist/chunk-B4TC6FBV.cjs +0 -678
  230. package/dist/chunk-BAV5T2E3.cjs +0 -15
  231. package/dist/chunk-BKIJBNIE.js +0 -21
  232. package/dist/chunk-BNIMTFK5.js +0 -59
  233. package/dist/chunk-BXW7YXB7.js +0 -1823
  234. package/dist/chunk-CFYZC4S6.js +0 -53
  235. package/dist/chunk-CSG4SCL3.js +0 -1587
  236. package/dist/chunk-CWQW7AKK.js +0 -676
  237. package/dist/chunk-DVMHRLKP.cjs +0 -16
  238. package/dist/chunk-EN7LVZBZ.js +0 -548
  239. package/dist/chunk-EV4Y7HCY.cjs +0 -26
  240. package/dist/chunk-F66VDYIZ.cjs +0 -18
  241. package/dist/chunk-FLJX37EL.cjs +0 -30
  242. package/dist/chunk-GKC3UDMC.cjs +0 -1623
  243. package/dist/chunk-H65I3GRZ.cjs +0 -106
  244. package/dist/chunk-HHYWB7VZ.js +0 -24
  245. package/dist/chunk-HNGGISFL.cjs +0 -65
  246. package/dist/chunk-HNSQAVSZ.cjs +0 -35
  247. package/dist/chunk-HSP6IWZK.js +0 -17
  248. package/dist/chunk-IDZS7J6T.js +0 -242
  249. package/dist/chunk-JS6R55VL.js +0 -302
  250. package/dist/chunk-JZVT5FK7.js +0 -232
  251. package/dist/chunk-KHO2SBNA.cjs +0 -16
  252. package/dist/chunk-KIDJCMNJ.js +0 -33
  253. package/dist/chunk-KOLEURVT.cjs +0 -38
  254. package/dist/chunk-L4V53MQK.cjs +0 -269
  255. package/dist/chunk-L5RDAVVH.js +0 -14
  256. package/dist/chunk-NODTV4F3.js +0 -16
  257. package/dist/chunk-NYK5K3V2.cjs +0 -211
  258. package/dist/chunk-ODUO3RTL.cjs +0 -113
  259. package/dist/chunk-ONZFBJVW.js +0 -14
  260. package/dist/chunk-PFXCTE37.js +0 -28
  261. package/dist/chunk-PPST7QAQ.js +0 -587
  262. package/dist/chunk-Q5IMYDFL.cjs +0 -33
  263. package/dist/chunk-QFFBIOJ4.js +0 -31
  264. package/dist/chunk-QNKGP5DY.js +0 -14
  265. package/dist/chunk-RRQHMOPE.cjs +0 -19
  266. package/dist/chunk-RU5OSRBU.js +0 -95
  267. package/dist/chunk-SDMPEJ4F.js +0 -35
  268. package/dist/chunk-SYNL5IKP.js +0 -115
  269. package/dist/chunk-TCDOWZQE.js +0 -16
  270. package/dist/chunk-TQPGXGKB.cjs +0 -123
  271. package/dist/chunk-TULOI4GL.js +0 -370
  272. package/dist/chunk-UBHCP4N5.cjs +0 -36
  273. package/dist/chunk-UCHF3M34.cjs +0 -56
  274. package/dist/chunk-UDA26MCU.cjs +0 -16
  275. package/dist/chunk-V3C4FYZL.cjs +0 -18
  276. package/dist/chunk-VAAHZFBF.js +0 -32
  277. package/dist/chunk-VJDDGRIK.cjs +0 -16
  278. package/dist/chunk-WVSPXFTY.js +0 -14
  279. package/dist/chunk-WYP76WXB.js +0 -101
  280. package/dist/chunk-YDE4ZBB7.cjs +0 -237
  281. package/dist/chunk-YKQEOO7C.cjs +0 -23
  282. package/dist/chunk-YSZC56SZ.js +0 -264
  283. package/dist/chunk-YWHHVDT4.js +0 -13
  284. package/dist/index.d.ts +0 -24
  285. package/dist/isPlainObject-DTJVV2Kf.d.ts +0 -536
  286. package/dist/rzl-utils.global.js +0 -10
@@ -1,26 +1,24 @@
1
1
  /*!
2
- * ====================================================
3
- * Rzl Utils-JS.
4
- * ----------------------------------------------------
5
- * Version: 3.12.0.
6
- * Author: Rizalvin Dwiky.
7
- * Repository: https://github.com/rzl-zone/utils-js.
8
- * ====================================================
9
- */
10
- export { areArraysEqual, areObjectsEqual, areURLsEqualPath, areURLsIdentical, arrayHasAnyMatch, doesKeyExist, isArguments, isArrayLike, isArrayLikeObject, isCurrencyLike, isDeepEqual, isElement, isEmpty, isEmptyDeep, isEqualWith, isLength, isMatch, isMatchWith, isNative, isObjectLoose, isPropertyKey, isSafeInteger, isValidURL, isWeakMap, textContainsAll, textContainsAny } from '../chunk-TULOI4GL.js';
11
- export { isURL } from '../chunk-ONZFBJVW.js';
12
- export { isNonEmptyValue, isTypedArray } from '../chunk-KIDJCMNJ.js';
13
- export { isEmptyValue } from '../chunk-QFFBIOJ4.js';
14
- export { isServer } from '../chunk-L5RDAVVH.js';
15
- import '../chunk-5MGEC3YG.js';
16
- export { isFinite } from '../chunk-NODTV4F3.js';
17
- export { isInteger } from '../chunk-WVSPXFTY.js';
18
- export { isValidDomain } from '../chunk-BXW7YXB7.js';
19
- import '../chunk-44XX2P34.js';
20
- export { isEmptyString } from '../chunk-TCDOWZQE.js';
21
- import '../chunk-BKIJBNIE.js';
22
- export { isArrayBuffer, isEqual, isRegExp } from '../chunk-WYP76WXB.js';
23
- export { isEmptyArray, isEmptyObject } from '../chunk-SDMPEJ4F.js';
24
- export { isDate, isMap } from '../chunk-6VUXD3CF.js';
25
- export { isBigInt } from '../chunk-QNKGP5DY.js';
26
- export { getPreciseType, hasOwnProp, isArray, isBoolean, isBooleanObject, isBuffer, isError, isFunction, isInfinityNumber, isNaN, isNil, isNonEmptyArray, isNonEmptyString, isNull, isNumber, isNumberObject, isObject, isObjectOrArray, isPlainObject, isSet, isString, isStringObject, isSymbol, isUndefined } from '../chunk-CSG4SCL3.js';
2
+ * ========================================================================
3
+ * @rzl-zone/utils-js
4
+ * ------------------------------------------------------------------------
5
+ * Version: `3.12.1-beta.0`
6
+ * Author: `Rizalvin Dwiky <rizalvindwiky@gmail.com>`
7
+ * Repository: `https://github.com/rzl-zone/rzl-zone/tree/main/packages/utils-js`
8
+ * ========================================================================
9
+ */
10
+ import { A as isPlainObject, C as isSymbol, D as isNaN, E as isNull, F as isBoolean, M as isArray, N as isNil, O as isNumberObject, P as isFunction, S as isUndefined, _ as isBuffer, b as hasOwnProp, f as isSet, g as isStringObject, h as isBooleanObject, j as isObject, k as isString, m as isInfinityNumber, p as isNonEmptyArray, r as getPreciseType, v as isError, w as isNumber, x as isObjectOrArray, y as isNonEmptyString } from "../assertIsBoolean-BlBct0Fc.js";
11
+ import { t as isBigInt } from "../isBigInt-C0bN0Rhu.js";
12
+ import { n as isEmptyArray, t as isEmptyObject } from "../isEmptyObject-DeLVIJpl.js";
13
+ import { t as isFinite } from "../isFinite-BYMOo0os.js";
14
+ import { n as isDate, r as isMap } from "../safeStableStringify-BNh3D0K0.js";
15
+ import { i as isRegExp, r as isArrayBuffer, t as isEqual } from "../isEqual-DhyP8fB_.js";
16
+ import { t as isEmptyString } from "../isEmptyString-BTUWYTbw.js";
17
+ import { t as isEmptyValue } from "../isEmptyValue-fjnfQnt5.js";
18
+ import { n as isNonEmptyValue, t as isTypedArray } from "../isTypedArray-47R0wdrc.js";
19
+ import { t as isServer } from "../isServer-D1TXfOs3.js";
20
+ import { t as isInteger } from "../isInteger-DS9V7l_f.js";
21
+ import { C as areURLsIdentical, E as areArraysEqual, S as textContainsAll, T as areObjectsEqual, _ as isArguments, a as isNative, b as isPropertyKey, c as isEqualWith, d as isElement, f as isDeepEqual, g as isLength, h as isArrayLike, i as isObjectLoose, l as isEmptyDeep, m as isArrayLikeObject, n as isValidURL, o as isMatch, p as isCurrencyLike, r as isSafeInteger, s as isMatchWith, t as isWeakMap, u as isEmpty, v as arrayHasAnyMatch, w as areURLsEqualPath, x as textContainsAny, y as doesKeyExist } from "../predicates-gNepszvo.js";
22
+ import { t as isURL } from "../isURL-CQiowFq2.js";
23
+ import { t as isValidDomain } from "../isValidDomain-DwA2EN79.js";
24
+ export { areArraysEqual, areObjectsEqual, areURLsEqualPath, areURLsIdentical, arrayHasAnyMatch, doesKeyExist, getPreciseType, hasOwnProp, isArguments, isArray, isArrayBuffer, isArrayLike, isArrayLikeObject, isBigInt, isBoolean, isBooleanObject, isBuffer, isCurrencyLike, isDate, isDeepEqual, isElement, isEmpty, isEmptyArray, isEmptyDeep, isEmptyObject, isEmptyString, isEmptyValue, isEqual, isEqualWith, isError, isFinite, isFunction, isInfinityNumber, isInteger, isLength, isMap, isMatch, isMatchWith, isNaN, isNative, isNil, isNonEmptyArray, isNonEmptyString, isNonEmptyValue, isNull, isNumber, isNumberObject, isObject, isObjectLoose, isObjectOrArray, isPlainObject, isPropertyKey, isRegExp, isSafeInteger, isServer, isSet, isString, isStringObject, isSymbol, isTypedArray, isURL, isUndefined, isValidDomain, isValidURL, isWeakMap, textContainsAll, textContainsAny };
@@ -0,0 +1,413 @@
1
+ /*!
2
+ * ========================================================================
3
+ * @rzl-zone/utils-js
4
+ * ------------------------------------------------------------------------
5
+ * Version: `3.12.1-beta.0`
6
+ * Author: `Rizalvin Dwiky <rizalvindwiky@gmail.com>`
7
+ * Repository: `https://github.com/rzl-zone/rzl-zone/tree/main/packages/utils-js`
8
+ * ========================================================================
9
+ */
10
+ "use strict";
11
+ const require_assertIsBoolean = require('./assertIsBoolean-DozdtbNi.cjs');
12
+ const require_assertIsString = require('./assertIsString-Bvk7bUL7.cjs');
13
+ const require_isEmptyObject = require('./isEmptyObject-DI42NEo0.cjs');
14
+ const require_safeStableStringify = require('./safeStableStringify-Cc62pfRp.cjs');
15
+ const require_isEqual = require('./isEqual-B1fRgEuU.cjs');
16
+ const require_isEmptyString = require('./isEmptyString-CCK3bP74.cjs');
17
+ const require_isTypedArray = require('./isTypedArray-DiCoqffZ.cjs');
18
+ const require_parsing = require('./parsing-lRoxn1Nz.cjs');
19
+ const require_isURL = require('./isURL-WZypXsax.cjs');
20
+ const areArraysEqual = (array1, array2, ignoreOrder = false) => {
21
+ if (!(require_assertIsBoolean.isArray(array1) && require_assertIsBoolean.isArray(array2))) throw new TypeError(`Parameters \`array1\` and \`array2\` property of the \`options\` (second parameter) must be of type \`array\`, but received: ['array1': \`${require_assertIsBoolean.getPreciseType(array1)}\`, 'array2': \`${require_assertIsBoolean.getPreciseType(array2)}\`].`);
22
+ require_assertIsBoolean.assertIsBoolean(ignoreOrder, { message: ({ currentType, validType }) => `Third parameter \`ignoreOrder\` must be of type \`${validType}\`, but received: \`${currentType}\`.` });
23
+ if (!require_isEqual.isEqual(array1.length, array2.length)) return false;
24
+ const deepIgnoreOrder = (arr) => {
25
+ if (!require_assertIsBoolean.isArray(arr)) return arr;
26
+ return arr.map((item) => {
27
+ if (require_assertIsBoolean.isArray(item)) return deepIgnoreOrder(item);
28
+ return item;
29
+ }).sort((a, b) => {
30
+ const sa = require_safeStableStringify.safeStableStringify(a);
31
+ const sb = require_safeStableStringify.safeStableStringify(b);
32
+ return sa < sb ? -1 : sa > sb ? 1 : 0;
33
+ });
34
+ };
35
+ const normalizedArr1 = ignoreOrder ? deepIgnoreOrder(array1) : array1;
36
+ const normalizedArr2 = ignoreOrder ? deepIgnoreOrder(array2) : array2;
37
+ if (!require_isEqual.isEqual(normalizedArr1.length, normalizedArr2.length)) return false;
38
+ return normalizedArr1.every((item, index) => require_safeStableStringify.safeStableStringify(item) === require_safeStableStringify.safeStableStringify(normalizedArr2[index]));
39
+ };
40
+ const areObjectsEqual = (object1, object2) => {
41
+ return require_isEqual.isEqual(object1, object2);
42
+ };
43
+ const areURLsEqualPath = (urlA, urlB) => {
44
+ if (!require_isURL.isURL(urlA) || !require_isURL.isURL(urlB)) throw new TypeError("Parameters `urlA` and `urlB` (first and second parameter) must be instance of URL.");
45
+ return urlA.protocol + "//" + urlA.host + urlA.pathname === urlB.protocol + "//" + urlB.host + urlB.pathname;
46
+ };
47
+ const areURLsIdentical = (urlA, urlB) => {
48
+ if (!require_isURL.isURL(urlA) || !require_isURL.isURL(urlB)) throw new TypeError("Parameters `urlA` and `urlB` (first and second parameter) must be instance of URL.");
49
+ return urlA.protocol + "//" + urlA.host + urlA.pathname + urlA.search === urlB.protocol + "//" + urlB.host + urlB.pathname + urlB.search;
50
+ };
51
+ const textContainsAll = (text, searchWords, options = {}) => {
52
+ if (!require_assertIsBoolean.isNonEmptyString(text) || !require_assertIsBoolean.isArray(searchWords)) return false;
53
+ require_assertIsBoolean.assertIsPlainObject(options, { message: ({ currentType, validType }) => `Third parameter (\`options\`) must be of type \`${validType}\`, but received: \`${currentType}\`.` });
54
+ const { exactMatch = false, flags = "i" } = options;
55
+ require_assertIsBoolean.assertIsBoolean(exactMatch, { message: ({ currentType, validType }) => `Parameter \`exactMatch\` property of the \`options\` (third parameter) must be of type \`${validType}\`, but received: \`${currentType}\`.` });
56
+ require_assertIsString.assertIsString(flags, { message: ({ currentType, validType }) => `Parameter \`flags\` property of the \`options\` (third parameter) must be of type \`${validType}\`, but received: \`${currentType}\`.` });
57
+ const escapeRegex = (str) => str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
58
+ const validSearchWords = searchWords.filter((word) => require_assertIsBoolean.isNonEmptyString(word)).map(escapeRegex);
59
+ if (validSearchWords.length === 0) return false;
60
+ return validSearchWords.every((word) => {
61
+ const pattern = exactMatch ? `(?<!\\S)${word}(?!\\S)` : word;
62
+ return new RegExp(pattern, flags.includes("u") ? flags : flags + "u").test(text);
63
+ });
64
+ };
65
+ const textContainsAny = (text, searchWords, options = {}) => {
66
+ if (!require_assertIsBoolean.isNonEmptyString(text) || !require_assertIsBoolean.isArray(searchWords)) return false;
67
+ require_assertIsBoolean.assertIsPlainObject(options, { message: ({ currentType, validType }) => `Third parameter (\`options\`) must be of type \`${validType}\`, but received: \`${currentType}\`.` });
68
+ const { exactMatch = false, flags = "i" } = options;
69
+ require_assertIsBoolean.assertIsBoolean(exactMatch, { message: ({ currentType, validType }) => `Parameter \`exactMatch\` property of the \`options\` (third parameter) must be of type \`${validType}\`, but received: \`${currentType}\`.` });
70
+ require_assertIsString.assertIsString(flags, { message: ({ currentType, validType }) => `Parameter \`flags\` property of the \`options\` (third parameter) must be of type \`${validType}\`, but received: \`${currentType}\`.` });
71
+ const escapeRegex = (str) => str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
72
+ const validSearchWords = searchWords.filter((word) => require_assertIsBoolean.isNonEmptyString(word)).map(escapeRegex);
73
+ if (validSearchWords.length === 0) return false;
74
+ const pattern = exactMatch ? `(?<!\\S)(${validSearchWords.join("|")})(?!\\S)` : `(${validSearchWords.join("|")})`;
75
+ return new RegExp(pattern, flags.includes("u") ? flags : flags + "u").test(text);
76
+ };
77
+ function isPropertyKey(value) {
78
+ const type = typeof value;
79
+ return type === "string" || type === "number" || type === "symbol";
80
+ }
81
+ const doesKeyExist = (object, key) => {
82
+ if (!require_assertIsBoolean.isObjectOrArray(object)) return false;
83
+ if (!isPropertyKey(key)) throw new TypeError(`Second Parameter (\`key\`) must be of type \`string\`, \`number\` or \`symbol\`, but received: \`${require_assertIsBoolean.getPreciseType(key)}\`.`);
84
+ if (Object.prototype.hasOwnProperty.call(object, key)) return true;
85
+ if (require_assertIsBoolean.isArray(object)) return object.some((item) => doesKeyExist(item, key));
86
+ return Object.values(object).some((value) => require_assertIsBoolean.isObjectOrArray(value) && doesKeyExist(value, key));
87
+ };
88
+ const arrayHasAnyMatch = (sourceArray, targetArray) => {
89
+ if (!require_assertIsBoolean.isArray(sourceArray) || !require_assertIsBoolean.isArray(targetArray) || require_isEmptyObject.isEmptyArray(sourceArray) || require_isEmptyObject.isEmptyArray(targetArray)) return false;
90
+ const sourceSet = new Set(sourceArray);
91
+ return targetArray.some((item) => sourceSet.has(item));
92
+ };
93
+ const isArguments = (value) => {
94
+ return Object.prototype.toString.call(value) === "[object Arguments]";
95
+ };
96
+ function isLength(value) {
97
+ return typeof value === "number" && value > -1 && Number.isInteger(value) && value <= Number.MAX_SAFE_INTEGER;
98
+ }
99
+ function isArrayLike(value) {
100
+ return !require_assertIsBoolean.isFunction(value) && require_assertIsBoolean.isObjectOrArray(value) && isLength(value?.length);
101
+ }
102
+ function isArrayLikeObject(value) {
103
+ return require_assertIsBoolean.isObjectOrArray(value) && isLength(value.length);
104
+ }
105
+ const isCurrencyLike = (input) => {
106
+ if (!(require_assertIsBoolean.isString(input) || require_assertIsBoolean.isNumber(input))) return false;
107
+ if (require_parsing.parseCurrencyString(input.toString()) !== 0) return true;
108
+ return input.toString().trim() === "0";
109
+ };
110
+ const isDeepEqual = (a, b) => {
111
+ if (typeof a === "number" && typeof b === "number" && Number.isNaN(a) && Number.isNaN(b)) return true;
112
+ if (a === b) return true;
113
+ if (typeof a !== typeof b) return false;
114
+ if (require_safeStableStringify.isDate(a) && require_safeStableStringify.isDate(b)) return a.getTime() === b.getTime();
115
+ if (require_isEqual.isRegExp(a) && require_isEqual.isRegExp(b)) return a.toString() === b.toString();
116
+ if (require_assertIsBoolean.isSymbol(a) && require_assertIsBoolean.isSymbol(b)) return a.toString() === b.toString();
117
+ if (require_assertIsBoolean.isSet(a) && require_assertIsBoolean.isSet(b)) {
118
+ if (a.size !== b.size) return false;
119
+ const bValues = Array.from(b);
120
+ const matched = /* @__PURE__ */ new Set();
121
+ for (const aVal of a) {
122
+ let found = false;
123
+ for (let i = 0; i < bValues.length; i++) {
124
+ if (matched.has(i)) continue;
125
+ if (isDeepEqual(aVal, bValues[i])) {
126
+ matched.add(i);
127
+ found = true;
128
+ break;
129
+ }
130
+ }
131
+ if (!found) return false;
132
+ }
133
+ return true;
134
+ }
135
+ if (require_safeStableStringify.isMap(a) && require_safeStableStringify.isMap(b)) {
136
+ if (a.size !== b.size) return false;
137
+ const bEntries = Array.from(b);
138
+ const matched = /* @__PURE__ */ new Set();
139
+ for (const [aKey, aVal] of a) {
140
+ let found = false;
141
+ for (let i = 0; i < bEntries.length; i++) {
142
+ if (matched.has(i)) continue;
143
+ const [bKey, bVal] = bEntries[i];
144
+ if (isDeepEqual(aKey, bKey) && isDeepEqual(aVal, bVal)) {
145
+ matched.add(i);
146
+ found = true;
147
+ break;
148
+ }
149
+ }
150
+ if (!found) return false;
151
+ }
152
+ return true;
153
+ }
154
+ if (require_assertIsBoolean.isArray(a) && require_assertIsBoolean.isArray(b)) {
155
+ if (a.length !== b.length) return false;
156
+ return a.every((item, i) => isDeepEqual(item, b[i]));
157
+ }
158
+ if (require_assertIsBoolean.isObjectOrArray(a) && require_assertIsBoolean.isObjectOrArray(b) && a && b) {
159
+ if (require_assertIsBoolean.isArray(a) !== require_assertIsBoolean.isArray(b)) return false;
160
+ const aKeys = Object.keys(a);
161
+ const bKeys = Object.keys(b);
162
+ if (aKeys.length !== bKeys.length) return false;
163
+ return aKeys.every((key) => isDeepEqual(a[key], b[key]));
164
+ }
165
+ return false;
166
+ };
167
+ function isElement(value) {
168
+ return !!value && typeof value === "object" && value?.nodeType === 1 && !require_assertIsBoolean.isPlainObject(value);
169
+ }
170
+ function isEmpty(value) {
171
+ if (require_assertIsBoolean.isNil(value)) return true;
172
+ if (require_assertIsBoolean.isBoolean(value) || require_assertIsBoolean.isNumber(value, { includeNaN: true }) || require_assertIsBoolean.isSymbol(value)) return true;
173
+ if (require_assertIsBoolean.isFunction(value)) return Object.keys(value).length === 0;
174
+ if (require_assertIsBoolean.isString(value) || require_assertIsBoolean.isArray(value) || isArguments(value) || require_isTypedArray.isTypedArray(value)) return value.length === 0;
175
+ if (require_safeStableStringify.isMap(value) || require_assertIsBoolean.isSet(value)) return value.size === 0;
176
+ if (require_assertIsBoolean.isBuffer(value)) return value.length === 0;
177
+ if (require_assertIsBoolean.isPlainObject(value)) return Object.keys(value).length === 0;
178
+ return false;
179
+ }
180
+ const isEmptyDeep = (value) => {
181
+ if (require_assertIsBoolean.isString(value)) return require_isEmptyString.isEmptyString(value);
182
+ if (require_assertIsBoolean.isNumber(value)) return require_assertIsBoolean.isNaN(value);
183
+ if (require_assertIsBoolean.isArray(value)) return require_isEmptyObject.isEmptyArray(value) || value.every(isEmptyDeep);
184
+ if (require_assertIsBoolean.isObjectOrArray(value)) {
185
+ const keys = Object.keys(value);
186
+ const symbols = Object.getOwnPropertySymbols(value);
187
+ if (keys.length === 0 && symbols.length === 0) return true;
188
+ return [...keys, ...symbols].every((key) => isEmptyDeep(value[key]));
189
+ }
190
+ if (!value) return true;
191
+ return false;
192
+ };
193
+ function isEqualWith(value, other, customizer) {
194
+ return require_isEqual.baseDeepEqual(value, other, customizer, /* @__PURE__ */ new WeakMap());
195
+ }
196
+ function isMatchWith(value, other, customizer) {
197
+ return baseIsMatch(value, other, customizer);
198
+ }
199
+ function isSameValue(x, y) {
200
+ return x === y || x === 0 && y === 0 || Number.isNaN(x) && Number.isNaN(y);
201
+ }
202
+ function baseIsMatch(object, source, customizer) {
203
+ if (object === source) return true;
204
+ if (!require_assertIsBoolean.isObjectOrArray(source)) return isSameValue(object, source);
205
+ if (!require_assertIsBoolean.isObjectOrArray(object)) return false;
206
+ const keys = Reflect.ownKeys(source).filter((k) => !(require_assertIsBoolean.isArray(source) && k === "length"));
207
+ for (const key of keys) {
208
+ if (!(key in object)) return false;
209
+ const objValue = object[key];
210
+ const srcValue = source[key];
211
+ const result = customizer?.(objValue, srcValue, key, object, source);
212
+ if (!require_assertIsBoolean.isUndefined(result)) {
213
+ if (!result) return false;
214
+ continue;
215
+ }
216
+ if (require_assertIsBoolean.isObjectOrArray(objValue) && require_assertIsBoolean.isObjectOrArray(srcValue)) {
217
+ if (!isMatchWith(objValue, srcValue, customizer)) return false;
218
+ } else if (!isSameValue(objValue, srcValue)) return false;
219
+ }
220
+ return true;
221
+ }
222
+ function isMatch(object, source) {
223
+ return baseIsMatch(object, source);
224
+ }
225
+ const funcToString = Function.prototype.toString;
226
+ const reIsNative = /\{\s*\[native code\]\s*\}/;
227
+ function isNative(value) {
228
+ if (!require_assertIsBoolean.isFunction(value)) return false;
229
+ try {
230
+ const source = funcToString.call(value);
231
+ return reIsNative.test(source);
232
+ } catch {
233
+ return false;
234
+ }
235
+ }
236
+ function isObjectLoose(value) {
237
+ return !require_assertIsBoolean.isNil(value) && (require_assertIsBoolean.isObjectOrArray(value) || require_assertIsBoolean.isFunction(value));
238
+ }
239
+ function isSafeInteger(value) {
240
+ return typeof value === "number" && Number.isSafeInteger(value);
241
+ }
242
+ const isValidURL = (url) => {
243
+ if (!require_assertIsBoolean.isNonEmptyString(url)) return false;
244
+ let decodedUrl;
245
+ try {
246
+ decodedUrl = decodeURIComponent(url);
247
+ } catch {
248
+ return false;
249
+ }
250
+ if (!decodedUrl.startsWith("http://") && !decodedUrl.startsWith("https://")) return false;
251
+ //! DEPRECATED
252
+ return (/* @__PURE__ */ new RegExp(/^https?:\/\/(?:localhost(?::\d+)?(?:[\/?#][^\s]*)?|(?:www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}(?::\d+)?(?:[\/?#][^\s]*)?)$/)).test(decodedUrl);
253
+ };
254
+ function isWeakMap(value) {
255
+ return require_assertIsBoolean.isObject(value) && !require_assertIsBoolean.isNull(value) && value instanceof WeakMap;
256
+ }
257
+ Object.defineProperty(exports, 'areArraysEqual', {
258
+ enumerable: true,
259
+ get: function () {
260
+ return areArraysEqual;
261
+ }
262
+ });
263
+ Object.defineProperty(exports, 'areObjectsEqual', {
264
+ enumerable: true,
265
+ get: function () {
266
+ return areObjectsEqual;
267
+ }
268
+ });
269
+ Object.defineProperty(exports, 'areURLsEqualPath', {
270
+ enumerable: true,
271
+ get: function () {
272
+ return areURLsEqualPath;
273
+ }
274
+ });
275
+ Object.defineProperty(exports, 'areURLsIdentical', {
276
+ enumerable: true,
277
+ get: function () {
278
+ return areURLsIdentical;
279
+ }
280
+ });
281
+ Object.defineProperty(exports, 'arrayHasAnyMatch', {
282
+ enumerable: true,
283
+ get: function () {
284
+ return arrayHasAnyMatch;
285
+ }
286
+ });
287
+ Object.defineProperty(exports, 'doesKeyExist', {
288
+ enumerable: true,
289
+ get: function () {
290
+ return doesKeyExist;
291
+ }
292
+ });
293
+ Object.defineProperty(exports, 'isArguments', {
294
+ enumerable: true,
295
+ get: function () {
296
+ return isArguments;
297
+ }
298
+ });
299
+ Object.defineProperty(exports, 'isArrayLike', {
300
+ enumerable: true,
301
+ get: function () {
302
+ return isArrayLike;
303
+ }
304
+ });
305
+ Object.defineProperty(exports, 'isArrayLikeObject', {
306
+ enumerable: true,
307
+ get: function () {
308
+ return isArrayLikeObject;
309
+ }
310
+ });
311
+ Object.defineProperty(exports, 'isCurrencyLike', {
312
+ enumerable: true,
313
+ get: function () {
314
+ return isCurrencyLike;
315
+ }
316
+ });
317
+ Object.defineProperty(exports, 'isDeepEqual', {
318
+ enumerable: true,
319
+ get: function () {
320
+ return isDeepEqual;
321
+ }
322
+ });
323
+ Object.defineProperty(exports, 'isElement', {
324
+ enumerable: true,
325
+ get: function () {
326
+ return isElement;
327
+ }
328
+ });
329
+ Object.defineProperty(exports, 'isEmpty', {
330
+ enumerable: true,
331
+ get: function () {
332
+ return isEmpty;
333
+ }
334
+ });
335
+ Object.defineProperty(exports, 'isEmptyDeep', {
336
+ enumerable: true,
337
+ get: function () {
338
+ return isEmptyDeep;
339
+ }
340
+ });
341
+ Object.defineProperty(exports, 'isEqualWith', {
342
+ enumerable: true,
343
+ get: function () {
344
+ return isEqualWith;
345
+ }
346
+ });
347
+ Object.defineProperty(exports, 'isLength', {
348
+ enumerable: true,
349
+ get: function () {
350
+ return isLength;
351
+ }
352
+ });
353
+ Object.defineProperty(exports, 'isMatch', {
354
+ enumerable: true,
355
+ get: function () {
356
+ return isMatch;
357
+ }
358
+ });
359
+ Object.defineProperty(exports, 'isMatchWith', {
360
+ enumerable: true,
361
+ get: function () {
362
+ return isMatchWith;
363
+ }
364
+ });
365
+ Object.defineProperty(exports, 'isNative', {
366
+ enumerable: true,
367
+ get: function () {
368
+ return isNative;
369
+ }
370
+ });
371
+ Object.defineProperty(exports, 'isObjectLoose', {
372
+ enumerable: true,
373
+ get: function () {
374
+ return isObjectLoose;
375
+ }
376
+ });
377
+ Object.defineProperty(exports, 'isPropertyKey', {
378
+ enumerable: true,
379
+ get: function () {
380
+ return isPropertyKey;
381
+ }
382
+ });
383
+ Object.defineProperty(exports, 'isSafeInteger', {
384
+ enumerable: true,
385
+ get: function () {
386
+ return isSafeInteger;
387
+ }
388
+ });
389
+ Object.defineProperty(exports, 'isValidURL', {
390
+ enumerable: true,
391
+ get: function () {
392
+ return isValidURL;
393
+ }
394
+ });
395
+ Object.defineProperty(exports, 'isWeakMap', {
396
+ enumerable: true,
397
+ get: function () {
398
+ return isWeakMap;
399
+ }
400
+ });
401
+ Object.defineProperty(exports, 'textContainsAll', {
402
+ enumerable: true,
403
+ get: function () {
404
+ return textContainsAll;
405
+ }
406
+ });
407
+ Object.defineProperty(exports, 'textContainsAny', {
408
+ enumerable: true,
409
+ get: function () {
410
+ return textContainsAny;
411
+ }
412
+ });
413
+ //# sourceMappingURL=predicates-DiaYA7Ps.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"predicates-DiaYA7Ps.cjs","names":["isArray","getPreciseType","isEqual","safeStableStringify","isEqual","isURL","isURL","isNonEmptyString","isArray","isNonEmptyString","isArray","isObjectOrArray","getPreciseType","isArray","isArray","isEmptyArray","isFunction","isObjectOrArray","isObjectOrArray","isString","isNumber","parseCurrencyString","isDate","isRegExp","isSymbol","isSet","isMap","isArray","isObjectOrArray","isPlainObject","isNil","isBoolean","isNumber","isSymbol","isFunction","isString","isArray","isTypedArray","isMap","isSet","isBuffer","isPlainObject","isString","isEmptyString","isNumber","isNaN","isArray","isEmptyArray","isObjectOrArray","baseDeepEqual","isObjectOrArray","isArray","isUndefined","isFunction","isNil","isObjectOrArray","isFunction","isNonEmptyString","isObject","isNull"],"sources":["../src/predicates/are/areArraysEqual.ts","../src/predicates/are/areObjectsEqual.ts","../src/predicates/are/areURLsEqualPath.ts","../src/predicates/are/areURLsIdentical.ts","../src/predicates/contains/textContainsAll.ts","../src/predicates/contains/textContainsAny.ts","../src/predicates/is/isPropertyKey.ts","../src/predicates/exist/doesKeyExist.ts","../src/predicates/has/arrayHasAnyMatch.ts","../src/predicates/is/isArgument.ts","../src/predicates/is/isLength.ts","../src/predicates/is/isArrayLike.ts","../src/predicates/is/isArrayLikeObject.ts","../src/predicates/is/isCurrencyLike.ts","../src/predicates/is/isDeepEqual.ts","../src/predicates/is/isElement.ts","../src/predicates/is/isEmpty.ts","../src/predicates/is/isEmptyDeep.ts","../src/predicates/is/isEqualWith.ts","../src/predicates/is/isMatchWith.ts","../src/predicates/is/_private/baseIsMatch.ts","../src/predicates/is/isMatch.ts","../src/predicates/is/isNative.ts","../src/predicates/is/isObjectLoose.ts","../src/predicates/is/isSafeInteger.ts","../src/predicates/is/isValidURL.ts","../src/predicates/is/isWeakMap.ts"],"sourcesContent":["import { isArray } from \"../is/isArray\";\nimport { isEqual } from \"../is/isEqual\";\nimport { getPreciseType } from \"../type/getPreciseType\";\n\nimport { assertIsBoolean } from \"@/assertions/booleans/assertIsBoolean\";\nimport { safeStableStringify } from \"@/conversions/stringify/safeStableStringify\";\n\n/** ----------------------------------------------------------\n * * ***Predicate: `areArraysEqual`.***\n * ----------------------------------------------------------\n * **Compares two arrays deeply to check if they are equal.**\n * @description Supports deep comparison of arrays containing nested arrays or objects,\n * can also ignore the order of elements at all levels by recursively sorting.\n * @param {unknown[]} array1\n * ***The first array to compare, can contain nested arrays or objects.***\n * @param {unknown[]} array2\n * ***The second array to compare against, should match structure of `array1`.***\n * @param {boolean|undefined} [ignoreOrder=false]\n * ***Whether to ignore the order of elements when comparing.***\n * - If `true`, will sort both arrays recursively before comparing, default is `false`.\n * @returns {boolean}\n * Returns `true` if both arrays are deeply equal, otherwise `false`.\n * @throws **{@link TypeError | `TypeError`}** if `array1` or `array2` are not arrays, or if `ignoreOrder` is not a boolean.\n * @example\n * ```ts\n * areArraysEqual([1, 2, 3], [1, 2, 3]);\n * // ➔ true\n * areArraysEqual([1, 2, 3], [3, 2, 1]);\n * // ➔ false\n * areArraysEqual([1, 2, 3], [3, 2, 1], true);\n * // ➔ true (order ignored)\n * areArraysEqual([{ x: 1 }, { y: 2 }], [{ y: 2 }, { x: 1 }], true);\n * // ➔ true\n * ```\n */\nexport const areArraysEqual = (\n array1: unknown[],\n array2: unknown[],\n ignoreOrder: boolean = false\n): boolean => {\n if (!(isArray(array1) && isArray(array2))) {\n throw new TypeError(\n `Parameters \\`array1\\` and \\`array2\\` property of the \\`options\\` (second parameter) must be of type \\`array\\`, but received: ['array1': \\`${getPreciseType(\n array1\n )}\\`, 'array2': \\`${getPreciseType(array2)}\\`].`\n );\n }\n\n assertIsBoolean(ignoreOrder, {\n message: ({ currentType, validType }) =>\n `Third parameter \\`ignoreOrder\\` must be of type \\`${validType}\\`, but received: \\`${currentType}\\`.`\n });\n\n if (!isEqual(array1.length, array2.length)) return false;\n\n /**\n * Recursively sorts an array (and nested arrays) so that\n * deep equality checks can ignore order at all levels.\n *\n * @param {unknown[]} arr - The array to deep sort.\n * @returns {unknown[]} A new deeply sorted array.\n */\n const deepIgnoreOrder = (arr: unknown[]): unknown[] => {\n if (!isArray(arr)) return arr;\n\n // Recursively sort nested arrays\n const sorted = arr.map((item) => {\n if (isArray(item)) {\n return deepIgnoreOrder(item);\n }\n return item;\n });\n\n // Sort current array level\n return sorted.sort((a, b) => {\n const sa = safeStableStringify(a);\n const sb = safeStableStringify(b);\n return sa < sb ? -1 : sa > sb ? 1 : 0;\n });\n };\n\n const normalizedArr1 = ignoreOrder ? deepIgnoreOrder(array1) : array1;\n const normalizedArr2 = ignoreOrder ? deepIgnoreOrder(array2) : array2;\n\n if (!isEqual(normalizedArr1.length, normalizedArr2.length)) return false;\n\n return normalizedArr1.every(\n (item, index) =>\n safeStableStringify(item) === safeStableStringify(normalizedArr2[index])\n );\n};\n","import { isEqual } from \"../is/isEqual\";\n\n/** ---------------------------------\n * * ***Predicate: `areObjectsEqual`.***\n * ---------------------------------\n * **Compares two objects for deep equality.**\n * @template T1 The type of the first object.\n * @template T2 The type of the second object.\n * @param {*} object1 - The first object to compare.\n * @param {*} object2 - The second object to compare.\n * @returns {boolean} Return `true` if both objects are deeply equal, otherwise `false`.\n * @example\n * areObjectsEqual({ a: 1, b: 2 }, { a: 1, b: 2 });\n * // ➔ true\n * areObjectsEqual({ a: 1 }, { a: 1, b: undefined });\n * // ➔ false\n * areObjectsEqual([1, 2, 3], [1, 2, 3]);\n * // ➔ true\n */\nexport const areObjectsEqual = (\n object1: unknown,\n object2: unknown\n): boolean => {\n return isEqual(object1, object2);\n};\n","import { isURL } from \"../is/isURL\";\n\n/** ---------------------------------\n * * ***Predicate: `areURLsEqualPath`.***\n * ---------------------------------\n * **Checks if two URLs are the same, ignoring query parameters, this function compares only the protocol, host, and pathname.**\n * @param {URL} urlA - The first URL to compare.\n * @param {URL} urlB - The second URL to compare.\n * @returns {boolean} Returns `true` if both URLs are the same (ignoring search parameters), otherwise `false`.\n * @example\n * // Same domain, same path, different query -> true\n * areURLsEqualPath(\n * new URL(\"https://example.com/page?a=1\"),\n * new URL(\"https://example.com/page?b=2\")\n * );\n * // ➔ true\n *\n * // Same domain, different path -> false\n * areURLsEqualPath(\n * new URL(\"https://example.com/page1\"),\n * new URL(\"https://example.com/page2\")\n * );\n * // ➔ false\n *\n * // Different protocol -> false\n * areURLsEqualPath(\n * new URL(\"http://example.com/page\"),\n * new URL(\"https://example.com/page\")\n * );\n * // ➔ false\n *\n * // Same protocol, same host, same path (ignores query & hash) -> true\n * areURLsEqualPath(\n * new URL(\"https://example.com/page#section\"),\n * new URL(\"https://example.com/page\")\n * );\n * // ➔ true\n */\nexport const areURLsEqualPath = (urlA: URL, urlB: URL): boolean => {\n if (!isURL(urlA) || !isURL(urlB)) {\n throw new TypeError(\n \"Parameters `urlA` and `urlB` (first and second parameter) must be instance of URL.\"\n );\n }\n\n return (\n urlA.protocol + \"//\" + urlA.host + urlA.pathname ===\n urlB.protocol + \"//\" + urlB.host + urlB.pathname\n );\n};\n","import { isURL } from \"../is/isURL\";\n\n/** ---------------------------------\n * * ***Predicate: `areURLsIdentical`.***\n * ---------------------------------\n * **Checks if two URLs are exactly the same, including protocol, host, pathname, and query parameters.**\n * @param {URL} urlA - The first URL to compare.\n * @param {URL} urlB - The second URL to compare.\n * @returns {boolean} Returns `true` if both URLs are identical, otherwise `false`.\n * @example\n * // Identical URLs -> true\n * areURLsIdentical(\n * new URL(\"https://example.com/page?a=1\"),\n * new URL(\"https://example.com/page?a=1\")\n * );\n * // ➔ true\n *\n * // Same path, different query parameter -> false\n * areURLsIdentical(\n * new URL(\"https://example.com/page?a=1\"),\n * new URL(\"https://example.com/page?b=2\")\n * );\n * // ➔ false\n *\n * // Same host & query, but different protocol -> false\n * areURLsIdentical(\n * new URL(\"http://example.com/page?a=1\"),\n * new URL(\"https://example.com/page?a=1\")\n * );\n * // ➔ false\n *\n * // Same everything except trailing slash -> false\n * areURLsIdentical(\n * new URL(\"https://example.com/page\"),\n * new URL(\"https://example.com/page/\")\n * );\n * // ➔ false\n */\nexport const areURLsIdentical = (urlA: URL, urlB: URL): boolean => {\n if (!isURL(urlA) || !isURL(urlB)) {\n throw new TypeError(\n \"Parameters `urlA` and `urlB` (first and second parameter) must be instance of URL.\"\n );\n }\n\n return (\n urlA.protocol + \"//\" + urlA.host + urlA.pathname + urlA.search ===\n urlB.protocol + \"//\" + urlB.host + urlB.pathname + urlB.search\n );\n};\n","import { isArray } from \"../is/isArray\";\nimport { isNonEmptyString } from \"../is/isNonEmptyString\";\n\nimport { assertIsString } from \"@/assertions/strings/assertIsString\";\nimport { assertIsBoolean } from \"@/assertions/booleans/assertIsBoolean\";\nimport { assertIsPlainObject } from \"@/assertions/objects/assertIsPlainObject\";\n\ntype OptionsTextContainsAll = {\n /** If `true`, matches whole words only, defaultValue is `false`.\n *\n * @default false\n */\n exactMatch?: boolean;\n /** Optional regex flags (default: `\"i\"` for case-insensitive).\n *\n * @default \"i\"\n */\n flags?: string;\n};\n\n/** ----------------------------------------------------------\n * * ***Predicate: `textContainsAll`.***\n * ----------------------------------------------------------\n * **Checks if the given `text` contains all of the specified `searchWords`.**\n * - **Behavior:**\n * - Returns `false` if `text` or `searchWords` is `null`/`undefined`/invalid.\n * - Uses **regular expressions** for flexible pattern matching.\n * - **Escapes special characters** to prevent regex injection attacks.\n * - **Trims input** to avoid false positives with empty spaces.\n * - **Supports exact word matching** (optional).\n * @param {string|null|undefined} text - The string text to search within.\n * @param {string[]|null} [searchWords] - An array of words/phrases to match against the text.\n * @param {OptionsTextContainsAll} [options] - Optional configuration object.\n * @param {OptionsTextContainsAll[\"exactMatch\"]} [options.exactMatch=false] - If `true`, matches whole words only, defaultValue is `false`.\n * @param {OptionsTextContainsAll[\"flags\"]} [options.flags=\"i\"] - Optional regex flags (default: `\"i\"` for case-insensitive).\n * @returns {boolean} Return `true` if all `searchWords` are found in `text`, otherwise `false`.\n * @example\n * textContainsAll(\"Hello world, WithAI APP\", [\"Hello\", \"world\"]);\n * // ➔ true\n * textContainsAll(\"JavaScript and TypeScript\", [\"Java\", \"Script\"]);\n * // ➔ true\n * textContainsAll(\"Machine Learning\", [\"AI\", \"Learning\"]);\n * // ➔ false\n * textContainsAll(\"open-source\", [\"open\"], { exactMatch: true });\n * // ➔ false (because options `exactMatch=true`)\n * textContainsAll(null, [\"test\"]);\n * // ➔ false (invalid text)\n * textContainsAll(\"Hello\", null);\n * // ➔ false (invalid searchWords)\n */\nexport const textContainsAll = <T extends string>(\n text?: T | null,\n searchWords?: T[] | string[] | null,\n options: OptionsTextContainsAll = {}\n): boolean => {\n if (!isNonEmptyString(text) || !isArray(searchWords)) {\n return false;\n }\n\n assertIsPlainObject(options, {\n message: ({ currentType, validType }) =>\n `Third parameter (\\`options\\`) must be of type \\`${validType}\\`, but received: \\`${currentType}\\`.`\n });\n\n // fallback to default\n const { exactMatch = false, flags = \"i\" } = options;\n\n assertIsBoolean(exactMatch, {\n message: ({ currentType, validType }) =>\n `Parameter \\`exactMatch\\` property of the \\`options\\` (third parameter) must be of type \\`${validType}\\`, but received: \\`${currentType}\\`.`\n });\n\n assertIsString(flags, {\n message: ({ currentType, validType }) =>\n `Parameter \\`flags\\` property of the \\`options\\` (third parameter) must be of type \\`${validType}\\`, but received: \\`${currentType}\\`.`\n });\n // Escape special regex characters to prevent unintended behavior\n const escapeRegex = (str: string) =>\n str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n\n // Filter out empty search words\n const validSearchWords = searchWords\n .filter((word) => isNonEmptyString(word))\n .map(escapeRegex);\n\n if (validSearchWords.length === 0) return false;\n\n // Create regex pattern: Whole word match (`\\bword\\b`) <- is deprecated. if `exactMatch` is true\n return validSearchWords.every((word) => {\n const pattern = exactMatch ? `(?<!\\\\S)${word}(?!\\\\S)` : word;\n return new RegExp(pattern, flags.includes(\"u\") ? flags : flags + \"u\").test(\n text\n );\n });\n};\n","import { isArray } from \"../is/isArray\";\nimport { isNonEmptyString } from \"../is/isNonEmptyString\";\n\nimport { assertIsString } from \"@/assertions/strings/assertIsString\";\nimport { assertIsBoolean } from \"@/assertions/booleans/assertIsBoolean\";\nimport { assertIsPlainObject } from \"@/assertions/objects/assertIsPlainObject\";\n\ntype OptionsTextContainsAny = {\n /** If `true`, matches whole words only, defaultValue is `false`.\n *\n * @default false\n */\n exactMatch?: boolean;\n /** Optional regex flags (default: `\"i\"` for case-insensitive).\n *\n * @default \"i\"\n */\n flags?: string;\n};\n\n/** ----------------------------------------------------------\n * * ***Predicate: `textContainsAny`.***\n * ----------------------------------------------------------\n * **Checks if the given `text` contains at least one of the specified `searchWords`.**\n * - **Behavior:**\n * - Returns `false` if `text` or `searchWords` is `null`/`undefined`/invalid.\n * - Uses **regular expressions** for flexible pattern matching.\n * - **Escapes special characters** to prevent regex injection attacks.\n * - **Trims input** to avoid false positives with empty spaces.\n * - **Supports exact word matching** (optional).\n * @param {string|null|undefined} text - The string text to search within.\n * @param {string[]|null} [searchWords] - An array of words/phrases to match against the text.\n * @param {OptionsTextContainsAny} [options] - Optional configuration object.\n * @param {OptionsTextContainsAny[\"exactMatch\"]} [options.exactMatch=false] - If `true`, matches whole words only, defaultValue is `false`.\n * @param {OptionsTextContainsAny[\"flags\"]} [options.flags=\"i\"] - Optional regex flags (default: `\"i\"` for case-insensitive).\n * @returns {boolean} Return `true` if at least one `searchWord` is found in `text`, otherwise `false`.\n * @example\n * textContainsAny(\"Hello world\", [\"hello\", \"test\"]);\n * // ➔ true\n * textContainsAny(\"withAI APP\", [\"chat\", \"ai\"]);\n * // ➔ false\n * textContainsAny(\"TypeScript is great!\", [\"script\", \"java\"]);\n * // ➔ true\n * textContainsAny(\"open-source\", [\"open\"], { exactMatch: true });\n * // ➔ false (because options `exactMatch=true`)\n * textContainsAny(null, [\"test\"]);\n * // ➔ false (invalid text)\n * textContainsAny(\"Hello\", null);\n * // ➔ false (invalid searchWords)\n */\nexport const textContainsAny = <T extends string>(\n text?: T | null,\n searchWords?: T[] | string[] | null,\n options: OptionsTextContainsAny = {}\n): boolean => {\n if (!isNonEmptyString(text) || !isArray(searchWords)) {\n return false;\n }\n\n assertIsPlainObject(options, {\n message: ({ currentType, validType }) =>\n `Third parameter (\\`options\\`) must be of type \\`${validType}\\`, but received: \\`${currentType}\\`.`\n });\n\n // fallback to default\n const { exactMatch = false, flags = \"i\" } = options;\n\n assertIsBoolean(exactMatch, {\n message: ({ currentType, validType }) =>\n `Parameter \\`exactMatch\\` property of the \\`options\\` (third parameter) must be of type \\`${validType}\\`, but received: \\`${currentType}\\`.`\n });\n\n assertIsString(flags, {\n message: ({ currentType, validType }) =>\n `Parameter \\`flags\\` property of the \\`options\\` (third parameter) must be of type \\`${validType}\\`, but received: \\`${currentType}\\`.`\n });\n\n // Escape special regex characters to prevent unintended behavior\n const escapeRegex = (str: string) =>\n str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n\n // Filter out empty search words\n const validSearchWords = searchWords\n .filter((word) => isNonEmptyString(word))\n .map(escapeRegex);\n\n if (validSearchWords.length === 0) return false;\n\n const pattern = exactMatch\n ? `(?<!\\\\S)(${validSearchWords.join(\"|\")})(?!\\\\S)`\n : `(${validSearchWords.join(\"|\")})`;\n\n return new RegExp(pattern, flags.includes(\"u\") ? flags : flags + \"u\").test(\n text\n );\n};\n","/** ----------------------------------------------------------\n * * ***Type guard: `PropertyKey`.***\n * ----------------------------------------------------------\n * **Checks if a value is a valid `PropertyKey`.**\n * - **In JavaScript/TypeScript, a **`PropertyKey`** is any of:**\n * - **`string`**\n * - **`number`**\n * - **`symbol`**\n * - **This function ensures the given `value` is one of these types.**\n * - Narrows type to {@link PropertyKey | ***`PropertyKey`***} when true.\n * - Useful for working with dynamic object keys.\n * - Strictly rejects `null`, `undefined`, `boolean`, `object`, `function`, etc.\n * @param {*} value - The value to check.\n * @returns {boolean} Return `true` if `value` is a valid property key, otherwise `false`.\n * @example\n * isPropertyKey(\"foo\");\n * // ➔ true\n * isPropertyKey(123);\n * // ➔ true\n * isPropertyKey(Symbol(\"id\"));\n * // ➔ true\n * isPropertyKey({});\n * // ➔ false\n * isPropertyKey(null);\n * // ➔ false\n */\nexport function isPropertyKey(value: unknown): value is PropertyKey {\n const type = typeof value;\n return type === \"string\" || type === \"number\" || type === \"symbol\";\n}\n","import { isArray } from \"../is/isArray\";\nimport { isPropertyKey } from \"../is/isPropertyKey\";\nimport { isObjectOrArray } from \"../is/isObjectOrArray\";\nimport { getPreciseType } from \"../type/getPreciseType\";\n\n/** ----------------------------------------------------------\n * * ***Predicate: `doesKeyExist`.***\n * ----------------------------------------------------------\n * **Recursively checks if a given key exists in an object or array.**\n * - **Behavior:**\n * - **Supports deeply nested objects and arrays**, searching recursively.\n * - Uses `Object.prototype.hasOwnProperty.call()` to safely check if the\n * key exists at each level, even if its value is `null` or `undefined`.\n * - Optimized to return `true` immediately when the key is found (short-circuits).\n * - Handles edge cases gracefully:\n * - Returns `false` for `null`, `undefined`, or non-object inputs.\n * - Returns `false` if key is not found anywhere, even in deeply nested\n * structures.\n * - **ℹ️ Note:**\n * - This function only checks for **the existence of the key itself**,\n * not whether its value is non-null or non-undefined.\n * - If you need to check for both existence and meaningful value, write a stricter function.\n * @template T - The type of the input object or array.\n * @param {T | Record<string, unknown> | unknown[]} object - The object or array to search.\n * @param {PropertyKey} key - The key to look for (string, number, or symbol).\n * @returns {boolean} Returns `true` if the key exists anywhere in the object or array (even with `null` / `undefined` value), otherwise `false`.\n * @example\n * doesKeyExist({ name: \"John\", age: 30 }, \"age\");\n * // ➔ true\n * doesKeyExist({ user: { profile: { email: \"test@example.com\" } } }, \"email\");\n * // ➔ true\n * doesKeyExist([{ id: 1 }, { id: 2 }], \"id\");\n * // ➔ true\n * doesKeyExist({ a: { b: { c: 10 } } }, \"d\");\n * // ➔ false\n * doesKeyExist(null, \"name\");\n * // ➔ false\n * doesKeyExist(undefined, \"test\");\n * // ➔ false\n *\n * // Key exists even if value is null or undefined:\n * doesKeyExist({ a: null, b: undefined, c: { d: null } }, \"a\"); // ➔ true\n * doesKeyExist({ a: null, b: undefined, c: { d: null } }, \"b\"); // ➔ true\n * doesKeyExist({ a: null, b: undefined, c: { d: null } }, \"d\"); // ➔ true\n *\n * doesKeyExist({ a: 1 }, true);\n * // ➔ ❌ Throws TypeError\n * doesKeyExist({ a: 1 }, [\"not\", \"valid\"]);\n * // ➔ ❌ Throws TypeError\n */\nexport const doesKeyExist = (\n object: Record<string, unknown> | unknown[],\n key: PropertyKey\n): boolean => {\n if (!isObjectOrArray(object)) return false; // Handle null, undefined, and non-objects\n\n if (!isPropertyKey(key)) {\n throw new TypeError(\n `Second Parameter (\\`key\\`) must be of type \\`string\\`, \\`number\\` or \\`symbol\\`, but received: \\`${getPreciseType(\n key\n )}\\`.`\n );\n }\n\n // Direct match found\n if (Object.prototype.hasOwnProperty.call(object, key)) return true;\n\n if (isArray(object)) {\n // Check each array item recursively\n return object.some((item) => doesKeyExist(item as unknown[], key));\n }\n\n return Object.values(object).some(\n (value) => isObjectOrArray(value) && doesKeyExist(value, key)\n );\n};\n","import { isArray } from \"../is/isArray\";\nimport { isEmptyArray } from \"../is/isEmptyArray\";\n\n/** ----------------------------------------------------------\n * * ***Predicate: `arrayHasAnyMatch`.***\n * ----------------------------------------------------------\n * **Checks if at least one element from `targetArray` exists in `sourceArray`.**\n * - **Behavior:**\n * - Uses `Set` for **faster lookup** compared to `Array.prototype.includes()`.\n * - Supports **any data type** (`number`, `string`, `boolean`, `object`, `array`, `function`, etc.).\n * - Uses **reference equality** for non-primitive values (object, array, function).\n * - Returns `false` if either array is missing, empty, or not an array.\n * @template T - The expected type of array elements.\n * @param {T[] | null | undefined} sourceArray - The array to search within.\n * @param {T[] | null | undefined} targetArray - The array containing elements to match.\n * @returns {boolean}\n * ***Return:***\n * - `true` if **at least one element from `targetArray` is strictly found\n * in `sourceArray`**.\n * - Comparison uses:\n * - **Value equality** for primitives (`number`, `string`, `boolean`, `null`, `undefined`).\n * - **Reference equality** for `objects`, `arrays`, and `functions`.\n * - `false` if:\n * - No matching elements exist,\n * - Either array is not provided, not an actual array, or is empty.\n * @example\n * arrayHasAnyMatch([\"apple\", \"banana\", \"cherry\"], [\"banana\", \"grape\"]);\n * // ➔ true\n * arrayHasAnyMatch([\"red\", \"blue\"], [\"green\", \"yellow\"]);\n * // ➔ false\n * arrayHasAnyMatch([1, 2, 3], [3, 4, 5]);\n * // ➔ true\n * arrayHasAnyMatch([], [\"test\"]);\n * // ➔ false\n * arrayHasAnyMatch([\"A\", \"B\", \"C\"], []);\n * // ➔ false\n *\n * const obj = { x: 1 };\n * arrayHasAnyMatch([obj], [obj]);\n * // ➔ true (same reference)\n * arrayHasAnyMatch([{ x: 1 }], [{ x: 1 }]);\n * // ➔ false (different reference)\n *\n * const fn = () => \"hello\";\n * arrayHasAnyMatch([fn], [fn]);\n * // ➔ true\n * arrayHasAnyMatch([() => \"hello\"], [() => \"hello\"]);\n * // ➔ false (different function reference)\n *\n * const arr = [1, 2];\n * arrayHasAnyMatch([arr], [arr]);\n * // ➔ true\n * arrayHasAnyMatch([[1, 2]], [[1, 2]]);\n * // ➔ false (different array object)\n */\nexport const arrayHasAnyMatch = <T>(\n sourceArray: T[] | null | undefined,\n targetArray: T[] | null | undefined\n): boolean => {\n if (\n !isArray(sourceArray) ||\n !isArray(targetArray) ||\n isEmptyArray(sourceArray) ||\n isEmptyArray(targetArray)\n ) {\n return false;\n }\n\n // use Set for lookup more faster.\n const sourceSet = new Set(sourceArray);\n return targetArray.some((item) => sourceSet.has(item));\n};\n","/** -------------------\n * * ***Type guard: `isArguments`.***\n * -------------------\n * **Checks if `value` is likely an `arguments` object.**\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an ***[`IArguments`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments)*** object, else `false`.\n * @example\n * isArguments(function() { return arguments; }());\n * // ➔ true\n * isArguments([1, 2, 3]);\n * // ➔ false\n */\nexport const isArguments = (value: unknown): value is IArguments => {\n return Object.prototype.toString.call(value) === \"[object Arguments]\";\n};\n","/** ----------------------------------------\n * * ***Predicate: `isLength`.***\n * ----------------------------------------------------------\n * **Checks whether the given value is a **valid array-like length**.**\n * - **Behavior:**\n * - ✅ Ensures the value is a **non-negative integer**.\n * - ✅ Ensures the value is **not greater than `Number.MAX_SAFE_INTEGER`**.\n * - ❌ Excludes non-numeric values, `Infinity`, and fractional numbers.\n * - **ℹ️ Note:**\n * - This method is loosely based-on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n * - A valid length must be a non-negative integer and **not greater\n * than `Number.MAX_SAFE_INTEGER`**.\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n * isLength(3);\n * // ➔ true\n * isLength(Number.MAX_SAFE_INTEGER);\n * // ➔ true\n * isLength(Number.MAX_SAFE_INTEGER + 1);\n * // ➔ false\n * isLength(\"3\");\n * // ➔ false\n * isLength(-1);\n * // ➔ false\n * isLength(3.14);\n * // ➔ false\n * isLength(Infinity);\n * // ➔ false\n * isLength(-Infinity);\n * // ➔ false\n * isLength(Number.MIN_VALUE);\n * // ➔ false\n */\nexport function isLength(value: unknown): boolean {\n return (\n typeof value === \"number\" &&\n value > -1 &&\n Number.isInteger(value) &&\n value <= Number.MAX_SAFE_INTEGER\n );\n}\n","import type { AnyFunction } from \"@rzl-zone/ts-types-plus\";\n\nimport { isLength } from \"./isLength\";\nimport { isFunction } from \"./isFunction\";\nimport { isObjectOrArray } from \"./isObjectOrArray\";\n\n/** ----------------------------------------------------\n * * ***Type guard: `isArrayLike`.***\n * ----------------------------------------------------\n * **Checks if `value` is array-like, a value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.**\n * @template T - The type of the value being checked.\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n * isArrayLike([1, 2, 3]);\n * // ➔ true\n * isArrayLike(document.body.children);\n * // ➔ true\n * isArrayLike(noop);\n * // ➔ false\n * isArrayLike('abc');\n * // ➔ false\n */\nexport function isArrayLike<T extends { __anyHack: unknown }>(\n value: T\n): boolean;\nexport function isArrayLike(\n value: AnyFunction | null | undefined\n): value is never;\nexport function isArrayLike(value: unknown): value is { length: number };\nexport function isArrayLike(value: unknown) {\n return (\n !isFunction(value) && isObjectOrArray(value) && isLength(value?.length)\n );\n}\n","import type { AnyFunction } from \"@rzl-zone/ts-types-plus\";\nimport { isLength } from \"./isLength\";\nimport { isObjectOrArray } from \"./isObjectOrArray\";\n\n/** ----------------------------------------------------\n * * ***Type guard: `isArrayLikeObject`.***\n * ----------------------------------------------------\n * **This method is like ***`isArrayLike` utility function*** except that\n * it also checks if `value` is an object.**\n * @template T - The type of the value being checked.\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `array-like object`, else `false`.\n * @example\n * isArrayLikeObject([1, 2, 3]);\n * // ➔ true\n * isArrayLikeObject(document.body.children);\n * // ➔ true\n * isArrayLikeObject('abc');\n * // ➔ false\n * isArrayLikeObject(noop);\n * // ➔ false\n */\nexport function isArrayLikeObject<T extends { __anyHack: unknown }>(\n value: T\n): boolean;\nexport function isArrayLikeObject(\n value: AnyFunction | string | boolean | number | null | undefined\n): value is never;\nexport function isArrayLikeObject(\n value: unknown\n): value is object & { length: number };\nexport function isArrayLikeObject(value: unknown) {\n return isObjectOrArray(value) && isLength(value.length);\n}\n","import { isNumber } from \"./isNumber\";\nimport { isString } from \"./isString\";\nimport { parseCurrencyString } from \"@/conversions/currency/parsing\";\n\n/** -----------------------------------------------------------\n * * ***Predicate: `isCurrencyLike`.***\n * -----------------------------------------------------------\n * **Determines if the given `input` can be interpreted as a currency-like number,\n * using the same **multi-locale parsing logic** as ***`parseCurrencyString`***.**\n * - **Highlights:**\n * - *Supports strings or numbers like:*\n * - `\"15.000,10\"` ***(European)***.\n * - `\"15,000.10\"` ***(US)***.\n * - `\"15'000.10\"` ***(Swiss)***.\n * - `\"15 000,10\"` ***(French)***.\n * - `\"Rp 15.000,10\"` or `\"$15,000.10\"`.\n * - Also accepts simple numbers (`15300.95`).\n * - **ℹ️ Note:**\n * - Uses the same core logic as\n * ***`parseCurrencyString`*** but\n * just checks if a final parsed float is sensible.\n * @param {*} input - The input value to check.\n * @returns {boolean} Return `true` if it can be reasonably parsed into a currency-like number, `false` otherwise.\n * @example\n * isCurrencyLike(15300.95);\n * // ➔ true\n * isCurrencyLike(\"$15,000.10\");\n * // ➔ true\n * isCurrencyLike(\"(15'000.10)\");\n * // ➔ true\n * isCurrencyLike(\"Rp 15.000,10\");\n * // ➔ true\n * isCurrencyLike(\"\");\n * // ➔ false\n * isCurrencyLike(\"abc\");\n * // ➔ false\n */\nexport const isCurrencyLike = (input: unknown): boolean => {\n if (!(isString(input) || isNumber(input))) return false;\n\n const parsed = parseCurrencyString(input.toString());\n // If parseCurrencyString returns a meaningful number (not just fallback zero for empty/invalid input)\n if (parsed !== 0) return true;\n\n // Special case: if input was exactly \"0\", still valid\n return input.toString().trim() === \"0\";\n};\n","import { isMap } from \"./isMap\";\nimport { isSet } from \"./isSet\";\nimport { isDate } from \"./isDate\";\nimport { isArray } from \"./isArray\";\nimport { isRegExp } from \"./isRegExp\";\nimport { isSymbol } from \"./isSymbol\";\nimport { isObjectOrArray } from \"./isObjectOrArray\";\n\n/** ----------------------------------------------------------\n * * ***Predicate: `isDeepEqual`.***\n * ----------------------------------------------------------\n * **Performs a deep equality check between two values.**\n * - **Behavior:**\n * - Compares nested `arrays`, `objects`, `Dates`, `RegExp`, `NaN`, `Symbols`,\n * `Set`, and `Map`.\n * - Handles special cases:\n * - `NaN` is considered equal to `NaN`.\n * - `Date` objects are equal if `.getTime()` is equal.\n * - `RegExp` objects are equal if `.toString()` is equal.\n * - `Symbol(\"x\")` and `Symbol(\"x\")` are treated equal if\n * `.toString()` matches.\n * - `Set` and `Map` are deeply compared by content (order-insensitive).\n * - **ℹ️ Note:**\n * - Does not support circular references.\n * @param {*} a - First value to compare.\n * @param {*} b - Second value to compare.\n * @returns {boolean} `true` if both values are deeply equal, otherwise `false`.\n * @example\n * // ✅ Primitives\n * isDeepEqual(1, 1);\n * // ➔ true\n * isDeepEqual(NaN, NaN);\n * // ➔ true\n * isDeepEqual(\"hello\", \"world\");\n * // ➔ false\n *\n * // ✅ Objects\n * isDeepEqual({ x: 1 }, { x: 1 });\n * // ➔ true\n * isDeepEqual({ x: 1 }, { y: 1 });\n * // ➔ false\n *\n * // ✅ Arrays\n * isDeepEqual([1, 2], [1, 2]);\n * // ➔ true\n * isDeepEqual([1, 2], [2, 1]);\n * // ➔ false\n *\n * // ✅ Dates\n * isDeepEqual(new Date(123), new Date(123));\n * // ➔ true\n *\n * // ✅ Sets\n * isDeepEqual(new Set([1, 2]), new Set([2, 1]));\n * // ➔ true\n *\n * // ✅ Maps\n * isDeepEqual(new Map([[\"a\", 1]]), new Map([[\"a\", 1]]));\n * // ➔ true\n *\n * // ❌ Different types\n * isDeepEqual(1, \"1\");\n * // ➔ false\n */\nexport const isDeepEqual = (a: unknown, b: unknown): boolean => {\n // Handle NaN\n if (\n typeof a === \"number\" &&\n typeof b === \"number\" &&\n Number.isNaN(a) &&\n Number.isNaN(b)\n ) {\n return true;\n }\n\n // Primitive equality\n if (a === b) return true;\n\n // Type mismatch\n if (typeof a !== typeof b) return false;\n\n // Date\n if (isDate(a) && isDate(b)) {\n return a.getTime() === b.getTime();\n }\n\n // RegExp\n if (isRegExp(a) && isRegExp(b)) {\n return a.toString() === b.toString();\n }\n\n // Symbol\n if (isSymbol(a) && isSymbol(b)) {\n return a.toString() === b.toString();\n }\n\n // Set\n if (isSet(a) && isSet(b)) {\n if (a.size !== b.size) return false;\n const bValues = Array.from(b);\n const matched = new Set<number>();\n\n for (const aVal of a) {\n let found = false;\n for (let i = 0; i < bValues.length; i++) {\n if (matched.has(i)) continue;\n if (isDeepEqual(aVal, bValues[i])) {\n matched.add(i);\n found = true;\n break;\n }\n }\n if (!found) return false;\n }\n return true;\n }\n\n // Map\n if (isMap(a) && isMap(b)) {\n if (a.size !== b.size) return false;\n const bEntries = Array.from(b);\n const matched = new Set<number>();\n\n for (const [aKey, aVal] of a) {\n let found = false;\n for (let i = 0; i < bEntries.length; i++) {\n if (matched.has(i)) continue;\n const [bKey, bVal] = bEntries[i];\n if (isDeepEqual(aKey, bKey) && isDeepEqual(aVal, bVal)) {\n matched.add(i);\n found = true;\n break;\n }\n }\n if (!found) return false;\n }\n return true;\n }\n\n // Array\n if (isArray(a) && isArray(b)) {\n if (a.length !== b.length) return false;\n return a.every((item, i) => isDeepEqual(item, b[i]));\n }\n\n // Object\n if (isObjectOrArray(a) && isObjectOrArray(b) && a && b) {\n if (isArray(a) !== isArray(b)) return false;\n\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) return false;\n\n return aKeys.every((key) => isDeepEqual(a[key], b[key]));\n }\n\n return false;\n};\n","import { isPlainObject } from \"./isPlainObject\";\n\n/** ----------------------------------------------------\n * * ***Type guard: `isElement`.***\n * ----------------------------------------------------------\n * **Checks if `value` is likely a\n * **[`DOM Element`](https://developer.mozilla.org/en-US/docs/Web/API/Element)**.**\n * @template T - The type of the value being checked.\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is extends instance of **[`Element`](https://developer.mozilla.org/en-US/docs/Web/API/Element)**, else `false`.\n * @example\n * isElement(document.body);\n * // ➔ true\n * isElement(document.createElement(\"div\"));\n * // ➔ true\n * isElement('<body>');\n * // ➔ false\n * isElement(document);\n * // ➔ false\n * isElement({ tagName: \"DIV\" });\n * // ➔ false\n */\nexport function isElement(value: []): value is [];\nexport function isElement<T extends Element>(value: T): value is T;\nexport function isElement(value: unknown): value is Element;\nexport function isElement(value: unknown) {\n return (\n !!value &&\n typeof value === \"object\" &&\n (value as Element)?.nodeType === 1 &&\n !isPlainObject(value)\n );\n // return typeof Element === \"function\" && value instanceof Element;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { List, EmptyObjectOf } from \"./_private/types.isEmpty\";\n\nimport { isNil } from \"./isNil\";\nimport { isMap } from \"./isMap\";\nimport { isSet } from \"./isSet\";\nimport { isArray } from \"./isArray\";\nimport { isBuffer } from \"./isBuffer\";\nimport { isNumber } from \"./isNumber\";\nimport { isSymbol } from \"./isSymbol\";\nimport { isString } from \"./isString\";\nimport { isBoolean } from \"./isBoolean\";\nimport { isFunction } from \"./isFunction\";\nimport { isArguments } from \"./isArgument\";\nimport { isTypedArray } from \"./isTypedArray\";\nimport { isPlainObject } from \"./isPlainObject\";\n\n/** ----------------------------------------------------\n * * ***Predicate: `isEmpty`.***\n * ----------------------------------------------------------\n * **Checks if `value` is an empty object, collection, map, or set.**\n * - **Behavior:**\n * - **Objects** are empty if they have no own enumerable string keyed properties.\n * - **Array-like values** (arrays, strings, `arguments`, typed arrays, buffers)\n * are empty if their `length` is `0`.\n * - **Maps** and **Sets** are empty if their `size` is `0`.\n * - **Booleans**, **numbers** (including `NaN`), **symbols**, and `null`/\n * `undefined` are treated as empty.\n * - **Functions** are considered empty if they have no own enumerable keys.\n * - **ℹ️ Note:**\n * - For more `Strict`, you can use\n * ***`isEmptyValue` utility function*** instead.\n * @template T - The type of the value being checked.\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n * isEmpty(null);\n * // ➔ true\n * isEmpty(true);\n * // ➔ true\n * isEmpty(false);\n * // ➔ true\n * isEmpty(1);\n * // ➔ true\n * isEmpty(0);\n * // ➔ true\n * isEmpty(Symbol(\"x\"));\n * // ➔ true\n * isEmpty(() => {});\n * // ➔ true\n * isEmpty(\"\");\n * // ➔ true\n * isEmpty(\" \");\n * // ➔ false\n * isEmpty([1, 2, 3]);\n * // ➔ false\n * isEmpty({ 'a': 1 });\n * // ➔ false\n */\nexport function isEmpty<T extends { __trapAny: any }>(value?: T): boolean;\nexport function isEmpty(value: string): value is \"\";\nexport function isEmpty(\n value: Map<any, any> | Set<any> | List<any> | null | undefined\n): boolean;\nexport function isEmpty(value: object): boolean;\nexport function isEmpty<T extends object>(\n value: T | null | undefined\n): value is EmptyObjectOf<T> | null | undefined;\nexport function isEmpty(value: any): boolean;\nexport function isEmpty(value: unknown) {\n // null / undefined\n if (isNil(value)) return true;\n\n // Boolean, number, symbol\n if (\n isBoolean(value) ||\n isNumber(value, { includeNaN: true }) ||\n isSymbol(value)\n )\n return true;\n\n // Function ➔ treat like object: check own enumerable keys\n if (isFunction(value)) {\n return Object.keys(value).length === 0;\n }\n\n // String / Array-like\n if (\n isString(value) ||\n isArray(value) ||\n isArguments(value) ||\n isTypedArray(value)\n ) {\n return value.length === 0;\n }\n\n // Map / Set\n if (isMap(value) || isSet(value)) {\n return value.size === 0;\n }\n\n // Buffer\n if (isBuffer(value)) {\n return value.length === 0;\n }\n\n // Object (check own enumerable keys)\n if (isPlainObject(value)) {\n return Object.keys(value).length === 0;\n }\n\n return false;\n}\n","import { isNaN } from \"./isNaN\";\nimport { isArray } from \"./isArray\";\nimport { isString } from \"./isString\";\nimport { isNumber } from \"./isNumber\";\nimport { isEmptyArray } from \"./isEmptyArray\";\nimport { isEmptyString } from \"./isEmptyString\";\nimport { isObjectOrArray } from \"./isObjectOrArray\";\n\n/** ----------------------------------------------------------\n * * ***Predicate: `isEmptyDeep`.***\n * ----------------------------------------------------------\n * **Recursively checks whether a value is **deeply empty**.**\n * - **Returns `true` for:**\n * - Empty objects: `{}`\n * - Empty arrays: `[]`\n * - Nested empty structures: `{ a: [], b: {} }`\n * - Falsy values (except numbers): `null`, `undefined`, `false`, `\"\"`, `NaN`\n * - **Returns `false` for:**\n * - Non-zero numbers\n * - Objects or arrays containing non-empty values\n * - Non-empty strings, `true`, functions, symbols, etc.\n * @param {*} value - The value to deeply check.\n * @returns {boolean} `true` if the value is deeply empty, otherwise `false`.\n * @example\n * isEmptyDeep({});\n * // ➔ true\n * isEmptyDeep([]);\n * // ➔ true\n * isEmptyDeep({ a: {} });\n * // ➔ true\n * isEmptyDeep([[], {}]);\n * // ➔ true\n * isEmptyDeep({ a: [1] });\n * // ➔ false\n * isEmptyDeep([0]);\n * // ➔ false\n * isEmptyDeep(\"test\");\n * // ➔ false\n * isEmptyDeep(\"\");\n * // ➔ true\n * isEmptyDeep(0);\n * // ➔ false\n * isEmptyDeep(NaN);\n * // ➔ true\n */\nexport const isEmptyDeep = (value: unknown): boolean => {\n if (isString(value)) return isEmptyString(value);\n // Number ➔ only NaN counts as empty\n if (isNumber(value)) return isNaN(value);\n if (isArray(value)) {\n return isEmptyArray(value) || value.every(isEmptyDeep);\n }\n if (isObjectOrArray(value)) {\n const keys = Object.keys(value);\n const symbols = Object.getOwnPropertySymbols(value);\n // return (\n // [...keys, ...symbols].length === 0 ||\n // [...keys, ...symbols].every((key) =>\n // isObject(value) && isString(key) ? isEmptyDeep(value[key]) : key\n // )\n // );\n\n if (keys.length === 0 && symbols.length === 0) return true;\n\n return [...keys, ...symbols].every((key) => isEmptyDeep(value[key]));\n }\n if (!value) return true;\n\n return false;\n};\n","import type { CustomizerIsEqualWith } from \"./_private/types.isEqualWith\";\nimport { baseDeepEqual } from \"@/predicates/is/_private/baseDeepEqual\";\n\n/** ----------------------------------------------------\n * * ***Predicate: `isEqualWith`.***\n * ----------------------------------------------------\n * **Performs a deep comparison between two values with support for a\n * customizer function.**\n * @description\n * This method is like ***`isEqual` utility function*** except that it\n * accepts a `customizer` which is invoked to compare values.\n * - **Behavior:**\n * - If `customizer` returns `undefined`, the comparison is handled by\n * the default deep equality algorithm.\n * - The `customizer` is invoked with up to six arguments:\n * - `(value, other, indexOrKey, parent, otherParent, stack)`,\n * see **{@link CustomizerIsEqualWith | `CustomizerIsEqualWith`}**.\n * - Supports comparing `arrays`, `objects`, `maps`, `sets`, `dates`,\n * `regexes`, `typed arrays`, `etc`.\n * - Functions and DOM nodes are **not** supported.\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {CustomizerIsEqualWith} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n * function isGreeting(value: unknown) {\n * return typeof value === \"string\" && /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue: unknown, othValue: unknown) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * const array = [\"hello\", \"goodbye\"];\n * const other = [\"hi\", \"goodbye\"];\n *\n * isEqualWith(array, other, customizer);\n * // ➔ true\n */\nexport function isEqualWith(\n value: unknown,\n other: unknown,\n customizer?: CustomizerIsEqualWith\n): boolean {\n return baseDeepEqual(value, other, customizer, new WeakMap());\n}\n","import type { CustomizerIsMatchWith } from \"./_private/types.isMatchWith\";\nimport { baseIsMatch } from \"@/predicates/is/_private/baseIsMatch\";\n\n/** ----------------------------------------------------\n * * ***Predicate: `isMatchWith`.***\n * ----------------------------------------------------\n * **Performs a partial deep comparison between `object` and `source`, like `isMatch`, but with a `customizer` function to control comparisons.**\n * @description\n * If `customizer` returns a value other than `undefined`, that value is used\n * as the result of the comparison for the current property. Otherwise,\n * the comparison falls back to the default deep equality logic.\n * - **Behavior:**\n * - The `customizer` function is invoked with up to **five** arguments:\n * - `(objValue, srcValue, keyOrIndex, object, source)`,\n * see **{@link CustomizerIsMatchWith | `CustomizerIsMatchWith`}**.\n * - Returning `true` from `customizer` will short-circuit further comparison\n * for that key.\n * - Returning `false` will cause `isMatchWith` to return `false` immediately.\n * - Returning `undefined` allows default comparison to proceed.\n * @param {object} value - The object to inspect.\n * @param {object} other - The object of property values to match.\n * @param {CustomizerIsMatchWith} [customizer] - The function to customize comparisons.\n * @returns Returns `true` if `object` is a match, else `false`.\n * @example\n * function isGreeting(value: unknown) {\n * return typeof value === 'string' && /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue: unknown, srcValue: unknown) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * const object = { greeting: 'hello' };\n * const source = { greeting: 'hi' };\n *\n * isMatchWith(object, source, customizer);\n * // ➔ true\n */\nexport function isMatchWith(\n value: object,\n other: object,\n customizer?: CustomizerIsMatchWith\n): boolean {\n return baseIsMatch(value, other, customizer);\n}\n","import type { CustomizerIsMatchWith } from \"./types.isMatchWith\";\n\nimport { isArray } from \"../isArray\";\nimport { isUndefined } from \"../isUndefined\";\nimport { isMatchWith } from \"../isMatchWith\";\nimport { isObjectOrArray } from \"../isObjectOrArray\";\n\n// #Private - local\nfunction isSameValue(x: unknown, y: unknown): boolean {\n return (\n x === y || (x === 0 && y === 0) || (Number.isNaN(x) && Number.isNaN(y))\n );\n}\n\n/** -------------------------------------------------------------------\n * * ***Base function (**Internal**) for matching objects with optional customizer.***\n * -------------------------------------------------------------------\n * **Recursively checks whether `object` matches `source`. Supports custom comparison\n * via `customizer`, and handles arrays, objects, and nested structures.**\n * @param object\n * - The object to test against the `source`.\n * @param source\n * - The source object to match.\n * @param customizer\n * - Optional function to customize the comparison for each property/value.\n * @returns\n * - `true` → `object` matches `source`.\n * - `false` → `object` does not match `source`.\n * @example\n * ```ts\n * const obj = { name: \"Alice\", age: 30 };\n * const src = { name: \"alice\" };\n * const customizer: CustomizerIsMatchWith = (value, other) => {\n * if (typeof value === \"string\" && typeof other === \"string\") {\n * return value.toLowerCase() === other.toLowerCase();\n * }\n * };\n *\n * baseIsMatch(obj, src, customizer);\n * // returns true\n * ```\n */\nexport function baseIsMatch(\n object: unknown,\n source: unknown,\n customizer?: CustomizerIsMatchWith\n): boolean {\n if (object === source) return true;\n\n if (!isObjectOrArray(source)) {\n return isSameValue(object, source);\n }\n\n if (!isObjectOrArray(object)) {\n return false;\n }\n\n const keys = Reflect.ownKeys(source).filter(\n (k) => !(isArray(source) && k === \"length\")\n );\n\n for (const key of keys) {\n if (!(key in object)) return false;\n\n const objValue = object[key];\n const srcValue = source[key];\n\n const result = customizer?.(objValue, srcValue, key, object, source);\n if (!isUndefined(result)) {\n if (!result) return false;\n continue; // skip default comparison\n }\n\n if (isObjectOrArray(objValue) && isObjectOrArray(srcValue)) {\n if (!isMatchWith(objValue, srcValue, customizer)) return false;\n } else {\n if (!isSameValue(objValue, srcValue)) return false;\n }\n }\n\n return true;\n}\n","import { baseIsMatch } from \"@/predicates/is/_private/baseIsMatch\";\n\n/** ----------------------------------------------------\n * * ***Predicate: `isMatch`.***\n * ----------------------------------------------------\n * **Performs a partial deep comparison between `object` and `source`.**\n * @description\n * Determines whether `object` contains equivalent property values from `source`.\n * - **Behavior:**\n * - ✅ Returns `true` if **all properties** in `source` exist in `object` and are deeply equal.\n * - ❌ Does **not** require `object` and `source` to be the same shape—`object` may have extra properties.\n * - ⚠️ Arrays are treated as objects: only matching indexed keys are compared.\n * - **Remarks:**\n * - This is functionally equivalent to a partially applied `matches(source)` predicate.\n * - Special cases:\n * - An empty array (`[]`) in `source` matches any array in `object`.\n * - An empty object (`{}`) in `source` matches any object in `object`.\n * @param {object} object - The object to inspect.\n * @param {object} source - The object containing property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n * const object = { a: 1, b: 2 };\n *\n * isMatch(object, { b: 2 });\n * // ➔ true\n * isMatch(object, { b: 1 });\n * // ➔ false\n * isMatch([1, 2, 3], [1, 2]);\n * // ➔ true (treats arrays as objects with index keys)\n */\nexport function isMatch(object: object, source: object): boolean {\n return baseIsMatch(object, source);\n}\n","import type { AnyFunction } from \"@rzl-zone/ts-types-plus\";\nimport { isFunction } from \"./isFunction\";\n\nconst funcToString = Function.prototype.toString;\nconst reIsNative = /\\{\\s*\\[native code\\]\\s*\\}/;\n\n/** ----------------------------------------------------\n * * ***Type guard: `isNative`.***\n * ----------------------------------------------------------\n * **Checks if a value is a **pristine native function**.**\n * - **ℹ️ Note:**\n * - This method may not reliably detect native functions when using packages\n * like `core-js`, as they override native behavior.\n * - Attempts to detect native functions in such environments may fail or\n * throw errors.\n * - This also affects packages like\n * **[`babel-polyfill`](https://www.npmjs.com/package/babel-polyfill).**\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function, else `false`.\n * @example\n * isNative(Array.prototype.push);\n * // ➔ true\n *\n * import * as RzlUtilsJs from \"@rzl-zone/utils-js/predicates\";\n * isNative(RzlUtilsJs);\n * // ➔ false\n */\nexport function isNative(value: unknown): value is AnyFunction {\n if (!isFunction(value)) return false;\n\n try {\n const source = funcToString.call(value);\n return reIsNative.test(source);\n } catch {\n return false;\n }\n}\n","import { isNil } from \"./isNil\";\nimport { isFunction } from \"./isFunction\";\nimport { isObjectOrArray } from \"./isObjectOrArray\";\n\n/** ----------------------------------------------------------\n * * ***Type guard: `isObjectLoose`.***\n * ----------------------------------------------------------\n * **Checks if a value is the\n * [ECMAScript language type ***Object***](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types).**\n * - **✅ Returns `true` for:**\n * - Plain objects (`{}`)\n * - Arrays (`[]`)\n * - Functions\n * - Regexes (`/abc/`)\n * - Boxed primitives:\n * - `new Number(0)`\n * - `new String(\"\")`\n * - `new Boolean(false)`\n * - **❌ Returns `false` for:**\n * - `null`\n * - `undefined`\n * - Primitives:\n * - `string`\n * - `number`\n * - `boolean`\n * - `symbol`\n * - `bigint`\n * - **ℹ️ Note:**\n * - **For More Strict Object Use ***`isObject`*** or ***`isPlainObject` utility function*** instead.**\n * @template T - The type of the value being checked.\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n * isObjectLoose({});\n * // ➔ true\n * isObjectLoose([1, 2, 3]);\n * // ➔ true\n * isObjectLoose(()=> {});\n * // ➔ true\n * isObjectLoose(null);\n * // ➔ false\n * isObjectLoose(undefined);\n * // ➔ false\n */\nexport function isObjectLoose<T = object>(value: unknown): value is T {\n return !isNil(value) && (isObjectOrArray(value) || isFunction(value));\n}\n","/** --------------------------------------------------\n * * ***Type guard: `isSafeInteger`.***\n * --------------------------------------------------\n * **Checks if `value` is a **[`Safe-Integer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger)**.**\n * - **Behavior:**\n * - Narrows type to `number` when true.\n * - **An integer is considered *safe* if:**\n * - It is an `IEEE-754` **double precision number**.\n * - It can be exactly represented without rounding errors.\n * - It lies within the range **-(2^53 - 1) to 2^53 - 1**.\n * - **Note:**\n * - This method is based on **{@link Number.isSafeInteger | `Number.isSafeInteger`}**.\n * @param {*} value - The value to check.\n * @returns {boolean} Return `true` if `value` is a safe integer, otherwise `false`.\n * @example\n * isSafeInteger(3);\n * // ➔ true\n * isSafeInteger(Number.MIN_VALUE);\n * // ➔ false\n * isSafeInteger(Infinity);\n * // ➔ false\n * isSafeInteger('3');\n * // ➔ false\n */\nexport function isSafeInteger(value: unknown): value is number {\n return typeof value === \"number\" && Number.isSafeInteger(value);\n}\n","import { isNonEmptyString } from \"./isNonEmptyString\";\n\n/** ---------------------------------------------------------\n * * ***Predicate: `isValidURL`.***\n * ---------------------------------------------------------\n * **Validates whether a given string is a properly formatted URL.**\n * - **Ensures that the input is:**\n * - A non-empty string.\n * - A valid **[`URL`](https://developer.mozilla.org/docs/Web/API/URL)** with `http://` or `https://` scheme.\n * - **Behavior:**\n * - ✅ Includes decoding for percent-encoded URLs (e.g., `https%3A%2F%2F...`).\n * - ❌ Rejects invalid strings, unsupported schemes, and malformed domains.\n * @param {*} url - The value to validate.\n * @returns {boolean} Return `true` if the value is a **valid URL string**, otherwise `false`.\n * @example\n * isValidURL(\"https://example.com\");\n * // ➔ true\n * isValidURL(\"ftp://example.com\");\n * // ➔ false\n * isValidURL(\"not-a-url\");\n * // ➔ false\n */\nexport const isValidURL = (url: unknown): boolean => {\n if (!isNonEmptyString(url)) return false;\n\n // Attempt to decode the entire URL, including domain and query parameters\n let decodedUrl: string;\n\n try {\n // Decode the URL (to handle cases like https%3A%2F%2F becoming https://)\n decodedUrl = decodeURIComponent(url);\n } catch {\n // If decoding fails, return false as it indicates an invalid encoded URL\n return false;\n }\n\n // Check if the decoded URL starts with http:// or https://\n if (!decodedUrl.startsWith(\"http://\") && !decodedUrl.startsWith(\"https://\")) {\n return false;\n }\n\n // the original more extra\n const urlPattern = new RegExp(\n // eslint-disable-next-line no-useless-escape\n /^https?:\\/\\/(?:localhost(?::\\d+)?(?:[\\/?#][^\\s]*)?|(?:www\\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}(?::\\d+)?(?:[\\/?#][^\\s]*)?)$/\n\n //! DEPRECATED\n // /^https?:\\/\\/(?:localhost(?::\\d+)?(?:[/?#][^\\s]*)?|(?:www\\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6})(?:[/?#][^\\s]*)?$/\n // /^https?:\\/\\/(?:www\\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b(?:[-a-zA-Z0-9()@:%_+.~#?&/=]*)$/\n );\n\n // Test the decoded URL against the regex pattern\n return urlPattern.test(decodedUrl);\n};\n","import { isNull } from \"./isNull\";\nimport { isObject } from \"./isObject\";\n\n/** --------------------------------------------------\n * * ***Type guard: `isWeakMap`.***\n * ----------------------------------------------------------\n * **Checks if a value is a **[`WeakMap`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/WeakMap)** object.**\n * - **Behavior:**\n * - Narrows type to `WeakMap<K, V>` when true.\n * - Excludes `Map`, `arrays`, `plain-objects,` and `other non-WeakMap values`.\n * @template K - Keys must be objects.\n * @template V - Type of values stored in the WeakMap.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the value is a `WeakMap`, otherwise `false`.\n * @example\n * isWeakMap(new WeakMap);\n * // ➔ true\n * isWeakMap(new Map);\n * // ➔ false\n */\nexport function isWeakMap<K extends object = object, V = unknown>(\n value: unknown\n): value is WeakMap<K, V> {\n return isObject(value) && !isNull(value) && value instanceof WeakMap;\n}\n"],"mappings":"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"}