@develia/commons 0.4.15 → 0.4.18

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 (216) hide show
  1. package/dist/cjs/array.js +38 -2
  2. package/dist/cjs/array.js.map +1 -1
  3. package/dist/cjs/async-pool-executor.js +26 -11
  4. package/dist/cjs/async-pool-executor.js.map +1 -1
  5. package/dist/cjs/browser/form-utilities.js +35 -34
  6. package/dist/cjs/browser/form-utilities.js.map +1 -1
  7. package/dist/cjs/browser/geo-location.js +1 -1
  8. package/dist/cjs/browser/geo-location.js.map +1 -1
  9. package/dist/cjs/browser/native-bridge.js +3 -1
  10. package/dist/cjs/browser/native-bridge.js.map +1 -1
  11. package/dist/cjs/cancellable-promise.js +34 -13
  12. package/dist/cjs/cancellable-promise.js.map +1 -1
  13. package/dist/cjs/clean-url-search-params.js +26 -3
  14. package/dist/cjs/clean-url-search-params.js.map +1 -1
  15. package/dist/cjs/collections/cache-dictionary.js +3 -3
  16. package/dist/cjs/collections/cache-dictionary.js.map +1 -1
  17. package/dist/cjs/collections/default-map.js.map +1 -1
  18. package/dist/cjs/collections/default-weak-map.js.map +1 -1
  19. package/dist/cjs/collections/from.js +3 -3
  20. package/dist/cjs/collections/from.js.map +1 -1
  21. package/dist/cjs/collections/index.js.map +1 -1
  22. package/dist/cjs/draft.js +46 -11
  23. package/dist/cjs/draft.js.map +1 -1
  24. package/dist/cjs/event-bus.js +1 -1
  25. package/dist/cjs/event-bus.js.map +1 -1
  26. package/dist/cjs/functions.js +348 -0
  27. package/dist/cjs/functions.js.map +1 -0
  28. package/dist/cjs/index.js +4 -1
  29. package/dist/cjs/index.js.map +1 -1
  30. package/dist/cjs/key-value-pair.js.map +1 -1
  31. package/dist/cjs/lazy.js.map +1 -1
  32. package/dist/cjs/math.js +3 -0
  33. package/dist/cjs/math.js.map +1 -1
  34. package/dist/cjs/order.js.map +1 -1
  35. package/dist/cjs/parse.js +10 -1
  36. package/dist/cjs/parse.js.map +1 -1
  37. package/dist/cjs/patch.js.map +1 -1
  38. package/dist/cjs/range.js +154 -0
  39. package/dist/cjs/range.js.map +1 -0
  40. package/dist/cjs/stopwatch.js.map +1 -1
  41. package/dist/cjs/string.js +8 -5
  42. package/dist/cjs/string.js.map +1 -1
  43. package/dist/cjs/timer.js +1 -1
  44. package/dist/cjs/timer.js.map +1 -1
  45. package/dist/cjs/timespan.js +21 -8
  46. package/dist/cjs/timespan.js.map +1 -1
  47. package/dist/cjs/type-code.js.map +1 -1
  48. package/dist/cjs/type.js +20 -19
  49. package/dist/cjs/type.js.map +1 -1
  50. package/dist/cjs/types.js.map +1 -1
  51. package/dist/cjs/utilities.js +175 -39
  52. package/dist/cjs/utilities.js.map +1 -1
  53. package/dist/esm/array.js +36 -2
  54. package/dist/esm/array.js.map +1 -1
  55. package/dist/esm/async-pool-executor.js +26 -11
  56. package/dist/esm/async-pool-executor.js.map +1 -1
  57. package/dist/esm/browser/form-utilities.js +35 -34
  58. package/dist/esm/browser/form-utilities.js.map +1 -1
  59. package/dist/esm/browser/geo-location.js +1 -1
  60. package/dist/esm/browser/geo-location.js.map +1 -1
  61. package/dist/esm/browser/native-bridge.js +3 -1
  62. package/dist/esm/browser/native-bridge.js.map +1 -1
  63. package/dist/esm/cancellable-promise.js +34 -13
  64. package/dist/esm/cancellable-promise.js.map +1 -1
  65. package/dist/esm/clean-url-search-params.js +26 -3
  66. package/dist/esm/clean-url-search-params.js.map +1 -1
  67. package/dist/esm/collections/cache-dictionary.js +3 -3
  68. package/dist/esm/collections/cache-dictionary.js.map +1 -1
  69. package/dist/esm/collections/default-map.js.map +1 -1
  70. package/dist/esm/collections/default-weak-map.js.map +1 -1
  71. package/dist/esm/collections/from.js +3 -3
  72. package/dist/esm/collections/from.js.map +1 -1
  73. package/dist/esm/collections/index.js.map +1 -1
  74. package/dist/esm/draft.js +46 -11
  75. package/dist/esm/draft.js.map +1 -1
  76. package/dist/esm/event-bus.js +1 -1
  77. package/dist/esm/event-bus.js.map +1 -1
  78. package/dist/esm/functions.js +336 -0
  79. package/dist/esm/functions.js.map +1 -0
  80. package/dist/esm/index.js +2 -0
  81. package/dist/esm/index.js.map +1 -1
  82. package/dist/esm/key-value-pair.js.map +1 -1
  83. package/dist/esm/lazy.js.map +1 -1
  84. package/dist/esm/math.js +3 -0
  85. package/dist/esm/math.js.map +1 -1
  86. package/dist/esm/order.js.map +1 -1
  87. package/dist/esm/parse.js +10 -1
  88. package/dist/esm/parse.js.map +1 -1
  89. package/dist/esm/patch.js.map +1 -1
  90. package/dist/esm/range.js +151 -0
  91. package/dist/esm/range.js.map +1 -0
  92. package/dist/esm/stopwatch.js.map +1 -1
  93. package/dist/esm/string.js +8 -5
  94. package/dist/esm/string.js.map +1 -1
  95. package/dist/esm/timer.js +1 -1
  96. package/dist/esm/timer.js.map +1 -1
  97. package/dist/esm/timespan.js +21 -8
  98. package/dist/esm/timespan.js.map +1 -1
  99. package/dist/esm/type-code.js.map +1 -1
  100. package/dist/esm/type.js +20 -19
  101. package/dist/esm/type.js.map +1 -1
  102. package/dist/esm/types.js.map +1 -1
  103. package/dist/esm/utilities.js +174 -39
  104. package/dist/esm/utilities.js.map +1 -1
  105. package/dist/types/array.d.ts +29 -0
  106. package/dist/types/array.d.ts.map +1 -1
  107. package/dist/types/async-pool-executor.d.ts +2 -2
  108. package/dist/types/async-pool-executor.d.ts.map +1 -1
  109. package/dist/types/browser/form-utilities.d.ts.map +1 -1
  110. package/dist/types/browser/native-bridge.d.ts.map +1 -1
  111. package/dist/types/cancellable-promise.d.ts.map +1 -1
  112. package/dist/types/clean-url-search-params.d.ts +3 -1
  113. package/dist/types/clean-url-search-params.d.ts.map +1 -1
  114. package/dist/types/collections/from.d.ts +1 -1
  115. package/dist/types/draft.d.ts.map +1 -1
  116. package/dist/types/functions.d.ts +231 -0
  117. package/dist/types/functions.d.ts.map +1 -0
  118. package/dist/types/index.d.ts +2 -0
  119. package/dist/types/index.d.ts.map +1 -1
  120. package/dist/types/math.d.ts.map +1 -1
  121. package/dist/types/parse.d.ts.map +1 -1
  122. package/dist/types/range.d.ts +72 -0
  123. package/dist/types/range.d.ts.map +1 -0
  124. package/dist/types/string.d.ts.map +1 -1
  125. package/dist/types/timer.d.ts +1 -1
  126. package/dist/types/timespan.d.ts.map +1 -1
  127. package/dist/types/type.d.ts +2 -0
  128. package/dist/types/type.d.ts.map +1 -1
  129. package/dist/types/types.d.ts +1 -1
  130. package/dist/types/types.d.ts.map +1 -1
  131. package/dist/types/utilities.d.ts +21 -3
  132. package/dist/types/utilities.d.ts.map +1 -1
  133. package/dist/web/array.js +36 -2
  134. package/dist/web/array.js.map +1 -1
  135. package/dist/web/async-pool-executor.js +26 -11
  136. package/dist/web/async-pool-executor.js.map +1 -1
  137. package/dist/web/browser/form-utilities.js +35 -34
  138. package/dist/web/browser/form-utilities.js.map +1 -1
  139. package/dist/web/browser/geo-location.js +1 -1
  140. package/dist/web/browser/geo-location.js.map +1 -1
  141. package/dist/web/browser/native-bridge.js +3 -1
  142. package/dist/web/browser/native-bridge.js.map +1 -1
  143. package/dist/web/cancellable-promise.js +34 -13
  144. package/dist/web/cancellable-promise.js.map +1 -1
  145. package/dist/web/clean-url-search-params.js +26 -3
  146. package/dist/web/clean-url-search-params.js.map +1 -1
  147. package/dist/web/collections/cache-dictionary.js +3 -3
  148. package/dist/web/collections/cache-dictionary.js.map +1 -1
  149. package/dist/web/collections/default-map.js.map +1 -1
  150. package/dist/web/collections/default-weak-map.js.map +1 -1
  151. package/dist/web/collections/from.js +3 -3
  152. package/dist/web/collections/from.js.map +1 -1
  153. package/dist/web/collections/index.js.map +1 -1
  154. package/dist/web/draft.js +46 -11
  155. package/dist/web/draft.js.map +1 -1
  156. package/dist/web/event-bus.js +1 -1
  157. package/dist/web/event-bus.js.map +1 -1
  158. package/dist/web/functions.js +336 -0
  159. package/dist/web/functions.js.map +1 -0
  160. package/dist/web/index.js +2 -0
  161. package/dist/web/index.js.map +1 -1
  162. package/dist/web/key-value-pair.js.map +1 -1
  163. package/dist/web/lazy.js.map +1 -1
  164. package/dist/web/math.js +3 -0
  165. package/dist/web/math.js.map +1 -1
  166. package/dist/web/order.js.map +1 -1
  167. package/dist/web/parse.js +10 -1
  168. package/dist/web/parse.js.map +1 -1
  169. package/dist/web/patch.js.map +1 -1
  170. package/dist/web/range.js +151 -0
  171. package/dist/web/range.js.map +1 -0
  172. package/dist/web/stopwatch.js.map +1 -1
  173. package/dist/web/string.js +8 -5
  174. package/dist/web/string.js.map +1 -1
  175. package/dist/web/timer.js +1 -1
  176. package/dist/web/timer.js.map +1 -1
  177. package/dist/web/timespan.js +21 -8
  178. package/dist/web/timespan.js.map +1 -1
  179. package/dist/web/type-code.js.map +1 -1
  180. package/dist/web/type.js +20 -19
  181. package/dist/web/type.js.map +1 -1
  182. package/dist/web/types.js.map +1 -1
  183. package/dist/web/utilities.js +174 -39
  184. package/dist/web/utilities.js.map +1 -1
  185. package/package.json +66 -60
  186. package/src/array.ts +116 -68
  187. package/src/async-pool-executor.ts +107 -85
  188. package/src/browser/form-utilities.ts +32 -31
  189. package/src/browser/geo-location.ts +113 -113
  190. package/src/browser/native-bridge.ts +118 -116
  191. package/src/cancellable-promise.ts +102 -76
  192. package/src/clean-url-search-params.ts +36 -11
  193. package/src/collections/cache-dictionary.ts +115 -115
  194. package/src/collections/default-map.ts +48 -48
  195. package/src/collections/default-weak-map.ts +51 -51
  196. package/src/collections/from.ts +859 -859
  197. package/src/collections/index.ts +3 -3
  198. package/src/draft.ts +55 -16
  199. package/src/event-bus.ts +83 -83
  200. package/src/functions.ts +496 -0
  201. package/src/index.ts +44 -42
  202. package/src/key-value-pair.ts +24 -24
  203. package/src/lazy.ts +32 -32
  204. package/src/math.ts +33 -30
  205. package/src/order.ts +5 -5
  206. package/src/parse.ts +251 -240
  207. package/src/patch.ts +79 -79
  208. package/src/range.ts +165 -0
  209. package/src/stopwatch.ts +43 -43
  210. package/src/string.ts +8 -5
  211. package/src/timer.ts +67 -67
  212. package/src/timespan.ts +412 -398
  213. package/src/type-code.ts +15 -15
  214. package/src/type.ts +372 -371
  215. package/src/types.ts +30 -30
  216. package/src/utilities.ts +653 -480
