effect 3.4.8 → 3.5.0

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 (696) hide show
  1. package/RcMap/package.json +6 -0
  2. package/RcRef/package.json +6 -0
  3. package/dist/cjs/Array.js +14 -37
  4. package/dist/cjs/Array.js.map +1 -1
  5. package/dist/cjs/BigDecimal.js +11 -34
  6. package/dist/cjs/BigDecimal.js.map +1 -1
  7. package/dist/cjs/BigInt.js +7 -30
  8. package/dist/cjs/BigInt.js.map +1 -1
  9. package/dist/cjs/Boolean.js +6 -29
  10. package/dist/cjs/Boolean.js.map +1 -1
  11. package/dist/cjs/Brand.js +6 -29
  12. package/dist/cjs/Brand.js.map +1 -1
  13. package/dist/cjs/Cache.js +3 -26
  14. package/dist/cjs/Cache.js.map +1 -1
  15. package/dist/cjs/Cause.js +26 -28
  16. package/dist/cjs/Cause.js.map +1 -1
  17. package/dist/cjs/Channel.js +6 -29
  18. package/dist/cjs/Channel.js.map +1 -1
  19. package/dist/cjs/ChildExecutorDecision.js +3 -26
  20. package/dist/cjs/ChildExecutorDecision.js.map +1 -1
  21. package/dist/cjs/Chunk.js +12 -35
  22. package/dist/cjs/Chunk.js.map +1 -1
  23. package/dist/cjs/Clock.js +4 -27
  24. package/dist/cjs/Clock.js.map +1 -1
  25. package/dist/cjs/Config.js +3 -26
  26. package/dist/cjs/Config.js.map +1 -1
  27. package/dist/cjs/ConfigError.js +3 -26
  28. package/dist/cjs/ConfigError.js.map +1 -1
  29. package/dist/cjs/ConfigProvider.js +3 -26
  30. package/dist/cjs/ConfigProvider.js.map +1 -1
  31. package/dist/cjs/ConfigProviderPathPatch.js +3 -26
  32. package/dist/cjs/ConfigProviderPathPatch.js.map +1 -1
  33. package/dist/cjs/Console.js +4 -27
  34. package/dist/cjs/Console.js.map +1 -1
  35. package/dist/cjs/Context.js +3 -26
  36. package/dist/cjs/Context.js.map +1 -1
  37. package/dist/cjs/Cron.js +13 -36
  38. package/dist/cjs/Cron.js.map +1 -1
  39. package/dist/cjs/Data.js +9 -30
  40. package/dist/cjs/Data.js.map +1 -1
  41. package/dist/cjs/DefaultServices.js +3 -26
  42. package/dist/cjs/DefaultServices.js.map +1 -1
  43. package/dist/cjs/Deferred.js +4 -27
  44. package/dist/cjs/Deferred.js.map +1 -1
  45. package/dist/cjs/Differ.js +10 -33
  46. package/dist/cjs/Differ.js.map +1 -1
  47. package/dist/cjs/Duration.js +33 -35
  48. package/dist/cjs/Duration.js.map +1 -1
  49. package/dist/cjs/Effect.js +16 -39
  50. package/dist/cjs/Effect.js.map +1 -1
  51. package/dist/cjs/Effectable.js +3 -26
  52. package/dist/cjs/Effectable.js.map +1 -1
  53. package/dist/cjs/Either.js +8 -31
  54. package/dist/cjs/Either.js.map +1 -1
  55. package/dist/cjs/Encoding.js +7 -30
  56. package/dist/cjs/Encoding.js.map +1 -1
  57. package/dist/cjs/Equal.js +5 -28
  58. package/dist/cjs/Equal.js.map +1 -1
  59. package/dist/cjs/Equivalence.js +1 -1
  60. package/dist/cjs/Equivalence.js.map +1 -1
  61. package/dist/cjs/ExecutionStrategy.js +3 -26
  62. package/dist/cjs/ExecutionStrategy.js.map +1 -1
  63. package/dist/cjs/Exit.js +3 -26
  64. package/dist/cjs/Exit.js.map +1 -1
  65. package/dist/cjs/Fiber.js +6 -29
  66. package/dist/cjs/Fiber.js.map +1 -1
  67. package/dist/cjs/FiberHandle.js +15 -38
  68. package/dist/cjs/FiberHandle.js.map +1 -1
  69. package/dist/cjs/FiberId.js +3 -26
  70. package/dist/cjs/FiberId.js.map +1 -1
  71. package/dist/cjs/FiberMap.js +17 -40
  72. package/dist/cjs/FiberMap.js.map +1 -1
  73. package/dist/cjs/FiberRef.js +6 -29
  74. package/dist/cjs/FiberRef.js.map +1 -1
  75. package/dist/cjs/FiberRefs.js +3 -26
  76. package/dist/cjs/FiberRefs.js.map +1 -1
  77. package/dist/cjs/FiberRefsPatch.js +3 -26
  78. package/dist/cjs/FiberRefsPatch.js.map +1 -1
  79. package/dist/cjs/FiberSet.js +16 -39
  80. package/dist/cjs/FiberSet.js.map +1 -1
  81. package/dist/cjs/FiberStatus.js +3 -26
  82. package/dist/cjs/FiberStatus.js.map +1 -1
  83. package/dist/cjs/GlobalValue.js +3 -26
  84. package/dist/cjs/GlobalValue.js.map +1 -1
  85. package/dist/cjs/GroupBy.js +3 -26
  86. package/dist/cjs/GroupBy.js.map +1 -1
  87. package/dist/cjs/Hash.js +4 -4
  88. package/dist/cjs/Hash.js.map +1 -1
  89. package/dist/cjs/HashMap.js +4 -27
  90. package/dist/cjs/HashMap.js.map +1 -1
  91. package/dist/cjs/HashSet.js +3 -26
  92. package/dist/cjs/HashSet.js.map +1 -1
  93. package/dist/cjs/Inspectable.js +1 -1
  94. package/dist/cjs/Inspectable.js.map +1 -1
  95. package/dist/cjs/Iterable.js +8 -31
  96. package/dist/cjs/Iterable.js.map +1 -1
  97. package/dist/cjs/KeyedPool.js +3 -26
  98. package/dist/cjs/KeyedPool.js.map +1 -1
  99. package/dist/cjs/Layer.js +11 -34
  100. package/dist/cjs/Layer.js.map +1 -1
  101. package/dist/cjs/List.js +13 -36
  102. package/dist/cjs/List.js.map +1 -1
  103. package/dist/cjs/LogLevel.js +6 -29
  104. package/dist/cjs/LogLevel.js.map +1 -1
  105. package/dist/cjs/LogSpan.js +3 -26
  106. package/dist/cjs/LogSpan.js.map +1 -1
  107. package/dist/cjs/Logger.js +17 -30
  108. package/dist/cjs/Logger.js.map +1 -1
  109. package/dist/cjs/ManagedRuntime.js +3 -26
  110. package/dist/cjs/ManagedRuntime.js.map +1 -1
  111. package/dist/cjs/Match.js +4 -27
  112. package/dist/cjs/Match.js.map +1 -1
  113. package/dist/cjs/MergeDecision.js +3 -26
  114. package/dist/cjs/MergeDecision.js.map +1 -1
  115. package/dist/cjs/MergeState.js +3 -26
  116. package/dist/cjs/MergeState.js.map +1 -1
  117. package/dist/cjs/MergeStrategy.js +3 -26
  118. package/dist/cjs/MergeStrategy.js.map +1 -1
  119. package/dist/cjs/Metric.js +4 -27
  120. package/dist/cjs/Metric.js.map +1 -1
  121. package/dist/cjs/MetricBoundaries.js +3 -26
  122. package/dist/cjs/MetricBoundaries.js.map +1 -1
  123. package/dist/cjs/MetricHook.js +3 -26
  124. package/dist/cjs/MetricHook.js.map +1 -1
  125. package/dist/cjs/MetricKey.js +3 -26
  126. package/dist/cjs/MetricKey.js.map +1 -1
  127. package/dist/cjs/MetricKeyType.js +3 -26
  128. package/dist/cjs/MetricKeyType.js.map +1 -1
  129. package/dist/cjs/MetricLabel.js +3 -26
  130. package/dist/cjs/MetricLabel.js.map +1 -1
  131. package/dist/cjs/MetricPair.js +3 -26
  132. package/dist/cjs/MetricPair.js.map +1 -1
  133. package/dist/cjs/MetricPolling.js +3 -26
  134. package/dist/cjs/MetricPolling.js.map +1 -1
  135. package/dist/cjs/MetricRegistry.js +3 -26
  136. package/dist/cjs/MetricRegistry.js.map +1 -1
  137. package/dist/cjs/MetricState.js +3 -26
  138. package/dist/cjs/MetricState.js.map +1 -1
  139. package/dist/cjs/Micro.js +15 -38
  140. package/dist/cjs/Micro.js.map +1 -1
  141. package/dist/cjs/ModuleVersion.js +3 -26
  142. package/dist/cjs/ModuleVersion.js.map +1 -1
  143. package/dist/cjs/MutableHashMap.js +8 -31
  144. package/dist/cjs/MutableHashMap.js.map +1 -1
  145. package/dist/cjs/MutableHashSet.js +6 -29
  146. package/dist/cjs/MutableHashSet.js.map +1 -1
  147. package/dist/cjs/MutableList.js +5 -28
  148. package/dist/cjs/MutableList.js.map +1 -1
  149. package/dist/cjs/MutableQueue.js +7 -30
  150. package/dist/cjs/MutableQueue.js.map +1 -1
  151. package/dist/cjs/MutableRef.js +6 -29
  152. package/dist/cjs/MutableRef.js.map +1 -1
  153. package/dist/cjs/Number.js +7 -30
  154. package/dist/cjs/Number.js.map +1 -1
  155. package/dist/cjs/Option.js +10 -33
  156. package/dist/cjs/Option.js.map +1 -1
  157. package/dist/cjs/Order.js +1 -1
  158. package/dist/cjs/Order.js.map +1 -1
  159. package/dist/cjs/Ordering.js +1 -1
  160. package/dist/cjs/Ordering.js.map +1 -1
  161. package/dist/cjs/Pool.js +3 -26
  162. package/dist/cjs/Pool.js.map +1 -1
  163. package/dist/cjs/Predicate.js +1 -1
  164. package/dist/cjs/Predicate.js.map +1 -1
  165. package/dist/cjs/PubSub.js +3 -26
  166. package/dist/cjs/PubSub.js.map +1 -1
  167. package/dist/cjs/Queue.js +3 -26
  168. package/dist/cjs/Queue.js.map +1 -1
  169. package/dist/cjs/Random.js +13 -28
  170. package/dist/cjs/Random.js.map +1 -1
  171. package/dist/cjs/RateLimiter.js +3 -26
  172. package/dist/cjs/RateLimiter.js.map +1 -1
  173. package/dist/cjs/RcMap.js +52 -0
  174. package/dist/cjs/RcMap.js.map +1 -0
  175. package/dist/cjs/RcRef.js +51 -0
  176. package/dist/cjs/RcRef.js.map +1 -0
  177. package/dist/cjs/Readable.js +6 -29
  178. package/dist/cjs/Readable.js.map +1 -1
  179. package/dist/cjs/Record.js +6 -29
  180. package/dist/cjs/Record.js.map +1 -1
  181. package/dist/cjs/RedBlackTree.js +4 -27
  182. package/dist/cjs/RedBlackTree.js.map +1 -1
  183. package/dist/cjs/Redacted.js +4 -27
  184. package/dist/cjs/Redacted.js.map +1 -1
  185. package/dist/cjs/Ref.js +3 -26
  186. package/dist/cjs/Ref.js.map +1 -1
  187. package/dist/cjs/Reloadable.js +3 -26
  188. package/dist/cjs/Reloadable.js.map +1 -1
  189. package/dist/cjs/Request.js +7 -30
  190. package/dist/cjs/Request.js.map +1 -1
  191. package/dist/cjs/RequestBlock.js +3 -26
  192. package/dist/cjs/RequestBlock.js.map +1 -1
  193. package/dist/cjs/RequestResolver.js +6 -29
  194. package/dist/cjs/RequestResolver.js.map +1 -1
  195. package/dist/cjs/Resource.js +3 -26
  196. package/dist/cjs/Resource.js.map +1 -1
  197. package/dist/cjs/Runtime.js +3 -26
  198. package/dist/cjs/Runtime.js.map +1 -1
  199. package/dist/cjs/RuntimeFlags.js +4 -27
  200. package/dist/cjs/RuntimeFlags.js.map +1 -1
  201. package/dist/cjs/RuntimeFlagsPatch.js +4 -27
  202. package/dist/cjs/RuntimeFlagsPatch.js.map +1 -1
  203. package/dist/cjs/STM.js +6 -29
  204. package/dist/cjs/STM.js.map +1 -1
  205. package/dist/cjs/Schedule.js +3 -26
  206. package/dist/cjs/Schedule.js.map +1 -1
  207. package/dist/cjs/ScheduleDecision.js +3 -26
  208. package/dist/cjs/ScheduleDecision.js.map +1 -1
  209. package/dist/cjs/ScheduleInterval.js +3 -26
  210. package/dist/cjs/ScheduleInterval.js.map +1 -1
  211. package/dist/cjs/ScheduleIntervals.js +3 -26
  212. package/dist/cjs/ScheduleIntervals.js.map +1 -1
  213. package/dist/cjs/Scheduler.js +5 -28
  214. package/dist/cjs/Scheduler.js.map +1 -1
  215. package/dist/cjs/Scope.js +4 -27
  216. package/dist/cjs/Scope.js.map +1 -1
  217. package/dist/cjs/ScopedCache.js +3 -26
  218. package/dist/cjs/ScopedCache.js.map +1 -1
  219. package/dist/cjs/ScopedRef.js +3 -26
  220. package/dist/cjs/ScopedRef.js.map +1 -1
  221. package/dist/cjs/Secret.js +3 -26
  222. package/dist/cjs/Secret.js.map +1 -1
  223. package/dist/cjs/SingleProducerAsyncInput.js +3 -26
  224. package/dist/cjs/SingleProducerAsyncInput.js.map +1 -1
  225. package/dist/cjs/Sink.js +3 -26
  226. package/dist/cjs/Sink.js.map +1 -1
  227. package/dist/cjs/SortedMap.js +10 -33
  228. package/dist/cjs/SortedMap.js.map +1 -1
  229. package/dist/cjs/SortedSet.js +9 -32
  230. package/dist/cjs/SortedSet.js.map +1 -1
  231. package/dist/cjs/Stream.js +1077 -32
  232. package/dist/cjs/Stream.js.map +1 -1
  233. package/dist/cjs/StreamHaltStrategy.js +3 -26
  234. package/dist/cjs/StreamHaltStrategy.js.map +1 -1
  235. package/dist/cjs/Streamable.js +4 -27
  236. package/dist/cjs/Streamable.js.map +1 -1
  237. package/dist/cjs/String.js +9 -32
  238. package/dist/cjs/String.js.map +1 -1
  239. package/dist/cjs/Struct.js +6 -29
  240. package/dist/cjs/Struct.js.map +1 -1
  241. package/dist/cjs/Subscribable.js +8 -31
  242. package/dist/cjs/Subscribable.js.map +1 -1
  243. package/dist/cjs/SubscriptionRef.js +5 -28
  244. package/dist/cjs/SubscriptionRef.js.map +1 -1
  245. package/dist/cjs/Supervisor.js +5 -28
  246. package/dist/cjs/Supervisor.js.map +1 -1
  247. package/dist/cjs/Symbol.js +4 -27
  248. package/dist/cjs/Symbol.js.map +1 -1
  249. package/dist/cjs/SynchronizedRef.js +5 -28
  250. package/dist/cjs/SynchronizedRef.js.map +1 -1
  251. package/dist/cjs/TArray.js +3 -26
  252. package/dist/cjs/TArray.js.map +1 -1
  253. package/dist/cjs/TDeferred.js +3 -26
  254. package/dist/cjs/TDeferred.js.map +1 -1
  255. package/dist/cjs/TMap.js +3 -26
  256. package/dist/cjs/TMap.js.map +1 -1
  257. package/dist/cjs/TPriorityQueue.js +3 -26
  258. package/dist/cjs/TPriorityQueue.js.map +1 -1
  259. package/dist/cjs/TPubSub.js +3 -26
  260. package/dist/cjs/TPubSub.js.map +1 -1
  261. package/dist/cjs/TQueue.js +3 -26
  262. package/dist/cjs/TQueue.js.map +1 -1
  263. package/dist/cjs/TRandom.js +3 -26
  264. package/dist/cjs/TRandom.js.map +1 -1
  265. package/dist/cjs/TReentrantLock.js +3 -26
  266. package/dist/cjs/TReentrantLock.js.map +1 -1
  267. package/dist/cjs/TRef.js +3 -26
  268. package/dist/cjs/TRef.js.map +1 -1
  269. package/dist/cjs/TSemaphore.js +3 -26
  270. package/dist/cjs/TSemaphore.js.map +1 -1
  271. package/dist/cjs/TSet.js +3 -26
  272. package/dist/cjs/TSet.js.map +1 -1
  273. package/dist/cjs/Take.js +3 -26
  274. package/dist/cjs/Take.js.map +1 -1
  275. package/dist/cjs/TestAnnotation.js +10 -33
  276. package/dist/cjs/TestAnnotation.js.map +1 -1
  277. package/dist/cjs/TestAnnotationMap.js +5 -28
  278. package/dist/cjs/TestAnnotationMap.js.map +1 -1
  279. package/dist/cjs/TestAnnotations.js +15 -38
  280. package/dist/cjs/TestAnnotations.js.map +1 -1
  281. package/dist/cjs/TestClock.js +25 -48
  282. package/dist/cjs/TestClock.js.map +1 -1
  283. package/dist/cjs/TestConfig.js +3 -26
  284. package/dist/cjs/TestConfig.js.map +1 -1
  285. package/dist/cjs/TestContext.js +7 -30
  286. package/dist/cjs/TestContext.js.map +1 -1
  287. package/dist/cjs/TestLive.js +5 -28
  288. package/dist/cjs/TestLive.js.map +1 -1
  289. package/dist/cjs/TestServices.js +15 -38
  290. package/dist/cjs/TestServices.js.map +1 -1
  291. package/dist/cjs/TestSized.js +4 -27
  292. package/dist/cjs/TestSized.js.map +1 -1
  293. package/dist/cjs/Tracer.js +4 -27
  294. package/dist/cjs/Tracer.js.map +1 -1
  295. package/dist/cjs/Trie.js +3 -26
  296. package/dist/cjs/Trie.js.map +1 -1
  297. package/dist/cjs/Tuple.js +6 -29
  298. package/dist/cjs/Tuple.js.map +1 -1
  299. package/dist/cjs/Unify.js +1 -1
  300. package/dist/cjs/Unify.js.map +1 -1
  301. package/dist/cjs/UpstreamPullRequest.js +3 -26
  302. package/dist/cjs/UpstreamPullRequest.js.map +1 -1
  303. package/dist/cjs/UpstreamPullStrategy.js +3 -26
  304. package/dist/cjs/UpstreamPullStrategy.js.map +1 -1
  305. package/dist/cjs/Utils.js +4 -4
  306. package/dist/cjs/Utils.js.map +1 -1
  307. package/dist/cjs/index.js +166 -185
  308. package/dist/cjs/index.js.map +1 -1
  309. package/dist/cjs/internal/blockedRequests.js +9 -32
  310. package/dist/cjs/internal/blockedRequests.js.map +1 -1
  311. package/dist/cjs/internal/cache.js +20 -43
  312. package/dist/cjs/internal/cache.js.map +1 -1
  313. package/dist/cjs/internal/cause.js +37 -44
  314. package/dist/cjs/internal/cause.js.map +1 -1
  315. package/dist/cjs/internal/channel/channelExecutor.js +21 -44
  316. package/dist/cjs/internal/channel/channelExecutor.js.map +1 -1
  317. package/dist/cjs/internal/channel/channelState.js +5 -28
  318. package/dist/cjs/internal/channel/channelState.js.map +1 -1
  319. package/dist/cjs/internal/channel/childExecutorDecision.js +5 -28
  320. package/dist/cjs/internal/channel/childExecutorDecision.js.map +1 -1
  321. package/dist/cjs/internal/channel/continuation.js +4 -27
  322. package/dist/cjs/internal/channel/continuation.js.map +1 -1
  323. package/dist/cjs/internal/channel/mergeDecision.js +5 -28
  324. package/dist/cjs/internal/channel/mergeDecision.js.map +1 -1
  325. package/dist/cjs/internal/channel/mergeState.js +5 -28
  326. package/dist/cjs/internal/channel/mergeState.js.map +1 -1
  327. package/dist/cjs/internal/channel/mergeStrategy.js +5 -28
  328. package/dist/cjs/internal/channel/mergeStrategy.js.map +1 -1
  329. package/dist/cjs/internal/channel/singleProducerAsyncInput.js +9 -32
  330. package/dist/cjs/internal/channel/singleProducerAsyncInput.js.map +1 -1
  331. package/dist/cjs/internal/channel/subexecutor.js +5 -28
  332. package/dist/cjs/internal/channel/subexecutor.js.map +1 -1
  333. package/dist/cjs/internal/channel/upstreamPullRequest.js +5 -28
  334. package/dist/cjs/internal/channel/upstreamPullRequest.js.map +1 -1
  335. package/dist/cjs/internal/channel/upstreamPullStrategy.js +5 -28
  336. package/dist/cjs/internal/channel/upstreamPullStrategy.js.map +1 -1
  337. package/dist/cjs/internal/channel.js +31 -54
  338. package/dist/cjs/internal/channel.js.map +1 -1
  339. package/dist/cjs/internal/clock.js +6 -29
  340. package/dist/cjs/internal/clock.js.map +1 -1
  341. package/dist/cjs/internal/completedRequestMap.js +2 -2
  342. package/dist/cjs/internal/completedRequestMap.js.map +1 -1
  343. package/dist/cjs/internal/concurrency.js +3 -26
  344. package/dist/cjs/internal/concurrency.js.map +1 -1
  345. package/dist/cjs/internal/config.js +17 -40
  346. package/dist/cjs/internal/config.js.map +1 -1
  347. package/dist/cjs/internal/configError.js +7 -30
  348. package/dist/cjs/internal/configError.js.map +1 -1
  349. package/dist/cjs/internal/configProvider/pathPatch.js +8 -31
  350. package/dist/cjs/internal/configProvider/pathPatch.js.map +1 -1
  351. package/dist/cjs/internal/configProvider.js +17 -40
  352. package/dist/cjs/internal/configProvider.js.map +1 -1
  353. package/dist/cjs/internal/console.js +9 -32
  354. package/dist/cjs/internal/console.js.map +1 -1
  355. package/dist/cjs/internal/context.js +10 -33
  356. package/dist/cjs/internal/context.js.map +1 -1
  357. package/dist/cjs/internal/core-effect.js +29 -57
  358. package/dist/cjs/internal/core-effect.js.map +1 -1
  359. package/dist/cjs/internal/core-stream.js +14 -37
  360. package/dist/cjs/internal/core-stream.js.map +1 -1
  361. package/dist/cjs/internal/core.js +47 -65
  362. package/dist/cjs/internal/core.js.map +1 -1
  363. package/dist/cjs/internal/data.js +5 -28
  364. package/dist/cjs/internal/data.js.map +1 -1
  365. package/dist/cjs/internal/dataSource.js +10 -33
  366. package/dist/cjs/internal/dataSource.js.map +1 -1
  367. package/dist/cjs/internal/defaultServices/console.js +4 -27
  368. package/dist/cjs/internal/defaultServices/console.js.map +1 -1
  369. package/dist/cjs/internal/defaultServices.js +14 -37
  370. package/dist/cjs/internal/defaultServices.js.map +1 -1
  371. package/dist/cjs/internal/deferred.js +3 -26
  372. package/dist/cjs/internal/deferred.js.map +1 -1
  373. package/dist/cjs/internal/differ/chunkPatch.js +6 -29
  374. package/dist/cjs/internal/differ/chunkPatch.js.map +1 -1
  375. package/dist/cjs/internal/differ/contextPatch.js +7 -30
  376. package/dist/cjs/internal/differ/contextPatch.js.map +1 -1
  377. package/dist/cjs/internal/differ/hashMapPatch.js +7 -30
  378. package/dist/cjs/internal/differ/hashMapPatch.js.map +1 -1
  379. package/dist/cjs/internal/differ/hashSetPatch.js +6 -29
  380. package/dist/cjs/internal/differ/hashSetPatch.js.map +1 -1
  381. package/dist/cjs/internal/differ/orPatch.js +7 -30
  382. package/dist/cjs/internal/differ/orPatch.js.map +1 -1
  383. package/dist/cjs/internal/differ/readonlyArrayPatch.js +6 -29
  384. package/dist/cjs/internal/differ/readonlyArrayPatch.js.map +1 -1
  385. package/dist/cjs/internal/differ.js +10 -33
  386. package/dist/cjs/internal/differ.js.map +1 -1
  387. package/dist/cjs/internal/doNotation.js +1 -1
  388. package/dist/cjs/internal/doNotation.js.map +1 -1
  389. package/dist/cjs/internal/effect/circular.js +24 -47
  390. package/dist/cjs/internal/effect/circular.js.map +1 -1
  391. package/dist/cjs/internal/effectable.js +8 -31
  392. package/dist/cjs/internal/effectable.js.map +1 -1
  393. package/dist/cjs/internal/either.js +9 -32
  394. package/dist/cjs/internal/either.js.map +1 -1
  395. package/dist/cjs/internal/encoding/base64.js +4 -27
  396. package/dist/cjs/internal/encoding/base64.js.map +1 -1
  397. package/dist/cjs/internal/encoding/base64Url.js +5 -28
  398. package/dist/cjs/internal/encoding/base64Url.js.map +1 -1
  399. package/dist/cjs/internal/encoding/common.js +1 -1
  400. package/dist/cjs/internal/encoding/common.js.map +1 -1
  401. package/dist/cjs/internal/encoding/hex.js +4 -27
  402. package/dist/cjs/internal/encoding/hex.js.map +1 -1
  403. package/dist/cjs/internal/executionStrategy.js +1 -1
  404. package/dist/cjs/internal/executionStrategy.js.map +1 -1
  405. package/dist/cjs/internal/fiber.js +17 -40
  406. package/dist/cjs/internal/fiber.js.map +1 -1
  407. package/dist/cjs/internal/fiberId.js +11 -34
  408. package/dist/cjs/internal/fiberId.js.map +1 -1
  409. package/dist/cjs/internal/fiberRefs/patch.js +6 -29
  410. package/dist/cjs/internal/fiberRefs/patch.js.map +1 -1
  411. package/dist/cjs/internal/fiberRefs.js +9 -32
  412. package/dist/cjs/internal/fiberRefs.js.map +1 -1
  413. package/dist/cjs/internal/fiberRuntime.js +58 -79
  414. package/dist/cjs/internal/fiberRuntime.js.map +1 -1
  415. package/dist/cjs/internal/fiberScope.js +5 -28
  416. package/dist/cjs/internal/fiberScope.js.map +1 -1
  417. package/dist/cjs/internal/fiberStatus.js +6 -29
  418. package/dist/cjs/internal/fiberStatus.js.map +1 -1
  419. package/dist/cjs/internal/groupBy.js +18 -41
  420. package/dist/cjs/internal/groupBy.js.map +1 -1
  421. package/dist/cjs/internal/hashMap/bitwise.js +1 -1
  422. package/dist/cjs/internal/hashMap/bitwise.js.map +1 -1
  423. package/dist/cjs/internal/hashMap/keySet.js +1 -1
  424. package/dist/cjs/internal/hashMap/keySet.js.map +1 -1
  425. package/dist/cjs/internal/hashMap/node.js +9 -32
  426. package/dist/cjs/internal/hashMap/node.js.map +1 -1
  427. package/dist/cjs/internal/hashMap.js +12 -35
  428. package/dist/cjs/internal/hashMap.js.map +1 -1
  429. package/dist/cjs/internal/hashSet.js +9 -32
  430. package/dist/cjs/internal/hashSet.js.map +1 -1
  431. package/dist/cjs/internal/keyedPool.js +14 -37
  432. package/dist/cjs/internal/keyedPool.js.map +1 -1
  433. package/dist/cjs/internal/layer/circular.js +12 -35
  434. package/dist/cjs/internal/layer/circular.js.map +1 -1
  435. package/dist/cjs/internal/layer.js +25 -48
  436. package/dist/cjs/internal/layer.js.map +1 -1
  437. package/dist/cjs/internal/logger-circular.js +9 -32
  438. package/dist/cjs/internal/logger-circular.js.map +1 -1
  439. package/dist/cjs/internal/logger.js +139 -61
  440. package/dist/cjs/internal/logger.js.map +1 -1
  441. package/dist/cjs/internal/managedRuntime.js +9 -32
  442. package/dist/cjs/internal/managedRuntime.js.map +1 -1
  443. package/dist/cjs/internal/matcher.js +6 -29
  444. package/dist/cjs/internal/matcher.js.map +1 -1
  445. package/dist/cjs/internal/metric/boundaries.js +9 -32
  446. package/dist/cjs/internal/metric/boundaries.js.map +1 -1
  447. package/dist/cjs/internal/metric/hook.js +9 -32
  448. package/dist/cjs/internal/metric/hook.js.map +1 -1
  449. package/dist/cjs/internal/metric/key.js +11 -34
  450. package/dist/cjs/internal/metric/key.js.map +1 -1
  451. package/dist/cjs/internal/metric/keyType.js +8 -31
  452. package/dist/cjs/internal/metric/keyType.js.map +1 -1
  453. package/dist/cjs/internal/metric/label.js +6 -29
  454. package/dist/cjs/internal/metric/label.js.map +1 -1
  455. package/dist/cjs/internal/metric/pair.js +1 -1
  456. package/dist/cjs/internal/metric/pair.js.map +1 -1
  457. package/dist/cjs/internal/metric/polling.js +8 -31
  458. package/dist/cjs/internal/metric/polling.js.map +1 -1
  459. package/dist/cjs/internal/metric/registry.js +8 -31
  460. package/dist/cjs/internal/metric/registry.js.map +1 -1
  461. package/dist/cjs/internal/metric/state.js +8 -31
  462. package/dist/cjs/internal/metric/state.js.map +1 -1
  463. package/dist/cjs/internal/metric.js +15 -38
  464. package/dist/cjs/internal/metric.js.map +1 -1
  465. package/dist/cjs/internal/option.js +7 -30
  466. package/dist/cjs/internal/option.js.map +1 -1
  467. package/dist/cjs/internal/pool.js +43 -42
  468. package/dist/cjs/internal/pool.js.map +1 -1
  469. package/dist/cjs/internal/pubsub.js +229 -72
  470. package/dist/cjs/internal/pubsub.js.map +1 -1
  471. package/dist/cjs/internal/query.js +10 -33
  472. package/dist/cjs/internal/query.js.map +1 -1
  473. package/dist/cjs/internal/queue.js +12 -35
  474. package/dist/cjs/internal/queue.js.map +1 -1
  475. package/dist/cjs/internal/random.js +9 -31
  476. package/dist/cjs/internal/random.js.map +1 -1
  477. package/dist/cjs/internal/rateLimiter.js +6 -29
  478. package/dist/cjs/internal/rateLimiter.js.map +1 -1
  479. package/dist/cjs/internal/rcMap.js +129 -0
  480. package/dist/cjs/internal/rcMap.js.map +1 -0
  481. package/dist/cjs/internal/rcRef.js +122 -0
  482. package/dist/cjs/internal/rcRef.js.map +1 -0
  483. package/dist/cjs/internal/redBlackTree/iterator.js +4 -27
  484. package/dist/cjs/internal/redBlackTree/iterator.js.map +1 -1
  485. package/dist/cjs/internal/redBlackTree.js +13 -36
  486. package/dist/cjs/internal/redBlackTree.js.map +1 -1
  487. package/dist/cjs/internal/redacted.js +8 -31
  488. package/dist/cjs/internal/redacted.js.map +1 -1
  489. package/dist/cjs/internal/ref.js +8 -31
  490. package/dist/cjs/internal/ref.js.map +1 -1
  491. package/dist/cjs/internal/reloadable.js +10 -33
  492. package/dist/cjs/internal/reloadable.js.map +1 -1
  493. package/dist/cjs/internal/request.js +7 -30
  494. package/dist/cjs/internal/request.js.map +1 -1
  495. package/dist/cjs/internal/resource.js +7 -30
  496. package/dist/cjs/internal/resource.js.map +1 -1
  497. package/dist/cjs/internal/ringBuffer.js +5 -28
  498. package/dist/cjs/internal/ringBuffer.js.map +1 -1
  499. package/dist/cjs/internal/runtime.js +23 -46
  500. package/dist/cjs/internal/runtime.js.map +1 -1
  501. package/dist/cjs/internal/runtimeFlags.js +5 -28
  502. package/dist/cjs/internal/runtimeFlags.js.map +1 -1
  503. package/dist/cjs/internal/runtimeFlagsPatch.js +1 -1
  504. package/dist/cjs/internal/runtimeFlagsPatch.js.map +1 -1
  505. package/dist/cjs/internal/schedule/decision.js +4 -27
  506. package/dist/cjs/internal/schedule/decision.js.map +1 -1
  507. package/dist/cjs/internal/schedule/interval.js +5 -28
  508. package/dist/cjs/internal/schedule/interval.js.map +1 -1
  509. package/dist/cjs/internal/schedule/intervals.js +7 -30
  510. package/dist/cjs/internal/schedule/intervals.js.map +1 -1
  511. package/dist/cjs/internal/schedule.js +21 -44
  512. package/dist/cjs/internal/schedule.js.map +1 -1
  513. package/dist/cjs/internal/scopedCache.js +19 -42
  514. package/dist/cjs/internal/scopedCache.js.map +1 -1
  515. package/dist/cjs/internal/scopedRef.js +10 -33
  516. package/dist/cjs/internal/scopedRef.js.map +1 -1
  517. package/dist/cjs/internal/secret.js +5 -28
  518. package/dist/cjs/internal/secret.js.map +1 -1
  519. package/dist/cjs/internal/singleShotGen.js.map +1 -1
  520. package/dist/cjs/internal/sink.js +22 -45
  521. package/dist/cjs/internal/sink.js.map +1 -1
  522. package/dist/cjs/internal/stm/core.js +30 -53
  523. package/dist/cjs/internal/stm/core.js.map +1 -1
  524. package/dist/cjs/internal/stm/stm/entry.js +3 -26
  525. package/dist/cjs/internal/stm/stm/entry.js.map +1 -1
  526. package/dist/cjs/internal/stm/stm/journal.js +3 -26
  527. package/dist/cjs/internal/stm/stm/journal.js.map +1 -1
  528. package/dist/cjs/internal/stm/stm/stmState.js +9 -32
  529. package/dist/cjs/internal/stm/stm/stmState.js.map +1 -1
  530. package/dist/cjs/internal/stm/stm/tExit.js +7 -30
  531. package/dist/cjs/internal/stm/stm/tExit.js.map +1 -1
  532. package/dist/cjs/internal/stm/stm/tryCommit.js +3 -26
  533. package/dist/cjs/internal/stm/stm/tryCommit.js.map +1 -1
  534. package/dist/cjs/internal/stm/stm/versioned.js.map +1 -1
  535. package/dist/cjs/internal/stm/stm.js +17 -40
  536. package/dist/cjs/internal/stm/stm.js.map +1 -1
  537. package/dist/cjs/internal/stm/tArray.js +9 -32
  538. package/dist/cjs/internal/stm/tArray.js.map +1 -1
  539. package/dist/cjs/internal/stm/tDeferred.js +8 -31
  540. package/dist/cjs/internal/stm/tDeferred.js.map +1 -1
  541. package/dist/cjs/internal/stm/tMap.js +15 -38
  542. package/dist/cjs/internal/stm/tMap.js.map +1 -1
  543. package/dist/cjs/internal/stm/tPriorityQueue.js +9 -32
  544. package/dist/cjs/internal/stm/tPriorityQueue.js.map +1 -1
  545. package/dist/cjs/internal/stm/tPubSub.js +12 -35
  546. package/dist/cjs/internal/stm/tPubSub.js.map +1 -1
  547. package/dist/cjs/internal/stm/tQueue.js +12 -35
  548. package/dist/cjs/internal/stm/tQueue.js.map +1 -1
  549. package/dist/cjs/internal/stm/tRandom.js +10 -33
  550. package/dist/cjs/internal/stm/tRandom.js.map +1 -1
  551. package/dist/cjs/internal/stm/tReentrantLock.js +10 -33
  552. package/dist/cjs/internal/stm/tReentrantLock.js.map +1 -1
  553. package/dist/cjs/internal/stm/tRef.js +7 -30
  554. package/dist/cjs/internal/stm/tRef.js.map +1 -1
  555. package/dist/cjs/internal/stm/tSemaphore.js +8 -31
  556. package/dist/cjs/internal/stm/tSemaphore.js.map +1 -1
  557. package/dist/cjs/internal/stm/tSet.js +10 -33
  558. package/dist/cjs/internal/stm/tSet.js.map +1 -1
  559. package/dist/cjs/internal/stream/emit.js +8 -31
  560. package/dist/cjs/internal/stream/emit.js.map +1 -1
  561. package/dist/cjs/internal/stream/haltStrategy.js +4 -27
  562. package/dist/cjs/internal/stream/haltStrategy.js.map +1 -1
  563. package/dist/cjs/internal/stream/handoff.js +7 -30
  564. package/dist/cjs/internal/stream/handoff.js.map +1 -1
  565. package/dist/cjs/internal/stream/pull.js +7 -30
  566. package/dist/cjs/internal/stream/pull.js.map +1 -1
  567. package/dist/cjs/internal/stream.js +103 -80
  568. package/dist/cjs/internal/stream.js.map +1 -1
  569. package/dist/cjs/internal/subscriptionRef.js +13 -36
  570. package/dist/cjs/internal/subscriptionRef.js.map +1 -1
  571. package/dist/cjs/internal/supervisor/patch.js +8 -31
  572. package/dist/cjs/internal/supervisor/patch.js.map +1 -1
  573. package/dist/cjs/internal/supervisor.js +8 -31
  574. package/dist/cjs/internal/supervisor.js.map +1 -1
  575. package/dist/cjs/internal/synchronizedRef.js +5 -28
  576. package/dist/cjs/internal/synchronizedRef.js.map +1 -1
  577. package/dist/cjs/internal/take.js +9 -32
  578. package/dist/cjs/internal/take.js.map +1 -1
  579. package/dist/cjs/internal/tracer.js +3 -26
  580. package/dist/cjs/internal/tracer.js.map +1 -1
  581. package/dist/cjs/internal/trie.js +9 -32
  582. package/dist/cjs/internal/trie.js.map +1 -1
  583. package/dist/cjs/internal/version.js +1 -1
  584. package/dist/dts/Cause.d.ts +40 -1
  585. package/dist/dts/Cause.d.ts.map +1 -1
  586. package/dist/dts/Channel.d.ts +3 -3
  587. package/dist/dts/Channel.d.ts.map +1 -1
  588. package/dist/dts/Config.d.ts +5 -0
  589. package/dist/dts/Config.d.ts.map +1 -1
  590. package/dist/dts/Console.d.ts +2 -4
  591. package/dist/dts/Console.d.ts.map +1 -1
  592. package/dist/dts/Duration.d.ts +5 -0
  593. package/dist/dts/Duration.d.ts.map +1 -1
  594. package/dist/dts/Logger.d.ts +15 -0
  595. package/dist/dts/Logger.d.ts.map +1 -1
  596. package/dist/dts/PubSub.d.ts +15 -4
  597. package/dist/dts/PubSub.d.ts.map +1 -1
  598. package/dist/dts/Random.d.ts +8 -0
  599. package/dist/dts/Random.d.ts.map +1 -1
  600. package/dist/dts/RcMap.d.ts +93 -0
  601. package/dist/dts/RcMap.d.ts.map +1 -0
  602. package/dist/dts/RcRef.d.ts +83 -0
  603. package/dist/dts/RcRef.d.ts.map +1 -0
  604. package/dist/dts/Stream.d.ts +1139 -29
  605. package/dist/dts/Stream.d.ts.map +1 -1
  606. package/dist/dts/index.d.ts +8 -0
  607. package/dist/dts/index.d.ts.map +1 -1
  608. package/dist/dts/internal/core-effect.d.ts.map +1 -1
  609. package/dist/dts/internal/fiberRuntime.d.ts.map +1 -1
  610. package/dist/dts/internal/logger.d.ts.map +1 -1
  611. package/dist/dts/internal/random.d.ts +1 -1
  612. package/dist/dts/internal/random.d.ts.map +1 -1
  613. package/dist/dts/internal/rcMap.d.ts +2 -0
  614. package/dist/dts/internal/rcMap.d.ts.map +1 -0
  615. package/dist/dts/internal/rcRef.d.ts +2 -0
  616. package/dist/dts/internal/rcRef.d.ts.map +1 -0
  617. package/dist/dts/internal/stream.d.ts +1 -0
  618. package/dist/dts/internal/stream.d.ts.map +1 -1
  619. package/dist/esm/Cause.js +21 -0
  620. package/dist/esm/Cause.js.map +1 -1
  621. package/dist/esm/Channel.js.map +1 -1
  622. package/dist/esm/Config.js.map +1 -1
  623. package/dist/esm/Console.js.map +1 -1
  624. package/dist/esm/Data.js +3 -1
  625. package/dist/esm/Data.js.map +1 -1
  626. package/dist/esm/Duration.js +20 -0
  627. package/dist/esm/Duration.js.map +1 -1
  628. package/dist/esm/Logger.js +10 -0
  629. package/dist/esm/Logger.js.map +1 -1
  630. package/dist/esm/PubSub.js.map +1 -1
  631. package/dist/esm/Random.js +8 -0
  632. package/dist/esm/Random.js.map +1 -1
  633. package/dist/esm/RcMap.js +44 -0
  634. package/dist/esm/RcMap.js.map +1 -0
  635. package/dist/esm/RcRef.js +43 -0
  636. package/dist/esm/RcRef.js.map +1 -0
  637. package/dist/esm/Stream.js +1102 -3
  638. package/dist/esm/Stream.js.map +1 -1
  639. package/dist/esm/index.js +8 -0
  640. package/dist/esm/index.js.map +1 -1
  641. package/dist/esm/internal/cause.js +21 -5
  642. package/dist/esm/internal/cause.js.map +1 -1
  643. package/dist/esm/internal/channel/channelExecutor.js.map +1 -1
  644. package/dist/esm/internal/channel.js.map +1 -1
  645. package/dist/esm/internal/core-effect.js +0 -5
  646. package/dist/esm/internal/core-effect.js.map +1 -1
  647. package/dist/esm/internal/core.js +11 -7
  648. package/dist/esm/internal/core.js.map +1 -1
  649. package/dist/esm/internal/defaultServices.js +1 -1
  650. package/dist/esm/internal/defaultServices.js.map +1 -1
  651. package/dist/esm/internal/fiberRuntime.js +2 -0
  652. package/dist/esm/internal/fiberRuntime.js.map +1 -1
  653. package/dist/esm/internal/logger.js +126 -26
  654. package/dist/esm/internal/logger.js.map +1 -1
  655. package/dist/esm/internal/pool.js +29 -5
  656. package/dist/esm/internal/pool.js.map +1 -1
  657. package/dist/esm/internal/pubsub.js +216 -36
  658. package/dist/esm/internal/pubsub.js.map +1 -1
  659. package/dist/esm/internal/random.js +2 -1
  660. package/dist/esm/internal/random.js.map +1 -1
  661. package/dist/esm/internal/rcMap.js +120 -0
  662. package/dist/esm/internal/rcMap.js.map +1 -0
  663. package/dist/esm/internal/rcRef.js +112 -0
  664. package/dist/esm/internal/rcRef.js.map +1 -0
  665. package/dist/esm/internal/stream.js +53 -8
  666. package/dist/esm/internal/stream.js.map +1 -1
  667. package/dist/esm/internal/version.js +1 -1
  668. package/package.json +17 -1
  669. package/src/Cause.ts +47 -1
  670. package/src/Channel.ts +3 -3
  671. package/src/Config.ts +6 -0
  672. package/src/Console.ts +2 -4
  673. package/src/Data.ts +1 -1
  674. package/src/Duration.ts +18 -0
  675. package/src/Logger.ts +19 -0
  676. package/src/PubSub.ts +11 -4
  677. package/src/Random.ts +9 -0
  678. package/src/RcMap.ts +103 -0
  679. package/src/RcRef.ts +91 -0
  680. package/src/Stream.ts +1158 -29
  681. package/src/index.ts +10 -0
  682. package/src/internal/cause.ts +26 -5
  683. package/src/internal/channel/channelExecutor.ts +1 -1
  684. package/src/internal/channel.ts +4 -3
  685. package/src/internal/core-effect.ts +0 -5
  686. package/src/internal/core.ts +19 -9
  687. package/src/internal/defaultServices.ts +1 -1
  688. package/src/internal/fiberRuntime.ts +6 -0
  689. package/src/internal/logger.ts +133 -27
  690. package/src/internal/pool.ts +36 -5
  691. package/src/internal/pubsub.ts +249 -58
  692. package/src/internal/random.ts +2 -1
  693. package/src/internal/rcMap.ts +213 -0
  694. package/src/internal/rcRef.ts +172 -0
  695. package/src/internal/stream.ts +325 -111
  696. package/src/internal/version.ts +1 -1
