effect 2.4.19 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (615) hide show
  1. package/Array/package.json +6 -0
  2. package/FiberHandle/package.json +6 -0
  3. package/Record/package.json +6 -0
  4. package/dist/cjs/{ReadonlyArray.js → Array.js} +46 -23
  5. package/dist/cjs/Array.js.map +1 -0
  6. package/dist/cjs/Brand.js +2 -2
  7. package/dist/cjs/Brand.js.map +1 -1
  8. package/dist/cjs/Channel.js +4 -8
  9. package/dist/cjs/Channel.js.map +1 -1
  10. package/dist/cjs/Chunk.js +5 -1
  11. package/dist/cjs/Chunk.js.map +1 -1
  12. package/dist/cjs/ConfigError.js.map +1 -1
  13. package/dist/cjs/Cron.js +13 -13
  14. package/dist/cjs/Cron.js.map +1 -1
  15. package/dist/cjs/Effect.js +14 -10
  16. package/dist/cjs/Effect.js.map +1 -1
  17. package/dist/cjs/Either.js +4 -1
  18. package/dist/cjs/Either.js.map +1 -1
  19. package/dist/cjs/ExecutionStrategy.js.map +1 -1
  20. package/dist/cjs/Exit.js +3 -9
  21. package/dist/cjs/Exit.js.map +1 -1
  22. package/dist/cjs/Fiber.js +2 -8
  23. package/dist/cjs/Fiber.js.map +1 -1
  24. package/dist/cjs/FiberHandle.js +306 -0
  25. package/dist/cjs/FiberHandle.js.map +1 -0
  26. package/dist/cjs/FiberMap.js +105 -28
  27. package/dist/cjs/FiberMap.js.map +1 -1
  28. package/dist/cjs/FiberRefs.js.map +1 -1
  29. package/dist/cjs/FiberSet.js +51 -15
  30. package/dist/cjs/FiberSet.js.map +1 -1
  31. package/dist/cjs/HashMap.js.map +1 -1
  32. package/dist/cjs/HashSet.js.map +1 -1
  33. package/dist/cjs/Iterable.js +40 -5
  34. package/dist/cjs/Iterable.js.map +1 -1
  35. package/dist/cjs/Layer.js.map +1 -1
  36. package/dist/cjs/List.js +3 -3
  37. package/dist/cjs/List.js.map +1 -1
  38. package/dist/cjs/Metric.js +3 -1
  39. package/dist/cjs/Metric.js.map +1 -1
  40. package/dist/cjs/MetricKey.js.map +1 -1
  41. package/dist/cjs/MetricKeyType.js.map +1 -1
  42. package/dist/cjs/MutableHashMap.js +0 -4
  43. package/dist/cjs/MutableHashMap.js.map +1 -1
  44. package/dist/cjs/Option.js +3 -6
  45. package/dist/cjs/Option.js.map +1 -1
  46. package/dist/cjs/{ReadonlyRecord.js → Record.js} +29 -29
  47. package/dist/cjs/Record.js.map +1 -0
  48. package/dist/cjs/STM.js +4 -10
  49. package/dist/cjs/STM.js.map +1 -1
  50. package/dist/cjs/Schedule.js +2 -2
  51. package/dist/cjs/Schedule.js.map +1 -1
  52. package/dist/cjs/ScopedCache.js.map +1 -1
  53. package/dist/cjs/Stream.js +3 -9
  54. package/dist/cjs/Stream.js.map +1 -1
  55. package/dist/cjs/StreamHaltStrategy.js +2 -0
  56. package/dist/cjs/StreamHaltStrategy.js.map +1 -1
  57. package/dist/cjs/String.js +44 -2
  58. package/dist/cjs/String.js.map +1 -1
  59. package/dist/cjs/TestAnnotations.js +1 -1
  60. package/dist/cjs/TestAnnotations.js.map +1 -1
  61. package/dist/cjs/TestClock.js +3 -3
  62. package/dist/cjs/TestClock.js.map +1 -1
  63. package/dist/cjs/Tracer.js.map +1 -1
  64. package/dist/cjs/index.js +8 -6
  65. package/dist/cjs/index.js.map +1 -1
  66. package/dist/cjs/internal/{readonlyArray.js → array.js} +1 -1
  67. package/dist/cjs/internal/array.js.map +1 -0
  68. package/dist/cjs/internal/cache.js +3 -3
  69. package/dist/cjs/internal/cache.js.map +1 -1
  70. package/dist/cjs/internal/cause.js +3 -3
  71. package/dist/cjs/internal/cause.js.map +1 -1
  72. package/dist/cjs/internal/channel/channelExecutor.js +15 -15
  73. package/dist/cjs/internal/channel/channelExecutor.js.map +1 -1
  74. package/dist/cjs/internal/channel/channelState.js +1 -1
  75. package/dist/cjs/internal/channel/channelState.js.map +1 -1
  76. package/dist/cjs/internal/channel/singleProducerAsyncInput.js +1 -1
  77. package/dist/cjs/internal/channel/singleProducerAsyncInput.js.map +1 -1
  78. package/dist/cjs/internal/channel.js +10 -10
  79. package/dist/cjs/internal/channel.js.map +1 -1
  80. package/dist/cjs/internal/clock.js +2 -2
  81. package/dist/cjs/internal/clock.js.map +1 -1
  82. package/dist/cjs/internal/configError.js +20 -19
  83. package/dist/cjs/internal/configError.js.map +1 -1
  84. package/dist/cjs/internal/configProvider/pathPatch.js +1 -1
  85. package/dist/cjs/internal/configProvider/pathPatch.js.map +1 -1
  86. package/dist/cjs/internal/configProvider.js +47 -48
  87. package/dist/cjs/internal/configProvider.js.map +1 -1
  88. package/dist/cjs/internal/core-effect.js +42 -28
  89. package/dist/cjs/internal/core-effect.js.map +1 -1
  90. package/dist/cjs/internal/core-stream.js +2 -3
  91. package/dist/cjs/internal/core-stream.js.map +1 -1
  92. package/dist/cjs/internal/core.js +27 -31
  93. package/dist/cjs/internal/core.js.map +1 -1
  94. package/dist/cjs/internal/dataSource.js +19 -2
  95. package/dist/cjs/internal/dataSource.js.map +1 -1
  96. package/dist/cjs/internal/differ/readonlyArrayPatch.js +6 -6
  97. package/dist/cjs/internal/differ/readonlyArrayPatch.js.map +1 -1
  98. package/dist/cjs/internal/effect/circular.js +1 -1
  99. package/dist/cjs/internal/effect/circular.js.map +1 -1
  100. package/dist/cjs/internal/executionStrategy.js +4 -4
  101. package/dist/cjs/internal/executionStrategy.js.map +1 -1
  102. package/dist/cjs/internal/fiber.js +5 -6
  103. package/dist/cjs/internal/fiber.js.map +1 -1
  104. package/dist/cjs/internal/fiberRefs/patch.js +1 -1
  105. package/dist/cjs/internal/fiberRefs/patch.js.map +1 -1
  106. package/dist/cjs/internal/fiberRefs.js +1 -1
  107. package/dist/cjs/internal/fiberRefs.js.map +1 -1
  108. package/dist/cjs/internal/fiberRuntime.js +33 -33
  109. package/dist/cjs/internal/fiberRuntime.js.map +1 -1
  110. package/dist/cjs/internal/groupBy.js +3 -3
  111. package/dist/cjs/internal/groupBy.js.map +1 -1
  112. package/dist/cjs/internal/hashMap.js.map +1 -1
  113. package/dist/cjs/internal/hashSet.js.map +1 -1
  114. package/dist/cjs/internal/layer/circular.js.map +1 -1
  115. package/dist/cjs/internal/layer.js +5 -5
  116. package/dist/cjs/internal/layer.js.map +1 -1
  117. package/dist/cjs/internal/logger.js +28 -8
  118. package/dist/cjs/internal/logger.js.map +1 -1
  119. package/dist/cjs/internal/managedRuntime.js +1 -1
  120. package/dist/cjs/internal/managedRuntime.js.map +1 -1
  121. package/dist/cjs/internal/metric/boundaries.js +4 -4
  122. package/dist/cjs/internal/metric/boundaries.js.map +1 -1
  123. package/dist/cjs/internal/metric/hook.js +20 -17
  124. package/dist/cjs/internal/metric/hook.js.map +1 -1
  125. package/dist/cjs/internal/metric/key.js +4 -4
  126. package/dist/cjs/internal/metric/key.js.map +1 -1
  127. package/dist/cjs/internal/metric/keyType.js +6 -1
  128. package/dist/cjs/internal/metric/keyType.js.map +1 -1
  129. package/dist/cjs/internal/metric/state.js +4 -4
  130. package/dist/cjs/internal/metric/state.js.map +1 -1
  131. package/dist/cjs/internal/metric.js +4 -4
  132. package/dist/cjs/internal/metric.js.map +1 -1
  133. package/dist/cjs/internal/pool.js +11 -11
  134. package/dist/cjs/internal/pool.js.map +1 -1
  135. package/dist/cjs/internal/pubsub.js +5 -5
  136. package/dist/cjs/internal/pubsub.js.map +1 -1
  137. package/dist/cjs/internal/query.js +2 -2
  138. package/dist/cjs/internal/query.js.map +1 -1
  139. package/dist/cjs/internal/queue.js +9 -9
  140. package/dist/cjs/internal/queue.js.map +1 -1
  141. package/dist/cjs/internal/rateLimiter.js +1 -1
  142. package/dist/cjs/internal/rateLimiter.js.map +1 -1
  143. package/dist/cjs/internal/redBlackTree/iterator.js +2 -2
  144. package/dist/cjs/internal/redBlackTree/iterator.js.map +1 -1
  145. package/dist/cjs/internal/reloadable.js +1 -1
  146. package/dist/cjs/internal/reloadable.js.map +1 -1
  147. package/dist/cjs/internal/runtime.js +4 -4
  148. package/dist/cjs/internal/runtime.js.map +1 -1
  149. package/dist/cjs/internal/schedule.js +5 -5
  150. package/dist/cjs/internal/schedule.js.map +1 -1
  151. package/dist/cjs/internal/scopedCache.js +7 -7
  152. package/dist/cjs/internal/scopedCache.js.map +1 -1
  153. package/dist/cjs/internal/scopedRef.js +4 -4
  154. package/dist/cjs/internal/scopedRef.js.map +1 -1
  155. package/dist/cjs/internal/secret.js +2 -2
  156. package/dist/cjs/internal/secret.js.map +1 -1
  157. package/dist/cjs/internal/sink.js +10 -10
  158. package/dist/cjs/internal/sink.js.map +1 -1
  159. package/dist/cjs/internal/stm/stm/tExit.js +2 -4
  160. package/dist/cjs/internal/stm/stm/tExit.js.map +1 -1
  161. package/dist/cjs/internal/stm/stm.js +11 -11
  162. package/dist/cjs/internal/stm/stm.js.map +1 -1
  163. package/dist/cjs/internal/stm/tMap.js +3 -3
  164. package/dist/cjs/internal/stm/tMap.js.map +1 -1
  165. package/dist/cjs/internal/stm/tPriorityQueue.js +11 -11
  166. package/dist/cjs/internal/stm/tPriorityQueue.js.map +1 -1
  167. package/dist/cjs/internal/stm/tPubSub.js +3 -3
  168. package/dist/cjs/internal/stm/tPubSub.js.map +1 -1
  169. package/dist/cjs/internal/stm/tQueue.js +3 -3
  170. package/dist/cjs/internal/stm/tQueue.js.map +1 -1
  171. package/dist/cjs/internal/stm/tSet.js +1 -1
  172. package/dist/cjs/internal/stm/tSet.js.map +1 -1
  173. package/dist/cjs/internal/stream/haltStrategy.js +5 -5
  174. package/dist/cjs/internal/stream/haltStrategy.js.map +1 -1
  175. package/dist/cjs/internal/stream.js +84 -85
  176. package/dist/cjs/internal/stream.js.map +1 -1
  177. package/dist/cjs/internal/supervisor.js +1 -1
  178. package/dist/cjs/internal/supervisor.js.map +1 -1
  179. package/dist/cjs/internal/take.js +1 -1
  180. package/dist/cjs/internal/take.js.map +1 -1
  181. package/dist/cjs/internal/tracer.js.map +1 -1
  182. package/dist/cjs/internal/trie.js.map +1 -1
  183. package/dist/cjs/internal/version.js +1 -1
  184. package/dist/cjs/internal/version.js.map +1 -1
  185. package/dist/dts/{ReadonlyArray.d.ts → Array.d.ts} +42 -18
  186. package/dist/dts/Array.d.ts.map +1 -0
  187. package/dist/dts/BigDecimal.d.ts.map +1 -1
  188. package/dist/dts/BigInt.d.ts.map +1 -1
  189. package/dist/dts/Brand.d.ts +1 -19
  190. package/dist/dts/Brand.d.ts.map +1 -1
  191. package/dist/dts/Cache.d.ts +10 -10
  192. package/dist/dts/Cache.d.ts.map +1 -1
  193. package/dist/dts/Cause.d.ts +1 -1
  194. package/dist/dts/Cause.d.ts.map +1 -1
  195. package/dist/dts/Channel.d.ts +6 -4
  196. package/dist/dts/Channel.d.ts.map +1 -1
  197. package/dist/dts/Chunk.d.ts +1 -4
  198. package/dist/dts/Chunk.d.ts.map +1 -1
  199. package/dist/dts/ConfigError.d.ts +7 -6
  200. package/dist/dts/ConfigError.d.ts.map +1 -1
  201. package/dist/dts/Cron.d.ts +0 -5
  202. package/dist/dts/Cron.d.ts.map +1 -1
  203. package/dist/dts/Duration.d.ts.map +1 -1
  204. package/dist/dts/Effect.d.ts +38 -33
  205. package/dist/dts/Effect.d.ts.map +1 -1
  206. package/dist/dts/Either.d.ts +5 -2
  207. package/dist/dts/Either.d.ts.map +1 -1
  208. package/dist/dts/Encoding.d.ts.map +1 -1
  209. package/dist/dts/Equivalence.d.ts.map +1 -1
  210. package/dist/dts/ExecutionStrategy.d.ts +10 -2
  211. package/dist/dts/ExecutionStrategy.d.ts.map +1 -1
  212. package/dist/dts/Exit.d.ts +4 -3
  213. package/dist/dts/Exit.d.ts.map +1 -1
  214. package/dist/dts/Fiber.d.ts +4 -2
  215. package/dist/dts/Fiber.d.ts.map +1 -1
  216. package/dist/dts/FiberHandle.d.ts +189 -0
  217. package/dist/dts/FiberHandle.d.ts.map +1 -0
  218. package/dist/dts/FiberMap.d.ts +48 -12
  219. package/dist/dts/FiberMap.d.ts.map +1 -1
  220. package/dist/dts/FiberRefs.d.ts +1 -1
  221. package/dist/dts/FiberRefs.d.ts.map +1 -1
  222. package/dist/dts/FiberSet.d.ts +9 -5
  223. package/dist/dts/FiberSet.d.ts.map +1 -1
  224. package/dist/dts/Function.d.ts.map +1 -1
  225. package/dist/dts/GroupBy.d.ts +1 -1
  226. package/dist/dts/GroupBy.d.ts.map +1 -1
  227. package/dist/dts/HashMap.d.ts +0 -1
  228. package/dist/dts/HashMap.d.ts.map +1 -1
  229. package/dist/dts/HashSet.d.ts +0 -1
  230. package/dist/dts/HashSet.d.ts.map +1 -1
  231. package/dist/dts/Iterable.d.ts +12 -5
  232. package/dist/dts/Iterable.d.ts.map +1 -1
  233. package/dist/dts/Layer.d.ts +6 -6
  234. package/dist/dts/Layer.d.ts.map +1 -1
  235. package/dist/dts/List.d.ts +0 -11
  236. package/dist/dts/List.d.ts.map +1 -1
  237. package/dist/dts/Logger.d.ts +2 -2
  238. package/dist/dts/Logger.d.ts.map +1 -1
  239. package/dist/dts/Metric.d.ts +7 -2
  240. package/dist/dts/Metric.d.ts.map +1 -1
  241. package/dist/dts/MetricKey.d.ts +4 -1
  242. package/dist/dts/MetricKey.d.ts.map +1 -1
  243. package/dist/dts/MetricKeyType.d.ts +4 -1
  244. package/dist/dts/MetricKeyType.d.ts.map +1 -1
  245. package/dist/dts/MutableHashMap.d.ts.map +1 -1
  246. package/dist/dts/Option.d.ts +5 -3
  247. package/dist/dts/Option.d.ts.map +1 -1
  248. package/dist/dts/Order.d.ts.map +1 -1
  249. package/dist/dts/{ReadonlyRecord.d.ts → Record.d.ts} +29 -30
  250. package/dist/dts/Record.d.ts.map +1 -0
  251. package/dist/dts/Request.d.ts +1 -1
  252. package/dist/dts/Request.d.ts.map +1 -1
  253. package/dist/dts/RequestResolver.d.ts +2 -2
  254. package/dist/dts/RequestResolver.d.ts.map +1 -1
  255. package/dist/dts/STM.d.ts +6 -4
  256. package/dist/dts/STM.d.ts.map +1 -1
  257. package/dist/dts/Schedule.d.ts +1 -1
  258. package/dist/dts/Scheduler.d.ts.map +1 -1
  259. package/dist/dts/ScopedCache.d.ts +9 -9
  260. package/dist/dts/ScopedCache.d.ts.map +1 -1
  261. package/dist/dts/SortedMap.d.ts.map +1 -1
  262. package/dist/dts/SortedSet.d.ts +1 -1
  263. package/dist/dts/SortedSet.d.ts.map +1 -1
  264. package/dist/dts/Stream.d.ts +8 -6
  265. package/dist/dts/Stream.d.ts.map +1 -1
  266. package/dist/dts/StreamHaltStrategy.d.ts +14 -2
  267. package/dist/dts/StreamHaltStrategy.d.ts.map +1 -1
  268. package/dist/dts/String.d.ts +25 -1
  269. package/dist/dts/String.d.ts.map +1 -1
  270. package/dist/dts/Subscribable.d.ts.map +1 -1
  271. package/dist/dts/TestAnnotation.d.ts.map +1 -1
  272. package/dist/dts/TestAnnotationMap.d.ts.map +1 -1
  273. package/dist/dts/TestAnnotations.d.ts +0 -3
  274. package/dist/dts/TestAnnotations.d.ts.map +1 -1
  275. package/dist/dts/TestClock.d.ts.map +1 -1
  276. package/dist/dts/TestLive.d.ts.map +1 -1
  277. package/dist/dts/TestServices.d.ts.map +1 -1
  278. package/dist/dts/TestSized.d.ts.map +1 -1
  279. package/dist/dts/Tracer.d.ts +12 -5
  280. package/dist/dts/Tracer.d.ts.map +1 -1
  281. package/dist/dts/Trie.d.ts +1 -1
  282. package/dist/dts/Trie.d.ts.map +1 -1
  283. package/dist/dts/Types.d.ts +0 -7
  284. package/dist/dts/Types.d.ts.map +1 -1
  285. package/dist/dts/index.d.ts +11 -7
  286. package/dist/dts/index.d.ts.map +1 -1
  287. package/dist/dts/internal/array.d.ts +5 -0
  288. package/dist/dts/internal/array.d.ts.map +1 -0
  289. package/dist/dts/internal/core-stream.d.ts +4 -0
  290. package/dist/dts/internal/core-stream.d.ts.map +1 -1
  291. package/dist/dts/internal/core.d.ts +3 -1
  292. package/dist/dts/internal/core.d.ts.map +1 -1
  293. package/dist/dts/internal/fiber.d.ts +5 -1
  294. package/dist/dts/internal/fiber.d.ts.map +1 -1
  295. package/dist/dts/internal/hashMap.d.ts.map +1 -1
  296. package/dist/dts/internal/logger.d.ts.map +1 -1
  297. package/dist/dts/internal/metric/keyType.d.ts +3 -1
  298. package/dist/dts/internal/metric/keyType.d.ts.map +1 -1
  299. package/dist/dts/internal/metric/state.d.ts.map +1 -1
  300. package/dist/dts/internal/random.d.ts.map +1 -1
  301. package/dist/dts/internal/runtimeFlags.d.ts.map +1 -1
  302. package/dist/dts/internal/stm/stm/tExit.d.ts +4 -1
  303. package/dist/dts/internal/stm/stm/tExit.d.ts.map +1 -1
  304. package/dist/dts/internal/stm/stm.d.ts +3 -0
  305. package/dist/dts/internal/stm/stm.d.ts.map +1 -1
  306. package/dist/dts/internal/stream.d.ts +5 -1
  307. package/dist/dts/internal/stream.d.ts.map +1 -1
  308. package/dist/esm/{ReadonlyArray.js → Array.js} +42 -20
  309. package/dist/esm/Array.js.map +1 -0
  310. package/dist/esm/Brand.js +2 -2
  311. package/dist/esm/Brand.js.map +1 -1
  312. package/dist/esm/Channel.js +4 -2
  313. package/dist/esm/Channel.js.map +1 -1
  314. package/dist/esm/Chunk.js +4 -1
  315. package/dist/esm/Chunk.js.map +1 -1
  316. package/dist/esm/ConfigError.js.map +1 -1
  317. package/dist/esm/Cron.js +13 -13
  318. package/dist/esm/Cron.js.map +1 -1
  319. package/dist/esm/Effect.js +11 -2
  320. package/dist/esm/Effect.js.map +1 -1
  321. package/dist/esm/Either.js +4 -1
  322. package/dist/esm/Either.js.map +1 -1
  323. package/dist/esm/ExecutionStrategy.js.map +1 -1
  324. package/dist/esm/Exit.js +4 -2
  325. package/dist/esm/Exit.js.map +1 -1
  326. package/dist/esm/Fiber.js +3 -1
  327. package/dist/esm/Fiber.js.map +1 -1
  328. package/dist/esm/FiberHandle.js +265 -0
  329. package/dist/esm/FiberHandle.js.map +1 -0
  330. package/dist/esm/FiberMap.js +103 -26
  331. package/dist/esm/FiberMap.js.map +1 -1
  332. package/dist/esm/FiberRefs.js.map +1 -1
  333. package/dist/esm/FiberSet.js +51 -15
  334. package/dist/esm/FiberSet.js.map +1 -1
  335. package/dist/esm/HashMap.js.map +1 -1
  336. package/dist/esm/HashSet.js.map +1 -1
  337. package/dist/esm/Iterable.js +39 -4
  338. package/dist/esm/Iterable.js.map +1 -1
  339. package/dist/esm/Layer.js.map +1 -1
  340. package/dist/esm/List.js +3 -3
  341. package/dist/esm/List.js.map +1 -1
  342. package/dist/esm/Metric.js +3 -1
  343. package/dist/esm/Metric.js.map +1 -1
  344. package/dist/esm/MetricKey.js.map +1 -1
  345. package/dist/esm/MetricKeyType.js.map +1 -1
  346. package/dist/esm/MutableHashMap.js +0 -3
  347. package/dist/esm/MutableHashMap.js.map +1 -1
  348. package/dist/esm/Option.js +4 -2
  349. package/dist/esm/Option.js.map +1 -1
  350. package/dist/esm/{ReadonlyRecord.js → Record.js} +29 -29
  351. package/dist/esm/Record.js.map +1 -0
  352. package/dist/esm/STM.js +5 -3
  353. package/dist/esm/STM.js.map +1 -1
  354. package/dist/esm/Schedule.js +1 -1
  355. package/dist/esm/Schedule.js.map +1 -1
  356. package/dist/esm/ScopedCache.js.map +1 -1
  357. package/dist/esm/Stream.js +5 -3
  358. package/dist/esm/Stream.js.map +1 -1
  359. package/dist/esm/StreamHaltStrategy.js +2 -0
  360. package/dist/esm/StreamHaltStrategy.js.map +1 -1
  361. package/dist/esm/String.js +37 -1
  362. package/dist/esm/String.js.map +1 -1
  363. package/dist/esm/TestAnnotations.js +1 -1
  364. package/dist/esm/TestAnnotations.js.map +1 -1
  365. package/dist/esm/TestClock.js +3 -3
  366. package/dist/esm/TestClock.js.map +1 -1
  367. package/dist/esm/Tracer.js.map +1 -1
  368. package/dist/esm/index.js +11 -7
  369. package/dist/esm/index.js.map +1 -1
  370. package/dist/esm/internal/{readonlyArray.js → array.js} +1 -1
  371. package/dist/esm/internal/array.js.map +1 -0
  372. package/dist/esm/internal/cache.js +3 -3
  373. package/dist/esm/internal/cache.js.map +1 -1
  374. package/dist/esm/internal/cause.js +3 -3
  375. package/dist/esm/internal/cause.js.map +1 -1
  376. package/dist/esm/internal/channel/channelExecutor.js +15 -15
  377. package/dist/esm/internal/channel/channelExecutor.js.map +1 -1
  378. package/dist/esm/internal/channel/channelState.js +1 -1
  379. package/dist/esm/internal/channel/channelState.js.map +1 -1
  380. package/dist/esm/internal/channel/singleProducerAsyncInput.js +1 -1
  381. package/dist/esm/internal/channel/singleProducerAsyncInput.js.map +1 -1
  382. package/dist/esm/internal/channel.js +8 -8
  383. package/dist/esm/internal/channel.js.map +1 -1
  384. package/dist/esm/internal/clock.js +2 -2
  385. package/dist/esm/internal/clock.js.map +1 -1
  386. package/dist/esm/internal/configError.js +20 -19
  387. package/dist/esm/internal/configError.js.map +1 -1
  388. package/dist/esm/internal/configProvider/pathPatch.js +1 -1
  389. package/dist/esm/internal/configProvider/pathPatch.js.map +1 -1
  390. package/dist/esm/internal/configProvider.js +47 -48
  391. package/dist/esm/internal/configProvider.js.map +1 -1
  392. package/dist/esm/internal/core-effect.js +39 -26
  393. package/dist/esm/internal/core-effect.js.map +1 -1
  394. package/dist/esm/internal/core-stream.js +3 -2
  395. package/dist/esm/internal/core-stream.js.map +1 -1
  396. package/dist/esm/internal/core.js +24 -26
  397. package/dist/esm/internal/core.js.map +1 -1
  398. package/dist/esm/internal/dataSource.js +19 -2
  399. package/dist/esm/internal/dataSource.js.map +1 -1
  400. package/dist/esm/internal/differ/readonlyArrayPatch.js +6 -6
  401. package/dist/esm/internal/differ/readonlyArrayPatch.js.map +1 -1
  402. package/dist/esm/internal/effect/circular.js +1 -1
  403. package/dist/esm/internal/effect/circular.js.map +1 -1
  404. package/dist/esm/internal/executionStrategy.js +4 -4
  405. package/dist/esm/internal/executionStrategy.js.map +1 -1
  406. package/dist/esm/internal/fiber.js +6 -5
  407. package/dist/esm/internal/fiber.js.map +1 -1
  408. package/dist/esm/internal/fiberRefs/patch.js +1 -1
  409. package/dist/esm/internal/fiberRefs/patch.js.map +1 -1
  410. package/dist/esm/internal/fiberRefs.js +1 -1
  411. package/dist/esm/internal/fiberRefs.js.map +1 -1
  412. package/dist/esm/internal/fiberRuntime.js +33 -33
  413. package/dist/esm/internal/fiberRuntime.js.map +1 -1
  414. package/dist/esm/internal/groupBy.js +3 -3
  415. package/dist/esm/internal/groupBy.js.map +1 -1
  416. package/dist/esm/internal/hashMap.js.map +1 -1
  417. package/dist/esm/internal/hashSet.js.map +1 -1
  418. package/dist/esm/internal/layer/circular.js.map +1 -1
  419. package/dist/esm/internal/layer.js +5 -5
  420. package/dist/esm/internal/layer.js.map +1 -1
  421. package/dist/esm/internal/logger.js +28 -8
  422. package/dist/esm/internal/logger.js.map +1 -1
  423. package/dist/esm/internal/managedRuntime.js +1 -1
  424. package/dist/esm/internal/managedRuntime.js.map +1 -1
  425. package/dist/esm/internal/metric/boundaries.js +4 -4
  426. package/dist/esm/internal/metric/boundaries.js.map +1 -1
  427. package/dist/esm/internal/metric/hook.js +20 -17
  428. package/dist/esm/internal/metric/hook.js.map +1 -1
  429. package/dist/esm/internal/metric/key.js +4 -4
  430. package/dist/esm/internal/metric/key.js.map +1 -1
  431. package/dist/esm/internal/metric/keyType.js +5 -1
  432. package/dist/esm/internal/metric/keyType.js.map +1 -1
  433. package/dist/esm/internal/metric/state.js +4 -4
  434. package/dist/esm/internal/metric/state.js.map +1 -1
  435. package/dist/esm/internal/metric.js +4 -4
  436. package/dist/esm/internal/metric.js.map +1 -1
  437. package/dist/esm/internal/pool.js +11 -11
  438. package/dist/esm/internal/pool.js.map +1 -1
  439. package/dist/esm/internal/pubsub.js +5 -5
  440. package/dist/esm/internal/pubsub.js.map +1 -1
  441. package/dist/esm/internal/query.js +2 -2
  442. package/dist/esm/internal/query.js.map +1 -1
  443. package/dist/esm/internal/queue.js +9 -9
  444. package/dist/esm/internal/queue.js.map +1 -1
  445. package/dist/esm/internal/rateLimiter.js +1 -1
  446. package/dist/esm/internal/rateLimiter.js.map +1 -1
  447. package/dist/esm/internal/redBlackTree/iterator.js +2 -2
  448. package/dist/esm/internal/redBlackTree/iterator.js.map +1 -1
  449. package/dist/esm/internal/reloadable.js +1 -1
  450. package/dist/esm/internal/reloadable.js.map +1 -1
  451. package/dist/esm/internal/runtime.js +4 -4
  452. package/dist/esm/internal/runtime.js.map +1 -1
  453. package/dist/esm/internal/schedule.js +3 -3
  454. package/dist/esm/internal/schedule.js.map +1 -1
  455. package/dist/esm/internal/scopedCache.js +7 -7
  456. package/dist/esm/internal/scopedCache.js.map +1 -1
  457. package/dist/esm/internal/scopedRef.js +4 -4
  458. package/dist/esm/internal/scopedRef.js.map +1 -1
  459. package/dist/esm/internal/secret.js +2 -2
  460. package/dist/esm/internal/secret.js.map +1 -1
  461. package/dist/esm/internal/sink.js +10 -10
  462. package/dist/esm/internal/sink.js.map +1 -1
  463. package/dist/esm/internal/stm/stm/tExit.js +3 -2
  464. package/dist/esm/internal/stm/stm/tExit.js.map +1 -1
  465. package/dist/esm/internal/stm/stm.js +11 -9
  466. package/dist/esm/internal/stm/stm.js.map +1 -1
  467. package/dist/esm/internal/stm/tMap.js +3 -3
  468. package/dist/esm/internal/stm/tMap.js.map +1 -1
  469. package/dist/esm/internal/stm/tPriorityQueue.js +11 -11
  470. package/dist/esm/internal/stm/tPriorityQueue.js.map +1 -1
  471. package/dist/esm/internal/stm/tPubSub.js +3 -3
  472. package/dist/esm/internal/stm/tPubSub.js.map +1 -1
  473. package/dist/esm/internal/stm/tQueue.js +3 -3
  474. package/dist/esm/internal/stm/tQueue.js.map +1 -1
  475. package/dist/esm/internal/stm/tSet.js +1 -1
  476. package/dist/esm/internal/stm/tSet.js.map +1 -1
  477. package/dist/esm/internal/stream/haltStrategy.js +5 -5
  478. package/dist/esm/internal/stream/haltStrategy.js.map +1 -1
  479. package/dist/esm/internal/stream.js +85 -84
  480. package/dist/esm/internal/stream.js.map +1 -1
  481. package/dist/esm/internal/supervisor.js +1 -1
  482. package/dist/esm/internal/supervisor.js.map +1 -1
  483. package/dist/esm/internal/take.js +1 -1
  484. package/dist/esm/internal/take.js.map +1 -1
  485. package/dist/esm/internal/tracer.js.map +1 -1
  486. package/dist/esm/internal/trie.js.map +1 -1
  487. package/dist/esm/internal/version.js +1 -1
  488. package/dist/esm/internal/version.js.map +1 -1
  489. package/package.json +23 -15
  490. package/src/{ReadonlyArray.ts → Array.ts} +50 -24
  491. package/src/Brand.ts +3 -3
  492. package/src/Cache.ts +12 -10
  493. package/src/Cause.ts +1 -1
  494. package/src/Channel.ts +12 -9
  495. package/src/Chunk.ts +3 -3
  496. package/src/ConfigError.ts +7 -6
  497. package/src/Cron.ts +17 -17
  498. package/src/Effect.ts +46 -57
  499. package/src/Either.ts +7 -7
  500. package/src/ExecutionStrategy.ts +10 -2
  501. package/src/Exit.ts +11 -9
  502. package/src/Fiber.ts +11 -8
  503. package/src/FiberHandle.ts +433 -0
  504. package/src/FiberMap.ts +200 -73
  505. package/src/FiberRefs.ts +1 -1
  506. package/src/FiberSet.ts +96 -36
  507. package/src/GroupBy.ts +1 -1
  508. package/src/HashMap.ts +0 -1
  509. package/src/HashSet.ts +0 -1
  510. package/src/Iterable.ts +48 -10
  511. package/src/Layer.ts +6 -6
  512. package/src/List.ts +3 -4
  513. package/src/Logger.ts +2 -2
  514. package/src/Metric.ts +9 -2
  515. package/src/MetricKey.ts +9 -1
  516. package/src/MetricKeyType.ts +6 -1
  517. package/src/MutableHashMap.ts +1 -1
  518. package/src/Option.ts +9 -6
  519. package/src/{ReadonlyRecord.ts → Record.ts} +28 -29
  520. package/src/Request.ts +1 -1
  521. package/src/RequestResolver.ts +4 -4
  522. package/src/STM.ts +12 -9
  523. package/src/Schedule.ts +1 -1
  524. package/src/ScopedCache.ts +11 -9
  525. package/src/SortedSet.ts +1 -1
  526. package/src/Stream.ts +14 -11
  527. package/src/StreamHaltStrategy.ts +14 -2
  528. package/src/String.ts +45 -2
  529. package/src/TestAnnotations.ts +1 -1
  530. package/src/TestClock.ts +3 -3
  531. package/src/Tracer.ts +13 -5
  532. package/src/Trie.ts +1 -1
  533. package/src/Types.ts +0 -8
  534. package/src/index.ts +13 -8
  535. package/src/internal/{readonlyArray.ts → array.ts} +1 -1
  536. package/src/internal/cache.ts +40 -40
  537. package/src/internal/cause.ts +5 -6
  538. package/src/internal/channel/channelExecutor.ts +15 -15
  539. package/src/internal/channel/channelState.ts +1 -1
  540. package/src/internal/channel/singleProducerAsyncInput.ts +1 -1
  541. package/src/internal/channel.ts +11 -11
  542. package/src/internal/clock.ts +2 -2
  543. package/src/internal/configError.ts +22 -21
  544. package/src/internal/configProvider/pathPatch.ts +1 -1
  545. package/src/internal/configProvider.ts +50 -53
  546. package/src/internal/core-effect.ts +73 -70
  547. package/src/internal/core-stream.ts +5 -2
  548. package/src/internal/core.ts +51 -50
  549. package/src/internal/dataSource.ts +19 -20
  550. package/src/internal/differ/readonlyArrayPatch.ts +6 -6
  551. package/src/internal/effect/circular.ts +2 -2
  552. package/src/internal/executionStrategy.ts +14 -12
  553. package/src/internal/fiber.ts +8 -5
  554. package/src/internal/fiberRefs/patch.ts +1 -1
  555. package/src/internal/fiberRefs.ts +1 -1
  556. package/src/internal/fiberRuntime.ts +45 -45
  557. package/src/internal/groupBy.ts +4 -4
  558. package/src/internal/hashMap.ts +0 -1
  559. package/src/internal/hashSet.ts +0 -1
  560. package/src/internal/layer/circular.ts +2 -2
  561. package/src/internal/layer.ts +9 -9
  562. package/src/internal/logger.ts +28 -8
  563. package/src/internal/managedRuntime.ts +1 -1
  564. package/src/internal/metric/boundaries.ts +5 -5
  565. package/src/internal/metric/hook.ts +21 -18
  566. package/src/internal/metric/key.ts +8 -5
  567. package/src/internal/metric/keyType.ts +5 -2
  568. package/src/internal/metric/state.ts +5 -5
  569. package/src/internal/metric.ts +8 -6
  570. package/src/internal/pool.ts +11 -11
  571. package/src/internal/pubsub.ts +6 -6
  572. package/src/internal/query.ts +4 -4
  573. package/src/internal/queue.ts +11 -11
  574. package/src/internal/rateLimiter.ts +1 -1
  575. package/src/internal/redBlackTree/iterator.ts +2 -2
  576. package/src/internal/reloadable.ts +1 -1
  577. package/src/internal/runtime.ts +5 -5
  578. package/src/internal/schedule.ts +8 -9
  579. package/src/internal/scopedCache.ts +53 -53
  580. package/src/internal/scopedRef.ts +4 -4
  581. package/src/internal/secret.ts +2 -2
  582. package/src/internal/sink.ts +10 -10
  583. package/src/internal/stm/stm/tExit.ts +5 -2
  584. package/src/internal/stm/stm.ts +13 -9
  585. package/src/internal/stm/tMap.ts +3 -3
  586. package/src/internal/stm/tPriorityQueue.ts +11 -11
  587. package/src/internal/stm/tPubSub.ts +3 -3
  588. package/src/internal/stm/tQueue.ts +3 -3
  589. package/src/internal/stm/tSet.ts +1 -1
  590. package/src/internal/stream/haltStrategy.ts +23 -14
  591. package/src/internal/stream.ts +91 -88
  592. package/src/internal/supervisor.ts +1 -1
  593. package/src/internal/take.ts +1 -1
  594. package/src/internal/tracer.ts +2 -2
  595. package/src/internal/trie.ts +0 -1
  596. package/src/internal/version.ts +1 -1
  597. package/ReadonlyArray/package.json +0 -6
  598. package/ReadonlyRecord/package.json +0 -6
  599. package/dist/cjs/ReadonlyArray.js.map +0 -1
  600. package/dist/cjs/ReadonlyRecord.js.map +0 -1
  601. package/dist/cjs/internal/Iterable.js +0 -61
  602. package/dist/cjs/internal/Iterable.js.map +0 -1
  603. package/dist/cjs/internal/readonlyArray.js.map +0 -1
  604. package/dist/dts/ReadonlyArray.d.ts.map +0 -1
  605. package/dist/dts/ReadonlyRecord.d.ts.map +0 -1
  606. package/dist/dts/internal/Iterable.d.ts +0 -2
  607. package/dist/dts/internal/Iterable.d.ts.map +0 -1
  608. package/dist/dts/internal/readonlyArray.d.ts +0 -5
  609. package/dist/dts/internal/readonlyArray.d.ts.map +0 -1
  610. package/dist/esm/ReadonlyArray.js.map +0 -1
  611. package/dist/esm/ReadonlyRecord.js.map +0 -1
  612. package/dist/esm/internal/Iterable.js +0 -53
  613. package/dist/esm/internal/Iterable.js.map +0 -1
  614. package/dist/esm/internal/readonlyArray.js.map +0 -1
  615. package/src/internal/Iterable.ts +0 -54
