@fluixi/utils 1.0.0-alpha.53

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (354) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +73 -0
  3. package/dist/index.cjs +1 -0
  4. package/dist/index.d.ts +2 -0
  5. package/dist/index.d.ts.map +1 -0
  6. package/dist/index.js +1 -0
  7. package/dist/index.mjs +1 -0
  8. package/dist/lib/array/advanced.cjs +1 -0
  9. package/dist/lib/array/advanced.d.ts +1116 -0
  10. package/dist/lib/array/advanced.d.ts.map +1 -0
  11. package/dist/lib/array/advanced.js +2429 -0
  12. package/dist/lib/array/advanced.mjs +1 -0
  13. package/dist/lib/array/array.cjs +1 -0
  14. package/dist/lib/array/array.d.ts +6 -0
  15. package/dist/lib/array/array.d.ts.map +1 -0
  16. package/dist/lib/array/array.js +31 -0
  17. package/dist/lib/array/array.mjs +1 -0
  18. package/dist/lib/array/index.cjs +1 -0
  19. package/dist/lib/array/index.d.ts +4 -0
  20. package/dist/lib/array/index.d.ts.map +1 -0
  21. package/dist/lib/array/index.js +3 -0
  22. package/dist/lib/array/index.mjs +1 -0
  23. package/dist/lib/array/utils.cjs +1 -0
  24. package/dist/lib/array/utils.d.ts +100 -0
  25. package/dist/lib/array/utils.d.ts.map +1 -0
  26. package/dist/lib/array/utils.js +165 -0
  27. package/dist/lib/array/utils.mjs +1 -0
  28. package/dist/lib/color/color.cjs +1 -0
  29. package/dist/lib/color/color.d.ts +366 -0
  30. package/dist/lib/color/color.d.ts.map +1 -0
  31. package/dist/lib/color/color.js +722 -0
  32. package/dist/lib/color/color.mjs +1 -0
  33. package/dist/lib/color/constants.cjs +1 -0
  34. package/dist/lib/color/constants.d.ts +361 -0
  35. package/dist/lib/color/constants.d.ts.map +1 -0
  36. package/dist/lib/color/constants.js +358 -0
  37. package/dist/lib/color/constants.mjs +1 -0
  38. package/dist/lib/color/conversions.cjs +1 -0
  39. package/dist/lib/color/conversions.d.ts +166 -0
  40. package/dist/lib/color/conversions.d.ts.map +1 -0
  41. package/dist/lib/color/conversions.js +766 -0
  42. package/dist/lib/color/conversions.mjs +1 -0
  43. package/dist/lib/color/helpers.cjs +1 -0
  44. package/dist/lib/color/helpers.d.ts +75 -0
  45. package/dist/lib/color/helpers.d.ts.map +1 -0
  46. package/dist/lib/color/helpers.js +419 -0
  47. package/dist/lib/color/helpers.mjs +1 -0
  48. package/dist/lib/color/index.cjs +1 -0
  49. package/dist/lib/color/index.d.ts +12 -0
  50. package/dist/lib/color/index.d.ts.map +1 -0
  51. package/dist/lib/color/index.js +15 -0
  52. package/dist/lib/color/index.mjs +1 -0
  53. package/dist/lib/color/types.cjs +1 -0
  54. package/dist/lib/color/types.d.ts +179 -0
  55. package/dist/lib/color/types.d.ts.map +1 -0
  56. package/dist/lib/color/types.js +1 -0
  57. package/dist/lib/color/types.mjs +0 -0
  58. package/dist/lib/color/utils.cjs +1 -0
  59. package/dist/lib/color/utils.d.ts +199 -0
  60. package/dist/lib/color/utils.d.ts.map +1 -0
  61. package/dist/lib/color/utils.js +858 -0
  62. package/dist/lib/color/utils.mjs +1 -0
  63. package/dist/lib/compare/comparators.cjs +1 -0
  64. package/dist/lib/compare/comparators.d.ts +65 -0
  65. package/dist/lib/compare/comparators.d.ts.map +1 -0
  66. package/dist/lib/compare/comparators.js +210 -0
  67. package/dist/lib/compare/comparators.mjs +1 -0
  68. package/dist/lib/compare/index.cjs +1 -0
  69. package/dist/lib/compare/index.d.ts +2 -0
  70. package/dist/lib/compare/index.d.ts.map +1 -0
  71. package/dist/lib/compare/index.js +1 -0
  72. package/dist/lib/compare/index.mjs +1 -0
  73. package/dist/lib/crypto/hash.cjs +1 -0
  74. package/dist/lib/crypto/hash.d.ts +6 -0
  75. package/dist/lib/crypto/hash.d.ts.map +1 -0
  76. package/dist/lib/crypto/hash.js +53 -0
  77. package/dist/lib/crypto/hash.mjs +1 -0
  78. package/dist/lib/crypto/index.cjs +1 -0
  79. package/dist/lib/crypto/index.d.ts +2 -0
  80. package/dist/lib/crypto/index.d.ts.map +1 -0
  81. package/dist/lib/crypto/index.js +1 -0
  82. package/dist/lib/crypto/index.mjs +1 -0
  83. package/dist/lib/dom/events.cjs +1 -0
  84. package/dist/lib/dom/events.d.ts +159 -0
  85. package/dist/lib/dom/events.d.ts.map +1 -0
  86. package/dist/lib/dom/events.js +50 -0
  87. package/dist/lib/dom/events.mjs +1 -0
  88. package/dist/lib/dom/index.cjs +1 -0
  89. package/dist/lib/dom/index.d.ts +3 -0
  90. package/dist/lib/dom/index.d.ts.map +1 -0
  91. package/dist/lib/dom/index.js +2 -0
  92. package/dist/lib/dom/index.mjs +1 -0
  93. package/dist/lib/dom/utils.cjs +1 -0
  94. package/dist/lib/dom/utils.d.ts +6 -0
  95. package/dist/lib/dom/utils.d.ts.map +1 -0
  96. package/dist/lib/dom/utils.js +37 -0
  97. package/dist/lib/dom/utils.mjs +1 -0
  98. package/dist/lib/functions/functions.cjs +1 -0
  99. package/dist/lib/functions/functions.d.ts +329 -0
  100. package/dist/lib/functions/functions.d.ts.map +1 -0
  101. package/dist/lib/functions/functions.js +585 -0
  102. package/dist/lib/functions/functions.mjs +1 -0
  103. package/dist/lib/functions/index.cjs +1 -0
  104. package/dist/lib/functions/index.d.ts +3 -0
  105. package/dist/lib/functions/index.d.ts.map +1 -0
  106. package/dist/lib/functions/index.js +1 -0
  107. package/dist/lib/functions/index.mjs +1 -0
  108. package/dist/lib/functions/types.cjs +1 -0
  109. package/dist/lib/functions/types.d.ts +2 -0
  110. package/dist/lib/functions/types.d.ts.map +1 -0
  111. package/dist/lib/functions/types.js +1 -0
  112. package/dist/lib/functions/types.mjs +0 -0
  113. package/dist/lib/helpers.cjs +1 -0
  114. package/dist/lib/helpers.d.ts +13 -0
  115. package/dist/lib/helpers.d.ts.map +1 -0
  116. package/dist/lib/helpers.js +66 -0
  117. package/dist/lib/helpers.mjs +1 -0
  118. package/dist/lib/index.cjs +1 -0
  119. package/dist/lib/index.d.ts +6 -0
  120. package/dist/lib/index.d.ts.map +1 -0
  121. package/dist/lib/index.js +8 -0
  122. package/dist/lib/index.mjs +1 -0
  123. package/dist/lib/maths/constants.cjs +1 -0
  124. package/dist/lib/maths/constants.d.ts +84 -0
  125. package/dist/lib/maths/constants.d.ts.map +1 -0
  126. package/dist/lib/maths/constants.js +79 -0
  127. package/dist/lib/maths/constants.mjs +1 -0
  128. package/dist/lib/maths/fn/advanced.cjs +1 -0
  129. package/dist/lib/maths/fn/advanced.d.ts +149 -0
  130. package/dist/lib/maths/fn/advanced.d.ts.map +1 -0
  131. package/dist/lib/maths/fn/advanced.js +264 -0
  132. package/dist/lib/maths/fn/advanced.mjs +1 -0
  133. package/dist/lib/maths/fn/basic.cjs +1 -0
  134. package/dist/lib/maths/fn/basic.d.ts +182 -0
  135. package/dist/lib/maths/fn/basic.d.ts.map +1 -0
  136. package/dist/lib/maths/fn/basic.js +343 -0
  137. package/dist/lib/maths/fn/basic.mjs +1 -0
  138. package/dist/lib/maths/fn/complex.cjs +1 -0
  139. package/dist/lib/maths/fn/complex.d.ts +153 -0
  140. package/dist/lib/maths/fn/complex.d.ts.map +1 -0
  141. package/dist/lib/maths/fn/complex.js +383 -0
  142. package/dist/lib/maths/fn/complex.mjs +1 -0
  143. package/dist/lib/maths/fn/index.cjs +1 -0
  144. package/dist/lib/maths/fn/index.d.ts +10 -0
  145. package/dist/lib/maths/fn/index.d.ts.map +1 -0
  146. package/dist/lib/maths/fn/index.js +9 -0
  147. package/dist/lib/maths/fn/index.mjs +1 -0
  148. package/dist/lib/maths/fn/trigo.cjs +1 -0
  149. package/dist/lib/maths/fn/trigo.d.ts +147 -0
  150. package/dist/lib/maths/fn/trigo.d.ts.map +1 -0
  151. package/dist/lib/maths/fn/trigo.js +227 -0
  152. package/dist/lib/maths/fn/trigo.mjs +1 -0
  153. package/dist/lib/maths/fn/vector.cjs +1 -0
  154. package/dist/lib/maths/fn/vector.d.ts +512 -0
  155. package/dist/lib/maths/fn/vector.d.ts.map +1 -0
  156. package/dist/lib/maths/fn/vector.js +1136 -0
  157. package/dist/lib/maths/fn/vector.mjs +1 -0
  158. package/dist/lib/maths/formatter.cjs +1 -0
  159. package/dist/lib/maths/formatter.d.ts +35 -0
  160. package/dist/lib/maths/formatter.d.ts.map +1 -0
  161. package/dist/lib/maths/formatter.js +56 -0
  162. package/dist/lib/maths/formatter.mjs +1 -0
  163. package/dist/lib/maths/guards.cjs +1 -0
  164. package/dist/lib/maths/guards.d.ts +166 -0
  165. package/dist/lib/maths/guards.d.ts.map +1 -0
  166. package/dist/lib/maths/guards.js +315 -0
  167. package/dist/lib/maths/guards.mjs +1 -0
  168. package/dist/lib/maths/index.cjs +1 -0
  169. package/dist/lib/maths/index.d.ts +24 -0
  170. package/dist/lib/maths/index.d.ts.map +1 -0
  171. package/dist/lib/maths/index.js +29 -0
  172. package/dist/lib/maths/index.mjs +1 -0
  173. package/dist/lib/maths/parser.cjs +1 -0
  174. package/dist/lib/maths/parser.d.ts +20 -0
  175. package/dist/lib/maths/parser.d.ts.map +1 -0
  176. package/dist/lib/maths/parser.js +78 -0
  177. package/dist/lib/maths/parser.mjs +1 -0
  178. package/dist/lib/maths/random.cjs +1 -0
  179. package/dist/lib/maths/random.d.ts +27 -0
  180. package/dist/lib/maths/random.d.ts.map +1 -0
  181. package/dist/lib/maths/random.js +49 -0
  182. package/dist/lib/maths/random.mjs +1 -0
  183. package/dist/lib/maths/types/advanced.cjs +1 -0
  184. package/dist/lib/maths/types/advanced.d.ts +357 -0
  185. package/dist/lib/maths/types/advanced.d.ts.map +1 -0
  186. package/dist/lib/maths/types/advanced.js +5 -0
  187. package/dist/lib/maths/types/advanced.mjs +0 -0
  188. package/dist/lib/maths/types/basic.cjs +1 -0
  189. package/dist/lib/maths/types/basic.d.ts +95 -0
  190. package/dist/lib/maths/types/basic.d.ts.map +1 -0
  191. package/dist/lib/maths/types/basic.js +5 -0
  192. package/dist/lib/maths/types/basic.mjs +0 -0
  193. package/dist/lib/maths/types/index.cjs +1 -0
  194. package/dist/lib/maths/types/index.d.ts +4 -0
  195. package/dist/lib/maths/types/index.d.ts.map +1 -0
  196. package/dist/lib/maths/types/index.js +3 -0
  197. package/dist/lib/maths/types/index.mjs +0 -0
  198. package/dist/lib/maths/types/negative.cjs +1 -0
  199. package/dist/lib/maths/types/negative.d.ts +51 -0
  200. package/dist/lib/maths/types/negative.d.ts.map +1 -0
  201. package/dist/lib/maths/types/negative.js +5 -0
  202. package/dist/lib/maths/types/negative.mjs +0 -0
  203. package/dist/lib/maths/types/operations.cjs +1 -0
  204. package/dist/lib/maths/types/operations.d.ts +188 -0
  205. package/dist/lib/maths/types/operations.d.ts.map +1 -0
  206. package/dist/lib/maths/types/operations.js +6 -0
  207. package/dist/lib/maths/types/operations.mjs +0 -0
  208. package/dist/lib/object/clone.cjs +1 -0
  209. package/dist/lib/object/clone.d.ts +46 -0
  210. package/dist/lib/object/clone.d.ts.map +1 -0
  211. package/dist/lib/object/clone.js +104 -0
  212. package/dist/lib/object/clone.mjs +1 -0
  213. package/dist/lib/object/diff.cjs +1 -0
  214. package/dist/lib/object/diff.d.ts +203 -0
  215. package/dist/lib/object/diff.d.ts.map +1 -0
  216. package/dist/lib/object/diff.js +805 -0
  217. package/dist/lib/object/diff.mjs +1 -0
  218. package/dist/lib/object/getter-setter.cjs +1 -0
  219. package/dist/lib/object/getter-setter.d.ts +361 -0
  220. package/dist/lib/object/getter-setter.d.ts.map +1 -0
  221. package/dist/lib/object/getter-setter.js +1771 -0
  222. package/dist/lib/object/getter-setter.mjs +1 -0
  223. package/dist/lib/object/index.cjs +6 -0
  224. package/dist/lib/object/index.d.ts +13 -0
  225. package/dist/lib/object/index.d.ts.map +1 -0
  226. package/dist/lib/object/index.js +12 -0
  227. package/dist/lib/object/index.mjs +6 -0
  228. package/dist/lib/object/merge.cjs +1 -0
  229. package/dist/lib/object/merge.d.ts +93 -0
  230. package/dist/lib/object/merge.d.ts.map +1 -0
  231. package/dist/lib/object/merge.js +474 -0
  232. package/dist/lib/object/merge.mjs +1 -0
  233. package/dist/lib/object/object.cjs +1 -0
  234. package/dist/lib/object/object.d.ts +128 -0
  235. package/dist/lib/object/object.d.ts.map +1 -0
  236. package/dist/lib/object/object.js +432 -0
  237. package/dist/lib/object/object.mjs +1 -0
  238. package/dist/lib/object/omit.cjs +1 -0
  239. package/dist/lib/object/omit.d.ts +351 -0
  240. package/dist/lib/object/omit.d.ts.map +1 -0
  241. package/dist/lib/object/omit.js +656 -0
  242. package/dist/lib/object/omit.mjs +1 -0
  243. package/dist/lib/object/reconcile.cjs +1 -0
  244. package/dist/lib/object/reconcile.d.ts +7 -0
  245. package/dist/lib/object/reconcile.d.ts.map +1 -0
  246. package/dist/lib/object/reconcile.js +122 -0
  247. package/dist/lib/object/reconcile.mjs +1 -0
  248. package/dist/lib/object/selector.cjs +1 -0
  249. package/dist/lib/object/selector.d.ts +50 -0
  250. package/dist/lib/object/selector.d.ts.map +1 -0
  251. package/dist/lib/object/selector.js +371 -0
  252. package/dist/lib/object/selector.mjs +1 -0
  253. package/dist/lib/object/sort.cjs +1 -0
  254. package/dist/lib/object/sort.d.ts +149 -0
  255. package/dist/lib/object/sort.d.ts.map +1 -0
  256. package/dist/lib/object/sort.js +298 -0
  257. package/dist/lib/object/sort.mjs +1 -0
  258. package/dist/lib/object/transform.cjs +1 -0
  259. package/dist/lib/object/transform.d.ts +620 -0
  260. package/dist/lib/object/transform.d.ts.map +1 -0
  261. package/dist/lib/object/transform.js +1058 -0
  262. package/dist/lib/object/transform.mjs +1 -0
  263. package/dist/lib/object/types.cjs +1 -0
  264. package/dist/lib/object/types.d.ts +250 -0
  265. package/dist/lib/object/types.d.ts.map +1 -0
  266. package/dist/lib/object/types.js +1 -0
  267. package/dist/lib/object/types.mjs +0 -0
  268. package/dist/lib/object/utils.cjs +6 -0
  269. package/dist/lib/object/utils.d.ts +165 -0
  270. package/dist/lib/object/utils.d.ts.map +1 -0
  271. package/dist/lib/object/utils.js +444 -0
  272. package/dist/lib/object/utils.mjs +6 -0
  273. package/dist/lib/primitive/boolean/boolean.cjs +1 -0
  274. package/dist/lib/primitive/boolean/boolean.d.ts +276 -0
  275. package/dist/lib/primitive/boolean/boolean.d.ts.map +1 -0
  276. package/dist/lib/primitive/boolean/boolean.js +615 -0
  277. package/dist/lib/primitive/boolean/boolean.mjs +1 -0
  278. package/dist/lib/primitive/boolean/index.cjs +1 -0
  279. package/dist/lib/primitive/boolean/index.d.ts +3 -0
  280. package/dist/lib/primitive/boolean/index.d.ts.map +1 -0
  281. package/dist/lib/primitive/boolean/index.js +2 -0
  282. package/dist/lib/primitive/boolean/index.mjs +1 -0
  283. package/dist/lib/primitive/boolean/types.cjs +1 -0
  284. package/dist/lib/primitive/boolean/types.d.ts +14 -0
  285. package/dist/lib/primitive/boolean/types.d.ts.map +1 -0
  286. package/dist/lib/primitive/boolean/types.js +1 -0
  287. package/dist/lib/primitive/boolean/types.mjs +0 -0
  288. package/dist/lib/primitive/date/date.cjs +1 -0
  289. package/dist/lib/primitive/date/date.d.ts +641 -0
  290. package/dist/lib/primitive/date/date.d.ts.map +1 -0
  291. package/dist/lib/primitive/date/date.js +1998 -0
  292. package/dist/lib/primitive/date/date.mjs +1 -0
  293. package/dist/lib/primitive/date/index.cjs +1 -0
  294. package/dist/lib/primitive/date/index.d.ts +3 -0
  295. package/dist/lib/primitive/date/index.d.ts.map +1 -0
  296. package/dist/lib/primitive/date/index.js +2 -0
  297. package/dist/lib/primitive/date/index.mjs +1 -0
  298. package/dist/lib/primitive/date/types.cjs +1 -0
  299. package/dist/lib/primitive/date/types.d.ts +205 -0
  300. package/dist/lib/primitive/date/types.d.ts.map +1 -0
  301. package/dist/lib/primitive/date/types.js +7 -0
  302. package/dist/lib/primitive/date/types.mjs +0 -0
  303. package/dist/lib/primitive/index.cjs +5 -0
  304. package/dist/lib/primitive/index.d.ts +5 -0
  305. package/dist/lib/primitive/index.d.ts.map +1 -0
  306. package/dist/lib/primitive/index.js +4 -0
  307. package/dist/lib/primitive/index.mjs +5 -0
  308. package/dist/lib/primitive/string/index.cjs +5 -0
  309. package/dist/lib/primitive/string/index.d.ts +3 -0
  310. package/dist/lib/primitive/string/index.d.ts.map +1 -0
  311. package/dist/lib/primitive/string/index.js +2 -0
  312. package/dist/lib/primitive/string/index.mjs +5 -0
  313. package/dist/lib/primitive/string/parser-2.cjs +8 -0
  314. package/dist/lib/primitive/string/parser-2.d.ts +17 -0
  315. package/dist/lib/primitive/string/parser-2.d.ts.map +1 -0
  316. package/dist/lib/primitive/string/parser-2.js +656 -0
  317. package/dist/lib/primitive/string/parser-2.mjs +8 -0
  318. package/dist/lib/primitive/string/parser.cjs +3 -0
  319. package/dist/lib/primitive/string/parser.d.ts +9 -0
  320. package/dist/lib/primitive/string/parser.d.ts.map +1 -0
  321. package/dist/lib/primitive/string/parser.js +775 -0
  322. package/dist/lib/primitive/string/parser.mjs +3 -0
  323. package/dist/lib/primitive/string/string.cjs +5 -0
  324. package/dist/lib/primitive/string/string.d.ts +535 -0
  325. package/dist/lib/primitive/string/string.d.ts.map +1 -0
  326. package/dist/lib/primitive/string/string.js +1301 -0
  327. package/dist/lib/primitive/string/string.mjs +5 -0
  328. package/dist/lib/primitive/string/types.cjs +1 -0
  329. package/dist/lib/primitive/string/types.d.ts +318 -0
  330. package/dist/lib/primitive/string/types.d.ts.map +1 -0
  331. package/dist/lib/primitive/string/types.js +5 -0
  332. package/dist/lib/primitive/string/types.mjs +0 -0
  333. package/dist/lib/primitive/types.cjs +1 -0
  334. package/dist/lib/primitive/types.d.ts +27 -0
  335. package/dist/lib/primitive/types.d.ts.map +1 -0
  336. package/dist/lib/primitive/types.js +1 -0
  337. package/dist/lib/primitive/types.mjs +0 -0
  338. package/dist/lib/url/index.cjs +1 -0
  339. package/dist/lib/url/index.d.ts +3 -0
  340. package/dist/lib/url/index.d.ts.map +1 -0
  341. package/dist/lib/url/index.js +2 -0
  342. package/dist/lib/url/index.mjs +1 -0
  343. package/dist/lib/url/parser.cjs +1 -0
  344. package/dist/lib/url/parser.d.ts +216 -0
  345. package/dist/lib/url/parser.d.ts.map +1 -0
  346. package/dist/lib/url/parser.js +488 -0
  347. package/dist/lib/url/parser.mjs +1 -0
  348. package/dist/lib/url/types.cjs +1 -0
  349. package/dist/lib/url/types.d.ts +18 -0
  350. package/dist/lib/url/types.d.ts.map +1 -0
  351. package/dist/lib/url/types.js +1 -0
  352. package/dist/lib/url/types.mjs +0 -0
  353. package/dist/tsconfig.lib.tsbuildinfo +1 -0
  354. package/package.json +150 -0