@@ -28,13 +28,25 @@ const removeSubscribers = (subscription, pollers) => subscribers => {
28
28
  }
29
29
  };
30
30
  /** @internal */
31
- export const bounded = requestedCapacity => pipe(core.sync(() => makeBoundedPubSub(requestedCapacity)), core.flatMap(atomicPubSub => makePubSub(atomicPubSub, new BackPressureStrategy())));
31
+ export const bounded = capacity => core.suspend(() => {
32
+ const pubsub = makeBoundedPubSub(capacity);
33
+ return makePubSub(pubsub, new BackPressureStrategy());
34
+ });
32
35
  /** @internal */
33
- export const dropping = requestedCapacity => pipe(core.sync(() => makeBoundedPubSub(requestedCapacity)), core.flatMap(atomicPubSub => makePubSub(atomicPubSub, new DroppingStrategy())));
36
+ export const dropping = capacity => core.suspend(() => {
37
+ const pubsub = makeBoundedPubSub(capacity);
38
+ return makePubSub(pubsub, new DroppingStrategy());
39
+ });
34
40
  /** @internal */
35
- export const sliding = requestedCapacity => pipe(core.sync(() => makeBoundedPubSub(requestedCapacity)), core.flatMap(atomicPubSub => makePubSub(atomicPubSub, new SlidingStrategy())));
41
+ export const sliding = capacity => core.suspend(() => {
42
+ const pubsub = makeBoundedPubSub(capacity);
43
+ return makePubSub(pubsub, new SlidingStrategy());
44
+ });
36
45
  /** @internal */