@@ -0,0 +1,265 @@
1
+ /**
2
+ * @since 2.0.0
3
+ */
4
+ import * as Effect from "effect/Effect";
5
+ import * as Cause from "./Cause.js";
6
+ import * as Deferred from "./Deferred.js";
7
+ import * as Exit from "./Exit.js";
8
+ import * as Fiber from "./Fiber.js";
9
+ import * as FiberId from "./FiberId.js";
10
+ import * as FiberRef from "./FiberRef.js";
11
+ import { dual } from "./Function.js";
12
+ import * as Inspectable from "./Inspectable.js";
13
+ import * as Option from "./Option.js";
14
+ import { pipeArguments } from "./Pipeable.js";
15
+ import * as Predicate from "./Predicate.js";
16
+ import * as Runtime from "./Runtime.js";
17
+ /**
18
+ * @since 2.0.0
19
+ * @categories type ids
20
+ */
21
+ export const TypeId = /*#__PURE__*/Symbol.for("effect/FiberHandle");
22
+ /**
23
+ * @since 2.0.0
24
+ * @categories refinements
25
+ */
26
+ export const isFiberHandle = u => Predicate.hasProperty(u, TypeId);
27
+ const Proto = {
28
+ [TypeId]: TypeId,
29
+ toString() {
30
+ return Inspectable.format(this.toJSON());
31
+ },
32
+ toJSON() {
33
+ return {
34
+ _id: "FiberHandle",
35
+ state: this.state
36
+ };
37
+ },
38
+ [Inspectable.NodeInspectSymbol]() {
39
+ return this.toJSON();
40
+ },
41
+ pipe() {
42
+ return pipeArguments(this, arguments);
43
+ }
44
+ };
45
+ const unsafeMake = deferred => {
46
+ const self = Object.create(Proto);
47
+ self.state = {
48
+ _tag: "Open",
49
+ fiber: undefined
50
+ };
51
+ self.deferred = deferred;
52
+ return self;
53
+ };
54
+ /**
55
+ * A FiberHandle can be used to store a single fiber.
56
+ * When the associated Scope is closed, the contained fiber will be interrupted.
57
+ *
58
+ * You can add a fiber to the handle using `FiberHandle.run`, and the fiber will
59
+ * be automatically removed from the FiberHandle when it completes.
60
+ *
61
+ * @example
62
+ * import { Effect, FiberHandle } from "effect"
63
+ *
64
+ * Effect.gen(function*(_) {
65
+ * const handle = yield* _(FiberHandle.make())
66
+ *
67
+ * // run some effects
68
+ * yield* _(FiberHandle.run(handle, Effect.never))
69
+ * // this will interrupt the previous fiber
70
+ * yield* _(FiberHandle.run(handle, Effect.never))
71
+ *
72
+ * yield* _(Effect.sleep(1000))
73
+ * }).pipe(
74
+ * Effect.scoped // The fiber will be interrupted when the scope is closed
75
+ * )
76
+ *
77
+ * @since 2.0.0
78
+ * @categories constructors
79
+ */
80
+ export const make = () => Effect.acquireRelease(Effect.map(Deferred.make(), deferred => unsafeMake(deferred)), handle => Effect.zipRight(clear(handle), Effect.suspend(() => {
81
+ handle.state = {
82
+ _tag: "Closed"
83
+ };
84
+ return Deferred.done(handle.deferred, Exit.void);
85
+ })));
86
+ /**
87
+ * Create an Effect run function that is backed by a FiberHandle.
88
+ *
89
+ * @since 2.0.0
90
+ * @categories constructors
91
+ */
92
+ export const makeRuntime = () => Effect.flatMap(make(), self => runtime(self)());
93
+ /**
94
+ * Set the fiber in a FiberHandle. When the fiber completes, it will be removed from the FiberHandle.
95
+ * If a fiber is already running, it will be interrupted unless `options.onlyIfMissing` is set.
96
+ *
97
+ * @since 2.0.0
98
+ * @categories combinators
99
+ */
100
+ export const unsafeSet = /*#__PURE__*/dual(args => isFiberHandle(args[0]), (self, fiber, options) => {
101
+ if (self.state._tag === "Closed") {
102
+ fiber.unsafeInterruptAsFork(options?.interruptAs ?? FiberId.none);
103
+ return;
104
+ } else if (self.state.fiber !== undefined) {
105
+ if (options?.onlyIfMissing === true) {
106
+ fiber.unsafeInterruptAsFork(options?.interruptAs ?? FiberId.none);
107
+ return;
108
+ } else if (self.state.fiber === fiber) {
109
+ return;
110
+ }
111
+ self.state.fiber.unsafeInterruptAsFork(options?.interruptAs ?? FiberId.none);
112
+ self.state.fiber === undefined;
113
+ }
114
+ ;
115
+ fiber.setFiberRef(FiberRef.unhandledErrorLogLevel, Option.none());
116
+ self.state.fiber = fiber;
117
+ fiber.addObserver(exit => {
118
+ if (self.state._tag === "Open" && fiber === self.state.fiber) {
119
+ self.state.fiber = undefined;
120
+ }
121
+ if (Exit.isFailure(exit) && !Cause.isInterruptedOnly(exit.cause)) {
122
+ Deferred.unsafeDone(self.deferred, exit);
123
+ }
124
+ });
125
+ });
126
+ /**
127
+ * Set the fiber in the FiberHandle. When the fiber completes, it will be removed from the FiberHandle.
128
+ * If a fiber already exists in the FiberHandle, it will be interrupted unless `options.onlyIfMissing` is set.
129
+ *
130
+ * @since 2.0.0
131
+ * @categories combinators
132
+ */
133
+ export const set = /*#__PURE__*/dual(args => isFiberHandle(args[0]), (self, fiber, options) => Effect.fiberIdWith(fiberId => Effect.sync(() => unsafeSet(self, fiber, {
134
+ interruptAs: fiberId,
135
+ onlyIfMissing: options?.onlyIfMissing
136
+ }))));
137
+ /**
138
+ * Retrieve the fiber from the FiberHandle.
139
+ *
140
+ * @since 2.0.0
141
+ * @categories combinators
142
+ */
143
+ export const unsafeGet = self => self.state._tag === "Closed" ? Option.none() : Option.fromNullable(self.state.fiber);
144
+ /**
145
+ * Retrieve the fiber from the FiberHandle.
146
+ *
147
+ * @since 2.0.0
148
+ * @categories combinators
149
+ */
150
+ export const get = self => Effect.suspend(() => unsafeGet(self));
151
+ /**
152
+ * @since 2.0.0
153
+ * @categories combinators
154
+ */
155
+ export const clear = self => Effect.uninterruptibleMask(restore => Effect.suspend(() => {
156
+ if (self.state._tag === "Closed" || self.state.fiber === undefined) {
157
+ return Effect.void;
158
+ }
159
+ return Effect.zipRight(restore(Fiber.interrupt(self.state.fiber)), Effect.sync(() => {
160
+ if (self.state._tag === "Open") {
161
+ self.state.fiber = undefined;
162
+ }
163
+ }));
164
+ }));
165
+ const constInterruptedFiber = /*#__PURE__*/function () {
166
+ let fiber = undefined;
167
+ return () => {
168
+ if (fiber === undefined) {
169
+ fiber = Effect.runFork(Effect.interrupt);
170
+ }
171
+ return fiber;
172
+ };
173
+ }();
174
+ /**
175
+ * Run an Effect and add the forked fiber to the FiberHandle.
176
+ * When the fiber completes, it will be removed from the FiberHandle.
177
+ *
178
+ * @since 2.0.0
179
+ * @categories combinators
180
+ */
181
+ export const run = function () {
182
+ const self = arguments[0];
183
+ if (Effect.isEffect(arguments[1])) {
184
+ const effect = arguments[1];
185
+ const options = arguments[2];
186
+ return Effect.suspend(() => {
187
+ if (self.state._tag === "Closed") {
188
+ return Effect.interrupt;
189
+ } else if (self.state.fiber !== undefined && options?.onlyIfMissing === true) {
190
+ return Effect.sync(constInterruptedFiber);
191
+ }
192
+ return Effect.uninterruptibleMask(restore => Effect.tap(restore(Effect.forkDaemon(effect)), fiber => set(self, fiber, options)));
193
+ });
194
+ }
195
+ const options = arguments[1];
196
+ return effect => Effect.suspend(() => {
197
+ if (self.state._tag === "Closed") {
198
+ return Effect.interrupt;
199
+ } else if (self.state.fiber !== undefined && options?.onlyIfMissing === true) {
200
+ return Effect.sync(constInterruptedFiber);
201
+ }
202
+ return Effect.uninterruptibleMask(restore => Effect.tap(restore(Effect.forkDaemon(effect)), fiber => set(self, fiber, options)));
203
+ });
204
+ };
205
+ /**
206
+ * Capture a Runtime and use it to fork Effect's, adding the forked fibers to the FiberHandle.
207
+ *
208
+ * @example
209
+ * import { Context, Effect, FiberHandle } from "effect"
210
+ *
211
+ * interface Users {
212
+ * readonly _: unique symbol
213
+ * }
214
+ * const Users = Context.GenericTag<Users, {
215
+ * getAll: Effect.Effect<Array<unknown>>
216
+ * }>("Users")
217
+ *
218
+ * Effect.gen(function*(_) {
219
+ * const handle = yield* _(FiberHandle.make())
220
+ * const run = yield* _(FiberHandle.runtime(handle)<Users>())
221
+ *
222
+ * // run an effect and set the fiber in the handle
223
+ * run(Effect.andThen(Users, _ => _.getAll))
224
+ *
225
+ * // this will interrupt the previous fiber
226
+ * run(Effect.andThen(Users, _ => _.getAll))
227
+ * }).pipe(
228
+ * Effect.scoped // The fiber will be interrupted when the scope is closed
229
+ * )
230
+ *
231
+ * @since 2.0.0
232
+ * @categories combinators
233
+ */
234
+ export const runtime = self => () => Effect.map(Effect.runtime(), runtime => {
235
+ const runFork = Runtime.runFork(runtime);
236
+ return (effect, options) => {
237
+ if (self.state._tag === "Closed") {
238
+ return constInterruptedFiber();
239
+ } else if (self.state.fiber !== undefined && options?.onlyIfMissing === true) {
240
+ return constInterruptedFiber();
241
+ }
242
+ const fiber = runFork(effect, options);
243
+ unsafeSet(self, fiber, options);
244
+ return fiber;
245
+ };
246
+ });
247
+ /**
248
+ * If any of the Fiber's in the handle terminate with a failure,
249
+ * the returned Effect will terminate with the first failure that occurred.
250
+ *
251
+ * @since 2.0.0
252
+ * @categories combinators
253
+ * @example
254
+ * import { Effect, FiberHandle } from "effect";
255
+ *
256
+ * Effect.gen(function* (_) {
257
+ * const handle = yield* _(FiberHandle.make());
258
+ * yield* _(FiberHandle.set(handle, Effect.runFork(Effect.fail("error"))));
259
+ *
260
+ * // parent fiber will fail with "error"
261
+ * yield* _(FiberHandle.join(handle));
262
+ * });
263
+ */
264
+ export const join = self => Deferred.await(self.deferred);
265
+ //# sourceMappingURL=FiberHandle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FiberHandle.js","names":["Effect","Cause","Deferred","Exit","Fiber","FiberId","FiberRef","dual","Inspectable","Option","pipeArguments","Predicate","Runtime","TypeId","Symbol","for","isFiberHandle","u","hasProperty","Proto","toString","format","toJSON","_id","state","NodeInspectSymbol","pipe","arguments","unsafeMake","deferred","self","Object","create","_tag","fiber","undefined","make","acquireRelease","map","handle","zipRight","clear","suspend","done","void","makeRuntime","flatMap","runtime","unsafeSet","args","options","unsafeInterruptAsFork","interruptAs","none","onlyIfMissing","setFiberRef","unhandledErrorLogLevel","addObserver","exit","isFailure","isInterruptedOnly","cause","unsafeDone","set","fiberIdWith","fiberId","sync","unsafeGet","fromNullable","get","uninterruptibleMask","restore","interrupt","constInterruptedFiber","runFork","run","isEffect","effect","tap","forkDaemon","join","await"],"sources":["../../src/FiberHandle.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -10,6 +10,7 @@ import * as FiberId from "./FiberId.js";
10
10
  import * as FiberRef from "./FiberRef.js";
