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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (452) hide show
  1. package/SourceLocation/package.json +6 -0
  2. package/dist/cjs/Effect.js +2 -28
  3. package/dist/cjs/Effect.js.map +1 -1
  4. package/dist/cjs/FiberRef.js +12 -1
  5. package/dist/cjs/FiberRef.js.map +1 -1
  6. package/dist/cjs/Layer.js +2 -24
  7. package/dist/cjs/Layer.js.map +1 -1
  8. package/dist/cjs/RuntimeFlags.js +1 -29
  9. package/dist/cjs/RuntimeFlags.js.map +1 -1
  10. package/dist/cjs/SourceLocation.js +60 -0
  11. package/dist/cjs/SourceLocation.js.map +1 -0
  12. package/dist/cjs/Tracer.js +1 -15
  13. package/dist/cjs/Tracer.js.map +1 -1
  14. package/dist/cjs/Utils.js +1 -1
  15. package/dist/cjs/Utils.js.map +1 -1
  16. package/dist/cjs/index.js +3 -1
  17. package/dist/cjs/index.js.map +1 -1
  18. package/dist/cjs/internal/clock.js +1 -1
  19. package/dist/cjs/internal/clock.js.map +1 -1
  20. package/dist/cjs/internal/core.js +17 -50
  21. package/dist/cjs/internal/core.js.map +1 -1
  22. package/dist/cjs/internal/effect/circular.js +18 -30
  23. package/dist/cjs/internal/effect/circular.js.map +1 -1
  24. package/dist/cjs/internal/fiberRuntime.js +16 -65
  25. package/dist/cjs/internal/fiberRuntime.js.map +1 -1
  26. package/dist/cjs/internal/layer/circular.js +1 -5
  27. package/dist/cjs/internal/layer/circular.js.map +1 -1
  28. package/dist/cjs/internal/layer.js +1 -3
  29. package/dist/cjs/internal/layer.js.map +1 -1
  30. package/dist/cjs/internal/logger.js +25 -2
  31. package/dist/cjs/internal/logger.js.map +1 -1
  32. package/dist/cjs/internal/runtimeFlags.js +2 -11
  33. package/dist/cjs/internal/runtimeFlags.js.map +1 -1
  34. package/dist/cjs/internal/tracer.js +1 -114
  35. package/dist/cjs/internal/tracer.js.map +1 -1
  36. package/dist/dts/Config.d.ts +2 -2
  37. package/dist/dts/Config.d.ts.map +1 -1
  38. package/dist/dts/Effect.d.ts +8 -29
  39. package/dist/dts/Effect.d.ts.map +1 -1
  40. package/dist/dts/FiberRef.d.ts +12 -0
  41. package/dist/dts/FiberRef.d.ts.map +1 -1
  42. package/dist/dts/Layer.d.ts +0 -22
  43. package/dist/dts/Layer.d.ts.map +1 -1
  44. package/dist/dts/RuntimeFlags.d.ts +0 -28
  45. package/dist/dts/RuntimeFlags.d.ts.map +1 -1
  46. package/dist/dts/SourceLocation.d.ts +88 -0
  47. package/dist/dts/SourceLocation.d.ts.map +1 -0
  48. package/dist/dts/Tracer.d.ts +0 -15
  49. package/dist/dts/Tracer.d.ts.map +1 -1
  50. package/dist/dts/index.d.ts +6 -0
  51. package/dist/dts/index.d.ts.map +1 -1
  52. package/dist/dts/internal/core.d.ts.map +1 -1
  53. package/dist/dts/internal/layer.d.ts.map +1 -1
  54. package/dist/dts/internal/runtimeFlags.d.ts.map +1 -1
  55. package/dist/esm/Effect.js +0 -26
  56. package/dist/esm/Effect.js.map +1 -1
  57. package/dist/esm/FiberRef.js +11 -0
  58. package/dist/esm/FiberRef.js.map +1 -1
  59. package/dist/esm/Layer.js +0 -22
  60. package/dist/esm/Layer.js.map +1 -1
  61. package/dist/esm/RuntimeFlags.js +0 -28
  62. package/dist/esm/RuntimeFlags.js.map +1 -1
  63. package/dist/esm/SourceLocation.js +51 -0
  64. package/dist/esm/SourceLocation.js.map +1 -0
  65. package/dist/esm/Tracer.js +0 -14
  66. package/dist/esm/Tracer.js.map +1 -1
  67. package/dist/esm/Utils.js +1 -1
  68. package/dist/esm/Utils.js.map +1 -1
  69. package/dist/esm/index.js +6 -0
  70. package/dist/esm/index.js.map +1 -1
  71. package/dist/esm/internal/clock.js +1 -1
  72. package/dist/esm/internal/clock.js.map +1 -1
  73. package/dist/esm/internal/core.js +12 -45
  74. package/dist/esm/internal/core.js.map +1 -1
  75. package/dist/esm/internal/effect/circular.js +18 -30
  76. package/dist/esm/internal/effect/circular.js.map +1 -1
  77. package/dist/esm/internal/fiberRuntime.js +13 -60
  78. package/dist/esm/internal/fiberRuntime.js.map +1 -1
  79. package/dist/esm/internal/layer/circular.js +0 -4
  80. package/dist/esm/internal/layer/circular.js.map +1 -1
  81. package/dist/esm/internal/layer.js +0 -2
  82. package/dist/esm/internal/layer.js.map +1 -1
  83. package/dist/esm/internal/logger.js +25 -2
  84. package/dist/esm/internal/logger.js.map +1 -1
  85. package/dist/esm/internal/runtimeFlags.js +1 -9
  86. package/dist/esm/internal/runtimeFlags.js.map +1 -1
  87. package/dist/esm/internal/tracer.js +0 -111
  88. package/dist/esm/internal/tracer.js.map +1 -1
  89. package/package.json +12 -1
  90. package/src/Arbitrary.ts +1101 -0
  91. package/src/Array.ts +3589 -0
  92. package/src/BigDecimal.ts +1349 -0
  93. package/src/BigInt.ts +643 -0
  94. package/src/Boolean.ts +287 -0
  95. package/src/Brand.ts +360 -0
  96. package/src/Cache.ts +281 -0
  97. package/src/Cause.ts +1555 -0
  98. package/src/Channel.ts +2355 -0
  99. package/src/ChildExecutorDecision.ts +146 -0
  100. package/src/Chunk.ts +1495 -0
  101. package/src/Clock.ts +111 -0
  102. package/src/Config.ts +542 -0
  103. package/src/ConfigError.ts +270 -0
  104. package/src/ConfigProvider.ts +333 -0
  105. package/src/ConfigProviderPathPatch.ts +100 -0
  106. package/src/Console.ts +226 -0
  107. package/src/Context.ts +585 -0
  108. package/src/Cron.ts +706 -0
  109. package/src/Data.ts +596 -0
  110. package/src/DateTime.ts +1686 -0
  111. package/src/DefaultServices.ts +34 -0
  112. package/src/Deferred.ts +301 -0
  113. package/src/Differ.ts +450 -0
  114. package/src/Duration.ts +1000 -0
  115. package/src/Effect.ts +14817 -0
  116. package/src/Effectable.ts +107 -0
  117. package/src/Either.ts +1040 -0
  118. package/src/Encoding.ts +195 -0
  119. package/src/Equal.ts +98 -0
  120. package/src/Equivalence.ts +235 -0
  121. package/src/ExecutionPlan.ts +308 -0
  122. package/src/ExecutionStrategy.ts +119 -0
  123. package/src/Exit.ts +467 -0
  124. package/src/FastCheck.ts +9 -0
  125. package/src/Fiber.ts +744 -0
  126. package/src/FiberHandle.ts +540 -0
  127. package/src/FiberId.ts +195 -0
  128. package/src/FiberMap.ts +656 -0
  129. package/src/FiberRef.ts +444 -0
  130. package/src/FiberRefs.ts +204 -0
  131. package/src/FiberRefsPatch.ts +105 -0
  132. package/src/FiberSet.ts +491 -0
  133. package/src/FiberStatus.ts +108 -0
  134. package/src/Function.ts +1222 -0
  135. package/src/GlobalValue.ts +53 -0
  136. package/src/Graph.ts +3732 -0
  137. package/src/GroupBy.ts +103 -0
  138. package/src/HKT.ts +45 -0
  139. package/src/Hash.ts +195 -0
  140. package/src/HashMap.ts +519 -0
  141. package/src/HashRing.ts +317 -0
  142. package/src/HashSet.ts +2346 -0
  143. package/src/Inspectable.ts +287 -0
  144. package/src/Iterable.ts +1119 -0
  145. package/src/JSONSchema.ts +1044 -0
  146. package/src/KeyedPool.ts +167 -0
  147. package/src/Layer.ts +1228 -0
  148. package/src/LayerMap.ts +436 -0
  149. package/src/List.ts +977 -0
  150. package/src/LogLevel.ts +285 -0
  151. package/src/LogSpan.ts +25 -0
  152. package/src/Logger.ts +702 -0
  153. package/src/Mailbox.ts +268 -0
  154. package/src/ManagedRuntime.ts +180 -0
  155. package/src/Match.ts +1477 -0
  156. package/src/MergeDecision.ts +95 -0
  157. package/src/MergeState.ts +172 -0
  158. package/src/MergeStrategy.ts +107 -0
  159. package/src/Metric.ts +780 -0
  160. package/src/MetricBoundaries.ts +69 -0
  161. package/src/MetricHook.ts +151 -0
  162. package/src/MetricKey.ts +224 -0
  163. package/src/MetricKeyType.ts +262 -0
  164. package/src/MetricLabel.ts +47 -0
  165. package/src/MetricPair.ts +71 -0
  166. package/src/MetricPolling.ts +148 -0
  167. package/src/MetricRegistry.ts +48 -0
  168. package/src/MetricState.ts +257 -0
  169. package/src/Micro.ts +4405 -0
  170. package/src/ModuleVersion.ts +18 -0
  171. package/src/MutableHashMap.ts +411 -0
  172. package/src/MutableHashSet.ts +706 -0
  173. package/src/MutableList.ts +297 -0
  174. package/src/MutableQueue.ts +227 -0
  175. package/src/MutableRef.ts +202 -0
  176. package/src/NonEmptyIterable.ts +32 -0
  177. package/src/Number.ts +1071 -0
  178. package/src/Option.ts +2170 -0
  179. package/src/Order.ts +373 -0
  180. package/src/Ordering.ts +111 -0
  181. package/src/ParseResult.ts +2031 -0
  182. package/src/PartitionedSemaphore.ts +200 -0
  183. package/src/Pipeable.ts +566 -0
  184. package/src/Pool.ts +204 -0
  185. package/src/Predicate.ts +1405 -0
  186. package/src/Pretty.ts +205 -0
  187. package/src/PrimaryKey.ts +23 -0
  188. package/src/PubSub.ts +182 -0
  189. package/src/Queue.ts +644 -0
  190. package/src/Random.ts +204 -0
  191. package/src/RateLimiter.ts +138 -0
  192. package/src/RcMap.ts +141 -0
  193. package/src/RcRef.ts +122 -0
  194. package/src/Readable.ts +93 -0
  195. package/src/Record.ts +1274 -0
  196. package/src/RedBlackTree.ts +421 -0
  197. package/src/Redacted.ts +144 -0
  198. package/src/Ref.ts +180 -0
  199. package/src/RegExp.ts +38 -0
  200. package/src/Reloadable.ts +127 -0
  201. package/src/Request.ts +347 -0
  202. package/src/RequestBlock.ts +118 -0
  203. package/src/RequestResolver.ts +366 -0
  204. package/src/Resource.ts +119 -0
  205. package/src/Runtime.ts +383 -0
  206. package/src/RuntimeFlags.ts +336 -0
  207. package/src/RuntimeFlagsPatch.ts +183 -0
  208. package/src/STM.ts +2045 -0
  209. package/src/Schedule.ts +2219 -0
  210. package/src/ScheduleDecision.ts +62 -0
  211. package/src/ScheduleInterval.ts +151 -0
  212. package/src/ScheduleIntervals.ts +122 -0
  213. package/src/Scheduler.ts +353 -0
  214. package/src/Schema.ts +10914 -0
  215. package/src/SchemaAST.ts +3043 -0
  216. package/src/Scope.ts +204 -0
  217. package/src/ScopedCache.ts +151 -0
  218. package/src/ScopedRef.ts +117 -0
  219. package/src/Secret.ts +88 -0
  220. package/src/SingleProducerAsyncInput.ts +67 -0
  221. package/src/Sink.ts +1461 -0
  222. package/src/SortedMap.ts +287 -0
  223. package/src/SortedSet.ts +390 -0
  224. package/src/SourceLocation.ts +108 -0
  225. package/src/Stream.ts +6468 -0
  226. package/src/StreamEmit.ts +136 -0
  227. package/src/StreamHaltStrategy.ts +123 -0
  228. package/src/Streamable.ts +45 -0
  229. package/src/String.ts +778 -0
  230. package/src/Struct.ts +243 -0
  231. package/src/Subscribable.ts +100 -0
  232. package/src/SubscriptionRef.ts +298 -0
  233. package/src/Supervisor.ts +240 -0
  234. package/src/Symbol.ts +29 -0
  235. package/src/SynchronizedRef.ts +270 -0
  236. package/src/TArray.ts +495 -0
  237. package/src/TDeferred.ts +100 -0
  238. package/src/TMap.ts +515 -0
  239. package/src/TPriorityQueue.ts +223 -0
  240. package/src/TPubSub.ts +200 -0
  241. package/src/TQueue.ts +432 -0
  242. package/src/TRandom.ts +129 -0
  243. package/src/TReentrantLock.ts +224 -0
  244. package/src/TRef.ts +178 -0
  245. package/src/TSemaphore.ts +129 -0
  246. package/src/TSet.ts +365 -0
  247. package/src/TSubscriptionRef.ts +192 -0
  248. package/src/Take.ts +258 -0
  249. package/src/TestAnnotation.ts +158 -0
  250. package/src/TestAnnotationMap.ts +119 -0
  251. package/src/TestAnnotations.ts +117 -0
  252. package/src/TestClock.ts +556 -0
  253. package/src/TestConfig.ts +47 -0
  254. package/src/TestContext.ts +36 -0
  255. package/src/TestLive.ts +53 -0
  256. package/src/TestServices.ts +390 -0
  257. package/src/TestSized.ts +55 -0
  258. package/src/Tracer.ts +182 -0
  259. package/src/Trie.ts +840 -0
  260. package/src/Tuple.ts +305 -0
  261. package/src/Types.ts +353 -0
  262. package/src/Unify.ts +113 -0
  263. package/src/UpstreamPullRequest.ts +117 -0
  264. package/src/UpstreamPullStrategy.ts +121 -0
  265. package/src/Utils.ts +809 -0
  266. package/src/index.ts +1568 -0
  267. package/src/internal/array.ts +8 -0
  268. package/src/internal/blockedRequests.ts +520 -0
  269. package/src/internal/cache.ts +733 -0
  270. package/src/internal/cause.ts +1050 -0
  271. package/src/internal/channel/channelExecutor.ts +1200 -0
  272. package/src/internal/channel/channelState.ts +134 -0
  273. package/src/internal/channel/childExecutorDecision.ts +96 -0
  274. package/src/internal/channel/continuation.ts +200 -0
  275. package/src/internal/channel/mergeDecision.ts +113 -0
  276. package/src/internal/channel/mergeState.ts +120 -0
  277. package/src/internal/channel/mergeStrategy.ts +72 -0
  278. package/src/internal/channel/singleProducerAsyncInput.ts +259 -0
  279. package/src/internal/channel/subexecutor.ts +229 -0
  280. package/src/internal/channel/upstreamPullRequest.ts +84 -0
  281. package/src/internal/channel/upstreamPullStrategy.ts +87 -0
  282. package/src/internal/channel.ts +2603 -0
  283. package/src/internal/clock.ts +95 -0
  284. package/src/internal/completedRequestMap.ts +9 -0
  285. package/src/internal/concurrency.ts +54 -0
  286. package/src/internal/config.ts +716 -0
  287. package/src/internal/configError.ts +304 -0
  288. package/src/internal/configProvider/pathPatch.ts +97 -0
  289. package/src/internal/configProvider.ts +799 -0
  290. package/src/internal/console.ts +153 -0
  291. package/src/internal/context.ts +337 -0
  292. package/src/internal/core-effect.ts +2293 -0
  293. package/src/internal/core-stream.ts +998 -0
  294. package/src/internal/core.ts +3189 -0
  295. package/src/internal/data.ts +36 -0
  296. package/src/internal/dataSource.ts +327 -0
  297. package/src/internal/dateTime.ts +1277 -0
  298. package/src/internal/defaultServices/console.ts +100 -0
  299. package/src/internal/defaultServices.ts +163 -0
  300. package/src/internal/deferred.ts +46 -0
  301. package/src/internal/differ/chunkPatch.ts +211 -0
  302. package/src/internal/differ/contextPatch.ts +232 -0
  303. package/src/internal/differ/hashMapPatch.ts +220 -0
  304. package/src/internal/differ/hashSetPatch.ts +176 -0
  305. package/src/internal/differ/orPatch.ts +311 -0
  306. package/src/internal/differ/readonlyArrayPatch.ts +210 -0
  307. package/src/internal/differ.ts +200 -0
  308. package/src/internal/doNotation.ts +80 -0
  309. package/src/internal/effect/circular.ts +895 -0
  310. package/src/internal/effectable.ts +131 -0
  311. package/src/internal/either.ts +110 -0
  312. package/src/internal/encoding/base64.ts +286 -0
  313. package/src/internal/encoding/base64Url.ts +29 -0
  314. package/src/internal/encoding/common.ts +51 -0
  315. package/src/internal/encoding/hex.ts +315 -0
  316. package/src/internal/errors.ts +7 -0
  317. package/src/internal/executionPlan.ts +114 -0
  318. package/src/internal/executionStrategy.ts +74 -0
  319. package/src/internal/fiber.ts +388 -0
  320. package/src/internal/fiberId.ts +267 -0
  321. package/src/internal/fiberMessage.ts +82 -0
  322. package/src/internal/fiberRefs/patch.ts +144 -0
  323. package/src/internal/fiberRefs.ts +297 -0
  324. package/src/internal/fiberRuntime.ts +3842 -0
  325. package/src/internal/fiberScope.ts +71 -0
  326. package/src/internal/fiberStatus.ts +119 -0
  327. package/src/internal/groupBy.ts +530 -0
  328. package/src/internal/hashMap/array.ts +49 -0
  329. package/src/internal/hashMap/bitwise.ts +32 -0
  330. package/src/internal/hashMap/config.ts +14 -0
  331. package/src/internal/hashMap/keySet.ts +8 -0
  332. package/src/internal/hashMap/node.ts +391 -0
  333. package/src/internal/hashMap.ts +586 -0
  334. package/src/internal/hashSet.ts +323 -0
  335. package/src/internal/keyedPool.ts +244 -0
  336. package/src/internal/layer/circular.ts +214 -0
  337. package/src/internal/layer.ts +1483 -0
  338. package/src/internal/logSpan.ts +20 -0
  339. package/src/internal/logger-circular.ts +24 -0
  340. package/src/internal/logger.ts +522 -0
  341. package/src/internal/mailbox.ts +561 -0
  342. package/src/internal/managedRuntime/circular.ts +6 -0
  343. package/src/internal/managedRuntime.ts +134 -0
  344. package/src/internal/matcher.ts +652 -0
  345. package/src/internal/metric/boundaries.ts +75 -0
  346. package/src/internal/metric/hook.ts +483 -0
  347. package/src/internal/metric/key.ts +167 -0
  348. package/src/internal/metric/keyType.ts +238 -0
  349. package/src/internal/metric/label.ts +41 -0
  350. package/src/internal/metric/pair.ts +48 -0
  351. package/src/internal/metric/polling.ts +149 -0
  352. package/src/internal/metric/registry.ts +187 -0
  353. package/src/internal/metric/state.ts +290 -0
  354. package/src/internal/metric.ts +577 -0
  355. package/src/internal/opCodes/cause.ts +35 -0
  356. package/src/internal/opCodes/channel.ts +83 -0
  357. package/src/internal/opCodes/channelChildExecutorDecision.ts +17 -0
  358. package/src/internal/opCodes/channelMergeDecision.ts +11 -0
  359. package/src/internal/opCodes/channelMergeState.ts +17 -0
  360. package/src/internal/opCodes/channelMergeStrategy.ts +11 -0
  361. package/src/internal/opCodes/channelState.ts +23 -0
  362. package/src/internal/opCodes/channelUpstreamPullRequest.ts +11 -0
  363. package/src/internal/opCodes/channelUpstreamPullStrategy.ts +11 -0
  364. package/src/internal/opCodes/config.ts +65 -0
  365. package/src/internal/opCodes/configError.ts +35 -0
  366. package/src/internal/opCodes/continuation.ts +11 -0
  367. package/src/internal/opCodes/deferred.ts +11 -0
  368. package/src/internal/opCodes/effect.ts +89 -0
  369. package/src/internal/opCodes/layer.ts +59 -0
  370. package/src/internal/opCodes/streamHaltStrategy.ts +23 -0
  371. package/src/internal/option.ts +80 -0
  372. package/src/internal/pool.ts +432 -0
  373. package/src/internal/pubsub.ts +1762 -0
  374. package/src/internal/query.ts +204 -0
  375. package/src/internal/queue.ts +766 -0
  376. package/src/internal/random.ts +161 -0
  377. package/src/internal/rateLimiter.ts +93 -0
  378. package/src/internal/rcMap.ts +285 -0
  379. package/src/internal/rcRef.ts +192 -0
  380. package/src/internal/redBlackTree/iterator.ts +200 -0
  381. package/src/internal/redBlackTree/node.ts +68 -0
  382. package/src/internal/redBlackTree.ts +1245 -0
  383. package/src/internal/redacted.ts +73 -0
  384. package/src/internal/ref.ts +171 -0
  385. package/src/internal/reloadable.ts +140 -0
  386. package/src/internal/request.ts +177 -0
  387. package/src/internal/resource.ts +76 -0
  388. package/src/internal/ringBuffer.ts +68 -0
  389. package/src/internal/runtime.ts +558 -0
  390. package/src/internal/runtimeFlags.ts +178 -0
  391. package/src/internal/runtimeFlagsPatch.ts +103 -0
  392. package/src/internal/schedule/decision.ts +47 -0
  393. package/src/internal/schedule/interval.ts +101 -0
  394. package/src/internal/schedule/intervals.ts +180 -0
  395. package/src/internal/schedule.ts +2199 -0
  396. package/src/internal/schema/errors.ts +191 -0
  397. package/src/internal/schema/schemaId.ts +106 -0
  398. package/src/internal/schema/util.ts +50 -0
  399. package/src/internal/scopedCache.ts +644 -0
  400. package/src/internal/scopedRef.ts +118 -0
  401. package/src/internal/secret.ts +89 -0
  402. package/src/internal/singleShotGen.ts +35 -0
  403. package/src/internal/sink.ts +2120 -0
  404. package/src/internal/stack.ts +10 -0
  405. package/src/internal/stm/core.ts +817 -0
  406. package/src/internal/stm/entry.ts +59 -0
  407. package/src/internal/stm/journal.ts +123 -0
  408. package/src/internal/stm/opCodes/stm.ts +71 -0
  409. package/src/internal/stm/opCodes/stmState.ts +17 -0
  410. package/src/internal/stm/opCodes/strategy.ts +17 -0
  411. package/src/internal/stm/opCodes/tExit.ts +29 -0
  412. package/src/internal/stm/opCodes/tryCommit.ts +11 -0
  413. package/src/internal/stm/stm.ts +1453 -0
  414. package/src/internal/stm/stmState.ts +136 -0
  415. package/src/internal/stm/tArray.ts +550 -0
  416. package/src/internal/stm/tDeferred.ts +81 -0
  417. package/src/internal/stm/tExit.ts +190 -0
  418. package/src/internal/stm/tMap.ts +824 -0
  419. package/src/internal/stm/tPriorityQueue.ts +267 -0
  420. package/src/internal/stm/tPubSub.ts +551 -0
  421. package/src/internal/stm/tQueue.ts +393 -0
  422. package/src/internal/stm/tRandom.ts +140 -0
  423. package/src/internal/stm/tReentrantLock.ts +352 -0
  424. package/src/internal/stm/tRef.ts +195 -0
  425. package/src/internal/stm/tSemaphore.ts +113 -0
  426. package/src/internal/stm/tSet.ts +259 -0
  427. package/src/internal/stm/tSubscriptionRef.ts +286 -0
  428. package/src/internal/stm/tryCommit.ts +34 -0
  429. package/src/internal/stm/txnId.ts +14 -0
  430. package/src/internal/stm/versioned.ts +4 -0
  431. package/src/internal/stream/debounceState.ts +57 -0
  432. package/src/internal/stream/emit.ts +123 -0
  433. package/src/internal/stream/haltStrategy.ts +94 -0
  434. package/src/internal/stream/handoff.ts +187 -0
  435. package/src/internal/stream/handoffSignal.ts +59 -0
  436. package/src/internal/stream/pull.ts +34 -0
  437. package/src/internal/stream/sinkEndReason.ts +30 -0
  438. package/src/internal/stream/zipAllState.ts +88 -0
  439. package/src/internal/stream/zipChunksState.ts +56 -0
  440. package/src/internal/stream.ts +8801 -0
  441. package/src/internal/string-utils.ts +107 -0
  442. package/src/internal/subscriptionRef.ts +138 -0
  443. package/src/internal/supervisor/patch.ts +190 -0
  444. package/src/internal/supervisor.ts +303 -0
  445. package/src/internal/synchronizedRef.ts +114 -0
  446. package/src/internal/take.ts +199 -0
  447. package/src/internal/testing/sleep.ts +27 -0
  448. package/src/internal/testing/suspendedWarningData.ts +85 -0
  449. package/src/internal/testing/warningData.ts +94 -0
  450. package/src/internal/tracer.ts +150 -0
  451. package/src/internal/trie.ts +722 -0
  452. package/src/internal/version.ts +7 -0
