@rzl-zone/utils-js 3.1.0-beta.2 → 3.1.2-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 (136) hide show
  1. package/README.md +2 -2
  2. package/dist/NumberRangeUnion-DC-C3_Kq.d.ts +23 -23
  3. package/dist/any-BmdI8UbK.d.ts +56 -56
  4. package/dist/arrays-normalize-recursive-CnjYJ9xg.d.ts +66 -66
  5. package/dist/assertions/index.cjs +1 -1
  6. package/dist/assertions/index.d.ts +396 -396
  7. package/dist/assertions/index.js +1 -1
  8. package/dist/chunk-26W3VZIK.cjs +1 -0
  9. package/dist/chunk-2KRCHXFG.cjs +2 -0
  10. package/dist/{chunk-TQMZ2LPI.js → chunk-33ZLH266.js} +1 -1
  11. package/dist/{chunk-VQLAPEL3.js → chunk-4L4EJTNZ.js} +1 -1
  12. package/dist/{chunk-CK3BZGEU.js → chunk-5Q37AP7P.js} +1 -1
  13. package/dist/chunk-7CHFAMS2.js +1 -0
  14. package/dist/{chunk-REFMEB4A.js → chunk-7MMJZ6HS.js} +1 -1
  15. package/dist/chunk-7TC6DE3J.cjs +1 -0
  16. package/dist/{chunk-K4PLGD7C.js → chunk-7VX33E3V.js} +1 -1
  17. package/dist/chunk-BEZPD44N.cjs +1 -0
  18. package/dist/{chunk-2AUUPGMN.js → chunk-BI263OHW.js} +1 -1
  19. package/dist/{chunk-LVUSFXQS.cjs → chunk-CII6WWLO.cjs} +1 -1
  20. package/dist/{chunk-OX6RLS2F.cjs → chunk-D5TYPCWU.cjs} +1 -1
  21. package/dist/{chunk-MWLEM7ED.js → chunk-EEQY5QUG.js} +1 -1
  22. package/dist/chunk-ESJYBIYH.js +1 -0
  23. package/dist/{chunk-MJAW5RAK.js → chunk-EWYPSKKM.js} +1 -1
  24. package/dist/chunk-EXCOQLWX.cjs +1 -0
  25. package/dist/chunk-FWQVTMYA.cjs +1 -0
  26. package/dist/{chunk-25G6B35W.js → chunk-G4EWCRKS.js} +1 -1
  27. package/dist/{chunk-PFLNHD4B.cjs → chunk-G7R5XZRM.cjs} +1 -1
  28. package/dist/{chunk-EXXLUO7L.cjs → chunk-GGEV7LXX.cjs} +1 -1
  29. package/dist/{chunk-VTR75UID.cjs → chunk-HJOZOENU.cjs} +1 -1
  30. package/dist/{chunk-HXTACM3O.cjs → chunk-IRDZVLNZ.cjs} +1 -1
  31. package/dist/chunk-IW73G523.cjs +1 -0
  32. package/dist/chunk-IY5OZAB3.cjs +1 -0
  33. package/dist/{chunk-467VEMJH.js → chunk-J4NCYYGS.js} +1 -1
  34. package/dist/{chunk-RHIBYOFQ.js → chunk-J7JAZAJD.js} +1 -1
  35. package/dist/{chunk-JQZUWBIX.js → chunk-JYNSO7ZY.js} +1 -1
  36. package/dist/{chunk-UUMKL74S.js → chunk-K3UVKYEU.js} +1 -1
  37. package/dist/{chunk-ME5OV5HN.js → chunk-LQ76EDZG.js} +1 -1
  38. package/dist/chunk-MROH35V3.cjs +1 -0
  39. package/dist/chunk-NJSAV73S.js +1 -0
  40. package/dist/{chunk-HXST7RJB.js → chunk-NR44SNYE.js} +1 -1
  41. package/dist/{chunk-BLCANGFS.js → chunk-NXMTWY77.js} +1 -1
  42. package/dist/chunk-OZCQZO2V.cjs +4 -0
  43. package/dist/chunk-Q3NTKN5I.cjs +1 -0
  44. package/dist/{chunk-NSVLG7NY.js → chunk-QDNSC57Z.js} +1 -1
  45. package/dist/{chunk-NUVGETPD.js → chunk-QGXTL5ZH.js} +1 -1
  46. package/dist/{chunk-D43GV6EF.cjs → chunk-QSQDP7L2.cjs} +1 -1
  47. package/dist/{chunk-U4TZO7WV.js → chunk-S5M33A4O.js} +1 -1
  48. package/dist/{chunk-S7GMG4TB.js → chunk-SGTHOQQ2.js} +1 -1
  49. package/dist/chunk-SL3RQOWA.js +1 -0
  50. package/dist/{chunk-NUHOOAUN.cjs → chunk-SZPWZZYG.cjs} +1 -1
  51. package/dist/{chunk-RHE3M2NJ.cjs → chunk-UA4B7JBO.cjs} +1 -1
  52. package/dist/chunk-UQDJF5RR.cjs +1 -0
  53. package/dist/chunk-UTQUYABU.cjs +1 -0
  54. package/dist/{chunk-G72VSVGO.js → chunk-VPW3DRV5.js} +1 -1
  55. package/dist/{chunk-PSWITZK5.js → chunk-W32WALNU.js} +1 -1
  56. package/dist/chunk-XGZ6K753.cjs +1 -0
  57. package/dist/chunk-YFTR64N5.cjs +1 -0
  58. package/dist/chunk-ZFDS7W6B.cjs +1 -0
  59. package/dist/chunk-ZQOLZE6Z.cjs +1 -0
  60. package/dist/conversions/index.cjs +1 -1
  61. package/dist/conversions/index.d.ts +1285 -1285
  62. package/dist/conversions/index.js +1 -1
  63. package/dist/env/index.d.ts +14 -14
  64. package/dist/events/index.cjs +1 -1
  65. package/dist/events/index.d.ts +109 -109
  66. package/dist/events/index.js +1 -1
  67. package/dist/extends-Bk_SBGdT.d.ts +330 -330
  68. package/dist/formatting/index.cjs +1 -1
  69. package/dist/formatting/index.d.ts +855 -855
  70. package/dist/formatting/index.js +1 -1
  71. package/dist/generator/index.cjs +1 -1
  72. package/dist/generator/index.d.ts +155 -155
  73. package/dist/generator/index.js +1 -1
  74. package/dist/if-CvT4R7Kh.d.ts +16 -16
  75. package/dist/is-array--YjXV-Wx.d.ts +1084 -1084
  76. package/dist/isPlainObject-BVhBAPHX.d.ts +154 -154
  77. package/dist/never-BfayMBF9.d.ts +64 -64
  78. package/dist/next/index.cjs +5 -5
  79. package/dist/next/index.d.ts +183 -183
  80. package/dist/next/index.js +1 -1
  81. package/dist/next/server/index.cjs +1 -1
  82. package/dist/next/server/index.d.ts +25 -25
  83. package/dist/next/server/index.js +1 -1
  84. package/dist/nils-DMz3kU7M.d.ts +155 -155
  85. package/dist/omit-VvmIsZmX.d.ts +25 -25
  86. package/dist/operations/index.cjs +1 -1
  87. package/dist/operations/index.d.ts +120 -120
  88. package/dist/operations/index.js +1 -1
  89. package/dist/parsers/index.cjs +1 -1
  90. package/dist/parsers/index.d.ts +34 -34
  91. package/dist/parsers/index.js +1 -1
  92. package/dist/predicates/index.cjs +1 -1
  93. package/dist/predicates/index.d.ts +1674 -1674
  94. package/dist/predicates/index.js +1 -1
  95. package/dist/prettify-C4xLcYOP.d.ts +328 -328
  96. package/dist/promise/index.cjs +1 -1
  97. package/dist/promise/index.d.ts +29 -29
  98. package/dist/promise/index.js +1 -1
  99. package/dist/rzl-utils.global.js +1 -1
  100. package/dist/string-XA-til3C.d.ts +318 -318
  101. package/dist/strings/index.cjs +1 -1
  102. package/dist/strings/index.d.ts +690 -690
  103. package/dist/strings/index.js +1 -1
  104. package/dist/stylings/index.cjs +1 -1
  105. package/dist/stylings/index.d.ts +35 -35
  106. package/dist/stylings/index.js +1 -1
  107. package/dist/type-data-DDs-u2kq.d.ts +241 -241
  108. package/dist/types/index.d.ts +3264 -3264
  109. package/dist/urls/index.cjs +1 -1
  110. package/dist/urls/index.d.ts +373 -373
  111. package/dist/urls/index.js +1 -1
  112. package/package.json +3 -15
  113. package/dist/chunk-2JQQQ625.js +0 -1
  114. package/dist/chunk-445TAVT4.cjs +0 -1
  115. package/dist/chunk-6Q4I2RPC.cjs +0 -1
  116. package/dist/chunk-6SMJMZ7G.cjs +0 -1
  117. package/dist/chunk-DFSTVQFI.cjs +0 -1
  118. package/dist/chunk-DYRDBYPF.cjs +0 -1
  119. package/dist/chunk-GAJTFCUA.js +0 -1
  120. package/dist/chunk-GOJNH55O.cjs +0 -1
  121. package/dist/chunk-IJTZWWRJ.cjs +0 -1
  122. package/dist/chunk-ISJ33O2J.cjs +0 -1
  123. package/dist/chunk-JISH2VGG.js +0 -1
  124. package/dist/chunk-KZQB7H4E.cjs +0 -1
  125. package/dist/chunk-LUVV5KSD.cjs +0 -2
  126. package/dist/chunk-MF5Y5K4N.cjs +0 -1
  127. package/dist/chunk-O5VXBNUQ.cjs +0 -4
  128. package/dist/chunk-O7SJR4CY.cjs +0 -1
  129. package/dist/chunk-PYUVKHUF.cjs +0 -1
  130. package/dist/chunk-XFCJDSB2.cjs +0 -1
  131. package/dist/chunk-XOYX4PLZ.cjs +0 -1
  132. package/dist/chunk-Z6FLCEN6.js +0 -1
  133. package/dist/chunk-ZO5364A6.cjs +0 -1
  134. package/dist/index.cjs +0 -1
  135. package/dist/index.d.ts +0 -1
  136. package/dist/index.js +0 -1
@@ -1,282 +1,282 @@
1
1
  import{k as IsPositive,P as ParseNumber,I as IsStringLiteral,C as CharAt,d as IsUnknown,m as IsReadonlyArray,o as IsArray,f as OrArr}from'../is-array--YjXV-Wx.js';import{A as AnyString,a as IsEmptyString,T as Trim}from'../string-XA-til3C.js';import{I as IsAny}from'../any-BmdI8UbK.js';import{A as AnyFunction,a as AnObjectNonArray,T as TypedArray}from'../type-data-DDs-u2kq.js';import{E as Extends}from'../extends-Bk_SBGdT.js';import{P as Prettify}from'../prettify-C4xLcYOP.js';import{N as NumberRangeUnion}from'../NumberRangeUnion-DC-C3_Kq.js';import{a as IsPlainObjectResult}from'../isPlainObject-BVhBAPHX.js';export{G as GetPreciseTypeOptions,I as IsNumberOptions,g as getPreciseType,i as isNumber,b as isPlainObject}from'../isPlainObject-BVhBAPHX.js';import{I as IsNever}from'../never-BfayMBF9.js';import'../if-CvT4R7Kh.js';type EmptyObject<T>={[K in keyof T]?:never;};type EmptyObjectOf<T>=EmptyObject<T>extends T?EmptyObject<T>:never;type List<T>=ArrayLike<T>;type CustomizerIsEqualWith=(value:unknown,other:unknown,indexOrKey:PropertyKey,parent:unknown,otherParent:unknown,stack:unknown)=>boolean|undefined;type CustomizerIsMatchWith=(value:unknown,other:unknown,indexOrKey:PropertyKey,object:object,source:object)=>boolean|undefined;
2
2
  /** ----------------------------------------------------------
3
- * * ***Predicate: `areArraysEqual`.***
4
- * ----------------------------------------------------------
5
- * **Compares two arrays deeply to check if they are equal.**
6
- * @description Supports deep comparison of arrays containing nested arrays or objects,
7
- * can also ignore the order of elements at all levels by recursively sorting.
8
- * @param {unknown[]} array1
9
- * The first array to compare. Can contain nested arrays or objects.
10
- * @param {unknown[]} array2
11
- * The second array to compare against. Should match structure of `array1`.
12
- * @param {boolean|undefined} [ignoreOrder=false]
13
- * Whether to ignore the order of elements when comparing.
14
- * - If `true`, will sort both arrays recursively before comparing, default is `false`.
15
- * @returns {boolean}
16
- * Returns `true` if both arrays are deeply equal, otherwise `false`.
17
- * @throws {TypeError}
18
- * Throws if `array1` or `array2` are not arrays, or if `ignoreOrder` is not a boolean.
19
- * @example
20
- * ```ts
21
- * areArraysEqual([1, 2, 3], [1, 2, 3]);
22
- * // ➔ true
23
- * areArraysEqual([1, 2, 3], [3, 2, 1]);
24
- * // ➔ false
25
- * areArraysEqual([1, 2, 3], [3, 2, 1], true);
26
- * // ➔ true (order ignored)
27
- * areArraysEqual([{ x: 1 }, { y: 2 }], [{ y: 2 }, { x: 1 }], true);
28
- * // ➔ true
29
- * ```
30
- */
3
+ * * ***Predicate: `areArraysEqual`.***
4
+ * ----------------------------------------------------------
5
+ * **Compares two arrays deeply to check if they are equal.**
6
+ * @description Supports deep comparison of arrays containing nested arrays or objects,
7
+ * can also ignore the order of elements at all levels by recursively sorting.
8
+ * @param {unknown[]} array1
9
+ * The first array to compare. Can contain nested arrays or objects.
10
+ * @param {unknown[]} array2
11
+ * The second array to compare against. Should match structure of `array1`.
12
+ * @param {boolean|undefined} [ignoreOrder=false]
13
+ * Whether to ignore the order of elements when comparing.
14
+ * - If `true`, will sort both arrays recursively before comparing, default is `false`.
15
+ * @returns {boolean}
16
+ * Returns `true` if both arrays are deeply equal, otherwise `false`.
17
+ * @throws {TypeError}
18
+ * Throws if `array1` or `array2` are not arrays, or if `ignoreOrder` is not a boolean.
19
+ * @example
20
+ * ```ts
21
+ * areArraysEqual([1, 2, 3], [1, 2, 3]);
22
+ * // ➔ true
23
+ * areArraysEqual([1, 2, 3], [3, 2, 1]);
24
+ * // ➔ false
25
+ * areArraysEqual([1, 2, 3], [3, 2, 1], true);
26
+ * // ➔ true (order ignored)
27
+ * areArraysEqual([{ x: 1 }, { y: 2 }], [{ y: 2 }, { x: 1 }], true);
28
+ * // ➔ true
29
+ * ```
30
+ */
31
31
  declare const areArraysEqual:(array1:unknown[],array2:unknown[],ignoreOrder?:boolean)=>boolean;
32
32
  /** ---------------------------------
33
- * * ***Predicate: `areObjectsEqual`.***
34
- * ---------------------------------
35
- * **Compares two objects for deep equality.**
36
- * @template T1 The type of the first object.
37
- * @template T2 The type of the second object.
38
- * @param {*} object1 - The first object to compare.
39
- * @param {*} object2 - The second object to compare.
40
- * @returns {boolean} Return `true` if both objects are deeply equal, otherwise `false`.
41
- * @example
42
- * areObjectsEqual({ a: 1, b: 2 }, { a: 1, b: 2 });
43
- * // ➔ true
44
- * areObjectsEqual({ a: 1 }, { a: 1, b: undefined });
45
- * // ➔ false
46
- * areObjectsEqual([1, 2, 3], [1, 2, 3]);
47
- * // ➔ true
48
- */
33
+ * * ***Predicate: `areObjectsEqual`.***
34
+ * ---------------------------------
35
+ * **Compares two objects for deep equality.**
36
+ * @template T1 The type of the first object.
37
+ * @template T2 The type of the second object.
38
+ * @param {*} object1 - The first object to compare.
39
+ * @param {*} object2 - The second object to compare.
40
+ * @returns {boolean} Return `true` if both objects are deeply equal, otherwise `false`.
41
+ * @example
42
+ * areObjectsEqual({ a: 1, b: 2 }, { a: 1, b: 2 });
43
+ * // ➔ true
44
+ * areObjectsEqual({ a: 1 }, { a: 1, b: undefined });
45
+ * // ➔ false
46
+ * areObjectsEqual([1, 2, 3], [1, 2, 3]);
47
+ * // ➔ true
48
+ */
49
49
  declare const areObjectsEqual:(object1:unknown,object2:unknown)=>boolean;
50
50
  /** ---------------------------------
51
- * * ***Predicate: `areURLsEqualPath`.***
52
- * ---------------------------------
53
- * **Checks if two URLs are the same, ignoring query parameters, this function compares only the protocol, host, and pathname.**
54
- * @param {URL} urlA - The first URL to compare.
55
- * @param {URL} urlB - The second URL to compare.
56
- * @returns {boolean} Returns `true` if both URLs are the same (ignoring search parameters), otherwise `false`.
57
- * @example
58
- * // Same domain, same path, different query -> true
59
- * areURLsEqualPath(new URL("https://example.com/page?a=1"), new URL("https://example.com/page?b=2"));
60
- * // ➔ true
61
- *
62
- * // Same domain, different path -> false
63
- * areURLsEqualPath(new URL("https://example.com/page1"), new URL("https://example.com/page2"));
64
- * // ➔ false
65
- *
66
- * // Different protocol -> false
67
- * areURLsEqualPath(new URL("http://example.com/page"), new URL("https://example.com/page"));
68
- * // ➔ false
69
- *
70
- * // Same protocol, same host, same path (ignores query & hash) -> true
71
- * areURLsEqualPath(new URL("https://example.com/page#section"), new URL("https://example.com/page"));
72
- * // ➔ true
73
- */
51
+ * * ***Predicate: `areURLsEqualPath`.***
52
+ * ---------------------------------
53
+ * **Checks if two URLs are the same, ignoring query parameters, this function compares only the protocol, host, and pathname.**
54
+ * @param {URL} urlA - The first URL to compare.
55
+ * @param {URL} urlB - The second URL to compare.
56
+ * @returns {boolean} Returns `true` if both URLs are the same (ignoring search parameters), otherwise `false`.
57
+ * @example
58
+ * // Same domain, same path, different query -> true
59
+ * areURLsEqualPath(new URL("https://example.com/page?a=1"), new URL("https://example.com/page?b=2"));
60
+ * // ➔ true
61
+ *
62
+ * // Same domain, different path -> false
63
+ * areURLsEqualPath(new URL("https://example.com/page1"), new URL("https://example.com/page2"));
64
+ * // ➔ false
65
+ *
66
+ * // Different protocol -> false
67
+ * areURLsEqualPath(new URL("http://example.com/page"), new URL("https://example.com/page"));
68
+ * // ➔ false
69
+ *
70
+ * // Same protocol, same host, same path (ignores query & hash) -> true
71
+ * areURLsEqualPath(new URL("https://example.com/page#section"), new URL("https://example.com/page"));
72
+ * // ➔ true
73
+ */
74
74
  declare const areURLsEqualPath:(urlA:URL,urlB:URL)=>boolean;
75
75
  /** ---------------------------------
76
- * * ***Predicate: `areURLsIdentical`.***
77
- * ---------------------------------
78
- * **Checks if two URLs are exactly the same, including protocol, host, pathname, and query parameters.**
79
- * @param {URL} urlA - The first URL to compare.
80
- * @param {URL} urlB - The second URL to compare.
81
- * @returns {boolean} Returns `true` if both URLs are identical, otherwise `false`.
82
- * @example
83
- * // Identical URLs -> true
84
- * areURLsIdentical(new URL("https://example.com/page?a=1"), new URL("https://example.com/page?a=1"));
85
- * // ➔ true
86
- *
87
- * // Same path, different query parameter -> false
88
- * areURLsIdentical(new URL("https://example.com/page?a=1"), new URL("https://example.com/page?b=2"));
89
- * // ➔ false
90
- *
91
- * // Same host & query, but different protocol -> false
92
- * areURLsIdentical(new URL("http://example.com/page?a=1"), new URL("https://example.com/page?a=1"));
93
- * // ➔ false
94
- *
95
- * // Same everything except trailing slash -> false
96
- * areURLsIdentical(new URL("https://example.com/page"), new URL("https://example.com/page/"));
97
- * // ➔ false
98
- */
76
+ * * ***Predicate: `areURLsIdentical`.***
77
+ * ---------------------------------
78
+ * **Checks if two URLs are exactly the same, including protocol, host, pathname, and query parameters.**
79
+ * @param {URL} urlA - The first URL to compare.
80
+ * @param {URL} urlB - The second URL to compare.
81
+ * @returns {boolean} Returns `true` if both URLs are identical, otherwise `false`.
82
+ * @example
83
+ * // Identical URLs -> true
84
+ * areURLsIdentical(new URL("https://example.com/page?a=1"), new URL("https://example.com/page?a=1"));
85
+ * // ➔ true
86
+ *
87
+ * // Same path, different query parameter -> false
88
+ * areURLsIdentical(new URL("https://example.com/page?a=1"), new URL("https://example.com/page?b=2"));
89
+ * // ➔ false
90
+ *
91
+ * // Same host & query, but different protocol -> false
92
+ * areURLsIdentical(new URL("http://example.com/page?a=1"), new URL("https://example.com/page?a=1"));
93
+ * // ➔ false
94
+ *
95
+ * // Same everything except trailing slash -> false
96
+ * areURLsIdentical(new URL("https://example.com/page"), new URL("https://example.com/page/"));
97
+ * // ➔ false
98
+ */
99
99
  declare const areURLsIdentical:(urlA:URL,urlB:URL)=>boolean;type OptionsTextContainsAll={
100
100
  /** If `true`, matches whole words only, defaultValue is `false`.
101
- *
102
- * @default false
103
- */
101
+ *
102
+ * @default false
103
+ */
104
104
  exactMatch?:boolean;
105
105
  /** Optional regex flags (default: `"i"` for case-insensitive).
106
- *
107
- * @default "i"
108
- */
106
+ *
107
+ * @default "i"
108
+ */
109
109
  flags?:string;};
