@fluixi/utils 1.0.0-alpha.83 → 1.0.0-alpha.84

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 (129) hide show
  1. package/dist/index.cjs +2858 -1
  2. package/dist/index.mjs +2838 -1
  3. package/dist/lib/array/advanced.cjs +2227 -1
  4. package/dist/lib/array/advanced.mjs +2204 -1
  5. package/dist/lib/array/array.cjs +57 -1
  6. package/dist/lib/array/array.mjs +36 -1
  7. package/dist/lib/array/index.cjs +2344 -1
  8. package/dist/lib/array/index.mjs +2322 -1
  9. package/dist/lib/array/utils.cjs +103 -1
  10. package/dist/lib/array/utils.mjs +82 -1
  11. package/dist/lib/color/color.cjs +2190 -1
  12. package/dist/lib/color/color.mjs +2167 -1
  13. package/dist/lib/color/constants.cjs +380 -1
  14. package/dist/lib/color/constants.mjs +359 -1
  15. package/dist/lib/color/conversions.cjs +629 -1
  16. package/dist/lib/color/conversions.mjs +608 -1
  17. package/dist/lib/color/helpers.cjs +2534 -1
  18. package/dist/lib/color/helpers.mjs +2511 -1
  19. package/dist/lib/color/index.cjs +2641 -1
  20. package/dist/lib/color/index.mjs +2619 -1
  21. package/dist/lib/color/types.cjs +18 -1
  22. package/dist/lib/color/utils.cjs +962 -1
  23. package/dist/lib/color/utils.mjs +939 -1
  24. package/dist/lib/compare/comparators.cjs +171 -1
  25. package/dist/lib/compare/comparators.mjs +150 -1
  26. package/dist/lib/compare/index.cjs +172 -1
  27. package/dist/lib/compare/index.mjs +152 -1
  28. package/dist/lib/crypto/hash.cjs +83 -1
  29. package/dist/lib/crypto/hash.mjs +62 -1
  30. package/dist/lib/crypto/index.cjs +85 -1
  31. package/dist/lib/crypto/index.mjs +62 -1
  32. package/dist/lib/dom/events.cjs +40 -1
  33. package/dist/lib/dom/events.mjs +19 -1
  34. package/dist/lib/dom/index.cjs +78 -1
  35. package/dist/lib/dom/index.mjs +56 -1
  36. package/dist/lib/dom/utils.cjs +57 -1
  37. package/dist/lib/dom/utils.mjs +36 -1
  38. package/dist/lib/functions/functions.cjs +366 -1
  39. package/dist/lib/functions/functions.mjs +345 -1
  40. package/dist/lib/functions/index.cjs +369 -1
  41. package/dist/lib/functions/index.mjs +347 -1
  42. package/dist/lib/functions/types.cjs +18 -1
  43. package/dist/lib/helpers.cjs +78 -1
  44. package/dist/lib/helpers.mjs +59 -1
  45. package/dist/lib/index.cjs +2857 -1
  46. package/dist/lib/index.mjs +2836 -1
  47. package/dist/lib/maths/constants.cjs +70 -1
  48. package/dist/lib/maths/constants.mjs +50 -1
  49. package/dist/lib/maths/fn/advanced.cjs +231 -1
  50. package/dist/lib/maths/fn/advanced.mjs +208 -1
  51. package/dist/lib/maths/fn/basic.cjs +212 -1
  52. package/dist/lib/maths/fn/basic.mjs +191 -1
  53. package/dist/lib/maths/fn/complex.cjs +268 -1
  54. package/dist/lib/maths/fn/complex.mjs +247 -1
  55. package/dist/lib/maths/fn/index.cjs +877 -1
  56. package/dist/lib/maths/fn/index.mjs +855 -1
  57. package/dist/lib/maths/fn/trigo.cjs +179 -1
  58. package/dist/lib/maths/fn/trigo.mjs +156 -1
  59. package/dist/lib/maths/fn/vector.cjs +728 -1
  60. package/dist/lib/maths/fn/vector.mjs +707 -1
  61. package/dist/lib/maths/formatter.cjs +61 -1
  62. package/dist/lib/maths/formatter.mjs +40 -1
  63. package/dist/lib/maths/guards.cjs +164 -1
  64. package/dist/lib/maths/guards.mjs +144 -1
  65. package/dist/lib/maths/index.cjs +1152 -1
  66. package/dist/lib/maths/index.mjs +1130 -1
  67. package/dist/lib/maths/parser.cjs +75 -1
  68. package/dist/lib/maths/parser.mjs +54 -1
  69. package/dist/lib/maths/random.cjs +49 -1
  70. package/dist/lib/maths/random.mjs +28 -1
  71. package/dist/lib/maths/types/advanced.cjs +18 -1
  72. package/dist/lib/maths/types/basic.cjs +18 -1
  73. package/dist/lib/maths/types/index.cjs +19 -1
  74. package/dist/lib/maths/types/index.mjs +1 -0
  75. package/dist/lib/maths/types/negative.cjs +18 -1
  76. package/dist/lib/maths/types/operations.cjs +18 -1
  77. package/dist/lib/object/clone.cjs +88 -1
  78. package/dist/lib/object/clone.mjs +65 -1
  79. package/dist/lib/object/diff.cjs +573 -1
  80. package/dist/lib/object/diff.mjs +550 -1
  81. package/dist/lib/object/getter-setter.cjs +2351 -1
  82. package/dist/lib/object/getter-setter.mjs +2330 -1
  83. package/dist/lib/object/index.cjs +3956 -6
  84. package/dist/lib/object/index.mjs +3936 -6
  85. package/dist/lib/object/merge.cjs +1029 -1
  86. package/dist/lib/object/merge.mjs +1006 -1
  87. package/dist/lib/object/object.cjs +280 -1
  88. package/dist/lib/object/object.mjs +257 -1
  89. package/dist/lib/object/omit.cjs +2022 -1
  90. package/dist/lib/object/omit.mjs +1999 -1
  91. package/dist/lib/object/reconcile.cjs +126 -1
  92. package/dist/lib/object/reconcile.mjs +105 -1
  93. package/dist/lib/object/selector.cjs +303 -1
  94. package/dist/lib/object/selector.mjs +282 -1
  95. package/dist/lib/object/sort.cjs +209 -1
  96. package/dist/lib/object/sort.mjs +186 -1
  97. package/dist/lib/object/transform.cjs +2211 -1
  98. package/dist/lib/object/transform.mjs +2190 -1
  99. package/dist/lib/object/types.cjs +18 -1
  100. package/dist/lib/object/utils.cjs +326 -6
  101. package/dist/lib/object/utils.mjs +305 -6
  102. package/dist/lib/primitive/boolean/boolean.cjs +407 -1
  103. package/dist/lib/primitive/boolean/boolean.mjs +386 -1
  104. package/dist/lib/primitive/boolean/index.cjs +382 -1
  105. package/dist/lib/primitive/boolean/index.mjs +359 -1
  106. package/dist/lib/primitive/boolean/types.cjs +18 -1
  107. package/dist/lib/primitive/date/date.cjs +1126 -1
  108. package/dist/lib/primitive/date/date.mjs +1105 -1
  109. package/dist/lib/primitive/date/index.cjs +1128 -1
  110. package/dist/lib/primitive/date/index.mjs +1105 -1
  111. package/dist/lib/primitive/date/types.cjs +18 -1
  112. package/dist/lib/primitive/index.cjs +2338 -5
  113. package/dist/lib/primitive/index.mjs +2316 -5
  114. package/dist/lib/primitive/string/index.cjs +875 -5
  115. package/dist/lib/primitive/string/index.mjs +852 -5
  116. package/dist/lib/primitive/string/parser-2.cjs +543 -8
  117. package/dist/lib/primitive/string/parser-2.mjs +522 -8
  118. package/dist/lib/primitive/string/parser.cjs +236 -3
  119. package/dist/lib/primitive/string/parser.mjs +215 -3
  120. package/dist/lib/primitive/string/string.cjs +926 -5
  121. package/dist/lib/primitive/string/string.mjs +903 -5
  122. package/dist/lib/primitive/string/types.cjs +18 -1
  123. package/dist/lib/primitive/types.cjs +18 -1
  124. package/dist/lib/url/index.cjs +327 -1
  125. package/dist/lib/url/index.mjs +304 -1
  126. package/dist/lib/url/parser.cjs +325 -1
  127. package/dist/lib/url/parser.mjs +304 -1
  128. package/dist/lib/url/types.cjs +18 -1
  129. package/package.json +5 -5
