@blackglory/structures 0.10.1 → 0.10.4

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 (44) hide show
  1. package/README.md +25 -9
  2. package/dist/es2015/index.min.mjs +2 -2
  3. package/dist/es2015/index.min.mjs.map +1 -1
  4. package/dist/es2015/index.mjs +9188 -2353
  5. package/dist/es2015/index.mjs.map +1 -1
  6. package/dist/es2015/index.umd.js +9188 -2352
  7. package/dist/es2015/index.umd.js.map +1 -1
  8. package/dist/es2015/index.umd.min.js +2 -2
  9. package/dist/es2015/index.umd.min.js.map +1 -1
  10. package/dist/es2018/index.min.mjs +2 -2
  11. package/dist/es2018/index.min.mjs.map +1 -1
  12. package/dist/es2018/index.mjs +9188 -2353
  13. package/dist/es2018/index.mjs.map +1 -1
  14. package/dist/es2018/index.umd.js +9188 -2352
  15. package/dist/es2018/index.umd.js.map +1 -1
  16. package/dist/es2018/index.umd.min.js +2 -2
  17. package/dist/es2018/index.umd.min.js.map +1 -1
  18. package/lib/es2015/bit-set.d.ts +14 -0
  19. package/lib/es2015/bit-set.js +64 -0
  20. package/lib/es2015/bit-set.js.map +1 -0
  21. package/lib/es2015/hash-set.d.ts +1 -1
  22. package/lib/es2015/index.d.ts +1 -0
  23. package/lib/es2015/index.js +1 -0
  24. package/lib/es2015/index.js.map +1 -1
  25. package/lib/es2015/sorted-set.d.ts +1 -1
  26. package/lib/es2015/sorted-set.js +2 -4
  27. package/lib/es2015/sorted-set.js.map +1 -1
  28. package/lib/es2015/sparse-map.d.ts +3 -3
  29. package/lib/es2015/sparse-set.d.ts +1 -1
  30. package/lib/es2015/trie-map.d.ts +3 -3
  31. package/lib/es2018/bit-set.d.ts +14 -0
  32. package/lib/es2018/bit-set.js +64 -0
  33. package/lib/es2018/bit-set.js.map +1 -0
  34. package/lib/es2018/hash-set.d.ts +1 -1
  35. package/lib/es2018/index.d.ts +1 -0
  36. package/lib/es2018/index.js +1 -0
  37. package/lib/es2018/index.js.map +1 -1
  38. package/lib/es2018/sorted-set.d.ts +1 -1
  39. package/lib/es2018/sorted-set.js +2 -4
  40. package/lib/es2018/sorted-set.js.map +1 -1
  41. package/lib/es2018/sparse-map.d.ts +3 -3
  42. package/lib/es2018/sparse-set.d.ts +1 -1
  43. package/lib/es2018/trie-map.d.ts +3 -3
  44. package/package.json +2 -2