@@ -0,0 +1,231 @@
1
+ type AnyFunction = (this: any, ...args: any[]) => any;
2
+ /** Options that control when a debounced function is executed. */
3
+ export interface DebounceOptions {
4
+ /** Execute on the first call in a debounce window. Defaults to false. */
5
+ leading?: boolean;
6
+ /** Execute after the debounce window using the latest arguments. Defaults to true. */
7
+ trailing?: boolean;
8
+ }
9
+ /** Options that control when a throttled function is executed. */
10
+ export interface ThrottleOptions {
11
+ /** Execute immediately on the first call in a throttle window. Defaults to true. */
12
+ leading?: boolean;
13
+ /** Execute once more at the end of the throttle window using the latest arguments. Defaults to true. */
14
+ trailing?: boolean;
15
+ }
16
+ /**
17
+ * A delayed function returned by {@link debounce} or {@link throttle}.
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * const saveLater = debounce(save, 250);
22
+ * saveLater();
23
+ *
24
+ * if (saveLater.pending()) {
25
+ * saveLater.flush();
26
+ * }
27
+ * ```
28
+ */
29
+ export type DeferredFunction<F extends AnyFunction> = ((this: ThisParameterType<F>, ...args: Parameters<F>) => ReturnType<F> | undefined) & {
30
+ /** Cancel the scheduled call and forget the latest arguments. */
31
+ cancel(): void;
32
+ /** Execute the scheduled trailing call immediately, when one exists. */
33
+ flush(): ReturnType<F> | undefined;
34
+ /** Return true while a trailing call is scheduled. */
35
+ pending(): boolean;
36
+ };
37
+ /**
38
+ * A memoized function with helpers for inspecting and invalidating its cache.
39
+ *
40
+ * @example
41
+ * ```ts
42
+ * const getUser = memoize((id: string) => fetchUser(id));
43
+ *
44
+ * getUser("42");
45
+ * getUser.has("42"); // true
46
+ * getUser.delete("42");
47
+ * ```
48
+ */
49
+ export type MemoizedFunction<F extends AnyFunction, K> = ((this: ThisParameterType<F>, ...args: Parameters<F>) => ReturnType<F>) & {
50
+ /** The backing cache used by the memoized function. */
51
+ readonly cache: Map<K, ReturnType<F>>;
52
+ /** Remove every cached value. */
53
+ clear(): void;
54
+ /** Remove the cached value for the key resolved from the provided arguments. */
55
+ delete(...args: Parameters<F>): boolean;
56
+ /** Return true when a cached value exists for the key resolved from the provided arguments. */
57
+ has(...args: Parameters<F>): boolean;
58
+ };
59
+ type Unary<T, R> = (arg: T) => R;
60
+ /**
61
+ * Return the received value unchanged.
62
+ * Useful as a default mapper, placeholder callback, or neutral transform in a pipeline.
63
+ *
64
+ * @example
65
+ * ```ts
66
+ * identity(5); // 5
67
+ *
68
+ * const value = {name: "commons"};
69
+ * identity(value) === value; // true
70
+ * ```
71
+ */
72
+ export declare function identity<T>(value: T): T;
73
+ /**
74
+ * Create a function that always returns the same value.
75
+ *
76
+ * @example
77
+ * ```ts
78
+ * const getAnswer = constant(42);
79
+ *
80
+ * getAnswer(); // 42
81
+ * getAnswer(); // 42
82
+ * ```
83
+ */
84
+ export declare function constant<T>(value: T): () => T;
85
+ /**
86
+ * Do nothing and return undefined.
87
+ * Useful as a safe default callback.
88
+ *
89
+ * @example
90
+ * ```ts
91
+ * const onComplete = options.onComplete ?? noop;
92
+ * onComplete();
93
+ * ```
94
+ */
95
+ export declare function noop(): void;
96
+ /**
97
+ * Create a function that can be executed only once.
98
+ * Later calls return the result from the first execution without calling the original function again.
99
+ *
100
+ * @example
101
+ * ```ts
102
+ * const initialize = once(() => ({connected: true}));
103
+ *
104
+ * const first = initialize();
105
+ * const second = initialize();
106
+ * first === second; // true
107
+ * ```
108
+ */
109
+ export declare function once<F extends AnyFunction>(fn: F): F;
110
+ /**
111
+ * Cache the result of a function and reuse it for calls with the same resolved key.
112
+ * By default, the first argument is used as the cache key.
113
+ *
114
+ * @example
115
+ * ```ts
116
+ * const double = memoize((value: number) => value * 2);
117
+ *
118
+ * double(4); // 8, computed
119
+ * double(4); // 8, read from cache
120
+ * double.has(4); // true
121
+ * ```
122
+ *
123
+ * @example
124
+ * ```ts
125
+ * const sum = memoize(
126
+ * (left: number, right: number) => left + right,
127
+ * (left, right) => `${left}:${right}`,
128
+ * );
129
+ *
130
+ * sum(2, 3); // 5
131
+ * sum.delete(2, 3); // true
132
+ * sum.clear();
133
+ * ```
134
+ */
135
+ export declare function memoize<F extends AnyFunction, K = Parameters<F>[0]>(fn: F, resolver?: (...args: Parameters<F>) => K, cache?: Map<K, ReturnType<F>>): MemoizedFunction<F, K>;
136
+ /**
137
+ * Delay a function until no calls have been made for the configured wait time.
138
+ * The latest arguments and this-context are used for the trailing execution.
139
+ *
140
+ * @example
141
+ * ```ts
142
+ * const search = debounce((query: string) => {
143
+ * console.log(query);
144
+ * }, 300);
145
+ *
146
+ * search("com");
147
+ * search("commons"); // only this value is printed after 300 ms
148
+ * ```
149
+ *
150
+ * @example
151
+ * ```ts
152
+ * const track = debounce(sendAnalytics, 1000, {leading: true, trailing: false});
153
+ *
154
+ * track("open"); // executed immediately
155
+ * track.cancel(); // cancel the pending debounce window
156
+ * ```
157
+ */
158
+ export declare function debounce<F extends AnyFunction>(fn: F, wait: number, options?: DebounceOptions): DeferredFunction<F>;
159
+ /**
160
+ * Limit how often a function can run during a time window.
161
+ * Calls made while the function is throttled can optionally be replayed once at the end with the latest arguments.
162
+ *
163
+ * @example
164
+ * ```ts
165
+ * const onScroll = throttle(() => {
166
+ * console.log(window.scrollY);
167
+ * }, 100);
168
+ *
169
+ * window.addEventListener("scroll", onScroll);
170
+ * ```
171
+ *
172
+ * @example
173
+ * ```ts
174
+ * const refresh = throttle(loadData, 500, {leading: false});
175
+ *
176
+ * refresh(); // scheduled instead of executed immediately
177
+ * refresh.flush(); // execute the scheduled call now
178
+ * ```
179
+ */
180
+ export declare function throttle<F extends AnyFunction>(fn: F, wait: number, options?: ThrottleOptions): DeferredFunction<F>;
181
+ /**
182
+ * Create a function with one or more arguments already provided.
183
+ * Later arguments are appended after the preset arguments.
184
+ *
185
+ * @example
186
+ * ```ts
187
+ * const sum = (a: number, b: number, c: number) => a + b + c;
188
+ * const addFive = partial(sum, 2, 3);
189
+ *
190
+ * addFive(4); // 9
191
+ * ```
192
+ */
193
+ export declare function partial<F extends AnyFunction>(fn: F, ...presetArgs: unknown[]): (...laterArgs: unknown[]) => ReturnType<F>;
194
+ /**
195
+ * Compose unary functions from left to right.
196
+ * The first function receives the original arguments, and each next function receives the previous result.
197
+ *
198
+ * @example
199
+ * ```ts
200
+ * const transform = pipe(
201
+ * (value: number) => value + 1,
202
+ * (value: number) => value * 2,
203
+ * );
204
+ *
205
+ * transform(2); // 6
206
+ * ```
207
+ */
208
+ export declare function pipe<A, B>(ab: Unary<A, B>): Unary<A, B>;
209
+ export declare function pipe<A, B, C>(ab: Unary<A, B>, bc: Unary<B, C>): Unary<A, C>;
210
+ export declare function pipe<A, B, C, D>(ab: Unary<A, B>, bc: Unary<B, C>, cd: Unary<C, D>): Unary<A, D>;
211
+ export declare function pipe<A, B, C, D, E>(ab: Unary<A, B>, bc: Unary<B, C>, cd: Unary<C, D>, de: Unary<D, E>): Unary<A, E>;
212
+ /**
213
+ * Compose unary functions from right to left.
214
+ * The rightmost function receives the original arguments, and each function to its left receives the previous result.
215
+ *
216
+ * @example
217
+ * ```ts
218
+ * const transform = compose(
219
+ * (value: number) => value + 1,
220
+ * (value: number) => value * 2,
221
+ * );
222
+ *
223
+ * transform(2); // 5
224
+ * ```
225
+ */
226
+ export declare function compose<A, B>(ab: Unary<A, B>): Unary<A, B>;
227
+ export declare function compose<A, B, C>(bc: Unary<B, C>, ab: Unary<A, B>): Unary<A, C>;
228
+ export declare function compose<A, B, C, D>(cd: Unary<C, D>, bc: Unary<B, C>, ab: Unary<A, B>): Unary<A, D>;
229
+ export declare function compose<A, B, C, D, E>(de: Unary<D, E>, cd: Unary<C, D>, bc: Unary<B, C>, ab: Unary<A, B>): Unary<A, E>;
230
+ export {};
231
+ //# sourceMappingURL=functions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../src/functions.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ export * from './types.js';
2
2
  export { default as Type } from './type.js';
