@clayroach/effect 3.19.14-source-capture.8 → 3.19.14-source-trace.2

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,8 @@
1
+ /**
2
+ * @since 2.0.0
3
+ */
4
+
5
+ import type { NonEmptyArray } from "../Array.js"
6
+
7
+ /** @internal */
8
+ export const isNonEmptyArray = <A>(self: ReadonlyArray<A>): self is NonEmptyArray<A> => self.length > 0
@@ -0,0 +1,520 @@
1
+ import * as Chunk from "../Chunk.js"
2
+ import type * as Deferred from "../Deferred.js"
3
+ import * as Either from "../Either.js"
4
+ import * as Equal from "../Equal.js"
5
+ import type { FiberId } from "../FiberId.js"
6
+ import * as HashMap from "../HashMap.js"
7
+ import * as List from "../List.js"
8
+ import * as Option from "../Option.js"
9
+ import { hasProperty } from "../Predicate.js"
10
+ import type * as Request from "../Request.js"
11
+ import type * as RequestBlock from "../RequestBlock.js"
12
+ import type * as RequestResolver from "../RequestResolver.js"
13
+
14
+ /** @internal */
15
+ export const empty: RequestBlock.RequestBlock = {
16
+ _tag: "Empty"
17
+ }
18
+
19
+ /**
20
+ * Combines this collection of blocked requests with the specified collection
21
+ * of blocked requests, in parallel.
22
+ *
23
+ * @internal
24
+ */
25
+ export const par = (
26
+ self: RequestBlock.RequestBlock,
27
+ that: RequestBlock.RequestBlock
28
+ ): RequestBlock.RequestBlock => ({
29
+ _tag: "Par",
30
+ left: self,
31
+ right: that
32
+ })
33
+
34
+ /**
35
+ * Combines this collection of blocked requests with the specified collection
36
+ * of blocked requests, in sequence.
37
+ *
38
+ * @internal
39
+ */
40
+ export const seq = (
41
+ self: RequestBlock.RequestBlock,
42
+ that: RequestBlock.RequestBlock
43
+ ): RequestBlock.RequestBlock => ({
44
+ _tag: "Seq",
45
+ left: self,
46
+ right: that
47
+ })
48
+
49
+ /**
50
+ * Constructs a collection of blocked requests from the specified blocked
51
+ * request and data source.
52
+ *
53
+ * @internal
54
+ */
55
+ export const single = <A>(
56
+ dataSource: RequestResolver.RequestResolver<A>,
57
+ blockedRequest: Request.Entry<A>
58
+ ): RequestBlock.RequestBlock => ({
59
+ _tag: "Single",
60
+ dataSource: dataSource as any,
61
+ blockedRequest
62
+ })
63
+
64
+ /** @internal */
65
+ export const MapRequestResolversReducer = <A>(
66
+ f: (dataSource: RequestResolver.RequestResolver<A>) => RequestResolver.RequestResolver<A>
67
+ ): RequestBlock.RequestBlock.Reducer<RequestBlock.RequestBlock> => ({
68
+ emptyCase: () => empty,
69
+ parCase: (left, right) => par(left, right),
70
+ seqCase: (left, right) => seq(left, right),
71
+ singleCase: (dataSource, blockedRequest) => single(f(dataSource), blockedRequest as any)
72
+ })
73
+
74
+ type BlockedRequestsCase = ParCase | SeqCase
75
+
76
+ interface ParCase {
77
+ readonly _tag: "ParCase"
78
+ }
79
+
80
+ interface SeqCase {
81
+ readonly _tag: "SeqCase"
82
+ }
83
+
84
+ /**
85
+ * Transforms all data sources with the specified data source aspect, which
86
+ * can change the environment type of data sources but must preserve the
87
+ * request type of each data source.
88
+ *
89
+ * @internal
90
+ */
91
+ export const mapRequestResolvers = <A>(
92
+ self: RequestBlock.RequestBlock,
93
+ f: (dataSource: RequestResolver.RequestResolver<A>) => RequestResolver.RequestResolver<A>
94
+ ): RequestBlock.RequestBlock => reduce(self, MapRequestResolversReducer(f))
95
+
96
+ /**
97
+ * Folds over the cases of this collection of blocked requests with the
98
+ * specified functions.
99
+ *
100
+ * @internal
101
+ */
102
+ export const reduce = <Z>(
103
+ self: RequestBlock.RequestBlock,
104
+ reducer: RequestBlock.RequestBlock.Reducer<Z>
105
+ ): Z => {
106
+ let input: List.List<RequestBlock.RequestBlock> = List.of(self)
107
+ let output = List.empty<Either.Either<Z, BlockedRequestsCase>>()
108
+ while (List.isCons(input)) {
109
+ const current: RequestBlock.RequestBlock = input.head
110
+ switch (current._tag) {
111
+ case "Empty": {
112
+ output = List.cons(Either.right(reducer.emptyCase()), output)
113
+ input = input.tail
114
+ break
115
+ }
116
+ case "Par": {
117
+ output = List.cons(Either.left({ _tag: "ParCase" }), output)
118
+ input = List.cons(current.left, List.cons(current.right, input.tail))
119
+ break
120
+ }
121
+ case "Seq": {
122
+ output = List.cons(Either.left({ _tag: "SeqCase" }), output)
123
+ input = List.cons(current.left, List.cons(current.right, input.tail))
124
+ break
125
+ }
126
+ case "Single": {
127
+ const result = reducer.singleCase(current.dataSource, current.blockedRequest)
128
+ output = List.cons(Either.right(result), output)
129
+ input = input.tail
130
+ break
131
+ }
132
+ }
133
+ }
134
+ const result = List.reduce(output, List.empty<Z>(), (acc, current) => {
135
+ switch (current._tag) {
136
+ case "Left": {
137
+ const left = List.unsafeHead(acc)
138
+ const right = List.unsafeHead(List.unsafeTail(acc))
139
+ const tail = List.unsafeTail(List.unsafeTail(acc))
140
+ switch (current.left._tag) {
141
+ case "ParCase": {
142
+ return List.cons(reducer.parCase(left, right), tail)
143
+ }
144
+ case "SeqCase": {
145
+ return List.cons(reducer.seqCase(left, right), tail)
146
+ }
147
+ }
148
+ }
149
+ case "Right": {
150
+ return List.cons(current.right, acc)
151
+ }
152
+ }
153
+ })
154
+ if (List.isNil(result)) {
155
+ throw new Error(
156
+ "BUG: BlockedRequests.reduce - please report an issue at https://github.com/Effect-TS/effect/issues"
157
+ )
158
+ }
159
+ return result.head
160
+ }
161
+
162
+ /**
163
+ * Flattens a collection of blocked requests into a collection of pipelined
164
+ * and batched requests that can be submitted for execution.
165
+ *
166
+ * @internal
167
+ */
168
+ export const flatten = (
169
+ self: RequestBlock.RequestBlock
170
+ ): List.List<SequentialCollection> => {
171
+ let current = List.of(self)
172
+ let updated = List.empty<SequentialCollection>()
173
+ // eslint-disable-next-line no-constant-condition
174
+ while (1) {
175
+ const [parallel, sequential] = List.reduce(
176
+ current,
177
+ [parallelCollectionEmpty(), List.empty<RequestBlock.RequestBlock>()] as const,
178
+ ([parallel, sequential], blockedRequest) => {
179
+ const [par, seq] = step(blockedRequest)
180
+ return [
181
+ parallelCollectionCombine(parallel, par),
182
+ List.appendAll(sequential, seq)
183
+ ]
184
+ }
185
+ )
186
+ updated = merge(updated, parallel)
187
+ if (List.isNil(sequential)) {
188
+ return List.reverse(updated)
189
+ }
190
+ current = sequential
191
+ }
192
+ throw new Error(
193
+ "BUG: BlockedRequests.flatten - please report an issue at https://github.com/Effect-TS/effect/issues"
194
+ )
195
+ }
196
+
197
+ /**
198
+ * Takes one step in evaluating a collection of blocked requests, returning a
199
+ * collection of blocked requests that can be performed in parallel and a list
200
+ * of blocked requests that must be performed sequentially after those
201
+ * requests.
202
+ */
203
+ const step = (
204
+ requests: RequestBlock.RequestBlock
205
+ ): [ParallelCollection, List.List<RequestBlock.RequestBlock>] => {
206
+ let current: RequestBlock.RequestBlock = requests
207
+ let parallel = parallelCollectionEmpty()
208
+ let stack = List.empty<RequestBlock.RequestBlock>()
209
+ let sequential = List.empty<RequestBlock.RequestBlock>()
210
+ // eslint-disable-next-line no-constant-condition
211
+ while (1) {
212
+ switch (current._tag) {
213
+ case "Empty": {
214
+ if (List.isNil(stack)) {
215
+ return [parallel, sequential]
216
+ }
217
+ current = stack.head
218
+ stack = stack.tail
219
+ break
220
+ }
221
+ case "Par": {
222
+ stack = List.cons(current.right, stack)
223
+ current = current.left
224
+ break
225
+ }
226
+ case "Seq": {
227
+ const left = current.left
228
+ const right = current.right
229
+ switch (left._tag) {
230
+ case "Empty": {
231
+ current = right
232
+ break
233
+ }
234
+ case "Par": {
235
+ const l = left.left
236
+ const r = left.right
237
+ current = par(seq(l, right), seq(r, right))
238
+ break
239
+ }
240
+ case "Seq": {
241
+ const l = left.left
242
+ const r = left.right
243
+ current = seq(l, seq(r, right))
244
+ break
245
+ }
246
+ case "Single": {
247
+ current = left
248
+ sequential = List.cons(right, sequential)
249
+ break
250
+ }
251
+ }
252
+ break
253
+ }
254
+ case "Single": {
255
+ parallel = parallelCollectionAdd(
256
+ parallel,
257
+ current
258
+ )
259
+ if (List.isNil(stack)) {
260
+ return [parallel, sequential]
261
+ }
262
+ current = stack.head
263
+ stack = stack.tail
264
+ break
265
+ }
266
+ }
267
+ }
268
+ throw new Error(
269
+ "BUG: BlockedRequests.step - please report an issue at https://github.com/Effect-TS/effect/issues"
270
+ )
271
+ }
272
+
273
+ /**
274
+ * Merges a collection of requests that must be executed sequentially with a
275
+ * collection of requests that can be executed in parallel. If the collections
276
+ * are both from the same single data source then the requests can be
277
+ * pipelined while preserving ordering guarantees.
278
+ */
279
+ const merge = (
280
+ sequential: List.List<SequentialCollection>,
281
+ parallel: ParallelCollection
282
+ ): List.List<SequentialCollection> => {
283
+ if (List.isNil(sequential)) {
284
+ return List.of(parallelCollectionToSequentialCollection(parallel))
285
+ }
286
+ if (parallelCollectionIsEmpty(parallel)) {
287
+ return sequential
288
+ }
289
+ const seqHeadKeys = sequentialCollectionKeys(sequential.head)
290
+ const parKeys = parallelCollectionKeys(parallel)
291
+ if (
292
+ seqHeadKeys.length === 1 &&
293
+ parKeys.length === 1 &&
294
+ Equal.equals(seqHeadKeys[0], parKeys[0])
295
+ ) {
296
+ return List.cons(
297
+ sequentialCollectionCombine(
298
+ sequential.head,
299
+ parallelCollectionToSequentialCollection(parallel)
300
+ ),
301
+ sequential.tail
302
+ )
303
+ }
304
+ return List.cons(parallelCollectionToSequentialCollection(parallel), sequential)
305
+ }
306
+
307
+ //
308
+ // circular
309
+ //
310
+
311
+ /** @internal */
312
+ export const EntryTypeId: Request.EntryTypeId = Symbol.for(
313
+ "effect/RequestBlock/Entry"
314
+ ) as Request.EntryTypeId
315
+
316
+ /** @internal */
317
+ class EntryImpl<A extends Request.Request<any, any>> implements Request.Entry<A> {
318
+ readonly [EntryTypeId] = blockedRequestVariance
319
+ constructor(
320
+ readonly request: A,
321
+ readonly result: Deferred.Deferred<Request.Request.Success<A>, Request.Request.Error<A>>,
322
+ readonly listeners: Request.Listeners,
323
+ readonly ownerId: FiberId,
324
+ readonly state: {
325
+ completed: boolean
326
+ }
327
+ ) {}
328
+ }
329
+
330
+ const blockedRequestVariance = {
331
+ /* c8 ignore next */
332
+ _R: (_: never) => _
333
+ }
334
+
335
+ /** @internal */
336
+ export const isEntry = (u: unknown): u is Request.Entry<unknown> => hasProperty(u, EntryTypeId)
337
+
338
+ /** @internal */
339
+ export const makeEntry = <A extends Request.Request<any, any>>(
340
+ options: {
341
+ readonly request: A
342
+ readonly result: Deferred.Deferred<Request.Request.Success<A>, Request.Request.Error<A>>
343
+ readonly listeners: Request.Listeners
344
+ readonly ownerId: FiberId
345
+ readonly state: { completed: boolean }
346
+ }
347
+ ): Request.Entry<A> => new EntryImpl(options.request, options.result, options.listeners, options.ownerId, options.state)
348
+
349
+ /** @internal */
350
+ export const RequestBlockParallelTypeId = Symbol.for(
351
+ "effect/RequestBlock/RequestBlockParallel"
352
+ )
353
+
354
+ const parallelVariance = {
355
+ /* c8 ignore next */
356
+ _R: (_: never) => _
357
+ }
358
+
359
+ class ParallelImpl implements ParallelCollection {
360
+ readonly [RequestBlockParallelTypeId] = parallelVariance
361
+ constructor(
362
+ readonly map: HashMap.HashMap<
363
+ RequestResolver.RequestResolver<unknown, unknown>,
364
+ Chunk.Chunk<Request.Entry<unknown>>
365
+ >
366
+ ) {}
367
+ }
368
+
369
+ /** @internal */
370
+ export const parallelCollectionEmpty = (): ParallelCollection => new ParallelImpl(HashMap.empty())
371
+
372
+ /** @internal */
373
+ export const parallelCollectionMake = <A>(
374
+ dataSource: RequestResolver.RequestResolver<A>,
375
+ blockedRequest: Request.Entry<A>
376
+ ): ParallelCollection => new ParallelImpl(HashMap.make([dataSource, Chunk.of(blockedRequest)]) as any)
377
+
378
+ /** @internal */
379
+ export const parallelCollectionAdd = (
380
+ self: ParallelCollection,
381
+ blockedRequest: RequestBlock.Single
382
+ ): ParallelCollection =>
383
+ new ParallelImpl(HashMap.modifyAt(
384
+ self.map,
385
+ blockedRequest.dataSource,
386
+ (_) =>
387
+ Option.orElseSome(
388
+ Option.map(_, Chunk.append(blockedRequest.blockedRequest)),
389
+ () => Chunk.of(blockedRequest.blockedRequest)
390
+ )
391
+ ))
392
+
393
+ /** @internal */
394
+ export const parallelCollectionCombine = (
395
+ self: ParallelCollection,
396
+ that: ParallelCollection
397
+ ): ParallelCollection =>
398
+ new ParallelImpl(HashMap.reduce(self.map, that.map, (map, value, key) =>
399
+ HashMap.set(
400
+ map,
401
+ key,
402
+ Option.match(HashMap.get(map, key), {
403
+ onNone: () => value,
404
+ onSome: (other) => Chunk.appendAll(value, other)
405
+ })
406
+ )))
407
+
408
+ /** @internal */
409
+ export const parallelCollectionIsEmpty = (self: ParallelCollection): boolean => HashMap.isEmpty(self.map)
410
+
411
+ /** @internal */
412
+ export const parallelCollectionKeys = (
413
+ self: ParallelCollection
414
+ ): Array<RequestResolver.RequestResolver<unknown>> => Array.from(HashMap.keys(self.map)) as any
415
+
416
+ /** @internal */
417
+ export const parallelCollectionToSequentialCollection = (
418
+ self: ParallelCollection
419
+ ): SequentialCollection => sequentialCollectionMake(HashMap.map(self.map, (x) => Chunk.of(x)) as any)
420
+
421
+ // TODO
422
+ // /** @internal */
423
+ // export const parallelCollectionToChunk = <R>(
424
+ // self: ParallelCollection<R>
425
+ // ): Array<[RequestResolver.RequestResolver<unknown, R>, Array<Request.Entry<unknown>>]> => Array.from(self.map) as any
426
+
427
+ /** @internal */
428
+ export const SequentialCollectionTypeId = Symbol.for(
429
+ "effect/RequestBlock/RequestBlockSequential"
430
+ )
431
+
432
+ const sequentialVariance = {
433
+ /* c8 ignore next */
434
+ _R: (_: never) => _
435
+ }
436
+
437
+ class SequentialImpl implements SequentialCollection {
438
+ readonly [SequentialCollectionTypeId] = sequentialVariance
439
+ constructor(
440
+ readonly map: HashMap.HashMap<
441
+ RequestResolver.RequestResolver<unknown, unknown>,
442
+ Chunk.Chunk<Chunk.Chunk<Request.Entry<unknown>>>
443
+ >
444
+ ) {}
445
+ }
446
+
447
+ /** @internal */
448
+ export const sequentialCollectionMake = <A, R>(
449
+ map: HashMap.HashMap<
450
+ RequestResolver.RequestResolver<A, R>,
451
+ Chunk.Chunk<Chunk.Chunk<Request.Entry<A>>>
452
+ >
453
+ ): SequentialCollection => new SequentialImpl(map as any)
454
+
455
+ /** @internal */
456
+ export const sequentialCollectionCombine = (
457
+ self: SequentialCollection,
458
+ that: SequentialCollection
459
+ ): SequentialCollection =>
460
+ new SequentialImpl(HashMap.reduce(that.map, self.map, (map, value, key) =>
461
+ HashMap.set(
462
+ map,
463
+ key,
464
+ Option.match(HashMap.get(map, key), {
465
+ onNone: () => Chunk.empty(),
466
+ onSome: (a) => Chunk.appendAll(a, value)
467
+ })
468
+ )))
469
+
470
+ /** @internal */
471
+ export const sequentialCollectionIsEmpty = (self: SequentialCollection): boolean => HashMap.isEmpty(self.map)
472
+
473
+ /** @internal */
474
+ export const sequentialCollectionKeys = (
475
+ self: SequentialCollection
476
+ ): Array<RequestResolver.RequestResolver<unknown>> => Array.from(HashMap.keys(self.map)) as any
477
+
478
+ /** @internal */
479
+ export const sequentialCollectionToChunk = (
480
+ self: SequentialCollection
481
+ ): Array<[RequestResolver.RequestResolver<unknown>, Chunk.Chunk<Chunk.Chunk<Request.Entry<unknown>>>]> =>
482
+ Array.from(self.map) as any
483
+
484
+ /** @internal */
485
+ export type RequestBlockParallelTypeId = typeof RequestBlockParallelTypeId
486
+
487
+ /** @internal */
488
+ export interface ParallelCollection extends ParallelCollection.Variance {
489
+ readonly map: HashMap.HashMap<
490
+ RequestResolver.RequestResolver<unknown, unknown>,
491
+ Chunk.Chunk<Request.Entry<unknown>>
492
+ >
493
+ }
494
+
495
+ /** @internal */
496
+ export declare namespace ParallelCollection {
497
+ /** @internal */
498
+ export interface Variance {
499
+ readonly [RequestBlockParallelTypeId]: {}
500
+ }
501
+ }
502
+
503
+ /** @internal */
504
+ export type SequentialCollectionTypeId = typeof SequentialCollectionTypeId
505
+
506
+ /** @internal */
507
+ export interface SequentialCollection extends SequentialCollection.Variance {
508
+ readonly map: HashMap.HashMap<
509
+ RequestResolver.RequestResolver<unknown, unknown>,
510
+ Chunk.Chunk<Chunk.Chunk<Request.Entry<unknown>>>
511
+ >
512
+ }
513
+
514
+ /** @internal */
515
+ export declare namespace SequentialCollection {
516
+ /** @internal */
517
+ export interface Variance {
518
+ readonly [SequentialCollectionTypeId]: {}
519
+ }
520
+ }