recursive-set 4.0.0 → 5.0.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/README.md CHANGED
@@ -13,18 +13,18 @@
13
13
 
14
14
  A mathematical set implementation designed for **Theoretical Computer Science**, **SAT-Solvers**, and **Graph Theory**. Unlike native JavaScript `Set`, `RecursiveSet` enforces **Structural Equality** (ZFC semantics) and supports deep nesting.
15
15
 
16
- **v4.0.0 Update:** Now powered by **Sorted Arrays** instead of Red-Black Trees.
17
- * **5x-10x Faster** than v3.0 (cache locality vs. pointer chasing).
18
- * **O(1) Equality Checks** via aggressive hash caching.
19
- * **Native Array Support** included.
16
+ **v5.0.0 Update:** Now featuring **"Freeze-on-Hash"** lifecycle management.
17
+ * **Safety First**: Sets automatically become **immutable** (frozen) once used as a key or member of another set. No more corrupted hash codes!
18
+ * **High Performance**: Backed by **Sorted Arrays** and FNV-1a hashing. 5x - 10x faster than tree-based implementations for typical *N* < 1000.
19
+ * **O(1) Equality Checks**: Aggressive caching allows for instant comparisons of deep structures.
20
20
 
21
21
  ---
22
22
 
23
23
  ## Features
24
24
 
25
25
  * **🔢 Strict Structural Equality:** `{1, 2}` is equal to `{2, 1}`.
26
+ * **❄️ Freeze-on-Hash:** Mutable during construction, immutable during usage. Prevents subtle reference bugs.
26
27
  * **📦 Deeply Recursive:** Sets can contain Sets. Ideal for Power Sets.
27
- * **⚡ High Performance:** Optimized for V8 (Chrome/Node) using flat memory layouts and binary search.
28
28
  * **📐 Tuples & Arrays:** Native support for `Tuple` class or standard JS Arrays `[a, b]` as elements.
29
29
  * **🔒 Type Safe:** Fully strict TypeScript implementation. No `any` casts.
30
30
  * **🛡️ Deterministic:** Hashing is order-independent for Sets and order-dependent for Sequences.
@@ -39,27 +39,50 @@ npm install recursive-set
39
39
 
40
40
  ---
41
41
  ## Quickstart
42
+
43
+ ### 1. Basic Usage
42
44
  ```typescript
43
45
  import { RecursiveSet, Tuple } from "recursive-set";
44
46
 
45
- // 1. Sets of primitives
47
+ // Sets of primitives
46
48
  const states = new RecursiveSet<string>();
47
49
  states.add("q0").add("q1");
48
50
 
49
- // 2. Sets of Sets (Partitioning)
50
- // Recursion requires explicit typing!
51
+ // Sets of Sets (Partitioning)
51
52
  const partition = new RecursiveSet<RecursiveSet<string>>();
52
53
  partition.add(states); // {{q0, q1}}
53
54
 
54
- // 3. Tuples (Ordered Pairs / Edges)
55
- const edge = new Tuple("q0", "q1"); // (q0, q1)
55
+ // Tuples (Ordered Pairs / Edges)
56
+ const edge = new Tuple("q0", "q1");
56
57
  // or simply: const edge = ["q0", "q1"];
57
58
 
58
59
  const transitions = new RecursiveSet<Tuple<[string, string]>>();
59
60
  transitions.add(edge);
60
61
 
61
62
  console.log(partition.toString()); // {{q0, q1}}
62
- console.log(transitions.toString()); // {(q0, q1)}
63
+ ```
64
+
65
+ ### 2. The Lifecycle (Mutable -> Frozen)
66
+
67
+ **New in v5:** To ensure mathematical correctness, a set cannot be modified once it has been hashed (e.g., added to another set).
68
+
69
+ ```typescript
70
+ const A = new RecursiveSet(1, 2);
71
+ const B = new RecursiveSet(A);
72
+ // B hashes A to store it.
73
+ // A is now FROZEN to ensure B's integrity.
74
+
75
+ console.log(B.has(A)); // true
76
+
77
+ try {
78
+ A.add(3); // 💥 Throws Error: Cannot add() to a frozen RecursiveSet
79
+ } catch (e) {
80
+ console.log("A is immutable now!");
81
+ }
82
+
83
+ // Fix: Create a mutable copy ("Forking")
84
+ const C = A.mutableCopy();
85
+ C.add(3); // Works!
63
86
  ```
64
87
 
65
88
  ---
@@ -77,6 +100,10 @@ new RecursiveSet<T>(...elements: T[])
77
100
 
78
101
  ### Methods
79
102
 
103
+ **Lifecycle Management:**
104
+ * `mutableCopy(): RecursiveSet<T>` – Creates a fresh, mutable clone of the set (O(N)). Use this if you need to modify a frozen set.
105
+ * `clone(): RecursiveSet<T>` – Alias for mutableCopy.
106
+
80
107
  **Mutation:**
81
108
  * `add(element: T): this` – Insert element (O(N) worst case, O(1) append).
82
109
  * `remove(element: T): this` – Remove element.
