effect 4.0.1 → 4.0.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 (917) hide show
  1. package/ai-docs/package.json +2 -2
  2. package/ai-docs/tsconfig.json +2 -1
  3. package/dist/Array.d.ts +339 -0
  4. package/dist/Array.d.ts.map +1 -1
  5. package/dist/Array.js +143 -3
  6. package/dist/Array.js.map +1 -1
  7. package/dist/BigDecimal.d.ts +88 -0
  8. package/dist/BigDecimal.d.ts.map +1 -1
  9. package/dist/BigDecimal.js +44 -0
  10. package/dist/BigDecimal.js.map +1 -1
  11. package/dist/BigInt.d.ts +68 -0
  12. package/dist/BigInt.d.ts.map +1 -1
  13. package/dist/BigInt.js +36 -0
  14. package/dist/BigInt.js.map +1 -1
  15. package/dist/Boolean.d.ts +34 -0
  16. package/dist/Boolean.d.ts.map +1 -1
  17. package/dist/Boolean.js +18 -0
  18. package/dist/Boolean.js.map +1 -1
  19. package/dist/Brand.d.ts +9 -0
  20. package/dist/Brand.d.ts.map +1 -1
  21. package/dist/Brand.js +6 -0
  22. package/dist/Brand.js.map +1 -1
  23. package/dist/ByteSize.d.ts +86 -0
  24. package/dist/ByteSize.d.ts.map +1 -1
  25. package/dist/ByteSize.js +51 -0
  26. package/dist/ByteSize.js.map +1 -1
  27. package/dist/Cache.d.ts +38 -1
  28. package/dist/Cache.d.ts.map +1 -1
  29. package/dist/Cache.js +27 -7
  30. package/dist/Cache.js.map +1 -1
  31. package/dist/Cause.d.ts +82 -0
  32. package/dist/Cause.d.ts.map +1 -1
  33. package/dist/Cause.js +60 -0
  34. package/dist/Cause.js.map +1 -1
  35. package/dist/Channel.d.ts +327 -4
  36. package/dist/Channel.d.ts.map +1 -1
  37. package/dist/Channel.js +168 -8
  38. package/dist/Channel.js.map +1 -1
  39. package/dist/ChannelSchema.d.ts +11 -0
  40. package/dist/ChannelSchema.d.ts.map +1 -1
  41. package/dist/ChannelSchema.js +6 -0
  42. package/dist/ChannelSchema.js.map +1 -1
  43. package/dist/Chunk.d.ts +192 -0
  44. package/dist/Chunk.d.ts.map +1 -1
  45. package/dist/Chunk.js +78 -0
  46. package/dist/Chunk.js.map +1 -1
  47. package/dist/Clock.d.ts +7 -0
  48. package/dist/Clock.d.ts.map +1 -1
  49. package/dist/Clock.js +5 -0
  50. package/dist/Clock.js.map +1 -1
  51. package/dist/Combiner.d.ts +10 -0
  52. package/dist/Combiner.d.ts.map +1 -1
  53. package/dist/Combiner.js +8 -0
  54. package/dist/Combiner.js.map +1 -1
  55. package/dist/Config.d.ts +52 -12
  56. package/dist/Config.d.ts.map +1 -1
  57. package/dist/Config.js +55 -5
  58. package/dist/Config.js.map +1 -1
  59. package/dist/ConfigProvider.d.ts +28 -0
  60. package/dist/ConfigProvider.d.ts.map +1 -1
  61. package/dist/ConfigProvider.js +19 -0
  62. package/dist/ConfigProvider.js.map +1 -1
  63. package/dist/Console.d.ts +22 -0
  64. package/dist/Console.d.ts.map +1 -1
  65. package/dist/Console.js +20 -0
  66. package/dist/Console.js.map +1 -1
  67. package/dist/Context.d.ts +50 -0
  68. package/dist/Context.d.ts.map +1 -1
  69. package/dist/Context.js +21 -0
  70. package/dist/Context.js.map +1 -1
  71. package/dist/Cron.d.ts +16 -0
  72. package/dist/Cron.d.ts.map +1 -1
  73. package/dist/Cron.js +26 -1
  74. package/dist/Cron.js.map +1 -1
  75. package/dist/Crypto.d.ts +5 -0
  76. package/dist/Crypto.d.ts.map +1 -1
  77. package/dist/Crypto.js +3 -0
  78. package/dist/Crypto.js.map +1 -1
  79. package/dist/Data.d.ts +13 -0
  80. package/dist/Data.d.ts.map +1 -1
  81. package/dist/Data.js +5 -0
  82. package/dist/Data.js.map +1 -1
  83. package/dist/DateTime.d.ts +171 -0
  84. package/dist/DateTime.d.ts.map +1 -1
  85. package/dist/DateTime.js +89 -0
  86. package/dist/DateTime.js.map +1 -1
  87. package/dist/Deferred.d.ts +51 -0
  88. package/dist/Deferred.d.ts.map +1 -1
  89. package/dist/Deferred.js +22 -0
  90. package/dist/Deferred.js.map +1 -1
  91. package/dist/Differ.d.ts +2 -0
  92. package/dist/Differ.d.ts.map +1 -1
  93. package/dist/Differ.js +1 -0
  94. package/dist/Duration.d.ts +90 -0
  95. package/dist/Duration.d.ts.map +1 -1
  96. package/dist/Duration.js +53 -0
  97. package/dist/Duration.js.map +1 -1
  98. package/dist/Effect.d.ts +527 -0
  99. package/dist/Effect.d.ts.map +1 -1
  100. package/dist/Effect.js +240 -5
  101. package/dist/Effect.js.map +1 -1
  102. package/dist/Effectable.d.ts +4 -0
  103. package/dist/Effectable.d.ts.map +1 -1
  104. package/dist/Effectable.js +3 -0
  105. package/dist/Effectable.js.map +1 -1
  106. package/dist/Equal.d.ts +8 -0
  107. package/dist/Equal.d.ts.map +1 -1
  108. package/dist/Equal.js +9 -1
  109. package/dist/Equal.js.map +1 -1
  110. package/dist/Equivalence.d.ts +21 -0
  111. package/dist/Equivalence.d.ts.map +1 -1
  112. package/dist/Equivalence.js +16 -0
  113. package/dist/Equivalence.js.map +1 -1
  114. package/dist/ErrorReporter.d.ts +36 -0
  115. package/dist/ErrorReporter.d.ts.map +1 -1
  116. package/dist/ErrorReporter.js +11 -0
  117. package/dist/ErrorReporter.js.map +1 -1
  118. package/dist/ExecutionPlan.d.ts +49 -8
  119. package/dist/ExecutionPlan.d.ts.map +1 -1
  120. package/dist/ExecutionPlan.js +7 -0
  121. package/dist/ExecutionPlan.js.map +1 -1
  122. package/dist/Exit.d.ts +40 -0
  123. package/dist/Exit.d.ts.map +1 -1
  124. package/dist/Exit.js +27 -0
  125. package/dist/Exit.js.map +1 -1
  126. package/dist/Fiber.d.ts +20 -0
  127. package/dist/Fiber.d.ts.map +1 -1
  128. package/dist/Fiber.js +11 -0
  129. package/dist/Fiber.js.map +1 -1
  130. package/dist/FiberHandle.d.ts +21 -0
  131. package/dist/FiberHandle.d.ts.map +1 -1
  132. package/dist/FiberHandle.js +21 -4
  133. package/dist/FiberHandle.js.map +1 -1
  134. package/dist/FiberMap.d.ts +35 -0
  135. package/dist/FiberMap.d.ts.map +1 -1
  136. package/dist/FiberMap.js +19 -0
  137. package/dist/FiberMap.js.map +1 -1
  138. package/dist/FiberSet.d.ts +20 -0
  139. package/dist/FiberSet.d.ts.map +1 -1
  140. package/dist/FiberSet.js +14 -0
  141. package/dist/FiberSet.js.map +1 -1
  142. package/dist/FileSystem.d.ts +15 -0
  143. package/dist/FileSystem.d.ts.map +1 -1
  144. package/dist/FileSystem.js +8 -0
  145. package/dist/FileSystem.js.map +1 -1
  146. package/dist/Filter.d.ts +55 -0
  147. package/dist/Filter.d.ts.map +1 -1
  148. package/dist/Filter.js +28 -0
  149. package/dist/Filter.js.map +1 -1
  150. package/dist/Formatter.d.ts +3 -0
  151. package/dist/Formatter.d.ts.map +1 -1
  152. package/dist/Formatter.js +39 -1
  153. package/dist/Formatter.js.map +1 -1
  154. package/dist/Function.d.ts +30 -0
  155. package/dist/Function.d.ts.map +1 -1
  156. package/dist/Function.js +20 -0
  157. package/dist/Function.js.map +1 -1
  158. package/dist/Graph.d.ts +247 -12
  159. package/dist/Graph.d.ts.map +1 -1
  160. package/dist/Graph.js +149 -28
  161. package/dist/Graph.js.map +1 -1
  162. package/dist/HKT.d.ts +5 -0
  163. package/dist/HKT.d.ts.map +1 -1
  164. package/dist/Hash.d.ts +14 -0
  165. package/dist/Hash.d.ts.map +1 -1
  166. package/dist/Hash.js +12 -0
  167. package/dist/Hash.js.map +1 -1
  168. package/dist/HashMap.d.ts +91 -0
  169. package/dist/HashMap.d.ts.map +1 -1
  170. package/dist/HashMap.js +39 -0
  171. package/dist/HashMap.js.map +1 -1
  172. package/dist/HashRing.d.ts +17 -0
  173. package/dist/HashRing.d.ts.map +1 -1
  174. package/dist/HashRing.js +9 -0
  175. package/dist/HashRing.js.map +1 -1
  176. package/dist/HashSet.d.ts +49 -0
  177. package/dist/HashSet.d.ts.map +1 -1
  178. package/dist/HashSet.js +19 -0
  179. package/dist/HashSet.js.map +1 -1
  180. package/dist/Inspectable.d.ts +7 -0
  181. package/dist/Inspectable.d.ts.map +1 -1
  182. package/dist/Inspectable.js +6 -0
  183. package/dist/Inspectable.js.map +1 -1
  184. package/dist/Iterable.d.ts +127 -0
  185. package/dist/Iterable.d.ts.map +1 -1
  186. package/dist/Iterable.js +51 -0
  187. package/dist/Iterable.js.map +1 -1
  188. package/dist/JsonPatch.d.ts +4 -0
  189. package/dist/JsonPatch.d.ts.map +1 -1
  190. package/dist/JsonPatch.js +3 -0
  191. package/dist/JsonPatch.js.map +1 -1
  192. package/dist/JsonPointer.d.ts +5 -0
  193. package/dist/JsonPointer.d.ts.map +1 -1
  194. package/dist/JsonPointer.js +5 -0
  195. package/dist/JsonPointer.js.map +1 -1
  196. package/dist/JsonSchema.d.ts +16 -0
  197. package/dist/JsonSchema.d.ts.map +1 -1
  198. package/dist/JsonSchema.js +11 -0
  199. package/dist/JsonSchema.js.map +1 -1
  200. package/dist/Latch.d.ts +14 -0
  201. package/dist/Latch.d.ts.map +1 -1
  202. package/dist/Latch.js +10 -0
  203. package/dist/Latch.js.map +1 -1
  204. package/dist/Layer.d.ts +100 -0
  205. package/dist/Layer.d.ts.map +1 -1
  206. package/dist/Layer.js +45 -1
  207. package/dist/Layer.js.map +1 -1
  208. package/dist/LayerMap.d.ts +7 -0
  209. package/dist/LayerMap.d.ts.map +1 -1
  210. package/dist/LayerMap.js +4 -0
  211. package/dist/LayerMap.js.map +1 -1
  212. package/dist/LayerRef.d.ts +5 -0
  213. package/dist/LayerRef.d.ts.map +1 -1
  214. package/dist/LayerRef.js +3 -0
  215. package/dist/LayerRef.js.map +1 -1
  216. package/dist/LogLevel.d.ts +20 -0
  217. package/dist/LogLevel.d.ts.map +1 -1
  218. package/dist/LogLevel.js +9 -0
  219. package/dist/LogLevel.js.map +1 -1
  220. package/dist/Logger.d.ts +25 -0
  221. package/dist/Logger.d.ts.map +1 -1
  222. package/dist/Logger.js +30 -4
  223. package/dist/Logger.js.map +1 -1
  224. package/dist/ManagedRuntime.d.ts +5 -0
  225. package/dist/ManagedRuntime.d.ts.map +1 -1
  226. package/dist/ManagedRuntime.js +9 -1
  227. package/dist/ManagedRuntime.js.map +1 -1
  228. package/dist/Match.d.ts +51 -0
  229. package/dist/Match.d.ts.map +1 -1
  230. package/dist/Match.js +39 -0
  231. package/dist/Match.js.map +1 -1
  232. package/dist/Metric.d.ts +59 -0
  233. package/dist/Metric.d.ts.map +1 -1
  234. package/dist/Metric.js +31 -0
  235. package/dist/Metric.js.map +1 -1
  236. package/dist/MutableHashMap.d.ts +32 -0
  237. package/dist/MutableHashMap.d.ts.map +1 -1
  238. package/dist/MutableHashMap.js +16 -0
  239. package/dist/MutableHashMap.js.map +1 -1
  240. package/dist/MutableHashSet.d.ts +16 -0
  241. package/dist/MutableHashSet.d.ts.map +1 -1
  242. package/dist/MutableHashSet.js +10 -0
  243. package/dist/MutableHashSet.js.map +1 -1
  244. package/dist/MutableList.d.ts +20 -0
  245. package/dist/MutableList.d.ts.map +1 -1
  246. package/dist/MutableList.js +18 -0
  247. package/dist/MutableList.js.map +1 -1
  248. package/dist/MutableRef.d.ts +31 -0
  249. package/dist/MutableRef.d.ts.map +1 -1
  250. package/dist/MutableRef.js +17 -0
  251. package/dist/MutableRef.js.map +1 -1
  252. package/dist/Newtype.d.ts +9 -0
  253. package/dist/Newtype.d.ts.map +1 -1
  254. package/dist/Newtype.js +6 -0
  255. package/dist/Newtype.js.map +1 -1
  256. package/dist/NonEmptyIterable.d.ts +4 -0
  257. package/dist/NonEmptyIterable.d.ts.map +1 -1
  258. package/dist/NonEmptyIterable.js +2 -0
  259. package/dist/NonEmptyIterable.js.map +1 -1
  260. package/dist/Number.d.ts +61 -0
  261. package/dist/Number.d.ts.map +1 -1
  262. package/dist/Number.js +31 -0
  263. package/dist/Number.js.map +1 -1
  264. package/dist/Optic.d.ts +41 -0
  265. package/dist/Optic.d.ts.map +1 -1
  266. package/dist/Optic.js +20 -0
  267. package/dist/Optic.js.map +1 -1
  268. package/dist/Option.d.ts +134 -0
  269. package/dist/Option.d.ts.map +1 -1
  270. package/dist/Option.js +61 -0
  271. package/dist/Option.js.map +1 -1
  272. package/dist/Order.d.ts +29 -0
  273. package/dist/Order.d.ts.map +1 -1
  274. package/dist/Order.js +24 -0
  275. package/dist/Order.js.map +1 -1
  276. package/dist/Ordering.d.ts +7 -0
  277. package/dist/Ordering.d.ts.map +1 -1
  278. package/dist/Ordering.js +3 -0
  279. package/dist/Ordering.js.map +1 -1
  280. package/dist/PartitionedSemaphore.d.ts +24 -0
  281. package/dist/PartitionedSemaphore.d.ts.map +1 -1
  282. package/dist/PartitionedSemaphore.js +47 -21
  283. package/dist/PartitionedSemaphore.js.map +1 -1
  284. package/dist/Path.d.ts +6 -0
  285. package/dist/Path.d.ts.map +1 -1
  286. package/dist/Path.js +4 -0
  287. package/dist/Path.js.map +1 -1
  288. package/dist/Pipeable.d.ts +7 -0
  289. package/dist/Pipeable.d.ts.map +1 -1
  290. package/dist/Pipeable.js +5 -0
  291. package/dist/Pipeable.js.map +1 -1
  292. package/dist/PlatformError.d.ts +8 -0
  293. package/dist/PlatformError.d.ts.map +1 -1
  294. package/dist/PlatformError.js +7 -0
  295. package/dist/PlatformError.js.map +1 -1
  296. package/dist/Pool.d.ts +19 -0
  297. package/dist/Pool.d.ts.map +1 -1
  298. package/dist/Pool.js +8 -1
  299. package/dist/Pool.js.map +1 -1
  300. package/dist/Predicate.d.ts +84 -0
  301. package/dist/Predicate.d.ts.map +1 -1
  302. package/dist/Predicate.js +48 -0
  303. package/dist/Predicate.js.map +1 -1
  304. package/dist/PrimaryKey.d.ts +5 -0
  305. package/dist/PrimaryKey.d.ts.map +1 -1
  306. package/dist/PrimaryKey.js +4 -0
  307. package/dist/PrimaryKey.js.map +1 -1
  308. package/dist/PubSub.d.ts +67 -5
  309. package/dist/PubSub.d.ts.map +1 -1
  310. package/dist/PubSub.js +60 -8
  311. package/dist/PubSub.js.map +1 -1
  312. package/dist/Pull.d.ts +20 -0
  313. package/dist/Pull.d.ts.map +1 -1
  314. package/dist/Pull.js +10 -0
  315. package/dist/Pull.js.map +1 -1
  316. package/dist/Queue.d.ts +60 -0
  317. package/dist/Queue.d.ts.map +1 -1
  318. package/dist/Queue.js +58 -8
  319. package/dist/Queue.js.map +1 -1
  320. package/dist/Random.d.ts +13 -0
  321. package/dist/Random.d.ts.map +1 -1
  322. package/dist/Random.js +9 -0
  323. package/dist/Random.js.map +1 -1
  324. package/dist/RcMap.d.ts +23 -0
  325. package/dist/RcMap.d.ts.map +1 -1
  326. package/dist/RcMap.js +8 -0
  327. package/dist/RcMap.js.map +1 -1
  328. package/dist/RcRef.d.ts +6 -0
  329. package/dist/RcRef.d.ts.map +1 -1
  330. package/dist/RcRef.js +3 -0
  331. package/dist/RcRef.js.map +1 -1
  332. package/dist/Record.d.ts +100 -0
  333. package/dist/Record.d.ts.map +1 -1
  334. package/dist/Record.js +43 -0
  335. package/dist/Record.js.map +1 -1
  336. package/dist/Redactable.d.ts +6 -0
  337. package/dist/Redactable.d.ts.map +1 -1
  338. package/dist/Redactable.js +4 -0
  339. package/dist/Redactable.js.map +1 -1
  340. package/dist/Redacted.d.ts +8 -0
  341. package/dist/Redacted.d.ts.map +1 -1
  342. package/dist/Redacted.js +6 -0
  343. package/dist/Redacted.js.map +1 -1
  344. package/dist/Reducer.d.ts +4 -0
  345. package/dist/Reducer.d.ts.map +1 -1
  346. package/dist/Reducer.js +3 -0
  347. package/dist/Reducer.js.map +1 -1
  348. package/dist/Ref.d.ts +20 -0
  349. package/dist/Ref.d.ts.map +1 -1
  350. package/dist/Ref.js +16 -0
  351. package/dist/Ref.js.map +1 -1
  352. package/dist/References.d.ts +21 -0
  353. package/dist/References.d.ts.map +1 -1
  354. package/dist/References.js +19 -0
  355. package/dist/References.js.map +1 -1
  356. package/dist/RegExp.d.ts +3 -0
  357. package/dist/RegExp.d.ts.map +1 -1
  358. package/dist/RegExp.js +4 -0
  359. package/dist/RegExp.js.map +1 -1
  360. package/dist/Request.d.ts +32 -0
  361. package/dist/Request.d.ts.map +1 -1
  362. package/dist/Request.js +12 -0
  363. package/dist/Request.js.map +1 -1
  364. package/dist/RequestResolver.d.ts +42 -0
  365. package/dist/RequestResolver.d.ts.map +1 -1
  366. package/dist/RequestResolver.js +27 -6
  367. package/dist/RequestResolver.js.map +1 -1
  368. package/dist/Resource.d.ts +6 -0
  369. package/dist/Resource.d.ts.map +1 -1
  370. package/dist/Resource.js +6 -0
  371. package/dist/Resource.js.map +1 -1
  372. package/dist/Result.d.ts +91 -0
  373. package/dist/Result.d.ts.map +1 -1
  374. package/dist/Result.js +41 -0
  375. package/dist/Result.js.map +1 -1
  376. package/dist/Runtime.d.ts +9 -0
  377. package/dist/Runtime.d.ts.map +1 -1
  378. package/dist/Runtime.js +7 -0
  379. package/dist/Runtime.js.map +1 -1
  380. package/dist/Schedule.d.ts +57 -0
  381. package/dist/Schedule.d.ts.map +1 -1
  382. package/dist/Schedule.js +32 -0
  383. package/dist/Schedule.js.map +1 -1
  384. package/dist/Scheduler.d.ts +7 -0
  385. package/dist/Scheduler.d.ts.map +1 -1
  386. package/dist/Scheduler.js +5 -0
  387. package/dist/Scheduler.js.map +1 -1
  388. package/dist/Schema.d.ts +496 -1
  389. package/dist/Schema.d.ts.map +1 -1
  390. package/dist/Schema.js +280 -1
  391. package/dist/Schema.js.map +1 -1
  392. package/dist/SchemaAST.d.ts +107 -0
  393. package/dist/SchemaAST.d.ts.map +1 -1
  394. package/dist/SchemaAST.js +81 -1
  395. package/dist/SchemaAST.js.map +1 -1
  396. package/dist/SchemaGetter.d.ts +69 -2
  397. package/dist/SchemaGetter.d.ts.map +1 -1
  398. package/dist/SchemaGetter.js +63 -4
  399. package/dist/SchemaGetter.js.map +1 -1
  400. package/dist/SchemaIssue.d.ts +33 -0
  401. package/dist/SchemaIssue.d.ts.map +1 -1
  402. package/dist/SchemaIssue.js +18 -0
  403. package/dist/SchemaIssue.js.map +1 -1
  404. package/dist/SchemaParser.d.ts +25 -0
  405. package/dist/SchemaParser.d.ts.map +1 -1
  406. package/dist/SchemaParser.js +26 -0
  407. package/dist/SchemaParser.js.map +1 -1
  408. package/dist/SchemaRepresentation.d.ts +147 -0
  409. package/dist/SchemaRepresentation.d.ts.map +1 -1
  410. package/dist/SchemaRepresentation.js +99 -0
  411. package/dist/SchemaRepresentation.js.map +1 -1
  412. package/dist/SchemaTransformation.d.ts +53 -0
  413. package/dist/SchemaTransformation.d.ts.map +1 -1
  414. package/dist/SchemaTransformation.js +46 -0
  415. package/dist/SchemaTransformation.js.map +1 -1
  416. package/dist/Scope.d.ts +19 -0
  417. package/dist/Scope.d.ts.map +1 -1
  418. package/dist/Scope.js +12 -0
  419. package/dist/Scope.js.map +1 -1
  420. package/dist/ScopedCache.d.ts +34 -0
  421. package/dist/ScopedCache.d.ts.map +1 -1
  422. package/dist/ScopedCache.js +26 -3
  423. package/dist/ScopedCache.js.map +1 -1
  424. package/dist/ScopedRef.d.ts +9 -0
  425. package/dist/ScopedRef.d.ts.map +1 -1
  426. package/dist/ScopedRef.js +6 -0
  427. package/dist/ScopedRef.js.map +1 -1
  428. package/dist/Semaphore.d.ts +26 -0
  429. package/dist/Semaphore.d.ts.map +1 -1
  430. package/dist/Semaphore.js +10 -0
  431. package/dist/Semaphore.js.map +1 -1
  432. package/dist/Sink.d.ts +125 -1
  433. package/dist/Sink.d.ts.map +1 -1
  434. package/dist/Sink.js +75 -1
  435. package/dist/Sink.js.map +1 -1
  436. package/dist/StandardSchema.d.ts +1 -0
  437. package/dist/StandardSchema.d.ts.map +1 -1
  438. package/dist/StandardSchema.js +1 -0
  439. package/dist/Stdio.d.ts +7 -0
  440. package/dist/Stdio.d.ts.map +1 -1
  441. package/dist/Stdio.js +5 -0
  442. package/dist/Stdio.js.map +1 -1
  443. package/dist/Stream.d.ts +558 -0
  444. package/dist/Stream.d.ts.map +1 -1
  445. package/dist/Stream.js +261 -13
  446. package/dist/Stream.js.map +1 -1
  447. package/dist/String.d.ts +87 -0
  448. package/dist/String.d.ts.map +1 -1
  449. package/dist/String.js +61 -0
  450. package/dist/String.js.map +1 -1
  451. package/dist/Struct.d.ts +46 -0
  452. package/dist/Struct.d.ts.map +1 -1
  453. package/dist/Struct.js +19 -0
  454. package/dist/Struct.js.map +1 -1
  455. package/dist/SubscriptionRef.d.ts +65 -0
  456. package/dist/SubscriptionRef.d.ts.map +1 -1
  457. package/dist/SubscriptionRef.js +25 -0
  458. package/dist/SubscriptionRef.js.map +1 -1
  459. package/dist/Symbol.d.ts +2 -0
  460. package/dist/Symbol.d.ts.map +1 -1
  461. package/dist/Symbol.js +2 -0
  462. package/dist/Symbol.js.map +1 -1
  463. package/dist/SynchronizedRef.d.ts +63 -0
  464. package/dist/SynchronizedRef.d.ts.map +1 -1
  465. package/dist/SynchronizedRef.js +24 -0
  466. package/dist/SynchronizedRef.js.map +1 -1
  467. package/dist/Take.d.ts +3 -0
  468. package/dist/Take.d.ts.map +1 -1
  469. package/dist/Take.js +1 -0
  470. package/dist/Take.js.map +1 -1
  471. package/dist/Terminal.d.ts +8 -0
  472. package/dist/Terminal.d.ts.map +1 -1
  473. package/dist/Terminal.js +4 -0
  474. package/dist/Terminal.js.map +1 -1
  475. package/dist/Tracer.d.ts +23 -0
  476. package/dist/Tracer.d.ts.map +1 -1
  477. package/dist/Tracer.js +12 -0
  478. package/dist/Tracer.js.map +1 -1
  479. package/dist/Trie.d.ts +68 -0
  480. package/dist/Trie.d.ts.map +1 -1
  481. package/dist/Trie.js +28 -0
  482. package/dist/Trie.js.map +1 -1
  483. package/dist/Tuple.d.ts +38 -0
  484. package/dist/Tuple.d.ts.map +1 -1
  485. package/dist/Tuple.js +18 -0
  486. package/dist/Tuple.js.map +1 -1
  487. package/dist/TxChunk.d.ts +52 -0
  488. package/dist/TxChunk.d.ts.map +1 -1
  489. package/dist/TxChunk.js +23 -0
  490. package/dist/TxChunk.js.map +1 -1
  491. package/dist/TxDeferred.d.ts +15 -0
  492. package/dist/TxDeferred.d.ts.map +1 -1
  493. package/dist/TxDeferred.js +8 -0
  494. package/dist/TxDeferred.js.map +1 -1
  495. package/dist/TxHashMap.d.ts +83 -0
  496. package/dist/TxHashMap.d.ts.map +1 -1
  497. package/dist/TxHashMap.js +52 -7
  498. package/dist/TxHashMap.js.map +1 -1
  499. package/dist/TxHashSet.d.ts +51 -0
  500. package/dist/TxHashSet.d.ts.map +1 -1
  501. package/dist/TxHashSet.js +29 -4
  502. package/dist/TxHashSet.js.map +1 -1
  503. package/dist/TxPriorityQueue.d.ts +30 -0
  504. package/dist/TxPriorityQueue.d.ts.map +1 -1
  505. package/dist/TxPriorityQueue.js +22 -1
  506. package/dist/TxPriorityQueue.js.map +1 -1
  507. package/dist/TxPubSub.d.ts +25 -0
  508. package/dist/TxPubSub.d.ts.map +1 -1
  509. package/dist/TxPubSub.js +19 -0
  510. package/dist/TxPubSub.js.map +1 -1
  511. package/dist/TxQueue.d.ts +51 -0
  512. package/dist/TxQueue.d.ts.map +1 -1
  513. package/dist/TxQueue.js +30 -0
  514. package/dist/TxQueue.js.map +1 -1
  515. package/dist/TxReentrantLock.d.ts +24 -0
  516. package/dist/TxReentrantLock.d.ts.map +1 -1
  517. package/dist/TxReentrantLock.js +32 -18
  518. package/dist/TxReentrantLock.js.map +1 -1
  519. package/dist/TxRef.d.ts +14 -0
  520. package/dist/TxRef.d.ts.map +1 -1
  521. package/dist/TxRef.js +7 -0
  522. package/dist/TxRef.js.map +1 -1
  523. package/dist/TxSemaphore.d.ts +25 -0
  524. package/dist/TxSemaphore.d.ts.map +1 -1
  525. package/dist/TxSemaphore.js +29 -13
  526. package/dist/TxSemaphore.js.map +1 -1
  527. package/dist/TxSubscriptionRef.d.ts +25 -0
  528. package/dist/TxSubscriptionRef.d.ts.map +1 -1
  529. package/dist/TxSubscriptionRef.js +12 -0
  530. package/dist/TxSubscriptionRef.js.map +1 -1
  531. package/dist/Types.d.ts +36 -0
  532. package/dist/Types.d.ts.map +1 -1
  533. package/dist/Types.js +1 -0
  534. package/dist/UndefinedOr.d.ts +15 -0
  535. package/dist/UndefinedOr.d.ts.map +1 -1
  536. package/dist/UndefinedOr.js +9 -0
  537. package/dist/UndefinedOr.js.map +1 -1
  538. package/dist/Unify.d.ts +15 -0
  539. package/dist/Unify.d.ts.map +1 -1
  540. package/dist/Unify.js +2 -0
  541. package/dist/Unify.js.map +1 -1
  542. package/dist/Utils.d.ts +4 -0
  543. package/dist/Utils.d.ts.map +1 -1
  544. package/dist/Utils.js +1 -0
  545. package/dist/Utils.js.map +1 -1
  546. package/dist/Version.d.ts +26 -0
  547. package/dist/Version.d.ts.map +1 -0
  548. package/dist/Version.js +36 -0
  549. package/dist/Version.js.map +1 -0
  550. package/dist/ai/Chat.js +1 -1
  551. package/dist/ai/Chat.js.map +1 -1
  552. package/dist/ai/DecisionModel.d.ts +22 -0
  553. package/dist/ai/DecisionModel.d.ts.map +1 -1
  554. package/dist/ai/DecisionModel.js +22 -4
  555. package/dist/ai/DecisionModel.js.map +1 -1
  556. package/dist/ai/LanguageModel.d.ts.map +1 -1
  557. package/dist/ai/LanguageModel.js +14 -13
  558. package/dist/ai/LanguageModel.js.map +1 -1
  559. package/dist/ai/McpServer.d.ts +32 -11
  560. package/dist/ai/McpServer.d.ts.map +1 -1
  561. package/dist/ai/McpServer.js +213 -169
  562. package/dist/ai/McpServer.js.map +1 -1
  563. package/dist/ai/Telemetry.d.ts +49 -41
  564. package/dist/ai/Telemetry.d.ts.map +1 -1
  565. package/dist/ai/Telemetry.js +6 -8
  566. package/dist/ai/Telemetry.js.map +1 -1
  567. package/dist/ai/internal/mcpRuntime.js +79 -46
  568. package/dist/ai/internal/mcpRuntime.js.map +1 -1
  569. package/dist/ai/internal/mcpStatefulRuntime.js +1 -0
  570. package/dist/ai/internal/mcpStatefulRuntime.js.map +1 -1
  571. package/dist/cluster/K8sHttpClient.d.ts.map +1 -1
  572. package/dist/cluster/K8sHttpClient.js +5 -2
  573. package/dist/cluster/K8sHttpClient.js.map +1 -1
  574. package/dist/encoding/Base64.d.ts +4 -0
  575. package/dist/encoding/Base64.d.ts.map +1 -1
  576. package/dist/encoding/Base64.js +4 -0
  577. package/dist/encoding/Base64.js.map +1 -1
  578. package/dist/encoding/Base64Url.d.ts +4 -0
  579. package/dist/encoding/Base64Url.d.ts.map +1 -1
  580. package/dist/encoding/Base64Url.js +4 -0
  581. package/dist/encoding/Base64Url.js.map +1 -1
  582. package/dist/encoding/EncodingError.d.ts +4 -0
  583. package/dist/encoding/EncodingError.d.ts.map +1 -1
  584. package/dist/encoding/EncodingError.js +4 -0
  585. package/dist/encoding/EncodingError.js.map +1 -1
  586. package/dist/encoding/Hex.d.ts +5 -0
  587. package/dist/encoding/Hex.d.ts.map +1 -1
  588. package/dist/encoding/Hex.js +5 -0
  589. package/dist/encoding/Hex.js.map +1 -1
  590. package/dist/encoding/Toml.js +2 -2
  591. package/dist/encoding/Toml.js.map +1 -1
  592. package/dist/encoding/Yaml.d.ts.map +1 -1
  593. package/dist/encoding/Yaml.js +6 -4
  594. package/dist/encoding/Yaml.js.map +1 -1
  595. package/dist/encoding/index.d.ts +4 -0
  596. package/dist/encoding/index.d.ts.map +1 -1
  597. package/dist/encoding/index.js +4 -0
  598. package/dist/encoding/index.js.map +1 -1
  599. package/dist/eventlog/SqlEventJournal.js +8 -4
  600. package/dist/eventlog/SqlEventJournal.js.map +1 -1
  601. package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts +27 -10
  602. package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts.map +1 -1
  603. package/dist/eventlog/SqlEventLogServerUnencrypted.js +49 -7
  604. package/dist/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
  605. package/dist/http/Headers.d.ts +3 -1
  606. package/dist/http/Headers.d.ts.map +1 -1
  607. package/dist/http/Headers.js +4 -2
  608. package/dist/http/Headers.js.map +1 -1
  609. package/dist/http/HttpClient.d.ts +9 -0
  610. package/dist/http/HttpClient.d.ts.map +1 -1
  611. package/dist/http/HttpClient.js +40 -21
  612. package/dist/http/HttpClient.js.map +1 -1
  613. package/dist/http/HttpClientResponse.js +3 -1
  614. package/dist/http/HttpClientResponse.js.map +1 -1
  615. package/dist/http/HttpEffect.d.ts +3 -0
  616. package/dist/http/HttpEffect.d.ts.map +1 -1
  617. package/dist/http/HttpEffect.js +5 -2
  618. package/dist/http/HttpEffect.js.map +1 -1
  619. package/dist/http/HttpMiddleware.d.ts +17 -0
  620. package/dist/http/HttpMiddleware.d.ts.map +1 -1
  621. package/dist/http/HttpMiddleware.js +56 -39
  622. package/dist/http/HttpMiddleware.js.map +1 -1
  623. package/dist/http/HttpServer.d.ts +1 -1
  624. package/dist/http/HttpServer.d.ts.map +1 -1
  625. package/dist/http/internal/tracing.d.ts +2 -0
  626. package/dist/http/internal/tracing.d.ts.map +1 -0
  627. package/dist/http/internal/tracing.js +37 -0
  628. package/dist/http/internal/tracing.js.map +1 -0
  629. package/dist/http-api/HttpApiBuilder.js +2 -1
  630. package/dist/http-api/HttpApiBuilder.js.map +1 -1
  631. package/dist/http-api/HttpApiClient.d.ts +12 -3
  632. package/dist/http-api/HttpApiClient.d.ts.map +1 -1
  633. package/dist/http-api/HttpApiClient.js.map +1 -1
  634. package/dist/http-api/HttpApiError.d.ts +4 -3
  635. package/dist/http-api/HttpApiError.d.ts.map +1 -1
  636. package/dist/http-api/HttpApiError.js +7 -4
  637. package/dist/http-api/HttpApiError.js.map +1 -1
  638. package/dist/http-api/HttpApiSecurity.d.ts +8 -8
  639. package/dist/http-api/HttpApiSecurity.js +8 -8
  640. package/dist/index.d.ts +155 -0
  641. package/dist/index.d.ts.map +1 -1
  642. package/dist/index.js +155 -0
  643. package/dist/index.js.map +1 -1
  644. package/dist/internal/arbitrary/array.js +3 -3
  645. package/dist/internal/arbitrary/array.js.map +1 -1
  646. package/dist/internal/arbitrary/model.js +26 -11
  647. package/dist/internal/arbitrary/model.js.map +1 -1
  648. package/dist/internal/arbitrary/runner.js +8 -8
  649. package/dist/internal/arbitrary/runner.js.map +1 -1
  650. package/dist/internal/arbitrary/schema.js +4 -5
  651. package/dist/internal/arbitrary/schema.js.map +1 -1
  652. package/dist/internal/effect.js +41 -39
  653. package/dist/internal/effect.js.map +1 -1
  654. package/dist/internal/schedule.js +7 -5
  655. package/dist/internal/schedule.js.map +1 -1
  656. package/dist/internal/schema/standardSchema.js +2 -2
  657. package/dist/internal/schema/standardSchema.js.map +1 -1
  658. package/dist/internal/version.d.ts +2 -0
  659. package/dist/internal/version.d.ts.map +1 -0
  660. package/dist/internal/version.js +3 -0
  661. package/dist/internal/version.js.map +1 -0
  662. package/dist/observability/OtlpExporter.d.ts.map +1 -1
  663. package/dist/observability/OtlpExporter.js +5 -6
  664. package/dist/observability/OtlpExporter.js.map +1 -1
  665. package/dist/observability/OtlpLogger.d.ts.map +1 -1
  666. package/dist/observability/OtlpLogger.js +23 -27
  667. package/dist/observability/OtlpLogger.js.map +1 -1
  668. package/dist/observability/OtlpMetrics.d.ts +5 -3
  669. package/dist/observability/OtlpMetrics.d.ts.map +1 -1
  670. package/dist/observability/OtlpMetrics.js +21 -94
  671. package/dist/observability/OtlpMetrics.js.map +1 -1
  672. package/dist/observability/OtlpResource.d.ts +4 -3
  673. package/dist/observability/OtlpResource.d.ts.map +1 -1
  674. package/dist/observability/OtlpResource.js +20 -23
  675. package/dist/observability/OtlpResource.js.map +1 -1
  676. package/dist/observability/OtlpTracer.d.ts +1 -0
  677. package/dist/observability/OtlpTracer.d.ts.map +1 -1
  678. package/dist/observability/OtlpTracer.js +32 -36
  679. package/dist/observability/OtlpTracer.js.map +1 -1
  680. package/dist/observability/internal/otlpProtobuf.js +32 -1
  681. package/dist/observability/internal/otlpProtobuf.js.map +1 -1
  682. package/dist/reactivity/AsyncResult.d.ts +1 -1
  683. package/dist/reactivity/Atom.d.ts +5 -5
  684. package/dist/reactivity/Atom.d.ts.map +1 -1
  685. package/dist/reactivity/Atom.js +9 -5
  686. package/dist/reactivity/Atom.js.map +1 -1
  687. package/dist/reactivity/AtomHttpApi.d.ts +2 -2
  688. package/dist/reactivity/AtomHttpApi.d.ts.map +1 -1
  689. package/dist/reactivity/AtomRegistry.d.ts +8 -0
  690. package/dist/reactivity/AtomRegistry.d.ts.map +1 -1
  691. package/dist/reactivity/AtomRegistry.js.map +1 -1
  692. package/dist/rpc/RpcClient.d.ts +21 -3
  693. package/dist/rpc/RpcClient.d.ts.map +1 -1
  694. package/dist/rpc/RpcClient.js +38 -20
  695. package/dist/rpc/RpcClient.js.map +1 -1
  696. package/dist/rpc/RpcServer.d.ts.map +1 -1
  697. package/dist/rpc/RpcServer.js +18 -21
  698. package/dist/rpc/RpcServer.js.map +1 -1
  699. package/dist/rpc/internal/tracing.d.ts +2 -0
  700. package/dist/rpc/internal/tracing.d.ts.map +1 -0
  701. package/dist/rpc/internal/tracing.js +18 -0
  702. package/dist/rpc/internal/tracing.js.map +1 -0
  703. package/dist/schema/SchemaCompiler/runtime.js +9 -1
  704. package/dist/schema/SchemaCompiler/runtime.js.map +1 -1
  705. package/dist/sql/SqlClient.js +4 -4
  706. package/dist/sql/SqlClient.js.map +1 -1
  707. package/dist/sql/Statement.d.ts +21 -1
  708. package/dist/sql/Statement.d.ts.map +1 -1
  709. package/dist/sql/Statement.js +55 -7
  710. package/dist/sql/Statement.js.map +1 -1
  711. package/dist/testing/TestClock.d.ts +8 -0
  712. package/dist/testing/TestClock.d.ts.map +1 -1
  713. package/dist/testing/TestClock.js +7 -0
  714. package/dist/testing/TestClock.js.map +1 -1
  715. package/dist/testing/TestConsole.d.ts +7 -0
  716. package/dist/testing/TestConsole.d.ts.map +1 -1
  717. package/dist/testing/TestConsole.js +6 -0
  718. package/dist/testing/TestConsole.js.map +1 -1
  719. package/dist/testing/index.d.ts +3 -0
  720. package/dist/testing/index.d.ts.map +1 -1
  721. package/dist/testing/index.js +3 -0
  722. package/dist/testing/index.js.map +1 -1
  723. package/package.json +3 -3
  724. package/src/Array.ts +351 -3
  725. package/src/BigDecimal.ts +88 -0
  726. package/src/BigInt.ts +68 -0
  727. package/src/Boolean.ts +34 -0
  728. package/src/Brand.ts +10 -0
  729. package/src/ByteSize.ts +87 -0
  730. package/src/Cache.ts +50 -8
  731. package/src/Cause.ts +82 -0
  732. package/src/Channel.ts +368 -18
  733. package/src/ChannelSchema.ts +13 -0
  734. package/src/Chunk.ts +193 -0
  735. package/src/Clock.ts +7 -0
  736. package/src/Combiner.ts +10 -0
  737. package/src/Config.ts +82 -8
  738. package/src/ConfigProvider.ts +28 -0
  739. package/src/Console.ts +26 -0
  740. package/src/Context.ts +50 -0
  741. package/src/Cron.ts +32 -1
  742. package/src/Crypto.ts +5 -0
  743. package/src/Data.ts +13 -0
  744. package/src/DateTime.ts +171 -0
  745. package/src/Deferred.ts +51 -0
  746. package/src/Differ.ts +2 -0
  747. package/src/Duration.ts +90 -0
  748. package/src/Effect.ts +539 -5
  749. package/src/Effectable.ts +4 -0
  750. package/src/Equal.ts +12 -1
  751. package/src/Equivalence.ts +22 -0
  752. package/src/ErrorReporter.ts +36 -0
  753. package/src/ExecutionPlan.ts +58 -14
  754. package/src/Exit.ts +40 -0
  755. package/src/Fiber.ts +20 -0
  756. package/src/FiberHandle.ts +29 -4
  757. package/src/FiberMap.ts +38 -0
  758. package/src/FiberSet.ts +21 -0
  759. package/src/FileSystem.ts +16 -0
  760. package/src/Filter.ts +55 -0
  761. package/src/Formatter.ts +42 -1
  762. package/src/Function.ts +30 -0
  763. package/src/Graph.ts +317 -36
  764. package/src/HKT.ts +5 -0
  765. package/src/Hash.ts +15 -0
  766. package/src/HashMap.ts +91 -0
  767. package/src/HashRing.ts +18 -0
  768. package/src/HashSet.ts +53 -0
  769. package/src/Inspectable.ts +8 -0
  770. package/src/Iterable.ts +127 -0
  771. package/src/JsonPatch.ts +5 -0
  772. package/src/JsonPointer.ts +5 -0
  773. package/src/JsonSchema.ts +17 -0
  774. package/src/Latch.ts +14 -0
  775. package/src/Layer.ts +101 -1
  776. package/src/LayerMap.ts +7 -0
  777. package/src/LayerRef.ts +5 -0
  778. package/src/LogLevel.ts +20 -0
  779. package/src/Logger.ts +41 -5
  780. package/src/ManagedRuntime.ts +12 -1
  781. package/src/Match.ts +52 -0
  782. package/src/Metric.ts +69 -0
  783. package/src/MutableHashMap.ts +44 -0
  784. package/src/MutableHashSet.ts +17 -0
  785. package/src/MutableList.ts +21 -0
  786. package/src/MutableRef.ts +32 -0
  787. package/src/Newtype.ts +9 -0
  788. package/src/NonEmptyIterable.ts +4 -0
  789. package/src/Number.ts +61 -0
  790. package/src/Optic.ts +57 -0
  791. package/src/Option.ts +134 -0
  792. package/src/Order.ts +30 -0
  793. package/src/Ordering.ts +7 -0
  794. package/src/PartitionedSemaphore.ts +61 -22
  795. package/src/Path.ts +6 -0
  796. package/src/Pipeable.ts +7 -0
  797. package/src/PlatformError.ts +8 -0
  798. package/src/Pool.ts +20 -1
  799. package/src/Predicate.ts +85 -0
  800. package/src/PrimaryKey.ts +5 -0
  801. package/src/PubSub.ts +90 -9
  802. package/src/Pull.ts +20 -0
  803. package/src/Queue.ts +80 -10
  804. package/src/Random.ts +13 -0
  805. package/src/RcMap.ts +23 -0
  806. package/src/RcRef.ts +6 -0
  807. package/src/Record.ts +100 -0
  808. package/src/Redactable.ts +6 -0
  809. package/src/Redacted.ts +8 -0
  810. package/src/Reducer.ts +4 -0
  811. package/src/Ref.ts +42 -0
  812. package/src/References.ts +21 -0
  813. package/src/RegExp.ts +4 -0
  814. package/src/Request.ts +32 -0
  815. package/src/RequestResolver.ts +59 -10
  816. package/src/Resource.ts +7 -0
  817. package/src/Result.ts +93 -0
  818. package/src/Runtime.ts +10 -0
  819. package/src/Schedule.ts +61 -0
  820. package/src/Scheduler.ts +7 -0
  821. package/src/Schema.ts +499 -4
  822. package/src/SchemaAST.ts +115 -1
  823. package/src/SchemaGetter.ts +80 -4
  824. package/src/SchemaIssue.ts +34 -0
  825. package/src/SchemaParser.ts +26 -0
  826. package/src/SchemaRepresentation.ts +148 -0
  827. package/src/SchemaTransformation.ts +53 -0
  828. package/src/Scope.ts +19 -0
  829. package/src/ScopedCache.ts +55 -3
  830. package/src/ScopedRef.ts +9 -0
  831. package/src/Semaphore.ts +26 -0
  832. package/src/Sink.ts +126 -2
  833. package/src/StandardSchema.ts +1 -0
  834. package/src/Stdio.ts +7 -0
  835. package/src/Stream.ts +622 -15
  836. package/src/String.ts +87 -0
  837. package/src/Struct.ts +46 -0
  838. package/src/SubscriptionRef.ts +65 -0
  839. package/src/Symbol.ts +2 -0
  840. package/src/SynchronizedRef.ts +63 -0
  841. package/src/Take.ts +3 -0
  842. package/src/Terminal.ts +8 -0
  843. package/src/Tracer.ts +23 -0
  844. package/src/Trie.ts +68 -0
  845. package/src/Tuple.ts +38 -0
  846. package/src/TxChunk.ts +52 -0
  847. package/src/TxDeferred.ts +15 -0
  848. package/src/TxHashMap.ts +97 -6
  849. package/src/TxHashSet.ts +83 -3
  850. package/src/TxPriorityQueue.ts +34 -2
  851. package/src/TxPubSub.ts +26 -0
  852. package/src/TxQueue.ts +51 -0
  853. package/src/TxReentrantLock.ts +53 -36
  854. package/src/TxRef.ts +14 -0
  855. package/src/TxSemaphore.ts +47 -31
  856. package/src/TxSubscriptionRef.ts +25 -0
  857. package/src/Types.ts +36 -0
  858. package/src/UndefinedOr.ts +15 -0
  859. package/src/Unify.ts +15 -0
  860. package/src/Utils.ts +4 -0
  861. package/src/Version.ts +38 -0
  862. package/src/ai/Chat.ts +1 -1
  863. package/src/ai/DecisionModel.ts +42 -1
  864. package/src/ai/LanguageModel.ts +16 -19
  865. package/src/ai/McpServer.ts +107 -36
  866. package/src/ai/Telemetry.ts +62 -58
  867. package/src/ai/internal/mcpRuntime.ts +84 -43
  868. package/src/ai/internal/mcpStatefulRuntime.ts +2 -0
  869. package/src/cluster/K8sHttpClient.ts +12 -2
  870. package/src/encoding/Base64.ts +4 -0
  871. package/src/encoding/Base64Url.ts +4 -0
  872. package/src/encoding/EncodingError.ts +5 -0
  873. package/src/encoding/Hex.ts +5 -0
  874. package/src/encoding/Toml.ts +2 -2
  875. package/src/encoding/Yaml.ts +8 -4
  876. package/src/encoding/index.ts +4 -0
  877. package/src/eventlog/SqlEventJournal.ts +18 -4
  878. package/src/eventlog/SqlEventLogServerUnencrypted.ts +282 -235
  879. package/src/http/Headers.ts +8 -2
  880. package/src/http/HttpClient.ts +44 -27
  881. package/src/http/HttpClientResponse.ts +3 -1
  882. package/src/http/HttpEffect.ts +11 -2
  883. package/src/http/HttpMiddleware.ts +60 -45
  884. package/src/http/HttpServer.ts +1 -1
  885. package/src/http/internal/tracing.ts +52 -0
  886. package/src/http-api/HttpApiBuilder.ts +5 -1
  887. package/src/http-api/HttpApiClient.ts +13 -4
  888. package/src/http-api/HttpApiError.ts +8 -4
  889. package/src/http-api/HttpApiSecurity.ts +8 -8
  890. package/src/index.ts +156 -0
  891. package/src/internal/arbitrary/array.ts +3 -3
  892. package/src/internal/arbitrary/model.ts +37 -14
  893. package/src/internal/arbitrary/runner.ts +7 -7
  894. package/src/internal/arbitrary/schema.ts +4 -3
  895. package/src/internal/effect.ts +47 -45
  896. package/src/internal/schedule.ts +23 -17
  897. package/src/internal/schema/standardSchema.ts +2 -2
  898. package/src/internal/version.ts +2 -0
  899. package/src/observability/OtlpExporter.ts +9 -6
  900. package/src/observability/OtlpLogger.ts +20 -21
  901. package/src/observability/OtlpMetrics.ts +34 -93
  902. package/src/observability/OtlpResource.ts +18 -27
  903. package/src/observability/OtlpTracer.ts +34 -40
  904. package/src/observability/internal/otlpProtobuf.ts +60 -0
  905. package/src/reactivity/AsyncResult.ts +1 -1
  906. package/src/reactivity/Atom.ts +10 -6
  907. package/src/reactivity/AtomHttpApi.ts +2 -4
  908. package/src/reactivity/AtomRegistry.ts +7 -0
  909. package/src/rpc/RpcClient.ts +48 -24
  910. package/src/rpc/RpcServer.ts +26 -24
  911. package/src/rpc/internal/tracing.ts +22 -0
  912. package/src/schema/SchemaCompiler/runtime.ts +4 -1
  913. package/src/sql/SqlClient.ts +4 -4
  914. package/src/sql/Statement.ts +59 -7
  915. package/src/testing/TestClock.ts +9 -0
  916. package/src/testing/TestConsole.ts +8 -0
  917. package/src/testing/index.ts +3 -0
