effect 4.0.0 → 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 (1001) 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 +47 -23
  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 +61 -1
  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 +677 -22
  99. package/dist/Effect.d.ts.map +1 -1
  100. package/dist/Effect.js +251 -10
  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 +22 -5
  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 +28 -5
  297. package/dist/Pool.d.ts.map +1 -1
  298. package/dist/Pool.js +42 -42
  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 +24 -1
  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 +50 -19
  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 +603 -6
  444. package/dist/Stream.d.ts.map +1 -1
  445. package/dist/Stream.js +316 -57
  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 +8 -0
  557. package/dist/ai/LanguageModel.d.ts.map +1 -1
  558. package/dist/ai/LanguageModel.js +27 -15
  559. package/dist/ai/LanguageModel.js.map +1 -1
  560. package/dist/ai/McpSchema.d.ts +508 -508
  561. package/dist/ai/McpSchema.d.ts.map +1 -1
  562. package/dist/ai/McpSchema.js +1 -1
  563. package/dist/ai/McpSchema.js.map +1 -1
  564. package/dist/ai/McpServer.d.ts +32 -11
  565. package/dist/ai/McpServer.d.ts.map +1 -1
  566. package/dist/ai/McpServer.js +224 -172
  567. package/dist/ai/McpServer.js.map +1 -1
  568. package/dist/ai/Response.d.ts.map +1 -1
  569. package/dist/ai/Response.js +22 -12
  570. package/dist/ai/Response.js.map +1 -1
  571. package/dist/ai/Telemetry.d.ts +49 -41
  572. package/dist/ai/Telemetry.d.ts.map +1 -1
  573. package/dist/ai/Telemetry.js +6 -8
  574. package/dist/ai/Telemetry.js.map +1 -1
  575. package/dist/ai/internal/mcpProtocol/v2024_11_05.js +1 -0
  576. package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
  577. package/dist/ai/internal/mcpProtocol/v2025_03_26.js +1 -0
  578. package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
  579. package/dist/ai/internal/mcpProtocol/v2025_06_18.js +1 -0
  580. package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
  581. package/dist/ai/internal/mcpProtocol/v2025_11_25.js +1 -0
  582. package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
  583. package/dist/ai/internal/mcpRuntime.js +79 -46
  584. package/dist/ai/internal/mcpRuntime.js.map +1 -1
  585. package/dist/ai/internal/mcpSchema/v2024_11_05.js +3 -1
  586. package/dist/ai/internal/mcpSchema/v2024_11_05.js.map +1 -1
  587. package/dist/ai/internal/mcpStatefulRuntime.js +1 -0
  588. package/dist/ai/internal/mcpStatefulRuntime.js.map +1 -1
  589. package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  590. package/dist/cluster/ClusterWorkflowEngine.js +11 -2
  591. package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
  592. package/dist/cluster/K8sHttpClient.d.ts.map +1 -1
  593. package/dist/cluster/K8sHttpClient.js +5 -2
  594. package/dist/cluster/K8sHttpClient.js.map +1 -1
  595. package/dist/cluster/Sharding.d.ts.map +1 -1
  596. package/dist/cluster/Sharding.js +14 -7
  597. package/dist/cluster/Sharding.js.map +1 -1
  598. package/dist/cluster/SqlMessageStorage.d.ts.map +1 -1
  599. package/dist/cluster/SqlMessageStorage.js +21 -12
  600. package/dist/cluster/SqlMessageStorage.js.map +1 -1
  601. package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
  602. package/dist/cluster/SqlRunnerStorage.js +30 -44
  603. package/dist/cluster/SqlRunnerStorage.js.map +1 -1
  604. package/dist/cluster/internal/entityManager.js +63 -62
  605. package/dist/cluster/internal/entityManager.js.map +1 -1
  606. package/dist/cluster/internal/interruptors.js +8 -0
  607. package/dist/cluster/internal/interruptors.js.map +1 -1
  608. package/dist/cluster/internal/resourceMap.js +39 -14
  609. package/dist/cluster/internal/resourceMap.js.map +1 -1
  610. package/dist/cluster/internal/resourceRef.js +168 -87
  611. package/dist/cluster/internal/resourceRef.js.map +1 -1
  612. package/dist/encoding/Base64.d.ts +4 -0
  613. package/dist/encoding/Base64.d.ts.map +1 -1
  614. package/dist/encoding/Base64.js +4 -0
  615. package/dist/encoding/Base64.js.map +1 -1
  616. package/dist/encoding/Base64Url.d.ts +4 -0
  617. package/dist/encoding/Base64Url.d.ts.map +1 -1
  618. package/dist/encoding/Base64Url.js +4 -0
  619. package/dist/encoding/Base64Url.js.map +1 -1
  620. package/dist/encoding/EncodingError.d.ts +4 -0
  621. package/dist/encoding/EncodingError.d.ts.map +1 -1
  622. package/dist/encoding/EncodingError.js +4 -0
  623. package/dist/encoding/EncodingError.js.map +1 -1
  624. package/dist/encoding/Hex.d.ts +5 -0
  625. package/dist/encoding/Hex.d.ts.map +1 -1
  626. package/dist/encoding/Hex.js +5 -0
  627. package/dist/encoding/Hex.js.map +1 -1
  628. package/dist/encoding/Toml.js +2 -2
  629. package/dist/encoding/Toml.js.map +1 -1
  630. package/dist/encoding/Yaml.d.ts.map +1 -1
  631. package/dist/encoding/Yaml.js +6 -4
  632. package/dist/encoding/Yaml.js.map +1 -1
  633. package/dist/encoding/index.d.ts +4 -0
  634. package/dist/encoding/index.d.ts.map +1 -1
  635. package/dist/encoding/index.js +4 -0
  636. package/dist/encoding/index.js.map +1 -1
  637. package/dist/eventlog/SqlEventJournal.js +8 -4
  638. package/dist/eventlog/SqlEventJournal.js.map +1 -1
  639. package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts +27 -10
  640. package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts.map +1 -1
  641. package/dist/eventlog/SqlEventLogServerUnencrypted.js +49 -7
  642. package/dist/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
  643. package/dist/http/Headers.d.ts +3 -1
  644. package/dist/http/Headers.d.ts.map +1 -1
  645. package/dist/http/Headers.js +4 -2
  646. package/dist/http/Headers.js.map +1 -1
  647. package/dist/http/HttpClient.d.ts +9 -0
  648. package/dist/http/HttpClient.d.ts.map +1 -1
  649. package/dist/http/HttpClient.js +40 -21
  650. package/dist/http/HttpClient.js.map +1 -1
  651. package/dist/http/HttpClientResponse.js +3 -1
  652. package/dist/http/HttpClientResponse.js.map +1 -1
  653. package/dist/http/HttpEffect.d.ts +3 -0
  654. package/dist/http/HttpEffect.d.ts.map +1 -1
  655. package/dist/http/HttpEffect.js +5 -2
  656. package/dist/http/HttpEffect.js.map +1 -1
  657. package/dist/http/HttpMiddleware.d.ts +17 -0
  658. package/dist/http/HttpMiddleware.d.ts.map +1 -1
  659. package/dist/http/HttpMiddleware.js +58 -40
  660. package/dist/http/HttpMiddleware.js.map +1 -1
  661. package/dist/http/HttpServer.d.ts +1 -1
  662. package/dist/http/HttpServer.d.ts.map +1 -1
  663. package/dist/http/HttpStaticServer.d.ts.map +1 -1
  664. package/dist/http/HttpStaticServer.js +14 -0
  665. package/dist/http/HttpStaticServer.js.map +1 -1
  666. package/dist/http/HttpTraceContext.d.ts +1 -1
  667. package/dist/http/HttpTraceContext.d.ts.map +1 -1
  668. package/dist/http/HttpTraceContext.js +4 -4
  669. package/dist/http/HttpTraceContext.js.map +1 -1
  670. package/dist/http/internal/tracing.d.ts +2 -0
  671. package/dist/http/internal/tracing.d.ts.map +1 -0
  672. package/dist/http/internal/tracing.js +37 -0
  673. package/dist/http/internal/tracing.js.map +1 -0
  674. package/dist/http-api/HttpApiBuilder.js +2 -1
  675. package/dist/http-api/HttpApiBuilder.js.map +1 -1
  676. package/dist/http-api/HttpApiClient.d.ts +12 -3
  677. package/dist/http-api/HttpApiClient.d.ts.map +1 -1
  678. package/dist/http-api/HttpApiClient.js.map +1 -1
  679. package/dist/http-api/HttpApiError.d.ts +4 -2
  680. package/dist/http-api/HttpApiError.d.ts.map +1 -1
  681. package/dist/http-api/HttpApiError.js +7 -3
  682. package/dist/http-api/HttpApiError.js.map +1 -1
  683. package/dist/http-api/HttpApiSecurity.d.ts +8 -8
  684. package/dist/http-api/HttpApiSecurity.js +8 -8
  685. package/dist/index.d.ts +155 -0
  686. package/dist/index.d.ts.map +1 -1
  687. package/dist/index.js +155 -0
  688. package/dist/index.js.map +1 -1
  689. package/dist/internal/arbitrary/array.js +3 -3
  690. package/dist/internal/arbitrary/array.js.map +1 -1
  691. package/dist/internal/arbitrary/model.js +26 -11
  692. package/dist/internal/arbitrary/model.js.map +1 -1
  693. package/dist/internal/arbitrary/runner.js +8 -8
  694. package/dist/internal/arbitrary/runner.js.map +1 -1
  695. package/dist/internal/arbitrary/schema.js +4 -5
  696. package/dist/internal/arbitrary/schema.js.map +1 -1
  697. package/dist/internal/core.js +43 -2
  698. package/dist/internal/core.js.map +1 -1
  699. package/dist/internal/dateTime.js +1 -1
  700. package/dist/internal/dateTime.js.map +1 -1
  701. package/dist/internal/effect.js +104 -120
  702. package/dist/internal/effect.js.map +1 -1
  703. package/dist/internal/rcRef.js +59 -23
  704. package/dist/internal/rcRef.js.map +1 -1
  705. package/dist/internal/schedule.js +7 -5
  706. package/dist/internal/schedule.js.map +1 -1
  707. package/dist/internal/schema/fromJsonSchemaDocument.js +11 -8
  708. package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
  709. package/dist/internal/schema/standardSchema.js +2 -2
  710. package/dist/internal/schema/standardSchema.js.map +1 -1
  711. package/dist/internal/version.d.ts +2 -0
  712. package/dist/internal/version.d.ts.map +1 -0
  713. package/dist/internal/version.js +3 -0
  714. package/dist/internal/version.js.map +1 -0
  715. package/dist/observability/OtlpExporter.d.ts.map +1 -1
  716. package/dist/observability/OtlpExporter.js +5 -6
  717. package/dist/observability/OtlpExporter.js.map +1 -1
  718. package/dist/observability/OtlpLogger.d.ts.map +1 -1
  719. package/dist/observability/OtlpLogger.js +23 -27
  720. package/dist/observability/OtlpLogger.js.map +1 -1
  721. package/dist/observability/OtlpMetrics.d.ts +5 -3
  722. package/dist/observability/OtlpMetrics.d.ts.map +1 -1
  723. package/dist/observability/OtlpMetrics.js +21 -94
  724. package/dist/observability/OtlpMetrics.js.map +1 -1
  725. package/dist/observability/OtlpResource.d.ts +4 -3
  726. package/dist/observability/OtlpResource.d.ts.map +1 -1
  727. package/dist/observability/OtlpResource.js +20 -23
  728. package/dist/observability/OtlpResource.js.map +1 -1
  729. package/dist/observability/OtlpTracer.d.ts +1 -0
  730. package/dist/observability/OtlpTracer.d.ts.map +1 -1
  731. package/dist/observability/OtlpTracer.js +32 -36
  732. package/dist/observability/OtlpTracer.js.map +1 -1
  733. package/dist/observability/internal/otlpProtobuf.js +32 -1
  734. package/dist/observability/internal/otlpProtobuf.js.map +1 -1
  735. package/dist/reactivity/AsyncResult.d.ts +1 -1
  736. package/dist/reactivity/Atom.d.ts +5 -5
  737. package/dist/reactivity/Atom.d.ts.map +1 -1
  738. package/dist/reactivity/Atom.js +9 -5
  739. package/dist/reactivity/Atom.js.map +1 -1
  740. package/dist/reactivity/AtomHttpApi.d.ts +2 -2
  741. package/dist/reactivity/AtomHttpApi.d.ts.map +1 -1
  742. package/dist/reactivity/AtomRegistry.d.ts +8 -0
  743. package/dist/reactivity/AtomRegistry.d.ts.map +1 -1
  744. package/dist/reactivity/AtomRegistry.js.map +1 -1
  745. package/dist/rpc/RpcClient.d.ts +21 -3
  746. package/dist/rpc/RpcClient.d.ts.map +1 -1
  747. package/dist/rpc/RpcClient.js +58 -34
  748. package/dist/rpc/RpcClient.js.map +1 -1
  749. package/dist/rpc/RpcServer.d.ts.map +1 -1
  750. package/dist/rpc/RpcServer.js +20 -23
  751. package/dist/rpc/RpcServer.js.map +1 -1
  752. package/dist/rpc/Utils.d.ts +2 -3
  753. package/dist/rpc/Utils.d.ts.map +1 -1
  754. package/dist/rpc/Utils.js +3 -4
  755. package/dist/rpc/Utils.js.map +1 -1
  756. package/dist/rpc/internal/tracing.d.ts +2 -0
  757. package/dist/rpc/internal/tracing.d.ts.map +1 -0
  758. package/dist/rpc/internal/tracing.js +18 -0
  759. package/dist/rpc/internal/tracing.js.map +1 -0
  760. package/dist/schema/SchemaCompiler/runtime.js +9 -1
  761. package/dist/schema/SchemaCompiler/runtime.js.map +1 -1
  762. package/dist/sql/SqlClient.js +4 -4
  763. package/dist/sql/SqlClient.js.map +1 -1
  764. package/dist/sql/Statement.d.ts +21 -1
  765. package/dist/sql/Statement.d.ts.map +1 -1
  766. package/dist/sql/Statement.js +55 -7
  767. package/dist/sql/Statement.js.map +1 -1
  768. package/dist/testing/TestClock.d.ts +8 -0
  769. package/dist/testing/TestClock.d.ts.map +1 -1
  770. package/dist/testing/TestClock.js +7 -0
  771. package/dist/testing/TestClock.js.map +1 -1
  772. package/dist/testing/TestConsole.d.ts +7 -0
  773. package/dist/testing/TestConsole.d.ts.map +1 -1
  774. package/dist/testing/TestConsole.js +6 -0
  775. package/dist/testing/TestConsole.js.map +1 -1
  776. package/dist/testing/index.d.ts +3 -0
  777. package/dist/testing/index.d.ts.map +1 -1
  778. package/dist/testing/index.js +3 -0
  779. package/dist/testing/index.js.map +1 -1
  780. package/dist/workflow/WorkflowEngine.d.ts +2 -0
  781. package/dist/workflow/WorkflowEngine.d.ts.map +1 -1
  782. package/dist/workflow/WorkflowEngine.js +1 -0
  783. package/dist/workflow/WorkflowEngine.js.map +1 -1
  784. package/package.json +3 -3
  785. package/src/Array.ts +351 -3
  786. package/src/BigDecimal.ts +88 -0
  787. package/src/BigInt.ts +68 -0
  788. package/src/Boolean.ts +34 -0
  789. package/src/Brand.ts +10 -0
  790. package/src/ByteSize.ts +87 -0
  791. package/src/Cache.ts +72 -24
  792. package/src/Cause.ts +83 -1
  793. package/src/Channel.ts +368 -18
  794. package/src/ChannelSchema.ts +13 -0
  795. package/src/Chunk.ts +193 -0
  796. package/src/Clock.ts +7 -0
  797. package/src/Combiner.ts +10 -0
  798. package/src/Config.ts +82 -8
  799. package/src/ConfigProvider.ts +28 -0
  800. package/src/Console.ts +26 -0
  801. package/src/Context.ts +50 -0
  802. package/src/Cron.ts +32 -1
  803. package/src/Crypto.ts +5 -0
  804. package/src/Data.ts +13 -0
  805. package/src/DateTime.ts +171 -0
  806. package/src/Deferred.ts +51 -0
  807. package/src/Differ.ts +2 -0
  808. package/src/Duration.ts +90 -0
  809. package/src/Effect.ts +692 -27
  810. package/src/Effectable.ts +4 -0
  811. package/src/Equal.ts +12 -1
  812. package/src/Equivalence.ts +22 -0
  813. package/src/ErrorReporter.ts +36 -0
  814. package/src/ExecutionPlan.ts +58 -14
  815. package/src/Exit.ts +40 -0
  816. package/src/Fiber.ts +20 -0
  817. package/src/FiberHandle.ts +29 -4
  818. package/src/FiberMap.ts +38 -0
  819. package/src/FiberSet.ts +21 -0
  820. package/src/FileSystem.ts +16 -0
  821. package/src/Filter.ts +55 -0
  822. package/src/Formatter.ts +42 -1
  823. package/src/Function.ts +30 -0
  824. package/src/Graph.ts +317 -36
  825. package/src/HKT.ts +5 -0
  826. package/src/Hash.ts +15 -0
  827. package/src/HashMap.ts +91 -0
  828. package/src/HashRing.ts +32 -5
  829. package/src/HashSet.ts +53 -0
  830. package/src/Inspectable.ts +8 -0
  831. package/src/Iterable.ts +127 -0
  832. package/src/JsonPatch.ts +5 -0
  833. package/src/JsonPointer.ts +5 -0
  834. package/src/JsonSchema.ts +17 -0
  835. package/src/Latch.ts +14 -0
  836. package/src/Layer.ts +101 -1
  837. package/src/LayerMap.ts +7 -0
  838. package/src/LayerRef.ts +5 -0
  839. package/src/LogLevel.ts +20 -0
  840. package/src/Logger.ts +41 -5
  841. package/src/ManagedRuntime.ts +12 -1
  842. package/src/Match.ts +52 -0
  843. package/src/Metric.ts +69 -0
  844. package/src/MutableHashMap.ts +44 -0
  845. package/src/MutableHashSet.ts +17 -0
  846. package/src/MutableList.ts +21 -0
  847. package/src/MutableRef.ts +32 -0
  848. package/src/Newtype.ts +9 -0
  849. package/src/NonEmptyIterable.ts +4 -0
  850. package/src/Number.ts +61 -0
  851. package/src/Optic.ts +57 -0
  852. package/src/Option.ts +134 -0
  853. package/src/Order.ts +30 -0
  854. package/src/Ordering.ts +7 -0
  855. package/src/PartitionedSemaphore.ts +61 -22
  856. package/src/Path.ts +6 -0
  857. package/src/Pipeable.ts +7 -0
  858. package/src/PlatformError.ts +8 -0
  859. package/src/Pool.ts +48 -37
  860. package/src/Predicate.ts +85 -0
  861. package/src/PrimaryKey.ts +5 -0
  862. package/src/PubSub.ts +90 -9
  863. package/src/Pull.ts +20 -0
  864. package/src/Queue.ts +80 -10
  865. package/src/Random.ts +13 -0
  866. package/src/RcMap.ts +49 -2
  867. package/src/RcRef.ts +6 -0
  868. package/src/Record.ts +100 -0
  869. package/src/Redactable.ts +6 -0
  870. package/src/Redacted.ts +8 -0
  871. package/src/Reducer.ts +4 -0
  872. package/src/Ref.ts +42 -0
  873. package/src/References.ts +21 -0
  874. package/src/RegExp.ts +4 -0
  875. package/src/Request.ts +32 -0
  876. package/src/RequestResolver.ts +59 -10
  877. package/src/Resource.ts +7 -0
  878. package/src/Result.ts +93 -0
  879. package/src/Runtime.ts +10 -0
  880. package/src/Schedule.ts +61 -0
  881. package/src/Scheduler.ts +7 -0
  882. package/src/Schema.ts +499 -4
  883. package/src/SchemaAST.ts +115 -1
  884. package/src/SchemaGetter.ts +80 -4
  885. package/src/SchemaIssue.ts +34 -0
  886. package/src/SchemaParser.ts +26 -0
  887. package/src/SchemaRepresentation.ts +148 -0
  888. package/src/SchemaTransformation.ts +53 -0
  889. package/src/Scope.ts +19 -0
  890. package/src/ScopedCache.ts +82 -19
  891. package/src/ScopedRef.ts +9 -0
  892. package/src/Semaphore.ts +26 -0
  893. package/src/Sink.ts +126 -2
  894. package/src/StandardSchema.ts +1 -0
  895. package/src/Stdio.ts +7 -0
  896. package/src/Stream.ts +780 -103
  897. package/src/String.ts +87 -0
  898. package/src/Struct.ts +46 -0
  899. package/src/SubscriptionRef.ts +65 -0
  900. package/src/Symbol.ts +2 -0
  901. package/src/SynchronizedRef.ts +63 -0
  902. package/src/Take.ts +3 -0
  903. package/src/Terminal.ts +8 -0
  904. package/src/Tracer.ts +23 -0
  905. package/src/Trie.ts +68 -0
  906. package/src/Tuple.ts +38 -0
  907. package/src/TxChunk.ts +52 -0
  908. package/src/TxDeferred.ts +15 -0
  909. package/src/TxHashMap.ts +97 -6
  910. package/src/TxHashSet.ts +83 -3
  911. package/src/TxPriorityQueue.ts +34 -2
  912. package/src/TxPubSub.ts +26 -0
  913. package/src/TxQueue.ts +51 -0
  914. package/src/TxReentrantLock.ts +53 -36
  915. package/src/TxRef.ts +14 -0
  916. package/src/TxSemaphore.ts +47 -31
  917. package/src/TxSubscriptionRef.ts +25 -0
  918. package/src/Types.ts +36 -0
  919. package/src/UndefinedOr.ts +15 -0
  920. package/src/Unify.ts +15 -0
  921. package/src/Utils.ts +4 -0
  922. package/src/Version.ts +38 -0
  923. package/src/ai/Chat.ts +1 -1
  924. package/src/ai/DecisionModel.ts +42 -1
  925. package/src/ai/LanguageModel.ts +43 -21
  926. package/src/ai/McpSchema.ts +3 -3
  927. package/src/ai/McpServer.ts +119 -39
  928. package/src/ai/Response.ts +27 -12
  929. package/src/ai/Telemetry.ts +62 -58
  930. package/src/ai/internal/mcpProtocol/v2024_11_05.ts +1 -0
  931. package/src/ai/internal/mcpProtocol/v2025_03_26.ts +1 -0
  932. package/src/ai/internal/mcpProtocol/v2025_06_18.ts +1 -0
  933. package/src/ai/internal/mcpProtocol/v2025_11_25.ts +1 -0
  934. package/src/ai/internal/mcpRuntime.ts +84 -43
  935. package/src/ai/internal/mcpSchema/v2024_11_05.ts +4 -2
  936. package/src/ai/internal/mcpStatefulRuntime.ts +2 -0
  937. package/src/cluster/ClusterWorkflowEngine.ts +18 -4
  938. package/src/cluster/K8sHttpClient.ts +12 -2
  939. package/src/cluster/Sharding.ts +24 -24
  940. package/src/cluster/SqlMessageStorage.ts +26 -13
  941. package/src/cluster/SqlRunnerStorage.ts +85 -113
  942. package/src/cluster/internal/entityManager.ts +68 -80
  943. package/src/cluster/internal/interruptors.ts +13 -0
  944. package/src/cluster/internal/resourceMap.ts +55 -17
  945. package/src/cluster/internal/resourceRef.ts +189 -96
  946. package/src/encoding/Base64.ts +4 -0
  947. package/src/encoding/Base64Url.ts +4 -0
  948. package/src/encoding/EncodingError.ts +5 -0
  949. package/src/encoding/Hex.ts +5 -0
  950. package/src/encoding/Toml.ts +2 -2
  951. package/src/encoding/Yaml.ts +8 -4
  952. package/src/encoding/index.ts +4 -0
  953. package/src/eventlog/SqlEventJournal.ts +18 -4
  954. package/src/eventlog/SqlEventLogServerUnencrypted.ts +282 -235
  955. package/src/http/Headers.ts +8 -2
  956. package/src/http/HttpClient.ts +44 -27
  957. package/src/http/HttpClientResponse.ts +3 -1
  958. package/src/http/HttpEffect.ts +11 -2
  959. package/src/http/HttpMiddleware.ts +67 -46
  960. package/src/http/HttpServer.ts +1 -1
  961. package/src/http/HttpStaticServer.ts +16 -0
  962. package/src/http/HttpTraceContext.ts +8 -4
  963. package/src/http/internal/tracing.ts +52 -0
  964. package/src/http-api/HttpApiBuilder.ts +5 -1
  965. package/src/http-api/HttpApiClient.ts +13 -4
  966. package/src/http-api/HttpApiError.ts +8 -3
  967. package/src/http-api/HttpApiSecurity.ts +8 -8
  968. package/src/index.ts +156 -0
  969. package/src/internal/arbitrary/array.ts +3 -3
  970. package/src/internal/arbitrary/model.ts +37 -14
  971. package/src/internal/arbitrary/runner.ts +7 -7
  972. package/src/internal/arbitrary/schema.ts +4 -3
  973. package/src/internal/core.ts +56 -2
  974. package/src/internal/dateTime.ts +3 -1
  975. package/src/internal/effect.ts +156 -156
  976. package/src/internal/rcRef.ts +83 -33
  977. package/src/internal/schedule.ts +23 -17
  978. package/src/internal/schema/fromJsonSchemaDocument.ts +5 -3
  979. package/src/internal/schema/standardSchema.ts +2 -2
  980. package/src/internal/version.ts +2 -0
  981. package/src/observability/OtlpExporter.ts +9 -6
  982. package/src/observability/OtlpLogger.ts +20 -21
  983. package/src/observability/OtlpMetrics.ts +34 -93
  984. package/src/observability/OtlpResource.ts +18 -27
  985. package/src/observability/OtlpTracer.ts +34 -40
  986. package/src/observability/internal/otlpProtobuf.ts +60 -0
  987. package/src/reactivity/AsyncResult.ts +1 -1
  988. package/src/reactivity/Atom.ts +10 -6
  989. package/src/reactivity/AtomHttpApi.ts +2 -4
  990. package/src/reactivity/AtomRegistry.ts +7 -0
  991. package/src/rpc/RpcClient.ts +74 -46
  992. package/src/rpc/RpcServer.ts +28 -25
  993. package/src/rpc/Utils.ts +4 -10
  994. package/src/rpc/internal/tracing.ts +22 -0
  995. package/src/schema/SchemaCompiler/runtime.ts +4 -1
  996. package/src/sql/SqlClient.ts +4 -4
  997. package/src/sql/Statement.ts +59 -7
  998. package/src/testing/TestClock.ts +9 -0
  999. package/src/testing/TestConsole.ts +8 -0
  1000. package/src/testing/index.ts +3 -0
  1001. package/src/workflow/WorkflowEngine.ts +4 -0
