effect 2.0.3 → 2.0.5
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/FiberMap/package.json +6 -0
- package/FiberSet/package.json +6 -0
- package/Trie/package.json +6 -0
- package/dist/cjs/FiberMap.js +190 -0
- package/dist/cjs/FiberMap.js.map +1 -0
- package/dist/cjs/FiberSet.js +150 -0
- package/dist/cjs/FiberSet.js.map +1 -0
- package/dist/cjs/MutableHashMap.js +11 -1
- package/dist/cjs/MutableHashMap.js.map +1 -1
- package/dist/cjs/MutableHashSet.js +7 -1
- package/dist/cjs/MutableHashSet.js.map +1 -1
- package/dist/cjs/MutableList.js +8 -11
- package/dist/cjs/MutableList.js.map +1 -1
- package/dist/cjs/Schedule.js.map +1 -1
- package/dist/cjs/Struct.js +16 -1
- package/dist/cjs/Struct.js.map +1 -1
- package/dist/cjs/Trie.js +680 -0
- package/dist/cjs/Trie.js.map +1 -0
- package/dist/cjs/index.js +8 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/internal/hashMap/node.js +2 -2
- package/dist/cjs/internal/hashMap/node.js.map +1 -1
- package/dist/cjs/internal/pubsub.js +11 -17
- package/dist/cjs/internal/pubsub.js.map +1 -1
- package/dist/cjs/internal/redBlackTree/node.js +35 -30
- package/dist/cjs/internal/redBlackTree/node.js.map +1 -1
- package/dist/cjs/internal/redBlackTree.js +69 -13
- package/dist/cjs/internal/redBlackTree.js.map +1 -1
- package/dist/cjs/internal/schedule.js +1 -1
- package/dist/cjs/internal/schedule.js.map +1 -1
- package/dist/cjs/internal/stack.js +6 -11
- package/dist/cjs/internal/stack.js.map +1 -1
- package/dist/cjs/internal/trie.js +588 -0
- package/dist/cjs/internal/trie.js.map +1 -0
- package/dist/cjs/internal/version.js +1 -1
- package/dist/dts/FiberMap.d.ts +135 -0
- package/dist/dts/FiberMap.d.ts.map +1 -0
- package/dist/dts/FiberSet.d.ts +99 -0
- package/dist/dts/FiberSet.d.ts.map +1 -0
- package/dist/dts/MutableHashMap.d.ts +4 -0
- package/dist/dts/MutableHashMap.d.ts.map +1 -1
- package/dist/dts/MutableHashSet.d.ts +5 -0
- package/dist/dts/MutableHashSet.d.ts.map +1 -1
- package/dist/dts/MutableList.d.ts.map +1 -1
- package/dist/dts/Schedule.d.ts +2 -1
- package/dist/dts/Schedule.d.ts.map +1 -1
- package/dist/dts/Struct.d.ts +17 -3
- package/dist/dts/Struct.d.ts.map +1 -1
- package/dist/dts/Trie.d.ts +740 -0
- package/dist/dts/Trie.d.ts.map +1 -0
- package/dist/dts/Types.d.ts +4 -0
- package/dist/dts/Types.d.ts.map +1 -1
- package/dist/dts/index.d.ts +26 -0
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/internal/redBlackTree/node.d.ts +8 -0
- package/dist/dts/internal/redBlackTree/node.d.ts.map +1 -1
- package/dist/dts/internal/stack.d.ts +1 -1
- package/dist/dts/internal/stack.d.ts.map +1 -1
- package/dist/dts/internal/trie.d.ts +2 -0
- package/dist/dts/internal/trie.d.ts.map +1 -0
- package/dist/dts/internal/version.d.ts +1 -1
- package/dist/esm/FiberMap.js +154 -0
- package/dist/esm/FiberMap.js.map +1 -0
- package/dist/esm/FiberSet.js +114 -0
- package/dist/esm/FiberSet.js.map +1 -0
- package/dist/esm/MutableHashMap.js +9 -0
- package/dist/esm/MutableHashMap.js.map +1 -1
- package/dist/esm/MutableHashSet.js +5 -0
- package/dist/esm/MutableHashSet.js.map +1 -1
- package/dist/esm/MutableList.js +8 -11
- package/dist/esm/MutableList.js.map +1 -1
- package/dist/esm/Schedule.js.map +1 -1
- package/dist/esm/Struct.js +14 -0
- package/dist/esm/Struct.js.map +1 -1
- package/dist/esm/Trie.js +648 -0
- package/dist/esm/Trie.js.map +1 -0
- package/dist/esm/index.js +26 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/hashMap/node.js +2 -2
- package/dist/esm/internal/hashMap/node.js.map +1 -1
- package/dist/esm/internal/pubsub.js +11 -17
- package/dist/esm/internal/pubsub.js.map +1 -1
- package/dist/esm/internal/redBlackTree/node.js +31 -25
- package/dist/esm/internal/redBlackTree/node.js.map +1 -1
- package/dist/esm/internal/redBlackTree.js +69 -13
- package/dist/esm/internal/redBlackTree.js.map +1 -1
- package/dist/esm/internal/schedule.js +1 -1
- package/dist/esm/internal/schedule.js.map +1 -1
- package/dist/esm/internal/stack.js +4 -9
- package/dist/esm/internal/stack.js.map +1 -1
- package/dist/esm/internal/trie.js +547 -0
- package/dist/esm/internal/trie.js.map +1 -0
- package/dist/esm/internal/version.js +1 -1
- package/package.json +25 -1
- package/src/FiberMap.ts +296 -0
- package/src/FiberSet.ts +194 -0
- package/src/MutableHashMap.ts +10 -0
- package/src/MutableHashSet.ts +6 -0
- package/src/MutableList.ts +15 -7
- package/src/Schedule.ts +2 -1
- package/src/Struct.ts +24 -6
- package/src/Trie.ts +772 -0
- package/src/Types.ts +5 -0
- package/src/index.ts +29 -0
- package/src/internal/hashMap/node.ts +3 -3
- package/src/internal/pubsub.ts +15 -14
- package/src/internal/redBlackTree/node.ts +37 -17
- package/src/internal/redBlackTree.ts +73 -38
- package/src/internal/schedule.ts +2 -2
- package/src/internal/stack.ts +8 -2
- package/src/internal/trie.ts +721 -0
- package/src/internal/version.ts +1 -1
package/dist/cjs/Trie.js
ADDED
|
@@ -0,0 +1,680 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.valuesWithPrefix = exports.values = exports.unsafeGet = exports.toEntriesWithPrefix = exports.toEntries = exports.size = exports.removeMany = exports.remove = exports.reduce = exports.modify = exports.map = exports.make = exports.longestPrefixOf = exports.keysWithPrefix = exports.keys = exports.isEmpty = exports.insertMany = exports.insert = exports.has = exports.get = exports.fromIterable = exports.forEach = exports.filterMap = exports.filter = exports.entriesWithPrefix = exports.entries = exports.empty = exports.compact = void 0;
|
|
7
|
+
var TR = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./internal/trie.js"));
|
|
8
|
+
function _getRequireWildcardCache(e) {
|
|
9
|
+
if ("function" != typeof WeakMap) return null;
|
|
10
|
+
var r = new WeakMap(),
|
|
11
|
+
t = new WeakMap();
|
|
12
|
+
return (_getRequireWildcardCache = function (e) {
|
|
13
|
+
return e ? t : r;
|
|
14
|
+
})(e);
|
|
15
|
+
}
|
|
16
|
+
function _interopRequireWildcard(e, r) {
|
|
17
|
+
if (!r && e && e.__esModule) return e;
|
|
18
|
+
if (null === e || "object" != typeof e && "function" != typeof e) return {
|
|
19
|
+
default: e
|
|
20
|
+
};
|
|
21
|
+
var t = _getRequireWildcardCache(r);
|
|
22
|
+
if (t && t.has(e)) return t.get(e);
|
|
23
|
+
var n = {
|
|
24
|
+
__proto__: null
|
|
25
|
+
},
|
|
26
|
+
a = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
27
|
+
for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) {
|
|
28
|
+
var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
|
|
29
|
+
i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];
|
|
30
|
+
}
|
|
31
|
+
return n.default = e, t && t.set(e, n), n;
|
|
32
|
+
}
|
|
33
|
+
const TypeId = TR.TrieTypeId;
|
|
34
|
+
/**
|
|
35
|
+
* Creates an empty `Trie`.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* import * as Trie from "effect/Trie"
|
|
39
|
+
* import * as Equal from "effect/Equal"
|
|
40
|
+
*
|
|
41
|
+
* const trie = Trie.empty<string>()
|
|
42
|
+
*
|
|
43
|
+
* assert.equal(Trie.size(trie), 0)
|
|
44
|
+
* assert.deepStrictEqual(Array.from(trie), [])
|
|
45
|
+
*
|
|
46
|
+
* @since 2.0.0
|
|
47
|
+
* @category constructors
|
|
48
|
+
*/
|
|
49
|
+
const empty = exports.empty = TR.empty;
|
|
50
|
+
/**
|
|
51
|
+
* Creates a new `Trie` from an iterable collection of key/value pairs (e.g. `Array<[string, V]>`).
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* import * as Trie from "effect/Trie"
|
|
55
|
+
* import * as Equal from "effect/Equal"
|
|
56
|
+
*
|
|
57
|
+
* const iterable: Array<readonly [string, number]> = [["call", 0], ["me", 1], ["mind", 2], ["mid", 3]]
|
|
58
|
+
* const trie = Trie.fromIterable(iterable)
|
|
59
|
+
*
|
|
60
|
+
* // The entries in the `Trie` are extracted in alphabetical order, regardless of the insertion order
|
|
61
|
+
* assert.deepStrictEqual(Array.from(trie), [["call", 0], ["me", 1], ["mid", 3], ["mind", 2]])
|
|
62
|
+
* assert.equal(Equal.equals(Trie.make(["call", 0], ["me", 1], ["mind", 2], ["mid", 3]), trie), true)
|
|
63
|
+
*
|
|
64
|
+
* @since 2.0.0
|
|
65
|
+
* @category constructors
|
|
66
|
+
*/
|
|
67
|
+
const fromIterable = exports.fromIterable = TR.fromIterable;
|
|
68
|
+
/**
|
|
69
|
+
* Constructs a new `Trie` from the specified entries (`[string, V]`).
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* import * as Trie from "effect/Trie"
|
|
73
|
+
* import * as Equal from "effect/Equal"
|
|
74
|
+
*
|
|
75
|
+
* const trie = Trie.make(["ca", 0], ["me", 1])
|
|
76
|
+
*
|
|
77
|
+
* assert.deepStrictEqual(Array.from(trie), [["ca", 0], ["me", 1]])
|
|
78
|
+
* assert.equal(Equal.equals(Trie.fromIterable([["ca", 0], ["me", 1]]), trie), true)
|
|
79
|
+
*
|
|
80
|
+
* @since 2.0.0
|
|
81
|
+
* @category constructors
|
|
82
|
+
*/
|
|
83
|
+
const make = exports.make = TR.make;
|
|
84
|
+
/**
|
|
85
|
+
* Insert a new entry in the `Trie`.
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* import * as Trie from "effect/Trie"
|
|
89
|
+
*
|
|
90
|
+
* const trie1 = Trie.empty<number>().pipe(
|
|
91
|
+
* Trie.insert("call", 0)
|
|
92
|
+
* )
|
|
93
|
+
* const trie2 = trie1.pipe(Trie.insert("me", 1))
|
|
94
|
+
* const trie3 = trie2.pipe(Trie.insert("mind", 2))
|
|
95
|
+
* const trie4 = trie3.pipe(Trie.insert("mid", 3))
|
|
96
|
+
*
|
|
97
|
+
* assert.deepStrictEqual(Array.from(trie1), [["call", 0]])
|
|
98
|
+
* assert.deepStrictEqual(Array.from(trie2), [["call", 0], ["me", 1]])
|
|
99
|
+
* assert.deepStrictEqual(Array.from(trie3), [["call", 0], ["me", 1], ["mind", 2]])
|
|
100
|
+
* assert.deepStrictEqual(Array.from(trie4), [["call", 0], ["me", 1], ["mid", 3], ["mind", 2]])
|
|
101
|
+
*
|
|
102
|
+
* @since 2.0.0
|
|
103
|
+
* @category mutations
|
|
104
|
+
*/
|
|
105
|
+
const insert = exports.insert = TR.insert;
|
|
106
|
+
/**
|
|
107
|
+
* Returns an `IterableIterator` of the keys within the `Trie`.
|
|
108
|
+
*
|
|
109
|
+
* The keys are returned in alphabetical order, regardless of insertion order.
|
|
110
|
+
*
|
|
111
|
+
* @example
|
|
112
|
+
* import * as Trie from "effect/Trie"
|
|
113
|
+
*
|
|
114
|
+
* const trie = Trie.empty<number>().pipe(
|
|
115
|
+
* Trie.insert("cab", 0),
|
|
116
|
+
* Trie.insert("abc", 1),
|
|
117
|
+
* Trie.insert("bca", 2)
|
|
118
|
+
* )
|
|
119
|
+
*
|
|
120
|
+
* const result = Array.from(Trie.keys(trie))
|
|
121
|
+
* assert.deepStrictEqual(result, ["abc", "bca", "cab"])
|
|
122
|
+
*
|
|
123
|
+
* @since 2.0.0
|
|
124
|
+
* @category getters
|
|
125
|
+
*/
|
|
126
|
+
const keys = exports.keys = TR.keys;
|
|
127
|
+
/**
|
|
128
|
+
* Returns an `IterableIterator` of the values within the `Trie`.
|
|
129
|
+
*
|
|
130
|
+
* Values are ordered based on their key in alphabetical order, regardless of insertion order.
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* import * as Trie from "effect/Trie"
|
|
134
|
+
*
|
|
135
|
+
* const trie = Trie.empty<number>().pipe(
|
|
136
|
+
* Trie.insert("call", 0),
|
|
137
|
+
* Trie.insert("me", 1),
|
|
138
|
+
* Trie.insert("and", 2)
|
|
139
|
+
* )
|
|
140
|
+
*
|
|
141
|
+
* const result = Array.from(Trie.values(trie))
|
|
142
|
+
* assert.deepStrictEqual(result, [2, 0, 1])
|
|
143
|
+
*
|
|
144
|
+
* @since 2.0.0
|
|
145
|
+
* @category getters
|
|
146
|
+
*/
|
|
147
|
+
const values = exports.values = TR.values;
|
|
148
|
+
/**
|
|
149
|
+
* Returns an `IterableIterator` of the entries within the `Trie`.
|
|
150
|
+
*
|
|
151
|
+
* The entries are returned by keys in alphabetical order, regardless of insertion order.
|
|
152
|
+
*
|
|
153
|
+
* @example
|
|
154
|
+
* import * as Trie from "effect/Trie"
|
|
155
|
+
*
|
|
156
|
+
* const trie = Trie.empty<number>().pipe(
|
|
157
|
+
* Trie.insert("call", 0),
|
|
158
|
+
* Trie.insert("me", 1)
|
|
159
|
+
* )
|
|
160
|
+
*
|
|
161
|
+
* const result = Array.from(Trie.entries(trie))
|
|
162
|
+
* assert.deepStrictEqual(result, [["call", 0], ["me", 1]])
|
|
163
|
+
*
|
|
164
|
+
* @since 2.0.0
|
|
165
|
+
* @category getters
|
|
166
|
+
*/
|
|
167
|
+
const entries = exports.entries = TR.entries;
|
|
168
|
+
/**
|
|
169
|
+
* Returns an `Array<[K, V]>` of the entries within the `Trie`.
|
|
170
|
+
*
|
|
171
|
+
* Equivalent to `Array.from(Trie.entries(trie))`.
|
|
172
|
+
*
|
|
173
|
+
* @example
|
|
174
|
+
* import * as Trie from "effect/Trie"
|
|
175
|
+
*
|
|
176
|
+
* const trie = Trie.empty<number>().pipe(
|
|
177
|
+
* Trie.insert("call", 0),
|
|
178
|
+
* Trie.insert("me", 1)
|
|
179
|
+
* )
|
|
180
|
+
* const result = Trie.toEntries(trie)
|
|
181
|
+
*
|
|
182
|
+
* assert.deepStrictEqual(result, [["call", 0], ["me", 1]])
|
|
183
|
+
*
|
|
184
|
+
* @since 2.0.0
|
|
185
|
+
* @category getters
|
|
186
|
+
*/
|
|
187
|
+
const toEntries = self => Array.from(entries(self));
|
|
188
|
+
/**
|
|
189
|
+
* Returns an `IterableIterator` of the keys within the `Trie`
|
|
190
|
+
* that have `prefix` as prefix (`prefix` included if it exists).
|
|
191
|
+
*
|
|
192
|
+
* @example
|
|
193
|
+
* import * as Trie from "effect/Trie"
|
|
194
|
+
*
|
|
195
|
+
* const trie = Trie.empty<number>().pipe(
|
|
196
|
+
* Trie.insert("she", 0),
|
|
197
|
+
* Trie.insert("shells", 1),
|
|
198
|
+
* Trie.insert("sea", 2),
|
|
199
|
+
* Trie.insert("shore", 3)
|
|
200
|
+
* )
|
|
201
|
+
*
|
|
202
|
+
* const result = Array.from(Trie.keysWithPrefix(trie, "she"))
|
|
203
|
+
* assert.deepStrictEqual(result, ["she", "shells"])
|
|
204
|
+
*
|
|
205
|
+
* @since 2.0.0
|
|
206
|
+
* @category getters
|
|
207
|
+
*/
|
|
208
|
+
exports.toEntries = toEntries;
|
|
209
|
+
const keysWithPrefix = exports.keysWithPrefix = TR.keysWithPrefix;
|
|
210
|
+
/**
|
|
211
|
+
* Returns an `IterableIterator` of the values within the `Trie`
|
|
212
|
+
* that have `prefix` as prefix (`prefix` included if it exists).
|
|
213
|
+
*
|
|
214
|
+
* @example
|
|
215
|
+
* import * as Trie from "effect/Trie"
|
|
216
|
+
*
|
|
217
|
+
* const trie = Trie.empty<number>().pipe(
|
|
218
|
+
* Trie.insert("she", 0),
|
|
219
|
+
* Trie.insert("shells", 1),
|
|
220
|
+
* Trie.insert("sea", 2),
|
|
221
|
+
* Trie.insert("shore", 3)
|
|
222
|
+
* )
|
|
223
|
+
*
|
|
224
|
+
* const result = Array.from(Trie.valuesWithPrefix(trie, "she"))
|
|
225
|
+
*
|
|
226
|
+
* // 0: "she", 1: "shells"
|
|
227
|
+
* assert.deepStrictEqual(result, [0, 1])
|
|
228
|
+
*
|
|
229
|
+
* @since 2.0.0
|
|
230
|
+
* @category getters
|
|
231
|
+
*/
|
|
232
|
+
const valuesWithPrefix = exports.valuesWithPrefix = TR.valuesWithPrefix;
|
|
233
|
+
/**
|
|
234
|
+
* Returns an `IterableIterator` of the entries within the `Trie`
|
|
235
|
+
* that have `prefix` as prefix (`prefix` included if it exists).
|
|
236
|
+
*
|
|
237
|
+
* @example
|
|
238
|
+
* import * as Trie from "effect/Trie"
|
|
239
|
+
*
|
|
240
|
+
* const trie = Trie.empty<number>().pipe(
|
|
241
|
+
* Trie.insert("she", 0),
|
|
242
|
+
* Trie.insert("shells", 1),
|
|
243
|
+
* Trie.insert("sea", 2),
|
|
244
|
+
* Trie.insert("shore", 3)
|
|
245
|
+
* )
|
|
246
|
+
*
|
|
247
|
+
* const result = Array.from(Trie.entriesWithPrefix(trie, "she"))
|
|
248
|
+
* assert.deepStrictEqual(result, [["she", 0], ["shells", 1]])
|
|
249
|
+
*
|
|
250
|
+
* @since 2.0.0
|
|
251
|
+
* @category getters
|
|
252
|
+
*/
|
|
253
|
+
const entriesWithPrefix = exports.entriesWithPrefix = TR.entriesWithPrefix;
|
|
254
|
+
/**
|
|
255
|
+
* Returns `Array<[K, V]>` of the entries within the `Trie`
|
|
256
|
+
* that have `prefix` as prefix (`prefix` included if it exists).
|
|
257
|
+
*
|
|
258
|
+
* @example
|
|
259
|
+
* import * as Trie from "effect/Trie"
|
|
260
|
+
*
|
|
261
|
+
* const trie = Trie.empty<number>().pipe(
|
|
262
|
+
* Trie.insert("shells", 0),
|
|
263
|
+
* Trie.insert("sells", 1),
|
|
264
|
+
* Trie.insert("sea", 2),
|
|
265
|
+
* Trie.insert("she", 3)
|
|
266
|
+
* )
|
|
267
|
+
*
|
|
268
|
+
* const result = Trie.toEntriesWithPrefix(trie, "she")
|
|
269
|
+
* assert.deepStrictEqual(result, [["she", 3], ["shells", 0]])
|
|
270
|
+
*
|
|
271
|
+
* @since 2.0.0
|
|
272
|
+
* @category getters
|
|
273
|
+
*/
|
|
274
|
+
const toEntriesWithPrefix = exports.toEntriesWithPrefix = TR.toEntriesWithPrefix;
|
|
275
|
+
/**
|
|
276
|
+
* Returns the longest key/value in the `Trie`
|
|
277
|
+
* that is a prefix of that `key` if it exists, `None` otherwise.
|
|
278
|
+
*
|
|
279
|
+
* @example
|
|
280
|
+
* import * as Trie from "effect/Trie"
|
|
281
|
+
* import * as Option from "effect/Option"
|
|
282
|
+
*
|
|
283
|
+
* const trie = Trie.empty<number>().pipe(
|
|
284
|
+
* Trie.insert("shells", 0),
|
|
285
|
+
* Trie.insert("sells", 1),
|
|
286
|
+
* Trie.insert("she", 2)
|
|
287
|
+
* )
|
|
288
|
+
*
|
|
289
|
+
* assert.deepStrictEqual(Trie.longestPrefixOf(trie, "sell"), Option.none())
|
|
290
|
+
* assert.deepStrictEqual(Trie.longestPrefixOf(trie, "sells"), Option.some(["sells", 1]))
|
|
291
|
+
* assert.deepStrictEqual(Trie.longestPrefixOf(trie, "shell"), Option.some(["she", 2]))
|
|
292
|
+
* assert.deepStrictEqual(Trie.longestPrefixOf(trie, "shellsort"), Option.some(["shells", 0]))
|
|
293
|
+
*
|
|
294
|
+
* @since 2.0.0
|
|
295
|
+
* @category getters
|
|
296
|
+
*/
|
|
297
|
+
const longestPrefixOf = exports.longestPrefixOf = TR.longestPrefixOf;
|
|
298
|
+
/**
|
|
299
|
+
* Returns the size of the `Trie` (number of entries in the `Trie`).
|
|
300
|
+
*
|
|
301
|
+
* @example
|
|
302
|
+
* import * as Trie from "effect/Trie"
|
|
303
|
+
*
|
|
304
|
+
* const trie = Trie.empty<number>().pipe(
|
|
305
|
+
* Trie.insert("a", 0),
|
|
306
|
+
* Trie.insert("b", 1)
|
|
307
|
+
* )
|
|
308
|
+
*
|
|
309
|
+
* assert.equal(Trie.size(trie), 2)
|
|
310
|
+
*
|
|
311
|
+
* @since 2.0.0
|
|
312
|
+
* @category getters
|
|
313
|
+
*/
|
|
314
|
+
const size = exports.size = TR.size;
|
|
315
|
+
/**
|
|
316
|
+
* Safely lookup the value for the specified key in the `Trie`.
|
|
317
|
+
*
|
|
318
|
+
* @example
|
|
319
|
+
* import * as Trie from "effect/Trie"
|
|
320
|
+
* import * as Option from "effect/Option"
|
|
321
|
+
*
|
|
322
|
+
* const trie = Trie.empty<number>().pipe(
|
|
323
|
+
* Trie.insert("call", 0),
|
|
324
|
+
* Trie.insert("me", 1),
|
|
325
|
+
* Trie.insert("mind", 2),
|
|
326
|
+
* Trie.insert("mid", 3)
|
|
327
|
+
* )
|
|
328
|
+
*
|
|
329
|
+
* assert.deepStrictEqual(Trie.get(trie, "call"), Option.some(0))
|
|
330
|
+
* assert.deepStrictEqual(Trie.get(trie, "me"), Option.some(1))
|
|
331
|
+
* assert.deepStrictEqual(Trie.get(trie, "mind"), Option.some(2))
|
|
332
|
+
* assert.deepStrictEqual(Trie.get(trie, "mid"), Option.some(3))
|
|
333
|
+
* assert.deepStrictEqual(Trie.get(trie, "cale"), Option.none())
|
|
334
|
+
* assert.deepStrictEqual(Trie.get(trie, "ma"), Option.none())
|
|
335
|
+
* assert.deepStrictEqual(Trie.get(trie, "midn"), Option.none())
|
|
336
|
+
* assert.deepStrictEqual(Trie.get(trie, "mea"), Option.none())
|
|
337
|
+
*
|
|
338
|
+
* @since 2.0.0
|
|
339
|
+
* @category elements
|
|
340
|
+
*/
|
|
341
|
+
const get = exports.get = TR.get;
|
|
342
|
+
/**
|
|
343
|
+
* Check if the given key exists in the `Trie`.
|
|
344
|
+
*
|
|
345
|
+
* @example
|
|
346
|
+
* import * as Trie from "effect/Trie"
|
|
347
|
+
*
|
|
348
|
+
* const trie = Trie.empty<number>().pipe(
|
|
349
|
+
* Trie.insert("call", 0),
|
|
350
|
+
* Trie.insert("me", 1),
|
|
351
|
+
* Trie.insert("mind", 2),
|
|
352
|
+
* Trie.insert("mid", 3)
|
|
353
|
+
* )
|
|
354
|
+
*
|
|
355
|
+
* assert.equal(Trie.has(trie, "call"), true)
|
|
356
|
+
* assert.equal(Trie.has(trie, "me"), true)
|
|
357
|
+
* assert.equal(Trie.has(trie, "mind"), true)
|
|
358
|
+
* assert.equal(Trie.has(trie, "mid"), true)
|
|
359
|
+
* assert.equal(Trie.has(trie, "cale"), false)
|
|
360
|
+
* assert.equal(Trie.has(trie, "ma"), false)
|
|
361
|
+
* assert.equal(Trie.has(trie, "midn"), false)
|
|
362
|
+
* assert.equal(Trie.has(trie, "mea"), false)
|
|
363
|
+
*
|
|
364
|
+
* @since 2.0.0
|
|
365
|
+
* @category elements
|
|
366
|
+
*/
|
|
367
|
+
const has = exports.has = TR.has;
|
|
368
|
+
/**
|
|
369
|
+
* Checks if the `Trie` contains any entries.
|
|
370
|
+
*
|
|
371
|
+
* @example
|
|
372
|
+
* import * as Trie from "effect/Trie"
|
|
373
|
+
*
|
|
374
|
+
* const trie = Trie.empty<number>()
|
|
375
|
+
* const trie1 = trie.pipe(Trie.insert("ma", 0))
|
|
376
|
+
*
|
|
377
|
+
* assert.equal(Trie.isEmpty(trie), true)
|
|
378
|
+
* assert.equal(Trie.isEmpty(trie1), false)
|
|
379
|
+
*
|
|
380
|
+
* @since 2.0.0
|
|
381
|
+
* @category elements
|
|
382
|
+
*/
|
|
383
|
+
const isEmpty = exports.isEmpty = TR.isEmpty;
|
|
384
|
+
/**
|
|
385
|
+
* Unsafely lookup the value for the specified key in the `Trie`.
|
|
386
|
+
*
|
|
387
|
+
* `unsafeGet` will throw if the key is not found. Use `get` instead to safely
|
|
388
|
+
* get a value from the `Trie`.
|
|
389
|
+
*
|
|
390
|
+
* @example
|
|
391
|
+
* import * as Trie from "effect/Trie"
|
|
392
|
+
*
|
|
393
|
+
* const trie = Trie.empty<number>().pipe(
|
|
394
|
+
* Trie.insert("call", 0),
|
|
395
|
+
* Trie.insert("me", 1)
|
|
396
|
+
* )
|
|
397
|
+
*
|
|
398
|
+
* assert.throws(() => Trie.unsafeGet(trie, "mae"))
|
|
399
|
+
*
|
|
400
|
+
* @since 2.0.0
|
|
401
|
+
* @category unsafe
|
|
402
|
+
*/
|
|
403
|
+
const unsafeGet = exports.unsafeGet = TR.unsafeGet;
|
|
404
|
+
/**
|
|
405
|
+
* Remove the entry for the specified key in the `Trie`.
|
|
406
|
+
*
|
|
407
|
+
* @example
|
|
408
|
+
* import * as Trie from "effect/Trie"
|
|
409
|
+
* import * as Option from "effect/Option"
|
|
410
|
+
*
|
|
411
|
+
* const trie = Trie.empty<number>().pipe(
|
|
412
|
+
* Trie.insert("call", 0),
|
|
413
|
+
* Trie.insert("me", 1),
|
|
414
|
+
* Trie.insert("mind", 2),
|
|
415
|
+
* Trie.insert("mid", 3)
|
|
416
|
+
* )
|
|
417
|
+
*
|
|
418
|
+
* const trie1 = trie.pipe(Trie.remove("call"))
|
|
419
|
+
* const trie2 = trie1.pipe(Trie.remove("mea"))
|
|
420
|
+
*
|
|
421
|
+
* assert.deepStrictEqual(Trie.get(trie, "call"), Option.some(0))
|
|
422
|
+
* assert.deepStrictEqual(Trie.get(trie1, "call"), Option.none())
|
|
423
|
+
* assert.deepStrictEqual(Trie.get(trie2, "call"), Option.none())
|
|
424
|
+
*
|
|
425
|
+
* @since 2.0.0
|
|
426
|
+
* @category mutations
|
|
427
|
+
*/
|
|
428
|
+
const remove = exports.remove = TR.remove;
|
|
429
|
+
/**
|
|
430
|
+
* Reduce a state over the entries of the `Trie`.
|
|
431
|
+
*
|
|
432
|
+
* @example
|
|
433
|
+
* import * as Trie from "effect/Trie"
|
|
434
|
+
*
|
|
435
|
+
* const trie = Trie.empty<number>().pipe(
|
|
436
|
+
* Trie.insert("shells", 0),
|
|
437
|
+
* Trie.insert("sells", 1),
|
|
438
|
+
* Trie.insert("she", 2)
|
|
439
|
+
* )
|
|
440
|
+
*
|
|
441
|
+
* assert.equal(
|
|
442
|
+
* trie.pipe(
|
|
443
|
+
* Trie.reduce(0, (acc, n) => acc + n)
|
|
444
|
+
* ),
|
|
445
|
+
* 3
|
|
446
|
+
* )
|
|
447
|
+
* assert.equal(
|
|
448
|
+
* trie.pipe(
|
|
449
|
+
* Trie.reduce(10, (acc, n) => acc + n)
|
|
450
|
+
* ),
|
|
451
|
+
* 13
|
|
452
|
+
* )
|
|
453
|
+
* assert.equal(
|
|
454
|
+
* trie.pipe(
|
|
455
|
+
* Trie.reduce("", (acc, _, key) => acc + key)
|
|
456
|
+
* ),
|
|
457
|
+
* "sellssheshells"
|
|
458
|
+
* )
|
|
459
|
+
*
|
|
460
|
+
* @since 2.0.0
|
|
461
|
+
* @category folding
|
|
462
|
+
*/
|
|
463
|
+
const reduce = exports.reduce = TR.reduce;
|
|
464
|
+
/**
|
|
465
|
+
* Maps over the entries of the `Trie` using the specified function.
|
|
466
|
+
*
|
|
467
|
+
* @example
|
|
468
|
+
* import * as Trie from "effect/Trie"
|
|
469
|
+
* import * as Equal from "effect/Equal"
|
|
470
|
+
*
|
|
471
|
+
* const trie = Trie.empty<number>().pipe(
|
|
472
|
+
* Trie.insert("shells", 0),
|
|
473
|
+
* Trie.insert("sells", 1),
|
|
474
|
+
* Trie.insert("she", 2)
|
|
475
|
+
* )
|
|
476
|
+
*
|
|
477
|
+
* const trieMapV = Trie.empty<number>().pipe(
|
|
478
|
+
* Trie.insert("shells", 1),
|
|
479
|
+
* Trie.insert("sells", 2),
|
|
480
|
+
* Trie.insert("she", 3)
|
|
481
|
+
* )
|
|
482
|
+
*
|
|
483
|
+
* const trieMapK = Trie.empty<number>().pipe(
|
|
484
|
+
* Trie.insert("shells", 6),
|
|
485
|
+
* Trie.insert("sells", 5),
|
|
486
|
+
* Trie.insert("she", 3)
|
|
487
|
+
* )
|
|
488
|
+
*
|
|
489
|
+
* assert.equal(Equal.equals(Trie.map(trie, (v) => v + 1), trieMapV), true)
|
|
490
|
+
* assert.equal(Equal.equals(Trie.map(trie, (_, k) => k.length), trieMapK), true)
|
|
491
|
+
*
|
|
492
|
+
* @since 2.0.0
|
|
493
|
+
* @category folding
|
|
494
|
+
*/
|
|
495
|
+
const map = exports.map = TR.map;
|
|
496
|
+
/**
|
|
497
|
+
* Filters entries out of a `Trie` using the specified predicate.
|
|
498
|
+
*
|
|
499
|
+
* @example
|
|
500
|
+
* import * as Trie from "effect/Trie"
|
|
501
|
+
* import * as Equal from "effect/Equal"
|
|
502
|
+
*
|
|
503
|
+
* const trie = Trie.empty<number>().pipe(
|
|
504
|
+
* Trie.insert("shells", 0),
|
|
505
|
+
* Trie.insert("sells", 1),
|
|
506
|
+
* Trie.insert("she", 2)
|
|
507
|
+
* )
|
|
508
|
+
*
|
|
509
|
+
* const trieMapV = Trie.empty<number>().pipe(
|
|
510
|
+
* Trie.insert("she", 2)
|
|
511
|
+
* )
|
|
512
|
+
*
|
|
513
|
+
* const trieMapK = Trie.empty<number>().pipe(
|
|
514
|
+
* Trie.insert("shells", 0),
|
|
515
|
+
* Trie.insert("sells", 1)
|
|
516
|
+
* )
|
|
517
|
+
*
|
|
518
|
+
* assert.equal(Equal.equals(Trie.filter(trie, (v) => v > 1), trieMapV), true)
|
|
519
|
+
* assert.equal(Equal.equals(Trie.filter(trie, (_, k) => k.length > 3), trieMapK), true)
|
|
520
|
+
*
|
|
521
|
+
* @since 2.0.0
|
|
522
|
+
* @category filtering
|
|
523
|
+
*/
|
|
524
|
+
const filter = exports.filter = TR.filter;
|
|
525
|
+
/**
|
|
526
|
+
* Maps over the entries of the `Trie` using the specified partial function
|
|
527
|
+
* and filters out `None` values.
|
|
528
|
+
*
|
|
529
|
+
* @example
|
|
530
|
+
* import * as Trie from "effect/Trie"
|
|
531
|
+
* import * as Equal from "effect/Equal"
|
|
532
|
+
* import * as Option from "effect/Option"
|
|
533
|
+
*
|
|
534
|
+
* const trie = Trie.empty<number>().pipe(
|
|
535
|
+
* Trie.insert("shells", 0),
|
|
536
|
+
* Trie.insert("sells", 1),
|
|
537
|
+
* Trie.insert("she", 2)
|
|
538
|
+
* )
|
|
539
|
+
*
|
|
540
|
+
* const trieMapV = Trie.empty<number>().pipe(
|
|
541
|
+
* Trie.insert("she", 2)
|
|
542
|
+
* )
|
|
543
|
+
*
|
|
544
|
+
* const trieMapK = Trie.empty<number>().pipe(
|
|
545
|
+
* Trie.insert("shells", 0),
|
|
546
|
+
* Trie.insert("sells", 1)
|
|
547
|
+
* )
|
|
548
|
+
*
|
|
549
|
+
* assert.equal(Equal.equals(Trie.filterMap(trie, (v) => v > 1 ? Option.some(v) : Option.none()), trieMapV), true)
|
|
550
|
+
* assert.equal(
|
|
551
|
+
* Equal.equals(Trie.filterMap(trie, (v, k) => k.length > 3 ? Option.some(v) : Option.none()), trieMapK),
|
|
552
|
+
* true
|
|
553
|
+
* )
|
|
554
|
+
*
|
|
555
|
+
* @since 2.0.0
|
|
556
|
+
* @category filtering
|
|
557
|
+
*/
|
|
558
|
+
const filterMap = exports.filterMap = TR.filterMap;
|
|
559
|
+
/**
|
|
560
|
+
* Filters out `None` values from a `Trie` of `Options`s.
|
|
561
|
+
*
|
|
562
|
+
* @example
|
|
563
|
+
* import * as Trie from "effect/Trie"
|
|
564
|
+
* import * as Equal from "effect/Equal"
|
|
565
|
+
* import * as Option from "effect/Option"
|
|
566
|
+
*
|
|
567
|
+
* const trie = Trie.empty<Option.Option<number>>().pipe(
|
|
568
|
+
* Trie.insert("shells", Option.some(0)),
|
|
569
|
+
* Trie.insert("sells", Option.none()),
|
|
570
|
+
* Trie.insert("she", Option.some(2))
|
|
571
|
+
* )
|
|
572
|
+
*
|
|
573
|
+
* const trieMapV = Trie.empty<number>().pipe(
|
|
574
|
+
* Trie.insert("shells", 0),
|
|
575
|
+
* Trie.insert("she", 2)
|
|
576
|
+
* )
|
|
577
|
+
*
|
|
578
|
+
* assert.equal(Equal.equals(Trie.compact(trie), trieMapV), true)
|
|
579
|
+
*
|
|
580
|
+
* @since 2.0.0
|
|
581
|
+
* @category filtering
|
|
582
|
+
*/
|
|
583
|
+
const compact = exports.compact = TR.compact;
|
|
584
|
+
/**
|
|
585
|
+
* Applies the specified function to the entries of the `Trie`.
|
|
586
|
+
*
|
|
587
|
+
* @example
|
|
588
|
+
* import * as Trie from "effect/Trie"
|
|
589
|
+
*
|
|
590
|
+
* let value = 0
|
|
591
|
+
*
|
|
592
|
+
* Trie.empty<number>().pipe(
|
|
593
|
+
* Trie.insert("shells", 0),
|
|
594
|
+
* Trie.insert("sells", 1),
|
|
595
|
+
* Trie.insert("she", 2),
|
|
596
|
+
* Trie.forEach((n, key) => {
|
|
597
|
+
* value += n + key.length
|
|
598
|
+
* })
|
|
599
|
+
* )
|
|
600
|
+
*
|
|
601
|
+
* assert.equal(value, 17)
|
|
602
|
+
*
|
|
603
|
+
* @since 2.0.0
|
|
604
|
+
* @category traversing
|
|
605
|
+
*/
|
|
606
|
+
const forEach = exports.forEach = TR.forEach;
|
|
607
|
+
/**
|
|
608
|
+
* Updates the value of the specified key within the `Trie` if it exists.
|
|
609
|
+
*
|
|
610
|
+
* @example
|
|
611
|
+
* import * as Trie from "effect/Trie"
|
|
612
|
+
* import * as Equal from "effect/Equal"
|
|
613
|
+
* import * as Option from "effect/Option"
|
|
614
|
+
*
|
|
615
|
+
* const trie = Trie.empty<number>().pipe(
|
|
616
|
+
* Trie.insert("shells", 0),
|
|
617
|
+
* Trie.insert("sells", 1),
|
|
618
|
+
* Trie.insert("she", 2)
|
|
619
|
+
* )
|
|
620
|
+
*
|
|
621
|
+
* assert.deepStrictEqual(trie.pipe(Trie.modify("she", (v) => v + 10), Trie.get("she")), Option.some(12))
|
|
622
|
+
*
|
|
623
|
+
* assert.equal(Equal.equals(trie.pipe(Trie.modify("me", (v) => v)), trie), true)
|
|
624
|
+
*
|
|
625
|
+
* @since 2.0.0
|
|
626
|
+
* @category mutations
|
|
627
|
+
*/
|
|
628
|
+
const modify = exports.modify = TR.modify;
|
|
629
|
+
/**
|
|
630
|
+
* Removes all entries in the `Trie` which have the specified keys.
|
|
631
|
+
*
|
|
632
|
+
* @example
|
|
633
|
+
* import * as Trie from "effect/Trie"
|
|
634
|
+
* import * as Equal from "effect/Equal"
|
|
635
|
+
*
|
|
636
|
+
* const trie = Trie.empty<number>().pipe(
|
|
637
|
+
* Trie.insert("shells", 0),
|
|
638
|
+
* Trie.insert("sells", 1),
|
|
639
|
+
* Trie.insert("she", 2)
|
|
640
|
+
* )
|
|
641
|
+
*
|
|
642
|
+
* assert.equal(
|
|
643
|
+
* Equal.equals(trie.pipe(Trie.removeMany(["she", "sells"])), Trie.empty<number>().pipe(Trie.insert("shells", 0))),
|
|
644
|
+
* true
|
|
645
|
+
* )
|
|
646
|
+
*
|
|
647
|
+
* @since 2.0.0
|
|
648
|
+
* @category mutations
|
|
649
|
+
*/
|
|
650
|
+
const removeMany = exports.removeMany = TR.removeMany;
|
|
651
|
+
/**
|
|
652
|
+
* Insert multiple entries in the `Trie` at once.
|
|
653
|
+
*
|
|
654
|
+
* @example
|
|
655
|
+
* import * as Trie from "effect/Trie"
|
|
656
|
+
* import * as Equal from "effect/Equal"
|
|
657
|
+
*
|
|
658
|
+
* const trie = Trie.empty<number>().pipe(
|
|
659
|
+
* Trie.insert("shells", 0),
|
|
660
|
+
* Trie.insert("sells", 1),
|
|
661
|
+
* Trie.insert("she", 2)
|
|
662
|
+
* )
|
|
663
|
+
*
|
|
664
|
+
* const trieInsert = Trie.empty<number>().pipe(
|
|
665
|
+
* Trie.insert("shells", 0),
|
|
666
|
+
* Trie.insertMany(
|
|
667
|
+
* [["sells", 1], ["she", 2]]
|
|
668
|
+
* )
|
|
669
|
+
* )
|
|
670
|
+
*
|
|
671
|
+
* assert.equal(
|
|
672
|
+
* Equal.equals(trie, trieInsert),
|
|
673
|
+
* true
|
|
674
|
+
* )
|
|
675
|
+
*
|
|
676
|
+
* @since 2.0.0
|
|
677
|
+
* @category mutations
|
|
678
|
+
*/
|
|
679
|
+
const insertMany = exports.insertMany = TR.insertMany;
|
|
680
|
+
//# sourceMappingURL=Trie.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Trie.js","names":["TR","_interopRequireWildcard","require","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","TypeId","TrieTypeId","empty","exports","fromIterable","make","insert","keys","values","entries","toEntries","self","Array","from","keysWithPrefix","valuesWithPrefix","entriesWithPrefix","toEntriesWithPrefix","longestPrefixOf","size","isEmpty","unsafeGet","remove","reduce","map","filter","filterMap","compact","forEach","modify","removeMany","insertMany"],"sources":["../../src/Trie.ts"],"sourcesContent":[null],"mappings":";;;;;;AAmBA,IAAAA,EAAA,gBAAAC,uBAAA,eAAAC,OAAA;AAAwC,SAAAC,yBAAAC,CAAA;EAAA,yBAAAC,OAAA;EAAA,IAAAC,CAAA,OAAAD,OAAA;IAAAE,CAAA,OAAAF,OAAA;EAAA,QAAAF,wBAAA,YAAAA,CAAAC,CAAA;IAAA,OAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA;EAAA,GAAAF,CAAA;AAAA;AAAA,SAAAH,wBAAAG,CAAA,EAAAE,CAAA;EAAA,KAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA;EAAA,aAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA;IAAAK,OAAA,EAAAL;EAAA;EAAA,IAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA;EAAA,IAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA;EAAA,IAAAQ,CAAA;MAAAC,SAAA;IAAA;IAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA;EAAA,SAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAc,CAAA;IAAA,IAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA;IAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA;EAAA;EAAA,OAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAgB,GAAA,CAAAnB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA;AAKxC,MAAMY,MAAM,GAAkBxB,EAAE,CAACyB,UAAoB;AAkBrD;;;;;;;;;;;;;;;AAeO,MAAMC,KAAK,GAAAC,OAAA,CAAAD,KAAA,GAA6B1B,EAAE,CAAC0B,KAAK;AAEvD;;;;;;;;;;;;;;;;;AAiBO,MAAME,YAAY,GAAAD,OAAA,CAAAC,YAAA,GAA4D5B,EAAE,CAAC4B,YAAY;AAEpG;;;;;;;;;;;;;;;AAeO,MAAMC,IAAI,GAAAF,OAAA,CAAAE,IAAA,GAEwD7B,EAAE,CAAC6B,IAAI;AAEhF;;;;;;;;;;;;;;;;;;;;;AAqBO,MAAMC,MAAM,GAAAH,OAAA,CAAAG,MAAA,GAGf9B,EAAE,CAAC8B,MAAM;AAEb;;;;;;;;;;;;;;;;;;;;AAoBO,MAAMC,IAAI,GAAAJ,OAAA,CAAAI,IAAA,GAAmD/B,EAAE,CAAC+B,IAAI;AAE3E;;;;;;;;;;;;;;;;;;;;AAoBO,MAAMC,MAAM,GAAAL,OAAA,CAAAK,MAAA,GAA8ChC,EAAE,CAACgC,MAAM;AAE1E;;;;;;;;;;;;;;;;;;;AAmBO,MAAMC,OAAO,GAAAN,OAAA,CAAAM,OAAA,GAAwDjC,EAAE,CAACiC,OAAO;AAEtF;;;;;;;;;;;;;;;;;;;AAmBO,MAAMC,SAAS,GAAOC,IAAa,IAAyBC,KAAK,CAACC,IAAI,CAACJ,OAAO,CAACE,IAAI,CAAC,CAAC;AAE5F;;;;;;;;;;;;;;;;;;;;AAAAR,OAAA,CAAAO,SAAA,GAAAA,SAAA;AAoBO,MAAMI,cAAc,GAAAX,OAAA,CAAAW,cAAA,GAGvBtC,EAAE,CAACsC,cAAc;AAErB;;;;;;;;;;;;;;;;;;;;;;AAsBO,MAAMC,gBAAgB,GAAAZ,OAAA,CAAAY,gBAAA,GAGzBvC,EAAE,CAACuC,gBAAgB;AAEvB;;;;;;;;;;;;;;;;;;;;AAoBO,MAAMC,iBAAiB,GAAAb,OAAA,CAAAa,iBAAA,GAG1BxC,EAAE,CAACwC,iBAAiB;AAExB;;;;;;;;;;;;;;;;;;;;AAoBO,MAAMC,mBAAmB,GAAAd,OAAA,CAAAc,mBAAA,GAG5BzC,EAAE,CAACyC,mBAAmB;AAE1B;;;;;;;;;;;;;;;;;;;;;;AAsBO,MAAMC,eAAe,GAAAf,OAAA,CAAAe,eAAA,GAGxB1C,EAAE,CAAC0C,eAAe;AAEtB;;;;;;;;;;;;;;;;AAgBO,MAAMC,IAAI,GAAAhB,OAAA,CAAAgB,IAAA,GAAiC3C,EAAE,CAAC2C,IAAI;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BO,MAAMhC,GAAG,GAAAgB,OAAA,CAAAhB,GAAA,GAGZX,EAAE,CAACW,GAAG;AAEV;;;;;;;;;;;;;;;;;;;;;;;;;AAyBO,MAAMD,GAAG,GAAAiB,OAAA,CAAAjB,GAAA,GAGZV,EAAE,CAACU,GAAG;AAEV;;;;;;;;;;;;;;;AAeO,MAAMkC,OAAO,GAAAjB,OAAA,CAAAiB,OAAA,GAAkC5C,EAAE,CAAC4C,OAAO;AAEhE;;;;;;;;;;;;;;;;;;;AAmBO,MAAMC,SAAS,GAAAlB,OAAA,CAAAkB,SAAA,GAGlB7C,EAAE,CAAC6C,SAAS;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;AAwBO,MAAMC,MAAM,GAAAnB,OAAA,CAAAmB,MAAA,GAGf9C,EAAE,CAAC8C,MAAM;AAEb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCO,MAAMC,MAAM,GAAApB,OAAA,CAAAoB,MAAA,GAGf/C,EAAE,CAAC+C,MAAM;AAEb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BO,MAAMC,GAAG,GAAArB,OAAA,CAAAqB,GAAA,GAGZhD,EAAE,CAACgD,GAAG;AAEV;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BO,MAAMC,MAAM,GAAAtB,OAAA,CAAAsB,MAAA,GAKfjD,EAAE,CAACiD,MAAM;AAEb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCO,MAAMC,SAAS,GAAAvB,OAAA,CAAAuB,SAAA,GAGlBlD,EAAE,CAACkD,SAAS;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;AAwBO,MAAMC,OAAO,GAAAxB,OAAA,CAAAwB,OAAA,GAA0CnD,EAAE,CAACmD,OAAO;AAExE;;;;;;;;;;;;;;;;;;;;;;AAsBO,MAAMC,OAAO,GAAAzB,OAAA,CAAAyB,OAAA,GAGhBpD,EAAE,CAACoD,OAAO;AAEd;;;;;;;;;;;;;;;;;;;;;AAqBO,MAAMC,MAAM,GAAA1B,OAAA,CAAA0B,MAAA,GAGfrD,EAAE,CAACqD,MAAM;AAEb;;;;;;;;;;;;;;;;;;;;;AAqBO,MAAMC,UAAU,GAAA3B,OAAA,CAAA2B,UAAA,GAGnBtD,EAAE,CAACsD,UAAU;AAEjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BO,MAAMC,UAAU,GAAA5B,OAAA,CAAA4B,UAAA,GAGnBvD,EAAE,CAACuD,UAAU"}
|