@rzl-zone/utils-js 3.12.1-beta.0 → 3.13.0-beta.2

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 (243) hide show
  1. package/README.md +15 -35
  2. package/dist/.references/index.d.cts +1 -3
  3. package/dist/.references/index.d.ts +1 -3
  4. package/dist/{assertIsArray-BfAbIUfa.js → assertIsArray-6BcSdNa-.js} +3 -3
  5. package/dist/{assertIsArray-BfAbIUfa.js.map → assertIsArray-6BcSdNa-.js.map} +1 -1
  6. package/dist/{assertIsArray-BChqwPiP.cjs → assertIsArray-BqjMoan3.cjs} +3 -3
  7. package/dist/{assertIsArray-BChqwPiP.cjs.map → assertIsArray-BqjMoan3.cjs.map} +1 -1
  8. package/dist/{assertIsBoolean-BlBct0Fc.js → assertIsBoolean-Bv6gL-xe.js} +8 -8
  9. package/dist/assertIsBoolean-Bv6gL-xe.js.map +1 -0
  10. package/dist/{assertIsBoolean-DozdtbNi.cjs → assertIsBoolean-amRiJHnh.cjs} +8 -8
  11. package/dist/assertIsBoolean-amRiJHnh.cjs.map +1 -0
  12. package/dist/{assertIsString-DqV9NwbI.js → assertIsString-1WiUjgqf.js} +3 -3
  13. package/dist/{assertIsString-DqV9NwbI.js.map → assertIsString-1WiUjgqf.js.map} +1 -1
  14. package/dist/{assertIsString-Bvk7bUL7.cjs → assertIsString-C0b28AU1.cjs} +3 -3
  15. package/dist/{assertIsString-Bvk7bUL7.cjs.map → assertIsString-C0b28AU1.cjs.map} +1 -1
  16. package/dist/assertions/index.cjs +5 -5
  17. package/dist/assertions/index.d.cts +2 -2
  18. package/dist/assertions/index.d.ts +2 -2
  19. package/dist/assertions/index.js +5 -5
  20. package/dist/conversions/index.cjs +6 -6
  21. package/dist/conversions/index.d.cts +2 -2
  22. package/dist/conversions/index.d.ts +2 -2
  23. package/dist/conversions/index.js +6 -6
  24. package/dist/{conversions-EMJa3g-D.js → conversions-BrI0GIOr.js} +16 -18
  25. package/dist/conversions-BrI0GIOr.js.map +1 -0
  26. package/dist/{conversions-CBs8-REq.cjs → conversions-lvvAYiZs.cjs} +16 -18
  27. package/dist/conversions-lvvAYiZs.cjs.map +1 -0
  28. package/dist/events/index.cjs +4 -4
  29. package/dist/events/index.cjs.map +1 -1
  30. package/dist/events/index.d.cts +153 -151
  31. package/dist/events/index.d.ts +153 -151
  32. package/dist/events/index.js +4 -4
  33. package/dist/events/index.js.map +1 -1
  34. package/dist/formatters/index.cjs +2 -2
  35. package/dist/formatters/index.d.cts +2 -2
  36. package/dist/formatters/index.d.ts +2 -2
  37. package/dist/formatters/index.js +2 -2
  38. package/dist/{formatters-lAYgA11L.cjs → formatters-DQr05EUA.cjs} +17 -15
  39. package/dist/formatters-DQr05EUA.cjs.map +1 -0
  40. package/dist/{formatters-QcZO_Cpx.js → formatters-zDzQvtb4.js} +17 -15
  41. package/dist/formatters-zDzQvtb4.js.map +1 -0
  42. package/dist/generators/index.cjs +12 -8
  43. package/dist/generators/index.cjs.map +1 -1
  44. package/dist/generators/index.d.cts +2 -2
  45. package/dist/generators/index.d.ts +2 -2
  46. package/dist/generators/index.js +12 -8
  47. package/dist/generators/index.js.map +1 -1
  48. package/dist/index-3jBnthag.d.cts +340 -0
  49. package/dist/index-BXwimNPA.d.cts +2361 -0
  50. package/dist/index-BlTCrSyc.d.cts +2158 -0
  51. package/dist/index-CEm8ZOvj.d.ts +2158 -0
  52. package/dist/index-CLq5kZmQ.d.cts +822 -0
  53. package/dist/index-Ckao53JY.d.ts +2361 -0
  54. package/dist/index-DHHrLc0B.d.ts +947 -0
  55. package/dist/index-DIeR8qa-.d.ts +340 -0
  56. package/dist/index-DxZlGbAH.d.ts +1716 -0
  57. package/dist/index-DyVWeYP3.d.cts +765 -0
  58. package/dist/index-GSUN6rjA.d.ts +822 -0
  59. package/dist/index-_dJhBl1h.d.ts +765 -0
  60. package/dist/index-bMa-0Yr4.d.cts +1716 -0
  61. package/dist/index-z_uCh5KW.d.cts +947 -0
  62. package/dist/{isBigInt-B1cijjqm.cjs → isBigInt-CIFRnsdx.cjs} +2 -2
  63. package/dist/{isBigInt-B1cijjqm.cjs.map → isBigInt-CIFRnsdx.cjs.map} +1 -1
  64. package/dist/{isBigInt-C0bN0Rhu.js → isBigInt-D-Pu9sxp.js} +2 -2
  65. package/dist/{isBigInt-C0bN0Rhu.js.map → isBigInt-D-Pu9sxp.js.map} +1 -1
  66. package/dist/{isEmptyObject-DI42NEo0.cjs → isEmptyObject-CEySmyHK.cjs} +3 -3
  67. package/dist/{isEmptyObject-DI42NEo0.cjs.map → isEmptyObject-CEySmyHK.cjs.map} +1 -1
  68. package/dist/{isEmptyObject-DeLVIJpl.js → isEmptyObject-CZ9DLi7R.js} +3 -3
  69. package/dist/{isEmptyObject-DeLVIJpl.js.map → isEmptyObject-CZ9DLi7R.js.map} +1 -1
  70. package/dist/{isEmptyString-BTUWYTbw.js → isEmptyString-DFDtBbNr.js} +3 -3
  71. package/dist/{isEmptyString-BTUWYTbw.js.map → isEmptyString-DFDtBbNr.js.map} +1 -1
  72. package/dist/{isEmptyString-CCK3bP74.cjs → isEmptyString-DI64RQCy.cjs} +3 -3
  73. package/dist/{isEmptyString-CCK3bP74.cjs.map → isEmptyString-DI64RQCy.cjs.map} +1 -1
  74. package/dist/{isEmptyValue-DMSMFTU8.cjs → isEmptyValue-Cw6ovu7z.cjs} +5 -5
  75. package/dist/{isEmptyValue-DMSMFTU8.cjs.map → isEmptyValue-Cw6ovu7z.cjs.map} +1 -1
  76. package/dist/{isEmptyValue-fjnfQnt5.js → isEmptyValue-aGyeClwA.js} +5 -5
  77. package/dist/{isEmptyValue-fjnfQnt5.js.map → isEmptyValue-aGyeClwA.js.map} +1 -1
  78. package/dist/{isEqual-DhyP8fB_.js → isEqual-Dtb2sXUv.js} +4 -4
  79. package/dist/{isEqual-DhyP8fB_.js.map → isEqual-Dtb2sXUv.js.map} +1 -1
  80. package/dist/{isEqual-B1fRgEuU.cjs → isEqual-UsvOwrlY.cjs} +4 -4
  81. package/dist/{isEqual-B1fRgEuU.cjs.map → isEqual-UsvOwrlY.cjs.map} +1 -1
  82. package/dist/{isFinite-BYMOo0os.js → isFinite-Cz_IFXuV.js} +3 -3
  83. package/dist/{isFinite-BYMOo0os.js.map → isFinite-Cz_IFXuV.js.map} +1 -1
  84. package/dist/{isFinite-sFkps2TY.cjs → isFinite-uukWvxJh.cjs} +3 -3
  85. package/dist/{isFinite-sFkps2TY.cjs.map → isFinite-uukWvxJh.cjs.map} +1 -1
  86. package/dist/{isInteger-FTCthMre.cjs → isInteger-DPYjliLZ.cjs} +2 -2
  87. package/dist/{isInteger-FTCthMre.cjs.map → isInteger-DPYjliLZ.cjs.map} +1 -1
  88. package/dist/{isInteger-DS9V7l_f.js → isInteger-DZ163OQg.js} +2 -2
  89. package/dist/{isInteger-DS9V7l_f.js.map → isInteger-DZ163OQg.js.map} +1 -1
  90. package/dist/isPlainObject-CBABRyEX.d.cts +339 -0
  91. package/dist/isPlainObject-Dr8gi89U.d.ts +339 -0
  92. package/dist/{isServer-D1TXfOs3.js → isServer-BDShLyVJ.js} +2 -2
  93. package/dist/{isServer-D1TXfOs3.js.map → isServer-BDShLyVJ.js.map} +1 -1
  94. package/dist/{isServer-q-QLFCqE.cjs → isServer-BzDeYuGg.cjs} +2 -2
  95. package/dist/{isServer-q-QLFCqE.cjs.map → isServer-BzDeYuGg.cjs.map} +1 -1
  96. package/dist/{isTypedArray-DiCoqffZ.cjs → isTypedArray-DaYAkyrt.cjs} +3 -3
  97. package/dist/{isTypedArray-DiCoqffZ.cjs.map → isTypedArray-DaYAkyrt.cjs.map} +1 -1
  98. package/dist/{isTypedArray-47R0wdrc.js → isTypedArray-DuUUA4CL.js} +3 -3
  99. package/dist/{isTypedArray-47R0wdrc.js.map → isTypedArray-DuUUA4CL.js.map} +1 -1
  100. package/dist/{isValidDomain-BSXshgkC.cjs → isValidDomain-BxyToAlh.cjs} +74 -8
  101. package/dist/isValidDomain-BxyToAlh.cjs.map +1 -0
  102. package/dist/{isValidDomain-DwA2EN79.js → isValidDomain-CTw5vZFY.js} +57 -9
  103. package/dist/isValidDomain-CTw5vZFY.js.map +1 -0
  104. package/dist/{noop-B2mTBhW-.cjs → noop-7KrqC9DC.cjs} +2 -2
  105. package/dist/{noop-B2mTBhW-.cjs.map → noop-7KrqC9DC.cjs.map} +1 -1
  106. package/dist/{noop-BzktGBVz.js → noop-DGg9vMSD.js} +2 -2
  107. package/dist/{noop-BzktGBVz.js.map → noop-DGg9vMSD.js.map} +1 -1
  108. package/dist/{normalizeSpaces-DQHR3Tlr.cjs → normalizeSpaces-B6ZQOZRX.cjs} +3 -3
  109. package/dist/{normalizeSpaces-DQHR3Tlr.cjs.map → normalizeSpaces-B6ZQOZRX.cjs.map} +1 -1
  110. package/dist/{normalizeSpaces-WS_iERJk.js → normalizeSpaces-C1eLwykD.js} +3 -3
  111. package/dist/{normalizeSpaces-WS_iERJk.js.map → normalizeSpaces-C1eLwykD.js.map} +1 -1
  112. package/dist/operations/index.cjs +10 -10
  113. package/dist/operations/index.cjs.map +1 -1
  114. package/dist/operations/index.d.cts +120 -120
  115. package/dist/operations/index.d.ts +120 -120
  116. package/dist/operations/index.js +10 -10
  117. package/dist/operations/index.js.map +1 -1
  118. package/dist/parsers/index.cjs +2 -2
  119. package/dist/parsers/index.d.cts +222 -222
  120. package/dist/parsers/index.d.ts +222 -222
  121. package/dist/parsers/index.js +2 -2
  122. package/dist/{parsers-DXtpsDyj.cjs → parsers-DEFpCYhw.cjs} +4 -4
  123. package/dist/{parsers-DXtpsDyj.cjs.map → parsers-DEFpCYhw.cjs.map} +1 -1
  124. package/dist/{parsers-Dpuq-V4u.js → parsers-bQQ9mStV.js} +4 -4
  125. package/dist/{parsers-Dpuq-V4u.js.map → parsers-bQQ9mStV.js.map} +1 -1
  126. package/dist/{parsing-B43x1sxn.js → parsing-BngARhmu.js} +3 -3
  127. package/dist/{parsing-B43x1sxn.js.map → parsing-BngARhmu.js.map} +1 -1
  128. package/dist/{parsing-lRoxn1Nz.cjs → parsing-lI5EN4LY.cjs} +3 -3
  129. package/dist/{parsing-lRoxn1Nz.cjs.map → parsing-lI5EN4LY.cjs.map} +1 -1
  130. package/dist/predicates/index.cjs +15 -16
  131. package/dist/predicates/index.d.cts +3 -3
  132. package/dist/predicates/index.d.ts +3 -3
  133. package/dist/predicates/index.js +14 -15
  134. package/dist/{predicates-DiaYA7Ps.cjs → predicates-CMmP3fPJ.cjs} +15 -16
  135. package/dist/{predicates-DiaYA7Ps.cjs.map → predicates-CMmP3fPJ.cjs.map} +1 -1
  136. package/dist/{predicates-gNepszvo.js → predicates-V87QD8hs.js} +13 -14
  137. package/dist/{predicates-gNepszvo.js.map → predicates-V87QD8hs.js.map} +1 -1
  138. package/dist/promises/index.cjs +4 -4
  139. package/dist/promises/index.d.cts +101 -101
  140. package/dist/promises/index.d.ts +101 -101
  141. package/dist/promises/index.js +4 -4
  142. package/dist/{punyCode-hmiFzLWT.js → punyCode-BeFYDjj0.js} +6 -6
  143. package/dist/punyCode-BeFYDjj0.js.map +1 -0
  144. package/dist/{punyCode-CTWXVVFo.cjs → punyCode-DmTsB7q_.cjs} +6 -6
  145. package/dist/punyCode-DmTsB7q_.cjs.map +1 -0
  146. package/dist/{removeSpaces-BE8lfh-4.js → removeSpaces-B96axxP6.js} +7 -4
  147. package/dist/removeSpaces-B96axxP6.js.map +1 -0
  148. package/dist/{removeSpaces-DRRxNWlb.cjs → removeSpaces-C8mu_yp3.cjs} +12 -3
  149. package/dist/removeSpaces-C8mu_yp3.cjs.map +1 -0
  150. package/dist/rzl-utils.global.js +21 -0
  151. package/dist/{safeJsonParse-BBnQElk8.cjs → safeJsonParse-BXbtX_j7.cjs} +9 -9
  152. package/dist/safeJsonParse-BXbtX_j7.cjs.map +1 -0
  153. package/dist/{safeJsonParse-CXruaP0p.js → safeJsonParse-DyCsTXlU.js} +9 -9
  154. package/dist/safeJsonParse-DyCsTXlU.js.map +1 -0
  155. package/dist/{safeStableStringify-BNh3D0K0.js → safeStableStringify-BrOcdX9n.js} +4 -4
  156. package/dist/{safeStableStringify-BNh3D0K0.js.map → safeStableStringify-BrOcdX9n.js.map} +1 -1
  157. package/dist/{safeStableStringify-Cc62pfRp.cjs → safeStableStringify-DRYQ56Dg.cjs} +4 -4
  158. package/dist/{safeStableStringify-Cc62pfRp.cjs.map → safeStableStringify-DRYQ56Dg.cjs.map} +1 -1
  159. package/dist/strings/index.cjs +12 -10
  160. package/dist/strings/index.cjs.map +1 -1
  161. package/dist/strings/index.d.cts +2 -2
  162. package/dist/strings/index.d.ts +2 -2
  163. package/dist/strings/index.js +11 -9
  164. package/dist/strings/index.js.map +1 -1
  165. package/dist/tailwind/index.cjs +6 -2
  166. package/dist/tailwind/index.d.cts +3 -3
  167. package/dist/tailwind/index.d.ts +3 -3
  168. package/dist/tailwind/index.js +3 -3
  169. package/dist/{tailwind-IJvOdkZp.js → tailwind-BZ2_MeNX.js} +18 -8
  170. package/dist/tailwind-BZ2_MeNX.js.map +1 -0
  171. package/dist/{tailwind-DJ4cmLUw.cjs → tailwind-C1YtxJ-K.cjs} +39 -5
  172. package/dist/tailwind-C1YtxJ-K.cjs.map +1 -0
  173. package/dist/{toStringArrayUnRecursive-xUaU8Ot9.cjs → toStringArrayUnRecursive-D1mPM4wg.cjs} +6 -6
  174. package/dist/{toStringArrayUnRecursive-xUaU8Ot9.cjs.map → toStringArrayUnRecursive-D1mPM4wg.cjs.map} +1 -1
  175. package/dist/{toStringArrayUnRecursive-CFs0jTEg.js → toStringArrayUnRecursive-tHp2a7KR.js} +6 -6
  176. package/dist/{toStringArrayUnRecursive-CFs0jTEg.js.map → toStringArrayUnRecursive-tHp2a7KR.js.map} +1 -1
  177. package/dist/urls/index.cjs +9 -119
  178. package/dist/urls/index.d.cts +656 -659
  179. package/dist/urls/index.d.ts +656 -659
  180. package/dist/urls/index.js +3 -113
  181. package/dist/urls-CoxDAoki.js +263 -0
  182. package/dist/urls-CoxDAoki.js.map +1 -0
  183. package/dist/urls-DCyx8Wpk.cjs +299 -0
  184. package/dist/urls-DCyx8Wpk.cjs.map +1 -0
  185. package/package.json +4 -25
  186. package/dist/assertIsBoolean-BlBct0Fc.js.map +0 -1
  187. package/dist/assertIsBoolean-DozdtbNi.cjs.map +0 -1
  188. package/dist/conversions-CBs8-REq.cjs.map +0 -1
  189. package/dist/conversions-EMJa3g-D.js.map +0 -1
  190. package/dist/formatEnvPort-DpIXzPAZ.js +0 -159
  191. package/dist/formatEnvPort-DpIXzPAZ.js.map +0 -1
  192. package/dist/formatEnvPort-hHNvOim-.cjs +0 -171
  193. package/dist/formatEnvPort-hHNvOim-.cjs.map +0 -1
  194. package/dist/formatters-QcZO_Cpx.js.map +0 -1
  195. package/dist/formatters-lAYgA11L.cjs.map +0 -1
  196. package/dist/index-26W7ItWx.d.ts +0 -760
  197. package/dist/index-BPPQjAfs.d.cts +0 -2359
  198. package/dist/index-BXjlgBLz.d.cts +0 -2139
  199. package/dist/index-B_Wwo91H.d.ts +0 -2359
  200. package/dist/index-CpufydcI.d.cts +0 -704
  201. package/dist/index-Czc4O526.d.ts +0 -333
  202. package/dist/index-DPs1_p5G.d.cts +0 -760
  203. package/dist/index-DRpOyBSC.d.ts +0 -1703
  204. package/dist/index-DWWvtHUn.d.cts +0 -822
  205. package/dist/index-DnM0LD0n.d.cts +0 -333
  206. package/dist/index-GUZ9fK6T.d.ts +0 -2139
  207. package/dist/index-I4fAzwXV.d.ts +0 -704
  208. package/dist/index-JDrOl_19.d.ts +0 -822
  209. package/dist/index-b66P49Qe.d.cts +0 -1703
  210. package/dist/isPlainObject-DcFGh3_5.d.ts +0 -530
  211. package/dist/isPlainObject-doTI11Ib.d.cts +0 -530
  212. package/dist/isURL-CQiowFq2.js +0 -14
  213. package/dist/isURL-CQiowFq2.js.map +0 -1
  214. package/dist/isURL-WZypXsax.cjs +0 -20
  215. package/dist/isURL-WZypXsax.cjs.map +0 -1
  216. package/dist/isValidDomain-BSXshgkC.cjs.map +0 -1
  217. package/dist/isValidDomain-DwA2EN79.js.map +0 -1
  218. package/dist/next/index.cjs +0 -129
  219. package/dist/next/index.cjs.map +0 -1
  220. package/dist/next/index.d.cts +0 -226
  221. package/dist/next/index.d.ts +0 -226
  222. package/dist/next/index.js +0 -124
  223. package/dist/next/index.js.map +0 -1
  224. package/dist/next/server/index.cjs +0 -28
  225. package/dist/next/server/index.cjs.map +0 -1
  226. package/dist/next/server/index.d.cts +0 -39
  227. package/dist/next/server/index.d.ts +0 -39
  228. package/dist/next/server/index.js +0 -26
  229. package/dist/next/server/index.js.map +0 -1
  230. package/dist/normalizeString-2WLth_Gj.js +0 -15
  231. package/dist/normalizeString-2WLth_Gj.js.map +0 -1
  232. package/dist/normalizeString-D8euBcRD.cjs +0 -21
  233. package/dist/normalizeString-D8euBcRD.cjs.map +0 -1
  234. package/dist/punyCode-CTWXVVFo.cjs.map +0 -1
  235. package/dist/punyCode-hmiFzLWT.js.map +0 -1
  236. package/dist/removeSpaces-BE8lfh-4.js.map +0 -1
  237. package/dist/removeSpaces-DRRxNWlb.cjs.map +0 -1
  238. package/dist/safeJsonParse-BBnQElk8.cjs.map +0 -1
  239. package/dist/safeJsonParse-CXruaP0p.js.map +0 -1
  240. package/dist/tailwind-DJ4cmLUw.cjs.map +0 -1
  241. package/dist/tailwind-IJvOdkZp.js.map +0 -1
  242. package/dist/urls/index.cjs.map +0 -1
  243. package/dist/urls/index.js.map +0 -1