@@ -13,8 +13,9 @@
13
13
  */
14
14
  import type { NonEmptyReadonlyArray } from "../Array.ts"
15
15
  import * as Cause from "../Cause.ts"
16
+ import * as Clock from "../Clock.ts"
16
17
  import * as Context from "../Context.ts"
17
- import type * as Duration from "../Duration.ts"
18
+ import * as Duration from "../Duration.ts"
18
19
  import * as Effect from "../Effect.ts"
19
20
  import * as Exit from "../Exit.ts"
20
21
  import * as Fiber from "../Fiber.ts"
@@ -42,6 +43,7 @@ import type { Span } from "../Tracer.ts"
42
43
  import * as Transferable from "../workers/Transferable.ts"
43
44
  import * as Worker from "../workers/Worker.ts"
44
45
  import type { WorkerError } from "../workers/WorkerError.ts"
46
+ import * as RpcTracing from "./internal/tracing.ts"
45
47
  import * as Rpc from "./Rpc.ts"
46
48
  import { RpcClientDefect, RpcClientError } from "./RpcClientError.ts"
47
49
  import type * as RpcGroup from "./RpcGroup.ts"
@@ -267,7 +269,7 @@ export const makeNoSerialization: <Rpcs extends Rpc.Any, E, const Flatten extend
267
269
  readonly flatten?: Flatten | undefined