@@ -1 +1,382 @@
1
- "use strict";var i=Object.defineProperty;var w=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var h=Object.prototype.hasOwnProperty;var d=(r,e)=>{for(var n in e)i(r,n,{get:e[n],enumerable:!0})},g=(r,e,n,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of m(e))!h.call(r,o)&&o!==n&&i(r,o,{get:()=>e[o],enumerable:!(a=w(e,o))||a.enumerable});return r};var x=r=>g(i({},"__esModule",{value:!0}),r);var U={};d(U,{all:()=>l,any:()=>c,checkConditions:()=>q,compare:()=>b,compareBoolean:()=>R,countFalsy:()=>$,countTruthy:()=>p,createPipeline:()=>V,createToggle:()=>M,debounceBoolean:()=>J,isBoolean:()=>k,isBooleanArray:()=>z,isBooleanLike:()=>f,isBooleanLikeArray:()=>I,memoizeBoolean:()=>P,nand:()=>E,none:()=>y,nor:()=>L,not:()=>j,randomBoolean:()=>K,safeToBoolean:()=>N,toBoolean:()=>u,validateBooleanConstraint:()=>F,xnor:()=>O,xor:()=>S});module.exports=x(U);var k=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 B(r);case"truthy":return!!r;case"falsy":return C(r);case"string":return A(r);case"number":return T(r);default:return!!r}},B=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`)},C=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},A=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`)},T=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},N=(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),j=r=>!r,S=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},E=r=>!l(r),L=r=>y(r),O=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},$=r=>Array.isArray(r)?r.length-p(r):0,M=(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}`)}},q=(r,e)=>{for(let n of e)if(!b(r,n.value,n.operator))return!1;return!0},F=(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}},K=(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)},P=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}})},V=r=>e=>{for(let n of r)if(!n(e))return!1;return!0},z=r=>Array.isArray(r)&&r.every(e=>e===!0||e===!1),I=r=>Array.isArray(r)&&r.every(e=>f(e)),R=(r,e)=>{let n=u(r),a=u(e);return n!==a};
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all2) => {
7
+ for (var name in all2)
8
+ __defProp(target, name, { get: all2[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/lib/primitive/boolean/index.ts
21
+ var index_exports = {};
22
+ __export(index_exports, {
23
+ all: () => all,
24
+ any: () => any,
25
+ checkConditions: () => checkConditions,
26
+ compare: () => compare,
27
+ compareBoolean: () => compareBoolean,
28
+ countFalsy: () => countFalsy,
29
+ countTruthy: () => countTruthy,
30
+ createPipeline: () => createPipeline,
31
+ createToggle: () => createToggle,
32
+ debounceBoolean: () => debounceBoolean,
33
+ isBoolean: () => isBoolean,
34
+ isBooleanArray: () => isBooleanArray,
35
+ isBooleanLike: () => isBooleanLike,
36
+ isBooleanLikeArray: () => isBooleanLikeArray,
37
+ memoizeBoolean: () => memoizeBoolean,
38
+ nand: () => nand,
39
+ none: () => none,
40
+ nor: () => nor,
41
+ not: () => not,
42
+ randomBoolean: () => randomBoolean,
43
+ safeToBoolean: () => safeToBoolean,
44
+ toBoolean: () => toBoolean,
45
+ validateBooleanConstraint: () => validateBooleanConstraint,
46
+ xnor: () => xnor,
47
+ xor: () => xor
48
+ });
49
+ module.exports = __toCommonJS(index_exports);
50
+
51
+ // src/lib/primitive/boolean/boolean.ts
52
+ var isBoolean = (value) => {
53
+ return value === true || value === false;
54
+ };
55
+ var isBooleanLike = (value) => {
56
+ if (value === true || value === false) return true;
57
+ if (value === 0 || value === 1) return true;
58
+ if (typeof value === "string") {
59
+ const lower = value.toLowerCase().trim();
60
+ return lower === "true" || lower === "false" || lower === "0" || lower === "1";
61
+ }
62
+ return false;
63
+ };
64
+ var toBoolean = (value, strategy = "strict", debug = false) => {
65
+ if (value === null) {
66
+ if (strategy === "strict") {
67
+ throw new Error(
68
+ `Cannot convert ${value} to boolean with strict strategy`
69
+ );
70
+ }
71
+ }
72
+ if (typeof value === "boolean") {
73
+ return value;
74
+ }
75
+ switch (strategy) {
76
+ case "strict":
77
+ return convertStrict(value);
78
+ case "truthy":
79
+ return Boolean(value);
80
+ case "falsy":
81
+ return convertFalsy(value);
82
+ // return !convertFalsy(value);
83
+ case "string":
84
+ return convertFromString(value);
85
+ case "number":
86
+ return convertFromNumber(value);
87
+ default:
88
+ return Boolean(value);
89
+ }
90
+ };
91
+ var convertStrict = (_value) => {
92
+ const value = typeof _value === "string" ? _value.trim().toLowerCase() : _value;
93
+ if (value === 1 || value === "1") return true;
94
+ if (value === 0 || value === "0") return false;
95
+ if (typeof value === "string") {
96
+ const trimmed = value.trim().toLowerCase();
97
+ if (trimmed === "true") return true;
98
+ if (trimmed === "false") return false;
99
+ throw new Error(
100
+ `Cannot convert string "${value}" to boolean with strict strategy`
101
+ );
102
+ }
103
+ if (value === true) return true;
104
+ if (value === false) return false;
105
+ throw new Error(
106
+ `Cannot convert ${typeof value} to boolean with strict strategy`
107
+ );
108
+ };
109
+ var convertFalsy = (value) => {
110
+ if (typeof value === "string") {
111
+ const trimmed = value.trim().toLowerCase();
112
+ if (trimmed === "" || trimmed === "0" || trimmed === "false" || trimmed === "null" || trimmed === "undefined" || trimmed === "nan") {
113
+ return false;
114
+ }
115
+ return true;
116
+ }
117
+ if (typeof value === "number") {
118
+ if (value === 0 || isNaN(value)) return false;
119
+ return true;
120
+ }
121
+ return Boolean(value);
122
+ };
123
+ var convertFromString = (value) => {
124
+ if (typeof value !== "string") {
125
+ throw new Error(
126
+ `String strategy requires string input, got ${typeof value}`
127
+ );
128
+ }
129
+ const trimmed = value.trim().toLowerCase();
130
+ if (["true", "yes", "y", "on", "1", "enabled", "enable", "active"].includes(
131
+ trimmed
132
+ )) {
133
+ return true;
134
+ }
135
+ if ([
136
+ "false",
137
+ "no",
138
+ "n",
139
+ "off",
140
+ "0",
141
+ "disabled",
142
+ "disable",
143
+ "inactive"
144
+ ].includes(trimmed)) {
145
+ return false;
146
+ }
147
+ if (!isNaN(Number(trimmed))) {
148
+ return Number(trimmed) !== 0;
149
+ }
150
+ throw new Error(`Cannot convert string "${value}" to boolean`);
151
+ };
152
+ var convertFromNumber = (value) => {
153
+ if (typeof value !== "number") {
154
+ throw new Error(
155
+ `Number strategy requires number input, got ${typeof value}`
156
+ );
157
+ }
158
+ if (isNaN(value)) return false;
159
+ if (value === 0) return false;
160
+ if (value === 1) return true;
161
+ return value !== 0;
162
+ };
163
+ var safeToBoolean = (value, fallback) => {
164
+ try {
165
+ return toBoolean(value, "strict");
166
+ } catch {
167
+ return fallback !== void 0 ? fallback : false;
168
+ }
169
+ };
170
+ var all = (values) => {
171
+ if (!Array.isArray(values) || values.length === 0) {
172
+ return false;
173
+ }
174
+ for (const value of values) {
175
+ if (!Boolean(value)) {
176
+ return false;
177
+ }
178
+ }
179
+ return true;
180
+ };
181
+ var any = (values) => {
182
+ if (!Array.isArray(values) || values.length === 0) {
183
+ return false;
184
+ }
185
+ for (const value of values) {
186
+ if (Boolean(value)) {
187
+ return true;
188
+ }
189
+ }
190
+ return false;
191
+ };
192
+ var none = (values) => {
193
+ return !any(values);
194
+ };
195
+ var not = (value) => {
196
+ return !Boolean(value);
197
+ };
198
+ var xor = (values) => {
199
+ if (!Array.isArray(values)) {
200
+ return false;
201
+ }
202
+ let truthyCount = 0;
203
+ for (const value of values) {
204
+ if (Boolean(value)) {
205
+ truthyCount++;
206
+ if (truthyCount > 1) {
207
+ return false;
208
+ }
209
+ }
210
+ }
211
+ return truthyCount === 1;
212
+ };
213
+ var nand = (values) => {
214
+ return !all(values);
215
+ };
216
+ var nor = (values) => {
217
+ return none(values);
218
+ };
219
+ var xnor = (values) => {
220
+ if (!Array.isArray(values) || values.length === 0) {
221
+ return true;
222
+ }
223
+ const firstTruthy = Boolean(values[0]);
224
+ for (let i = 1; i < values.length; i++) {
225
+ if (Boolean(values[i]) !== firstTruthy) {
226
+ return false;
227
+ }
228
+ }
229
+ return true;
230
+ };
231
+ var countTruthy = (values) => {
232
+ if (!Array.isArray(values)) {
233
+ return 0;
234
+ }
235
+ let count = 0;
236
+ for (const value of values) {
237
+ if (Boolean(value)) {
238
+ count++;
239
+ }
240
+ }
241
+ return count;
242
+ };
243
+ var countFalsy = (values) => {
244
+ if (!Array.isArray(values)) {
245
+ return 0;
246
+ }
247
+ return values.length - countTruthy(values);
248
+ };
249
+ var createToggle = (initialState = false) => {
250
+ let state = initialState;
251
+ return () => {
252
+ state = !state;
253
+ return state;
254
+ };
255
+ };
256
+ var compare = (a, b, operator = "===") => {
257
+ switch (operator) {
258
+ case "==":
259
+ return a == b;
260
+ case "===":
261
+ return a === b;
262
+ case "!=":
263
+ return a != b;
264
+ case "!==":
265
+ return a !== b;
266
+ case ">":
267
+ return a > b;
268
+ case "<":
269
+ return a < b;
270
+ case ">=":
271
+ return a >= b;
272
+ case "<=":
273
+ return a <= b;
274
+ default:
275
+ throw new Error(`Unsupported operator: ${operator}`);
276
+ }
277
+ };
278
+ var checkConditions = (value, checks) => {
279
+ for (const check of checks) {
280
+ if (!compare(value, check.value, check.operator)) {
281
+ return false;
282
+ }
283
+ }
284
+ return true;
285
+ };
286
+ var validateBooleanConstraint = (value, constraint) => {
287
+ switch (constraint) {
288
+ case "required":
289
+ return value === true;
290
+ case "optional":
291
+ return value === true || value === false;
292
+ case "true":
293
+ return value === true;
294
+ case "false":
295
+ return value === false;
296
+ case "truthy":
297
+ return Boolean(value);
298
+ case "falsy":
299
+ return !Boolean(value);
300
+ default:
301
+ return false;
302
+ }
303
+ };
304
+ var randomBoolean = (probability = 0.5) => {
305
+ if (probability < 0 || probability > 1) {
306
+ throw new Error("Probability must be between 0 and 1");
307
+ }
308
+ if (probability === 0) return false;
309
+ return Math.random() <= probability;
310
+ };
311
+ var debounceBoolean = (fn, delay) => {
312
+ let timeoutId;
313
+ let lastResult;
314
+ return (...args) => {
315
+ if (timeoutId) {
316
+ clearTimeout(timeoutId);
317
+ }
318
+ timeoutId = setTimeout(() => {
319
+ lastResult = fn(...args);
320
+ }, delay);
321
+ return lastResult;
322
+ };
323
+ };
324
+ var memoizeBoolean = (fn) => {
325
+ const cache = /* @__PURE__ */ new WeakMap();
326
+ return ((...args) => {
327
+ let keyObj = null;
328
+ let keyString = "";
329
+ for (let i = 0; i < args.length; i++) {
330
+ if (args[i] !== null && typeof args[i] === "object") {
331
+ keyObj = args[i];
332
+ break;
333
+ }
334
+ }
335
+ keyString = JSON.stringify(args);
336
+ if (keyObj) {
337
+ let objCache = cache.get(keyObj);
338
+ if (!objCache) {
339
+ objCache = /* @__PURE__ */ new Map();
340
+ cache.set(keyObj, objCache);
341
+ }
342
+ if (objCache.has(keyString)) {
343
+ return objCache.get(keyString);
344
+ }
345
+ const result = fn(...args);
346
+ objCache.set(keyString, result);
347
+ return result;
348
+ } else {
349
+ const stringCache = cache.get(Object.prototype) || /* @__PURE__ */ new Map();
350
+ if (!cache.has(Object.prototype)) {
351
+ cache.set(Object.prototype, stringCache);
352
+ }
353
+ if (stringCache.has(keyString)) {
354
+ return stringCache.get(keyString);
355
+ }
356
+ const result = fn(...args);
357
+ stringCache.set(keyString, result);
358
+ return result;
359
+ }
360
+ });
361
+ };
362
+ var createPipeline = (functions) => {
363
+ return (value) => {
364
+ for (const fn of functions) {
365
+ if (!fn(value)) {
366
+ return false;
367
+ }
368
+ }
369
+ return true;
370
+ };
371
+ };
372
+ var isBooleanArray = (value) => {
373
+ return Array.isArray(value) && value.every((item) => item === true || item === false);
374
+ };
375
+ var isBooleanLikeArray = (value) => {
376
+ return Array.isArray(value) && value.every((item) => isBooleanLike(item));
377
+ };
378
+ var compareBoolean = (value, newValue) => {
379
+ const o = toBoolean(value);
380
+ const n = toBoolean(newValue);
381
+ return o !== n;
382
+ };