@@ -0,0 +1,14 @@
1
+ export declare class BitSet {
2
+ private length;
3
+ private array;
4
+ get [Symbol.toStringTag](): string;
5
+ get size(): number;
6
+ [Symbol.iterator](): IterableIterator<number>;
7
+ values(): IterableIterator<number>;
8
+ has(value: number): boolean;
9
+ add(value: number): void;
10
+ delete(value: number): void;
11
+ clear(): void;
12
+ private getPosition;
13
+ private getMask;
14
+ }
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BitSet = void 0;
4
+ const dynamic_typed_array_1 = require("./dynamic-typed-array");
5
+ const errors_1 = require("@blackglory/errors");
6
+ class BitSet {
7
+ constructor() {
8
+ this.length = 0;
9
+ this.array = new dynamic_typed_array_1.DynamicTypedArray(Uint8Array);
10
+ }
11
+ get [Symbol.toStringTag]() {
12
+ return this.constructor.name;
13
+ }
14
+ get size() {
15
+ return this.length;
16
+ }
17
+ [Symbol.iterator]() {
18
+ return this.values();
19
+ }
20
+ *values() {
21
+ for (let i = 0; i < this.length; i++) {
22
+ if (this.has(i)) {
23
+ yield i;
24
+ }
25
+ }
26
+ }
27
+ has(value) {
28
+ var _a;
29
+ const { index, mask } = this.getPosition(value);
30
+ return (((_a = this.array.get(index)) !== null && _a !== void 0 ? _a : 0) & mask) === mask;
31
+ }
32
+ add(value) {
33
+ var _a;
34
+ (0, errors_1.assert)(value >= 0, 'value must be greater than or equal to 0');
35
+ if (value >= this.length) {
36
+ this.length = value + 1;
37
+ }
38
+ const { index, mask } = this.getPosition(value);
39
+ this.array.set(index, ((_a = this.array.get(index)) !== null && _a !== void 0 ? _a : 0) | mask);
40
+ }
41
+ delete(value) {
42
+ var _a;
43
+ const { index, mask } = this.getPosition(value);
44
+ this.array.set(index, ((_a = this.array.get(index)) !== null && _a !== void 0 ? _a : 0) & ~mask);
45
+ }
46
+ clear() {
47
+ for (let i = this.array.length; i--;) {
48
+ this.array.set(i, 0);
49
+ }
50
+ }
51
+ getPosition(value) {
52
+ const bits = Uint8Array.BYTES_PER_ELEMENT * 8;
53
+ const remainder = value % bits;
54
+ const quotient = (value - remainder) / bits;
55
+ const index = Math.max(0, quotient - 1);
56
+ const mask = this.getMask(value);
57
+ return { index, mask };
58
+ }
59
+ getMask(value) {
60
+ return Math.pow(2, value);
61
+ }
62
+ }
63
+ exports.BitSet = BitSet;
64
+ //# sourceMappingURL=bit-set.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bit-set.js","sourceRoot":"","sources":["../../src/bit-set.ts"],"names":[],"mappings":";;;AAAA,+DAAyD;AACzD,+CAA2C;AAE3C,MAAa,MAAM;IAAnB;QACU,WAAM,GAAG,CAAC,CAAA;QACV,UAAK,GAAG,IAAI,uCAAiB,CAAC,UAAU,CAAC,CAAA;IA+DnD,CAAC;IA7DC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACtB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;IAC9B,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,IAAI,CAAC,MAAM,EAAE,CAAA;IACtB,CAAC;IAED,CAAE,MAAM;QACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBACf,MAAM,CAAC,CAAA;aACR;SACF;IACH,CAAC;IAED,GAAG,CAAC,KAAa;;QACf,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;QAE/C,OAAO,CAAC,CAAC,MAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,mCAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,CAAA;IACvD,CAAC;IAED,GAAG,CAAC,KAAa;;QACf,IAAA,eAAM,EAAC,KAAK,IAAI,CAAC,EAAE,0CAA0C,CAAC,CAAA;QAC9D,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;YACxB,IAAI,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,CAAA;SACxB;QAED,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;QAE/C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,MAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,mCAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IAC5D,CAAC;IAED,MAAM,CAAC,KAAa;;QAClB,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;QAE/C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,MAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,mCAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC7D,CAAC;IAED,KAAK;QACH,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG;YACpC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;SACrB;IACH,CAAC;IAEO,WAAW,CAAC,KAAa;QAC/B,MAAM,IAAI,GAAG,UAAU,CAAC,iBAAiB,GAAG,CAAC,CAAA;QAC7C,MAAM,SAAS,GAAG,KAAK,GAAG,IAAI,CAAA;QAC9B,MAAM,QAAQ,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,IAAI,CAAA;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAA;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAChC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;IACxB,CAAC;IAEO,OAAO,CAAC,KAAa;QAC3B,OAAO,SAAA,CAAC,EAAI,KAAK,CAAA,CAAA;IACnB,CAAC;CACF;AAjED,wBAiEC"}
@@ -9,5 +9,5 @@ export declare class HashSet<V, Hash = unknown> implements Iterable<V> {
9
9
  delete(value: V): boolean;
10
10
  has(value: V): boolean;
11
11
  clear(): void;
12
- values(): Iterable<V>;
12
+ values(): IterableIterator<V>;
13
13
  }