268
270
  }
269
271
  ) {
270
- const spanPrefix = options?.spanPrefix ?? "RpcClient"
272
+ const spanPrefix = options.spanPrefix
271
273
  const supportsAck = options?.supportsAck ?? true
272
274
  const disableTracing = options?.disableTracing ?? false
273
275
  const generateRequestId = options?.generateRequestId ?? (() => requestIdCounter++ as RequestId)
@@ -335,8 +337,8 @@ export const makeNoSerialization: <Rpcs extends Rpc.Any, E, const Flatten extend
335
337
  opts?.discard ?? false
336
338
  )
337
339
  return disableTracing ? onRequest(undefined) : Effect.useSpan(
338
- `${spanPrefix}.${rpc._tag}`,
339
- { attributes: options.spanAttributes },
340
+ RpcTracing.spanName(spanPrefix, rpc._tag),
341
+ { kind: "client", attributes: RpcTracing.spanAttributes(rpc._tag, options.spanAttributes) },
340
342
  onRequest
341
343
  )
342
344
  }
@@ -447,9 +449,10 @@ export const makeNoSerialization: <Rpcs extends Rpc.Any, E, const Flatten extend
447
449
  return yield* Effect.interrupt
448
450
  }
449
451
 
450
- const span = disableTracing ? undefined : yield* Effect.makeSpanScoped(`${spanPrefix}.${rpc._tag}`, {
451
- attributes: options.spanAttributes
452
- })
452
+ const span = disableTracing ? undefined : yield* Effect.makeSpanScoped(
453
+ RpcTracing.spanName(spanPrefix, rpc._tag),
454
+ { kind: "client", attributes: RpcTracing.spanAttributes(rpc._tag, options.spanAttributes) }
455
+ )
453
456
  const fiber = Fiber.getCurrent()!
