extra-iterator 0.3.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -31,7 +31,7 @@ export declare class ExtraIterator<T> extends Iterator<T, any, any> {
31
31
  flatMap<U>(callback: (value: T, index: number) => Iterator<U, unknown, undefined> | Iterable<U, unknown, undefined>): ExtraIterator<U>;
32
32
  flatten(): T extends Iterable<infer U> ? ExtraIterator<U> : never;
33
33
  groupBy<K extends string | symbol>(callbackfn: (value: T, index: number) => K): Record<K, T[]>;
34
- uniq(keyProvider?: (value: T) => unknown): ExtraIterator<T>;
34
+ unique(keyProvider?: (value: T) => unknown): ExtraIterator<T>;
35
35
  compact(): ExtraIterator<Exclude<T, null | undefined>>;
36
36
  withEach(callbackfn: (value: T, index: number) => void): ExtraIterator<T>;
37
37
  first(): T | undefined;
@@ -52,5 +52,6 @@ export declare class ExtraIterator<T> extends Iterator<T, any, any> {
52
52
  collect<U>(collectfn: ((iter: Iterable<T>) => U)): U;
53
53
  toSortedBy(...keys: (keyof T)[]): T[];
54
54
  count(): number;
55
+ uniqueness(mapper?: (value: T) => unknown): boolean;
55
56
  }
56
57
  export {};
package/dist/index.js CHANGED
@@ -95,14 +95,14 @@ export class ExtraIterator extends Iterator {
95
95
  }
96
96
  return result;
97
97
  }
98
- uniq(keyProvider = value => value) {
98
+ unique(keyProvider = value => value) {
99
99
  return ExtraIterator.from(function* () {
100
100
  const seen = new Set();
101
101
  for (let item; item = this.next(), !item.done;) {
102
102
  const key = keyProvider(item.value);
103
103
  if (!seen.has(key)) {
104
- yield item.value;
105
104
  seen.add(key);
105
+ yield item.value;
106
106
  }
107
107
  }
108
108
  }.call(this));
@@ -273,4 +273,15 @@ export class ExtraIterator extends Iterator {
273
273
  }
274
274
  return count;
275
275
  }
276
+ uniqueness(mapper) {
277
+ const seen = new Set();
278
+ for (let next; next = this.next(), !next.done;) {
279
+ const value = mapper ? mapper(next.value) : next.value;
280
+ if (seen.has(value)) {
281
+ return false;
282
+ }
283
+ seen.add(value);
284
+ }
285
+ return true;
286
+ }
276
287
  }
@@ -62,7 +62,7 @@ describe('ExtraIterator', () => {
62
62
  expect(iterator.toArray()).toEqual([[1, 2], [3, 4]]);
63
63
  });
64
64
  it('should remove duplicate values', () => {
65
- const iterator = ExtraIterator.from([1, 2, 2, 3]).uniq();
65
+ const iterator = ExtraIterator.from([1, 2, 2, 3]).unique();
66
66
  expect(iterator.toArray()).toEqual([1, 2, 3]);
67
67
  });
68
68
  it('should compact values by removing null and undefined', () => {
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "An extension of the Iterator class with additional utility helper functions.",
4
4
  "author": "Leonardo Raele <leonardoraele@gmail.com>",
5
5
  "license": "MIT",
6
- "version": "0.3.1",
6
+ "version": "0.4.0",
7
7
  "type": "module",
8
8
  "exports": {
9
9
  ".": "./dist/index.js",