@@ -16,3 +16,4 @@ export * from './typed-sparse-map';
16
16
  export * from './typed-sparse-set';
17
17
  export { DynamicTypedArray } from './dynamic-typed-array';
18
18
  export * from './sorted-set';
19
+ export * from './bit-set';
@@ -34,4 +34,5 @@ __exportStar(require("./typed-sparse-set"), exports);
34
34
  var dynamic_typed_array_1 = require("./dynamic-typed-array");
35
35
  Object.defineProperty(exports, "DynamicTypedArray", { enumerable: true, get: function () { return dynamic_typed_array_1.DynamicTypedArray; } });
36
36
  __exportStar(require("./sorted-set"), exports);
37
+ __exportStar(require("./bit-set"), exports);
37
38
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,wCAAqB;AACrB,yCAAsB;AACtB,4CAAyB;AACzB,6CAA0B;AAC1B,6CAA0B;AAC1B,0CAAuB;AACvB,4CAAyB;AACzB,kDAA+B;AAC/B,6CAA0B;AAC1B,6CAA0B;AAC1B,yDAAsC;AACtC,oEAAiD;AACjD,+CAA4B;AAC5B,+CAA4B;AAC5B,qDAAkC;AAClC,qDAAkC;AAClC,6DAAyD;AAAhD,wHAAA,iBAAiB,OAAA;AAC1B,+CAA4B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,wCAAqB;AACrB,yCAAsB;AACtB,4CAAyB;AACzB,6CAA0B;AAC1B,6CAA0B;AAC1B,0CAAuB;AACvB,4CAAyB;AACzB,kDAA+B;AAC/B,6CAA0B;AAC1B,6CAA0B;AAC1B,yDAAsC;AACtC,oEAAiD;AACjD,+CAA4B;AAC5B,+CAA4B;AAC5B,qDAAkC;AAClC,qDAAkC;AAClC,6DAAyD;AAAhD,wHAAA,iBAAiB,OAAA;AAC1B,+CAA4B;AAC5B,4CAAyB"}
@@ -3,7 +3,7 @@ export declare class SortedSet<T> implements Iterable<T> {
3
3
  get [Symbol.toStringTag](): string;
4
4
  [Symbol.iterator](): IterableIterator<T>;
5
5
  constructor(compare: (a: T, b: T) => number);
6
- values(): Iterable<T>;
6
+ values(): IterableIterator<T>;
7
7
  has(value: T): boolean;
8
8
  add(value: T): void;
9
9
  delete(value: T): void;
@@ -10,10 +10,8 @@ class SortedSet {
10
10
  get [Symbol.toStringTag]() {
11
11
  return this.constructor.name;
12
12
  }
13
- *[Symbol.iterator]() {
14
- for (const value of this.values()) {
15
- yield value;
16
- }
13
+ [Symbol.iterator]() {
14
+ return this.values();
17
15
  }
18
16
  values() {
19
17
  return (0, iterable_operator_1.map)(this.skipList.elements(), node => node.value);
@@ -1 +1 @@
1
- {"version":3,"file":"sorted-set.js","sourceRoot":"","sources":["../../src/sorted-set.ts"],"names":[],"mappings":";;;AAAA,gDAA2C;AAC3C,yDAAuC;AAEvC,MAAa,SAAS;IAapB,YAAY,OAA+B;QACzC,IAAI,CAAC,QAAQ,GAAG,IAAI,oBAAQ,CAAC,OAAO,CAAC,CAAA;IACvC,CAAC;IAZD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACtB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;IAC9B,CAAC;IAED,CAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;QACjB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACjC,MAAM,KAAK,CAAA;SACZ;IACH,CAAC;IAMD,MAAM;QACJ,OAAO,IAAA,uBAAG,EAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAM,CAAC,CAAA;IAC3D,CAAC;IAED,GAAG,CAAC,KAAQ;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACjC,CAAC;IAED,GAAG,CAAC,KAAQ;QACV,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC1B,CAAC;IAED,MAAM,CAAC,KAAQ;QACb,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC7B,CAAC;CACF;AAhCD,8BAgCC"}
1
+ {"version":3,"file":"sorted-set.js","sourceRoot":"","sources":["../../src/sorted-set.ts"],"names":[],"mappings":";;;AAAA,gDAA2C;AAC3C,yDAAuC;AAEvC,MAAa,SAAS;IAWpB,YAAY,OAA+B;QACzC,IAAI,CAAC,QAAQ,GAAG,IAAI,oBAAQ,CAAC,OAAO,CAAC,CAAA;IACvC,CAAC;IAVD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACtB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;IAC9B,CAAC;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,IAAI,CAAC,MAAM,EAAE,CAAA;IACtB,CAAC;IAMD,MAAM;QACJ,OAAO,IAAA,uBAAG,EAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAM,CAAC,CAAA;IAC3D,CAAC;IAED,GAAG,CAAC,KAAQ;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACjC,CAAC;IAED,GAAG,CAAC,KAAQ;QACV,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC1B,CAAC;IAED,MAAM,CAAC,KAAQ;QACb,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC7B,CAAC;CACF;AA9BD,8BA8BC"}
@@ -3,9 +3,9 @@ export declare class SparseMap<T> {
3
3
  private indexToKey;
4
4
  private indexToValue;
5
5
  get [Symbol.toStringTag](): string;
6
- entries(): Iterable<[key: number, value: T]>;
7
- keys(): Iterable<number>;
8
- values(): Iterable<T>;
6
+ entries(): IterableIterator<[key: number, value: T]>;
7
+ keys(): IterableIterator<number>;
8
+ values(): IterableIterator<T>;
9
9
  has(key: number): boolean;
10
10
  get(key: number): T | undefined;
11
11
  set(key: number, value: T): void;
@@ -4,7 +4,7 @@ export declare class SparseSet implements Iterable<number> {
4
4
  get [Symbol.toStringTag](): string;
5
5
  [Symbol.iterator](): IterableIterator<number>;
6
6
  constructor(array?: number[]);
7
- values(): Iterable<number>;
7
+ values(): IterableIterator<number>;
8
8
  has(value: number): boolean;
9
9
  add(value: number): void;
10
10
  delete(value: number): void;
@@ -1,9 +1,9 @@
1
1
  export declare class TrieMap<K extends Iterable<T>, V, T = unknown> {
2
2
  private root;
3
3
  get [Symbol.toStringTag](): string;
4
- entries(): Iterable<[key: T[], value: V]>;
5
- keys(): Iterable<T[]>;
6
- values(): Iterable<V>;
4
+ entries(): IterableIterator<[key: T[], value: V]>;
5
+ keys(): IterableIterator<T[]>;
6
+ values(): IterableIterator<V>;
7
7
  set(key: K, value: V): this;
8
8
  has(key: K): boolean;
9
9
  get(key: K): V | undefined;
@@ -0,0 +1,14 @@
1
+ export declare class BitSet {
2
+ private length;
3
+ private array;
4
+ get [Symbol.toStringTag](): string;
5
+ get size(): number;
6
+ [Symbol.iterator](): IterableIterator<number>;
7
+ values(): IterableIterator<number>;
8
+ has(value: number): boolean;
9
+ add(value: number): void;
10
+ delete(value: number): void;
11
+ clear(): void;
12
+ private getPosition;
13
+ private getMask;
14
+ }
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BitSet = void 0;
4
+ const dynamic_typed_array_1 = require("./dynamic-typed-array");
5
+ const errors_1 = require("@blackglory/errors");
6
+ class BitSet {
7
+ constructor() {
8
+ this.length = 0;
9
+ this.array = new dynamic_typed_array_1.DynamicTypedArray(Uint8Array);
10
+ }
11
+ get [Symbol.toStringTag]() {
12
+ return this.constructor.name;
13
+ }
14
+ get size() {
15
+ return this.length;
16
+ }
17
+ [Symbol.iterator]() {
18
+ return this.values();
19
+ }
20
+ *values() {
21
+ for (let i = 0; i < this.length; i++) {
22
+ if (this.has(i)) {
23
+ yield i;
24
+ }
25
+ }
26
+ }
27
+ has(value) {
28
+ var _a;
29
+ const { index, mask } = this.getPosition(value);
30
+ return (((_a = this.array.get(index)) !== null && _a !== void 0 ? _a : 0) & mask) === mask;
31
+ }
32
+ add(value) {
33
+ var _a;
34
+ (0, errors_1.assert)(value >= 0, 'value must be greater than or equal to 0');
35
+ if (value >= this.length) {
36
+ this.length = value + 1;
37
+ }
38
+ const { index, mask } = this.getPosition(value);
39
+ this.array.set(index, ((_a = this.array.get(index)) !== null && _a !== void 0 ? _a : 0) | mask);
40
+ }
41
+ delete(value) {
42
+ var _a;
43
+ const { index, mask } = this.getPosition(value);
44
+ this.array.set(index, ((_a = this.array.get(index)) !== null && _a !== void 0 ? _a : 0) & ~mask);
45
+ }
46
+ clear() {
47
+ for (let i = this.array.length; i--;) {
48
+ this.array.set(i, 0);
49
+ }
50
+ }
51
+ getPosition(value) {
52
+ const bits = Uint8Array.BYTES_PER_ELEMENT * 8;
53
+ const remainder = value % bits;
54
+ const quotient = (value - remainder) / bits;
55
+ const index = Math.max(0, quotient - 1);
56
+ const mask = this.getMask(value);
57
+ return { index, mask };
58
+ }
59
+ getMask(value) {
60
+ return 2 ** value;
61
+ }
62
+ }
63
+ exports.BitSet = BitSet;
64
+ //# sourceMappingURL=bit-set.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bit-set.js","sourceRoot":"","sources":["../../src/bit-set.ts"],"names":[],"mappings":";;;AAAA,+DAAyD;AACzD,+CAA2C;AAE3C,MAAa,MAAM;IAAnB;QACU,WAAM,GAAG,CAAC,CAAA;QACV,UAAK,GAAG,IAAI,uCAAiB,CAAC,UAAU,CAAC,CAAA;IA+DnD,CAAC;IA7DC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACtB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;IAC9B,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,IAAI,CAAC,MAAM,EAAE,CAAA;IACtB,CAAC;IAED,CAAE,MAAM;QACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBACf,MAAM,CAAC,CAAA;aACR;SACF;IACH,CAAC;IAED,GAAG,CAAC,KAAa;;QACf,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;QAE/C,OAAO,CAAC,CAAC,MAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,mCAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,CAAA;IACvD,CAAC;IAED,GAAG,CAAC,KAAa;;QACf,IAAA,eAAM,EAAC,KAAK,IAAI,CAAC,EAAE,0CAA0C,CAAC,CAAA;QAC9D,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;YACxB,IAAI,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,CAAA;SACxB;QAED,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;QAE/C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,MAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,mCAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IAC5D,CAAC;IAED,MAAM,CAAC,KAAa;;QAClB,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;QAE/C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,MAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,mCAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC7D,CAAC;IAED,KAAK;QACH,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG;YACpC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;SACrB;IACH,CAAC;IAEO,WAAW,CAAC,KAAa;QAC/B,MAAM,IAAI,GAAG,UAAU,CAAC,iBAAiB,GAAG,CAAC,CAAA;QAC7C,MAAM,SAAS,GAAG,KAAK,GAAG,IAAI,CAAA;QAC9B,MAAM,QAAQ,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,IAAI,CAAA;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAA;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAChC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;IACxB,CAAC;IAEO,OAAO,CAAC,KAAa;QAC3B,OAAO,CAAC,IAAI,KAAK,CAAA;IACnB,CAAC;CACF;AAjED,wBAiEC"}
@@ -9,5 +9,5 @@ export declare class HashSet<V, Hash = unknown> implements Iterable<V> {
9
9
  delete(value: V): boolean;
10
10
  has(value: V): boolean;
11
11
  clear(): void;
12
- values(): Iterable<V>;
12
+ values(): IterableIterator<V>;
13
13
  }
@@ -16,3 +16,4 @@ export * from './typed-sparse-map';
16
16
  export * from './typed-sparse-set';
17
17
  export { DynamicTypedArray } from './dynamic-typed-array';
18
18
  export * from './sorted-set';
19
+ export * from './bit-set';
@@ -34,4 +34,5 @@ __exportStar(require("./typed-sparse-set"), exports);
34
34
  var dynamic_typed_array_1 = require("./dynamic-typed-array");
35
35
  Object.defineProperty(exports, "DynamicTypedArray", { enumerable: true, get: function () { return dynamic_typed_array_1.DynamicTypedArray; } });
36
36
  __exportStar(require("./sorted-set"), exports);
37
+ __exportStar(require("./bit-set"), exports);
37
38
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,wCAAqB;AACrB,yCAAsB;AACtB,4CAAyB;AACzB,6CAA0B;AAC1B,6CAA0B;AAC1B,0CAAuB;AACvB,4CAAyB;AACzB,kDAA+B;AAC/B,6CAA0B;AAC1B,6CAA0B;AAC1B,yDAAsC;AACtC,oEAAiD;AACjD,+CAA4B;AAC5B,+CAA4B;AAC5B,qDAAkC;AAClC,qDAAkC;AAClC,6DAAyD;AAAhD,wHAAA,iBAAiB,OAAA;AAC1B,+CAA4B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,wCAAqB;AACrB,yCAAsB;AACtB,4CAAyB;AACzB,6CAA0B;AAC1B,6CAA0B;AAC1B,0CAAuB;AACvB,4CAAyB;AACzB,kDAA+B;AAC/B,6CAA0B;AAC1B,6CAA0B;AAC1B,yDAAsC;AACtC,oEAAiD;AACjD,+CAA4B;AAC5B,+CAA4B;AAC5B,qDAAkC;AAClC,qDAAkC;AAClC,6DAAyD;AAAhD,wHAAA,iBAAiB,OAAA;AAC1B,+CAA4B;AAC5B,4CAAyB"}
@@ -3,7 +3,7 @@ export declare class SortedSet<T> implements Iterable<T> {
3
3
  get [Symbol.toStringTag](): string;
4
4
  [Symbol.iterator](): IterableIterator<T>;
5
5
  constructor(compare: (a: T, b: T) => number);
6
- values(): Iterable<T>;
6
+ values(): IterableIterator<T>;
7
7
  has(value: T): boolean;
8
8
  add(value: T): void;
9
9
  delete(value: T): void;
@@ -10,10 +10,8 @@ class SortedSet {
10
10
  get [Symbol.toStringTag]() {
11
11
  return this.constructor.name;
12
12
  }
13
- *[Symbol.iterator]() {
14
- for (const value of this.values()) {
15
- yield value;
16
- }
13
+ [Symbol.iterator]() {
14
+ return this.values();
17
15
  }
18
16
  values() {
19
17
  return (0, iterable_operator_1.map)(this.skipList.elements(), node => node.value);
@@ -1 +1 @@
1
- {"version":3,"file":"sorted-set.js","sourceRoot":"","sources":["../../src/sorted-set.ts"],"names":[],"mappings":";;;AAAA,gDAA2C;AAC3C,yDAAuC;AAEvC,MAAa,SAAS;IAapB,YAAY,OAA+B;QACzC,IAAI,CAAC,QAAQ,GAAG,IAAI,oBAAQ,CAAC,OAAO,CAAC,CAAA;IACvC,CAAC;IAZD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACtB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;IAC9B,CAAC;IAED,CAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;QACjB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACjC,MAAM,KAAK,CAAA;SACZ;IACH,CAAC;IAMD,MAAM;QACJ,OAAO,IAAA,uBAAG,EAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAM,CAAC,CAAA;IAC3D,CAAC;IAED,GAAG,CAAC,KAAQ;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACjC,CAAC;IAED,GAAG,CAAC,KAAQ;QACV,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC1B,CAAC;IAED,MAAM,CAAC,KAAQ;QACb,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC7B,CAAC;CACF;AAhCD,8BAgCC"}
1
+ {"version":3,"file":"sorted-set.js","sourceRoot":"","sources":["../../src/sorted-set.ts"],"names":[],"mappings":";;;AAAA,gDAA2C;AAC3C,yDAAuC;AAEvC,MAAa,SAAS;IAWpB,YAAY,OAA+B;QACzC,IAAI,CAAC,QAAQ,GAAG,IAAI,oBAAQ,CAAC,OAAO,CAAC,CAAA;IACvC,CAAC;IAVD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACtB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;IAC9B,CAAC;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,IAAI,CAAC,MAAM,EAAE,CAAA;IACtB,CAAC;IAMD,MAAM;QACJ,OAAO,IAAA,uBAAG,EAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAM,CAAC,CAAA;IAC3D,CAAC;IAED,GAAG,CAAC,KAAQ;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACjC,CAAC;IAED,GAAG,CAAC,KAAQ;QACV,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC1B,CAAC;IAED,MAAM,CAAC,KAAQ;QACb,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC7B,CAAC;CACF;AA9BD,8BA8BC"}
@@ -3,9 +3,9 @@ export declare class SparseMap<T> {
3
3
  private indexToKey;
4
4
  private indexToValue;
5
5
  get [Symbol.toStringTag](): string;
6
- entries(): Iterable<[key: number, value: T]>;
7
- keys(): Iterable<number>;
8
- values(): Iterable<T>;
6
+ entries(): IterableIterator<[key: number, value: T]>;
7
+ keys(): IterableIterator<number>;
8
+ values(): IterableIterator<T>;
9
9
  has(key: number): boolean;
10
10
  get(key: number): T | undefined;
11
11
  set(key: number, value: T): void;
@@ -4,7 +4,7 @@ export declare class SparseSet implements Iterable<number> {
4
4
  get [Symbol.toStringTag](): string;
5
5
  [Symbol.iterator](): IterableIterator<number>;
6
6
  constructor(array?: number[]);
7
- values(): Iterable<number>;
7
+ values(): IterableIterator<number>;
8
8
  has(value: number): boolean;
9
9
  add(value: number): void;
10
10
  delete(value: number): void;
@@ -1,9 +1,9 @@
1
1
  export declare class TrieMap<K extends Iterable<T>, V, T = unknown> {
2
2
  private root;
3
3
  get [Symbol.toStringTag](): string;
4
- entries(): Iterable<[key: T[], value: V]>;
5
- keys(): Iterable<T[]>;
6
- values(): Iterable<V>;
4
+ entries(): IterableIterator<[key: T[], value: V]>;
5
+ keys(): IterableIterator<T[]>;
6
+ values(): IterableIterator<V>;
7
7
  set(key: K, value: V): this;
8
8
  has(key: K): boolean;
9
9
  get(key: K): V | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blackglory/structures",
3
- "version": "0.10.1",
3
+ "version": "0.10.4",
4
4
  "description": "",
5
5
  "files": [
6
6
  "lib",
@@ -72,7 +72,7 @@
72
72
  "@blackglory/errors": "^2.2.1",
73
73
  "@blackglory/types": "^1.2.1",
74
74
  "extra-timers": "^0.2.5",
75
- "iterable-operator": "^1.1.0",
75
+ "iterable-operator": "^1.2.1",
76
76
  "justypes": "^2.2.0",
77
77
  "rxjs": "^7.5.5"
78
78
  }