110
110
  /** ----------------------------------------------------------
111
- * * ***Predicate: `textContainsAll`.***
112
- * ----------------------------------------------------------
113
- * **Checks if the given `text` contains all of the specified `searchWords`.**
114
- * - **Behavior:**
115
- * - Returns `false` if `text` or `searchWords` is `null`/`undefined`/invalid.
116
- * - Uses **regular expressions** for flexible pattern matching.
117
- * - **Escapes special characters** to prevent regex injection attacks.
118
- * - **Trims input** to avoid false positives with empty spaces.
119
- * - **Supports exact word matching** (optional).
120
- * @param {string|null|undefined} text - The string text to search within.
121
- * @param {string[]|null} [searchWords] - An array of words/phrases to match against the text.
122
- * @param {OptionsTextContainsAll} [options] - Optional configuration object.
123
- * @param {OptionsTextContainsAll["exactMatch"]} [options.exactMatch=false] - If `true`, matches whole words only, defaultValue is `false`.
124
- * @param {OptionsTextContainsAll["flags"]} [options.flags="i"] - Optional regex flags (default: `"i"` for case-insensitive).
125
- * @returns {boolean} Return `true` if all `searchWords` are found in `text`, otherwise `false`.
126
- * @example
127
- * textContainsAll("Hello world, WithAI APP", ["Hello", "world"]);
128
- * // ➔ true
129
- * textContainsAll("JavaScript and TypeScript", ["Java", "Script"]);
130
- * // ➔ true
131
- * textContainsAll("Machine Learning", ["AI", "Learning"]);
132
- * // ➔ false
133
- * textContainsAll("open-source", ["open"], { exactMatch: true });
134
- * // ➔ false (because options `exactMatch=true`)
135
- * textContainsAll(null, ["test"]);
136
- * // ➔ false (invalid text)
137
- * textContainsAll("Hello", null);
138
- * // ➔ false (invalid searchWords)
139
- */
111
+ * * ***Predicate: `textContainsAll`.***
112
+ * ----------------------------------------------------------
113
+ * **Checks if the given `text` contains all of the specified `searchWords`.**
114
+ * - **Behavior:**
115
+ * - Returns `false` if `text` or `searchWords` is `null`/`undefined`/invalid.
116
+ * - Uses **regular expressions** for flexible pattern matching.
117
+ * - **Escapes special characters** to prevent regex injection attacks.
118
+ * - **Trims input** to avoid false positives with empty spaces.
119
+ * - **Supports exact word matching** (optional).
120
+ * @param {string|null|undefined} text - The string text to search within.
121
+ * @param {string[]|null} [searchWords] - An array of words/phrases to match against the text.
122
+ * @param {OptionsTextContainsAll} [options] - Optional configuration object.
123
+ * @param {OptionsTextContainsAll["exactMatch"]} [options.exactMatch=false] - If `true`, matches whole words only, defaultValue is `false`.
124
+ * @param {OptionsTextContainsAll["flags"]} [options.flags="i"] - Optional regex flags (default: `"i"` for case-insensitive).
125
+ * @returns {boolean} Return `true` if all `searchWords` are found in `text`, otherwise `false`.
126
+ * @example
127
+ * textContainsAll("Hello world, WithAI APP", ["Hello", "world"]);
128
+ * // ➔ true
129
+ * textContainsAll("JavaScript and TypeScript", ["Java", "Script"]);
130
+ * // ➔ true
131
+ * textContainsAll("Machine Learning", ["AI", "Learning"]);
132
+ * // ➔ false
133
+ * textContainsAll("open-source", ["open"], { exactMatch: true });
134
+ * // ➔ false (because options `exactMatch=true`)
135
+ * textContainsAll(null, ["test"]);
136
+ * // ➔ false (invalid text)
137
+ * textContainsAll("Hello", null);
138
+ * // ➔ false (invalid searchWords)
139
+ */
140
140
  declare const textContainsAll:<T extends string>(text?:T|null,searchWords?:T[]|string[]|null,options?:OptionsTextContainsAll)=>boolean;type OptionsTextContainsAny={
141
141
  /** If `true`, matches whole words only, defaultValue is `false`.
142
- *
143
- * @default false
144
- */
142
+ *
143
+ * @default false
144
+ */
145
145
  exactMatch?:boolean;
146
146
  /** Optional regex flags (default: `"i"` for case-insensitive).
147
- *
148
- * @default "i"
149
- */
147
+ *
148
+ * @default "i"
149
+ */
150
150
  flags?:string;};
151
151
  /** ----------------------------------------------------------
152
- * * ***Predicate: `textContainsAny`.***
153
- * ----------------------------------------------------------
154
- * **Checks if the given `text` contains at least one of the specified `searchWords`.**
155
- * - **Behavior:**
156
- * - Returns `false` if `text` or `searchWords` is `null`/`undefined`/invalid.
157
- * - Uses **regular expressions** for flexible pattern matching.
158
- * - **Escapes special characters** to prevent regex injection attacks.
159
- * - **Trims input** to avoid false positives with empty spaces.
160
- * - **Supports exact word matching** (optional).
161
- * @param {string|null|undefined} text - The string text to search within.
162
- * @param {string[]|null} [searchWords] - An array of words/phrases to match against the text.
163
- * @param {OptionsTextContainsAny} [options] - Optional configuration object.
164
- * @param {OptionsTextContainsAny["exactMatch"]} [options.exactMatch=false] - If `true`, matches whole words only, defaultValue is `false`.
165
- * @param {OptionsTextContainsAny["flags"]} [options.flags="i"] - Optional regex flags (default: `"i"` for case-insensitive).
166
- * @returns {boolean} Return `true` if at least one `searchWord` is found in `text`, otherwise `false`.
167
- * @example
168
- * textContainsAny("Hello world", ["hello", "test"]);
169
- * // ➔ true
170
- * textContainsAny("withAI APP", ["chat", "ai"]);
171
- * // ➔ false
172
- * textContainsAny("TypeScript is great!", ["script", "java"]);
173
- * // ➔ true
174
- * textContainsAny("open-source", ["open"], { exactMatch: true });
175
- * // ➔ false (because options `exactMatch=true`)
176
- * textContainsAny(null, ["test"]);
177
- * // ➔ false (invalid text)
178
- * textContainsAny("Hello", null);
179
- * // ➔ false (invalid searchWords)
180
- */
152
+ * * ***Predicate: `textContainsAny`.***
153
+ * ----------------------------------------------------------
154
+ * **Checks if the given `text` contains at least one of the specified `searchWords`.**
155
+ * - **Behavior:**
156
+ * - Returns `false` if `text` or `searchWords` is `null`/`undefined`/invalid.
157
+ * - Uses **regular expressions** for flexible pattern matching.
158
+ * - **Escapes special characters** to prevent regex injection attacks.
159
+ * - **Trims input** to avoid false positives with empty spaces.
160
+ * - **Supports exact word matching** (optional).
161
+ * @param {string|null|undefined} text - The string text to search within.
162
+ * @param {string[]|null} [searchWords] - An array of words/phrases to match against the text.
163
+ * @param {OptionsTextContainsAny} [options] - Optional configuration object.
164
+ * @param {OptionsTextContainsAny["exactMatch"]} [options.exactMatch=false] - If `true`, matches whole words only, defaultValue is `false`.
165
+ * @param {OptionsTextContainsAny["flags"]} [options.flags="i"] - Optional regex flags (default: `"i"` for case-insensitive).
166
+ * @returns {boolean} Return `true` if at least one `searchWord` is found in `text`, otherwise `false`.
167
+ * @example
168
+ * textContainsAny("Hello world", ["hello", "test"]);
169
+ * // ➔ true
170
+ * textContainsAny("withAI APP", ["chat", "ai"]);
171
+ * // ➔ false
172
+ * textContainsAny("TypeScript is great!", ["script", "java"]);
173
+ * // ➔ true
174
+ * textContainsAny("open-source", ["open"], { exactMatch: true });
175
+ * // ➔ false (because options `exactMatch=true`)
176
+ * textContainsAny(null, ["test"]);
177
+ * // ➔ false (invalid text)
178
+ * textContainsAny("Hello", null);
179
+ * // ➔ false (invalid searchWords)
180
+ */
181
181
  declare const textContainsAny:<T extends string>(text?:T|null,searchWords?:T[]|string[]|null,options?:OptionsTextContainsAny)=>boolean;
182
182
  /** ----------------------------------------------------------
183
- * * ***Predicate: `doesKeyExist`.***
184
- * ----------------------------------------------------------
185
- * **Recursively checks if a given key exists in an object or array.**
186
- * - **Behavior:**
187
- * - **Supports deeply nested objects and arrays**, searching recursively.
188
- * - Uses `Object.prototype.hasOwnProperty.call()` to safely check if the
189
- * key exists at each level, even if its value is `null` or `undefined`.
190
- * - Optimized to return `true` immediately when the key is found (short-circuits).
191
- * - Handles edge cases gracefully:
192
- * - Returns `false` for `null`, `undefined`, or non-object inputs.
193
- * - Returns `false` if key is not found anywhere, even in deeply nested
194
- * structures.**
195
- * - **ℹ️ Note:**
196
- * - This function only checks for **the existence of the key itself**,
197
- * not whether its value is non-null or non-undefined.
198
- * - If you need to check for both existence and meaningful value, write a stricter function.
199
- * @template T - The type of the input object or array.
200
- * @param {T | Record<string, unknown> | unknown[]} object - The object or array to search.
201
- * @param {PropertyKey} key - The key to look for (string, number, or symbol).
202
- * @returns {boolean} Returns `true` if the key exists anywhere in the object or array (even with `null` / `undefined` value), otherwise `false`.
203
- * @example
204
- * doesKeyExist({ name: "John", age: 30 }, "age");
205
- * // ➔ true
206
- * doesKeyExist({ user: { profile: { email: "test@example.com" } } }, "email");
207
- * // ➔ true
208
- * doesKeyExist([{ id: 1 }, { id: 2 }], "id");
209
- * // ➔ true
210
- * doesKeyExist({ a: { b: { c: 10 } } }, "d");
211
- * // ➔ false
212
- * doesKeyExist(null, "name");
213
- * // ➔ false
214
- * doesKeyExist(undefined, "test");
215
- * // ➔ false
216
- *
217
- * // Key exists even if value is null or undefined:
218
- * doesKeyExist({ a: null, b: undefined, c: { d: null } }, "a"); // ➔ true
219
- * doesKeyExist({ a: null, b: undefined, c: { d: null } }, "b"); // ➔ true
220
- * doesKeyExist({ a: null, b: undefined, c: { d: null } }, "d"); // ➔ true
221
- *
222
- * doesKeyExist({ a: 1 }, true);
223
- * // ➔ ❌ Throws TypeError
224
- * doesKeyExist({ a: 1 }, ["not", "valid"]);
225
- * // ➔ ❌ Throws TypeError
226
- */
183
+ * * ***Predicate: `doesKeyExist`.***
184
+ * ----------------------------------------------------------
185
+ * **Recursively checks if a given key exists in an object or array.**
186
+ * - **Behavior:**
187
+ * - **Supports deeply nested objects and arrays**, searching recursively.
188
+ * - Uses `Object.prototype.hasOwnProperty.call()` to safely check if the
189
+ * key exists at each level, even if its value is `null` or `undefined`.
190
+ * - Optimized to return `true` immediately when the key is found (short-circuits).
191
+ * - Handles edge cases gracefully:
192
+ * - Returns `false` for `null`, `undefined`, or non-object inputs.
193
+ * - Returns `false` if key is not found anywhere, even in deeply nested
194
+ * structures.**
195
+ * - **ℹ️ Note:**
196
+ * - This function only checks for **the existence of the key itself**,
197
+ * not whether its value is non-null or non-undefined.
198
+ * - If you need to check for both existence and meaningful value, write a stricter function.
199
+ * @template T - The type of the input object or array.
200
+ * @param {T | Record<string, unknown> | unknown[]} object - The object or array to search.
201
+ * @param {PropertyKey} key - The key to look for (string, number, or symbol).
202
+ * @returns {boolean} Returns `true` if the key exists anywhere in the object or array (even with `null` / `undefined` value), otherwise `false`.
203
+ * @example
204
+ * doesKeyExist({ name: "John", age: 30 }, "age");
205
+ * // ➔ true
206
+ * doesKeyExist({ user: { profile: { email: "test@example.com" } } }, "email");
207
+ * // ➔ true
208
+ * doesKeyExist([{ id: 1 }, { id: 2 }], "id");
209
+ * // ➔ true
210
+ * doesKeyExist({ a: { b: { c: 10 } } }, "d");
211
+ * // ➔ false
212
+ * doesKeyExist(null, "name");
213
+ * // ➔ false
214
+ * doesKeyExist(undefined, "test");
215
+ * // ➔ false
216
+ *
217
+ * // Key exists even if value is null or undefined:
218
+ * doesKeyExist({ a: null, b: undefined, c: { d: null } }, "a"); // ➔ true
219
+ * doesKeyExist({ a: null, b: undefined, c: { d: null } }, "b"); // ➔ true
220
+ * doesKeyExist({ a: null, b: undefined, c: { d: null } }, "d"); // ➔ true
221
+ *
222
+ * doesKeyExist({ a: 1 }, true);
223
+ * // ➔ ❌ Throws TypeError
224
+ * doesKeyExist({ a: 1 }, ["not", "valid"]);
225
+ * // ➔ ❌ Throws TypeError
226
+ */
227
227
  declare const doesKeyExist:(object:Record<string,unknown>|unknown[],key:PropertyKey)=>boolean;
228
228
  /** ----------------------------------------------------------
229
- * * ***Predicate: `arrayHasAnyMatch`.***
230
- * ----------------------------------------------------------
231
- * **Checks if at least one element from `targetArray` exists in `sourceArray`.**
232
- * - **Behavior:**
233
- * - Uses `Set` for **faster lookup** compared to `Array.prototype.includes()`.
234
- * - Supports **any data type** (`number`, `string`, `boolean`, `object`, `array`, `function`, etc.).
235
- * - Uses **reference equality** for non-primitive values (object, array, function).
236
- * - Returns `false` if either array is missing, empty, or not an array.
237
- * @template T - The expected type of array elements.
238
- * @param {T[] | null | undefined} sourceArray - The array to search within.
239
- * @param {T[] | null | undefined} targetArray - The array containing elements to match.
240
- * @returns {boolean}
241
- * ***Return:***
242
- * - `true` if **at least one element from `targetArray` is strictly found
243
- * in `sourceArray`**.
244
- * - Comparison uses:
245
- * - **Value equality** for primitives (`number`, `string`, `boolean`, `null`, `undefined`).
246
- * - **Reference equality** for `objects`, `arrays`, and `functions`.
247
- * - `false` if:
248
- * - No matching elements exist,
249
- * - Either array is not provided, not an actual array, or is empty.
250
- * @example
251
- * arrayHasAnyMatch(["apple", "banana", "cherry"], ["banana", "grape"]);
252
- * // ➔ true
253
- * arrayHasAnyMatch(["red", "blue"], ["green", "yellow"]);
254
- * // ➔ false
255
- * arrayHasAnyMatch([1, 2, 3], [3, 4, 5]);
256
- * // ➔ true
257
- * arrayHasAnyMatch([], ["test"]);
258
- * // ➔ false
259
- * arrayHasAnyMatch(["A", "B", "C"], []);
260
- * // ➔ false
261
- *
262
- * const obj = { x: 1 };
263
- * arrayHasAnyMatch([obj], [obj]);
264
- * // ➔ true (same reference)
265
- * arrayHasAnyMatch([{ x: 1 }], [{ x: 1 }]);
266
- * // ➔ false (different reference)
267
- *
268
- * const fn = () => "hello";
269
- * arrayHasAnyMatch([fn], [fn]);
270
- * // ➔ true
271
- * arrayHasAnyMatch([() => "hello"], [() => "hello"]);
272
- * // ➔ false (different function reference)
273
- *
274
- * const arr = [1, 2];
275
- * arrayHasAnyMatch([arr], [arr]);
276
- * // ➔ true
277
- * arrayHasAnyMatch([[1, 2]], [[1, 2]]);
278
- * // ➔ false (different array object)
279
- */
229
+ * * ***Predicate: `arrayHasAnyMatch`.***
230
+ * ----------------------------------------------------------
231
+ * **Checks if at least one element from `targetArray` exists in `sourceArray`.**
232
+ * - **Behavior:**
233
+ * - Uses `Set` for **faster lookup** compared to `Array.prototype.includes()`.
234
+ * - Supports **any data type** (`number`, `string`, `boolean`, `object`, `array`, `function`, etc.).
235
+ * - Uses **reference equality** for non-primitive values (object, array, function).
236
+ * - Returns `false` if either array is missing, empty, or not an array.
237
+ * @template T - The expected type of array elements.
238
+ * @param {T[] | null | undefined} sourceArray - The array to search within.
239
+ * @param {T[] | null | undefined} targetArray - The array containing elements to match.
240
+ * @returns {boolean}
241
+ * ***Return:***
242
+ * - `true` if **at least one element from `targetArray` is strictly found
243
+ * in `sourceArray`**.
244
+ * - Comparison uses:
245
+ * - **Value equality** for primitives (`number`, `string`, `boolean`, `null`, `undefined`).
246
+ * - **Reference equality** for `objects`, `arrays`, and `functions`.
247
+ * - `false` if:
248
+ * - No matching elements exist,
249
+ * - Either array is not provided, not an actual array, or is empty.
250
+ * @example
251
+ * arrayHasAnyMatch(["apple", "banana", "cherry"], ["banana", "grape"]);
252
+ * // ➔ true
253
+ * arrayHasAnyMatch(["red", "blue"], ["green", "yellow"]);
254
+ * // ➔ false
255
+ * arrayHasAnyMatch([1, 2, 3], [3, 4, 5]);
256
+ * // ➔ true
257
+ * arrayHasAnyMatch([], ["test"]);
258
+ * // ➔ false
259
+ * arrayHasAnyMatch(["A", "B", "C"], []);
260
+ * // ➔ false
261
+ *
262
+ * const obj = { x: 1 };
263
+ * arrayHasAnyMatch([obj], [obj]);
264
+ * // ➔ true (same reference)
265
+ * arrayHasAnyMatch([{ x: 1 }], [{ x: 1 }]);
266
+ * // ➔ false (different reference)
267
+ *
268
+ * const fn = () => "hello";
269
+ * arrayHasAnyMatch([fn], [fn]);
270
+ * // ➔ true
271
+ * arrayHasAnyMatch([() => "hello"], [() => "hello"]);
272
+ * // ➔ false (different function reference)
273
+ *
274
+ * const arr = [1, 2];
275
+ * arrayHasAnyMatch([arr], [arr]);
276
+ * // ➔ true
277
+ * arrayHasAnyMatch([[1, 2]], [[1, 2]]);
278
+ * // ➔ false (different array object)
279
+ */
280
280
  declare const arrayHasAnyMatch:<T>(sourceArray:T[]|null|undefined,targetArray:T[]|null|undefined)=>boolean;
281
281
  /** Restrict array indices to a fixed numeric range (1–25). */
282
282
  type ArrayIndex=NumberRangeUnion<1,25>;
@@ -295,212 +295,212 @@ type IsOptionalKey<T,K extends keyof T>=Record<never,never>extends Pick<T,K>?tru
295
295
  /** Returns numeric keys of an object. */
296
296
  type NumericKeyOfHasOwnProp<Obj>=Extract<keyof Obj,number>;
297
297
  /** Generate all nested keys of an object or array in dot/bracket notation.
298
- *
299
- * Example:
300
- * ```ts
301
- * type Keys = NestedKeyOfHasOwnProp<{ users: { name: string }[] }>
302
- * // Keys = "users" | "users.[number]" | "users.[number].name"
303
- * ```
304
- */
298
+ *
299
+ * Example:
300
+ * ```ts
301
+ * type Keys = NestedKeyOfHasOwnProp<{ users: { name: string }[] }>
302
+ * // Keys = "users" | "users.[number]" | "users.[number].name"
303
+ * ```
304
+ */
305
305
  type NestedKeyOfHasOwnProp<T>=T extends readonly(infer U)[]?`[${number}]`|`[${number}].${NestedKeyOfHasOwnProp<U>}`:T extends object?{[K in keyof T &(string|number)]:K extends string|number?NonNullable<T[K]>extends readonly unknown[]?`${K}`|`${K}.[${ArrayIndex}]`|`${K}.[${ArrayIndex}].${NestedKeyOfHasOwnProp<UnwrapArray<T[K]>>}`:NonNullable<T[K]>extends object?`${K}`|`${K}.${NestedKeyOfHasOwnProp<NonNullable<T[K]>>}`:`${K}`:never;}[keyof T &(string|number)]:never;
306
306
  /** Apply discard rules to the last key of a path.
307
- *
308
- * Rules:
309
- * - If discardUndefined=true -> remove `undefined` from value
310
- * - If discardNull=true -> remove `null` from value
311
- *
312
- * Order: first strip undefined (if requested), then strip null (if requested)
313
- */
307
+ *
308
+ * Rules:
309
+ * - If discardUndefined=true -> remove `undefined` from value
310
+ * - If discardNull=true -> remove `null` from value
311
+ *
312
+ * Order: first strip undefined (if requested), then strip null (if requested)
313
+ */
314
314
  type ApplyLastRulesHasOwnProp<V,DiscardU extends boolean,DiscardN extends boolean>=DiscardU extends true?DiscardN extends true?NonNull<NonUndef<V>>:NonUndef<V>:DiscardN extends true?NonNull<V>:V|Extract<V,undefined>;
315
315
  /** Force an array index N to type U. */
316
316
  type RefineArrayAtIndex<T extends readonly unknown[],N extends number,U>=T &{[K in N]:U;};
317
317
  /** Narrow object/array type based on a path string.
318
- *
319
- * @template T - object type to narrow
320
- * @template P - path string like "user.addresses.[2].zip"
321
- * @template DU - discard undefined
322
- * @template DN - discard null
323
- */
318
+ *
319
+ * @template T - object type to narrow
320
+ * @template P - path string like "user.addresses.[2].zip"
321
+ * @template DU - discard undefined
322
+ * @template DN - discard null
323
+ */
324
324
  type NarrowByPathHasOwnProp<T,P extends string,DU extends boolean=true,DN extends boolean=false>=P extends`${infer Head}.${infer Rest}`?Head extends`[${infer N extends number}]`?T extends readonly(infer U)[]?RefineArrayAtIndex<T,N,NarrowByPathHasOwnProp<U,Rest,DU,DN>>:T:Head extends keyof T?Rest extends`[${infer M extends number}]${infer R}`?M extends R?{[K in keyof T]-?:NarrowByPathHasOwnProp<EffectiveDiscardUndefined<DU>extends true?NonUndef<T[K]>:EffectiveDiscardNull<DN>extends true?NonNull<T[K]>:T[K],Rest,DU,DN>;}:EffectiveDiscardUndefined<DU>extends true?{[K in keyof T]-?:K extends Head?Exclude<NarrowByPathHasOwnProp<EffectiveDiscardNull<DN>extends true?Exclude<T[K],null>:EffectiveDiscardUndefined<DU>extends true?Exclude<T[K],undefined>:T[K],Rest,DU,DN>,undefined>:EffectiveDiscardNull<DN>extends true?Exclude<T[K],null>:EffectiveDiscardUndefined<DU>extends true?Exclude<T[K],undefined>:T[K];}:{[K in keyof T]:K extends Head?NarrowByPathHasOwnProp<EffectiveDiscardNull<DN>extends true?Exclude<T[K],null>:EffectiveDiscardUndefined<DU>extends true?Exclude<T[K],undefined>:T[K],Rest,DU,DN>:EffectiveDiscardNull<DN>extends true?Exclude<T[K],null>:EffectiveDiscardUndefined<DU>extends true?Exclude<T[K],undefined>:T[K];}:{[K in keyof T]:K extends Head?NarrowByPathHasOwnProp<NonNullable<T[K]>,Rest,DU,DN>:T[K];}&{[K in Head]-?:NarrowByPathHasOwnProp<NonNullable<T[K]>,Rest,DU,DN>;}:T:P extends`[${infer N extends number}]`?T extends readonly(infer U)[]?RefineArrayAtIndex<T,N,ApplyLastRulesHasOwnProp<NonNullable<U>,DU,DN>>:T:P extends keyof T?DU extends true?{[K in keyof T]:K extends P?ApplyLastRulesHasOwnProp<T[K],DU,DN>:T[K];}&{[K in P]-?:ApplyLastRulesHasOwnProp<T[P],DU,DN>;}:{[K in keyof T]:K extends P?ApplyLastRulesHasOwnProp<T[K],DU,DN>:T[K];}:T;
325
325
  /** Expand an array/string/function into a nested type according to a dot/bracket path. */
326
326
  type SmartDetectStringHasOwnProp<Obj extends string|undefined|null,Key extends string|number>=Obj extends undefined?undefined:Obj extends null?null:IsPositive<ParseNumber<Key>>extends true?Extends<IsStringLiteral<Obj>,true>extends true?CharAt<Exclude<Obj,null|undefined>,ParseNumber<Key>>:string|undefined|null:IsPositive<ParseNumber<Key>>extends true?string|undefined|null:AnyString|undefined|null;type SmartDetectArrayFuncHasOwnProp<Obj extends unknown[]|AnyFunction,Key extends PropertyKey>=Prettify<Obj & DotToNestedSpecialSmartDetect<Key>&{length:number;},{recursive:false;}>;
327
327
  /** Smartly detect nested path keys of an unknown object or function, falls-back to inferred nested structure when path is not valid. */
328
328
  type SmartDetectUnknownKeyHasOwnProp<Obj extends unknown|AnyFunction,Key extends PropertyKey,DiscardUndefined extends boolean=true,DiscardNull extends boolean=false>=Trim<Key>extends""?Obj:Prettify<Obj &(Key extends NestedKeyOfHasOwnProp<Obj>?GuardedHasOwnProp<Obj,Key,DiscardUndefined,DiscardNull>:DotToNestedSpecialSmartDetect<Key>),{recursive:true;}>;
