@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,577 @@
1
+ import * as Arr from "../Array.js"
2
+ import * as Clock from "../Clock.js"
3
+ import * as Duration from "../Duration.js"
4
+ import type * as Effect from "../Effect.js"
5
+ import type { LazyArg } from "../Function.js"
6
+ import { constVoid, dual, identity, pipe } from "../Function.js"
7
+ import { globalValue } from "../GlobalValue.js"
8
+ import type * as Metric from "../Metric.js"
9
+ import type * as MetricBoundaries from "../MetricBoundaries.js"
10
+ import type * as MetricHook from "../MetricHook.js"
11
+ import type * as MetricKey from "../MetricKey.js"
12
+ import type * as MetricKeyType from "../MetricKeyType.js"
13
+ import type * as MetricLabel from "../MetricLabel.js"
14
+ import type * as MetricPair from "../MetricPair.js"
15
+ import type * as MetricRegistry from "../MetricRegistry.js"
16
+ import type * as MetricState from "../MetricState.js"
17
+ import { pipeArguments } from "../Pipeable.js"
18
+ import * as Cause from "./cause.js"
19
+ import * as effect_ from "./core-effect.js"
20
+ import * as core from "./core.js"
21
+ import * as metricBoundaries from "./metric/boundaries.js"
22
+ import * as metricKey from "./metric/key.js"
23
+ import * as metricKeyType from "./metric/keyType.js"
24
+ import * as metricLabel from "./metric/label.js"
25
+ import * as metricRegistry from "./metric/registry.js"
26
+
27
+ /** @internal */
28
+ const MetricSymbolKey = "effect/Metric"
29
+
30
+ /** @internal */
31
+ export const MetricTypeId: Metric.MetricTypeId = Symbol.for(
32
+ MetricSymbolKey
33
+ ) as Metric.MetricTypeId
34
+
35
+ const metricVariance = {
36
+ /* c8 ignore next */
37
+ _Type: (_: any) => _,
38
+ /* c8 ignore next */
39
+ _In: (_: unknown) => _,
40
+ /* c8 ignore next */
41
+ _Out: (_: never) => _
42
+ }
43
+
44
+ /** @internal */
45
+ export const globalMetricRegistry: MetricRegistry.MetricRegistry = globalValue(
46
+ Symbol.for("effect/Metric/globalMetricRegistry"),
47
+ () => metricRegistry.make()
48
+ )
49
+
50
+ /** @internal */
51
+ export const make: Metric.MetricApply = function<Type, In, Out>(
52
+ keyType: Type,
53
+ unsafeUpdate: (input: In, extraTags: ReadonlyArray<MetricLabel.MetricLabel>) => void,
54
+ unsafeValue: (extraTags: ReadonlyArray<MetricLabel.MetricLabel>) => Out,
55
+ unsafeModify: (input: In, extraTags: ReadonlyArray<MetricLabel.MetricLabel>) => void
56
+ ): Metric.Metric<Type, In, Out> {
57
+ const metric: Metric.Metric<Type, In, Out> = Object.assign(
58
+ <A extends In, E, R>(effect: Effect.Effect<A, E, R>): Effect.Effect<A, E, R> =>
59
+ core.tap(effect, (a) => update(metric, a)),
60
+ {
61
+ [MetricTypeId]: metricVariance,
62
+ keyType,
63
+ unsafeUpdate,
64
+ unsafeValue,
65
+ unsafeModify,
66
+ register() {
67
+ this.unsafeValue([])
68
+ return this as any
69
+ },
70
+ pipe() {
71
+ return pipeArguments(this, arguments)
72
+ }
73
+ } as const
74
+ )
75
+ return metric
76
+ }
77
+
78
+ /** @internal */
79
+ export const mapInput = dual<
80
+ <In, In2>(f: (input: In2) => In) => <Type, Out>(self: Metric.Metric<Type, In, Out>) => Metric.Metric<Type, In2, Out>,
81
+ <Type, In, Out, In2>(self: Metric.Metric<Type, In, Out>, f: (input: In2) => In) => Metric.Metric<Type, In2, Out>
82
+ >(2, (self, f) =>
83
+ make(
84
+ self.keyType,
85
+ (input, extraTags) => self.unsafeUpdate(f(input), extraTags),
86
+ self.unsafeValue,
87
+ (input, extraTags) => self.unsafeModify(f(input), extraTags)
88
+ ))
89
+
90
+ /** @internal */
91
+ export const counter: {
92
+ (name: string, options?: {
93
+ readonly description?: string | undefined
94
+ readonly bigint?: false | undefined
95
+ readonly incremental?: boolean | undefined
96
+ }): Metric.Metric.Counter<number>
97
+ (name: string, options: {
98
+ readonly description?: string | undefined
99
+ readonly bigint: true
100
+ readonly incremental?: boolean | undefined
101
+ }): Metric.Metric.Counter<bigint>
102
+ } = (name, options) => fromMetricKey(metricKey.counter(name, options as any)) as any
103
+
104
+ /** @internal */
105
+ export const frequency = (name: string, options?: {
106
+ readonly description?: string | undefined
107
+ readonly preregisteredWords?: ReadonlyArray<string> | undefined
108
+ }): Metric.Metric.Frequency<string> => fromMetricKey(metricKey.frequency(name, options))
109
+
110
+ /** @internal */
111
+ export const withConstantInput = dual<
112
+ <In>(input: In) => <Type, Out>(self: Metric.Metric<Type, In, Out>) => Metric.Metric<Type, unknown, Out>,
113
+ <Type, In, Out>(self: Metric.Metric<Type, In, Out>, input: In) => Metric.Metric<Type, unknown, Out>
114
+ >(2, (self, input) => mapInput(self, () => input))
115
+
116
+ /** @internal */
117
+ export const fromMetricKey = <Type extends MetricKeyType.MetricKeyType<any, any>>(
118
+ key: MetricKey.MetricKey<Type>
119
+ ): Metric.Metric<
120
+ Type,
121
+ MetricKeyType.MetricKeyType.InType<Type>,
122
+ MetricKeyType.MetricKeyType.OutType<Type>
123
+ > => {
124
+ let untaggedHook:
125
+ | MetricHook.MetricHook<
126
+ MetricKeyType.MetricKeyType.InType<Type>,
127
+ MetricKeyType.MetricKeyType.OutType<Type>
128
+ >
129
+ | undefined
130
+ const hookCache = new WeakMap<ReadonlyArray<MetricLabel.MetricLabel>, MetricHook.MetricHook<any, any>>()
131
+
132
+ const hook = (extraTags: ReadonlyArray<MetricLabel.MetricLabel>): MetricHook.MetricHook<
133
+ MetricKeyType.MetricKeyType.InType<Type>,
134
+ MetricKeyType.MetricKeyType.OutType<Type>
135
+ > => {
136
+ if (extraTags.length === 0) {
137
+ if (untaggedHook !== undefined) {
138
+ return untaggedHook
139
+ }
140
+ untaggedHook = globalMetricRegistry.get(key)
141
+ return untaggedHook
142
+ }
143
+
144
+ let hook = hookCache.get(extraTags)
145
+ if (hook !== undefined) {
146
+ return hook
147
+ }
148
+ hook = globalMetricRegistry.get(metricKey.taggedWithLabels(key, extraTags))
149
+ hookCache.set(extraTags, hook)
150
+ return hook
151
+ }
152
+
153
+ return make(
154
+ key.keyType,
155
+ (input, extraTags) => hook(extraTags).update(input),
156
+ (extraTags) => hook(extraTags).get(),
157
+ (input, extraTags) => hook(extraTags).modify(input)
158
+ )
159
+ }
160
+
161
+ /** @internal */
162
+ export const gauge: {
163
+ (name: string, options?: {
164
+ readonly description?: string | undefined
165
+ readonly bigint?: false | undefined
166
+ }): Metric.Metric.Gauge<number>
167
+ (name: string, options: {
168
+ readonly description?: string | undefined
169
+ readonly bigint: true
170
+ }): Metric.Metric.Gauge<bigint>
171
+ } = (name, options) => fromMetricKey(metricKey.gauge(name, options as any)) as any
172
+
173
+ /** @internal */
174
+ export const histogram = (name: string, boundaries: MetricBoundaries.MetricBoundaries, description?: string) =>
175
+ fromMetricKey(metricKey.histogram(name, boundaries, description))
176
+
177
+ /* @internal */
178
+ export const increment = (
179
+ self:
180
+ | Metric.Metric.Counter<number>
181
+ | Metric.Metric.Counter<bigint>
182
+ | Metric.Metric.Gauge<number>
183
+ | Metric.Metric.Gauge<bigint>
184
+ ): Effect.Effect<void> =>
185
+ metricKeyType.isCounterKey(self.keyType)
186
+ ? update(self as Metric.Metric.Counter<number>, self.keyType.bigint ? BigInt(1) as any : 1)
187
+ : modify(self as Metric.Metric.Gauge<number>, self.keyType.bigint ? BigInt(1) as any : 1)
188
+
189
+ /* @internal */
190
+ export const incrementBy = dual<
191
+ {
192
+ (amount: number): (self: Metric.Metric.Counter<number> | Metric.Metric.Counter<number>) => Effect.Effect<void>
193
+ (amount: bigint): (self: Metric.Metric.Counter<bigint> | Metric.Metric.Gauge<bigint>) => Effect.Effect<void>
194
+ },
195
+ {
196
+ (self: Metric.Metric.Counter<number> | Metric.Metric.Gauge<number>, amount: number): Effect.Effect<void>
197
+ (self: Metric.Metric.Counter<bigint> | Metric.Metric.Gauge<bigint>, amount: bigint): Effect.Effect<void>
198
+ }
199
+ >(2, (self, amount) =>
200
+ metricKeyType.isCounterKey(self.keyType)
201
+ ? update(self as any, amount)
202
+ : modify(self as any, amount))
203
+
204
+ /** @internal */
205
+ export const map = dual<
206
+ <Out, Out2>(f: (out: Out) => Out2) => <Type, In>(self: Metric.Metric<Type, In, Out>) => Metric.Metric<Type, In, Out2>,
207
+ <Type, In, Out, Out2>(self: Metric.Metric<Type, In, Out>, f: (out: Out) => Out2) => Metric.Metric<Type, In, Out2>
208
+ >(2, (self, f) =>
209
+ make(
210
+ self.keyType,
211
+ self.unsafeUpdate,
212
+ (extraTags) => f(self.unsafeValue(extraTags)),
213
+ self.unsafeModify
214
+ ))
215
+
216
+ /** @internal */
217
+ export const mapType = dual<
218
+ <Type, Type2>(
219
+ f: (type: Type) => Type2
220
+ ) => <In, Out>(
221
+ self: Metric.Metric<Type, In, Out>
222
+ ) => Metric.Metric<Type2, In, Out>,
223
+ <Type, In, Out, Type2>(
224
+ self: Metric.Metric<Type, In, Out>,
225
+ f: (type: Type) => Type2
226
+ ) => Metric.Metric<Type2, In, Out>
227
+ >(2, (self, f) =>
228
+ make(
229
+ f(self.keyType),
230
+ self.unsafeUpdate,
231
+ self.unsafeValue,
232
+ self.unsafeModify
233
+ ))
234
+
235
+ /** @internal */
236
+ export const modify = dual<
237
+ <In>(input: In) => <Type, Out>(self: Metric.Metric<Type, In, Out>) => Effect.Effect<void>,
238
+ <Type, In, Out>(self: Metric.Metric<Type, In, Out>, input: In) => Effect.Effect<void>
239
+ >(2, (self, input) =>
240
+ core.fiberRefGetWith(
241
+ core.currentMetricLabels,
242
+ (tags) => core.sync(() => self.unsafeModify(input, tags))
243
+ ))
244
+
245
+ /* @internal */
246
+ export const set = dual<
247
+ {
248
+ (value: number): (self: Metric.Metric.Gauge<number>) => Effect.Effect<void>
249
+ (value: bigint): (self: Metric.Metric.Gauge<bigint>) => Effect.Effect<void>
250
+ },
251
+ {
252
+ (self: Metric.Metric.Gauge<number>, value: number): Effect.Effect<void>
253
+ (self: Metric.Metric.Gauge<bigint>, value: bigint): Effect.Effect<void>
254
+ }
255
+ >(2, (self, value) => update(self as any, value))
256
+
257
+ /** @internal */
258
+ export const succeed = <Out>(out: Out): Metric.Metric<void, unknown, Out> =>
259
+ make(void 0 as void, constVoid, () => out, constVoid)
260
+
261
+ /** @internal */
262
+ export const sync = <Out>(evaluate: LazyArg<Out>): Metric.Metric<void, unknown, Out> =>
263
+ make(void 0 as void, constVoid, evaluate, constVoid)
264
+
265
+ /** @internal */
266
+ export const summary = (
267
+ options: {
268
+ readonly name: string
269
+ readonly maxAge: Duration.DurationInput
270
+ readonly maxSize: number
271
+ readonly error: number
272
+ readonly quantiles: ReadonlyArray<number>
273
+ readonly description?: string | undefined
274
+ }
275
+ ): Metric.Metric.Summary<number> => withNow(summaryTimestamp(options))
276
+
277
+ /** @internal */
278
+ export const summaryTimestamp = (
279
+ options: {
280
+ readonly name: string
281
+ readonly maxAge: Duration.DurationInput
282
+ readonly maxSize: number
283
+ readonly error: number
284
+ readonly quantiles: ReadonlyArray<number>
285
+ readonly description?: string | undefined
286
+ }
287
+ ): Metric.Metric.Summary<readonly [value: number, timestamp: number]> => fromMetricKey(metricKey.summary(options))
288
+
289
+ /** @internal */
290
+ export const tagged = dual<
291
+ <Type, In, Out>(key: string, value: string) => (self: Metric.Metric<Type, In, Out>) => Metric.Metric<Type, In, Out>,
292
+ <Type, In, Out>(self: Metric.Metric<Type, In, Out>, key: string, value: string) => Metric.Metric<Type, In, Out>
293
+ >(3, (self, key, value) => taggedWithLabels(self, [metricLabel.make(key, value)]))
294
+
295
+ /** @internal */
296
+ export const taggedWithLabelsInput = dual<
297
+ <In>(
298
+ f: (input: In) => Iterable<MetricLabel.MetricLabel>
299
+ ) => <Type, Out>(self: Metric.Metric<Type, In, Out>) => Metric.Metric<Type, In, void>,
300
+ <Type, In, Out>(
301
+ self: Metric.Metric<Type, In, Out>,
302
+ f: (input: In) => Iterable<MetricLabel.MetricLabel>
303
+ ) => Metric.Metric<Type, In, void>
304
+ >(2, (self, f) =>
305
+ map(
306
+ make(
307
+ self.keyType,
308
+ (input, extraTags) =>
309
+ self.unsafeUpdate(
310
+ input,
311
+ Arr.union(f(input), extraTags)
312
+ ),
313
+ self.unsafeValue,
314
+ (input, extraTags) =>
315
+ self.unsafeModify(
316
+ input,
317
+ Arr.union(f(input), extraTags)
318
+ )
319
+ ),
320
+ constVoid
321
+ ))
322
+
323
+ /** @internal */
324
+ export const taggedWithLabels = dual<
325
+ <Type, In, Out>(
326
+ extraTags: Iterable<MetricLabel.MetricLabel>
327
+ ) => (self: Metric.Metric<Type, In, Out>) => Metric.Metric<Type, In, Out>,
328
+ <Type, In, Out>(
329
+ self: Metric.Metric<Type, In, Out>,
330
+ extraTags: Iterable<MetricLabel.MetricLabel>
331
+ ) => Metric.Metric<Type, In, Out>
332
+ >(2, (self, extraTags) => {
333
+ return make(
334
+ self.keyType,
335
+ (input, extraTags1) => self.unsafeUpdate(input, Arr.union(extraTags, extraTags1)),
336
+ (extraTags1) => self.unsafeValue(Arr.union(extraTags, extraTags1)),
337
+ (input, extraTags1) => self.unsafeModify(input, Arr.union(extraTags, extraTags1))
338
+ )
339
+ })
340
+
341
+ /** @internal */
342
+ export const timer = (name: string, description?: string): Metric.Metric<
343
+ MetricKeyType.MetricKeyType.Histogram,
344
+ Duration.Duration,
345
+ MetricState.MetricState.Histogram
346
+ > => {
347
+ const boundaries = metricBoundaries.exponential({
348
+ start: 0.5,
349
+ factor: 2,
350
+ count: 35
351
+ })
352
+ const base = pipe(histogram(name, boundaries, description), tagged("time_unit", "milliseconds"))
353
+ return mapInput(base, Duration.toMillis)
354
+ }
355
+
356
+ /** @internal */
357
+ export const timerWithBoundaries = (
358
+ name: string,
359
+ boundaries: ReadonlyArray<number>,
360
+ description?: string
361
+ ): Metric.Metric<
362
+ MetricKeyType.MetricKeyType.Histogram,
363
+ Duration.Duration,
364
+ MetricState.MetricState.Histogram
365
+ > => {
366
+ const base = pipe(
367
+ histogram(name, metricBoundaries.fromIterable(boundaries), description),
368
+ tagged("time_unit", "milliseconds")
369
+ )
370
+ return mapInput(base, Duration.toMillis)
371
+ }
372
+
373
+ /* @internal */
374
+ export const trackAll = dual<
375
+ <In>(
376
+ input: In
377
+ ) => <Type, Out>(
378
+ self: Metric.Metric<Type, In, Out>
379
+ ) => <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
380
+ <Type, In, Out>(
381
+ self: Metric.Metric<Type, In, Out>,
382
+ input: In
383
+ ) => <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>
384
+ >(2, (self, input) => (effect) =>
385
+ core.matchCauseEffect(effect, {
386
+ onFailure: (cause) => core.zipRight(update(self, input), core.failCause(cause)),
387
+ onSuccess: (value) => core.zipRight(update(self, input), core.succeed(value))
388
+ }))
389
+
390
+ /* @internal */
391
+ export const trackDefect = dual<
392
+ <Type, Out>(
393
+ metric: Metric.Metric<Type, unknown, Out>
394
+ ) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
395
+ <A, E, R, Type, Out>(
396
+ self: Effect.Effect<A, E, R>,
397
+ metric: Metric.Metric<Type, unknown, Out>
398
+ ) => Effect.Effect<A, E, R>
399
+ >(2, (self, metric) => trackDefectWith(self, metric, identity))
400
+
401
+ /* @internal */
402
+ export const trackDefectWith = dual<
403
+ <Type, In, Out>(
404
+ metric: Metric.Metric<Type, In, Out>,
405
+ f: (defect: unknown) => In
406
+ ) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
407
+ <A, E, R, Type, In, Out>(
408
+ self: Effect.Effect<A, E, R>,
409
+ metric: Metric.Metric<Type, In, Out>,
410
+ f: (defect: unknown) => In
411
+ ) => Effect.Effect<A, E, R>
412
+ >(3, (self, metric, f) => {
413
+ const updater = (defect: unknown) => update(metric, f(defect))
414
+ return effect_.tapDefect(self, (cause) => core.forEachSequentialDiscard(Cause.defects(cause), updater))
415
+ })
416
+
417
+ /* @internal */
418
+ export const trackDuration = dual<
419
+ <Type, Out>(
420
+ metric: Metric.Metric<Type, Duration.Duration, Out>
421
+ ) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
422
+ <A, E, R, Type, Out>(
423
+ self: Effect.Effect<A, E, R>,
424
+ metric: Metric.Metric<Type, Duration.Duration, Out>
425
+ ) => Effect.Effect<A, E, R>
426
+ >(2, (self, metric) => trackDurationWith(self, metric, identity))
427
+
428
+ /* @internal */
429
+ export const trackDurationWith = dual<
430
+ <Type, In, Out>(
431
+ metric: Metric.Metric<Type, In, Out>,
432
+ f: (duration: Duration.Duration) => In
433
+ ) => <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
434
+ <A, E, R, Type, In, Out>(
435
+ self: Effect.Effect<A, E, R>,
436
+ metric: Metric.Metric<Type, In, Out>,
437
+ f: (duration: Duration.Duration) => In
438
+ ) => Effect.Effect<A, E, R>
439
+ >(3, (self, metric, f) =>
440
+ Clock.clockWith((clock) => {
441
+ const startTime = clock.unsafeCurrentTimeNanos()
442
+ return core.tap(self, (_) => {
443
+ const endTime = clock.unsafeCurrentTimeNanos()
444
+ const duration = Duration.nanos(endTime - startTime)
445
+ return update(metric, f(duration))
446
+ })
447
+ }))
448
+
449
+ /* @internal */
450
+ export const trackError = dual<
451
+ <Type, In, Out>(
452
+ metric: Metric.Metric<Type, In, Out>
453
+ ) => <A, E extends In, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
454
+ <A, E extends In, R, Type, In, Out>(
455
+ self: Effect.Effect<A, E, R>,
456
+ metric: Metric.Metric<Type, In, Out>
457
+ ) => Effect.Effect<A, E, R>
458
+ >(2, <A, E extends In, R, Type, In, Out>(
459
+ self: Effect.Effect<A, E, R>,
460
+ metric: Metric.Metric<Type, In, Out>
461
+ ) => trackErrorWith(self, metric, (a: In) => a))
462
+
463
+ /* @internal */
464
+ export const trackErrorWith = dual<
465
+ <Type, In, Out, In2>(
466
+ metric: Metric.Metric<Type, In, Out>,
467
+ f: (error: In2) => In
468
+ ) => <A, E extends In2, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
469
+ <A, E extends In2, R, Type, In, Out, In2>(
470
+ self: Effect.Effect<A, E, R>,
471
+ metric: Metric.Metric<Type, In, Out>,
472
+ f: (error: In2) => In
473
+ ) => Effect.Effect<A, E, R>
474
+ >(3, <A, E extends In2, R, Type, In, Out, In2>(
475
+ self: Effect.Effect<A, E, R>,
476
+ metric: Metric.Metric<Type, In, Out>,
477
+ f: (error: In2) => In
478
+ ) => {
479
+ const updater = (error: E): Effect.Effect<void> => update(metric, f(error))
480
+ return effect_.tapError(self, updater)
481
+ })
482
+
483
+ /* @internal */
484
+ export const trackSuccess = dual<
485
+ <Type, In, Out>(
486
+ metric: Metric.Metric<Type, In, Out>
487
+ ) => <A extends In, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
488
+ <A extends In, E, R, Type, In, Out>(
489
+ self: Effect.Effect<A, E, R>,
490
+ metric: Metric.Metric<Type, In, Out>
491
+ ) => Effect.Effect<A, E, R>
492
+ >(2, <A extends In, E, R, Type, In, Out>(
493
+ self: Effect.Effect<A, E, R>,
494
+ metric: Metric.Metric<Type, In, Out>
495
+ ) => trackSuccessWith(self, metric, (a: In) => a))
496
+
497
+ /* @internal */
498
+ export const trackSuccessWith = dual<
499
+ <Type, In, Out, In2>(
500
+ metric: Metric.Metric<Type, In, Out>,
501
+ f: (value: In2) => In
502
+ ) => <A extends In2, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
503
+ <A extends In2, E, R, Type, In, Out, In2>(
504
+ self: Effect.Effect<A, E, R>,
505
+ metric: Metric.Metric<Type, In, Out>,
506
+ f: (value: In2) => In
507
+ ) => Effect.Effect<A, E, R>
508
+ >(3, <A extends In2, E, R, Type, In, Out, In2>(
509
+ self: Effect.Effect<A, E, R>,
510
+ metric: Metric.Metric<Type, In, Out>,
511
+ f: (value: In2) => In
512
+ ) => {
513
+ const updater = (value: A): Effect.Effect<void> => update(metric, f(value))
514
+ return core.tap(self, updater)
515
+ })
516
+
517
+ /* @internal */
518
+ export const update = dual<
519
+ <In>(input: In) => <Type, Out>(self: Metric.Metric<Type, In, Out>) => Effect.Effect<void>,
520
+ <Type, In, Out>(self: Metric.Metric<Type, In, Out>, input: In) => Effect.Effect<void>
521
+ >(2, (self, input) =>
522
+ core.fiberRefGetWith(
523
+ core.currentMetricLabels,
524
+ (tags) => core.sync(() => self.unsafeUpdate(input, tags))
525
+ ))
526
+
527
+ /* @internal */
528
+ export const value = <Type, In, Out>(
529
+ self: Metric.Metric<Type, In, Out>
530
+ ): Effect.Effect<Out> =>
531
+ core.fiberRefGetWith(
532
+ core.currentMetricLabels,
533
+ (tags) => core.sync(() => self.unsafeValue(tags))
534
+ )
535
+
536
+ /** @internal */
537
+ export const withNow = <Type, In, Out>(
538
+ self: Metric.Metric<Type, readonly [In, number], Out>
539
+ ): Metric.Metric<Type, In, Out> => mapInput(self, (input: In) => [input, Date.now()] as const)
540
+
541
+ /** @internal */
542
+ export const zip = dual<
543
+ <Type2, In2, Out2>(
544
+ that: Metric.Metric<Type2, In2, Out2>
545
+ ) => <Type, In, Out>(
546
+ self: Metric.Metric<Type, In, Out>
547
+ ) => Metric.Metric<readonly [Type, Type2], readonly [In, In2], [Out, Out2]>,
548
+ <Type, In, Out, Type2, In2, Out2>(
549
+ self: Metric.Metric<Type, In, Out>,
550
+ that: Metric.Metric<Type2, In2, Out2>
551
+ ) => Metric.Metric<readonly [Type, Type2], readonly [In, In2], [Out, Out2]>
552
+ >(
553
+ 2,
554
+ <Type, In, Out, Type2, In2, Out2>(self: Metric.Metric<Type, In, Out>, that: Metric.Metric<Type2, In2, Out2>) =>
555
+ make(
556
+ [self.keyType, that.keyType] as const,
557
+ (input: readonly [In, In2], extraTags) => {
558
+ const [l, r] = input
559
+ self.unsafeUpdate(l, extraTags)
560
+ that.unsafeUpdate(r, extraTags)
561
+ },
562
+ (extraTags) => [self.unsafeValue(extraTags), that.unsafeValue(extraTags)],
563
+ (input: readonly [In, In2], extraTags) => {
564
+ const [l, r] = input
565
+ self.unsafeModify(l, extraTags)
566
+ that.unsafeModify(r, extraTags)
567
+ }
568
+ )
569
+ )
570
+
571
+ /** @internal */
572
+ export const unsafeSnapshot = (): Array<MetricPair.MetricPair.Untyped> => globalMetricRegistry.snapshot()
573
+
574
+ /** @internal */
575
+ export const snapshot: Effect.Effect<Array<MetricPair.MetricPair.Untyped>> = core.sync(
576
+ unsafeSnapshot
577
+ )
@@ -0,0 +1,35 @@
1
+ /** @internal */
2
+ export const OP_DIE = "Die" as const
3
+
4
+ /** @internal */
5
+ export type OP_DIE = typeof OP_DIE
6
+
7
+ /** @internal */
8
+ export const OP_EMPTY = "Empty" as const
9
+
10
+ /** @internal */
11
+ export type OP_EMPTY = typeof OP_EMPTY
12
+
13
+ /** @internal */
14
+ export const OP_FAIL = "Fail" as const
15
+
16
+ /** @internal */
17
+ export type OP_FAIL = typeof OP_FAIL
18
+
19
+ /** @internal */
20
+ export const OP_INTERRUPT = "Interrupt" as const
21
+
22
+ /** @internal */
23
+ export type OP_INTERRUPT = typeof OP_INTERRUPT
24
+
25
+ /** @internal */
26
+ export const OP_PARALLEL = "Parallel" as const
27
+
28
+ /** @internal */
29
+ export type OP_PARALLEL = typeof OP_PARALLEL
30
+
31
+ /** @internal */
32
+ export const OP_SEQUENTIAL = "Sequential" as const
33
+
34
+ /** @internal */
35
+ export type OP_SEQUENTIAL = typeof OP_SEQUENTIAL
@@ -0,0 +1,83 @@
1
+ /** @internal */
2
+ export const OP_BRACKET_OUT = "BracketOut" as const
3
+
4
+ /** @internal */
5
+ export type OP_BRACKET_OUT = typeof OP_BRACKET_OUT
6
+
7
+ /** @internal */
8
+ export const OP_BRIDGE = "Bridge" as const
9
+
10
+ /** @internal */
11
+ export type OP_BRIDGE = typeof OP_BRIDGE
12
+
13
+ /** @internal */
14
+ export const OP_CONCAT_ALL = "ConcatAll" as const
15
+
16
+ /** @internal */
17
+ export type OP_CONCAT_ALL = typeof OP_CONCAT_ALL
18
+
19
+ /** @internal */
20
+ export const OP_EMIT = "Emit" as const
21
+
22
+ /** @internal */
23
+ export type OP_EMIT = typeof OP_EMIT
24
+
25
+ /** @internal */
26
+ export const OP_ENSURING = "Ensuring" as const
27
+
28
+ /** @internal */
29
+ export type OP_ENSURING = typeof OP_ENSURING
30
+
31
+ /** @internal */
32
+ export const OP_FAIL = "Fail" as const
33
+
34
+ /** @internal */
35
+ export type OP_FAIL = typeof OP_FAIL
36
+
37
+ /** @internal */
38
+ export const OP_FOLD = "Fold" as const
39
+
40
+ /** @internal */
41
+ export type OP_FOLD = typeof OP_FOLD
42
+
43
+ /** @internal */
44
+ export const OP_FROM_EFFECT = "FromEffect" as const
45
+
46
+ /** @internal */
47
+ export type OP_FROM_EFFECT = typeof OP_FROM_EFFECT
48
+
49
+ /** @internal */
50
+ export const OP_PIPE_TO = "PipeTo" as const
51
+
52
+ /** @internal */
53
+ export type OP_PIPE_TO = typeof OP_PIPE_TO
54
+
55
+ /** @internal */
56
+ export const OP_PROVIDE = "Provide" as const
57
+
58
+ /** @internal */
59
+ export type OP_PROVIDE = typeof OP_PROVIDE
60
+
61
+ /** @internal */
62
+ export const OP_READ = "Read" as const
63
+
64
+ /** @internal */
65
+ export type OP_READ = typeof OP_READ
66
+
67
+ /** @internal */
68
+ export const OP_SUCCEED = "Succeed" as const
69
+
70
+ /** @internal */
71
+ export type OP_SUCCEED = typeof OP_SUCCEED
72
+
73
+ /** @internal */
74
+ export const OP_SUCCEED_NOW = "SucceedNow" as const
75
+
76
+ /** @internal */
77
+ export type OP_SUCCEED_NOW = typeof OP_SUCCEED_NOW
78
+
79
+ /** @internal */
80
+ export const OP_SUSPEND = "Suspend" as const
81
+
82
+ /** @internal */
83
+ export type OP_SUSPEND = typeof OP_SUSPEND