@@ -749,7 +749,9 @@ export const isRedactedName = (
749
749
  *
750
750
  * **Details**
751
751
  *
752
- * Defaults include `authorization`, `cookie`, `set-cookie`, and `x-api-key`.
752
+ * Defaults include `authorization`, `cookie`, `set-cookie`, `x-api-key` and
753
+ * `AWSAccessKeyId`, `Signature`, `sig` and `X-Goog-Signature`. Names match
754
+ * case-insensitively, and providing a new list replaces the defaults.
753
755
  *
754
756
  * @stability unstable
755
757
  * @category services
@@ -762,6 +764,10 @@ export const CurrentRedactedNames = Context.Reference<
762
764
  "authorization",
763
765
  "cookie",
764
766
  "set-cookie",
765
- "x-api-key"
767
+ "x-api-key",
768
+ "AWSAccessKeyId",
769
+ "Signature",
770
+ "sig",
771
+ "X-Goog-Signature"
766
772
  ]
767
773
  })
@@ -18,15 +18,18 @@ import { Clock } from "../Clock.ts"
18
18
  import * as Context from "../Context.ts"
19
19
  import * as Duration from "../Duration.ts"
20
20
  import * as Effect from "../Effect.ts"
21
+ import * as Exit from "../Exit.ts"
21
22
  import * as Fiber from "../Fiber.ts"