329
329
  /** Convert dot/bracket path string to nested object type with leaf value.
330
- * Path not found in object key → return unknown.
331
- */
330
+ * Path not found in object key → return unknown.
331
+ */
332
332
  type DotToNestedSpecialSmartDetect<Path extends PropertyKey,Value=unknown>=IsEmptyString<Extract<Path,string>>extends true?undefined:Path extends`${infer Head}.${infer Rest}`?Head extends`[${number}]`?DotToNestedSpecialSmartDetect<Rest,Value>[]:{[Key in Head]:DotToNestedSpecialSmartDetect<Rest,Value>;}:Path extends`[${number}]`?Value[]:{[Key in Path]:Value;};
333
333
  /** Guarded wrapper for `NarrowByPathHasOwnProp` with `Prettify`. */
334
334
  type GuardedHasOwnProp<Obj,Key extends NestedKeyOfHasOwnProp<Obj>,DiscardUndefined extends boolean|undefined,DiscardNull extends boolean|undefined>=Prettify<Obj & NarrowByPathHasOwnProp<Obj,Key & string,EffectiveDiscardUndefined<DiscardUndefined>,EffectiveDiscardNull<DiscardNull>>,{recursive:true;}>;
335
335
  /** Make a specific symbol key deeply required in an object symbols.
336
- *
337
- * Used internally to enforce stronger type narrowing.
338
- */
336
+ *
337
+ * Used internally to enforce stronger type narrowing.
338
+ */
339
339
  type DeepRequiredSymbolHasOwnProp<Obj,Sym extends symbol,DU extends boolean=true,DN extends boolean=false>=Prettify<Obj &({[K in keyof Obj & Sym as DU extends true?K:never]-?:DN extends true?NonNull<NonUndef<Obj[K]>>:NonUndef<Obj[K]>;}&{[K in keyof Obj & Sym as DU extends true?never:K]?:DN extends true?NonNull<Obj[K]>:Obj[K];}),{recursive:true;}>;
340
340
  /** Apply discard rules to numeric keys in an object type.
341
- *
342
- * - If `discardUndefined = true` → undefined removed, key required
343
- * - If `discardNull = true` → null removed
344
- */
341
+ *
342
+ * - If `discardUndefined = true` → undefined removed, key required
343
+ * - If `discardNull = true` → null removed
344
+ */
345
345
  type NumericKeyHasOwnPropMapped<Obj extends object,K extends NumericKeyOfHasOwnProp<Obj>,DU extends boolean,DN extends boolean>=Prettify<Obj &(IsOptionalKey<Obj,K>extends true?{[P in K]?:DN extends true?NonNull<Obj[K]>:Obj[K];}&(DU extends true?{[P in K]-?:NonUndef<Obj[K]>;}:Record<never,never>):{[P in K]-?:DN extends true?NonNull<Obj[K]>:Obj[K];}&(DU extends true?{[P in K]-?:NonUndef<Obj[K]>;}:Record<never,never>)),{recursive:true;}>;
346
346
  /** Options to control `hasOwnProp` behavior. */
347
347
  type HasOwnPropOptions<DiscardUndefined extends boolean=true,DiscardNull extends boolean=false>={
348
348
  /** If `true` ***(default)***, properties with `undefined` values are treated as non-existent.
349
- *
350
- * - **Effects:**
351
- * - **Runtime:** `hasOwnProp(obj, key)` returns `false` if the property exists but its value is `undefined`.
352
- * - **TypeScript narrowing:** The property's type is narrowed to exclude `undefined`.
353
- * - **Example:**
354
- * ```ts
355
- * const obj = { a: undefined, b: 123 };
356
- * hasOwnProp(obj, "a"); // ➔ false
357
- * hasOwnProp(obj, "a", { discardUndefined: false }); // ➔ true
358
- * ```
359
- */
349
+ *
350
+ * - **Effects:**
351
+ * - **Runtime:** `hasOwnProp(obj, key)` returns `false` if the property exists but its value is `undefined`.
352
+ * - **TypeScript narrowing:** The property's type is narrowed to exclude `undefined`.
353
+ * - **Example:**
354
+ * ```ts
355
+ * const obj = { a: undefined, b: 123 };
356
+ * hasOwnProp(obj, "a"); // ➔ false
357
+ * hasOwnProp(obj, "a", { discardUndefined: false }); // ➔ true
358
+ * ```
359
+ */
360
360
  discardUndefined?:DiscardUndefined;
361
361
  /** If `true` ***(default: `false`)***, properties with `null` values are treated as non-existent.
362
- *
363
- * - **Effects:**
364
- * - **Runtime:** `hasOwnProp(obj, key)` returns `false` if the property exists but its value is `null`.
365
- * - **TypeScript narrowing:** The property's type is narrowed to exclude `null`.
366
- * - **Example:**
367
- * ```ts
368
- * const obj = { a: null, b: 123 };
369
- * hasOwnProp(obj, "a"); // ➔ true (default discardNull = false)
370
- * hasOwnProp(obj, "a", { discardNull: true }); // ➔ false
371
- * ```
372
- */
362
+ *
363
+ * - **Effects:**
364
+ * - **Runtime:** `hasOwnProp(obj, key)` returns `false` if the property exists but its value is `null`.
365
+ * - **TypeScript narrowing:** The property's type is narrowed to exclude `null`.
366
+ * - **Example:**
367
+ * ```ts
368
+ * const obj = { a: null, b: 123 };
369
+ * hasOwnProp(obj, "a"); // ➔ true (default discardNull = false)
370
+ * hasOwnProp(obj, "a", { discardNull: true }); // ➔ false
371
+ * ```
372
+ */
373
373
  discardNull?:DiscardNull;};
