effect 4.0.1 → 4.0.3

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 (1085) 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 +24 -3
  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 +38 -5
  76. package/dist/Crypto.d.ts.map +1 -1
  77. package/dist/Crypto.js +11 -2
  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 +180 -6
  84. package/dist/DateTime.d.ts.map +1 -1
  85. package/dist/DateTime.js +98 -6
  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 +96 -6
  95. package/dist/Duration.d.ts.map +1 -1
  96. package/dist/Duration.js +80 -8
  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 +59 -2
  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 +969 -2
  389. package/dist/Schema.d.ts.map +1 -1
  390. package/dist/Schema.js +635 -5
  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 +14 -1
  440. package/dist/Stdio.d.ts.map +1 -1
  441. package/dist/Stdio.js +6 -0
  442. package/dist/Stdio.js.map +1 -1
  443. package/dist/Stream.d.ts +569 -11
  444. package/dist/Stream.d.ts.map +1 -1
  445. package/dist/Stream.js +266 -18
  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 +38 -11
  560. package/dist/ai/McpServer.d.ts.map +1 -1
  561. package/dist/ai/McpServer.js +276 -190
  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/mcpProtocol/v2026_07_28.js +5 -0
  568. package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
  569. package/dist/ai/internal/mcpProtocol.js.map +1 -1
  570. package/dist/ai/internal/mcpRuntime.js +80 -46
  571. package/dist/ai/internal/mcpRuntime.js.map +1 -1
  572. package/dist/ai/internal/mcpStatefulRuntime.js +1 -0
  573. package/dist/ai/internal/mcpStatefulRuntime.js.map +1 -1
  574. package/dist/cli/CliOutput.d.ts +27 -0
  575. package/dist/cli/CliOutput.d.ts.map +1 -1
  576. package/dist/cli/CliOutput.js +33 -10
  577. package/dist/cli/CliOutput.js.map +1 -1
  578. package/dist/cli/Command.d.ts.map +1 -1
  579. package/dist/cli/Command.js +6 -3
  580. package/dist/cli/Command.js.map +1 -1
  581. package/dist/cli/Completions.d.ts +3 -3
  582. package/dist/cli/Completions.d.ts.map +1 -1
  583. package/dist/cli/Completions.js +8 -5
  584. package/dist/cli/Completions.js.map +1 -1
  585. package/dist/cli/GlobalFlag.d.ts +5 -4
  586. package/dist/cli/GlobalFlag.d.ts.map +1 -1
  587. package/dist/cli/GlobalFlag.js +3 -3
  588. package/dist/cli/GlobalFlag.js.map +1 -1
  589. package/dist/cli/Prompt.d.ts +17 -1
  590. package/dist/cli/Prompt.d.ts.map +1 -1
  591. package/dist/cli/Prompt.js +119 -114
  592. package/dist/cli/Prompt.js.map +1 -1
  593. package/dist/cli/internal/ansi.d.ts +0 -1
  594. package/dist/cli/internal/ansi.d.ts.map +1 -1
  595. package/dist/cli/internal/ansi.js +20 -3
  596. package/dist/cli/internal/ansi.js.map +1 -1
  597. package/dist/cli/internal/completions/powershell.d.ts +2 -0
  598. package/dist/cli/internal/completions/powershell.d.ts.map +1 -0
  599. package/dist/cli/internal/completions/powershell.js +273 -0
  600. package/dist/cli/internal/completions/powershell.js.map +1 -0
  601. package/dist/cli/internal/completions/zsh.js +3 -2
  602. package/dist/cli/internal/completions/zsh.js.map +1 -1
  603. package/dist/cli/internal/wizard.d.ts +3 -3
  604. package/dist/cli/internal/wizard.d.ts.map +1 -1
  605. package/dist/cli/internal/wizard.js +21 -18
  606. package/dist/cli/internal/wizard.js.map +1 -1
  607. package/dist/cluster/ClusterSchema.d.ts +28 -0
  608. package/dist/cluster/ClusterSchema.d.ts.map +1 -1
  609. package/dist/cluster/ClusterSchema.js +30 -0
  610. package/dist/cluster/ClusterSchema.js.map +1 -1
  611. package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  612. package/dist/cluster/ClusterWorkflowEngine.js +10 -18
  613. package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
  614. package/dist/cluster/K8sHttpClient.d.ts.map +1 -1
  615. package/dist/cluster/K8sHttpClient.js +5 -2
  616. package/dist/cluster/K8sHttpClient.js.map +1 -1
  617. package/dist/cluster/MessageStorage.d.ts +18 -3
  618. package/dist/cluster/MessageStorage.d.ts.map +1 -1
  619. package/dist/cluster/MessageStorage.js +31 -11
  620. package/dist/cluster/MessageStorage.js.map +1 -1
  621. package/dist/cluster/Runners.d.ts.map +1 -1
  622. package/dist/cluster/Runners.js +8 -2
  623. package/dist/cluster/Runners.js.map +1 -1
  624. package/dist/cluster/Sharding.d.ts.map +1 -1
  625. package/dist/cluster/Sharding.js +181 -62
  626. package/dist/cluster/Sharding.js.map +1 -1
  627. package/dist/cluster/SqlMessageStorage.d.ts +59 -19
  628. package/dist/cluster/SqlMessageStorage.d.ts.map +1 -1
  629. package/dist/cluster/SqlMessageStorage.js +84 -55
  630. package/dist/cluster/SqlMessageStorage.js.map +1 -1
  631. package/dist/cluster/SqlRunnerStorage.d.ts +68 -19
  632. package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
  633. package/dist/cluster/SqlRunnerStorage.js +191 -113
  634. package/dist/cluster/SqlRunnerStorage.js.map +1 -1
  635. package/dist/cluster/internal/entityManager.js +104 -37
  636. package/dist/cluster/internal/entityManager.js.map +1 -1
  637. package/dist/encoding/Base64.d.ts +4 -0
  638. package/dist/encoding/Base64.d.ts.map +1 -1
  639. package/dist/encoding/Base64.js +4 -0
  640. package/dist/encoding/Base64.js.map +1 -1
  641. package/dist/encoding/Base64Url.d.ts +4 -0
  642. package/dist/encoding/Base64Url.d.ts.map +1 -1
  643. package/dist/encoding/Base64Url.js +4 -0
  644. package/dist/encoding/Base64Url.js.map +1 -1
  645. package/dist/encoding/EncodingError.d.ts +4 -0
  646. package/dist/encoding/EncodingError.d.ts.map +1 -1
  647. package/dist/encoding/EncodingError.js +4 -0
  648. package/dist/encoding/EncodingError.js.map +1 -1
  649. package/dist/encoding/Hex.d.ts +5 -0
  650. package/dist/encoding/Hex.d.ts.map +1 -1
  651. package/dist/encoding/Hex.js +5 -0
  652. package/dist/encoding/Hex.js.map +1 -1
  653. package/dist/encoding/Toml.js +2 -2
  654. package/dist/encoding/Toml.js.map +1 -1
  655. package/dist/encoding/Yaml.d.ts.map +1 -1
  656. package/dist/encoding/Yaml.js +6 -4
  657. package/dist/encoding/Yaml.js.map +1 -1
  658. package/dist/encoding/index.d.ts +4 -0
  659. package/dist/encoding/index.d.ts.map +1 -1
  660. package/dist/encoding/index.js +4 -0
  661. package/dist/encoding/index.js.map +1 -1
  662. package/dist/eventlog/SqlEventJournal.js +8 -4
  663. package/dist/eventlog/SqlEventJournal.js.map +1 -1
  664. package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts +27 -10
  665. package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts.map +1 -1
  666. package/dist/eventlog/SqlEventLogServerUnencrypted.js +49 -7
  667. package/dist/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
  668. package/dist/http/FindMyWay/internal/router.js +3 -6
  669. package/dist/http/FindMyWay/internal/router.js.map +1 -1
  670. package/dist/http/Headers.d.ts +3 -1
  671. package/dist/http/Headers.d.ts.map +1 -1
  672. package/dist/http/Headers.js +4 -2
  673. package/dist/http/Headers.js.map +1 -1
  674. package/dist/http/HttpClient.d.ts +15 -0
  675. package/dist/http/HttpClient.d.ts.map +1 -1
  676. package/dist/http/HttpClient.js +79 -23
  677. package/dist/http/HttpClient.js.map +1 -1
  678. package/dist/http/HttpClientResponse.js +3 -1
  679. package/dist/http/HttpClientResponse.js.map +1 -1
  680. package/dist/http/HttpEffect.d.ts +3 -0
  681. package/dist/http/HttpEffect.d.ts.map +1 -1
  682. package/dist/http/HttpEffect.js +5 -2
  683. package/dist/http/HttpEffect.js.map +1 -1
  684. package/dist/http/HttpMiddleware.d.ts +17 -0
  685. package/dist/http/HttpMiddleware.d.ts.map +1 -1
  686. package/dist/http/HttpMiddleware.js +56 -39
  687. package/dist/http/HttpMiddleware.js.map +1 -1
  688. package/dist/http/HttpServer.d.ts +1 -1
  689. package/dist/http/HttpServer.d.ts.map +1 -1
  690. package/dist/http/HttpTraceContext.d.ts.map +1 -1
  691. package/dist/http/HttpTraceContext.js +4 -2
  692. package/dist/http/HttpTraceContext.js.map +1 -1
  693. package/dist/http/internal/tracing.d.ts +2 -0
  694. package/dist/http/internal/tracing.d.ts.map +1 -0
  695. package/dist/http/internal/tracing.js +37 -0
  696. package/dist/http/internal/tracing.js.map +1 -0
  697. package/dist/http-api/HttpApiBuilder.js +2 -1
  698. package/dist/http-api/HttpApiBuilder.js.map +1 -1
  699. package/dist/http-api/HttpApiClient.d.ts +12 -3
  700. package/dist/http-api/HttpApiClient.d.ts.map +1 -1
  701. package/dist/http-api/HttpApiClient.js.map +1 -1
  702. package/dist/http-api/HttpApiError.d.ts +4 -3
  703. package/dist/http-api/HttpApiError.d.ts.map +1 -1
  704. package/dist/http-api/HttpApiError.js +7 -4
  705. package/dist/http-api/HttpApiError.js.map +1 -1
  706. package/dist/http-api/HttpApiSecurity.d.ts +8 -8
  707. package/dist/http-api/HttpApiSecurity.js +8 -8
  708. package/dist/index.d.ts +155 -0
  709. package/dist/index.d.ts.map +1 -1
  710. package/dist/index.js +155 -0
  711. package/dist/index.js.map +1 -1
  712. package/dist/internal/arbitrary/array.js +3 -3
  713. package/dist/internal/arbitrary/array.js.map +1 -1
  714. package/dist/internal/arbitrary/model.js +26 -11
  715. package/dist/internal/arbitrary/model.js.map +1 -1
  716. package/dist/internal/arbitrary/runner.js +8 -8
  717. package/dist/internal/arbitrary/runner.js.map +1 -1
  718. package/dist/internal/arbitrary/schema.js +4 -5
  719. package/dist/internal/arbitrary/schema.js.map +1 -1
  720. package/dist/internal/effect.js +53 -46
  721. package/dist/internal/effect.js.map +1 -1
  722. package/dist/internal/schedule.js +7 -5
  723. package/dist/internal/schedule.js.map +1 -1
  724. package/dist/internal/schema/standardSchema.js +2 -2
  725. package/dist/internal/schema/standardSchema.js.map +1 -1
  726. package/dist/internal/version.d.ts +2 -0
  727. package/dist/internal/version.d.ts.map +1 -0
  728. package/dist/internal/version.js +3 -0
  729. package/dist/internal/version.js.map +1 -0
  730. package/dist/net/AddressResolver.d.ts +145 -0
  731. package/dist/net/AddressResolver.d.ts.map +1 -0
  732. package/dist/net/AddressResolver.js +114 -0
  733. package/dist/net/AddressResolver.js.map +1 -0
  734. package/dist/net/Dns.d.ts +596 -0
  735. package/dist/net/Dns.d.ts.map +1 -0
  736. package/dist/net/Dns.js +549 -0
  737. package/dist/net/Dns.js.map +1 -0
  738. package/dist/net/Host.d.ts +320 -0
  739. package/dist/net/Host.d.ts.map +1 -0
  740. package/dist/net/Host.js +342 -0
  741. package/dist/net/Host.js.map +1 -0
  742. package/dist/net/IpInterface.d.ts +76 -3
  743. package/dist/net/IpInterface.d.ts.map +1 -1
  744. package/dist/net/IpInterface.js +53 -4
  745. package/dist/net/IpInterface.js.map +1 -1
  746. package/dist/net/IpNetwork.d.ts +82 -8
  747. package/dist/net/IpNetwork.d.ts.map +1 -1
  748. package/dist/net/IpNetwork.js +60 -4
  749. package/dist/net/IpNetwork.js.map +1 -1
  750. package/dist/net/NetAddress.d.ts +388 -35
  751. package/dist/net/NetAddress.d.ts.map +1 -1
  752. package/dist/net/NetAddress.js +350 -34
  753. package/dist/net/NetAddress.js.map +1 -1
  754. package/dist/net/index.d.ts +15 -0
  755. package/dist/net/index.d.ts.map +1 -1
  756. package/dist/net/index.js +15 -0
  757. package/dist/net/index.js.map +1 -1
  758. package/dist/observability/OtlpExporter.d.ts.map +1 -1
  759. package/dist/observability/OtlpExporter.js +5 -6
  760. package/dist/observability/OtlpExporter.js.map +1 -1
  761. package/dist/observability/OtlpLogger.d.ts.map +1 -1
  762. package/dist/observability/OtlpLogger.js +23 -27
  763. package/dist/observability/OtlpLogger.js.map +1 -1
  764. package/dist/observability/OtlpMetrics.d.ts +5 -3
  765. package/dist/observability/OtlpMetrics.d.ts.map +1 -1
  766. package/dist/observability/OtlpMetrics.js +36 -115
  767. package/dist/observability/OtlpMetrics.js.map +1 -1
  768. package/dist/observability/OtlpResource.d.ts +4 -3
  769. package/dist/observability/OtlpResource.d.ts.map +1 -1
  770. package/dist/observability/OtlpResource.js +20 -23
  771. package/dist/observability/OtlpResource.js.map +1 -1
  772. package/dist/observability/OtlpTracer.d.ts +1 -0
  773. package/dist/observability/OtlpTracer.d.ts.map +1 -1
  774. package/dist/observability/OtlpTracer.js +32 -36
  775. package/dist/observability/OtlpTracer.js.map +1 -1
  776. package/dist/observability/PrometheusMetrics.js +1 -0
  777. package/dist/observability/PrometheusMetrics.js.map +1 -1
  778. package/dist/observability/internal/otlpProtobuf.js +32 -1
  779. package/dist/observability/internal/otlpProtobuf.js.map +1 -1
  780. package/dist/persistence/PersistedQueue.d.ts +32 -3
  781. package/dist/persistence/PersistedQueue.d.ts.map +1 -1
  782. package/dist/persistence/PersistedQueue.js +75 -16
  783. package/dist/persistence/PersistedQueue.js.map +1 -1
  784. package/dist/reactivity/AsyncResult.d.ts +1 -1
  785. package/dist/reactivity/Atom.d.ts +5 -5
  786. package/dist/reactivity/Atom.d.ts.map +1 -1
  787. package/dist/reactivity/Atom.js +9 -5
  788. package/dist/reactivity/Atom.js.map +1 -1
  789. package/dist/reactivity/AtomHttpApi.d.ts +2 -2
  790. package/dist/reactivity/AtomHttpApi.d.ts.map +1 -1
  791. package/dist/reactivity/AtomRegistry.d.ts +8 -0
  792. package/dist/reactivity/AtomRegistry.d.ts.map +1 -1
  793. package/dist/reactivity/AtomRegistry.js.map +1 -1
  794. package/dist/rpc/RpcClient.d.ts +41 -7
  795. package/dist/rpc/RpcClient.d.ts.map +1 -1
  796. package/dist/rpc/RpcClient.js +50 -25
  797. package/dist/rpc/RpcClient.js.map +1 -1
  798. package/dist/rpc/RpcServer.d.ts +6 -0
  799. package/dist/rpc/RpcServer.d.ts.map +1 -1
  800. package/dist/rpc/RpcServer.js +59 -40
  801. package/dist/rpc/RpcServer.js.map +1 -1
  802. package/dist/rpc/internal/tracing.d.ts +2 -0
  803. package/dist/rpc/internal/tracing.d.ts.map +1 -0
  804. package/dist/rpc/internal/tracing.js +18 -0
  805. package/dist/rpc/internal/tracing.js.map +1 -0
  806. package/dist/schema/SchemaCompiler/runtime.js +9 -1
  807. package/dist/schema/SchemaCompiler/runtime.js.map +1 -1
  808. package/dist/socket/DatagramSocket.d.ts +456 -0
  809. package/dist/socket/DatagramSocket.d.ts.map +1 -0
  810. package/dist/socket/DatagramSocket.js +535 -0
  811. package/dist/socket/DatagramSocket.js.map +1 -0
  812. package/dist/socket/Socket.d.ts +14 -1
  813. package/dist/socket/Socket.d.ts.map +1 -1
  814. package/dist/socket/Socket.js +9 -1
  815. package/dist/socket/Socket.js.map +1 -1
  816. package/dist/socket/index.d.ts +5 -0
  817. package/dist/socket/index.d.ts.map +1 -1
  818. package/dist/socket/index.js +5 -0
  819. package/dist/socket/index.js.map +1 -1
  820. package/dist/sql/Migrator.d.ts.map +1 -1
  821. package/dist/sql/Migrator.js +7 -2
  822. package/dist/sql/Migrator.js.map +1 -1
  823. package/dist/sql/SqlClient.d.ts +7 -1
  824. package/dist/sql/SqlClient.d.ts.map +1 -1
  825. package/dist/sql/SqlClient.js +35 -10
  826. package/dist/sql/SqlClient.js.map +1 -1
  827. package/dist/sql/Statement.d.ts +21 -1
  828. package/dist/sql/Statement.d.ts.map +1 -1
  829. package/dist/sql/Statement.js +55 -7
  830. package/dist/sql/Statement.js.map +1 -1
  831. package/dist/testing/TestClock.d.ts +8 -0
  832. package/dist/testing/TestClock.d.ts.map +1 -1
  833. package/dist/testing/TestClock.js +7 -0
  834. package/dist/testing/TestClock.js.map +1 -1
  835. package/dist/testing/TestConsole.d.ts +7 -0
  836. package/dist/testing/TestConsole.d.ts.map +1 -1
  837. package/dist/testing/TestConsole.js +6 -0
  838. package/dist/testing/TestConsole.js.map +1 -1
  839. package/dist/testing/TestCrypto.d.ts +73 -0
  840. package/dist/testing/TestCrypto.d.ts.map +1 -0
  841. package/dist/testing/TestCrypto.js +87 -0
  842. package/dist/testing/TestCrypto.js.map +1 -0
  843. package/dist/testing/index.d.ts +8 -0
  844. package/dist/testing/index.d.ts.map +1 -1
  845. package/dist/testing/index.js +8 -0
  846. package/dist/testing/index.js.map +1 -1
  847. package/dist/workflow/DurableDeferred.d.ts +54 -0
  848. package/dist/workflow/DurableDeferred.d.ts.map +1 -1
  849. package/dist/workflow/DurableDeferred.js +78 -49
  850. package/dist/workflow/DurableDeferred.js.map +1 -1
  851. package/dist/workflow/WorkflowEngine.d.ts.map +1 -1
  852. package/dist/workflow/WorkflowEngine.js +2 -1
  853. package/dist/workflow/WorkflowEngine.js.map +1 -1
  854. package/package.json +3 -3
  855. package/src/Array.ts +351 -3
  856. package/src/BigDecimal.ts +88 -0
  857. package/src/BigInt.ts +68 -0
  858. package/src/Boolean.ts +34 -0
  859. package/src/Brand.ts +10 -0
  860. package/src/ByteSize.ts +87 -0
  861. package/src/Cache.ts +50 -8
  862. package/src/Cause.ts +82 -0
  863. package/src/Channel.ts +368 -18
  864. package/src/ChannelSchema.ts +13 -0
  865. package/src/Chunk.ts +193 -0
  866. package/src/Clock.ts +7 -0
  867. package/src/Combiner.ts +10 -0
  868. package/src/Config.ts +82 -8
  869. package/src/ConfigProvider.ts +28 -0
  870. package/src/Console.ts +26 -0
  871. package/src/Context.ts +53 -3
  872. package/src/Cron.ts +32 -1
  873. package/src/Crypto.ts +48 -9
  874. package/src/Data.ts +13 -0
  875. package/src/DateTime.ts +180 -6
  876. package/src/Deferred.ts +51 -0
  877. package/src/Differ.ts +2 -0
  878. package/src/Duration.ts +126 -16
  879. package/src/Effect.ts +539 -5
  880. package/src/Effectable.ts +4 -0
  881. package/src/Equal.ts +12 -1
  882. package/src/Equivalence.ts +22 -0
  883. package/src/ErrorReporter.ts +36 -0
  884. package/src/ExecutionPlan.ts +58 -14
  885. package/src/Exit.ts +40 -0
  886. package/src/Fiber.ts +20 -0
  887. package/src/FiberHandle.ts +29 -4
  888. package/src/FiberMap.ts +38 -0
  889. package/src/FiberSet.ts +21 -0
  890. package/src/FileSystem.ts +64 -2
  891. package/src/Filter.ts +55 -0
  892. package/src/Formatter.ts +42 -1
  893. package/src/Function.ts +30 -0
  894. package/src/Graph.ts +317 -36
  895. package/src/HKT.ts +5 -0
  896. package/src/Hash.ts +15 -0
  897. package/src/HashMap.ts +91 -0
  898. package/src/HashRing.ts +18 -0
  899. package/src/HashSet.ts +53 -0
  900. package/src/Inspectable.ts +8 -0
  901. package/src/Iterable.ts +127 -0
  902. package/src/JsonPatch.ts +5 -0
  903. package/src/JsonPointer.ts +5 -0
  904. package/src/JsonSchema.ts +17 -0
  905. package/src/Latch.ts +14 -0
  906. package/src/Layer.ts +101 -1
  907. package/src/LayerMap.ts +7 -0
  908. package/src/LayerRef.ts +5 -0
  909. package/src/LogLevel.ts +20 -0
  910. package/src/Logger.ts +41 -5
  911. package/src/ManagedRuntime.ts +12 -1
  912. package/src/Match.ts +52 -0
  913. package/src/Metric.ts +69 -0
  914. package/src/MutableHashMap.ts +44 -0
  915. package/src/MutableHashSet.ts +17 -0
  916. package/src/MutableList.ts +21 -0
  917. package/src/MutableRef.ts +32 -0
  918. package/src/Newtype.ts +9 -0
  919. package/src/NonEmptyIterable.ts +4 -0
  920. package/src/Number.ts +61 -0
  921. package/src/Optic.ts +57 -0
  922. package/src/Option.ts +134 -0
  923. package/src/Order.ts +30 -0
  924. package/src/Ordering.ts +7 -0
  925. package/src/PartitionedSemaphore.ts +61 -22
  926. package/src/Path.ts +6 -0
  927. package/src/Pipeable.ts +7 -0
  928. package/src/PlatformError.ts +8 -0
  929. package/src/Pool.ts +20 -1
  930. package/src/Predicate.ts +85 -0
  931. package/src/PrimaryKey.ts +5 -0
  932. package/src/PubSub.ts +90 -9
  933. package/src/Pull.ts +20 -0
  934. package/src/Queue.ts +80 -10
  935. package/src/Random.ts +13 -0
  936. package/src/RcMap.ts +23 -0
  937. package/src/RcRef.ts +6 -0
  938. package/src/Record.ts +100 -0
  939. package/src/Redactable.ts +6 -0
  940. package/src/Redacted.ts +8 -0
  941. package/src/Reducer.ts +4 -0
  942. package/src/Ref.ts +42 -0
  943. package/src/References.ts +21 -0
  944. package/src/RegExp.ts +4 -0
  945. package/src/Request.ts +32 -0
  946. package/src/RequestResolver.ts +59 -10
  947. package/src/Resource.ts +7 -0
  948. package/src/Result.ts +93 -0
  949. package/src/Runtime.ts +10 -0
  950. package/src/Schedule.ts +61 -0
  951. package/src/Scheduler.ts +7 -0
  952. package/src/Schema.ts +1168 -9
  953. package/src/SchemaAST.ts +115 -1
  954. package/src/SchemaGetter.ts +80 -4
  955. package/src/SchemaIssue.ts +34 -0
  956. package/src/SchemaParser.ts +26 -0
  957. package/src/SchemaRepresentation.ts +148 -0
  958. package/src/SchemaTransformation.ts +53 -0
  959. package/src/Scope.ts +19 -0
  960. package/src/ScopedCache.ts +55 -3
  961. package/src/ScopedRef.ts +9 -0
  962. package/src/Semaphore.ts +26 -0
  963. package/src/Sink.ts +126 -2
  964. package/src/StandardSchema.ts +1 -0
  965. package/src/Stdio.ts +16 -2
  966. package/src/Stream.ts +633 -26
  967. package/src/String.ts +87 -0
  968. package/src/Struct.ts +46 -0
  969. package/src/SubscriptionRef.ts +65 -0
  970. package/src/Symbol.ts +2 -0
  971. package/src/SynchronizedRef.ts +63 -0
  972. package/src/Take.ts +3 -0
  973. package/src/Terminal.ts +8 -0
  974. package/src/Tracer.ts +23 -0
  975. package/src/Trie.ts +68 -0
  976. package/src/Tuple.ts +38 -0
  977. package/src/TxChunk.ts +52 -0
  978. package/src/TxDeferred.ts +15 -0
  979. package/src/TxHashMap.ts +97 -6
  980. package/src/TxHashSet.ts +83 -3
  981. package/src/TxPriorityQueue.ts +34 -2
  982. package/src/TxPubSub.ts +26 -0
  983. package/src/TxQueue.ts +51 -0
  984. package/src/TxReentrantLock.ts +53 -36
  985. package/src/TxRef.ts +14 -0
  986. package/src/TxSemaphore.ts +47 -31
  987. package/src/TxSubscriptionRef.ts +25 -0
  988. package/src/Types.ts +36 -0
  989. package/src/UndefinedOr.ts +15 -0
  990. package/src/Unify.ts +15 -0
  991. package/src/Utils.ts +4 -0
  992. package/src/Version.ts +38 -0
  993. package/src/ai/Chat.ts +1 -1
  994. package/src/ai/DecisionModel.ts +42 -1
  995. package/src/ai/LanguageModel.ts +16 -19
  996. package/src/ai/McpServer.ts +169 -58
  997. package/src/ai/Telemetry.ts +62 -58
  998. package/src/ai/internal/mcpProtocol/v2026_07_28.ts +5 -0
  999. package/src/ai/internal/mcpProtocol.ts +3 -0
  1000. package/src/ai/internal/mcpRuntime.ts +86 -43
  1001. package/src/ai/internal/mcpStatefulRuntime.ts +2 -0
  1002. package/src/cli/CliOutput.ts +33 -16
  1003. package/src/cli/Command.ts +4 -3
  1004. package/src/cli/Completions.ts +9 -6
  1005. package/src/cli/GlobalFlag.ts +19 -11
  1006. package/src/cli/Prompt.ts +159 -149
  1007. package/src/cli/internal/ansi.ts +26 -3
  1008. package/src/cli/internal/completions/powershell.ts +322 -0
  1009. package/src/cli/internal/completions/zsh.ts +4 -2
  1010. package/src/cli/internal/wizard.ts +34 -26
  1011. package/src/cluster/ClusterSchema.ts +32 -0
  1012. package/src/cluster/ClusterWorkflowEngine.ts +13 -24
  1013. package/src/cluster/K8sHttpClient.ts +12 -2
  1014. package/src/cluster/MessageStorage.ts +45 -14
  1015. package/src/cluster/Runners.ts +8 -2
  1016. package/src/cluster/Sharding.ts +207 -49
  1017. package/src/cluster/SqlMessageStorage.ts +118 -84
  1018. package/src/cluster/SqlRunnerStorage.ts +224 -128
  1019. package/src/cluster/internal/entityManager.ts +151 -55
  1020. package/src/encoding/Base64.ts +4 -0
  1021. package/src/encoding/Base64Url.ts +4 -0
  1022. package/src/encoding/EncodingError.ts +5 -0
  1023. package/src/encoding/Hex.ts +5 -0
  1024. package/src/encoding/Toml.ts +2 -2
  1025. package/src/encoding/Yaml.ts +8 -4
  1026. package/src/encoding/index.ts +4 -0
  1027. package/src/eventlog/SqlEventJournal.ts +18 -4
  1028. package/src/eventlog/SqlEventLogServerUnencrypted.ts +282 -235
  1029. package/src/http/FindMyWay/internal/router.ts +4 -7
  1030. package/src/http/Headers.ts +8 -2
  1031. package/src/http/HttpClient.ts +100 -29
  1032. package/src/http/HttpClientResponse.ts +3 -1
  1033. package/src/http/HttpEffect.ts +11 -2
  1034. package/src/http/HttpMiddleware.ts +60 -45
  1035. package/src/http/HttpServer.ts +1 -1
  1036. package/src/http/HttpTraceContext.ts +8 -2
  1037. package/src/http/internal/tracing.ts +52 -0
  1038. package/src/http-api/HttpApiBuilder.ts +5 -1
  1039. package/src/http-api/HttpApiClient.ts +13 -4
  1040. package/src/http-api/HttpApiError.ts +8 -4
  1041. package/src/http-api/HttpApiSecurity.ts +8 -8
  1042. package/src/index.ts +156 -0
  1043. package/src/internal/arbitrary/array.ts +3 -3
  1044. package/src/internal/arbitrary/model.ts +37 -14
  1045. package/src/internal/arbitrary/runner.ts +7 -7
  1046. package/src/internal/arbitrary/schema.ts +4 -3
  1047. package/src/internal/effect.ts +62 -58
  1048. package/src/internal/schedule.ts +23 -17
  1049. package/src/internal/schema/standardSchema.ts +2 -2
  1050. package/src/internal/version.ts +2 -0
  1051. package/src/net/AddressResolver.ts +222 -0
  1052. package/src/net/Dns.ts +1035 -0
  1053. package/src/net/Host.ts +472 -0
  1054. package/src/net/IpInterface.ts +117 -7
  1055. package/src/net/IpNetwork.ts +116 -17
  1056. package/src/net/NetAddress.ts +611 -76
  1057. package/src/net/index.ts +18 -0
  1058. package/src/observability/OtlpExporter.ts +9 -6
  1059. package/src/observability/OtlpLogger.ts +20 -21
  1060. package/src/observability/OtlpMetrics.ts +46 -116
  1061. package/src/observability/OtlpResource.ts +18 -27
  1062. package/src/observability/OtlpTracer.ts +34 -40
  1063. package/src/observability/PrometheusMetrics.ts +1 -0
  1064. package/src/observability/internal/otlpProtobuf.ts +60 -0
  1065. package/src/persistence/PersistedQueue.ts +146 -53
  1066. package/src/reactivity/AsyncResult.ts +1 -1
  1067. package/src/reactivity/Atom.ts +10 -6
  1068. package/src/reactivity/AtomHttpApi.ts +2 -4
  1069. package/src/reactivity/AtomRegistry.ts +7 -0
  1070. package/src/rpc/RpcClient.ts +87 -41
  1071. package/src/rpc/RpcServer.ts +85 -48
  1072. package/src/rpc/internal/tracing.ts +22 -0
  1073. package/src/schema/SchemaCompiler/runtime.ts +4 -1
  1074. package/src/socket/DatagramSocket.ts +919 -0
  1075. package/src/socket/Socket.ts +22 -2
  1076. package/src/socket/index.ts +6 -0
  1077. package/src/sql/Migrator.ts +21 -5
  1078. package/src/sql/SqlClient.ts +43 -19
  1079. package/src/sql/Statement.ts +59 -7
  1080. package/src/testing/TestClock.ts +9 -0
  1081. package/src/testing/TestConsole.ts +8 -0
  1082. package/src/testing/TestCrypto.ts +94 -0
  1083. package/src/testing/index.ts +9 -0
  1084. package/src/workflow/DurableDeferred.ts +123 -48
  1085. package/src/workflow/WorkflowEngine.ts +2 -1
