effect 3.8.4 → 3.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (757) hide show
  1. package/dist/cjs/Array.js +24 -3
  2. package/dist/cjs/Array.js.map +1 -1
  3. package/dist/cjs/BigDecimal.js +5 -3
  4. package/dist/cjs/BigDecimal.js.map +1 -1
  5. package/dist/cjs/BigInt.js.map +1 -1
  6. package/dist/cjs/Boolean.js.map +1 -1
  7. package/dist/cjs/Cause.js.map +1 -1
  8. package/dist/cjs/Channel.js.map +1 -1
  9. package/dist/cjs/ChildExecutorDecision.js.map +1 -1
  10. package/dist/cjs/Chunk.js +3 -0
  11. package/dist/cjs/Chunk.js.map +1 -1
  12. package/dist/cjs/Config.js.map +1 -1
  13. package/dist/cjs/ConfigError.js.map +1 -1
  14. package/dist/cjs/ConfigProvider.js.map +1 -1
  15. package/dist/cjs/ConfigProviderPathPatch.js.map +1 -1
  16. package/dist/cjs/Console.js.map +1 -1
  17. package/dist/cjs/Context.js.map +1 -1
  18. package/dist/cjs/Cron.js +3 -0
  19. package/dist/cjs/Cron.js.map +1 -1
  20. package/dist/cjs/Data.js.map +1 -1
  21. package/dist/cjs/DateTime.js +6 -0
  22. package/dist/cjs/DateTime.js.map +1 -1
  23. package/dist/cjs/Deferred.js.map +1 -1
  24. package/dist/cjs/Differ.js.map +1 -1
  25. package/dist/cjs/Duration.js +3 -0
  26. package/dist/cjs/Duration.js.map +1 -1
  27. package/dist/cjs/Effect.js +122 -35
  28. package/dist/cjs/Effect.js.map +1 -1
  29. package/dist/cjs/Either.js.map +1 -1
  30. package/dist/cjs/Equivalence.js.map +1 -1
  31. package/dist/cjs/ExecutionStrategy.js.map +1 -1
  32. package/dist/cjs/Exit.js.map +1 -1
  33. package/dist/cjs/Fiber.js.map +1 -1
  34. package/dist/cjs/FiberHandle.js +3 -0
  35. package/dist/cjs/FiberHandle.js.map +1 -1
  36. package/dist/cjs/FiberId.js.map +1 -1
  37. package/dist/cjs/FiberMap.js +3 -0
  38. package/dist/cjs/FiberMap.js.map +1 -1
  39. package/dist/cjs/FiberRef.js.map +1 -1
  40. package/dist/cjs/FiberRefs.js.map +1 -1
  41. package/dist/cjs/FiberRefsPatch.js.map +1 -1
  42. package/dist/cjs/FiberSet.js +3 -0
  43. package/dist/cjs/FiberSet.js.map +1 -1
  44. package/dist/cjs/Function.js.map +1 -1
  45. package/dist/cjs/GroupBy.js.map +1 -1
  46. package/dist/cjs/Hash.js.map +1 -1
  47. package/dist/cjs/HashMap.js.map +1 -1
  48. package/dist/cjs/HashSet.js.map +1 -1
  49. package/dist/cjs/Inspectable.js +15 -1
  50. package/dist/cjs/Inspectable.js.map +1 -1
  51. package/dist/cjs/Iterable.js.map +1 -1
  52. package/dist/cjs/KeyedPool.js.map +1 -1
  53. package/dist/cjs/Layer.js.map +1 -1
  54. package/dist/cjs/List.js +6 -0
  55. package/dist/cjs/List.js.map +1 -1
  56. package/dist/cjs/LogLevel.js.map +1 -1
  57. package/dist/cjs/Logger.js.map +1 -1
  58. package/dist/cjs/Mailbox.js.map +1 -1
  59. package/dist/cjs/ManagedRuntime.js +16 -1
  60. package/dist/cjs/ManagedRuntime.js.map +1 -1
  61. package/dist/cjs/MergeDecision.js.map +1 -1
  62. package/dist/cjs/MergeState.js.map +1 -1
  63. package/dist/cjs/MergeStrategy.js.map +1 -1
  64. package/dist/cjs/Metric.js.map +1 -1
  65. package/dist/cjs/MetricHook.js.map +1 -1
  66. package/dist/cjs/MetricKey.js.map +1 -1
  67. package/dist/cjs/MetricPolling.js.map +1 -1
  68. package/dist/cjs/MetricState.js.map +1 -1
  69. package/dist/cjs/Micro.js +6 -0
  70. package/dist/cjs/Micro.js.map +1 -1
  71. package/dist/cjs/MutableHashMap.js +3 -0
  72. package/dist/cjs/MutableHashMap.js.map +1 -1
  73. package/dist/cjs/MutableHashSet.js +3 -0
  74. package/dist/cjs/MutableHashSet.js.map +1 -1
  75. package/dist/cjs/MutableList.js +3 -0
  76. package/dist/cjs/MutableList.js.map +1 -1
  77. package/dist/cjs/MutableQueue.js +3 -0
  78. package/dist/cjs/MutableQueue.js.map +1 -1
  79. package/dist/cjs/MutableRef.js +3 -0
  80. package/dist/cjs/MutableRef.js.map +1 -1
  81. package/dist/cjs/Number.js.map +1 -1
  82. package/dist/cjs/Option.js.map +1 -1
  83. package/dist/cjs/Order.js.map +1 -1
  84. package/dist/cjs/Ordering.js.map +1 -1
  85. package/dist/cjs/Pipeable.js.map +1 -1
  86. package/dist/cjs/Pool.js.map +1 -1
  87. package/dist/cjs/Predicate.js +18 -2
  88. package/dist/cjs/Predicate.js.map +1 -1
  89. package/dist/cjs/PubSub.js.map +1 -1
  90. package/dist/cjs/Queue.js.map +1 -1
  91. package/dist/cjs/RcMap.js.map +1 -1
  92. package/dist/cjs/Readable.js.map +1 -1
  93. package/dist/cjs/Record.js.map +1 -1
  94. package/dist/cjs/RedBlackTree.js.map +1 -1
  95. package/dist/cjs/Ref.js.map +1 -1
  96. package/dist/cjs/RegExp.js +20 -1
  97. package/dist/cjs/RegExp.js.map +1 -1
  98. package/dist/cjs/Request.js.map +1 -1
  99. package/dist/cjs/RequestResolver.js.map +1 -1
  100. package/dist/cjs/Resource.js.map +1 -1
  101. package/dist/cjs/Runtime.js.map +1 -1
  102. package/dist/cjs/RuntimeFlags.js.map +1 -1
  103. package/dist/cjs/RuntimeFlagsPatch.js.map +1 -1
  104. package/dist/cjs/STM.js.map +1 -1
  105. package/dist/cjs/Schedule.js.map +1 -1
  106. package/dist/cjs/ScheduleInterval.js.map +1 -1
  107. package/dist/cjs/ScheduleIntervals.js.map +1 -1
  108. package/dist/cjs/Scheduler.js.map +1 -1
  109. package/dist/cjs/Scope.js.map +1 -1
  110. package/dist/cjs/ScopedRef.js.map +1 -1
  111. package/dist/cjs/Sink.js.map +1 -1
  112. package/dist/cjs/SortedMap.js +3 -0
  113. package/dist/cjs/SortedMap.js.map +1 -1
  114. package/dist/cjs/SortedSet.js +3 -0
  115. package/dist/cjs/SortedSet.js.map +1 -1
  116. package/dist/cjs/Stream.js +17 -3
  117. package/dist/cjs/Stream.js.map +1 -1
  118. package/dist/cjs/StreamHaltStrategy.js.map +1 -1
  119. package/dist/cjs/String.js.map +1 -1
  120. package/dist/cjs/Struct.js.map +1 -1
  121. package/dist/cjs/Subscribable.js.map +1 -1
  122. package/dist/cjs/SubscriptionRef.js.map +1 -1
  123. package/dist/cjs/SynchronizedRef.js.map +1 -1
  124. package/dist/cjs/TArray.js.map +1 -1
  125. package/dist/cjs/TDeferred.js.map +1 -1
  126. package/dist/cjs/TMap.js.map +1 -1
  127. package/dist/cjs/TPriorityQueue.js.map +1 -1
  128. package/dist/cjs/TPubSub.js.map +1 -1
  129. package/dist/cjs/TQueue.js.map +1 -1
  130. package/dist/cjs/TReentrantLock.js.map +1 -1
  131. package/dist/cjs/TRef.js.map +1 -1
  132. package/dist/cjs/TSemaphore.js.map +1 -1
  133. package/dist/cjs/TSet.js.map +1 -1
  134. package/dist/cjs/Take.js.map +1 -1
  135. package/dist/cjs/TestAnnotationMap.js.map +1 -1
  136. package/dist/cjs/TestClock.js.map +1 -1
  137. package/dist/cjs/TestServices.js.map +1 -1
  138. package/dist/cjs/Trie.js.map +1 -1
  139. package/dist/cjs/Tuple.js +21 -2
  140. package/dist/cjs/Tuple.js.map +1 -1
  141. package/dist/cjs/Unify.js.map +1 -1
  142. package/dist/cjs/UpstreamPullRequest.js.map +1 -1
  143. package/dist/cjs/UpstreamPullStrategy.js.map +1 -1
  144. package/dist/cjs/Utils.js +1 -14
  145. package/dist/cjs/Utils.js.map +1 -1
  146. package/dist/cjs/internal/cause.js +3 -0
  147. package/dist/cjs/internal/cause.js.map +1 -1
  148. package/dist/cjs/internal/context.js +6 -1
  149. package/dist/cjs/internal/context.js.map +1 -1
  150. package/dist/cjs/internal/core-effect.js.map +1 -1
  151. package/dist/cjs/internal/core.js +16 -3
  152. package/dist/cjs/internal/core.js.map +1 -1
  153. package/dist/cjs/internal/effect/circular.js +5 -1
  154. package/dist/cjs/internal/effect/circular.js.map +1 -1
  155. package/dist/cjs/internal/fiberId.js +9 -0
  156. package/dist/cjs/internal/fiberId.js.map +1 -1
  157. package/dist/cjs/internal/hashMap.js +3 -0
  158. package/dist/cjs/internal/hashMap.js.map +1 -1
  159. package/dist/cjs/internal/hashSet.js +3 -0
  160. package/dist/cjs/internal/hashSet.js.map +1 -1
  161. package/dist/cjs/internal/layer.js +33 -19
  162. package/dist/cjs/internal/layer.js.map +1 -1
  163. package/dist/cjs/internal/mailbox.js +3 -0
  164. package/dist/cjs/internal/mailbox.js.map +1 -1
  165. package/dist/cjs/internal/managedRuntime/circular.js +10 -0
  166. package/dist/cjs/internal/managedRuntime/circular.js.map +1 -0
  167. package/dist/cjs/internal/managedRuntime.js +23 -9
  168. package/dist/cjs/internal/managedRuntime.js.map +1 -1
  169. package/dist/cjs/internal/option.js +3 -0
  170. package/dist/cjs/internal/option.js.map +1 -1
  171. package/dist/cjs/internal/pool.js +6 -1
  172. package/dist/cjs/internal/pool.js.map +1 -1
  173. package/dist/cjs/internal/redBlackTree.js +3 -0
  174. package/dist/cjs/internal/redBlackTree.js.map +1 -1
  175. package/dist/cjs/internal/resource.js +15 -5
  176. package/dist/cjs/internal/resource.js.map +1 -1
  177. package/dist/cjs/internal/runtime.js +4 -1
  178. package/dist/cjs/internal/runtime.js.map +1 -1
  179. package/dist/cjs/internal/scopedRef.js +11 -8
  180. package/dist/cjs/internal/scopedRef.js.map +1 -1
  181. package/dist/cjs/internal/stm/core.js +1 -2
  182. package/dist/cjs/internal/stm/core.js.map +1 -1
  183. package/dist/cjs/internal/stream.js +12 -3
  184. package/dist/cjs/internal/stream.js.map +1 -1
  185. package/dist/cjs/internal/trie.js +3 -0
  186. package/dist/cjs/internal/trie.js.map +1 -1
  187. package/dist/cjs/internal/version.js +1 -1
  188. package/dist/dts/Array.d.ts +2735 -2
  189. package/dist/dts/Array.d.ts.map +1 -1
  190. package/dist/dts/BigDecimal.d.ts +558 -1
  191. package/dist/dts/BigDecimal.d.ts.map +1 -1
  192. package/dist/dts/BigInt.d.ts +490 -0
  193. package/dist/dts/BigInt.d.ts.map +1 -1
  194. package/dist/dts/Boolean.d.ts +228 -0
  195. package/dist/dts/Boolean.d.ts.map +1 -1
  196. package/dist/dts/Cause.d.ts +172 -0
  197. package/dist/dts/Cause.d.ts.map +1 -1
  198. package/dist/dts/Channel.d.ts +750 -0
  199. package/dist/dts/Channel.d.ts.map +1 -1
  200. package/dist/dts/ChildExecutorDecision.d.ts +12 -0
  201. package/dist/dts/ChildExecutorDecision.d.ts.map +1 -1
  202. package/dist/dts/Chunk.d.ts +791 -0
  203. package/dist/dts/Chunk.d.ts.map +1 -1
  204. package/dist/dts/Config.d.ts +174 -0
  205. package/dist/dts/Config.d.ts.map +1 -1
  206. package/dist/dts/ConfigError.d.ts +16 -0
  207. package/dist/dts/ConfigError.d.ts.map +1 -1
  208. package/dist/dts/ConfigProvider.d.ts +84 -0
  209. package/dist/dts/ConfigProvider.d.ts.map +1 -1
  210. package/dist/dts/ConfigProviderPathPatch.d.ts +32 -0
  211. package/dist/dts/ConfigProviderPathPatch.d.ts.map +1 -1
  212. package/dist/dts/Console.d.ts +24 -0
  213. package/dist/dts/Console.d.ts.map +1 -1
  214. package/dist/dts/Context.d.ts +234 -3
  215. package/dist/dts/Context.d.ts.map +1 -1
  216. package/dist/dts/Cron.d.ts +12 -0
  217. package/dist/dts/Cron.d.ts.map +1 -1
  218. package/dist/dts/Data.d.ts +165 -0
  219. package/dist/dts/Data.d.ts.map +1 -1
  220. package/dist/dts/DateTime.d.ts +878 -0
  221. package/dist/dts/DateTime.d.ts.map +1 -1
  222. package/dist/dts/Deferred.d.ts +171 -1
  223. package/dist/dts/Deferred.d.ts.map +1 -1
  224. package/dist/dts/Differ.d.ts +78 -0
  225. package/dist/dts/Differ.d.ts.map +1 -1
  226. package/dist/dts/Duration.d.ts +130 -0
  227. package/dist/dts/Duration.d.ts.map +1 -1
  228. package/dist/dts/Effect.d.ts +4350 -13
  229. package/dist/dts/Effect.d.ts.map +1 -1
  230. package/dist/dts/Either.d.ts +620 -0
  231. package/dist/dts/Either.d.ts.map +1 -1
  232. package/dist/dts/Equivalence.d.ts +24 -0
  233. package/dist/dts/Equivalence.d.ts.map +1 -1
  234. package/dist/dts/ExecutionStrategy.d.ts +14 -0
  235. package/dist/dts/ExecutionStrategy.d.ts.map +1 -1
  236. package/dist/dts/Exit.d.ts +252 -0
  237. package/dist/dts/Exit.d.ts.map +1 -1
  238. package/dist/dts/Fiber.d.ts +182 -0
  239. package/dist/dts/Fiber.d.ts.map +1 -1
  240. package/dist/dts/FiberHandle.d.ts +42 -0
  241. package/dist/dts/FiberHandle.d.ts.map +1 -1
  242. package/dist/dts/FiberId.d.ts +24 -0
  243. package/dist/dts/FiberId.d.ts.map +1 -1
  244. package/dist/dts/FiberMap.d.ts +102 -0
  245. package/dist/dts/FiberMap.d.ts.map +1 -1
  246. package/dist/dts/FiberRef.d.ts +80 -0
  247. package/dist/dts/FiberRef.d.ts.map +1 -1
  248. package/dist/dts/FiberRefs.d.ts +84 -0
  249. package/dist/dts/FiberRefs.d.ts.map +1 -1
  250. package/dist/dts/FiberRefsPatch.d.ts +30 -0
  251. package/dist/dts/FiberRefsPatch.d.ts.map +1 -1
  252. package/dist/dts/FiberSet.d.ts +38 -0
  253. package/dist/dts/FiberSet.d.ts.map +1 -1
  254. package/dist/dts/Function.d.ts +144 -28
  255. package/dist/dts/Function.d.ts.map +1 -1
  256. package/dist/dts/GroupBy.d.ts +38 -0
  257. package/dist/dts/GroupBy.d.ts.map +1 -1
  258. package/dist/dts/Hash.d.ts +8 -0
  259. package/dist/dts/Hash.d.ts.map +1 -1
  260. package/dist/dts/HashMap.d.ts +315 -0
  261. package/dist/dts/HashMap.d.ts.map +1 -1
  262. package/dist/dts/HashSet.d.ts +284 -0
  263. package/dist/dts/HashSet.d.ts.map +1 -1
  264. package/dist/dts/Inspectable.d.ts +15 -0
  265. package/dist/dts/Inspectable.d.ts.map +1 -1
  266. package/dist/dts/Iterable.d.ts +454 -0
  267. package/dist/dts/Iterable.d.ts.map +1 -1
  268. package/dist/dts/KeyedPool.d.ts +34 -0
  269. package/dist/dts/KeyedPool.d.ts.map +1 -1
  270. package/dist/dts/Layer.d.ts +460 -5
  271. package/dist/dts/Layer.d.ts.map +1 -1
  272. package/dist/dts/List.d.ts +430 -0
  273. package/dist/dts/List.d.ts.map +1 -1
  274. package/dist/dts/LogLevel.d.ts +46 -0
  275. package/dist/dts/LogLevel.d.ts.map +1 -1
  276. package/dist/dts/Logger.d.ts +194 -0
  277. package/dist/dts/Logger.d.ts.map +1 -1
  278. package/dist/dts/Mailbox.d.ts +16 -0
  279. package/dist/dts/Mailbox.d.ts.map +1 -1
  280. package/dist/dts/ManagedRuntime.d.ts +41 -2
  281. package/dist/dts/ManagedRuntime.d.ts.map +1 -1
  282. package/dist/dts/MergeDecision.d.ts +8 -0
  283. package/dist/dts/MergeDecision.d.ts.map +1 -1
  284. package/dist/dts/MergeState.d.ts +8 -0
  285. package/dist/dts/MergeState.d.ts.map +1 -1
  286. package/dist/dts/MergeStrategy.d.ts +12 -0
  287. package/dist/dts/MergeStrategy.d.ts.map +1 -1
  288. package/dist/dts/Metric.d.ts +410 -0
  289. package/dist/dts/Metric.d.ts.map +1 -1
  290. package/dist/dts/MetricHook.d.ts +24 -0
  291. package/dist/dts/MetricHook.d.ts.map +1 -1
  292. package/dist/dts/MetricKey.d.ts +48 -0
  293. package/dist/dts/MetricKey.d.ts.map +1 -1
  294. package/dist/dts/MetricPolling.d.ts +40 -0
  295. package/dist/dts/MetricPolling.d.ts.map +1 -1
  296. package/dist/dts/MetricState.d.ts +16 -0
  297. package/dist/dts/MetricState.d.ts.map +1 -1
  298. package/dist/dts/Micro.d.ts +1110 -0
  299. package/dist/dts/Micro.d.ts.map +1 -1
  300. package/dist/dts/MutableHashMap.d.ts +50 -0
  301. package/dist/dts/MutableHashMap.d.ts.map +1 -1
  302. package/dist/dts/MutableHashSet.d.ts +24 -0
  303. package/dist/dts/MutableHashSet.d.ts.map +1 -1
  304. package/dist/dts/MutableList.d.ts +36 -0
  305. package/dist/dts/MutableList.d.ts.map +1 -1
  306. package/dist/dts/MutableQueue.d.ts +62 -0
  307. package/dist/dts/MutableQueue.d.ts.map +1 -1
  308. package/dist/dts/MutableRef.d.ts +56 -0
  309. package/dist/dts/MutableRef.d.ts.map +1 -1
  310. package/dist/dts/Number.d.ts +474 -0
  311. package/dist/dts/Number.d.ts.map +1 -1
  312. package/dist/dts/Option.d.ts +1019 -0
  313. package/dist/dts/Option.d.ts.map +1 -1
  314. package/dist/dts/Order.d.ts +24 -0
  315. package/dist/dts/Order.d.ts.map +1 -1
  316. package/dist/dts/Ordering.d.ts +66 -0
  317. package/dist/dts/Ordering.d.ts.map +1 -1
  318. package/dist/dts/Pipeable.d.ts +21 -21
  319. package/dist/dts/Pipeable.d.ts.map +1 -1
  320. package/dist/dts/Pool.d.ts +37 -1
  321. package/dist/dts/Pool.d.ts.map +1 -1
  322. package/dist/dts/Predicate.d.ts +513 -0
  323. package/dist/dts/Predicate.d.ts.map +1 -1
  324. package/dist/dts/PubSub.d.ts +28 -0
  325. package/dist/dts/PubSub.d.ts.map +1 -1
  326. package/dist/dts/Queue.d.ts +106 -2
  327. package/dist/dts/Queue.d.ts.map +1 -1
  328. package/dist/dts/RcMap.d.ts +70 -0
  329. package/dist/dts/RcMap.d.ts.map +1 -1
  330. package/dist/dts/Readable.d.ts +16 -0
  331. package/dist/dts/Readable.d.ts.map +1 -1
  332. package/dist/dts/Record.d.ts +800 -0
  333. package/dist/dts/Record.d.ts.map +1 -1
  334. package/dist/dts/RedBlackTree.d.ts +300 -0
  335. package/dist/dts/RedBlackTree.d.ts.map +1 -1
  336. package/dist/dts/Ref.d.ts +88 -0
  337. package/dist/dts/Ref.d.ts.map +1 -1
  338. package/dist/dts/RegExp.d.ts +12 -2
  339. package/dist/dts/RegExp.d.ts.map +1 -1
  340. package/dist/dts/Request.d.ts +76 -0
  341. package/dist/dts/Request.d.ts.map +1 -1
  342. package/dist/dts/RequestResolver.d.ts +144 -0
  343. package/dist/dts/RequestResolver.d.ts.map +1 -1
  344. package/dist/dts/Resource.d.ts +21 -1
  345. package/dist/dts/Resource.d.ts.map +1 -1
  346. package/dist/dts/Runtime.d.ts +126 -0
  347. package/dist/dts/Runtime.d.ts.map +1 -1
  348. package/dist/dts/RuntimeFlags.d.ts +100 -0
  349. package/dist/dts/RuntimeFlags.d.ts.map +1 -1
  350. package/dist/dts/RuntimeFlagsPatch.d.ts +112 -0
  351. package/dist/dts/RuntimeFlagsPatch.d.ts.map +1 -1
  352. package/dist/dts/STM.d.ts +1090 -0
  353. package/dist/dts/STM.d.ts.map +1 -1
  354. package/dist/dts/Schedule.d.ts +704 -0
  355. package/dist/dts/Schedule.d.ts.map +1 -1
  356. package/dist/dts/ScheduleInterval.d.ts +68 -0
  357. package/dist/dts/ScheduleInterval.d.ts.map +1 -1
  358. package/dist/dts/ScheduleIntervals.d.ts +50 -0
  359. package/dist/dts/ScheduleIntervals.d.ts.map +1 -1
  360. package/dist/dts/Scope.d.ts +36 -0
  361. package/dist/dts/Scope.d.ts.map +1 -1
  362. package/dist/dts/ScopedRef.d.ts +43 -1
  363. package/dist/dts/ScopedRef.d.ts.map +1 -1
  364. package/dist/dts/Sink.d.ts +464 -0
  365. package/dist/dts/Sink.d.ts.map +1 -1
  366. package/dist/dts/SortedMap.d.ts +76 -0
  367. package/dist/dts/SortedMap.d.ts.map +1 -1
  368. package/dist/dts/SortedSet.d.ts +142 -0
  369. package/dist/dts/SortedSet.d.ts.map +1 -1
  370. package/dist/dts/Stream.d.ts +4998 -1
  371. package/dist/dts/Stream.d.ts.map +1 -1
  372. package/dist/dts/StreamHaltStrategy.d.ts +12 -0
  373. package/dist/dts/StreamHaltStrategy.d.ts.map +1 -1
  374. package/dist/dts/String.d.ts +200 -0
  375. package/dist/dts/String.d.ts.map +1 -1
  376. package/dist/dts/Struct.d.ts +84 -0
  377. package/dist/dts/Struct.d.ts.map +1 -1
  378. package/dist/dts/Subscribable.d.ts +16 -0
  379. package/dist/dts/Subscribable.d.ts.map +1 -1
  380. package/dist/dts/SubscriptionRef.d.ts +152 -0
  381. package/dist/dts/SubscriptionRef.d.ts.map +1 -1
  382. package/dist/dts/SynchronizedRef.d.ts +152 -0
  383. package/dist/dts/SynchronizedRef.d.ts.map +1 -1
  384. package/dist/dts/TArray.d.ts +426 -0
  385. package/dist/dts/TArray.d.ts.map +1 -1
  386. package/dist/dts/TDeferred.d.ts +24 -0
  387. package/dist/dts/TDeferred.d.ts.map +1 -1
  388. package/dist/dts/TMap.d.ts +366 -0
  389. package/dist/dts/TMap.d.ts.map +1 -1
  390. package/dist/dts/TPriorityQueue.d.ts +60 -0
  391. package/dist/dts/TPriorityQueue.d.ts.map +1 -1
  392. package/dist/dts/TPubSub.d.ts +28 -0
  393. package/dist/dts/TPubSub.d.ts.map +1 -1
  394. package/dist/dts/TQueue.d.ts +108 -0
  395. package/dist/dts/TQueue.d.ts.map +1 -1
  396. package/dist/dts/TReentrantLock.d.ts +36 -0
  397. package/dist/dts/TReentrantLock.d.ts.map +1 -1
  398. package/dist/dts/TRef.d.ts +88 -0
  399. package/dist/dts/TRef.d.ts.map +1 -1
  400. package/dist/dts/TSemaphore.d.ts +40 -0
  401. package/dist/dts/TSemaphore.d.ts.map +1 -1
  402. package/dist/dts/TSet.d.ts +254 -0
  403. package/dist/dts/TSet.d.ts.map +1 -1
  404. package/dist/dts/Take.d.ts +56 -0
  405. package/dist/dts/Take.d.ts.map +1 -1
  406. package/dist/dts/TestAnnotationMap.d.ts.map +1 -1
  407. package/dist/dts/TestClock.d.ts.map +1 -1
  408. package/dist/dts/TestServices.d.ts.map +1 -1
  409. package/dist/dts/Trie.d.ts +906 -0
  410. package/dist/dts/Trie.d.ts.map +1 -1
  411. package/dist/dts/Tuple.d.ts +203 -0
  412. package/dist/dts/Tuple.d.ts.map +1 -1
  413. package/dist/dts/Types.d.ts +39 -0
  414. package/dist/dts/Types.d.ts.map +1 -1
  415. package/dist/dts/Unify.d.ts +26 -13
  416. package/dist/dts/Unify.d.ts.map +1 -1
  417. package/dist/dts/UpstreamPullRequest.d.ts +12 -0
  418. package/dist/dts/UpstreamPullRequest.d.ts.map +1 -1
  419. package/dist/dts/UpstreamPullStrategy.d.ts +12 -0
  420. package/dist/dts/UpstreamPullStrategy.d.ts.map +1 -1
  421. package/dist/dts/Utils.d.ts.map +1 -1
  422. package/dist/dts/internal/core.d.ts.map +1 -1
  423. package/dist/dts/internal/hashMap.d.ts.map +1 -1
  424. package/dist/dts/internal/layer.d.ts.map +1 -1
  425. package/dist/dts/internal/managedRuntime/circular.d.ts +2 -0
  426. package/dist/dts/internal/managedRuntime/circular.d.ts.map +1 -0
  427. package/dist/dts/internal/stream.d.ts.map +1 -1
  428. package/dist/esm/Array.js +21 -0
  429. package/dist/esm/Array.js.map +1 -1
  430. package/dist/esm/BigDecimal.js +6 -3
  431. package/dist/esm/BigDecimal.js.map +1 -1
  432. package/dist/esm/BigInt.js.map +1 -1
  433. package/dist/esm/Boolean.js.map +1 -1
  434. package/dist/esm/Cause.js.map +1 -1
  435. package/dist/esm/Channel.js.map +1 -1
  436. package/dist/esm/ChildExecutorDecision.js.map +1 -1
  437. package/dist/esm/Chunk.js +4 -1
  438. package/dist/esm/Chunk.js.map +1 -1
  439. package/dist/esm/Config.js.map +1 -1
  440. package/dist/esm/ConfigError.js.map +1 -1
  441. package/dist/esm/ConfigProvider.js.map +1 -1
  442. package/dist/esm/ConfigProviderPathPatch.js.map +1 -1
  443. package/dist/esm/Console.js.map +1 -1
  444. package/dist/esm/Context.js.map +1 -1
  445. package/dist/esm/Cron.js +4 -1
  446. package/dist/esm/Cron.js.map +1 -1
  447. package/dist/esm/Data.js.map +1 -1
  448. package/dist/esm/DateTime.js +6 -0
  449. package/dist/esm/DateTime.js.map +1 -1
  450. package/dist/esm/Deferred.js.map +1 -1
  451. package/dist/esm/Differ.js.map +1 -1
  452. package/dist/esm/Duration.js +4 -1
  453. package/dist/esm/Duration.js.map +1 -1
  454. package/dist/esm/Effect.js +116 -30
  455. package/dist/esm/Effect.js.map +1 -1
  456. package/dist/esm/Either.js.map +1 -1
  457. package/dist/esm/Equivalence.js.map +1 -1
  458. package/dist/esm/ExecutionStrategy.js.map +1 -1
  459. package/dist/esm/Exit.js.map +1 -1
  460. package/dist/esm/Fiber.js.map +1 -1
  461. package/dist/esm/FiberHandle.js +3 -0
  462. package/dist/esm/FiberHandle.js.map +1 -1
  463. package/dist/esm/FiberId.js.map +1 -1
  464. package/dist/esm/FiberMap.js +3 -0
  465. package/dist/esm/FiberMap.js.map +1 -1
  466. package/dist/esm/FiberRef.js.map +1 -1
  467. package/dist/esm/FiberRefs.js.map +1 -1
  468. package/dist/esm/FiberRefsPatch.js.map +1 -1
  469. package/dist/esm/FiberSet.js +3 -0
  470. package/dist/esm/FiberSet.js.map +1 -1
  471. package/dist/esm/Function.js.map +1 -1
  472. package/dist/esm/GroupBy.js.map +1 -1
  473. package/dist/esm/Hash.js.map +1 -1
  474. package/dist/esm/HashMap.js.map +1 -1
  475. package/dist/esm/HashSet.js.map +1 -1
  476. package/dist/esm/Inspectable.js +14 -0
  477. package/dist/esm/Inspectable.js.map +1 -1
  478. package/dist/esm/Iterable.js.map +1 -1
  479. package/dist/esm/KeyedPool.js.map +1 -1
  480. package/dist/esm/Layer.js.map +1 -1
  481. package/dist/esm/List.js +7 -1
  482. package/dist/esm/List.js.map +1 -1
  483. package/dist/esm/LogLevel.js.map +1 -1
  484. package/dist/esm/Logger.js.map +1 -1
  485. package/dist/esm/Mailbox.js.map +1 -1
  486. package/dist/esm/ManagedRuntime.js +15 -0
  487. package/dist/esm/ManagedRuntime.js.map +1 -1
  488. package/dist/esm/MergeDecision.js.map +1 -1
  489. package/dist/esm/MergeState.js.map +1 -1
  490. package/dist/esm/MergeStrategy.js.map +1 -1
  491. package/dist/esm/Metric.js.map +1 -1
  492. package/dist/esm/MetricHook.js.map +1 -1
  493. package/dist/esm/MetricKey.js.map +1 -1
  494. package/dist/esm/MetricPolling.js.map +1 -1
  495. package/dist/esm/MetricState.js.map +1 -1
  496. package/dist/esm/Micro.js +7 -1
  497. package/dist/esm/Micro.js.map +1 -1
  498. package/dist/esm/MutableHashMap.js +4 -1
  499. package/dist/esm/MutableHashMap.js.map +1 -1
  500. package/dist/esm/MutableHashSet.js +4 -1
  501. package/dist/esm/MutableHashSet.js.map +1 -1
  502. package/dist/esm/MutableList.js +4 -1
  503. package/dist/esm/MutableList.js.map +1 -1
  504. package/dist/esm/MutableQueue.js +4 -1
  505. package/dist/esm/MutableQueue.js.map +1 -1
  506. package/dist/esm/MutableRef.js +4 -1
  507. package/dist/esm/MutableRef.js.map +1 -1
  508. package/dist/esm/Number.js.map +1 -1
  509. package/dist/esm/Option.js.map +1 -1
  510. package/dist/esm/Order.js.map +1 -1
  511. package/dist/esm/Ordering.js.map +1 -1
  512. package/dist/esm/Pipeable.js.map +1 -1
  513. package/dist/esm/Pool.js.map +1 -1
  514. package/dist/esm/Predicate.js +15 -0
  515. package/dist/esm/Predicate.js.map +1 -1
  516. package/dist/esm/PubSub.js.map +1 -1
  517. package/dist/esm/Queue.js.map +1 -1
  518. package/dist/esm/RcMap.js.map +1 -1
  519. package/dist/esm/Readable.js.map +1 -1
  520. package/dist/esm/Record.js.map +1 -1
  521. package/dist/esm/RedBlackTree.js.map +1 -1
  522. package/dist/esm/Ref.js.map +1 -1
  523. package/dist/esm/RegExp.js +16 -0
  524. package/dist/esm/RegExp.js.map +1 -1
  525. package/dist/esm/Request.js.map +1 -1
  526. package/dist/esm/RequestResolver.js.map +1 -1
  527. package/dist/esm/Resource.js.map +1 -1
  528. package/dist/esm/Runtime.js.map +1 -1
  529. package/dist/esm/RuntimeFlags.js.map +1 -1
  530. package/dist/esm/RuntimeFlagsPatch.js.map +1 -1
  531. package/dist/esm/STM.js.map +1 -1
  532. package/dist/esm/Schedule.js.map +1 -1
  533. package/dist/esm/ScheduleInterval.js.map +1 -1
  534. package/dist/esm/ScheduleIntervals.js.map +1 -1
  535. package/dist/esm/Scheduler.js.map +1 -1
  536. package/dist/esm/Scope.js.map +1 -1
  537. package/dist/esm/ScopedRef.js.map +1 -1
  538. package/dist/esm/Sink.js.map +1 -1
  539. package/dist/esm/SortedMap.js +4 -1
  540. package/dist/esm/SortedMap.js.map +1 -1
  541. package/dist/esm/SortedSet.js +4 -1
  542. package/dist/esm/SortedSet.js.map +1 -1
  543. package/dist/esm/Stream.js +14 -0
  544. package/dist/esm/Stream.js.map +1 -1
  545. package/dist/esm/StreamHaltStrategy.js.map +1 -1
  546. package/dist/esm/String.js.map +1 -1
  547. package/dist/esm/Struct.js.map +1 -1
  548. package/dist/esm/Subscribable.js.map +1 -1
  549. package/dist/esm/SubscriptionRef.js.map +1 -1
  550. package/dist/esm/SynchronizedRef.js.map +1 -1
  551. package/dist/esm/TArray.js.map +1 -1
  552. package/dist/esm/TDeferred.js.map +1 -1
  553. package/dist/esm/TMap.js.map +1 -1
  554. package/dist/esm/TPriorityQueue.js.map +1 -1
  555. package/dist/esm/TPubSub.js.map +1 -1
  556. package/dist/esm/TQueue.js.map +1 -1
  557. package/dist/esm/TReentrantLock.js.map +1 -1
  558. package/dist/esm/TRef.js.map +1 -1
  559. package/dist/esm/TSemaphore.js.map +1 -1
  560. package/dist/esm/TSet.js.map +1 -1
  561. package/dist/esm/Take.js.map +1 -1
  562. package/dist/esm/TestAnnotationMap.js.map +1 -1
  563. package/dist/esm/TestClock.js.map +1 -1
  564. package/dist/esm/TestServices.js.map +1 -1
  565. package/dist/esm/Trie.js.map +1 -1
  566. package/dist/esm/Tuple.js +19 -0
  567. package/dist/esm/Tuple.js.map +1 -1
  568. package/dist/esm/Unify.js.map +1 -1
  569. package/dist/esm/UpstreamPullRequest.js.map +1 -1
  570. package/dist/esm/UpstreamPullStrategy.js.map +1 -1
  571. package/dist/esm/Utils.js +1 -14
  572. package/dist/esm/Utils.js.map +1 -1
  573. package/dist/esm/internal/cause.js +4 -1
  574. package/dist/esm/internal/cause.js.map +1 -1
  575. package/dist/esm/internal/context.js +7 -2
  576. package/dist/esm/internal/context.js.map +1 -1
  577. package/dist/esm/internal/core-effect.js.map +1 -1
  578. package/dist/esm/internal/core.js +14 -2
  579. package/dist/esm/internal/core.js.map +1 -1
  580. package/dist/esm/internal/effect/circular.js +5 -1
  581. package/dist/esm/internal/effect/circular.js.map +1 -1
  582. package/dist/esm/internal/fiberId.js +10 -1
  583. package/dist/esm/internal/fiberId.js.map +1 -1
  584. package/dist/esm/internal/hashMap.js +4 -1
  585. package/dist/esm/internal/hashMap.js.map +1 -1
  586. package/dist/esm/internal/hashSet.js +4 -1
  587. package/dist/esm/internal/hashSet.js.map +1 -1
  588. package/dist/esm/internal/layer.js +32 -18
  589. package/dist/esm/internal/layer.js.map +1 -1
  590. package/dist/esm/internal/mailbox.js +3 -0
  591. package/dist/esm/internal/mailbox.js.map +1 -1
  592. package/dist/esm/internal/managedRuntime/circular.js +4 -0
  593. package/dist/esm/internal/managedRuntime/circular.js.map +1 -0
  594. package/dist/esm/internal/managedRuntime.js +21 -8
  595. package/dist/esm/internal/managedRuntime.js.map +1 -1
  596. package/dist/esm/internal/option.js +4 -1
  597. package/dist/esm/internal/option.js.map +1 -1
  598. package/dist/esm/internal/pool.js +6 -1
  599. package/dist/esm/internal/pool.js.map +1 -1
  600. package/dist/esm/internal/redBlackTree.js +4 -1
  601. package/dist/esm/internal/redBlackTree.js.map +1 -1
  602. package/dist/esm/internal/resource.js +15 -5
  603. package/dist/esm/internal/resource.js.map +1 -1
  604. package/dist/esm/internal/runtime.js +4 -1
  605. package/dist/esm/internal/runtime.js.map +1 -1
  606. package/dist/esm/internal/scopedRef.js +11 -8
  607. package/dist/esm/internal/scopedRef.js.map +1 -1
  608. package/dist/esm/internal/stm/core.js +1 -2
  609. package/dist/esm/internal/stm/core.js.map +1 -1
  610. package/dist/esm/internal/stream.js +9 -0
  611. package/dist/esm/internal/stream.js.map +1 -1
  612. package/dist/esm/internal/trie.js +4 -1
  613. package/dist/esm/internal/trie.js.map +1 -1
  614. package/dist/esm/internal/version.js +1 -1
  615. package/package.json +1 -1
  616. package/src/Array.ts +2791 -40
  617. package/src/BigDecimal.ts +589 -19
  618. package/src/BigInt.ts +516 -16
  619. package/src/Boolean.ts +241 -8
  620. package/src/Cause.ts +177 -1
  621. package/src/Channel.ts +766 -49
  622. package/src/ChildExecutorDecision.ts +12 -0
  623. package/src/Chunk.ts +822 -5
  624. package/src/Config.ts +187 -8
  625. package/src/ConfigError.ts +16 -0
  626. package/src/ConfigProvider.ts +89 -1
  627. package/src/ConfigProviderPathPatch.ts +32 -0
  628. package/src/Console.ts +37 -8
  629. package/src/Context.ts +234 -3
  630. package/src/Cron.ts +16 -1
  631. package/src/Data.ts +165 -0
  632. package/src/DateTime.ts +1012 -50
  633. package/src/Deferred.ts +171 -1
  634. package/src/Differ.ts +89 -27
  635. package/src/Duration.ts +160 -17
  636. package/src/Effect.ts +4717 -164
  637. package/src/Either.ts +650 -34
  638. package/src/Equivalence.ts +24 -0
  639. package/src/ExecutionStrategy.ts +29 -10
  640. package/src/Exit.ts +252 -0
  641. package/src/Fiber.ts +182 -0
  642. package/src/FiberHandle.ts +45 -0
  643. package/src/FiberId.ts +24 -0
  644. package/src/FiberMap.ts +147 -21
  645. package/src/FiberRef.ts +80 -0
  646. package/src/FiberRefs.ts +84 -0
  647. package/src/FiberRefsPatch.ts +35 -1
  648. package/src/FiberSet.ts +41 -0
  649. package/src/Function.ts +416 -31
  650. package/src/GroupBy.ts +38 -0
  651. package/src/Hash.ts +8 -0
  652. package/src/HashMap.ts +316 -0
  653. package/src/HashSet.ts +284 -0
  654. package/src/Inspectable.ts +22 -0
  655. package/src/Iterable.ts +456 -6
  656. package/src/KeyedPool.ts +34 -0
  657. package/src/Layer.ts +475 -38
  658. package/src/List.ts +483 -4
  659. package/src/LogLevel.ts +46 -0
  660. package/src/Logger.ts +195 -4
  661. package/src/Mailbox.ts +16 -0
  662. package/src/ManagedRuntime.ts +46 -2
  663. package/src/MergeDecision.ts +8 -0
  664. package/src/MergeState.ts +8 -0
  665. package/src/MergeStrategy.ts +25 -8
  666. package/src/Metric.ts +426 -15
  667. package/src/MetricHook.ts +24 -0
  668. package/src/MetricKey.ts +62 -8
  669. package/src/MetricPolling.ts +42 -6
  670. package/src/MetricState.ts +16 -0
  671. package/src/Micro.ts +1223 -61
  672. package/src/MutableHashMap.ts +109 -2
  673. package/src/MutableHashSet.ts +28 -1
  674. package/src/MutableList.ts +40 -1
  675. package/src/MutableQueue.ts +66 -1
  676. package/src/MutableRef.ts +60 -1
  677. package/src/Number.ts +500 -16
  678. package/src/Option.ts +1042 -16
  679. package/src/Order.ts +24 -0
  680. package/src/Ordering.ts +66 -0
  681. package/src/Pipeable.ts +224 -21
  682. package/src/Pool.ts +42 -1
  683. package/src/Predicate.ts +514 -0
  684. package/src/PubSub.ts +28 -0
  685. package/src/Queue.ts +106 -2
  686. package/src/RcMap.ts +70 -0
  687. package/src/Readable.ts +18 -7
  688. package/src/Record.ts +814 -40
  689. package/src/RedBlackTree.ts +305 -1
  690. package/src/Ref.ts +88 -0
  691. package/src/RegExp.ts +17 -0
  692. package/src/Request.ts +76 -0
  693. package/src/RequestResolver.ts +145 -4
  694. package/src/Resource.ts +22 -1
  695. package/src/Runtime.ts +134 -2
  696. package/src/RuntimeFlags.ts +100 -0
  697. package/src/RuntimeFlagsPatch.ts +112 -0
  698. package/src/STM.ts +1107 -11
  699. package/src/Schedule.ts +704 -0
  700. package/src/ScheduleInterval.ts +68 -0
  701. package/src/ScheduleIntervals.ts +50 -0
  702. package/src/Scheduler.ts +2 -0
  703. package/src/Scope.ts +36 -0
  704. package/src/ScopedRef.ts +44 -1
  705. package/src/Sink.ts +464 -0
  706. package/src/SortedMap.ts +80 -1
  707. package/src/SortedSet.ts +147 -4
  708. package/src/Stream.ts +5041 -54
  709. package/src/StreamHaltStrategy.ts +29 -12
  710. package/src/String.ts +200 -0
  711. package/src/Struct.ts +86 -7
  712. package/src/Subscribable.ts +16 -0
  713. package/src/SubscriptionRef.ts +159 -11
  714. package/src/SynchronizedRef.ts +169 -8
  715. package/src/TArray.ts +431 -1
  716. package/src/TDeferred.ts +24 -0
  717. package/src/TMap.ts +381 -12
  718. package/src/TPriorityQueue.ts +60 -0
  719. package/src/TPubSub.ts +28 -0
  720. package/src/TQueue.ts +108 -0
  721. package/src/TReentrantLock.ts +36 -0
  722. package/src/TRef.ts +88 -0
  723. package/src/TSemaphore.ts +40 -0
  724. package/src/TSet.ts +280 -12
  725. package/src/Take.ts +56 -0
  726. package/src/TestAnnotationMap.ts +45 -1
  727. package/src/TestClock.ts +6 -0
  728. package/src/TestServices.ts +66 -0
  729. package/src/Trie.ts +906 -0
  730. package/src/Tuple.ts +223 -8
  731. package/src/Types.ts +41 -0
  732. package/src/Unify.ts +28 -17
  733. package/src/UpstreamPullRequest.ts +12 -0
  734. package/src/UpstreamPullStrategy.ts +12 -0
  735. package/src/Utils.ts +1 -15
  736. package/src/internal/cause.ts +4 -1
  737. package/src/internal/context.ts +7 -2
  738. package/src/internal/core-effect.ts +7 -7
  739. package/src/internal/core.ts +14 -2
  740. package/src/internal/effect/circular.ts +8 -2
  741. package/src/internal/fiberId.ts +10 -1
  742. package/src/internal/hashMap.ts +4 -1
  743. package/src/internal/hashSet.ts +4 -1
  744. package/src/internal/layer.ts +105 -38
  745. package/src/internal/mailbox.ts +3 -0
  746. package/src/internal/managedRuntime/circular.ts +6 -0
  747. package/src/internal/managedRuntime.ts +36 -22
  748. package/src/internal/option.ts +4 -1
  749. package/src/internal/pool.ts +7 -1
  750. package/src/internal/redBlackTree.ts +4 -1
  751. package/src/internal/resource.ts +16 -5
  752. package/src/internal/runtime.ts +4 -1
  753. package/src/internal/scopedRef.ts +12 -8
  754. package/src/internal/stm/core.ts +2 -3
  755. package/src/internal/stream.ts +27 -0
  756. package/src/internal/trie.ts +4 -1
  757. package/src/internal/version.ts +1 -1
