@ocavue/utils 1.3.0 → 1.3.1

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.
package/dist/index.d.ts CHANGED
@@ -12,34 +12,63 @@ declare function isMap(value: unknown): value is Map<unknown, unknown>;
12
12
  */
13
13
  declare function isSet(value: unknown): value is Set<unknown>;
14
14
  //#endregion
15
- //#region src/default-map.d.ts
15
+ //#region src/counter.d.ts
16
16
  /**
17
- * A map that automatically creates values for missing keys using a factory function.
17
+ * A map that counts occurrences of keys.
18
18
  *
19
- * Similar to Python's [defaultdict](https://docs.python.org/3.13/library/collections.html#collections.defaultdict).
20
- */
21
- declare class DefaultMap<K$1, V> extends Map<K$1, V> {
22
- private readonly defaultFactory;
23
- constructor(defaultFactory: () => V, iterable?: Iterable<readonly [K$1, V]>);
24
- get(key: K$1): V;
25
- }
26
- /**
27
- * A weak map that automatically creates values for missing keys using a factory function.
19
+ * @example
20
+ * ```typescript
21
+ * // Count word occurrences
22
+ * const wordCounter = new Counter<string>()
23
+ * const words = ['apple', 'banana', 'apple', 'cherry', 'banana', 'apple']
28
24
  *
29
- * Similar to DefaultMap but uses WeakMap as the base, allowing garbage collection of keys.
30
- */
31
- declare class DefaultWeakMap<K$1 extends WeakKey, V> extends WeakMap<K$1, V> {
32
- private readonly defaultFactory;
33
- constructor(defaultFactory: () => V, entries?: readonly (readonly [K$1, V])[] | null);
34
- get(key: K$1): V;
35
- }
36
- /**
37
- * A map that counts occurrences of keys.
25
+ * for (const word of words) {
26
+ * wordCounter.increment(word)
27
+ * }
28
+ *
29
+ * console.log(wordCounter.get('apple')) // 3
30
+ * console.log(wordCounter.get('banana')) // 2
31
+ * console.log(wordCounter.get('cherry')) // 1
32
+ * console.log(wordCounter.get('orange')) // 0 (defaults to 0)
33
+ * ```
34
+ *
35
+ * @example
36
+ * ```typescript
37
+ * // Initialize with existing counts
38
+ * const counter = new Counter<string>([
39
+ * ['red', 5],
40
+ * ['blue', 3],
41
+ * ['green', 7]
42
+ * ])
43
+ *
44
+ * counter.increment('red', 2) // red: 5 -> 7
45
+ * counter.decrement('blue') // blue: 3 -> 2
46
+ * counter.increment('yellow') // yellow: 0 -> 1
47
+ *
48
+ * console.log(counter.get('red')) // 7
49
+ * console.log(counter.get('blue')) // 2
50
+ * console.log(counter.get('yellow')) // 1
51
+ * ```
52
+ *
53
+ * @example
54
+ * ```typescript
55
+ * // Track event frequencies
56
+ * const eventCounter = new Counter<string>()
57
+ *
58
+ * eventCounter.increment('click', 5)
59
+ * eventCounter.increment('hover', 3)
60
+ * eventCounter.increment('click', 2)
38
61
  *
39
- * Similar to Python's [Counter](https://docs.python.org/3.13/library/collections.html#collections.Counter).
62
+ * // Get most common events
63
+ * const events = [...eventCounter.entries()]
64
+ * .sort((a, b) => b[1] - a[1])
65
+ *
66
+ * console.log(events) // [['click', 7], ['hover', 3]]
67
+ * ```
40
68
  */