@@ -0,0 +1,444 @@
1
+ /**
2
+ * Checks if a value is an object (not array, function, date, etc.)
3
+ *
4
+ * This function determines if a value is a plain JavaScript object by excluding
5
+ * arrays, functions, and built-in object types like Date, RegExp, Map, etc.
6
+ *
7
+ * @param value - The value to check
8
+ * @returns `true` if value is a plain object; `false` otherwise
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * isObject({}); // true
13
+ * isObject({ key: 'value' }); // true
14
+ *
15
+ * isObject([]); // false
16
+ * isObject(null); // false
17
+ * isObject(undefined); // false
18
+ * isObject(new Date()); // false
19
+ * isObject(() => {}); // false
20
+ * isObject(new Map()); // false
21
+ * ```
22
+ *
23
+ * @category Type Checking
24
+ * @see isPlainObject - For stricter object type checking
25
+ */
26
+ export const isObject = (value) => {
27
+ if (value == null)
28
+ return false;
29
+ if (Array.isArray(value))
30
+ return false;
31
+ if (typeof value === 'function')
32
+ return false;
33
+ if (value instanceof Date)
34
+ return false;
35
+ if (value instanceof RegExp)
36
+ return false;
37
+ if (value instanceof Map)
38
+ return false;
39
+ if (value instanceof Set)
40
+ return false;
41
+ if (value instanceof Error)
42
+ return false;
43
+ return typeof value === 'object';
44
+ };
45
+ /**
46
+ * Checks if a value is a plain object (only Object.prototype or null in prototype chain)
47
+ *
48
+ * Unlike {@link isObject}, this function performs a stricter check to ensure the value
49
+ * is a "plain" object - created via object literal `{}` or `Object.create(null)`.
50
+ * This excludes objects created with custom constructors.
51
+ *
52
+ * @template T - The expected object type
53
+ * @param v - The value to check
54
+ * @returns `true` if value is a plain object; `false` otherwise
55
+ *
56
+ * @example
57
+ * ```ts
58
+ * isPlainObject({}); // true
59
+ * isPlainObject(Object.create(null)); // true
60
+ *
61
+ * class Custom {}
62
+ * isPlainObject(new Custom()); // false
63
+ * isPlainObject([]); // false
64
+ * isPlainObject(null); // false
65
+ * ```
66
+ *
67
+ * @category Type Checking
68
+ */
69
+ export function isPlainObject(v) {
70
+ if (typeof v !== 'object' || v === null)
71
+ return false;
72
+ const proto = Object.getPrototypeOf(v);
73
+ return proto === Object.prototype || proto === null;
74
+ }
75
+ /**
76
+ * Checks if a value is a class constructor
77
+ *
78
+ * This function determines if a value is a class constructor by checking
79
+ * if it's a function and if its string representation starts with the "class" keyword.
80
+ *
81
+ * @param obj - The value to check
82
+ * @returns `true` if value is a class constructor; `false` otherwise
83
+ *
84
+ * @example
85
+ * ```ts
86
+ * class Example {}
87
+ * isClass(Example); // true
88
+ *
89
+ * function regularFn() {}
90
+ * isClass(regularFn); // false
91
+ *
92
+ * const arrowFn = () => {};
93
+ * isClass(arrowFn); // false
94
+ * ```
95
+ *
96
+ * @category Type Checking
97
+ */
98
+ export function isClass(obj) {
99
+ return (typeof obj === 'function' &&
100
+ /^class\s/.test(Function.prototype.toString.call(obj)));
101
+ }
102
+ /**
103
+ * Checks if a value is an empty object
104
+ *
105
+ * This function determines if a value is an object with no enumerable properties.
106
+ * It first checks if the value is an object using {@link isObject} and then
107
+ * checks if it has any enumerable properties.
108
+ *
109
+ * @param value - The value to check
110
+ * @returns `true` if value is an object with no properties; `false` otherwise
111
+ *
112
+ * @example
113
+ * ```ts
114
+ * isEmptyObject({}); // true
115
+ * isEmptyObject(Object.create(null)); // true
116
+ *
117
+ * isEmptyObject({a: 1}); // false
118
+ * isEmptyObject(null); // false
119
+ * isEmptyObject([]); // false (arrays are not objects in this context)
120
+ * ```
121
+ *
122
+ * @category Type Checking
123
+ * @see isObject - Used internally for type checking
124
+ */
125
+ export const isEmptyObject = (value) => {
126
+ if (!isObject(value))
127
+ return false;
128
+ return Object.keys(value).length === 0;
129
+ };
130
+ /**
131
+ * Traverses an object structure based on selector segments
132
+ *
133
+ * This advanced utility function traverses a data structure (object or array) based on
134
+ * a series of selector segments. It preserves the structure of the original data while
135
+ * navigating through it. The function supports various selector types including property access,
136
+ * array indexing, wildcards, slices, unions, filters, and recursive descent.
137
+ *
138
+ * @param current - The current object/array being traversed
139
+ * @param segments - An array of selector segments that define the traversal path
140
+ * @param depth - The current traversal depth (for recursion limits)
141
+ * @param maxDepth - The maximum depth to traverse (prevents infinite recursion)
142
+ * @returns The traversed structure or undefined if no match found
143
+ *
144
+ * @example
145
+ * ```ts
146
+ * // Access nested property with a simple path
147
+ * const data = { users: [{ name: 'Alice', age: 30 }] };
148
+ * const segments = [
149
+ * { type: 'property', value: 'users' },
150
+ * { type: 'index', value: 0 },
151
+ * { type: 'property', value: 'name' }
152
+ * ];
153
+ * traverseStructure(data, segments, 0, 10); // { users: [{ name: 'Alice' }] }
154
+ * ```
155
+ *
156
+ * @internal
157
+ * @category Object Traversal
158
+ */
159
+ export const traverseStructure = (current, segments, depth, maxDepth) => {
160
+ // console.log('traversing', current)
161
+ // console.log('traversing segments', segments)
162
+ if (depth > maxDepth)
163
+ return undefined;
164
+ if (segments.length === 0)
165
+ return current;
166
+ const segment = segments[0];
167
+ const remaining = segments.slice(1);
168
+ // Handle descendant selector
169
+ if (segment.type === 'descendant') {
170
+ // Collect all matching paths in structure
171
+ const result = traverseStructure(current, remaining, depth + 1, maxDepth);
172
+ if (result !== undefined) {
173
+ return result;
174
+ }
175
+ // Recursively search in all properties
176
+ if (current && typeof current === 'object') {
177
+ if (Array.isArray(current)) {
178
+ const arrResult = [];
179
+ for (let i = 0; i < current.length; i++) {
180
+ const itemResult = traverseStructure(current[i], segments, depth + 1, maxDepth);
181
+ if (itemResult !== undefined) {
182
+ arrResult[i] = itemResult;
183
+ }
184
+ }
185
+ return arrResult.length > 0 ? arrResult : undefined;
186
+ }
187
+ else {
188
+ const objResult = {};
189
+ for (const key in current) {
190
+ if (current.hasOwnProperty(key)) {
191
+ const itemResult = traverseStructure(current[key], segments, depth + 1, maxDepth);
192
+ if (itemResult !== undefined) {
193
+ objResult[key] = itemResult;
194
+ }
195
+ }
196
+ }
197
+ return Object.keys(objResult).length > 0 ? objResult : undefined;
198
+ }
199
+ }
200
+ return undefined;
201
+ }
202
+ // console.log('is wildcard', segment)
203
+ // Handle different segment types
204
+ switch (segment.type) {
205
+ case 'property':
206
+ if (isObject(current) &&
207
+ segment.value &&
208
+ String(segment.value) in current) {
209
+ const next = current[String(segment.value)];
210
+ const result = traverseStructure(next, remaining, depth + 1, maxDepth);
211
+ if (result !== undefined) {
212
+ return { [String(segment.value)]: result };
213
+ }
214
+ }
215
+ break;
216
+ case 'index':
217
+ if (Array.isArray(current)) {
218
+ const index = segment.value;
219
+ if (index >= 0 && index < current.length) {
220
+ const result = traverseStructure(current[index], remaining, depth + 1, maxDepth);
221
+ // console.log('res', result)
222
+ if (result !== undefined) {
223
+ const arr = new Array(current.length).filter((a) => a !== undefined);
224
+ arr[index] = result;
225
+ return arr;
226
+ }
227
+ }
228
+ }
229
+ else if (current && typeof current === 'object') {
230
+ const key = String(segment.value);
231
+ if (key in current) {
232
+ const result = traverseStructure(current[key], remaining, depth + 1, maxDepth);
233
+ if (result !== undefined) {
234
+ return { [key]: result };
235
+ }
236
+ }
237
+ }
238
+ break;
239
+ case 'wildcard':
240
+ if (current && typeof current === 'object') {
241
+ if (Array.isArray(current)) {
242
+ const arrResult = [];
243
+ let hasResults = false;
244
+ for (let i = 0; i < current.length; i++) {
245
+ const result = traverseStructure(current[i], remaining, depth + 1, maxDepth);
246
+ if (result !== undefined) {
247
+ arrResult[i] = result;
248
+ hasResults = true;
249
+ }
250
+ }
251
+ return hasResults ? arrResult : undefined;
252
+ }
253
+ else {
254
+ const objResult = {};
255
+ let hasResults = false;
256
+ for (const key in current) {
257
+ if (current.hasOwnProperty(key)) {
258
+ const result = traverseStructure(current[key], remaining, depth + 1, maxDepth);
259
+ if (result !== undefined) {
260
+ objResult[key] = result;
261
+ hasResults = true;
262
+ }
263
+ }
264
+ }
265
+ return hasResults ? objResult : undefined;
266
+ }
267
+ }
268
+ break;
269
+ case 'slice':
270
+ if (Array.isArray(current)) {
271
+ const [start, end] = segment.value;
272
+ const actualStart = Math.max(0, start);
273
+ const actualEnd = Math.min(current.length, end === Infinity ? current.length : end);
274
+ const arrResult = [];
275
+ let hasResults = false;
276
+ for (let i = actualStart; i < actualEnd; i++) {
277
+ const result = traverseStructure(current[i], remaining, depth + 1, maxDepth);
278
+ if (result !== undefined) {
279
+ arrResult[i] = result;
280
+ hasResults = true;
281
+ }
282
+ }
283
+ return hasResults ? arrResult : undefined;
284
+ }
285
+ break;
286
+ case 'union':
287
+ if (Array.isArray(current)) {
288
+ const indices = segment.value;
289
+ const arrResult = [];
290
+ let hasResults = false;
291
+ for (const index of indices) {
292
+ if (index >= 0 && index < current.length) {
293
+ const result = traverseStructure(current[index], remaining, depth + 1, maxDepth);
294
+ if (result !== undefined) {
295
+ arrResult[index] = result;
296
+ hasResults = true;
297
+ }
298
+ }
299
+ }
300
+ return hasResults ? arrResult : undefined;
301
+ }
302
+ break;
303
+ case 'filter':
304
+ if (Array.isArray(current)) {
305
+ const filterFn = segment.value;
306
+ const arrResult = [];
307
+ let hasResults = false;
308
+ for (let i = 0; i < current.length; i++) {
309
+ if (filterFn(current[i])) {
310
+ const result = traverseStructure(current[i], remaining, depth + 1, maxDepth);
311
+ if (result !== undefined) {
312
+ arrResult[i] = result;
313
+ hasResults = true;
314
+ }
315
+ }
316
+ }
317
+ return hasResults ? arrResult : undefined;
318
+ }
319
+ break;
320
+ }
321
+ return undefined;
322
+ };
323
+ /**
324
+ * Converts a value to a JSON string with improved handling of special cases
325
+ *
326
+ * This function converts a JavaScript value to a JSON string, similar to `JSON.stringify`,
327
+ * but with improved handling of circular references and special character escaping.
328
+ *
329
+ * @param value - The value to convert to a JSON string
330
+ * @param space - The number of spaces to use for indentation (0 for no formatting)
331
+ * @returns The JSON string representation of the value or undefined for unsupported types
332
+ *
333
+ * @example
334
+ * ```ts
335
+ * // Basic usage
336
+ * toJSONString({ name: 'Alice', age: 30 });
337
+ * // '{"name":"Alice","age":30}'
338
+ *
339
+ * // With formatting
340
+ * toJSONString({ name: 'Alice', age: 30 }, 2);
341
+ * // '{
342
+ * // "name": "Alice",
343
+ * // "age": 30
344
+ * // }'
345
+ *
346
+ * // Handles circular references safely
347
+ * const circular = { self: null };
348
+ * circular.self = circular;
349
+ * toJSONString(circular); // throws TypeError (circular structure)
350
+ * ```
351
+ *
352
+ * @throws {TypeError} When encountering circular references
353
+ * @category Serialization
354
+ */
355
+ export function toJSONString(value, space = 0) {
356
+ const seen = new WeakSet();
357
+ const gap = (n) => (space ? ' '.repeat(n) : '');
358
+ const nl = (n) => (space ? `\n${' '.repeat(n)}` : '');
359
+ const esc = (s) => s.replace(/[\u0000-\u001F"\\]/g, (c) => {
360
+ switch (c) {
361
+ case '"':
362
+ return '\\"';
363
+ case '\\':
364
+ return '\\\\';
365
+ case '\b':
366
+ return '\\b';
367
+ case '\f':
368
+ return '\\f';
369
+ case '\n':
370
+ return '\\n';
371
+ case '\r':
372
+ return '\\r';
373
+ case '\t':
374
+ return '\\t';
375
+ default:
376
+ const code = c.charCodeAt(0).toString(16).padStart(4, '0');
377
+ return `\\u${code}`;
378
+ }
379
+ });
380
+ const ser = (v, indent) => {
381
+ if (v === null)
382
+ return 'null';
383
+ const t = typeof v;
384
+ if (t === 'number')
385
+ return Number.isFinite(v) ? String(v) : 'null';
386
+ if (t === 'boolean')
387
+ return v ? 'true' : 'false';
388
+ if (t === 'string') {
389
+ // if(v.startsWith('icons.')){
390
+ // return v
391
+ // }else{
392
+ // return `"${esc(v)}"`
393
+ // }
394
+ }
395
+ if (t === 'bigint')
396
+ return `"${String(v)}"`;
397
+ if (t === 'function' || t === 'undefined' || t === 'symbol')
398
+ return undefined;
399
+ if (Array.isArray(v)) {
400
+ if (seen.has(v))
401
+ throw new TypeError('Converting circular structure to JSON');
402
+ seen.add(v);
403
+ const next = indent + space;
404
+ const parts = v.map((x) => {
405
+ const s = ser(x, next);
406
+ return s === undefined ? 'null' : s;
407
+ });
408
+ seen.delete(v);
409
+ if (!space)
410
+ return `[${parts.join(',')}]`;
411
+ return `[${nl(next)}${parts.join(`,${nl(next)}`)}${nl(indent)}]`;
412
+ }
413
+ if (t === 'object') {
414
+ if (seen.has(v))
415
+ throw new TypeError('Converting circular structure to JSON');
416
+ seen.add(v);
417
+ const keys = Object.keys(v);
418
+ const next = indent + space;
419
+ const parts = [];
420
+ // const valueOrEsc = (str: string)=>{
421
+ // if(str.startsWith('icon.')){
422
+ // return str
423
+ // }
424
+ // return
425
+ // }
426
+ for (const k of keys) {
427
+ const s = ser(v[k], next);
428
+ if (s !== undefined) {
429
+ if (!space)
430
+ parts.push(`"${esc(k)}":${s}`);
431
+ else
432
+ parts.push(`${gap(next)}"${esc(k)}": ${s}`);
433
+ }
434
+ }
435
+ seen.delete(v);
436
+ if (!space)
437
+ return `{${parts.join(',')}}`;
438
+ return `{\n${parts.join(',\n')}\n${gap(indent)}}`;
439
+ }
440
+ return undefined;
441
+ };
442
+ const out = ser(value, 0);
443
+ return out === undefined ? undefined : out;
444
+ }
@@ -0,0 +1,6 @@
1
+ var A=e=>e==null||Array.isArray(e)||typeof e=="function"||e instanceof Date||e instanceof RegExp||e instanceof Map||e instanceof Set||e instanceof Error?!1:typeof e=="object";function S(e){if(typeof e!="object"||e===null)return!1;let f=Object.getPrototypeOf(e);return f===Object.prototype||f===null}function k(e){return typeof e=="function"&&/^class\s/.test(Function.prototype.toString.call(e))}var O=e=>A(e)?Object.keys(e).length===0:!1,c=(e,f,i,a)=>{if(i>a)return;if(f.length===0)return e;let u=f[0],l=f.slice(1);if(u.type==="descendant"){let s=c(e,l,i+1,a);if(s!==void 0)return s;if(e&&typeof e=="object")if(Array.isArray(e)){let t=[];for(let n=0;n<e.length;n++){let r=c(e[n],f,i+1,a);r!==void 0&&(t[n]=r)}return t.length>0?t:void 0}else{let t={};for(let n in e)if(e.hasOwnProperty(n)){let r=c(e[n],f,i+1,a);r!==void 0&&(t[n]=r)}return Object.keys(t).length>0?t:void 0}return}switch(u.type){case"property":if(A(e)&&u.value&&String(u.value)in e){let s=e[String(u.value)],t=c(s,l,i+1,a);if(t!==void 0)return{[String(u.value)]:t}}break;case"index":if(Array.isArray(e)){let s=u.value;if(s>=0&&s<e.length){let t=c(e[s],l,i+1,a);if(t!==void 0){let n=new Array(e.length).filter(r=>r!==void 0);return n[s]=t,n}}}else if(e&&typeof e=="object"){let s=String(u.value);if(s in e){let t=c(e[s],l,i+1,a);if(t!==void 0)return{[s]:t}}}break;case"wildcard":if(e&&typeof e=="object")if(Array.isArray(e)){let s=[],t=!1;for(let n=0;n<e.length;n++){let r=c(e[n],l,i+1,a);r!==void 0&&(s[n]=r,t=!0)}return t?s:void 0}else{let s={},t=!1;for(let n in e)if(e.hasOwnProperty(n)){let r=c(e[n],l,i+1,a);r!==void 0&&(s[n]=r,t=!0)}return t?s:void 0}break;case"slice":if(Array.isArray(e)){let[s,t]=u.value,n=Math.max(0,s),r=Math.min(e.length,t===1/0?e.length:t),o=[],b=!1;for(let d=n;d<r;d++){let y=c(e[d],l,i+1,a);y!==void 0&&(o[d]=y,b=!0)}return b?o:void 0}break;case"union":if(Array.isArray(e)){let s=u.value,t=[],n=!1;for(let r of s)if(r>=0&&r<e.length){let o=c(e[r],l,i+1,a);o!==void 0&&(t[r]=o,n=!0)}return n?t:void 0}break;case"filter":if(Array.isArray(e)){let s=u.value,t=[],n=!1;for(let r=0;r<e.length;r++)if(s(e[r])){let o=c(e[r],l,i+1,a);o!==void 0&&(t[r]=o,n=!0)}return n?t:void 0}break}};function R(e,f=0){let i=new WeakSet,a=n=>f?" ".repeat(n):"",u=n=>f?`
2
+ ${" ".repeat(n)}`:"",l=n=>n.replace(/[\u0000-\u001F"\\]/g,r=>{switch(r){case'"':return'\\"';case"\\":return"\\\\";case"\b":return"\\b";case"\f":return"\\f";case`
3
+ `:return"\\n";case"\r":return"\\r";case" ":return"\\t";default:return`\\u${r.charCodeAt(0).toString(16).padStart(4,"0")}`}}),s=(n,r)=>{if(n===null)return"null";let o=typeof n;if(o==="number")return Number.isFinite(n)?String(n):"null";if(o==="boolean")return n?"true":"false";if(o==="bigint")return`"${String(n)}"`;if(!(o==="function"||o==="undefined"||o==="symbol")){if(Array.isArray(n)){if(i.has(n))throw new TypeError("Converting circular structure to JSON");i.add(n);let b=r+f,d=n.map(y=>{let g=s(y,b);return g===void 0?"null":g});return i.delete(n),f?`[${u(b)}${d.join(`,${u(b)}`)}${u(r)}]`:`[${d.join(",")}]`}if(o==="object"){if(i.has(n))throw new TypeError("Converting circular structure to JSON");i.add(n);let b=Object.keys(n),d=r+f,y=[];for(let g of b){let j=s(n[g],d);j!==void 0&&(f?y.push(`${a(d)}"${l(g)}": ${j}`):y.push(`"${l(g)}":${j}`))}return i.delete(n),f?`{
4
+ ${y.join(`,
5
+ `)}
6
+ ${a(r)}}`:`{${y.join(",")}}`}}},t=s(e,0);return t===void 0?void 0:t}export{k as isClass,O as isEmptyObject,A as isObject,S as isPlainObject,R as toJSONString,c as traverseStructure};
@@ -0,0 +1 @@
1
+ "use strict";var i=Object.defineProperty;var $=Object.getOwnPropertyDescriptor;var M=Object.getOwnPropertyNames;var q=Object.prototype.hasOwnProperty;var F=(r,e)=>{for(var n in e)i(r,n,{get:e[n],enumerable:!0})},K=(r,e,n,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of M(e))!q.call(r,o)&&o!==n&&i(r,o,{get:()=>e[o],enumerable:!(a=$(e,o))||a.enumerable});return r};var J=r=>K(i({},"__esModule",{value:!0}),r);var W={};F(W,{all:()=>l,any:()=>c,checkConditions:()=>A,compare:()=>b,compareBoolean:()=>R,countFalsy:()=>B,countTruthy:()=>p,createPipeline:()=>E,createToggle:()=>C,debounceBoolean:()=>j,default:()=>U,isBoolean:()=>w,isBooleanArray:()=>L,isBooleanLike:()=>f,isBooleanLikeArray:()=>O,memoizeBoolean:()=>S,nand:()=>g,none:()=>y,nor:()=>k,not:()=>h,randomBoolean:()=>N,safeToBoolean:()=>m,toBoolean:()=>u,validateBooleanConstraint:()=>T,xnor:()=>x,xor:()=>d});module.exports=J(W);var w=r=>r===!0||r===!1,f=r=>{if(r===!0||r===!1||r===0||r===1)return!0;if(typeof r=="string"){let e=r.toLowerCase().trim();return e==="true"||e==="false"||e==="0"||e==="1"}return!1},u=(r,e="strict",n=!1)=>{if(r===null&&e==="strict")throw new Error(`Cannot convert ${r} to boolean with strict strategy`);if(typeof r=="boolean")return r;switch(e){case"strict":return P(r);case"truthy":return!!r;case"falsy":return V(r);case"string":return z(r);case"number":return I(r);default:return!!r}},P=r=>{let e=typeof r=="string"?r.trim().toLowerCase():r;if(e===1||e==="1")return!0;if(e===0||e==="0")return!1;if(typeof e=="string"){let n=e.trim().toLowerCase();if(n==="true")return!0;if(n==="false")return!1;throw new Error(`Cannot convert string "${e}" to boolean with strict strategy`)}if(e===!0)return!0;if(e===!1)return!1;throw new Error(`Cannot convert ${typeof e} to boolean with strict strategy`)},V=r=>{if(typeof r=="string"){let e=r.trim().toLowerCase();return!(e===""||e==="0"||e==="false"||e==="null"||e==="undefined"||e==="nan")}return typeof r=="number"?!(r===0||isNaN(r)):!!r},z=r=>{if(typeof r!="string")throw new Error(`String strategy requires string input, got ${typeof r}`);let e=r.trim().toLowerCase();if(["true","yes","y","on","1","enabled","enable","active"].includes(e))return!0;if(["false","no","n","off","0","disabled","disable","inactive"].includes(e))return!1;if(!isNaN(Number(e)))return Number(e)!==0;throw new Error(`Cannot convert string "${r}" to boolean`)},I=r=>{if(typeof r!="number")throw new Error(`Number strategy requires number input, got ${typeof r}`);return isNaN(r)||r===0?!1:r===1?!0:r!==0},m=(r,e)=>{try{return u(r,"strict")}catch{return e!==void 0?e:!1}},l=r=>{if(!Array.isArray(r)||r.length===0)return!1;for(let e of r)if(!e)return!1;return!0},c=r=>{if(!Array.isArray(r)||r.length===0)return!1;for(let e of r)if(e)return!0;return!1},y=r=>!c(r),h=r=>!r,d=r=>{if(!Array.isArray(r))return!1;let e=0;for(let n of r)if(n&&(e++,e>1))return!1;return e===1},g=r=>!l(r),k=r=>y(r),x=r=>{if(!Array.isArray(r)||r.length===0)return!0;let e=!!r[0];for(let n=1;n<r.length;n++)if(!!r[n]!==e)return!1;return!0},p=r=>{if(!Array.isArray(r))return 0;let e=0;for(let n of r)n&&e++;return e},B=r=>Array.isArray(r)?r.length-p(r):0,C=(r=!1)=>{let e=r;return()=>(e=!e,e)},b=(r,e,n="===")=>{switch(n){case"==":return r==e;case"===":return r===e;case"!=":return r!=e;case"!==":return r!==e;case">":return r>e;case"<":return r<e;case">=":return r>=e;case"<=":return r<=e;default:throw new Error(`Unsupported operator: ${n}`)}},A=(r,e)=>{for(let n of e)if(!b(r,n.value,n.operator))return!1;return!0},T=(r,e)=>{switch(e){case"required":return r===!0;case"optional":return r===!0||r===!1;case"true":return r===!0;case"false":return r===!1;case"truthy":return!!r;case"falsy":return!r;default:return!1}},N=(r=.5)=>{if(r<0||r>1)throw new Error("Probability must be between 0 and 1");return r===0?!1:Math.random()<=r},j=(r,e)=>{let n,a;return(...o)=>(n&&clearTimeout(n),n=setTimeout(()=>{a=r(...o)},e),a)},S=r=>{let e=new WeakMap;return((...n)=>{let a=null,o="";for(let t=0;t<n.length;t++)if(n[t]!==null&&typeof n[t]=="object"){a=n[t];break}if(o=JSON.stringify(n),a){let t=e.get(a);if(t||(t=new Map,e.set(a,t)),t.has(o))return t.get(o);let s=r(...n);return t.set(o,s),s}else{let t=e.get(Object.prototype)||new Map;if(e.has(Object.prototype)||e.set(Object.prototype,t),t.has(o))return t.get(o);let s=r(...n);return t.set(o,s),s}})},E=r=>e=>{for(let n of r)if(!n(e))return!1;return!0},L=r=>Array.isArray(r)&&r.every(e=>e===!0||e===!1),O=r=>Array.isArray(r)&&r.every(e=>f(e)),R=(r,e)=>{let n=u(r),a=u(e);return n!==a},U={isBoolean:w,isBooleanLike:f,toBoolean:u,safeToBoolean:m,all:l,any:c,none:y,not:h,xor:d,nand:g,nor:k,xnor:x,countTruthy:p,countFalsy:B,createToggle:C,compare:b,checkConditions:A,validateBooleanConstraint:T,randomBoolean:N,debounceBoolean:j,memoizeBoolean:S,createPipeline:E,isBooleanArray:L,isBooleanLikeArray:O};