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.
Files changed (112) hide show
  1. package/FiberMap/package.json +6 -0
  2. package/FiberSet/package.json +6 -0
  3. package/Trie/package.json +6 -0
  4. package/dist/cjs/FiberMap.js +190 -0
  5. package/dist/cjs/FiberMap.js.map +1 -0
  6. package/dist/cjs/FiberSet.js +150 -0
  7. package/dist/cjs/FiberSet.js.map +1 -0
  8. package/dist/cjs/MutableHashMap.js +11 -1
  9. package/dist/cjs/MutableHashMap.js.map +1 -1
  10. package/dist/cjs/MutableHashSet.js +7 -1
  11. package/dist/cjs/MutableHashSet.js.map +1 -1
  12. package/dist/cjs/MutableList.js +8 -11
  13. package/dist/cjs/MutableList.js.map +1 -1
  14. package/dist/cjs/Schedule.js.map +1 -1
  15. package/dist/cjs/Struct.js +16 -1
  16. package/dist/cjs/Struct.js.map +1 -1
  17. package/dist/cjs/Trie.js +680 -0
  18. package/dist/cjs/Trie.js.map +1 -0
  19. package/dist/cjs/index.js +8 -2
  20. package/dist/cjs/index.js.map +1 -1
  21. package/dist/cjs/internal/hashMap/node.js +2 -2
  22. package/dist/cjs/internal/hashMap/node.js.map +1 -1
  23. package/dist/cjs/internal/pubsub.js +11 -17
  24. package/dist/cjs/internal/pubsub.js.map +1 -1
  25. package/dist/cjs/internal/redBlackTree/node.js +35 -30
  26. package/dist/cjs/internal/redBlackTree/node.js.map +1 -1
  27. package/dist/cjs/internal/redBlackTree.js +69 -13
  28. package/dist/cjs/internal/redBlackTree.js.map +1 -1
  29. package/dist/cjs/internal/schedule.js +1 -1
  30. package/dist/cjs/internal/schedule.js.map +1 -1
  31. package/dist/cjs/internal/stack.js +6 -11
  32. package/dist/cjs/internal/stack.js.map +1 -1
  33. package/dist/cjs/internal/trie.js +588 -0
  34. package/dist/cjs/internal/trie.js.map +1 -0
  35. package/dist/cjs/internal/version.js +1 -1
  36. package/dist/dts/FiberMap.d.ts +135 -0
  37. package/dist/dts/FiberMap.d.ts.map +1 -0
  38. package/dist/dts/FiberSet.d.ts +99 -0
  39. package/dist/dts/FiberSet.d.ts.map +1 -0
  40. package/dist/dts/MutableHashMap.d.ts +4 -0
  41. package/dist/dts/MutableHashMap.d.ts.map +1 -1
  42. package/dist/dts/MutableHashSet.d.ts +5 -0
  43. package/dist/dts/MutableHashSet.d.ts.map +1 -1
  44. package/dist/dts/MutableList.d.ts.map +1 -1
  45. package/dist/dts/Schedule.d.ts +2 -1
  46. package/dist/dts/Schedule.d.ts.map +1 -1
  47. package/dist/dts/Struct.d.ts +17 -3
  48. package/dist/dts/Struct.d.ts.map +1 -1
  49. package/dist/dts/Trie.d.ts +740 -0
  50. package/dist/dts/Trie.d.ts.map +1 -0
  51. package/dist/dts/Types.d.ts +4 -0
  52. package/dist/dts/Types.d.ts.map +1 -1
  53. package/dist/dts/index.d.ts +26 -0
  54. package/dist/dts/index.d.ts.map +1 -1
  55. package/dist/dts/internal/redBlackTree/node.d.ts +8 -0
  56. package/dist/dts/internal/redBlackTree/node.d.ts.map +1 -1
  57. package/dist/dts/internal/stack.d.ts +1 -1
  58. package/dist/dts/internal/stack.d.ts.map +1 -1
  59. package/dist/dts/internal/trie.d.ts +2 -0
  60. package/dist/dts/internal/trie.d.ts.map +1 -0
  61. package/dist/dts/internal/version.d.ts +1 -1
  62. package/dist/esm/FiberMap.js +154 -0
  63. package/dist/esm/FiberMap.js.map +1 -0
  64. package/dist/esm/FiberSet.js +114 -0
  65. package/dist/esm/FiberSet.js.map +1 -0
  66. package/dist/esm/MutableHashMap.js +9 -0
  67. package/dist/esm/MutableHashMap.js.map +1 -1
  68. package/dist/esm/MutableHashSet.js +5 -0
  69. package/dist/esm/MutableHashSet.js.map +1 -1
  70. package/dist/esm/MutableList.js +8 -11
  71. package/dist/esm/MutableList.js.map +1 -1
  72. package/dist/esm/Schedule.js.map +1 -1
  73. package/dist/esm/Struct.js +14 -0
  74. package/dist/esm/Struct.js.map +1 -1
  75. package/dist/esm/Trie.js +648 -0
  76. package/dist/esm/Trie.js.map +1 -0
  77. package/dist/esm/index.js +26 -0
  78. package/dist/esm/index.js.map +1 -1
  79. package/dist/esm/internal/hashMap/node.js +2 -2
  80. package/dist/esm/internal/hashMap/node.js.map +1 -1
  81. package/dist/esm/internal/pubsub.js +11 -17
  82. package/dist/esm/internal/pubsub.js.map +1 -1
  83. package/dist/esm/internal/redBlackTree/node.js +31 -25
  84. package/dist/esm/internal/redBlackTree/node.js.map +1 -1
  85. package/dist/esm/internal/redBlackTree.js +69 -13
  86. package/dist/esm/internal/redBlackTree.js.map +1 -1
  87. package/dist/esm/internal/schedule.js +1 -1
  88. package/dist/esm/internal/schedule.js.map +1 -1
  89. package/dist/esm/internal/stack.js +4 -9
  90. package/dist/esm/internal/stack.js.map +1 -1
  91. package/dist/esm/internal/trie.js +547 -0
  92. package/dist/esm/internal/trie.js.map +1 -0
  93. package/dist/esm/internal/version.js +1 -1
  94. package/package.json +25 -1
  95. package/src/FiberMap.ts +296 -0
  96. package/src/FiberSet.ts +194 -0
  97. package/src/MutableHashMap.ts +10 -0
  98. package/src/MutableHashSet.ts +6 -0
  99. package/src/MutableList.ts +15 -7
  100. package/src/Schedule.ts +2 -1
  101. package/src/Struct.ts +24 -6
  102. package/src/Trie.ts +772 -0
  103. package/src/Types.ts +5 -0
  104. package/src/index.ts +29 -0
  105. package/src/internal/hashMap/node.ts +3 -3
  106. package/src/internal/pubsub.ts +15 -14
  107. package/src/internal/redBlackTree/node.ts +37 -17
  108. package/src/internal/redBlackTree.ts +73 -38
  109. package/src/internal/schedule.ts +2 -2
  110. package/src/internal/stack.ts +8 -2
  111. package/src/internal/trie.ts +721 -0
  112. package/src/internal/version.ts +1 -1
@@ -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":"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"}