typescript-dsa-stl 1.0.0 → 1.1.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/README.md CHANGED
@@ -1,6 +1,10 @@
1
1
  # TypeScript_DSA
2
2
 
3
- STL-style **data structures and algorithms** for TypeScript: Vector, Stack, Queue, List, and algorithms (sort, binarySearch, lowerBound, min, max, etc.). Publishable npm package.
3
+ **This is the GitHub repository** for the npm package **[typescript-dsa-stl](https://www.npmjs.com/package/typescript-dsa-stl)**.
4
+
5
+ STL-style data structures and algorithms for TypeScript: **Vector**, **Stack**, **Queue**, **List**, **PriorityQueue**, **OrderedMap** (Map), **UnorderedMap**, **OrderedSet** (Set), **UnorderedSet**, and algorithms (`sort`, `binarySearch`, `lowerBound`, `min`, `max`, etc.). Install from npm to use in your project; this repo holds the source code.
6
+
7
+ ---
4
8
 
5
9
  ## Install
6
10
 
@@ -8,6 +12,8 @@ STL-style **data structures and algorithms** for TypeScript: Vector, Stack, Queu
8
12
  npm install typescript-dsa-stl
9
13
  ```
10
14
 
15
+ ---
16
+
11
17
  ## Quick start
12
18
 
13
19
  ```ts
@@ -16,6 +22,11 @@ import {
16
22
  Stack,
17
23
  Queue,
18
24
  List,
25
+ PriorityQueue,
26
+ OrderedMap,
27
+ UnorderedMap,
28
+ OrderedSet,
29
+ UnorderedSet,
19
30
  sort,
20
31
  find,
21
32
  binarySearch,
@@ -46,6 +57,21 @@ const node = list.pushBack(20);
46
57
  list.insertBefore(node, 15);
47
58
  console.log(list.toArray()); // [10, 15, 20]
48
59
 
60
+ // PriorityQueue (max-heap by default)
61
+ const pq = new PriorityQueue<number>();
62
+ pq.push(3); pq.push(1); pq.push(4);
63
+ console.log(pq.top()); // 4
64
+ pq.pop();
65
+
66
+ // OrderedMap (keys sorted), UnorderedMap (hash)
67
+ const map = new UnorderedMap<string, number>();
68
+ map.set('a', 1); map.set('b', 2);
69
+ console.log(map.get('a')); // 1
70
+
71
+ // OrderedSet (sorted unique), UnorderedSet (hash)
72
+ const set = new UnorderedSet<number>([1, 2, 2, 3]);
73
+ console.log(set.size); // 3
74
+
49
75
  // Algorithms (work on arrays and iterables)
50
76
  const arr = [3, 1, 4, 1, 5];
51
77
  sort(arr); // [1, 1, 3, 4, 5]
@@ -63,11 +89,13 @@ clamp(42, 0, 10); // 10
63
89
  range(0, 5); // [0, 1, 2, 3, 4]
64
90
  ```
65
91
 
92
+ ---
93
+
66
94
  ## API overview
67
95
 
68
96
  | Module | Exports |
69
97
  |--------|--------|
70
- | **Collections** | `Vector`, `Stack`, `Queue`, `List`, `ListNode` |
98
+ | **Collections** | `Vector`, `Stack`, `Queue`, `List`, `ListNode`, `PriorityQueue`, `OrderedMap`, `UnorderedMap`, `OrderedSet`, `UnorderedSet` |
71
99
  | **Algorithms** | `sort`, `find`, `findIndex`, `transform`, `filter`, `reduce`, `reverse`, `unique`, `binarySearch`, `lowerBound`, `upperBound`, `min`, `max`, `partition` |
72
100
  | **Utils** | `clamp`, `range`, `noop`, `identity`, `swap` |
73
101
  | **Types** | `Comparator`, `Predicate`, `UnaryFn`, `Reducer`, `IterableLike`, `toArray` |
@@ -81,6 +109,8 @@ import { clamp, range } from 'typescript-dsa-stl/utils';
81
109
  import type { Comparator } from 'typescript-dsa-stl/types';
82
110
  ```
83
111
 
112
+ ---
113
+
84
114
  ## Data structures
85
115
 
86
116
  | Structure | Access | Insert end | Insert middle | Remove end | Remove middle |
@@ -89,19 +119,23 @@ import type { Comparator } from 'typescript-dsa-stl/types';
89
119
  | **Stack** | — | O(1) | — | O(1) | — |
90
120
  | **Queue** | — | O(1)* | — | O(1)* | — |
91
121
  | **List** | O(n) | O(1) | O(1)** | O(1) | O(1)** |
122
+ | **PriorityQueue** | — | O(log n) | — | O(log n) | — |
123
+ | **OrderedMap** (Map) | O(log n) get | O(n) set | — | O(n) delete | — |
124
+ | **UnorderedMap** | O(1)* get/set | O(1)* | — | O(1)* delete | — |
125
+ | **OrderedSet** (Set) | O(log n) has | O(n) add | — | O(n) delete | — |
126
+ | **UnorderedSet** | O(1)* has/add | O(1)* | — | O(1)* delete | — |
92
127
 
93
- \* Amortized. \** At a known node.
128
+ \* Amortized (hash).
129
+ \** At a known node.
94
130
 
95
- ## Publish this package to npm
131
+ ---
96
132
 
97
- 1. **Set repo URLs** in `package.json`: replace `your-username` in `repository`, `homepage`, and `bugs` with your GitHub username (and repo name if different).
98
- 2. **Build**: `npm run build`
99
- 3. **Login**: `npm login`
100
- 4. **Publish**: `npm publish` (use `npm publish --access public` if you use a scoped name like `@yourusername/typescript-dsa-stl`)
133
+ ## For maintainers
101
134
 
102
- ## Scripts
135
+ - **Build:** `npm run build` (also runs before `npm publish` via `prepublishOnly`)
136
+ - **Publish:** `npm publish` (use `npm publish --access public` for a scoped package name)
103
137
 
104
- - `npm run build` — compile TypeScript to `dist/` (runs automatically before `npm publish` via `prepublishOnly`)
138
+ ---
105
139
 
106
140
  ## License
107
141
 
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Ordered map (STL-style map). Keys sorted by comparator. O(log n) get/has, O(n) set/delete.
3
+ * Implemented with a sorted array and binary search.
4
+ */
5
+ import type { Comparator } from '../types/index.js';
6
+ export declare class OrderedMap<K, V> {
7
+ private _entries;
8
+ private _compare;
9
+ constructor(compare?: Comparator<K>);
10
+ get size(): number;
11
+ get empty(): boolean;
12
+ private _lowerBound;
13
+ get(key: K): V | undefined;
14
+ set(key: K, value: V): void;
15
+ has(key: K): boolean;
16
+ delete(key: K): boolean;
17
+ clear(): void;
18
+ keys(): Iterable<K>;
19
+ values(): Iterable<V>;
20
+ entries(): Iterable<[K, V]>;
21
+ [Symbol.iterator](): Iterator<[K, V]>;
22
+ }
23
+ //# sourceMappingURL=OrderedMap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrderedMap.d.ts","sourceRoot":"","sources":["../../src/collections/OrderedMap.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAMpD,qBAAa,UAAU,CAAC,CAAC,EAAE,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,QAAQ,CAAgB;gBAEpB,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;IAInC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,KAAK,IAAI,OAAO,CAEnB;IAED,OAAO,CAAC,WAAW;IAYnB,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAQ1B,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAS3B,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAIpB,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IASvB,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC;IAInB,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC;IAIrB,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAI3B,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAGtC"}
@@ -0,0 +1,71 @@
1
+ function defaultCompare(a, b) {
2
+ return a < b ? -1 : a > b ? 1 : 0;
3
+ }
4
+ export class OrderedMap {
5
+ constructor(compare) {
6
+ this._entries = [];
7
+ this._compare = compare ?? defaultCompare;
8
+ }
9
+ get size() {
10
+ return this._entries.length;
11
+ }
12
+ get empty() {
13
+ return this._entries.length === 0;
14
+ }
15
+ _lowerBound(key) {
16
+ const cmp = this._compare;
17
+ let lo = 0;
18
+ let hi = this._entries.length;
19
+ while (lo < hi) {
20
+ const mid = (lo + hi) >>> 1;
21
+ if (cmp(this._entries[mid][0], key) < 0)
22
+ lo = mid + 1;
23
+ else
24
+ hi = mid;
25
+ }
26
+ return lo;
27
+ }
28
+ get(key) {
29
+ const i = this._lowerBound(key);
30
+ if (i < this._entries.length && this._compare(this._entries[i][0], key) === 0) {
31
+ return this._entries[i][1];
32
+ }
33
+ return undefined;
34
+ }
35
+ set(key, value) {
36
+ const i = this._lowerBound(key);
37
+ if (i < this._entries.length && this._compare(this._entries[i][0], key) === 0) {
38
+ this._entries[i][1] = value;
39
+ }
40
+ else {
41
+ this._entries.splice(i, 0, [key, value]);
42
+ }
43
+ }
44
+ has(key) {
45
+ return this.get(key) !== undefined;
46
+ }
47
+ delete(key) {
48
+ const i = this._lowerBound(key);
49
+ if (i < this._entries.length && this._compare(this._entries[i][0], key) === 0) {
50
+ this._entries.splice(i, 1);
51
+ return true;
52
+ }
53
+ return false;
54
+ }
55
+ clear() {
56
+ this._entries.length = 0;
57
+ }
58
+ keys() {
59
+ return this._entries.map((e) => e[0]);
60
+ }
61
+ values() {
62
+ return this._entries.map((e) => e[1]);
63
+ }
64
+ entries() {
65
+ return this._entries;
66
+ }
67
+ [Symbol.iterator]() {
68
+ return this._entries[Symbol.iterator]();
69
+ }
70
+ }
71
+ //# sourceMappingURL=OrderedMap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrderedMap.js","sourceRoot":"","sources":["../../src/collections/OrderedMap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Ordered set (STL-style set). Unique elements sorted by comparator. O(log n) has, O(n) add/delete.
3
+ * Implemented with a sorted array and binary search.
4
+ */
5
+ import type { Comparator } from '../types/index.js';
6
+ export declare class OrderedSet<T> {
7
+ private _data;
8
+ private _compare;
9
+ constructor(compare?: Comparator<T>);
10
+ get size(): number;
11
+ get empty(): boolean;
12
+ private _lowerBound;
13
+ has(value: T): boolean;
14
+ add(value: T): void;
15
+ delete(value: T): boolean;
16
+ clear(): void;
17
+ [Symbol.iterator](): Iterator<T>;
18
+ toArray(): T[];
19
+ }
20
+ //# sourceMappingURL=OrderedSet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrderedSet.d.ts","sourceRoot":"","sources":["../../src/collections/OrderedSet.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAMpD,qBAAa,UAAU,CAAC,CAAC;IACvB,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,QAAQ,CAAgB;gBAEpB,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;IAInC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,KAAK,IAAI,OAAO,CAEnB;IAED,OAAO,CAAC,WAAW;IAYnB,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO;IAKtB,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI;IAOnB,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO;IASzB,KAAK,IAAI,IAAI;IAIb,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;IAIhC,OAAO,IAAI,CAAC,EAAE;CAGf"}
@@ -0,0 +1,56 @@
1
+ function defaultCompare(a, b) {
2
+ return a < b ? -1 : a > b ? 1 : 0;
3
+ }
4
+ export class OrderedSet {
5
+ constructor(compare) {
6
+ this._data = [];
7
+ this._compare = compare ?? defaultCompare;
8
+ }
9
+ get size() {
10
+ return this._data.length;
11
+ }
12
+ get empty() {
13
+ return this._data.length === 0;
14
+ }
15
+ _lowerBound(value) {
16
+ const cmp = this._compare;
17
+ let lo = 0;
18
+ let hi = this._data.length;
19
+ while (lo < hi) {
20
+ const mid = (lo + hi) >>> 1;
21
+ if (cmp(this._data[mid], value) < 0)
22
+ lo = mid + 1;
23
+ else
24
+ hi = mid;
25
+ }
26
+ return lo;
27
+ }
28
+ has(value) {
29
+ const i = this._lowerBound(value);
30
+ return i < this._data.length && this._compare(this._data[i], value) === 0;
31
+ }
32
+ add(value) {
33
+ const i = this._lowerBound(value);
34
+ if (i >= this._data.length || this._compare(this._data[i], value) !== 0) {
35
+ this._data.splice(i, 0, value);
36
+ }
37
+ }
38
+ delete(value) {
39
+ const i = this._lowerBound(value);
40
+ if (i < this._data.length && this._compare(this._data[i], value) === 0) {
41
+ this._data.splice(i, 1);
42
+ return true;
43
+ }
44
+ return false;
45
+ }
46
+ clear() {
47
+ this._data.length = 0;
48
+ }
49
+ [Symbol.iterator]() {
50
+ return this._data[Symbol.iterator]();
51
+ }
52
+ toArray() {
53
+ return [...this._data];
54
+ }
55
+ }
56
+ //# sourceMappingURL=OrderedSet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrderedSet.js","sourceRoot":"","sources":["../../src/collections/OrderedSet.ts"],"names":[],"mappings":"AAMA,SAAS,cAAc,CAAI,CAAI,EAAE,CAAI;IACnC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,OAAO,UAAU;IAIrB,YAAY,OAAuB;QAH3B,UAAK,GAAQ,EAAE,CAAC;QAItB,IAAI,CAAC,QAAQ,GAAG,OAAO,IAAI,cAAc,CAAC;IAC5C,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IACjC,CAAC;IAEO,WAAW,CAAC,KAAQ;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC1B,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAC3B,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;YAC5B,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC;gBAAE,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;;gBAC7C,EAAE,GAAG,GAAG,CAAC;QAChB,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,GAAG,CAAC,KAAQ;QACV,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5E,CAAC;IAED,GAAG,CAAC,KAAQ;QACV,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACxE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAQ;QACb,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACvE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACxB,CAAC;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IACvC,CAAC;IAED,OAAO;QACL,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;CACF"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Priority queue (binary heap). O(log n) push and pop, O(1) top.
3
+ * Default: max-heap (highest priority at top). Pass a custom comparator to change order.
4
+ */
5
+ import type { Comparator } from '../types/index.js';
6
+ export declare class PriorityQueue<T> {
7
+ private _heap;
8
+ private _compare;
9
+ /** compare(a,b) < 0 means a has lower priority than b. Default: max-heap. */
10
+ constructor(compare?: Comparator<T>);
11
+ get size(): number;
12
+ get empty(): boolean;
13
+ /** Highest-priority element. */
14
+ top(): T;
15
+ push(value: T): void;
16
+ pop(): T | undefined;
17
+ clear(): void;
18
+ private _siftUp;
19
+ private _siftDown;
20
+ toArray(): T[];
21
+ }
22
+ //# sourceMappingURL=PriorityQueue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PriorityQueue.d.ts","sourceRoot":"","sources":["../../src/collections/PriorityQueue.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAMpD,qBAAa,aAAa,CAAC,CAAC;IAC1B,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,QAAQ,CAAgB;IAEhC,6EAA6E;gBACjE,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;IAInC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,KAAK,IAAI,OAAO,CAEnB;IAED,gCAAgC;IAChC,GAAG,IAAI,CAAC;IAKR,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI;IAKpB,GAAG,IAAI,CAAC,GAAG,SAAS;IAWpB,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,OAAO;IAWf,OAAO,CAAC,SAAS;IAgBjB,OAAO,IAAI,CAAC,EAAE;CAGf"}
@@ -0,0 +1,73 @@
1
+ function defaultCompare(a, b) {
2
+ return a < b ? -1 : a > b ? 1 : 0;
3
+ }
4
+ export class PriorityQueue {
5
+ /** compare(a,b) < 0 means a has lower priority than b. Default: max-heap. */
6
+ constructor(compare) {
7
+ this._heap = [];
8
+ this._compare = compare ?? defaultCompare;
9
+ }
10
+ get size() {
11
+ return this._heap.length;
12
+ }
13
+ get empty() {
14
+ return this._heap.length === 0;
15
+ }
16
+ /** Highest-priority element. */
17
+ top() {
18
+ if (this._heap.length === 0)
19
+ throw new RangeError('PriorityQueue is empty');
20
+ return this._heap[0];
21
+ }
22
+ push(value) {
23
+ this._heap.push(value);
24
+ this._siftUp(this._heap.length - 1);
25
+ }
26
+ pop() {
27
+ if (this._heap.length === 0)
28
+ return undefined;
29
+ const top = this._heap[0];
30
+ const last = this._heap.pop();
31
+ if (this._heap.length > 0) {
32
+ this._heap[0] = last;
33
+ this._siftDown(0);
34
+ }
35
+ return top;
36
+ }
37
+ clear() {
38
+ this._heap.length = 0;
39
+ }
40
+ _siftUp(i) {
41
+ const cmp = this._compare;
42
+ const arr = this._heap;
43
+ while (i > 0) {
44
+ const parent = (i - 1) >>> 1;
45
+ if (cmp(arr[i], arr[parent]) <= 0)
46
+ break;
47
+ [arr[i], arr[parent]] = [arr[parent], arr[i]];
48
+ i = parent;
49
+ }
50
+ }
51
+ _siftDown(i) {
52
+ const cmp = this._compare;
53
+ const arr = this._heap;
54
+ const n = arr.length;
55
+ while (true) {
56
+ let best = i;
57
+ const left = 2 * i + 1;
58
+ const right = 2 * i + 2;
59
+ if (left < n && cmp(arr[left], arr[best]) > 0)
60
+ best = left;
61
+ if (right < n && cmp(arr[right], arr[best]) > 0)
62
+ best = right;
63
+ if (best === i)
64
+ break;
65
+ [arr[i], arr[best]] = [arr[best], arr[i]];
66
+ i = best;
67
+ }
68
+ }
69
+ toArray() {
70
+ return [...this._heap];
71
+ }
72
+ }
73
+ //# sourceMappingURL=PriorityQueue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PriorityQueue.js","sourceRoot":"","sources":["../../src/collections/PriorityQueue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Unordered map (STL-style unordered_map). Hash-based. O(1) average get/set/has/delete.
3
+ * Wraps the native Map with an STL-like API.
4
+ */
5
+ export declare class UnorderedMap<K, V> {
6
+ private _map;
7
+ constructor(entries?: Iterable<[K, V]>);
8
+ get size(): number;
9
+ get empty(): boolean;
10
+ get(key: K): V | undefined;
11
+ set(key: K, value: V): void;
12
+ has(key: K): boolean;
13
+ delete(key: K): boolean;
14
+ clear(): void;
15
+ keys(): Iterable<K>;
16
+ values(): Iterable<V>;
17
+ entries(): Iterable<[K, V]>;
18
+ [Symbol.iterator](): Iterator<[K, V]>;
19
+ }
20
+ //# sourceMappingURL=UnorderedMap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnorderedMap.d.ts","sourceRoot":"","sources":["../../src/collections/UnorderedMap.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,YAAY,CAAC,CAAC,EAAE,CAAC;IAC5B,OAAO,CAAC,IAAI,CAAmC;gBAEnC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAMtC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,KAAK,IAAI,OAAO,CAEnB;IAED,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAI1B,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAI3B,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAIpB,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAIvB,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC;IAInB,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC;IAIrB,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAI3B,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAGtC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Unordered map (STL-style unordered_map). Hash-based. O(1) average get/set/has/delete.
3
+ * Wraps the native Map with an STL-like API.
4
+ */
5
+ export class UnorderedMap {
6
+ constructor(entries) {
7
+ this._map = new Map();
8
+ if (entries) {
9
+ for (const [k, v] of entries)
10
+ this._map.set(k, v);
11
+ }
12
+ }
13
+ get size() {
14
+ return this._map.size;
15
+ }
16
+ get empty() {
17
+ return this._map.size === 0;
18
+ }
19
+ get(key) {
20
+ return this._map.get(key);
21
+ }
22
+ set(key, value) {
23
+ this._map.set(key, value);
24
+ }
25
+ has(key) {
26
+ return this._map.has(key);
27
+ }
28
+ delete(key) {
29
+ return this._map.delete(key);
30
+ }
31
+ clear() {
32
+ this._map.clear();
33
+ }
34
+ keys() {
35
+ return this._map.keys();
36
+ }
37
+ values() {
38
+ return this._map.values();
39
+ }
40
+ entries() {
41
+ return this._map.entries();
42
+ }
43
+ [Symbol.iterator]() {
44
+ return this._map.entries();
45
+ }
46
+ }
47
+ //# sourceMappingURL=UnorderedMap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnorderedMap.js","sourceRoot":"","sources":["../../src/collections/UnorderedMap.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,YAAY;IAGvB,YAAY,OAA0B;QAF9B,SAAI,GAAyB,IAAI,GAAG,EAAE,CAAC;QAG7C,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,OAAO;gBAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACxB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,GAAG,CAAC,GAAM;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,GAAG,CAAC,GAAM,EAAE,KAAQ;QAClB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,GAAG,CAAC,GAAM;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,GAAM;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Unordered set (STL-style unordered_set). Hash-based. O(1) average add/has/delete.
3
+ * Wraps the native Set with an STL-like API.
4
+ */
5
+ export declare class UnorderedSet<T> {
6
+ private _set;
7
+ constructor(values?: Iterable<T>);
8
+ get size(): number;
9
+ get empty(): boolean;
10
+ has(value: T): boolean;
11
+ add(value: T): void;
12
+ delete(value: T): boolean;
13
+ clear(): void;
14
+ [Symbol.iterator](): Iterator<T>;
15
+ toArray(): T[];
16
+ }
17
+ //# sourceMappingURL=UnorderedSet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnorderedSet.d.ts","sourceRoot":"","sources":["../../src/collections/UnorderedSet.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,YAAY,CAAC,CAAC;IACzB,OAAO,CAAC,IAAI,CAAgC;gBAEhC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;IAMhC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,KAAK,IAAI,OAAO,CAEnB;IAED,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO;IAItB,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI;IAInB,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO;IAIzB,KAAK,IAAI,IAAI;IAIb,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;IAIhC,OAAO,IAAI,CAAC,EAAE;CAGf"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Unordered set (STL-style unordered_set). Hash-based. O(1) average add/has/delete.
3
+ * Wraps the native Set with an STL-like API.
4
+ */
5
+ export class UnorderedSet {
6
+ constructor(values) {
7
+ this._set = new Set();
8
+ if (values) {
9
+ for (const v of values)
10
+ this._set.add(v);
11
+ }
12
+ }
13
+ get size() {
14
+ return this._set.size;
15
+ }
16
+ get empty() {
17
+ return this._set.size === 0;
18
+ }
19
+ has(value) {
20
+ return this._set.has(value);
21
+ }
22
+ add(value) {
23
+ this._set.add(value);
24
+ }
25
+ delete(value) {
26
+ return this._set.delete(value);
27
+ }
28
+ clear() {
29
+ this._set.clear();
30
+ }
31
+ [Symbol.iterator]() {
32
+ return this._set.values();
33
+ }
34
+ toArray() {
35
+ return [...this._set];
36
+ }
37
+ }
38
+ //# sourceMappingURL=UnorderedSet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnorderedSet.js","sourceRoot":"","sources":["../../src/collections/UnorderedSet.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,YAAY;IAGvB,YAAY,MAAoB;QAFxB,SAAI,GAAsB,IAAI,GAAG,EAAE,CAAC;QAG1C,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,MAAM,CAAC,IAAI,MAAM;gBAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACxB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,GAAG,CAAC,KAAQ;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,GAAG,CAAC,KAAQ;QACV,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,KAAQ;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,OAAO;QACL,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;CACF"}
@@ -2,4 +2,9 @@ export { Vector } from './Vector.js';
2
2
  export { Stack } from './Stack.js';
3
3
  export { Queue } from './Queue.js';
4
4
  export { List, ListNode } from './List.js';
5
+ export { PriorityQueue } from './PriorityQueue.js';
6
+ export { OrderedMap } from './OrderedMap.js';
7
+ export { UnorderedMap } from './UnorderedMap.js';
8
+ export { OrderedSet } from './OrderedSet.js';
9
+ export { UnorderedSet } from './UnorderedSet.js';
5
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/collections/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/collections/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
@@ -2,4 +2,9 @@ export { Vector } from './Vector.js';
2
2
  export { Stack } from './Stack.js';
3
3
  export { Queue } from './Queue.js';
4
4
  export { List, ListNode } from './List.js';
5
+ export { PriorityQueue } from './PriorityQueue.js';
6
+ export { OrderedMap } from './OrderedMap.js';
7
+ export { UnorderedMap } from './UnorderedMap.js';
8
+ export { OrderedSet } from './OrderedSet.js';
9
+ export { UnorderedSet } from './UnorderedSet.js';
5
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/collections/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/collections/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -5,7 +5,7 @@
5
5
  * @example
6
6
  * import { Vector, Stack, Queue, List, sort, binarySearch, clamp } from 'typescript-dsa-stl';
7
7
  */
8
- export { Vector, Stack, Queue, List, ListNode } from './collections/index.js';
8
+ export { Vector, Stack, Queue, List, ListNode, PriorityQueue, OrderedMap, UnorderedMap, OrderedSet, UnorderedSet, } from './collections/index.js';
9
9
  export { sort, find, findIndex, transform, filter, reduce, reverse, unique, binarySearch, lowerBound, upperBound, min, max, partition, } from './algorithms/index.js';
10
10
  export { clamp, range, noop, identity, swap } from './utils/index.js';
11
11
  export type { Comparator, Predicate, UnaryFn, Reducer, IterableLike } from './types/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,SAAS,EACT,MAAM,EACN,MAAM,EACN,OAAO,EACP,MAAM,EACN,YAAY,EACZ,UAAU,EACV,UAAU,EACV,GAAG,EACH,GAAG,EACH,SAAS,GACV,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACtE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC9F,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,MAAM,EACN,KAAK,EACL,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,aAAa,EACb,UAAU,EACV,YAAY,EACZ,UAAU,EACV,YAAY,GACb,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,SAAS,EACT,MAAM,EACN,MAAM,EACN,OAAO,EACP,MAAM,EACN,YAAY,EACZ,UAAU,EACV,UAAU,EACV,GAAG,EACH,GAAG,EACH,SAAS,GACV,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACtE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC9F,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@
5
5
  * @example
6
6
  * import { Vector, Stack, Queue, List, sort, binarySearch, clamp } from 'typescript-dsa-stl';
7
7
  */
8
- export { Vector, Stack, Queue, List, ListNode } from './collections/index.js';
8
+ export { Vector, Stack, Queue, List, ListNode, PriorityQueue, OrderedMap, UnorderedMap, OrderedSet, UnorderedSet, } from './collections/index.js';
9
9
  export { sort, find, findIndex, transform, filter, reduce, reverse, unique, binarySearch, lowerBound, upperBound, min, max, partition, } from './algorithms/index.js';
10
10
  export { clamp, range, noop, identity, swap } from './utils/index.js';
11
11
  export { toArray } from './types/index.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,SAAS,EACT,MAAM,EACN,MAAM,EACN,OAAO,EACP,MAAM,EACN,YAAY,EACZ,UAAU,EACV,UAAU,EACV,GAAG,EACH,GAAG,EACH,SAAS,GACV,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAEtE,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,MAAM,EACN,KAAK,EACL,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,aAAa,EACb,UAAU,EACV,YAAY,EACZ,UAAU,EACV,YAAY,GACb,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,SAAS,EACT,MAAM,EACN,MAAM,EACN,OAAO,EACP,MAAM,EACN,YAAY,EACZ,UAAU,EACV,UAAU,EACV,GAAG,EACH,GAAG,EACH,SAAS,GACV,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAEtE,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "typescript-dsa-stl",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "TypeScript_DSA — STL-like data structures and algorithms. Vector, Stack, Queue, List, sort, binarySearch, and more.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",