@clayroach/effect 3.19.14-source-capture.8 → 3.19.14-source-trace.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 (452) hide show
  1. package/SourceLocation/package.json +6 -0
  2. package/dist/cjs/Effect.js +2 -28
  3. package/dist/cjs/Effect.js.map +1 -1
  4. package/dist/cjs/FiberRef.js +12 -1
  5. package/dist/cjs/FiberRef.js.map +1 -1
  6. package/dist/cjs/Layer.js +2 -24
  7. package/dist/cjs/Layer.js.map +1 -1
  8. package/dist/cjs/RuntimeFlags.js +1 -29
  9. package/dist/cjs/RuntimeFlags.js.map +1 -1
  10. package/dist/cjs/SourceLocation.js +60 -0
  11. package/dist/cjs/SourceLocation.js.map +1 -0
  12. package/dist/cjs/Tracer.js +1 -15
  13. package/dist/cjs/Tracer.js.map +1 -1
  14. package/dist/cjs/Utils.js +1 -1
  15. package/dist/cjs/Utils.js.map +1 -1
  16. package/dist/cjs/index.js +3 -1
  17. package/dist/cjs/index.js.map +1 -1
  18. package/dist/cjs/internal/clock.js +1 -1
  19. package/dist/cjs/internal/clock.js.map +1 -1
  20. package/dist/cjs/internal/core.js +17 -50
  21. package/dist/cjs/internal/core.js.map +1 -1
  22. package/dist/cjs/internal/effect/circular.js +18 -30
  23. package/dist/cjs/internal/effect/circular.js.map +1 -1
  24. package/dist/cjs/internal/fiberRuntime.js +16 -65
  25. package/dist/cjs/internal/fiberRuntime.js.map +1 -1
  26. package/dist/cjs/internal/layer/circular.js +1 -5
  27. package/dist/cjs/internal/layer/circular.js.map +1 -1
  28. package/dist/cjs/internal/layer.js +1 -3
  29. package/dist/cjs/internal/layer.js.map +1 -1
  30. package/dist/cjs/internal/logger.js +25 -2
  31. package/dist/cjs/internal/logger.js.map +1 -1
  32. package/dist/cjs/internal/runtimeFlags.js +2 -11
  33. package/dist/cjs/internal/runtimeFlags.js.map +1 -1
  34. package/dist/cjs/internal/tracer.js +1 -114
  35. package/dist/cjs/internal/tracer.js.map +1 -1
  36. package/dist/dts/Config.d.ts +2 -2
  37. package/dist/dts/Config.d.ts.map +1 -1
  38. package/dist/dts/Effect.d.ts +8 -29
  39. package/dist/dts/Effect.d.ts.map +1 -1
  40. package/dist/dts/FiberRef.d.ts +12 -0
  41. package/dist/dts/FiberRef.d.ts.map +1 -1
  42. package/dist/dts/Layer.d.ts +0 -22
  43. package/dist/dts/Layer.d.ts.map +1 -1
  44. package/dist/dts/RuntimeFlags.d.ts +0 -28
  45. package/dist/dts/RuntimeFlags.d.ts.map +1 -1
  46. package/dist/dts/SourceLocation.d.ts +88 -0
  47. package/dist/dts/SourceLocation.d.ts.map +1 -0
  48. package/dist/dts/Tracer.d.ts +0 -15
  49. package/dist/dts/Tracer.d.ts.map +1 -1
  50. package/dist/dts/index.d.ts +6 -0
  51. package/dist/dts/index.d.ts.map +1 -1
  52. package/dist/dts/internal/core.d.ts.map +1 -1
  53. package/dist/dts/internal/layer.d.ts.map +1 -1
  54. package/dist/dts/internal/runtimeFlags.d.ts.map +1 -1
  55. package/dist/esm/Effect.js +0 -26
  56. package/dist/esm/Effect.js.map +1 -1
  57. package/dist/esm/FiberRef.js +11 -0
  58. package/dist/esm/FiberRef.js.map +1 -1
  59. package/dist/esm/Layer.js +0 -22
  60. package/dist/esm/Layer.js.map +1 -1
  61. package/dist/esm/RuntimeFlags.js +0 -28
  62. package/dist/esm/RuntimeFlags.js.map +1 -1
  63. package/dist/esm/SourceLocation.js +51 -0
  64. package/dist/esm/SourceLocation.js.map +1 -0
  65. package/dist/esm/Tracer.js +0 -14
  66. package/dist/esm/Tracer.js.map +1 -1
  67. package/dist/esm/Utils.js +1 -1
  68. package/dist/esm/Utils.js.map +1 -1
  69. package/dist/esm/index.js +6 -0
  70. package/dist/esm/index.js.map +1 -1
  71. package/dist/esm/internal/clock.js +1 -1
  72. package/dist/esm/internal/clock.js.map +1 -1
  73. package/dist/esm/internal/core.js +12 -45
  74. package/dist/esm/internal/core.js.map +1 -1
  75. package/dist/esm/internal/effect/circular.js +18 -30
  76. package/dist/esm/internal/effect/circular.js.map +1 -1
  77. package/dist/esm/internal/fiberRuntime.js +13 -60
  78. package/dist/esm/internal/fiberRuntime.js.map +1 -1
  79. package/dist/esm/internal/layer/circular.js +0 -4
  80. package/dist/esm/internal/layer/circular.js.map +1 -1
  81. package/dist/esm/internal/layer.js +0 -2
  82. package/dist/esm/internal/layer.js.map +1 -1
  83. package/dist/esm/internal/logger.js +25 -2
  84. package/dist/esm/internal/logger.js.map +1 -1
  85. package/dist/esm/internal/runtimeFlags.js +1 -9
  86. package/dist/esm/internal/runtimeFlags.js.map +1 -1
  87. package/dist/esm/internal/tracer.js +0 -111
  88. package/dist/esm/internal/tracer.js.map +1 -1
  89. package/package.json +12 -1
  90. package/src/Arbitrary.ts +1101 -0
  91. package/src/Array.ts +3589 -0
  92. package/src/BigDecimal.ts +1349 -0
  93. package/src/BigInt.ts +643 -0
  94. package/src/Boolean.ts +287 -0
  95. package/src/Brand.ts +360 -0
  96. package/src/Cache.ts +281 -0
  97. package/src/Cause.ts +1555 -0
  98. package/src/Channel.ts +2355 -0
  99. package/src/ChildExecutorDecision.ts +146 -0
  100. package/src/Chunk.ts +1495 -0
  101. package/src/Clock.ts +111 -0
  102. package/src/Config.ts +542 -0
  103. package/src/ConfigError.ts +270 -0
  104. package/src/ConfigProvider.ts +333 -0
  105. package/src/ConfigProviderPathPatch.ts +100 -0
  106. package/src/Console.ts +226 -0
  107. package/src/Context.ts +585 -0
  108. package/src/Cron.ts +706 -0
  109. package/src/Data.ts +596 -0
  110. package/src/DateTime.ts +1686 -0
  111. package/src/DefaultServices.ts +34 -0
  112. package/src/Deferred.ts +301 -0
  113. package/src/Differ.ts +450 -0
  114. package/src/Duration.ts +1000 -0
  115. package/src/Effect.ts +14817 -0
  116. package/src/Effectable.ts +107 -0
  117. package/src/Either.ts +1040 -0
  118. package/src/Encoding.ts +195 -0
  119. package/src/Equal.ts +98 -0
  120. package/src/Equivalence.ts +235 -0
  121. package/src/ExecutionPlan.ts +308 -0
  122. package/src/ExecutionStrategy.ts +119 -0
  123. package/src/Exit.ts +467 -0
  124. package/src/FastCheck.ts +9 -0
  125. package/src/Fiber.ts +744 -0
  126. package/src/FiberHandle.ts +540 -0
  127. package/src/FiberId.ts +195 -0
  128. package/src/FiberMap.ts +656 -0
  129. package/src/FiberRef.ts +444 -0
  130. package/src/FiberRefs.ts +204 -0
  131. package/src/FiberRefsPatch.ts +105 -0
  132. package/src/FiberSet.ts +491 -0
  133. package/src/FiberStatus.ts +108 -0
  134. package/src/Function.ts +1222 -0
  135. package/src/GlobalValue.ts +53 -0
  136. package/src/Graph.ts +3732 -0
  137. package/src/GroupBy.ts +103 -0
  138. package/src/HKT.ts +45 -0
  139. package/src/Hash.ts +195 -0
  140. package/src/HashMap.ts +519 -0
  141. package/src/HashRing.ts +317 -0
  142. package/src/HashSet.ts +2346 -0
  143. package/src/Inspectable.ts +287 -0
  144. package/src/Iterable.ts +1119 -0
  145. package/src/JSONSchema.ts +1044 -0
  146. package/src/KeyedPool.ts +167 -0
  147. package/src/Layer.ts +1228 -0
  148. package/src/LayerMap.ts +436 -0
  149. package/src/List.ts +977 -0
  150. package/src/LogLevel.ts +285 -0
  151. package/src/LogSpan.ts +25 -0
  152. package/src/Logger.ts +702 -0
  153. package/src/Mailbox.ts +268 -0
  154. package/src/ManagedRuntime.ts +180 -0
  155. package/src/Match.ts +1477 -0
  156. package/src/MergeDecision.ts +95 -0
  157. package/src/MergeState.ts +172 -0
  158. package/src/MergeStrategy.ts +107 -0
  159. package/src/Metric.ts +780 -0
  160. package/src/MetricBoundaries.ts +69 -0
  161. package/src/MetricHook.ts +151 -0
  162. package/src/MetricKey.ts +224 -0
  163. package/src/MetricKeyType.ts +262 -0
  164. package/src/MetricLabel.ts +47 -0
  165. package/src/MetricPair.ts +71 -0
  166. package/src/MetricPolling.ts +148 -0
  167. package/src/MetricRegistry.ts +48 -0
  168. package/src/MetricState.ts +257 -0
  169. package/src/Micro.ts +4405 -0
  170. package/src/ModuleVersion.ts +18 -0
  171. package/src/MutableHashMap.ts +411 -0
  172. package/src/MutableHashSet.ts +706 -0
  173. package/src/MutableList.ts +297 -0
  174. package/src/MutableQueue.ts +227 -0
  175. package/src/MutableRef.ts +202 -0
  176. package/src/NonEmptyIterable.ts +32 -0
  177. package/src/Number.ts +1071 -0
  178. package/src/Option.ts +2170 -0
  179. package/src/Order.ts +373 -0
  180. package/src/Ordering.ts +111 -0
  181. package/src/ParseResult.ts +2031 -0
  182. package/src/PartitionedSemaphore.ts +200 -0
  183. package/src/Pipeable.ts +566 -0
  184. package/src/Pool.ts +204 -0
  185. package/src/Predicate.ts +1405 -0
  186. package/src/Pretty.ts +205 -0
  187. package/src/PrimaryKey.ts +23 -0
  188. package/src/PubSub.ts +182 -0
  189. package/src/Queue.ts +644 -0
  190. package/src/Random.ts +204 -0
  191. package/src/RateLimiter.ts +138 -0
  192. package/src/RcMap.ts +141 -0
  193. package/src/RcRef.ts +122 -0
  194. package/src/Readable.ts +93 -0
  195. package/src/Record.ts +1274 -0
  196. package/src/RedBlackTree.ts +421 -0
  197. package/src/Redacted.ts +144 -0
  198. package/src/Ref.ts +180 -0
  199. package/src/RegExp.ts +38 -0
  200. package/src/Reloadable.ts +127 -0
  201. package/src/Request.ts +347 -0
  202. package/src/RequestBlock.ts +118 -0
  203. package/src/RequestResolver.ts +366 -0
  204. package/src/Resource.ts +119 -0
  205. package/src/Runtime.ts +383 -0
  206. package/src/RuntimeFlags.ts +336 -0
  207. package/src/RuntimeFlagsPatch.ts +183 -0
  208. package/src/STM.ts +2045 -0
  209. package/src/Schedule.ts +2219 -0
  210. package/src/ScheduleDecision.ts +62 -0
  211. package/src/ScheduleInterval.ts +151 -0
  212. package/src/ScheduleIntervals.ts +122 -0
  213. package/src/Scheduler.ts +353 -0
  214. package/src/Schema.ts +10914 -0
  215. package/src/SchemaAST.ts +3043 -0
  216. package/src/Scope.ts +204 -0
  217. package/src/ScopedCache.ts +151 -0
  218. package/src/ScopedRef.ts +117 -0
  219. package/src/Secret.ts +88 -0
  220. package/src/SingleProducerAsyncInput.ts +67 -0
  221. package/src/Sink.ts +1461 -0
  222. package/src/SortedMap.ts +287 -0
  223. package/src/SortedSet.ts +390 -0
  224. package/src/SourceLocation.ts +108 -0
  225. package/src/Stream.ts +6468 -0
  226. package/src/StreamEmit.ts +136 -0
  227. package/src/StreamHaltStrategy.ts +123 -0
  228. package/src/Streamable.ts +45 -0
  229. package/src/String.ts +778 -0
  230. package/src/Struct.ts +243 -0
  231. package/src/Subscribable.ts +100 -0
  232. package/src/SubscriptionRef.ts +298 -0
  233. package/src/Supervisor.ts +240 -0
  234. package/src/Symbol.ts +29 -0
  235. package/src/SynchronizedRef.ts +270 -0
  236. package/src/TArray.ts +495 -0
  237. package/src/TDeferred.ts +100 -0
  238. package/src/TMap.ts +515 -0
  239. package/src/TPriorityQueue.ts +223 -0
  240. package/src/TPubSub.ts +200 -0
  241. package/src/TQueue.ts +432 -0
  242. package/src/TRandom.ts +129 -0
  243. package/src/TReentrantLock.ts +224 -0
  244. package/src/TRef.ts +178 -0
  245. package/src/TSemaphore.ts +129 -0
  246. package/src/TSet.ts +365 -0
  247. package/src/TSubscriptionRef.ts +192 -0
  248. package/src/Take.ts +258 -0
  249. package/src/TestAnnotation.ts +158 -0
  250. package/src/TestAnnotationMap.ts +119 -0
  251. package/src/TestAnnotations.ts +117 -0
  252. package/src/TestClock.ts +556 -0
  253. package/src/TestConfig.ts +47 -0
  254. package/src/TestContext.ts +36 -0
  255. package/src/TestLive.ts +53 -0
  256. package/src/TestServices.ts +390 -0
  257. package/src/TestSized.ts +55 -0
  258. package/src/Tracer.ts +182 -0
  259. package/src/Trie.ts +840 -0
  260. package/src/Tuple.ts +305 -0
  261. package/src/Types.ts +353 -0
  262. package/src/Unify.ts +113 -0
  263. package/src/UpstreamPullRequest.ts +117 -0
  264. package/src/UpstreamPullStrategy.ts +121 -0
  265. package/src/Utils.ts +809 -0
  266. package/src/index.ts +1568 -0
  267. package/src/internal/array.ts +8 -0
  268. package/src/internal/blockedRequests.ts +520 -0
  269. package/src/internal/cache.ts +733 -0
  270. package/src/internal/cause.ts +1050 -0
  271. package/src/internal/channel/channelExecutor.ts +1200 -0
  272. package/src/internal/channel/channelState.ts +134 -0
  273. package/src/internal/channel/childExecutorDecision.ts +96 -0
  274. package/src/internal/channel/continuation.ts +200 -0
  275. package/src/internal/channel/mergeDecision.ts +113 -0
  276. package/src/internal/channel/mergeState.ts +120 -0
  277. package/src/internal/channel/mergeStrategy.ts +72 -0
  278. package/src/internal/channel/singleProducerAsyncInput.ts +259 -0
  279. package/src/internal/channel/subexecutor.ts +229 -0
  280. package/src/internal/channel/upstreamPullRequest.ts +84 -0
  281. package/src/internal/channel/upstreamPullStrategy.ts +87 -0
  282. package/src/internal/channel.ts +2603 -0
  283. package/src/internal/clock.ts +95 -0
  284. package/src/internal/completedRequestMap.ts +9 -0
  285. package/src/internal/concurrency.ts +54 -0
  286. package/src/internal/config.ts +716 -0
  287. package/src/internal/configError.ts +304 -0
  288. package/src/internal/configProvider/pathPatch.ts +97 -0
  289. package/src/internal/configProvider.ts +799 -0
  290. package/src/internal/console.ts +153 -0
  291. package/src/internal/context.ts +337 -0
  292. package/src/internal/core-effect.ts +2293 -0
  293. package/src/internal/core-stream.ts +998 -0
  294. package/src/internal/core.ts +3189 -0
  295. package/src/internal/data.ts +36 -0
  296. package/src/internal/dataSource.ts +327 -0
  297. package/src/internal/dateTime.ts +1277 -0
  298. package/src/internal/defaultServices/console.ts +100 -0
  299. package/src/internal/defaultServices.ts +163 -0
  300. package/src/internal/deferred.ts +46 -0
  301. package/src/internal/differ/chunkPatch.ts +211 -0
  302. package/src/internal/differ/contextPatch.ts +232 -0
  303. package/src/internal/differ/hashMapPatch.ts +220 -0
  304. package/src/internal/differ/hashSetPatch.ts +176 -0
  305. package/src/internal/differ/orPatch.ts +311 -0
  306. package/src/internal/differ/readonlyArrayPatch.ts +210 -0
  307. package/src/internal/differ.ts +200 -0
  308. package/src/internal/doNotation.ts +80 -0
  309. package/src/internal/effect/circular.ts +895 -0
  310. package/src/internal/effectable.ts +131 -0
  311. package/src/internal/either.ts +110 -0
  312. package/src/internal/encoding/base64.ts +286 -0
  313. package/src/internal/encoding/base64Url.ts +29 -0
  314. package/src/internal/encoding/common.ts +51 -0
  315. package/src/internal/encoding/hex.ts +315 -0
  316. package/src/internal/errors.ts +7 -0
  317. package/src/internal/executionPlan.ts +114 -0
  318. package/src/internal/executionStrategy.ts +74 -0
  319. package/src/internal/fiber.ts +388 -0
  320. package/src/internal/fiberId.ts +267 -0
  321. package/src/internal/fiberMessage.ts +82 -0
  322. package/src/internal/fiberRefs/patch.ts +144 -0
  323. package/src/internal/fiberRefs.ts +297 -0
  324. package/src/internal/fiberRuntime.ts +3842 -0
  325. package/src/internal/fiberScope.ts +71 -0
  326. package/src/internal/fiberStatus.ts +119 -0
  327. package/src/internal/groupBy.ts +530 -0
  328. package/src/internal/hashMap/array.ts +49 -0
  329. package/src/internal/hashMap/bitwise.ts +32 -0
  330. package/src/internal/hashMap/config.ts +14 -0
  331. package/src/internal/hashMap/keySet.ts +8 -0
  332. package/src/internal/hashMap/node.ts +391 -0
  333. package/src/internal/hashMap.ts +586 -0
  334. package/src/internal/hashSet.ts +323 -0
  335. package/src/internal/keyedPool.ts +244 -0
  336. package/src/internal/layer/circular.ts +214 -0
  337. package/src/internal/layer.ts +1483 -0
  338. package/src/internal/logSpan.ts +20 -0
  339. package/src/internal/logger-circular.ts +24 -0
  340. package/src/internal/logger.ts +522 -0
  341. package/src/internal/mailbox.ts +561 -0
  342. package/src/internal/managedRuntime/circular.ts +6 -0
  343. package/src/internal/managedRuntime.ts +134 -0
  344. package/src/internal/matcher.ts +652 -0
  345. package/src/internal/metric/boundaries.ts +75 -0
  346. package/src/internal/metric/hook.ts +483 -0
  347. package/src/internal/metric/key.ts +167 -0
  348. package/src/internal/metric/keyType.ts +238 -0
  349. package/src/internal/metric/label.ts +41 -0
  350. package/src/internal/metric/pair.ts +48 -0
  351. package/src/internal/metric/polling.ts +149 -0
  352. package/src/internal/metric/registry.ts +187 -0
  353. package/src/internal/metric/state.ts +290 -0
  354. package/src/internal/metric.ts +577 -0
  355. package/src/internal/opCodes/cause.ts +35 -0
  356. package/src/internal/opCodes/channel.ts +83 -0
  357. package/src/internal/opCodes/channelChildExecutorDecision.ts +17 -0
  358. package/src/internal/opCodes/channelMergeDecision.ts +11 -0
  359. package/src/internal/opCodes/channelMergeState.ts +17 -0
  360. package/src/internal/opCodes/channelMergeStrategy.ts +11 -0
  361. package/src/internal/opCodes/channelState.ts +23 -0
  362. package/src/internal/opCodes/channelUpstreamPullRequest.ts +11 -0
  363. package/src/internal/opCodes/channelUpstreamPullStrategy.ts +11 -0
  364. package/src/internal/opCodes/config.ts +65 -0
  365. package/src/internal/opCodes/configError.ts +35 -0
  366. package/src/internal/opCodes/continuation.ts +11 -0
  367. package/src/internal/opCodes/deferred.ts +11 -0
  368. package/src/internal/opCodes/effect.ts +89 -0
  369. package/src/internal/opCodes/layer.ts +59 -0
  370. package/src/internal/opCodes/streamHaltStrategy.ts +23 -0
  371. package/src/internal/option.ts +80 -0
  372. package/src/internal/pool.ts +432 -0
  373. package/src/internal/pubsub.ts +1762 -0
  374. package/src/internal/query.ts +204 -0
  375. package/src/internal/queue.ts +766 -0
  376. package/src/internal/random.ts +161 -0
  377. package/src/internal/rateLimiter.ts +93 -0
  378. package/src/internal/rcMap.ts +285 -0
  379. package/src/internal/rcRef.ts +192 -0
  380. package/src/internal/redBlackTree/iterator.ts +200 -0
  381. package/src/internal/redBlackTree/node.ts +68 -0
  382. package/src/internal/redBlackTree.ts +1245 -0
  383. package/src/internal/redacted.ts +73 -0
  384. package/src/internal/ref.ts +171 -0
  385. package/src/internal/reloadable.ts +140 -0
  386. package/src/internal/request.ts +177 -0
  387. package/src/internal/resource.ts +76 -0
  388. package/src/internal/ringBuffer.ts +68 -0
  389. package/src/internal/runtime.ts +558 -0
  390. package/src/internal/runtimeFlags.ts +178 -0
  391. package/src/internal/runtimeFlagsPatch.ts +103 -0
  392. package/src/internal/schedule/decision.ts +47 -0
  393. package/src/internal/schedule/interval.ts +101 -0
  394. package/src/internal/schedule/intervals.ts +180 -0
  395. package/src/internal/schedule.ts +2199 -0
  396. package/src/internal/schema/errors.ts +191 -0
  397. package/src/internal/schema/schemaId.ts +106 -0
  398. package/src/internal/schema/util.ts +50 -0
  399. package/src/internal/scopedCache.ts +644 -0
  400. package/src/internal/scopedRef.ts +118 -0
  401. package/src/internal/secret.ts +89 -0
  402. package/src/internal/singleShotGen.ts +35 -0
  403. package/src/internal/sink.ts +2120 -0
  404. package/src/internal/stack.ts +10 -0
  405. package/src/internal/stm/core.ts +817 -0
  406. package/src/internal/stm/entry.ts +59 -0
  407. package/src/internal/stm/journal.ts +123 -0
  408. package/src/internal/stm/opCodes/stm.ts +71 -0
  409. package/src/internal/stm/opCodes/stmState.ts +17 -0
  410. package/src/internal/stm/opCodes/strategy.ts +17 -0
  411. package/src/internal/stm/opCodes/tExit.ts +29 -0
  412. package/src/internal/stm/opCodes/tryCommit.ts +11 -0
  413. package/src/internal/stm/stm.ts +1453 -0
  414. package/src/internal/stm/stmState.ts +136 -0
  415. package/src/internal/stm/tArray.ts +550 -0
  416. package/src/internal/stm/tDeferred.ts +81 -0
  417. package/src/internal/stm/tExit.ts +190 -0
  418. package/src/internal/stm/tMap.ts +824 -0
  419. package/src/internal/stm/tPriorityQueue.ts +267 -0
  420. package/src/internal/stm/tPubSub.ts +551 -0
  421. package/src/internal/stm/tQueue.ts +393 -0
  422. package/src/internal/stm/tRandom.ts +140 -0
  423. package/src/internal/stm/tReentrantLock.ts +352 -0
  424. package/src/internal/stm/tRef.ts +195 -0
  425. package/src/internal/stm/tSemaphore.ts +113 -0
  426. package/src/internal/stm/tSet.ts +259 -0
  427. package/src/internal/stm/tSubscriptionRef.ts +286 -0
  428. package/src/internal/stm/tryCommit.ts +34 -0
  429. package/src/internal/stm/txnId.ts +14 -0
  430. package/src/internal/stm/versioned.ts +4 -0
  431. package/src/internal/stream/debounceState.ts +57 -0
  432. package/src/internal/stream/emit.ts +123 -0
  433. package/src/internal/stream/haltStrategy.ts +94 -0
  434. package/src/internal/stream/handoff.ts +187 -0
  435. package/src/internal/stream/handoffSignal.ts +59 -0
  436. package/src/internal/stream/pull.ts +34 -0
  437. package/src/internal/stream/sinkEndReason.ts +30 -0
  438. package/src/internal/stream/zipAllState.ts +88 -0
  439. package/src/internal/stream/zipChunksState.ts +56 -0
  440. package/src/internal/stream.ts +8801 -0
  441. package/src/internal/string-utils.ts +107 -0
  442. package/src/internal/subscriptionRef.ts +138 -0
  443. package/src/internal/supervisor/patch.ts +190 -0
  444. package/src/internal/supervisor.ts +303 -0
  445. package/src/internal/synchronizedRef.ts +114 -0
  446. package/src/internal/take.ts +199 -0
  447. package/src/internal/testing/sleep.ts +27 -0
  448. package/src/internal/testing/suspendedWarningData.ts +85 -0
  449. package/src/internal/testing/warningData.ts +94 -0
  450. package/src/internal/tracer.ts +150 -0
  451. package/src/internal/trie.ts +722 -0
  452. package/src/internal/version.ts +7 -0
