@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,436 @@
1
+ /**
2
+ * @since 3.14.0
3
+ * @experimental
4
+ */
5
+ import * as Context from "./Context.js"
6
+ import type * as Duration from "./Duration.js"
7
+ import * as Effect from "./Effect.js"
8
+ import * as FiberRefsPatch from "./FiberRefsPatch.js"
9
+ import { identity } from "./Function.js"
10
+ import * as core from "./internal/core.js"
11
+ import * as Layer from "./Layer.js"
12
+ import * as RcMap from "./RcMap.js"
13
+ import * as Runtime from "./Runtime.js"
14
+ import * as Scope from "./Scope.js"
15
+ import type { Mutable, NoExcessProperties } from "./Types.js"
16
+
17
+ /**
18
+ * @since 3.14.0
19
+ * @category Symbols
20
+ */
21
+ export const TypeId: unique symbol = Symbol.for("effect/LayerMap")
22
+
23
+ /**
24
+ * @since 3.14.0
25
+ * @category Symbols
26
+ */
27
+ export type TypeId = typeof TypeId
28
+
29
+ /**
30
+ * @since 3.14.0
31
+ * @category Models
32
+ * @experimental
33
+ */
34
+ export interface LayerMap<in K, in out I, out E = never> {
35
+ readonly [TypeId]: TypeId
36
+
37
+ /**
38
+ * The internal RcMap that stores the resources.
39
+ */
40
+ readonly rcMap: RcMap.RcMap<K, {
41
+ readonly layer: Layer.Layer<I, E>
42
+ readonly runtimeEffect: Effect.Effect<Runtime.Runtime<I>, E, Scope.Scope>
43
+ }, E>
44
+
45
+ /**
46
+ * Retrieves a Layer for the resources associated with the key.
47
+ */
48
+ get(key: K): Layer.Layer<I, E>
49
+
50
+ /**
51
+ * Retrieves a Runtime for the resources associated with the key.
52
+ */
53
+ runtime(key: K): Effect.Effect<Runtime.Runtime<I>, E, Scope.Scope>
54
+
55
+ /**
56
+ * Invalidates the resource associated with the key.
57
+ */
58
+ invalidate(key: K): Effect.Effect<void>
59
+ }
60
+
61
+ /**
62
+ * @since 3.14.0
63
+ * @category Constructors
64
+ * @experimental
65
+ *
66
+ * A `LayerMap` allows you to create a map of Layer's that can be used to
67
+ * dynamically access resources based on a key.
68
+ *
69
+ * ```ts
70
+ * import { NodeRuntime } from "@effect/platform-node"
71
+ * import { Context, Effect, FiberRef, Layer, LayerMap } from "effect"
72
+ *
73
+ * class Greeter extends Context.Tag("Greeter")<Greeter, {
74
+ * greet: Effect.Effect<string>
75
+ * }>() {}
76
+ *
77
+ * // create a service that wraps a LayerMap
78
+ * class GreeterMap extends LayerMap.Service<GreeterMap>()("GreeterMap", {
79
+ * // define the lookup function for the layer map
80
+ * //
81
+ * // The returned Layer will be used to provide the Greeter service for the
82
+ * // given name.
83
+ * lookup: (name: string) =>
84
+ * Layer.succeed(Greeter, {
85
+ * greet: Effect.succeed(`Hello, ${name}!`)
86
+ * }).pipe(
87
+ * Layer.merge(Layer.locallyScoped(FiberRef.currentConcurrency, 123))
88
+ * ),
89
+ *
90
+ * // If a layer is not used for a certain amount of time, it can be removed
91
+ * idleTimeToLive: "5 seconds",
92
+ *
93
+ * // Supply the dependencies for the layers in the LayerMap
94
+ * dependencies: []
95
+ * }) {}
96
+ *
97
+ * // usage
98
+ * const program: Effect.Effect<void, never, GreeterMap> = Effect.gen(function*() {
99
+ * // access and use the Greeter service
100
+ * const greeter = yield* Greeter
101
+ * yield* Effect.log(yield* greeter.greet)
102
+ * }).pipe(
103
+ * // use the GreeterMap service to provide a variant of the Greeter service
104
+ * Effect.provide(GreeterMap.get("John"))
105
+ * )
106
+ *
107
+ * // run the program
108
+ * program.pipe(
109
+ * Effect.provide(GreeterMap.Default),
110
+ * NodeRuntime.runMain
111
+ * )
112
+ * ```
113
+ */
114
+ export const make: <
115
+ K,
116
+ L extends Layer.Layer<any, any, any>,
117
+ PreloadKeys extends Iterable<K> | undefined = undefined
118
+ >(
119
+ lookup: (key: K) => L,
120
+ options?: {
121
+ readonly idleTimeToLive?: Duration.DurationInput | undefined
122
+ readonly preloadKeys?: PreloadKeys
123
+ } | undefined
124
+ ) => Effect.Effect<
125
+ LayerMap<
126
+ K,
127
+ L extends Layer.Layer<infer _A, infer _E, infer _R> ? _A : never,
128
+ L extends Layer.Layer<infer _A, infer _E, infer _R> ? _E : never
129
+ >,
130
+ PreloadKeys extends undefined ? never : L extends Layer.Layer<infer _A, infer _E, infer _R> ? _E : never,
131
+ Scope.Scope | (L extends Layer.Layer<infer _A, infer _E, infer _R> ? _R : never)
132
+ > = Effect.fnUntraced(function*<I, K, EL, RL>(
133
+ lookup: (key: K) => Layer.Layer<I, EL, RL>,
134
+ options?: {
135
+ readonly idleTimeToLive?: Duration.DurationInput | undefined
136
+ readonly preloadKeys?: Iterable<K> | undefined
137
+ } | undefined
138
+ ) {
139
+ const context = yield* Effect.context<never>()
140
+
141
+ // If we are inside another layer build, use the current memo map,
142
+ // otherwise create a new one.
143
+ const memoMap = context.unsafeMap.has(Layer.CurrentMemoMap.key)
144
+ ? Context.get(context, Layer.CurrentMemoMap)
145
+ : yield* Layer.makeMemoMap
146
+
147
+ const rcMap = yield* RcMap.make({
148
+ lookup: (key: K) =>
149
+ Effect.scopeWith((scope) => Effect.diffFiberRefs(Layer.buildWithMemoMap(lookup(key), memoMap, scope))).pipe(
150
+ Effect.map(([patch, context]) => ({
151
+ layer: Layer.scopedContext(
152
+ core.withFiberRuntime<Context.Context<I>, any, Scope.Scope>((fiber) => {
153
+ const scope = Context.unsafeGet(fiber.currentContext, Scope.Scope)
154
+ const oldRefs = fiber.getFiberRefs()
155
+ const newRefs = FiberRefsPatch.patch(patch, fiber.id(), oldRefs)
156
+ const revert = FiberRefsPatch.diff(newRefs, oldRefs)
157
+ fiber.setFiberRefs(newRefs)
158
+ return Effect.as(
159
+ Scope.addFinalizerExit(scope, () => {
160
+ fiber.setFiberRefs(FiberRefsPatch.patch(revert, fiber.id(), fiber.getFiberRefs()))
161
+ return Effect.void
162
+ }),
163
+ context
164
+ )
165
+ })
166
+ ),
167
+ runtimeEffect: Effect.withFiberRuntime<Runtime.Runtime<I>, any, Scope.Scope>((fiber) => {
168
+ const fiberRefs = FiberRefsPatch.patch(patch, fiber.id(), fiber.getFiberRefs())
169
+ return Effect.succeed(Runtime.make({
170
+ context,
171
+ fiberRefs,
172
+ runtimeFlags: Runtime.defaultRuntime.runtimeFlags
173
+ }))
174
+ })
175
+ } as const))
176
+ ),
177
+ idleTimeToLive: options?.idleTimeToLive
178
+ })
179
+
180
+ if (options?.preloadKeys) {
181
+ for (const key of options.preloadKeys) {
182
+ yield* (RcMap.get(rcMap, key) as Effect.Effect<any, EL, RL | Scope.Scope>)
183
+ }
184
+ }
185
+
186
+ return identity<LayerMap<K, Exclude<I, Scope.Scope>, any>>({
187
+ [TypeId]: TypeId,
188
+ rcMap,
189
+ get: (key) => Layer.unwrapScoped(Effect.map(RcMap.get(rcMap, key), ({ layer }) => layer)),
190
+ runtime: (key) => Effect.flatMap(RcMap.get(rcMap, key), ({ runtimeEffect }) => runtimeEffect),
191
+ invalidate: (key) => RcMap.invalidate(rcMap, key)
192
+ })
193
+ })
194
+
195
+ /**
196
+ * @since 3.14.0
197
+ * @category Constructors
198
+ * @experimental
199
+ */
200
+ export const fromRecord = <
201
+ const Layers extends Record<string, Layer.Layer<any, any, any>>,
202
+ const Preload extends boolean = false
203
+ >(
204
+ layers: Layers,
205
+ options?: {
206
+ readonly idleTimeToLive?: Duration.DurationInput | undefined
207
+ readonly preload?: Preload | undefined
208
+ } | undefined
209
+ ): Effect.Effect<
210
+ LayerMap<
211
+ keyof Layers,
212
+ Layers[keyof Layers] extends Layer.Layer<infer _A, infer _E, infer _R> ? _A : never,
213
+ Preload extends true ? never : Layers[keyof Layers] extends Layer.Layer<infer _A, infer _E, infer _R> ? _E : never
214
+ >,
215
+ Preload extends true ? never : Layers[keyof Layers] extends Layer.Layer<infer _A, infer _E, infer _R> ? _E : never,
216
+ Scope.Scope | (Layers[keyof Layers] extends Layer.Layer<infer _A, infer _E, infer _R> ? _R : never)
217
+ > =>
218
+ make((key: keyof Layers) => layers[key], {
219
+ ...options,
220
+ preloadKeys: options?.preload ? Object.keys(layers) : undefined
221
+ }) as any
222
+
223
+ /**
224
+ * @since 3.14.0
225
+ * @category Service
226
+ */
227
+ export interface TagClass<
228
+ in out Self,
229
+ in out Id extends string,
230
+ in out K,
231
+ in out I,
232
+ in out E,
233
+ in out R,
234
+ in out LE,
235
+ in out Deps extends Layer.Layer<any, any, any>
236
+ > extends Context.TagClass<Self, Id, LayerMap<K, I, E>> {
237
+ /**
238
+ * A default layer for the `LayerMap` service.
239
+ */
240
+ readonly Default: Layer.Layer<
241
+ Self,
242
+ (Deps extends Layer.Layer<infer _A, infer _E, infer _R> ? _E : never) | LE,
243
+ | Exclude<R, (Deps extends Layer.Layer<infer _A, infer _E, infer _R> ? _A : never)>
244
+ | (Deps extends Layer.Layer<infer _A, infer _E, infer _R> ? _R : never)
245
+ >
246
+
247
+ /**
248
+ * A default layer for the `LayerMap` service without the dependencies provided.
249
+ */
250
+ readonly DefaultWithoutDependencies: Layer.Layer<Self, LE, R>
251
+
252
+ /**
253
+ * Retrieves a Layer for the resources associated with the key.
254
+ */
255
+ readonly get: (key: K) => Layer.Layer<I, E, Self>
256
+
257
+ /**
258
+ * Retrieves a Runtime for the resources associated with the key.
259
+ */
260
+ readonly runtime: (key: K) => Effect.Effect<Runtime.Runtime<I>, E, Scope.Scope | Self>
261
+
262
+ /**
263
+ * Invalidates the resource associated with the key.
264
+ */
265
+ readonly invalidate: (key: K) => Effect.Effect<void, never, Self>
266
+ }
267
+
268
+ /**
269
+ * @since 3.14.0
270
+ * @category Service
271
+ * @experimental
272
+ *
273
+ * Create a `LayerMap` service that provides a dynamic set of resources based on
274
+ * a key.
275
+ *
276
+ * ```ts
277
+ * import { NodeRuntime } from "@effect/platform-node"
278
+ * import { Context, Effect, FiberRef, Layer, LayerMap } from "effect"
279
+ *
280
+ * class Greeter extends Context.Tag("Greeter")<Greeter, {
281
+ * greet: Effect.Effect<string>
282
+ * }>() {}
283
+ *
284
+ * // create a service that wraps a LayerMap
285
+ * class GreeterMap extends LayerMap.Service<GreeterMap>()("GreeterMap", {
286
+ * // define the lookup function for the layer map
287
+ * //
288
+ * // The returned Layer will be used to provide the Greeter service for the
289
+ * // given name.
290
+ * lookup: (name: string) =>
291
+ * Layer.succeed(Greeter, {
292
+ * greet: Effect.succeed(`Hello, ${name}!`)
293
+ * }).pipe(
294
+ * Layer.merge(Layer.locallyScoped(FiberRef.currentConcurrency, 123))
295
+ * ),
296
+ *
297
+ * // If a layer is not used for a certain amount of time, it can be removed
298
+ * idleTimeToLive: "5 seconds",
299
+ *
300
+ * // Supply the dependencies for the layers in the LayerMap
301
+ * dependencies: []
302
+ * }) {}
303
+ *
304
+ * // usage
305
+ * const program: Effect.Effect<void, never, GreeterMap> = Effect.gen(function*() {
306
+ * // access and use the Greeter service
307
+ * const greeter = yield* Greeter
308
+ * yield* Effect.log(yield* greeter.greet)
309
+ * }).pipe(
310
+ * // use the GreeterMap service to provide a variant of the Greeter service
311
+ * Effect.provide(GreeterMap.get("John"))
312
+ * )
313
+ *
314
+ * // run the program
315
+ * program.pipe(
316
+ * Effect.provide(GreeterMap.Default),
317
+ * NodeRuntime.runMain
318
+ * )
319
+ * ```
320
+ */
321
+ export const Service = <Self>() =>
322
+ <
323
+ const Id extends string,
324
+ Options extends
325
+ | NoExcessProperties<
326
+ {
327
+ readonly lookup: (key: any) => Layer.Layer<any, any, any>
328
+ readonly dependencies?: ReadonlyArray<Layer.Layer<any, any, any>>
329
+ readonly idleTimeToLive?: Duration.DurationInput | undefined
330
+ readonly preloadKeys?:
331
+ | Iterable<Options extends { readonly lookup: (key: infer K) => any } ? K : never>
332
+ | undefined
333
+ },
334
+ Options
335
+ >
336
+ | NoExcessProperties<{
337
+ readonly layers: Record<string, Layer.Layer<any, any, any>>
338
+ readonly dependencies?: ReadonlyArray<Layer.Layer<any, any, any>>
339
+ readonly idleTimeToLive?: Duration.DurationInput | undefined
340
+ readonly preload?: boolean
341
+ }, Options>
342
+ >(
343
+ id: Id,
344
+ options: Options
345
+ ): TagClass<
346
+ Self,
347
+ Id,
348
+ Options extends { readonly lookup: (key: infer K) => any } ? K
349
+ : Options extends { readonly layers: infer Layers } ? keyof Layers
350
+ : never,
351
+ Service.Success<Options>,
352
+ Options extends { readonly preload: true } ? never : Service.Error<Options>,
353
+ Service.Context<Options>,
354
+ Options extends { readonly preload: true } ? Service.Error<Options>
355
+ : Options extends { readonly preloadKey: Iterable<any> } ? Service.Error<Options>
356
+ : never,
357
+ Options extends { readonly dependencies: ReadonlyArray<any> } ? Options["dependencies"][number] : never
358
+ > => {
359
+ const Err = globalThis.Error as any
360
+ const limit = Err.stackTraceLimit
361
+ Err.stackTraceLimit = 2
362
+ const creationError = new Err()
363
+ Err.stackTraceLimit = limit
364
+
365
+ function TagClass() {}
366
+ const TagClass_ = TagClass as any as Mutable<TagClass<Self, Id, string, any, any, any, any, any>>
367
+ Object.setPrototypeOf(TagClass, Object.getPrototypeOf(Context.GenericTag<Self, any>(id)))
368
+ TagClass.key = id
369
+ Object.defineProperty(TagClass, "stack", {
370
+ get() {
371
+ return creationError.stack
372
+ }
373
+ })
374
+
375
+ TagClass_.DefaultWithoutDependencies = Layer.scoped(
376
+ TagClass_,
377
+ "lookup" in options
378
+ ? make(options.lookup, options)
379
+ : fromRecord(options.layers as any, options)
380
+ )
381
+ TagClass_.Default = options.dependencies && options.dependencies.length > 0 ?
382
+ Layer.provide(TagClass_.DefaultWithoutDependencies, options.dependencies as any) :
383
+ TagClass_.DefaultWithoutDependencies
384
+
385
+ TagClass_.get = (key: string) => Layer.unwrapScoped(Effect.map(TagClass_, (layerMap) => layerMap.get(key)))
386
+ TagClass_.runtime = (key: string) => Effect.flatMap(TagClass_, (layerMap) => layerMap.runtime(key))
387
+ TagClass_.invalidate = (key: string) => Effect.flatMap(TagClass_, (layerMap) => layerMap.invalidate(key))
388
+
389
+ return TagClass as any
390
+ }
391
+
392
+ /**
393
+ * @since 3.14.0
394
+ * @category Service
395
+ * @experimental
396
+ */
397
+ export declare namespace Service {
398
+ /**
399
+ * @since 3.14.0
400
+ * @category Service
401
+ * @experimental
402
+ */
403
+ export type Key<Options> = Options extends { readonly lookup: (key: infer K) => any } ? K
404
+ : Options extends { readonly layers: infer Layers } ? keyof Layers
405
+ : never
406
+
407
+ /**
408
+ * @since 3.14.0
409
+ * @category Service
410
+ * @experimental
411
+ */
412
+ export type Layers<Options> = Options extends { readonly lookup: (key: infer _K) => infer Layers } ? Layers
413
+ : Options extends { readonly layers: infer Layers } ? Layers[keyof Layers]
414
+ : never
415
+
416
+ /**
417
+ * @since 3.14.0
418
+ * @category Service
419
+ * @experimental
420
+ */
421
+ export type Success<Options> = Layers<Options> extends Layer.Layer<infer _A, infer _E, infer _R> ? _A : never
422
+
423
+ /**
424
+ * @since 3.14.0
425
+ * @category Service
426
+ * @experimental
427
+ */
428
+ export type Error<Options> = Layers<Options> extends Layer.Layer<infer _A, infer _E, infer _R> ? _E : never
429
+
430
+ /**
431
+ * @since 3.14.0
432
+ * @category Service
433
+ * @experimental
434
+ */
435
+ export type Context<Options> = Layers<Options> extends Layer.Layer<infer _A, infer _E, infer _R> ? _R : never
436
+ }