@@ -0,0 +1,167 @@
1
+ import * as Arr from "../../Array.js"
2
+ import type * as Duration from "../../Duration.js"
3
+ import * as Equal from "../../Equal.js"
4
+ import { dual, pipe } from "../../Function.js"
5
+ import * as Hash from "../../Hash.js"
6
+ import type * as MetricBoundaries from "../../MetricBoundaries.js"
7
+ import type * as MetricKey from "../../MetricKey.js"
8
+ import type * as MetricKeyType from "../../MetricKeyType.js"
9
+ import type * as MetricLabel from "../../MetricLabel.js"
10
+ import * as Option from "../../Option.js"
11
+ import { pipeArguments } from "../../Pipeable.js"
12
+ import { hasProperty } from "../../Predicate.js"
13
+ import * as metricKeyType from "./keyType.js"
14
+ import * as metricLabel from "./label.js"
15
+
16
+ /** @internal */
17
+ const MetricKeySymbolKey = "effect/MetricKey"
18
+
19
+ /** @internal */
20
+ export const MetricKeyTypeId: MetricKey.MetricKeyTypeId = Symbol.for(
21
+ MetricKeySymbolKey
22
+ ) as MetricKey.MetricKeyTypeId
23
+
24
+ const metricKeyVariance = {
25
+ /* c8 ignore next */
26
+ _Type: (_: never) => _
27
+ }
28
+
29
+ const arrayEquivilence = Arr.getEquivalence(Equal.equals)
30
+
31
+ /** @internal */
32
+ class MetricKeyImpl<out Type extends MetricKeyType.MetricKeyType<any, any>> implements MetricKey.MetricKey<Type> {
33
+ readonly [MetricKeyTypeId] = metricKeyVariance
34
+ constructor(
35
+ readonly name: string,
36
+ readonly keyType: Type,
37
+ readonly description: Option.Option<string>,
38
+ readonly tags: ReadonlyArray<MetricLabel.MetricLabel> = []
39
+ ) {
40
+ this._hash = pipe(
41
+ Hash.string(this.name + this.description),
42
+ Hash.combine(Hash.hash(this.keyType)),
43
+ Hash.combine(Hash.array(this.tags))
44
+ )
45
+ }
46
+ readonly _hash: number;
47
+ [Hash.symbol](): number {
48
+ return this._hash
49
+ }
50
+ [Equal.symbol](u: unknown): boolean {
51
+ return isMetricKey(u) &&
52
+ this.name === u.name &&
53
+ Equal.equals(this.keyType, u.keyType) &&
54
+ Equal.equals(this.description, u.description) &&
55
+ arrayEquivilence(this.tags, u.tags)
56
+ }
57
+ pipe() {
58
+ return pipeArguments(this, arguments)
59
+ }
60
+ }
61
+
62
+ /** @internal */
63
+ export const isMetricKey = (u: unknown): u is MetricKey.MetricKey<MetricKeyType.MetricKeyType<unknown, unknown>> =>
64
+ hasProperty(u, MetricKeyTypeId)
65
+
66
+ /** @internal */
67
+ export const counter: {
68
+ (name: string, options?: {
69
+ readonly description?: string | undefined
70
+ readonly bigint?: false | undefined
71
+ readonly incremental?: boolean | undefined
72
+ }): MetricKey.MetricKey.Counter<number>
73
+ (name: string, options: {
74
+ readonly description?: string | undefined
75
+ readonly bigint: true
76
+ readonly incremental?: boolean | undefined
77
+ }): MetricKey.MetricKey.Counter<bigint>
78
+ } = (name: string, options) =>
79
+ new MetricKeyImpl(
80
+ name,
81
+ metricKeyType.counter(options as any),
82
+ Option.fromNullable(options?.description)
83
+ )
84
+
85
+ /** @internal */
86
+ export const frequency = (name: string, options?: {
87
+ readonly description?: string | undefined
88
+ readonly preregisteredWords?: ReadonlyArray<string> | undefined
89
+ }): MetricKey.MetricKey.Frequency =>
90
+ new MetricKeyImpl(name, metricKeyType.frequency(options), Option.fromNullable(options?.description))
91
+
92
+ /** @internal */
93
+ export const gauge: {
94
+ (name: string, options?: {
95
+ readonly description?: string | undefined
96
+ readonly bigint?: false | undefined
97
+ }): MetricKey.MetricKey.Gauge<number>
98
+ (name: string, options: {
99
+ readonly description?: string | undefined
100
+ readonly bigint: true
101
+ }): MetricKey.MetricKey.Gauge<bigint>
102
+ } = (name, options) =>
103
+ new MetricKeyImpl(
104
+ name,
105
+ metricKeyType.gauge(options as any),
106
+ Option.fromNullable(options?.description)
107
+ )
108
+
109
+ /** @internal */
110
+ export const histogram = (
111
+ name: string,
112
+ boundaries: MetricBoundaries.MetricBoundaries,
113
+ description?: string
114
+ ): MetricKey.MetricKey.Histogram =>
115
+ new MetricKeyImpl(
116
+ name,
117
+ metricKeyType.histogram(boundaries),
118
+ Option.fromNullable(description)
119
+ )
120
+
121
+ /** @internal */
122
+ export const summary = (
123
+ options: {
124
+ readonly name: string
125
+ readonly maxAge: Duration.DurationInput
126
+ readonly maxSize: number
127
+ readonly error: number
128
+ readonly quantiles: ReadonlyArray<number>
129
+ readonly description?: string | undefined
130
+ }
131
+ ): MetricKey.MetricKey.Summary =>
132
+ new MetricKeyImpl(
133
+ options.name,
134
+ metricKeyType.summary(options),
135
+ Option.fromNullable(options.description)
136
+ )
137
+
138
+ /** @internal */
139
+ export const tagged = dual<
140
+ (
141
+ key: string,
142
+ value: string
143
+ ) => <Type extends MetricKeyType.MetricKeyType<any, any>>(
144
+ self: MetricKey.MetricKey<Type>
145
+ ) => MetricKey.MetricKey<Type>,
146
+ <Type extends MetricKeyType.MetricKeyType<any, any>>(
147
+ self: MetricKey.MetricKey<Type>,
148
+ key: string,
149
+ value: string
150
+ ) => MetricKey.MetricKey<Type>
151
+ >(3, (self, key, value) => taggedWithLabels(self, [metricLabel.make(key, value)]))
152
+
153
+ /** @internal */
154
+ export const taggedWithLabels = dual<
155
+ (
156
+ extraTags: ReadonlyArray<MetricLabel.MetricLabel>
157
+ ) => <Type extends MetricKeyType.MetricKeyType<any, any>>(
158
+ self: MetricKey.MetricKey<Type>
159
+ ) => MetricKey.MetricKey<Type>,
160
+ <Type extends MetricKeyType.MetricKeyType<any, any>>(
161
+ self: MetricKey.MetricKey<Type>,
162
+ extraTags: ReadonlyArray<MetricLabel.MetricLabel>
163
+ ) => MetricKey.MetricKey<Type>
164
+ >(2, (self, extraTags) =>
165
+ extraTags.length === 0
166
+ ? self
167
+ : new MetricKeyImpl(self.name, self.keyType, self.description, Arr.union(self.tags, extraTags)))
@@ -0,0 +1,238 @@
1
+ import * as Duration from "../../Duration.js"
2
+ import * as Equal from "../../Equal.js"
3
+ import { pipe } from "../../Function.js"
4
+ import * as Hash from "../../Hash.js"
5
+ import type * as MetricBoundaries from "../../MetricBoundaries.js"
6
+ import type * as MetricKeyType from "../../MetricKeyType.js"
7
+ import { pipeArguments } from "../../Pipeable.js"
8
+ import { hasProperty } from "../../Predicate.js"
9
+
10
+ /** @internal */
11
+ const MetricKeyTypeSymbolKey = "effect/MetricKeyType"
12
+
13
+ /** @internal */
14
+ export const MetricKeyTypeTypeId: MetricKeyType.MetricKeyTypeTypeId = Symbol.for(
15
+ MetricKeyTypeSymbolKey
16
+ ) as MetricKeyType.MetricKeyTypeTypeId
17
+
18
+ /** @internal */
19
+ const CounterKeyTypeSymbolKey = "effect/MetricKeyType/Counter"
20
+
21
+ /** @internal */
22
+ export const CounterKeyTypeTypeId: MetricKeyType.CounterKeyTypeTypeId = Symbol.for(
23
+ CounterKeyTypeSymbolKey
24
+ ) as MetricKeyType.CounterKeyTypeTypeId
25
+
26
+ /** @internal */
27
+ const FrequencyKeyTypeSymbolKey = "effect/MetricKeyType/Frequency"
28
+
29
+ /** @internal */
30
+ export const FrequencyKeyTypeTypeId: MetricKeyType.FrequencyKeyTypeTypeId = Symbol.for(
31
+ FrequencyKeyTypeSymbolKey
32
+ ) as MetricKeyType.FrequencyKeyTypeTypeId
33
+
34
+ /** @internal */
35
+ const GaugeKeyTypeSymbolKey = "effect/MetricKeyType/Gauge"
36
+
37
+ /** @internal */
38
+ export const GaugeKeyTypeTypeId: MetricKeyType.GaugeKeyTypeTypeId = Symbol.for(
39
+ GaugeKeyTypeSymbolKey
40
+ ) as MetricKeyType.GaugeKeyTypeTypeId
41
+
42
+ /** @internal */
43
+ const HistogramKeyTypeSymbolKey = "effect/MetricKeyType/Histogram"
44
+
45
+ /** @internal */
46
+ export const HistogramKeyTypeTypeId: MetricKeyType.HistogramKeyTypeTypeId = Symbol.for(
47
+ HistogramKeyTypeSymbolKey
48
+ ) as MetricKeyType.HistogramKeyTypeTypeId
49
+
50
+ /** @internal */
51
+ const SummaryKeyTypeSymbolKey = "effect/MetricKeyType/Summary"
52
+
53
+ /** @internal */
54
+ export const SummaryKeyTypeTypeId: MetricKeyType.SummaryKeyTypeTypeId = Symbol.for(
55
+ SummaryKeyTypeSymbolKey
56
+ ) as MetricKeyType.SummaryKeyTypeTypeId
57
+
58
+ const metricKeyTypeVariance = {
59
+ /* c8 ignore next */
60
+ _In: (_: unknown) => _,
61
+ /* c8 ignore next */
62
+ _Out: (_: never) => _
63
+ }
64
+
65
+ /** @internal */
66
+ class CounterKeyType<A extends (number | bigint)> implements MetricKeyType.MetricKeyType.Counter<A> {
67
+ readonly [MetricKeyTypeTypeId] = metricKeyTypeVariance
68
+ readonly [CounterKeyTypeTypeId]: MetricKeyType.CounterKeyTypeTypeId = CounterKeyTypeTypeId
69
+ constructor(readonly incremental: boolean, readonly bigint: boolean) {
70
+ this._hash = Hash.string(CounterKeyTypeSymbolKey)
71
+ }
72
+ readonly _hash: number;
73
+ [Hash.symbol](): number {
74
+ return this._hash
75
+ }
76
+ [Equal.symbol](that: unknown): boolean {
77
+ return isCounterKey(that)
78
+ }
79
+ pipe() {
80
+ return pipeArguments(this, arguments)
81
+ }
82
+ }
83
+
84
+ const FrequencyKeyTypeHash = Hash.string(FrequencyKeyTypeSymbolKey)
85
+
86
+ /** @internal */
87
+ class FrequencyKeyType implements MetricKeyType.MetricKeyType.Frequency {
88
+ readonly [MetricKeyTypeTypeId] = metricKeyTypeVariance
89
+ readonly [FrequencyKeyTypeTypeId]: MetricKeyType.FrequencyKeyTypeTypeId = FrequencyKeyTypeTypeId
90
+ constructor(readonly preregisteredWords: ReadonlyArray<string>) {}
91
+ [Hash.symbol](): number {
92
+ return FrequencyKeyTypeHash
93
+ }
94
+ [Equal.symbol](that: unknown): boolean {
95
+ return isFrequencyKey(that)
96
+ }
97
+ pipe() {
98
+ return pipeArguments(this, arguments)
99
+ }
100
+ }
101
+
102
+ const GaugeKeyTypeHash = Hash.string(GaugeKeyTypeSymbolKey)
103
+
104
+ /** @internal */
105
+ class GaugeKeyType<A extends (number | bigint)> implements MetricKeyType.MetricKeyType.Gauge<A> {
106
+ readonly [MetricKeyTypeTypeId] = metricKeyTypeVariance
107
+ readonly [GaugeKeyTypeTypeId]: MetricKeyType.GaugeKeyTypeTypeId = GaugeKeyTypeTypeId
108
+ constructor(readonly bigint: boolean) {}
109
+ [Hash.symbol](): number {
110
+ return GaugeKeyTypeHash
111
+ }
112
+ [Equal.symbol](that: unknown): boolean {
113
+ return isGaugeKey(that)
114
+ }
115
+ pipe() {
116
+ return pipeArguments(this, arguments)
117
+ }
118
+ }
119
+
120
+ /** @internal */
121
+ export class HistogramKeyType implements MetricKeyType.MetricKeyType.Histogram {
122
+ readonly [MetricKeyTypeTypeId] = metricKeyTypeVariance
123
+ readonly [HistogramKeyTypeTypeId]: MetricKeyType.HistogramKeyTypeTypeId = HistogramKeyTypeTypeId
124
+ constructor(readonly boundaries: MetricBoundaries.MetricBoundaries) {
125
+ this._hash = pipe(
126
+ Hash.string(HistogramKeyTypeSymbolKey),
127
+ Hash.combine(Hash.hash(this.boundaries))
128
+ )
129
+ }
130
+ readonly _hash: number;
131
+ [Hash.symbol](): number {
132
+ return this._hash
133
+ }
134
+ [Equal.symbol](that: unknown): boolean {
135
+ return isHistogramKey(that) && Equal.equals(this.boundaries, that.boundaries)
136
+ }
137
+ pipe() {
138
+ return pipeArguments(this, arguments)
139
+ }
140
+ }
141
+
142
+ /** @internal */
143
+ class SummaryKeyType implements MetricKeyType.MetricKeyType.Summary {
144
+ readonly [MetricKeyTypeTypeId] = metricKeyTypeVariance
145
+ readonly [SummaryKeyTypeTypeId]: MetricKeyType.SummaryKeyTypeTypeId = SummaryKeyTypeTypeId
146
+ constructor(
147
+ readonly maxAge: Duration.Duration,
148
+ readonly maxSize: number,
149
+ readonly error: number,
150
+ readonly quantiles: ReadonlyArray<number>
151
+ ) {
152
+ this._hash = pipe(
153
+ Hash.string(SummaryKeyTypeSymbolKey),
154
+ Hash.combine(Hash.hash(this.maxAge)),
155
+ Hash.combine(Hash.hash(this.maxSize)),
156
+ Hash.combine(Hash.hash(this.error)),
157
+ Hash.combine(Hash.array(this.quantiles))
158
+ )
159
+ }
160
+ readonly _hash: number;
161
+ [Hash.symbol](): number {
162
+ return this._hash
163
+ }
164
+ [Equal.symbol](that: unknown): boolean {
165
+ return isSummaryKey(that) &&
166
+ Equal.equals(this.maxAge, that.maxAge) &&
167
+ this.maxSize === that.maxSize &&
168
+ this.error === that.error &&
169
+ Equal.equals(this.quantiles, that.quantiles)
170
+ }
171
+ pipe() {
172
+ return pipeArguments(this, arguments)
173
+ }
174
+ }
175
+
176
+ /** @internal */
177
+ export const counter: <A extends number | bigint>(options?: {
178
+ readonly bigint: boolean
179
+ readonly incremental: boolean
180
+ }) => CounterKeyType<A> = (options) =>
181
+ new CounterKeyType(
182
+ options?.incremental ?? false,
183
+ options?.bigint ?? false
184
+ )
185
+
186
+ /** @internal */
187
+ export const frequency = (options?: {
188
+ readonly preregisteredWords?: ReadonlyArray<string> | undefined
189
+ }): MetricKeyType.MetricKeyType.Frequency => new FrequencyKeyType(options?.preregisteredWords ?? [])
190
+
191
+ /** @internal */
192
+ export const gauge: <A extends number | bigint>(options?: {
193
+ readonly bigint: boolean
194
+ }) => GaugeKeyType<A> = (options) =>
195
+ new GaugeKeyType(
196
+ options?.bigint ?? false
197
+ )
198
+
199
+ /** @internal */
200
+ export const histogram = (boundaries: MetricBoundaries.MetricBoundaries): MetricKeyType.MetricKeyType.Histogram => {
201
+ return new HistogramKeyType(boundaries)
202
+ }
203
+
204
+ /** @internal */
205
+ export const summary = (
206
+ options: {
207
+ readonly maxAge: Duration.DurationInput
208
+ readonly maxSize: number
209
+ readonly error: number
210
+ readonly quantiles: ReadonlyArray<number>
211
+ }
212
+ ): MetricKeyType.MetricKeyType.Summary => {
213
+ return new SummaryKeyType(Duration.decode(options.maxAge), options.maxSize, options.error, options.quantiles)
214
+ }
215
+
216
+ /** @internal */
217
+ export const isMetricKeyType = (u: unknown): u is MetricKeyType.MetricKeyType<unknown, unknown> =>
218
+ hasProperty(u, MetricKeyTypeTypeId)
219
+
220
+ /** @internal */
221
+ export const isCounterKey = (u: unknown): u is MetricKeyType.MetricKeyType.Counter<number | bigint> =>
222
+ hasProperty(u, CounterKeyTypeTypeId)
223
+
224
+ /** @internal */
225
+ export const isFrequencyKey = (u: unknown): u is MetricKeyType.MetricKeyType.Frequency =>
226
+ hasProperty(u, FrequencyKeyTypeTypeId)
227
+
228
+ /** @internal */
229
+ export const isGaugeKey = (u: unknown): u is MetricKeyType.MetricKeyType.Gauge<number | bigint> =>
230
+ hasProperty(u, GaugeKeyTypeTypeId)
231
+
232
+ /** @internal */
233
+ export const isHistogramKey = (u: unknown): u is MetricKeyType.MetricKeyType.Histogram =>
234
+ hasProperty(u, HistogramKeyTypeTypeId)
235
+
236
+ /** @internal */
237
+ export const isSummaryKey = (u: unknown): u is MetricKeyType.MetricKeyType.Summary =>
238
+ hasProperty(u, SummaryKeyTypeTypeId)
@@ -0,0 +1,41 @@
1
+ import * as Equal from "../../Equal.js"
2
+ import * as Hash from "../../Hash.js"
3
+ import type * as MetricLabel from "../../MetricLabel.js"
4
+ import { pipeArguments } from "../../Pipeable.js"
5
+ import { hasProperty } from "../../Predicate.js"
6
+
7
+ /** @internal */
8
+ const MetricLabelSymbolKey = "effect/MetricLabel"
9
+
10
+ /** @internal */
11
+ export const MetricLabelTypeId: MetricLabel.MetricLabelTypeId = Symbol.for(
12
+ MetricLabelSymbolKey
13
+ ) as MetricLabel.MetricLabelTypeId
14
+
15
+ /** @internal */
16
+ class MetricLabelImpl implements MetricLabel.MetricLabel {
17
+ readonly [MetricLabelTypeId]: MetricLabel.MetricLabelTypeId = MetricLabelTypeId
18
+ readonly _hash: number
19
+ constructor(readonly key: string, readonly value: string) {
20
+ this._hash = Hash.string(MetricLabelSymbolKey + this.key + this.value)
21
+ }
22
+ [Hash.symbol](): number {
23
+ return this._hash
24
+ }
25
+ [Equal.symbol](that: unknown): boolean {
26
+ return isMetricLabel(that) &&
27
+ this.key === that.key &&
28
+ this.value === that.value
29
+ }
30
+ pipe() {
31
+ return pipeArguments(this, arguments)
32
+ }
33
+ }
34
+
35
+ /** @internal */
36
+ export const make = (key: string, value: string): MetricLabel.MetricLabel => {
37
+ return new MetricLabelImpl(key, value)
38
+ }
39
+
40
+ /** @internal */
41
+ export const isMetricLabel = (u: unknown): u is MetricLabel.MetricLabel => hasProperty(u, MetricLabelTypeId)
@@ -0,0 +1,48 @@
1
+ import type * as MetricKey from "../../MetricKey.js"
2
+ import type * as MetricKeyType from "../../MetricKeyType.js"
3
+ import type * as MetricPair from "../../MetricPair.js"
4
+ import type * as MetricState from "../../MetricState.js"
5
+ import { pipeArguments } from "../../Pipeable.js"
6
+
7
+ /** @internal */
8
+ const MetricPairSymbolKey = "effect/MetricPair"
9
+
10
+ /** @internal */
11
+ export const MetricPairTypeId: MetricPair.MetricPairTypeId = Symbol.for(
12
+ MetricPairSymbolKey
13
+ ) as MetricPair.MetricPairTypeId
14
+
15
+ const metricPairVariance = {
16
+ /* c8 ignore next */
17
+ _Type: (_: never) => _
18
+ }
19
+
20
+ /** @internal */
21
+ export const make = <Type extends MetricKeyType.MetricKeyType<any, any>>(
22
+ metricKey: MetricKey.MetricKey<Type>,
23
+ metricState: MetricState.MetricState<MetricKeyType.MetricKeyType.OutType<Type>>
24
+ ): MetricPair.MetricPair.Untyped => {
25
+ return {
26
+ [MetricPairTypeId]: metricPairVariance,
27
+ metricKey,
28
+ metricState,
29
+ pipe() {
30
+ return pipeArguments(this, arguments)
31
+ }
32
+ }
33
+ }
34
+
35
+ /** @internal */
36
+ export const unsafeMake = <Type extends MetricKeyType.MetricKeyType<any, any>>(
37
+ metricKey: MetricKey.MetricKey<Type>,
38
+ metricState: MetricState.MetricState.Untyped
39
+ ): MetricPair.MetricPair.Untyped => {
40
+ return {
41
+ [MetricPairTypeId]: metricPairVariance,
42
+ metricKey,
43
+ metricState,
44
+ pipe() {
45
+ return pipeArguments(this, arguments)
46
+ }
47
+ }
48
+ }
@@ -0,0 +1,149 @@
1
+ import type * as Effect from "../../Effect.js"
2
+ import type * as Fiber from "../../Fiber.js"
3
+ import { dual, pipe } from "../../Function.js"
4
+ import type * as Metric from "../../Metric.js"
5
+ import type * as MetricPolling from "../../MetricPolling.js"
6
+ import { pipeArguments } from "../../Pipeable.js"
7
+ import type * as Schedule from "../../Schedule.js"
8
+ import type * as Scope from "../../Scope.js"
9
+ import * as core from "../core.js"
10
+ import * as metric from "../metric.js"
11
+ import * as schedule_ from "../schedule.js"
12
+
13
+ /** @internal */
14
+ const MetricPollingSymbolKey = "effect/MetricPolling"
15
+
16
+ /** @internal */
17
+ export const MetricPollingTypeId: MetricPolling.MetricPollingTypeId = Symbol.for(
18
+ MetricPollingSymbolKey
19
+ ) as MetricPolling.MetricPollingTypeId
20
+
21
+ /** @internal */
22
+ export const make = <Type, In, Out, R, E>(
23
+ metric: Metric.Metric<Type, In, Out>,
24
+ poll: Effect.Effect<In, E, R>
25
+ ): MetricPolling.MetricPolling<Type, In, R, E, Out> => {
26
+ return {
27
+ [MetricPollingTypeId]: MetricPollingTypeId,
28
+ pipe() {
29
+ return pipeArguments(this, arguments)
30
+ },
31
+ metric,
32
+ poll
33
+ }
34
+ }
35
+
36
+ /** @internal */
37
+ export const collectAll = <R, E, Out>(
38
+ iterable: Iterable<MetricPolling.MetricPolling<any, any, R, E, Out>>
39
+ ): MetricPolling.MetricPolling<Array<any>, Array<any>, R, E, Array<Out>> => {
40
+ const metrics = Array.from(iterable)
41
+ return {
42
+ [MetricPollingTypeId]: MetricPollingTypeId,
43
+ pipe() {
44
+ return pipeArguments(this, arguments)
45
+ },
46
+ metric: metric.make(
47
+ Array.of<any>(void 0) as Array<any>,
48
+ (inputs: Array<any>, extraTags) => {
49
+ for (let i = 0; i < inputs.length; i++) {
50
+ const pollingMetric = metrics[i]!
51
+ const input = pipe(inputs, (x) => x[i])
52
+ pollingMetric.metric.unsafeUpdate(input, extraTags)
53
+ }
54
+ },
55
+ (extraTags) =>
56
+ Array.from(
57
+ metrics.map((pollingMetric) => pollingMetric.metric.unsafeValue(extraTags))
58
+ ),
59
+ (inputs: Array<any>, extraTags) => {
60
+ for (let i = 0; i < inputs.length; i++) {
61
+ const pollingMetric = metrics[i]!
62
+ const input = pipe(inputs, (x) => x[i])
63
+ pollingMetric.metric.unsafeModify(input, extraTags)
64
+ }
65
+ }
66
+ ),
67
+ poll: core.forEachSequential(metrics, (metric) => metric.poll)
68
+ }
69
+ }
70
+
71
+ /** @internal */
72
+ export const launch = dual<
73
+ <A2, R2>(
74
+ schedule: Schedule.Schedule<A2, unknown, R2>
75
+ ) => <Type, In, R, E, Out>(
76
+ self: MetricPolling.MetricPolling<Type, In, R, E, Out>
77
+ ) => Effect.Effect<Fiber.Fiber<A2, E>, never, R | R2 | Scope.Scope>,
78
+ <Type, In, R, E, Out, A2, R2>(
79
+ self: MetricPolling.MetricPolling<Type, In, R, E, Out>,
80
+ schedule: Schedule.Schedule<A2, unknown, R2>
81
+ ) => Effect.Effect<Fiber.Fiber<A2, E>, never, R | R2 | Scope.Scope>
82
+ >(2, (self, schedule) =>
83
+ pipe(
84
+ pollAndUpdate(self),
85
+ core.zipRight(metric.value(self.metric)),
86
+ schedule_.scheduleForked(schedule)
87
+ ))
88
+
89
+ /** @internal */
90
+ export const poll = <Type, In, R, E, Out>(
91
+ self: MetricPolling.MetricPolling<Type, In, R, E, Out>
92
+ ): Effect.Effect<In, E, R> => self.poll
93
+
94
+ /** @internal */
95
+ export const pollAndUpdate = <Type, In, R, E, Out>(
96
+ self: MetricPolling.MetricPolling<Type, In, R, E, Out>
97
+ ): Effect.Effect<void, E, R> => core.flatMap(self.poll, (value) => metric.update(self.metric, value))
98
+
99
+ /** @internal */
100
+ export const retry = dual<
101
+ <X, E, R2>(
102
+ policy: Schedule.Schedule<X, E, R2>
103
+ ) => <Type, In, R, Out>(
104
+ self: MetricPolling.MetricPolling<Type, In, R, E, Out>
105
+ ) => MetricPolling.MetricPolling<Type, In, R | R2, E, Out>,
106
+ <Type, In, R, E, Out, X, R2>(
107
+ self: MetricPolling.MetricPolling<Type, In, R, E, Out>,
108
+ policy: Schedule.Schedule<X, E, R2>
109
+ ) => MetricPolling.MetricPolling<Type, In, R | R2, E, Out>
110
+ >(2, (self, policy) => ({
111
+ [MetricPollingTypeId]: MetricPollingTypeId,
112
+ pipe() {
113
+ return pipeArguments(this, arguments)
114
+ },
115
+ metric: self.metric,
116
+ poll: schedule_.retry_Effect(self.poll, policy)
117
+ }))
118
+
119
+ /** @internal */
120
+ export const zip = dual<
121
+ <Type2, In2, R2, E2, Out2>(
122
+ that: MetricPolling.MetricPolling<Type2, In2, R2, E2, Out2>
123
+ ) => <Type, In, R, E, Out>(
124
+ self: MetricPolling.MetricPolling<Type, In, R, E, Out>
125
+ ) => MetricPolling.MetricPolling<
126
+ readonly [Type, Type2],
127
+ readonly [In, In2],
128
+ R | R2,
129
+ E | E2,
130
+ [Out, Out2]
131
+ >,
132
+ <Type, In, R, E, Out, Type2, In2, R2, E2, Out2>(
133
+ self: MetricPolling.MetricPolling<Type, In, R, E, Out>,
134
+ that: MetricPolling.MetricPolling<Type2, In2, R2, E2, Out2>
135
+ ) => MetricPolling.MetricPolling<
136
+ readonly [Type, Type2],
137
+ readonly [In, In2],
138
+ R | R2,
139
+ E | E2,
140
+ [Out, Out2]
141
+ >
142
+ >(2, (self, that) => ({
143
+ [MetricPollingTypeId]: MetricPollingTypeId,
144
+ pipe() {
145
+ return pipeArguments(this, arguments)
146
+ },
147
+ metric: pipe(self.metric, metric.zip(that.metric)),
148
+ poll: core.zip(self.poll, that.poll)
149
+ }))