package/src/Trie.ts CHANGED
@@ -114,7 +114,49 @@ export const make: <Entries extends Array<readonly [string, any]>>(
114
114
  * @category mutations
115
115
  */
116
116
  export const insert: {
117
+ /**
118
+ * Insert a new entry in the `Trie`.
119
+ *
120
+ * @example
121
+ * import { Trie } from "effect"
122
+ *
123
+ * const trie1 = Trie.empty<number>().pipe(
124
+ * Trie.insert("call", 0)
125
+ * )
126
+ * const trie2 = trie1.pipe(Trie.insert("me", 1))
127
+ * const trie3 = trie2.pipe(Trie.insert("mind", 2))
128
+ * const trie4 = trie3.pipe(Trie.insert("mid", 3))
129
+ *
130
+ * assert.deepStrictEqual(Array.from(trie1), [["call", 0]])
131
+ * assert.deepStrictEqual(Array.from(trie2), [["call", 0], ["me", 1]])
132
+ * assert.deepStrictEqual(Array.from(trie3), [["call", 0], ["me", 1], ["mind", 2]])
133
+ * assert.deepStrictEqual(Array.from(trie4), [["call", 0], ["me", 1], ["mid", 3], ["mind", 2]])
134
+ *
135
+ * @since 2.0.0
136
+ * @category mutations
137
+ */
117
138
  <V>(key: string, value: V): (self: Trie<V>) => Trie<V>
139
+ /**
140
+ * Insert a new entry in the `Trie`.
141
+ *
142
+ * @example
143
+ * import { Trie } from "effect"
144
+ *
145
+ * const trie1 = Trie.empty<number>().pipe(
146
+ * Trie.insert("call", 0)
147
+ * )
148
+ * const trie2 = trie1.pipe(Trie.insert("me", 1))
149
+ * const trie3 = trie2.pipe(Trie.insert("mind", 2))
150
+ * const trie4 = trie3.pipe(Trie.insert("mid", 3))
151
+ *
152
+ * assert.deepStrictEqual(Array.from(trie1), [["call", 0]])
153
+ * assert.deepStrictEqual(Array.from(trie2), [["call", 0], ["me", 1]])
154
+ * assert.deepStrictEqual(Array.from(trie3), [["call", 0], ["me", 1], ["mind", 2]])
155
+ * assert.deepStrictEqual(Array.from(trie4), [["call", 0], ["me", 1], ["mid", 3], ["mind", 2]])
156
+ *
157
+ * @since 2.0.0
158
+ * @category mutations
159
+ */
118
160
  <V>(self: Trie<V>, key: string, value: V): Trie<V>
119
161
  } = TR.insert
120
162
 
@@ -225,7 +267,47 @@ export const toEntries = <V>(self: Trie<V>): Array<[string, V]> => Array.from(en
225
267
  * @category getters
226
268
  */
227
269
  export const keysWithPrefix: {
270
+ /**
271
+ * Returns an `IterableIterator` of the keys within the `Trie`
272
+ * that have `prefix` as prefix (`prefix` included if it exists).
273
+ *
274
+ * @example
275
+ * import { Trie } from "effect"
276
+ *
277
+ * const trie = Trie.empty<number>().pipe(
278
+ * Trie.insert("she", 0),
279
+ * Trie.insert("shells", 1),
280
+ * Trie.insert("sea", 2),
281
+ * Trie.insert("shore", 3)
282
+ * )
283
+ *
284
+ * const result = Array.from(Trie.keysWithPrefix(trie, "she"))
285
+ * assert.deepStrictEqual(result, ["she", "shells"])
286
+ *
287
+ * @since 2.0.0
288
+ * @category getters
289
+ */
228
290
  (prefix: string): <V>(self: Trie<V>) => IterableIterator<string>
291
+ /**
292
+ * Returns an `IterableIterator` of the keys within the `Trie`
293
+ * that have `prefix` as prefix (`prefix` included if it exists).
294
+ *
295
+ * @example
296
+ * import { Trie } from "effect"
297
+ *
298
+ * const trie = Trie.empty<number>().pipe(
299
+ * Trie.insert("she", 0),
300
+ * Trie.insert("shells", 1),
301
+ * Trie.insert("sea", 2),
302
+ * Trie.insert("shore", 3)
303
+ * )
304
+ *
305
+ * const result = Array.from(Trie.keysWithPrefix(trie, "she"))
306
+ * assert.deepStrictEqual(result, ["she", "shells"])
307
+ *
308
+ * @since 2.0.0
309
+ * @category getters
310
+ */
229
311
  <V>(self: Trie<V>, prefix: string): IterableIterator<string>
230
312
  } = TR.keysWithPrefix
231
313
 
@@ -252,7 +334,51 @@ export const keysWithPrefix: {
252
334
  * @category getters
253
335
  */
254
336
  export const valuesWithPrefix: {
337
+ /**
338
+ * Returns an `IterableIterator` of the values within the `Trie`
339
+ * that have `prefix` as prefix (`prefix` included if it exists).
340
+ *
341
+ * @example
342
+ * import { Trie } from "effect"
343
+ *
344
+ * const trie = Trie.empty<number>().pipe(
345
+ * Trie.insert("she", 0),
346
+ * Trie.insert("shells", 1),
347
+ * Trie.insert("sea", 2),
348
+ * Trie.insert("shore", 3)
349
+ * )
350
+ *
351
+ * const result = Array.from(Trie.valuesWithPrefix(trie, "she"))
352
+ *
353
+ * // 0: "she", 1: "shells"
354
+ * assert.deepStrictEqual(result, [0, 1])
355
+ *
356
+ * @since 2.0.0
357
+ * @category getters
358
+ */
255
359
  (prefix: string): <V>(self: Trie<V>) => IterableIterator<V>
360
+ /**
361
+ * Returns an `IterableIterator` of the values within the `Trie`
362
+ * that have `prefix` as prefix (`prefix` included if it exists).
363
+ *
364
+ * @example
365
+ * import { Trie } from "effect"
366
+ *
367
+ * const trie = Trie.empty<number>().pipe(
368
+ * Trie.insert("she", 0),
369
+ * Trie.insert("shells", 1),
370
+ * Trie.insert("sea", 2),
371
+ * Trie.insert("shore", 3)
372
+ * )
373
+ *
374
+ * const result = Array.from(Trie.valuesWithPrefix(trie, "she"))
375
+ *
376
+ * // 0: "she", 1: "shells"
377
+ * assert.deepStrictEqual(result, [0, 1])
378
+ *
379
+ * @since 2.0.0
380
+ * @category getters
381
+ */
256
382
  <V>(self: Trie<V>, prefix: string): IterableIterator<V>
257
383
  } = TR.valuesWithPrefix
258
384
 
@@ -277,7 +403,47 @@ export const valuesWithPrefix: {
277
403
  * @category getters
278
404
  */
279
405
  export const entriesWithPrefix: {
406
+ /**
407
+ * Returns an `IterableIterator` of the entries within the `Trie`
408
+ * that have `prefix` as prefix (`prefix` included if it exists).
409
+ *
410
+ * @example
411
+ * import { Trie } from "effect"
412
+ *
413
+ * const trie = Trie.empty<number>().pipe(
414
+ * Trie.insert("she", 0),
415
+ * Trie.insert("shells", 1),
416
+ * Trie.insert("sea", 2),
417
+ * Trie.insert("shore", 3)
418
+ * )
419
+ *
420
+ * const result = Array.from(Trie.entriesWithPrefix(trie, "she"))
421
+ * assert.deepStrictEqual(result, [["she", 0], ["shells", 1]])
422
+ *
423
+ * @since 2.0.0
424
+ * @category getters
425
+ */
280
426
  (prefix: string): <V>(self: Trie<V>) => IterableIterator<[string, V]>
427
+ /**
428
+ * Returns an `IterableIterator` of the entries within the `Trie`
429
+ * that have `prefix` as prefix (`prefix` included if it exists).
430
+ *
431
+ * @example
432
+ * import { Trie } from "effect"
433
+ *
434
+ * const trie = Trie.empty<number>().pipe(
435
+ * Trie.insert("she", 0),
436
+ * Trie.insert("shells", 1),
437
+ * Trie.insert("sea", 2),
438
+ * Trie.insert("shore", 3)
439
+ * )
440
+ *
441
+ * const result = Array.from(Trie.entriesWithPrefix(trie, "she"))
442
+ * assert.deepStrictEqual(result, [["she", 0], ["shells", 1]])
443
+ *
444
+ * @since 2.0.0
445
+ * @category getters
446
+ */
281
447
  <V>(self: Trie<V>, prefix: string): IterableIterator<[string, V]>
282
448
  } = TR.entriesWithPrefix
283
449
 
@@ -302,7 +468,47 @@ export const entriesWithPrefix: {
302
468
  * @category getters
303
469
  */
304
470
  export const toEntriesWithPrefix: {
471
+ /**
472
+ * Returns `Array<[K, V]>` of the entries within the `Trie`
473
+ * that have `prefix` as prefix (`prefix` included if it exists).
474
+ *
475
+ * @example
476
+ * import { Trie } from "effect"
477
+ *
478
+ * const trie = Trie.empty<number>().pipe(
479
+ * Trie.insert("shells", 0),
480
+ * Trie.insert("sells", 1),
481
+ * Trie.insert("sea", 2),
482
+ * Trie.insert("she", 3)
483
+ * )
484
+ *
485
+ * const result = Trie.toEntriesWithPrefix(trie, "she")
486
+ * assert.deepStrictEqual(result, [["she", 3], ["shells", 0]])
487
+ *
488
+ * @since 2.0.0
489
+ * @category getters
490
+ */
305
491
  (prefix: string): <V>(self: Trie<V>) => Array<[string, V]>
492
+ /**
493
+ * Returns `Array<[K, V]>` of the entries within the `Trie`
494
+ * that have `prefix` as prefix (`prefix` included if it exists).
495
+ *
496
+ * @example
497
+ * import { Trie } from "effect"
498
+ *
499
+ * const trie = Trie.empty<number>().pipe(
500
+ * Trie.insert("shells", 0),
501
+ * Trie.insert("sells", 1),
502
+ * Trie.insert("sea", 2),
503
+ * Trie.insert("she", 3)
504
+ * )
505
+ *
506
+ * const result = Trie.toEntriesWithPrefix(trie, "she")
507
+ * assert.deepStrictEqual(result, [["she", 3], ["shells", 0]])
508
+ *
509
+ * @since 2.0.0
510
+ * @category getters
511
+ */
306
512
  <V>(self: Trie<V>, prefix: string): Array<[string, V]>
307
513
  } = TR.toEntriesWithPrefix
308
514
 
@@ -328,7 +534,49 @@ export const toEntriesWithPrefix: {
328
534
  * @category getters
329
535
  */
330
536
  export const longestPrefixOf: {
537
+ /**
538
+ * Returns the longest key/value in the `Trie`
539
+ * that is a prefix of that `key` if it exists, `None` otherwise.
540
+ *
541
+ * @example
542
+ * import { Trie, Option } from "effect"
543
+ *
544
+ * const trie = Trie.empty<number>().pipe(
545
+ * Trie.insert("shells", 0),
546
+ * Trie.insert("sells", 1),
547
+ * Trie.insert("she", 2)
548
+ * )
549
+ *
550
+ * assert.deepStrictEqual(Trie.longestPrefixOf(trie, "sell"), Option.none())
551
+ * assert.deepStrictEqual(Trie.longestPrefixOf(trie, "sells"), Option.some(["sells", 1]))
552
+ * assert.deepStrictEqual(Trie.longestPrefixOf(trie, "shell"), Option.some(["she", 2]))
553
+ * assert.deepStrictEqual(Trie.longestPrefixOf(trie, "shellsort"), Option.some(["shells", 0]))
554
+ *
555
+ * @since 2.0.0
556
+ * @category getters
557
+ */
331
558
  (key: string): <V>(self: Trie<V>) => Option<[string, V]>
559
+ /**
560
+ * Returns the longest key/value in the `Trie`
561
+ * that is a prefix of that `key` if it exists, `None` otherwise.
562
+ *
563
+ * @example
564
+ * import { Trie, Option } from "effect"
565
+ *
566
+ * const trie = Trie.empty<number>().pipe(
567
+ * Trie.insert("shells", 0),
568
+ * Trie.insert("sells", 1),
569
+ * Trie.insert("she", 2)
570
+ * )
571
+ *
572
+ * assert.deepStrictEqual(Trie.longestPrefixOf(trie, "sell"), Option.none())
573
+ * assert.deepStrictEqual(Trie.longestPrefixOf(trie, "sells"), Option.some(["sells", 1]))
574
+ * assert.deepStrictEqual(Trie.longestPrefixOf(trie, "shell"), Option.some(["she", 2]))
575
+ * assert.deepStrictEqual(Trie.longestPrefixOf(trie, "shellsort"), Option.some(["shells", 0]))
576
+ *
577
+ * @since 2.0.0
578
+ * @category getters
579
+ */
332
580
  <V>(self: Trie<V>, key: string): Option<[string, V]>
333
581
  } = TR.longestPrefixOf
334
582
 
@@ -376,7 +624,57 @@ export const size: <V>(self: Trie<V>) => number = TR.size
376
624
  * @category elements
377
625
  */
378
626
  export const get: {
627
+ /**
628
+ * Safely lookup the value for the specified key in the `Trie`.
629
+ *
630
+ * @example
631
+ * import { Trie, Option } from "effect"
632
+ *
633
+ * const trie = Trie.empty<number>().pipe(
634
+ * Trie.insert("call", 0),
635
+ * Trie.insert("me", 1),
636
+ * Trie.insert("mind", 2),
637
+ * Trie.insert("mid", 3)
638
+ * )
639
+ *
640
+ * assert.deepStrictEqual(Trie.get(trie, "call"), Option.some(0))
641
+ * assert.deepStrictEqual(Trie.get(trie, "me"), Option.some(1))
642
+ * assert.deepStrictEqual(Trie.get(trie, "mind"), Option.some(2))
643
+ * assert.deepStrictEqual(Trie.get(trie, "mid"), Option.some(3))
644
+ * assert.deepStrictEqual(Trie.get(trie, "cale"), Option.none())
645
+ * assert.deepStrictEqual(Trie.get(trie, "ma"), Option.none())
646
+ * assert.deepStrictEqual(Trie.get(trie, "midn"), Option.none())
647
+ * assert.deepStrictEqual(Trie.get(trie, "mea"), Option.none())
648
+ *
649
+ * @since 2.0.0
650
+ * @category elements
651
+ */
379
652
  (key: string): <V>(self: Trie<V>) => Option<V>
653
+ /**
654
+ * Safely lookup the value for the specified key in the `Trie`.
655
+ *
656
+ * @example
657
+ * import { Trie, Option } from "effect"
658
+ *
659
+ * const trie = Trie.empty<number>().pipe(
660
+ * Trie.insert("call", 0),
661
+ * Trie.insert("me", 1),
662
+ * Trie.insert("mind", 2),
663
+ * Trie.insert("mid", 3)
664
+ * )
665
+ *
666
+ * assert.deepStrictEqual(Trie.get(trie, "call"), Option.some(0))
667
+ * assert.deepStrictEqual(Trie.get(trie, "me"), Option.some(1))
668
+ * assert.deepStrictEqual(Trie.get(trie, "mind"), Option.some(2))
669
+ * assert.deepStrictEqual(Trie.get(trie, "mid"), Option.some(3))
670
+ * assert.deepStrictEqual(Trie.get(trie, "cale"), Option.none())
671
+ * assert.deepStrictEqual(Trie.get(trie, "ma"), Option.none())
672
+ * assert.deepStrictEqual(Trie.get(trie, "midn"), Option.none())
673
+ * assert.deepStrictEqual(Trie.get(trie, "mea"), Option.none())
674
+ *
675
+ * @since 2.0.0
676
+ * @category elements
677
+ */
380
678
  <V>(self: Trie<V>, key: string): Option<V>
381
679
  } = TR.get
382
680
 
@@ -406,7 +704,57 @@ export const get: {
406
704
  * @category elements
407
705
  */
408
706
  export const has: {
707
+ /**
708
+ * Check if the given key exists in the `Trie`.
709
+ *
710
+ * @example
711
+ * import { Trie } from "effect"
712
+ *
713
+ * const trie = Trie.empty<number>().pipe(
714
+ * Trie.insert("call", 0),
715
+ * Trie.insert("me", 1),
716
+ * Trie.insert("mind", 2),
717
+ * Trie.insert("mid", 3)
718
+ * )
719
+ *
720
+ * assert.equal(Trie.has(trie, "call"), true)
721
+ * assert.equal(Trie.has(trie, "me"), true)
722
+ * assert.equal(Trie.has(trie, "mind"), true)
723
+ * assert.equal(Trie.has(trie, "mid"), true)
724
+ * assert.equal(Trie.has(trie, "cale"), false)
725
+ * assert.equal(Trie.has(trie, "ma"), false)
726
+ * assert.equal(Trie.has(trie, "midn"), false)
727
+ * assert.equal(Trie.has(trie, "mea"), false)
728
+ *
729
+ * @since 2.0.0
730
+ * @category elements
731
+ */
409
732
  (key: string): <V>(self: Trie<V>) => boolean
733
+ /**
734
+ * Check if the given key exists in the `Trie`.
735
+ *
736
+ * @example
737
+ * import { Trie } from "effect"
738
+ *
739
+ * const trie = Trie.empty<number>().pipe(
740
+ * Trie.insert("call", 0),
741
+ * Trie.insert("me", 1),
742
+ * Trie.insert("mind", 2),
743
+ * Trie.insert("mid", 3)
744
+ * )
745
+ *
746
+ * assert.equal(Trie.has(trie, "call"), true)
747
+ * assert.equal(Trie.has(trie, "me"), true)
748
+ * assert.equal(Trie.has(trie, "mind"), true)
749
+ * assert.equal(Trie.has(trie, "mid"), true)
750
+ * assert.equal(Trie.has(trie, "cale"), false)
751
+ * assert.equal(Trie.has(trie, "ma"), false)
752
+ * assert.equal(Trie.has(trie, "midn"), false)
753
+ * assert.equal(Trie.has(trie, "mea"), false)
754
+ *
755
+ * @since 2.0.0
756
+ * @category elements
757
+ */
410
758
  <V>(self: Trie<V>, key: string): boolean
411
759
  } = TR.has
412
760
 
@@ -447,7 +795,45 @@ export const isEmpty: <V>(self: Trie<V>) => boolean = TR.isEmpty
447
795
  * @category unsafe
448
796
  */
449
797
  export const unsafeGet: {
798
+ /**
799
+ * Unsafely lookup the value for the specified key in the `Trie`.
800
+ *
801
+ * `unsafeGet` will throw if the key is not found. Use `get` instead to safely
802
+ * get a value from the `Trie`.
803
+ *
804
+ * @example
805
+ * import { Trie } from "effect"
806
+ *
807
+ * const trie = Trie.empty<number>().pipe(
808
+ * Trie.insert("call", 0),
809
+ * Trie.insert("me", 1)
810
+ * )
811
+ *
812
+ * assert.throws(() => Trie.unsafeGet(trie, "mae"))
813
+ *
814
+ * @since 2.0.0
815
+ * @category unsafe
816
+ */
450
817
  (key: string): <V>(self: Trie<V>) => V
818
+ /**
819
+ * Unsafely lookup the value for the specified key in the `Trie`.
820
+ *
821
+ * `unsafeGet` will throw if the key is not found. Use `get` instead to safely
822
+ * get a value from the `Trie`.
823
+ *
824
+ * @example
825
+ * import { Trie } from "effect"
826
+ *
827
+ * const trie = Trie.empty<number>().pipe(
828
+ * Trie.insert("call", 0),
829
+ * Trie.insert("me", 1)
830
+ * )
831
+ *
832
+ * assert.throws(() => Trie.unsafeGet(trie, "mae"))
833
+ *
834
+ * @since 2.0.0
835
+ * @category unsafe
836
+ */
451
837
  <V>(self: Trie<V>, key: string): V
452
838
  } = TR.unsafeGet
453
839
 
@@ -475,7 +861,53 @@ export const unsafeGet: {
475
861
  * @category mutations
476
862
  */
477
863
  export const remove: {
864
+ /**
865
+ * Remove the entry for the specified key in the `Trie`.
866
+ *
867
+ * @example
868
+ * import { Trie, Option } from "effect"
869
+ *
870
+ * const trie = Trie.empty<number>().pipe(
871
+ * Trie.insert("call", 0),
872
+ * Trie.insert("me", 1),
873
+ * Trie.insert("mind", 2),
874
+ * Trie.insert("mid", 3)
875
+ * )
876
+ *
877
+ * const trie1 = trie.pipe(Trie.remove("call"))
878
+ * const trie2 = trie1.pipe(Trie.remove("mea"))
879
+ *
880
+ * assert.deepStrictEqual(Trie.get(trie, "call"), Option.some(0))
881
+ * assert.deepStrictEqual(Trie.get(trie1, "call"), Option.none())
882
+ * assert.deepStrictEqual(Trie.get(trie2, "call"), Option.none())
883
+ *
884
+ * @since 2.0.0
885
+ * @category mutations
886
+ */
478
887
  (key: string): <V>(self: Trie<V>) => Trie<V>
888
+ /**
889
+ * Remove the entry for the specified key in the `Trie`.
890
+ *
891
+ * @example
892
+ * import { Trie, Option } from "effect"
893
+ *
894
+ * const trie = Trie.empty<number>().pipe(
895
+ * Trie.insert("call", 0),
896
+ * Trie.insert("me", 1),
897
+ * Trie.insert("mind", 2),
898
+ * Trie.insert("mid", 3)
899
+ * )
900
+ *
901
+ * const trie1 = trie.pipe(Trie.remove("call"))
902
+ * const trie2 = trie1.pipe(Trie.remove("mea"))
903
+ *
904
+ * assert.deepStrictEqual(Trie.get(trie, "call"), Option.some(0))
905
+ * assert.deepStrictEqual(Trie.get(trie1, "call"), Option.none())
906
+ * assert.deepStrictEqual(Trie.get(trie2, "call"), Option.none())
907
+ *
908
+ * @since 2.0.0
909
+ * @category mutations
910
+ */
479
911
  <V>(self: Trie<V>, key: string): Trie<V>
480
912
  } = TR.remove
481
913
 
@@ -514,7 +946,75 @@ export const remove: {
514
946
  * @category folding
515
947
  */
516
948
  export const reduce: {
949
+ /**
950
+ * Reduce a state over the entries of the `Trie`.
951
+ *
952
+ * @example
953
+ * import { Trie } from "effect"
954
+ *
955
+ * const trie = Trie.empty<number>().pipe(
956
+ * Trie.insert("shells", 0),
957
+ * Trie.insert("sells", 1),
958
+ * Trie.insert("she", 2)
959
+ * )
960
+ *
961
+ * assert.equal(
962
+ * trie.pipe(
963
+ * Trie.reduce(0, (acc, n) => acc + n)
964
+ * ),
965
+ * 3
966
+ * )
967
+ * assert.equal(
968
+ * trie.pipe(
969
+ * Trie.reduce(10, (acc, n) => acc + n)
970
+ * ),
971
+ * 13
972
+ * )
973
+ * assert.equal(
974
+ * trie.pipe(
975
+ * Trie.reduce("", (acc, _, key) => acc + key)
976
+ * ),
977
+ * "sellssheshells"
978
+ * )
979
+ *
980
+ * @since 2.0.0
981
+ * @category folding
982
+ */
517
983
  <Z, V>(zero: Z, f: (accumulator: Z, value: V, key: string) => Z): (self: Trie<V>) => Z
984
+ /**
985
+ * Reduce a state over the entries of the `Trie`.
986
+ *
987
+ * @example
988
+ * import { Trie } from "effect"
989
+ *
990
+ * const trie = Trie.empty<number>().pipe(
991
+ * Trie.insert("shells", 0),
992
+ * Trie.insert("sells", 1),
993
+ * Trie.insert("she", 2)
994
+ * )
995
+ *
996
+ * assert.equal(
997
+ * trie.pipe(
998
+ * Trie.reduce(0, (acc, n) => acc + n)
999
+ * ),
1000
+ * 3
1001
+ * )
1002
+ * assert.equal(
1003
+ * trie.pipe(
1004
+ * Trie.reduce(10, (acc, n) => acc + n)
1005
+ * ),
1006
+ * 13
1007
+ * )
1008
+ * assert.equal(
1009
+ * trie.pipe(
1010
+ * Trie.reduce("", (acc, _, key) => acc + key)
1011
+ * ),
1012
+ * "sellssheshells"
1013
+ * )
1014
+ *
1015
+ * @since 2.0.0
1016
+ * @category folding
1017
+ */
518
1018
  <Z, V>(self: Trie<V>, zero: Z, f: (accumulator: Z, value: V, key: string) => Z): Z
519
1019
  } = TR.reduce
520
1020
 
@@ -549,7 +1049,67 @@ export const reduce: {
549
1049
  * @category folding
550
1050
  */
551
1051
  export const map: {
1052
+ /**
1053
+ * Maps over the entries of the `Trie` using the specified function.
1054
+ *
1055
+ * @example
1056
+ * import { Trie, Equal } from "effect"
1057
+ *
1058
+ * const trie = Trie.empty<number>().pipe(
1059
+ * Trie.insert("shells", 0),
1060
+ * Trie.insert("sells", 1),
1061
+ * Trie.insert("she", 2)
1062
+ * )
1063
+ *
1064
+ * const trieMapV = Trie.empty<number>().pipe(
1065
+ * Trie.insert("shells", 1),
1066
+ * Trie.insert("sells", 2),
1067
+ * Trie.insert("she", 3)
1068
+ * )
1069
+ *
1070
+ * const trieMapK = Trie.empty<number>().pipe(
1071
+ * Trie.insert("shells", 6),
1072
+ * Trie.insert("sells", 5),
1073
+ * Trie.insert("she", 3)
1074
+ * )
1075
+ *
1076
+ * assert.equal(Equal.equals(Trie.map(trie, (v) => v + 1), trieMapV), true)
1077
+ * assert.equal(Equal.equals(Trie.map(trie, (_, k) => k.length), trieMapK), true)
1078
+ *
1079
+ * @since 2.0.0
1080
+ * @category folding
1081
+ */
552
1082
  <A, V>(f: (value: V, key: string) => A): (self: Trie<V>) => Trie<A>
1083
+ /**
1084
+ * Maps over the entries of the `Trie` using the specified function.
1085
+ *
1086
+ * @example
1087
+ * import { Trie, Equal } from "effect"
1088
+ *
1089
+ * const trie = Trie.empty<number>().pipe(
1090
+ * Trie.insert("shells", 0),
1091
+ * Trie.insert("sells", 1),
1092
+ * Trie.insert("she", 2)
1093
+ * )
1094
+ *
1095
+ * const trieMapV = Trie.empty<number>().pipe(
1096
+ * Trie.insert("shells", 1),
1097
+ * Trie.insert("sells", 2),
1098
+ * Trie.insert("she", 3)
1099
+ * )
1100
+ *
1101
+ * const trieMapK = Trie.empty<number>().pipe(
1102
+ * Trie.insert("shells", 6),
1103
+ * Trie.insert("sells", 5),
1104
+ * Trie.insert("she", 3)
1105
+ * )
1106
+ *
1107
+ * assert.equal(Equal.equals(Trie.map(trie, (v) => v + 1), trieMapV), true)
1108
+ * assert.equal(Equal.equals(Trie.map(trie, (_, k) => k.length), trieMapK), true)
1109
+ *
1110
+ * @since 2.0.0
1111
+ * @category folding
1112
+ */
553
1113
  <V, A>(self: Trie<V>, f: (value: V, key: string) => A): Trie<A>
554
1114
  } = TR.map
555
1115
 
@@ -581,9 +1141,117 @@ export const map: {
581
1141
  * @category filtering
582
1142
  */
583
1143
  export const filter: {
1144
+ /**
1145
+ * Filters entries out of a `Trie` using the specified predicate.
1146
+ *
1147
+ * @example
1148
+ * import { Trie, Equal } from "effect"
1149
+ *
1150
+ * const trie = Trie.empty<number>().pipe(
1151
+ * Trie.insert("shells", 0),
1152
+ * Trie.insert("sells", 1),
1153
+ * Trie.insert("she", 2)
1154
+ * )
1155
+ *
1156
+ * const trieMapV = Trie.empty<number>().pipe(
1157
+ * Trie.insert("she", 2)
1158
+ * )
1159
+ *
1160
+ * const trieMapK = Trie.empty<number>().pipe(
1161
+ * Trie.insert("shells", 0),
1162
+ * Trie.insert("sells", 1)
1163
+ * )
1164
+ *
1165
+ * assert.equal(Equal.equals(Trie.filter(trie, (v) => v > 1), trieMapV), true)
1166
+ * assert.equal(Equal.equals(Trie.filter(trie, (_, k) => k.length > 3), trieMapK), true)
1167
+ *
1168
+ * @since 2.0.0
1169
+ * @category filtering
1170
+ */
584
1171
  <A, B extends A>(f: (a: NoInfer<A>, k: string) => a is B): (self: Trie<A>) => Trie<B>
1172
+ /**
1173
+ * Filters entries out of a `Trie` using the specified predicate.
1174
+ *
1175
+ * @example
1176
+ * import { Trie, Equal } from "effect"
1177
+ *
1178
+ * const trie = Trie.empty<number>().pipe(
1179
+ * Trie.insert("shells", 0),
1180
+ * Trie.insert("sells", 1),
1181
+ * Trie.insert("she", 2)
1182
+ * )
1183
+ *
1184
+ * const trieMapV = Trie.empty<number>().pipe(
1185
+ * Trie.insert("she", 2)
1186
+ * )
1187
+ *
1188
+ * const trieMapK = Trie.empty<number>().pipe(
1189
+ * Trie.insert("shells", 0),
1190
+ * Trie.insert("sells", 1)
1191
+ * )
1192
+ *
1193
+ * assert.equal(Equal.equals(Trie.filter(trie, (v) => v > 1), trieMapV), true)
1194
+ * assert.equal(Equal.equals(Trie.filter(trie, (_, k) => k.length > 3), trieMapK), true)
1195
+ *
1196
+ * @since 2.0.0
1197
+ * @category filtering
1198
+ */
585
1199
  <A>(f: (a: NoInfer<A>, k: string) => boolean): (self: Trie<A>) => Trie<A>
1200
+ /**
1201
+ * Filters entries out of a `Trie` using the specified predicate.
1202
+ *
1203
+ * @example
1204
+ * import { Trie, Equal } from "effect"
1205
+ *
1206
+ * const trie = Trie.empty<number>().pipe(
1207
+ * Trie.insert("shells", 0),
1208
+ * Trie.insert("sells", 1),
1209
+ * Trie.insert("she", 2)
1210
+ * )
1211
+ *
1212
+ * const trieMapV = Trie.empty<number>().pipe(
1213
+ * Trie.insert("she", 2)
1214
+ * )
1215
+ *
1216
+ * const trieMapK = Trie.empty<number>().pipe(
1217
+ * Trie.insert("shells", 0),
1218
+ * Trie.insert("sells", 1)
1219
+ * )
1220
+ *
1221
+ * assert.equal(Equal.equals(Trie.filter(trie, (v) => v > 1), trieMapV), true)
1222
+ * assert.equal(Equal.equals(Trie.filter(trie, (_, k) => k.length > 3), trieMapK), true)
1223
+ *
1224
+ * @since 2.0.0
1225
+ * @category filtering
1226
+ */
586
1227
  <A, B extends A>(self: Trie<A>, f: (a: A, k: string) => a is B): Trie<B>
1228
+ /**
1229
+ * Filters entries out of a `Trie` using the specified predicate.
1230
+ *
1231
+ * @example
1232
+ * import { Trie, Equal } from "effect"
1233
+ *
1234
+ * const trie = Trie.empty<number>().pipe(
1235
+ * Trie.insert("shells", 0),
1236
+ * Trie.insert("sells", 1),
1237
+ * Trie.insert("she", 2)
1238
+ * )
1239
+ *
1240
+ * const trieMapV = Trie.empty<number>().pipe(
1241
+ * Trie.insert("she", 2)
1242
+ * )
1243
+ *
1244
+ * const trieMapK = Trie.empty<number>().pipe(
1245
+ * Trie.insert("shells", 0),
1246
+ * Trie.insert("sells", 1)
1247
+ * )
1248
+ *
1249
+ * assert.equal(Equal.equals(Trie.filter(trie, (v) => v > 1), trieMapV), true)
1250
+ * assert.equal(Equal.equals(Trie.filter(trie, (_, k) => k.length > 3), trieMapK), true)
1251
+ *
1252
+ * @since 2.0.0
1253
+ * @category filtering
1254
+ */
587
1255
  <A>(self: Trie<A>, f: (a: A, k: string) => boolean): Trie<A>
588
1256
  } = TR.filter
589
1257
 
@@ -619,7 +1287,69 @@ export const filter: {
619
1287
  * @category filtering
620
1288
  */
621
1289
  export const filterMap: {
1290
+ /**
1291
+ * Maps over the entries of the `Trie` using the specified partial function
1292
+ * and filters out `None` values.
1293
+ *
1294
+ * @example
1295
+ * import { Trie, Equal, Option } from "effect"
1296
+ *
1297
+ * const trie = Trie.empty<number>().pipe(
1298
+ * Trie.insert("shells", 0),
1299
+ * Trie.insert("sells", 1),
1300
+ * Trie.insert("she", 2)
1301
+ * )
1302
+ *
1303
+ * const trieMapV = Trie.empty<number>().pipe(
1304
+ * Trie.insert("she", 2)
1305
+ * )
1306
+ *
1307
+ * const trieMapK = Trie.empty<number>().pipe(
1308
+ * Trie.insert("shells", 0),
1309
+ * Trie.insert("sells", 1)
1310
+ * )
1311
+ *
1312
+ * assert.equal(Equal.equals(Trie.filterMap(trie, (v) => v > 1 ? Option.some(v) : Option.none()), trieMapV), true)
1313
+ * assert.equal(
1314
+ * Equal.equals(Trie.filterMap(trie, (v, k) => k.length > 3 ? Option.some(v) : Option.none()), trieMapK),
1315
+ * true
1316
+ * )
1317
+ *
1318
+ * @since 2.0.0
1319
+ * @category filtering
1320
+ */
622
1321
  <A, B>(f: (value: A, key: string) => Option<B>): (self: Trie<A>) => Trie<B>
1322
+ /**
1323
+ * Maps over the entries of the `Trie` using the specified partial function
1324
+ * and filters out `None` values.
1325
+ *
1326
+ * @example
1327
+ * import { Trie, Equal, Option } from "effect"
1328
+ *
1329
+ * const trie = Trie.empty<number>().pipe(
1330
+ * Trie.insert("shells", 0),
1331
+ * Trie.insert("sells", 1),
1332
+ * Trie.insert("she", 2)
1333
+ * )
1334
+ *
1335
+ * const trieMapV = Trie.empty<number>().pipe(
1336
+ * Trie.insert("she", 2)
1337
+ * )
1338
+ *
1339
+ * const trieMapK = Trie.empty<number>().pipe(
1340
+ * Trie.insert("shells", 0),
1341
+ * Trie.insert("sells", 1)
1342
+ * )
1343
+ *
1344
+ * assert.equal(Equal.equals(Trie.filterMap(trie, (v) => v > 1 ? Option.some(v) : Option.none()), trieMapV), true)
1345
+ * assert.equal(
1346
+ * Equal.equals(Trie.filterMap(trie, (v, k) => k.length > 3 ? Option.some(v) : Option.none()), trieMapK),
1347
+ * true
1348
+ * )
1349
+ *
1350
+ * @since 2.0.0
1351
+ * @category filtering
1352
+ */
623
1353
  <A, B>(self: Trie<A>, f: (value: A, key: string) => Option<B>): Trie<B>
624
1354
  } = TR.filterMap
625
1355
 
@@ -670,7 +1400,51 @@ export const compact: <A>(self: Trie<Option<A>>) => Trie<A> = TR.compact
670
1400
  * @category traversing
671
1401
  */
672
1402
  export const forEach: {
1403
+ /**
1404
+ * Applies the specified function to the entries of the `Trie`.
1405
+ *
1406
+ * @example
1407
+ * import { Trie } from "effect"
1408
+ *
1409
+ * let value = 0
1410
+ *
1411
+ * Trie.empty<number>().pipe(
1412
+ * Trie.insert("shells", 0),
1413
+ * Trie.insert("sells", 1),
1414
+ * Trie.insert("she", 2),
1415
+ * Trie.forEach((n, key) => {
1416
+ * value += n + key.length
1417
+ * })
1418
+ * )
1419
+ *
1420
+ * assert.equal(value, 17)
1421
+ *
1422
+ * @since 2.0.0
1423
+ * @category traversing
1424
+ */
673
1425
  <V>(f: (value: V, key: string) => void): (self: Trie<V>) => void
1426
+ /**
1427
+ * Applies the specified function to the entries of the `Trie`.
1428
+ *
1429
+ * @example
1430
+ * import { Trie } from "effect"
1431
+ *
1432
+ * let value = 0
1433
+ *
1434
+ * Trie.empty<number>().pipe(
1435
+ * Trie.insert("shells", 0),
1436
+ * Trie.insert("sells", 1),
1437
+ * Trie.insert("she", 2),
1438
+ * Trie.forEach((n, key) => {
1439
+ * value += n + key.length
1440
+ * })
1441
+ * )
1442
+ *
1443
+ * assert.equal(value, 17)
1444
+ *
1445
+ * @since 2.0.0
1446
+ * @category traversing
1447
+ */
674
1448
  <V>(self: Trie<V>, f: (value: V, key: string) => void): void
675
1449
  } = TR.forEach
676
1450
 
@@ -694,7 +1468,45 @@ export const forEach: {
694
1468
  * @category mutations
695
1469
  */
696
1470
  export const modify: {
1471
+ /**
1472
+ * Updates the value of the specified key within the `Trie` if it exists.
1473
+ *
1474
+ * @example
1475
+ * import { Trie, Equal, Option } from "effect"
1476
+ *
1477
+ * const trie = Trie.empty<number>().pipe(
1478
+ * Trie.insert("shells", 0),
1479
+ * Trie.insert("sells", 1),
1480
+ * Trie.insert("she", 2)
1481
+ * )
1482
+ *
1483
+ * assert.deepStrictEqual(trie.pipe(Trie.modify("she", (v) => v + 10), Trie.get("she")), Option.some(12))
1484
+ *
1485
+ * assert.equal(Equal.equals(trie.pipe(Trie.modify("me", (v) => v)), trie), true)
1486
+ *
1487
+ * @since 2.0.0
1488
+ * @category mutations
1489
+ */
697
1490
  <V>(key: string, f: (v: V) => V): (self: Trie<V>) => Trie<V>
1491
+ /**
1492
+ * Updates the value of the specified key within the `Trie` if it exists.
1493
+ *
1494
+ * @example
1495
+ * import { Trie, Equal, Option } from "effect"
1496
+ *
1497
+ * const trie = Trie.empty<number>().pipe(
1498
+ * Trie.insert("shells", 0),
1499
+ * Trie.insert("sells", 1),
1500
+ * Trie.insert("she", 2)
1501
+ * )
1502
+ *
1503
+ * assert.deepStrictEqual(trie.pipe(Trie.modify("she", (v) => v + 10), Trie.get("she")), Option.some(12))
1504
+ *
1505
+ * assert.equal(Equal.equals(trie.pipe(Trie.modify("me", (v) => v)), trie), true)
1506
+ *
1507
+ * @since 2.0.0
1508
+ * @category mutations
1509
+ */
698
1510
  <V>(self: Trie<V>, key: string, f: (v: V) => V): Trie<V>
699
1511
  } = TR.modify
700
1512
 
@@ -719,7 +1531,47 @@ export const modify: {
719
1531
  * @category mutations
720
1532
  */
721
1533
  export const removeMany: {
1534
+ /**
1535
+ * Removes all entries in the `Trie` which have the specified keys.
1536
+ *
1537
+ * @example
1538
+ * import { Trie, Equal } from "effect"
1539
+ *
1540
+ * const trie = Trie.empty<number>().pipe(
1541
+ * Trie.insert("shells", 0),
1542
+ * Trie.insert("sells", 1),
1543
+ * Trie.insert("she", 2)
1544
+ * )
1545
+ *
1546
+ * assert.equal(
1547
+ * Equal.equals(trie.pipe(Trie.removeMany(["she", "sells"])), Trie.empty<number>().pipe(Trie.insert("shells", 0))),
1548
+ * true
1549
+ * )
1550
+ *
1551
+ * @since 2.0.0
1552
+ * @category mutations
1553
+ */
722
1554
  (keys: Iterable<string>): <V>(self: Trie<V>) => Trie<V>
1555
+ /**
1556
+ * Removes all entries in the `Trie` which have the specified keys.
1557
+ *
1558
+ * @example
1559
+ * import { Trie, Equal } from "effect"
1560
+ *
1561
+ * const trie = Trie.empty<number>().pipe(
1562
+ * Trie.insert("shells", 0),
1563
+ * Trie.insert("sells", 1),
1564
+ * Trie.insert("she", 2)
1565
+ * )
1566
+ *
1567
+ * assert.equal(
1568
+ * Equal.equals(trie.pipe(Trie.removeMany(["she", "sells"])), Trie.empty<number>().pipe(Trie.insert("shells", 0))),
1569
+ * true
1570
+ * )
1571
+ *
1572
+ * @since 2.0.0
1573
+ * @category mutations
1574
+ */
723
1575
  <V>(self: Trie<V>, keys: Iterable<string>): Trie<V>
724
1576
  } = TR.removeMany
725
1577
 
@@ -751,6 +1603,60 @@ export const removeMany: {
751
1603
  * @category mutations
752
1604
  */
753
1605
  export const insertMany: {
1606
+ /**
1607
+ * Insert multiple entries in the `Trie` at once.
1608
+ *
1609
+ * @example
1610
+ * import { Trie, Equal } from "effect"
1611
+ *
1612
+ * const trie = Trie.empty<number>().pipe(
1613
+ * Trie.insert("shells", 0),
1614
+ * Trie.insert("sells", 1),
1615
+ * Trie.insert("she", 2)
1616
+ * )
1617
+ *
1618
+ * const trieInsert = Trie.empty<number>().pipe(
1619
+ * Trie.insert("shells", 0),
1620
+ * Trie.insertMany(
1621
+ * [["sells", 1], ["she", 2]]
1622
+ * )
1623
+ * )
1624
+ *
1625
+ * assert.equal(
1626
+ * Equal.equals(trie, trieInsert),
1627
+ * true
1628
+ * )
1629
+ *
1630
+ * @since 2.0.0
1631
+ * @category mutations
1632
+ */
754
1633
  <V>(iter: Iterable<[string, V]>): (self: Trie<V>) => Trie<V>
1634
+ /**
1635
+ * Insert multiple entries in the `Trie` at once.
1636
+ *
1637
+ * @example
1638
+ * import { Trie, Equal } from "effect"
1639
+ *
1640
+ * const trie = Trie.empty<number>().pipe(
1641
+ * Trie.insert("shells", 0),
1642
+ * Trie.insert("sells", 1),
1643
+ * Trie.insert("she", 2)
1644
+ * )
1645
+ *
1646
+ * const trieInsert = Trie.empty<number>().pipe(
1647
+ * Trie.insert("shells", 0),
1648
+ * Trie.insertMany(
1649
+ * [["sells", 1], ["she", 2]]
1650
+ * )
1651
+ * )
1652
+ *
1653
+ * assert.equal(
1654
+ * Equal.equals(trie, trieInsert),
1655
+ * true
1656
+ * )
1657
+ *
1658
+ * @since 2.0.0
1659
+ * @category mutations
1660
+ */
755
1661
  <V>(self: Trie<V>, iter: Iterable<[string, V]>): Trie<V>
756
1662
  } = TR.insertMany