3
3
  export { default as TypeCode } from './type-code.js';
4
4
  export * from './utilities.js';
5
+ export * from './functions.js';
5
6
  export * from './string.js';
6
7
  export * from './math.js';
7
8
  export { default as CancellablePromise } from "./cancellable-promise.js";
@@ -14,6 +15,7 @@ export { default as AsyncPoolExecutor } from './async-pool-executor.js';
14
15
  export { default as Lazy } from './lazy.js';
15
16
  export { default as from } from './collections/from.js';
16
17
  export { EventBus, Event } from './event-bus.js';
18
+ export { default as Range } from './range.js';
17
19
  export { default as draft } from './draft.js';
18
20
  export { default as CleanURLSearchParams } from './clean-url-search-params.js';
19
21
  /** @deprecated */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAC,OAAO,IAAI,IAAI,EAAC,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAC,OAAO,IAAI,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AAGnD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAC,OAAO,IAAI,kBAAkB,EAAC,MAAM,0BAA0B,CAAC;AAGvE,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAC,OAAO,IAAI,KAAK,EAAC,MAAM,YAAY,CAAC;AAG5C,OAAO,EAAC,OAAO,IAAI,KAAK,EAAC,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAC,OAAO,IAAI,QAAQ,EAAC,MAAM,eAAe,CAAC;AAClD,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAC,OAAO,IAAI,iBAAiB,EAAC,MAAM,0BAA0B,CAAC;AAGtE,OAAO,EAAC,OAAO,IAAI,IAAI,EAAC,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAC,OAAO,IAAI,IAAI,EAAC,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAC,QAAQ,EAAE,KAAK,EAAC,MAAM,gBAAgB,CAAC;AAG/C,OAAO,EAAC,OAAO,IAAI,KAAK,EAAC,MAAM,YAAY,CAAC;AAG5C,OAAO,EAAC,OAAO,IAAI,oBAAoB,EAAC,MAAM,8BAA8B,CAAC;AAC7E,mBAAmB;AACnB,OAAO,EAAC,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAKxF,mBAAmB;AACnB,cAAc,YAAY,CAAC;AAC3B,mBAAmB;AACnB,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAC,OAAO,IAAI,IAAI,EAAC,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAC,OAAO,IAAI,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AAGnD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAC,OAAO,IAAI,kBAAkB,EAAC,MAAM,0BAA0B,CAAC;AAGvE,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAC,OAAO,IAAI,KAAK,EAAC,MAAM,YAAY,CAAC;AAG5C,OAAO,EAAC,OAAO,IAAI,KAAK,EAAC,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAC,OAAO,IAAI,QAAQ,EAAC,MAAM,eAAe,CAAC;AAClD,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAC,OAAO,IAAI,iBAAiB,EAAC,MAAM,0BAA0B,CAAC;AAGtE,OAAO,EAAC,OAAO,IAAI,IAAI,EAAC,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAC,OAAO,IAAI,IAAI,EAAC,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAC,QAAQ,EAAE,KAAK,EAAC,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAC,OAAO,IAAI,KAAK,EAAC,MAAM,YAAY,CAAC;AAG5C,OAAO,EAAC,OAAO,IAAI,KAAK,EAAC,MAAM,YAAY,CAAC;AAG5C,OAAO,EAAC,OAAO,IAAI,oBAAoB,EAAC,MAAM,8BAA8B,CAAC;AAC7E,mBAAmB;AACnB,OAAO,EAAC,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAKxF,mBAAmB;AACnB,cAAc,YAAY,CAAC;AAC3B,mBAAmB;AACnB,cAAc,wBAAwB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../src/math.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEpG;AAED;;;;;;;GAOG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAMjE"}