@@ -338,13 +338,6 @@ class RouterImpl<A> implements Router.Router<A> {
338
338
  path = path.replace(FULL_PATH_REGEXP, "/")
339
339
  }
340
340
 
341
- // This must be run before sanitizeUrl as the resulting function
342
- // .sliceParameter must be constructed with same URL string used
343
- // throughout the rest of this function.
344
- if (this.options.ignoreDuplicateSlashes) {
345
- path = removeDuplicateSlashes(path)
346
- }
347
-
348
341
  let sanitizedUrl
349
342
  try {
350
343
  sanitizedUrl = safeDecodeURI(path)
@@ -355,6 +348,10 @@ class RouterImpl<A> implements Router.Router<A> {
355
348
  return undefined
356
349
  }
357
350
 
351
+ if (this.options.ignoreDuplicateSlashes) {
352
+ path = removeDuplicateSlashes(path)
353
+ }
354
+
358
355
  if (this.options.ignoreTrailingSlash) {
359
356
  path = trimLastSlash(path)
360
357
  }
@@ -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
  *
@@ -1458,6 +1466,8 @@ export declare namespace WithRateLimiter {
1458
1466
  * It can update limits by inspecting common rate limit response headers and
1459
1467
  * automatically retries HTTP `429` responses (or `HttpClientError` values
1460
1468
  * wrapping a `429` response) by forcing the retry back through the limiter.
1469
+ * When a response reports the remaining budget, requests wait for the
1470
+ * reported reset once that budget is exhausted.
1461
1471
  *
1462
1472
  * **Gotchas**
1463
1473
  *
@@ -1478,6 +1488,8 @@ export const withRateLimiter: {
1478
1488
  * It can update limits by inspecting common rate limit response headers and
1479
1489
  * automatically retries HTTP `429` responses (or `HttpClientError` values
1480
1490
  * wrapping a `429` response) by forcing the retry back through the limiter.
1491
+ * When a response reports the remaining budget, requests wait for the
1492
+ * reported reset once that budget is exhausted.
1481
1493
  *
1482
1494
  * **Gotchas**
1483
1495
  *
@@ -1500,6 +1512,8 @@ export const withRateLimiter: {
1500
1512
  * It can update limits by inspecting common rate limit response headers and
1501
1513
  * automatically retries HTTP `429` responses (or `HttpClientError` values
1502
1514
  * wrapping a `429` response) by forcing the retry back through the limiter.
1515
+ * When a response reports the remaining budget, requests wait for the
1516
+ * reported reset once that budget is exhausted.
1503
1517
  *
1504
1518
  * **Gotchas**
1505
1519
  *
@@ -1543,14 +1557,36 @@ export const withRateLimiter: {
1543
1557
  return initialState
1544
1558
  }
1545
1559
 
1560
+ const budgets = new Map<string, RateLimitBudget>()
1561
+ const getBudget = (key: string): RateLimitBudget => {
1562
+ let budget = budgets.get(key)
1563
+ if (budget === undefined) {
1564
+ budget = { sent: 0, observed: 0, remaining: 0, resetAt: 0 }
1565
+ budgets.set(key, budget)
1566
+ }
1567
+ return budget
1568
+ }
1569
+
1546
1570
  const onResponse = options.disableResponseInspection
1547
1571
  ? undefined
1548
- : (clock: Clock, key: string, headers: Headers.Headers, tokens: number) => {
1572
+ : (clock: Clock, key: string, headers: Headers.Headers, tokens: number, sent: number) => {
1549
1573
  const current = getState(key)
1550
1574
  const next = parseRateLimiterState(current, clock, headers, tokens, headerNames)
1551
1575
  if (next.limit !== current.limit || !Duration.equals(next.window, current.window)) {
1552
1576
  states.set(key, next)
1553
1577
  }
1578
+ const remaining = parseRateLimitRemaining(headers, headerNames)
1579
+ const budget = getBudget(key)
1580
+ // responses to earlier requests carry stale counts
1581
+ if (remaining === undefined || sent <= budget.observed) {
1582
+ return
1583
+ }
1584
+ const resetAfter = parseRateLimitWindow(clock, headers, headerNames)
1585
+ budget.observed = sent
1586
+ budget.remaining = remaining
1587
+ if (resetAfter !== undefined) {
1588
+ budget.resetAt = clock.currentTimeMillisUnsafe() + Duration.toMillis(resetAfter)
1589
+ }
1554
1590
  }
1555
1591
 
1556
1592
  return transform(self, function loop(effect, request, retries = 0): Effect.Effect<
@@ -1562,6 +1598,15 @@ export const withRateLimiter: {
1562
1598
  const clock = fiber.getRef(Clock)
1563
1599
  const key = resolveKey(request)
1564
1600
  const tokens = Math.max(resolveTokens(request), 1)
1601
+ const budget = getBudget(key)
1602
+ const now = clock.currentTimeMillisUnsafe()
1603
+ // requests admitted after the observed one are not reflected in its count
1604
+ if (budget.resetAt > now && budget.remaining - (budget.sent - budget.observed) < tokens) {
1605
+ return Effect.flatMap(Effect.sleep(budget.resetAt - now), () => loop(effect, request, retries))
1606
+ }
1607
+ // counted at admission, so requests already admitted are sent even if a
1608
+ // later response exhausts the budget
1609
+ const sent = budget.sent += tokens
1565
1610
  const current = getState(key)
1566
1611
  const canRetry = options.times === undefined || retries < options.times
1567
1612
  function retry(retryAfter: Duration.Duration | undefined) {
@@ -1573,7 +1618,7 @@ export const withRateLimiter: {
1573
1618
  response: HttpClientResponse.HttpClientResponse,
1574
1619
  adaptive: RateLimiter.AdaptiveConsumeResult | undefined
1575
1620
  ) => {
1576
- onResponse?.(clock, key, response.headers, tokens)
1621
+ onResponse?.(clock, key, response.headers, tokens, sent)
1577
1622
  if (options.disableResponseInspection || response.status !== 429) {
1578
1623
  return Effect.succeed</**
1579
1624
  * Applies request rate limiting using the `RateLimiter` service.
@@ -1583,6 +1628,8 @@ export const withRateLimiter: {
1583
1628
  * It can update limits by inspecting common rate limit response headers and
1584
1629
  * automatically retries HTTP `429` responses (or `HttpClientError` values
1585
1630
  * wrapping a `429` response) by forcing the retry back through the limiter.
1631
+ * When a response reports the remaining budget, requests wait for the
1632
+ * reported reset once that budget is exhausted.
1586
1633
  *
1587
1634
  * **Gotchas**
1588
1635
  *
@@ -1606,6 +1653,8 @@ export const withRateLimiter: {
1606
1653
  * It can update limits by inspecting common rate limit response headers and
1607
1654
  * automatically retries HTTP `429` responses (or `HttpClientError` values
1608
1655
  * wrapping a `429` response) by forcing the retry back through the limiter.
1656
+ * When a response reports the remaining budget, requests wait for the
1657
+ * reported reset once that budget is exhausted.
1609
1658
  *
1610
1659
  * **Gotchas**
1611
1660
  *
@@ -1629,6 +1678,8 @@ export const withRateLimiter: {
1629
1678
  * It can update limits by inspecting common rate limit response headers and
1630
1679
  * automatically retries HTTP `429` responses (or `HttpClientError` values
1631
1680
  * wrapping a `429` response) by forcing the retry back through the limiter.
1681
+ * When a response reports the remaining budget, requests wait for the
1682
+ * reported reset once that budget is exhausted.
1632
1683
  *
1633
1684
  * **Gotchas**
1634
1685
  *
@@ -1748,6 +1799,17 @@ interface RateLimiterState {
1748
1799
  readonly initial: boolean
1749
1800
  }
1750
1801
 
1802
+ interface RateLimitBudget {
1803
+ /** Total tokens admitted for the key. */
1804
+ sent: number
1805
+ /** The `sent` total of the request whose remaining count was last applied. */
1806
+ observed: number
1807
+ /** The remaining count reported in response to the `observed` request. */
1808
+ remaining: number
1809
+ /** When the server budget resets, in epoch milliseconds. */
1810
+ resetAt: number
1811
+ }
1812
+
1751
1813
  const parseRateLimiterState = (
1752
1814
  state: RateLimiterState,
1753
1815
  clock: Clock,
@@ -2153,6 +2215,11 @@ export const TracerDisabledWhen = Context.Reference<
2153
2215
  /**
2154
2216
  * Context reference for filtering request and response headers added to client spans.
2155
2217
  *
2218
+ * **Details**
2219
+ *
2220
+ * Header capture is opt-in: the default filter records no headers. Captured
2221
+ * headers listed in `Headers.CurrentRedactedNames` are recorded as `<redacted>`.
2222
+ *
2156
2223
  * @stability unstable
2157
2224
  * @category services
2158
2225
  * @since 4.0.0
@@ -2160,7 +2227,7 @@ export const TracerDisabledWhen = Context.Reference<
2160
2227
  export const TracerHeaderFilter = Context.Reference<
2161
2228
  (headerName: string, phase: "request" | "response") => boolean
2162
2229
  >("effect/http/HttpClient/TracerHeaderFilter", {
2163
- defaultValue: () => constTrue
2230
+ defaultValue: () => constFalse
2164
2231
  })
2165
2232
 
2166
2233
  /**
@@ -2177,6 +2244,10 @@ export const TracerPropagationEnabled = Context.Reference<boolean>("effect/http/
2177
2244
  /**
2178
2245
  * Context reference for generating the span name used for outgoing client request spans.
2179
2246
  *
2247
+ * **Details**
2248
+ *
2249
+ * Defaults to the request method unchanged.
2250
+ *
2180
2251
  * @stability unstable
2181
2252
  * @category services
2182
2253
  * @since 4.0.0
@@ -2184,7 +2255,7 @@ export const TracerPropagationEnabled = Context.Reference<boolean>("effect/http/
2184
2255
  export const SpanNameGenerator = Context.Reference<
2185
2256
  (request: HttpClientRequest.HttpClientRequest) => string
2186
2257
  >("effect/http/HttpClient/SpanNameGenerator", {
2187
- defaultValue: () => (request) => `http.client ${request.method}`
2258
+ defaultValue: () => (request) => request.method
2188
2259
  })
2189
2260
 
2190
2261
  /**
@@ -2226,7 +2297,7 @@ const responseRegistry = (() => {
2226
2297
  }
2227
2298
  }
2228
2299
 
2229
- const timers = new Map<HttpClientResponse.HttpClientResponse, any>()
2300
+ const timers = new WeakMap<HttpClientResponse.HttpClientResponse, any>()
2230
2301
  return {
2231
2302
  register(response: HttpClientResponse.HttpClientResponse, controller: AbortController) {
2232
2303
  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, ClientAbort } 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
  *
@@ -195,6 +220,23 @@ export const isTracerDisabledUnsafe = (
195
220
  request: HttpServerRequest
196
221
  ): boolean => !fiber.cache.tracerEnabled || fiber.getRef(TracerDisabledWhen)(request)
197
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
+
198
240
  /**
199
241
  * Middleware that creates a server trace span for each request and records request and response HTTP attributes.
200
242
  *
@@ -221,71 +263,44 @@ export const tracer: <E, R>(
221
263
  fiber.setContext(prevServices)
222
264
  const endTime = fiber.getRef(Clock).currentTimeNanosUnsafe()
223
265
  if (Exit.isSuccess(exit) && (!span.sampled || fiber.getRef(Tracer) === nativeTracer)) {
224
- span.end(endTime, exit)
266
+ span.end(endTime, responseSpanExit(request, exit.value))
225
267
  return undefined
226
268
  }
227
269
  const redactedHeaderNames = fiber.getRef(Headers.CurrentRedactedNames)
270
+ const headerFilter = fiber.getRef(TracerHeaderFilter)
228
271
  fiber.currentDispatcher.scheduleTask(() => {
229
272
  let response: HttpServerResponse
230
- let spanExit = exit
273
+ let spanExit: Exit.Exit<HttpServerResponse, unknown>
231
274
  if (Exit.isFailure(exit)) {
232
275
  const [failureResponse, cause] = causeResponseStripped(exit.cause)
233
276
  response = failureResponse
234
- 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)
235
281
  } else {
236
282
  response = exit.value
283
+ spanExit = responseSpanExit(request, response)
237
284
  }
238
285
  if (span.sampled) {
239
286
  span.attribute("http.request.method", request.method)
240
- if (request.url.startsWith("/")) {
241
- const host = request.headers.host ?? "localhost"
242
- const protocol = request.headers["x-forwarded-proto"] === "https" ? "https" : "http"
243
- span.attribute("url.full", `${protocol}://${host}${request.url}`)
244
- const queryIndex = request.url.indexOf("?")
245
- if (queryIndex === -1) {
246
- span.attribute("url.path", request.url)
247
- } else {
248
- span.attribute("url.path", request.url.slice(0, queryIndex))
249
- if (queryIndex < request.url.length - 1) {
250
- span.attribute("url.query", request.url.slice(queryIndex + 1))
251
- }
252
- }
253
- span.attribute("url.scheme", protocol)
254
- } else {
255
- const url = Request.toURL(request)
256
- if (Option.isSome(url)) {
257
- if (url.value.username !== "" || url.value.password !== "") {
258
- url.value.username = "REDACTED"
259
- url.value.password = "REDACTED"
260
- }
261
- span.attribute("url.full", url.value.toString())
262
- span.attribute("url.path", url.value.pathname)
263
- const query = url.value.search.slice(1)
264
- if (query !== "") {
265
- span.attribute("url.query", query)
266
- }
267
- 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"
268
292
  }
293
+ tracing.addUrlAttributes(span, url.value)
269
294
  }
270
295
  if (request.headers["user-agent"] !== undefined) {
271
296
  span.attribute("user_agent.original", request.headers["user-agent"])
272
297
  }
273
- for (const name in request.headers) {
274
- span.attribute(
275
- `http.request.header.${name}`,
276
- Headers.isRedactedName(name, redactedHeaderNames) ? "<redacted>" : request.headers[name]
277
- )
278
- }
298
+ tracing.addHeaderAttributes(span, "request", request.headers, headerFilter, redactedHeaderNames)
279
299
  if (Option.isSome(request.remoteAddress)) {
280
300
  span.attribute("client.address", request.remoteAddress.value)
281
301
  }
282
302
  span.attribute("http.response.status_code", response.status)
283
- for (const name in response.headers) {
284
- span.attribute(
285
- `http.response.header.${name}`,
286
- Headers.isRedactedName(name, redactedHeaderNames) ? "<redacted>" : response.headers[name]
287
- )
288
- }
303
+ tracing.addHeaderAttributes(span, "response", response.headers, headerFilter, redactedHeaderNames)
289
304
  }
290
305
  span.end(endTime, spanExit)
291
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
 
@@ -93,7 +93,7 @@ export const b3: FromHeaders = (headers) => {
93
93
  return Option.none()
94
94
  }
95
95
  const parts = headers["b3"].split("-")
96
- if (parts.length < 2) {
96
+ if (parts.length < 2 || isB3Ids(parts[0], parts[1]) === false) {
97
97
  return Option.none()
98
98
  }
99
99
  return Option.some(Tracer.externalSpan({
@@ -116,7 +116,10 @@ export const b3: FromHeaders = (headers) => {
116
116
  * @since 4.0.0
117
117
  */
118
118
  export const xb3: FromHeaders = (headers) => {
119
- if (!(headers["x-b3-traceid"]) || !(headers["x-b3-spanid"])) {
119
+ if (
120
+ !(headers["x-b3-traceid"]) || !(headers["x-b3-spanid"]) ||
121
+ isB3Ids(headers["x-b3-traceid"], headers["x-b3-spanid"]) === false
122
+ ) {
120
123
  return Option.none()
121
124
  }
122
125
  return Option.some(Tracer.externalSpan({
@@ -130,6 +133,9 @@ export const xb3: FromHeaders = (headers) => {
130
133
  const w3cTraceId = /^[0-9a-f]{32}$/i
131
134
  const w3cSpanId = /^[0-9a-f]{16}$/i
132
135
 
136
+ const b3TraceId = /^(?:[0-9a-f]{16}|[0-9a-f]{32})$/i
137
+ const isB3Ids = (traceId: string, spanId: string): boolean => b3TraceId.test(traceId) && w3cSpanId.test(spanId)
138
+
133
139
  /**
134
140
  * Decodes an external span safely from the W3C `traceparent` header.
135
141
  *
@@ -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 {