@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
package/src/Struct.ts ADDED
@@ -0,0 +1,243 @@
1
+ /**
2
+ * This module provides utility functions for working with structs in TypeScript.
3
+ *
4
+ * @since 2.0.0
5
+ */
6
+
7
+ import * as Equivalence from "./Equivalence.js"
8
+ import { dual } from "./Function.js"
9
+ import * as order from "./Order.js"
10
+ import * as Predicate from "./Predicate.js"
11
+ import type { MatchRecord, Simplify } from "./Types.js"
12
+
13
+ /**
14
+ * Create a new object by picking properties of an existing object.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * import * as assert from "node:assert"
19
+ * import { pipe, Struct } from "effect"
20
+ *
21
+ * assert.deepStrictEqual(pipe({ a: "a", b: 1, c: true }, Struct.pick("a", "b")), { a: "a", b: 1 })
22
+ * assert.deepStrictEqual(Struct.pick({ a: "a", b: 1, c: true }, "a", "b"), { a: "a", b: 1 })
23
+ * ```
24
+ *
25
+ * @since 2.0.0
26
+ */
27
+ export const pick: {
28
+ <Keys extends Array<PropertyKey>>(
29
+ ...keys: Keys
30
+ ): <S extends { [K in Keys[number]]?: any }>(
31
+ s: S
32
+ ) => MatchRecord<S, { [K in Keys[number]]?: S[K] }, Simplify<Pick<S, Keys[number]>>>
33
+ <S extends object, Keys extends Array<keyof S>>(
34
+ s: S,
35
+ ...keys: Keys
36
+ ): MatchRecord<S, { [K in Keys[number]]?: S[K] }, Simplify<Pick<S, Keys[number]>>>
37
+ } = dual(
38
+ (args) => Predicate.isObject(args[0]),
39
+ <S extends object, Keys extends Array<keyof S>>(s: S, ...keys: Keys) => {
40
+ const out: any = {}
41
+ for (const k of keys) {
42
+ if (k in s) {
43
+ out[k] = (s as any)[k]
44
+ }
45
+ }
46
+ return out
47
+ }
48
+ )
49
+
50
+ /**
51
+ * Create a new object by omitting properties of an existing object.
52
+ *
53
+ * @example
54
+ * ```ts
55
+ * import * as assert from "node:assert"
56
+ * import { pipe, Struct } from "effect"
57
+ *
58
+ * assert.deepStrictEqual(pipe({ a: "a", b: 1, c: true }, Struct.omit("c")), { a: "a", b: 1 })
59
+ * assert.deepStrictEqual(Struct.omit({ a: "a", b: 1, c: true }, "c"), { a: "a", b: 1 })
60
+ * ```
61
+ *
62
+ * @since 2.0.0
63
+ */
64
+ export const omit: {
65
+ <Keys extends Array<PropertyKey>>(
66
+ ...keys: Keys
67
+ ): <S extends { [K in Keys[number]]?: any }>(s: S) => Simplify<Omit<S, Keys[number]>>
68
+ <S extends object, Keys extends Array<keyof S>>(
69
+ s: S,
70
+ ...keys: Keys
71
+ ): Simplify<Omit<S, Keys[number]>>
72
+ } = dual(
73
+ (args) => Predicate.isObject(args[0]),
74
+ <S extends object, Keys extends Array<keyof S>>(s: S, ...keys: Keys) => {
75
+ const out: any = { ...s }
76
+ for (const k of keys) {
77
+ delete out[k]
78
+ }
79
+ return out
80
+ }
81
+ )
82
+
83
+ /**
84
+ * Given a struct of `Equivalence`s returns a new `Equivalence` that compares values of a struct
85
+ * by applying each `Equivalence` to the corresponding property of the struct.
86
+ *
87
+ * Alias of {@link Equivalence.struct}.
88
+ *
89
+ * @example
90
+ * ```ts
91
+ * import * as assert from "node:assert"
92
+ * import { Struct, String, Number } from "effect"
93
+ *
94
+ * const PersonEquivalence = Struct.getEquivalence({
95
+ * name: String.Equivalence,
96
+ * age: Number.Equivalence
97
+ * })
98
+ *
99
+ * assert.deepStrictEqual(
100
+ * PersonEquivalence({ name: "John", age: 25 }, { name: "John", age: 25 }),
101
+ * true
102
+ * )
103
+ * assert.deepStrictEqual(
104
+ * PersonEquivalence({ name: "John", age: 25 }, { name: "John", age: 40 }),
105
+ * false
106
+ * )
107
+ * ```
108
+ *
109
+ * @category combinators
110
+ * @since 2.0.0
111
+ */
112
+ export const getEquivalence: <R extends Record<string, Equivalence.Equivalence<any>>>(
113
+ isEquivalents: R
114
+ ) => Equivalence.Equivalence<
115
+ { readonly [K in keyof R]: [R[K]] extends [Equivalence.Equivalence<infer A>] ? A : never }
116
+ > = Equivalence.struct
117
+
118
+ /**
119
+ * This function creates and returns a new `Order` for a struct of values based on the given `Order`s
120
+ * for each property in the struct.
121
+ *
122
+ * Alias of {@link order.struct}.
123
+ *
124
+ * @category combinators
125
+ * @since 2.0.0
126
+ */
127
+ export const getOrder: <R extends { readonly [x: string]: order.Order<any> }>(
128
+ fields: R
129
+ ) => order.Order<{ [K in keyof R]: [R[K]] extends [order.Order<infer A>] ? A : never }> = order.struct
130
+
131
+ type Transformed<O, T> =
132
+ & unknown
133
+ & {
134
+ [K in keyof O]: K extends keyof T ? (T[K] extends (...a: any) => any ? ReturnType<T[K]> : O[K]) : O[K]
135
+ }
136
+ type PartialTransform<O, T> = {
137
+ [K in keyof T]: T[K] extends (a: O[K & keyof O]) => any ? T[K] : (a: O[K & keyof O]) => unknown
138
+ }
139
+ /**
140
+ * Transforms the values of a Struct provided a transformation function for each key.
141
+ * If no transformation function is provided for a key, it will return the original value for that key.
142
+ *
143
+ * @example
144
+ * ```ts
145
+ * import * as assert from "node:assert"
146
+ * import { pipe, Struct } from "effect"
147
+ *
148
+ * assert.deepStrictEqual(
149
+ * pipe(
150
+ * { a: 'a', b: 1, c: 3 },
151
+ * Struct.evolve({
152
+ * a: (a) => a.length,
153
+ * b: (b) => b * 2
154
+ * })
155
+ * ),
156
+ * { a: 1, b: 2, c: 3 }
157
+ * )
158
+ * ```
159
+ *
160
+ * @since 2.0.0
161
+ */
162
+ export const evolve: {
163
+ <O, T>(t: PartialTransform<O, T>): (obj: O) => Transformed<O, T>
164
+ <O, T>(obj: O, t: PartialTransform<O, T>): Transformed<O, T>
165
+ } = dual(
166
+ 2,
167
+ <O, T>(obj: O, t: PartialTransform<O, T>): Transformed<O, T> => {
168
+ const out = { ...obj }
169
+ for (const k in t) {
170
+ if (Object.prototype.hasOwnProperty.call(obj, k)) {
171
+ // @ts-expect-error
172
+ out[k] = t[k](obj[k])
173
+ }
174
+ }
175
+ return out as any
176
+ }
177
+ )
178
+
179
+ /**
180
+ * Retrieves the value associated with the specified key from a struct.
181
+ *
182
+ * @example
183
+ * ```ts
184
+ * import * as assert from "node:assert"
185
+ * import { pipe, Struct } from "effect"
186
+ *
187
+ * const value = pipe({ a: 1, b: 2 }, Struct.get("a"))
188
+ *
189
+ * assert.deepStrictEqual(value, 1)
190
+ * ```
191
+ *
192
+ * @since 2.0.0
193
+ */
194
+ export const get =
195
+ <K extends PropertyKey>(key: K) => <S extends { [P in K]?: any }>(s: S): MatchRecord<S, S[K] | undefined, S[K]> =>
196
+ s[key]
197
+
198
+ /**
199
+ * Retrieves the object keys that are strings in a typed manner
200
+ *
201
+ * @example
202
+ * ```ts
203
+ * import * as assert from "node:assert"
204
+ * import { Struct } from "effect"
205
+ *
206
+ * const symbol: unique symbol = Symbol()
207
+ *
208
+ * const value = {
209
+ * a: 1,
210
+ * b: 2,
211
+ * [symbol]: 3
212
+ * }
213
+ *
214
+ * const keys: Array<"a" | "b"> = Struct.keys(value)
215
+ *
216
+ * assert.deepStrictEqual(keys, ["a", "b"])
217
+ * ```
218
+ *
219
+ * @since 3.6.0
220
+ */
221
+ export const keys = <T extends {}>(o: T): Array<(keyof T) & string> => Object.keys(o) as Array<(keyof T) & string>
222
+
223
+ /**
224
+ * Retrieves the entries (key-value pairs) of an object, where keys are strings,
225
+ * in a type-safe manner. Symbol keys are excluded from the result.
226
+ *
227
+ * @example
228
+ * ```ts
229
+ * import * as assert from "node:assert"
230
+ * import { Struct } from "effect"
231
+ *
232
+ * const c = Symbol("c")
233
+ * const value = { a: "foo", b: 1, [c]: true }
234
+ *
235
+ * const entries: Array<["a" | "b", string | number]> = Struct.entries(value)
236
+ *
237
+ * assert.deepStrictEqual(entries, [["a", "foo"], ["b", 1]])
238
+ * ```
239
+ *
240
+ * @since 3.17.0
241
+ */
242
+ export const entries = <const R>(obj: R): Array<[keyof R & string, R[keyof R & string]]> =>
243
+ Object.entries(obj as any) as any
@@ -0,0 +1,100 @@
1
+ /**
2
+ * @since 2.0.0
3
+ */
4
+ import * as Effect from "./Effect.js"
5
+ import { dual } from "./Function.js"
6
+ import { pipeArguments } from "./Pipeable.js"
7
+ import { hasProperty } from "./Predicate.js"
8
+ import * as Readable from "./Readable.js"
9
+ import * as Stream from "./Stream.js"
10
+ import type { NoInfer } from "./Types.js"
11
+
12
+ /**
13
+ * @since 2.0.0
14
+ * @category type ids
15
+ */
16
+ export const TypeId: unique symbol = Symbol.for("effect/Subscribable")
17
+
18
+ /**
19
+ * @since 2.0.0
20
+ * @category type ids
21
+ */
22
+ export type TypeId = typeof TypeId
23
+
24
+ /**
25
+ * @since 2.0.0
26
+ * @category models
27
+ */
28
+ export interface Subscribable<A, E = never, R = never> extends Readable.Readable<A, E, R> {
29
+ readonly [TypeId]: TypeId
30
+ readonly changes: Stream.Stream<A, E, R>
31
+ }
32
+
33
+ /**
34
+ * @since 2.0.0
35
+ * @category refinements
36
+ */
37
+ export const isSubscribable = (u: unknown): u is Subscribable<unknown, unknown, unknown> => hasProperty(u, TypeId)
38
+
39
+ const Proto: Omit<Subscribable<any>, "get" | "changes"> = {
40
+ [Readable.TypeId]: Readable.TypeId,
41
+ [TypeId]: TypeId,
42
+ pipe() {
43
+ return pipeArguments(this, arguments)
44
+ }
45
+ }
46
+
47
+ /**
48
+ * @since 2.0.0
49
+ * @category constructors
50
+ */
51
+ export const make = <A, E, R>(options: {
52
+ readonly get: Effect.Effect<A, E, R>
53
+ readonly changes: Stream.Stream<A, E, R>
54
+ }): Subscribable<A, E, R> => Object.assign(Object.create(Proto), options)
55
+
56
+ /**
57
+ * @since 2.0.0
58
+ * @category combinators
59
+ */
60
+ export const map: {
61
+ <A, B>(f: (a: NoInfer<A>) => B): <E, R>(fa: Subscribable<A, E, R>) => Subscribable<B, E, R>
62
+ <A, E, R, B>(self: Subscribable<A, E, R>, f: (a: NoInfer<A>) => B): Subscribable<B, E, R>
63
+ } = dual(2, <A, E, R, B>(self: Subscribable<A, E, R>, f: (a: NoInfer<A>) => B): Subscribable<B, E, R> =>
64
+ make({
65
+ get: Effect.map(self.get, f),
66
+ changes: Stream.map(self.changes, f)
67
+ }))
68
+
69
+ /**
70
+ * @since 2.0.0
71
+ * @category combinators
72
+ */
73
+ export const mapEffect: {
74
+ <A, B, E2, R2>(
75
+ f: (a: NoInfer<A>) => Effect.Effect<B, E2, R2>
76
+ ): <E, R>(fa: Subscribable<A, E, R>) => Subscribable<B, E | E2, R | R2>
77
+ <A, E, R, B, E2, R2>(
78
+ self: Subscribable<A, E, R>,
79
+ f: (a: NoInfer<A>) => Effect.Effect<B, E2, R2>
80
+ ): Subscribable<B, E | E2, R | R2>
81
+ } = dual(2, <A, E, R, B, E2, R2>(
82
+ self: Subscribable<A, E, R>,
83
+ f: (a: NoInfer<A>) => Effect.Effect<B, E2, R2>
84
+ ): Subscribable<B, E | E2, R | R2> =>
85
+ make({
86
+ get: Effect.flatMap(self.get, f),
87
+ changes: Stream.mapEffect(self.changes, f)
88
+ }))
89
+
90
+ /**
91
+ * @since 2.0.0
92
+ * @category constructors
93
+ */
94
+ export const unwrap = <A, E, R, E1, R1>(
95
+ effect: Effect.Effect<Subscribable<A, E, R>, E1, R1>
96
+ ): Subscribable<A, E | E1, R | R1> =>
97
+ make({
98
+ get: Effect.flatMap(effect, (s) => s.get),
99
+ changes: Stream.unwrap(Effect.map(effect, (s) => s.changes))
100
+ })
@@ -0,0 +1,298 @@
1
+ /**
2
+ * @since 2.0.0
3
+ */
4
+ import type * as Effect from "./Effect.js"
5
+ import * as internal from "./internal/subscriptionRef.js"
6
+ import type * as Option from "./Option.js"
7
+ import type * as PubSub from "./PubSub.js"
8
+ import * as Ref from "./Ref.js"
9
+ import type * as Stream from "./Stream.js"
10
+ import type { Subscribable } from "./Subscribable.js"
11
+ import * as Synchronized from "./SynchronizedRef.js"
12
+ import type * as Types from "./Types.js"
13
+ import type * as Unify from "./Unify.js"
14
+
15
+ /**
16
+ * @since 2.0.0
17
+ * @category symbols
18
+ */
19
+ export const SubscriptionRefTypeId: unique symbol = internal.SubscriptionRefTypeId
20
+
21
+ /**
22
+ * @since 2.0.0
23
+ * @category symbols
24
+ */
25
+ export type SubscriptionRefTypeId = typeof SubscriptionRefTypeId
26
+
27
+ /**
28
+ * A `SubscriptionRef<A>` is a `Ref` that can be subscribed to in order to
29
+ * receive the current value as well as all changes to the value.
30
+ *
31
+ * @since 2.0.0
32
+ * @category models
33
+ */
34
+ export interface SubscriptionRef<in out A>
35
+ extends SubscriptionRef.Variance<A>, Synchronized.SynchronizedRef<A>, Subscribable<A>
36
+ {
37
+ /** @internal */
38
+ readonly ref: Ref.Ref<A>
39
+ /** @internal */
40
+ readonly pubsub: PubSub.PubSub<A>
41
+ /** @internal */
42
+ readonly semaphore: Effect.Semaphore
43
+ /**
44
+ * A stream containing the current value of the `Ref` as well as all changes
45
+ * to that value.
46
+ */
47
+ readonly changes: Stream.Stream<A>
48
+ readonly [Unify.typeSymbol]?: unknown
49
+ readonly [Unify.unifySymbol]?: SubscriptionRefUnify<this>
50
+ readonly [Unify.ignoreSymbol]?: SubscriptionRefUnifyIgnore
51
+ }
52
+
53
+ /**
54
+ * @category models
55
+ * @since 3.8.0
56
+ */
57
+ export interface SubscriptionRefUnify<A extends { [Unify.typeSymbol]?: any }>
58
+ extends Synchronized.SynchronizedRefUnify<A>
59
+ {
60
+ SubscriptionRef?: () => Extract<A[Unify.typeSymbol], SubscriptionRef<any>>
61
+ }
62
+
63
+ /**
64
+ * @category models
65
+ * @since 3.8.0
66
+ */
67
+ export interface SubscriptionRefUnifyIgnore extends Synchronized.SynchronizedRefUnifyIgnore {
68
+ SynchronizedRef?: true
69
+ }
70
+
71
+ /**
72
+ * @since 2.0.0
73
+ */
74
+ export declare namespace SubscriptionRef {
75
+ /**
76
+ * @since 2.0.0
77
+ * @category models
78
+ */
79
+ export interface Variance<in out A> {
80
+ readonly [SubscriptionRefTypeId]: {
81
+ readonly _A: Types.Invariant<A>
82
+ }
83
+ }
84
+ }
85
+
86
+ /**
87
+ * @since 2.0.0
88
+ * @category getters
89
+ */
90
+ export const get: <A>(self: SubscriptionRef<A>) => Effect.Effect<A> = internal.get
91
+
92
+ /**
93
+ * @since 2.0.0
94
+ * @category utils
95
+ */
96
+ export const getAndSet: {
97
+ <A>(value: A): (self: SubscriptionRef<A>) => Effect.Effect<A>
98
+ <A>(self: SubscriptionRef<A>, value: A): Effect.Effect<A>
99
+ } = Ref.getAndSet
100
+
101
+ /**
102
+ * @since 2.0.0
103
+ * @category utils
104
+ */
105
+ export const getAndUpdate: {
106
+ <A>(f: (a: A) => A): (self: SubscriptionRef<A>) => Effect.Effect<A>
107
+ <A>(self: SubscriptionRef<A>, f: (a: A) => A): Effect.Effect<A>
108
+ } = Ref.getAndUpdate
109
+
110
+ /**
111
+ * @since 2.0.0
112
+ * @category utils
113
+ */
114
+ export const getAndUpdateEffect: {
115
+ <A, R, E>(f: (a: A) => Effect.Effect<A, E, R>): (self: SubscriptionRef<A>) => Effect.Effect<A, E, R>
116
+ <A, R, E>(self: SubscriptionRef<A>, f: (a: A) => Effect.Effect<A, E, R>): Effect.Effect<A, E, R>
117
+ } = Synchronized.getAndUpdateEffect
118
+
119
+ /**
120
+ * @since 2.0.0
121
+ * @category utils
122
+ */
123
+ export const getAndUpdateSome: {
124
+ <A>(pf: (a: A) => Option.Option<A>): (self: SubscriptionRef<A>) => Effect.Effect<A>
125
+ <A>(self: SubscriptionRef<A>, pf: (a: A) => Option.Option<A>): Effect.Effect<A>
126
+ } = Ref.getAndUpdateSome
127
+
128
+ /**
129
+ * @since 2.0.0
130
+ * @category utils
131
+ */
132
+ export const getAndUpdateSomeEffect: {
133
+ <A, R, E>(
134
+ pf: (a: A) => Option.Option<Effect.Effect<A, E, R>>
135
+ ): (self: SubscriptionRef<A>) => Effect.Effect<A, E, R>
136
+ <A, R, E>(
137
+ self: SubscriptionRef<A>,
138
+ pf: (a: A) => Option.Option<Effect.Effect<A, E, R>>
139
+ ): Effect.Effect<A, E, R>
140
+ } = Synchronized.getAndUpdateSomeEffect
141
+
142
+ /**
143
+ * Creates a new `SubscriptionRef` with the specified value.
144
+ *
145
+ * @since 2.0.0
146
+ * @category constructors
147
+ */
148
+ export const make: <A>(value: A) => Effect.Effect<SubscriptionRef<A>> = internal.make
149
+
150
+ /**
151
+ * @since 2.0.0
152
+ * @category utils
153
+ */
154
+ export const modify: {
155
+ <A, B>(f: (a: A) => readonly [B, A]): (self: SubscriptionRef<A>) => Effect.Effect<B>
156
+ <A, B>(self: SubscriptionRef<A>, f: (a: A) => readonly [B, A]): Effect.Effect<B>
157
+ } = internal.modify
158
+
159
+ /**
160
+ * @since 2.0.0
161
+ * @category utils
162
+ */
163
+ export const modifyEffect: {
164
+ <B, A, E, R>(f: (a: A) => Effect.Effect<readonly [B, A], E, R>): (self: SubscriptionRef<A>) => Effect.Effect<B, E, R>
165
+ <A, B, E, R>(self: SubscriptionRef<A>, f: (a: A) => Effect.Effect<readonly [B, A], E, R>): Effect.Effect<B, E, R>
166
+ } = internal.modifyEffect
167
+
168
+ /**
169
+ * @since 2.0.0
170
+ * @category utils
171
+ */
172
+ export const modifySome: {
173
+ <B, A>(
174
+ fallback: B,
175
+ pf: (a: A) => Option.Option<readonly [B, A]>
176
+ ): (self: SubscriptionRef<A>) => Effect.Effect<B>
177
+ <A, B>(
178
+ self: SubscriptionRef<A>,
179
+ fallback: B,
180
+ pf: (a: A) => Option.Option<readonly [B, A]>
181
+ ): Effect.Effect<B>
182
+ } = Ref.modifySome
183
+
184
+ /**
185
+ * @since 2.0.0
186
+ * @category utils
187
+ */
188
+ export const modifySomeEffect: {
189
+ <A, B, R, E>(
190
+ fallback: B,
191
+ pf: (a: A) => Option.Option<Effect.Effect<readonly [B, A], E, R>>
192
+ ): (self: Synchronized.SynchronizedRef<A>) => Effect.Effect<B, E, R>
193
+ <A, B, R, E>(
194
+ self: Synchronized.SynchronizedRef<A>,
195
+ fallback: B,
196
+ pf: (a: A) => Option.Option<Effect.Effect<readonly [B, A], E, R>>
197
+ ): Effect.Effect<B, E, R>
198
+ } = Synchronized.modifySomeEffect
199
+
200
+ /**
201
+ * @since 2.0.0
202
+ * @category utils
203
+ */
204
+ export const set: {
205
+ <A>(value: A): (self: SubscriptionRef<A>) => Effect.Effect<void>
206
+ <A>(self: SubscriptionRef<A>, value: A): Effect.Effect<void>
207
+ } = internal.set
208
+
209
+ /**
210
+ * @since 2.0.0
211
+ * @category utils
212
+ */
213
+ export const setAndGet: {
214
+ <A>(value: A): (self: SubscriptionRef<A>) => Effect.Effect<A>
215
+ <A>(self: SubscriptionRef<A>, value: A): Effect.Effect<A>
216
+ } = Ref.setAndGet
217
+
218
+ /**
219
+ * @since 2.0.0
220
+ * @category utils
221
+ */
222
+ export const update: {
223
+ <A>(f: (a: A) => A): (self: SubscriptionRef<A>) => Effect.Effect<void>
224
+ <A>(self: SubscriptionRef<A>, f: (a: A) => A): Effect.Effect<void>
225
+ } = Ref.update
226
+
227
+ /**
228
+ * @since 2.0.0
229
+ * @category utils
230
+ */
231
+ export const updateEffect: {
232
+ <A, R, E>(f: (a: A) => Effect.Effect<A, E, R>): (self: Synchronized.SynchronizedRef<A>) => Effect.Effect<void, E, R>
233
+ <A, R, E>(self: Synchronized.SynchronizedRef<A>, f: (a: A) => Effect.Effect<A, E, R>): Effect.Effect<void, E, R>
234
+ } = Synchronized.updateEffect
235
+
236
+ /**
237
+ * @since 2.0.0
238
+ * @category utils
239
+ */
240
+ export const updateAndGet: {
241
+ <A>(f: (a: A) => A): (self: SubscriptionRef<A>) => Effect.Effect<A>
242
+ <A>(self: SubscriptionRef<A>, f: (a: A) => A): Effect.Effect<A>
243
+ } = Ref.updateAndGet
244
+
245
+ /**
246
+ * @since 2.0.0
247
+ * @category utils
248
+ */
249
+ export const updateAndGetEffect: {
250
+ <A, R, E>(f: (a: A) => Effect.Effect<A, E, R>): (self: SubscriptionRef<A>) => Effect.Effect<A, E, R>
251
+ <A, R, E>(self: SubscriptionRef<A>, f: (a: A) => Effect.Effect<A, E, R>): Effect.Effect<A, E, R>
252
+ } = Synchronized.updateAndGetEffect
253
+
254
+ /**
255
+ * @since 2.0.0
256
+ * @category utils
257
+ */
258
+ export const updateSome: {
259
+ <A>(f: (a: A) => Option.Option<A>): (self: SubscriptionRef<A>) => Effect.Effect<void>
260
+ <A>(self: SubscriptionRef<A>, f: (a: A) => Option.Option<A>): Effect.Effect<void>
261
+ } = Ref.updateSome
262
+
263
+ /**
264
+ * @since 2.0.0
265
+ * @category utils
266
+ */
267
+ export const updateSomeEffect: {
268
+ <A, R, E>(
269
+ pf: (a: A) => Option.Option<Effect.Effect<A, E, R>>
270
+ ): (self: Synchronized.SynchronizedRef<A>) => Effect.Effect<void, E, R>
271
+ <A, R, E>(
272
+ self: Synchronized.SynchronizedRef<A>,
273
+ pf: (a: A) => Option.Option<Effect.Effect<A, E, R>>
274
+ ): Effect.Effect<void, E, R>
275
+ } = Synchronized.updateSomeEffect
276
+
277
+ /**
278
+ * @since 2.0.0
279
+ * @category utils
280
+ */
281
+ export const updateSomeAndGet: {
282
+ <A>(pf: (a: A) => Option.Option<A>): (self: SubscriptionRef<A>) => Effect.Effect<A>
283
+ <A>(self: SubscriptionRef<A>, pf: (a: A) => Option.Option<A>): Effect.Effect<A>
284
+ } = Ref.updateSomeAndGet
285
+
286
+ /**
287
+ * @since 2.0.0
288
+ * @category utils
289
+ */
290
+ export const updateSomeAndGetEffect: {
291
+ <A, R, E>(
292
+ pf: (a: A) => Option.Option<Effect.Effect<A, E, R>>
293
+ ): (self: SubscriptionRef<A>) => Effect.Effect<A, E, R>
294
+ <A, R, E>(
295
+ self: SubscriptionRef<A>,
296
+ pf: (a: A) => Option.Option<Effect.Effect<A, E, R>>
297
+ ): Effect.Effect<A, E, R>
298
+ } = Synchronized.updateSomeAndGetEffect