37
- export const unbounded = () => pipe(core.sync(() => makeUnboundedPubSub()), core.flatMap(atomicPubSub => makePubSub(atomicPubSub, new DroppingStrategy())));
46
+ export const unbounded = options => core.suspend(() => {
47
+ const pubsub = makeUnboundedPubSub(options);
48
+ return makePubSub(pubsub, new DroppingStrategy());
49
+ });
38
50
  /** @internal */
39
51
  export const capacity = self => self.capacity();
40
52
  /** @internal */
@@ -56,42 +68,47 @@ export const publishAll = /*#__PURE__*/dual(2, (self, elements) => self.publishA
56
68
  /** @internal */
57
69
  export const subscribe = self => self.subscribe;
58
70
  /** @internal */
59
- const makeBoundedPubSub = requestedCapacity => {
60
- ensureCapacity(requestedCapacity);
61
- if (requestedCapacity === 1) {
62
- return new BoundedPubSubSingle();
63
- } else if (nextPow2(requestedCapacity) === requestedCapacity) {
64
- return new BoundedPubSubPow2(requestedCapacity);
71
+ const makeBoundedPubSub = capacity => {
72
+ const options = typeof capacity === "number" ? {
73
+ capacity
74
+ } : capacity;
75
+ ensureCapacity(options.capacity);
76
+ const replayBuffer = options.replay && options.replay > 0 ? new ReplayBuffer(Math.ceil(options.replay)) : undefined;
77
+ if (options.capacity === 1) {
78
+ return new BoundedPubSubSingle(replayBuffer);
79
+ } else if (nextPow2(options.capacity) === options.capacity) {
80
+ return new BoundedPubSubPow2(options.capacity, replayBuffer);
65
81
  } else {
66
- return new BoundedPubSubArb(requestedCapacity);
82
+ return new BoundedPubSubArb(options.capacity, replayBuffer);
67
83
  }
68
84
  };
69
85
  /** @internal */
70
- const makeUnboundedPubSub = () => {
71
- return new UnboundedPubSub();
72
- };
86
+ const makeUnboundedPubSub = options => new UnboundedPubSub(options?.replay ? new ReplayBuffer(options.replay) : undefined);
73
87
  /** @internal */
74
88
  const makeSubscription = (pubsub, subscribers, strategy) => core.map(core.deferredMake(), deferred => unsafeMakeSubscription(pubsub, subscribers, pubsub.subscribe(), MutableQueue.unbounded(), deferred, MutableRef.make(false), strategy));
75
89
  /** @internal */
76
- export const unsafeMakeSubscription = (pubsub, subscribers, subscription, pollers, shutdownHook, shutdownFlag, strategy) => {
77
- return new SubscriptionImpl(pubsub, subscribers, subscription, pollers, shutdownHook, shutdownFlag, strategy);
78
- };
90
+ export const unsafeMakeSubscription = (pubsub, subscribers, subscription, pollers, shutdownHook, shutdownFlag, strategy) => new SubscriptionImpl(pubsub, subscribers, subscription, pollers, shutdownHook, shutdownFlag, strategy, pubsub.replayWindow());
79
91
  /** @internal */
80
92
  class BoundedPubSubArb {
93
+ capacity;
94
+ replayBuffer;
81
95
  array;
82
96
  publisherIndex = 0;
83
97
  subscribers;
84
98
  subscriberCount = 0;
85
99
  subscribersIndex = 0;
86
- capacity;
87
- constructor(requestedCapacity) {
100
+ constructor(capacity, replayBuffer) {
101
+ this.capacity = capacity;
102
+ this.replayBuffer = replayBuffer;
88
103
  this.array = Array.from({
89
- length: requestedCapacity
104
+ length: capacity
90
105
  });
91
106
  this.subscribers = Array.from({
92
- length: requestedCapacity
107
+ length: capacity
93
108
  });
94
- this.capacity = requestedCapacity;
109
+ }
110
+ replayWindow() {
111
+ return this.replayBuffer ? new ReplayWindowImpl(this.replayBuffer) : emptyReplayWindow;
95
112
  }
96
113
  isEmpty() {
97
114
  return this.publisherIndex === this.subscribersIndex;
@@ -112,10 +129,16 @@ class BoundedPubSubArb {
112
129
  this.subscribers[index] = this.subscriberCount;
113
130
  this.publisherIndex += 1;
114
131
  }
132
+ if (this.replayBuffer) {
133
+ this.replayBuffer.offer(value);
134
+ }
115
135
  return true;
116
136
  }
117
137
  publishAll(elements) {
118
138
  if (this.subscriberCount === 0) {
139
+ if (this.replayBuffer) {
140
+ this.replayBuffer.offerAll(elements);
141
+ }
119
142
  return Chunk.empty();
120
143
  }
121
144
  const chunk = Chunk.fromIterable(elements);
@@ -134,6 +157,9 @@ class BoundedPubSubArb {
134
157
  this.array[index] = a;
135
158
  this.subscribers[index] = this.subscriberCount;
136
159
  this.publisherIndex += 1;
160
+ if (this.replayBuffer) {
161
+ this.replayBuffer.offer(a);
162
+ }
137
163
  }
138
164
  return Chunk.drop(chunk, iteratorIndex);
139
165
  }
@@ -144,6 +170,9 @@ class BoundedPubSubArb {
144
170
  this.subscribers[index] = 0;
145
171
  this.subscribersIndex += 1;
146
172
  }
173
+ if (this.replayBuffer) {
174
+ this.replayBuffer.slide();
175
+ }
147
176
  }
148
177
  subscribe() {
149
178
  this.subscriberCount += 1;
@@ -230,22 +259,27 @@ class BoundedPubSubArbSubscription {
230
259
  }
231
260
  /** @internal */
232
261
  class BoundedPubSubPow2 {
262
+ capacity;
263
+ replayBuffer;
233
264
  array;
234
265
  mask;
235
266
  publisherIndex = 0;
236
267
  subscribers;
237
268
  subscriberCount = 0;
238
269
  subscribersIndex = 0;
239
- capacity;
240
- constructor(requestedCapacity) {
270
+ constructor(capacity, replayBuffer) {
271
+ this.capacity = capacity;
272
+ this.replayBuffer = replayBuffer;
241
273
  this.array = Array.from({
242
- length: requestedCapacity
274
+ length: capacity
243
275
  });
244
- this.mask = requestedCapacity - 1;
276
+ this.mask = capacity - 1;
245
277
  this.subscribers = Array.from({
246
- length: requestedCapacity
278
+ length: capacity
247
279
  });
248
- this.capacity = requestedCapacity;
280
+ }
281
+ replayWindow() {
282
+ return this.replayBuffer ? new ReplayWindowImpl(this.replayBuffer) : emptyReplayWindow;
249
283
  }
250
284
  isEmpty() {
251
285
  return this.publisherIndex === this.subscribersIndex;
@@ -266,10 +300,16 @@ class BoundedPubSubPow2 {
266
300
  this.subscribers[index] = this.subscriberCount;
267
301
  this.publisherIndex += 1;
268
302
  }
303
+ if (this.replayBuffer) {
304
+ this.replayBuffer.offer(value);
305
+ }
269
306
  return true;
270
307
  }
271
308
  publishAll(elements) {
272
309
  if (this.subscriberCount === 0) {
310
+ if (this.replayBuffer) {
311
+ this.replayBuffer.offerAll(elements);
312
+ }
273
313
  return Chunk.empty();
274
314
  }
275
315
  const chunk = Chunk.fromIterable(elements);
@@ -288,6 +328,9 @@ class BoundedPubSubPow2 {
288
328
  this.array[index] = elem;
289
329
  this.subscribers[index] = this.subscriberCount;
290
330
  this.publisherIndex += 1;
331
+ if (this.replayBuffer) {
332
+ this.replayBuffer.offer(elem);
333
+ }
291
334
  }
292
335
  return Chunk.drop(chunk, iteratorIndex);
293
336
  }
@@ -298,6 +341,9 @@ class BoundedPubSubPow2 {
298
341
  this.subscribers[index] = 0;
299
342
  this.subscribersIndex += 1;
300
343
  }
344
+ if (this.replayBuffer) {
345
+ this.replayBuffer.slide();
346
+ }
301
347
  }
302
348
  subscribe() {
303
349
  this.subscriberCount += 1;
@@ -385,11 +431,18 @@ class BoundedPubSubPow2Subscription {
385
431
  }
386
432
  /** @internal */
387
433
  class BoundedPubSubSingle {
434
+ replayBuffer;
388
435
  publisherIndex = 0;
389
436
  subscriberCount = 0;
390
437
  subscribers = 0;
391
438
  value = AbsentValue;
392
439
  capacity = 1;
440
+ constructor(replayBuffer) {
441
+ this.replayBuffer = replayBuffer;
442
+ }
443
+ replayWindow() {
444
+ return this.replayBuffer ? new ReplayWindowImpl(this.replayBuffer) : emptyReplayWindow;
445
+ }
393
446
  pipe() {
394
447
  return pipeArguments(this, arguments);
395
448
  }
@@ -411,10 +464,16 @@ class BoundedPubSubSingle {
411
464
  this.subscribers = this.subscriberCount;
412
465
  this.publisherIndex += 1;
413
466
  }
467
+ if (this.replayBuffer) {
468
+ this.replayBuffer.offer(value);
469
+ }
414
470
  return true;
415
471
  }
416
472
  publishAll(elements) {
417
473
  if (this.subscriberCount === 0) {
474
+ if (this.replayBuffer) {
475
+ this.replayBuffer.offerAll(elements);
476
+ }
418
477
  return Chunk.empty();
419
478
  }
420
479
  const chunk = Chunk.fromIterable(elements);
@@ -432,6 +491,9 @@ class BoundedPubSubSingle {
432
491
  this.subscribers = 0;
433
492
  this.value = AbsentValue;
434
493
  }
494
+ if (this.replayBuffer) {
495
+ this.replayBuffer.slide();
496
+ }
435
497
  }
436
498
  subscribe() {
437
499
  this.subscriberCount += 1;
@@ -493,6 +555,7 @@ class BoundedPubSubSingleSubscription {
493
555
  }
494
556
  /** @internal */
495
557
  class UnboundedPubSub {
558
+ replayBuffer;
496
559
  publisherHead = {
497
560
  value: AbsentValue,
498
561
  subscribers: 0,
@@ -502,6 +565,12 @@ class UnboundedPubSub {
502
565
  publisherIndex = 0;
503
566
  subscribersIndex = 0;
504
567
  capacity = Number.MAX_SAFE_INTEGER;
568
+ constructor(replayBuffer) {
569
+ this.replayBuffer = replayBuffer;
570
+ }
571
+ replayWindow() {
572
+ return this.replayBuffer ? new ReplayWindowImpl(this.replayBuffer) : emptyReplayWindow;
573
+ }
505
574
  isEmpty() {
506
575
  return this.publisherHead === this.publisherTail;
507
576
  }
@@ -522,6 +591,9 @@ class UnboundedPubSub {
522
591
  this.publisherTail = this.publisherTail.next;
523
592
  this.publisherIndex += 1;
524
593
  }
594
+ if (this.replayBuffer) {
595
+ this.replayBuffer.offer(value);
596
+ }
525
597
  return true;
526
598
  }
527
599
  publishAll(elements) {
@@ -529,6 +601,8 @@ class UnboundedPubSub {
529
601
  for (const a of elements) {
530
602
  this.publish(a);
531
603
  }
604
+ } else if (this.replayBuffer) {
605
+ this.replayBuffer.offerAll(elements);
532
606
  }
533
607
  return Chunk.empty();
534
608
  }
@@ -538,6 +612,9 @@ class UnboundedPubSub {
538
612
  this.publisherHead.value = AbsentValue;
539
613
  this.subscribersIndex += 1;
540
614
  }
615
+ if (this.replayBuffer) {
616
+ this.replayBuffer.slide();
617
+ }
541
618
  }
542
619
  subscribe() {
543
620
  this.publisherTail.subscribers += 1;
@@ -652,8 +729,9 @@ class SubscriptionImpl {
652
729
  shutdownHook;
653
730
  shutdownFlag;
654
731
  strategy;
732
+ replayWindow;
655
733
  [queue.DequeueTypeId] = queue.dequeueVariance;
656
- constructor(pubsub, subscribers, subscription, pollers, shutdownHook, shutdownFlag, strategy) {
734
+ constructor(pubsub, subscribers, subscription, pollers, shutdownHook, shutdownFlag, strategy, replayWindow) {
657
735
  this.pubsub = pubsub;
658
736
  this.subscribers = subscribers;
659
737
  this.subscription = subscription;
@@ -661,6 +739,7 @@ class SubscriptionImpl {
661
739
  this.shutdownHook = shutdownHook;
662
740
  this.shutdownFlag = shutdownFlag;
663
741
  this.strategy = strategy;
742
+ this.replayWindow = replayWindow;
664
743
  }
665
744
  pipe() {
666
745
  return pipeArguments(this, arguments);
@@ -672,16 +751,16 @@ class SubscriptionImpl {
672
751
  return !MutableRef.get(this.shutdownFlag);
673
752
  }
674
753
  get size() {
675
- return core.suspend(() => MutableRef.get(this.shutdownFlag) ? core.interrupt : core.succeed(this.subscription.size()));
754
+ return core.suspend(() => MutableRef.get(this.shutdownFlag) ? core.interrupt : core.succeed(this.subscription.size() + this.replayWindow.remaining));
676
755
  }
677
756
  unsafeSize() {
678
757
  if (MutableRef.get(this.shutdownFlag)) {
679
758
  return Option.none();
680
759
  }
681
- return Option.some(this.subscription.size());
760
+ return Option.some(this.subscription.size() + this.replayWindow.remaining);
682
761
  }
683
762
  get isFull() {
684
- return core.map(this.size, size => size === this.capacity());
763
+ return core.suspend(() => MutableRef.get(this.shutdownFlag) ? core.interrupt : core.succeed(this.subscription.size() === this.capacity()));
685
764
  }
686
765
  get isEmpty() {
687
766
  return core.map(this.size, size => size === 0);
@@ -707,6 +786,10 @@ class SubscriptionImpl {
707
786
  if (MutableRef.get(this.shutdownFlag)) {
708
787
  return core.interrupt;
709
788
  }
789
+ if (this.replayWindow.remaining > 0) {
790
+ const message = this.replayWindow.take();
791
+ return core.succeed(message);
792
+ }
710
793
  const message = MutableQueue.isEmpty(this.pollers) ? this.subscription.poll(MutableQueue.EmptyMutableQueue) : MutableQueue.EmptyMutableQueue;
711
794
  if (message === MutableQueue.EmptyMutableQueue) {
712
795
  const deferred = core.deferredUnsafeMake(state.id());
@@ -729,6 +812,9 @@ class SubscriptionImpl {
729
812
  }
730
813
  const as = MutableQueue.isEmpty(this.pollers) ? unsafePollAllSubscription(this.subscription) : Chunk.empty();
731
814
  this.strategy.unsafeOnPubSubEmptySpace(this.pubsub, this.subscribers);
815
+ if (this.replayWindow.remaining > 0) {
816
+ return core.succeed(Chunk.appendAll(this.replayWindow.takeAll(), as));
817
+ }
732
818
  return core.succeed(as);
733
819
  });
734
820
  }
@@ -737,9 +823,17 @@ class SubscriptionImpl {
737
823
  if (MutableRef.get(this.shutdownFlag)) {
738
824
  return core.interrupt;
739
825
  }
826
+ let replay = undefined;
827
+ if (this.replayWindow.remaining >= max) {
828
+ const as = this.replayWindow.takeN(max);
829
+ return core.succeed(as);
830
+ } else if (this.replayWindow.remaining > 0) {
831
+ replay = this.replayWindow.takeAll();
832
+ max = max - replay.length;
833
+ }
740
834
  const as = MutableQueue.isEmpty(this.pollers) ? unsafePollN(this.subscription, max) : Chunk.empty();
741
835
  this.strategy.unsafeOnPubSubEmptySpace(this.pubsub, this.subscribers);
742
- return core.succeed(as);
836
+ return replay ? core.succeed(Chunk.appendAll(replay, as)) : core.succeed(as);
743
837
  });
744
838
  }
745
839
  takeBetween(min, max) {
@@ -865,9 +959,7 @@ class PubSubImpl {
865
959
  /** @internal */
866
960
  export const makePubSub = (pubsub, strategy) => core.flatMap(fiberRuntime.scopeMake(), scope => core.map(core.deferredMake(), deferred => unsafeMakePubSub(pubsub, new Map(), scope, deferred, MutableRef.make(false), strategy)));
867
961
  /** @internal */
868
- export const unsafeMakePubSub = (pubsub, subscribers, scope, shutdownHook, shutdownFlag, strategy) => {
869
- return new PubSubImpl(pubsub, subscribers, scope, shutdownHook, shutdownFlag, strategy);
870
- };
962
+ export const unsafeMakePubSub = (pubsub, subscribers, scope, shutdownHook, shutdownFlag, strategy) => new PubSubImpl(pubsub, subscribers, scope, shutdownHook, shutdownFlag, strategy);
871
963
  /** @internal */
872
964
  const ensureCapacity = capacity => {
873
965
  if (capacity <= 0) {
@@ -1075,4 +1167,92 @@ const unsafeStrategyCompleteSubscribers = (strategy, pubsub, subscribers) => {
1075
1167
  }
1076
1168
  }
1077
1169
  };
1170
+ class ReplayBuffer {
1171
+ capacity;
1172
+ constructor(capacity) {
1173
+ this.capacity = capacity;
1174
+ }
1175
+ head = {
1176
+ value: AbsentValue,
1177
+ next: null
1178
+ };
1179
+ tail = this.head;
1180
+ size = 0;
1181
+ index = 0;
1182
+ slide() {
1183
+ this.index++;
1184
+ }
1185
+ offer(a) {
1186
+ this.tail.value = a;
1187
+ this.tail.next = {
1188
+ value: AbsentValue,
1189
+ next: null
1190
+ };
1191
+ this.tail = this.tail.next;
1192
+ if (this.size === this.capacity) {
1193
+ this.head = this.head.next;
1194
+ } else {
1195
+ this.size += 1;
1196
+ }
1197
+ }
1198
+ offerAll(as) {
1199
+ for (const a of as) {
1200
+ this.offer(a);
1201
+ }
1202
+ }
1203
+ }
1204
+ class ReplayWindowImpl {
1205
+ buffer;
1206
+ head;
1207
+ index;
1208
+ remaining;
1209
+ constructor(buffer) {
1210
+ this.buffer = buffer;
1211
+ this.index = buffer.index;
1212
+ this.remaining = buffer.size;
1213
+ this.head = buffer.head;
1214
+ }
1215
+ fastForward() {
1216
+ while (this.index < this.buffer.index) {
1217
+ this.head = this.head.next;
1218
+ this.index++;
1219
+ }
1220
+ }
1221
+ take() {
1222
+ if (this.remaining === 0) {
1223
+ return undefined;
1224
+ } else if (this.index < this.buffer.index) {
1225
+ this.fastForward();
1226
+ }
1227
+ this.remaining--;
1228
+ const value = this.head.value;
1229
+ this.head = this.head.next;
1230
+ return value;
1231
+ }
1232
+ takeN(n) {
1233
+ if (this.remaining === 0) {
1234
+ return Chunk.empty();
1235
+ } else if (this.index < this.buffer.index) {
1236
+ this.fastForward();
1237
+ }
1238
+ const len = Math.min(n, this.remaining);
1239
+ const items = new Array(len);
1240
+ for (let i = 0; i < len; i++) {
1241
+ const value = this.head.value;
1242
+ this.head = this.head.next;
1243
+ items[i] = value;
1244
+ }
1245
+ this.remaining -= len;
1246
+ return Chunk.unsafeFromArray(items);
1247
+ }
1248
+ takeAll() {
1249
+ return this.takeN(this.remaining);
1250
+ }
1251
+ }
1252
+ const emptyReplayWindow = {
1253
+ remaining: 0,
1254
+ take: () => undefined,
1255
+ takeN: () => Chunk.empty(),
1256
+ takeAll: () => Chunk.empty()
1257
+ };
1078
1258
  //# sourceMappingURL=pubsub.js.map