@igorjs/pure-ts 0.7.4 → 0.7.7
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 +39 -745
- package/dist/async/cache.d.ts +1 -6
- package/dist/async/cache.d.ts.map +1 -1
- package/dist/async/cache.js.map +1 -1
- package/dist/async/circuit-breaker.d.ts +1 -6
- package/dist/async/circuit-breaker.d.ts.map +1 -1
- package/dist/async/circuit-breaker.js.map +1 -1
- package/dist/async/index.d.ts +56 -12
- package/dist/async/index.d.ts.map +1 -1
- package/dist/async/index.js +41 -12
- package/dist/async/index.js.map +1 -1
- package/dist/async/lazy.d.ts +6 -42
- package/dist/async/lazy.d.ts.map +1 -1
- package/dist/async/lazy.js.map +1 -1
- package/dist/async/pool.d.ts +1 -5
- package/dist/async/pool.d.ts.map +1 -1
- package/dist/async/pool.js +3 -3
- package/dist/async/pool.js.map +1 -1
- package/dist/async/rate-limiter.d.ts +1 -6
- package/dist/async/rate-limiter.d.ts.map +1 -1
- package/dist/async/rate-limiter.js.map +1 -1
- package/dist/async/retry.d.ts +7 -9
- package/dist/async/retry.d.ts.map +1 -1
- package/dist/async/retry.js.map +1 -1
- package/dist/async/semaphore.d.ts +2 -7
- package/dist/async/semaphore.d.ts.map +1 -1
- package/dist/async/semaphore.js.map +1 -1
- package/dist/async/stream.d.ts +1 -5
- package/dist/async/stream.d.ts.map +1 -1
- package/dist/async/stream.js +6 -6
- package/dist/async/stream.js.map +1 -1
- package/dist/async/task-like.d.ts +30 -0
- package/dist/async/task-like.d.ts.map +1 -0
- package/dist/async/task-like.js +13 -0
- package/dist/async/task-like.js.map +1 -0
- package/dist/async/task.d.ts +8 -62
- package/dist/async/task.d.ts.map +1 -1
- package/dist/async/task.js +1 -1
- package/dist/async/task.js.map +1 -1
- package/dist/async/timer.d.ts +1 -6
- package/dist/async/timer.d.ts.map +1 -1
- package/dist/async/timer.js +4 -4
- package/dist/async/timer.js.map +1 -1
- package/dist/client.d.ts +6 -7
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +2 -2
- package/dist/client.js.map +1 -1
- package/dist/core/index.d.ts +21 -9
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +21 -9
- package/dist/core/index.js.map +1 -1
- package/dist/core/option.d.ts +26 -68
- package/dist/core/option.d.ts.map +1 -1
- package/dist/core/option.js +7 -20
- package/dist/core/option.js.map +1 -1
- package/dist/core/pipe.d.ts +13 -0
- package/dist/core/pipe.d.ts.map +1 -1
- package/dist/core/pipe.js.map +1 -1
- package/dist/core/result.d.ts +45 -90
- package/dist/core/result.d.ts.map +1 -1
- package/dist/core/result.js +9 -65
- package/dist/core/result.js.map +1 -1
- package/dist/data/adt.d.ts +1 -2
- package/dist/data/adt.d.ts.map +1 -1
- package/dist/data/codec.d.ts +4 -3
- package/dist/data/codec.d.ts.map +1 -1
- package/dist/data/codec.js.map +1 -1
- package/dist/data/index.d.ts +24 -5
- package/dist/data/index.d.ts.map +1 -1
- package/dist/data/index.js +11 -3
- package/dist/data/index.js.map +1 -1
- package/dist/data/internals.d.ts +2 -2
- package/dist/data/internals.d.ts.map +1 -1
- package/dist/data/list.d.ts +1 -1
- package/dist/data/non-empty-list.d.ts +1 -1
- package/dist/data/record.d.ts +1 -2
- package/dist/data/record.d.ts.map +1 -1
- package/dist/data/record.js.map +1 -1
- package/dist/data/stable-vec.d.ts +116 -0
- package/dist/data/stable-vec.d.ts.map +1 -0
- package/dist/data/stable-vec.js +184 -0
- package/dist/data/stable-vec.js.map +1 -0
- package/dist/index.d.ts +162 -49
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/io/compression.d.ts +1 -6
- package/dist/io/compression.d.ts.map +1 -1
- package/dist/io/compression.js +3 -3
- package/dist/io/compression.js.map +1 -1
- package/dist/io/crypto.d.ts +1 -5
- package/dist/io/crypto.d.ts.map +1 -1
- package/dist/io/crypto.js +2 -2
- package/dist/io/crypto.js.map +1 -1
- package/dist/io/dns.d.ts +3 -7
- package/dist/io/dns.d.ts.map +1 -1
- package/dist/io/dns.js +3 -3
- package/dist/io/dns.js.map +1 -1
- package/dist/io/file.d.ts +1 -5
- package/dist/io/file.d.ts.map +1 -1
- package/dist/io/file.js +13 -13
- package/dist/io/file.js.map +1 -1
- package/dist/io/index.d.ts +36 -11
- package/dist/io/index.d.ts.map +1 -1
- package/dist/io/index.js +26 -10
- package/dist/io/index.js.map +1 -1
- package/dist/io/net.d.ts +1 -6
- package/dist/io/net.d.ts.map +1 -1
- package/dist/io/net.js +6 -6
- package/dist/io/net.js.map +1 -1
- package/dist/io/subprocess.d.ts +1 -6
- package/dist/io/subprocess.d.ts.map +1 -1
- package/dist/io/subprocess.js +4 -4
- package/dist/io/subprocess.js.map +1 -1
- package/dist/program.d.ts +137 -25
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +23 -5
- package/dist/program.js.map +1 -1
- package/dist/runtime/config.d.ts +4 -5
- package/dist/runtime/config.d.ts.map +1 -1
- package/dist/runtime/index.d.ts +23 -2
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +7 -2
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/logger.d.ts +22 -6
- package/dist/runtime/logger.d.ts.map +1 -1
- package/dist/runtime/logger.js.map +1 -1
- package/dist/runtime/platform.d.ts +2 -2
- package/dist/runtime/platform.d.ts.map +1 -1
- package/dist/runtime/platform.js.map +1 -1
- package/dist/runtime/process.d.ts +4 -2
- package/dist/runtime/process.d.ts.map +1 -1
- package/dist/runtime/process.js.map +1 -1
- package/dist/types/error.d.ts +34 -61
- package/dist/types/error.d.ts.map +1 -1
- package/dist/types/error.js.map +1 -1
- package/dist/types/index.d.ts +15 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +4 -2
- package/dist/types/index.js.map +1 -1
- package/dist/types/nominal.d.ts +1 -3
- package/dist/types/nominal.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module stable-vec
|
|
3
|
+
*
|
|
4
|
+
* A dense, index-stable collection backed by typed arrays.
|
|
5
|
+
*
|
|
6
|
+
* Standard arrays invalidate indices when elements are removed (splice
|
|
7
|
+
* shifts everything after the gap). StableVec solves this by assigning
|
|
8
|
+
* each element a **handle** — a (index, generation) pair that remains
|
|
9
|
+
* valid even after other elements are inserted or removed.
|
|
10
|
+
*
|
|
11
|
+
* Internally, data is kept contiguous: removal swaps the target with the
|
|
12
|
+
* last element, keeping the backing store dense for cache-friendly iteration.
|
|
13
|
+
* A generation counter per slot detects stale handles (use-after-free).
|
|
14
|
+
* Freed slots are reused via an implicit free list.
|
|
15
|
+
*
|
|
16
|
+
* **Time complexities:**
|
|
17
|
+
* - `insert`: O(1) amortized
|
|
18
|
+
* - `remove`: O(1) — swap-with-last
|
|
19
|
+
* - `get` by handle: O(1) — one indirection + generation check
|
|
20
|
+
* - `iterate`: O(n) over dense data, no gaps
|
|
21
|
+
*
|
|
22
|
+
* **When to use:**
|
|
23
|
+
* - Long-lived collections with frequent insert/remove
|
|
24
|
+
* - External code holds handles that must survive mutations
|
|
25
|
+
* - Cache-friendly iteration matters (game loops, simulations, ECS)
|
|
26
|
+
*
|
|
27
|
+
* **When NOT to use:**
|
|
28
|
+
* - Short-lived, process-once arrays (just use a plain array)
|
|
29
|
+
* - Ordered collections (removal reorders via swap)
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```ts
|
|
33
|
+
* const vec = StableVec.create<{ x: number; y: number }>();
|
|
34
|
+
* const h1 = vec.insert({ x: 1, y: 2 });
|
|
35
|
+
* const h2 = vec.insert({ x: 3, y: 4 });
|
|
36
|
+
*
|
|
37
|
+
* vec.get(h1); // Some({ x: 1, y: 2 })
|
|
38
|
+
* vec.remove(h1); // true
|
|
39
|
+
* vec.get(h1); // None (handle invalidated)
|
|
40
|
+
* vec.isValid(h1); // false
|
|
41
|
+
*
|
|
42
|
+
* // Dense iteration — no gaps
|
|
43
|
+
* for (const item of vec) {
|
|
44
|
+
* console.log(item.x, item.y);
|
|
45
|
+
* }
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
import type { Option } from "../core/option.js";
|
|
49
|
+
/**
|
|
50
|
+
* An opaque reference to an element in a {@link StableVec}.
|
|
51
|
+
*
|
|
52
|
+
* Handles are cheap to copy (two numbers) and safe to hold long-term.
|
|
53
|
+
* A handle becomes invalid when the element it points to is removed;
|
|
54
|
+
* subsequent `get`/`remove` calls return `None`/`false`.
|
|
55
|
+
*/
|
|
56
|
+
export interface Handle {
|
|
57
|
+
/** Slot index in the indirection table. */
|
|
58
|
+
readonly index: number;
|
|
59
|
+
/** Generation at the time of insertion. Mismatches mean the slot was reused. */
|
|
60
|
+
readonly generation: number;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* A dense, index-stable collection.
|
|
64
|
+
*
|
|
65
|
+
* Elements are stored contiguously for cache-friendly iteration. Handles
|
|
66
|
+
* (index + generation) provide O(1) access that survives mutations.
|
|
67
|
+
*/
|
|
68
|
+
export interface StableVec<T> extends Iterable<T> {
|
|
69
|
+
/** Number of live elements. */
|
|
70
|
+
readonly length: number;
|
|
71
|
+
/** Number of allocated slots (including free slots available for reuse). */
|
|
72
|
+
readonly capacity: number;
|
|
73
|
+
/** Insert an element and return its stable handle. O(1) amortized. */
|
|
74
|
+
insert(value: T): Handle;
|
|
75
|
+
/**
|
|
76
|
+
* Remove the element referenced by `handle`. O(1).
|
|
77
|
+
*
|
|
78
|
+
* Returns `true` if the element was removed, `false` if the handle
|
|
79
|
+
* was already invalid (stale generation or out of range).
|
|
80
|
+
*/
|
|
81
|
+
remove(handle: Handle): boolean;
|
|
82
|
+
/** Retrieve the element by handle. O(1). Returns `None` for stale handles. */
|
|
83
|
+
get(handle: Handle): Option<T>;
|
|
84
|
+
/** Check whether a handle still points to a live element. O(1). */
|
|
85
|
+
isValid(handle: Handle): boolean;
|
|
86
|
+
/** Remove all elements. Slots are freed for reuse. */
|
|
87
|
+
clear(): void;
|
|
88
|
+
/** Iterate over all live elements in dense order (no gaps). */
|
|
89
|
+
[Symbol.iterator](): Iterator<T>;
|
|
90
|
+
/** Iterate over (handle, value) pairs. */
|
|
91
|
+
entries(): Iterable<[Handle, T]>;
|
|
92
|
+
/**
|
|
93
|
+
* Apply `fn` to each live element. Faster than `for..of` because it
|
|
94
|
+
* avoids iterator protocol overhead.
|
|
95
|
+
*/
|
|
96
|
+
forEach(fn: (value: T, handle: Handle) => void): void;
|
|
97
|
+
/** Return all live elements as a plain array (snapshot, not a view). */
|
|
98
|
+
toArray(): T[];
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Dense, index-stable collection with O(1) insert, remove, and access.
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* ```ts
|
|
105
|
+
* const vec = StableVec.create<string>();
|
|
106
|
+
* const h = vec.insert("hello");
|
|
107
|
+
* vec.get(h); // Some("hello")
|
|
108
|
+
* vec.remove(h);
|
|
109
|
+
* vec.get(h); // None
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
112
|
+
export declare const StableVec: {
|
|
113
|
+
/** Create an empty StableVec. */
|
|
114
|
+
readonly create: <T>() => StableVec<T>;
|
|
115
|
+
};
|
|
116
|
+
//# sourceMappingURL=stable-vec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stable-vec.d.ts","sourceRoot":"","sources":["../../src/data/stable-vec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAKhD;;;;;;GAMG;AACH,MAAM,WAAW,MAAM;IACrB,2CAA2C;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,gFAAgF;IAChF,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAoBD;;;;;GAKG;AACH,MAAM,WAAW,SAAS,CAAC,CAAC,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;IAC/C,+BAA+B;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,4EAA4E;IAC5E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B,sEAAsE;IACtE,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC;IAEzB;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAEhC,8EAA8E;IAC9E,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAE/B,mEAAmE;IACnE,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAEjC,sDAAsD;IACtD,KAAK,IAAI,IAAI,CAAC;IAEd,+DAA+D;IAC/D,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEjC,0CAA0C;IAC1C,OAAO,IAAI,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IAEjC;;;OAGG;IACH,OAAO,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAEtD,wEAAwE;IACxE,OAAO,IAAI,CAAC,EAAE,CAAC;CAChB;AAgJD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,SAAS,EAAE;IACtB,iCAAiC;IACjC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;CAGxC,CAAC"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module stable-vec
|
|
3
|
+
*
|
|
4
|
+
* A dense, index-stable collection backed by typed arrays.
|
|
5
|
+
*
|
|
6
|
+
* Standard arrays invalidate indices when elements are removed (splice
|
|
7
|
+
* shifts everything after the gap). StableVec solves this by assigning
|
|
8
|
+
* each element a **handle** — a (index, generation) pair that remains
|
|
9
|
+
* valid even after other elements are inserted or removed.
|
|
10
|
+
*
|
|
11
|
+
* Internally, data is kept contiguous: removal swaps the target with the
|
|
12
|
+
* last element, keeping the backing store dense for cache-friendly iteration.
|
|
13
|
+
* A generation counter per slot detects stale handles (use-after-free).
|
|
14
|
+
* Freed slots are reused via an implicit free list.
|
|
15
|
+
*
|
|
16
|
+
* **Time complexities:**
|
|
17
|
+
* - `insert`: O(1) amortized
|
|
18
|
+
* - `remove`: O(1) — swap-with-last
|
|
19
|
+
* - `get` by handle: O(1) — one indirection + generation check
|
|
20
|
+
* - `iterate`: O(n) over dense data, no gaps
|
|
21
|
+
*
|
|
22
|
+
* **When to use:**
|
|
23
|
+
* - Long-lived collections with frequent insert/remove
|
|
24
|
+
* - External code holds handles that must survive mutations
|
|
25
|
+
* - Cache-friendly iteration matters (game loops, simulations, ECS)
|
|
26
|
+
*
|
|
27
|
+
* **When NOT to use:**
|
|
28
|
+
* - Short-lived, process-once arrays (just use a plain array)
|
|
29
|
+
* - Ordered collections (removal reorders via swap)
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```ts
|
|
33
|
+
* const vec = StableVec.create<{ x: number; y: number }>();
|
|
34
|
+
* const h1 = vec.insert({ x: 1, y: 2 });
|
|
35
|
+
* const h2 = vec.insert({ x: 3, y: 4 });
|
|
36
|
+
*
|
|
37
|
+
* vec.get(h1); // Some({ x: 1, y: 2 })
|
|
38
|
+
* vec.remove(h1); // true
|
|
39
|
+
* vec.get(h1); // None (handle invalidated)
|
|
40
|
+
* vec.isValid(h1); // false
|
|
41
|
+
*
|
|
42
|
+
* // Dense iteration — no gaps
|
|
43
|
+
* for (const item of vec) {
|
|
44
|
+
* console.log(item.x, item.y);
|
|
45
|
+
* }
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
import { None, Some } from "../core/option.js";
|
|
49
|
+
// ── Factory ─────────────────────────────────────────────────
|
|
50
|
+
function createStableVec() {
|
|
51
|
+
// Dense storage: data[i] and meta[i] are paired by position.
|
|
52
|
+
const data = [];
|
|
53
|
+
const meta = [];
|
|
54
|
+
// Indirection table: slots[handle.index] → dataIndex + generation.
|
|
55
|
+
const slots = [];
|
|
56
|
+
// Free list: indices of slots whose data was removed and can be reused.
|
|
57
|
+
const freeSlots = [];
|
|
58
|
+
function allocSlot() {
|
|
59
|
+
if (freeSlots.length > 0) {
|
|
60
|
+
return freeSlots.pop();
|
|
61
|
+
}
|
|
62
|
+
const idx = slots.length;
|
|
63
|
+
slots.push({ dataIndex: -1, generation: 0 });
|
|
64
|
+
return idx;
|
|
65
|
+
}
|
|
66
|
+
function resolveSlot(handle) {
|
|
67
|
+
const slot = slots[handle.index];
|
|
68
|
+
if (!slot)
|
|
69
|
+
return undefined;
|
|
70
|
+
if (slot.generation !== handle.generation)
|
|
71
|
+
return undefined;
|
|
72
|
+
if (slot.dataIndex < 0)
|
|
73
|
+
return undefined;
|
|
74
|
+
return slot;
|
|
75
|
+
}
|
|
76
|
+
const vec = {
|
|
77
|
+
get length() {
|
|
78
|
+
return data.length;
|
|
79
|
+
},
|
|
80
|
+
get capacity() {
|
|
81
|
+
return slots.length;
|
|
82
|
+
},
|
|
83
|
+
insert(value) {
|
|
84
|
+
const slotIdx = allocSlot();
|
|
85
|
+
const slot = slots[slotIdx];
|
|
86
|
+
const dataIdx = data.length;
|
|
87
|
+
data.push(value);
|
|
88
|
+
meta.push({ slotIndex: slotIdx });
|
|
89
|
+
slot.dataIndex = dataIdx;
|
|
90
|
+
return { index: slotIdx, generation: slot.generation };
|
|
91
|
+
},
|
|
92
|
+
remove(handle) {
|
|
93
|
+
const slot = resolveSlot(handle);
|
|
94
|
+
if (!slot)
|
|
95
|
+
return false;
|
|
96
|
+
const removeIdx = slot.dataIndex;
|
|
97
|
+
const lastIdx = data.length - 1;
|
|
98
|
+
if (removeIdx !== lastIdx) {
|
|
99
|
+
// Swap with last element to keep data dense.
|
|
100
|
+
data[removeIdx] = data[lastIdx];
|
|
101
|
+
meta[removeIdx] = meta[lastIdx];
|
|
102
|
+
// Update the swapped element's slot to point to its new position.
|
|
103
|
+
const swappedSlotIdx = meta[removeIdx].slotIndex;
|
|
104
|
+
slots[swappedSlotIdx].dataIndex = removeIdx;
|
|
105
|
+
}
|
|
106
|
+
data.pop();
|
|
107
|
+
meta.pop();
|
|
108
|
+
// Invalidate the removed slot: bump generation, mark free.
|
|
109
|
+
slot.dataIndex = -1;
|
|
110
|
+
slot.generation++;
|
|
111
|
+
freeSlots.push(handle.index);
|
|
112
|
+
return true;
|
|
113
|
+
},
|
|
114
|
+
get(handle) {
|
|
115
|
+
const slot = resolveSlot(handle);
|
|
116
|
+
if (!slot)
|
|
117
|
+
return None;
|
|
118
|
+
const value = data[slot.dataIndex];
|
|
119
|
+
return value !== undefined ? Some(value) : None;
|
|
120
|
+
},
|
|
121
|
+
isValid(handle) {
|
|
122
|
+
return resolveSlot(handle) !== undefined;
|
|
123
|
+
},
|
|
124
|
+
clear() {
|
|
125
|
+
for (let i = 0; i < slots.length; i++) {
|
|
126
|
+
const slot = slots[i];
|
|
127
|
+
if (slot.dataIndex >= 0) {
|
|
128
|
+
slot.dataIndex = -1;
|
|
129
|
+
slot.generation++;
|
|
130
|
+
freeSlots.push(i);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
data.length = 0;
|
|
134
|
+
meta.length = 0;
|
|
135
|
+
},
|
|
136
|
+
[Symbol.iterator]() {
|
|
137
|
+
let i = 0;
|
|
138
|
+
return {
|
|
139
|
+
next() {
|
|
140
|
+
if (i < data.length) {
|
|
141
|
+
return { done: false, value: data[i++] };
|
|
142
|
+
}
|
|
143
|
+
return { done: true, value: undefined };
|
|
144
|
+
},
|
|
145
|
+
};
|
|
146
|
+
},
|
|
147
|
+
*entries() {
|
|
148
|
+
for (let i = 0; i < data.length; i++) {
|
|
149
|
+
const m = meta[i];
|
|
150
|
+
const slot = slots[m.slotIndex];
|
|
151
|
+
const handle = { index: m.slotIndex, generation: slot.generation };
|
|
152
|
+
yield [handle, data[i]];
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
forEach(fn) {
|
|
156
|
+
for (let i = 0; i < data.length; i++) {
|
|
157
|
+
const m = meta[i];
|
|
158
|
+
const slot = slots[m.slotIndex];
|
|
159
|
+
fn(data[i], { index: m.slotIndex, generation: slot.generation });
|
|
160
|
+
}
|
|
161
|
+
},
|
|
162
|
+
toArray() {
|
|
163
|
+
return data.slice();
|
|
164
|
+
},
|
|
165
|
+
};
|
|
166
|
+
return vec;
|
|
167
|
+
}
|
|
168
|
+
// ── Public namespace ────────────────────────────────────────
|
|
169
|
+
/**
|
|
170
|
+
* Dense, index-stable collection with O(1) insert, remove, and access.
|
|
171
|
+
*
|
|
172
|
+
* @example
|
|
173
|
+
* ```ts
|
|
174
|
+
* const vec = StableVec.create<string>();
|
|
175
|
+
* const h = vec.insert("hello");
|
|
176
|
+
* vec.get(h); // Some("hello")
|
|
177
|
+
* vec.remove(h);
|
|
178
|
+
* vec.get(h); // None
|
|
179
|
+
* ```
|
|
180
|
+
*/
|
|
181
|
+
export const StableVec = {
|
|
182
|
+
create: createStableVec,
|
|
183
|
+
};
|
|
184
|
+
//# sourceMappingURL=stable-vec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stable-vec.js","sourceRoot":"","sources":["../../src/data/stable-vec.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -44,9 +44,16 @@
|
|
|
44
44
|
*/
|
|
45
45
|
import type { Option, OptionMatcher } from "./core/option.js";
|
|
46
46
|
import type { Result, ResultMatcher } from "./core/result.js";
|
|
47
|
-
/**
|
|
48
|
-
|
|
49
|
-
/**
|
|
47
|
+
/** Absent variant of Option, representing no value. */
|
|
48
|
+
/** Discriminated union representing a value that may or may not exist. */
|
|
49
|
+
/** Pattern-match arms for Option.match. */
|
|
50
|
+
/** Present variant constructor: wrap a value in Option. */
|
|
51
|
+
export { None, type NoneVariant, Option, type OptionMatcher, Some, type SomeVariant, } from "./core/option.js";
|
|
52
|
+
/** Create a failed Result wrapping an error value. */
|
|
53
|
+
/** Create a successful Result wrapping a value. */
|
|
54
|
+
/** Discriminated union representing success (Ok) or failure (Err). */
|
|
55
|
+
/** Pattern-match arms for Result.match. */
|
|
56
|
+
/** Execute a function in try/catch, returning Result instead of throwing. */
|
|
50
57
|
export { Err, Ok, Result, type ResultMatcher, tryCatch } from "./core/result.js";
|
|
51
58
|
/**
|
|
52
59
|
* Universal pattern match for {@link Result} and {@link Option}.
|
|
@@ -62,111 +69,217 @@ export { Err, Ok, Result, type ResultMatcher, tryCatch } from "./core/result.js"
|
|
|
62
69
|
*/
|
|
63
70
|
/** Pattern match on a Result or Option, handling each variant. */
|
|
64
71
|
export declare function match<T, E, U>(value: Result<T, E>, matcher: ResultMatcher<T, E, U>): U;
|
|
72
|
+
/** Pattern match on an Option, handling Some and None variants. */
|
|
65
73
|
export declare function match<T, U>(value: Option<T>, matcher: OptionMatcher<T, U>): U;
|
|
66
|
-
/** In-memory cache with TTL and optional LRU eviction. */
|
|
74
|
+
/** In-memory cache namespace with TTL and optional LRU eviction. */
|
|
75
|
+
/** A cache instance with get, set, delete, and cache-aside operations. */
|
|
76
|
+
/** Configuration options for creating a Cache. */
|
|
67
77
|
export { Cache, type CacheInstance, type CacheOptions } from "./async/cache.js";
|
|
68
78
|
/** Async communication channel for producer-consumer patterns. */
|
|
69
79
|
export { Channel } from "./async/channel.js";
|
|
70
|
-
/** Circuit breaker
|
|
80
|
+
/** Circuit breaker namespace for protecting Tasks against cascading failures. */
|
|
81
|
+
/** A circuit breaker instance with protect, state, and reset operations. */
|
|
82
|
+
/** Configuration for a circuit breaker (thresholds and timeout). */
|
|
83
|
+
/** Error returned when the circuit is open and requests are rejected. */
|
|
84
|
+
/** The three states of a circuit breaker: closed, open, or half-open. */
|
|
71
85
|
export { CircuitBreaker, type CircuitBreakerInstance, type CircuitBreakerPolicy, CircuitOpen, type CircuitState, } from "./async/circuit-breaker.js";
|
|
72
|
-
/** Cron-scheduled task runner with
|
|
86
|
+
/** Cron-scheduled task runner namespace with start/stop lifecycle. */
|
|
87
|
+
/** A running cron job instance with start and stop controls. */
|
|
88
|
+
/** Configuration for creating a CronRunner (schedule, handler, options). */
|
|
73
89
|
export { CronRunner, type CronRunnerInstance, type CronRunnerOptions, } from "./async/cron-runner.js";
|
|
74
90
|
/** Reader-style dependency injection for async computations. */
|
|
75
91
|
export { Env } from "./async/env.js";
|
|
76
|
-
/** Type-safe event emitter with typed event maps. */
|
|
92
|
+
/** Type-safe event emitter namespace with typed event maps. */
|
|
93
|
+
/** A type-safe event emitter instance with on, off, and emit operations. */
|
|
77
94
|
export { EventEmitter, type EventEmitterInstance } from "./async/event-emitter.js";
|
|
78
95
|
/** Deferred evaluation that computes a value at most once. */
|
|
79
96
|
export { Lazy } from "./async/lazy.js";
|
|
80
|
-
/** Generic resource pool with idle timeout and health checks. */
|
|
97
|
+
/** Generic resource pool namespace with idle timeout and health checks. */
|
|
98
|
+
/** Error returned when a pool operation fails. */
|
|
99
|
+
/** A resource checked out from the pool with value and release handle. */
|
|
100
|
+
/** A resource pool instance with acquire, release, use, and drain operations. */
|
|
101
|
+
/** Configuration for creating a resource pool (factory, size, timeout). */
|
|
81
102
|
export { Pool, PoolError, type PooledResource, type PoolInstance, type PoolOptions, } from "./async/pool.js";
|
|
82
|
-
/**
|
|
103
|
+
/** A queued job with id, data, priority, and creation timestamp. */
|
|
104
|
+
/** Async job queue namespace with concurrency control. */
|
|
105
|
+
/** A queue instance with push, pause, resume, and drain operations. */
|
|
106
|
+
/** Configuration for creating a Queue (concurrency, handler, options). */
|
|
83
107
|
export { type Job, Queue, type QueueInstance, type QueueOptions } from "./async/queue.js";
|
|
84
|
-
/**
|
|
108
|
+
/** Error returned when the rate limit is exceeded. */
|
|
109
|
+
/** Token-bucket rate limiter namespace for throttling operations. */
|
|
110
|
+
/** A rate limiter instance with tryAcquire and wrap operations. */
|
|
111
|
+
/** Token bucket configuration (capacity, refill rate, refill interval). */
|
|
85
112
|
export { RateLimited, RateLimiter, type RateLimiterInstance, type RateLimiterPolicy, } from "./async/rate-limiter.js";
|
|
86
|
-
/** Configurable retry policy with backoff strategies. */
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
113
|
+
/** Configurable retry policy namespace with backoff strategies. */
|
|
114
|
+
/** An immutable retry policy describing how and when to retry. */
|
|
115
|
+
export { Retry, type RetryPolicy, } from "./async/retry.js";
|
|
116
|
+
/** Mutual exclusion lock allowing only one task at a time. */
|
|
117
|
+
/** A mutex instance with acquire and wrap operations. */
|
|
118
|
+
/** Counting semaphore namespace for concurrency control. */
|
|
119
|
+
/** A semaphore instance with acquire, wrap, available, and pending operations. */
|
|
120
|
+
/** A release function returned after acquiring a semaphore permit. */
|
|
121
|
+
export { Mutex, type MutexInstance, type Release, Semaphore, type SemaphoreInstance, } from "./async/semaphore.js";
|
|
122
|
+
/** Error returned when a state machine transition is invalid. */
|
|
90
123
|
/** Typed finite state machine with validated transitions. */
|
|
91
124
|
export { InvalidTransition, StateMachine } from "./async/state-machine.js";
|
|
92
125
|
/** Lazy async sequence with backpressure and ReadableStream bridge. */
|
|
93
126
|
export { Stream } from "./async/stream.js";
|
|
94
127
|
/** Lazy, composable async computation that returns Result on run. */
|
|
95
128
|
export { Task } from "./async/task.js";
|
|
96
|
-
/**
|
|
129
|
+
/** Shared structural interface for Task-shaped values with a `.run()` method. */
|
|
130
|
+
/** Create a TaskLike from a run function. */
|
|
131
|
+
export { makeTask, type TaskLike } from "./async/task-like.js";
|
|
132
|
+
/** Error returned when a deadline is exceeded. */
|
|
133
|
+
/** Timer namespace for sleep, interval, delay, and deadline operations. */
|
|
97
134
|
export { TimeoutError, Timer } from "./async/timer.js";
|
|
98
|
-
/** HTTP client built on Task with typed error variants. */
|
|
99
|
-
|
|
100
|
-
/**
|
|
135
|
+
/** HTTP client namespace built on Task with typed error variants. */
|
|
136
|
+
/** Union of all client error types (NetworkError, HttpError, ParseError). */
|
|
137
|
+
/** An HTTP client instance with get, post, put, patch, delete, and request methods. */
|
|
138
|
+
/** Configuration for creating a Client (baseUrl, headers, fetch). */
|
|
139
|
+
/** A typed HTTP response wrapper with status, headers, json, and text. */
|
|
140
|
+
/** Server returned a non-2xx status code. */
|
|
141
|
+
/** Network-level failure (DNS, timeout, connection refused). */
|
|
142
|
+
/** Response body could not be parsed (JSON, text, etc.). */
|
|
143
|
+
/** Request options for the HTTP client (headers, body, signal). */
|
|
144
|
+
export { Client, type ClientError, type ClientInstance, type ClientOptions, type ClientRequestOptions, type ClientResponse, HttpError, NetworkError, ParseError, } from "./client.js";
|
|
145
|
+
/** Typed equality comparison typeclass. */
|
|
101
146
|
export { Eq } from "./core/eq.js";
|
|
102
|
-
/**
|
|
147
|
+
/** Lossless bidirectional transformation between two types. */
|
|
148
|
+
/** Total optic for reading and updating a value that always exists in the source. */
|
|
149
|
+
/** Partial optic for reading and updating a value that may not exist in the source. */
|
|
150
|
+
/** Optic focusing on a variant of a sum type via getOption and reverseGet. */
|
|
151
|
+
/** Optic focusing on multiple targets within a data structure. */
|
|
103
152
|
export { Iso, Lens, LensOptional, Prism, Traversal } from "./core/lens.js";
|
|
104
|
-
/** Exhaustive pattern matching with compile-time coverage. */
|
|
153
|
+
/** Exhaustive pattern matching builder with compile-time coverage checking. */
|
|
105
154
|
export { Match } from "./core/match.js";
|
|
106
|
-
/** Typed ordering and comparison. */
|
|
155
|
+
/** Typed ordering and comparison typeclass. */
|
|
107
156
|
export { Ord } from "./core/ord.js";
|
|
108
|
-
/**
|
|
157
|
+
/** Compose functions left-to-right into a new function (point-free). */
|
|
158
|
+
/** Pass a value through a sequence of unary functions left-to-right. */
|
|
109
159
|
export { flow, pipe } from "./core/pipe.js";
|
|
110
|
-
/** Pure state monad for threading state through computations. */
|
|
160
|
+
/** Pure state monad for threading state through a sequence of computations. */
|
|
111
161
|
export { State } from "./core/state.js";
|
|
112
162
|
/** Algebraic data type constructor with exhaustive matching. */
|
|
113
163
|
export { ADT } from "./data/adt.js";
|
|
114
|
-
/** Bidirectional codec for encoding and decoding values. */
|
|
164
|
+
/** Bidirectional codec namespace for encoding and decoding values. */
|
|
165
|
+
/** Interface describing a bidirectional codec that can decode and encode. */
|
|
115
166
|
export { Codec, type CodecType } from "./data/codec.js";
|
|
116
|
-
/**
|
|
167
|
+
/** Check whether a value is an ImmutableRecord or ImmutableList. */
|
|
168
|
+
/** Create an immutable list from an array of items. */
|
|
169
|
+
/** Create an immutable record from a plain object. */
|
|
117
170
|
export { isImmutable, List, Record } from "./data/constructors.js";
|
|
118
171
|
/** Recursively marks all properties as readonly. */
|
|
119
172
|
export type { DeepReadonly } from "./data/internals.js";
|
|
120
|
-
/** An immutable array with functional methods. */
|
|
173
|
+
/** An immutable array with functional query and update methods. */
|
|
174
|
+
/** Methods available on every ImmutableList instance. */
|
|
121
175
|
export type { ImmutableList, ListMethods } from "./data/list.js";
|
|
122
176
|
/** Non-empty list guaranteeing at least one element at the type level. */
|
|
123
177
|
export { NonEmptyList } from "./data/non-empty-list.js";
|
|
124
|
-
/** An immutable object with type-safe update methods. */
|
|
178
|
+
/** An immutable object with type-safe structural update methods. */
|
|
179
|
+
/** Methods available on every ImmutableRecord instance. */
|
|
125
180
|
export type { ImmutableRecord, RecordMethods } from "./data/record.js";
|
|
126
|
-
/** Runtime data validation with composable schemas. */
|
|
181
|
+
/** Runtime data validation namespace with composable schemas. */
|
|
182
|
+
/** Describes a validation error at a specific path. */
|
|
183
|
+
/** Interface for a composable validation schema that parses unknown into T. */
|
|
127
184
|
export { Schema, type SchemaError, type SchemaType } from "./data/schema.js";
|
|
128
|
-
/**
|
|
185
|
+
/** Dense, index-stable collection with O(1) insert, remove, and access. */
|
|
186
|
+
/** Opaque reference to an element in a StableVec. */
|
|
187
|
+
export { type Handle, StableVec } from "./data/stable-vec.js";
|
|
188
|
+
/** Structured cloning namespace using the web standard algorithm. */
|
|
189
|
+
/** Error returned when a deep clone operation fails. */
|
|
129
190
|
export { Clone, CloneError } from "./io/clone.js";
|
|
130
|
-
/** Web standard compression and decompression
|
|
191
|
+
/** Web standard compression and decompression namespace. */
|
|
192
|
+
/** Error returned when compression or decompression fails. */
|
|
131
193
|
export { Compression, CompressionError } from "./io/compression.js";
|
|
132
|
-
/** Web standard cryptographic hashing, encryption, and random bytes. */
|
|
194
|
+
/** Web standard cryptographic hashing, encryption, and random bytes namespace. */
|
|
195
|
+
/** Error returned when a cryptographic operation fails. */
|
|
133
196
|
export { Crypto, CryptoError } from "./io/crypto.js";
|
|
134
|
-
/** Cross-runtime DNS resolution returning
|
|
135
|
-
|
|
136
|
-
/**
|
|
197
|
+
/** Cross-runtime DNS resolution namespace returning Task. */
|
|
198
|
+
/** Error returned when DNS resolution fails. */
|
|
199
|
+
/** A resolved DNS address with IP family. */
|
|
200
|
+
/** DNS record type for resolution queries. */
|
|
201
|
+
export { Dns, DnsError, type DnsRecord, type DnsType } from "./io/dns.js";
|
|
202
|
+
/** Base64, hex, and UTF-8 encoding and decoding namespace. */
|
|
203
|
+
/** Error returned when an encoding or decoding operation fails. */
|
|
137
204
|
export { Encoding, EncodingError } from "./io/encoding.js";
|
|
138
|
-
/** Cross-runtime file read, write, append, stat, and remove. */
|
|
205
|
+
/** Cross-runtime file read, write, append, stat, and remove namespace. */
|
|
206
|
+
/** Error returned when a file system operation fails. */
|
|
207
|
+
/** Metadata returned by File.stat (isFile, isDirectory, size, mtime). */
|
|
139
208
|
export { File, FileError, type FileStat } from "./io/file.js";
|
|
140
|
-
/** Safe JSON parse and stringify returning Result. */
|
|
209
|
+
/** Safe JSON parse and stringify namespace returning Result. */
|
|
210
|
+
/** Error returned when JSON parse or stringify fails. */
|
|
141
211
|
export { Json, JsonError } from "./io/json.js";
|
|
142
|
-
/** Cross-runtime TCP client
|
|
212
|
+
/** Cross-runtime TCP client namespace. */
|
|
213
|
+
/** Error returned when a TCP connection or communication fails. */
|
|
214
|
+
/** A connected TCP socket with send, receive, and close operations. */
|
|
143
215
|
export { Net, NetError, type TcpConnection } from "./io/net.js";
|
|
144
|
-
/** Cross-runtime subprocess execution
|
|
216
|
+
/** Cross-runtime subprocess execution namespace. */
|
|
217
|
+
/** Error returned when subprocess execution fails. */
|
|
218
|
+
/** Options for subprocess execution (cwd, env, timeout, stdin). */
|
|
219
|
+
/** Output of a subprocess execution (exitCode, stdout, stderr). */
|
|
145
220
|
export { Command, CommandError, type CommandOptions, type CommandResult } from "./io/subprocess.js";
|
|
146
|
-
/** URL parsing and manipulation returning Result. */
|
|
221
|
+
/** URL parsing and manipulation namespace returning Result. */
|
|
222
|
+
/** Error returned when URL parsing or construction fails. */
|
|
147
223
|
export { Url, UrlError } from "./io/url.js";
|
|
148
224
|
/** Application lifecycle with graceful shutdown and error boundary. */
|
|
149
|
-
|
|
225
|
+
/** Configuration options for Program (teardown timeout). */
|
|
226
|
+
export { Program, type ProgramOptions } from "./program.js";
|
|
150
227
|
/** Typed environment variable validation and access. */
|
|
151
228
|
export { Config } from "./runtime/config.js";
|
|
152
229
|
/** Structured logger with configurable levels and formatters. */
|
|
153
|
-
|
|
230
|
+
/** Configuration options for creating a Logger. */
|
|
231
|
+
/** Log severity levels, ordered from least to most severe. */
|
|
232
|
+
/** A structured log record passed to log sinks. */
|
|
233
|
+
/** A log sink function that receives formatted log entries. */
|
|
234
|
+
export { Logger, type LoggerOptions, type LogLevel, type LogRecord, type LogSink, } from "./runtime/logger.js";
|
|
154
235
|
/** Cross-runtime OS information (hostname, arch, memory). */
|
|
155
236
|
export { Os } from "./runtime/os.js";
|
|
156
|
-
/**
|
|
237
|
+
/** Line ending constants and normalization. */
|
|
238
|
+
/** OS-aware path manipulation without node:path dependency. */
|
|
239
|
+
/** Parsed path components (root, dir, base, ext, name). */
|
|
240
|
+
/** Runtime platform detection (isWindows, isPosix). */
|
|
157
241
|
export { Eol, Path, type PathParts, Platform } from "./runtime/platform.js";
|
|
158
|
-
/** Cross-runtime process info, cwd, env, and exit. */
|
|
159
|
-
|
|
160
|
-
/**
|
|
242
|
+
/** Cross-runtime process info, cwd, env, args, and exit namespace. */
|
|
243
|
+
/** Error returned when a process operation fails. */
|
|
244
|
+
/** Memory usage statistics returned by Process.memoryUsage. */
|
|
245
|
+
export { type MemoryUsage, Process, ProcessError } from "./runtime/process.js";
|
|
246
|
+
/** Failed to read the request body. */
|
|
247
|
+
/** Request context passed to route handlers with req, url, and params. */
|
|
248
|
+
/** Compose multiple middleware functions into a single middleware. */
|
|
249
|
+
/** Extract parameter names from a route pattern literal type. */
|
|
250
|
+
/** A route handler that receives Context and returns Response or Task. */
|
|
251
|
+
/** Handler threw or returned a failed Task. */
|
|
252
|
+
/** Supported HTTP methods for route registration. */
|
|
253
|
+
/** Create an HTML response with text/html content-type. */
|
|
254
|
+
/** Create a JSON response with application/json content-type. */
|
|
255
|
+
/** Options for starting the server (port, hostname, teardown timeout). */
|
|
256
|
+
/** Route path matched but method is not registered for it. */
|
|
257
|
+
/** Middleware wrapping the next handler for cross-cutting concerns. */
|
|
258
|
+
/** Mapped object type with a key for each extracted route parameter. */
|
|
259
|
+
/** A single route definition with method, pattern, and handler. */
|
|
260
|
+
/** No route matched the request path. */
|
|
261
|
+
/** Create a redirect response (default 302). */
|
|
262
|
+
/** HTTP server builder with typed routing, middleware, and runtime adapters. */
|
|
263
|
+
/** Adapter interface for plugging in different HTTP server runtimes. */
|
|
264
|
+
/** Immutable builder for composing routes, middleware, and context derivers. */
|
|
265
|
+
/** Union of all server-related error types. */
|
|
266
|
+
/** Typed middleware that can extend the request context. */
|
|
267
|
+
/** Create a plain text response with text/plain content-type. */
|
|
161
268
|
export { BodyReadError, type Context, compose, type ExtractParams, type Handler, HandlerError, type HttpMethod, html, json, type ListenOptions, MethodNotAllowed, type Middleware, type Params, type RouteDefinition, RouteNotFound, redirect, Server, type ServerAdapter, type ServerBuilder, type ServerError, type TypedMiddleware, text, } from "./server.js";
|
|
162
|
-
/** Cron expression parser and validator. */
|
|
269
|
+
/** Cron expression parser and validator namespace. */
|
|
270
|
+
/** A validated cron expression string (5-field standard format). */
|
|
163
271
|
export { Cron, type CronExpression } from "./types/cron.js";
|
|
164
|
-
/** Type-safe duration with unit conversions. */
|
|
272
|
+
/** Type-safe duration namespace with unit conversions. */
|
|
165
273
|
export { Duration } from "./types/duration.js";
|
|
166
274
|
/** Structured error type constructor with tag-based discrimination. */
|
|
275
|
+
/** Callable constructor that creates tagged, immutable error instances. */
|
|
167
276
|
export { ErrType, type ErrTypeConstructor } from "./types/error.js";
|
|
168
277
|
/** Phantom-branded nominal type for compile-time domain safety. */
|
|
169
278
|
export type { Type } from "./types/nominal.js";
|
|
170
|
-
/** WebSocket
|
|
171
|
-
|
|
279
|
+
/** WebSocket routing and handler definitions namespace. */
|
|
280
|
+
/** A WebSocket connection with typed send and close operations. */
|
|
281
|
+
/** Event handlers for a WebSocket route (onOpen, onMessage, onClose, onError). */
|
|
282
|
+
/** A WebSocket route definition mapping a URL pattern to a handler. */
|
|
283
|
+
/** A WebSocket router that holds route definitions with pattern matching. */
|
|
284
|
+
export { WebSocket, type WebSocketConnection, type WebSocketHandler, type WebSocketRoute, type WebSocketRouter, } from "./ws.js";
|
|
172
285
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE9D,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|