374
374
  /** -------------------------------------------------------
375
- * * ***Utility: `hasOwnProp`.***
376
- * -------------------------------------------------------
377
- * **A **type-safe** replacement for `Object.prototype.hasOwnProperty` with runtime validation and **TypeScript-aware type narrowing**.**
378
- * - #### Supported Targets:
379
- * - **Plain objects** ➔ `{ foo: "bar" }`
380
- * - **Arrays** ➔ `[ { id: 1 }, { id: 2 } ]`
381
- * - **Strings** ➔ `"hello"` (as array-like objects with `.length`, index, etc.)
382
- * - **Functions** ➔ callable objects with extra props
383
- * - **Symbols** ➔ own property symbols
384
- * - #### Key Advantages over `in` or `obj.hasOwnProperty(key)`:
385
- * - Supports **dot/bracket path notation** (e.g. `"user.address.city"`, `"addresses[0].zip"`)
386
- * - Handles **symbol** keys safely
387
- * - **Narrows** the type of `obj` in TypeScript (stronger type safety)
388
- * - Configurable handling of **`undefined`** and **`null`**
389
- * - #### Runtime Behavior:
390
- * - ***✅ Returns `true` if:***
391
- * - `obj` is an object/array/string/function **and**
392
- * - the property exists **and**
393
- * - it passes the `options` checks
394
- * - ***❌ Returns `false` if:***
395
- * - `obj` is not a valid type
396
- * - the property does not exist
397
- * - the value is `undefined` and `discardUndefined: true` (default)
398
- * - the value is `null` and `discardNull: true`
399
- * - the `key` (after trimming) is an **empty string** ➔ treated as **invalid**
400
- * - #### TypeScript Behavior:
401
- * - ***Inside an `if (hasOwnProp(...)) {}` block:***
402
- * - The property is **guaranteed to exist**.
403
- * - Depending on `options`, the property type is narrowed to exclude
404
- * `undefined` and/or `null`.
405
- * - #### ⚠️ Caveats:
406
- * - ***Empty keys are invalid:***
407
- * - If the `key` string is empty (`""`) after trimming whitespace or other characters,
408
- * it will **not** be considered a valid property and always returns `false`.
409
- * - ***Arrays are limited by TypeScript inference:***
410
- * - Checking index `[0]` only narrows **that specific index**, not the rest, example:
411
- * 1. `hasOwnProp(users, "[0].id")` does **not** imply `users[1].id` exists.
412
- * - 👉 For different indices, use **optional chaining** (`users[1]?.id`).
413
- * - ***Autocomplete limitation for array indices:***
414
- * - Autocompletion for `[index]` is only supported up to **25** (`[0]` ➔ `[24]`).
415
- * - This limit is intentional for **performance and safety:**
416
- * 1. Generating infinite union types for all possible indices would cause
417
- * **TypeScript IntelliSense to hang or crash**.
418
- * - ℹ️ You can still check higher indices manually (e.g. `"[999].id"`),
419
- * but they will not show up in IntelliSense suggestions.
420
- * - #### Options
421
- * @param {HasOwnPropOptions} [options] - Optional configuration object.
422
- * @param {HasOwnPropOptions["discardUndefined"]} [options.discardUndefined=true]
423
- * If `true`, properties with `undefined` values are treated as **missing**, default: `true`.
424
- * @param {HasOwnPropOptions["discardNull"]} [options.discardNull=false]
425
- * If `true`, properties with `null` values are treated as **missing**, default: `false`.
426
- * @param {*} obj - The `object`, `array`, `string`, `function`, or `other value` to check against.
427
- * @param {PropertyKey} key
428
- * The property key to check, can be:
429
- * - `string` (supports dot/bracket paths, e.g. `"user.address.city"`, `"[0].id"`)
430
- * - `number` (array-like index)
431
- * - `symbol` (own property symbols)
432
- * @returns {boolean} Return `true` if the property exists (and passes `options`), otherwise `false`.
433
- * @example
434
- *
435
- * - #### ✅ Objects:
436
- * ```ts
437
- * const obj: { name?: string | null } = {};
438
- *
439
- * if (hasOwnProp(obj, "name")) {
440
- * // obj is now ➔ { name: string | null }
441
- * console.log(obj.name); // string | null
442
- * }
443
- *
444
- * if (hasOwnProp(obj, "name", { discardUndefined: true, discardNull: true })) {
445
- * // obj is now ➔ { name: string }
446
- * console.log(obj.name.toUpperCase()); // safe
447
- * }
448
- * ```
449
- * - #### ✅ Arrays:
450
- * ```ts
451
- * const users = [{ id: 1 }, { id: 2 }];
452
- *
453
- * if (hasOwnProp(users, "[1].id")) {
454
- * // ➔ users[1].id is guaranteed to exist
455
- * console.log(users[1].id); // number
456
- * }
457
- *
458
- * // ⚠️ Caveat: narrowing only applies to checked index
459
- * if (hasOwnProp(users, "[0].id")) {
460
- * console.log(users[0].id); // ✅ safe
461
- * console.log(users[1].id); // ❌ not guaranteed!
462
- * }
463
- *
464
- * // 👉 Solution: optional chaining
465
- * console.log(users[1]?.id); // ➔ safe, even without narrowing
466
- * ```
467
- *
468
- * - #### ✅ Symbols:
469
- * ```ts
470
- * const secret = Symbol("secret");
471
- * const obj2 = { [secret]: 42 };
472
- *
473
- * if (hasOwnProp(obj2, secret)) {
474
- * console.log(obj2[secret] + 1); // ➔ 43
475
- * }
476
- * ```
477
- * - #### ✅ Strings:
478
- * ```ts
479
- * if (hasOwnProp("hello", "length")) {
480
- * console.log("hello".length); // ➔ 5
481
- * }
482
- *
483
- * if (hasOwnProp("hello", 1)) {
484
- * console.log("hello"[1]); // ➔ "e"
485
- * }
486
- * ```
487
- * - #### ✅ Functions:
488
- * ```ts
489
- * function fn() {}
490
- * fn.extra = 123;
491
- *
492
- * if (hasOwnProp(fn, "extra")) {
493
- * console.log(fn.extra); // ➔ 123
494
- * }
495
- * ```
496
- * - #### ❌ Empty key:
497
- * ```ts
498
- * const obj = { a: 1 };
499
- *
500
- * hasOwnProp(obj, ""); // ➔ false (invalid key)
501
- * hasOwnProp(obj, " "); // ➔ false (trimmed to empty)
502
- * ```
503
- */
375
+ * * ***Utility: `hasOwnProp`.***
376
+ * -------------------------------------------------------
377
+ * **A **type-safe** replacement for `Object.prototype.hasOwnProperty` with runtime validation and **TypeScript-aware type narrowing**.**
378
+ * - #### Supported Targets:
379
+ * - **Plain objects** ➔ `{ foo: "bar" }`
380
+ * - **Arrays** ➔ `[ { id: 1 }, { id: 2 } ]`
381
+ * - **Strings** ➔ `"hello"` (as array-like objects with `.length`, index, etc.)
382
+ * - **Functions** ➔ callable objects with extra props
383
+ * - **Symbols** ➔ own property symbols
384
+ * - #### Key Advantages over `in` or `obj.hasOwnProperty(key)`:
385
+ * - Supports **dot/bracket path notation** (e.g. `"user.address.city"`, `"addresses[0].zip"`)
386
+ * - Handles **symbol** keys safely
387
+ * - **Narrows** the type of `obj` in TypeScript (stronger type safety)
388
+ * - Configurable handling of **`undefined`** and **`null`**
389
+ * - #### Runtime Behavior:
390
+ * - ***✅ Returns `true` if:***
391
+ * - `obj` is an object/array/string/function **and**
392
+ * - the property exists **and**
393
+ * - it passes the `options` checks
394
+ * - ***❌ Returns `false` if:***
395
+ * - `obj` is not a valid type
396
+ * - the property does not exist
397
+ * - the value is `undefined` and `discardUndefined: true` (default)
398
+ * - the value is `null` and `discardNull: true`
399
+ * - the `key` (after trimming) is an **empty string** ➔ treated as **invalid**
400
+ * - #### TypeScript Behavior:
401
+ * - ***Inside an `if (hasOwnProp(...)) {}` block:***
402
+ * - The property is **guaranteed to exist**.
403
+ * - Depending on `options`, the property type is narrowed to exclude
404
+ * `undefined` and/or `null`.
405
+ * - #### ⚠️ Caveats:
406
+ * - ***Empty keys are invalid:***
407
+ * - If the `key` string is empty (`""`) after trimming whitespace or other characters,
408
+ * it will **not** be considered a valid property and always returns `false`.
409
+ * - ***Arrays are limited by TypeScript inference:***
410
+ * - Checking index `[0]` only narrows **that specific index**, not the rest, example:
411
+ * 1. `hasOwnProp(users, "[0].id")` does **not** imply `users[1].id` exists.
412
+ * - 👉 For different indices, use **optional chaining** (`users[1]?.id`).
413
+ * - ***Autocomplete limitation for array indices:***
414
+ * - Autocompletion for `[index]` is only supported up to **25** (`[0]` ➔ `[24]`).
415
+ * - This limit is intentional for **performance and safety:**
416
+ * 1. Generating infinite union types for all possible indices would cause
417
+ * **TypeScript IntelliSense to hang or crash**.
418
+ * - ℹ️ You can still check higher indices manually (e.g. `"[999].id"`),
419
+ * but they will not show up in IntelliSense suggestions.
420
+ * - #### Options
421
+ * @param {HasOwnPropOptions} [options] - Optional configuration object.
422
+ * @param {HasOwnPropOptions["discardUndefined"]} [options.discardUndefined=true]
423
+ * If `true`, properties with `undefined` values are treated as **missing**, default: `true`.
424
+ * @param {HasOwnPropOptions["discardNull"]} [options.discardNull=false]
425
+ * If `true`, properties with `null` values are treated as **missing**, default: `false`.
426
+ * @param {*} obj - The `object`, `array`, `string`, `function`, or `other value` to check against.
427
+ * @param {PropertyKey} key
428
+ * The property key to check, can be:
429
+ * - `string` (supports dot/bracket paths, e.g. `"user.address.city"`, `"[0].id"`)
430
+ * - `number` (array-like index)
431
+ * - `symbol` (own property symbols)
432
+ * @returns {boolean} Return `true` if the property exists (and passes `options`), otherwise `false`.
433
+ * @example
434
+ *
435
+ * - #### ✅ Objects:
436
+ * ```ts
437
+ * const obj: { name?: string | null } = {};
438
+ *
439
+ * if (hasOwnProp(obj, "name")) {
440
+ * // obj is now ➔ { name: string | null }
441
+ * console.log(obj.name); // string | null
442
+ * }
443
+ *
444
+ * if (hasOwnProp(obj, "name", { discardUndefined: true, discardNull: true })) {
445
+ * // obj is now ➔ { name: string }
446
+ * console.log(obj.name.toUpperCase()); // safe
447
+ * }
448
+ * ```
449
+ * - #### ✅ Arrays:
450
+ * ```ts
451
+ * const users = [{ id: 1 }, { id: 2 }];
452
+ *
453
+ * if (hasOwnProp(users, "[1].id")) {
454
+ * // ➔ users[1].id is guaranteed to exist
455
+ * console.log(users[1].id); // number
456
+ * }
457
+ *
458
+ * // ⚠️ Caveat: narrowing only applies to checked index
459
+ * if (hasOwnProp(users, "[0].id")) {
460
+ * console.log(users[0].id); // ✅ safe
461
+ * console.log(users[1].id); // ❌ not guaranteed!
462
+ * }
463
+ *
464
+ * // 👉 Solution: optional chaining
465
+ * console.log(users[1]?.id); // ➔ safe, even without narrowing
466
+ * ```
467
+ *
468
+ * - #### ✅ Symbols:
469
+ * ```ts
470
+ * const secret = Symbol("secret");
471
+ * const obj2 = { [secret]: 42 };
472
+ *
473
+ * if (hasOwnProp(obj2, secret)) {
474
+ * console.log(obj2[secret] + 1); // ➔ 43
475
+ * }
476
+ * ```
477
+ * - #### ✅ Strings:
478
+ * ```ts
479
+ * if (hasOwnProp("hello", "length")) {
480
+ * console.log("hello".length); // ➔ 5
481
+ * }
482
+ *
483
+ * if (hasOwnProp("hello", 1)) {
484
+ * console.log("hello"[1]); // ➔ "e"
485
+ * }
486
+ * ```
487
+ * - #### ✅ Functions:
488
+ * ```ts
489
+ * function fn() {}
490
+ * fn.extra = 123;
491
+ *
492
+ * if (hasOwnProp(fn, "extra")) {
493
+ * console.log(fn.extra); // ➔ 123
494
+ * }
495
+ * ```
496
+ * - #### ❌ Empty key:
497
+ * ```ts
498
+ * const obj = { a: 1 };
499
+ *
500
+ * hasOwnProp(obj, ""); // ➔ false (invalid key)
501
+ * hasOwnProp(obj, " "); // ➔ false (trimmed to empty)
502
+ * ```
503
+ */
504
504
  declare function hasOwnProp<Obj>(obj:IsAny<Obj>extends true?Obj:never,key:PropertyKey,options?:HasOwnPropOptions<boolean,boolean>
505
505
  /** @ts-expect-error we force `any` to `unknown` at result */
506
506
  ):obj is unknown;declare function hasOwnProp<Obj extends null|undefined>(obj:Obj,key:PropertyKey,options?:HasOwnPropOptions<boolean,boolean>):false;declare function hasOwnProp<Obj extends object|AnyFunction,Key extends NestedKeyOfHasOwnProp<Obj>,DiscardUndefined extends boolean=true,DiscardNull extends boolean=false>(obj:Obj|null|undefined,key:Key,options?:HasOwnPropOptions<DiscardUndefined,DiscardNull>
@@ -515,1351 +515,1351 @@ declare function hasOwnProp<Obj>(obj:IsAny<Obj>extends true?Obj:never,key:Proper
515
515
  /** @ts-expect-error we force to override recursive type result */
516
516
  ):obj is SmartDetectUnknownKeyHasOwnProp<Obj,Key,DiscardUndefined,DiscardNull>;
517
517
  /** -------------------
518
- * * ***Type guard: `isArguments`.***
519
- * -------------------
520
- * **Checks if `value` is likely an `arguments` object.**
521
- * @param {*} value The value to check.
522
- * @returns {boolean} Returns `true` if `value` is an ***[`IArguments`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments)*** object, else `false`.
523
- * @example
524
- * isArguments(function() { return arguments; }());
525
- * // ➔ true
526
- * isArguments([1, 2, 3]);
527
- * // ➔ false
528
- */
518
+ * * ***Type guard: `isArguments`.***
519
+ * -------------------
520
+ * **Checks if `value` is likely an `arguments` object.**
521
+ * @param {*} value The value to check.
522
+ * @returns {boolean} Returns `true` if `value` is an ***[`IArguments`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments)*** object, else `false`.
523
+ * @example
524
+ * isArguments(function() { return arguments; }());
525
+ * // ➔ true
526
+ * isArguments([1, 2, 3]);
527
+ * // ➔ false
528
+ */
529
529
  declare const isArguments:(value:unknown)=>value is IArguments;
530
530
  /** @deprecated bugs */
531
531
  type IsArrayResult<T>=IsUnknown<T>extends true?unknown[] & T:IsNever<T>extends true?[]:IsReadonlyArray<T>extends true?T:IsArray<T>extends true?T:unknown[];
532
532
  /** ----------------------------------------------------------
533
- * * ***Type guard: `isArray`.***
534
- * ----------------------------------------------------------
535
- ***Checks if a value is an ***[`Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)***.**
536
- * - **Behavior:**
537
- * - Uses ***[`Array.isArray`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray)*** for reliable and safe type checking.
538
- * - Supports TypeScript **type narrowing** using `value is T[]`.
539
- * - Handles edge cases like `null`, `undefined`, and non-array objects.
540
- * @template T - The expected type of array elements.
541
- * @param {*} value - The value to check.
542
- * @returns {boolean} Returns `true` if the value is an `array`, otherwise `false`.
543
- * @example
544
- * isArray([1, 2, 3]);
545
- * // ➔ true
546
- * isArray([]);
547
- * // ➔ true
548
- * isArray("hello");
549
- * // ➔ false
550
- * isArray({ key: "value" });
551
- * // ➔ false
552
- * isArray(null);
553
- * // ➔ false
554
- * isArray(undefined);
555
- * // ➔ false
556
- */
533
+ * * ***Type guard: `isArray`.***
534
+ * ----------------------------------------------------------
535
+ ***Checks if a value is an ***[`Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)***.**
536
+ * - **Behavior:**
537
+ * - Uses ***[`Array.isArray`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray)*** for reliable and safe type checking.
538
+ * - Supports TypeScript **type narrowing** using `value is T[]`.
539
+ * - Handles edge cases like `null`, `undefined`, and non-array objects.
540
+ * @template T - The expected type of array elements.
541
+ * @param {*} value - The value to check.
542
+ * @returns {boolean} Returns `true` if the value is an `array`, otherwise `false`.
543
+ * @example
544
+ * isArray([1, 2, 3]);
545
+ * // ➔ true
546
+ * isArray([]);
547
+ * // ➔ true
548
+ * isArray("hello");
549
+ * // ➔ false
550
+ * isArray({ key: "value" });
551
+ * // ➔ false
552
+ * isArray(null);
553
+ * // ➔ false
554
+ * isArray(undefined);
555
+ * // ➔ false
556
+ */
557
557
  declare function isArray<T extends unknown[]>(value:T):value is Extract<T,unknown[]>;declare function isArray<T extends readonly unknown[]>(value:T):value is Extract<T,readonly unknown[]>;declare function isArray(value:unknown):value is unknown[];
558
558
  /** ----------------------------------------------------
559
- * * ***Type guard: `isArrayBuffer`.***
560
- * ----------------------------------------------------
561
- * **Checks if `value` is classified as an `ArrayBuffer` object.**
562
- * @param {*} value The value to check.
563
- * @returns {boolean} Returns `true` if `value` is instance of ***[`ArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer)***, else `false`.
564
- * @example
565
- * isArrayBuffer(new ArrayBuffer(2));
566
- * // ➔ true
567
- * isArrayBuffer(new Array(2));
568
- * // ➔ false
569
- */
559
+ * * ***Type guard: `isArrayBuffer`.***
560
+ * ----------------------------------------------------
561
+ * **Checks if `value` is classified as an `ArrayBuffer` object.**
562
+ * @param {*} value The value to check.
563
+ * @returns {boolean} Returns `true` if `value` is instance of ***[`ArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer)***, else `false`.
564
+ * @example
565
+ * isArrayBuffer(new ArrayBuffer(2));
566
+ * // ➔ true
567
+ * isArrayBuffer(new Array(2));
568
+ * // ➔ false
569
+ */
570
570
  declare function isArrayBuffer(value:unknown):value is ArrayBuffer;
571
571
  /** ----------------------------------------------------
572
- * * ***Type guard: `isArrayLike`.***
573
- * ----------------------------------------------------
574
- * **Checks if `value` is array-like, a value is considered array-like if it's
575
- * not a function and has a `value.length` that's an integer greater than or
576
- * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.**
577
- * @template T - The type of the value being checked.
578
- * @param {*} value The value to check.
579
- * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
580
- * @example
581
- * isArrayLike([1, 2, 3]);
582
- * // ➔ true
583
- * isArrayLike(document.body.children);
584
- * // ➔ true
585
- * isArrayLike(noop);
586
- * // ➔ false
587
- * isArrayLike('abc');
588
- * // ➔ false
589
- */
572
+ * * ***Type guard: `isArrayLike`.***
573
+ * ----------------------------------------------------
574
+ * **Checks if `value` is array-like, a value is considered array-like if it's
575
+ * not a function and has a `value.length` that's an integer greater than or
576
+ * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.**
577
+ * @template T - The type of the value being checked.
578
+ * @param {*} value The value to check.
579
+ * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
580
+ * @example
581
+ * isArrayLike([1, 2, 3]);
582
+ * // ➔ true
583
+ * isArrayLike(document.body.children);
584
+ * // ➔ true
585
+ * isArrayLike(noop);
586
+ * // ➔ false
587
+ * isArrayLike('abc');
588
+ * // ➔ false
589
+ */
590
590
  declare function isArrayLike<T extends{__anyHack:unknown;}>(value:T):boolean;declare function isArrayLike(value:AnyFunction|null|undefined):value is never;declare function isArrayLike(value:unknown):value is{length:number;};
591
591
  /** ----------------------------------------------------
592
- * * ***Type guard: `isArrayLikeObject`.***
593
- * ----------------------------------------------------
594
- * **This method is like ***{@link isArrayLike | `isArrayLike`}*** except that
595
- * it also checks if `value` is an object.**
596
- * @template T - The type of the value being checked.
597
- * @param {*} value The value to check.
598
- * @returns {boolean} Returns `true` if `value` is `array-like object`, else `false`.
599
- * @example
600
- * isArrayLikeObject([1, 2, 3]);
601
- * // ➔ true
602
- * isArrayLikeObject(document.body.children);
603
- * // ➔ true
604
- * isArrayLikeObject('abc');
605
- * // ➔ false
606
- * isArrayLikeObject(noop);
607
- * // ➔ false
608
- */
592
+ * * ***Type guard: `isArrayLikeObject`.***
593
+ * ----------------------------------------------------
594
+ * **This method is like ***{@link isArrayLike | `isArrayLike`}*** except that
595
+ * it also checks if `value` is an object.**
596
+ * @template T - The type of the value being checked.
597
+ * @param {*} value The value to check.
598
+ * @returns {boolean} Returns `true` if `value` is `array-like object`, else `false`.
599
+ * @example
600
+ * isArrayLikeObject([1, 2, 3]);
601
+ * // ➔ true
602
+ * isArrayLikeObject(document.body.children);
603
+ * // ➔ true
604
+ * isArrayLikeObject('abc');
605
+ * // ➔ false
606
+ * isArrayLikeObject(noop);
607
+ * // ➔ false
608
+ */
609
609
  declare function isArrayLikeObject<T extends{__anyHack:unknown;}>(value:T):boolean;declare function isArrayLikeObject(value:AnyFunction|string|boolean|number|null|undefined):value is never;declare function isArrayLikeObject(value:unknown):value is object &{length:number;};
610
610
  /** ----------------------------------------------------------
611
- * * ***Type guard: `isBigInt`.***
612
- * ----------------------------------------------------------
613
- * **Checks if a value is of type bigint.**
614
- * - **Behavior:**
615
- * - Uses `typeof value === "bigint"` for strict type checking.
616
- * - Supports TypeScript type narrowing with `value is bigint`.
617
- * - Returns `false` for `BigInt` object (object-wrapped), e.g:
618
- * - `Object(BigInt(123))`.
619
- * @param {*} value - The value to check.
620
- * @returns {boolean} Return `true` if value is a primitive **[`BigInt`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt)**.
621
- * @example
622
- * isBigInt(123n);
623
- * // ➔ true
624
- * isBigInt(BigInt(123));
625
- * // ➔ true
626
- * isBigInt("123");
627
- * // ➔ false
628
- * isBigInt(Object(BigInt(1)));
629
- * // ➔ false
630
- */
611
+ * * ***Type guard: `isBigInt`.***
612
+ * ----------------------------------------------------------
613
+ * **Checks if a value is of type bigint.**
614
+ * - **Behavior:**
615
+ * - Uses `typeof value === "bigint"` for strict type checking.
616
+ * - Supports TypeScript type narrowing with `value is bigint`.
617
+ * - Returns `false` for `BigInt` object (object-wrapped), e.g:
618
+ * - `Object(BigInt(123))`.
619
+ * @param {*} value - The value to check.
620
+ * @returns {boolean} Return `true` if value is a primitive **[`BigInt`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt)**.
621
+ * @example
622
+ * isBigInt(123n);
623
+ * // ➔ true
624
+ * isBigInt(BigInt(123));
625
+ * // ➔ true
626
+ * isBigInt("123");
627
+ * // ➔ false
628
+ * isBigInt(Object(BigInt(1)));
629
+ * // ➔ false
630
+ */
631
631
  declare const isBigInt:(value:unknown)=>value is bigint;
632
632
  /** ----------------------------------------------------------
633
- * * ***Type guard: `isBoolean`.***
634
- * ----------------------------------------------------------
635
- * **Checks if a value is of type boolean.**
636
- * @param {*} value - The value to check.
637
- * @returns {boolean} Returns `true` if the value is a **[`boolean`](https://developer.mozilla.org/en-US/docs/Glossary/Boolean/JavaScript)**, otherwise `false`.
638
- * @example
639
- * isBoolean(true); // ➔ true
640
- * isBoolean(false); // ➔ true
641
- * isBoolean("true"); // ➔ false
642
- */
633
+ * * ***Type guard: `isBoolean`.***
634
+ * ----------------------------------------------------------
635
+ * **Checks if a value is of type boolean.**
636
+ * @param {*} value - The value to check.
637
+ * @returns {boolean} Returns `true` if the value is a **[`boolean`](https://developer.mozilla.org/en-US/docs/Glossary/Boolean/JavaScript)**, otherwise `false`.
638
+ * @example
639
+ * isBoolean(true); // ➔ true
640
+ * isBoolean(false); // ➔ true
641
+ * isBoolean("true"); // ➔ false
642
+ */
643
643
  declare const isBoolean:(value:unknown)=>value is boolean;
644
644
  /** ----------------------------------------------------
645
- * * ***Type guard: `isBuffer`.***
646
- * ----------------------------------------------------------
647
- * **Checks if a value is a **Node.js Buffer** instance.**
648
- * @param {*} value The value to check.
649
- * @returns {boolean} Returns `true` if `value` is a ***{@link Buffer | `Buffer`}***, else `false`.
650
- * @example
651
- * isBuffer(new Buffer(2));
652
- * // ➔ true
653
- * isBuffer(Buffer.alloc(10));
654
- * // ➔ true
655
- * isBuffer(Buffer.from('foo'));
656
- * // ➔ true
657
- * isBuffer([]);
658
- * // ➔ false
659
- * isBuffer('a string');
660
- * // ➔ false
661
- * isBuffer(new Uint8Array(1024));
662
- * // ➔ false
663
- */
645
+ * * ***Type guard: `isBuffer`.***
646
+ * ----------------------------------------------------------
647
+ * **Checks if a value is a **Node.js Buffer** instance.**
648
+ * @param {*} value The value to check.
649
+ * @returns {boolean} Returns `true` if `value` is a ***{@link Buffer | `Buffer`}***, else `false`.
650
+ * @example
651
+ * isBuffer(new Buffer(2));
652
+ * // ➔ true
653
+ * isBuffer(Buffer.alloc(10));
654
+ * // ➔ true
655
+ * isBuffer(Buffer.from('foo'));
656
+ * // ➔ true
657
+ * isBuffer([]);
658
+ * // ➔ false
659
+ * isBuffer('a string');
660
+ * // ➔ false
661
+ * isBuffer(new Uint8Array(1024));
662
+ * // ➔ false
663
+ */
664
664
  declare const isBuffer:(value:unknown)=>value is Buffer;
665
665
  /** -----------------------------------------------------------
666
- * * ***Checks whether a value looks like a currency or number string.***
667
- * -----------------------------------------------------------
668
- * **Determines if the given `input` can be interpreted as a currency-like number,
669
- * using the same **multi-locale parsing logic** as ***{@link parseCurrencyString | `parseCurrencyString`}***.**
670
- * - **Highlights:**
671
- * - Supports strings or numbers like:
672
- * - `"15.000,10"` ***(European)***.
673
- * - `"15,000.10"` ***(US)***.
674
- * - `"15'000.10"` ***(Swiss)***.
675
- * - `"15 000,10"` ***(French)***.
676
- * - `"Rp 15.000,10"` or `"$15,000.10"`.
677
- * - Also accepts simple numbers (`15300.95`).
678
- * - **ℹ️ Note:**
679
- * - Uses the same core logic as
680
- * ***{@link parseCurrencyString | `parseCurrencyString`}*** but
681
- * just checks if a final parsed float is sensible.
682
- * @param {*} input - The input value to check.
683
- * @returns {boolean} Return `true` if it can be reasonably parsed into a currency-like number, `false` otherwise.
684
- * @example
685
- * isCurrencyLike(15300.95);
686
- * // ➔ true
687
- * isCurrencyLike("$15,000.10");
688
- * // ➔ true
689
- * isCurrencyLike("(15'000.10)");
690
- * // ➔ true
691
- * isCurrencyLike("Rp 15.000,10");
692
- * // ➔ true
693
- * isCurrencyLike("");
694
- * // ➔ false
695
- * isCurrencyLike("abc");
696
- * // ➔ false
697
- */
666
+ * * ***Checks whether a value looks like a currency or number string.***
667
+ * -----------------------------------------------------------
668
+ * **Determines if the given `input` can be interpreted as a currency-like number,
669
+ * using the same **multi-locale parsing logic** as ***{@link parseCurrencyString | `parseCurrencyString`}***.**
670
+ * - **Highlights:**
671
+ * - Supports strings or numbers like:
672
+ * - `"15.000,10"` ***(European)***.
673
+ * - `"15,000.10"` ***(US)***.
674
+ * - `"15'000.10"` ***(Swiss)***.
675
+ * - `"15 000,10"` ***(French)***.
676
+ * - `"Rp 15.000,10"` or `"$15,000.10"`.
677
+ * - Also accepts simple numbers (`15300.95`).
678
+ * - **ℹ️ Note:**
679
+ * - Uses the same core logic as
680
+ * ***{@link parseCurrencyString | `parseCurrencyString`}*** but
681
+ * just checks if a final parsed float is sensible.
682
+ * @param {*} input - The input value to check.
683
+ * @returns {boolean} Return `true` if it can be reasonably parsed into a currency-like number, `false` otherwise.
684
+ * @example
685
+ * isCurrencyLike(15300.95);
686
+ * // ➔ true
687
+ * isCurrencyLike("$15,000.10");
688
+ * // ➔ true
689
+ * isCurrencyLike("(15'000.10)");
690
+ * // ➔ true
691
+ * isCurrencyLike("Rp 15.000,10");
692
+ * // ➔ true
693
+ * isCurrencyLike("");
694
+ * // ➔ false
695
+ * isCurrencyLike("abc");
696
+ * // ➔ false
697
+ */
698
698
  declare const isCurrencyLike:(input:unknown)=>boolean;
699
699
  /** ----------------------------------------------------------
700
- * * ***Type guard: `isDate`.***
701
- * ----------------------------------------------------------
702
- * **Determines whether the given `value` is a real, valid JavaScript
703
- * **[`Date`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date)** object.**
704
- * - **Behavior:**
705
- * - Checks if value is an instance of `Date`.
706
- * - Ensures the `date` is valid (`!isNaN(date.getTime())`).
707
- * - Returns `false` for `strings` or `invalid date objects`.
708
- * @param {*} value - The value to check.
709
- * @returns {boolean} Return `true` if value is a valid Date object.
710
- * @example
711
- * isDate(new Date());
712
- * // ➔ true
713
- * isDate(new Date("invalid"));
714
- * // ➔ false
715
- * isDate("2024-01-01");
716
- * // ➔ false
717
- */
700
+ * * ***Type guard: `isDate`.***
701
+ * ----------------------------------------------------------
702
+ * **Determines whether the given `value` is a real, valid JavaScript
703
+ * **[`Date`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date)** object.**
704
+ * - **Behavior:**
705
+ * - Checks if value is an instance of `Date`.
706
+ * - Ensures the `date` is valid (`!isNaN(date.getTime())`).
707
+ * - Returns `false` for `strings` or `invalid date objects`.
708
+ * @param {*} value - The value to check.
709
+ * @returns {boolean} Return `true` if value is a valid Date object.
710
+ * @example
711
+ * isDate(new Date());
712
+ * // ➔ true
713
+ * isDate(new Date("invalid"));
714
+ * // ➔ false
715
+ * isDate("2024-01-01");
716
+ * // ➔ false
717
+ */
718
718
  declare const isDate:(value:unknown)=>value is Date;
719
719
  /** ----------------------------------------------------------
720
- * * ***Predicate: `isDeepEqual`.***
721
- * ----------------------------------------------------------
722
- * **Performs a deep equality check between two values.**
723
- * - **Behavior:**
724
- * - Compares nested `arrays`, `objects`, `Dates`, `RegExp`, `NaN`, `Symbols`,
725
- * `Set`, and `Map`.
726
- * - Handles special cases:
727
- * - `NaN` is considered equal to `NaN`.
728
- * - `Date` objects are equal if `.getTime()` is equal.
729
- * - `RegExp` objects are equal if `.toString()` is equal.
730
- * - `Symbol("x")` and `Symbol("x")` are treated equal if
731
- * `.toString()` matches.
732
- * - `Set` and `Map` are deeply compared by content (order-insensitive).
733
- * - **ℹ️ Note:**
734
- * - Does not support circular references.
735
- * @param {*} a - First value to compare.
736
- * @param {*} b - Second value to compare.
737
- * @returns {boolean} `true` if both values are deeply equal, otherwise `false`.
738
- * @example
739
- * // ✅ Primitives
740
- * isDeepEqual(1, 1);
741
- * // ➔ true
742
- * isDeepEqual(NaN, NaN);
743
- * // ➔ true
744
- * isDeepEqual("hello", "world");
745
- * // ➔ false
746
- *
747
- * // ✅ Objects
748
- * isDeepEqual({ x: 1 }, { x: 1 });
749
- * // ➔ true
750
- * isDeepEqual({ x: 1 }, { y: 1 });
751
- * // ➔ false
752
- *
753
- * // ✅ Arrays
754
- * isDeepEqual([1, 2], [1, 2]);
755
- * // ➔ true
756
- * isDeepEqual([1, 2], [2, 1]);
757
- * // ➔ false
758
- *
759
- * // ✅ Dates
760
- * isDeepEqual(new Date(123), new Date(123));
761
- * // ➔ true
762
- *
763
- * // ✅ Sets
764
- * isDeepEqual(new Set([1, 2]), new Set([2, 1]));
765
- * // ➔ true
766
- *
767
- * // ✅ Maps
768
- * isDeepEqual(new Map([["a", 1]]), new Map([["a", 1]]));
769
- * // ➔ true
770
- *
771
- * // ❌ Different types
772
- * isDeepEqual(1, "1");
773
- * // ➔ false
774
- */
720
+ * * ***Predicate: `isDeepEqual`.***
721
+ * ----------------------------------------------------------
722
+ * **Performs a deep equality check between two values.**
723
+ * - **Behavior:**
724
+ * - Compares nested `arrays`, `objects`, `Dates`, `RegExp`, `NaN`, `Symbols`,
725
+ * `Set`, and `Map`.
726
+ * - Handles special cases:
727
+ * - `NaN` is considered equal to `NaN`.
728
+ * - `Date` objects are equal if `.getTime()` is equal.
729
+ * - `RegExp` objects are equal if `.toString()` is equal.
730
+ * - `Symbol("x")` and `Symbol("x")` are treated equal if
731
+ * `.toString()` matches.
732
+ * - `Set` and `Map` are deeply compared by content (order-insensitive).
733
+ * - **ℹ️ Note:**
734
+ * - Does not support circular references.
735
+ * @param {*} a - First value to compare.
736
+ * @param {*} b - Second value to compare.
737
+ * @returns {boolean} `true` if both values are deeply equal, otherwise `false`.
738
+ * @example
739
+ * // ✅ Primitives
740
+ * isDeepEqual(1, 1);
741
+ * // ➔ true
742
+ * isDeepEqual(NaN, NaN);
743
+ * // ➔ true
744
+ * isDeepEqual("hello", "world");
745
+ * // ➔ false
746
+ *
747
+ * // ✅ Objects
748
+ * isDeepEqual({ x: 1 }, { x: 1 });
749
+ * // ➔ true
750
+ * isDeepEqual({ x: 1 }, { y: 1 });
751
+ * // ➔ false
752
+ *
753
+ * // ✅ Arrays
754
+ * isDeepEqual([1, 2], [1, 2]);
755
+ * // ➔ true
756
+ * isDeepEqual([1, 2], [2, 1]);
757
+ * // ➔ false
758
+ *
759
+ * // ✅ Dates
760
+ * isDeepEqual(new Date(123), new Date(123));
761
+ * // ➔ true
762
+ *
763
+ * // ✅ Sets
764
+ * isDeepEqual(new Set([1, 2]), new Set([2, 1]));
765
+ * // ➔ true
766
+ *
767
+ * // ✅ Maps
768
+ * isDeepEqual(new Map([["a", 1]]), new Map([["a", 1]]));
769
+ * // ➔ true
770
+ *
771
+ * // ❌ Different types
772
+ * isDeepEqual(1, "1");
773
+ * // ➔ false
774
+ */
775
775
  declare const isDeepEqual:(a:unknown,b:unknown)=>boolean;
776
776
  /** ----------------------------------------------------
777
- * * ***Type guard: `isElement`.***
778
- * ----------------------------------------------------------
779
- * **Checks if `value` is likely a
780
- * **[`DOM Element`](https://developer.mozilla.org/en-US/docs/Web/API/Element)**.**
781
- * @template T - The type of the value being checked.
782
- * @param {*} value The value to check.
783
- * @returns {boolean} Returns `true` if `value` is extends instance of **[`Element`](https://developer.mozilla.org/en-US/docs/Web/API/Element)**, else `false`.
784
- * @example
785
- * isElement(document.body);
786
- * // ➔ true
787
- * isElement(document.createElement("div"));
788
- * // ➔ true
789
- * isElement('<body>');
790
- * // ➔ false
791
- * isElement(document);
792
- * // ➔ false
793
- * isElement({ tagName: "DIV" });
794
- * // ➔ false
795
- */
777
+ * * ***Type guard: `isElement`.***
778
+ * ----------------------------------------------------------
779
+ * **Checks if `value` is likely a
780
+ * **[`DOM Element`](https://developer.mozilla.org/en-US/docs/Web/API/Element)**.**
781
+ * @template T - The type of the value being checked.
782
+ * @param {*} value The value to check.
783
+ * @returns {boolean} Returns `true` if `value` is extends instance of **[`Element`](https://developer.mozilla.org/en-US/docs/Web/API/Element)**, else `false`.
784
+ * @example
785
+ * isElement(document.body);
786
+ * // ➔ true
787
+ * isElement(document.createElement("div"));
788
+ * // ➔ true
789
+ * isElement('<body>');
790
+ * // ➔ false
791
+ * isElement(document);
792
+ * // ➔ false
793
+ * isElement({ tagName: "DIV" });
794
+ * // ➔ false
795
+ */
796
796
  declare function isElement(value:[]):value is [];declare function isElement<T extends Element>(value:T):value is T;declare function isElement(value:unknown):value is Element;
797
797
  /** ----------------------------------------------------
798
- * * ***Utility: `isEmpty`.***
799
- * ----------------------------------------------------------
800
- * **Checks if `value` is an empty object, collection, map, or set.**
801
- * - **Behavior:**
802
- * - **Objects** are empty if they have no own enumerable string keyed properties.
803
- * - **Array-like values** (arrays, strings, `arguments`, typed arrays, buffers)
804
- * are empty if their `length` is `0`.
805
- * - **Maps** and **Sets** are empty if their `size` is `0`.
806
- * - **Booleans**, **numbers** (including `NaN`), **symbols**, and `null`/
807
- * `undefined` are treated as empty.
808
- * - **Functions** are considered empty if they have no own enumerable keys.
809
- * - **ℹ️ Note:**
810
- * - For more `Strict`, you can use
811
- * **{@link isEmptyValue | `isEmptyValue`}** instead.
812
- * @template T - The type of the value being checked.
813
- * @param {*} value The value to check.
814
- * @returns {boolean} Returns `true` if `value` is empty, else `false`.
815
- * @example
816
- * isEmpty(null);
817
- * // ➔ true
818
- * isEmpty(true);
819
- * // ➔ true
820
- * isEmpty(false);
821
- * // ➔ true
822
- * isEmpty(1);
823
- * // ➔ true
824
- * isEmpty(0);
825
- * // ➔ true
826
- * isEmpty(Symbol("x"));
827
- * // ➔ true
828
- * isEmpty(() => {});
829
- * // ➔ true
830
- * isEmpty("");
831
- * // ➔ true
832
- * isEmpty(" ");
833
- * // ➔ false
834
- * isEmpty([1, 2, 3]);
835
- * // ➔ false
836
- * isEmpty({ 'a': 1 });
837
- * // ➔ false
838
- */
798
+ * * ***Utility: `isEmpty`.***
799
+ * ----------------------------------------------------------
800
+ * **Checks if `value` is an empty object, collection, map, or set.**
801
+ * - **Behavior:**
802
+ * - **Objects** are empty if they have no own enumerable string keyed properties.
803
+ * - **Array-like values** (arrays, strings, `arguments`, typed arrays, buffers)
804
+ * are empty if their `length` is `0`.
805
+ * - **Maps** and **Sets** are empty if their `size` is `0`.
806
+ * - **Booleans**, **numbers** (including `NaN`), **symbols**, and `null`/
807
+ * `undefined` are treated as empty.
808
+ * - **Functions** are considered empty if they have no own enumerable keys.
809
+ * - **ℹ️ Note:**
810
+ * - For more `Strict`, you can use
811
+ * **{@link isEmptyValue | `isEmptyValue`}** instead.
812
+ * @template T - The type of the value being checked.
813
+ * @param {*} value The value to check.
814
+ * @returns {boolean} Returns `true` if `value` is empty, else `false`.
815
+ * @example
816
+ * isEmpty(null);
817
+ * // ➔ true
818
+ * isEmpty(true);
819
+ * // ➔ true
820
+ * isEmpty(false);
821
+ * // ➔ true
822
+ * isEmpty(1);
823
+ * // ➔ true
824
+ * isEmpty(0);
825
+ * // ➔ true
826
+ * isEmpty(Symbol("x"));
827
+ * // ➔ true
828
+ * isEmpty(() => {});
829
+ * // ➔ true
830
+ * isEmpty("");
831
+ * // ➔ true
832
+ * isEmpty(" ");
833
+ * // ➔ false
834
+ * isEmpty([1, 2, 3]);
835
+ * // ➔ false
836
+ * isEmpty({ 'a': 1 });
837
+ * // ➔ false
838
+ */
839
839
  declare function isEmpty<T extends{__trapAny:any;}>(value?:T):boolean;declare function isEmpty(value:string):value is"";declare function isEmpty(value:Map<any,any>|Set<any>|List<any>|null|undefined):boolean;declare function isEmpty(value:object):boolean;declare function isEmpty<T extends object>(value:T|null|undefined):value is EmptyObjectOf<T>|null|undefined;declare function isEmpty(value:any):boolean;
840
840
  /** ----------------------------------------------------------
841
- * * ***Type guard: `isEmptyArray`.***
842
- * ----------------------------------------------------------
843
- * **Checks whether a given value is an empty array.**
844
- * - **Behavior:**
845
- * - Non-array inputs are considered `"empty"` ***(defensive strategy)***.
846
- * @param {*} [value] - The value to check.
847
- * @returns {boolean} Returns `true` if it's ***not an array*** or ***an empty-array***.
848
- * @example
849
- * isEmptyArray([]); // ➔ true
850
- * isEmptyArray([1, 2, 3]); // ➔ false
851
- * isEmptyArray("not an array"); // ➔ true
852
- * isEmptyArray(null); // ➔ true
853
- * isEmptyArray(undefined); // ➔ true
854
- *
855
- * if (isEmptyArray(data.items)) {
856
- * console.log("No items to display.");
857
- * }
858
- */
841
+ * * ***Type guard: `isEmptyArray`.***
842
+ * ----------------------------------------------------------
843
+ * **Checks whether a given value is an empty array.**
844
+ * - **Behavior:**
845
+ * - Non-array inputs are considered `"empty"` ***(defensive strategy)***.
846
+ * @param {*} [value] - The value to check.
847
+ * @returns {boolean} Returns `true` if it's ***not an array*** or ***an empty-array***.
848
+ * @example
849
+ * isEmptyArray([]); // ➔ true
850
+ * isEmptyArray([1, 2, 3]); // ➔ false
851
+ * isEmptyArray("not an array"); // ➔ true
852
+ * isEmptyArray(null); // ➔ true
853
+ * isEmptyArray(undefined); // ➔ true
854
+ *
855
+ * if (isEmptyArray(data.items)) {
856
+ * console.log("No items to display.");
857
+ * }
858
+ */
859
859
  declare const isEmptyArray:(value:unknown)=>boolean;
860
860
  /** ----------------------------------------------------------
861
- * * ***Predicate: `isEmptyDeep`.***
862
- * ----------------------------------------------------------
863
- * **Recursively checks whether a value is **deeply empty**.**
864
- * - **Returns `true` for:**
865
- * - Empty objects: `{}`
866
- * - Empty arrays: `[]`
867
- * - Nested empty structures: `{ a: [], b: {} }`
868
- * - Falsy values (except numbers): `null`, `undefined`, `false`, `""`, `NaN`
869
- * - **Returns `false` for:**
870
- * - Non-zero numbers
871
- * - Objects or arrays containing non-empty values
872
- * - Non-empty strings, `true`, functions, symbols, etc.
873
- * @param {*} value - The value to deeply check.
874
- * @returns {boolean} `true` if the value is deeply empty, otherwise `false`.
875
- * @example
876
- * isEmptyDeep({});
877
- * // ➔ true
878
- * isEmptyDeep([]);
879
- * // ➔ true
880
- * isEmptyDeep({ a: {} });
881
- * // ➔ true
882
- * isEmptyDeep([[], {}]);
883
- * // ➔ true
884
- * isEmptyDeep({ a: [1] });
885
- * // ➔ false
886
- * isEmptyDeep([0]);
887
- * // ➔ false
888
- * isEmptyDeep("test");
889
- * // ➔ false
890
- * isEmptyDeep("");
891
- * // ➔ true
892
- * isEmptyDeep(0);
893
- * // ➔ false
894
- * isEmptyDeep(NaN);
895
- * // ➔ true
896
- */
861
+ * * ***Predicate: `isEmptyDeep`.***
862
+ * ----------------------------------------------------------
863
+ * **Recursively checks whether a value is **deeply empty**.**
864
+ * - **Returns `true` for:**
865
+ * - Empty objects: `{}`
866
+ * - Empty arrays: `[]`
867
+ * - Nested empty structures: `{ a: [], b: {} }`
868
+ * - Falsy values (except numbers): `null`, `undefined`, `false`, `""`, `NaN`
869
+ * - **Returns `false` for:**
870
+ * - Non-zero numbers
871
+ * - Objects or arrays containing non-empty values
872
+ * - Non-empty strings, `true`, functions, symbols, etc.
873
+ * @param {*} value - The value to deeply check.
874
+ * @returns {boolean} `true` if the value is deeply empty, otherwise `false`.
875
+ * @example
876
+ * isEmptyDeep({});
877
+ * // ➔ true
878
+ * isEmptyDeep([]);
879
+ * // ➔ true
880
+ * isEmptyDeep({ a: {} });
881
+ * // ➔ true
882
+ * isEmptyDeep([[], {}]);
883
+ * // ➔ true
884
+ * isEmptyDeep({ a: [1] });
885
+ * // ➔ false
886
+ * isEmptyDeep([0]);
887
+ * // ➔ false
888
+ * isEmptyDeep("test");
889
+ * // ➔ false
890
+ * isEmptyDeep("");
891
+ * // ➔ true
892
+ * isEmptyDeep(0);
893
+ * // ➔ false
894
+ * isEmptyDeep(NaN);
895
+ * // ➔ true
896
+ */
897
897
  declare const isEmptyDeep:(value:unknown)=>boolean;type IsEmptyObjectOptions={
898
898
  /** Whether to check for symbol properties in addition to string keys, defaultValue: `true`.
899
- *
900
- * @default false
901
- */
899
+ *
900
+ * @default false
901
+ */
902
902
  checkSymbols?:boolean;};
903
903
  /** ----------------------------------------------------------
904
- * * ***Predicate: `isEmptyObject`.***
905
- * ----------------------------------------------------------
906
- * **Checks if a value is a plain object with **no own enumerable string-key properties**,
907
- * and optionally **no own enumerable symbol-key properties** when `checkSymbols` is `true`.**
908
- * - **Behavior:**
909
- * - If the value is **not an object** (e.g. `null`, array, primitive), it is considered empty.
910
- * - If `options.checkSymbols` is `true`, **symbol properties** are also checked.
911
- * @param {*} value - The value to check.
912
- * @param {IsEmptyObjectOptions} [options] - Optional settings.
913
- * @param {IsEmptyObjectOptions["checkSymbols"]} [options.checkSymbols=false] - Whether to also check symbol properties.
914
- * @returns {boolean} Return `true` if the value is considered empty or not an object, false otherwise.
915
- * @example
916
- * isEmptyObject({});
917
- * // ➔ true
918
- * isEmptyObject({}, { checkSymbols: true });
919
- * // ➔ true
920
- * isEmptyObject({ a: 1 });
921
- * // ➔ false
922
- * isEmptyObject({ [Symbol('s')]: 1 });
923
- * // ➔ true
924
- * isEmptyObject({ [Symbol('s')]: 1 }, { checkSymbols: true });
925
- * // ➔ false
926
- * isEmptyObject(null);
927
- * // ➔ true (not object)
928
- * isEmptyObject([]);
929
- * // ➔ true (not plain object)
930
- * isEmptyObject(123);
931
- * // ➔ true (not object)
932
- */
904
+ * * ***Predicate: `isEmptyObject`.***
905
+ * ----------------------------------------------------------
906
+ * **Checks if a value is a plain object with **no own enumerable string-key properties**,
907
+ * and optionally **no own enumerable symbol-key properties** when `checkSymbols` is `true`.**
908
+ * - **Behavior:**
909
+ * - If the value is **not an object** (e.g. `null`, array, primitive), it is considered empty.
910
+ * - If `options.checkSymbols` is `true`, **symbol properties** are also checked.
911
+ * @param {*} value - The value to check.
912
+ * @param {IsEmptyObjectOptions} [options] - Optional settings.
913
+ * @param {IsEmptyObjectOptions["checkSymbols"]} [options.checkSymbols=false] - Whether to also check symbol properties.
914
+ * @returns {boolean} Return `true` if the value is considered empty or not an object, false otherwise.
915
+ * @example
916
+ * isEmptyObject({});
917
+ * // ➔ true
918
+ * isEmptyObject({}, { checkSymbols: true });
919
+ * // ➔ true
920
+ * isEmptyObject({ a: 1 });
921
+ * // ➔ false
922
+ * isEmptyObject({ [Symbol('s')]: 1 });
923
+ * // ➔ true
924
+ * isEmptyObject({ [Symbol('s')]: 1 }, { checkSymbols: true });
925
+ * // ➔ false
926
+ * isEmptyObject(null);
927
+ * // ➔ true (not object)
928
+ * isEmptyObject([]);
929
+ * // ➔ true (not plain object)
930
+ * isEmptyObject(123);
931
+ * // ➔ true (not object)
932
+ */
933
933
  declare function isEmptyObject(value:unknown,options?:IsEmptyObjectOptions):boolean;type IsEmptyStringOptions={
934
934
  /** Whether to trim the string before checking, defaultValue: `true`.
935
- *
936
- * @default `true` */
935
+ *
936
+ * @default `true` */
937
937
  trim?:boolean;};
938
938
  /** ----------------------------------------------------------
939
- * * ***Predicate: `isEmptyString`.***
940
- * ----------------------------------------------------------
941
- * **Checks whether a given value is an **empty string**.**
942
- * - **Behavior:**
943
- * - Considers `""` and whitespace-only strings as
944
- * empty (if `trim` is enabled, which is the default).
945
- * - Non-string inputs are also considered empty.
946
- * @param {*} value - The value to check.
947
- * @param {IsEmptyStringOptions} [options] - Optional settings.
948
- * @param {IsEmptyStringOptions["trim"]} [options.trim=true] - Whether to trim the string before checking, defaultValue: `true`.
949
- * @returns {boolean} Returns `true` if the value is string not a string or value string is considered empty.
950
- * @example
951
- * isEmptyString("");
952
- * // ➔ true
953
- * isEmptyString(" ");
954
- * // ➔ true (default trims)
955
- * isEmptyString(" ", { trim: false });
956
- * // ➔ false
957
- * isEmptyString("hello");
958
- * // ➔ false
959
- * isEmptyString(undefined);
960
- * // ➔ true
961
- * isEmptyString(null);
962
- * // ➔ true
963
- * isEmptyString(123 as any);
964
- * // ➔ true
965
- *
966
- * // Used in validation
967
- * if (isEmptyString(form.name)) {
968
- * throw new Error("Name cannot be empty.");
969
- * }
970
- */
939
+ * * ***Predicate: `isEmptyString`.***
940
+ * ----------------------------------------------------------
941
+ * **Checks whether a given value is an **empty string**.**
942
+ * - **Behavior:**
943
+ * - Considers `""` and whitespace-only strings as
944
+ * empty (if `trim` is enabled, which is the default).
945
+ * - Non-string inputs are also considered empty.
946
+ * @param {*} value - The value to check.
947
+ * @param {IsEmptyStringOptions} [options] - Optional settings.
948
+ * @param {IsEmptyStringOptions["trim"]} [options.trim=true] - Whether to trim the string before checking, defaultValue: `true`.
949
+ * @returns {boolean} Returns `true` if the value is string not a string or value string is considered empty.
950
+ * @example
951
+ * isEmptyString("");
952
+ * // ➔ true
953
+ * isEmptyString(" ");
954
+ * // ➔ true (default trims)
955
+ * isEmptyString(" ", { trim: false });
956
+ * // ➔ false
957
+ * isEmptyString("hello");
958
+ * // ➔ false
959
+ * isEmptyString(undefined);
960
+ * // ➔ true
961
+ * isEmptyString(null);
962
+ * // ➔ true
963
+ * isEmptyString(123 as any);
964
+ * // ➔ true
965
+ *
966
+ * // Used in validation
967
+ * if (isEmptyString(form.name)) {
968
+ * throw new Error("Name cannot be empty.");
969
+ * }
970
+ */
971
971
  declare const isEmptyString:(value:unknown,options?:IsEmptyStringOptions)=>boolean;type IsEmptyValueOptions={
972
972
  /** Whether to check symbol properties when checking empty objects.
973
- *
974
- * DefaultValue: `false`.
975
- *
976
- * @default false
977
- */
973
+ *
974
+ * DefaultValue: `false`.
975
+ *
976
+ * @default false
977
+ */
978
978
  checkSymbols?:boolean;};
979
979
  /** ----------------------------------------------------------
980
- * * ***Predicate: `isEmptyValue`.***
981
- * ----------------------------------------------------------
982
- * **Determines if a value is **`empty`**.**
983
- * - **Covering:**
984
- * - Empty objects: `{}`
985
- * - Empty arrays: `[]`
986
- * - Empty strings: `""` or whitespace-only (trimmed)
987
- * - `null`, `undefined`, `false`, or `NaN`
988
- * - **Returns **`false`** for:**
989
- * - Non-empty objects/arrays
990
- * - Non-empty strings
991
- * - Numbers (except `NaN`)
992
- * - `Functions`, `true`, `symbols`, `etc`.
993
- * @param {*} value - The value to evaluate.
994
- * @param {IsEmptyValueOptions} [options] - Optional settings.
995
- * @returns {boolean} Return `true` if the value is considered empty, otherwise `false`.
996
- * @example
997
- * isEmptyValue({});
998
- * // ➔ true
999
- * isEmptyValue([]);
1000
- * // ➔ true
1001
- * isEmptyValue({ key: "value" });
1002
- * // ➔ false
1003
- * isEmptyValue({ [Symbol("foo")]: 123 });
1004
- * // ➔ true (default `checkSymbols` is `false`)
1005
- * isEmptyValue({ [Symbol("foo")]: 123 }, { checkSymbols: false });
1006
- * // ➔ true (default `checkSymbols` is `false`)
1007
- * isEmptyValue({ [Symbol("foo")]: 123 }, { checkSymbols: true });
1008
- * // ➔ false
1009
- * isEmptyValue([1, 2, 3]);
1010
- * // ➔ false
1011
- * isEmptyValue(NaN);
1012
- * // ➔ true
1013
- * isEmptyValue(true);
1014
- * // ➔ false
1015
- * isEmptyValue(false);
1016
- * // ➔ true
1017
- * isEmptyValue(null);
1018
- * // ➔ true
1019
- * isEmptyValue(undefined);
1020
- * // ➔ true
1021
- * isEmptyValue("");
1022
- * // ➔ true
1023
- * isEmptyValue(" ");
1024
- * // ➔ true
1025
- * isEmptyValue(0);
1026
- * // ➔ false
1027
- * isEmptyValue(-1);
1028
- * // ➔ false
1029
- * isEmptyValue(2);
1030
- * // ➔ false
1031
- * isEmptyValue(() => {});
1032
- * // ➔ false
1033
- */
980
+ * * ***Predicate: `isEmptyValue`.***
981
+ * ----------------------------------------------------------
982
+ * **Determines if a value is **`empty`**.**
983
+ * - **Covering:**
984
+ * - Empty objects: `{}`
985
+ * - Empty arrays: `[]`
986
+ * - Empty strings: `""` or whitespace-only (trimmed)
987
+ * - `null`, `undefined`, `false`, or `NaN`
988
+ * - **Returns **`false`** for:**
989
+ * - Non-empty objects/arrays
990
+ * - Non-empty strings
991
+ * - Numbers (except `NaN`)
992
+ * - `Functions`, `true`, `symbols`, `etc`.
993
+ * @param {*} value - The value to evaluate.
994
+ * @param {IsEmptyValueOptions} [options] - Optional settings.
995
+ * @returns {boolean} Return `true` if the value is considered empty, otherwise `false`.
996
+ * @example
997
+ * isEmptyValue({});
998
+ * // ➔ true
999
+ * isEmptyValue([]);
1000
+ * // ➔ true
1001
+ * isEmptyValue({ key: "value" });
1002
+ * // ➔ false
1003
+ * isEmptyValue({ [Symbol("foo")]: 123 });
1004
+ * // ➔ true (default `checkSymbols` is `false`)
1005
+ * isEmptyValue({ [Symbol("foo")]: 123 }, { checkSymbols: false });
1006
+ * // ➔ true (default `checkSymbols` is `false`)
1007
+ * isEmptyValue({ [Symbol("foo")]: 123 }, { checkSymbols: true });
1008
+ * // ➔ false
1009
+ * isEmptyValue([1, 2, 3]);
1010
+ * // ➔ false
1011
+ * isEmptyValue(NaN);
1012
+ * // ➔ true
1013
+ * isEmptyValue(true);
1014
+ * // ➔ false
1015
+ * isEmptyValue(false);
1016
+ * // ➔ true
1017
+ * isEmptyValue(null);
1018
+ * // ➔ true
1019
+ * isEmptyValue(undefined);
1020
+ * // ➔ true
1021
+ * isEmptyValue("");
1022
+ * // ➔ true
1023
+ * isEmptyValue(" ");
1024
+ * // ➔ true
1025
+ * isEmptyValue(0);
1026
+ * // ➔ false
1027
+ * isEmptyValue(-1);
1028
+ * // ➔ false
1029
+ * isEmptyValue(2);
1030
+ * // ➔ false
1031
+ * isEmptyValue(() => {});
1032
+ * // ➔ false
1033
+ */
1034
1034
  declare const isEmptyValue:(value:unknown,options?:IsEmptyValueOptions)=>boolean;
1035
1035
  /** ----------------------------------------------------
1036
- * * ***Predicate: `isEqual`.***
1037
- * ----------------------------------------------------------
1038
- * **Performs a deep comparison between two values to determine if they are equivalent.**
1039
- * @description
1040
- * Checks whether two values are **deeply equal**, not just reference-equal (`===`).
1041
- * - **✅ This method compares:**
1042
- * - Arrays and TypedArrays
1043
- * - ArrayBuffers
1044
- * - Plain objects (`Object`) ➔ own enumerable properties only
1045
- * - Booleans, Numbers, Strings, Symbols
1046
- * - Dates
1047
- * - Errors
1048
- * - Maps
1049
- * - Sets
1050
- * - Regular expressions
1051
- * - ❌ `Functions` and `DOM nodes` are ***not supported***.
1052
- * @param {*} value The value to compare.
1053
- * @param {*} other The other value to compare.
1054
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
1055
- * @example
1056
- * const obj1 = { user: "fred" };
1057
- * const obj2 = { user: "fred" };
1058
- *
1059
- * isEqual(obj1, obj2);
1060
- * // ➔ true
1061
- * obj1 === obj2;
1062
- * // ➔ false (different references)
1063
- * isEqual([1, 2, 3], [1, 2, 3]);
1064
- * // ➔ true
1065
- * isEqual(new Date("2020-01-01"), new Date("2020-01-01"));
1066
- * // ➔ true
1067
- * isEqual(new Set([1, 2]), new Set([2, 1]));
1068
- * // ➔ true
1069
- * isEqual(/abc/i, new RegExp("abc", "i"));
1070
- * // ➔ true
1071
- * isEqual({ a: 1 }, { a: 1, b: undefined });
1072
- * // ➔ false
1073
- */
1036
+ * * ***Predicate: `isEqual`.***
1037
+ * ----------------------------------------------------------
1038
+ * **Performs a deep comparison between two values to determine if they are equivalent.**
1039
+ * @description
1040
+ * Checks whether two values are **deeply equal**, not just reference-equal (`===`).
1041
+ * - **✅ This method compares:**
1042
+ * - Arrays and TypedArrays
1043
+ * - ArrayBuffers
1044
+ * - Plain objects (`Object`) ➔ own enumerable properties only
1045
+ * - Booleans, Numbers, Strings, Symbols
1046
+ * - Dates
1047
+ * - Errors
1048
+ * - Maps
1049
+ * - Sets
1050
+ * - Regular expressions
1051
+ * - ❌ `Functions` and `DOM nodes` are ***not supported***.
1052
+ * @param {*} value The value to compare.
1053
+ * @param {*} other The other value to compare.
1054
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
1055
+ * @example
1056
+ * const obj1 = { user: "fred" };
1057
+ * const obj2 = { user: "fred" };
1058
+ *
1059
+ * isEqual(obj1, obj2);
1060
+ * // ➔ true
1061
+ * obj1 === obj2;
1062
+ * // ➔ false (different references)
1063
+ * isEqual([1, 2, 3], [1, 2, 3]);
1064
+ * // ➔ true
1065
+ * isEqual(new Date("2020-01-01"), new Date("2020-01-01"));
1066
+ * // ➔ true
1067
+ * isEqual(new Set([1, 2]), new Set([2, 1]));
1068
+ * // ➔ true
1069
+ * isEqual(/abc/i, new RegExp("abc", "i"));
1070
+ * // ➔ true
1071
+ * isEqual({ a: 1 }, { a: 1, b: undefined });
1072
+ * // ➔ false
1073
+ */
1074
1074
  declare function isEqual(value:unknown,other:unknown):boolean;
1075
1075
  /** ----------------------------------------------------
1076
- * * ***Predicate: `isEqualWith`.***
1077
- * ----------------------------------------------------
1078
- * **Performs a deep comparison between two values with support for a
1079
- * customizer function.**
1080
- * @description
1081
- * This method is like **{@link isEqual | `isEqual`}** except that it
1082
- * accepts a `customizer` which is invoked to compare values.
1083
- * - **Behavior:**
1084
- * - If `customizer` returns `undefined`, the comparison is handled by
1085
- * the default deep equality algorithm.
1086
- * - The `customizer` is invoked with up to six arguments:
1087
- * - `(value, other, indexOrKey, parent, otherParent, stack)`,
1088
- * see **{@link CustomizerIsEqualWith | `CustomizerIsEqualWith`}**.
1089
- * - Supports comparing `arrays`, `objects`, `maps`, `sets`, `dates`,
1090
- * `regexes`, `typed arrays`, `etc`.
1091
- * - Functions and DOM nodes are **not** supported.
1092
- * @param {*} value The value to compare.
1093
- * @param {*} other The other value to compare.
1094
- * @param {CustomizerIsEqualWith} [customizer] The function to customize comparisons.
1095
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
1096
- * @example
1097
- * function isGreeting(value: unknown) {
1098
- * return typeof value === "string" && /^h(?:i|ello)$/.test(value);
1099
- * }
1100
- *
1101
- * function customizer(objValue: unknown, othValue: unknown) {
1102
- * if (isGreeting(objValue) && isGreeting(othValue)) {
1103
- * return true;
1104
- * }
1105
- * }
1106
- *
1107
- * const array = ["hello", "goodbye"];
1108
- * const other = ["hi", "goodbye"];
1109
- *
1110
- * isEqualWith(array, other, customizer);
1111
- * // ➔ true
1112
- */
1076
+ * * ***Predicate: `isEqualWith`.***
1077
+ * ----------------------------------------------------
1078
+ * **Performs a deep comparison between two values with support for a
1079
+ * customizer function.**
1080
+ * @description
1081
+ * This method is like **{@link isEqual | `isEqual`}** except that it
1082
+ * accepts a `customizer` which is invoked to compare values.
1083
+ * - **Behavior:**
1084
+ * - If `customizer` returns `undefined`, the comparison is handled by
1085
+ * the default deep equality algorithm.
1086
+ * - The `customizer` is invoked with up to six arguments:
1087
+ * - `(value, other, indexOrKey, parent, otherParent, stack)`,
1088
+ * see **{@link CustomizerIsEqualWith | `CustomizerIsEqualWith`}**.
1089
+ * - Supports comparing `arrays`, `objects`, `maps`, `sets`, `dates`,
1090
+ * `regexes`, `typed arrays`, `etc`.
1091
+ * - Functions and DOM nodes are **not** supported.
1092
+ * @param {*} value The value to compare.
1093
+ * @param {*} other The other value to compare.
1094
+ * @param {CustomizerIsEqualWith} [customizer] The function to customize comparisons.
1095
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
1096
+ * @example
1097
+ * function isGreeting(value: unknown) {
1098
+ * return typeof value === "string" && /^h(?:i|ello)$/.test(value);
1099
+ * }
1100
+ *
1101
+ * function customizer(objValue: unknown, othValue: unknown) {
1102
+ * if (isGreeting(objValue) && isGreeting(othValue)) {
1103
+ * return true;
1104
+ * }
1105
+ * }
1106
+ *
1107
+ * const array = ["hello", "goodbye"];
1108
+ * const other = ["hi", "goodbye"];
1109
+ *
1110
+ * isEqualWith(array, other, customizer);
1111
+ * // ➔ true
1112
+ */
1113
1113
  declare function isEqualWith(value:unknown,other:unknown,customizer?:CustomizerIsEqualWith):boolean;
1114
1114
  /** ----------------------------------------------------------
1115
- * * ***Type guard: `isError`.***
1116
- * ----------------------------------------------------------
1117
- * **Checks whether the given value is an **`Error` object**.**
1118
- * - **Behavior:**
1119
- * - Ensures that the provided value is a valid JavaScript error instance.
1120
- * - Useful in TypeScript for narrowing types during error handling.
1121
- * @param {*} error - The value to check.
1122
- * @returns {boolean} Returns `true` if `value` is instance of **[Error](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error)**, else `false`.
1123
- * @example
1124
- * isError(new Error("Something went wrong"));
1125
- * // ➔ true
1126
- * isError("Error message");
1127
- * // ➔ false
1128
- * isError(null);
1129
- * // ➔ false
1130
- */
1115
+ * * ***Type guard: `isError`.***
1116
+ * ----------------------------------------------------------
1117
+ * **Checks whether the given value is an **`Error` object**.**
1118
+ * - **Behavior:**
1119
+ * - Ensures that the provided value is a valid JavaScript error instance.
1120
+ * - Useful in TypeScript for narrowing types during error handling.
1121
+ * @param {*} error - The value to check.
1122
+ * @returns {boolean} Returns `true` if `value` is instance of **[Error](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error)**, else `false`.
1123
+ * @example
1124
+ * isError(new Error("Something went wrong"));
1125
+ * // ➔ true
1126
+ * isError("Error message");
1127
+ * // ➔ false
1128
+ * isError(null);
1129
+ * // ➔ false
1130
+ */
1131
1131
  declare const isError:(error:unknown)=>error is Error;
1132
1132
  /** ----------------------------------------------------------
1133
- * * ***Type guard: `isFinite`.***
1134
- * -----------------------------------------------------------
1135
- * **Checks if a value is a finite primitive number.**
1136
- * @description
1137
- * This function verifies that `value` is a **primitive number** and is **finite**
1138
- * (i.e., not `NaN`, `Infinity`, or `-Infinity`).
1139
- * - **Behavior:**
1140
- * - Behaves like
1141
- * [`Number.isFinite()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isFinite).
1142
- * - But also works as a **TypeScript type guard**.
1143
- * @param {*} value - The value to check.
1144
- * @returns {boolean} Returns `true` if `value` is a finite primitive number, else `false`.
1145
- * @example
1146
- * import * as RzlUtilsJs from "@rzl-zone/utils-js";
1147
- *
1148
- * // Strict finite number check (only primitive numbers)
1149
- * RzlUtilsJs.isFinite(3);
1150
- * // ➔ true
1151
- * RzlUtilsJs.isFinite(Number.MIN_VALUE);
1152
- * // ➔ true
1153
- * RzlUtilsJs.isFinite("3");
1154
- * // ➔ false (string is not a number)
1155
- * RzlUtilsJs.isFinite(NaN);
1156
- * // ➔ false
1157
- * RzlUtilsJs.isFinite(Infinity);
1158
- * // ➔ false
1159
- * RzlUtilsJs.isFinite(new Number(3));
1160
- * // ➔ false (Number object is not primitive)
1161
- *
1162
- * // Comparison with global isFinite()
1163
- * isFinite("3");
1164
- * // ➔ true (global coerces string to number)
1165
- * isFinite(new Number(3));
1166
- * // ➔ true (object coerced to primitive number)
1167
- */
1133
+ * * ***Type guard: `isFinite`.***
1134
+ * -----------------------------------------------------------
1135
+ * **Checks if a value is a finite primitive number.**
1136
+ * @description
1137
+ * This function verifies that `value` is a **primitive number** and is **finite**
1138
+ * (i.e., not `NaN`, `Infinity`, or `-Infinity`).
1139
+ * - **Behavior:**
1140
+ * - Behaves like
1141
+ * [`Number.isFinite()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isFinite).
1142
+ * - But also works as a **TypeScript type guard**.
1143
+ * @param {*} value - The value to check.
1144
+ * @returns {boolean} Returns `true` if `value` is a finite primitive number, else `false`.
1145
+ * @example
1146
+ * import * as RzlUtilsJs from "@rzl-zone/utils-js";
1147
+ *
1148
+ * // Strict finite number check (only primitive numbers)
1149
+ * RzlUtilsJs.isFinite(3);
1150
+ * // ➔ true
1151
+ * RzlUtilsJs.isFinite(Number.MIN_VALUE);
1152
+ * // ➔ true
1153
+ * RzlUtilsJs.isFinite("3");
1154
+ * // ➔ false (string is not a number)
1155
+ * RzlUtilsJs.isFinite(NaN);
1156
+ * // ➔ false
1157
+ * RzlUtilsJs.isFinite(Infinity);
1158
+ * // ➔ false
1159
+ * RzlUtilsJs.isFinite(new Number(3));
1160
+ * // ➔ false (Number object is not primitive)
1161
+ *
1162
+ * // Comparison with global isFinite()
1163
+ * isFinite("3");
1164
+ * // ➔ true (global coerces string to number)
1165
+ * isFinite(new Number(3));
1166
+ * // ➔ true (object coerced to primitive number)
1167
+ */
1168
1168
  declare function isFinite(value:unknown):value is number;
1169
1169
  /** ----------------------------------------------------------
1170
- * * ***Type guard: `isFunction`.***
1171
- * -----------------------------------------------------------
1172
- * **Checks if a value is a function.**
1173
- * - **Behavior:**
1174
- * - Uses `typeof value === "function"` for strict type checking.
1175
- * - Safe alternative to `Function` type (doesn't trigger ESLint warning).
1176
- * - Supports TypeScript type narrowing with `value is (...args: any[]) => any`.
1177
- * @param {*} value - The value to check.
1178
- * @returns {boolean} Return `true` if the value is a function.
1179
- * @example
1180
- * isFunction(() => {});
1181
- * // ➔ true
1182
- * isFunction(async () => {});
1183
- * // ➔ true
1184
- * isFunction(null);
1185
- * // ➔ false
1186
- * isFunction({});
1187
- * // ➔ false
1188
- */
1170
+ * * ***Type guard: `isFunction`.***
1171
+ * -----------------------------------------------------------
1172
+ * **Checks if a value is a function.**
1173
+ * - **Behavior:**
1174
+ * - Uses `typeof value === "function"` for strict type checking.
1175
+ * - Safe alternative to `Function` type (doesn't trigger ESLint warning).
1176
+ * - Supports TypeScript type narrowing with `value is (...args: any[]) => any`.
1177
+ * @param {*} value - The value to check.
1178
+ * @returns {boolean} Return `true` if the value is a function.
1179
+ * @example
1180
+ * isFunction(() => {});
1181
+ * // ➔ true
1182
+ * isFunction(async () => {});
1183
+ * // ➔ true
1184
+ * isFunction(null);
1185
+ * // ➔ false
1186
+ * isFunction({});
1187
+ * // ➔ false
1188
+ */
1189
1189
  declare const isFunction:(value:unknown)=>value is AnyFunction;
1190
1190
  /** ---------------------------------------------------------
1191
- * * ***Type guard: `isInteger`.***
1192
- * ----------------------------------------------------------
1193
- * **Checks if a value is an integer.**
1194
- * - **ℹ️ Note:**
1195
- * - This method is based on
1196
- * [`Number.isInteger`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger).
1197
- * @param {*} value The value to check.
1198
- * @returns {boolean} Returns `true` if `value` is an integer, else `false`.
1199
- * @example
1200
- * isInteger(3);
1201
- * // ➔ true
1202
- * isInteger(Number.MIN_VALUE);
1203
- * // ➔ false
1204
- * isInteger(NaN);
1205
- * // ➔ false
1206
- * isInteger(Infinity);
1207
- * // ➔ false
1208
- * isInteger(-Infinity);
1209
- * // ➔ false
1210
- * isInteger('3');
1211
- * // ➔ false
1212
- */
1191
+ * * ***Type guard: `isInteger`.***
1192
+ * ----------------------------------------------------------
1193
+ * **Checks if a value is an integer.**
1194
+ * - **ℹ️ Note:**
1195
+ * - This method is based on
1196
+ * [`Number.isInteger`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger).
1197
+ * @param {*} value The value to check.
1198
+ * @returns {boolean} Returns `true` if `value` is an integer, else `false`.
1199
+ * @example
1200
+ * isInteger(3);
1201
+ * // ➔ true
1202
+ * isInteger(Number.MIN_VALUE);
1203
+ * // ➔ false
1204
+ * isInteger(NaN);
1205
+ * // ➔ false
1206
+ * isInteger(Infinity);
1207
+ * // ➔ false
1208
+ * isInteger(-Infinity);
1209
+ * // ➔ false
1210
+ * isInteger('3');
1211
+ * // ➔ false
1212
+ */
1213
1213
  declare function isInteger(value:unknown):value is number;
1214
1214
  /** ----------------------------------------
1215
- * * ***Type guard: `isLength`.***
1216
- * ----------------------------------------------------------
1217
- * **Checks whether the given value is a **valid array-like length**.**
1218
- * - **Behavior:**
1219
- * - ✅ Ensures the value is a **non-negative integer**.
1220
- * - ✅ Ensures the value is **not greater than `Number.MAX_SAFE_INTEGER`**.
1221
- * - ❌ Excludes non-numeric values, `Infinity`, and fractional numbers.
1222
- * - **ℹ️ Note:**
1223
- * - This method is loosely based on
1224
- * - A valid length must be a non-negative integer and **not greater
1225
- * than `Number.MAX_SAFE_INTEGER`**.
1226
- * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
1227
- * @param {*} value The value to check.
1228
- * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
1229
- * @example
1230
- * isLength(3);
1231
- * // ➔ true
1232
- * isLength(Number.MAX_SAFE_INTEGER);
1233
- * // ➔ true
1234
- * isLength(Number.MAX_SAFE_INTEGER + 1);
1235
- * // ➔ false
1236
- * isLength("3");
1237
- * // ➔ false
1238
- * isLength(-1);
1239
- * // ➔ false
1240
- * isLength(3.14);
1241
- * // ➔ false
1242
- * isLength(Infinity);
1243
- * // ➔ false
1244
- * isLength(-Infinity);
1245
- * // ➔ false
1246
- * isLength(Number.MIN_VALUE);
1247
- * // ➔ false
1248
- */
1215
+ * * ***Type guard: `isLength`.***
1216
+ * ----------------------------------------------------------
1217
+ * **Checks whether the given value is a **valid array-like length**.**
1218
+ * - **Behavior:**
1219
+ * - ✅ Ensures the value is a **non-negative integer**.
1220
+ * - ✅ Ensures the value is **not greater than `Number.MAX_SAFE_INTEGER`**.
1221
+ * - ❌ Excludes non-numeric values, `Infinity`, and fractional numbers.
1222
+ * - **ℹ️ Note:**
1223
+ * - This method is loosely based on
1224
+ * - A valid length must be a non-negative integer and **not greater
1225
+ * than `Number.MAX_SAFE_INTEGER`**.
1226
+ * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
1227
+ * @param {*} value The value to check.
1228
+ * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
1229
+ * @example
1230
+ * isLength(3);
1231
+ * // ➔ true
1232
+ * isLength(Number.MAX_SAFE_INTEGER);
1233
+ * // ➔ true
1234
+ * isLength(Number.MAX_SAFE_INTEGER + 1);
1235
+ * // ➔ false
1236
+ * isLength("3");
1237
+ * // ➔ false
1238
+ * isLength(-1);
1239
+ * // ➔ false
1240
+ * isLength(3.14);
1241
+ * // ➔ false
1242
+ * isLength(Infinity);
1243
+ * // ➔ false
1244
+ * isLength(-Infinity);
1245
+ * // ➔ false
1246
+ * isLength(Number.MIN_VALUE);
1247
+ * // ➔ false
1248
+ */
1249
1249
  declare function isLength(value:unknown):boolean;
1250
1250
  /** --------------------------------------------------
1251
- * * ***Type guard: `isMap`.***
1252
- * ----------------------------------------------------------
1253
- * **Checks whether the given value is a **`Map` object**.**
1254
- * - **Behavior:**
1255
- * - Ensures that the provided value is an instance of **[Map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map)**.
1256
- * - Useful in TypeScript for narrowing types when working with collections.
1257
- * @param {*} value The value to check.
1258
- * @returns {boolean} Returns `true` if `value` is instance of **[Map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map)**, else `false`.
1259
- * @example
1260
- * isMap(new Map());
1261
- * // ➔ true
1262
- * isMap(new WeakMap());
1263
- * // ➔ false
1264
- * isMap({});
1265
- * // ➔ false
1266
- */
1251
+ * * ***Type guard: `isMap`.***
1252
+ * ----------------------------------------------------------
1253
+ * **Checks whether the given value is a **`Map` object**.**
1254
+ * - **Behavior:**
1255
+ * - Ensures that the provided value is an instance of **[Map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map)**.
1256
+ * - Useful in TypeScript for narrowing types when working with collections.
1257
+ * @param {*} value The value to check.
1258
+ * @returns {boolean} Returns `true` if `value` is instance of **[Map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map)**, else `false`.
1259
+ * @example
1260
+ * isMap(new Map());
1261
+ * // ➔ true
1262
+ * isMap(new WeakMap());
1263
+ * // ➔ false
1264
+ * isMap({});
1265
+ * // ➔ false
1266
+ */
1267
1267
  declare function isMap<K=unknown,V=unknown>(value:Map<K,V>):value is Map<K,V>;declare function isMap(value:unknown):value is Map<unknown,unknown>;
1268
1268
  /** ----------------------------------------------------
1269
- * * ***Predicate: `isMatch`.***
1270
- * ----------------------------------------------------
1271
- * **Performs a partial deep comparison between `object` and `source`.**
1272
- * @description
1273
- * Determines whether `object` contains equivalent property values from `source`.
1274
- * - **Behavior:**
1275
- * - ✅ Returns `true` if **all properties** in `source` exist in `object` and are deeply equal.
1276
- * - ❌ Does **not** require `object` and `source` to be the same shape—`object` may have extra properties.
1277
- * - ⚠️ Arrays are treated as objects: only matching indexed keys are compared.
1278
- * - **Remarks:**
1279
- * - This is functionally equivalent to a partially applied `matches(source)` predicate.
1280
- * - Special cases:
1281
- * - An empty array (`[]`) in `source` matches any array in `object`.
1282
- * - An empty object (`{}`) in `source` matches any object in `object`.
1283
- * @param {object} object - The object to inspect.
1284
- * @param {object} source - The object containing property values to match.
1285
- * @returns {boolean} Returns `true` if `object` is a match, else `false`.
1286
- * @example
1287
- * const object = { a: 1, b: 2 };
1288
- *
1289
- * isMatch(object, { b: 2 });
1290
- * // ➔ true
1291
- * isMatch(object, { b: 1 });
1292
- * // ➔ false
1293
- * isMatch([1, 2, 3], [1, 2]);
1294
- * // ➔ true (treats arrays as objects with index keys)
1295
- */
1269
+ * * ***Predicate: `isMatch`.***
1270
+ * ----------------------------------------------------
1271
+ * **Performs a partial deep comparison between `object` and `source`.**
1272
+ * @description
1273
+ * Determines whether `object` contains equivalent property values from `source`.
1274
+ * - **Behavior:**
1275
+ * - ✅ Returns `true` if **all properties** in `source` exist in `object` and are deeply equal.
1276
+ * - ❌ Does **not** require `object` and `source` to be the same shape—`object` may have extra properties.
1277
+ * - ⚠️ Arrays are treated as objects: only matching indexed keys are compared.
1278
+ * - **Remarks:**
1279
+ * - This is functionally equivalent to a partially applied `matches(source)` predicate.
1280
+ * - Special cases:
1281
+ * - An empty array (`[]`) in `source` matches any array in `object`.
1282
+ * - An empty object (`{}`) in `source` matches any object in `object`.
1283
+ * @param {object} object - The object to inspect.
1284
+ * @param {object} source - The object containing property values to match.
1285
+ * @returns {boolean} Returns `true` if `object` is a match, else `false`.
1286
+ * @example
1287
+ * const object = { a: 1, b: 2 };
1288
+ *
1289
+ * isMatch(object, { b: 2 });
1290
+ * // ➔ true
1291
+ * isMatch(object, { b: 1 });
1292
+ * // ➔ false
1293
+ * isMatch([1, 2, 3], [1, 2]);
1294
+ * // ➔ true (treats arrays as objects with index keys)
1295
+ */
1296
1296
  declare function isMatch(object:object,source:object):boolean;
1297
1297
  /** ----------------------------------------------------
1298
- * * ***Predicate: `isMatchWith`.***
1299
- * ----------------------------------------------------
1300
- * **Performs a partial deep comparison between `object` and `source`, like `isMatch`, but with a `customizer` function to control comparisons.**
1301
- * @description
1302
- * If `customizer` returns a value other than `undefined`, that value is used
1303
- * as the result of the comparison for the current property. Otherwise,
1304
- * the comparison falls back to the default deep equality logic.
1305
- * - **Behavior:**
1306
- * - The `customizer` function is invoked with up to **five** arguments:
1307
- * - `(objValue, srcValue, keyOrIndex, object, source)`,
1308
- * see **{@link CustomizerIsMatchWith | `CustomizerIsMatchWith`}**.
1309
- * - Returning `true` from `customizer` will short-circuit further comparison
1310
- * for that key.
1311
- * - Returning `false` will cause `isMatchWith` to return `false` immediately.
1312
- * - Returning `undefined` allows default comparison to proceed.
1313
- * @param {object} value - The object to inspect.
1314
- * @param {object} other - The object of property values to match.
1315
- * @param {CustomizerIsMatchWith} [customizer] - The function to customize comparisons.
1316
- * @returns Returns `true` if `object` is a match, else `false`.
1317
- * @example
1318
- * function isGreeting(value: unknown) {
1319
- * return typeof value === 'string' && /^h(?:i|ello)$/.test(value);
1320
- * }
1321
- *
1322
- * function customizer(objValue: unknown, srcValue: unknown) {
1323
- * if (isGreeting(objValue) && isGreeting(srcValue)) {
1324
- * return true;
1325
- * }
1326
- * }
1327
- *
1328
- * const object = { greeting: 'hello' };
1329
- * const source = { greeting: 'hi' };
1330
- *
1331
- * isMatchWith(object, source, customizer);
1332
- * // ➔ true
1333
- */
1298
+ * * ***Predicate: `isMatchWith`.***
1299
+ * ----------------------------------------------------
1300
+ * **Performs a partial deep comparison between `object` and `source`, like `isMatch`, but with a `customizer` function to control comparisons.**
1301
+ * @description
1302
+ * If `customizer` returns a value other than `undefined`, that value is used
1303
+ * as the result of the comparison for the current property. Otherwise,
1304
+ * the comparison falls back to the default deep equality logic.
1305
+ * - **Behavior:**
1306
+ * - The `customizer` function is invoked with up to **five** arguments:
1307
+ * - `(objValue, srcValue, keyOrIndex, object, source)`,
1308
+ * see **{@link CustomizerIsMatchWith | `CustomizerIsMatchWith`}**.
1309
+ * - Returning `true` from `customizer` will short-circuit further comparison
1310
+ * for that key.
1311
+ * - Returning `false` will cause `isMatchWith` to return `false` immediately.
1312
+ * - Returning `undefined` allows default comparison to proceed.
1313
+ * @param {object} value - The object to inspect.
1314
+ * @param {object} other - The object of property values to match.
1315
+ * @param {CustomizerIsMatchWith} [customizer] - The function to customize comparisons.
1316
+ * @returns Returns `true` if `object` is a match, else `false`.
1317
+ * @example
1318
+ * function isGreeting(value: unknown) {
1319
+ * return typeof value === 'string' && /^h(?:i|ello)$/.test(value);
1320
+ * }
1321
+ *
1322
+ * function customizer(objValue: unknown, srcValue: unknown) {
1323
+ * if (isGreeting(objValue) && isGreeting(srcValue)) {
1324
+ * return true;
1325
+ * }
1326
+ * }
1327
+ *
1328
+ * const object = { greeting: 'hello' };
1329
+ * const source = { greeting: 'hi' };
1330
+ *
1331
+ * isMatchWith(object, source, customizer);
1332
+ * // ➔ true
1333
+ */
1334
1334
  declare function isMatchWith(value:object,other:object,customizer?:CustomizerIsMatchWith):boolean;
1335
1335
  /** ----------------------------------------------------
1336
- * * ***Type guard: `isNaN`.***
1337
- * ----------------------------------------------------
1338
- * **Checks if a value is [`NaN`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NaN).**
1339
- * - **ℹ️ Note:**
1340
- * - This method is based on
1341
- * [`Number.isNaN`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN)
1342
- * and is **not** the same as the global
1343
- * [`isNaN`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN),
1344
- * which returns `true` for `undefined` and other non-number values.
1345
- * @param {*} value The value to check.
1346
- * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
1347
- * @example
1348
- * import * as RzlUtilsJs from "@rzl-zone/utils-js";
1349
- *
1350
- * RzlUtilsJs.isNaN(NaN);
1351
- * // ➔ true
1352
- * RzlUtilsJs.isNaN(new Number(NaN));
1353
- * // ➔ true
1354
- * RzlUtilsJs.isNaN(undefined);
1355
- * // ➔ false
1356
- *
1357
- * // This global isNaN:
1358
- * isNaN(undefined);
1359
- * // ➔ true
1360
- */
1336
+ * * ***Type guard: `isNaN`.***
1337
+ * ----------------------------------------------------
1338
+ * **Checks if a value is [`NaN`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NaN).**
1339
+ * - **ℹ️ Note:**
1340
+ * - This method is based on
1341
+ * [`Number.isNaN`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN)
1342
+ * and is **not** the same as the global
1343
+ * [`isNaN`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN),
1344
+ * which returns `true` for `undefined` and other non-number values.
1345
+ * @param {*} value The value to check.
1346
+ * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
1347
+ * @example
1348
+ * import * as RzlUtilsJs from "@rzl-zone/utils-js";
1349
+ *
1350
+ * RzlUtilsJs.isNaN(NaN);
1351
+ * // ➔ true
1352
+ * RzlUtilsJs.isNaN(new Number(NaN));
1353
+ * // ➔ true
1354
+ * RzlUtilsJs.isNaN(undefined);
1355
+ * // ➔ false
1356
+ *
1357
+ * // This global isNaN:
1358
+ * isNaN(undefined);
1359
+ * // ➔ true
1360
+ */
1361
1361
  declare function isNaN(value:unknown):boolean;
1362
1362
  /** ----------------------------------------------------
1363
- * * ***Type guard: `isNative`.***
1364
- * ----------------------------------------------------------
1365
- * **Checks if a value is a **pristine native function**.**
1366
- * - **ℹ️ Note:**
1367
- * - This method may not reliably detect native functions when using packages
1368
- * like `core-js`, as they override native behavior.
1369
- * - Attempts to detect native functions in such environments may fail or
1370
- * throw errors.
1371
- * - This also affects packages like
1372
- * **[`babel-polyfill`](https://www.npmjs.com/package/babel-polyfill).**
1373
- * @param {*} value The value to check.
1374
- * @returns {boolean} Returns `true` if `value` is a native function, else `false`.
1375
- * @example
1376
- * isNative(Array.prototype.push);
1377
- * // ➔ true
1378
- *
1379
- * import * as RzlUtilsJs from "@rzl-zone/utils-js";
1380
- * isNative(RzlUtilsJs);
1381
- * // ➔ false
1382
- */
1363
+ * * ***Type guard: `isNative`.***
1364
+ * ----------------------------------------------------------
1365
+ * **Checks if a value is a **pristine native function**.**
1366
+ * - **ℹ️ Note:**
1367
+ * - This method may not reliably detect native functions when using packages
1368
+ * like `core-js`, as they override native behavior.
1369
+ * - Attempts to detect native functions in such environments may fail or
1370
+ * throw errors.
1371
+ * - This also affects packages like
1372
+ * **[`babel-polyfill`](https://www.npmjs.com/package/babel-polyfill).**
1373
+ * @param {*} value The value to check.
1374
+ * @returns {boolean} Returns `true` if `value` is a native function, else `false`.
1375
+ * @example
1376
+ * isNative(Array.prototype.push);
1377
+ * // ➔ true
1378
+ *
1379
+ * import * as RzlUtilsJs from "@rzl-zone/utils-js";
1380
+ * isNative(RzlUtilsJs);
1381
+ * // ➔ false
1382
+ */
1383
1383
  declare function isNative(value:unknown):value is AnyFunction;
1384
1384
  /** ----------------------------------------------------
1385
- * * ***Type guard: `isNil`.***
1386
- * ----------------------------------------------------------
1387
- * **Checks if a value is `null` or `undefined`.**
1388
- * - **Behavior:**
1389
- * - Narrows type to `null` or `undefined` when true.
1390
- * @param {*} value - The value to check.
1391
- * @returns {boolean} Returns `true` if the value is `null` or `undefined`, otherwise `false`.
1392
- * @example
1393
- * isNil(null);
1394
- * // ➔ true
1395
- * isNil(undefined);
1396
- * // ➔ true
1397
- * isNil(void 0);
1398
- * // ➔ true
1399
- * isNil(NaN);
1400
- * // ➔ false
1401
- */
1385
+ * * ***Type guard: `isNil`.***
1386
+ * ----------------------------------------------------------
1387
+ * **Checks if a value is `null` or `undefined`.**
1388
+ * - **Behavior:**
1389
+ * - Narrows type to `null` or `undefined` when true.
1390
+ * @param {*} value - The value to check.
1391
+ * @returns {boolean} Returns `true` if the value is `null` or `undefined`, otherwise `false`.
1392
+ * @example
1393
+ * isNil(null);
1394
+ * // ➔ true
1395
+ * isNil(undefined);
1396
+ * // ➔ true
1397
+ * isNil(void 0);
1398
+ * // ➔ true
1399
+ * isNil(NaN);
1400
+ * // ➔ false
1401
+ */
1402
1402
  declare function isNil(value:unknown):value is null|undefined;
1403
1403
  /** ----------------------------------------------------------
1404
- * * ***Type guard: `isNonEmptyArray`.***
1405
- * ----------------------------------------------------------
1406
- * **Checks if a value is a **non-empty array**.**
1407
- * - **Behavior:**
1408
- * - Ensures the value is an actual array using **[`Array.isArray`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray)**.
1409
- * - Ensures the array contains at least one item.
1410
- * - Narrows type to `T[]` (non-empty array) when true.
1411
- * @template T - The type of the value being checked.
1412
- * @param {*} value - The value to check.
1413
- * @returns {boolean} Return `true` if value is a non-empty array.
1414
- * @example
1415
- * isNonEmptyArray([1, 2, 3]); // ➔ true
1416
- * isNonEmptyArray([]); // ➔ false
1417
- * isNonEmptyArray(null); // ➔ false
1418
- * isNonEmptyArray("test"); // ➔ false
1419
- */
1404
+ * * ***Type guard: `isNonEmptyArray`.***
1405
+ * ----------------------------------------------------------
1406
+ * **Checks if a value is a **non-empty array**.**
1407
+ * - **Behavior:**
1408
+ * - Ensures the value is an actual array using **[`Array.isArray`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray)**.
1409
+ * - Ensures the array contains at least one item.
1410
+ * - Narrows type to `T[]` (non-empty array) when true.
1411
+ * @template T - The type of the value being checked.
1412
+ * @param {*} value - The value to check.
1413
+ * @returns {boolean} Return `true` if value is a non-empty array.
1414
+ * @example
1415
+ * isNonEmptyArray([1, 2, 3]); // ➔ true
1416
+ * isNonEmptyArray([]); // ➔ false
1417
+ * isNonEmptyArray(null); // ➔ false
1418
+ * isNonEmptyArray("test"); // ➔ false
1419
+ */
1420
1420
  declare function isNonEmptyArray(value:[]):value is [];declare function isNonEmptyArray<T extends unknown[]>(value:T):value is NonNullable<Extract<T,unknown[]>>;declare function isNonEmptyArray(value:unknown):value is unknown[];type IsNonEmptyStringOptions={
1421
1421
  /**
1422
- * Whether to trim the string before checking.
1423
- *
1424
- * @default `true` */
1422
+ * Whether to trim the string before checking.
1423
+ *
1424
+ * @default `true` */
1425
1425
  trim?:boolean;};
1426
1426
  /** ----------------------------------------------------------
1427
- * * ***Type guard: `isNonEmptyString`.***
1428
- * ----------------------------------------------------------
1429
- * **Checks if a value is a **non-empty string**.**
1430
- * @description
1431
- * Determines whether the given `value` is a string containing at least one non-whitespace character, with optional trimming behavior.
1432
- * - **Behavior:**
1433
- * - Ensures the value is a string using **{@link isString | `isString`}**.
1434
- * - Optionally trims whitespace before checking (`trim` defaults to `true`).
1435
- * - Narrows type to `string` when true.
1436
- * @param {*} value - The value to test.
1437
- * @param {IsNonEmptyStringOptions} [options] - Optional settings.
1438
- * @param {boolean} options.trim - If `true`, trims the string before checking, defaults: `true`.
1439
- * @returns {boolean} Return `true` if `value` is a non-empty string, otherwise `false`.
1440
- * @example
1441
- * isNonEmptyString("hello");
1442
- * // ➔ true
1443
- * isNonEmptyString(" ", { trim: true });
1444
- * // ➔ false
1445
- * isNonEmptyString(" ", { trim: false });
1446
- * // ➔ true
1447
- * isNonEmptyString("");
1448
- * // ➔ false
1449
- * isNonEmptyString(123);
1450
- * // ➔ false
1451
- * isNonEmptyString(undefined);
1452
- * // ➔ false
1453
- * isNonEmptyString(null);
1454
- * // ➔ false
1455
- * isNonEmptyString({});
1456
- * // ➔ false
1457
- * isNonEmptyString([]);
1458
- * // ➔ false
1459
- */
1427
+ * * ***Type guard: `isNonEmptyString`.***
1428
+ * ----------------------------------------------------------
1429
+ * **Checks if a value is a **non-empty string**.**
1430
+ * @description
1431
+ * Determines whether the given `value` is a string containing at least one non-whitespace character, with optional trimming behavior.
1432
+ * - **Behavior:**
1433
+ * - Ensures the value is a string using **{@link isString | `isString`}**.
1434
+ * - Optionally trims whitespace before checking (`trim` defaults to `true`).
1435
+ * - Narrows type to `string` when true.
1436
+ * @param {*} value - The value to test.
1437
+ * @param {IsNonEmptyStringOptions} [options] - Optional settings.
1438
+ * @param {boolean} options.trim - If `true`, trims the string before checking, defaults: `true`.
1439
+ * @returns {boolean} Return `true` if `value` is a non-empty string, otherwise `false`.
1440
+ * @example
1441
+ * isNonEmptyString("hello");
1442
+ * // ➔ true
1443
+ * isNonEmptyString(" ", { trim: true });
1444
+ * // ➔ false
1445
+ * isNonEmptyString(" ", { trim: false });
1446
+ * // ➔ true
1447
+ * isNonEmptyString("");
1448
+ * // ➔ false
1449
+ * isNonEmptyString(123);
1450
+ * // ➔ false
1451
+ * isNonEmptyString(undefined);
1452
+ * // ➔ false
1453
+ * isNonEmptyString(null);
1454
+ * // ➔ false
1455
+ * isNonEmptyString({});
1456
+ * // ➔ false
1457
+ * isNonEmptyString([]);
1458
+ * // ➔ false
1459
+ */
1460
1460
  declare const isNonEmptyString:(value:unknown,options?:IsNonEmptyStringOptions)=>value is string;type IsNonEmptyValueOptions={
1461
1461
  /** Whether to check symbol properties when checking empty objects, default: `false`.
1462
- *
1463
- * @default false
1464
- */
1462
+ *
1463
+ * @default false
1464
+ */
1465
1465
  checkSymbols?:boolean;};
1466
1466
  /** ----------------------------------------------------------
1467
- * * ***Predicated: `isNonEmptyValue`.***
1468
- * ----------------------------------------------------------
1469
- * **Determines if a value is a **non-empty** object (`{}` with props), **non-empty** array (`[]` with items) or generally truthy.**
1470
- * - **Behavior:**
1471
- * - Returns `true` for:
1472
- * - Objects **with properties**
1473
- * - Arrays **with items**
1474
- * - Non-empty, non-whitespace strings
1475
- * - Numbers (except `NaN`, includes `0`)
1476
- * - Functions
1477
- * - `true`
1478
- * - Returns `false` for:
1479
- * - Empty objects (`{}`)
1480
- * - Empty arrays (`[]`)
1481
- * - `null` or `undefined`
1482
- * - Empty strings (`""`) or whitespace-only strings (`" "`)
1483
- * - `false`
1484
- * - `NaN`
1485
- * - Safely handles `null`, `undefined`, and non-object types without throwing.
1486
- * @param {*} value - The value to evaluate.
1487
- * @param {IsNonEmptyValueOptions} [options] - Optional settings.
1488
- * @returns {boolean} Return `true` if the value is considered non-empty/truthy, otherwise `false`.
1489
- * @example
1490
- * isNonEmptyValue({});
1491
- * // ➔ false
1492
- * isNonEmptyValue([]);
1493
- * // ➔ false
1494
- * isNonEmptyValue({ key: "value" });
1495
- * // ➔ true
1496
- * isNonEmptyValue({ [Symbol("foo")]: 123 });
1497
- * // ➔ false (default `checkSymbols` is `false`)
1498
- * isNonEmptyValue({ [Symbol("foo")]: 123 }, { checkSymbols: false });
1499
- * // ➔ false (default `checkSymbols` is `false`)
1500
- * isNonEmptyValue({ [Symbol("foo")]: 123 }, { checkSymbols: true });
1501
- * // ➔ true
1502
- * isNonEmptyValue([1, 2, 3]);
1503
- * // ➔ true
1504
- * isNonEmptyValue(NaN);
1505
- * // ➔ false
1506
- * isNonEmptyValue(true);
1507
- * // ➔ true
1508
- * isNonEmptyValue(false);
1509
- * // ➔ false
1510
- * isNonEmptyValue(null);
1511
- * // ➔ false
1512
- * isNonEmptyValue(undefined);
1513
- * // ➔ false
1514
- * isNonEmptyValue("");
1515
- * // ➔ false
1516
- * isNonEmptyValue(" ");
1517
- * // ➔ false
1518
- * isNonEmptyValue(0);
1519
- * // ➔ true
1520
- * isNonEmptyValue(-1);
1521
- * // ➔ true
1522
- * isNonEmptyValue(2);
1523
- * // ➔ true
1524
- * isNonEmptyValue(() => {});
1525
- * // ➔ true
1526
- */
1467
+ * * ***Predicated: `isNonEmptyValue`.***
1468
+ * ----------------------------------------------------------
1469
+ * **Determines if a value is a **non-empty** object (`{}` with props), **non-empty** array (`[]` with items) or generally truthy.**
1470
+ * - **Behavior:**
1471
+ * - Returns `true` for:
1472
+ * - Objects **with properties**
1473
+ * - Arrays **with items**
1474
+ * - Non-empty, non-whitespace strings
1475
+ * - Numbers (except `NaN`, includes `0`)
1476
+ * - Functions
1477
+ * - `true`
1478
+ * - Returns `false` for:
1479
+ * - Empty objects (`{}`)
1480
+ * - Empty arrays (`[]`)
1481
+ * - `null` or `undefined`
1482
+ * - Empty strings (`""`) or whitespace-only strings (`" "`)
1483
+ * - `false`
1484
+ * - `NaN`
1485
+ * - Safely handles `null`, `undefined`, and non-object types without throwing.
1486
+ * @param {*} value - The value to evaluate.
1487
+ * @param {IsNonEmptyValueOptions} [options] - Optional settings.
1488
+ * @returns {boolean} Return `true` if the value is considered non-empty/truthy, otherwise `false`.
1489
+ * @example
1490
+ * isNonEmptyValue({});
1491
+ * // ➔ false
1492
+ * isNonEmptyValue([]);
1493
+ * // ➔ false
1494
+ * isNonEmptyValue({ key: "value" });
1495
+ * // ➔ true
1496
+ * isNonEmptyValue({ [Symbol("foo")]: 123 });
1497
+ * // ➔ false (default `checkSymbols` is `false`)
1498
+ * isNonEmptyValue({ [Symbol("foo")]: 123 }, { checkSymbols: false });
1499
+ * // ➔ false (default `checkSymbols` is `false`)
1500
+ * isNonEmptyValue({ [Symbol("foo")]: 123 }, { checkSymbols: true });
1501
+ * // ➔ true
1502
+ * isNonEmptyValue([1, 2, 3]);
1503
+ * // ➔ true
1504
+ * isNonEmptyValue(NaN);
1505
+ * // ➔ false
1506
+ * isNonEmptyValue(true);
1507
+ * // ➔ true
1508
+ * isNonEmptyValue(false);
1509
+ * // ➔ false
1510
+ * isNonEmptyValue(null);
1511
+ * // ➔ false
1512
+ * isNonEmptyValue(undefined);
1513
+ * // ➔ false
1514
+ * isNonEmptyValue("");
1515
+ * // ➔ false
1516
+ * isNonEmptyValue(" ");
1517
+ * // ➔ false
1518
+ * isNonEmptyValue(0);
1519
+ * // ➔ true
1520
+ * isNonEmptyValue(-1);
1521
+ * // ➔ true
1522
+ * isNonEmptyValue(2);
1523
+ * // ➔ true
1524
+ * isNonEmptyValue(() => {});
1525
+ * // ➔ true
1526
+ */
1527
1527
  declare const isNonEmptyValue:(value:unknown,options?:IsNonEmptyValueOptions)=>boolean;
1528
1528
  /** ---------------------------------------------------------
1529
- * * ***Type guard: `isNull`.***
1530
- * ----------------------------------------------------------
1531
- * **Checks if a value is **[`null`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/null)**.**
1532
- * - **Behavior:**
1533
- * - Narrows type to `null` when true.
1534
- * - Strictly compares the value against `null`.
1535
- * @param {*} val - The value to check.
1536
- * @returns {boolean} Returns `true` if the value is `null`, otherwise `false`.
1537
- * @example
1538
- * isNull(null); // ➔ true
1539
- * isNull(0); // ➔ false
1540
- * isNull(undefined); // ➔ false
1541
- */
1529
+ * * ***Type guard: `isNull`.***
1530
+ * ----------------------------------------------------------
1531
+ * **Checks if a value is **[`null`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/null)**.**
1532
+ * - **Behavior:**
1533
+ * - Narrows type to `null` when true.
1534
+ * - Strictly compares the value against `null`.
1535
+ * @param {*} val - The value to check.
1536
+ * @returns {boolean} Returns `true` if the value is `null`, otherwise `false`.
1537
+ * @example
1538
+ * isNull(null); // ➔ true
1539
+ * isNull(0); // ➔ false
1540
+ * isNull(undefined); // ➔ false
1541
+ */
1542
1542
  declare const isNull:(val:unknown)=>val is null;type HasKeys$1<T>=keyof T extends never?false:true;type IsObject<T>=unknown extends T?T & Record<PropertyKey,unknown>:T extends object?T extends AnObjectNonArray?T:HasKeys$1<T>extends false?T & Record<PropertyKey,unknown>:IsArray<T>extends true?Exclude<T,unknown[]>:T:never;
1543
1543
  /** ---------------------------------------------------------
1544
- * * ***Type guard: `isObject`.***
1545
- * ----------------------------------------------------------
1546
- * **Checks if a value is an **object** (excluding `null` and `arrays`).**
1547
- * - **✅ Returns `true` for any non-null object (arrays excluded), including:**
1548
- * - Plain-objects (`{}`, `Object.create(null)`)
1549
- * - Custom class instances
1550
- * - Built-ins: `Date`, `RegExp`, `Error`, `URL`, `URLSearchParams`
1551
- * - Collections: `Map`, `Set`, `WeakMap`, `WeakSet`
1552
- * - Binary/typed data: `ArrayBuffer`, `DataView`, typed arrays (`Uint8Array`, `Int32Array`, etc.)
1553
- * - DOM/Node objects: `HTMLElement`, `DocumentFragment`, etc.
1554
- * - Proxies (wrapping any object type)
1555
- * - **❌ Returns `false` for:**
1556
- * - `null`
1557
- * - Arrays (`[]`, `new Array()`)
1558
- * - Functions (regular functions, arrow functions, class constructors)
1559
- * - Primitives: `string`, `number`, `boolean`, `symbol`, `bigint`
1560
- * - Boxed primitives: `new String()`, `new Number()`, `new Boolean()`
1561
- * - `undefined` (including `NaN`, which is a primitive number)
1562
- * - **ℹ️ Note:**
1563
- * - If you specifically need to check for ***plain-objects***, use **{@link isPlainObject}** instead.
1564
- * @template T - The type of the value being checked.
1565
- * @param {*} value - The value to check.
1566
- * @returns {boolean} Returns `true` if the value is a ***plain-objects***, otherwise `false`.
1567
- * @example
1568
- * isObject({}); // ➔ true
1569
- * isObject(Object.create(null)); // ➔ true
1570
- * isObject(new Date()); // ➔ true
1571
- * isObject(new Map()); // ➔ true
1572
- * isObject(new Uint8Array()); // ➔ true
1573
- * isObject(new String("x")); // ➔ true
1574
- * isObject([]); // ➔ false
1575
- * isObject(null); // ➔ false
1576
- * isObject(undefined); // ➔ false
1577
- * isObject(123); // ➔ false
1578
- * isObject(() => {}); // ➔ false
1579
- */
1544
+ * * ***Type guard: `isObject`.***
1545
+ * ----------------------------------------------------------
1546
+ * **Checks if a value is an **object** (excluding `null` and `arrays`).**
1547
+ * - **✅ Returns `true` for any non-null object (arrays excluded), including:**
1548
+ * - Plain-objects (`{}`, `Object.create(null)`)
1549
+ * - Custom class instances
1550
+ * - Built-ins: `Date`, `RegExp`, `Error`, `URL`, `URLSearchParams`
1551
+ * - Collections: `Map`, `Set`, `WeakMap`, `WeakSet`
1552
+ * - Binary/typed data: `ArrayBuffer`, `DataView`, typed arrays (`Uint8Array`, `Int32Array`, etc.)
1553
+ * - DOM/Node objects: `HTMLElement`, `DocumentFragment`, etc.
1554
+ * - Proxies (wrapping any object type)
1555
+ * - **❌ Returns `false` for:**
1556
+ * - `null`
1557
+ * - Arrays (`[]`, `new Array()`)
1558
+ * - Functions (regular functions, arrow functions, class constructors)
1559
+ * - Primitives: `string`, `number`, `boolean`, `symbol`, `bigint`
1560
+ * - Boxed primitives: `new String()`, `new Number()`, `new Boolean()`
1561
+ * - `undefined` (including `NaN`, which is a primitive number)
1562
+ * - **ℹ️ Note:**
1563
+ * - If you specifically need to check for ***plain-objects***, use **{@link isPlainObject}** instead.
1564
+ * @template T - The type of the value being checked.
1565
+ * @param {*} value - The value to check.
1566
+ * @returns {boolean} Returns `true` if the value is a ***plain-objects***, otherwise `false`.
1567
+ * @example
1568
+ * isObject({}); // ➔ true
1569
+ * isObject(Object.create(null)); // ➔ true
1570
+ * isObject(new Date()); // ➔ true
1571
+ * isObject(new Map()); // ➔ true
1572
+ * isObject(new Uint8Array()); // ➔ true
1573
+ * isObject(new String("x")); // ➔ true
1574
+ * isObject([]); // ➔ false
1575
+ * isObject(null); // ➔ false
1576
+ * isObject(undefined); // ➔ false
1577
+ * isObject(123); // ➔ false
1578
+ * isObject(() => {}); // ➔ false
1579
+ */
1580
1580
  declare function isObject<T extends object>(value:T):value is IsObject<T>;declare function isObject(value:unknown):value is Record<PropertyKey,unknown>;
1581
1581
  /** ----------------------------------------------------------
1582
- * * ***Type guard: `isObjectLoose`.***
1583
- * ----------------------------------------------------------
1584
- * **Checks if a value is the
1585
- * [ECMAScript language type **Object**](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types).**
1586
- * - **✅ Returns `true` for:**
1587
- * - Plain objects (`{}`)
1588
- * - Arrays (`[]`)
1589
- * - Functions
1590
- * - Regexes (`/abc/`)
1591
- * - Boxed primitives:
1592
- * - `new Number(0)`
1593
- * - `new String("")`
1594
- * - `new Boolean(false)`
1595
- * - **❌ Returns `false` for:**
1596
- * - `null`
1597
- * - `undefined`
1598
- * - Primitives:
1599
- * - `string`
1600
- * - `number`
1601
- * - `boolean`
1602
- * - `symbol`
1603
- * - `bigint`
1604
- * - **ℹ️ Note:**
1605
- * - **For More Strict Object Use {@link isObject} or {@link isPlainObject} instead.**
1606
- * @template T - The type of the value being checked.
1607
- * @param {*} value The value to check.
1608
- * @returns {boolean} Returns `true` if `value` is an object, else `false`.
1609
- * @example
1610
- * isObjectLoose({});
1611
- * // ➔ true
1612
- * isObjectLoose([1, 2, 3]);
1613
- * // ➔ true
1614
- * isObjectLoose(()=> {});
1615
- * // ➔ true
1616
- * isObjectLoose(null);
1617
- * // ➔ false
1618
- * isObjectLoose(undefined);
1619
- * // ➔ false
1620
- */
1582
+ * * ***Type guard: `isObjectLoose`.***
1583
+ * ----------------------------------------------------------
1584
+ * **Checks if a value is the
1585
+ * [ECMAScript language type **Object**](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types).**
1586
+ * - **✅ Returns `true` for:**
1587
+ * - Plain objects (`{}`)
1588
+ * - Arrays (`[]`)
1589
+ * - Functions
1590
+ * - Regexes (`/abc/`)
1591
+ * - Boxed primitives:
1592
+ * - `new Number(0)`
1593
+ * - `new String("")`
1594
+ * - `new Boolean(false)`
1595
+ * - **❌ Returns `false` for:**
1596
+ * - `null`
1597
+ * - `undefined`
1598
+ * - Primitives:
1599
+ * - `string`
1600
+ * - `number`
1601
+ * - `boolean`
1602
+ * - `symbol`
1603
+ * - `bigint`
1604
+ * - **ℹ️ Note:**
1605
+ * - **For More Strict Object Use {@link isObject} or {@link isPlainObject} instead.**
1606
+ * @template T - The type of the value being checked.
1607
+ * @param {*} value The value to check.
1608
+ * @returns {boolean} Returns `true` if `value` is an object, else `false`.
1609
+ * @example
1610
+ * isObjectLoose({});
1611
+ * // ➔ true
1612
+ * isObjectLoose([1, 2, 3]);
1613
+ * // ➔ true
1614
+ * isObjectLoose(()=> {});
1615
+ * // ➔ true
1616
+ * isObjectLoose(null);
1617
+ * // ➔ false
1618
+ * isObjectLoose(undefined);
1619
+ * // ➔ false
1620
+ */
1621
1621
  declare function isObjectLoose<T=object>(value:unknown):value is T;type HasKeys<T>=keyof T extends never?false:true;type IsObjectOrArray<T>=OrArr<[ IsNever<T>,Extends<T,Record<PropertyKey,unknown>>,Extends<unknown,T>]>extends true?T & Record<PropertyKey,unknown>& unknown[]:T extends object?T extends unknown[]?T:T extends AnObjectNonArray?T:HasKeys<T>extends false?T & Record<PropertyKey,unknown>:T:Extract<T,Record<PropertyKey,unknown>& unknown[]>;
1622
1622
  /** ---------------------------------------------------------
1623
- * * ***Type guard: `isObjectOrArray`.***
1624
- * ----------------------------------------------------------
1625
- * **Checks if a value is an **object** or an **array**.**
1626
- * - **✅ Returns `true` for:**
1627
- * - Plain objects (`{}`, `Object.create(null)`)
1628
- * - Custom objects
1629
- * - Arrays (`[]`, `[1,2,3]`)
1630
- * - **❌ Returns `false` for:**
1631
- * - `null`
1632
- * - `undefined`
1633
- * - Primitives:
1634
- * - `string`
1635
- * - `number`
1636
- * - `boolean`
1637
- * - `symbol`
1638
- * - `bigint`
1639
- * - Functions
1640
- * @template T - The type of the value being checked.
1641
- * @param {*} value - The value to check.
1642
- * @returns {boolean} Returns `true` if the value is an `object` or `array`.
1643
- * @example
1644
- * isObjectOrArray({ name: "Alice" }); // ➔ true
1645
- * isObjectOrArray([1,2,3]); // ➔ true
1646
- * isObjectOrArray(null); // ➔ false
1647
- * isObjectOrArray(undefined); // ➔ false
1648
- * isObjectOrArray("hello"); // ➔ false
1649
- */
1623
+ * * ***Type guard: `isObjectOrArray`.***
1624
+ * ----------------------------------------------------------
1625
+ * **Checks if a value is an **object** or an **array**.**
1626
+ * - **✅ Returns `true` for:**
1627
+ * - Plain objects (`{}`, `Object.create(null)`)
1628
+ * - Custom objects
1629
+ * - Arrays (`[]`, `[1,2,3]`)
1630
+ * - **❌ Returns `false` for:**
1631
+ * - `null`
1632
+ * - `undefined`
1633
+ * - Primitives:
1634
+ * - `string`
1635
+ * - `number`
1636
+ * - `boolean`
1637
+ * - `symbol`
1638
+ * - `bigint`
1639
+ * - Functions
1640
+ * @template T - The type of the value being checked.
1641
+ * @param {*} value - The value to check.
1642
+ * @returns {boolean} Returns `true` if the value is an `object` or `array`.
1643
+ * @example
1644
+ * isObjectOrArray({ name: "Alice" }); // ➔ true
1645
+ * isObjectOrArray([1,2,3]); // ➔ true
1646
+ * isObjectOrArray(null); // ➔ false
1647
+ * isObjectOrArray(undefined); // ➔ false
1648
+ * isObjectOrArray("hello"); // ➔ false
1649
+ */
1650
1650
  declare function isObjectOrArray(value:[]):value is [];declare function isObjectOrArray<T>(value:T):value is IsObjectOrArray<T>;
1651
1651
  /** ----------------------------------------------------------
1652
- * * ***Type guard: `PropertyKey`.***
1653
- * ----------------------------------------------------------
1654
- * **Checks if a value is a valid `PropertyKey`.**
1655
- * - **In JavaScript/TypeScript, a **`PropertyKey`** is any of:**
1656
- * - **`string`**
1657
- * - **`number`**
1658
- * - **`symbol`**
1659
- * - **This function ensures the given `value` is one of these types.**
1660
- * - Narrows type to {@link PropertyKey | ***`PropertyKey`***} when true.
1661
- * - Useful for working with dynamic object keys.
1662
- * - Strictly rejects `null`, `undefined`, `boolean`, `object`, `function`, etc.
1663
- * @param {*} value - The value to check.
1664
- * @returns {boolean} Return `true` if `value` is a valid property key, otherwise `false`.
1665
- * @example
1666
- * isPropertyKey("foo");
1667
- * // ➔ true
1668
- * isPropertyKey(123);
1669
- * // ➔ true
1670
- * isPropertyKey(Symbol("id"));
1671
- * // ➔ true
1672
- * isPropertyKey({});
1673
- * // ➔ false
1674
- * isPropertyKey(null);
1675
- * // ➔ false
1676
- */
1652
+ * * ***Type guard: `PropertyKey`.***
1653
+ * ----------------------------------------------------------
1654
+ * **Checks if a value is a valid `PropertyKey`.**
1655
+ * - **In JavaScript/TypeScript, a **`PropertyKey`** is any of:**
1656
+ * - **`string`**
1657
+ * - **`number`**
1658
+ * - **`symbol`**
1659
+ * - **This function ensures the given `value` is one of these types.**
1660
+ * - Narrows type to {@link PropertyKey | ***`PropertyKey`***} when true.
1661
+ * - Useful for working with dynamic object keys.
1662
+ * - Strictly rejects `null`, `undefined`, `boolean`, `object`, `function`, etc.
1663
+ * @param {*} value - The value to check.
1664
+ * @returns {boolean} Return `true` if `value` is a valid property key, otherwise `false`.
1665
+ * @example
1666
+ * isPropertyKey("foo");
1667
+ * // ➔ true
1668
+ * isPropertyKey(123);
1669
+ * // ➔ true
1670
+ * isPropertyKey(Symbol("id"));
1671
+ * // ➔ true
1672
+ * isPropertyKey({});
1673
+ * // ➔ false
1674
+ * isPropertyKey(null);
1675
+ * // ➔ false
1676
+ */
1677
1677
  declare function isPropertyKey(value:unknown):value is PropertyKey;
1678
1678
  /** ----------------------------------------------------------
1679
- * * ***Type guard: `isRegExp`.***
1680
- * ----------------------------------------------------------
1681
- * **Checks if a value is a RegExp instance.**
1682
- * @param {*} value - The value to check.
1683
- * @returns {boolean} Return `true` if value is an instance of **[RegExp](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp)**.
1684
- * @example
1685
- * isRegExp(/abc/); // ➔ true
1686
- * isRegExp(new RegExp("abc")); // ➔ true
1687
- * isRegExp("abc"); // ➔ false
1688
- */
1679
+ * * ***Type guard: `isRegExp`.***
1680
+ * ----------------------------------------------------------
1681
+ * **Checks if a value is a RegExp instance.**
1682
+ * @param {*} value - The value to check.
1683
+ * @returns {boolean} Return `true` if value is an instance of **[RegExp](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp)**.
1684
+ * @example
1685
+ * isRegExp(/abc/); // ➔ true
1686
+ * isRegExp(new RegExp("abc")); // ➔ true
1687
+ * isRegExp("abc"); // ➔ false
1688
+ */
1689
1689
  declare const isRegExp:(value:unknown)=>value is RegExp;
1690
1690
  /** --------------------------------------------------
1691
- * * ***Type guard: `isSafeInteger`.***
1692
- * --------------------------------------------------
1693
- * **Checks if `value` is a **[`Safe-Integer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger)**.**
1694
- * - **Behavior:**
1695
- * - Narrows type to `number` when true.
1696
- * - **An integer is considered *safe* if:**
1697
- * - It is an `IEEE-754` **double precision number**.
1698
- * - It can be exactly represented without rounding errors.
1699
- * - It lies within the range **-(2^53 - 1) to 2^53 - 1**.
1700
- * - **Note:**
1701
- * - This method is based on **{@link Number.isSafeInteger}**.
1702
- * @param {*} value - The value to check.
1703
- * @returns {boolean} Return `true` if `value` is a safe integer, otherwise `false`.
1704
- * @example
1705
- * isSafeInteger(3);
1706
- * // ➔ true
1707
- * isSafeInteger(Number.MIN_VALUE);
1708
- * // ➔ false
1709
- * isSafeInteger(Infinity);
1710
- * // ➔ false
1711
- * isSafeInteger('3');
1712
- * // ➔ false
1713
- */
1691
+ * * ***Type guard: `isSafeInteger`.***
1692
+ * --------------------------------------------------
1693
+ * **Checks if `value` is a **[`Safe-Integer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger)**.**
1694
+ * - **Behavior:**
1695
+ * - Narrows type to `number` when true.
1696
+ * - **An integer is considered *safe* if:**
1697
+ * - It is an `IEEE-754` **double precision number**.
1698
+ * - It can be exactly represented without rounding errors.
1699
+ * - It lies within the range **-(2^53 - 1) to 2^53 - 1**.
1700
+ * - **Note:**
1701
+ * - This method is based on **{@link Number.isSafeInteger}**.
1702
+ * @param {*} value - The value to check.
1703
+ * @returns {boolean} Return `true` if `value` is a safe integer, otherwise `false`.
1704
+ * @example
1705
+ * isSafeInteger(3);
1706
+ * // ➔ true
1707
+ * isSafeInteger(Number.MIN_VALUE);
1708
+ * // ➔ false
1709
+ * isSafeInteger(Infinity);
1710
+ * // ➔ false
1711
+ * isSafeInteger('3');
1712
+ * // ➔ false
1713
+ */
1714
1714
  declare function isSafeInteger(value:unknown):value is number;
1715
1715
  /** ---------------------------------------------------------
1716
- * * ***Type guard: `isSet`.***
1717
- * ----------------------------------------------------------
1718
- * **Checks if a value is a **[`Set`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/Set)** object.**
1719
- * - **Behavior:**
1720
- * - Narrows type to `Set<T>` when true.
1721
- * - Excludes `WeakSet`, arrays, plain objects, and other non-Set values.
1722
- * @template T - The type of the value being checked.
1723
- * @param {*} value - The value to check.
1724
- * @returns {boolean} Returns `true` if the value is a `Set`, otherwise `false`.
1725
- * @example
1726
- * isSet(new Set);
1727
- * // ➔ true
1728
- * isSet(new WeakSet);
1729
- * // ➔ false
1730
- */
1716
+ * * ***Type guard: `isSet`.***
1717
+ * ----------------------------------------------------------
1718
+ * **Checks if a value is a **[`Set`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/Set)** object.**
1719
+ * - **Behavior:**
1720
+ * - Narrows type to `Set<T>` when true.
1721
+ * - Excludes `WeakSet`, arrays, plain objects, and other non-Set values.
1722
+ * @template T - The type of the value being checked.
1723
+ * @param {*} value - The value to check.
1724
+ * @returns {boolean} Returns `true` if the value is a `Set`, otherwise `false`.
1725
+ * @example
1726
+ * isSet(new Set);
1727
+ * // ➔ true
1728
+ * isSet(new WeakSet);
1729
+ * // ➔ false
1730
+ */
1731
1731
  declare function isSet<T=unknown>(value:Set<T>):value is Set<T>;declare function isSet(value:unknown):value is Set<unknown>;
1732
1732
  /** ---------------------------------------------------------
1733
- * * ***Type guard: `isString`.***
1734
- * ----------------------------------------------------------
1735
- * **Checks if a value is of type
1736
- * **[`string`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)**.**
1737
- * - **Behavior:**
1738
- * - Narrows type to `string` when true.
1739
- * - Uses the `typeof` operator for strict checking.
1740
- * @param {*} value - The value to check.
1741
- * @returns {boolean} Returns `true` if the value is a string, otherwise `false`.
1742
- * @example
1743
- * isString("hello"); // ➔ true
1744
- * isString(123); // ➔ false
1745
- *
1746
- * // Usage in type narrowing
1747
- * const value: unknown = getValue();
1748
- * if (isString(value)) {
1749
- * // TypeScript now knows `value` is a string
1750
- * console.log(value.toUpperCase());
1751
- * }
1752
- */
1733
+ * * ***Type guard: `isString`.***
1734
+ * ----------------------------------------------------------
1735
+ * **Checks if a value is of type
1736
+ * **[`string`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)**.**
1737
+ * - **Behavior:**
1738
+ * - Narrows type to `string` when true.
1739
+ * - Uses the `typeof` operator for strict checking.
1740
+ * @param {*} value - The value to check.
1741
+ * @returns {boolean} Returns `true` if the value is a string, otherwise `false`.
1742
+ * @example
1743
+ * isString("hello"); // ➔ true
1744
+ * isString(123); // ➔ false
1745
+ *
1746
+ * // Usage in type narrowing
1747
+ * const value: unknown = getValue();
1748
+ * if (isString(value)) {
1749
+ * // TypeScript now knows `value` is a string
1750
+ * console.log(value.toUpperCase());
1751
+ * }
1752
+ */
1753
1753
  declare const isString:(value:unknown)=>value is string;
1754
1754
  /** ----------------------------------------------------------
1755
- * * ***Type guard: `isSymbol`.***
1756
- * ----------------------------------------------------------
1757
- * **Checks if a value is of type
1758
- * **[`symbol`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/Symbol)**.**
1759
- * - **Behavior:**
1760
- * - Narrows type to `symbol` when true.
1761
- * - Uses the `typeof` operator for strict checking.
1762
- * @param {*} value - The value to check.
1763
- * @returns {boolean} Returns `true` if the value is a symbol, otherwise `false`.
1764
- * @example
1765
- * isSymbol(Symbol("id")); // ➔ true
1766
- * isSymbol("not a symbol"); // ➔ false
1767
- * isSymbol(123); // ➔ false
1768
- * isSymbol(undefined); // ➔ false
1769
- */
1755
+ * * ***Type guard: `isSymbol`.***
1756
+ * ----------------------------------------------------------
1757
+ * **Checks if a value is of type
1758
+ * **[`symbol`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/Symbol)**.**
1759
+ * - **Behavior:**
1760
+ * - Narrows type to `symbol` when true.
1761
+ * - Uses the `typeof` operator for strict checking.
1762
+ * @param {*} value - The value to check.
1763
+ * @returns {boolean} Returns `true` if the value is a symbol, otherwise `false`.
1764
+ * @example
1765
+ * isSymbol(Symbol("id")); // ➔ true
1766
+ * isSymbol("not a symbol"); // ➔ false
1767
+ * isSymbol(123); // ➔ false
1768
+ * isSymbol(undefined); // ➔ false
1769
+ */
1770
1770
  declare const isSymbol:(value:unknown)=>value is symbol;
1771
1771
  /** --------------------------------------------------
1772
- * * ***Type guard: `isTypedArray`.***
1773
- * ----------------------------------------------------------
1774
- * **Checks if `value` is classified as a
1775
- * **[TypedArray](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray)**.**
1776
- * - **Behavior:**
1777
- * - Validates that `value` is a non-null object.
1778
- * - Uses `Object.prototype.toString` tag matching against known typed array tags.
1779
- * - Narrows type to **{@link TypedArray}** when true.
1780
- * @param {*} value - The value to check.
1781
- * @returns {boolean} Returns `true` if the value is a typed array, otherwise `false`.
1782
- * @example
1783
- * isTypedArray(new Uint8Array); // ➔ true
1784
- * isTypedArray(new Uint8Array()); // ➔ true
1785
- * isTypedArray(new Float32Array()); // ➔ true
1786
- * isTypedArray(new Uint8ClampedArray()); // ➔ true
1787
- * isTypedArray([]); // ➔ false
1788
- * isTypedArray(Buffer.from("hi")); // ➔ false
1789
- */
1772
+ * * ***Type guard: `isTypedArray`.***
1773
+ * ----------------------------------------------------------
1774
+ * **Checks if `value` is classified as a
1775
+ * **[TypedArray](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray)**.**
1776
+ * - **Behavior:**
1777
+ * - Validates that `value` is a non-null object.
1778
+ * - Uses `Object.prototype.toString` tag matching against known typed array tags.
1779
+ * - Narrows type to **{@link TypedArray}** when true.
1780
+ * @param {*} value - The value to check.
1781
+ * @returns {boolean} Returns `true` if the value is a typed array, otherwise `false`.
1782
+ * @example
1783
+ * isTypedArray(new Uint8Array); // ➔ true
1784
+ * isTypedArray(new Uint8Array()); // ➔ true
1785
+ * isTypedArray(new Float32Array()); // ➔ true
1786
+ * isTypedArray(new Uint8ClampedArray()); // ➔ true
1787
+ * isTypedArray([]); // ➔ false
1788
+ * isTypedArray(Buffer.from("hi")); // ➔ false
1789
+ */
1790
1790
  declare function isTypedArray(value:unknown):value is TypedArray;
1791
1791
  /** ---------------------------------------------------------
1792
- * * ***Type guard: `isURL`.***
1793
- * ----------------------------------------------------------
1794
- * **Checks if a value is an instance of the
1795
- * **[`URL`](https://developer.mozilla.org/docs/Web/API/URL)** class.**
1796
- * - **Behavior:**
1797
- * - Narrows type to `URL` when true.
1798
- * - Excludes `strings`, `plain-objects`, and `other non-URL values`.
1799
- * @param {*} value - The value to check.
1800
- * @returns {boolean} Returns `true` if the value is an instance of `URL`, otherwise `false`.
1801
- * @example
1802
- * isURL(new URL("https://example.com"));
1803
- * // ➔ true
1804
- * isURL("https://example.com");
1805
- * // ➔ false
1806
- */
1792
+ * * ***Type guard: `isURL`.***
1793
+ * ----------------------------------------------------------
1794
+ * **Checks if a value is an instance of the
1795
+ * **[`URL`](https://developer.mozilla.org/docs/Web/API/URL)** class.**
1796
+ * - **Behavior:**
1797
+ * - Narrows type to `URL` when true.
1798
+ * - Excludes `strings`, `plain-objects`, and `other non-URL values`.
1799
+ * @param {*} value - The value to check.
1800
+ * @returns {boolean} Returns `true` if the value is an instance of `URL`, otherwise `false`.
1801
+ * @example
1802
+ * isURL(new URL("https://example.com"));
1803
+ * // ➔ true
1804
+ * isURL("https://example.com");
1805
+ * // ➔ false
1806
+ */
1807
1807
  declare const isURL:(value:unknown)=>value is URL;
1808
1808
  /** ---------------------------------------------------------
1809
- * * ***Type guard: `isUndefined`.***
1810
- * ----------------------------------------------------------
1811
- * **Checks if a value is
1812
- * **[`undefined`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined)**.**
1813
- * - **Behavior:**
1814
- * - Narrows type to `undefined` when true.
1815
- * - Excludes `null`, `objects`, `arrays`, `strings`, `numbers`, and
1816
- * `all other values`.
1817
- * @param {*} value - The value to check.
1818
- * @returns {boolean} Returns `true` if the value is `undefined`, otherwise `false`.
1819
- * @example
1820
- * isUndefined(undefined); // ➔ true
1821
- * isUndefined([]); // ➔ false
1822
- * isUndefined(123); // ➔ false
1823
- * isUndefined(null); // ➔ false
1824
- * isUndefined("abc"); // ➔ false
1825
- */
1809
+ * * ***Type guard: `isUndefined`.***
1810
+ * ----------------------------------------------------------
1811
+ * **Checks if a value is
1812
+ * **[`undefined`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined)**.**
1813
+ * - **Behavior:**
1814
+ * - Narrows type to `undefined` when true.
1815
+ * - Excludes `null`, `objects`, `arrays`, `strings`, `numbers`, and
1816
+ * `all other values`.
1817
+ * @param {*} value - The value to check.
1818
+ * @returns {boolean} Returns `true` if the value is `undefined`, otherwise `false`.
1819
+ * @example
1820
+ * isUndefined(undefined); // ➔ true
1821
+ * isUndefined([]); // ➔ false
1822
+ * isUndefined(123); // ➔ false
1823
+ * isUndefined(null); // ➔ false
1824
+ * isUndefined("abc"); // ➔ false
1825
+ */
1826
1826
  declare const isUndefined:(value:unknown)=>value is undefined;
1827
1827
  /** ---------------------------------------------------------
1828
- * * ***Predicate: `isValidURL`.***
1829
- * ---------------------------------------------------------
1830
- * **Validates whether a given string is a properly formatted URL.**
1831
- * - **Ensures that the input is:**
1832
- * - A non-empty string.
1833
- * - A valid **[URL](https://developer.mozilla.org/docs/Web/API/URL)** with `http://` or `https://` scheme.
1834
- * - **Behavior:**
1835
- * - ✅ Includes decoding for percent-encoded URLs (e.g., `https%3A%2F%2F...`).
1836
- * - ❌ Rejects invalid strings, unsupported schemes, and malformed domains.
1837
- * @param {*} url - The value to validate.
1838
- * @returns {boolean} Return `true` if the value is a **valid URL string**, otherwise `false`.
1839
- * @example
1840
- * isValidURL("https://example.com");
1841
- * // ➔ true
1842
- * isValidURL("ftp://example.com");
1843
- * // ➔ false
1844
- * isValidURL("not-a-url");
1845
- * // ➔ false
1846
- */
1828
+ * * ***Predicate: `isValidURL`.***
1829
+ * ---------------------------------------------------------
1830
+ * **Validates whether a given string is a properly formatted URL.**
1831
+ * - **Ensures that the input is:**
1832
+ * - A non-empty string.
1833
+ * - A valid **[URL](https://developer.mozilla.org/docs/Web/API/URL)** with `http://` or `https://` scheme.
1834
+ * - **Behavior:**
1835
+ * - ✅ Includes decoding for percent-encoded URLs (e.g., `https%3A%2F%2F...`).
1836
+ * - ❌ Rejects invalid strings, unsupported schemes, and malformed domains.
1837
+ * @param {*} url - The value to validate.
1838
+ * @returns {boolean} Return `true` if the value is a **valid URL string**, otherwise `false`.
1839
+ * @example
1840
+ * isValidURL("https://example.com");
1841
+ * // ➔ true
1842
+ * isValidURL("ftp://example.com");
1843
+ * // ➔ false
1844
+ * isValidURL("not-a-url");
1845
+ * // ➔ false
1846
+ */
1847
1847
  declare const isValidURL:(url:unknown)=>boolean;
1848
1848
  /** --------------------------------------------------
1849
- * * ***Type guard: `isWeakMap`.***
1850
- * ----------------------------------------------------------
1851
- * **Checks if a value is a **[`WeakMap`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/WeakMap)** object.**
1852
- * - **Behavior:**
1853
- * - Narrows type to `WeakMap<K, V>` when true.
1854
- * - Excludes `Map`, `arrays`, `plain-objects,` and `other non-WeakMap values`.
1855
- * @template K - Keys must be objects.
1856
- * @template V - Type of values stored in the WeakMap.
1857
- * @param {*} value - The value to check.
1858
- * @returns {boolean} Returns `true` if the value is a `WeakMap`, otherwise `false`.
1859
- * @example
1860
- * isWeakMap(new WeakMap);
1861
- * // ➔ true
1862
- * isWeakMap(new Map);
1863
- * // ➔ false
1864
- */
1849
+ * * ***Type guard: `isWeakMap`.***
1850
+ * ----------------------------------------------------------
1851
+ * **Checks if a value is a **[`WeakMap`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/WeakMap)** object.**
1852
+ * - **Behavior:**
1853
+ * - Narrows type to `WeakMap<K, V>` when true.
1854
+ * - Excludes `Map`, `arrays`, `plain-objects,` and `other non-WeakMap values`.
1855
+ * @template K - Keys must be objects.
1856
+ * @template V - Type of values stored in the WeakMap.
1857
+ * @param {*} value - The value to check.
1858
+ * @returns {boolean} Returns `true` if the value is a `WeakMap`, otherwise `false`.
1859
+ * @example
1860
+ * isWeakMap(new WeakMap);
1861
+ * // ➔ true
1862
+ * isWeakMap(new Map);
1863
+ * // ➔ false
1864
+ */
1865
1865
  declare function isWeakMap<K extends object=object,V=unknown>(value:unknown):value is WeakMap<K,V>;export{type IsArrayResult,IsPlainObjectResult,areArraysEqual,areObjectsEqual,areURLsEqualPath,areURLsIdentical,arrayHasAnyMatch,doesKeyExist,hasOwnProp,isArguments,isArray,isArrayBuffer,isArrayLike,isArrayLikeObject,isBigInt,isBoolean,isBuffer,isCurrencyLike,isDate,isDeepEqual,isElement,isEmpty,isEmptyArray,isEmptyDeep,isEmptyObject,isEmptyString,isEmptyValue,isEqual,isEqualWith,isError,isFinite,isFunction,isInteger,isLength,isMap,isMatch,isMatchWith,isNaN,isNative,isNil,isNonEmptyArray,isNonEmptyString,isNonEmptyValue,isNull,isObject,isObjectLoose,isObjectOrArray,isPropertyKey,isRegExp,isSafeInteger,isSet,isString,isSymbol,isTypedArray,isURL,isUndefined,isValidURL,isWeakMap,textContainsAll,textContainsAny};