454
457
  const id = generateRequestId()
455
458
 
@@ -1046,16 +1049,24 @@ export const layerProtocolHttp = (options: {
1046
1049
  * `RpcSerialization`, connection hooks, ping timeouts, and the configured retry
1047
1050
  * policy.
1048
1051
  *
1052
+ * **Details**
1053
+ *
1054
+ * `pingInterval` defaults to 5 seconds. `pingTimeout` defaults to the interval
1055
+ * and measures time since the last decoded server frame, not the last pong.
1056
+ * The timeout is checked on each ping tick; any decoded frame counts as liveness.
1057
+ *
1049
1058
  * @stability unstable
1050
1059
  * @category protocols
1051
1060
  * @since 4.0.0
1052
1061
  */
1053
1062
  export const makeProtocolSocket = (options?: {
1063
+ readonly pingInterval?: Duration.Input | undefined
1064
+ readonly pingTimeout?: Duration.Input | undefined
1054
1065
  readonly retryTransientErrors?: boolean | undefined
1055
1066
  readonly retryPolicy?: Schedule.Schedule<any, Socket.SocketError> | undefined
1056
1067
  /**
1057
1068
  * Runs for each retried `SocketOpenError` when `retryTransientErrors` is enabled.
1058
- * A missed pong fails in-flight calls and is not reported through this hook.
1069
+ * A ping timeout fails in-flight calls and is not reported through this hook.
1059
1070
  * The returned `Effect<void>` cannot fail with a typed error or require
1060
1071
  * services; defects are logged and ignored so retries can continue.
1061
1072
  */
@@ -1078,7 +1089,7 @@ export const makeProtocolSocket = (options?: {
1078
1089
  // `parser` is replaced on every connect, and a stateful serialization
1079
1090
  // encodes against the connection it is writing to, so the ping is encoded
1080
1091
  // when it is sent rather than once up front.
1081
- const pinger = yield* makePinger(Effect.suspend(() => writer.write(parser.encode(constPing)!)))
1092
+ const pinger = yield* makePinger(Effect.suspend(() => writer.write(parser.encode(constPing)!)), options)
1082
1093
  let currentError: RpcClientError | undefined
1083
1094
 
1084
1095
  const broadcast = (response: FromServerEncoded) =>
@@ -1095,15 +1106,13 @@ export const makeProtocolSocket = (options?: {
1095
1106
  try {
1096
1107
  const responses = parser.decode(data) as Array<FromServerEncoded>
1097
1108
  if (responses.length === 0) return Effect.void
1109
+ pinger.onFrame()
1098
1110
  let i = 0
1099
1111
  return Effect.whileLoop({
1100
1112
  while: () => i < responses.length,
1101
1113
  body: () => {
1102
1114
  const response = responses[i++]
1103
- if (response._tag === "Pong") {
1104
- pinger.onPong()
1105
- return Effect.void
1106
- }
1115
+ if (response._tag === "Pong") return Effect.void
1107
1116
  if (Object.hasOwn(response, "requestId")) {
1108
1117
  const requestId = (response as FromServerEncoded & { readonly requestId: string | number }).requestId
1109
1118
  const clientId = requestClientMap.get(requestId)
@@ -1218,43 +1227,58 @@ const defaultRetryPolicy = Schedule.min([
1218
1227
  Schedule.spaced(5000)
1219
1228
  ])
1220
1229
 
1221
- const makePinger = Effect.fnUntraced(function*<A, E, R>(writePing: Effect.Effect<A, E, R>) {
1222
- let recievedPong = true
1230
+ const makePinger = Effect.fnUntraced(function*<A, E, R>(writePing: Effect.Effect<A, E, R>, options?: {
1231
+ readonly pingInterval?: Duration.Input | undefined
1232
+ readonly pingTimeout?: Duration.Input | undefined
1233
+ }) {
1234
+ const clock = yield* Clock.Clock
1235
+ const interval = options?.pingInterval ?? "5 seconds"
1236
+ const timeoutMillis = Duration.toMillis(options?.pingTimeout ?? interval)
1237
+ let lastSeen = clock.currentTimeMillisUnsafe()
1223
1238
  const latch = Latch.makeUnsafe()
1239
+ const onFrame = () => {
1240
+ lastSeen = clock.currentTimeMillisUnsafe()
1241
+ }
1224
1242
  const reset = () => {
1225
- recievedPong = true
1243
+ onFrame()
1226
1244
  latch.closeUnsafe()
1227
1245
  }
1228
- const onPong = () => {
1229
- recievedPong = true
1230
- }
1231
1246
  yield* Effect.suspend((): Effect.Effect<void, E, R> => {
1232
- if (!recievedPong) return latch.open
1233
- recievedPong = false
1247
+ if (clock.currentTimeMillisUnsafe() - lastSeen > timeoutMillis) return latch.open
1234
1248
  return writePing
1235
1249
  }).pipe(
1236
- Effect.delay("5 seconds"),
1250
+ Effect.delay(interval),
1237
1251
  Effect.ignore,
1238
1252
  Effect.forever,
1239
1253
  Effect.interruptible,
1240
1254
  Effect.forkScoped
1241
1255
  )
1242
- return { timeout: latch.await, reset, onPong } as const
1256
+ return { timeout: latch.await, reset, onFrame } as const
1243
1257
  })
1244
1258
 
1245
1259
  /**
1246
1260
  * Provides a client `Protocol` backed by the current `Socket` and
1247
1261
  * `RpcSerialization` services.
1248
1262
  *
1263
+ * **Details**
1264
+ *
1265
+ * `pingInterval` defaults to 5 seconds. `pingTimeout` defaults to the interval
1266
+ * and measures time since the last decoded server frame, not the last pong.
1267
+ * The timeout is checked on each ping tick; any decoded frame counts as liveness.
1268
+ * `retryPolicy` configures retries after socket errors.
1269
+ *
1249
1270
  * @stability unstable
1250
1271
  * @category layers
1251
1272
  * @since 4.0.0
1252
1273
  */
1253
1274
  export const layerProtocolSocket = (options?: {
1275
+ readonly pingInterval?: Duration.Input | undefined
1276
+ readonly pingTimeout?: Duration.Input | undefined
1254
1277
  readonly retryTransientErrors?: boolean | undefined
1278
+ readonly retryPolicy?: Schedule.Schedule<any, Socket.SocketError> | undefined
1255
1279
  /**
1256
1280
  * Runs for each retried `SocketOpenError` when `retryTransientErrors` is enabled.
1257
- * A missed pong fails in-flight calls and is not reported through this hook.
1281
+ * A ping timeout fails in-flight calls and is not reported through this hook.
1258
1282
  * The returned `Effect<void>` cannot fail with a typed error or require
1259
1283
  * services; defects are logged and ignored so retries can continue.
1260
1284
  */
@@ -44,6 +44,7 @@ import type * as Types from "../Types.ts"
44
44
  import * as Transferable from "../workers/Transferable.ts"
45
45
  import type { WorkerError } from "../workers/WorkerError.ts"
46
46
  import * as WorkerRunner from "../workers/WorkerRunner.ts"
47
+ import * as RpcTracing from "./internal/tracing.ts"
47
48
  import * as Rpc from "./Rpc.ts"
48
49
  import type * as RpcGroup from "./RpcGroup.ts"
49
50
  import type {
@@ -117,7 +118,7 @@ export const makeNoSerialization: <Rpcs extends Rpc.Any>(
117
118
  const enableTracing = options.disableTracing !== true
118
119
  const enableSpanPropagation = options.disableSpanPropagation !== true
119
120
  const supportsAck = options.disableClientAcks !== true
120
- const spanPrefix = options.spanPrefix ?? "RpcServer"
121
+ const spanPrefix = options.spanPrefix
121
122
  const concurrency = options.concurrency ?? "unbounded"
122
123
  const disableFatalDefects = options.disableFatalDefects ?? false
123
124
  const services = yield* Effect.context<Rpc.ToHandler<Rpcs> | Scope.Scope>()
@@ -331,9 +332,10 @@ export const makeNoSerialization: <Rpcs extends Rpc.Any>(
331
332
  requestFiber.context,
332
333
  Tracer.ParentSpan
333
334
  )
334
- effect = Effect.withSpan(effect, `${spanPrefix}.${request.tag}`, {
335
+ effect = Effect.withSpan(effect, RpcTracing.spanName(spanPrefix, request.tag), {
335
336
  captureStackTrace: false,
336
- attributes: options.spanAttributes,
337
+ kind: "server",
338
+ attributes: RpcTracing.spanAttributes(request.tag, options.spanAttributes),
337
339
  parent: enableSpanPropagation && request.spanId
338
340
  ? Tracer.externalSpan({
339
341
  traceId: request.traceId!,
@@ -359,11 +361,14 @@ export const makeNoSerialization: <Rpcs extends Rpc.Any>(
359
361
  )
360
362
  const fiber = trackFiber(
361
363
  runFork(
362
- effect,
364
+ // Register before the handler runs to catch synchronous cancellation.
365
+ Effect.withFiber((fiber) => {
366
+ client.fibers.set(request.id, fiber)
367
+ return effect
368
+ }),
363
369
  isUninterruptible ? { uninterruptible: true } : undefined
364
370
  )
365
371
  )
366
- client.fibers.set(request.id, fiber)
367
372
  fiber.addObserver(function onExit(exit: Exit.Exit<any, any>): void {
368
373
  if (deferred) {
369
374
  const fiber = trackFiber(runFork(Effect.onExit(Deferred.await(deferred), (exit) =>
@@ -564,6 +569,10 @@ export const make: <Rpcs extends Rpc.Any>(
564
569
  supportsTransferables
565
570
  } = yield* Protocol
566
571
  const encodeDefectUnsafe = Schema.encodeSync(codecFor(Schema.Defect()))
572
+ // Unknown tags have no RPC schema, so use a defect-only exit schema.
573
+ const encodeUnknownRequestExit: Schemas["encodeExit"] = Schema.encodeUnknownEffect(
574
+ codecFor(Schema.Exit(Schema.Never, Schema.Never, Schema.Defect()))
575
+ ) as any
567
576
  const services = yield* Effect.context<Rpc.ToHandler<Rpcs> | Rpc.Middleware<Rpcs>>()
568
577
  const scope = yield* Scope.make()
569
578
 
@@ -629,7 +638,6 @@ export const make: <Rpcs extends Rpc.Any>(
629
638
  u: NonEmptyReadonlyArray<unknown>
630
639
  ) => Effect.Effect<NonEmptyReadonlyArray<unknown>, Schema.SchemaError>
631
640
  readonly encodeExit: (u: unknown) => Effect.Effect<ResponseExitEncoded["exit"], Schema.SchemaError>
632
- readonly encodeDefect: (u: unknown) => Effect.Effect<unknown, Schema.SchemaError>
633
641
  readonly context: Context.Context<never>
634
642
  readonly collector?: Transferable.Collector["Service"] | undefined
635
643
  }
@@ -648,7 +656,6 @@ export const make: <Rpcs extends Rpc.Any>(
648
656
  )
649
657
  ) as any,
650
658
  encodeExit: Schema.encodeUnknownEffect(codecFor(Rpc.exitSchema(rpc as any))) as any,
651
- encodeDefect: Schema.encodeUnknownEffect(codecFor(rpc.defectSchema)) as any,
652
659
  context: entry.context
653
660
  }
654
661
  schemasCache.set(rpc, schemas)
@@ -694,7 +701,7 @@ export const make: <Rpcs extends Rpc.Any>(
694
701
  client.schemas.delete(requestId)
695
702
  const defect = Cause.squash(Cause.map(cause, (e) => SchemaIssue.defaultFormatter(e.issue)))
696
703
  return Effect.andThen(
697
- sendRequestDefect(client, requestId, schemas.encodeDefect, defect),
704
+ sendRequestDefect(client, requestId, schemas.encodeExit, defect),
698
705
  server.write(client.id, { _tag: "Interrupt", requestId, interruptors: [] })
699
706
  )
700
707
  })
@@ -703,22 +710,14 @@ export const make: <Rpcs extends Rpc.Any>(
703
710
  const sendRequestDefect = (
704
711
  client: Client,
705
712
  requestId: RequestId,
706
- encodeDefect: (u: unknown) => Effect.Effect<unknown, Schema.SchemaError>,
713
+ encodeExit: Schemas["encodeExit"],
707
714
  defect: unknown
708
715
  ) =>
709
716
  Effect.catchCause(
710
- Effect.flatMap(encodeDefect(defect), (encodedDefect) =>
711
- send(client.id, {
712
- _tag: "Exit",
713
- requestId,
714
- exit: {
715
- _tag: "Failure",
716
- cause: [{
717
- _tag: "Die",
718
- defect: encodedDefect
719
- }]
720
- }
721
- })),
717
+ Effect.flatMap(
718
+ encodeExit(Exit.die(defect)),
719
+ (exit) => send(client.id, responseEnvelope(requestId, "Exit", exit))
720
+ ),
722
721
  (cause) => sendDefect(client, Cause.squash(cause))
723
722
  )
724
723
 
@@ -784,7 +783,7 @@ export const make: <Rpcs extends Rpc.Any>(
784
783
  }
785
784
  const rpc = group.requests.get(tag)
786
785
  if (!rpc) {
787
- return sendRequestDefect(client, requestId, (defect) => Effect.succeed(defect), `Unknown request tag: ${tag}`)
786
+ return sendRequestDefect(client, requestId, encodeUnknownRequestExit, `Unknown request tag: ${tag}`)
788
787
  }
789
788
  const schemas = getSchemas(rpc as any)
790
789
  const decoded = schemas.decode(request.payload)
@@ -798,7 +797,7 @@ export const make: <Rpcs extends Rpc.Any>(
798
797
  Effect.provideContext(decoded, schemas.context),
799
798
  {
800
799
  onFailure: (error) =>
801
- sendRequestDefect(client, requestId, schemas.encodeDefect, SchemaIssue.defaultFormatter(error.issue)),
800
+ sendRequestDefect(client, requestId, schemas.encodeExit, SchemaIssue.defaultFormatter(error.issue)),
802
801
  onSuccess: (payload) => writeDecodedRequest(client, requestId, schemas, request, payload)
803
802
  }
804
803
  )
@@ -1181,7 +1180,10 @@ export const makeProtocolWithHttpEffect: (
1181
1180
  })
1182
1181
  }
1183
1182
 
1184
- const initialChunk = yield* Queue.takeAll(queue) as any as Effect.Effect<NonEmptyReadonlyArray<Uint8Array>>
1183
+ const initialChunk = yield* Pull.catchDone(
1184
+ Queue.takeAll(queue as Queue.Dequeue<Uint8Array, Cause.Done>),
1185
+ () => Effect.succeed([])
1186
+ )
1185
1187
  if (queue.state._tag === "Done") {
1186
1188
  return HttpServerResponse.uint8Array(mergeUint8Arrays(initialChunk), {
1187
1189
  contentType: serialization.contentType
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Names the span after the RPC method, or `${spanPrefix}.${tag}` when a prefix
3
+ * is configured.
4
+ *
5
+ * @internal
6
+ */
7
+ export const spanName = (spanPrefix: string | undefined, tag: string): string =>
8
+ spanPrefix === undefined ? tag : `${spanPrefix}.${tag}`
9
+
10
+ /**
11
+ * Default RPC span attributes, overridden by user `spanAttributes`.
12
+ *
13
+ * @internal
14
+ */
15
+ export const spanAttributes = (
16
+ tag: string,
17
+ attributes: Record<string, unknown> | undefined
18
+ ): Record<string, unknown> => ({
19
+ "rpc.system.name": "effect_rpc",
20
+ "rpc.method": tag,
21
+ ...attributes
22
+ })
@@ -65,12 +65,15 @@ const makeObjectBase = (
65
65
  const runFallback: SchemaIssueParser = (input, options) =>
66
66
  (fallback ??= ast.getParser(compile, compileField))(input, options)
67
67
  const resume = (
68
- state: ObjectParserState,
68
+ snapshot: ObjectParserState,
69
69
  index: number,
70
70
  pending: Effect.Effect<unknown, SchemaIssue.Issue, any>
71
71
  ): Effect.Effect<unknown, SchemaIssue.Issue, any> => {
72
72
  const property = properties![index]
73
73
  return Effect.flatMap(Effect.exit(pending), (exit) => {
74
+ // Each execution gets its own output; `issues` is still undefined here
75
+ // because `errors: "all"` is routed to the fallback before suspending.
76
+ const state: ObjectParserState = { ...snapshot, out: { ...snapshot.out } }
74
77
  const terminal = SchemaAST.stepProperty(state, property, exit)
75
78
  if (terminal) return terminal
76
79
  const done = () => InternalParser.succeed(state.out)
@@ -394,7 +394,7 @@ export const makeWithTransaction = <I, S>(options: {
394
394
  Effect.uninterruptibleMask((restore) =>
395
395
  Effect.useSpan(
396
396
  "sql.transaction",
397
- { kind: "client" },
397
+ { kind: "internal" },
398
398
  (span) =>
399
399
  Effect.withFiber<A, E | SqlError, R>((fiber) => {
400
400
  for (const [key, value] of options.spanAttributes) {
@@ -427,18 +427,18 @@ export const makeWithTransaction = <I, S>(options: {
427
427
  let effect: Effect.Effect<void>
428
428
  if (Exit.isSuccess(exit)) {
429
429
  if (id === 0) {
430
- span.event("db.transaction.commit", clock.currentTimeNanosUnsafe())
430
+ span.event("effect.sql.transaction.commit", clock.currentTimeNanosUnsafe())
431
431
  const onCommitFailure = options.onCommitFailure
432
432
  effect = Effect.orDie(options.commit(conn))
433
433
  if (onCommitFailure) {
434
434
  effect = Effect.onError(effect, () => Effect.orDie(onCommitFailure(conn)))
435
435
  }
436
436
  } else {
437
- span.event("db.transaction.savepoint", clock.currentTimeNanosUnsafe())
437
+ span.event("effect.sql.transaction.savepoint", clock.currentTimeNanosUnsafe())
438
438
  effect = Effect.void
439
439
  }
440
440
  } else {
441
- span.event("db.transaction.rollback", clock.currentTimeNanosUnsafe())
441
+ span.event("effect.sql.transaction.rollback", clock.currentTimeNanosUnsafe())
442
442
  effect = Effect.orDie(
443
443
  id > 0
444
444
  ? options.rollbackSavepoint(conn, id)
@@ -114,7 +114,7 @@ export const CurrentTransformer = Context.Reference<Transformer | undefined>("ef
114
114
  })
115
115
 
116
116
  /**
117
- * Parents driver spans under `sql.execute` for every client in the current scope,
117
+ * Parents driver spans under the statement span for every client in the current scope,
118
118
  * including acquisition and stream pulls. Defaults to `false`; ignored when tracing is disabled.
119
119
  *
120
120
  * @stability unstable
@@ -1285,10 +1285,62 @@ export const defaultTransforms = (
1285
1285
  } as const
1286
1286
  }
1287
1287
 
1288
+ /**
1289
+ * Returns the OpenTelemetry database span target for a client with the given
1290
+ * span attributes: `db.namespace`, then `server.address[:server.port]`, or
1291
+ * `undefined` when neither is set.
1292
+ *
1293
+ * @stability unstable
1294
+ * @category tracing
1295
+ * @since 4.0.1
1296
+ */
1297
+ export const spanTarget = (spanAttributes: ReadonlyArray<readonly [string, unknown]>): string | undefined => {
1298
+ const namespace = spanAttribute(spanAttributes, "db.namespace")
1299
+ if (isNonEmptyString(namespace)) {
1300
+ return namespace
1301
+ }
1302
+ const address = spanAttribute(spanAttributes, "server.address")
1303
+ if (isNonEmptyString(address)) {
1304
+ const port = spanAttribute(spanAttributes, "server.port")
1305
+ return port === undefined ? address : `${address}:${port}`
1306
+ }
1307
+ return undefined
1308
+ }
1309
+
1310
+ /**
1311
+ * Returns the span name for statements run by a client with the given span
1312
+ * attributes, following the OpenTelemetry database span conventions: the
1313
+ * {@link spanTarget}, then `db.system.name`, falling back to `sql.execute`.
1314
+ *
1315
+ * @stability unstable
1316
+ * @category tracing
1317
+ * @since 4.0.1
1318
+ */
1319
+ export const spanName = (spanAttributes: ReadonlyArray<readonly [string, unknown]>): string => {
1320
+ const target = spanTarget(spanAttributes)
1321
+ if (target !== undefined) {
1322
+ return target
1323
+ }
1324
+ const system = spanAttribute(spanAttributes, "db.system.name")
1325
+ return isNonEmptyString(system) ? system : "sql.execute"
1326
+ }
1327
+
1288
1328
  // internal
1289
1329
 
1290
- const ATTR_DB_OPERATION_NAME = "db.operation.name"
1291
1330
  const ATTR_DB_QUERY_TEXT = "db.query.text"
1331
+ const ATTR_SQL_METHOD = "effect.sql.method"
1332
+
1333
+ // the last value wins, matching the order the attributes are applied to spans
1334
+ const spanAttribute = (spanAttributes: ReadonlyArray<readonly [string, unknown]>, key: string): unknown => {
1335
+ for (let i = spanAttributes.length - 1; i >= 0; i--) {
1336
+ if (spanAttributes[i][0] === key) {
1337
+ return spanAttributes[i][1]
1338
+ }
1339
+ }
1340
+ return undefined
1341
+ }
1342
+
1343
+ const isNonEmptyString = (u: unknown): u is string => typeof u === "string" && u.length > 0
1292
1344
 
1293
1345
  interface StatementImpl<A> extends Statement<A> {
1294
1346
  readonly segments: ReadonlyArray<Segment>
@@ -1354,7 +1406,7 @@ const StatementProto: Omit<
1354
1406
  withoutTransform = false
1355
1407
  ): Effect.Effect<XA, E | SqlError> {
1356
1408
  return Effect.useSpan(
1357
- "sql.execute",
1409
+ spanName(this.spanAttributes),
1358
1410
  { kind: "client" },
1359
1411
  (span) =>
1360
1412
  this.withConnectionSpan(
@@ -1381,7 +1433,7 @@ const StatementProto: Omit<
1381
1433
  for (const [key, value] of this.spanAttributes) {
1382
1434
  span.attribute(key, value)
1383
1435
  }
1384
- span.attribute(ATTR_DB_OPERATION_NAME, operation)
1436
+ span.attribute(ATTR_SQL_METHOD, operation)
1385
1437
  span.attribute(ATTR_DB_QUERY_TEXT, sql)
1386
1438
  const execute = this.borrower === undefined
1387
1439
  ? Effect.scoped(Effect.flatMap(this.acquirer, (_) => f(_, sql, params)))
@@ -1411,14 +1463,14 @@ const StatementProto: Omit<
1411
1463
  get stream(): Stream.Stream<any, SqlError> {
1412
1464
  const self = this as StatementImpl<any>
1413
1465
  return Stream.unwrap(Effect.flatMap(
1414
- Effect.makeSpanScoped("sql.execute", { kind: "client" }),
1466
+ Effect.makeSpanScoped(spanName(self.spanAttributes), { kind: "client" }),
1415
1467
  (span) =>
1416
1468
  withStatement(self, span, (statement, fiber) => {
1417
1469
  const [sql, params] = statement.compile()
1418
1470
  for (const [key, value] of self.spanAttributes) {
1419
1471
  span.attribute(key, value)
1420
1472
  }
1421
- span.attribute(ATTR_DB_OPERATION_NAME, "executeStream")
1473
+ span.attribute(ATTR_SQL_METHOD, "executeStream")
1422
1474
  span.attribute(ATTR_DB_QUERY_TEXT, sql)
1423
1475
  const acquire = Effect.map(self.acquirer, (_) => _.executeStream(sql, params, self.transformRows))
1424
1476
  return fiber.cache.tracerEnabled && fiber.getRef(SpanPropagationEnabled)
@@ -1456,7 +1508,7 @@ const StatementProto: Omit<
1456
1508
  ...Effectable.Prototype<StatementImpl<any>>({
1457
1509
  label: "Statement",
1458
1510
  evaluate(fiber) {
1459
- const span = internalEffect.makeSpanUnsafe(fiber, "sql.execute", { kind: "client" })
1511
+ const span = internalEffect.makeSpanUnsafe(fiber, spanName(this.spanAttributes), { kind: "client" })
1460
1512
  const clock = fiber.getRef(Clock)
1461
1513
  const timingEnabled = fiber.getRef(TracerTimingEnabled)
1462
1514
  return Effect.onExit(
@@ -8,6 +8,7 @@
8
8
  * live clock, and warning when a test appears to be waiting on time without
9
9
  * advancing it.
10
10
  *
11
+ * @stability stable
11
12
  * @since 2.0.0
12
13
  */
13
14
  import * as Arr from "../Array.ts"
@@ -88,6 +89,7 @@ import * as Semaphore from "../Semaphore.ts"
88
89
  * await Effect.runPromise(Effect.provide(program, TestClock.layer()))
89
90
  * ```
90
91
  *
92
+ * @stability stable
91
93
  * @category models
92
94
  * @since 2.0.0
93
95
  */
@@ -133,6 +135,7 @@ export interface TestClock extends Clock.Clock {
133
135
  * await Effect.runPromise(Effect.scoped(program))
134
136
  * ```
135
137
  *
138
+ * @stability stable
136
139
  * @since 2.0.0
137
140
  */
138
141
  export declare namespace TestClock {
@@ -238,6 +241,7 @@ const millisToNanos = (millis: number): bigint => {
238
241
  * await Effect.runPromise(Effect.scoped(program))
239
242
  * ```
240
243
  *
244
+ * @stability stable
241
245
  * @category constructors
242
246
  * @since 4.0.0
243
247
  */
@@ -430,6 +434,7 @@ export const make = Effect.fnUntraced(function*(
430
434
  * await Effect.runPromise(Effect.provide(program, customTestClockLayer)) // => 3_600_000
431
435
  * ```
432
436
  *
437
+ * @stability stable
433
438
  * @category layers
434
439
  * @since 4.0.0
435
440
  */
@@ -463,6 +468,7 @@ export const layer: (options?: TestClock.Options) => Layer.Layer<TestClock> = fl
463
468
  * await Effect.runPromise(Effect.provide(program, TestClock.layer()))
464
469
  * ```
465
470
  *
471
+ * @stability stable
466
472
  * @category testing
467
473
  * @since 2.0.0
468
474
  */
@@ -501,6 +507,7 @@ export const testClockWith = <A, E, R>(
501
507
  * await Effect.runPromise(Effect.provide(program, TestClock.layer()))
502
508
  * ```
503
509
  *
510
+ * @stability stable
504
511
  * @category testing
505
512
  * @since 2.0.0
506
513
  */
@@ -538,6 +545,7 @@ export const adjust = (duration: Duration.Input): Effect.Effect<void> =>
538
545
  * await Effect.runPromise(Effect.provide(program, TestClock.layer()))
539
546
  * ```
540
547
  *
548
+ * @stability stable
541
549
  * @category testing
542
550
  * @since 2.0.0
543
551
  */
@@ -574,6 +582,7 @@ export const setTime = (timestamp: number): Effect.Effect<void> =>
574
582
  * await Effect.runPromise(Effect.provide(program, TestClock.layer()))
575
583
  * ```
576
584
  *
585
+ * @stability stable
577
586
  * @category testing
578
587
  * @since 4.0.0
579
588
  */
@@ -7,6 +7,7 @@
7
7
  * console layer, helpers for reading captured `Console.log` and `Console.error`
8
8
  * arguments, and access to the provided test console service.
9
9
  *
10
+ * @stability unstable
10
11
  * @since 4.0.0
11
12
  */
12
13
  import * as Array from "../Array.ts"
@@ -53,6 +54,7 @@ import * as Layer from "../Layer.ts"
53
54
  * @see {@link logLines} for reading captured `Console.log` calls
54
55
  * @see {@link errorLines} for reading captured `Console.error` calls
55
56
  *
57
+ * @stability unstable
56
58
  * @category models
57
59
  * @since 4.0.0
58
60
  */
@@ -87,6 +89,7 @@ export interface TestConsole extends Console.Console {
87
89
  *
88
90
  * Use when referring to types nested under the `TestConsole` namespace.
89
91
  *
92
+ * @stability unstable
90
93
  * @since 4.0.0
91
94
  */
92
95
  export declare namespace TestConsole {
@@ -173,6 +176,7 @@ export declare namespace TestConsole {
173
176
  *
174
177
  * @see {@link layer} for providing a `TestConsole` as a `Layer`
175
178
  *
179
+ * @stability unstable
176
180
  * @category constructors
177
181
  * @since 4.0.0
178
182
  */
@@ -250,6 +254,7 @@ export const make = Effect.gen(function*() {
250
254
  * @see {@link logLines} for reading captured `Console.log` calls directly
251
255
  * @see {@link errorLines} for reading captured `Console.error` calls directly
252
256
  *
257
+ * @stability unstable
253
258
  * @category testing
254
259
  * @since 4.0.0
255
260
  */
@@ -288,6 +293,7 @@ export const testConsoleWith = <A, E, R>(f: (console: TestConsole) => Effect.Eff
288
293
  * @see {@link make} for constructing the service value directly
289
294
  * @see {@link testConsoleWith} for accessing the provided test console service
290
295
  *
296
+ * @stability unstable
291
297
  * @category layers
292
298
  * @since 4.0.0
293
299
  */
@@ -324,6 +330,7 @@ export const layer: Layer.Layer<TestConsole> = Layer.effect(Console.Console)(mak
324
330
  * @see {@link errorLines} for reading captured `Console.error` output
325
331
  * @see {@link layer} for capturing console calls during a test
326
332
  *
333
+ * @stability unstable
327
334
  * @category testing
328
335
  * @since 4.0.0
329
336
  */
@@ -362,6 +369,7 @@ export const logLines: Effect.Effect<ReadonlyArray<unknown>, never, never> = tes
362
369
  * @see {@link logLines} for reading captured `Console.log` output
363
370
  * @see {@link layer} for capturing console calls during a test
364
371
  *
372
+ * @stability unstable
365
373
  * @category testing
366
374
  * @since 4.0.0
367
375
  */
@@ -1,15 +1,18 @@
1
1
  /**
2
+ * @stability unstable
2
3
  * @since 4.0.0
3
4
  */
4
5
 
5
6
  // @barrel: Auto-generated exports. Do not edit manually.
6
7
 
7
8
  /**
9
+ * @stability stable
8
10
  * @since 2.0.0
9
11
  */
10
12
  export * as TestClock from "./TestClock.ts"
11
13
 
12
14
  /**
15
+ * @stability unstable
13
16
  * @since 4.0.0
14
17
  */
15
18
  export * as TestConsole from "./TestConsole.ts"