22
23
  import { constant, constFalse, constTrue, dual, flow, identity } from "../Function.ts"
23
24
  import * as Inspectable from "../Inspectable.ts"
25
+ import { getStackTraceLimit, setStackTraceLimit } from "../internal/stackTraceLimit.ts"
24
26
  import * as Layer from "../Layer.ts"
25
27
  import * as Option from "../Option.ts"
26
28
  import type * as RateLimiter from "../persistence/RateLimiter.ts"
27
29
  import { type Pipeable, pipeArguments } from "../Pipeable.ts"
28
30
  import * as Predicate from "../Predicate.ts"
29
31
  import * as Ref from "../Ref.ts"
32
+ import * as References from "../References.ts"
30
33
  import * as Result from "../Result.ts"
31
34
  import * as Schedule from "../Schedule.ts"
32
35
  import type * as Scope from "../Scope.ts"
@@ -42,6 +45,7 @@ import * as HttpClientResponse from "./HttpClientResponse.ts"
42
45
  import * as HttpIncomingMessage from "./HttpIncomingMessage.ts"
43
46
  import * as HttpMethod from "./HttpMethod.ts"
44
47
  import * as TraceContext from "./HttpTraceContext.ts"
48
+ import * as tracing from "./internal/tracing.ts"
45
49
  import * as Url from "./Url.ts"