41
- declare class Counter<K$1> extends DefaultMap<K$1, number> {
69
+ declare class Counter<K$1> extends Map<K$1, number> {
42
70
  constructor(iterable?: Iterable<readonly [K$1, number]>);
71
+ get(key: K$1): number;
43
72
  /**
44
73
  * Increments the count for a key by a given amount (default 1).
45
74
  */
@@ -52,10 +81,72 @@ declare class Counter<K$1> extends DefaultMap<K$1, number> {
52
81
  /**
53
82
  * A weak map that counts occurrences of object keys.
54
83
  *
55
- * Similar to Counter but uses WeakMap as the base, allowing garbage collection of keys.
84
+ * Similar to {@link Counter} but uses WeakMap as the base, allowing garbage collection of keys.
85
+ *
86
+ * @example
87
+ * ```typescript
88
+ * // Track reference counts for DOM elements
89
+ * const elementRefs = new WeakCounter<HTMLElement>()
90
+ *
91
+ * function addReference(element: HTMLElement) {
92
+ * elementRefs.increment(element)
93
+ * console.log(`References: ${elementRefs.get(element)}`)
94
+ * }
95
+ *
96
+ * function removeReference(element: HTMLElement) {
97
+ * elementRefs.decrement(element)
98
+ * console.log(`References: ${elementRefs.get(element)}`)
99
+ * }
100
+ *
101
+ * const div = document.createElement('div')
102
+ * addReference(div) // References: 1
103
+ * addReference(div) // References: 2
104
+ * removeReference(div) // References: 1
105
+ * ```
106
+ *
107
+ * @example
108
+ * ```typescript
109
+ * // Count object interactions without preventing garbage collection
110
+ * const objectInteractions = new WeakCounter<object>()
111
+ *
112
+ * function handleInteraction(obj: object, count = 1) {
113
+ * objectInteractions.increment(obj, count)
114
+ * }
115
+ *
116
+ * const user = { id: 1, name: 'Alice' }
117
+ * const session = { sessionId: 'abc123' }
118
+ *
119
+ * handleInteraction(user, 3)
120
+ * handleInteraction(session, 1)
121
+ * handleInteraction(user, 2)
122
+ *
123
+ * console.log(objectInteractions.get(user)) // 5
124
+ * console.log(objectInteractions.get(session)) // 1
125
+ * // When user and session are no longer referenced elsewhere,
126
+ * // they can be garbage collected along with their counts
127
+ * ```
128
+ *
129
+ * @example
130
+ * ```typescript
131
+ * // Initialize with existing counts
132
+ * const cache1 = {}
133
+ * const cache2 = {}
134
+ * const cache3 = {}
135
+ *
136
+ * const hitCounter = new WeakCounter<object>([
137
+ * [cache1, 10],
138
+ * [cache2, 5],
139
+ * [cache3, 15]
140
+ * ])
141
+ *
142
+ * hitCounter.increment(cache1, 3) // 10 -> 13
143
+ * console.log(hitCounter.get(cache1)) // 13
144
+ * console.log(hitCounter.get(cache2)) // 5
145
+ * ```
56
146
  */
57
- declare class WeakCounter<K$1 extends WeakKey> extends DefaultWeakMap<K$1, number> {
147
+ declare class WeakCounter<K$1 extends WeakKey> extends WeakMap<K$1, number> {
58
148
  constructor(entries?: readonly (readonly [K$1, number])[] | null);
149
+ get(key: K$1): number;
59
150
  /**
60
151
  * Increments the count for a key by a given amount (default 1).
61
152
  */
@@ -66,6 +157,176 @@ declare class WeakCounter<K$1 extends WeakKey> extends DefaultWeakMap<K$1, numbe
66
157
  decrement(key: K$1, amount?: number): void;
67
158
  }
68
159
  //#endregion
160
+ //#region src/default-map.d.ts
161
+ /**
162
+ * A map that automatically creates values for missing keys using a factory function.
163
+ *
164
+ * Similar to Python's [defaultdict](https://docs.python.org/3.13/library/collections.html#collections.defaultdict).
165
+ *
166
+ * @example
167
+ * ```typescript
168
+ * // Group items by category using arrays
169
+ * const groupByCategory = new DefaultMap<string, string[]>(() => [])
170
+ *
171
+ * groupByCategory.get('fruits').push('apple', 'banana')
172
+ * groupByCategory.get('vegetables').push('carrot')
173
+ * groupByCategory.get('fruits').push('orange')
174
+ *
175
+ * console.log(groupByCategory.get('fruits')) // ['apple', 'banana', 'orange']
176
+ * console.log(groupByCategory.get('vegetables')) // ['carrot']
177
+ * console.log(groupByCategory.get('dairy')) // [] (auto-created)
178
+ * ```
179
+ *
180
+ * @example
181
+ * ```typescript
182
+ * // Build a graph with adjacency lists
183
+ * const graph = new DefaultMap<string, Set<string>>(() => new Set())
184
+ *
185
+ * graph.get('A').add('B').add('C')
186
+ * graph.get('B').add('C').add('D')
187
+ * graph.get('C').add('D')
188
+ *
189
+ * console.log([...graph.get('A')]) // ['B', 'C']
190
+ * console.log([...graph.get('B')]) // ['C', 'D']
191
+ * console.log([...graph.get('E')]) // [] (auto-created empty set)
192
+ * ```
193
+ *
194
+ * @example
195
+ * ```typescript
196
+ * // Initialize with existing entries
197
+ * const scores = new DefaultMap<string, number>(
198
+ * () => 0,
199
+ * [
200
+ * ['Alice', 100],
201
+ * ['Bob', 85]
202
+ * ]
203
+ * )
204
+ *
205
+ * scores.set('Alice', scores.get('Alice') + 10) // 100 -> 110
206
+ * console.log(scores.get('Alice')) // 110
207
+ * console.log(scores.get('Bob')) // 85
208
+ * console.log(scores.get('Charlie')) // 0 (auto-created)
209
+ * ```
210
+ *
211
+ * @example
212
+ * ```typescript
213
+ * // Nested DefaultMaps for 2D data structures
214
+ * const matrix = new DefaultMap<number, DefaultMap<number, number>>(
215
+ * () => new DefaultMap<number, number>(() => 0)
216
+ * )
217
+ *
218
+ * matrix.get(0).set(0, 1)
219
+ * matrix.get(0).set(1, 2)
220
+ * matrix.get(1).set(1, 3)
221
+ *
222
+ * console.log(matrix.get(0).get(0)) // 1
223
+ * console.log(matrix.get(0).get(1)) // 2
224
+ * console.log(matrix.get(1).get(0)) // 0 (auto-created)
225
+ * console.log(matrix.get(2).get(3)) // 0 (both auto-created)
226
+ * ```
227
+ */
228
+ declare class DefaultMap<K$1, V> extends Map<K$1, V> {
229
+ private readonly defaultFactory;
230
+ constructor(defaultFactory: () => V, iterable?: Iterable<readonly [K$1, V]>);
231
+ get(key: K$1): V;
232
+ }
233
+ /**
234
+ * A weak map that automatically creates values for missing keys using a factory function.
235
+ *
236
+ * Similar to {@link DefaultMap} but uses WeakMap as the base, allowing garbage collection of keys.
237
+ *
238
+ * @example
239
+ * ```typescript
240
+ * // Store metadata for DOM elements without preventing garbage collection
241
+ * const elementMetadata = new DefaultWeakMap<HTMLElement, { clicks: number; hovers: number }>(
242
+ * () => ({ clicks: 0, hovers: 0 })
243
+ * )
244
+ *
245
+ * const button = document.querySelector('button')!
246
+ * const div = document.querySelector('div')!
247
+ *
248
+ * elementMetadata.get(button).clicks++
249
+ * elementMetadata.get(button).clicks++
250
+ * elementMetadata.get(div).hovers++
251
+ *
252
+ * console.log(elementMetadata.get(button)) // { clicks: 2, hovers: 0 }
253
+ * console.log(elementMetadata.get(div)) // { clicks: 0, hovers: 1 }
254
+ * // When elements are removed from DOM and not referenced,
255
+ * // their metadata can be garbage collected
256
+ * ```
257
+ *
258
+ * @example
259
+ * ```typescript
260
+ * // Cache computed properties for objects
261
+ * const computedCache = new DefaultWeakMap<object, Map<string, any>>(
262
+ * () => new Map()
263
+ * )
264
+ *
265
+ * function getOrCompute(obj: object, key: string, compute: () => any) {
266
+ * const cache = computedCache.get(obj)
267
+ * if (!cache.has(key)) {
268
+ * cache.set(key, compute())
269
+ * }
270
+ * return cache.get(key)
271
+ * }
272
+ *
273
+ * const user = { name: 'Alice', age: 30 }
274
+ * const displayName = getOrCompute(user, 'displayName', () => user.name.toUpperCase())
275
+ * const birthYear = getOrCompute(user, 'birthYear', () => new Date().getFullYear() - user.age)
276
+ *
277
+ * console.log(displayName) // 'ALICE'
278
+ * console.log(birthYear) // 1994 (or current year - 30)
279
+ * ```
280
+ *
281
+ * @example
282
+ * ```typescript
283
+ * // Initialize with existing entries
284
+ * const obj1 = {}
285
+ * const obj2 = {}
286
+ *
287
+ * const objectData = new DefaultWeakMap<object, string[]>(
288
+ * () => [],
289
+ * [
290
+ * [obj1, ['tag1', 'tag2']],
291
+ * [obj2, ['tag3']]
292
+ * ]
293
+ * )
294
+ *
295
+ * objectData.get(obj1).push('tag4')
296
+ * console.log(objectData.get(obj1)) // ['tag1', 'tag2', 'tag4']
297
+ * console.log(objectData.get(obj2)) // ['tag3']
298
+ *
299
+ * const obj3 = {}
300
+ * console.log(objectData.get(obj3)) // [] (auto-created)
301
+ * ```
302
+ *
303
+ * @example
304
+ * ```typescript
305
+ * // Track event listeners per element using both DefaultWeakMap and DefaultMap
306
+ * const eventListeners = new DefaultWeakMap<EventTarget, DefaultMap<string, Function[]>>(
307
+ * () => new DefaultMap<string, Function[]>(() => [])
308
+ * )
309
+ *
310
+ * function addListener(target: EventTarget, event: string, handler: Function) {
311
+ * eventListeners.get(target).get(event).push(handler)
312
+ * }
313
+ *
314
+ * const element = document.createElement('button')
315
+ * addListener(element, 'click', () => console.log('clicked'))
316
+ * addListener(element, 'click', () => console.log('also clicked'))
317
+ * addListener(element, 'hover', () => console.log('hovered'))
318
+ *
319
+ * console.log(eventListeners.get(element).get('click').length) // 2
320
+ * console.log(eventListeners.get(element).get('hover').length) // 1
321
+ * // No need for has() checks or null assertions - everything auto-initializes!
322
+ * ```
323
+ */
324
+ declare class DefaultWeakMap<K$1 extends WeakKey, V> extends WeakMap<K$1, V> {
325
+ private readonly defaultFactory;
326
+ constructor(defaultFactory: () => V, entries?: readonly (readonly [K$1, V])[] | null);
327
+ get(key: K$1): V;
328
+ }
329
+ //#endregion
69
330
  //#region src/dom.d.ts
70
331
  /**
71
332
  * Checks if the given DOM node is an Element.
@@ -148,11 +409,11 @@ declare function isDeepEqual(a: unknown, b: unknown): boolean;
148
409
  //#endregion
149
410
  //#region src/map-group-by.d.ts
150
411
  /**
151
- * A polyfill for the `Map.groupBy` static method.
412
+ * A polyfill for the [`Map.groupBy()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/groupBy) static method.
152
413
  *
153
414
  * @public
154
415
  */
155
- declare const mapGroupBy: <K$1, T>(items: Iterable<T>, keySelector: (item: T, index: number) => K$1) => Map<K$1, T[]>;
416
+ declare function mapGroupBy<K$1, T>(items: Iterable<T>, keySelector: (item: T, index: number) => K$1): Map<K$1, T[]>;
156
417
  //#endregion
157
418
  //#region src/map-values.d.ts
158
419
  /**
@@ -207,13 +468,16 @@ declare function mapValues<ValueIn, ValueOut>(object: Record<string, ValueIn>, c
207
468
  */
208
469
  type ObjectEntries<T extends Record<string, any>> = { [K in keyof T]: [K, T[K]] }[keyof T];
209
470
  /**
210
- * A type-safe wrapper around `Object.entries()` that preserves the exact types of object keys
211
- * and values. Unlike the standard `Object.entries()` which returns `[string, any][]`, this
212
- * function returns an array of tuples where each tuple is precisely typed according to the
213
- * input object's structure.
471
+ * A type-safe wrapper around
472
+ * [`Object.entries()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries)
473
+ * that preserves the exact types of object keys and values. Unlike the standard
474
+ * `Object.entries()` which returns `[string, any][]`, this function returns an
475
+ * array of tuples where each tuple is precisely typed according to the input
476
+ * object's structure.
214
477
  *
215
- * This is particularly useful when working with objects that have known, fixed property types
216
- * and you want to maintain type safety when iterating over entries.
478
+ * This is particularly useful when working with objects that have known, fixed
479
+ * property types and you want to maintain type safety when iterating over
480
+ * entries.
217
481
  *
218
482
  * @example
219
483
  * ```typescript
@@ -243,15 +507,15 @@ type ObjectEntries<T extends Record<string, any>> = { [K in keyof T]: [K, T[K]]
243
507
  *
244
508
  * @public
245
509
  */
246
- declare const objectEntries: <T extends Record<string, any>>(obj: T) => ObjectEntries<T>[];
510
+ declare function objectEntries<T extends Record<string, any>>(obj: T): ObjectEntries<T>[];
247
511
  //#endregion
248
512
  //#region src/object-group-by.d.ts
249
513
  /**
250
- * A polyfill for the `Object.groupBy` static method.
514
+ * A polyfill for the [`Object.groupBy()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/groupBy) static method.
251
515
  *
252
516
  * @public
253
517
  */
254
- declare const objectGroupBy: <K$1 extends PropertyKey, T>(items: Iterable<T>, keySelector: (item: T, index: number) => K$1) => Partial<Record<K$1, T[]>>;
518
+ declare function objectGroupBy<K$1 extends PropertyKey, T>(items: Iterable<T>, keySelector: (item: T, index: number) => K$1): Partial<Record<K$1, T[]>>;
255
519
  //#endregion
256
520
  //#region src/once.d.ts
257
521
  /**
@@ -271,7 +535,14 @@ declare function once<T>(fn: () => T): () => T;
271
535
  //#endregion
272
536
  //#region src/sleep.d.ts
273
537
  /**
274
- * Sleep for a given number of milliseconds.
538
+ * Returns a Promise that resolves after a specified number of milliseconds.
539
+ *
540
+ * @param ms - The number of milliseconds to wait.
541
+ *
542
+ * @example
543
+ * ```js
544
+ * await sleep(1000) // Wait 1 second
545
+ * ```
275
546
  */
276
547
  declare function sleep(ms: number): Promise<void>;
277
548
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/checker.ts","../src/default-map.ts","../src/dom.ts","../src/format-bytes.ts","../src/get-id.ts","../src/is-deep-equal.ts","../src/map-group-by.ts","../src/map-values.ts","../src/object-entries.ts","../src/object-group-by.ts","../src/once.ts","../src/sleep.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/checker.ts","../src/counter.ts","../src/default-map.ts","../src/dom.ts","../src/format-bytes.ts","../src/get-id.ts","../src/is-deep-equal.ts","../src/map-group-by.ts","../src/map-values.ts","../src/object-entries.ts","../src/object-group-by.ts","../src/once.ts","../src/sleep.ts"],"sourcesContent":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -7,27 +7,12 @@ function isMap(value) {
7
7
  function isSet(value) {
8
8
  return value instanceof Set;
9
9
  }
10
- var DefaultMap = class extends Map {
11
- constructor(defaultFactory, iterable) {
12
- super(iterable), this.defaultFactory = defaultFactory;
13
- }
14
- get(key) {
15
- if (this.has(key)) return super.get(key);
16
- let value = this.defaultFactory();
17
- return this.set(key, value), value;
18
- }
19
- }, DefaultWeakMap = class extends WeakMap {
20
- constructor(defaultFactory, entries) {
21
- super(entries), this.defaultFactory = defaultFactory;
10
+ var Counter = class extends Map {
11
+ constructor(iterable) {
12
+ super(iterable);
22
13
  }
23
14
  get(key) {
24
- if (this.has(key)) return super.get(key);
25
- let value = this.defaultFactory();
26
- return this.set(key, value), value;
27
- }
28
- }, Counter = class extends DefaultMap {
29
- constructor(iterable) {
30
- super(() => 0, iterable);
15
+ return super.get(key) ?? 0;
31
16
  }
32
17
  increment(key, amount = 1) {
33
18
  this.set(key, this.get(key) + amount);
@@ -35,9 +20,12 @@ var DefaultMap = class extends Map {
35
20
  decrement(key, amount = 1) {
36
21
  this.set(key, this.get(key) - amount);
37
22
  }
38
- }, WeakCounter = class extends DefaultWeakMap {
23
+ }, WeakCounter = class extends WeakMap {
39
24
  constructor(entries) {
40
- super(() => 0, entries);
25
+ super(entries);
26
+ }
27
+ get(key) {
28
+ return super.get(key) ?? 0;
41
29
  }
42
30
  increment(key, amount = 1) {
43
31
  this.set(key, this.get(key) + amount);
@@ -45,6 +33,24 @@ var DefaultMap = class extends Map {
45
33
  decrement(key, amount = 1) {
46
34
  this.set(key, this.get(key) - amount);
47
35
  }
36
+ }, DefaultMap = class extends Map {
37
+ constructor(defaultFactory, iterable) {
38
+ super(iterable), this.defaultFactory = defaultFactory;
39
+ }
40
+ get(key) {
41
+ if (this.has(key)) return super.get(key);
42
+ let value = this.defaultFactory();
43
+ return this.set(key, value), value;
44
+ }
45
+ }, DefaultWeakMap = class extends WeakMap {
46
+ constructor(defaultFactory, entries) {
47
+ super(entries), this.defaultFactory = defaultFactory;
48
+ }
49
+ get(key) {
50
+ if (this.has(key)) return super.get(key);
51
+ let value = this.defaultFactory();
52
+ return this.set(key, value), value;
53
+ }
48
54
  };
49
55
  function isElement(node) {
50
56
  return node.nodeType === 1;
@@ -146,16 +152,17 @@ function mapGroupByPolyfill(items, keySelector) {
146
152
  }
147
153
  return map;
148
154
  }
149
- function mapGroupByNative(items, keySelector) {
150
- return Map.groupBy(items, keySelector);
155
+ function mapGroupBy(items, keySelector) {
156
+ return Map.groupBy ? Map.groupBy(items, keySelector) : mapGroupByPolyfill(items, keySelector);
151
157
  }
152
- const mapGroupBy = /* @__PURE__ */ (() => !!Map.groupBy)() ? mapGroupByNative : mapGroupByPolyfill;
153
158
  function mapValues(object, callback) {
154
159
  let result = {};
155
160
  for (let [key, value] of Object.entries(object)) result[key] = callback(value, key);
156
161
  return result;
157
162
  }
158
- const objectEntries = Object.entries;
163
+ function objectEntries(obj) {
164
+ return Object.entries(obj);
165
+ }
159
166
  function objectGroupByPolyfill(items, keySelector) {
160
167
  let result = {}, index = 0;
161
168
  for (let item of items) {
@@ -164,10 +171,9 @@ function objectGroupByPolyfill(items, keySelector) {
164
171
  }
165
172
  return result;
166
173
  }
167
- function objectGroupByNative(items, keySelector) {
168
- return Object.groupBy(items, keySelector);
174
+ function objectGroupBy(items, keySelector) {
175
+ return Object.groupBy ? Object.groupBy(items, keySelector) : objectGroupByPolyfill(items, keySelector);
169
176
  }
170
- const objectGroupBy = /* @__PURE__ */ (() => !!Object.groupBy)() ? objectGroupByNative : objectGroupByPolyfill;
171
177
  function once(fn) {
172
178
  let called = !1, result;
173
179
  return () => (called || (result = fn(), called = !0, fn = void 0), result);