11
11
  import { dual } from "./Function.js";
12
12
  import * as Inspectable from "./Inspectable.js";
13
+ import * as Iterable from "./Iterable.js";
13
14
  import * as MutableHashMap from "./MutableHashMap.js";
14
15
  import * as Option from "./Option.js";
15
16
  import { pipeArguments } from "./Pipeable.js";
@@ -28,7 +29,10 @@ export const isFiberMap = u => Predicate.hasProperty(u, TypeId);
28
29
  const Proto = {
29
30
  [TypeId]: TypeId,
30
31
  [Symbol.iterator]() {
31
- return this.backing[Symbol.iterator]();
32
+ if (this.state._tag === "Closed") {
33
+ return Iterable.empty();
34
+ }
35
+ return this.state.backing[Symbol.iterator]();
32
36
  },
33
37
  toString() {
34
38
  return Inspectable.format(this.toJSON());
@@ -36,7 +40,7 @@ const Proto = {
36
40
  toJSON() {
37
41
  return {
38
42
  _id: "FiberMap",
39
- backing: this.backing.toJSON()
43
+ state: this.state
40
44
  };
41
45
  },
42
46
  [Inspectable.NodeInspectSymbol]() {
@@ -48,7 +52,10 @@ const Proto = {
48
52
  };
49
53
  const unsafeMake = (backing, deferred) => {
50
54
  const self = Object.create(Proto);
51
- self.backing = backing;
55
+ self.state = {
56
+ _tag: "Open",
57
+ backing
58
+ };
52
59
  self.deferred = deferred;
53
60
  return self;
54
61
  };
@@ -77,7 +84,12 @@ const unsafeMake = (backing, deferred) => {
77
84
  * @since 2.0.0
78
85
  * @categories constructors
79
86
  */
80
- export const make = () => Effect.acquireRelease(Effect.map(Deferred.make(), deferred => unsafeMake(MutableHashMap.empty(), deferred)), clear);
87
+ export const make = () => Effect.acquireRelease(Effect.map(Deferred.make(), deferred => unsafeMake(MutableHashMap.empty(), deferred)), map => Effect.zipRight(clear(map), Effect.suspend(() => {
88
+ map.state = {
89
+ _tag: "Closed"
90
+ };
91
+ return Deferred.done(map.deferred, Exit.void);
92
+ })));
81
93
  /**
82
94
  * Create an Effect run function that is backed by a FiberMap.
83
95
  *
@@ -92,21 +104,31 @@ export const makeRuntime = () => Effect.flatMap(make(), self => runtime(self)())
92
104
  * @since 2.0.0
93
105
  * @categories combinators
94
106
  */
95
- export const unsafeSet = /*#__PURE__*/dual(args => isFiberMap(args[0]), (self, key, fiber, interruptAs) => {
96
- const previous = MutableHashMap.get(self.backing, key);
107
+ export const unsafeSet = /*#__PURE__*/dual(args => isFiberMap(args[0]), (self, key, fiber, options) => {
108
+ if (self.state._tag === "Closed") {
109
+ fiber.unsafeInterruptAsFork(options?.interruptAs ?? FiberId.none);
110
+ return;
111
+ }
112
+ const previous = MutableHashMap.get(self.state.backing, key);
97
113
  if (previous._tag === "Some") {
98
- if (previous.value === fiber) {
114
+ if (options?.onlyIfMissing === true) {
115
+ fiber.unsafeInterruptAsFork(options?.interruptAs ?? FiberId.none);
116
+ return;
117
+ } else if (previous.value === fiber) {
99
118
  return;
100
119
  }
101
- previous.value.unsafeInterruptAsFork(interruptAs ?? FiberId.none);
120
+ previous.value.unsafeInterruptAsFork(options?.interruptAs ?? FiberId.none);
102
121
  }
103
122
  ;
104
123
  fiber.setFiberRef(FiberRef.unhandledErrorLogLevel, Option.none());
105
- MutableHashMap.set(self.backing, key, fiber);
124
+ MutableHashMap.set(self.state.backing, key, fiber);
106
125
  fiber.addObserver(exit => {
107
- const current = MutableHashMap.get(self.backing, key);
126
+ if (self.state._tag === "Closed") {
127
+ return;
128
+ }
129
+ const current = MutableHashMap.get(self.state.backing, key);
108
130
  if (Option.isSome(current) && fiber === current.value) {
109
- MutableHashMap.remove(self.backing, key);
131
+ MutableHashMap.remove(self.state.backing, key);
110
132
  }
111
133
  if (Exit.isFailure(exit) && !Cause.isInterruptedOnly(exit.cause)) {
112
134
  Deferred.unsafeDone(self.deferred, exit);
@@ -120,21 +142,38 @@ export const unsafeSet = /*#__PURE__*/dual(args => isFiberMap(args[0]), (self, k
120
142
  * @since 2.0.0
121
143
  * @categories combinators
122
144
  */
123
- export const set = /*#__PURE__*/dual(3, (self, key, fiber) => Effect.fiberIdWith(fiberId => Effect.sync(() => unsafeSet(self, key, fiber, fiberId))));
145
+ export const set = /*#__PURE__*/dual(args => isFiberMap(args[0]), (self, key, fiber, options) => Effect.fiberIdWith(fiberId => Effect.sync(() => unsafeSet(self, key, fiber, {
146
+ interruptAs: fiberId,
147
+ onlyIfMissing: options?.onlyIfMissing
148
+ }))));
124
149
  /**
125
150
  * Retrieve a fiber from the FiberMap.
126
151
  *
127
152
  * @since 2.0.0
128
153
  * @categories combinators
129
154
  */
130
- export const unsafeGet = /*#__PURE__*/dual(2, (self, key) => MutableHashMap.get(self.backing, key));
155
+ export const unsafeGet = /*#__PURE__*/dual(2, (self, key) => self.state._tag === "Closed" ? Option.none() : MutableHashMap.get(self.state.backing, key));
131
156
  /**
132
157
  * Retrieve a fiber from the FiberMap.
133
158
  *
134
159
  * @since 2.0.0
135
160
  * @categories combinators
136
161
  */
137
- export const get = /*#__PURE__*/dual(2, (self, key) => Effect.suspend(() => MutableHashMap.get(self.backing, key)));
162
+ export const get = /*#__PURE__*/dual(2, (self, key) => Effect.suspend(() => unsafeGet(self, key)));
163
+ /**
164
+ * Check if a key exists in the FiberMap.
165
+ *
166
+ * @since 2.0.0
167
+ * @categories combinators
168
+ */
169
+ export const unsafeHas = /*#__PURE__*/dual(2, (self, key) => self.state._tag === "Closed" ? false : MutableHashMap.has(self.state.backing, key));
170
+ /**
171
+ * Check if a key exists in the FiberMap.
172
+ *
173
+ * @since 2.0.0
174
+ * @categories combinators
175
+ */
176
+ export const has = /*#__PURE__*/dual(2, (self, key) => Effect.sync(() => unsafeHas(self, key)));
138
177
  /**
139
178
  * Remove a fiber from the FiberMap, interrupting it if it exists.
140
179
  *
@@ -142,20 +181,37 @@ export const get = /*#__PURE__*/dual(2, (self, key) => Effect.suspend(() => Muta
142
181
  * @categories combinators
143
182
  */
144
183
  export const remove = /*#__PURE__*/dual(2, (self, key) => Effect.suspend(() => {
145
- const fiber = MutableHashMap.get(self.backing, key);
184
+ if (self.state._tag === "Closed") {
185
+ return Effect.void;
186
+ }
187
+ const fiber = MutableHashMap.get(self.state.backing, key);
146
188
  if (fiber._tag === "None") {
147
- return Effect.unit;
189
+ return Effect.void;
148
190
  }
149
- MutableHashMap.remove(self.backing, key);
191
+ // will be removed by the observer
150
192
  return Fiber.interrupt(fiber.value);
151
193
  }));
152
194
  /**
153
195
  * @since 2.0.0
154
196
  * @categories combinators
155
197
  */
156
- export const clear = self => Effect.zipRight(Effect.forEach(self.backing, ([_, fiber]) => Fiber.interrupt(fiber)), Effect.sync(() => {
157
- MutableHashMap.clear(self.backing);
158
- }));
198
+ export const clear = self => Effect.suspend(() => {
199
+ if (self.state._tag === "Closed") {
200
+ return Effect.void;
201
+ }
202
+ return Effect.forEach(self.state.backing, ([, fiber]) =>
203
+ // will be removed by the observer
204
+ Fiber.interrupt(fiber));
205
+ });
206
+ const constInterruptedFiber = /*#__PURE__*/function () {
207
+ let fiber = undefined;
208
+ return () => {
209
+ if (fiber === undefined) {
210
+ fiber = Effect.runFork(Effect.interrupt);
211
+ }
212
+ return fiber;
213
+ };
214
+ }();
159
215
  /**
160
216
  * Run an Effect and add the forked fiber to the FiberMap.
161
217
  * When the fiber completes, it will be removed from the FiberMap.
@@ -164,15 +220,31 @@ export const clear = self => Effect.zipRight(Effect.forEach(self.backing, ([_, f
164
220
  * @categories combinators
165
221
  */
166
222
  export const run = function () {
167
- if (arguments.length === 2) {
223
+ if (Effect.isEffect(arguments[2])) {
168
224
  const self = arguments[0];
169
225
  const key = arguments[1];
170
- return effect => Effect.tap(Effect.forkDaemon(effect), fiber => set(self, key, fiber));
226
+ const effect = arguments[2];
227
+ const options = arguments[3];
228
+ return Effect.suspend(() => {
229
+ if (self.state._tag === "Closed") {
230
+ return Effect.interrupt;
231
+ } else if (options?.onlyIfMissing === true && unsafeHas(self, key)) {
232
+ return Effect.sync(constInterruptedFiber);
233
+ }
234
+ return Effect.uninterruptibleMask(restore => Effect.tap(restore(Effect.forkDaemon(effect)), fiber => set(self, key, fiber, options)));
235
+ });
171
236
  }
172
237
  const self = arguments[0];
173
238
  const key = arguments[1];
174
- const effect = arguments[2];
175
- return Effect.tap(Effect.forkDaemon(effect), fiber => set(self, key, fiber));
239
+ const options = arguments[2];
240
+ return effect => Effect.suspend(() => {
241
+ if (self.state._tag === "Closed") {
242
+ return Effect.interrupt;
243
+ } else if (options?.onlyIfMissing === true && unsafeHas(self, key)) {
244
+ return Effect.sync(constInterruptedFiber);
245
+ }
246
+ return Effect.uninterruptibleMask(restore => Effect.tap(restore(Effect.forkDaemon(effect)), fiber => set(self, key, fiber, options)));
247
+ });
176
248
  };
177
249
  /**
178
250
  * Capture a Runtime and use it to fork Effect's, adding the forked fibers to the FiberMap.
@@ -204,8 +276,13 @@ export const run = function () {
204
276
  export const runtime = self => () => Effect.map(Effect.runtime(), runtime => {
205
277
  const runFork = Runtime.runFork(runtime);
206
278
  return (key, effect, options) => {
279
+ if (self.state._tag === "Closed") {
280
+ return constInterruptedFiber();
281
+ } else if (options?.onlyIfMissing === true && unsafeHas(self, key)) {
282
+ return constInterruptedFiber();
283
+ }
207
284
  const fiber = runFork(effect, options);
208
- unsafeSet(self, key, fiber);
285
+ unsafeSet(self, key, fiber, options);
209
286
  return fiber;
210
287
  };
211
288
  });
@@ -213,7 +290,7 @@ export const runtime = self => () => Effect.map(Effect.runtime(), runtime => {
213
290
  * @since 2.0.0
214
291
  * @categories combinators
215
292
  */
216
- export const size = self => Effect.sync(() => MutableHashMap.size(self.backing));
293
+ export const size = self => Effect.sync(() => self.state._tag === "Closed" ? 0 : MutableHashMap.size(self.state.backing));
217
294
  /**
218
295
  * Join all fibers in the FiberMap. If any of the Fiber's in the map terminate with a failure,
219
296
  * the returned Effect will terminate with the first failure that occurred.
@@ -1 +1 @@
1
- {"version":3,"file":"FiberMap.js","names":["Effect","Cause","Deferred","Exit","Fiber","FiberId","FiberRef","dual","Inspectable","MutableHashMap","Option","pipeArguments","Predicate","Runtime","TypeId","Symbol","for","isFiberMap","u","hasProperty","Proto","iterator","backing","toString","format","toJSON","_id","NodeInspectSymbol","pipe","arguments","unsafeMake","deferred","self","Object","create","make","acquireRelease","map","empty","clear","makeRuntime","flatMap","runtime","unsafeSet","args","key","fiber","interruptAs","previous","get","_tag","value","unsafeInterruptAsFork","none","setFiberRef","unhandledErrorLogLevel","set","addObserver","exit","current","isSome","remove","isFailure","isInterruptedOnly","cause","unsafeDone","fiberIdWith","fiberId","sync","unsafeGet","suspend","unit","interrupt","zipRight","forEach","_","run","length","effect","tap","forkDaemon","runFork","options","size","join","await"],"sources":["../../src/FiberMap.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,MAAM,MAAM,eAAe;AAGvC,OAAO,KAAKC,KAAK,MAAM,YAAY;AACnC,OAAO,KAAKC,QAAQ,MAAM,eAAe;AACzC,OAAO,KAAKC,IAAI,MAAM,WAAW;AACjC,OAAO,KAAKC,KAAK,MAAM,YAAY;AACnC,OAAO,KAAKC,OAAO,MAAM,cAAc;AACvC,OAAO,KAAKC,QAAQ,MAAM,eAAe;AACzC,SAASC,IAAI,QAAQ,eAAe;AACpC,OAAO,KAAKC,WAAW,MAAM,kBAAkB;AAE/C,OAAO,KAAKC,cAAc,MAAM,qBAAqB;AACrD,OAAO,KAAKC,MAAM,MAAM,aAAa;AACrC,SAAwBC,aAAa,QAAQ,eAAe;AAC5D,OAAO,KAAKC,SAAS,MAAM,gBAAgB;AAC3C,OAAO,KAAKC,OAAO,MAAM,cAAc;AAEvC;;;;AAIA,OAAO,MAAMC,MAAM,gBAAGC,MAAM,CAACC,GAAG,CAAC,iBAAiB,CAAC;AAoBnD;;;;AAIA,OAAO,MAAMC,UAAU,GAAIC,CAAU,IAA6BN,SAAS,CAACO,WAAW,CAACD,CAAC,EAAEJ,MAAM,CAAC;AAElG,MAAMM,KAAK,GAAG;EACZ,CAACN,MAAM,GAAGA,MAAM;EAChB,CAACC,MAAM,CAACM,QAAQ,IAAC;IACf,OAAO,IAAI,CAACC,OAAO,CAACP,MAAM,CAACM,QAAQ,CAAC,EAAE;EACxC,CAAC;EACDE,QAAQA,CAAA;IACN,OAAOf,WAAW,CAACgB,MAAM,CAAC,IAAI,CAACC,MAAM,EAAE,CAAC;EAC1C,CAAC;EACDA,MAAMA,CAAA;IACJ,OAAO;MACLC,GAAG,EAAE,UAAU;MACfJ,OAAO,EAAE,IAAI,CAACA,OAAO,CAACG,MAAM;KAC7B;EACH,CAAC;EACD,CAACjB,WAAW,CAACmB,iBAAiB,IAAC;IAC7B,OAAO,IAAI,CAACF,MAAM,EAAE;EACtB,CAAC;EACDG,IAAIA,CAAA;IACF,OAAOjB,aAAa,CAAC,IAAI,EAAEkB,SAAS,CAAC;EACvC;CACD;AAED,MAAMC,UAAU,GAAGA,CACjBR,OAAmE,EACnES,QAAqC,KAChB;EACrB,MAAMC,IAAI,GAAGC,MAAM,CAACC,MAAM,CAACd,KAAK,CAAC;EACjCY,IAAI,CAACV,OAAO,GAAGA,OAAO;EACtBU,IAAI,CAACD,QAAQ,GAAGA,QAAQ;EACxB,OAAOC,IAAI;AACb,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,OAAO,MAAMG,IAAI,GAAGA,CAAA,KAClBnC,MAAM,CAACoC,cAAc,CACnBpC,MAAM,CAACqC,GAAG,CAACnC,QAAQ,CAACiC,IAAI,EAAY,EAAGJ,QAAQ,IAC7CD,UAAU,CACRrB,cAAc,CAAC6B,KAAK,EAAE,EACtBP,QAAQ,CACT,CAAC,EACJQ,KAAK,CACN;AAEH;;;;;;AAMA,OAAO,MAAMC,WAAW,GAAGA,CAAA,KASzBxC,MAAM,CAACyC,OAAO,CACZN,IAAI,EAAW,EACdH,IAAI,IAAKU,OAAO,CAACV,IAAI,CAAC,EAAK,CAC7B;AAEH;;;;;;;AAOA,OAAO,MAAMW,SAAS,gBAYlBpC,IAAI,CAYLqC,IAAI,IAAK3B,UAAU,CAAC2B,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAACZ,IAAI,EAAEa,GAAG,EAAEC,KAAK,EAAEC,WAAW,KAAI;EACjE,MAAMC,QAAQ,GAAGvC,cAAc,CAACwC,GAAG,CAACjB,IAAI,CAACV,OAAO,EAAEuB,GAAG,CAAC;EACtD,IAAIG,QAAQ,CAACE,IAAI,KAAK,MAAM,EAAE;IAC5B,IAAIF,QAAQ,CAACG,KAAK,KAAKL,KAAK,EAAE;MAC5B;IACF;IACAE,QAAQ,CAACG,KAAK,CAACC,qBAAqB,CAACL,WAAW,IAAI1C,OAAO,CAACgD,IAAI,CAAC;EACnE;EAEA;EAAEP,KAAwC,CAACQ,WAAW,CAAChD,QAAQ,CAACiD,sBAAsB,EAAE7C,MAAM,CAAC2C,IAAI,EAAE,CAAC;EACtG5C,cAAc,CAAC+C,GAAG,CAACxB,IAAI,CAACV,OAAO,EAAEuB,GAAG,EAAEC,KAAK,CAAC;EAC5CA,KAAK,CAACW,WAAW,CAAEC,IAAI,IAAI;IACzB,MAAMC,OAAO,GAAGlD,cAAc,CAACwC,GAAG,CAACjB,IAAI,CAACV,OAAO,EAAEuB,GAAG,CAAC;IACrD,IAAInC,MAAM,CAACkD,MAAM,CAACD,OAAO,CAAC,IAAIb,KAAK,KAAKa,OAAO,CAACR,KAAK,EAAE;MACrD1C,cAAc,CAACoD,MAAM,CAAC7B,IAAI,CAACV,OAAO,EAAEuB,GAAG,CAAC;IAC1C;IACA,IAAI1C,IAAI,CAAC2D,SAAS,CAACJ,IAAI,CAAC,IAAI,CAACzD,KAAK,CAAC8D,iBAAiB,CAACL,IAAI,CAACM,KAAK,CAAC,EAAE;MAChE9D,QAAQ,CAAC+D,UAAU,CAACjC,IAAI,CAACD,QAAQ,EAAE2B,IAAW,CAAC;IACjD;EACF,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;;AAOA,OAAO,MAAMF,GAAG,gBAUZjD,IAAI,CAUN,CAAC,EAAE,CAACyB,IAAI,EAAEa,GAAG,EAAEC,KAAK,KACpB9C,MAAM,CAACkE,WAAW,CACfC,OAAO,IAAKnE,MAAM,CAACoE,IAAI,CAAC,MAAMzB,SAAS,CAACX,IAAI,EAAEa,GAAG,EAAEC,KAAK,EAAEqB,OAAO,CAAC,CAAC,CACrE,CAAC;AAEJ;;;;;;AAMA,OAAO,MAAME,SAAS,gBAGlB9D,IAAI,CAQN,CAAC,EAAE,CAACyB,IAAI,EAAEa,GAAG,KAAKpC,cAAc,CAACwC,GAAG,CAACjB,IAAI,CAACV,OAAO,EAAEuB,GAAG,CAAC,CAAC;AAE1D;;;;;;AAMA,OAAO,MAAMI,GAAG,gBAGZ1C,IAAI,CAQN,CAAC,EAAE,CAACyB,IAAI,EAAEa,GAAG,KAAK7C,MAAM,CAACsE,OAAO,CAAC,MAAM7D,cAAc,CAACwC,GAAG,CAACjB,IAAI,CAACV,OAAO,EAAEuB,GAAG,CAAC,CAAC,CAAC;AAEhF;;;;;;AAMA,OAAO,MAAMgB,MAAM,gBAGftD,IAAI,CAQN,CAAC,EAAE,CAACyB,IAAI,EAAEa,GAAG,KACb7C,MAAM,CAACsE,OAAO,CAAC,MAAK;EAClB,MAAMxB,KAAK,GAAGrC,cAAc,CAACwC,GAAG,CAACjB,IAAI,CAACV,OAAO,EAAEuB,GAAG,CAAC;EACnD,IAAIC,KAAK,CAACI,IAAI,KAAK,MAAM,EAAE;IACzB,OAAOlD,MAAM,CAACuE,IAAI;EACpB;EACA9D,cAAc,CAACoD,MAAM,CAAC7B,IAAI,CAACV,OAAO,EAAEuB,GAAG,CAAC;EACxC,OAAOzC,KAAK,CAACoE,SAAS,CAAC1B,KAAK,CAACK,KAAK,CAAC;AACrC,CAAC,CAAC,CAAC;AAEL;;;;AAIA,OAAO,MAAMZ,KAAK,GAAaP,IAAuB,IACpDhC,MAAM,CAACyE,QAAQ,CACbzE,MAAM,CAAC0E,OAAO,CAAC1C,IAAI,CAACV,OAAO,EAAE,CAAC,CAACqD,CAAC,EAAE7B,KAAK,CAAC,KAAK1C,KAAK,CAACoE,SAAS,CAAC1B,KAAK,CAAC,CAAC,EACpE9C,MAAM,CAACoE,IAAI,CAAC,MAAK;EACf3D,cAAc,CAAC8B,KAAK,CAACP,IAAI,CAACV,OAAO,CAAC;AACpC,CAAC,CAAC,CACH;AAEH;;;;;;;AAOA,OAAO,MAAMsD,GAAG,GAYZ,SAAAA,CAAA;EACF,IAAI/C,SAAS,CAACgD,MAAM,KAAK,CAAC,EAAE;IAC1B,MAAM7C,IAAI,GAAGH,SAAS,CAAC,CAAC,CAAkB;IAC1C,MAAMgB,GAAG,GAAGhB,SAAS,CAAC,CAAC,CAAC;IACxB,OAAQiD,MAAoC,IAC1C9E,MAAM,CAAC+E,GAAG,CACR/E,MAAM,CAACgF,UAAU,CAACF,MAAM,CAAC,EACxBhC,KAAK,IAAKU,GAAG,CAACxB,IAAI,EAAEa,GAAG,EAAEC,KAAK,CAAC,CACjC;EACL;EACA,MAAMd,IAAI,GAAGH,SAAS,CAAC,CAAC,CAAkB;EAC1C,MAAMgB,GAAG,GAAGhB,SAAS,CAAC,CAAC,CAAC;EACxB,MAAMiD,MAAM,GAAGjD,SAAS,CAAC,CAAC,CAAiC;EAC3D,OAAO7B,MAAM,CAAC+E,GAAG,CACf/E,MAAM,CAACgF,UAAU,CAACF,MAAM,CAAC,EACxBhC,KAAK,IAAKU,GAAG,CAACxB,IAAI,EAAEa,GAAG,EAAEC,KAAK,CAAC,CAC1B;AACV,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,OAAO,MAAMJ,OAAO,GAUNV,IAAuB,IAAK,MACxChC,MAAM,CAACqC,GAAG,CACRrC,MAAM,CAAC0C,OAAO,EAAK,EAClBA,OAAO,IAAI;EACV,MAAMuC,OAAO,GAAGpE,OAAO,CAACoE,OAAO,CAACvC,OAAO,CAAC;EACxC,OAAO,CACLG,GAAM,EACNiC,MAAgC,EAChCI,OAA4C,KAC1C;IACF,MAAMpC,KAAK,GAAGmC,OAAO,CAACH,MAAM,EAAEI,OAAO,CAAC;IACtCvC,SAAS,CAACX,IAAI,EAAEa,GAAG,EAAEC,KAAK,CAAC;IAC3B,OAAOA,KAAK;EACd,CAAC;AACH,CAAC,CACF;AAEH;;;;AAIA,OAAO,MAAMqC,IAAI,GAAanD,IAAuB,IACnDhC,MAAM,CAACoE,IAAI,CAAC,MAAM3D,cAAc,CAAC0E,IAAI,CAACnD,IAAI,CAACV,OAAO,CAAC,CAAC;AAEtD;;;;;;;;;;;;;;;;;AAiBA,OAAO,MAAM8D,IAAI,GAAapD,IAAuB,IACnD9B,QAAQ,CAACmF,KAAK,CAACrD,IAAI,CAACD,QAAuC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"FiberMap.js","names":["Effect","Cause","Deferred","Exit","Fiber","FiberId","FiberRef","dual","Inspectable","Iterable","MutableHashMap","Option","pipeArguments","Predicate","Runtime","TypeId","Symbol","for","isFiberMap","u","hasProperty","Proto","iterator","state","_tag","empty","backing","toString","format","toJSON","_id","NodeInspectSymbol","pipe","arguments","unsafeMake","deferred","self","Object","create","make","acquireRelease","map","zipRight","clear","suspend","done","void","makeRuntime","flatMap","runtime","unsafeSet","args","key","fiber","options","unsafeInterruptAsFork","interruptAs","none","previous","get","onlyIfMissing","value","setFiberRef","unhandledErrorLogLevel","set","addObserver","exit","current","isSome","remove","isFailure","isInterruptedOnly","cause","unsafeDone","fiberIdWith","fiberId","sync","unsafeGet","unsafeHas","has","interrupt","forEach","constInterruptedFiber","undefined","runFork","run","isEffect","effect","uninterruptibleMask","restore","tap","forkDaemon","size","join","await"],"sources":["../../src/FiberMap.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,MAAM,MAAM,eAAe;AAGvC,OAAO,KAAKC,KAAK,MAAM,YAAY;AACnC,OAAO,KAAKC,QAAQ,MAAM,eAAe;AACzC,OAAO,KAAKC,IAAI,MAAM,WAAW;AACjC,OAAO,KAAKC,KAAK,MAAM,YAAY;AACnC,OAAO,KAAKC,OAAO,MAAM,cAAc;AACvC,OAAO,KAAKC,QAAQ,MAAM,eAAe;AACzC,SAASC,IAAI,QAAQ,eAAe;AACpC,OAAO,KAAKC,WAAW,MAAM,kBAAkB;AAE/C,OAAO,KAAKC,QAAQ,MAAM,eAAe;AACzC,OAAO,KAAKC,cAAc,MAAM,qBAAqB;AACrD,OAAO,KAAKC,MAAM,MAAM,aAAa;AACrC,SAAwBC,aAAa,QAAQ,eAAe;AAC5D,OAAO,KAAKC,SAAS,MAAM,gBAAgB;AAC3C,OAAO,KAAKC,OAAO,MAAM,cAAc;AAEvC;;;;AAIA,OAAO,MAAMC,MAAM,gBAAGC,MAAM,CAACC,GAAG,CAAC,iBAAiB,CAAC;AA0BnD;;;;AAIA,OAAO,MAAMC,UAAU,GAAIC,CAAU,IAA6BN,SAAS,CAACO,WAAW,CAACD,CAAC,EAAEJ,MAAM,CAAC;AAElG,MAAMM,KAAK,GAAG;EACZ,CAACN,MAAM,GAAGA,MAAM;EAChB,CAACC,MAAM,CAACM,QAAQ,IAAC;IACf,IAAI,IAAI,CAACC,KAAK,CAACC,IAAI,KAAK,QAAQ,EAAE;MAChC,OAAOf,QAAQ,CAACgB,KAAK,EAAE;IACzB;IACA,OAAO,IAAI,CAACF,KAAK,CAACG,OAAO,CAACV,MAAM,CAACM,QAAQ,CAAC,EAAE;EAC9C,CAAC;EACDK,QAAQA,CAAA;IACN,OAAOnB,WAAW,CAACoB,MAAM,CAAC,IAAI,CAACC,MAAM,EAAE,CAAC;EAC1C,CAAC;EACDA,MAAMA,CAAA;IACJ,OAAO;MACLC,GAAG,EAAE,UAAU;MACfP,KAAK,EAAE,IAAI,CAACA;KACb;EACH,CAAC;EACD,CAACf,WAAW,CAACuB,iBAAiB,IAAC;IAC7B,OAAO,IAAI,CAACF,MAAM,EAAE;EACtB,CAAC;EACDG,IAAIA,CAAA;IACF,OAAOpB,aAAa,CAAC,IAAI,EAAEqB,SAAS,CAAC;EACvC;CACD;AAED,MAAMC,UAAU,GAAGA,CACjBR,OAAmE,EACnES,QAAoC,KACf;EACrB,MAAMC,IAAI,GAAGC,MAAM,CAACC,MAAM,CAACjB,KAAK,CAAC;EACjCe,IAAI,CAACb,KAAK,GAAG;IAAEC,IAAI,EAAE,MAAM;IAAEE;EAAO,CAAE;EACtCU,IAAI,CAACD,QAAQ,GAAGA,QAAQ;EACxB,OAAOC,IAAI;AACb,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,OAAO,MAAMG,IAAI,GAAGA,CAAA,KAClBvC,MAAM,CAACwC,cAAc,CACnBxC,MAAM,CAACyC,GAAG,CAACvC,QAAQ,CAACqC,IAAI,EAAW,EAAGJ,QAAQ,IAC5CD,UAAU,CACRxB,cAAc,CAACe,KAAK,EAAE,EACtBU,QAAQ,CACT,CAAC,EACHM,GAAG,IACFzC,MAAM,CAAC0C,QAAQ,CACbC,KAAK,CAACF,GAAG,CAAC,EACVzC,MAAM,CAAC4C,OAAO,CAAC,MAAK;EAClBH,GAAG,CAAClB,KAAK,GAAG;IAAEC,IAAI,EAAE;EAAQ,CAAE;EAC9B,OAAOtB,QAAQ,CAAC2C,IAAI,CAACJ,GAAG,CAACN,QAAQ,EAAEhC,IAAI,CAAC2C,IAAI,CAAC;AAC/C,CAAC,CAAC,CACH,CACJ;AAEH;;;;;;AAMA,OAAO,MAAMC,WAAW,GAAGA,CAAA,KAazB/C,MAAM,CAACgD,OAAO,CACZT,IAAI,EAAW,EACdH,IAAI,IAAKa,OAAO,CAACb,IAAI,CAAC,EAAK,CAC7B;AAEH;;;;;;;AAOA,OAAO,MAAMc,SAAS,gBAkBlB3C,IAAI,CAAE4C,IAAI,IAAKjC,UAAU,CAACiC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CACtCf,IAAuB,EACvBgB,GAAM,EACNC,KAAiC,EACjCC,OAGa,KACL;EACR,IAAIlB,IAAI,CAACb,KAAK,CAACC,IAAI,KAAK,QAAQ,EAAE;IAChC6B,KAAK,CAACE,qBAAqB,CAACD,OAAO,EAAEE,WAAW,IAAInD,OAAO,CAACoD,IAAI,CAAC;IACjE;EACF;EAEA,MAAMC,QAAQ,GAAGhD,cAAc,CAACiD,GAAG,CAACvB,IAAI,CAACb,KAAK,CAACG,OAAO,EAAE0B,GAAG,CAAC;EAC5D,IAAIM,QAAQ,CAAClC,IAAI,KAAK,MAAM,EAAE;IAC5B,IAAI8B,OAAO,EAAEM,aAAa,KAAK,IAAI,EAAE;MACnCP,KAAK,CAACE,qBAAqB,CAACD,OAAO,EAAEE,WAAW,IAAInD,OAAO,CAACoD,IAAI,CAAC;MACjE;IACF,CAAC,MAAM,IAAIC,QAAQ,CAACG,KAAK,KAAKR,KAAK,EAAE;MACnC;IACF;IACAK,QAAQ,CAACG,KAAK,CAACN,qBAAqB,CAACD,OAAO,EAAEE,WAAW,IAAInD,OAAO,CAACoD,IAAI,CAAC;EAC5E;EAEA;EAAEJ,KAAwC,CAACS,WAAW,CAACxD,QAAQ,CAACyD,sBAAsB,EAAEpD,MAAM,CAAC8C,IAAI,EAAE,CAAC;EACtG/C,cAAc,CAACsD,GAAG,CAAC5B,IAAI,CAACb,KAAK,CAACG,OAAO,EAAE0B,GAAG,EAAEC,KAAK,CAAC;EAClDA,KAAK,CAACY,WAAW,CAAEC,IAAI,IAAI;IACzB,IAAI9B,IAAI,CAACb,KAAK,CAACC,IAAI,KAAK,QAAQ,EAAE;MAChC;IACF;IACA,MAAM2C,OAAO,GAAGzD,cAAc,CAACiD,GAAG,CAACvB,IAAI,CAACb,KAAK,CAACG,OAAO,EAAE0B,GAAG,CAAC;IAC3D,IAAIzC,MAAM,CAACyD,MAAM,CAACD,OAAO,CAAC,IAAId,KAAK,KAAKc,OAAO,CAACN,KAAK,EAAE;MACrDnD,cAAc,CAAC2D,MAAM,CAACjC,IAAI,CAACb,KAAK,CAACG,OAAO,EAAE0B,GAAG,CAAC;IAChD;IACA,IAAIjD,IAAI,CAACmE,SAAS,CAACJ,IAAI,CAAC,IAAI,CAACjE,KAAK,CAACsE,iBAAiB,CAACL,IAAI,CAACM,KAAK,CAAC,EAAE;MAChEtE,QAAQ,CAACuE,UAAU,CAACrC,IAAI,CAACD,QAAQ,EAAE+B,IAAW,CAAC;IACjD;EACF,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;;AAOA,OAAO,MAAMF,GAAG,gBAgBZzD,IAAI,CAAE4C,IAAI,IAAKjC,UAAU,CAACiC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CACtCf,IAAuB,EACvBgB,GAAM,EACNC,KAAiC,EACjCC,OAEa,KAEbtD,MAAM,CAAC0E,WAAW,CACfC,OAAO,IACN3E,MAAM,CAAC4E,IAAI,CAAC,MACV1B,SAAS,CAACd,IAAI,EAAEgB,GAAG,EAAEC,KAAK,EAAE;EAC1BG,WAAW,EAAEmB,OAAO;EACpBf,aAAa,EAAEN,OAAO,EAAEM;CACzB,CAAC,CACH,CACJ,CAAC;AAEJ;;;;;;AAMA,OAAO,MAAMiB,SAAS,gBAGlBtE,IAAI,CAQN,CAAC,EAAE,CAAC6B,IAAI,EAAEgB,GAAG,KAAKhB,IAAI,CAACb,KAAK,CAACC,IAAI,KAAK,QAAQ,GAAGb,MAAM,CAAC8C,IAAI,EAAE,GAAG/C,cAAc,CAACiD,GAAG,CAACvB,IAAI,CAACb,KAAK,CAACG,OAAO,EAAE0B,GAAG,CAAC,CAAC;AAE/G;;;;;;AAMA,OAAO,MAAMO,GAAG,gBAGZpD,IAAI,CAQN,CAAC,EAAE,CAAC6B,IAAI,EAAEgB,GAAG,KAAKpD,MAAM,CAAC4C,OAAO,CAAC,MAAMiC,SAAS,CAACzC,IAAI,EAAEgB,GAAG,CAAC,CAAC,CAAC;AAE/D;;;;;;AAMA,OAAO,MAAM0B,SAAS,gBAGlBvE,IAAI,CACN,CAAC,EACD,CAAU6B,IAAuB,EAAEgB,GAAM,KACvChB,IAAI,CAACb,KAAK,CAACC,IAAI,KAAK,QAAQ,GAAG,KAAK,GAAGd,cAAc,CAACqE,GAAG,CAAC3C,IAAI,CAACb,KAAK,CAACG,OAAO,EAAE0B,GAAG,CAAC,CACrF;AAED;;;;;;AAMA,OAAO,MAAM2B,GAAG,gBAGZxE,IAAI,CACN,CAAC,EACD,CAAU6B,IAAuB,EAAEgB,GAAM,KAA6BpD,MAAM,CAAC4E,IAAI,CAAC,MAAME,SAAS,CAAC1C,IAAI,EAAEgB,GAAG,CAAC,CAAC,CAC9G;AAED;;;;;;AAMA,OAAO,MAAMiB,MAAM,gBAGf9D,IAAI,CAQN,CAAC,EAAE,CAAC6B,IAAI,EAAEgB,GAAG,KACbpD,MAAM,CAAC4C,OAAO,CAAC,MAAK;EAClB,IAAIR,IAAI,CAACb,KAAK,CAACC,IAAI,KAAK,QAAQ,EAAE;IAChC,OAAOxB,MAAM,CAAC8C,IAAI;EACpB;EACA,MAAMO,KAAK,GAAG3C,cAAc,CAACiD,GAAG,CAACvB,IAAI,CAACb,KAAK,CAACG,OAAO,EAAE0B,GAAG,CAAC;EACzD,IAAIC,KAAK,CAAC7B,IAAI,KAAK,MAAM,EAAE;IACzB,OAAOxB,MAAM,CAAC8C,IAAI;EACpB;EACA;EACA,OAAO1C,KAAK,CAAC4E,SAAS,CAAC3B,KAAK,CAACQ,KAAK,CAAC;AACrC,CAAC,CAAC,CAAC;AAEL;;;;AAIA,OAAO,MAAMlB,KAAK,GAAaP,IAAuB,IACpDpC,MAAM,CAAC4C,OAAO,CAAC,MAAK;EAClB,IAAIR,IAAI,CAACb,KAAK,CAACC,IAAI,KAAK,QAAQ,EAAE;IAChC,OAAOxB,MAAM,CAAC8C,IAAI;EACpB;EAEA,OAAO9C,MAAM,CAACiF,OAAO,CAAC7C,IAAI,CAACb,KAAK,CAACG,OAAO,EAAE,CAAC,GAAG2B,KAAK,CAAC;EAClD;EACAjD,KAAK,CAAC4E,SAAS,CAAC3B,KAAK,CAAC,CAAC;AAC3B,CAAC,CAAC;AAEJ,MAAM6B,qBAAqB,gBAAI;EAC7B,IAAI7B,KAAK,GAAiD8B,SAAS;EACnE,OAAO,MAAK;IACV,IAAI9B,KAAK,KAAK8B,SAAS,EAAE;MACvB9B,KAAK,GAAGrD,MAAM,CAACoF,OAAO,CAACpF,MAAM,CAACgF,SAAS,CAAC;IAC1C;IACA,OAAO3B,KAAK;EACd,CAAC;AACH,CAAC,CAAC,CAAE;AAEJ;;;;;;;AAOA,OAAO,MAAMgC,GAAG,GAkBZ,SAAAA,CAAA;EACF,IAAIrF,MAAM,CAACsF,QAAQ,CAACrD,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;IACjC,MAAMG,IAAI,GAAGH,SAAS,CAAC,CAAC,CAAkB;IAC1C,MAAMmB,GAAG,GAAGnB,SAAS,CAAC,CAAC,CAAC;IACxB,MAAMsD,MAAM,GAAGtD,SAAS,CAAC,CAAC,CAAiC;IAC3D,MAAMqB,OAAO,GAAGrB,SAAS,CAAC,CAAC,CAAqD;IAChF,OAAOjC,MAAM,CAAC4C,OAAO,CAAC,MAAK;MACzB,IAAIR,IAAI,CAACb,KAAK,CAACC,IAAI,KAAK,QAAQ,EAAE;QAChC,OAAOxB,MAAM,CAACgF,SAAS;MACzB,CAAC,MAAM,IAAI1B,OAAO,EAAEM,aAAa,KAAK,IAAI,IAAIkB,SAAS,CAAC1C,IAAI,EAAEgB,GAAG,CAAC,EAAE;QAClE,OAAOpD,MAAM,CAAC4E,IAAI,CAACM,qBAAqB,CAAC;MAC3C;MACA,OAAOlF,MAAM,CAACwF,mBAAmB,CAAEC,OAAO,IACxCzF,MAAM,CAAC0F,GAAG,CACRD,OAAO,CAACzF,MAAM,CAAC2F,UAAU,CAACJ,MAAM,CAAC,CAAC,EACjClC,KAAK,IAAKW,GAAG,CAAC5B,IAAI,EAAEgB,GAAG,EAAEC,KAAK,EAAEC,OAAO,CAAC,CAC1C,CACF;IACH,CAAC,CAAQ;EACX;EACA,MAAMlB,IAAI,GAAGH,SAAS,CAAC,CAAC,CAAkB;EAC1C,MAAMmB,GAAG,GAAGnB,SAAS,CAAC,CAAC,CAAC;EACxB,MAAMqB,OAAO,GAAGrB,SAAS,CAAC,CAAC,CAAqD;EAChF,OAAQsD,MAAoC,IAC1CvF,MAAM,CAAC4C,OAAO,CAAC,MAAK;IAClB,IAAIR,IAAI,CAACb,KAAK,CAACC,IAAI,KAAK,QAAQ,EAAE;MAChC,OAAOxB,MAAM,CAACgF,SAAS;IACzB,CAAC,MAAM,IAAI1B,OAAO,EAAEM,aAAa,KAAK,IAAI,IAAIkB,SAAS,CAAC1C,IAAI,EAAEgB,GAAG,CAAC,EAAE;MAClE,OAAOpD,MAAM,CAAC4E,IAAI,CAACM,qBAAqB,CAAC;IAC3C;IACA,OAAOlF,MAAM,CAACwF,mBAAmB,CAAEC,OAAO,IACxCzF,MAAM,CAAC0F,GAAG,CACRD,OAAO,CAACzF,MAAM,CAAC2F,UAAU,CAACJ,MAAM,CAAC,CAAC,EACjClC,KAAK,IAAKW,GAAG,CAAC5B,IAAI,EAAEgB,GAAG,EAAEC,KAAK,EAAEC,OAAO,CAAC,CAC1C,CACF;EACH,CAAC,CAAC;AACN,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,OAAO,MAAML,OAAO,GAcNb,IAAuB,IAAK,MACxCpC,MAAM,CAACyC,GAAG,CACRzC,MAAM,CAACiD,OAAO,EAAK,EAClBA,OAAO,IAAI;EACV,MAAMmC,OAAO,GAAGtE,OAAO,CAACsE,OAAO,CAACnC,OAAO,CAAC;EACxC,OAAO,CACLG,GAAM,EACNmC,MAAgC,EAChCjC,OAIa,KACX;IACF,IAAIlB,IAAI,CAACb,KAAK,CAACC,IAAI,KAAK,QAAQ,EAAE;MAChC,OAAO0D,qBAAqB,EAAE;IAChC,CAAC,MAAM,IAAI5B,OAAO,EAAEM,aAAa,KAAK,IAAI,IAAIkB,SAAS,CAAC1C,IAAI,EAAEgB,GAAG,CAAC,EAAE;MAClE,OAAO8B,qBAAqB,EAAE;IAChC;IACA,MAAM7B,KAAK,GAAG+B,OAAO,CAACG,MAAM,EAAEjC,OAAO,CAAC;IACtCJ,SAAS,CAACd,IAAI,EAAEgB,GAAG,EAAEC,KAAK,EAAEC,OAAO,CAAC;IACpC,OAAOD,KAAK;EACd,CAAC;AACH,CAAC,CACF;AAEH;;;;AAIA,OAAO,MAAMuC,IAAI,GAAaxD,IAAuB,IACnDpC,MAAM,CAAC4E,IAAI,CAAC,MAAMxC,IAAI,CAACb,KAAK,CAACC,IAAI,KAAK,QAAQ,GAAG,CAAC,GAAGd,cAAc,CAACkF,IAAI,CAACxD,IAAI,CAACb,KAAK,CAACG,OAAO,CAAC,CAAC;AAE/F;;;;;;;;;;;;;;;;;AAiBA,OAAO,MAAMmE,IAAI,GAAazD,IAAuB,IACnDlC,QAAQ,CAAC4F,KAAK,CAAC1D,IAAI,CAACD,QAAsC,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"FiberRefs.js","names":["internal","FiberRefsSym","delete_","delete","fiberRefs","forkAs","get","getOrDefault","joinAs","setAll","updateAs","updateManyAs","unsafeMake","empty"],"sources":["../../src/FiberRefs.ts"],"sourcesContent":[null],"mappings":"AAOA,OAAO,KAAKA,QAAQ,MAAM,yBAAyB;AAKnD;;;;AAIA,OAAO,MAAMC,YAAY,GAAkBD,QAAQ,CAACC,YAAY;AAsBhE,MAAMC,OAAO,GAGTF,QAAQ,CAACE,OAAO;AAEpB;AACE;;;;;;AAMAA,OAAO,IAAIC,MAAM;AAGnB;;;;;;AAMA,OAAO,MAAMC,SAAS,GAAiEJ,QAAQ,CAACI,SAAS;AAEzG;;;;;;;;AAQA,OAAO,MAAMC,MAAM,GAGfL,QAAQ,CAACK,MAAM;AAEnB;;;;;;;AAOA,OAAO,MAAMC,GAAG,GAGZN,QAAQ,CAACM,GAAG;AAEhB;;;;;;;AAOA,OAAO,MAAMC,YAAY,GAGrBP,QAAQ,CAACO,YAAY;AAEzB;;;;;;;;AAQA,OAAO,MAAMC,MAAM,GAGfR,QAAQ,CAACQ,MAAM;AAEnB;;;;;;AAMA,OAAO,MAAMC,MAAM,GAA6CT,QAAQ,CAACS,MAAM;AAE/E;;;;;;AAMA,OAAO,MAAMC,QAAQ,GAgBjBV,QAAQ,CAACU,QAAQ;AAErB;;;;;;AAMA,OAAO,MAAMC,YAAY,GAoCrBX,QAAQ,CAACW,YAAY;AAEzB;;;;;;AAMA,OAAO,MAAMC,UAAU,GAENZ,QAAQ,CAACY,UAAU;AAEpC;;;;;;AAMA,OAAO,MAAMC,KAAK,GAAoBb,QAAQ,CAACa,KAAK","ignoreList":[]}
1
+ {"version":3,"file":"FiberRefs.js","names":["internal","FiberRefsSym","delete_","delete","fiberRefs","forkAs","get","getOrDefault","joinAs","setAll","updateAs","updateManyAs","unsafeMake","empty"],"sources":["../../src/FiberRefs.ts"],"sourcesContent":[null],"mappings":"AAQA,OAAO,KAAKA,QAAQ,MAAM,yBAAyB;AAInD;;;;AAIA,OAAO,MAAMC,YAAY,GAAkBD,QAAQ,CAACC,YAAY;AAsBhE,MAAMC,OAAO,GAGTF,QAAQ,CAACE,OAAO;AAEpB;AACE;;;;;;AAMAA,OAAO,IAAIC,MAAM;AAGnB;;;;;;AAMA,OAAO,MAAMC,SAAS,GAAiEJ,QAAQ,CAACI,SAAS;AAEzG;;;;;;;;AAQA,OAAO,MAAMC,MAAM,GAGfL,QAAQ,CAACK,MAAM;AAEnB;;;;;;;AAOA,OAAO,MAAMC,GAAG,GAGZN,QAAQ,CAACM,GAAG;AAEhB;;;;;;;AAOA,OAAO,MAAMC,YAAY,GAGrBP,QAAQ,CAACO,YAAY;AAEzB;;;;;;;;AAQA,OAAO,MAAMC,MAAM,GAGfR,QAAQ,CAACQ,MAAM;AAEnB;;;;;;AAMA,OAAO,MAAMC,MAAM,GAA6CT,QAAQ,CAACS,MAAM;AAE/E;;;;;;AAMA,OAAO,MAAMC,QAAQ,GAgBjBV,QAAQ,CAACU,QAAQ;AAErB;;;;;;AAMA,OAAO,MAAMC,YAAY,GAoCrBX,QAAQ,CAACW,YAAY;AAEzB;;;;;;AAMA,OAAO,MAAMC,UAAU,GAENZ,QAAQ,CAACY,UAAU;AAEpC;;;;;;AAMA,OAAO,MAAMC,KAAK,GAAoBb,QAAQ,CAACa,KAAK","ignoreList":[]}