@@ -0,0 +1,134 @@
1
+ import * as Effect from "../../Effect.js"
2
+ import type * as Exit from "../../Exit.js"
3
+ import { hasProperty } from "../../Predicate.js"
4
+ import type * as Types from "../../Types.js"
5
+ import * as OpCodes from "../opCodes/channelState.js"
6
+ import type { ErasedExecutor } from "./channelExecutor.js"
7
+
8
+ /** @internal */
9
+ export const ChannelStateTypeId = Symbol.for("effect/ChannelState")
10
+
11
+ /** @internal */
12
+ export type ChannelStateTypeId = typeof ChannelStateTypeId
13
+
14
+ /** @internal */
15
+ export interface ChannelState<out E, out R> extends ChannelState.Variance<E, R> {}
16
+
17
+ /** @internal */
18
+ export declare namespace ChannelState {
19
+ export interface Variance<out E, out R> {
20
+ readonly [ChannelStateTypeId]: {
21
+ readonly _E: Types.Covariant<E>
22
+ readonly _R: Types.Covariant<R>
23
+ }
24
+ }
25
+ }
26
+
27
+ const channelStateVariance = {
28
+ /* c8 ignore next */
29
+ _E: (_: never) => _,
30
+ /* c8 ignore next */
31
+ _R: (_: never) => _
32
+ }
33
+
34
+ /** @internal */
35
+ const proto = {
36
+ [ChannelStateTypeId]: channelStateVariance
37
+ }
38
+
39
+ /** @internal */
40
+ export type Primitive =
41
+ | Done
42
+ | Emit
43
+ | FromEffect
44
+ | Read
45
+
46
+ /** @internal */
47
+ export type Op<Tag extends string, Body = {}> = ChannelState<never, never> & Body & {
48
+ readonly _tag: Tag
49
+ }
50
+
51
+ /** @internal */
52
+ export interface Done extends Op<OpCodes.OP_DONE, {}> {}
53
+
54
+ /** @internal */
55
+ export interface Emit extends Op<OpCodes.OP_EMIT, {}> {}
56
+
57
+ /** @internal */
58
+ export interface FromEffect extends
59
+ Op<OpCodes.OP_FROM_EFFECT, {
60
+ readonly effect: Effect.Effect<unknown, unknown, unknown>
61
+ }>
62
+ {}
63
+
64
+ /** @internal */
65
+ export interface Read extends
66
+ Op<OpCodes.OP_READ, {
67
+ readonly upstream: ErasedExecutor<unknown>
68
+ onEffect(effect: Effect.Effect<void, never, unknown>): Effect.Effect<void, never, unknown>
69
+ onEmit(value: unknown): Effect.Effect<void, never, unknown>
70
+ onDone(exit: Exit.Exit<unknown, unknown>): Effect.Effect<void, never, unknown>
71
+ }>
72
+ {}
73
+
74
+ /** @internal */
75
+ export const Done = (): ChannelState<never, never> => {
76
+ const op = Object.create(proto)
77
+ op._tag = OpCodes.OP_DONE
78
+ return op
79
+ }
80
+
81
+ /** @internal */
82
+ export const Emit = (): ChannelState<never, never> => {
83
+ const op = Object.create(proto)
84
+ op._tag = OpCodes.OP_EMIT
85
+ return op
86
+ }
87
+
88
+ /** @internal */
89
+ export const fromEffect = <X, E, R>(effect: Effect.Effect<X, E, R>): ChannelState<E, R> => {
90
+ const op = Object.create(proto)
91
+ op._tag = OpCodes.OP_FROM_EFFECT
92
+ op.effect = effect
93
+ return op
94
+ }
95
+
96
+ /** @internal */
97
+ export const Read = <R>(
98
+ upstream: ErasedExecutor<R>,
99
+ onEffect: (effect: Effect.Effect<void, never, R>) => Effect.Effect<void, never, R>,
100
+ onEmit: (value: unknown) => Effect.Effect<void, never, R> | undefined,
101
+ onDone: (exit: Exit.Exit<unknown, unknown>) => Effect.Effect<void, never, R> | undefined
102
+ ): ChannelState<never, R> => {
103
+ const op = Object.create(proto)
104
+ op._tag = OpCodes.OP_READ
105
+ op.upstream = upstream
106
+ op.onEffect = onEffect
107
+ op.onEmit = onEmit
108
+ op.onDone = onDone
109
+ return op
110
+ }
111
+
112
+ /** @internal */
113
+ export const isChannelState = (u: unknown): u is ChannelState<unknown, unknown> => hasProperty(u, ChannelStateTypeId)
114
+
115
+ /** @internal */
116
+ export const isDone = <E, R>(self: ChannelState<E, R>): self is Done => (self as Primitive)._tag === OpCodes.OP_DONE
117
+
118
+ /** @internal */
119
+ export const isEmit = <E, R>(self: ChannelState<E, R>): self is Emit => (self as Primitive)._tag === OpCodes.OP_EMIT
120
+
121
+ /** @internal */
122
+ export const isFromEffect = <E, R>(self: ChannelState<E, R>): self is FromEffect =>
123
+ (self as Primitive)._tag === OpCodes.OP_FROM_EFFECT
124
+
125
+ /** @internal */
126
+ export const isRead = <E, R>(self: ChannelState<E, R>): self is Read => (self as Primitive)._tag === OpCodes.OP_READ
127
+
128
+ /** @internal */
129
+ export const effect = <E, R>(self: ChannelState<E, R>): Effect.Effect<void, E, R> =>
130
+ isFromEffect(self) ? self.effect as Effect.Effect<void, E, R> : Effect.void
131
+
132
+ /** @internal */
133
+ export const effectOrUndefinedIgnored = <E, R>(self: ChannelState<E, R>): Effect.Effect<void, E, R> | undefined =>
134
+ isFromEffect(self) ? Effect.ignore(self.effect as Effect.Effect<void, E, R>) : undefined
@@ -0,0 +1,96 @@
1
+ import type * as ChildExecutorDecision from "../../ChildExecutorDecision.js"
2
+ import { dual } from "../../Function.js"
3
+ import { hasProperty } from "../../Predicate.js"
4
+ import * as OpCodes from "../opCodes/channelChildExecutorDecision.js"
5
+
6
+ /** @internal */
7
+ const ChildExecutorDecisionSymbolKey = "effect/ChannelChildExecutorDecision"
8
+
9
+ /** @internal */
10
+ export const ChildExecutorDecisionTypeId: ChildExecutorDecision.ChildExecutorDecisionTypeId = Symbol.for(
11
+ ChildExecutorDecisionSymbolKey
12
+ ) as ChildExecutorDecision.ChildExecutorDecisionTypeId
13
+
14
+ /** @internal */
15
+ const proto = {
16
+ [ChildExecutorDecisionTypeId]: ChildExecutorDecisionTypeId
17
+ }
18
+
19
+ /** @internal */
20
+ export const Continue = (_: void): ChildExecutorDecision.ChildExecutorDecision => {
21
+ const op = Object.create(proto)
22
+ op._tag = OpCodes.OP_CONTINUE
23
+ return op
24
+ }
25
+
26
+ /** @internal */
27
+ export const Close = (value: unknown): ChildExecutorDecision.ChildExecutorDecision => {
28
+ const op = Object.create(proto)
29
+ op._tag = OpCodes.OP_CLOSE
30
+ op.value = value
31
+ return op
32
+ }
33
+
34
+ /** @internal */
35
+ export const Yield = (_: void): ChildExecutorDecision.ChildExecutorDecision => {
36
+ const op = Object.create(proto)
37
+ op._tag = OpCodes.OP_YIELD
38
+ return op
39
+ }
40
+
41
+ /** @internal */
42
+ export const isChildExecutorDecision = (u: unknown): u is ChildExecutorDecision.ChildExecutorDecision =>
43
+ hasProperty(u, ChildExecutorDecisionTypeId)
44
+
45
+ /** @internal */
46
+ export const isContinue = (
47
+ self: ChildExecutorDecision.ChildExecutorDecision
48
+ ): self is ChildExecutorDecision.Continue => self._tag === OpCodes.OP_CONTINUE
49
+
50
+ /** @internal */
51
+ export const isClose = (
52
+ self: ChildExecutorDecision.ChildExecutorDecision
53
+ ): self is ChildExecutorDecision.Close => self._tag === OpCodes.OP_CLOSE
54
+
55
+ /** @internal */
56
+ export const isYield = (
57
+ self: ChildExecutorDecision.ChildExecutorDecision
58
+ ): self is ChildExecutorDecision.Yield => self._tag === OpCodes.OP_YIELD
59
+
60
+ /** @internal */
61
+ export const match = dual<
62
+ <A>(
63
+ options: {
64
+ readonly onContinue: () => A
65
+ readonly onClose: (value: unknown) => A
66
+ readonly onYield: () => A
67
+ }
68
+ ) => (self: ChildExecutorDecision.ChildExecutorDecision) => A,
69
+ <A>(
70
+ self: ChildExecutorDecision.ChildExecutorDecision,
71
+ options: {
72
+ readonly onContinue: () => A
73
+ readonly onClose: (value: unknown) => A
74
+ readonly onYield: () => A
75
+ }
76
+ ) => A
77
+ >(2, <A>(
78
+ self: ChildExecutorDecision.ChildExecutorDecision,
79
+ { onClose, onContinue, onYield }: {
80
+ readonly onContinue: () => A
81
+ readonly onClose: (value: unknown) => A
82
+ readonly onYield: () => A
83
+ }
84
+ ): A => {
85
+ switch (self._tag) {
86
+ case OpCodes.OP_CONTINUE: {
87
+ return onContinue()
88
+ }
89
+ case OpCodes.OP_CLOSE: {
90
+ return onClose(self.value)
91
+ }
92
+ case OpCodes.OP_YIELD: {
93
+ return onYield()
94
+ }
95
+ }
96
+ })
@@ -0,0 +1,200 @@
1
+ import type * as Cause from "../../Cause.js"
2
+ import type * as Channel from "../../Channel.js"
3
+ import type * as Effect from "../../Effect.js"
4
+ import * as Exit from "../../Exit.js"
5
+ import type * as Types from "../../Types.js"
6
+ import * as OpCodes from "../opCodes/continuation.js"
7
+
8
+ /** @internal */
9
+ export const ContinuationTypeId = Symbol.for("effect/ChannelContinuation")
10
+
11
+ /** @internal */
12
+ export type ContinuationTypeId = typeof ContinuationTypeId
13
+
14
+ /** @internal */
15
+ export interface Continuation<
16
+ out Env,
17
+ in InErr,
18
+ in InElem,
19
+ in InDone,
20
+ out OutErr,
21
+ out OutErr2,
22
+ out OutElem,
23
+ out OutDone,
24
+ out OutDone2
25
+ > extends Continuation.Variance<Env, InErr, InElem, InDone, OutErr, OutErr2, OutElem, OutDone, OutDone2> {}
26
+
27
+ /** @internal */
28
+ export declare namespace Continuation {
29
+ /** @internal */
30
+ export interface Variance<
31
+ out Env,
32
+ in InErr,
33
+ in InElem,
34
+ in InDone,
35
+ out OutErr,
36
+ out OutErr2,
37
+ out OutElem,
38
+ out OutDone,
39
+ out OutDone2
40
+ > {
41
+ readonly [ContinuationTypeId]: {
42
+ readonly _Env: Types.Covariant<Env>
43
+ readonly _InErr: Types.Contravariant<InErr>
44
+ readonly _InElem: Types.Contravariant<InElem>
45
+ readonly _InDone: Types.Contravariant<InDone>
46
+ readonly _OutErr: Types.Covariant<OutErr>
47
+ readonly _OutDone: Types.Covariant<OutDone>
48
+ readonly _OutErr2: Types.Covariant<OutErr2>
49
+ readonly _OutElem: Types.Covariant<OutElem>
50
+ readonly _OutDone2: Types.Covariant<OutDone2>
51
+ }
52
+ }
53
+ }
54
+
55
+ /** @internal */
56
+ export type Primitive = ErasedContinuationK | ErasedContinuationFinalizer
57
+
58
+ /** @internal */
59
+ export type ErasedContinuationK = ContinuationK<
60
+ unknown,
61
+ unknown,
62
+ unknown,
63
+ unknown,
64
+ unknown,
65
+ unknown,
66
+ unknown,
67
+ unknown,
68
+ unknown
69
+ >
70
+
71
+ /** @internal */
72
+ export type ErasedContinuationFinalizer = ContinuationFinalizer<unknown, unknown, unknown>
73
+
74
+ /** @internal */
75
+ export interface ContinuationK<
76
+ out Env,
77
+ in InErr,
78
+ in InElem,
79
+ in InDone,
80
+ out OutErr,
81
+ out OutErr2,
82
+ out OutElem,
83
+ out OutDone,
84
+ out OutDone2
85
+ > extends
86
+ Continuation<
87
+ Env,
88
+ InErr,
89
+ InElem,
90
+ InDone,
91
+ OutErr,
92
+ OutErr2,
93
+ OutElem,
94
+ OutDone,
95
+ OutDone2
96
+ >
97
+ {
98
+ readonly _tag: OpCodes.OP_CONTINUATION_K
99
+ onSuccess(
100
+ o: OutDone
101
+ ): Channel.Channel<OutElem, InElem, OutErr2, InErr, OutDone2, InDone, Env>
102
+ onHalt(
103
+ c: Cause.Cause<OutErr>
104
+ ): Channel.Channel<OutElem, InElem, OutErr2, InErr, OutDone2, InDone, Env>
105
+ onExit(
106
+ exit: Exit.Exit<OutDone, OutErr>
107
+ ): Channel.Channel<OutElem, InElem, OutErr2, InErr, OutDone2, InDone, Env>
108
+ }
109
+
110
+ /** @internal */
111
+ export interface ContinuationFinalizer<out Env, out OutErr, out OutDone> extends
112
+ Continuation<
113
+ Env,
114
+ unknown,
115
+ unknown,
116
+ unknown,
117
+ OutErr,
118
+ never,
119
+ never,
120
+ OutDone,
121
+ never
122
+ >
123
+ {
124
+ readonly _tag: OpCodes.OP_CONTINUATION_FINALIZER
125
+ finalizer(exit: Exit.Exit<OutErr, OutDone>): Effect.Effect<unknown, never, Env>
126
+ }
127
+
128
+ const continuationVariance = {
129
+ /* c8 ignore next */
130
+ _Env: (_: never) => _,
131
+ /* c8 ignore next */
132
+ _InErr: (_: unknown) => _,
133
+ /* c8 ignore next */
134
+ _InElem: (_: unknown) => _,
135
+ /* c8 ignore next */
136
+ _InDone: (_: unknown) => _,
137
+ /* c8 ignore next */
138
+ _OutErr: (_: never) => _,
139
+ /* c8 ignore next */
140
+ _OutDone: (_: never) => _,
141
+ /* c8 ignore next */
142
+ _OutErr2: (_: never) => _,
143
+ /* c8 ignore next */
144
+ _OutElem: (_: never) => _,
145
+ /* c8 ignore next */
146
+ _OutDone2: (_: never) => _
147
+ }
148
+
149
+ /** @internal */
150
+ export class ContinuationKImpl<
151
+ out Env,
152
+ out Env2,
153
+ in InErr,
154
+ in InElem,
155
+ in InDone,
156
+ in out OutErr,
157
+ out OutErr2,
158
+ out OutElem,
159
+ in out OutDone,
160
+ out OutDone2
161
+ > implements
162
+ ContinuationK<
163
+ Env | Env2,
164
+ InErr,
165
+ InElem,
166
+ InDone,
167
+ OutErr,
168
+ OutErr2,
169
+ OutElem,
170
+ OutDone,
171
+ OutDone2
172
+ >
173
+ {
174
+ readonly _tag = OpCodes.OP_CONTINUATION_K
175
+ readonly [ContinuationTypeId] = continuationVariance
176
+ constructor(
177
+ readonly onSuccess: (
178
+ o: OutDone
179
+ ) => Channel.Channel<OutElem, InElem, OutErr2, InErr, OutDone2, InDone, Env>,
180
+ readonly onHalt: (
181
+ c: Cause.Cause<OutErr>
182
+ ) => Channel.Channel<OutElem, InElem, OutErr2, InErr, OutDone2, InDone, Env2>
183
+ ) {
184
+ }
185
+ onExit(
186
+ exit: Exit.Exit<OutDone, OutErr>
187
+ ): Channel.Channel<OutElem, InElem, OutErr2, InErr, OutDone2, InDone, Env | Env2> {
188
+ return Exit.isFailure(exit) ? this.onHalt(exit.cause) : this.onSuccess(exit.value)
189
+ }
190
+ }
191
+
192
+ /** @internal */
193
+ export class ContinuationFinalizerImpl<out Env, in out OutErr, in out OutDone>
194
+ implements ContinuationFinalizer<Env, OutErr, OutDone>
195
+ {
196
+ readonly _tag = OpCodes.OP_CONTINUATION_FINALIZER
197
+ readonly [ContinuationTypeId] = continuationVariance
198
+ constructor(readonly finalizer: (exit: Exit.Exit<OutErr, OutDone>) => Effect.Effect<unknown, never, Env>) {
199
+ }
200
+ }
@@ -0,0 +1,113 @@
1
+ import type * as Effect from "../../Effect.js"
2
+ import type * as Exit from "../../Exit.js"
3
+ import { dual } from "../../Function.js"
4
+ import type * as MergeDecision from "../../MergeDecision.js"
5
+ import { hasProperty } from "../../Predicate.js"
6
+ import * as OpCodes from "../opCodes/channelMergeDecision.js"
7
+
8
+ /** @internal */
9
+ const MergeDecisionSymbolKey = "effect/ChannelMergeDecision"
10
+
11
+ /** @internal */
12
+ export const MergeDecisionTypeId: MergeDecision.MergeDecisionTypeId = Symbol.for(
13
+ MergeDecisionSymbolKey
14
+ ) as MergeDecision.MergeDecisionTypeId
15
+
16
+ /** @internal */
17
+ const proto = {
18
+ [MergeDecisionTypeId]: {
19
+ _R: (_: never) => _,
20
+ _E0: (_: unknown) => _,
21
+ _Z0: (_: unknown) => _,
22
+ _E: (_: never) => _,
23
+ _Z: (_: never) => _
24
+ }
25
+ }
26
+
27
+ /** @internal */
28
+ export type Primitive =
29
+ | Done
30
+ | Await
31
+
32
+ /** @internal */
33
+ export type Op<Tag extends string, Body = {}> =
34
+ & MergeDecision.MergeDecision<never, unknown, unknown, never, never>
35
+ & Body
36
+ & {
37
+ readonly _tag: Tag
38
+ }
39
+
40
+ /** @internal */
41
+ export interface Done extends
42
+ Op<OpCodes.OP_DONE, {
43
+ readonly effect: Effect.Effect<never>
44
+ }>
45
+ {}
46
+
47
+ /** @internal */
48
+ export interface Await extends
49
+ Op<OpCodes.OP_AWAIT, {
50
+ f(exit: Exit.Exit<unknown, unknown>): Effect.Effect<never>
51
+ }>
52
+ {}
53
+
54
+ /** @internal */
55
+ export const Done = <Z, E, R>(
56
+ effect: Effect.Effect<Z, E, R>
57
+ ): MergeDecision.MergeDecision<R, unknown, unknown, E, Z> => {
58
+ const op = Object.create(proto)
59
+ op._tag = OpCodes.OP_DONE
60
+ op.effect = effect
61
+ return op
62
+ }
63
+
64
+ /** @internal */
65
+ export const Await = <R, E0, Z0, E, Z>(
66
+ f: (exit: Exit.Exit<Z0, E0>) => Effect.Effect<Z, E, R>
67
+ ): MergeDecision.MergeDecision<R, E0, Z0, E, Z> => {
68
+ const op = Object.create(proto)
69
+ op._tag = OpCodes.OP_AWAIT
70
+ op.f = f
71
+ return op
72
+ }
73
+
74
+ /** @internal */
75
+ export const AwaitConst = <Z, E, R>(
76
+ effect: Effect.Effect<Z, E, R>
77
+ ): MergeDecision.MergeDecision<R, unknown, unknown, E, Z> => Await(() => effect)
78
+
79
+ /** @internal */
80
+ export const isMergeDecision = (
81
+ u: unknown
82
+ ): u is MergeDecision.MergeDecision<unknown, unknown, unknown, unknown, unknown> => hasProperty(u, MergeDecisionTypeId)
83
+
84
+ /** @internal */
85
+ export const match = dual<
86
+ <R, E0, Z0, E, Z, Z2>(
87
+ options: {
88
+ readonly onDone: (effect: Effect.Effect<Z, E, R>) => Z2
89
+ readonly onAwait: (f: (exit: Exit.Exit<Z0, E0>) => Effect.Effect<Z, E, R>) => Z2
90
+ }
91
+ ) => (self: MergeDecision.MergeDecision<R, E0, Z0, E, Z>) => Z2,
92
+ <R, E0, Z0, E, Z, Z2>(
93
+ self: MergeDecision.MergeDecision<R, E0, Z0, E, Z>,
94
+ options: {
95
+ readonly onDone: (effect: Effect.Effect<Z, E, R>) => Z2
96
+ readonly onAwait: (f: (exit: Exit.Exit<Z0, E0>) => Effect.Effect<Z, E, R>) => Z2
97
+ }
98
+ ) => Z2
99
+ >(2, <R, E0, Z0, E, Z, Z2>(
100
+ self: MergeDecision.MergeDecision<R, E0, Z0, E, Z>,
101
+ { onAwait, onDone }: {
102
+ readonly onDone: (effect: Effect.Effect<Z, E, R>) => Z2
103
+ readonly onAwait: (f: (exit: Exit.Exit<Z0, E0>) => Effect.Effect<Z, E, R>) => Z2
104
+ }
105
+ ): Z2 => {
106
+ const op = self as Primitive
107
+ switch (op._tag) {
108
+ case OpCodes.OP_DONE:
109
+ return onDone(op.effect)
110
+ case OpCodes.OP_AWAIT:
111
+ return onAwait(op.f)
112
+ }
113
+ })
@@ -0,0 +1,120 @@
1
+ import type * as Effect from "../../Effect.js"
2
+ import type * as Either from "../../Either.js"
3
+ import type * as Exit from "../../Exit.js"
4
+ import type * as Fiber from "../../Fiber.js"
5
+ import { dual } from "../../Function.js"
6
+ import type * as MergeState from "../../MergeState.js"
7
+ import { hasProperty } from "../../Predicate.js"
8
+ import * as OpCodes from "../opCodes/channelMergeState.js"
9
+
10
+ /** @internal */
11
+ const MergeStateSymbolKey = "effect/ChannelMergeState"
12
+
13
+ /** @internal */
14
+ export const MergeStateTypeId: MergeState.MergeStateTypeId = Symbol.for(
15
+ MergeStateSymbolKey
16
+ ) as MergeState.MergeStateTypeId
17
+
18
+ /** @internal */
19
+ const proto = {
20
+ [MergeStateTypeId]: MergeStateTypeId
21
+ }
22
+
23
+ /** @internal */
24
+ export const BothRunning = <Env, Err, Err1, Err2, Elem, Done, Done1, Done2>(
25
+ left: Fiber.Fiber<Either.Either<Elem, Done>, Err>,
26
+ right: Fiber.Fiber<Either.Either<Elem, Done1>, Err1>
27
+ ): MergeState.MergeState<Env, Err, Err1, Err2, Elem, Done, Done1, Done2> => {
28
+ const op = Object.create(proto)
29
+ op._tag = OpCodes.OP_BOTH_RUNNING
30
+ op.left = left
31
+ op.right = right
32
+ return op
33
+ }
34
+
35
+ /** @internal */
36
+ export const LeftDone = <Env, Err, Err1, Err2, Elem, Done, Done1, Done2>(
37
+ f: (exit: Exit.Exit<Done1, Err1>) => Effect.Effect<Done2, Err2, Env>
38
+ ): MergeState.MergeState<Env, Err, Err1, Err2, Elem, Done, Done1, Done2> => {
39
+ const op = Object.create(proto)
40
+ op._tag = OpCodes.OP_LEFT_DONE
41
+ op.f = f
42
+ return op
43
+ }
44
+
45
+ /** @internal */
46
+ export const RightDone = <Env, Err, Err1, Err2, Elem, Done, Done1, Done2>(
47
+ f: (exit: Exit.Exit<Done, Err>) => Effect.Effect<Done2, Err2, Env>
48
+ ): MergeState.MergeState<Env, Err, Err1, Err2, Elem, Done, Done1, Done2> => {
49
+ const op = Object.create(proto)
50
+ op._tag = OpCodes.OP_RIGHT_DONE
51
+ op.f = f
52
+ return op
53
+ }
54
+
55
+ /** @internal */
56
+ export const isMergeState = (
57
+ u: unknown
58
+ ): u is MergeState.MergeState<unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown> =>
59
+ hasProperty(u, MergeStateTypeId)
60
+
61
+ /** @internal */
62
+ export const isBothRunning = <Env, Err, Err1, Err2, Elem, Done, Done1, Done2>(
63
+ self: MergeState.MergeState<Env, Err, Err1, Err2, Elem, Done, Done1, Done2>
64
+ ): self is MergeState.BothRunning<Env, Err, Err1, Err2, Elem, Done, Done1, Done2> => {
65
+ return self._tag === OpCodes.OP_BOTH_RUNNING
66
+ }
67
+
68
+ /** @internal */
69
+ export const isLeftDone = <Env, Err, Err1, Err2, Elem, Done, Done1, Done2>(
70
+ self: MergeState.MergeState<Env, Err, Err1, Err2, Elem, Done, Done1, Done2>
71
+ ): self is MergeState.LeftDone<Env, Err, Err1, Err2, Elem, Done, Done1, Done2> => {
72
+ return self._tag === OpCodes.OP_LEFT_DONE
73
+ }
74
+
75
+ /** @internal */
76
+ export const isRightDone = <Env, Err, Err1, Err2, Elem, Done, Done1, Done2>(
77
+ self: MergeState.MergeState<Env, Err, Err1, Err2, Elem, Done, Done1, Done2>
78
+ ): self is MergeState.RightDone<Env, Err, Err1, Err2, Elem, Done, Done1, Done2> => {
79
+ return self._tag === OpCodes.OP_RIGHT_DONE
80
+ }
81
+
82
+ /** @internal */
83
+ export const match = dual<
84
+ <Env, Err, Err1, Err2, Elem, Done, Done1, Done2, Z>(
85
+ options: {
86
+ readonly onBothRunning: (
87
+ left: Fiber.Fiber<Either.Either<Elem, Done>, Err>,
88
+ right: Fiber.Fiber<Either.Either<Elem, Done1>, Err1>
89
+ ) => Z
90
+ readonly onLeftDone: (f: (exit: Exit.Exit<Done1, Err1>) => Effect.Effect<Done2, Err2, Env>) => Z
91
+ readonly onRightDone: (f: (exit: Exit.Exit<Done, Err>) => Effect.Effect<Done2, Err2, Env>) => Z
92
+ }
93
+ ) => (self: MergeState.MergeState<Env, Err, Err1, Err2, Elem, Done, Done1, Done2>) => Z,
94
+ <Env, Err, Err1, Err2, Elem, Done, Done1, Done2, Z>(
95
+ self: MergeState.MergeState<Env, Err, Err1, Err2, Elem, Done, Done1, Done2>,
96
+ options: {
97
+ readonly onBothRunning: (
98
+ left: Fiber.Fiber<Either.Either<Elem, Done>, Err>,
99
+ right: Fiber.Fiber<Either.Either<Elem, Done1>, Err1>
100
+ ) => Z
101
+ readonly onLeftDone: (f: (exit: Exit.Exit<Done1, Err1>) => Effect.Effect<Done2, Err2, Env>) => Z
102
+ readonly onRightDone: (f: (exit: Exit.Exit<Done, Err>) => Effect.Effect<Done2, Err2, Env>) => Z
103
+ }
104
+ ) => Z
105
+ >(2, (
106
+ self,
107
+ { onBothRunning, onLeftDone, onRightDone }
108
+ ) => {
109
+ switch (self._tag) {
110
+ case OpCodes.OP_BOTH_RUNNING: {
111
+ return onBothRunning(self.left, self.right)
112
+ }
113
+ case OpCodes.OP_LEFT_DONE: {
114
+ return onLeftDone(self.f)
115
+ }
116
+ case OpCodes.OP_RIGHT_DONE: {
117
+ return onRightDone(self.f)
118
+ }
119
+ }
120
+ })