1
+ {"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../src/math.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAKpG;AAED;;;;;;;GAOG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAMjE"}
@@ -1 +1 @@
1
- {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/parse.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;IAE7B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAeD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,YAAY,CACxB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EACzC,OAAO,GAAE,mBAAwB,GAClC,MAAM,GAAG,IAAI,CAiBf;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,YAAY,CACxB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EACzC,OAAO,GAAE,mBAAwB,GAClC,MAAM,GAAG,IAAI,CAwBf;AASD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,YAAY,CACxB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,EACnD,OAAO,GAAE,mBAAwB,GAClC,OAAO,GAAG,IAAI,CAsBhB"}
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/parse.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;IAE7B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC/B;AA0BD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,YAAY,CACxB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EACzC,OAAO,GAAE,mBAAwB,GAClC,MAAM,GAAG,IAAI,CAiBf;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,YAAY,CACxB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EACzC,OAAO,GAAE,mBAAwB,GAClC,MAAM,GAAG,IAAI,CAwBf;AASD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,YAAY,CACxB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,EACnD,OAAO,GAAE,mBAAwB,GAClC,OAAO,GAAG,IAAI,CAsBhB"}
@@ -0,0 +1,72 @@
1
+ export default class Range<T> {
2
+ private readonly start;
3
+ private readonly end;
4
+ /**
5
+ * Range constructor.
6
+ * @param start
7
+ * @param end
8
+ */
9
+ constructor(start: T, end: T);
10
+ /**
11
+ * Finds the intersection between two ranges.
12
+ *
13
+ * @param other The Range object to intersect with.
14
+ * @returns The intersected Range object, or null if there is no intersection.
15
+ */
16
+ intersect(other: Range<T>): Range<T> | null;
17
+ /**
18
+ * Subtract the given range from this range.
19
+ *
20
+ * @param other The range to subtract from this range.
21
+ * @returns An array of Range objects representing the result of the subtraction.
22
+ */
23
+ subtract(other: Range<T>): Range<T>[];
24
+ /**
25
+ * Determines if the given range overlaps with the current range.
26
+ *
27
+ * @param other The range to be checked for overlap.
28
+ * @returns Returns true if there is an overlap between the ranges, false otherwise.
29
+ */
30
+ overlaps(other: Range<T>): boolean;
31
+ /**
32
+ * Determines whether the specified value is within the range defined by the start and end values.
33
+ *
34
+ * @param obj The value to check if it is within the range.
35
+ * @param inclusive Optional. If set to true, the range boundaries are considered inclusive.
36
+ * @returns Returns true if the specified value is within the range, false otherwise.
37
+ */
38
+ contains(obj: T, inclusive?: boolean): boolean;
39
+ /**
40
+ * @returns T
41
+ */
42
+ getStart(): T;
43
+ /**
44
+ * @returns T
45
+ */
46
+ getEnd(): T;
47
+ /**
48
+ * Finds the intersection between two sets of ranges.
49
+ *
50
+ * @param ranges1
51
+ * @param ranges2
52
+ * @returns
53
+ */
54
+ static intersectRanges<T>(ranges1: Range<T>[], ranges2: Range<T>[]): Range<T>[];
55
+ /**
56
+ * Determines if any range in the first set overlaps with any range in the second set.
57
+ *
58
+ * @param ranges1
59
+ * @param ranges2
60
+ * @returns
61
+ */
62
+ static overlapsAny<T>(ranges1: Range<T>[], ranges2: Range<T>[]): boolean;
63
+ /**
64
+ * Subtracts the second set of ranges from the first set of ranges.
65
+ *
66
+ * @param ranges1
67
+ * @param ranges2
68
+ * @returns
69
+ */
70
+ static subtractRanges<T>(ranges1: Range<T>[], ranges2: Range<T>[]): Range<T>[];
71
+ }
72
+ //# sourceMappingURL=range.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"range.d.ts","sourceRoot":"","sources":["../../src/range.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,KAAK,CAAC,CAAC;IAExB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAI;IAC1B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAI;IAExB;;;;OAIG;gBACS,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;IAK5B;;;;;OAKG;IACI,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI;IAWlD;;;;;OAKG;IACI,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE;IAoB5C;;;;;OAKG;IACI,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO;IAWzC;;;;;;OAMG;IACI,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,SAAS,GAAE,OAAc,GAAG,OAAO;IAM3D;;OAEG;IACI,QAAQ,IAAI,CAAC;IAIpB;;OAEG;IACI,MAAM,IAAI,CAAC;IAIlB;;;;;;OAMG;WACW,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE;IAatF;;;;;;OAMG;WACW,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO;IAW/E;;;;;;OAMG;WACW,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE;CAiBxF"}
@@ -1 +1 @@
1
- {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../src/string.ts"],"names":[],"mappings":"AACA;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAIhE;AAGD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAIhE;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,CAa/D;AA0BD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIhD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAElD"}
1
+ {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../src/string.ts"],"names":[],"mappings":"AACA;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAIhE;AAGD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAIhE;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,CAgB/D;AA0BD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIhD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAElD"}
@@ -7,7 +7,7 @@ export default class Timer {
7
7
  private _intervalId;
8
8
  /**
9
9
  * @param callback Callback
10
- * @param interval Seconds between calls
10
+ * @param interval Milliseconds between calls
11
11
  */
12
12
  constructor(callback: () => void, interval: number);
13
13
  get running(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"timespan.d.ts","sourceRoot":"","sources":["../../src/timespan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"timespan.d.ts","sourceRoot":"","sources":["../../src/timespan.ts"],"names":[],"mappings":"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"}
@@ -78,6 +78,8 @@ export default class Type<T = unknown> {
78
78
  getMemberNames(): ReadonlyArray<string>;
79
79
  hasMethod(name: string): boolean;
80
80
  hasProperty(name: string): boolean;
81
+ private _getPrototypeMemberNames;
82
+ private _getOwnPrototypeDescriptor;
81
83
  getStaticMemberNames(): ReadonlyArray<string>;
82
84
  toString(): string;
83
85
  [Symbol.toPrimitive](hint: string): string | number;
@@ -1 +1 @@
1
- {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/type.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAC,KAAK,WAAW,EAAC,MAAM,YAAY,CAAC;AAE5C,MAAM,CAAC,OAAO,OAAO,IAAI,CAAC,CAAC,GAAG,OAAO;IAMjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAA4B;IAM1D,gBAAuB,MAAM,eAA6E;IAC1G,gBAAuB,MAAM,eAA6E;IAC1G,gBAAuB,OAAO,gBAAiF;IAC/G,gBAAuB,MAAM,eAA6E;IAC1G,gBAAuB,MAAM,eAA6E;IAC1G,gBAAuB,IAAI,aAAqE;IAChG,gBAAuB,SAAS,kBAAyF;IACzH,gBAAuB,MAAM,eAAwE;IACrG,gBAAuB,QAAQ,iBAAkF;IACjH,gBAAuB,KAAK,kBAAuE;IAMnG,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,cAAc,EAC1B,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAC/B,SAAgB,QAAQ,EAAE,QAAQ,CAAC;IAEnC,OAAO;IAcP;;;;;;;;;;;;;;;;;;;;;OAqBG;WACW,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IA8BxD;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAiB/B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAY7B;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAuBjC,IAAW,WAAW,IAAI,OAAO,CAQhC;IAED,IAAW,SAAS,IAAI,OAAO,CAE9B;IAED,IAAW,eAAe,IAAI,OAAO,CAEpC;IAED,IAAW,OAAO,IAAI,OAAO,CAG5B;IAED,IAAW,UAAU,IAAI,OAAO,CAE/B;IAED,IAAW,WAAW,IAAI,OAAO,CAEhC;IAED,IAAW,OAAO,IAAI,OAAO,CAO5B;IAED,IAAW,QAAQ,IAAI,MAAM,CAK5B;IAMD,IAAW,QAAQ,IAAI,IAAI,GAAG,SAAS,CAUtC;IAEM,mBAAmB,IAAI,aAAa,CAAC,IAAI,CAAC;IAY1C,cAAc,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO;IAYrC,gBAAgB,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO;IAIvC,YAAY,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO;IAUnC,cAAc,IAAI,aAAa,CAAC,MAAM,CAAC;IAYvC,gBAAgB,IAAI,aAAa,CAAC,MAAM,CAAC;IAYzC,cAAc,IAAI,aAAa,CAAC,MAAM,CAAC;IAQvC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAKhC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAKlC,oBAAoB,IAAI,aAAa,CAAC,MAAM,CAAC;IAc7C,QAAQ,IAAI,MAAM;IAKlB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;IAU1D,IAAW,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAExC;IAMD,OAAO,CAAC,MAAM,CAAC,YAAY;CAoB9B"}
1
+ {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/type.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAC,KAAK,WAAW,EAAC,MAAM,YAAY,CAAC;AAE5C,MAAM,CAAC,OAAO,OAAO,IAAI,CAAC,CAAC,GAAG,OAAO;IAMjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAA4B;IAM1D,gBAAuB,MAAM,eAA6E;IAC1G,gBAAuB,MAAM,eAA6E;IAC1G,gBAAuB,OAAO,gBAAiF;IAC/G,gBAAuB,MAAM,eAA6E;IAC1G,gBAAuB,MAAM,eAA6E;IAC1G,gBAAuB,IAAI,aAAqE;IAChG,gBAAuB,SAAS,kBAAyF;IACzH,gBAAuB,MAAM,eAAwE;IACrG,gBAAuB,QAAQ,iBAAkF;IACjH,gBAAuB,KAAK,kBAAuE;IAMnG,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,cAAc,EAC1B,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAC/B,SAAgB,QAAQ,EAAE,QAAQ,CAAC;IAEnC,OAAO;IAcP;;;;;;;;;;;;;;;;;;;;;OAqBG;WACW,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IA8BxD;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAiB/B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAY7B;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAuBjC,IAAW,WAAW,IAAI,OAAO,CAQhC;IAED,IAAW,SAAS,IAAI,OAAO,CAE9B;IAED,IAAW,eAAe,IAAI,OAAO,CAEpC;IAED,IAAW,OAAO,IAAI,OAAO,CAG5B;IAED,IAAW,UAAU,IAAI,OAAO,CAE/B;IAED,IAAW,WAAW,IAAI,OAAO,CAEhC;IAED,IAAW,OAAO,IAAI,OAAO,CAO5B;IAED,IAAW,QAAQ,IAAI,MAAM,CAK5B;IAMD,IAAW,QAAQ,IAAI,IAAI,GAAG,SAAS,CAUtC;IAEM,mBAAmB,IAAI,aAAa,CAAC,IAAI,CAAC;IAY1C,cAAc,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO;IAYrC,gBAAgB,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO;IAIvC,YAAY,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO;IAUnC,cAAc,IAAI,aAAa,CAAC,MAAM,CAAC;IAMvC,gBAAgB,IAAI,aAAa,CAAC,MAAM,CAAC;IAMzC,cAAc,IAAI,aAAa,CAAC,MAAM,CAAC;IAIvC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAKhC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAKzC,OAAO,CAAC,wBAAwB;IAYhC,OAAO,CAAC,0BAA0B;IAK3B,oBAAoB,IAAI,aAAa,CAAC,MAAM,CAAC;IAc7C,QAAQ,IAAI,MAAM;IAKlB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;IAU1D,IAAW,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAExC;IAMD,OAAO,CAAC,MAAM,CAAC,YAAY;CAoB9B"}
@@ -5,7 +5,7 @@ export type Supplier<T> = () => T;
5
5
  export type Nullable<T> = T | null;
6
6
  export type Optional<T> = T | undefined;
7
7
  export type Nullish = null | undefined;
8
- export type Resolvable<T> = Promise<T> | Supplier<T>;
8
+ export type Resolvable<T> = T | Promise<T> | Supplier<T>;
9
9
  export type UnaryFunction<T, R> = (arg: T) => R;
10
10
  export type BinaryFunction<T1, T2, R> = (arg1: T1, arg2: T2) => R;
11
11
  export type TernaryFunction<T1, T2, T3, R> = (arg1: T1, arg2: T2, arg3: T3) => R;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;AAEhE,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAA;AAE1C,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC;AAE/C,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;AAElC,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAEnC,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;AAExC,MAAM,MAAM,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAEvC,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;AAEpD,MAAM,MAAM,aAAa,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;AAEhD,MAAM,MAAM,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;AAElE,MAAM,MAAM,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;AAEjF,MAAM,MAAM,kBAAkB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,CAChD,IAAI,EAAE,EAAE,EACR,IAAI,EAAE,EAAE,EACR,IAAI,EAAE,EAAE,EACR,IAAI,EAAE,EAAE,KACP,CAAC,CAAC;AAEP,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,OAAO,IAAI,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;AAEhE,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAA;AAE1C,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC;AAE/C,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;AAElC,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAEnC,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;AAExC,MAAM,MAAM,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAEvC,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAEzD,MAAM,MAAM,aAAa,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;AAEhD,MAAM,MAAM,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;AAElE,MAAM,MAAM,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;AAEjF,MAAM,MAAM,kBAAkB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,CAChD,IAAI,EAAE,EAAE,EACR,IAAI,EAAE,EAAE,EACR,IAAI,EAAE,EAAE,EACR,IAAI,EAAE,EAAE,KACP,CAAC,CAAC;AAEP,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,OAAO,IAAI,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import KeyValuePair from "./key-value-pair.js";
2
- import type { Resolvable } from "./types.js";
2
+ import type { Resolvable, Constructor } from "./types.js";
3
3
  import Type from "./type.js";
4
4
  export declare function lazy<T extends object>(factory: () => T): T;
5
5
  /**
@@ -60,9 +60,10 @@ export declare function isFunction(value: any): value is Function;
60
60
  *
61
61
  * @param a - First value.
62
62
  * @param b - Second value.
63
+ * @param includeInherited - Whether inherited enumerable properties are compared. Defaults to `true`.
63
64
  * @returns `true` if `a` and `b` are structurally equal.
64
65
  */
65
- export declare function deepEqual(a: unknown, b: unknown): boolean;
66
+ export declare function deepEqual(a: unknown, b: unknown, includeInherited?: boolean): boolean;
66
67
  /**
67
68
  * Submits an HTML form programmatically using the specified HTTP method (default is POST),
68
69
  * without using AJAX. Supports nested objects and arrays using bracket notation (e.g., `user[name]`, `tags[]`).
@@ -102,7 +103,7 @@ export declare function isUndefined(value: any): value is undefined;
102
103
  *
103
104
  * @return {boolean} - True if the value is defined, false otherwise.
104
105
  */
105
- export declare function isDefined(value: any): value is undefined;
106
+ export declare function isDefined<T>(value: T): value is Exclude<T, undefined>;
106
107
  /**
107
108
  * Checks if a given value is null.
108
109
  *
@@ -197,4 +198,21 @@ export declare function deepClone<T>(value: T): T;
197
198
  * @deprecated use Type.of(...)
198
199
  */
199
200
  export declare function getType(value: any): Type;
201
+ /**
202
+ * Patches a method onto a class prototype.
203
+ *
204
+ * This function allows adding new methods to existing classes (monkey-patching).
205
+ * If the method name already exists on the prototype, a warning is issued
206
+ * and the method is not overwritten.
207
+ *
208
+ * If `method` is a function, its name is extracted (if not provided) and
209
+ * it is wrapped to pass the instance (`this`) as the first argument.
210
+ *
211
+ * @template T - The type of the class constructor.
212
+ * @param {T} target - The class constructor whose prototype will be patched.
213
+ * @param {any} method - The implementation or value to patch.
214
+ * @param {string | symbol} [name] - Optional name for the method. If not provided and method is a function, method.name is used.
215
+ * @returns {boolean} Returns `true` if the method was successfully added, or `false` if it already existed.
216
+ */
217
+ export declare function monkeyPatch<T extends Constructor>(target: T, method: any, name?: string | symbol): boolean;
200
218
  //# sourceMappingURL=utilities.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../src/utilities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../src/utilities.ts"],"names":[],"mappings":"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"}
package/dist/web/array.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { monkeyPatch } from "./utilities.js";
1
2
  /**
2
3
  * Removes all given values from the provided array and returns the number of removed elements.
3
4
  * The operation mutates the original array.
@@ -9,8 +10,8 @@
9
10
  export function pull(array, ...items) {
10
11
  let output = 0;
11
12
  for (const item of items) {
12
- const index = array.indexOf(item);
13
- if (index !== -1) {
13
+ let index;
14
+ while ((index = array.findIndex(val => Object.is(val, item))) !== -1) {
14
15
  array.splice(index, 1);
15
16
  output++;
16
17
  }
@@ -61,4 +62,37 @@ export function remove(array, predicate) {
61
62
  }
62
63
  return removed;
63
64
  }
65
+ /**
66
+ * Adds an element to the array if it's not already present.
67
+ * The operation mutates the original array.
68
+ * @template T
69
+ * @param {Array<T>} array - The array to modify.
70
+ * @param {T} element - The element to add if absent.
71
+ * @return {boolean} True if the element was added, false otherwise.
72
+ */
73
+ export function pushIfAbsent(array, element) {
74
+ if (!array.includes(element)) {
75
+ array.push(element);
76
+ return true;
77
+ }
78
+ return false;
79
+ }
80
+ /**
81
+ * Patches the Array prototype with the methods defined in this module:
82
+ * - pull
83
+ * - chunk
84
+ * - clear
85
+ * - remove
86
+ * - pushIfAbsent
87
+ *
88
+ * Each method is added only if it doesn't already exist on Array.prototype.
89
+ */
90
+ export function patchArray() {
91
+ const target = Array;
92
+ monkeyPatch(target, pull);
93
+ monkeyPatch(target, chunk);
94
+ monkeyPatch(target, clear);
95
+ monkeyPatch(target, remove);
96
+ monkeyPatch(target, pushIfAbsent);
97
+ }
64
98
  //# sourceMappingURL=array.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"array.js","sourceRoot":"","sources":["../../src/array.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,UAAU,IAAI,CAAI,KAAe,EAAE,GAAG,KAAe;IAEvD,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACf,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACvB,MAAM,EAAE,CAAC;QACb,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,KAAK,CAAI,KAAe,EAAE,IAAY;IAClD,IAAI,IAAI,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAI,KAAe;IACpC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACrB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,MAAM,CAAI,KAAe,EAAC,SAAuB;IAC7D,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QACtB,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACvB,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB;QACxC,CAAC;aAAM,CAAC;YACJ,CAAC,EAAE,CAAC;QACR,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC","sourcesContent":["import type {Predicate} from \"./types.js\";\r\n\r\n/**\r\n * Removes all given values from the provided array and returns the number of removed elements.\r\n * The operation mutates the original array.\r\n * @template T\r\n * @param {Array<T>} array - The array to modify by removing specified items.\r\n * @param {...T} items - The values to remove from the array.\r\n * @return {number} The number of elements removed from the array.\r\n */\r\nexport function pull<T>(array: Array<T>, ...items: Array<T>): number {\r\n\r\n let output = 0;\r\n for (const item of items) {\r\n const index = array.indexOf(item);\r\n if (index !== -1) {\r\n array.splice(index, 1);\r\n output++;\r\n }\r\n }\r\n return output;\r\n}\r\n\r\n/**\r\n * Splits an array into chunks of a given size.\r\n * @template T\r\n * @param {Array<T>} array - The array to split.\r\n * @param {number} size - The size of each chunk.\r\n * @return {Array<Array<T>>} The array of chunks.\r\n */\r\nexport function chunk<T>(array: Array<T>, size: number): Array<Array<T>> {\r\n if (size <= 0) throw new Error(\"Size must be greater than 0\");\r\n const result: Array<Array<T>> = [];\r\n for (let i = 0; i < array.length; i += size) {\r\n result.push(array.slice(i, i + size));\r\n }\r\n return result;\r\n}\r\n\r\n/**\r\n * Removes all elements from the array, mutating it.\r\n * @template T\r\n * @param {Array<T>} array - The array to clear.\r\n */\r\nexport function clear<T>(array: Array<T>): void {\r\n array.length = 0;\r\n}\r\n\r\n/**\r\n * Removes all elements from the array that satisfy the predicate.\r\n * The operation mutates the original array.\r\n * @template T\r\n * @return {Array<T>} An array of removed elements.\r\n */\r\nexport function remove<T>(array: Array<T>,predicate: Predicate<T>): Array<T> {\r\n const removed: Array<T> = [];\r\n let i = 0;\r\n\r\n while (i < array.length) {\r\n if (predicate(array[i])) {\r\n removed.push(array[i]);\r\n array.splice(i, 1); // muta el array\r\n } else {\r\n i++;\r\n }\r\n }\r\n\r\n return removed;\r\n}"]}
1
+ {"version":3,"file":"array.js","sourceRoot":"","sources":["../../src/array.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAa3C;;;;;;;GAOG;AACH,MAAM,UAAU,IAAI,CAAI,KAAe,EAAE,GAAG,KAAe;IAEvD,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,KAAK,CAAC;QACV,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACnE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACvB,MAAM,EAAE,CAAC;QACb,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,KAAK,CAAI,KAAe,EAAE,IAAY;IAClD,IAAI,IAAI,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAI,KAAe;IACpC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACrB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,MAAM,CAAI,KAAe,EAAC,SAAuB;IAC7D,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QACtB,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACvB,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB;QACxC,CAAC;aAAM,CAAC;YACJ,CAAC,EAAE,CAAC;QACR,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAI,KAAe,EAAE,OAAU;IACvD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,UAAU;IACtB,MAAM,MAAM,GAAG,KAA2C,CAAC;IAE3D,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC1B,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC3B,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC3B,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AACtC,CAAC","sourcesContent":["import type {Constructor, Predicate} from \"./types.js\";\nimport {monkeyPatch} from \"./utilities.js\";\n\ndeclare global {\n interface Array<T> {\n pull(...items: Array<T>): number;\n chunk(size: number): Array<Array<T>>;\n clear(): void;\n remove(predicate: Predicate<T>): Array<T>;\n pushIfAbsent(element: T): boolean;\n }\n}\n\n\n/**\n * Removes all given values from the provided array and returns the number of removed elements.\n * The operation mutates the original array.\n * @template T\n * @param {Array<T>} array - The array to modify by removing specified items.\n * @param {...T} items - The values to remove from the array.\n * @return {number} The number of elements removed from the array.\n */\nexport function pull<T>(array: Array<T>, ...items: Array<T>): number {\n\n let output = 0;\n for (const item of items) {\n let index;\n while ((index = array.findIndex(val => Object.is(val, item))) !== -1) {\n array.splice(index, 1);\n output++;\n }\n }\n return output;\n}\n\n/**\n * Splits an array into chunks of a given size.\n * @template T\n * @param {Array<T>} array - The array to split.\n * @param {number} size - The size of each chunk.\n * @return {Array<Array<T>>} The array of chunks.\n */\nexport function chunk<T>(array: Array<T>, size: number): Array<Array<T>> {\n if (size <= 0) throw new Error(\"Size must be greater than 0\");\n const result: Array<Array<T>> = [];\n for (let i = 0; i < array.length; i += size) {\n result.push(array.slice(i, i + size));\n }\n return result;\n}\n\n/**\n * Removes all elements from the array, mutating it.\n * @template T\n * @param {Array<T>} array - The array to clear.\n */\nexport function clear<T>(array: Array<T>): void {\n array.length = 0;\n}\n\n/**\n * Removes all elements from the array that satisfy the predicate.\n * The operation mutates the original array.\n * @template T\n * @return {Array<T>} An array of removed elements.\n */\nexport function remove<T>(array: Array<T>,predicate: Predicate<T>): Array<T> {\n const removed: Array<T> = [];\n let i = 0;\n\n while (i < array.length) {\n if (predicate(array[i])) {\n removed.push(array[i]);\n array.splice(i, 1); // muta el array\n } else {\n i++;\n }\n }\n\n return removed;\n}\n\n/**\n * Adds an element to the array if it's not already present.\n * The operation mutates the original array.\n * @template T\n * @param {Array<T>} array - The array to modify.\n * @param {T} element - The element to add if absent.\n * @return {boolean} True if the element was added, false otherwise.\n */\nexport function pushIfAbsent<T>(array: Array<T>, element: T): boolean {\n if (!array.includes(element)) {\n array.push(element);\n return true;\n }\n return false;\n}\n\n/**\n * Patches the Array prototype with the methods defined in this module:\n * - pull\n * - chunk\n * - clear\n * - remove\n * - pushIfAbsent\n *\n * Each method is added only if it doesn't already exist on Array.prototype.\n */\nexport function patchArray(): void {\n const target = Array as unknown as Constructor<Array<any>>;\n\n monkeyPatch(target, pull);\n monkeyPatch(target, chunk);\n monkeyPatch(target, clear);\n monkeyPatch(target, remove);\n monkeyPatch(target, pushIfAbsent);\n}"]}
@@ -1,10 +1,19 @@
1
1
  import { delay } from "./utilities.js";
2
+ function normalizeMaxConcurrency(value) {
3
+ if (!Number.isInteger(value) || value < 1) {
4
+ throw new RangeError("maxConcurrency must be a positive integer");
5
+ }
6
+ return value;
7
+ }
8
+ function normalizeCheckInterval(value) {
9
+ return Number.isFinite(value) ? Math.max(0, value) : 0;
10
+ }
2
11
  export default class AsyncPoolExecutor {
3
12
  get maxConcurrency() {
4
13
  return this._maxConcurrency;
5
14
  }
6
15
  set maxConcurrency(value) {
7
- this._maxConcurrency = value;
16
+ this._maxConcurrency = normalizeMaxConcurrency(value);
8
17
  }
9
18
  /**
10
19
  * @param {number} maxConcurrency - The maximum number of concurrent tasks allowed.
@@ -12,8 +21,8 @@ export default class AsyncPoolExecutor {
12
21
  */
13
22
  constructor(maxConcurrency, checkInterval = 50) {
14
23
  this._taskQueue = [];
15
- this._maxConcurrency = maxConcurrency;
16
- this._checkIntervalMs = checkInterval;
24
+ this._maxConcurrency = normalizeMaxConcurrency(maxConcurrency);
25
+ this._checkIntervalMs = normalizeCheckInterval(checkInterval);
17
26
  this._activeTasks = 0;
18
27
  }
19
28
  /**
@@ -22,20 +31,25 @@ export default class AsyncPoolExecutor {
22
31
  * @param {Supplier<T>} task - The deferred task to be executed asynchronously.
23
32
  */
24
33
  submit(task) {
25
- this._taskQueue.push(task);
26
- if (this._proccess != null)
27
- return;
28
- this._proccess = setTimeout(async () => {
34
+ const promise = new Promise((resolve, reject) => {
35
+ this._taskQueue.push({ task, resolve, reject });
36
+ });
37
+ if (this._process != null)
38
+ return promise;
39
+ this._process = setTimeout(async () => {
29
40
  while (this._taskQueue.length > 0) {
30
41
  while (this._activeTasks >= this._maxConcurrency) {
31
42
  await delay(this._checkIntervalMs);
32
43
  }
33
- const task = this._taskQueue.shift();
34
- if (task) {
44
+ const queuedTask = this._taskQueue.shift();
45
+ if (queuedTask) {
35
46
  this._activeTasks++;
36
47
  setTimeout(async () => {
37
48
  try {
38
- await task();
49
+ queuedTask.resolve(await queuedTask.task());
50
+ }
51
+ catch (error) {
52
+ queuedTask.reject(error);
39
53
  }
40
54
  finally {
41
55
  this._activeTasks--;
@@ -43,8 +57,9 @@ export default class AsyncPoolExecutor {
43
57
  });
44
58
  }
45
59
  }
46
- this._proccess = null;
60
+ this._process = null;
47
61
  }, 0);
62
+ return promise;
48
63
  }
49
64
  /**
50
65
  * Waits until all tasks (both queued and active) are completed.