@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
package/src/Take.ts ADDED
@@ -0,0 +1,258 @@
1
+ /**
2
+ * @since 2.0.0
3
+ */
4
+ import type * as Cause from "./Cause.js"
5
+ import type * as Chunk from "./Chunk.js"
6
+ import type * as Effect from "./Effect.js"
7
+ import type * as Exit from "./Exit.js"
8
+ import * as internal from "./internal/take.js"
9
+ import type * as Option from "./Option.js"
10
+ import type { Pipeable } from "./Pipeable.js"
11
+ import type * as Types from "./Types.js"
12
+
13
+ /**
14
+ * @since 2.0.0
15
+ * @category symbols
16
+ */
17
+ export const TakeTypeId: unique symbol = internal.TakeTypeId
18
+
19
+ /**
20
+ * @since 2.0.0
21
+ * @category symbols
22
+ */
23
+ export type TakeTypeId = typeof TakeTypeId
24
+
25
+ /**
26
+ * A `Take<A, E>` represents a single `take` from a queue modeling a stream of
27
+ * values. A `Take` may be a failure cause `Cause<E>`, a chunk value `Chunk<A>`,
28
+ * or an end-of-stream marker.
29
+ *
30
+ * @since 2.0.0
31
+ * @category models
32
+ */
33
+ export interface Take<out A, out E = never> extends Take.Variance<A, E>, Pipeable {
34
+ /** @internal */
35
+ readonly exit: Exit.Exit<Chunk.Chunk<A>, Option.Option<E>>
36
+ }
37
+
38
+ /**
39
+ * @since 2.0.0
40
+ */
41
+ export declare namespace Take {
42
+ /**
43
+ * @since 2.0.0
44
+ * @category models
45
+ */
46
+ export interface Variance<out A, out E> {
47
+ readonly [TakeTypeId]: {
48
+ readonly _A: Types.Covariant<A>
49
+ readonly _E: Types.Covariant<E>
50
+ }
51
+ }
52
+ }
53
+
54
+ /**
55
+ * Creates a `Take` with the specified chunk.
56
+ *
57
+ * @since 2.0.0
58
+ * @category constructors
59
+ */
60
+ export const chunk: <A>(chunk: Chunk.Chunk<A>) => Take<A> = internal.chunk
61
+
62
+ /**
63
+ * Creates a failing `Take` with the specified defect.
64
+ *
65
+ * @since 2.0.0
66
+ * @category constructors
67
+ */
68
+ export const die: (defect: unknown) => Take<never> = internal.die
69
+
70
+ /**
71
+ * Creates a failing `Take` with the specified error message.
72
+ *
73
+ * @since 2.0.0
74
+ * @category constructors
75
+ */
76
+ export const dieMessage: (message: string) => Take<never> = internal.dieMessage
77
+
78
+ /**
79
+ * Transforms a `Take<A, E>` to an `Effect<A, E>`.
80
+ *
81
+ * @since 2.0.0
82
+ * @category destructors
83
+ */
84
+ export const done: <A, E>(self: Take<A, E>) => Effect.Effect<Chunk.Chunk<A>, Option.Option<E>> = internal.done
85
+
86
+ /**
87
+ * Represents the end-of-stream marker.
88
+ *
89
+ * @since 2.0.0
90
+ * @category constructors
91
+ */
92
+ export const end: Take<never> = internal.end
93
+
94
+ /**
95
+ * Creates a failing `Take` with the specified error.
96
+ *
97
+ * @since 2.0.0
98
+ * @category constructors
99
+ */
100
+ export const fail: <E>(error: E) => Take<never, E> = internal.fail
101
+
102
+ /**
103
+ * Creates a failing `Take` with the specified cause.
104
+ *
105
+ * @since 2.0.0
106
+ * @category constructors
107
+ */
108
+ export const failCause: <E>(cause: Cause.Cause<E>) => Take<never, E> = internal.failCause
109
+
110
+ /**
111
+ * Creates an effect from `Effect<A, E, R>` that does not fail, but succeeds with
112
+ * the `Take<A, E>`. Error from stream when pulling is converted to
113
+ * `Take.failCause`. Creates a single value chunk.
114
+ *
115
+ * @since 2.0.0
116
+ * @category constructors
117
+ */
118
+ export const fromEffect: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<Take<A, E>, never, R> =
119
+ internal.fromEffect
120
+
121
+ /**
122
+ * Creates a `Take` from an `Exit`.
123
+ *
124
+ * @since 2.0.0
125
+ * @category constructors
126
+ */
127
+ export const fromExit: <A, E>(exit: Exit.Exit<A, E>) => Take<A, E> = internal.fromExit
128
+
129
+ /**
130
+ * Creates effect from `Effect<Chunk<A>, Option<E>, R>` that does not fail, but
131
+ * succeeds with the `Take<A, E>`. Errors from stream when pulling are converted
132
+ * to `Take.failCause`, and the end-of-stream is converted to `Take.end`.
133
+ *
134
+ * @since 2.0.0
135
+ * @category constructors
136
+ */
137
+ export const fromPull: <A, E, R>(
138
+ pull: Effect.Effect<Chunk.Chunk<A>, Option.Option<E>, R>
139
+ ) => Effect.Effect<Take<A, E>, never, R> = internal.fromPull
140
+
141
+ /**
142
+ * Checks if this `take` is done (`Take.end`).
143
+ *
144
+ * @since 2.0.0
145
+ * @category getters
146
+ */
147
+ export const isDone: <A, E>(self: Take<A, E>) => boolean = internal.isDone
148
+
149
+ /**
150
+ * Checks if this `take` is a failure.
151
+ *
152
+ * @since 2.0.0
153
+ * @category getters
154
+ */
155
+ export const isFailure: <A, E>(self: Take<A, E>) => boolean = internal.isFailure
156
+
157
+ /**
158
+ * Checks if this `take` is a success.
159
+ *
160
+ * @since 2.0.0
161
+ * @category getters
162
+ */
163
+ export const isSuccess: <A, E>(self: Take<A, E>) => boolean = internal.isSuccess
164
+
165
+ /**
166
+ * Constructs a `Take`.
167
+ *
168
+ * @since 2.0.0
169
+ * @category constructors
170
+ */
171
+ export const make: <A, E>(exit: Exit.Exit<Chunk.Chunk<A>, Option.Option<E>>) => Take<A, E> = internal.make
172
+
173
+ /**
174
+ * Transforms `Take<A, E>` to `Take<B, A>` by applying function `f`.
175
+ *
176
+ * @since 2.0.0
177
+ * @category mapping
178
+ */
179
+ export const map: {
180
+ <A, B>(f: (a: A) => B): <E>(self: Take<A, E>) => Take<B, E>
181
+ <A, E, B>(self: Take<A, E>, f: (a: A) => B): Take<B, E>
182
+ } = internal.map
183
+
184
+ /**
185
+ * Folds over the failure cause, success value and end-of-stream marker to
186
+ * yield a value.
187
+ *
188
+ * @since 2.0.0
189
+ * @category destructors
190
+ */
191
+ export const match: {
192
+ <Z, E, Z2, A, Z3>(
193
+ options: {
194
+ readonly onEnd: () => Z
195
+ readonly onFailure: (cause: Cause.Cause<E>) => Z2
196
+ readonly onSuccess: (chunk: Chunk.Chunk<A>) => Z3
197
+ }
198
+ ): (self: Take<A, E>) => Z | Z2 | Z3
199
+ <A, E, Z, Z2, Z3>(
200
+ self: Take<A, E>,
201
+ options: {
202
+ readonly onEnd: () => Z
203
+ readonly onFailure: (cause: Cause.Cause<E>) => Z2
204
+ readonly onSuccess: (chunk: Chunk.Chunk<A>) => Z3
205
+ }
206
+ ): Z | Z2 | Z3
207
+ } = internal.match
208
+
209
+ /**
210
+ * Effectful version of `Take.fold`.
211
+ *
212
+ * Folds over the failure cause, success value and end-of-stream marker to
213
+ * yield an effect.
214
+ *
215
+ * @since 2.0.0
216
+ * @category destructors
217
+ */
218
+ export const matchEffect: {
219
+ <Z, E2, R, E, Z2, R2, A, Z3, E3, R3>(
220
+ options: {
221
+ readonly onEnd: Effect.Effect<Z, E2, R>
222
+ readonly onFailure: (cause: Cause.Cause<E>) => Effect.Effect<Z2, E2, R2>
223
+ readonly onSuccess: (chunk: Chunk.Chunk<A>) => Effect.Effect<Z3, E3, R3>
224
+ }
225
+ ): (self: Take<A, E>) => Effect.Effect<Z | Z2 | Z3, E2 | E | E3, R | R2 | R3>
226
+ <A, E, Z, E2, R, Z2, R2, Z3, E3, R3>(
227
+ self: Take<A, E>,
228
+ options: {
229
+ readonly onEnd: Effect.Effect<Z, E2, R>
230
+ readonly onFailure: (cause: Cause.Cause<E>) => Effect.Effect<Z2, E2, R2>
231
+ readonly onSuccess: (chunk: Chunk.Chunk<A>) => Effect.Effect<Z3, E3, R3>
232
+ }
233
+ ): Effect.Effect<Z | Z2 | Z3, E | E2 | E3, R | R2 | R3>
234
+ } = internal.matchEffect
235
+
236
+ /**
237
+ * Creates a `Take` with a single value chunk.
238
+ *
239
+ * @since 2.0.0
240
+ * @category constructors
241
+ */
242
+ export const of: <A>(value: A) => Take<A> = internal.of
243
+
244
+ /**
245
+ * Returns an effect that effectfully "peeks" at the success of this take.
246
+ *
247
+ * @since 2.0.0
248
+ * @category sequencing
249
+ */
250
+ export const tap: {
251
+ <A, X, E2, R>(
252
+ f: (chunk: Chunk.Chunk<A>) => Effect.Effect<X, E2, R>
253
+ ): <E>(self: Take<A, E>) => Effect.Effect<void, E2 | E, R>
254
+ <A, E, X, E2, R>(
255
+ self: Take<A, E>,
256
+ f: (chunk: Chunk.Chunk<A>) => Effect.Effect<X, E2, R>
257
+ ): Effect.Effect<void, E | E2, R>
258
+ } = internal.tap
@@ -0,0 +1,158 @@
1
+ /**
2
+ * @since 2.0.0
3
+ */
4
+ import * as Chunk from "./Chunk.js"
5
+ import * as Either from "./Either.js"
6
+ import * as Equal from "./Equal.js"
7
+ import type * as Fiber from "./Fiber.js"
8
+ import { pipe } from "./Function.js"
9
+ import * as Hash from "./Hash.js"
10
+ import * as HashSet from "./HashSet.js"
11
+ import { getBugErrorMessage } from "./internal/errors.js"
12
+ import type * as MutableRef from "./MutableRef.js"
13
+ import { hasProperty } from "./Predicate.js"
14
+ import type * as SortedSet from "./SortedSet.js"
15
+ import type * as Types from "./Types.js"
16
+
17
+ /** @internal */
18
+ const TestAnnotationSymbolKey = "effect/TestAnnotation"
19
+
20
+ /**
21
+ * @since 2.0.0
22
+ */
23
+ export const TestAnnotationTypeId: unique symbol = Symbol.for(TestAnnotationSymbolKey)
24
+
25
+ /**
26
+ * @since 2.0.0
27
+ */
28
+ export type TestAnnotationTypeId = typeof TestAnnotationTypeId
29
+
30
+ /**
31
+ * @since 2.0.0
32
+ */
33
+ export interface TestAnnotation<in out A> extends Equal.Equal {
34
+ readonly [TestAnnotationTypeId]: {
35
+ readonly _A: Types.Invariant<A>
36
+ }
37
+ readonly identifier: string
38
+ readonly initial: A
39
+ combine(a: A, b: A): A
40
+ }
41
+
42
+ /** @internal */
43
+ class TestAnnotationImpl<A> implements Equal.Equal {
44
+ readonly [TestAnnotationTypeId] = {
45
+ _A: (_: any) => _
46
+ }
47
+ constructor(
48
+ readonly identifier: string,
49
+ readonly initial: A,
50
+ readonly combine: (a: A, b: A) => A
51
+ ) {}
52
+ [Hash.symbol](): number {
53
+ return pipe(
54
+ Hash.hash(TestAnnotationSymbolKey),
55
+ Hash.combine(Hash.hash(this.identifier)),
56
+ Hash.cached(this)
57
+ )
58
+ }
59
+ [Equal.symbol](that: unknown): boolean {
60
+ return isTestAnnotation(that) &&
61
+ this.identifier === that.identifier
62
+ }
63
+ }
64
+
65
+ /**
66
+ * @since 2.0.0
67
+ */
68
+ export const isTestAnnotation = (u: unknown): u is TestAnnotation<unknown> => hasProperty(u, TestAnnotationTypeId)
69
+
70
+ /**
71
+ * @since 2.0.0
72
+ */
73
+ export const make = <A>(
74
+ identifier: string,
75
+ initial: A,
76
+ combine: (a: A, b: A) => A
77
+ ): TestAnnotation<A> => {
78
+ return new TestAnnotationImpl<A>(identifier, initial, combine)
79
+ }
80
+
81
+ /**
82
+ * @since 2.0.0
83
+ */
84
+ export const compose = <A>(
85
+ left: Either.Either<Chunk.Chunk<A>, number>,
86
+ right: Either.Either<Chunk.Chunk<A>, number>
87
+ ): Either.Either<Chunk.Chunk<A>, number> => {
88
+ if (Either.isLeft(left) && Either.isLeft(right)) {
89
+ return Either.left(left.left + right.left)
90
+ }
91
+ if (Either.isRight(left) && Either.isRight(right)) {
92
+ return Either.right(pipe(left.right, Chunk.appendAll(right.right)))
93
+ }
94
+ if (Either.isRight(left) && Either.isLeft(right)) {
95
+ return right
96
+ }
97
+ if (Either.isLeft(left) && Either.isRight(right)) {
98
+ return right
99
+ }
100
+ throw new Error(getBugErrorMessage("TestAnnotation.compose"))
101
+ }
102
+
103
+ /**
104
+ * @since 2.0.0
105
+ */
106
+ export const fibers: TestAnnotation<
107
+ Either.Either<Chunk.Chunk<MutableRef.MutableRef<SortedSet.SortedSet<Fiber.RuntimeFiber<unknown, unknown>>>>, number>
108
+ > = make<
109
+ Either.Either<Chunk.Chunk<MutableRef.MutableRef<SortedSet.SortedSet<Fiber.RuntimeFiber<unknown, unknown>>>>, number>
110
+ >(
111
+ "fibers",
112
+ Either.left(0),
113
+ compose
114
+ )
115
+
116
+ /**
117
+ * An annotation which counts ignored tests.
118
+ *
119
+ * @since 2.0.0
120
+ */
121
+ export const ignored: TestAnnotation<number> = make(
122
+ "ignored",
123
+ 0,
124
+ (a, b) => a + b
125
+ )
126
+
127
+ /**
128
+ * An annotation which counts repeated tests.
129
+ *
130
+ * @since 2.0.0
131
+ */
132
+ export const repeated: TestAnnotation<number> = make(
133
+ "repeated",
134
+ 0,
135
+ (a, b) => a + b
136
+ )
137
+
138
+ /**
139
+ * An annotation which counts retried tests.
140
+ *
141
+ * @since 2.0.0
142
+ */
143
+ export const retried: TestAnnotation<number> = make(
144
+ "retried",
145
+ 0,
146
+ (a, b) => a + b
147
+ )
148
+
149
+ /**
150
+ * An annotation which tags tests with strings.
151
+ *
152
+ * @since 2.0.0
153
+ */
154
+ export const tagged: TestAnnotation<HashSet.HashSet<string>> = make(
155
+ "tagged",
156
+ HashSet.empty(),
157
+ (a, b) => pipe(a, HashSet.union(b))
158
+ )
@@ -0,0 +1,119 @@
1
+ /**
2
+ * @since 2.0.0
3
+ */
4
+ import { dual } from "./Function.js"
5
+ import * as HashMap from "./HashMap.js"
6
+ import { hasProperty } from "./Predicate.js"
7
+ import type * as TestAnnotation from "./TestAnnotation.js"
8
+
9
+ /**
10
+ * @since 2.0.0
11
+ */
12
+ export const TestAnnotationMapTypeId: unique symbol = Symbol.for("effect/TestAnnotationMap")
13
+
14
+ /**
15
+ * @since 2.0.0
16
+ */
17
+ export type TestAnnotationMapTypeId = typeof TestAnnotationMapTypeId
18
+
19
+ /**
20
+ * An annotation map keeps track of annotations of different types.
21
+ *
22
+ * @since 2.0.0
23
+ */
24
+ export interface TestAnnotationMap {
25
+ readonly [TestAnnotationMapTypeId]: TestAnnotationMapTypeId
26
+ /** @internal */
27
+ readonly map: HashMap.HashMap<TestAnnotation.TestAnnotation<any>, any>
28
+ }
29
+
30
+ /** @internal */
31
+ class TestAnnotationMapImpl implements TestAnnotationMap {
32
+ readonly [TestAnnotationMapTypeId]: TestAnnotationMapTypeId = TestAnnotationMapTypeId
33
+ constructor(readonly map: HashMap.HashMap<TestAnnotation.TestAnnotation<any>, any>) {
34
+ }
35
+ }
36
+
37
+ /**
38
+ * @since 2.0.0
39
+ */
40
+ export const isTestAnnotationMap = (u: unknown): u is TestAnnotationMap => hasProperty(u, TestAnnotationMapTypeId)
41
+
42
+ /**
43
+ * @since 2.0.0
44
+ */
45
+ export const empty: (_: void) => TestAnnotationMap = () => new TestAnnotationMapImpl(HashMap.empty())
46
+
47
+ /**
48
+ * @since 2.0.0
49
+ */
50
+ export const make = (map: HashMap.HashMap<TestAnnotation.TestAnnotation<any>, any>): TestAnnotationMap => {
51
+ return new TestAnnotationMapImpl(map)
52
+ }
53
+
54
+ /**
55
+ * @since 2.0.0
56
+ */
57
+ export const overwrite = dual<
58
+ <A>(key: TestAnnotation.TestAnnotation<A>, value: A) => (self: TestAnnotationMap) => TestAnnotationMap,
59
+ <A>(self: TestAnnotationMap, key: TestAnnotation.TestAnnotation<A>, value: A) => TestAnnotationMap
60
+ >(3, (self, key, value) => make(HashMap.set(self.map, key, value)))
61
+
62
+ /**
63
+ * @since 2.0.0
64
+ */
65
+ export const update = dual<
66
+ <A>(key: TestAnnotation.TestAnnotation<A>, f: (value: A) => A) => (self: TestAnnotationMap) => TestAnnotationMap,
67
+ <A>(self: TestAnnotationMap, key: TestAnnotation.TestAnnotation<A>, f: (value: A) => A) => TestAnnotationMap
68
+ >(3, <A>(self: TestAnnotationMap, key: TestAnnotation.TestAnnotation<A>, f: (value: A) => A) => {
69
+ let value = key.initial
70
+ if (HashMap.has(self.map, key)) {
71
+ value = HashMap.unsafeGet(self.map, key) as A
72
+ }
73
+ return overwrite(self, key, f(value))
74
+ })
75
+
76
+ /**
77
+ * Retrieves the annotation of the specified type, or its default value if
78
+ * there is none.
79
+ *
80
+ * @since 2.0.0
81
+ */
82
+ export const get = dual<
83
+ <A>(key: TestAnnotation.TestAnnotation<A>) => (self: TestAnnotationMap) => A,
84
+ <A>(self: TestAnnotationMap, key: TestAnnotation.TestAnnotation<A>) => A
85
+ >(2, <A>(self: TestAnnotationMap, key: TestAnnotation.TestAnnotation<A>) => {
86
+ if (HashMap.has(self.map, key)) {
87
+ return HashMap.unsafeGet(self.map, key) as A
88
+ }
89
+ return key.initial
90
+ })
91
+
92
+ /**
93
+ * Appends the specified annotation to the annotation map.
94
+ *
95
+ * @since 2.0.0
96
+ */
97
+ export const annotate = dual<
98
+ <A>(key: TestAnnotation.TestAnnotation<A>, value: A) => (self: TestAnnotationMap) => TestAnnotationMap,
99
+ <A>(self: TestAnnotationMap, key: TestAnnotation.TestAnnotation<A>, value: A) => TestAnnotationMap
100
+ >(3, (self, key, value) => update(self, key, (_) => key.combine(_, value)))
101
+
102
+ /**
103
+ * @since 2.0.0
104
+ */
105
+ export const combine = dual<
106
+ (that: TestAnnotationMap) => (self: TestAnnotationMap) => TestAnnotationMap,
107
+ (self: TestAnnotationMap, that: TestAnnotationMap) => TestAnnotationMap
108
+ >(2, (self, that) => {
109
+ let result = self.map
110
+ for (const entry of that.map) {
111
+ if (HashMap.has(result, entry[0])) {
112
+ const value = HashMap.get(result, entry[0])!
113
+ result = HashMap.set(result, entry[0], entry[0].combine(value, entry[1]))
114
+ } else {
115
+ result = HashMap.set(result, entry[0], entry[1])
116
+ }
117
+ }
118
+ return make(result)
119
+ })
@@ -0,0 +1,117 @@
1
+ /**
2
+ * @since 2.0.0
3
+ */
4
+ import * as RA from "./Array.js"
5
+ import * as Context from "./Context.js"
6
+ import type * as Effect from "./Effect.js"
7
+ import * as Equal from "./Equal.js"
8
+ import type * as Fiber from "./Fiber.js"
9
+ import { pipe } from "./Function.js"
10
+ import * as effect from "./internal/core-effect.js"
11
+ import * as core from "./internal/core.js"
12
+ import * as fiber from "./internal/fiber.js"
13
+ import * as MutableRef from "./MutableRef.js"
14
+ import { hasProperty } from "./Predicate.js"
15
+ import * as Ref from "./Ref.js"
16
+ import * as SortedSet from "./SortedSet.js"
17
+ import * as TestAnnotation from "./TestAnnotation.js"
18
+ import * as TestAnnotationMap from "./TestAnnotationMap.js"
19
+
20
+ /**
21
+ * @since 2.0.0
22
+ */
23
+ export const TestAnnotationsTypeId: unique symbol = Symbol.for("effect/TestAnnotations")
24
+
25
+ /**
26
+ * @since 2.0.0
27
+ */
28
+ export type TestAnnotationsTypeId = typeof TestAnnotationsTypeId
29
+
30
+ /**
31
+ * The `Annotations` trait provides access to an annotation map that tests can
32
+ * add arbitrary annotations to. Each annotation consists of a string
33
+ * identifier, an initial value, and a function for combining two values.
34
+ * Annotations form monoids and you can think of `Annotations` as a more
35
+ * structured logging service or as a super polymorphic version of the writer
36
+ * monad effect.
37
+ *
38
+ * @since 2.0.0
39
+ */
40
+ export interface TestAnnotations {
41
+ readonly [TestAnnotationsTypeId]: TestAnnotationsTypeId
42
+
43
+ /**
44
+ * A ref containing the bacnking map for all annotations
45
+ */
46
+ readonly ref: Ref.Ref<TestAnnotationMap.TestAnnotationMap>
47
+
48
+ /**
49
+ * Accesses an `Annotations` instance in the context and retrieves the
50
+ * annotation of the specified type, or its default value if there is none.
51
+ */
52
+ get<A>(key: TestAnnotation.TestAnnotation<A>): Effect.Effect<A>
53
+
54
+ /**
55
+ * Accesses an `Annotations` instance in the context and appends the
56
+ * specified annotation to the annotation map.
57
+ */
58
+ annotate<A>(key: TestAnnotation.TestAnnotation<A>, value: A): Effect.Effect<void>
59
+
60
+ /**
61
+ * Returns the set of all fibers in this test.
62
+ */
63
+ readonly supervisedFibers: Effect.Effect<
64
+ SortedSet.SortedSet<Fiber.RuntimeFiber<unknown, unknown>>
65
+ >
66
+ }
67
+
68
+ /** @internal */
69
+ class AnnotationsImpl implements TestAnnotations {
70
+ readonly [TestAnnotationsTypeId]: TestAnnotationsTypeId = TestAnnotationsTypeId
71
+ constructor(readonly ref: Ref.Ref<TestAnnotationMap.TestAnnotationMap>) {
72
+ }
73
+ get<A>(key: TestAnnotation.TestAnnotation<A>): Effect.Effect<A> {
74
+ return core.map(Ref.get(this.ref), TestAnnotationMap.get(key))
75
+ }
76
+ annotate<A>(key: TestAnnotation.TestAnnotation<A>, value: A): Effect.Effect<void> {
77
+ return Ref.update(this.ref, TestAnnotationMap.annotate(key, value))
78
+ }
79
+ get supervisedFibers(): Effect.Effect<SortedSet.SortedSet<Fiber.RuntimeFiber<unknown, unknown>>> {
80
+ return effect.descriptorWith((descriptor) =>
81
+ core.flatMap(this.get(TestAnnotation.fibers), (either) => {
82
+ switch (either._tag) {
83
+ case "Left": {
84
+ return core.succeed(SortedSet.empty(fiber.Order))
85
+ }
86
+ case "Right": {
87
+ return pipe(
88
+ either.right,
89
+ core.forEachSequential((ref) => core.sync(() => MutableRef.get(ref))),
90
+ core.map(RA.reduce(SortedSet.empty(fiber.Order), (a, b) => SortedSet.union(a, b))),
91
+ core.map(SortedSet.filter((fiber) => !Equal.equals(fiber.id(), descriptor.id)))
92
+ )
93
+ }
94
+ }
95
+ })
96
+ )
97
+ }
98
+ }
99
+
100
+ /**
101
+ * @since 2.0.0
102
+ */
103
+ export const TestAnnotations: Context.Tag<TestAnnotations, TestAnnotations> = Context.GenericTag<TestAnnotations>(
104
+ "effect/Annotations"
105
+ )
106
+
107
+ /**
108
+ * @since 2.0.0
109
+ */
110
+ export const isTestAnnotations = (u: unknown): u is TestAnnotations => hasProperty(u, TestAnnotationsTypeId)
111
+
112
+ /**
113
+ * @since 2.0.0
114
+ */
115
+ export const make = (
116
+ ref: Ref.Ref<TestAnnotationMap.TestAnnotationMap>
117
+ ): TestAnnotations => new AnnotationsImpl(ref)