46
50
 
47
51
  const TypeId = "~effect/http/HttpClient"
@@ -900,26 +904,10 @@ export const make = (
900
904
  { kind: "client" },
901
905
  (span) => {
902
906
  span.attribute("http.request.method", request.method)
903
- span.attribute("server.address", url.origin)
904
- if (url.port !== "") {
905
- span.attribute("server.port", +url.port)
906
- }
907
- span.attribute("url.full", url.toString())
908
- span.attribute("url.path", url.pathname)
909
- span.attribute("url.scheme", url.protocol.slice(0, -1))
910
- const query = url.search.slice(1)
911
- if (query !== "") {
912
- span.attribute("url.query", query)
913
- }
914
907
  const redactedHeaderNames = fiber.getRef(Headers.CurrentRedactedNames)
908
+ tracing.addUrlAttributes(span, url)
915
909
  const headerFilter = fiber.getRef(TracerHeaderFilter)
916
- for (const name in request.headers) {
917
- if (!headerFilter(name, "request")) continue
918
- span.attribute(
919
- `http.request.header.${name}`,
920
- Headers.isRedactedName(name, redactedHeaderNames) ? "<redacted>" : request.headers[name]
921
- )
922
- }
910
+ tracing.addHeaderAttributes(span, "request", request.headers, headerFilter, redactedHeaderNames)
923
911
  request = fiber.getRef(TracerPropagationEnabled)
924
912
  ? HttpClientRequest.setHeaders(request, TraceContext.toHeaders(span))
925
913
  : request
@@ -929,12 +917,12 @@ export const make = (
929
917
  Effect.matchCauseEffect({
930
918
  onSuccess: (response) => {
931
919
  span.attribute("http.response.status_code", response.status)
932
- for (const name in response.headers) {
933
- if (!headerFilter(name, "response")) continue
934
- span.attribute(
935
- `http.response.header.${name}`,
936
- Headers.isRedactedName(name, redactedHeaderNames) ? "<redacted>" : response.headers[name]
937
- )
920
+ tracing.addHeaderAttributes(span, "response", response.headers, headerFilter, redactedHeaderNames)
921
+ // OpenTelemetry marks client spans as failed for 4xx and
922
+ // 5xx responses, while the response itself still succeeds.
923
+ if (response.status >= 400 && response.status < 600) {
924
+ span.attribute("error.type", String(response.status))
925
+ endSpanWithStatusError(fiber, span, request, response)
938
926
  }
939
927
 
940
928
  if (scopedController) return Effect.succeed(response)
@@ -954,6 +942,26 @@ export const make = (
954
942
  )
955
943
  })), Effect.succeed as HttpClient.Preprocess<never, never>)
956
944
 
945
+ const endSpanWithStatusError = (
946
+ fiber: Fiber.Fiber<unknown, unknown>,
947
+ span: Tracer.Span,
948
+ request: HttpClientRequest.HttpClientRequest,
949
+ response: HttpClientResponse.HttpClientResponse
950
+ ): void => {
951
+ const stackTraceLimit = getStackTraceLimit()
952
+ setStackTraceLimit(0)
953
+ let exit: Exit.Exit<never, Error.HttpClientError>
954
+ try {
955
+ exit = Exit.fail(new Error.HttpClientError({ reason: new Error.StatusCodeError({ request, response }) }))
956
+ } finally {
957
+ setStackTraceLimit(stackTraceLimit)
958
+ }
959
+ span.end(
960
+ fiber.getRef(References.TracerTimingEnabled) ? fiber.getRef(Clock).currentTimeNanosUnsafe() : BigInt(0),
961
+ exit
962
+ )
963
+ }
964
+
957
965
  /**
958
966
  * Appends a transformation of the request object before sending it.
959
967
  *
@@ -2153,6 +2161,11 @@ export const TracerDisabledWhen = Context.Reference<
2153
2161
  /**
2154
2162
  * Context reference for filtering request and response headers added to client spans.
2155
2163
  *
2164
+ * **Details**
2165
+ *
2166
+ * Header capture is opt-in: the default filter records no headers. Captured
2167
+ * headers listed in `Headers.CurrentRedactedNames` are recorded as `<redacted>`.
2168
+ *
2156
2169
  * @stability unstable
2157
2170
  * @category services
2158
2171
  * @since 4.0.0
@@ -2160,7 +2173,7 @@ export const TracerDisabledWhen = Context.Reference<
2160
2173
  export const TracerHeaderFilter = Context.Reference<
2161
2174
  (headerName: string, phase: "request" | "response") => boolean
2162
2175
  >("effect/http/HttpClient/TracerHeaderFilter", {
2163
- defaultValue: () => constTrue
2176
+ defaultValue: () => constFalse
2164
2177
  })
2165
2178
 
2166
2179
  /**
@@ -2177,6 +2190,10 @@ export const TracerPropagationEnabled = Context.Reference<boolean>("effect/http/
2177
2190
  /**
2178
2191
  * Context reference for generating the span name used for outgoing client request spans.
2179
2192
  *
2193
+ * **Details**
2194
+ *
2195
+ * Defaults to the request method unchanged.
2196
+ *
2180
2197
  * @stability unstable
2181
2198
  * @category services
2182
2199
  * @since 4.0.0
@@ -2184,7 +2201,7 @@ export const TracerPropagationEnabled = Context.Reference<boolean>("effect/http/
2184
2201
  export const SpanNameGenerator = Context.Reference<
2185
2202
  (request: HttpClientRequest.HttpClientRequest) => string
2186
2203
  >("effect/http/HttpClient/SpanNameGenerator", {
2187
- defaultValue: () => (request) => `http.client ${request.method}`
2204
+ defaultValue: () => (request) => request.method
2188
2205
  })
2189
2206
 
2190
2207
  /**
@@ -2226,7 +2243,7 @@ const responseRegistry = (() => {
2226
2243
  }
2227
2244
  }
2228
2245
 
2229
- const timers = new Map<HttpClientResponse.HttpClientResponse, any>()
2246
+ const timers = new WeakMap<HttpClientResponse.HttpClientResponse, any>()
2230
2247
  return {
2231
2248
  register(response: HttpClientResponse.HttpClientResponse, controller: AbortController) {
2232
2249
  timers.set(response, setTimeout(() => controller.abort(), 5000))
@@ -341,7 +341,9 @@ class WebHttpClientResponse extends Inspectable.Class implements HttpClientRespo
341
341
  if (this.cachedCookies) {
342
342
  return this.cachedCookies
343
343
  }
344
- return this.cachedCookies = Cookies.fromSetCookie(this.source.headers.getSetCookie())
344
+ // React Native's Headers does not implement getSetCookie, and it never
345
+ // exposes Set-Cookie to JavaScript anyway.
346
+ return this.cachedCookies = Cookies.fromSetCookie(this.source.headers.getSetCookie?.() ?? [])
345
347
  }
346
348
 
347
349
  get remoteAddress(): Option.Option<string> {
@@ -33,6 +33,9 @@ import * as preResponseHandler from "./internal/preResponseHandler.ts"
33
33
  /**
34
34
  * Runs an HTTP server effect, sends the produced response with the supplied handler, and converts failures into HTTP responses.
35
35
  * On handler failure, the request scope closes with the original cause.
36
+ * If the send handler returns an `HttpServerResponse`, such as the `101`
37
+ * response of an upgraded request, middleware observes it in place of the
38
+ * handler's response.
36
39
  *
37
40
  * @stability unstable
38
41
  * @category combinators
@@ -81,11 +84,17 @@ export const toHandled = <E, R, EH, RH>(
81
84
  const handler = preResponseHandler.requestPreResponseHandlers.get(request.source)
82
85
  if (handler === undefined) {
83
86
  ;(request as any)[handledSymbol] = true
84
- return Effect.mapEager(handleResponse(request, response), () => response)
87
+ return Effect.mapEager(
88
+ handleResponse(request, response),
89
+ (sent) => Response.isHttpServerResponse(sent) ? sent : response
90
+ )
85
91
  }
86
92
  return Effect.flatMapEager(handler(request, response), (sentResponse) => {
87
93
  ;(request as any)[handledSymbol] = true
88
- return Effect.mapEager(handleResponse(request, sentResponse), () => response)
94
+ return Effect.mapEager(
95
+ handleResponse(request, sentResponse),
96
+ (sent) => Response.isHttpServerResponse(sent) ? sent : response
97
+ )
89
98
  })
90
99
  }
91
100
 
@@ -11,6 +11,7 @@
11
11
  * @stability unstable
12
12
  * @since 4.0.0
13
13
  */
14
+ import * as Cause from "../Cause.ts"
14
15
  import { Clock } from "../Clock.ts"
15
16
  import * as Context from "../Context.ts"
16
17
  import * as Effect from "../Effect.ts"
@@ -18,6 +19,7 @@ import * as Exit from "../Exit.ts"
18
19
  import type * as Fiber from "../Fiber.ts"
19
20
  import { constant, constFalse } from "../Function.ts"
20
21
  import * as internalEffect from "../internal/effect.ts"
22
+ import { getStackTraceLimit, setStackTraceLimit } from "../internal/stackTraceLimit.ts"
21
23
  import * as Layer from "../Layer.ts"
22
24
  import * as Option from "../Option.ts"
23
25
  import type { Predicate } from "../Predicate.ts"
@@ -26,7 +28,7 @@ import { nativeTracer, ParentSpan, Tracer } from "../Tracer.ts"
26
28
  import * as Headers from "./Headers.ts"
27
29
  import type { CompressionAlgorithm } from "./HttpPlatform.ts"
28
30
  import { HttpPlatform } from "./HttpPlatform.ts"
29
- import { causeResponseStripped } from "./HttpServerError.ts"
31
+ import { causeResponseStripped, ClientAbort, HttpServerError, ResponseError } from "./HttpServerError.ts"
30
32
  import { HttpServerRequest } from "./HttpServerRequest.ts"
31
33
  import * as Request from "./HttpServerRequest.ts"
32
34
  import * as Response from "./HttpServerResponse.ts"
@@ -35,6 +37,7 @@ import * as TraceContext from "./HttpTraceContext.ts"
35
37
  import * as compressionInternal from "./internal/compression.ts"
36
38
  import * as bodyInternal from "./internal/httpBody.ts"
37
39
  import { appendPreResponseHandlerUnsafe } from "./internal/preResponseHandler.ts"
40
+ import * as tracing from "./internal/tracing.ts"
38
41
 
39
42
  /**
40
43
  * Middleware that transforms an HTTP server app effect into another HTTP server app effect.
@@ -130,15 +133,37 @@ export const layerTracerDisabledForUrls = (
130
133
  /**
131
134
  * Context reference for generating server span names from HTTP server requests.
132
135
  *
136
+ * **Details**
137
+ *
138
+ * Defaults to the request method unchanged.
139
+ *
133
140
  * @stability unstable
134
141
  * @category services
135
142
  * @since 4.0.0
136
143
  */
137
144
  export const SpanNameGenerator = Context.Reference<(request: HttpServerRequest) => string>(
138
145
  "@effect/platform/HttpMiddleware/SpanNameGenerator",
139
- { defaultValue: () => (request) => `http.server ${request.method}` }
146
+ { defaultValue: () => (request) => request.method }
140
147
  )
141
148
 
149
+ /**
150
+ * Context reference for filtering request and response headers added to server spans.
151
+ *
152
+ * **Details**
153
+ *
154
+ * Header capture is opt-in: the default filter records no headers. Captured
155
+ * headers listed in `Headers.CurrentRedactedNames` are recorded as `<redacted>`.
156
+ *
157
+ * @stability unstable
158
+ * @category services
159
+ * @since 4.0.0
160
+ */
161
+ export const TracerHeaderFilter = Context.Reference<
162
+ (headerName: string, phase: "request" | "response") => boolean
163
+ >("effect/http/HttpMiddleware/TracerHeaderFilter", {
164
+ defaultValue: () => constFalse
165
+ })
166
+
142
167
  /**
143
168
  * Middleware that logs sent HTTP responses with request method, request URL, and response status annotations.
144
169
  *
@@ -158,8 +183,14 @@ export const logger: <E, R>(
158
183
  return exit
159
184
  } else if (exit._tag === "Failure") {
160
185
  const [response, cause] = causeResponseStripped(exit.cause)
186
+ const message = Option.isSome(cause) &&
187
+ !cause.value.reasons.every((reason) =>
188
+ reason._tag === "Interrupt" && reason.annotations.has(ClientAbort.key)
189
+ )
190
+ ? cause.value
191
+ : "Sent HTTP response"
161
192
  return Effect.andThen(
162
- Effect.annotateLogs(Effect.log(Option.getOrElse(cause, () => "Sent HTTP Response")), {
193
+ Effect.annotateLogs(Effect.log(message), {
163
194
  "http.method": request.method,
164
195
  "http.url": path,
165
196
  "http.status": response.status
@@ -189,6 +220,23 @@ export const isTracerDisabledUnsafe = (
189
220
  request: HttpServerRequest
190
221
  ): boolean => !fiber.cache.tracerEnabled || fiber.getRef(TracerDisabledWhen)(request)
191
222
 
223
+ // OpenTelemetry requires failed server spans for 5xx responses.
224
+ const responseSpanExit = (
225
+ request: HttpServerRequest,
226
+ response: HttpServerResponse
227
+ ): Exit.Exit<HttpServerResponse, HttpServerError> => {
228
+ if (!(response.status >= 500 && response.status < 600)) {
229
+ return Exit.succeed(response)
230
+ }
231
+ const stackTraceLimit = getStackTraceLimit()
232
+ setStackTraceLimit(0)
233
+ try {
234
+ return Exit.fail(new HttpServerError({ reason: new ResponseError({ request, response }) }))
235
+ } finally {
236
+ setStackTraceLimit(stackTraceLimit)
237
+ }
238
+ }
239
+
192
240
  /**
193
241
  * Middleware that creates a server trace span for each request and records request and response HTTP attributes.
194
242
  *
@@ -215,71 +263,44 @@ export const tracer: <E, R>(
215
263
  fiber.setContext(prevServices)
216
264
  const endTime = fiber.getRef(Clock).currentTimeNanosUnsafe()
217
265
  if (Exit.isSuccess(exit) && (!span.sampled || fiber.getRef(Tracer) === nativeTracer)) {
218
- span.end(endTime, exit)
266
+ span.end(endTime, responseSpanExit(request, exit.value))
219
267
  return undefined
220
268
  }
221
269
  const redactedHeaderNames = fiber.getRef(Headers.CurrentRedactedNames)
270
+ const headerFilter = fiber.getRef(TracerHeaderFilter)
222
271
  fiber.currentDispatcher.scheduleTask(() => {
223
272
  let response: HttpServerResponse
224
- let spanExit = exit
273
+ let spanExit: Exit.Exit<HttpServerResponse, unknown>
225
274
  if (Exit.isFailure(exit)) {
226
275
  const [failureResponse, cause] = causeResponseStripped(exit.cause)
227
276
  response = failureResponse
228
- spanExit = Option.isSome(cause) ? Exit.failCause(cause.value) : Exit.succeed(response)
277
+ // OpenTelemetry only treats 5xx responses as server span errors; interrupts still fail the span.
278
+ spanExit = Option.isSome(cause) && (response.status >= 500 || Cause.hasInterrupts(cause.value))
279
+ ? Exit.failCause(cause.value)
280
+ : responseSpanExit(request, response)
229
281
  } else {
230
282
  response = exit.value
283
+ spanExit = responseSpanExit(request, response)
231
284
  }
232
285
  if (span.sampled) {
233
286
  span.attribute("http.request.method", request.method)
234
- if (request.url.startsWith("/")) {
235
- const host = request.headers.host ?? "localhost"
236
- const protocol = request.headers["x-forwarded-proto"] === "https" ? "https" : "http"
237
- span.attribute("url.full", `${protocol}://${host}${request.url}`)
238
- const queryIndex = request.url.indexOf("?")
239
- if (queryIndex === -1) {
240
- span.attribute("url.path", request.url)
241
- } else {
242
- span.attribute("url.path", request.url.slice(0, queryIndex))
243
- if (queryIndex < request.url.length - 1) {
244
- span.attribute("url.query", request.url.slice(queryIndex + 1))
245
- }
246
- }
247
- span.attribute("url.scheme", protocol)
248
- } else {
249
- const url = Request.toURL(request)
250
- if (Option.isSome(url)) {
251
- if (url.value.username !== "" || url.value.password !== "") {
252
- url.value.username = "REDACTED"
253
- url.value.password = "REDACTED"
254
- }
255
- span.attribute("url.full", url.value.toString())
256
- span.attribute("url.path", url.value.pathname)
257
- const query = url.value.search.slice(1)
258
- if (query !== "") {
259
- span.attribute("url.query", query)
260
- }
261
- span.attribute("url.scheme", url.value.protocol.slice(0, -1))
287
+ const url = Request.toURL(request)
288
+ if (Option.isSome(url)) {
289
+ if (!request.url.startsWith("/") && (url.value.username !== "" || url.value.password !== "")) {
290
+ url.value.username = "REDACTED"
291
+ url.value.password = "REDACTED"
262
292
  }
293
+ tracing.addUrlAttributes(span, url.value)
263
294
  }
264
295
  if (request.headers["user-agent"] !== undefined) {
265
296
  span.attribute("user_agent.original", request.headers["user-agent"])
266
297
  }
267
- for (const name in request.headers) {
268
- span.attribute(
269
- `http.request.header.${name}`,
270
- Headers.isRedactedName(name, redactedHeaderNames) ? "<redacted>" : request.headers[name]
271
- )
272
- }
298
+ tracing.addHeaderAttributes(span, "request", request.headers, headerFilter, redactedHeaderNames)
273
299
  if (Option.isSome(request.remoteAddress)) {
274
300
  span.attribute("client.address", request.remoteAddress.value)
275
301
  }
276
302
  span.attribute("http.response.status_code", response.status)
277
- for (const name in response.headers) {
278
- span.attribute(
279
- `http.response.header.${name}`,
280
- Headers.isRedactedName(name, redactedHeaderNames) ? "<redacted>" : response.headers[name]
281
- )
282
- }
303
+ tracing.addHeaderAttributes(span, "response", response.headers, headerFilter, redactedHeaderNames)
283
304
  }
284
305
  span.end(endTime, spanExit)
285
306
  }, 0)
@@ -51,7 +51,7 @@ export class HttpServer extends Context.Service<HttpServer, {
51
51
  ): Effect.Effect<
52
52
  void,
53
53
  never,
54
- Exclude<R, HttpServerRequest> | Scope.Scope
54
+ Exclude<Effect.Services<App>, HttpServerRequest> | Scope.Scope
55
55
  >
56
56
  }
57
57
 
@@ -140,6 +140,14 @@ export const make: (options: {
140
140
  return yield* getFullResponse()
141
141
  }
142
142
 
143
+ const ifRange = request.headers["if-range"]
144
+ if (ifRange !== undefined) {
145
+ fullResponse = yield* getFullResponse()
146
+ if (!matchesIfRange(ifRange, fullResponse.headers["etag"])) {
147
+ return fullResponse
148
+ }
149
+ }
150
+
143
151
  const resolvedFileSize = fileSize ?? (yield* handlePlatformError(request, fileSystem.stat(filePath))).size
144
152
  const parsedRange = parseRange(rangeHeader, resolvedFileSize)
145
153
 
@@ -459,6 +467,14 @@ const isNotModifiedSince = (ifModifiedSince: string, lastModified: string | unde
459
467
  return lastModifiedMs <= ifModifiedSinceMs
460
468
  }
461
469
 
470
+ // Only a strong entity-tag can match (RFC 9110 §13.1.5). Weak tags start
471
+ // with `W/`, and Last-Modified dates never match: filesystem metadata cannot
472
+ // prove the file did not change twice within the same second.
473
+ const matchesIfRange = (ifRange: string, etag: string | undefined): boolean => {
474
+ const value = ifRange.trim()
475
+ return value.startsWith("\"") && value === etag
476
+ }
477
+
462
478
  const notModifiedResponse = (
463
479
  response: HttpServerResponse.HttpServerResponse
464
480
  ): HttpServerResponse.HttpServerResponse => {
@@ -99,7 +99,7 @@ export const b3: FromHeaders = (headers) => {
99
99
  return Option.some(Tracer.externalSpan({
100
100
  traceId: parts[0],
101
101
  spanId: parts[1],
102
- sampled: parts[2] ? parts[2] === "1" : true
102
+ sampled: parts[2] ? parts[2] === "1" || parts[2] === "d" : true
103
103
  }))
104
104
  }
105
105
 
@@ -109,7 +109,7 @@ export const b3: FromHeaders = (headers) => {
109
109
  * **Details**
110
110
  *
111
111
  * The decoder reads `x-b3-traceid`, `x-b3-spanid`, and optional `x-b3-sampled`
112
- * headers.
112
+ * and `x-b3-flags` headers. Debug flags override the sampling decision.
113
113
  *
114
114
  * @stability unstable
115
115
  * @category decoding
@@ -122,7 +122,8 @@ export const xb3: FromHeaders = (headers) => {
122
122
  return Option.some(Tracer.externalSpan({
123
123
  traceId: headers["x-b3-traceid"],
124
124
  spanId: headers["x-b3-spanid"],
125
- sampled: headers["x-b3-sampled"] ? headers["x-b3-sampled"] === "1" : true
125
+ sampled: headers["x-b3-flags"] === "1" ||
126
+ (headers["x-b3-sampled"] ? headers["x-b3-sampled"] === "1" || headers["x-b3-sampled"] === "true" : true)
126
127
  }))
127
128
  }
128
129
 
@@ -151,7 +152,10 @@ export const w3c: FromHeaders = (headers) => {
151
152
  const [version, traceId, spanId, flags] = parts
152
153
  switch (version) {
153
154
  case "00": {
154
- if (w3cTraceId.test(traceId) === false || w3cSpanId.test(spanId) === false) {
155
+ if (
156
+ w3cTraceId.test(traceId) === false || w3cSpanId.test(spanId) === false ||
157
+ traceId === "00000000000000000000000000000000" || spanId === "0000000000000000"
158
+ ) {
155
159
  return Option.none()
156
160
  }
157
161
  return Option.some(Tracer.externalSpan({
@@ -0,0 +1,52 @@
1
+ import type * as Tracer from "../../Tracer.ts"
2
+ import * as Headers from "../Headers.ts"
3
+
4
+ const defaultPorts: Record<string, number> = {
5
+ "http:": 80,
6
+ "https:": 443,
7
+ "ws:": 80,
8
+ "wss:": 443
9
+ }
10
+
11
+ /**
12
+ * Records the `url.*` and `server.*` attributes for a request URL.
13
+ *
14
+ * @internal
15
+ */
16
+ export const addUrlAttributes = (
17
+ span: Tracer.Span,
18
+ url: URL
19
+ ): void => {
20
+ const query = url.search.slice(1)
21
+ span.attribute("url.full", url.toString())
22
+ span.attribute("url.path", url.pathname)
23
+ if (query !== "") {
24
+ span.attribute("url.query", query)
25
+ }
26
+ span.attribute("url.scheme", url.protocol.slice(0, -1))
27
+ if (url.hostname !== "") {
28
+ // URL keeps IPv6 brackets in the hostname, but the semantic conventions do not.
29
+ span.attribute("server.address", url.hostname.startsWith("[") ? url.hostname.slice(1, -1) : url.hostname)
30
+ const port = url.port === "" ? defaultPorts[url.protocol] : Number(url.port)
31
+ if (port !== undefined) {
32
+ span.attribute("server.port", port)
33
+ }
34
+ }
35
+ }
36
+
37
+ /** @internal */
38
+ export const addHeaderAttributes = (
39
+ span: Tracer.Span,
40
+ phase: "request" | "response",
41
+ headers: Headers.Headers,
42
+ filter: (headerName: string, phase: "request" | "response") => boolean,
43
+ redactedNames: ReadonlyArray<string | RegExp>
44
+ ): void => {
45
+ for (const name in headers) {
46
+ if (!filter(name, phase)) continue
47
+ span.attribute(
48
+ `http.${phase}.header.${name}`,
49
+ Headers.isRedactedName(name, redactedNames) ? "<redacted>" : headers[name]
50
+ )
51
+ }
52
+ }
@@ -746,7 +746,11 @@ function buildPayloadDecoders(
746
746
  ): Map<string, PayloadDecoder> {
747
747
  const result = new Map<string, PayloadDecoder>()
748
748
  payloadMap.forEach(({ encoding, schemas }, contentType) => {
749
- const decode = Schema.decodeUnknownEffect(Schema.Union(schemas), options)
749
+ const schema = Schema.Union(schemas)
750
+ const decode = Schema.decodeUnknownEffect(
751
+ encoding._tag === "FormUrlEncoded" ? Schema.toCodecArrayFromSingle(schema) : schema,
752
+ options
753
+ )
750
754
  if (encoding._tag === "Multipart") {
751
755
  result.set(contentType, { _tag: "Multipart", mode: encoding.mode, limits: encoding.limits, decode })
752
756
  } else {
@@ -72,7 +72,16 @@ export type ForApi<Api extends HttpApi.Constraint, E = never, R = never> = Api e
72
72
  HttpApi.HttpApi<infer _Id, infer Groups> ? Client<Groups, E, R> :
73
73
  never
74
74
 
75
- type SuccessType<S> = S extends HttpApiSchema.WithHeaders<
75
+ /**
76
+ * Computes the decoded success value a client receives for an endpoint
77
+ * success schema, including headers, streaming Server-Sent Events, and
78
+ * streaming byte responses.
79
+ *
80
+ * @stability unstable
81
+ * @category utility types
82
+ * @since 4.0.0
83
+ */
84
+ export type SuccessType<S> = S extends HttpApiSchema.WithHeaders<
76
85
  infer _Inner,
77
86
  infer _Headers
78
87
  > ? HttpApiSchema.withHeaders<SuccessType<_Inner>, _Headers["Type"]>
@@ -126,9 +135,9 @@ export declare namespace Client {
126
135
  * @category models
127
136
  * @since 4.0.0
128
137
  */
129
- export type Response<Success, Mode extends ResponseMode> = [Mode] extends ["decoded-and-response"]
138
+ export type Response<Success, Mode extends ResponseMode> = Mode extends "decoded-and-response"
130
139
  ? [Success, HttpClientResponse.HttpClientResponse]
131
- : [Mode] extends ["response-only"] ? HttpClientResponse.HttpClientResponse
140
+ : Mode extends "response-only" ? HttpClientResponse.HttpClientResponse
132
141
  : Success
133
142
 
134
143
  type GroupByEndpoint<Group extends HttpApiGroup.Constraint, E, R> = Group["endpoints"] extends
@@ -184,7 +193,7 @@ export declare namespace Client {
184
193
  Endpoint extends HttpApiEndpoint.ConstraintRequest,
185
194
  E,
186
195
  R
187
- > = <Mode extends ResponseMode = ResponseMode>(
196
+ > = <Mode extends ResponseMode = "decoded-only">(
188
197
  request: Simplify<
189
198
  HttpApiEndpoint.ClientRequest<
190
199
  Endpoint["~Params"],
@@ -467,8 +467,9 @@ export const HttpApiSchemaErrorTypeId: HttpApiSchemaErrorTypeId = "~effect/http-
467
467
 
468
468
  /**
469
469
  * Error raised when an HTTP API request or response component fails schema
470
- * decoding or encoding. It records which component failed and responds as an
471
- * empty `400 Bad Request` when rendered as a server response.
470
+ * decoding or encoding. Request decoding failures respond with an empty
471
+ * `400 Bad Request` and are ignored by error reporters. Response encoding
472
+ * failures respond with an empty `500 Internal Server Error` and are reported.
472
473
  *
473
474
  * @stability unstable
474
475
  * @category errors
@@ -480,6 +481,10 @@ export class HttpApiSchemaError extends Data.TaggedClass("HttpApiSchemaError")<{
480
481
  }> {
481
482
  readonly [HttpApiSchemaErrorTypeId]: HttpApiSchemaErrorTypeId = HttpApiSchemaErrorTypeId
482
483
 
484
+ get [ErrorReporter.ignore](): boolean {
485
+ return this.kind !== "Body" && this.kind !== "ResponseHeaders"
486
+ }
487
+
483
488
  static is(u: unknown): u is HttpApiSchemaError {
484
489
  return hasProperty(u, HttpApiSchemaErrorTypeId)
485
490
  }
@@ -497,6 +502,6 @@ export class HttpApiSchemaError extends Data.TaggedClass("HttpApiSchemaError")<{
497
502
  readonly message = this.kind;
498
503
 
499
504
  [HttpServerRespondable.symbol]() {
500
- return Effect.succeed(badRequestResponse)
505
+ return Effect.succeed(this[ErrorReporter.ignore] ? badRequestResponse : internalServerErrorResponse)
501
506
  }
502
507
  }