@@ -99,11 +126,12 @@ new RecursiveSet<T>(...elements: T[])
99
126
 
100
127
  **Properties:**
101
128
  * `size: number` – Cardinality.
102
- * `hashCode: number` – The cached hash of the set.
129
+ * `hashCode: number` – The cached hash. Accessing this property freezes the set.
130
+ * `isFrozen: boolean` – Check if the set is read-only.
103
131
 
104
132
  ---
105
133
 
106
- ## Performance Notes (v4.0)
134
+ ## Performance Notes
107
135
 
108
136
  **Why Sorted Arrays?**
109
137
  For sets with $N < 1000$ (common in logic puzzles, N-Queens, graphs), the overhead of allocating tree nodes (v2/v3) dominates runtime. Sorted Arrays exploit **CPU Cache Lines**.
@@ -119,12 +147,12 @@ For sets with $N < 1000$ (common in logic puzzles, N-Queens, graphs), the overhe
119
147
 
120
148
  ---
121
149
 
122
- ## Breaking Changes in v4.0
150
+ ## Breaking Changes in v5.0
123
151
 
124
- 1. **Engine Switch (Array Backend):** Iterators are now **live**. Modifying the set while iterating over it will reflect changes immediately (Standard JS Array behavior). In v3 (RBT), iterators were snapshots.
125
- 2. **Arrays Supported:** Adding `[1, 2]` is now natively supported and treated as a `Tuple`.
126
- 3. **Strict Generics (Maintained from v3):** `add()` requires explicit generic types for recursion.
127
- 4. **Plain Objects Rejected (Maintained from v3):** `{a: 1}` throws an Error. Use `Tuple` or `RecursiveSet`.
152
+ 1. **Freeze-on-Hash Semantics:** To guarantee mathematical correctness, sets now transition to an **immutable state** once their `hashCode` is computed (which happens automatically when added to another `RecursiveSet` or used as a Map key).
153
+ * *Old Behavior:* Modifying a hashed set was possible but resulted in corrupted hash codes and lookup failures.
154
+ * *New Behavior:* Calling `add()`, `remove()` or `clear()` on a hashed set throws an `Error`.
155
+ * *Migration:* Use `mutableCopy()` to create a modifiable clone if you need to evolve a state that has already been stored.
128
156
 
129
157
  ---
130
158
 
@@ -137,6 +165,7 @@ git clone https://github.com/cstrerath/recursive-set.git
137
165
  npm install
138
166
  npm run build
139
167
  npx tsx test/test.ts