@@ -1,530 +0,0 @@
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
-
11
- import { IsNever, NonPlainObject } from "@rzl-zone/ts-types-plus";
12
- declare class PreciseType {
13
- constructor(params?: GetPreciseTypeOptions);
14
- /** ----------------------------------------------------------
15
- * * ***Getting the internal map of type castable relationships used by {@link getPreciseType | `getPreciseType`}.***
16
- * ----------------------------------------------------------
17
- *
18
- * - **Description:**
19
- * - Returns an internal static mapping table that defines which primitive or structural types
20
- * can be cast or interpreted as another related type within the internal logic of
21
- * {@link getPreciseType | `getPreciseType`}.
22
- *
23
- * - **⚠️ Internal:**
24
- * - This is an internal helper of {@link getPreciseType | `getPreciseType`}.
25
- * - Do not modify or rely on this table directly — it is **readonly** and may change without notice.
26
- *
27
- * @readonly
28
- */
29
- static get castableTable(): Readonly<Record<string, string>>;
30
- /** ----------------------------------------------------------
31
- * * ***Retrieves the internal list of special type cases handled by {@link getPreciseType | `getPreciseType`}.***
32
- * ----------------------------------------------------------
33
- *
34
- * - **Description:**
35
- * - Returns an internal readonly list of specific type identifiers that require
36
- * *custom handling* during type detection.
37
- * - These are **exceptional values** or **edge cases** that don’t follow the normal
38
- * JavaScript type resolution flow.
39
- *
40
- * - **Example Values:**
41
- * - `"Infinity"`, `"-Infinity"`, `"NaN"`, `"undefined"`, etc.
42
- *
43
- * - **⚠️ Internal:**
44
- * - Used internally by {@link getPreciseType | `getPreciseType`}.
45
- * - This property is **readonly** and should not be modified directly.
46
- *
47
- * @readonly
48
- */
49
- static get specialType(): readonly ["-Infinity", "Infinity", "NaN"];
50
- /** ----------------------------------------------------------
51
- * * ***Retrieves the internal mapping of JavaScript built-in and environment-specific
52
- * type identifiers to their canonical PascalCase names.***
53
- * ----------------------------------------------------------
54
- *
55
- * - **Description:**
56
- * - Provides a mapping table where **keys** represent normalized raw type names
57
- * (as obtained from `Object.prototype.toString.call(value)` or environment checks),
58
- * and **values** represent their **canonical PascalCase equivalents**.
59
- * - This table ensures consistent, human-readable type strings across different environments.
60
- *
61
- * - **Example Mapping:**
62
- * ```ts
63
- * {
64
- * "[object Map]": "Map",
65
- * "[object WeakMap]": "WeakMap",
66
- * "[object AsyncFunction]": "AsyncFunction",
67
- * "[object GeneratorFunction]": "GeneratorFunction",
68
- * "[object BigInt]": "BigInt",
69
- * }
70
- * ```
71
- *
72
- * - **⚠️ Internal:**
73
- * - Used internally by {@link getPreciseType | `getPreciseType`}.
74
- * - This property is **readonly** and should not be modified directly.
75
- *
76
- * @readonly
77
- */
78
- static get fixesRaw(): Readonly<{
79
- readonly string: "String";
80
- readonly number: "Number";
81
- readonly boolean: "Boolean";
82
- readonly bigint: "Bigint";
83
- readonly symbol: "Symbol";
84
- readonly undefined: "Undefined";
85
- readonly null: "Null";
86
- readonly regexp: "Reg Exp";
87
- readonly reflect: "Reflect";
88
- readonly proxy: "Proxy";
89
- readonly atomics: "Atomics";
90
- readonly array: "Array";
91
- readonly object: "Object";
92
- readonly function: "Function";
93
- readonly arguments: "Arguments";
94
- readonly asyncfunction: "Async Function";
95
- readonly generatorfunction: "Generator Function";
96
- readonly asyncgeneratorfunction: "Async Generator Function";
97
- readonly generator: "Generator";
98
- readonly promise: "Promise";
99
- readonly evalerror: "Eval Error";
100
- readonly rangeerror: "Range Error";
101
- readonly referenceerror: "Reference Error";
102
- readonly syntaxerror: "Syntax Error";
103
- readonly typeerror: "Type Error";
104
- readonly urierror: "URI Error";
105
- readonly aggregateerror: "Aggregate Error";
106
- readonly error: "Error";
107
- readonly int8array: "Int 8 Array";
108
- readonly uint8array: "Uint 8 Array";
109
- readonly uint8clampedarray: "Uint 8 Clamped Array";
110
- readonly int16array: "Int 16 Array";
111
- readonly uint16array: "Uint 16 Array";
112
- readonly int32array: "Int 32 Array";
113
- readonly uint32array: "Uint 32 Array";
114
- readonly float32array: "Float 32 Array";
115
- readonly float64array: "Float 64 Array";
116
- readonly bigint64array: "Big Int 64 Array";
117
- readonly biguint64array: "Big Uint 64 Array";
118
- readonly arraybuffer: "Array Buffer";
119
- readonly sharedarraybuffer: "Shared Array Buffer";
120
- readonly dataview: "Data View";
121
- readonly arraybufferview: "Array Buffer View";
122
- readonly map: "Map";
123
- readonly set: "Set";
124
- readonly weakmap: "Weak Map";
125
- readonly weakset: "Weak Set";
126
- readonly mapiterator: "Map Iterator";
127
- readonly weakmapiterator: "Weak Map Iterator";
128
- readonly setiterator: "Set Iterator";
129
- readonly weaksetiterator: "Weak Set Iterator";
130
- readonly arrayiterator: "Array Iterator";
131
- readonly stringiterator: "String Iterator";
132
- readonly asynciterator: "Async Iterator";
133
- readonly iteratorresult: "Iterator Result";
134
- readonly arrayiteratorresult: "Array Iterator Result";
135
- readonly readablestream: "Readable Stream";
136
- readonly writablestream: "Writable Stream";
137
- readonly transformstream: "Transform Stream";
138
- readonly readablestreamdefaultreader: "Readable Stream Default Reader";
139
- readonly writablestreamdefaultwriter: "Writable Stream Default Writer";
140
- readonly readablestreamdefaultcontroller: "Readable Stream Default Controller";
141
- readonly transformstreamdefaultcontroller: "Transform Stream Default Controller";
142
- readonly abortcontroller: "Abort Controller";
143
- readonly abortsignal: "Abort Signal";
144
- readonly fetch: "fetch";
145
- readonly request: "Request";
146
- readonly response: "Response";
147
- readonly headers: "Headers";
148
- readonly formdata: "FormData";
149
- readonly blob: "Blob";
150
- readonly file: "File";
151
- readonly filelist: "FileList";
152
- readonly filereader: "FileReader";
153
- readonly intl: "Intl";
154
- readonly collator: "Intl. Collator";
155
- readonly datetimeformat: "Intl. Date Time Format";
156
- readonly displaynames: "Intl. Display Names";
157
- readonly listformat: "Intl. List Format";
158
- readonly locale: "Intl. Locale";
159
- readonly numberformat: "Intl. Number Format";
160
- readonly pluralrules: "Intl. Plural Rules";
161
- readonly relativetimeformat: "Intl. Relative Time Format";
162
- readonly segmenter: "Intl. Segmenter";
163
- readonly weakref: "Weak Ref";
164
- readonly urlpattern: "URLPattern";
165
- readonly structuredclone: "structured Clone";
166
- readonly finalizationregistry: "Finalization Registry";
167
- readonly performance: "Performance";
168
- readonly performanceobserver: "Performance Observer";
169
- readonly performanceentry: "Performance Entry";
170
- readonly performancemark: "Performance Mark";
171
- readonly performancemeasure: "Performance Measure";
172
- readonly webassembly: "Web Assembly";
173
- readonly wasmmodule: "WebAssembly. Module";
174
- readonly wasminstance: "WebAssembly. Instance";
175
- readonly wasmmemory: "WebAssembly. Memory";
176
- readonly wasmtable: "WebAssembly. Table";
177
- readonly buffer: "Buffer";
178
- readonly process: "Process";
179
- readonly eventemitter: "Event Emitter";
180
- readonly stream: "Stream";
181
- readonly fs: "fs";
182
- readonly path: "path";
183
- readonly url: "URL";
184
- readonly urlsearchparams: "URL Search Params";
185
- readonly node: "Node";
186
- readonly element: "Element";
187
- readonly htmlelement: "HTML Element";
188
- readonly svgelement: "SVG Element";
189
- readonly document: "Document";
190
- readonly documentfragment: "Document Fragment";
191
- readonly shadowroot: "Shadow Root";
192
- readonly nodelist: "Node List";
193
- readonly htmlcollection: "HTML Collection";
194
- readonly resizeobserver: "Resize Observer";
195
- readonly mutationobserver: "Mutation Observer";
196
- readonly intersectionobserver: "Intersection Observer";
197
- readonly symboliterator: "Symbol. Iterator";
198
- readonly symbolasynciterator: "Symbol. Async Iterator";
199
- readonly symboltostringtag: "Symbol. To String Tag";
200
- readonly symbolspecies: "Symbol. Species";
201
- readonly symbolhasinstance: "Symbol. Has Instance";
202
- readonly symbolisconcatspreadable: "Symbol. Is Concat Spreadable";
203
- readonly symbolunscopables: "Symbol. Unscopables";
204
- readonly symbolmatch: "Symbol. Match";
205
- readonly symbolreplace: "Symbol. Replace";
206
- readonly symbolsearch: "Symbol. Search";
207
- readonly symbolsplit: "Symbol. Split";
208
- readonly symboltoprimitive: "Symbol. To Primitive";
209
- readonly symbolmatchall: "Symbol. Match All";
210
- readonly symbolarguments: "Symbol. Arguments";
211
- readonly math: "Math";
212
- readonly bigintconstructor: "Bigint Constructor";
213
- readonly numberconstructor: "Number Constructor";
214
- readonly stringconstructor: "String Constructor";
215
- readonly booleanconstructor: "Boolean Constructor";
216
- readonly formdataevent: "Form Data Event";
217
- readonly customevent: "Custom Event";
218
- readonly messagechannel: "Message Channel";
219
- readonly messageport: "Message Port";
220
- readonly messageevent: "Message Event";
221
- readonly websocket: "Web Socket";
222
- readonly eventsource: "Event Source";
223
- readonly indexeddb: "IndexedDB";
224
- readonly idbrequest: "IDB Request";
225
- readonly idbtransaction: "IDB Transaction";
226
- readonly idbobjectstore: "IDB Object Store";
227
- readonly idbcursor: "IDB Cursor";
228
- readonly localstorage: "Local Storage";
229
- readonly sessionstorage: "Session Storage";
230
- readonly navigator: "Navigator";
231
- readonly geolocation: "Geolocation";
232
- readonly clipboard: "Clipboard";
233
- readonly notification: "Notification";
234
- readonly canvas: "Canvas";
235
- readonly canvasrenderingcontext2d: "Canvas Rendering Context 2D";
236
- readonly offscreencanvas: "Offscreen Canvas";
237
- readonly webglrenderingcontext: "WebGL Rendering Context";
238
- readonly imagedata: "Image Data";
239
- readonly imagebitmap: "Image Bitmap";
240
- readonly mediastream: "Media Stream";
241
- readonly mediarecorder: "Media Recorder";
242
- readonly mediastreamtrack: "Media Stream Track";
243
- readonly audiocontext: "Audio Context";
244
- readonly audiobuffer: "Audio Buffer";
245
- readonly audioworklet: "Audio Worklet";
246
- readonly worker: "Worker";
247
- readonly sharedworker: "Shared Worker";
248
- readonly serviceworker: "Service Worker";
249
- readonly workerglobalscope: "Worker Global Scope";
250
- readonly structuredcloneerror: "Structured Clone Error";
251
- readonly transferable: "Transferable";
252
- readonly report: "Report";
253
- readonly console: "Console";
254
- readonly diagnosticreport: "Diagnostic Report";
255
- readonly domrect: "DOM Rect";
256
- readonly dompoint: "DOM Point";
257
- readonly dommatrix: "DOM Matrix";
258
- readonly domparser: "DOM Parser";
259
- readonly xmlhttprequest: "XML HTTP Request";
260
- readonly customelementregistry: "Custom Element Registry";
261
- readonly text: "Text";
262
- readonly comment: "Comment";
263
- readonly animation: "Animation";
264
- readonly documenttype: "Document Type";
265
- readonly characterdata: "Character Data";
266
- readonly animationevent: "Animation Event";
267
- readonly customemmetregistry: "Custom Emmet Registry";
268
- readonly websocketmessageevent: "WebSocket Message Event";
269
- }>;
270
- /** ----------------------------------------------------------
271
- * * ***Retrieves the internal list of common acronyms that should remain fully uppercase during string formatting.***
272
- * ----------------------------------------------------------
273
- *
274
- * - **Description:**
275
- * - This list defines acronyms (e.g., `"URL"`, `"HTTP"`, `"HTML"`, `"SVG"`, `"XML"`, `"DOM"`)
276
- * that will be **preserved in uppercase** when applying case transformations through
277
- * {@link getPreciseType | `getPreciseType`} or any formatting utility using it.
278
- * - Ensures consistency in output for technical identifiers that are conventionally capitalized.
279
- *
280
- * - **Example:**
281
- * ```ts
282
- * ["URL", "HTTP", "HTML", "SVG", "XML", "DOM"]
283
- * ```
284
- *
285
- * - **⚠️ Internal:**
286
- * - Used internally by {@link getPreciseType | `getPreciseType`}.
287
- * - This property is **readonly** and not intended for modification.
288
- *
289
- * @readonly
290
- */
291
- static get acronymsList(): readonly ["URI", "URL", "URN", "HTTP", "HTTPS", "FTP", "FTPS", "SFTP", "SSH", "SMTP", "POP3", "IMAP", "WS", "WSS", "TCP", "UDP", "IP", "ICMP", "ARP", "RTP", "RTSP", "SIP", "HTML", "XHTML", "XML", "WBR", "CSS", "SVG", "JSON", "JSONP", "DOM", "IDB", "DB", "RTC", "ICE", "TLS", "SSL", "CORS", "WASM", "CSR", "SSR", "PWA", "DPI", "CDN", "JS", "TS", "JSX", "TSX", "CLI", "API", "SDK", "UI", "UX", "OS", "ID", "UUID", "PID", "NPM", "YARN", "ESM", "CJS", "BOM", "MVC", "MVVM", "ORM", "DAO", "CRUD", "FIFO", "LIFO", "OOP", "FP", "REPL", "CSV", "TSV", "SQL", "YAML", "JSON", "MD", "INI", "PDF", "XLS", "XLSX", "RTF", "XML", "BMP", "GIF", "PNG", "JPEG", "WEBP", "MP3", "MP4", "AVI", "MOV", "FLAC", "MKV", "WAV", "URLSearchParams", "XHR", "2D", "3D", "GL", "WebGL", "TTL", "UID", "GID", "MAC", "IP", "DNS", "DHCP", "VPN", "LAN", "WAN", "SSID", "IoT", "API", "SDK", "CLI", "LTS", "EOL", "CPU", "GPU", "RAM", "ROM", "SSD", "HDD", "BIOS", "USB", "PCI", "SATA", "DIMM", "DDR", "VGA", "HDMI", "KVM", "ASIC", "FPGA", "SoC", "NAS", "SAN", "TCP", "UDP", "IP", "MAC", "DNS", "DHCP", "VPN", "LAN", "WAN", "SSID", "NAT", "QoS", "MPLS", "BGP", "OSPF", "ICMP", "IGMP", "LLDP", "ARP", "RARP", "AES", "RSA", "OTP", "MFA", "PKI", "VPN", "IAM", "ACL", "CSP", "XSS", "CSRF", "HSTS", "WAF", "DDoS", "IDS", "IPS", "SOC", "SIEM", "AWS", "GCP", "AZURE", "CI", "CD", "K8S", "IaC", "PaaS", "SaaS", "IaaS", "API", "CLI", "SDK", "REST", "SOAP", "JSON-RPC", "gRPC", "ELB", "EKS", "AKS", "FaaS", "CaaS", "GUI", "IDE", "FAQ", "UX", "UI", "CLI", "API", "SDK", "LTS", "EOL", "WYSIWYG", "CMS", "CRM", "GPS", "LED", "OLED", "LCD", "RFID", "NFC", "CPU", "GPU", "AI", "ML", "DL", "DB", "SQL", "NoSQL", "ORM", "JSON", "XML", "CSV", "HTTP", "HTTPS", "TDD", "BDD", "CI", "CD", "QA", "SLA", "SLO", "MTTR", "MTBF", "UAT", "RPA", "KPI", "OKR", "ROI", "RFP", "SLA", "CRM", "ERP", "PMO", "SCRUM", "KANBAN", "FPS", "HDR", "VR", "AR", "3D", "2D", "MP3", "MP4", "GIF", "PNG", "JPEG", "SVG", "BMP", "TIFF", "POSIX", "NTFS", "FAT", "EXT", "EXT4", "APFS", "HFS", "ISO", "HTML", "CSS", "JS", "TS", "PHP", "SQL", "JSON", "XML", "YAML", "BASH", "ZSH", "JSON", "YAML", "INI", "DOTENV", "VM", "VMM", "VPC", "OCI", "LXC", "Docker", "K8S", "CRI", "CNI"];
292
- }
293
- /** ---------------------------------------------------------------------------
294
- * * ***Options for controlling how {@link getPreciseType | `getPreciseType`} formats and normalizes detected types.***
295
- * ---------------------------------------------------------------------------
296
- * These options customize the string transformation behavior and acronym handling
297
- * when converting JavaScript type names to human-readable strings.
298
- */
299
- type GetPreciseTypeOptions = {
300
- /** -------------------------------------------------------
301
- * * ***Specifies the format in which the returned string type should be transformed.***
302
- * -------------------------------------------------------
303
- * **ℹ️ For special string literals in `SPECIAL_CASES` (`"-Infinity" | "Infinity" | "NaN"`), which will remain unchanged.**
304
- * @default "toKebabCase"
305
- * @description
306
- * Supported formats:
307
- * - `"toKebabCase"` (default) — words separated by hyphens.
308
- * - ➔ `"result-example-type"`
309
- * - `"toLowerCase"` - converts all letters to lowercase.
310
- * - ➔ `"result example type"`
311
- * - `"toDotCase"` — words separated by dots.
312
- * - ➔ `"result.example.type"`
313
- * - `"toCamelCase"` — first word lowercase, subsequent words capitalized.
314
- * - ➔ `"resultExampleType"`
315
- * - `"toSnakeCase"` — words separated by underscores.
316
- * - ➔ `"result_example_type"`
317
- * - `"toPascalCase"` — all words capitalized, no spaces.
318
- * - ➔ `"ResultExampleType"`
319
- * - `"toPascalCaseSpace"` — all words capitalized with spaces between words.
320
- * - ➔ `"Result Example Type"`
321
- * - `"slugify"` — URL-friendly slug (lowercase with hyphens).
322
- * - ➔ `"result-example-type"`
323
- * @note
324
- * ⚠️ If an invalid value is provided, the function will automatically fallback to the default `"toKebabCase"`.
325
- */
326
- formatCase?: "toPascalCaseSpace" | "toPascalCase" | "toCamelCase" | "toKebabCase" | "toSnakeCase" | "toDotCase" | "slugify" | "toLowerCase";
327
- /** -------------------------------------------------------
328
- * * ***Control uppercase preservation of recognized acronyms during formatting.***
329
- * -------------------------------------------------------
330
- * When enabled (`true`), common technical acronyms (e.g., `"URL"`, `"HTTP"`, `"HTML"`, `"SVG"`, `"XML"`, `"DOM"`)
331
- * are preserved in their original uppercase form instead of being lowercased or altered by case-formatting utilities.
332
- *
333
- *
334
- * - **When `false` (default):**
335
- * - Acronyms are treated as normal words and formatted according to the selected `formatCase`.
336
- * - Example:
337
- * - `HTMLDivElement` ➔ `"html-div-element"` (with `"toKebabCase"`)
338
- * - `DOMParser` ➔ `"dom-parser"`
339
- * - **When `true`:**
340
- * - Acronyms remain uppercase.
341
- * - Example:
342
- * - `HTMLDivElement` ➔ `"HTML-div-element"` (with `"toKebabCase"`)
343
- * - `DOMParser` ➔ `"DOM-parser"`
344
- *
345
- * @default false
346
- * @description
347
- * The list of recognized acronyms is defined in {@link AcronymsList | **`AcronymsList`**},
348
- * including entries like `"URL"`, `"HTTP"`, `"HTML"`, `"SVG"`, `"XML"`, `"DOM"`, and others.
349
- *
350
- * ⚠️ This option affects **formatting output only**, not the underlying type detection, acronym preservation is applied **after** detecting and formatting the base type name.
351
- */
352
- useAcronyms?: boolean;
353
- };
354
- /** ---------------------------------------------------------------------------
355
- * * ***Type alias for the list of common acronyms preserved in uppercase.***
356
- * ---------------------------------------------------------------------------
357
- *
358
- * Use this type to reference the full set of recognized acronyms
359
- * used internally by the {@link getPreciseType | **`getPreciseType`**} function for formatting purposes.
360
- */
361
- type AcronymsList = (typeof PreciseType)["acronymsList"];
362
- /** ----------------------------------------------------------
363
- * * ***Utility-Predicate: `getPreciseType`.***
364
- * ----------------------------------------------------------
365
- * **Returns a detailed and normalized type string for the given value.**
366
- * @description
367
- * The returned string is human-readable ***toKebabCase*** with spaces ***(by default)*** or formatted according to the `options.formatCase` setting.
368
- * - **Handles:**
369
- * - Primitives (`string`, `number`, `boolean`, `null`, `undefined`, `symbol`, `bigint`)
370
- * - Built-in objects (`Array`, `Map`, `Set`, `Error subclasses`, `Typed Arrays`, `etc`)
371
- * - Objects created with `Object.create(null)`
372
- * - Objects wrapper (`new String`, `new Number`, `new Boolean`)
373
- * - DOM Node type (may not be fully accurate outside the browser environment)
374
- * - Generator instances
375
- * - Node.js `Buffer` instances
376
- * - Proxy detection (returns `"Proxy"` if detected; detection ***is not 100% accurate***)
377
- * - Uses cached mapping table (`FIXES_CASTABLE_TABLE`) for known types to provide consistent naming
378
- * - Falls back to constructor name or `Object.prototype.toString` tag
379
- * @param {*} value - The value to detect the precise type of
380
- * @param {GetPreciseTypeOptions} [options] - Optional configuration
381
- * @param {GetPreciseTypeOptions["formatCase"]} [options.formatCase="toLowerCase"]
382
- * Specifies how the returned type string should be formatted.
383
- * - ⚠️ Special string literals in `SPECIAL_CASES`
384
- * (`"-Infinity" | "Infinity" | "NaN"`) will remain
385
- * unchanged even if a different `formatCase` is applied.
386
- * @param {boolean} [options.useAcronyms=false]
387
- * Control uppercase preservation of recognized acronyms during formatting.
388
- * - When `true`, recognized acronyms such as `"URL"`, `"HTTP"`, `"HTML"`, `"SVG"`, `"XML"`, and `"DOM"`
389
- * are preserved in uppercase instead of being lowercased or otherwise transformed.
390
- * - When `false` (default), acronyms are formatted like regular words according to `formatCase`.
391
- * - ⚠️ This option affects **formatting output only**, not type detection.
392
- *
393
- * @returns {string} The normalized and formatted type string
394
- * @example
395
- * getPreciseType(123); // ➔ "number"
396
- * getPreciseType(null); // ➔ "null"
397
- * getPreciseType(/regex/); // ➔ "reg-exp"
398
- * getPreciseType(/regex/, { formatCase: "toPascalCase" });
399
- * // ➔ "RegExp"
400
- * getPreciseType(function* () {}, { formatCase: "toCamelCase" });
401
- * // ➔ "generatorFunction"
402
- * getPreciseType(async function () {}, { formatCase: "toPascalCaseSpace" });
403
- * // ➔ "Async Function"
404
- *
405
- * // (SPECIAL_CASES remain)
406
- * getPreciseType(NaN, { formatCase: "toLowerCase" });
407
- * // ➔ "NaN"
408
- * getPreciseType(Infinity, { formatCase: "toLowerCase" });
409
- * // ➔ "Infinity"
410
- * getPreciseType(-Infinity, { formatCase: "toLowerCase" });
411
- * // ➔ "-Infinity"
412
- *
413
- * // Acronym usage examples:
414
- * getPreciseType(new URL("https://example.com"));
415
- * // ➔ "url"
416
- * getPreciseType(new URL("https://example.com"), { useAcronyms: true });
417
- * // ➔ "URL"
418
- *
419
- * getPreciseType(new URLSearchParams, { formatCase: "toPascalCase" });
420
- * // ➔ "UrlSearchParams"
421
- * getPreciseType(new URLSearchParams, { formatCase: "toPascalCase", useAcronyms: true });
422
- * // ➔ "URLSearchParams"
423
- */
424
- declare const getPreciseType: (value: unknown, options?: GetPreciseTypeOptions) => string;
425
- type IsNumberOptions = {
426
- /** If set to `true`, `NaN` will be considered a valid number, defaultValue: `false`.
427
- *
428
- * @default false
429
- */
430
- includeNaN?: boolean;
431
- };
432
- /** ---------------------------------------------------------
433
- * * ***Type guard: `isNumber`.***
434
- * ----------------------------------------------------------
435
- * **Checks if a value is of type **`number`**.**
436
- * - **Behavior:**
437
- * - Uses `typeof value === "number"`.
438
- * - By default, excludes **`NaN`**.
439
- * - If `options.includeNaN` is `true`, then **`NaN`** is also considered valid.
440
- * - Still considers `Infinity` and `-Infinity` as **numbers** (consistent with JavaScript).
441
- * - **ℹ️ Note:**
442
- * - To exclude `Infinity` and `-Infinity`, use **{@link isFinite | `isFinite`}** instead.
443
- * @param {*} value - The value to check.
444
- * @param {IsNumberOptions} [options] - Optional settings.
445
- * @param {boolean} [options.includeNaN=false] If `true`, `NaN` will be considered a valid number, defaults to `false`, which excludes `NaN`.
446
- * @returns {boolean} Returns `true` if the value is a number (and depending on `includeNaN`, `NaN` is included or excluded).
447
- * @example
448
- * isNumber(42);
449
- * // ➔ true
450
- * isNumber(Infinity);
451
- * // ➔ true
452
- * isNumber(-Infinity);
453
- * // ➔ true
454
- * isNumber(NaN);
455
- * // ➔ false (default)
456
- * isNumber(NaN, { includeNaN: true });
457
- * // ➔ true
458
- * isNumber("42");
459
- * // ➔ false
460
- */
461
- declare const isNumber: (value: unknown, options?: IsNumberOptions) => value is number;
462
- type ArrayFallback<T> = IsNever<Extract<T, unknown[] | readonly unknown[]>> extends true ? T & unknown[] : Extract<T, unknown[] | readonly unknown[]>;
463
- type IsHasKeysObject<T> = keyof T extends never ? false : true;
464
- /** ----------------------------------------------------------
465
- * * ***Utility type: `IsPlainObjectResult`.***
466
- * ----------------------------------------------------------
467
- * **Represents the inferred type after asserting a value is a **plain object**.**
468
- * - **Behavior:**
469
- * - If `T` is `unknown`, the resulting type is `Record<PropertyKey, unknown> & T`.
470
- * - If `T` is an object:
471
- * - If it is a non-plain object (class instance, built-in object, etc.), the result is `never`.
472
- * - If it has no keys (`IsHasKeysObject<T>` checked by **{@link IsHasKeysObject|`IsHasKeysObject`}** is false), the result is `Record<PropertyKey, unknown> & T`.
473
- * - Otherwise, the result is `T` itself.
474
- * - For any other types, the result is `never`.
475
- * @template T - The input type to be asserted as a plain object.
476
- * @example
477
- * ```ts
478
- * type A = IsPlainObjectResult<unknown>;
479
- * // ➔ Record<PropertyKey, unknown> & unknown
480
- * type B = IsPlainObjectResult<{}>;
481
- * // ➔ Record<PropertyKey, unknown> & {}
482
- * type C = IsPlainObjectResult<{ foo: string }>;
483
- * // ➔ { foo: string }
484
- * type D = IsPlainObjectResult<Date>;
485
- * // ➔ never
486
- * ```
487
- */
488
- type IsPlainObjectResult<T> = unknown extends T ? Record<PropertyKey, unknown> & T : T extends object ? T extends NonPlainObject ? never : IsHasKeysObject<T> extends false ? Record<PropertyKey, unknown> & T : T : Extract<T, Record<PropertyKey, unknown>>;
489
- /** ----------------------------------------------------------
490
- * * ***Type guard: `isPlainObject`.***
491
- * ----------------------------------------------------------
492
- * **Checks if a value is a **plain-object**.**
493
- * - **A plain object is:**
494
- * - Created by the `Object` constructor, or
495
- * - Has a `[[Prototype]]` of `null` (e.g. `Object.create(null)`).
496
- * - **✅ Returns `true` for:**
497
- * - Empty object literals: `{}`
498
- * - Objects with null prototype: `Object.create(null)`
499
- * - **❌ Returns `false` for:**
500
- * - Arrays (`[]`, `new Array()`)
501
- * - Functions (regular, arrow, or class constructors)
502
- * - Built-in objects: `Date`, `RegExp`, `Error`, `Map`, `Set`, `WeakMap`, `WeakSet`
503
- * - Boxed primitives: `new String()`, `new Number()`, `new Boolean()`
504
- * - `null` or `undefined`
505
- * - Symbols
506
- * - Class instances
507
- * @template T - The type of the value being checked.
508
- * @param {*} value - The value to check.
509
- * @returns {boolean} Return `true` if `value` is a `plain-object`, otherwise `false`.
510
- * @example
511
- * isPlainObject({});
512
- * // ➔ true
513
- * isPlainObject(Object.create(null));
514
- * // ➔ true
515
- * isPlainObject(null);
516
- * // ➔ false
517
- * isPlainObject(() => {});
518
- * // ➔ false
519
- * isPlainObject([1, 2, 3]);
520
- * // ➔ false
521
- * isPlainObject(new Date());
522
- * // ➔ false
523
- * isPlainObject(new MyClass());
524
- * // ➔ false
525
- * isPlainObject(new String("x"));
526
- * // ➔ false
527
- */
528
- declare function isPlainObject<T>(value: T): value is IsPlainObjectResult<T>;
529
- declare function isPlainObject<T>(value: T): value is NonNullable<Extract<T, Record<PropertyKey, unknown>>>;
530
- export { IsNumberOptions as a, GetPreciseTypeOptions as c, ArrayFallback as i, getPreciseType as l, isPlainObject as n, isNumber as o, IsHasKeysObject as r, AcronymsList as s, IsPlainObjectResult as t };
@@ -1,14 +0,0 @@
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
- const isURL = (value) => {
11
- return value instanceof URL;
12
- };
13
- export { isURL as t };
14
- //# sourceMappingURL=isURL-CQiowFq2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"isURL-CQiowFq2.js","names":[],"sources":["../src/predicates/is/isURL.ts"],"sourcesContent":["/** ---------------------------------------------------------\n * * ***Type guard: `isURL`.***\n * ----------------------------------------------------------\n * **Checks if a value is an instance of the\n * **[`URL`](https://developer.mozilla.org/docs/Web/API/URL)** class.**\n * - **Behavior:**\n * - Narrows type to `URL` when true.\n * - Excludes `strings`, `plain-objects`, and `other non-URL values`.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the value is an instance of `URL`, otherwise `false`.\n * @example\n * isURL(new URL(\"https://example.com\"));\n * // ➔ true\n * isURL(\"https://example.com\");\n * // ➔ false\n */\nexport const isURL = (value: unknown): value is URL => {\n return value instanceof URL;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,MAAa,SAAS,UAAiC;CACrD,OAAO,iBAAiB"}
@@ -1,20 +0,0 @@
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 isURL = (value) => {
12
- return value instanceof URL;
13
- };
14
- Object.defineProperty(exports, 'isURL', {
15
- enumerable: true,
16
- get: function () {
17
- return isURL;
18
- }
19
- });
20
- //# sourceMappingURL=isURL-WZypXsax.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"isURL-WZypXsax.cjs","names":[],"sources":["../src/predicates/is/isURL.ts"],"sourcesContent":["/** ---------------------------------------------------------\n * * ***Type guard: `isURL`.***\n * ----------------------------------------------------------\n * **Checks if a value is an instance of the\n * **[`URL`](https://developer.mozilla.org/docs/Web/API/URL)** class.**\n * - **Behavior:**\n * - Narrows type to `URL` when true.\n * - Excludes `strings`, `plain-objects`, and `other non-URL values`.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the value is an instance of `URL`, otherwise `false`.\n * @example\n * isURL(new URL(\"https://example.com\"));\n * // ➔ true\n * isURL(\"https://example.com\");\n * // ➔ false\n */\nexport const isURL = (value: unknown): value is URL => {\n return value instanceof URL;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,MAAa,SAAS,UAAiC;CACrD,OAAO,iBAAiB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"isValidDomain-BSXshgkC.cjs","names":["isString","isBoolean","getPreciseType","safeStableStringify","punycodeUtilsJS","ccTldMap","sldMap"],"sources":["../src/predicates/is/_private/data/domain/sldMap.json","../src/predicates/is/_private/data/domain/ccTldMap.json","../src/predicates/is/isValidDomain.ts"],"sourcesContent":["","","import { punycodeUtilsJS } from \"@/urls/utils/punyCode\";\nimport { assertIsPlainObject } from \"@/assertions/objects/assertIsPlainObject\";\nimport { safeStableStringify } from \"@/conversions/stringify/safeStableStringify\";\n\nimport sldMap from \"./_private/data/domain/sldMap.json\";\nimport ccTldMap from \"./_private/data/domain/ccTldMap.json\";\n\nimport { isString } from \"./isString\";\nimport { isBoolean } from \"./isBoolean\";\n\nimport { getPreciseType } from \"../type/getPreciseType\";\n\n/** ---------------------------------------------------------\n * * ***Options for `isValidDomain` predicate.***\n * ---------------------------------------------------------\n * **Customize the behavior of domain validation.**\n */\ntype IsValidDomainOptions = {\n /** * ***Enable conversion of Unicode domains (IDN) to ASCII (punycode).***\n *\n * - Example: `\"пример.рф\"` ➔ `\"xn--e1afmkfd.xn--p1ai\"`\n * - Allows validating Unicode domains correctly.\n * - Default: `false`\n *\n * @defaultValue `false`.\n */\n allowUnicode?: boolean;\n\n /** * ***If `true`, validates **only top-level domains (TLDs)** that are not part of any SLD/second-level domain.***\n *\n * - Accepts country-code TLDs like `\"ai\"` or `\"ai.\"` ✅\n * - Rejects common TLDs that are part of SLDs like `\"com\"` ❌\n * - Only the final label is checked; subdomains are ignored.\n * - Default: `false`\n *\n * @defaultValue `false`.\n */\n topLevel?: boolean;\n\n /** * ***Allow or disallow subdomains.***\n *\n * - Example: `\"sub.example.com\"` ✅ if `subdomain` is `true`, ❌ if `false`\n * - Wildcards and SLDs are considered when evaluating subdomains.\n * - Default: `true`\n *\n * @defaultValue `true`.\n */\n subdomain?: boolean;\n\n /** * ***Allow a wildcard `*` in the left-most label.***\n *\n * - Example: `\"*.example.com\"` ✅ if `wildcard` is `true`, ❌ if `false`\n * - Wildcards are only valid in the first label and require at least one additional label.\n * - Default: `false`\n *\n * @defaultValue `false`.\n */\n wildcard?: boolean;\n\n /** * ***Allow a port after the domain.***\n *\n * - Example: `\"localhost:3000\"` or `\"example.com:8080\"` ✅ if `allowPort` is `true`\n * - Validates that the port is a number between `1` and `65535`.\n * - Does not affect domain validation rules otherwise.\n * - Default: `false`\n *\n * @defaultValue `false`.\n */\n allowPort?: boolean;\n\n /** * ***Allow special domains like `localhost`.***\n *\n * - Example: `\"localhost\"` ✅ if `allowLocalhost` is `true`\n * - Works with or without a port if `allowPort` is enabled.\n * - Default: `false`\n *\n * @defaultValue `false`.\n */\n allowLocalhost?: boolean;\n\n /** * ***Allow URLs with protocol (`http`/`https`) and automatically extract the hostname.***\n *\n * - Example: `\"https://example.com/foo/bar\"` ➔ `\"example.com\"`\n * - The function will validate only the hostname part and ignore the path, query, and fragment.\n * - Default: `false`\n *\n * @defaultValue `false`.\n */\n allowProtocol?: boolean;\n};\n\n/** ---------------------------------------------------------\n * * ***Predicate: `isValidDomain`.***\n * ---------------------------------------------------------\n * **Validates whether a given string is a properly formatted domain name.**\n *\n * - **Supports options for:**\n * - `allowUnicode` ➔ allows internationalized domain names (IDN) with Unicode characters.\n * - `topLevel` ➔ validates **only top-level domains (TLDs)**; ignores subdomains and SLDs.\n * - `subdomain` ➔ allows or disallows subdomains.\n * - `wildcard` ➔ allows wildcard (`*`) in the left-most label.\n * - `allowPort` ➔ allows a port number after the domain (e.g., `example.com:8080`).\n * - `allowLocalhost` ➔ allows the special domain `\"localhost\"`.\n * - `allowProtocol` ➔ allows a URL with protocol (`http`/`https`) and extracts the hostname.\n *\n * - **Behavior:**\n * - ✅ Converts Unicode to ASCII (punycode) if `allowUnicode` is `true`.\n * - ✅ Checks label lengths (≤63 chars), valid characters, and punycode consistency.\n * - ✅ Validates port if `allowPort` is `true` (must be 1–65535).\n * - ✅ Accepts `\"localhost\"` if `allowLocalhost` is `true`.\n * - ✅ Extracts hostname from URLs if `allowProtocol` is `true`.\n * - ❌ Rejects invalid domains, labels starting/ending with `-`, double dots, malformed TLDs, or invalid port numbers.\n * - ✅ Handles both standard domains (example.com), URLs with protocols (https://example.com/foo), and IDNs (пример.рф).\n *\n * @param {*} value - The value to validate; only strings are valid domains.\n * @param {IsValidDomainOptions} [options] - Optional configuration for domain validation.\n * @param {boolean} [options.allowUnicode=false] - Enable punycode conversion for Unicode domains.\n * @param {boolean} [options.topLevel=false] - Validate only TLDs (e.g., `ai`, `uk.`); ignores SLDs like `com`.\n * @param {boolean} [options.subdomain=true] - Allow subdomains; set `false` to reject any subdomain.\n * @param {boolean} [options.wildcard=false] - Allow wildcard `*` in the left-most label (e.g., `*.example.com`).\n * @param {boolean} [options.allowPort=false] - Allow port number after domain (e.g., `:3000`); must be 1–65535.\n * @param {boolean} [options.allowLocalhost=false] - Allow special domain `\"localhost\"`.\n * @param {boolean} [options.allowProtocol=false] - Allow URLs with protocol (`http`/`https`) and extract hostname only.\n * @returns {boolean} Returns `true` if the value is a valid domain according to the rules and options; otherwise `false`.\n *\n * @example\n * isValidDomain(\"google.com\");\n * // ➔ true\n * isValidDomain(\"пример.рф\", { allowUnicode: true });\n * // ➔ true\n * isValidDomain(\"sub.example.com\", { subdomain: false });\n * // ➔ false\n * isValidDomain(\"*.example.com\", { wildcard: true });\n * // ➔ true\n * isValidDomain(\"com\", { topLevel: true });\n * // ➔ false (common TLD rejected because it's part of SLD)\n * isValidDomain(\"ai.\", { topLevel: true });\n * // ➔ true (country-code TLD accepted)\n * isValidDomain(\"localhost\", { allowLocalhost: true });\n * // ➔ true\n * isValidDomain(\"localhost:3000\", { allowLocalhost: true, allowPort: true });\n * // ➔ true\n * isValidDomain(\"example.com:8080\", { allowPort: true });\n * // ➔ true\n * isValidDomain(\"https://example.com/foo/bar\", { allowProtocol: true });\n * // ➔ true (protocol stripped and hostname validated)\n * isValidDomain(\"invalid_domain.com\");\n * // ➔ false\n */\nexport function isValidDomain(\n value: unknown,\n options: IsValidDomainOptions = {}\n): boolean {\n if (!isString(value)) return false;\n\n assertIsPlainObject(options, {\n message: ({ currentType, validType }) =>\n `Second parameter (\\`options\\`) must be of type \\`${validType}\\`, but received: \\`${currentType}\\`.`\n });\n\n const {\n subdomain = true,\n topLevel = false,\n wildcard = false,\n allowUnicode = false,\n allowPort = false,\n allowLocalhost = false,\n allowProtocol = false\n } = options;\n\n // Validate Options:\n const invalid = Object.entries({\n subdomain,\n topLevel,\n wildcard,\n allowUnicode,\n allowProtocol,\n allowPort,\n allowLocalhost\n }).filter(([, value]) => !isBoolean(value));\n\n if (invalid.length) {\n const msg = invalid\n .map(\n ([key, value], i) =>\n ` ${i + 1}. option: \"${key}\"\\n` +\n \" expected: boolean\\n\" +\n ` received: ${getPreciseType(value)} (${safeStableStringify(\n value,\n {\n keepUndefined: true\n }\n )})`\n )\n .join(\"\\n\");\n\n throw new TypeError(\n `\\n> Invalid options detected in second parameter of \\`isValidDomain\\`:\\n${msg}`\n );\n }\n // -----------------\n\n let _value = value.toLowerCase();\n\n if (allowProtocol) {\n try {\n const url = new URL(value); // use original input\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") return false; // reject non-http(s)\n if (!allowPort && url.port) return false; // reject port if allowPort=false\n _value = url.hostname.toLowerCase(); // extract only hostname\n\n // wildcard check\n const labels = _value.split(\".\");\n if (labels[0] === \"*\" && !wildcard) return false;\n } catch {\n // if parsing fails, leave _value unchanged\n }\n }\n\n if (value.endsWith(\".\")) {\n _value = _value.slice(0, _value.length - 1);\n }\n\n // Handle port\n let port: string;\n if (allowPort) {\n const portMatch = _value.match(/:(\\d{1,5})$/);\n if (portMatch) {\n port = portMatch[0];\n _value = _value.slice(0, -port.length);\n const portNum = Number(portMatch[1]);\n if (portNum < 1 || portNum > 65535) return false;\n }\n }\n\n // Allow localhost\n if (allowLocalhost && _value === \"localhost\") return true;\n\n if (allowUnicode) {\n try {\n _value = punycodeUtilsJS.toASCII(_value);\n } catch {\n return false;\n }\n }\n\n if (_value.length > 253) return false;\n\n const validChars = /^([\\u0E00-\\u0E7Fa-z0-9-._*]+)$/g;\n if (!validChars.test(_value)) return false;\n\n if (topLevel) {\n if (ccTldMap[_value.replace(/\\.$/, \"\") as keyof typeof ccTldMap]) {\n return true;\n }\n }\n\n const sldRegex = /(.*)\\.(([\\u0E00-\\u0E7Fa-z0-9]+)(\\.[a-z0-9]+))/;\n const matches = _value.match(sldRegex);\n // eslint-disable-next-line no-useless-assignment\n let tld: string | null = null;\n let labels: string[] | null = null;\n\n if (matches && matches.length > 2) {\n if (sldMap[matches[2] as keyof typeof sldMap]) {\n // eslint-disable-next-line no-useless-assignment\n tld = matches[2] || null;\n labels = matches[1]?.split(\".\") || null;\n }\n }\n\n if (!labels) {\n labels = _value.split(\".\");\n if (labels.length <= 1) return false;\n\n tld = labels.pop()!;\n const tldRegex = /^(?:xn--)?(?!^\\d+$)[\\u0E00-\\u0E7Fa-z0-9]+$/gi;\n if (!tldRegex.test(tld)) return false;\n }\n\n if (subdomain === false && labels.length > 1) return false;\n\n return labels.every((label, index) => {\n if (wildcard && index === 0 && label === \"*\" && labels.length > 1) {\n return true;\n }\n\n let validLabelChars = /^([\\u0E00-\\u0E7Fa-zA-Z0-9-_]+)$/g;\n if (index === labels.length - 1) {\n validLabelChars = /^([\\u0E00-\\u0E7Fa-zA-Z0-9-]+)$/g;\n }\n\n const doubleDashCount = (label.match(/--(--)?/g) || []).length;\n const xnDashCount = (label.match(/xn--/g) || []).length;\n if (index === labels.length - 1 && doubleDashCount !== xnDashCount) {\n return false;\n }\n\n return (\n validLabelChars.test(label) &&\n label.length < 64 &&\n !label.startsWith(\"-\") &&\n !label.endsWith(\"-\")\n );\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}