168
+ npx tsx test/nqueens.ts
140
169
  ```
141
170
 
142
171
  ---
package/dist/cjs/index.js CHANGED
@@ -1,102 +1,84 @@
1
1
  "use strict";
2
2
  /**
3
3
  * @module recursive-set
4
- * High-Performance Mutable Recursive Set backed by Sorted Arrays.
5
- * Optimized for small sets, structural equality, and deterministic hashing.
4
+ * High-Performance Recursive Set with "Freeze-on-Hash" semantics.
6
5
  */
7
6
  Object.defineProperty(exports, "__esModule", { value: true });
8
7
  exports.RecursiveSet = exports.Tuple = void 0;
9
8
  exports.emptySet = emptySet;
10
9
  exports.singleton = singleton;
11
10
  exports.fromIterable = fromIterable;
12
- // === HASHING ENGINE ===
13
- /**
14
- * FNV-1a Hash implementation for strings.
15
- * Constants inlined for V8 optimization.
16
- */
11
+ // === HASHING ENGINE (FNV-1a) ===
12
+ const FNV_PRIME = 16777619;
13
+ const FNV_OFFSET = 2166136261;
17
14
  function hashString(str) {
18
- let hash = 0x811c9dc5;
19
- for (let i = 0; i < str.length; i++) {
15
+ let hash = FNV_OFFSET;
16
+ const len = str.length;
17
+ for (let i = 0; i < len; i++) {
20
18
  hash ^= str.charCodeAt(i);
21
- hash = Math.imul(hash, 0x01000193);
19
+ hash = Math.imul(hash, FNV_PRIME);
22
20
  }
23
21
  return hash >>> 0;
24
22
  }
25
- /**
26
- * Universal Hash Function.
27
- * Calculates deterministic hashes for Primitives, Sequences (Order Dependent), and Sets.
28
- */
29
23
  function hashValue(val) {
30
24
  if (typeof val === 'string')
31
25
  return hashString(val);
32
- if (typeof val === 'number')
33
- return val | 0;
26
+ if (typeof val === 'number') {
27
+ let hash = FNV_OFFSET;
28
+ hash ^= (val | 0);
29
+ hash = Math.imul(hash, FNV_PRIME);
30
+ return hash >>> 0;
31
+ }
34
32
  // Fast Path: Objects with cached hash
35
- if (val instanceof RecursiveSet)
33
+ if (val && typeof val === 'object' && 'hashCode' in val) {
36
34
  return val.hashCode;
37
- if (val instanceof Tuple)
38
- return val.hashCode;
39
- // Arrays: Treated as sequences (Rolling Hash)
35
+ }
40
36
  if (Array.isArray(val)) {
41
- let h = 0;
42
- for (let i = 0; i < val.length; i++) {
43
- let v = val[i];
44
- let vh = 0;
45
- if (typeof v === 'string')
46
- vh = hashString(v);
47
- else
48
- vh = hashValue(v);
49
- h = Math.imul(31, h) + vh;
37
+ let h = FNV_OFFSET;
38
+ const len = val.length;
39
+ for (let i = 0; i < len; i++) {
40
+ h ^= hashValue(val[i]);
41
+ h = Math.imul(h, FNV_PRIME);
50
42
  }
51
43
  return h >>> 0;
52
44
  }
53
45
  return 0;
54
46
  }
55
47
  // === COMPARATOR ===
56
- /**
57
- * High-performance comparator with hash short-circuiting.
58
- * Order: Primitives (0) < Sequences (1) < Sets (2)
59
- */
60
48
  function compare(a, b) {
61
49
  if (a === b)
62
50
  return 0;
63
- // 1. Hash Short-Circuit
64
- // Using interface casting avoids runtime overhead of 'in' operator checks
51
+ // 1. Hash Short-Circuit (Optimization)
65
52
  const aH = a?.hashCode;
66
53
  const bH = b?.hashCode;
67
54
  const ha = (aH !== undefined) ? aH : hashValue(a);
68
55
  const hb = (bH !== undefined) ? bH : hashValue(b);
69
56
  if (ha !== hb)
70
57
  return ha < hb ? -1 : 1;
71
- // 2. Primitive Value Check
58
+ // 2. Structural Type Check
72
59
  const typeA = typeof a;
73
60
  const typeB = typeof b;
74
61
  if (typeA === 'string' && typeB === 'string')
75
62
  return a < b ? -1 : 1;
76
63
  if (typeA === 'number' && typeB === 'number')
77
64
  return a < b ? -1 : 1;
78
- // 3. Structural Type Check
79
65
  const isSetA = a instanceof RecursiveSet;
80
66
  const isSetB = b instanceof RecursiveSet;
81
67
  if (isSetA && isSetB) {
82
68
  return a.compare(b);
83
69
  }
84
- const isArrA = Array.isArray(a);
85
- const isArrB = Array.isArray(b);
86
- const isTupA = a instanceof Tuple;
87
- const isTupB = b instanceof Tuple;
88
- const isSeqA = isArrA || isTupA;
89
- const isSeqB = isArrB || isTupB;
90
- // Sort by Type Group if types differ
70
+ const isSeqA = Array.isArray(a) || a instanceof Tuple;
71
+ const isSeqB = Array.isArray(b) || b instanceof Tuple;
72
+ // Sort Order: Primitives (0) < Sequences (1) < Sets (2)
91
73
  if (isSetA !== isSetB || isSeqA !== isSeqB) {
92
74
  const scoreA = isSetA ? 2 : isSeqA ? 1 : 0;
93
75
  const scoreB = isSetB ? 2 : isSeqB ? 1 : 0;
94
76
  return scoreA - scoreB;
95
77
  }
96
- // 4. Sequence Comparison (Array/Tuple)
78
+ // 3. Sequence Comparison
97
79
  if (isSeqA && isSeqB) {
98
- const valA = isTupA ? a.values : a;
99
- const valB = isTupB ? b.values : b;
80
+ const valA = (a instanceof Tuple) ? a.values : a;
81
+ const valB = (b instanceof Tuple) ? b.values : b;
100
82
  const len = valA.length;
101
83
  if (len !== valB.length)
102
84
  return len - valB.length;
@@ -107,14 +89,9 @@ function compare(a, b) {
107
89
  }
108
90
  return 0;
109
91
  }
110
- // Fallback for safe types
111
92
  return a < b ? -1 : 1;
112
93
  }
113
94
  // === CLASSES ===
114
- /**
115
- * Immutable wrapper for sequence values.
116
- * Useful when strict typing for sequences is required.
117
- */
118
95
  class Tuple {
119
96
  values;
120
97
  hashCode;
@@ -129,16 +106,10 @@ class Tuple {
129
106
  [Symbol.for('nodejs.util.inspect.custom')]() { return this.toString(); }
130
107
  }
131
108
  exports.Tuple = Tuple;
132
- /**
133
- * A Set implementation that supports deep structural equality and efficient hashing.
134
- * Internally backed by a sorted array for optimal CPU cache locality on small sets.
135
- */
136
109
  class RecursiveSet {
137
- /**
138
- * Internal storage. Public for inlining access within the module, but treated as private API.
139
- */
140
110
  _elements;
141
111
  _hashCode = null;
112
+ _isFrozen = false;
142
113
  static compare(a, b) { return compare(a, b); }
143
114
  constructor(...elements) {
144
115
  if (elements.length === 0) {
@@ -151,6 +122,13 @@ class RecursiveSet {
151
122
  this._unique();
152
123
  }
153
124
  }
125
+ _checkFrozen(op) {
126
+ if (this._isFrozen) {
127
+ throw new Error(`InvalidOperation: Cannot ${op} a frozen RecursiveSet.\n` +
128
+ `This Set has been hashed or used in a collection (Value Semantics).\n` +
129
+ `Use .mutableCopy() to create a modifiable copy.`);
130
+ }
131
+ }
154
132
  _unique() {
155
133
  const arr = this._elements;
156
134
  const len = arr.length;
@@ -165,8 +143,7 @@ class RecursiveSet {
165
143
  arr.length = write;
166
144
  }
167
145
  /**
168
- * Calculates the hash code for the set.
169
- * Uses a rolling hash over sorted elements, ensuring determinstic results for equal sets.
146
+ * Calculates/Caches hash code and FREEZES the set.
170
147
  */
171
148
  get hashCode() {
172
149
  if (this._hashCode !== null)
@@ -178,10 +155,10 @@ class RecursiveSet {
178
155
  h = Math.imul(31, h) + hashValue(arr[i]);
179
156
  }
180
157
  this._hashCode = h | 0;
158
+ this._isFrozen = true;
181
159
  return this._hashCode;
182
160
  }
183
- // Backward compatibility alias
184
- getHashCode() { return this.hashCode; }
161
+ get isFrozen() { return this._isFrozen; }
185
162
  compare(other) {
186
163
  if (this === other)
187
164
  return 0;
@@ -206,7 +183,7 @@ class RecursiveSet {
206
183
  has(element) {
207
184
  const arr = this._elements;
208
185
  const len = arr.length;
209
- // Small Array Optimization: Linear Scan is faster than Binary Search overhead for N < 16
186
+ // Linear Scan (Prefetch-friendly for small sets)
210
187
  if (len < 16) {
211
188
  for (let i = 0; i < len; i++) {
212
189
  if (compare(arr[i], element) === 0)
@@ -214,6 +191,7 @@ class RecursiveSet {
214
191
  }
215
192
  return false;
216
193
  }
194
+ // Binary Search
217
195
  let low = 0, high = len - 1;
218
196
  while (low <= high) {
219
197
  const mid = (low + high) >>> 1;
@@ -228,22 +206,19 @@ class RecursiveSet {
228
206
  return false;
229
207
  }
230
208
  add(element) {
231
- // --- Validation Check ---
209
+ this._checkFrozen('add() to');
210
+ // Validation (Inlined for Performance)
232
211
  if (typeof element === 'object' && element !== null) {
233
- const isSet = element instanceof RecursiveSet;
234
- const isTup = element instanceof Tuple;
235
- const isArr = Array.isArray(element);
236
- if (!isSet && !isTup && !isArr) {
237
- throw new Error("Plain Objects are not supported. Use Tuple, Array or RecursiveSet.");
212
+ if (!(element instanceof RecursiveSet || element instanceof Tuple || Array.isArray(element))) {
213
+ throw new Error("Unsupported Type: Use Tuple, Array or RecursiveSet.");
238
214
  }
239
215
  }
240
- else if (typeof element === "number" && Number.isNaN(element)) {
216
+ else if (Number.isNaN(element)) {
241
217
  throw new Error("NaN is not supported");
242
218
  }
243
- // --- End Validation ---
244
219
  const arr = this._elements;
245
220
  const len = arr.length;
246
- // Common Case: Appending a larger element (during ordered construction)
221
+ // Optimization: Append to end (common in construction)
247
222
  if (len > 0) {
248
223
  const lastCmp = compare(arr[len - 1], element);
249
224
  if (lastCmp < 0) {
@@ -259,7 +234,7 @@ class RecursiveSet {
259
234
  this._hashCode = null;
260
235
  return this;
261
236
  }
262
- // Small Array Strategy: Linear Scan + Splice
237
+ // Small Array Strategy
263
238
  if (len < 16) {
264
239
  for (let i = 0; i < len; i++) {
265
240
  const cmp = compare(arr[i], element);
@@ -271,9 +246,10 @@ class RecursiveSet {
271
246
  return this;
272
247
  }
273
248
  }
249
+ arr.push(element); // Should be unreachable given append check, but safe fallback
274
250
  return this;
275
251
  }
276
- // Large Array Strategy: Binary Search
252
+ // Large Array Strategy
277
253
  let low = 0, high = len - 1, idx = 0;
278
254
  while (low <= high) {
279
255
  const mid = (low + high) >>> 1;
@@ -294,6 +270,7 @@ class RecursiveSet {
294
270
  return this;
295
271
  }
296
272
  remove(element) {
273
+ this._checkFrozen('remove() from');
297
274
  const arr = this._elements;
298
275
  const len = arr.length;
299
276
  if (len < 16) {
@@ -323,16 +300,17 @@ class RecursiveSet {
323
300
  return this;
324
301
  }
325
302
  clear() {
303
+ this._checkFrozen('clear()');
326
304
  this._elements = [];
327
305
  this._hashCode = 0;
328
306
  return this;
329
307
  }
330
- clone() {
308
+ mutableCopy() {
331
309
  const s = new RecursiveSet();
332
310
  s._elements = this._elements.slice();
333
- s._hashCode = this._hashCode;
334
311
  return s;
335
312
  }
313
+ clone() { return this.mutableCopy(); }
336
314
  union(other) {
337
315
  const s = new RecursiveSet();
338
316
  const arrA = this._elements;
@@ -344,7 +322,6 @@ class RecursiveSet {
344
322
  const res = [];
345
323
  let i = 0, j = 0;
346
324
  const lenA = arrA.length, lenB = arrB.length;
347
- // Merge Sort Algorithm O(N + M)
348
325
  while (i < lenA && j < lenB) {
349
326
  const cmp = compare(arrA[i], arrB[j]);
350
327
  if (cmp < 0)
@@ -459,7 +436,6 @@ class RecursiveSet {
459
436
  }
460
437
  return result;
461
438
  }
462
- // Standard Set methods
463
439
  isSubset(other) {
464
440
  if (this.size > other.size)
465
441
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,6 @@
1
1
  /**
2
2
  * @module recursive-set
3
- * High-Performance Mutable Recursive Set backed by Sorted Arrays.
4
- * Optimized for small sets, structural equality, and deterministic hashing.
5
- */
6
- /**
7
- * Immutable wrapper for sequence values.
8
- * Useful when strict typing for sequences is required.
3
+ * High-Performance Recursive Set with "Freeze-on-Hash" semantics.
9
4
  */
10
5
  export declare class Tuple<T extends unknown[]> {
11
6
  readonly values: T;
@@ -16,25 +11,19 @@ export declare class Tuple<T extends unknown[]> {
16
11
  [Symbol.iterator](): Generator<unknown, void, unknown>;
17
12
  toString(): string;
18
13
  }
19
- /**
20
- * A Set implementation that supports deep structural equality and efficient hashing.
21
- * Internally backed by a sorted array for optimal CPU cache locality on small sets.
22
- */
23
14
  export declare class RecursiveSet<T> {
24
- /**
25
- * Internal storage. Public for inlining access within the module, but treated as private API.
26
- */
27
15
  _elements: T[];
28
16
  private _hashCode;
17
+ private _isFrozen;
29
18
  static compare(a: unknown, b: unknown): number;
30
19
  constructor(...elements: T[]);
20
+ private _checkFrozen;
31
21
  private _unique;
32
22
  /**
33
- * Calculates the hash code for the set.
34
- * Uses a rolling hash over sorted elements, ensuring determinstic results for equal sets.
23
+ * Calculates/Caches hash code and FREEZES the set.
35
24
  */
36
25
  get hashCode(): number;
37
- getHashCode(): number;
26
+ get isFrozen(): boolean;
38
27
  compare(other: RecursiveSet<T>): number;
39
28
  get size(): number;
40
29
  isEmpty(): boolean;
@@ -42,6 +31,7 @@ export declare class RecursiveSet<T> {
42
31
  add(element: T): this;
43
32
  remove(element: T): this;
44
33
  clear(): this;
34
+ mutableCopy(): RecursiveSet<T>;
45
35
  clone(): RecursiveSet<T>;
46
36
  union(other: RecursiveSet<T>): RecursiveSet<T>;
47
37
  intersection(other: RecursiveSet<T>): RecursiveSet<T>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAmHH;;;GAGG;AACH,qBAAa,KAAK,CAAC,CAAC,SAAS,OAAO,EAAE;IAClC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACnB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAEd,GAAG,MAAM,EAAE,CAAC;IAKxB,IAAI,MAAM,WAAiC;IAC3C,GAAG,CAAC,CAAC,EAAE,MAAM;IACZ,CAAC,MAAM,CAAC,QAAQ,CAAC;IAClB,QAAQ;CAEX;AAED;;;GAGG;AACH,qBAAa,YAAY,CAAC,CAAC;IACvB;;OAEG;IACI,SAAS,EAAE,CAAC,EAAE,CAAC;IACtB,OAAO,CAAC,SAAS,CAAuB;IAExC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM;gBAElC,GAAG,QAAQ,EAAE,CAAC,EAAE;IAW5B,OAAO,CAAC,OAAO;IAcf;;;OAGG;IACH,IAAI,QAAQ,IAAI,MAAM,CAWrB;IAGD,WAAW;IAEX,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM;IAoBvC,IAAI,IAAI,IAAI,MAAM,CAAkC;IACpD,OAAO,IAAI,OAAO;IAElB,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,OAAO;IAuBxB,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI;IAkErB,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI;IA8BxB,KAAK,IAAI,IAAI;IAMb,KAAK,IAAI,YAAY,CAAC,CAAC,CAAC;IAOxB,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IA0B9C,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IAkBrD,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IAmBnD,mBAAmB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IAoB5D,QAAQ,IAAI,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAgBzC,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAcxE,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO;IAazC,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO;IAC3C,cAAc,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO;IAC/C,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO;IACvC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC;IACd,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;IAEjC,QAAQ,IAAI,MAAM;CAUrB;AAED,wBAAgB,QAAQ,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,CAAkC;AAChF,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAyC;AAClG,wBAAgB,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAA6C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAsGH,qBAAa,KAAK,CAAC,CAAC,SAAS,OAAO,EAAE;IAClC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACnB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAEd,GAAG,MAAM,EAAE,CAAC;IAKxB,IAAI,MAAM,WAAiC;IAC3C,GAAG,CAAC,CAAC,EAAE,MAAM;IACZ,CAAC,MAAM,CAAC,QAAQ,CAAC;IAClB,QAAQ;CAEX;AAED,qBAAa,YAAY,CAAC,CAAC;IAChB,SAAS,EAAE,CAAC,EAAE,CAAC;IACtB,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,SAAS,CAAkB;IAEnC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM;gBAElC,GAAG,QAAQ,EAAE,CAAC,EAAE;IAW5B,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,OAAO;IAcf;;OAEG;IACH,IAAI,QAAQ,IAAI,MAAM,CAYrB;IAED,IAAI,QAAQ,IAAI,OAAO,CAA2B;IAElD,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM;IAoBvC,IAAI,IAAI,IAAI,MAAM,CAAkC;IACpD,OAAO,IAAI,OAAO;IAElB,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,OAAO;IAwBxB,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI;IAgErB,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI;IAgCxB,KAAK,IAAI,IAAI;IAOb,WAAW,IAAI,YAAY,CAAC,CAAC,CAAC;IAM9B,KAAK,IAAI,YAAY,CAAC,CAAC,CAAC;IAExB,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IAyB9C,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IAkBrD,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IAmBnD,mBAAmB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IAoB5D,QAAQ,IAAI,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAgBzC,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAaxE,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO;IAazC,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO;IAC3C,cAAc,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO;IAC/C,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO;IACvC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC;IACd,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;IAEjC,QAAQ,IAAI,MAAM;CAUrB;AAED,wBAAgB,QAAQ,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,CAAkC;AAChF,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAyC;AAClG,wBAAgB,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAA6C"}
package/dist/esm/index.js CHANGED
@@ -1,96 +1,78 @@
1
1
  /**
2
2
  * @module recursive-set
3
- * High-Performance Mutable Recursive Set backed by Sorted Arrays.
4
- * Optimized for small sets, structural equality, and deterministic hashing.
5
- */
6
- // === HASHING ENGINE ===
7
- /**
8
- * FNV-1a Hash implementation for strings.
9
- * Constants inlined for V8 optimization.
3
+ * High-Performance Recursive Set with "Freeze-on-Hash" semantics.
10
4
  */
5
+ // === HASHING ENGINE (FNV-1a) ===
6
+ const FNV_PRIME = 16777619;
7
+ const FNV_OFFSET = 2166136261;
11
8
  function hashString(str) {
12
- let hash = 0x811c9dc5;
13
- for (let i = 0; i < str.length; i++) {
9
+ let hash = FNV_OFFSET;
10
+ const len = str.length;
11
+ for (let i = 0; i < len; i++) {
14
12
  hash ^= str.charCodeAt(i);
15
- hash = Math.imul(hash, 0x01000193);
13
+ hash = Math.imul(hash, FNV_PRIME);
16
14
  }
17
15
  return hash >>> 0;
18
16
  }
19
- /**
20
- * Universal Hash Function.
21
- * Calculates deterministic hashes for Primitives, Sequences (Order Dependent), and Sets.
22
- */
23
17
  function hashValue(val) {
24
18
  if (typeof val === 'string')
25
19
  return hashString(val);
26
- if (typeof val === 'number')
27
- return val | 0;
20
+ if (typeof val === 'number') {
21
+ let hash = FNV_OFFSET;
22
+ hash ^= (val | 0);
23
+ hash = Math.imul(hash, FNV_PRIME);
24
+ return hash >>> 0;
25
+ }
28
26
  // Fast Path: Objects with cached hash
29
- if (val instanceof RecursiveSet)
27
+ if (val && typeof val === 'object' && 'hashCode' in val) {
30
28
  return val.hashCode;
31
- if (val instanceof Tuple)
32
- return val.hashCode;
33
- // Arrays: Treated as sequences (Rolling Hash)
29
+ }
34
30
  if (Array.isArray(val)) {
35
- let h = 0;
36
- for (let i = 0; i < val.length; i++) {
37
- let v = val[i];
38
- let vh = 0;
39
- if (typeof v === 'string')
40
- vh = hashString(v);
41
- else
42
- vh = hashValue(v);
43
- h = Math.imul(31, h) + vh;
31
+ let h = FNV_OFFSET;
32
+ const len = val.length;
33
+ for (let i = 0; i < len; i++) {
34
+ h ^= hashValue(val[i]);
35
+ h = Math.imul(h, FNV_PRIME);
44
36
  }
45
37
  return h >>> 0;
46
38
  }
47
39
  return 0;
48
40
  }
49
41
  // === COMPARATOR ===
50
- /**
51
- * High-performance comparator with hash short-circuiting.
52
- * Order: Primitives (0) < Sequences (1) < Sets (2)
53
- */
54
42
  function compare(a, b) {
55
43
  if (a === b)
56
44
  return 0;
57
- // 1. Hash Short-Circuit
58
- // Using interface casting avoids runtime overhead of 'in' operator checks
45
+ // 1. Hash Short-Circuit (Optimization)
59
46
  const aH = a?.hashCode;
60
47
  const bH = b?.hashCode;
61
48
  const ha = (aH !== undefined) ? aH : hashValue(a);
62
49
  const hb = (bH !== undefined) ? bH : hashValue(b);
63
50
  if (ha !== hb)
64
51
  return ha < hb ? -1 : 1;
65
- // 2. Primitive Value Check
52
+ // 2. Structural Type Check
66
53
  const typeA = typeof a;
67
54
  const typeB = typeof b;
68
55
  if (typeA === 'string' && typeB === 'string')
69
56
  return a < b ? -1 : 1;
70
57
  if (typeA === 'number' && typeB === 'number')
71
58
  return a < b ? -1 : 1;
72
- // 3. Structural Type Check
73
59
  const isSetA = a instanceof RecursiveSet;
74
60
  const isSetB = b instanceof RecursiveSet;
75
61
  if (isSetA && isSetB) {
76
62
  return a.compare(b);
77
63
  }
78
- const isArrA = Array.isArray(a);
79
- const isArrB = Array.isArray(b);
80
- const isTupA = a instanceof Tuple;
81
- const isTupB = b instanceof Tuple;
82
- const isSeqA = isArrA || isTupA;
83
- const isSeqB = isArrB || isTupB;
84
- // Sort by Type Group if types differ
64
+ const isSeqA = Array.isArray(a) || a instanceof Tuple;
65
+ const isSeqB = Array.isArray(b) || b instanceof Tuple;
66
+ // Sort Order: Primitives (0) < Sequences (1) < Sets (2)
85
67
  if (isSetA !== isSetB || isSeqA !== isSeqB) {
86
68
  const scoreA = isSetA ? 2 : isSeqA ? 1 : 0;
87
69
  const scoreB = isSetB ? 2 : isSeqB ? 1 : 0;
88
70
  return scoreA - scoreB;
89
71
  }
90
- // 4. Sequence Comparison (Array/Tuple)
72
+ // 3. Sequence Comparison
91
73
  if (isSeqA && isSeqB) {
92
- const valA = isTupA ? a.values : a;
93
- const valB = isTupB ? b.values : b;
74
+ const valA = (a instanceof Tuple) ? a.values : a;
75
+ const valB = (b instanceof Tuple) ? b.values : b;
94
76
  const len = valA.length;
95
77
  if (len !== valB.length)
96
78
  return len - valB.length;
@@ -101,14 +83,9 @@ function compare(a, b) {
101
83
  }
102
84
  return 0;
103
85
  }
104
- // Fallback for safe types
105
86
  return a < b ? -1 : 1;
106
87
  }
107
88
  // === CLASSES ===
108
- /**
109
- * Immutable wrapper for sequence values.
110
- * Useful when strict typing for sequences is required.
111
- */
112
89
  export class Tuple {
113
90
  values;
114
91
  hashCode;
@@ -122,16 +99,10 @@ export class Tuple {
122
99
  toString() { return `(${this.values.join(', ')})`; }
123
100
  [Symbol.for('nodejs.util.inspect.custom')]() { return this.toString(); }
124
101
  }
125
- /**
126
- * A Set implementation that supports deep structural equality and efficient hashing.
127
- * Internally backed by a sorted array for optimal CPU cache locality on small sets.
128
- */
129
102
  export class RecursiveSet {
130
- /**
131
- * Internal storage. Public for inlining access within the module, but treated as private API.
132
- */
133
103
  _elements;
134
104
  _hashCode = null;
105
+ _isFrozen = false;
135
106
  static compare(a, b) { return compare(a, b); }
136
107
  constructor(...elements) {
137
108
  if (elements.length === 0) {
@@ -144,6 +115,13 @@ export class RecursiveSet {
144
115
  this._unique();
145
116
  }
146
117
  }
118
+ _checkFrozen(op) {
119
+ if (this._isFrozen) {
120
+ throw new Error(`InvalidOperation: Cannot ${op} a frozen RecursiveSet.\n` +
121
+ `This Set has been hashed or used in a collection (Value Semantics).\n` +
122
+ `Use .mutableCopy() to create a modifiable copy.`);
123
+ }
124
+ }
147
125
  _unique() {
148
126
  const arr = this._elements;
149
127
  const len = arr.length;
@@ -158,8 +136,7 @@ export class RecursiveSet {
158
136
  arr.length = write;
159
137
  }
160
138
  /**
161
- * Calculates the hash code for the set.
162
- * Uses a rolling hash over sorted elements, ensuring determinstic results for equal sets.
139
+ * Calculates/Caches hash code and FREEZES the set.
163
140
  */
164
141
  get hashCode() {
165
142
  if (this._hashCode !== null)
@@ -171,10 +148,10 @@ export class RecursiveSet {
171
148
  h = Math.imul(31, h) + hashValue(arr[i]);
172
149
  }
173
150
  this._hashCode = h | 0;
151
+ this._isFrozen = true;
174
152
  return this._hashCode;
175
153
  }
176
- // Backward compatibility alias
177
- getHashCode() { return this.hashCode; }
154
+ get isFrozen() { return this._isFrozen; }
178
155
  compare(other) {
179
156
  if (this === other)
180
157
  return 0;
@@ -199,7 +176,7 @@ export class RecursiveSet {
199
176
  has(element) {
200
177
  const arr = this._elements;
201
178
  const len = arr.length;
202
- // Small Array Optimization: Linear Scan is faster than Binary Search overhead for N < 16
179
+ // Linear Scan (Prefetch-friendly for small sets)
203
180
  if (len < 16) {
204
181
  for (let i = 0; i < len; i++) {
205
182
  if (compare(arr[i], element) === 0)
@@ -207,6 +184,7 @@ export class RecursiveSet {
207
184
  }
208
185
  return false;
209
186
  }
187
+ // Binary Search
210
188
  let low = 0, high = len - 1;
211
189
  while (low <= high) {
212
190
  const mid = (low + high) >>> 1;
@@ -221,22 +199,19 @@ export class RecursiveSet {
221
199
  return false;
222
200
  }
223
201
  add(element) {
224
- // --- Validation Check ---
202
+ this._checkFrozen('add() to');
203
+ // Validation (Inlined for Performance)
225
204
  if (typeof element === 'object' && element !== null) {
226
- const isSet = element instanceof RecursiveSet;
227
- const isTup = element instanceof Tuple;
228
- const isArr = Array.isArray(element);
229
- if (!isSet && !isTup && !isArr) {
230
- throw new Error("Plain Objects are not supported. Use Tuple, Array or RecursiveSet.");
205
+ if (!(element instanceof RecursiveSet || element instanceof Tuple || Array.isArray(element))) {
206
+ throw new Error("Unsupported Type: Use Tuple, Array or RecursiveSet.");
231
207
  }
232
208
  }
233
- else if (typeof element === "number" && Number.isNaN(element)) {
209
+ else if (Number.isNaN(element)) {
234
210
  throw new Error("NaN is not supported");
235
211
  }
236
- // --- End Validation ---
237
212
  const arr = this._elements;
238
213
  const len = arr.length;
239
- // Common Case: Appending a larger element (during ordered construction)
214
+ // Optimization: Append to end (common in construction)
240
215
  if (len > 0) {
241
216
  const lastCmp = compare(arr[len - 1], element);
242
217
  if (lastCmp < 0) {
@@ -252,7 +227,7 @@ export class RecursiveSet {
252
227
  this._hashCode = null;
253
228
  return this;
254
229
  }
255
- // Small Array Strategy: Linear Scan + Splice
230
+ // Small Array Strategy
256
231
  if (len < 16) {
257
232
  for (let i = 0; i < len; i++) {
258
233
  const cmp = compare(arr[i], element);
@@ -264,9 +239,10 @@ export class RecursiveSet {
264
239
  return this;
265
240
  }
266
241
  }
242
+ arr.push(element); // Should be unreachable given append check, but safe fallback
267
243
  return this;
268
244
  }
269
- // Large Array Strategy: Binary Search
245
+ // Large Array Strategy
270
246
  let low = 0, high = len - 1, idx = 0;
271
247
  while (low <= high) {
272
248
  const mid = (low + high) >>> 1;
@@ -287,6 +263,7 @@ export class RecursiveSet {
287
263
  return this;
288
264
  }
289
265
  remove(element) {
266
+ this._checkFrozen('remove() from');
290
267
  const arr = this._elements;
291
268
  const len = arr.length;
292
269
  if (len < 16) {
@@ -316,16 +293,17 @@ export class RecursiveSet {
316
293
  return this;
317
294
  }
318
295
  clear() {
296
+ this._checkFrozen('clear()');
319
297
  this._elements = [];
320
298
  this._hashCode = 0;
321
299
  return this;
322
300
  }
323
- clone() {
301
+ mutableCopy() {
324
302
  const s = new RecursiveSet();
325
303
  s._elements = this._elements.slice();
326
- s._hashCode = this._hashCode;
327
304
  return s;
328
305
  }
306
+ clone() { return this.mutableCopy(); }
329
307
  union(other) {
330
308
  const s = new RecursiveSet();
331
309
  const arrA = this._elements;
@@ -337,7 +315,6 @@ export class RecursiveSet {
337
315
  const res = [];
338
316
  let i = 0, j = 0;
339
317
  const lenA = arrA.length, lenB = arrB.length;
340
- // Merge Sort Algorithm O(N + M)
341
318
  while (i < lenA && j < lenB) {
342
319
  const cmp = compare(arrA[i], arrB[j]);
343
320
  if (cmp < 0)
@@ -452,7 +429,6 @@ export class RecursiveSet {
452
429
  }
453
430
  return result;
454
431
  }
455
- // Standard Set methods
456
432
  isSubset(other) {
457
433
  if (this.size > other.size)
458
434
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "recursive-set",
3
- "version": "4.0.0",
3
+ "version": "5.0.1",
4
4
  "description": "Mutable recursive sets with ZFC axioms for TypeScript",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "types": "./dist/esm/index.d.ts",