effect 4.0.0-rc.112 → 4.0.0-rc.113

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 (1229) hide show
  1. package/AGENTS.md +24 -9
  2. package/CLAUDE.md +24 -9
  3. package/ai-docs/package.json +2 -2
  4. package/ai-docs/src/01_effect/01_basics/02_effect-fn.ts +18 -5
  5. package/ai-docs/src/01_effect/01_basics/index.md +5 -3
  6. package/ai-docs/src/01_effect/03_services/20_layer-composition.ts +1 -1
  7. package/ai-docs/src/01_effect/03_services/20_layer-unwrap.ts +2 -2
  8. package/ai-docs/src/01_effect/05_resources/10_acquire-release.ts +2 -2
  9. package/ai-docs/src/03_stream/30_encoding.ts +5 -7
  10. package/ai-docs/src/08_observability/10_logging.ts +1 -1
  11. package/ai-docs/src/70_cli/10_basics.ts +7 -7
  12. package/ai-docs/src/71_ai/10_language-model.ts +2 -2
  13. package/ai-docs/src/71_ai/20_tools.ts +1 -1
  14. package/ai-docs/src/71_ai/30_chat.ts +1 -1
  15. package/dist/Array.d.ts +86 -50
  16. package/dist/Array.d.ts.map +1 -1
  17. package/dist/Array.js +58 -32
  18. package/dist/Array.js.map +1 -1
  19. package/dist/BigDecimal.d.ts +5 -1
  20. package/dist/BigDecimal.d.ts.map +1 -1
  21. package/dist/BigDecimal.js +40 -23
  22. package/dist/BigDecimal.js.map +1 -1
  23. package/dist/ByteSize.d.ts +633 -0
  24. package/dist/ByteSize.d.ts.map +1 -0
  25. package/dist/ByteSize.js +524 -0
  26. package/dist/ByteSize.js.map +1 -0
  27. package/dist/Cache.d.ts.map +1 -1
  28. package/dist/Cache.js +17 -3
  29. package/dist/Cache.js.map +1 -1
  30. package/dist/Cause.d.ts +1 -1
  31. package/dist/Cause.d.ts.map +1 -1
  32. package/dist/Channel.d.ts +97 -24
  33. package/dist/Channel.d.ts.map +1 -1
  34. package/dist/Channel.js +66 -39
  35. package/dist/Channel.js.map +1 -1
  36. package/dist/Chunk.d.ts +49 -28
  37. package/dist/Chunk.d.ts.map +1 -1
  38. package/dist/Chunk.js +27 -18
  39. package/dist/Chunk.js.map +1 -1
  40. package/dist/Config.d.ts +162 -201
  41. package/dist/Config.d.ts.map +1 -1
  42. package/dist/Config.js +103 -212
  43. package/dist/Config.js.map +1 -1
  44. package/dist/ConfigProvider.d.ts +4 -4
  45. package/dist/ConfigProvider.d.ts.map +1 -1
  46. package/dist/ConfigProvider.js +7 -7
  47. package/dist/ConfigProvider.js.map +1 -1
  48. package/dist/Context.d.ts +31 -0
  49. package/dist/Context.d.ts.map +1 -1
  50. package/dist/Context.js.map +1 -1
  51. package/dist/Cron.d.ts +2 -2
  52. package/dist/Cron.d.ts.map +1 -1
  53. package/dist/Cron.js +2 -2
  54. package/dist/Cron.js.map +1 -1
  55. package/dist/Crypto.d.ts +1 -1
  56. package/dist/Crypto.d.ts.map +1 -1
  57. package/dist/Crypto.js +3 -2
  58. package/dist/Crypto.js.map +1 -1
  59. package/dist/DateTime.d.ts +2 -2
  60. package/dist/DateTime.d.ts.map +1 -1
  61. package/dist/Deferred.d.ts.map +1 -1
  62. package/dist/Deferred.js +6 -6
  63. package/dist/Deferred.js.map +1 -1
  64. package/dist/Duration.d.ts +1 -1
  65. package/dist/Duration.d.ts.map +1 -1
  66. package/dist/Duration.js +1 -1
  67. package/dist/Duration.js.map +1 -1
  68. package/dist/Effect.d.ts +220 -113
  69. package/dist/Effect.d.ts.map +1 -1
  70. package/dist/Effect.js +27 -26
  71. package/dist/Effect.js.map +1 -1
  72. package/dist/Effectable.d.ts +58 -2
  73. package/dist/Effectable.d.ts.map +1 -1
  74. package/dist/Effectable.js +58 -6
  75. package/dist/Effectable.js.map +1 -1
  76. package/dist/Encoding.d.ts +3 -1
  77. package/dist/Encoding.d.ts.map +1 -1
  78. package/dist/Encoding.js +40 -10
  79. package/dist/Encoding.js.map +1 -1
  80. package/dist/Equal.d.ts +1 -1
  81. package/dist/Equal.d.ts.map +1 -1
  82. package/dist/Equal.js +1 -1
  83. package/dist/Equal.js.map +1 -1
  84. package/dist/ExecutionPlan.d.ts.map +1 -1
  85. package/dist/ExecutionPlan.js +1 -0
  86. package/dist/ExecutionPlan.js.map +1 -1
  87. package/dist/Fiber.d.ts +32 -8
  88. package/dist/Fiber.d.ts.map +1 -1
  89. package/dist/Fiber.js.map +1 -1
  90. package/dist/FiberHandle.js +3 -3
  91. package/dist/FiberHandle.js.map +1 -1
  92. package/dist/FiberMap.d.ts +12 -6
  93. package/dist/FiberMap.d.ts.map +1 -1
  94. package/dist/FiberMap.js +11 -6
  95. package/dist/FiberMap.js.map +1 -1
  96. package/dist/FileSystem.d.ts +42 -210
  97. package/dist/FileSystem.d.ts.map +1 -1
  98. package/dist/FileSystem.js +16 -148
  99. package/dist/FileSystem.js.map +1 -1
  100. package/dist/Formatter.d.ts +1 -0
  101. package/dist/Formatter.d.ts.map +1 -1
  102. package/dist/Formatter.js +19 -3
  103. package/dist/Formatter.js.map +1 -1
  104. package/dist/Graph.d.ts +48 -20
  105. package/dist/Graph.d.ts.map +1 -1
  106. package/dist/Graph.js +20 -5
  107. package/dist/Graph.js.map +1 -1
  108. package/dist/Hash.d.ts +1 -1
  109. package/dist/Hash.d.ts.map +1 -1
  110. package/dist/Hash.js +5 -14
  111. package/dist/Hash.js.map +1 -1
  112. package/dist/HashMap.d.ts +1 -1
  113. package/dist/HashMap.d.ts.map +1 -1
  114. package/dist/HashRing.d.ts +6 -1
  115. package/dist/HashRing.d.ts.map +1 -1
  116. package/dist/HashRing.js +9 -2
  117. package/dist/HashRing.js.map +1 -1
  118. package/dist/HashSet.d.ts +1 -1
  119. package/dist/HashSet.d.ts.map +1 -1
  120. package/dist/HashSet.js.map +1 -1
  121. package/dist/Iterable.d.ts +33 -15
  122. package/dist/Iterable.d.ts.map +1 -1
  123. package/dist/Iterable.js +58 -45
  124. package/dist/Iterable.js.map +1 -1
  125. package/dist/JsonPatch.js +4 -4
  126. package/dist/JsonPatch.js.map +1 -1
  127. package/dist/JsonPointer.d.ts +68 -4
  128. package/dist/JsonPointer.d.ts.map +1 -1
  129. package/dist/JsonPointer.js +90 -4
  130. package/dist/JsonPointer.js.map +1 -1
  131. package/dist/JsonSchema.js +8 -22
  132. package/dist/JsonSchema.js.map +1 -1
  133. package/dist/Layer.d.ts +47 -4
  134. package/dist/Layer.d.ts.map +1 -1
  135. package/dist/Layer.js +4 -6
  136. package/dist/Layer.js.map +1 -1
  137. package/dist/LayerMap.d.ts +1 -3
  138. package/dist/LayerMap.d.ts.map +1 -1
  139. package/dist/LayerMap.js +7 -5
  140. package/dist/LayerMap.js.map +1 -1
  141. package/dist/LayerRef.d.ts.map +1 -1
  142. package/dist/LayerRef.js +7 -5
  143. package/dist/LayerRef.js.map +1 -1
  144. package/dist/Logger.d.ts +114 -9
  145. package/dist/Logger.d.ts.map +1 -1
  146. package/dist/Logger.js +109 -9
  147. package/dist/Logger.js.map +1 -1
  148. package/dist/ManagedRuntime.js +1 -1
  149. package/dist/ManagedRuntime.js.map +1 -1
  150. package/dist/Match.d.ts +43 -31
  151. package/dist/Match.d.ts.map +1 -1
  152. package/dist/Match.js +5 -2
  153. package/dist/Match.js.map +1 -1
  154. package/dist/Metric.d.ts +11 -4
  155. package/dist/Metric.d.ts.map +1 -1
  156. package/dist/Metric.js +14 -18
  157. package/dist/Metric.js.map +1 -1
  158. package/dist/MutableHashMap.d.ts +1 -1
  159. package/dist/MutableHashMap.d.ts.map +1 -1
  160. package/dist/MutableHashMap.js +1 -1
  161. package/dist/MutableHashMap.js.map +1 -1
  162. package/dist/MutableHashSet.d.ts +1 -1
  163. package/dist/MutableHashSet.d.ts.map +1 -1
  164. package/dist/MutableHashSet.js +1 -1
  165. package/dist/MutableHashSet.js.map +1 -1
  166. package/dist/MutableList.d.ts +13 -2
  167. package/dist/MutableList.d.ts.map +1 -1
  168. package/dist/MutableList.js +18 -2
  169. package/dist/MutableList.js.map +1 -1
  170. package/dist/Number.d.ts +6 -0
  171. package/dist/Number.d.ts.map +1 -1
  172. package/dist/Number.js +3 -1
  173. package/dist/Number.js.map +1 -1
  174. package/dist/Optic.d.ts.map +1 -1
  175. package/dist/Optic.js +5 -4
  176. package/dist/Optic.js.map +1 -1
  177. package/dist/Option.d.ts +1 -1
  178. package/dist/Option.d.ts.map +1 -1
  179. package/dist/Option.js +1 -1
  180. package/dist/Option.js.map +1 -1
  181. package/dist/Order.d.ts +1 -0
  182. package/dist/Order.d.ts.map +1 -1
  183. package/dist/Order.js +3 -1
  184. package/dist/Order.js.map +1 -1
  185. package/dist/PartitionedSemaphore.d.ts.map +1 -1
  186. package/dist/PartitionedSemaphore.js +1 -2
  187. package/dist/PartitionedSemaphore.js.map +1 -1
  188. package/dist/Path.d.ts +1 -1
  189. package/dist/Path.d.ts.map +1 -1
  190. package/dist/Path.js +1 -1
  191. package/dist/Path.js.map +1 -1
  192. package/dist/PlatformError.d.ts +1 -1
  193. package/dist/PlatformError.d.ts.map +1 -1
  194. package/dist/PlatformError.js +1 -1
  195. package/dist/PlatformError.js.map +1 -1
  196. package/dist/Pool.d.ts +38 -1
  197. package/dist/Pool.d.ts.map +1 -1
  198. package/dist/Pool.js +81 -5
  199. package/dist/Pool.js.map +1 -1
  200. package/dist/PrimaryKey.d.ts +1 -1
  201. package/dist/PrimaryKey.d.ts.map +1 -1
  202. package/dist/PrimaryKey.js +1 -1
  203. package/dist/PrimaryKey.js.map +1 -1
  204. package/dist/PubSub.d.ts +21 -9
  205. package/dist/PubSub.d.ts.map +1 -1
  206. package/dist/PubSub.js +18 -14
  207. package/dist/PubSub.js.map +1 -1
  208. package/dist/Queue.d.ts +82 -6
  209. package/dist/Queue.d.ts.map +1 -1
  210. package/dist/Queue.js +116 -27
  211. package/dist/Queue.js.map +1 -1
  212. package/dist/Random.d.ts +17 -4
  213. package/dist/Random.d.ts.map +1 -1
  214. package/dist/Random.js +1 -1
  215. package/dist/Random.js.map +1 -1
  216. package/dist/RcMap.d.ts.map +1 -1
  217. package/dist/RcMap.js +15 -9
  218. package/dist/RcMap.js.map +1 -1
  219. package/dist/Redacted.d.ts +1 -1
  220. package/dist/Redacted.d.ts.map +1 -1
  221. package/dist/Redacted.js +1 -1
  222. package/dist/Redacted.js.map +1 -1
  223. package/dist/RequestResolver.d.ts +15 -9
  224. package/dist/RequestResolver.d.ts.map +1 -1
  225. package/dist/RequestResolver.js +33 -15
  226. package/dist/RequestResolver.js.map +1 -1
  227. package/dist/Result.d.ts +1 -1
  228. package/dist/Result.d.ts.map +1 -1
  229. package/dist/Result.js +1 -1
  230. package/dist/Result.js.map +1 -1
  231. package/dist/Scheduler.d.ts.map +1 -1
  232. package/dist/Scheduler.js +19 -10
  233. package/dist/Scheduler.js.map +1 -1
  234. package/dist/Schema.d.ts +2155 -2415
  235. package/dist/Schema.d.ts.map +1 -1
  236. package/dist/Schema.js +2755 -4174
  237. package/dist/Schema.js.map +1 -1
  238. package/dist/SchemaAST.d.ts +354 -183
  239. package/dist/SchemaAST.d.ts.map +1 -1
  240. package/dist/SchemaAST.js +277 -601
  241. package/dist/SchemaAST.js.map +1 -1
  242. package/dist/SchemaGetter.d.ts +46 -22
  243. package/dist/SchemaGetter.d.ts.map +1 -1
  244. package/dist/SchemaGetter.js +56 -53
  245. package/dist/SchemaGetter.js.map +1 -1
  246. package/dist/SchemaIssue.d.ts +122 -188
  247. package/dist/SchemaIssue.d.ts.map +1 -1
  248. package/dist/SchemaIssue.js +48 -263
  249. package/dist/SchemaIssue.js.map +1 -1
  250. package/dist/SchemaParser.js +2 -9
  251. package/dist/SchemaParser.js.map +1 -1
  252. package/dist/SchemaRepresentation.d.ts +1099 -16
  253. package/dist/SchemaRepresentation.d.ts.map +1 -1
  254. package/dist/SchemaRepresentation.js +1341 -20
  255. package/dist/SchemaRepresentation.js.map +1 -1
  256. package/dist/SchemaTransformation.d.ts +49 -16
  257. package/dist/SchemaTransformation.d.ts.map +1 -1
  258. package/dist/SchemaTransformation.js +75 -98
  259. package/dist/SchemaTransformation.js.map +1 -1
  260. package/dist/ScopedCache.d.ts.map +1 -1
  261. package/dist/ScopedCache.js +10 -3
  262. package/dist/ScopedCache.js.map +1 -1
  263. package/dist/Sink.d.ts +9 -4
  264. package/dist/Sink.d.ts.map +1 -1
  265. package/dist/Sink.js +49 -31
  266. package/dist/Sink.js.map +1 -1
  267. package/dist/Stream.d.ts +221 -35
  268. package/dist/Stream.d.ts.map +1 -1
  269. package/dist/Stream.js +168 -84
  270. package/dist/Stream.js.map +1 -1
  271. package/dist/String.d.ts +16 -6
  272. package/dist/String.d.ts.map +1 -1
  273. package/dist/String.js +12 -5
  274. package/dist/String.js.map +1 -1
  275. package/dist/Struct.d.ts.map +1 -1
  276. package/dist/Struct.js +7 -4
  277. package/dist/Struct.js.map +1 -1
  278. package/dist/SynchronizedRef.d.ts +3 -2
  279. package/dist/SynchronizedRef.d.ts.map +1 -1
  280. package/dist/SynchronizedRef.js.map +1 -1
  281. package/dist/Terminal.d.ts +3 -3
  282. package/dist/Terminal.d.ts.map +1 -1
  283. package/dist/Terminal.js +3 -3
  284. package/dist/Terminal.js.map +1 -1
  285. package/dist/Tracer.d.ts +27 -7
  286. package/dist/Tracer.d.ts.map +1 -1
  287. package/dist/Tracer.js +38 -13
  288. package/dist/Tracer.js.map +1 -1
  289. package/dist/Trie.d.ts +1 -1
  290. package/dist/Trie.d.ts.map +1 -1
  291. package/dist/Tuple.d.ts +2 -1
  292. package/dist/Tuple.d.ts.map +1 -1
  293. package/dist/Tuple.js.map +1 -1
  294. package/dist/TxChunk.d.ts +1 -1
  295. package/dist/TxChunk.d.ts.map +1 -1
  296. package/dist/TxChunk.js +1 -1
  297. package/dist/TxChunk.js.map +1 -1
  298. package/dist/TxDeferred.d.ts +1 -1
  299. package/dist/TxDeferred.d.ts.map +1 -1
  300. package/dist/TxDeferred.js +1 -1
  301. package/dist/TxDeferred.js.map +1 -1
  302. package/dist/TxHashMap.d.ts +1 -1
  303. package/dist/TxHashMap.d.ts.map +1 -1
  304. package/dist/TxHashMap.js +1 -1
  305. package/dist/TxHashMap.js.map +1 -1
  306. package/dist/TxHashSet.d.ts +1 -1
  307. package/dist/TxHashSet.d.ts.map +1 -1
  308. package/dist/TxHashSet.js +1 -1
  309. package/dist/TxHashSet.js.map +1 -1
  310. package/dist/TxPriorityQueue.d.ts +1 -1
  311. package/dist/TxPriorityQueue.d.ts.map +1 -1
  312. package/dist/TxPriorityQueue.js +1 -1
  313. package/dist/TxPriorityQueue.js.map +1 -1
  314. package/dist/TxPubSub.d.ts +1 -1
  315. package/dist/TxPubSub.d.ts.map +1 -1
  316. package/dist/TxPubSub.js +1 -1
  317. package/dist/TxPubSub.js.map +1 -1
  318. package/dist/TxQueue.d.ts +9 -9
  319. package/dist/TxQueue.d.ts.map +1 -1
  320. package/dist/TxQueue.js +93 -86
  321. package/dist/TxQueue.js.map +1 -1
  322. package/dist/TxReentrantLock.d.ts +29 -1
  323. package/dist/TxReentrantLock.d.ts.map +1 -1
  324. package/dist/TxReentrantLock.js +29 -1
  325. package/dist/TxReentrantLock.js.map +1 -1
  326. package/dist/TxRef.d.ts +1 -1
  327. package/dist/TxRef.d.ts.map +1 -1
  328. package/dist/TxRef.js +1 -1
  329. package/dist/TxRef.js.map +1 -1
  330. package/dist/TxSemaphore.d.ts +1 -1
  331. package/dist/TxSemaphore.d.ts.map +1 -1
  332. package/dist/TxSemaphore.js +1 -1
  333. package/dist/TxSemaphore.js.map +1 -1
  334. package/dist/TxSubscriptionRef.d.ts +1 -1
  335. package/dist/TxSubscriptionRef.d.ts.map +1 -1
  336. package/dist/TxSubscriptionRef.js +1 -1
  337. package/dist/TxSubscriptionRef.js.map +1 -1
  338. package/dist/Types.d.ts +33 -19
  339. package/dist/Types.d.ts.map +1 -1
  340. package/dist/Utils.d.ts.map +1 -1
  341. package/dist/Utils.js +2 -1
  342. package/dist/Utils.js.map +1 -1
  343. package/dist/index.d.ts +4 -0
  344. package/dist/index.d.ts.map +1 -1
  345. package/dist/index.js +4 -0
  346. package/dist/index.js.map +1 -1
  347. package/dist/internal/arbitrary/model.d.ts +2 -0
  348. package/dist/internal/arbitrary/model.d.ts.map +1 -0
  349. package/dist/internal/arbitrary/model.js +495 -0
  350. package/dist/internal/arbitrary/model.js.map +1 -0
  351. package/dist/internal/arbitrary/regexp.d.ts +2 -0
  352. package/dist/internal/arbitrary/regexp.d.ts.map +1 -0
  353. package/dist/internal/arbitrary/regexp.js +789 -0
  354. package/dist/internal/arbitrary/regexp.js.map +1 -0
  355. package/dist/internal/arbitrary/runner.d.ts +2 -0
  356. package/dist/internal/arbitrary/runner.d.ts.map +1 -0
  357. package/dist/internal/arbitrary/runner.js +496 -0
  358. package/dist/internal/arbitrary/runner.js.map +1 -0
  359. package/dist/internal/arbitrary/schema.d.ts.map +1 -0
  360. package/dist/internal/arbitrary/schema.js +1340 -0
  361. package/dist/internal/arbitrary/schema.js.map +1 -0
  362. package/dist/internal/core.js +27 -13
  363. package/dist/internal/core.js.map +1 -1
  364. package/dist/internal/count.d.ts +2 -0
  365. package/dist/internal/count.d.ts.map +1 -0
  366. package/dist/internal/count.js +14 -0
  367. package/dist/internal/count.js.map +1 -0
  368. package/dist/internal/dateTime.js +4 -10
  369. package/dist/internal/dateTime.js.map +1 -1
  370. package/dist/internal/effect.js +386 -251
  371. package/dist/internal/effect.js.map +1 -1
  372. package/dist/internal/graph.js +3 -1
  373. package/dist/internal/graph.js.map +1 -1
  374. package/dist/internal/hashMap.js +5 -3
  375. package/dist/internal/hashMap.js.map +1 -1
  376. package/dist/internal/hashSet.js +1 -1
  377. package/dist/internal/hashSet.js.map +1 -1
  378. package/dist/internal/matcher.js +1 -1
  379. package/dist/internal/matcher.js.map +1 -1
  380. package/dist/internal/metric.js +1 -1
  381. package/dist/internal/metric.js.map +1 -1
  382. package/dist/internal/option.js +6 -5
  383. package/dist/internal/option.js.map +1 -1
  384. package/dist/internal/random.js +17 -0
  385. package/dist/internal/random.js.map +1 -1
  386. package/dist/internal/rcRef.js +10 -7
  387. package/dist/internal/rcRef.js.map +1 -1
  388. package/dist/internal/references.js +1 -0
  389. package/dist/internal/references.js.map +1 -1
  390. package/dist/internal/request.js +13 -6
  391. package/dist/internal/request.js.map +1 -1
  392. package/dist/internal/result.js +11 -9
  393. package/dist/internal/result.js.map +1 -1
  394. package/dist/internal/schema/annotations.js +1 -1
  395. package/dist/internal/schema/annotations.js.map +1 -1
  396. package/dist/internal/schema/fromJsonSchemaDocument.js +14 -12
  397. package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
  398. package/dist/internal/schema/fromRepresentation.js +5 -5
  399. package/dist/internal/schema/fromRepresentation.js.map +1 -1
  400. package/dist/internal/schema/make.d.ts +2 -0
  401. package/dist/internal/schema/make.d.ts.map +1 -0
  402. package/dist/internal/schema/{schema.js → make.js} +1 -25
  403. package/dist/internal/schema/make.js.map +1 -0
  404. package/dist/internal/schema/parser.d.ts +0 -12
  405. package/dist/internal/schema/parser.d.ts.map +1 -1
  406. package/dist/internal/schema/parser.js +7 -0
  407. package/dist/internal/schema/parser.js.map +1 -1
  408. package/dist/internal/schema/standardSchema.d.ts +2 -0
  409. package/dist/internal/schema/standardSchema.d.ts.map +1 -0
  410. package/dist/internal/schema/standardSchema.js +112 -0
  411. package/dist/internal/schema/standardSchema.js.map +1 -0
  412. package/dist/internal/schema/toCodeDocument.js +34 -22
  413. package/dist/internal/schema/toCodeDocument.js.map +1 -1
  414. package/dist/internal/schema/toCodec.d.ts +2 -0
  415. package/dist/internal/schema/toCodec.d.ts.map +1 -0
  416. package/dist/internal/schema/toCodec.js +242 -0
  417. package/dist/internal/schema/toCodec.js.map +1 -0
  418. package/dist/internal/schema/toDifferJsonPatch.d.ts +2 -0
  419. package/dist/internal/schema/toDifferJsonPatch.d.ts.map +1 -0
  420. package/dist/internal/schema/toDifferJsonPatch.js +20 -0
  421. package/dist/internal/schema/toDifferJsonPatch.js.map +1 -0
  422. package/dist/internal/schema/toEncoderXml.d.ts +2 -0
  423. package/dist/internal/schema/toEncoderXml.d.ts.map +1 -0
  424. package/dist/internal/schema/toEncoderXml.js +104 -0
  425. package/dist/internal/schema/toEncoderXml.js.map +1 -0
  426. package/dist/internal/schema/toEquivalence.js +66 -0
  427. package/dist/internal/schema/toEquivalence.js.map +1 -1
  428. package/dist/internal/schema/toFormatter.d.ts +2 -0
  429. package/dist/internal/schema/toFormatter.d.ts.map +1 -0
  430. package/dist/internal/schema/toFormatter.js +227 -0
  431. package/dist/internal/schema/toFormatter.js.map +1 -0
  432. package/dist/internal/schema/toIso.d.ts +2 -0
  433. package/dist/internal/schema/toIso.d.ts.map +1 -0
  434. package/dist/internal/schema/toIso.js +17 -0
  435. package/dist/internal/schema/toIso.js.map +1 -0
  436. package/dist/internal/schema/toJsonSchemaDocument.js +122 -71
  437. package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -1
  438. package/dist/internal/schema/toRepresentation.js +3 -1
  439. package/dist/internal/schema/toRepresentation.js.map +1 -1
  440. package/dist/internal/schemaError.d.ts +4 -0
  441. package/dist/internal/schemaError.d.ts.map +1 -0
  442. package/dist/internal/schemaError.js +6 -0
  443. package/dist/internal/schemaError.js.map +1 -0
  444. package/dist/internal/stream.js +5 -6
  445. package/dist/internal/stream.js.map +1 -1
  446. package/dist/internal/tracer.d.ts +1 -3
  447. package/dist/internal/tracer.d.ts.map +1 -1
  448. package/dist/internal/tracer.js +6 -0
  449. package/dist/internal/tracer.js.map +1 -1
  450. package/dist/internal/trie.js +2 -2
  451. package/dist/internal/trie.js.map +1 -1
  452. package/dist/internal/uuid.d.ts +1 -2
  453. package/dist/internal/uuid.d.ts.map +1 -1
  454. package/dist/internal/uuid.js +2 -0
  455. package/dist/internal/uuid.js.map +1 -1
  456. package/dist/testing/TestSchema.d.ts +9 -11
  457. package/dist/testing/TestSchema.d.ts.map +1 -1
  458. package/dist/testing/TestSchema.js +20 -18
  459. package/dist/testing/TestSchema.js.map +1 -1
  460. package/dist/testing/index.d.ts +0 -4
  461. package/dist/testing/index.d.ts.map +1 -1
  462. package/dist/testing/index.js +0 -4
  463. package/dist/testing/index.js.map +1 -1
  464. package/dist/unstable/ai/AiError.d.ts +74 -23
  465. package/dist/unstable/ai/AiError.d.ts.map +1 -1
  466. package/dist/unstable/ai/AiError.js +59 -5
  467. package/dist/unstable/ai/AiError.js.map +1 -1
  468. package/dist/unstable/ai/AnthropicStructuredOutput.d.ts.map +1 -1
  469. package/dist/unstable/ai/AnthropicStructuredOutput.js +2 -1
  470. package/dist/unstable/ai/AnthropicStructuredOutput.js.map +1 -1
  471. package/dist/unstable/ai/Chat.d.ts +27 -32
  472. package/dist/unstable/ai/Chat.d.ts.map +1 -1
  473. package/dist/unstable/ai/Chat.js +10 -13
  474. package/dist/unstable/ai/Chat.js.map +1 -1
  475. package/dist/unstable/ai/EmbeddingModel.d.ts +23 -16
  476. package/dist/unstable/ai/EmbeddingModel.d.ts.map +1 -1
  477. package/dist/unstable/ai/EmbeddingModel.js +13 -11
  478. package/dist/unstable/ai/EmbeddingModel.js.map +1 -1
  479. package/dist/unstable/ai/LanguageModel.d.ts +48 -37
  480. package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
  481. package/dist/unstable/ai/LanguageModel.js +150 -47
  482. package/dist/unstable/ai/LanguageModel.js.map +1 -1
  483. package/dist/unstable/ai/McpServer.d.ts +2 -2
  484. package/dist/unstable/ai/McpServer.d.ts.map +1 -1
  485. package/dist/unstable/ai/McpServer.js +21 -12
  486. package/dist/unstable/ai/McpServer.js.map +1 -1
  487. package/dist/unstable/ai/OpenAiStructuredOutput.d.ts.map +1 -1
  488. package/dist/unstable/ai/OpenAiStructuredOutput.js +2 -1
  489. package/dist/unstable/ai/OpenAiStructuredOutput.js.map +1 -1
  490. package/dist/unstable/ai/Prompt.d.ts +1 -1
  491. package/dist/unstable/ai/Prompt.d.ts.map +1 -1
  492. package/dist/unstable/ai/Prompt.js +15 -4
  493. package/dist/unstable/ai/Prompt.js.map +1 -1
  494. package/dist/unstable/ai/Response.d.ts +37 -94
  495. package/dist/unstable/ai/Response.d.ts.map +1 -1
  496. package/dist/unstable/ai/Response.js +46 -96
  497. package/dist/unstable/ai/Response.js.map +1 -1
  498. package/dist/unstable/ai/Tokenizer.js +4 -5
  499. package/dist/unstable/ai/Tokenizer.js.map +1 -1
  500. package/dist/unstable/ai/Tool.d.ts +38 -20
  501. package/dist/unstable/ai/Tool.d.ts.map +1 -1
  502. package/dist/unstable/ai/Tool.js +27 -1
  503. package/dist/unstable/ai/Tool.js.map +1 -1
  504. package/dist/unstable/ai/Toolkit.d.ts +1 -1
  505. package/dist/unstable/ai/Toolkit.d.ts.map +1 -1
  506. package/dist/unstable/ai/Toolkit.js +30 -18
  507. package/dist/unstable/ai/Toolkit.js.map +1 -1
  508. package/dist/unstable/ai/internal/structured-output.js +8 -5
  509. package/dist/unstable/ai/internal/structured-output.js.map +1 -1
  510. package/dist/unstable/arbitrary/Arbitrary.d.ts +626 -0
  511. package/dist/unstable/arbitrary/Arbitrary.d.ts.map +1 -0
  512. package/dist/unstable/arbitrary/Arbitrary.js +238 -0
  513. package/dist/unstable/arbitrary/Arbitrary.js.map +1 -0
  514. package/dist/unstable/arbitrary/index.d.ts +8 -0
  515. package/dist/unstable/arbitrary/index.d.ts.map +1 -0
  516. package/dist/unstable/arbitrary/index.js +9 -0
  517. package/dist/unstable/arbitrary/index.js.map +1 -0
  518. package/dist/unstable/cli/Argument.d.ts +104 -108
  519. package/dist/unstable/cli/Argument.d.ts.map +1 -1
  520. package/dist/unstable/cli/Argument.js +56 -57
  521. package/dist/unstable/cli/Argument.js.map +1 -1
  522. package/dist/unstable/cli/CliError.d.ts +2 -0
  523. package/dist/unstable/cli/CliError.d.ts.map +1 -1
  524. package/dist/unstable/cli/CliError.js +2 -0
  525. package/dist/unstable/cli/CliError.js.map +1 -1
  526. package/dist/unstable/cli/CliOutput.js +26 -3
  527. package/dist/unstable/cli/CliOutput.js.map +1 -1
  528. package/dist/unstable/cli/Command.d.ts +73 -73
  529. package/dist/unstable/cli/Command.js +18 -18
  530. package/dist/unstable/cli/Completions.d.ts +4 -4
  531. package/dist/unstable/cli/Completions.d.ts.map +1 -1
  532. package/dist/unstable/cli/Flag.d.ts +150 -161
  533. package/dist/unstable/cli/Flag.d.ts.map +1 -1
  534. package/dist/unstable/cli/Flag.js +79 -90
  535. package/dist/unstable/cli/Flag.js.map +1 -1
  536. package/dist/unstable/cli/GlobalFlag.d.ts +3 -3
  537. package/dist/unstable/cli/GlobalFlag.js +13 -13
  538. package/dist/unstable/cli/GlobalFlag.js.map +1 -1
  539. package/dist/unstable/cli/Param.d.ts +118 -126
  540. package/dist/unstable/cli/Param.d.ts.map +1 -1
  541. package/dist/unstable/cli/Param.js +104 -113
  542. package/dist/unstable/cli/Param.js.map +1 -1
  543. package/dist/unstable/cli/Primitive.d.ts +69 -58
  544. package/dist/unstable/cli/Primitive.d.ts.map +1 -1
  545. package/dist/unstable/cli/Primitive.js +65 -66
  546. package/dist/unstable/cli/Primitive.js.map +1 -1
  547. package/dist/unstable/cli/Prompt.d.ts +23 -24
  548. package/dist/unstable/cli/Prompt.d.ts.map +1 -1
  549. package/dist/unstable/cli/Prompt.js +68 -63
  550. package/dist/unstable/cli/Prompt.js.map +1 -1
  551. package/dist/unstable/cli/internal/completions/descriptor.js +23 -11
  552. package/dist/unstable/cli/internal/completions/descriptor.js.map +1 -1
  553. package/dist/unstable/cli/internal/completions/zsh.js +2 -2
  554. package/dist/unstable/cli/internal/completions/zsh.js.map +1 -1
  555. package/dist/unstable/cli/internal/config.js +4 -4
  556. package/dist/unstable/cli/internal/parser.js +1 -1
  557. package/dist/unstable/cli/internal/parser.js.map +1 -1
  558. package/dist/unstable/cli/internal/wizard.d.ts.map +1 -1
  559. package/dist/unstable/cli/internal/wizard.js +14 -13
  560. package/dist/unstable/cli/internal/wizard.js.map +1 -1
  561. package/dist/unstable/cluster/ClusterSchema.d.ts +13 -0
  562. package/dist/unstable/cluster/ClusterSchema.d.ts.map +1 -1
  563. package/dist/unstable/cluster/ClusterSchema.js +16 -1
  564. package/dist/unstable/cluster/ClusterSchema.js.map +1 -1
  565. package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  566. package/dist/unstable/cluster/ClusterWorkflowEngine.js +57 -14
  567. package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
  568. package/dist/unstable/cluster/Entity.d.ts.map +1 -1
  569. package/dist/unstable/cluster/Entity.js +2 -0
  570. package/dist/unstable/cluster/Entity.js.map +1 -1
  571. package/dist/unstable/cluster/EntityProxyServer.d.ts +2 -2
  572. package/dist/unstable/cluster/EntityProxyServer.d.ts.map +1 -1
  573. package/dist/unstable/cluster/EntityProxyServer.js.map +1 -1
  574. package/dist/unstable/cluster/Envelope.d.ts +4 -4
  575. package/dist/unstable/cluster/Envelope.d.ts.map +1 -1
  576. package/dist/unstable/cluster/Envelope.js +2 -3
  577. package/dist/unstable/cluster/Envelope.js.map +1 -1
  578. package/dist/unstable/cluster/HttpRunner.d.ts.map +1 -1
  579. package/dist/unstable/cluster/HttpRunner.js +5 -2
  580. package/dist/unstable/cluster/HttpRunner.js.map +1 -1
  581. package/dist/unstable/cluster/MessageStorage.d.ts +34 -4
  582. package/dist/unstable/cluster/MessageStorage.d.ts.map +1 -1
  583. package/dist/unstable/cluster/MessageStorage.js +28 -9
  584. package/dist/unstable/cluster/MessageStorage.js.map +1 -1
  585. package/dist/unstable/cluster/Reply.d.ts +1 -1
  586. package/dist/unstable/cluster/Sharding.d.ts +1 -1
  587. package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
  588. package/dist/unstable/cluster/Sharding.js +32 -17
  589. package/dist/unstable/cluster/Sharding.js.map +1 -1
  590. package/dist/unstable/cluster/ShardingConfig.js +23 -23
  591. package/dist/unstable/cluster/ShardingConfig.js.map +1 -1
  592. package/dist/unstable/cluster/SocketRunner.d.ts +2 -2
  593. package/dist/unstable/cluster/SocketRunner.d.ts.map +1 -1
  594. package/dist/unstable/cluster/SocketRunner.js +4 -3
  595. package/dist/unstable/cluster/SocketRunner.js.map +1 -1
  596. package/dist/unstable/cluster/SqlMessageStorage.js +11 -8
  597. package/dist/unstable/cluster/SqlMessageStorage.js.map +1 -1
  598. package/dist/unstable/cluster/SqlRunnerStorage.d.ts.map +1 -1
  599. package/dist/unstable/cluster/SqlRunnerStorage.js +11 -4
  600. package/dist/unstable/cluster/SqlRunnerStorage.js.map +1 -1
  601. package/dist/unstable/cluster/internal/clusterAbandon.d.ts +5 -0
  602. package/dist/unstable/cluster/internal/clusterAbandon.d.ts.map +1 -0
  603. package/dist/unstable/cluster/internal/clusterAbandon.js +9 -0
  604. package/dist/unstable/cluster/internal/clusterAbandon.js.map +1 -0
  605. package/dist/unstable/cluster/internal/entityManager.js +7 -4
  606. package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
  607. package/dist/unstable/cluster/internal/interruptors.js +30 -1
  608. package/dist/unstable/cluster/internal/interruptors.js.map +1 -1
  609. package/dist/unstable/cluster/internal/resourceRef.js +12 -7
  610. package/dist/unstable/cluster/internal/resourceRef.js.map +1 -1
  611. package/dist/unstable/devtools/DevToolsClient.d.ts.map +1 -1
  612. package/dist/unstable/devtools/DevToolsClient.js +12 -7
  613. package/dist/unstable/devtools/DevToolsClient.js.map +1 -1
  614. package/dist/unstable/encoding/Ini.d.ts +2 -0
  615. package/dist/unstable/encoding/Ini.d.ts.map +1 -1
  616. package/dist/unstable/encoding/Ini.js +2 -0
  617. package/dist/unstable/encoding/Ini.js.map +1 -1
  618. package/dist/unstable/encoding/SchemaBinary.d.ts +27 -3
  619. package/dist/unstable/encoding/SchemaBinary.d.ts.map +1 -1
  620. package/dist/unstable/encoding/SchemaBinary.js +108 -39
  621. package/dist/unstable/encoding/SchemaBinary.js.map +1 -1
  622. package/dist/unstable/encoding/Sse.js +1 -1
  623. package/dist/unstable/encoding/Sse.js.map +1 -1
  624. package/dist/unstable/encoding/Toml.d.ts +2 -0
  625. package/dist/unstable/encoding/Toml.d.ts.map +1 -1
  626. package/dist/unstable/encoding/Toml.js +6 -4
  627. package/dist/unstable/encoding/Toml.js.map +1 -1
  628. package/dist/unstable/encoding/Yaml.d.ts +2 -0
  629. package/dist/unstable/encoding/Yaml.d.ts.map +1 -1
  630. package/dist/unstable/encoding/Yaml.js +16 -5
  631. package/dist/unstable/encoding/Yaml.js.map +1 -1
  632. package/dist/unstable/encoding/index.d.ts +0 -4
  633. package/dist/unstable/encoding/index.d.ts.map +1 -1
  634. package/dist/unstable/encoding/index.js +0 -4
  635. package/dist/unstable/encoding/index.js.map +1 -1
  636. package/dist/unstable/eventlog/Event.d.ts +5 -5
  637. package/dist/unstable/eventlog/Event.d.ts.map +1 -1
  638. package/dist/unstable/eventlog/Event.js +3 -3
  639. package/dist/unstable/eventlog/Event.js.map +1 -1
  640. package/dist/unstable/eventlog/EventJournal.d.ts +7 -7
  641. package/dist/unstable/eventlog/EventJournal.d.ts.map +1 -1
  642. package/dist/unstable/eventlog/EventJournal.js +9 -9
  643. package/dist/unstable/eventlog/EventJournal.js.map +1 -1
  644. package/dist/unstable/eventlog/EventLog.d.ts +1 -1
  645. package/dist/unstable/eventlog/EventLog.d.ts.map +1 -1
  646. package/dist/unstable/eventlog/EventLog.js +4 -4
  647. package/dist/unstable/eventlog/EventLog.js.map +1 -1
  648. package/dist/unstable/eventlog/EventLogMessage.d.ts +11 -5
  649. package/dist/unstable/eventlog/EventLogMessage.d.ts.map +1 -1
  650. package/dist/unstable/eventlog/EventLogMessage.js +25 -15
  651. package/dist/unstable/eventlog/EventLogMessage.js.map +1 -1
  652. package/dist/unstable/eventlog/EventLogRemote.d.ts +7 -1
  653. package/dist/unstable/eventlog/EventLogRemote.d.ts.map +1 -1
  654. package/dist/unstable/eventlog/EventLogRemote.js +13 -3
  655. package/dist/unstable/eventlog/EventLogRemote.js.map +1 -1
  656. package/dist/unstable/eventlog/EventLogServerUnencrypted.js +2 -2
  657. package/dist/unstable/eventlog/EventLogServerUnencrypted.js.map +1 -1
  658. package/dist/unstable/eventlog/SqlEventJournal.d.ts.map +1 -1
  659. package/dist/unstable/eventlog/SqlEventJournal.js +26 -13
  660. package/dist/unstable/eventlog/SqlEventJournal.js.map +1 -1
  661. package/dist/unstable/eventlog/SqlEventLogServerUnencrypted.d.ts.map +1 -1
  662. package/dist/unstable/eventlog/SqlEventLogServerUnencrypted.js +5 -1
  663. package/dist/unstable/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
  664. package/dist/unstable/http/Cookies.d.ts +1 -45
  665. package/dist/unstable/http/Cookies.d.ts.map +1 -1
  666. package/dist/unstable/http/Cookies.js +2 -64
  667. package/dist/unstable/http/Cookies.js.map +1 -1
  668. package/dist/unstable/http/FetchHttpClient.js +1 -1
  669. package/dist/unstable/http/FetchHttpClient.js.map +1 -1
  670. package/dist/unstable/http/FindMyWay/internal/router.js +124 -33
  671. package/dist/unstable/http/FindMyWay/internal/router.js.map +1 -1
  672. package/dist/unstable/http/FindMyWay.d.ts +15 -5
  673. package/dist/unstable/http/FindMyWay.d.ts.map +1 -1
  674. package/dist/unstable/http/FindMyWay.js +3 -1
  675. package/dist/unstable/http/FindMyWay.js.map +1 -1
  676. package/dist/unstable/http/Headers.d.ts +0 -22
  677. package/dist/unstable/http/Headers.d.ts.map +1 -1
  678. package/dist/unstable/http/Headers.js +3 -34
  679. package/dist/unstable/http/Headers.js.map +1 -1
  680. package/dist/unstable/http/HttpBody.d.ts +41 -10
  681. package/dist/unstable/http/HttpBody.d.ts.map +1 -1
  682. package/dist/unstable/http/HttpBody.js +64 -10
  683. package/dist/unstable/http/HttpBody.js.map +1 -1
  684. package/dist/unstable/http/HttpClient.d.ts +1 -1
  685. package/dist/unstable/http/HttpClient.d.ts.map +1 -1
  686. package/dist/unstable/http/HttpClient.js +28 -18
  687. package/dist/unstable/http/HttpClient.js.map +1 -1
  688. package/dist/unstable/http/HttpClientRequest.d.ts +28 -6
  689. package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
  690. package/dist/unstable/http/HttpClientRequest.js +8 -19
  691. package/dist/unstable/http/HttpClientRequest.js.map +1 -1
  692. package/dist/unstable/http/HttpClientResponse.d.ts +6 -1
  693. package/dist/unstable/http/HttpClientResponse.d.ts.map +1 -1
  694. package/dist/unstable/http/HttpClientResponse.js +10 -6
  695. package/dist/unstable/http/HttpClientResponse.js.map +1 -1
  696. package/dist/unstable/http/HttpEffect.d.ts +16 -0
  697. package/dist/unstable/http/HttpEffect.d.ts.map +1 -1
  698. package/dist/unstable/http/HttpEffect.js +121 -65
  699. package/dist/unstable/http/HttpEffect.js.map +1 -1
  700. package/dist/unstable/http/HttpIncomingMessage.d.ts +3 -3
  701. package/dist/unstable/http/HttpIncomingMessage.d.ts.map +1 -1
  702. package/dist/unstable/http/HttpIncomingMessage.js +1 -13
  703. package/dist/unstable/http/HttpIncomingMessage.js.map +1 -1
  704. package/dist/unstable/http/HttpMiddleware.d.ts +1 -1
  705. package/dist/unstable/http/HttpMiddleware.d.ts.map +1 -1
  706. package/dist/unstable/http/HttpMiddleware.js +29 -21
  707. package/dist/unstable/http/HttpMiddleware.js.map +1 -1
  708. package/dist/unstable/http/HttpPlatform.d.ts +12 -11
  709. package/dist/unstable/http/HttpPlatform.d.ts.map +1 -1
  710. package/dist/unstable/http/HttpPlatform.js +36 -10
  711. package/dist/unstable/http/HttpPlatform.js.map +1 -1
  712. package/dist/unstable/http/HttpRouter.d.ts +5 -1
  713. package/dist/unstable/http/HttpRouter.d.ts.map +1 -1
  714. package/dist/unstable/http/HttpRouter.js +22 -8
  715. package/dist/unstable/http/HttpRouter.js.map +1 -1
  716. package/dist/unstable/http/HttpServer.d.ts +11 -42
  717. package/dist/unstable/http/HttpServer.d.ts.map +1 -1
  718. package/dist/unstable/http/HttpServer.js +16 -20
  719. package/dist/unstable/http/HttpServer.js.map +1 -1
  720. package/dist/unstable/http/HttpServerRequest.d.ts.map +1 -1
  721. package/dist/unstable/http/HttpServerRequest.js +11 -11
  722. package/dist/unstable/http/HttpServerRequest.js.map +1 -1
  723. package/dist/unstable/http/HttpServerRespondable.js +1 -1
  724. package/dist/unstable/http/HttpServerRespondable.js.map +1 -1
  725. package/dist/unstable/http/HttpServerResponse.d.ts +9 -13
  726. package/dist/unstable/http/HttpServerResponse.d.ts.map +1 -1
  727. package/dist/unstable/http/HttpServerResponse.js +34 -44
  728. package/dist/unstable/http/HttpServerResponse.js.map +1 -1
  729. package/dist/unstable/http/HttpStaticServer.d.ts +2 -2
  730. package/dist/unstable/http/HttpStaticServer.d.ts.map +1 -1
  731. package/dist/unstable/http/HttpStaticServer.js +19 -19
  732. package/dist/unstable/http/HttpStaticServer.js.map +1 -1
  733. package/dist/unstable/http/Mime.d.ts +28 -0
  734. package/dist/unstable/http/Mime.d.ts.map +1 -0
  735. package/dist/unstable/http/Mime.js +72 -0
  736. package/dist/unstable/http/Mime.js.map +1 -0
  737. package/dist/unstable/http/Multipart.d.ts +22 -9
  738. package/dist/unstable/http/Multipart.d.ts.map +1 -1
  739. package/dist/unstable/http/Multipart.js +26 -10
  740. package/dist/unstable/http/Multipart.js.map +1 -1
  741. package/dist/unstable/http/MultipartParser/internal/multipart.d.ts +1 -1
  742. package/dist/unstable/http/MultipartParser/internal/multipart.d.ts.map +1 -1
  743. package/dist/unstable/http/MultipartParser/internal/multipart.js +8 -3
  744. package/dist/unstable/http/MultipartParser/internal/multipart.js.map +1 -1
  745. package/dist/unstable/http/MultipartParser.d.ts +4 -3
  746. package/dist/unstable/http/MultipartParser.d.ts.map +1 -1
  747. package/dist/unstable/http/MultipartParser.js.map +1 -1
  748. package/dist/unstable/http/UrlParams.d.ts +0 -97
  749. package/dist/unstable/http/UrlParams.d.ts.map +1 -1
  750. package/dist/unstable/http/UrlParams.js +3 -104
  751. package/dist/unstable/http/UrlParams.js.map +1 -1
  752. package/dist/unstable/http/index.d.ts +4 -0
  753. package/dist/unstable/http/index.d.ts.map +1 -1
  754. package/dist/unstable/http/index.js +4 -0
  755. package/dist/unstable/http/index.js.map +1 -1
  756. package/dist/unstable/http/internal/compression.js +8 -11
  757. package/dist/unstable/http/internal/compression.js.map +1 -1
  758. package/dist/unstable/http/internal/headers.d.ts +2 -0
  759. package/dist/unstable/http/internal/headers.d.ts.map +1 -0
  760. package/dist/unstable/http/internal/headers.js +5 -0
  761. package/dist/unstable/http/internal/headers.js.map +1 -0
  762. package/dist/unstable/http/internal/httpBody.js +8 -0
  763. package/dist/unstable/http/internal/httpBody.js.map +1 -1
  764. package/dist/unstable/http/internal/mimeTypes.d.ts +361 -0
  765. package/dist/unstable/http/internal/mimeTypes.d.ts.map +1 -0
  766. package/dist/unstable/http/internal/mimeTypes.js +363 -0
  767. package/dist/unstable/http/internal/mimeTypes.js.map +1 -0
  768. package/dist/unstable/httpapi/HttpApiBuilder.d.ts +13 -0
  769. package/dist/unstable/httpapi/HttpApiBuilder.d.ts.map +1 -1
  770. package/dist/unstable/httpapi/HttpApiBuilder.js +23 -6
  771. package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
  772. package/dist/unstable/httpapi/HttpApiClient.d.ts +4 -3
  773. package/dist/unstable/httpapi/HttpApiClient.d.ts.map +1 -1
  774. package/dist/unstable/httpapi/HttpApiClient.js +25 -13
  775. package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
  776. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +8 -3
  777. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts.map +1 -1
  778. package/dist/unstable/httpapi/HttpApiEndpoint.js +9 -6
  779. package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
  780. package/dist/unstable/httpapi/HttpApiError.d.ts.map +1 -1
  781. package/dist/unstable/httpapi/HttpApiError.js +3 -1
  782. package/dist/unstable/httpapi/HttpApiError.js.map +1 -1
  783. package/dist/unstable/httpapi/HttpApiMiddleware.d.ts.map +1 -1
  784. package/dist/unstable/httpapi/HttpApiMiddleware.js +7 -5
  785. package/dist/unstable/httpapi/HttpApiMiddleware.js.map +1 -1
  786. package/dist/unstable/httpapi/HttpApiSchema.d.ts +12 -0
  787. package/dist/unstable/httpapi/HttpApiSchema.d.ts.map +1 -1
  788. package/dist/unstable/httpapi/HttpApiSchema.js +8 -10
  789. package/dist/unstable/httpapi/HttpApiSchema.js.map +1 -1
  790. package/dist/unstable/httpapi/HttpApiTest.d.ts.map +1 -1
  791. package/dist/unstable/httpapi/HttpApiTest.js +8 -2
  792. package/dist/unstable/httpapi/HttpApiTest.js.map +1 -1
  793. package/dist/unstable/httpapi/OpenApi.d.ts.map +1 -1
  794. package/dist/unstable/httpapi/OpenApi.js +31 -20
  795. package/dist/unstable/httpapi/OpenApi.js.map +1 -1
  796. package/dist/unstable/net/IpInterface.d.ts +140 -0
  797. package/dist/unstable/net/IpInterface.d.ts.map +1 -0
  798. package/dist/unstable/net/IpInterface.js +149 -0
  799. package/dist/unstable/net/IpInterface.js.map +1 -0
  800. package/dist/unstable/net/IpNetwork.d.ts +227 -0
  801. package/dist/unstable/net/IpNetwork.d.ts.map +1 -0
  802. package/dist/unstable/net/IpNetwork.js +239 -0
  803. package/dist/unstable/net/IpNetwork.js.map +1 -0
  804. package/dist/unstable/net/NetAddress.d.ts +705 -0
  805. package/dist/unstable/net/NetAddress.d.ts.map +1 -0
  806. package/dist/unstable/net/NetAddress.js +956 -0
  807. package/dist/unstable/net/NetAddress.js.map +1 -0
  808. package/dist/unstable/net/index.d.ts +16 -0
  809. package/dist/unstable/net/index.d.ts.map +1 -0
  810. package/dist/unstable/net/index.js +17 -0
  811. package/dist/unstable/net/index.js.map +1 -0
  812. package/dist/unstable/observability/OtlpExporter.d.ts +1 -0
  813. package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
  814. package/dist/unstable/observability/OtlpExporter.js +4 -6
  815. package/dist/unstable/observability/OtlpExporter.js.map +1 -1
  816. package/dist/unstable/observability/OtlpLogger.js +9 -9
  817. package/dist/unstable/observability/OtlpLogger.js.map +1 -1
  818. package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
  819. package/dist/unstable/observability/OtlpMetrics.js +9 -8
  820. package/dist/unstable/observability/OtlpMetrics.js.map +1 -1
  821. package/dist/unstable/observability/OtlpResource.d.ts.map +1 -1
  822. package/dist/unstable/observability/OtlpResource.js +2 -2
  823. package/dist/unstable/observability/OtlpResource.js.map +1 -1
  824. package/dist/unstable/observability/OtlpTracer.d.ts.map +1 -1
  825. package/dist/unstable/observability/OtlpTracer.js +82 -55
  826. package/dist/unstable/observability/OtlpTracer.js.map +1 -1
  827. package/dist/unstable/observability/internal/otlpEnv.d.ts +1 -1
  828. package/dist/unstable/observability/internal/otlpEnv.d.ts.map +1 -1
  829. package/dist/unstable/observability/internal/otlpEnv.js +5 -9
  830. package/dist/unstable/observability/internal/otlpEnv.js.map +1 -1
  831. package/dist/unstable/persistence/PersistedCache.js +1 -1
  832. package/dist/unstable/persistence/PersistedCache.js.map +1 -1
  833. package/dist/unstable/persistence/PersistedQueue.d.ts +114 -14
  834. package/dist/unstable/persistence/PersistedQueue.d.ts.map +1 -1
  835. package/dist/unstable/persistence/PersistedQueue.js +799 -234
  836. package/dist/unstable/persistence/PersistedQueue.js.map +1 -1
  837. package/dist/unstable/persistence/RateLimiter.d.ts +28 -15
  838. package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
  839. package/dist/unstable/persistence/RateLimiter.js +33 -41
  840. package/dist/unstable/persistence/RateLimiter.js.map +1 -1
  841. package/dist/unstable/process/ChildProcess.d.ts +8 -2
  842. package/dist/unstable/process/ChildProcess.d.ts.map +1 -1
  843. package/dist/unstable/process/ChildProcess.js +7 -2
  844. package/dist/unstable/process/ChildProcess.js.map +1 -1
  845. package/dist/unstable/process/ChildProcessSpawner.d.ts +1 -1
  846. package/dist/unstable/process/ChildProcessSpawner.d.ts.map +1 -1
  847. package/dist/unstable/process/ChildProcessSpawner.js +1 -1
  848. package/dist/unstable/process/ChildProcessSpawner.js.map +1 -1
  849. package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
  850. package/dist/unstable/reactivity/Atom.js +6 -3
  851. package/dist/unstable/reactivity/Atom.js.map +1 -1
  852. package/dist/unstable/reactivity/AtomHttpApi.d.ts +3 -6
  853. package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
  854. package/dist/unstable/reactivity/AtomHttpApi.js +6 -3
  855. package/dist/unstable/reactivity/AtomHttpApi.js.map +1 -1
  856. package/dist/unstable/reactivity/AtomRegistry.js +2 -3
  857. package/dist/unstable/reactivity/AtomRegistry.js.map +1 -1
  858. package/dist/unstable/reactivity/AtomRpc.d.ts +2 -2
  859. package/dist/unstable/reactivity/AtomRpc.d.ts.map +1 -1
  860. package/dist/unstable/reactivity/AtomRpc.js +1 -1
  861. package/dist/unstable/reactivity/AtomRpc.js.map +1 -1
  862. package/dist/unstable/reactivity/Hydration.d.ts +6 -4
  863. package/dist/unstable/reactivity/Hydration.d.ts.map +1 -1
  864. package/dist/unstable/reactivity/Hydration.js +20 -6
  865. package/dist/unstable/reactivity/Hydration.js.map +1 -1
  866. package/dist/unstable/reactivity/Reactivity.d.ts +26 -26
  867. package/dist/unstable/reactivity/Reactivity.d.ts.map +1 -1
  868. package/dist/unstable/reactivity/Reactivity.js +10 -12
  869. package/dist/unstable/reactivity/Reactivity.js.map +1 -1
  870. package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
  871. package/dist/unstable/rpc/RpcClient.js +64 -64
  872. package/dist/unstable/rpc/RpcClient.js.map +1 -1
  873. package/dist/unstable/rpc/RpcClientError.d.ts +1 -1
  874. package/dist/unstable/rpc/RpcMessage.d.ts +3 -1
  875. package/dist/unstable/rpc/RpcMessage.d.ts.map +1 -1
  876. package/dist/unstable/rpc/RpcMessage.js +1 -1
  877. package/dist/unstable/rpc/RpcMessage.js.map +1 -1
  878. package/dist/unstable/rpc/RpcMiddleware.d.ts.map +1 -1
  879. package/dist/unstable/rpc/RpcMiddleware.js +7 -5
  880. package/dist/unstable/rpc/RpcMiddleware.js.map +1 -1
  881. package/dist/unstable/rpc/RpcSerialization.d.ts +5 -39
  882. package/dist/unstable/rpc/RpcSerialization.d.ts.map +1 -1
  883. package/dist/unstable/rpc/RpcSerialization.js +22 -115
  884. package/dist/unstable/rpc/RpcSerialization.js.map +1 -1
  885. package/dist/unstable/rpc/RpcServer.d.ts.map +1 -1
  886. package/dist/unstable/rpc/RpcServer.js +104 -57
  887. package/dist/unstable/rpc/RpcServer.js.map +1 -1
  888. package/dist/unstable/schema/Model.d.ts.map +1 -1
  889. package/dist/unstable/schema/Model.js +7 -6
  890. package/dist/unstable/schema/Model.js.map +1 -1
  891. package/dist/unstable/schema/VariantSchema.d.ts.map +1 -1
  892. package/dist/unstable/schema/VariantSchema.js +3 -0
  893. package/dist/unstable/schema/VariantSchema.js.map +1 -1
  894. package/dist/unstable/socket/Socket.d.ts +287 -102
  895. package/dist/unstable/socket/Socket.d.ts.map +1 -1
  896. package/dist/unstable/socket/Socket.js +408 -215
  897. package/dist/unstable/socket/Socket.js.map +1 -1
  898. package/dist/unstable/socket/SocketServer.d.ts +5 -32
  899. package/dist/unstable/socket/SocketServer.d.ts.map +1 -1
  900. package/dist/unstable/socket/SocketServer.js +3 -3
  901. package/dist/unstable/socket/SocketServer.js.map +1 -1
  902. package/dist/unstable/sql/SqlClient.d.ts +20 -0
  903. package/dist/unstable/sql/SqlClient.d.ts.map +1 -1
  904. package/dist/unstable/sql/SqlClient.js +14 -7
  905. package/dist/unstable/sql/SqlClient.js.map +1 -1
  906. package/dist/unstable/sql/SqlConnection.d.ts +15 -0
  907. package/dist/unstable/sql/SqlConnection.d.ts.map +1 -1
  908. package/dist/unstable/sql/SqlConnection.js.map +1 -1
  909. package/dist/unstable/sql/SqlModel.d.ts +1 -1
  910. package/dist/unstable/sql/SqlModel.d.ts.map +1 -1
  911. package/dist/unstable/sql/Statement.d.ts +13 -5
  912. package/dist/unstable/sql/Statement.d.ts.map +1 -1
  913. package/dist/unstable/sql/Statement.js +29 -15
  914. package/dist/unstable/sql/Statement.js.map +1 -1
  915. package/dist/unstable/workers/Transferable.js +1 -1
  916. package/dist/unstable/workers/Worker.d.ts.map +1 -1
  917. package/dist/unstable/workers/Worker.js +3 -1
  918. package/dist/unstable/workers/Worker.js.map +1 -1
  919. package/dist/unstable/workflow/Activity.d.ts +7 -0
  920. package/dist/unstable/workflow/Activity.d.ts.map +1 -1
  921. package/dist/unstable/workflow/Activity.js +14 -4
  922. package/dist/unstable/workflow/Activity.js.map +1 -1
  923. package/dist/unstable/workflow/DurableClock.js +1 -1
  924. package/dist/unstable/workflow/DurableClock.js.map +1 -1
  925. package/dist/unstable/workflow/DurableDeferred.d.ts +2 -2
  926. package/dist/unstable/workflow/DurableDeferred.d.ts.map +1 -1
  927. package/dist/unstable/workflow/DurableDeferred.js.map +1 -1
  928. package/dist/unstable/workflow/DurableQueue.d.ts +8 -0
  929. package/dist/unstable/workflow/DurableQueue.d.ts.map +1 -1
  930. package/dist/unstable/workflow/DurableQueue.js +8 -0
  931. package/dist/unstable/workflow/DurableQueue.js.map +1 -1
  932. package/dist/unstable/workflow/Workflow.d.ts +5 -0
  933. package/dist/unstable/workflow/Workflow.d.ts.map +1 -1
  934. package/dist/unstable/workflow/Workflow.js +70 -12
  935. package/dist/unstable/workflow/Workflow.js.map +1 -1
  936. package/dist/unstable/workflow/WorkflowEngine.d.ts +6 -0
  937. package/dist/unstable/workflow/WorkflowEngine.d.ts.map +1 -1
  938. package/dist/unstable/workflow/WorkflowEngine.js +11 -0
  939. package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
  940. package/package.json +7 -9
  941. package/src/Array.ts +118 -67
  942. package/src/BigDecimal.ts +50 -28
  943. package/src/ByteSize.ts +838 -0
  944. package/src/Cache.ts +17 -3
  945. package/src/Cause.ts +1 -1
  946. package/src/Channel.ts +183 -48
  947. package/src/Chunk.ts +65 -36
  948. package/src/Config.ts +237 -248
  949. package/src/ConfigProvider.ts +7 -8
  950. package/src/Context.ts +31 -0
  951. package/src/Cron.ts +2 -2
  952. package/src/Crypto.ts +3 -2
  953. package/src/Deferred.ts +7 -6
  954. package/src/Duration.ts +1 -1
  955. package/src/Effect.ts +226 -122
  956. package/src/Effectable.ts +78 -9
  957. package/src/Encoding.ts +101 -11
  958. package/src/Equal.ts +1 -1
  959. package/src/ExecutionPlan.ts +3 -0
  960. package/src/Fiber.ts +33 -8
  961. package/src/FiberHandle.ts +3 -3
  962. package/src/FiberMap.ts +19 -10
  963. package/src/FileSystem.ts +55 -230
  964. package/src/Formatter.ts +21 -3
  965. package/src/Graph.ts +55 -25
  966. package/src/Hash.ts +5 -16
  967. package/src/HashRing.ts +9 -2
  968. package/src/HashSet.ts +56 -0
  969. package/src/Iterable.ts +66 -41
  970. package/src/JsonPatch.ts +4 -4
  971. package/src/JsonPointer.ts +97 -4
  972. package/src/JsonSchema.ts +8 -26
  973. package/src/Layer.ts +59 -18
  974. package/src/LayerMap.ts +8 -6
  975. package/src/LayerRef.ts +7 -5
  976. package/src/Logger.ts +125 -18
  977. package/src/ManagedRuntime.ts +1 -1
  978. package/src/Match.ts +33 -14
  979. package/src/Metric.ts +24 -21
  980. package/src/MutableHashMap.ts +1 -1
  981. package/src/MutableHashSet.ts +1 -1
  982. package/src/MutableList.ts +18 -2
  983. package/src/Number.ts +7 -1
  984. package/src/Optic.ts +8 -4
  985. package/src/Option.ts +1 -1
  986. package/src/Order.ts +3 -1
  987. package/src/PartitionedSemaphore.ts +1 -2
  988. package/src/Path.ts +1 -1
  989. package/src/PlatformError.ts +1 -1
  990. package/src/Pool.ts +125 -8
  991. package/src/PrimaryKey.ts +1 -1
  992. package/src/PubSub.ts +32 -20
  993. package/src/Queue.ts +119 -28
  994. package/src/Random.ts +20 -6
  995. package/src/RcMap.ts +20 -13
  996. package/src/Redacted.ts +1 -1
  997. package/src/RequestResolver.ts +49 -26
  998. package/src/Result.ts +1 -1
  999. package/src/Scheduler.ts +21 -11
  1000. package/src/Schema.ts +4809 -6368
  1001. package/src/SchemaAST.ts +1031 -284
  1002. package/src/SchemaGetter.ts +75 -21
  1003. package/src/SchemaIssue.ts +259 -15
  1004. package/src/SchemaParser.ts +2 -12
  1005. package/src/SchemaRepresentation.ts +1593 -29
  1006. package/src/SchemaTransformation.ts +145 -22
  1007. package/src/ScopedCache.ts +10 -3
  1008. package/src/Sink.ts +31 -15
  1009. package/src/Stream.ts +294 -76
  1010. package/src/String.ts +20 -9
  1011. package/src/Struct.ts +8 -4
  1012. package/src/SynchronizedRef.ts +3 -5
  1013. package/src/Terminal.ts +3 -3
  1014. package/src/Tracer.ts +43 -14
  1015. package/src/Tuple.ts +3 -1
  1016. package/src/TxChunk.ts +1 -1
  1017. package/src/TxDeferred.ts +1 -1
  1018. package/src/TxHashMap.ts +1 -1
  1019. package/src/TxHashSet.ts +92 -11
  1020. package/src/TxPriorityQueue.ts +1 -1
  1021. package/src/TxPubSub.ts +1 -1
  1022. package/src/TxQueue.ts +22 -17
  1023. package/src/TxReentrantLock.ts +29 -1
  1024. package/src/TxRef.ts +1 -1
  1025. package/src/TxSemaphore.ts +1 -1
  1026. package/src/TxSubscriptionRef.ts +1 -1
  1027. package/src/Types.ts +40 -17
  1028. package/src/Utils.ts +3 -1
  1029. package/src/index.ts +5 -0
  1030. package/src/internal/arbitrary/model.ts +701 -0
  1031. package/src/internal/arbitrary/regexp.ts +855 -0
  1032. package/src/internal/arbitrary/runner.ts +608 -0
  1033. package/src/internal/arbitrary/schema.ts +1800 -0
  1034. package/src/internal/core.ts +48 -22
  1035. package/src/internal/count.ts +14 -0
  1036. package/src/internal/dateTime.ts +8 -10
  1037. package/src/internal/effect.ts +475 -295
  1038. package/src/internal/graph.ts +6 -1
  1039. package/src/internal/hashMap.ts +5 -3
  1040. package/src/internal/hashSet.ts +1 -1
  1041. package/src/internal/matcher.ts +34 -19
  1042. package/src/internal/metric.ts +1 -1
  1043. package/src/internal/option.ts +8 -6
  1044. package/src/internal/random.ts +20 -7
  1045. package/src/internal/rcRef.ts +10 -7
  1046. package/src/internal/references.ts +1 -0
  1047. package/src/internal/request.ts +12 -7
  1048. package/src/internal/result.ts +15 -11
  1049. package/src/internal/schema/annotations.ts +3 -3
  1050. package/src/internal/schema/fromJsonSchemaDocument.ts +14 -29
  1051. package/src/internal/schema/fromRepresentation.ts +5 -3
  1052. package/src/internal/schema/{schema.ts → make.ts} +0 -40
  1053. package/src/internal/schema/parser.ts +8 -0
  1054. package/src/internal/schema/standardSchema.ts +125 -0
  1055. package/src/internal/schema/toCodeDocument.ts +58 -44
  1056. package/src/internal/schema/toCodec.ts +312 -0
  1057. package/src/internal/schema/toDifferJsonPatch.ts +24 -0
  1058. package/src/internal/schema/toEncoderXml.ts +110 -0
  1059. package/src/internal/schema/toEquivalence.ts +76 -0
  1060. package/src/internal/schema/toFormatter.ts +230 -0
  1061. package/src/internal/schema/toIso.ts +20 -0
  1062. package/src/internal/schema/toJsonSchemaDocument.ts +125 -67
  1063. package/src/internal/schema/toRepresentation.ts +1 -1
  1064. package/src/internal/schemaError.ts +8 -0
  1065. package/src/internal/stream.ts +14 -6
  1066. package/src/internal/tracer.ts +4 -0
  1067. package/src/internal/trie.ts +5 -2
  1068. package/src/internal/uuid.ts +4 -0
  1069. package/src/testing/TestSchema.ts +36 -30
  1070. package/src/testing/index.ts +0 -5
  1071. package/src/unstable/ai/AiError.ts +69 -5
  1072. package/src/unstable/ai/AnthropicStructuredOutput.ts +4 -1
  1073. package/src/unstable/ai/Chat.ts +35 -36
  1074. package/src/unstable/ai/EmbeddingModel.ts +27 -15
  1075. package/src/unstable/ai/LanguageModel.ts +283 -100
  1076. package/src/unstable/ai/McpServer.ts +36 -20
  1077. package/src/unstable/ai/OpenAiStructuredOutput.ts +4 -1
  1078. package/src/unstable/ai/Prompt.ts +19 -4
  1079. package/src/unstable/ai/Response.ts +107 -189
  1080. package/src/unstable/ai/Tokenizer.ts +4 -5
  1081. package/src/unstable/ai/Tool.ts +58 -35
  1082. package/src/unstable/ai/Toolkit.ts +43 -37
  1083. package/src/unstable/ai/internal/structured-output.ts +5 -5
  1084. package/src/unstable/arbitrary/Arbitrary.ts +715 -0
  1085. package/src/unstable/arbitrary/index.ts +10 -0
  1086. package/src/unstable/cli/Argument.ts +111 -115
  1087. package/src/unstable/cli/CliError.ts +2 -0
  1088. package/src/unstable/cli/CliOutput.ts +40 -3
  1089. package/src/unstable/cli/Command.ts +74 -74
  1090. package/src/unstable/cli/Completions.ts +4 -4
  1091. package/src/unstable/cli/Flag.ts +158 -169
  1092. package/src/unstable/cli/GlobalFlag.ts +13 -13
  1093. package/src/unstable/cli/Param.ts +150 -159
  1094. package/src/unstable/cli/Primitive.ts +75 -76
  1095. package/src/unstable/cli/Prompt.ts +88 -87
  1096. package/src/unstable/cli/internal/completions/descriptor.ts +23 -11
  1097. package/src/unstable/cli/internal/completions/zsh.ts +2 -2
  1098. package/src/unstable/cli/internal/config.ts +4 -4
  1099. package/src/unstable/cli/internal/parser.ts +1 -1
  1100. package/src/unstable/cli/internal/wizard.ts +18 -13
  1101. package/src/unstable/cluster/ClusterSchema.ts +19 -1
  1102. package/src/unstable/cluster/ClusterWorkflowEngine.ts +66 -16
  1103. package/src/unstable/cluster/Entity.ts +3 -0
  1104. package/src/unstable/cluster/EntityProxyServer.ts +6 -2
  1105. package/src/unstable/cluster/Envelope.ts +3 -3
  1106. package/src/unstable/cluster/HttpRunner.ts +7 -2
  1107. package/src/unstable/cluster/MessageStorage.ts +62 -21
  1108. package/src/unstable/cluster/Reply.ts +2 -2
  1109. package/src/unstable/cluster/Sharding.ts +44 -19
  1110. package/src/unstable/cluster/ShardingConfig.ts +23 -23
  1111. package/src/unstable/cluster/SocketRunner.ts +5 -4
  1112. package/src/unstable/cluster/SqlMessageStorage.ts +12 -8
  1113. package/src/unstable/cluster/SqlRunnerStorage.ts +18 -10
  1114. package/src/unstable/cluster/internal/clusterAbandon.ts +14 -0
  1115. package/src/unstable/cluster/internal/entityManager.ts +12 -4
  1116. package/src/unstable/cluster/internal/interruptors.ts +58 -1
  1117. package/src/unstable/cluster/internal/resourceRef.ts +15 -7
  1118. package/src/unstable/devtools/DevToolsClient.ts +13 -3
  1119. package/src/unstable/encoding/Ini.ts +2 -0
  1120. package/src/unstable/encoding/SchemaBinary.ts +150 -44
  1121. package/src/unstable/encoding/Sse.ts +1 -1
  1122. package/src/unstable/encoding/Toml.ts +7 -5
  1123. package/src/unstable/encoding/Yaml.ts +18 -5
  1124. package/src/unstable/encoding/index.ts +0 -5
  1125. package/src/unstable/eventlog/Event.ts +7 -7
  1126. package/src/unstable/eventlog/EventJournal.ts +9 -9
  1127. package/src/unstable/eventlog/EventLog.ts +5 -5
  1128. package/src/unstable/eventlog/EventLogMessage.ts +25 -15
  1129. package/src/unstable/eventlog/EventLogRemote.ts +15 -4
  1130. package/src/unstable/eventlog/EventLogServerUnencrypted.ts +2 -2
  1131. package/src/unstable/eventlog/SqlEventJournal.ts +32 -9
  1132. package/src/unstable/eventlog/SqlEventLogServerUnencrypted.ts +11 -1
  1133. package/src/unstable/http/Cookies.ts +2 -102
  1134. package/src/unstable/http/FetchHttpClient.ts +1 -1
  1135. package/src/unstable/http/FindMyWay/internal/router.ts +139 -33
  1136. package/src/unstable/http/FindMyWay.ts +15 -5
  1137. package/src/unstable/http/Headers.ts +3 -48
  1138. package/src/unstable/http/HttpBody.ts +107 -36
  1139. package/src/unstable/http/HttpClient.ts +41 -30
  1140. package/src/unstable/http/HttpClientRequest.ts +32 -18
  1141. package/src/unstable/http/HttpClientResponse.ts +16 -3
  1142. package/src/unstable/http/HttpEffect.ts +145 -73
  1143. package/src/unstable/http/HttpIncomingMessage.ts +4 -4
  1144. package/src/unstable/http/HttpMiddleware.ts +43 -24
  1145. package/src/unstable/http/HttpPlatform.ts +62 -20
  1146. package/src/unstable/http/HttpRouter.ts +27 -16
  1147. package/src/unstable/http/HttpServer.ts +18 -57
  1148. package/src/unstable/http/HttpServerRequest.ts +17 -15
  1149. package/src/unstable/http/HttpServerRespondable.ts +1 -1
  1150. package/src/unstable/http/HttpServerResponse.ts +49 -40
  1151. package/src/unstable/http/HttpStaticServer.ts +30 -28
  1152. package/src/unstable/http/Mime.ts +76 -0
  1153. package/src/unstable/http/Multipart.ts +35 -18
  1154. package/src/unstable/http/MultipartParser/internal/multipart.ts +10 -3
  1155. package/src/unstable/http/MultipartParser.ts +4 -3
  1156. package/src/unstable/http/UrlParams.ts +3 -161
  1157. package/src/unstable/http/index.ts +5 -0
  1158. package/src/unstable/http/internal/compression.ts +11 -12
  1159. package/src/unstable/http/internal/headers.ts +7 -0
  1160. package/src/unstable/http/internal/httpBody.ts +9 -0
  1161. package/src/unstable/http/internal/mimeTypes.ts +395 -0
  1162. package/src/unstable/httpapi/HttpApiBuilder.ts +52 -6
  1163. package/src/unstable/httpapi/HttpApiClient.ts +44 -24
  1164. package/src/unstable/httpapi/HttpApiEndpoint.ts +24 -11
  1165. package/src/unstable/httpapi/HttpApiError.ts +3 -1
  1166. package/src/unstable/httpapi/HttpApiMiddleware.ts +7 -5
  1167. package/src/unstable/httpapi/HttpApiSchema.ts +14 -7
  1168. package/src/unstable/httpapi/HttpApiTest.ts +6 -1
  1169. package/src/unstable/httpapi/OpenApi.ts +32 -22
  1170. package/src/unstable/net/IpInterface.ts +242 -0
  1171. package/src/unstable/net/IpNetwork.ts +357 -0
  1172. package/src/unstable/net/NetAddress.ts +1271 -0
  1173. package/src/unstable/net/index.ts +20 -0
  1174. package/src/unstable/observability/OtlpExporter.ts +5 -6
  1175. package/src/unstable/observability/OtlpLogger.ts +9 -9
  1176. package/src/unstable/observability/OtlpMetrics.ts +9 -8
  1177. package/src/unstable/observability/OtlpResource.ts +5 -4
  1178. package/src/unstable/observability/OtlpTracer.ts +103 -81
  1179. package/src/unstable/observability/internal/otlpEnv.ts +10 -13
  1180. package/src/unstable/persistence/PersistedCache.ts +1 -1
  1181. package/src/unstable/persistence/PersistedQueue.ts +1100 -291
  1182. package/src/unstable/persistence/RateLimiter.ts +64 -58
  1183. package/src/unstable/process/ChildProcess.ts +15 -4
  1184. package/src/unstable/process/ChildProcessSpawner.ts +1 -1
  1185. package/src/unstable/reactivity/Atom.ts +6 -3
  1186. package/src/unstable/reactivity/AtomHttpApi.ts +21 -10
  1187. package/src/unstable/reactivity/AtomRegistry.ts +2 -4
  1188. package/src/unstable/reactivity/AtomRpc.ts +6 -5
  1189. package/src/unstable/reactivity/Hydration.ts +26 -7
  1190. package/src/unstable/reactivity/Reactivity.ts +49 -36
  1191. package/src/unstable/rpc/RpcClient.ts +62 -59
  1192. package/src/unstable/rpc/RpcMessage.ts +3 -1
  1193. package/src/unstable/rpc/RpcMiddleware.ts +7 -5
  1194. package/src/unstable/rpc/RpcSerialization.ts +27 -117
  1195. package/src/unstable/rpc/RpcServer.ts +143 -80
  1196. package/src/unstable/schema/Model.ts +8 -7
  1197. package/src/unstable/schema/VariantSchema.ts +3 -0
  1198. package/src/unstable/socket/Socket.ts +714 -383
  1199. package/src/unstable/socket/SocketServer.ts +5 -35
  1200. package/src/unstable/sql/SqlClient.ts +42 -7
  1201. package/src/unstable/sql/SqlConnection.ts +18 -0
  1202. package/src/unstable/sql/SqlModel.ts +1 -1
  1203. package/src/unstable/sql/Statement.ts +46 -20
  1204. package/src/unstable/workers/Transferable.ts +1 -1
  1205. package/src/unstable/workers/Worker.ts +3 -1
  1206. package/src/unstable/workflow/Activity.ts +20 -9
  1207. package/src/unstable/workflow/DurableClock.ts +1 -1
  1208. package/src/unstable/workflow/DurableDeferred.ts +6 -0
  1209. package/src/unstable/workflow/DurableQueue.ts +8 -0
  1210. package/src/unstable/workflow/Workflow.ts +105 -28
  1211. package/src/unstable/workflow/WorkflowEngine.ts +22 -0
  1212. package/dist/internal/schema/schema.d.ts.map +0 -1
  1213. package/dist/internal/schema/schema.js.map +0 -1
  1214. package/dist/internal/schema/toArbitrary.d.ts +0 -2
  1215. package/dist/internal/schema/toArbitrary.d.ts.map +0 -1
  1216. package/dist/internal/schema/toArbitrary.js +0 -705
  1217. package/dist/internal/schema/toArbitrary.js.map +0 -1
  1218. package/dist/testing/FastCheck.d.ts +0 -90
  1219. package/dist/testing/FastCheck.d.ts.map +0 -1
  1220. package/dist/testing/FastCheck.js +0 -90
  1221. package/dist/testing/FastCheck.js.map +0 -1
  1222. package/dist/unstable/encoding/Msgpack.d.ts +0 -185
  1223. package/dist/unstable/encoding/Msgpack.d.ts.map +0 -1
  1224. package/dist/unstable/encoding/Msgpack.js +0 -227
  1225. package/dist/unstable/encoding/Msgpack.js.map +0 -1
  1226. package/src/internal/schema/toArbitrary.ts +0 -843
  1227. package/src/testing/FastCheck.ts +0 -90
  1228. package/src/unstable/encoding/Msgpack.ts +0 -432
  1229. /package/dist/internal/{schema → arbitrary}/schema.d.ts +0 -0
@@ -0,0 +1,1271 @@
1
+ /**
2
+ * Pure, platform-neutral values for MAC, IP, internet socket, and Unix path addresses.
3
+ *
4
+ * @since 4.0.0
5
+ */
6
+ import * as Data from "../../Data.ts"
7
+ import * as Equal from "../../Equal.ts"
8
+ import { dual } from "../../Function.ts"
9
+ import * as Hash from "../../Hash.ts"
10
+ import { NodeInspectSymbol } from "../../Inspectable.ts"
11
+ import * as Option from "../../Option.ts"
12
+ import { hasProperty } from "../../Predicate.ts"
13
+ import * as Result from "../../Result.ts"
14
+
15
+ const TypeId = "~effect/net/NetAddress" as const
16
+
17
+ /**
18
+ * An immutable 32-bit IPv4 address.
19
+ *
20
+ * @category models
21
+ * @since 4.0.0
22
+ */
23
+ export interface Ipv4Address extends Equal.Equal, Hash.Hash {
24
+ readonly _tag: "Ipv4Address"
25
+ readonly [TypeId]: typeof TypeId
26
+ toString(): string
27
+ toJSON(): string
28
+ }
29
+
30
+ /**
31
+ * An immutable 128-bit IPv6 address without socket scope metadata.
32
+ *
33
+ * @category models
34
+ * @since 4.0.0
35
+ */
36
+ export interface Ipv6Address extends Equal.Equal, Hash.Hash {
37
+ readonly _tag: "Ipv6Address"
38
+ readonly [TypeId]: typeof TypeId
39
+ toString(): string
40
+ toJSON(): string
41
+ }
42
+
43
+ /**
44
+ * A numeric IPv4 or IPv6 address.
45
+ *
46
+ * @category models
47
+ * @since 4.0.0
48
+ */
49
+ export type IpAddress = Ipv4Address | Ipv6Address
50
+
51
+ /**
52
+ * An immutable 48-bit IEEE 802 MAC address.
53
+ *
54
+ * @category models
55
+ * @since 4.0.0
56
+ */
57
+ export interface MacAddress extends Equal.Equal, Hash.Hash {
58
+ readonly _tag: "MacAddress"
59
+ readonly [TypeId]: typeof TypeId
60
+ toString(): string
61
+ toJSON(): string
62
+ }
63
+
64
+ const getBytes = (self: IpAddress | MacAddress): Uint8Array => (self as any).bytes
65
+
66
+ /**
67
+ * A resolved IPv4 internet address and port.
68
+ *
69
+ * @category models
70
+ * @since 4.0.0
71
+ */
72
+ export interface InetAddressV4 extends Equal.Equal, Hash.Hash {
73
+ readonly _tag: "InetAddressV4"
74
+ readonly address: Ipv4Address
75
+ readonly port: number
76
+ readonly [TypeId]: typeof TypeId
77
+ toString(): string
78
+ toJSON(): string
79
+ }
80
+
81
+ /**
82
+ * A resolved IPv6 internet address, port, and scope identifier.
83
+ *
84
+ * @category models
85
+ * @since 4.0.0
86
+ */
87
+ export interface InetAddressV6 extends Equal.Equal, Hash.Hash {
88
+ readonly _tag: "InetAddressV6"
89
+ readonly address: Ipv6Address
90
+ readonly port: number
91
+ readonly scopeId: number
92
+ readonly [TypeId]: typeof TypeId
93
+ toString(): string
94
+ toJSON(): string
95
+ }
96
+
97
+ /**
98
+ * A resolved IPv4 or IPv6 internet address and port.
99
+ *
100
+ * @category models
101
+ * @since 4.0.0
102
+ */
103
+ export type InetAddress = InetAddressV4 | InetAddressV6
104
+
105
+ /**
106
+ * An opaque Unix-domain filesystem socket path.
107
+ *
108
+ * @category models
109
+ * @since 4.0.0
110
+ */
111
+ export interface UnixPathAddress extends Equal.Equal, Hash.Hash {
112
+ readonly _tag: "UnixPathAddress"
113
+ readonly path: string
114
+ readonly [TypeId]: typeof TypeId
115
+ toString(): string
116
+ toJSON(): string
117
+ }
118
+
119
+ /**
120
+ * A portable concrete internet or Unix-domain filesystem address.
121
+ *
122
+ * @category models
123
+ * @since 4.0.0
124
+ */
125
+ export type SocketAddress = InetAddress | UnixPathAddress
126
+
127
+ /**
128
+ * Companion types for constructing socket addresses.
129
+ *
130
+ * @since 4.0.0
131
+ */
132
+ export declare namespace SocketAddress {
133
+ /**
134
+ * Input that can be converted to a concrete `SocketAddress` without hostname
135
+ * resolution.
136
+ *
137
+ * **Details**
138
+ *
139
+ * String inputs must use `IPv4:port` or `[IPv6]:port` notation. Address
140
+ * properties must be numeric IPv4 or IPv6 literals.
141
+ *
142
+ * @category models
143
+ * @since 4.0.0
144
+ */
145
+ export type Input =
146
+ | SocketAddress
147
+ | string
148
+ | { readonly address: IpAddress | string; readonly port: number }
149
+ | { readonly path: string }
150
+ }
151
+
152
+ /**
153
+ * A checked network-address operation failure retaining the address or supplied input.
154
+ *
155
+ * **Details**
156
+ *
157
+ * Address-based operations retain the address value. Parsing and numeric
158
+ * construction retain the supplied string or array. Composed operations forward
159
+ * errors from the failing operation unchanged. Failures from external operations
160
+ * retain the original exception in `cause` when available.
161
+ *
162
+ * @category errors
163
+ * @since 4.0.0
164
+ */
165
+ export class NetAddressError extends Data.TaggedError("NetAddressError")<{
166
+ readonly message: string
167
+ readonly input: unknown
168
+ readonly cause?: unknown
169
+ }> {}
170
+
171
+ const isAddress = (u: unknown): u is IpAddress | MacAddress | SocketAddress => hasProperty(u, TypeId)
172
+
173
+ /**
174
+ * Returns `true` when a value is an IPv4 address.
175
+ *
176
+ * @category guards
177
+ * @since 4.0.0
178
+ */
179
+ export const isIpv4Address = (u: unknown): u is Ipv4Address => isAddress(u) && u._tag === "Ipv4Address"
180
+
181
+ /**
182
+ * Returns `true` when a value is an IPv6 address.
183
+ *
184
+ * @category guards
185
+ * @since 4.0.0
186
+ */
187
+ export const isIpv6Address = (u: unknown): u is Ipv6Address => isAddress(u) && u._tag === "Ipv6Address"
188
+
189
+ /**
190
+ * Returns `true` when a value is an IPv4 or IPv6 address.
191
+ *
192
+ * @category guards
193
+ * @since 4.0.0
194
+ */
195
+ export const isIpAddress = (u: unknown): u is IpAddress => isIpv4Address(u) || isIpv6Address(u)
196
+
197
+ /**
198
+ * Returns the bit width of an IP address.
199
+ *
200
+ * @category getters
201
+ * @since 4.0.0
202
+ */
203
+ export const width = (address: IpAddress): 32 | 128 => isIpv4Address(address) ? 32 : 128
204
+
205
+ /**
206
+ * Returns `true` when a value is a MAC address.
207
+ *
208
+ * @category guards
209
+ * @since 4.0.0
210
+ */
211
+ export const isMacAddress = (u: unknown): u is MacAddress => isAddress(u) && u._tag === "MacAddress"
212
+
213
+ /**
214
+ * Returns `true` when a value is a resolved IPv4 internet address.
215
+ *
216
+ * @category guards
217
+ * @since 4.0.0
218
+ */
219
+ export const isInetAddressV4 = (u: unknown): u is InetAddressV4 => isAddress(u) && u._tag === "InetAddressV4"
220
+
221
+ /**
222
+ * Returns `true` when a value is a resolved IPv6 internet address.
223
+ *
224
+ * @category guards
225
+ * @since 4.0.0
226
+ */
227
+ export const isInetAddressV6 = (u: unknown): u is InetAddressV6 => isAddress(u) && u._tag === "InetAddressV6"
228
+
229
+ /**
230
+ * Returns `true` when a value is a resolved internet address.
231
+ *
232
+ * @category guards
233
+ * @since 4.0.0
234
+ */
235
+ export const isInetAddress = (u: unknown): u is InetAddress => isInetAddressV4(u) || isInetAddressV6(u)
236
+
237
+ /**
238
+ * Returns `true` when a value is a Unix-domain filesystem address.
239
+ *
240
+ * @category guards
241
+ * @since 4.0.0
242
+ */
243
+ export const isUnixPathAddress = (u: unknown): u is UnixPathAddress => isAddress(u) && u._tag === "UnixPathAddress"
244
+
245
+ /**
246
+ * Returns `true` when a value is a portable concrete socket address.
247
+ *
248
+ * @category guards
249
+ * @since 4.0.0
250
+ */
251
+ export const isSocketAddress = (u: unknown): u is SocketAddress => isInetAddress(u) || isUnixPathAddress(u)
252
+
253
+ const Ipv4Proto = {
254
+ _tag: "Ipv4Address",
255
+ [TypeId]: TypeId,
256
+ [Equal.symbol](this: Ipv4Address, that: Equal.Equal): boolean {
257
+ return isIpv4Address(that) && bytesEqual(getBytes(this), getBytes(that))
258
+ },
259
+ [Hash.symbol](this: Ipv4Address): number {
260
+ return hashBytes("Ipv4Address", getBytes(this))
261
+ },
262
+ toString(this: Ipv4Address): string {
263
+ return formatIp(this)
264
+ },
265
+ toJSON(this: Ipv4Address): string {
266
+ return this.toString()
267
+ },
268
+ [NodeInspectSymbol](this: Ipv4Address): string {
269
+ return this.toJSON()
270
+ }
271
+ }
272
+
273
+ const Ipv6Proto = {
274
+ _tag: "Ipv6Address",
275
+ [TypeId]: TypeId,
276
+ [Equal.symbol](this: Ipv6Address, that: Equal.Equal): boolean {
277
+ return isIpv6Address(that) && bytesEqual(getBytes(this), getBytes(that))
278
+ },
279
+ [Hash.symbol](this: Ipv6Address): number {
280
+ return hashBytes("Ipv6Address", getBytes(this))
281
+ },
282
+ toString(this: Ipv6Address): string {
283
+ return formatIp(this)
284
+ },
285
+ toJSON(this: Ipv6Address): string {
286
+ return this.toString()
287
+ },
288
+ [NodeInspectSymbol](this: Ipv6Address): string {
289
+ return this.toJSON()
290
+ }
291
+ }
292
+
293
+ const MacProto = {
294
+ _tag: "MacAddress",
295
+ [TypeId]: TypeId,
296
+ [Equal.symbol](this: MacAddress, that: Equal.Equal): boolean {
297
+ return isMacAddress(that) && bytesEqual(getBytes(this), getBytes(that))
298
+ },
299
+ [Hash.symbol](this: MacAddress): number {
300
+ return hashBytes("MacAddress", getBytes(this))
301
+ },
302
+ toString(this: MacAddress): string {
303
+ return formatMacAddress(this)
304
+ },
305
+ toJSON(this: MacAddress): string {
306
+ return this.toString()
307
+ },
308
+ [NodeInspectSymbol](this: MacAddress): string {
309
+ return this.toJSON()
310
+ }
311
+ }
312
+
313
+ const bytesEqual = (self: Uint8Array, that: Uint8Array): boolean => {
314
+ if (self.length !== that.length) return false
315
+ for (let index = 0; index < self.length; index++) {
316
+ if (self[index] !== that[index]) return false
317
+ }
318
+ return true
319
+ }
320
+
321
+ const hashBytes = (tag: string, bytes: Uint8Array): number => {
322
+ return Hash.combine(Hash.string(tag), Hash.array(bytes))
323
+ }
324
+
325
+ const makeIpv4 = (bytes: Uint8Array): Ipv4Address => {
326
+ const self = Object.assign(Object.create(Ipv4Proto), { bytes: new Uint8Array(bytes) })
327
+ return Object.freeze(self)
328
+ }
329
+
330
+ const makeIpv6 = (bytes: Uint8Array): Ipv6Address => {
331
+ const self = Object.assign(Object.create(Ipv6Proto), { bytes: new Uint8Array(bytes) })
332
+ return Object.freeze(self)
333
+ }
334
+
335
+ const makeMac = (bytes: Uint8Array): MacAddress => {
336
+ const self = Object.assign(Object.create(MacProto), { bytes: new Uint8Array(bytes) })
337
+ return Object.freeze(self)
338
+ }
339
+
340
+ /**
341
+ * Creates an IPv4 address from trusted network-order bytes without validation.
342
+ *
343
+ * @category unsafe
344
+ * @since 4.0.0
345
+ */
346
+ export const ipv4FromBytesUnsafe = (bytes: Uint8Array): Ipv4Address => makeIpv4(bytes)
347
+
348
+ /**
349
+ * Creates an IPv6 address from trusted network-order bytes without validation.
350
+ *
351
+ * @category unsafe
352
+ * @since 4.0.0
353
+ */
354
+ export const ipv6FromBytesUnsafe = (bytes: Uint8Array): Ipv6Address => makeIpv6(bytes)
355
+
356
+ /**
357
+ * The IPv4 loopback address `127.0.0.1`.
358
+ *
359
+ * @category constants
360
+ * @since 4.0.0
361
+ */
362
+ export const ipv4Loopback: Ipv4Address = makeIpv4(new Uint8Array([127, 0, 0, 1]))
363
+
364
+ /**
365
+ * The IPv6 loopback address `::1`.
366
+ *
367
+ * @category constants
368
+ * @since 4.0.0
369
+ */
370
+ export const ipv6Loopback: Ipv6Address = makeIpv6(new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]))
371
+
372
+ /**
373
+ * The unspecified IPv4 address `0.0.0.0`.
374
+ *
375
+ * @category constants
376
+ * @since 4.0.0
377
+ */
378
+ export const ipv4Unspecified: Ipv4Address = makeIpv4(new Uint8Array(4))
379
+
380
+ /**
381
+ * The unspecified IPv6 address `::`.
382
+ *
383
+ * @category constants
384
+ * @since 4.0.0
385
+ */
386
+ export const ipv6Unspecified: Ipv6Address = makeIpv6(new Uint8Array(16))
387
+
388
+ /**
389
+ * The IPv4 broadcast address `255.255.255.255`.
390
+ *
391
+ * @category constants
392
+ * @since 4.0.0
393
+ */
394
+ export const ipv4Broadcast: Ipv4Address = makeIpv4(new Uint8Array([255, 255, 255, 255]))
395
+
396
+ const addressError = (input: unknown, message: string): Result.Result<never, NetAddressError> =>
397
+ Result.fail(new NetAddressError({ input, message }))
398
+
399
+ /**
400
+ * Creates an IPv4 address from four checked octets.
401
+ *
402
+ * @category constructors
403
+ * @since 4.0.0
404
+ */
405
+ export const ipv4FromOctets = (
406
+ octets: readonly [number, number, number, number]
407
+ ): Result.Result<Ipv4Address, NetAddressError> => {
408
+ if (!octets.every((n) => Number.isInteger(n) && n >= 0 && n <= 255)) {
409
+ return addressError(octets, "octets must be integers from 0 through 255")
410
+ }
411
+ return Result.succeed(makeIpv4(new Uint8Array(octets)))
412
+ }
413
+
414
+ /**
415
+ * Creates an IPv6 address from eight checked 16-bit segments.
416
+ *
417
+ * @category constructors
418
+ * @since 4.0.0
419
+ */
420
+ export const ipv6FromSegments = (
421
+ segments: readonly [number, number, number, number, number, number, number, number]
422
+ ): Result.Result<Ipv6Address, NetAddressError> => {
423
+ if (!segments.every((n) => Number.isInteger(n) && n >= 0 && n <= 0xffff)) {
424
+ return addressError(segments, "segments must be integers from 0 through 65535")
425
+ }
426
+ const bytes = new Uint8Array(16)
427
+ for (let index = 0; index < 8; index++) {
428
+ bytes[index * 2] = segments[index] >> 8
429
+ bytes[index * 2 + 1] = segments[index]
430
+ }
431
+ return Result.succeed(makeIpv6(bytes))
432
+ }
433
+
434
+ /**
435
+ * Creates a MAC address from six checked octets.
436
+ *
437
+ * @category constructors
438
+ * @since 4.0.0
439
+ */
440
+ export const macAddressFromOctets = (
441
+ octets: readonly [number, number, number, number, number, number]
442
+ ): Result.Result<MacAddress, NetAddressError> => {
443
+ if (!octets.every((n) => Number.isInteger(n) && n >= 0 && n <= 255)) {
444
+ return addressError(octets, "octets must be integers from 0 through 255")
445
+ }
446
+ return Result.succeed(makeMac(new Uint8Array(octets)))
447
+ }
448
+
449
+ /**
450
+ * Parses a colon-separated MAC address containing six two-digit hexadecimal octets.
451
+ *
452
+ * @category decoding
453
+ * @since 4.0.0
454
+ */
455
+ export const macAddressFromString = (input: string): Result.Result<MacAddress, NetAddressError> => {
456
+ if (!/^(?:[0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}$/.test(input)) {
457
+ return addressError(input, "expected six two-digit hexadecimal octets separated by colons")
458
+ }
459
+ return Result.succeed(makeMac(new Uint8Array(input.split(":").map((part) => Number.parseInt(part, 16)))))
460
+ }
461
+
462
+ /**
463
+ * Parses a trusted colon-separated MAC address, throwing on failure.
464
+ *
465
+ * @category unsafe
466
+ * @since 4.0.0
467
+ */
468
+ export const macAddressFromStringUnsafe = (input: string): MacAddress => Result.getOrThrow(macAddressFromString(input))
469
+
470
+ /**
471
+ * Parses a strict dotted-decimal IPv4 address.
472
+ *
473
+ * **Details**
474
+ *
475
+ * Multi-digit octets with a leading zero are rejected to avoid octal ambiguity.
476
+ *
477
+ * @category decoding
478
+ * @since 4.0.0
479
+ */
480
+ export const ipv4FromString = (input: string): Result.Result<Ipv4Address, NetAddressError> => {
481
+ const parts = input.split(".")
482
+ if (parts.length !== 4 || parts.some((part) => !/^\d{1,3}$/.test(part))) {
483
+ return addressError(input, "expected exactly four decimal octets")
484
+ }
485
+ if (parts.some((part) => part.length > 1 && part[0] === "0")) {
486
+ return addressError(input, "leading zeroes are not allowed")
487
+ }
488
+ const octets = parts.map(Number)
489
+ if (octets.some((part) => part > 255)) {
490
+ return addressError(input, "octets must be at most 255")
491
+ }
492
+ return ipv4FromOctets([octets[0], octets[1], octets[2], octets[3]])
493
+ }
494
+
495
+ const parseIpv6Segments = (input: string): Result.Result<ReadonlyArray<number>, NetAddressError> => {
496
+ if (input.includes("[") || input.includes("]") || input.includes("%")) {
497
+ return addressError(input, "brackets and zone identifiers are not valid in a bare IPv6 address")
498
+ }
499
+ const halves = input.split("::")
500
+ if (halves.length > 2) return addressError(input, "only one compression marker is allowed")
501
+ const head = halves[0] === "" ? [] : halves[0].split(":")
502
+ const tail = halves.length === 2 && halves[1] !== "" ? halves[1].split(":") : []
503
+ if (head.some((part) => part === "") || tail.some((part) => part === "")) {
504
+ return addressError(input, "empty segments are only valid in the compression marker")
505
+ }
506
+ const trailing = tail.length > 0 ? tail[tail.length - 1] : head.length > 0 ? head[head.length - 1] : ""
507
+ let embedded: ReadonlyArray<number> | undefined
508
+ if (trailing.includes(".")) {
509
+ if (halves.length === 2 && tail.length === 0) {
510
+ return addressError(input, "embedded IPv4 syntax must be trailing")
511
+ }
512
+ const parsed = Result.map(ipv4FromString(trailing), (address) => {
513
+ const octets = ipv4ToOctets(address)
514
+ return [octets[0] * 256 + octets[1], octets[2] * 256 + octets[3]]
515
+ })
516
+ if (Result.isFailure(parsed)) return parsed
517
+ embedded = parsed.success
518
+ if (tail.length > 0) tail.pop()
519
+ else head.pop()
520
+ }
521
+ const explicit = head.length + tail.length + (embedded ? 2 : 0)
522
+ if (halves.length === 1 ? explicit !== 8 : explicit >= 8) {
523
+ return addressError(
524
+ input,
525
+ halves.length === 1 ? "expected eight segments" : "compression must replace at least one segment"
526
+ )
527
+ }
528
+ const parse = (part: string): number | undefined =>
529
+ /^[0-9a-fA-F]{1,4}$/.test(part) ? Number.parseInt(part, 16) : undefined
530
+ const parsedHead = head.map(parse)
531
+ const parsedTail = tail.map(parse)
532
+ if (parsedHead.some((part) => part === undefined) || parsedTail.some((part) => part === undefined)) {
533
+ return addressError(input, "segments must contain one through four hexadecimal digits")
534
+ }
535
+ return Result.succeed([
536
+ ...parsedHead as ReadonlyArray<number>,
537
+ ...Array(8 - explicit).fill(0),
538
+ ...parsedTail as ReadonlyArray<number>,
539
+ ...(embedded ?? [])
540
+ ])
541
+ }
542
+
543
+ /**
544
+ * Parses an IPv6 address with optional compression and trailing embedded IPv4.
545
+ *
546
+ * @category decoding
547
+ * @since 4.0.0
548
+ */
549
+ export const ipv6FromString = (input: string): Result.Result<Ipv6Address, NetAddressError> => {
550
+ return Result.flatMap(
551
+ parseIpv6Segments(input),
552
+ (segments) =>
553
+ ipv6FromSegments(
554
+ segments as unknown as readonly [
555
+ number,
556
+ number,
557
+ number,
558
+ number,
559
+ number,
560
+ number,
561
+ number,
562
+ number
563
+ ]
564
+ )
565
+ )
566
+ }
567
+
568
+ /**
569
+ * Parses a bare numeric IPv4 or IPv6 address.
570
+ *
571
+ * @category decoding
572
+ * @since 4.0.0
573
+ */
574
+ export const ipFromString = (input: string): Result.Result<IpAddress, NetAddressError> => {
575
+ const result: Result.Result<IpAddress, NetAddressError> = input.includes(":")
576
+ ? ipv6FromString(input)
577
+ : ipv4FromString(input)
578
+ return result
579
+ }
580
+
581
+ /**
582
+ * Parses a trusted bare numeric IPv4 or IPv6 address, throwing on failure.
583
+ *
584
+ * @category unsafe
585
+ * @since 4.0.0
586
+ */
587
+ export const ipFromStringUnsafe = (input: string): IpAddress => Result.getOrThrow(ipFromString(input))
588
+
589
+ /**
590
+ * Returns the four numeric octets of an IPv4 address in a fresh tuple.
591
+ *
592
+ * @category getters
593
+ * @since 4.0.0
594
+ */
595
+ export const ipv4ToOctets = (self: Ipv4Address): readonly [number, number, number, number] => {
596
+ const bytes = getBytes(self)
597
+ return [bytes[0], bytes[1], bytes[2], bytes[3]]
598
+ }
599
+
600
+ /**
601
+ * Returns the eight numeric segments of an IPv6 address in a fresh tuple.
602
+ *
603
+ * @category getters
604
+ * @since 4.0.0
605
+ */
606
+ export const ipv6ToSegments = (
607
+ self: Ipv6Address
608
+ ): readonly [number, number, number, number, number, number, number, number] => {
609
+ const bytes = getBytes(self)
610
+ const output = Array<number>(8)
611
+ for (let index = 0; index < 8; index++) {
612
+ output[index] = bytes[index * 2] * 256 + bytes[index * 2 + 1]
613
+ }
614
+ return output as any
615
+ }
616
+
617
+ /**
618
+ * Returns the sixteen numeric octets of an IPv6 address in a fresh array.
619
+ *
620
+ * @category getters
621
+ * @since 4.0.0
622
+ */
623
+ export const ipv6ToOctets = (
624
+ self: Ipv6Address
625
+ ): ReadonlyArray<number> => Array.from(getBytes(self))
626
+
627
+ /**
628
+ * Returns the six numeric octets of a MAC address in a fresh tuple.
629
+ *
630
+ * @category getters
631
+ * @since 4.0.0
632
+ */
633
+ export const macAddressToOctets = (
634
+ self: MacAddress
635
+ ): readonly [number, number, number, number, number, number] => {
636
+ const bytes = getBytes(self)
637
+ return [bytes[0], bytes[1], bytes[2], bytes[3], bytes[4], bytes[5]]
638
+ }
639
+
640
+ /**
641
+ * Formats a MAC address as six lowercase hexadecimal octets separated by colons.
642
+ *
643
+ * @category encoding
644
+ * @since 4.0.0
645
+ */
646
+ export const formatMacAddress = (self: MacAddress): string =>
647
+ Array.from(getBytes(self), (byte) => byte.toString(16).padStart(2, "0")).join(":")
648
+
649
+ /**
650
+ * Returns `true` when the MAC address is the all-ones broadcast address.
651
+ *
652
+ * @category predicates
653
+ * @since 4.0.0
654
+ */
655
+ export const isMacBroadcast = (self: MacAddress): boolean => getBytes(self).every((byte) => byte === 0xff)
656
+
657
+ /**
658
+ * Returns `true` when the MAC address has the IEEE group-address bit set.
659
+ *
660
+ * @category predicates
661
+ * @since 4.0.0
662
+ */
663
+ export const isMacMulticast = (self: MacAddress): boolean => (getBytes(self)[0] & 1) !== 0
664
+
665
+ /**
666
+ * Returns `true` when the MAC address has the IEEE group-address bit clear.
667
+ *
668
+ * @category predicates
669
+ * @since 4.0.0
670
+ */
671
+ export const isMacUnicast = (self: MacAddress): boolean => (getBytes(self)[0] & 1) === 0
672
+
673
+ /**
674
+ * Returns `true` when the MAC address has the IEEE local-administration bit set.
675
+ *
676
+ * @category predicates
677
+ * @since 4.0.0
678
+ */
679
+ export const isMacLocallyAdministered = (self: MacAddress): boolean => (getBytes(self)[0] & 2) !== 0
680
+
681
+ /**
682
+ * Returns `true` when the MAC address has the IEEE local-administration bit clear.
683
+ *
684
+ * @category predicates
685
+ * @since 4.0.0
686
+ */
687
+ export const isMacUniversallyAdministered = (self: MacAddress): boolean => (getBytes(self)[0] & 2) === 0
688
+
689
+ /**
690
+ * Folds an IP address by its numeric version.
691
+ *
692
+ * @category pattern matching
693
+ * @since 4.0.0
694
+ */
695
+ export const match: {
696
+ /**
697
+ * Folds an IP address by its numeric version.
698
+ *
699
+ * @category pattern matching
700
+ * @since 4.0.0
701
+ */
702
+ <A, B>(
703
+ options: {
704
+ readonly onIpv4: (address: Ipv4Address) => A
705
+ readonly onIpv6: (address: Ipv6Address) => B
706
+ }
707
+ ): (self: IpAddress) => A | B
708
+ /**
709
+ * Folds an IP address by its numeric version.
710
+ *
711
+ * @category pattern matching
712
+ * @since 4.0.0
713
+ */
714
+ <A, B>(
715
+ self: IpAddress,
716
+ options: {
717
+ readonly onIpv4: (address: Ipv4Address) => A
718
+ readonly onIpv6: (address: Ipv6Address) => B
719
+ }
720
+ ): A | B
721
+ } = dual(2, <A, B>(self: IpAddress, options: {
722
+ readonly onIpv4: (address: Ipv4Address) => A
723
+ readonly onIpv6: (address: Ipv6Address) => B
724
+ }): A | B => isIpv4Address(self) ? options.onIpv4(self) : options.onIpv6(self))
725
+
726
+ /**
727
+ * Formats an IP address in canonical numeric form.
728
+ *
729
+ * @category encoding
730
+ * @since 4.0.0
731
+ */
732
+ export const formatIp = (self: IpAddress): string => {
733
+ if (isIpv4Address(self)) return ipv4ToOctets(self).join(".")
734
+ const segments = ipv6ToSegments(self)
735
+ if (isIpv4Mapped(self)) {
736
+ return `::ffff:${segments[6] >> 8}.${segments[6] & 0xff}.${segments[7] >> 8}.${segments[7] & 0xff}`
737
+ }
738
+ let bestStart = -1
739
+ let bestLength = 0
740
+ let start = -1
741
+ for (let index = 0; index <= 8; index++) {
742
+ if (index < 8 && segments[index] === 0) {
743
+ if (start === -1) start = index
744
+ } else if (start !== -1) {
745
+ if (index - start > bestLength) {
746
+ bestStart = start
747
+ bestLength = index - start
748
+ }
749
+ start = -1
750
+ }
751
+ }
752
+ if (bestLength < 2) return segments.map((segment) => segment.toString(16)).join(":")
753
+ const head = segments.slice(0, bestStart).map((segment) => segment.toString(16)).join(":")
754
+ const tail = segments.slice(bestStart + bestLength).map((segment) => segment.toString(16)).join(":")
755
+ return `${head}::${tail}`
756
+ }
757
+
758
+ /**
759
+ * Returns `true` for the all-zero address of either IP version.
760
+ *
761
+ * @category predicates
762
+ * @since 4.0.0
763
+ */
764
+ export const isUnspecified = (self: IpAddress): boolean => getBytes(self).every((byte) => byte === 0)
765
+
766
+ /**
767
+ * Returns `true` for IPv4 `127.0.0.0/8` or IPv6 `::1`.
768
+ *
769
+ * @category predicates
770
+ * @since 4.0.0
771
+ */
772
+ export const isLoopback = (self: IpAddress): boolean => {
773
+ if (isIpv4Address(self)) return getBytes(self)[0] === 127
774
+ const bytes = getBytes(self)
775
+ for (let index = 0; index < 15; index++) {
776
+ if (bytes[index] !== 0) return false
777
+ }
778
+ return bytes[15] === 1
779
+ }
780
+
781
+ /**
782
+ * Returns `true` for IPv4 `224.0.0.0/4` or IPv6 `ff00::/8`.
783
+ *
784
+ * @category predicates
785
+ * @since 4.0.0
786
+ */
787
+ export const isMulticast = (self: IpAddress): boolean => {
788
+ if (isIpv4Address(self)) return (getBytes(self)[0] >> 4) === 0xe
789
+ return getBytes(self)[0] === 0xff
790
+ }
791
+
792
+ /**
793
+ * Returns `true` for the IPv4 broadcast address `255.255.255.255`.
794
+ *
795
+ * @category predicates
796
+ * @since 4.0.0
797
+ */
798
+ export const isBroadcast = (self: Ipv4Address): boolean => getBytes(self).every((byte) => byte === 0xff)
799
+
800
+ /**
801
+ * Returns `true` for IPv4 `169.254.0.0/16` or IPv6 `fe80::/10`.
802
+ *
803
+ * @category predicates
804
+ * @since 4.0.0
805
+ */
806
+ export const isLinkLocal = (self: IpAddress): boolean => {
807
+ if (isIpv4Address(self)) {
808
+ const bytes = getBytes(self)
809
+ return bytes[0] === 0xa9 && bytes[1] === 0xfe
810
+ }
811
+ const bytes = getBytes(self)
812
+ return bytes[0] === 0xfe && (bytes[1] & 0xc0) === 0x80
813
+ }
814
+
815
+ /**
816
+ * Returns `true` for IPv4 private-use ranges defined by RFC 1918.
817
+ *
818
+ * @category predicates
819
+ * @since 4.0.0
820
+ */
821
+ export const isPrivate = (self: Ipv4Address): boolean => {
822
+ const bytes = getBytes(self)
823
+ return bytes[0] === 10 || (bytes[0] === 172 && (bytes[1] & 0xf0) === 16) ||
824
+ (bytes[0] === 192 && bytes[1] === 168)
825
+ }
826
+
827
+ /**
828
+ * Returns `true` for IPv6 unique-local addresses in `fc00::/7`.
829
+ *
830
+ * @category predicates
831
+ * @since 4.0.0
832
+ */
833
+ export const isUniqueLocal = (self: Ipv6Address): boolean => (getBytes(self)[0] & 0xfe) === 0xfc
834
+
835
+ /**
836
+ * Returns `true` when an IPv6 address is in the `::ffff:0:0/96` mapped range.
837
+ *
838
+ * @category predicates
839
+ * @since 4.0.0
840
+ */
841
+ export const isIpv4Mapped = (self: Ipv6Address): boolean => {
842
+ const bytes = getBytes(self)
843
+ for (let index = 0; index < 10; index++) {
844
+ if (bytes[index] !== 0) return false
845
+ }
846
+ return bytes[10] === 0xff && bytes[11] === 0xff
847
+ }
848
+
849
+ /**
850
+ * Converts an IPv4 address to its IPv4-mapped IPv6 representation.
851
+ *
852
+ * @category converting
853
+ * @since 4.0.0
854
+ */
855
+ export const toIpv4Mapped = (self: Ipv4Address): Ipv6Address => {
856
+ const bytes = new Uint8Array(16)
857
+ bytes[10] = 0xff
858
+ bytes[11] = 0xff
859
+ bytes.set(getBytes(self), 12)
860
+ return makeIpv6(bytes)
861
+ }
862
+
863
+ /**
864
+ * Extracts the IPv4 value from an IPv4-mapped IPv6 address.
865
+ *
866
+ * @category converting
867
+ * @since 4.0.0
868
+ */
869
+ export const fromIpv4Mapped = (self: Ipv6Address): Option.Option<Ipv4Address> =>
870
+ isIpv4Mapped(self) ? Option.some(makeIpv4(getBytes(self).slice(12))) : Option.none()
871
+
872
+ /**
873
+ * Converts an IPv4-mapped IPv6 address to IPv4, leaving all other addresses unchanged.
874
+ *
875
+ * @category converting
876
+ * @since 4.0.0
877
+ */
878
+ export const toCanonical = (self: IpAddress): IpAddress =>
879
+ isIpv6Address(self) ? Option.getOrElse(fromIpv4Mapped(self), () => self) : self
880
+
881
+ const InetV4Proto = {
882
+ _tag: "InetAddressV4",
883
+ [TypeId]: TypeId,
884
+ [Equal.symbol](this: InetAddressV4, that: Equal.Equal): boolean {
885
+ return isInetAddressV4(that) && this.port === that.port && Equal.equals(this.address, that.address)
886
+ },
887
+ [Hash.symbol](this: InetAddressV4): number {
888
+ return Hash.combine(Hash.hash(this.address), Hash.number(this.port))
889
+ },
890
+ toString(this: InetAddressV4): string {
891
+ return formatInet(this)
892
+ },
893
+ toJSON(this: InetAddressV4): string {
894
+ return this.toString()
895
+ },
896
+ [NodeInspectSymbol](this: InetAddressV4): string {
897
+ return this.toJSON()
898
+ }
899
+ }
900
+
901
+ const InetV6Proto = {
902
+ _tag: "InetAddressV6",
903
+ [TypeId]: TypeId,
904
+ [Equal.symbol](this: InetAddressV6, that: Equal.Equal): boolean {
905
+ return isInetAddressV6(that) && this.port === that.port && this.scopeId === that.scopeId &&
906
+ Equal.equals(this.address, that.address)
907
+ },
908
+ [Hash.symbol](this: InetAddressV6): number {
909
+ return Hash.combine(
910
+ Hash.combine(Hash.hash(this.address), Hash.number(this.port)),
911
+ Hash.number(this.scopeId)
912
+ )
913
+ },
914
+ toString(this: InetAddressV6): string {
915
+ return formatInet(this)
916
+ },
917
+ toJSON(this: InetAddressV6): string {
918
+ return this.toString()
919
+ },
920
+ [NodeInspectSymbol](this: InetAddressV6): string {
921
+ return this.toJSON()
922
+ }
923
+ }
924
+
925
+ const checkPort = (port: number): boolean => Number.isInteger(port) && port >= 0 && port <= 0xffff
926
+
927
+ /**
928
+ * Creates a checked IPv4 internet address.
929
+ *
930
+ * @category constructors
931
+ * @since 4.0.0
932
+ */
933
+ export const inetAddressV4 = (address: Ipv4Address, port: number): Result.Result<InetAddressV4, NetAddressError> => {
934
+ if (!checkPort(port)) {
935
+ return addressError(address, "port must be an integer from 0 through 65535")
936
+ }
937
+ const self = Object.create(InetV4Proto)
938
+ self.address = address
939
+ self.port = port
940
+ return Result.succeed(Object.freeze(self))
941
+ }
942
+
943
+ /**
944
+ * Creates a checked IPv6 internet address with an optional scope identifier.
945
+ *
946
+ * @category constructors
947
+ * @since 4.0.0
948
+ */
949
+ export const inetAddressV6 = (
950
+ address: Ipv6Address,
951
+ port: number,
952
+ options?: { readonly scopeId?: number | undefined }
953
+ ): Result.Result<InetAddressV6, NetAddressError> => {
954
+ if (!checkPort(port)) {
955
+ return addressError(address, "port must be an integer from 0 through 65535")
956
+ }
957
+ const scopeId = options?.scopeId ?? 0
958
+ if (!Number.isInteger(scopeId) || scopeId < 0 || scopeId > 0xffffffff) {
959
+ return addressError(address, "scopeId must be an unsigned 32-bit integer")
960
+ }
961
+ const self = Object.create(InetV6Proto)
962
+ self.address = address
963
+ self.port = port
964
+ self.scopeId = scopeId
965
+ return Result.succeed(Object.freeze(self))
966
+ }
967
+
968
+ /**
969
+ * Creates a checked internet address for an IP address and port.
970
+ *
971
+ * @category constructors
972
+ * @since 4.0.0
973
+ */
974
+ export const inetAddress = (address: IpAddress, port: number): Result.Result<InetAddress, NetAddressError> =>
975
+ isIpv4Address(address) ? inetAddressV4(address, port) : inetAddressV6(address, port)
976
+
977
+ /**
978
+ * Creates an internet address from a trusted IP address and port, throwing on failure.
979
+ *
980
+ * @category unsafe
981
+ * @since 4.0.0
982
+ */
983
+ export const inetAddressUnsafe = (address: IpAddress, port: number): InetAddress =>
984
+ Result.getOrThrow(inetAddress(address, port))
985
+
986
+ /**
987
+ * Creates a checked internet address from a numeric IP string and port.
988
+ *
989
+ * **Gotchas**
990
+ *
991
+ * The address must be a numeric IPv4 or IPv6 literal. This function does not
992
+ * resolve hostnames or accept IPv6 brackets.
993
+ *
994
+ * @category constructors
995
+ * @since 4.0.0
996
+ */
997
+ export const inetAddressFromIpString = (
998
+ address: string,
999
+ port: number
1000
+ ): Result.Result<InetAddress, NetAddressError> => {
1001
+ return Result.flatMap(ipFromString(address), (address) => inetAddress(address, port))
1002
+ }
1003
+
1004
+ /**
1005
+ * Creates an internet address from a trusted numeric IP string and port.
1006
+ *
1007
+ * **Gotchas**
1008
+ *
1009
+ * This function throws when either input is invalid. Use only when both values
1010
+ * are already known to satisfy the checked constructor's requirements.
1011
+ *
1012
+ * @category unsafe
1013
+ * @since 4.0.0
1014
+ */
1015
+ export const inetAddressFromIpStringUnsafe = (address: string, port: number): InetAddress =>
1016
+ Result.getOrThrow(inetAddressFromIpString(address, port))
1017
+
1018
+ /**
1019
+ * Parses `IPv4:port` or `[IPv6]:port` without DNS resolution.
1020
+ *
1021
+ * @category decoding
1022
+ * @since 4.0.0
1023
+ */
1024
+ export const inetAddressFromString = (input: string): Result.Result<InetAddress, NetAddressError> => {
1025
+ let host: string
1026
+ let portText: string
1027
+ let scopeId = 0
1028
+ const bracketed = input.startsWith("[")
1029
+ if (bracketed) {
1030
+ const end = input.indexOf("]")
1031
+ if (end < 0 || input[end + 1] !== ":" || input.indexOf("]", end + 1) !== -1) {
1032
+ return addressError(input, "expected [IPv6]:port")
1033
+ }
1034
+ host = input.slice(1, end)
1035
+ portText = input.slice(end + 2)
1036
+ const scopeSeparator = host.indexOf("%")
1037
+ if (scopeSeparator !== -1) {
1038
+ const scopeText = host.slice(scopeSeparator + 1)
1039
+ if (host.indexOf("%", scopeSeparator + 1) !== -1 || !/^\d+$/.test(scopeText)) {
1040
+ return addressError(input, "scope identifier must be decimal")
1041
+ }
1042
+ scopeId = Number(scopeText)
1043
+ if (!Number.isInteger(scopeId) || scopeId > 0xffffffff) {
1044
+ return addressError(input, "scope identifier must be an unsigned 32-bit integer")
1045
+ }
1046
+ host = host.slice(0, scopeSeparator)
1047
+ }
1048
+ } else {
1049
+ const separator = input.lastIndexOf(":")
1050
+ if (separator < 0) {
1051
+ return addressError(input, "expected host:port or [IPv6]:port")
1052
+ }
1053
+ if (input.indexOf(":") !== separator) {
1054
+ return addressError(input, "IPv6 addresses must be bracketed")
1055
+ }
1056
+ host = input.slice(0, separator)
1057
+ portText = input.slice(separator + 1)
1058
+ }
1059
+ if (!/^(0|[1-9]\d*)$/.test(portText)) {
1060
+ return addressError(input, "port must be an unpadded decimal integer")
1061
+ }
1062
+ return Result.flatMap(ipFromString(host), (address): Result.Result<InetAddress, NetAddressError> => {
1063
+ if (bracketed !== isIpv6Address(address)) {
1064
+ return addressError(input, "only IPv6 addresses use brackets")
1065
+ }
1066
+ return isIpv6Address(address)
1067
+ ? inetAddressV6(address, Number(portText), { scopeId })
1068
+ : inetAddressV4(address, Number(portText))
1069
+ })
1070
+ }
1071
+
1072
+ /**
1073
+ * Parses a trusted numeric internet address and port, throwing on failure.
1074
+ *
1075
+ * @category unsafe
1076
+ * @since 4.0.0
1077
+ */
1078
+ export const inetAddressFromStringUnsafe = (input: string): InetAddress =>
1079
+ Result.getOrThrow(inetAddressFromString(input))
1080
+
1081
+ /**
1082
+ * Formats a resolved internet address, bracketing IPv6 around its port.
1083
+ *
1084
+ * @category encoding
1085
+ * @since 4.0.0
1086
+ */
1087
+ export const formatInet = (self: InetAddress): string => {
1088
+ if (self._tag === "InetAddressV4") return `${formatIp(self.address)}:${self.port}`
1089
+ const scope = self.scopeId === 0 ? "" : `%${self.scopeId}`
1090
+ return `[${formatIp(self.address)}${scope}]:${self.port}`
1091
+ }
1092
+
1093
+ /**
1094
+ * Formats an IP address for use as a URL authority host.
1095
+ *
1096
+ * @category encoding
1097
+ * @since 4.0.0
1098
+ */
1099
+ export const formatUrlHost = (self: IpAddress): string => isIpv4Address(self) ? formatIp(self) : `[${formatIp(self)}]`
1100
+
1101
+ /**
1102
+ * Converts an IP address or internet socket address to a WHATWG `URL`.
1103
+ *
1104
+ * **Details**
1105
+ *
1106
+ * Defaults to the HTTP scheme and uses standard URL normalization, including
1107
+ * IPv6 brackets and omission of default ports. Bare IP addresses have no
1108
+ * explicit port; internet socket addresses retain their port, including zero.
1109
+ * Unspecified addresses are preserved.
1110
+ *
1111
+ * **Gotchas**
1112
+ *
1113
+ * Returns a `NetAddressError` for scoped IPv6 addresses or inputs that the URL
1114
+ * constructor rejects. Supply the scheme without a trailing colon, for example
1115
+ * `"https"`.
1116
+ *
1117
+ * @category conversions
1118
+ * @since 4.0.0
1119
+ */
1120
+ export const toUrl = (self: IpAddress | InetAddress, scheme: string = "http"): Result.Result<URL, NetAddressError> => {
1121
+ if (self._tag === "InetAddressV6" && self.scopeId !== 0) {
1122
+ return addressError(self, "scoped IPv6 addresses are not supported by WHATWG URLs")
1123
+ }
1124
+ return Result.try({
1125
+ try: () => new URL(`${scheme}://${isInetAddress(self) ? formatInet(self) : formatUrlHost(self)}`),
1126
+ catch: (cause) => new NetAddressError({ input: self, message: "failed to construct URL", cause })
1127
+ })
1128
+ }
1129
+
1130
+ /**
1131
+ * Formats an IP or socket address as a URL display string.
1132
+ *
1133
+ * **Details**
1134
+ *
1135
+ * Defaults to HTTP, brackets IPv6 addresses, and omits default ports and the
1136
+ * trailing slash. Custom schemes such as `"tcp"` retain their scheme and host.
1137
+ * Unix socket addresses use {@link formatUnixPath}, preserving the raw path
1138
+ * with a `unix://` prefix regardless of the supplied scheme.
1139
+ *
1140
+ * **Gotchas**
1141
+ *
1142
+ * Returns a `NetAddressError` when URL conversion fails, including for scoped
1143
+ * IPv6 addresses.
1144
+ *
1145
+ * @category encoding
1146
+ * @since 4.0.0
1147
+ */
1148
+ export const formatUrl = (
1149
+ self: IpAddress | SocketAddress,
1150
+ scheme: string = "http"
1151
+ ): Result.Result<string, NetAddressError> =>
1152
+ isUnixPathAddress(self)
1153
+ ? Result.succeed(formatUnixPath(self))
1154
+ : Result.map(toUrl(self, scheme), (url) => `${url.protocol}//${url.host}`)
1155
+
1156
+ /**
1157
+ * Formats an IP or socket address as a URL display string,
1158
+ * throwing a `NetAddressError` when conversion fails.
1159
+ *
1160
+ * @see {@link formatUrl} for the checked version and formatting behavior.
1161
+ *
1162
+ * @category unsafe
1163
+ * @since 4.0.0
1164
+ */
1165
+ export const formatUrlUnsafe = (self: IpAddress | SocketAddress, scheme: string = "http"): string =>
1166
+ Result.getOrThrow(formatUrl(self, scheme))
1167
+
1168
+ /**
1169
+ * Formats a hostname or numeric IP address for use as a URL authority host.
1170
+ *
1171
+ * @category encoding
1172
+ * @since 4.0.0
1173
+ */
1174
+ export const formatUrlHostString = (host: string): string =>
1175
+ host.includes(":") && !host.startsWith("[") ? `[${host}]` : host
1176
+
1177
+ const UnixPathProto = {
1178
+ _tag: "UnixPathAddress",
1179
+ [TypeId]: TypeId,
1180
+ [Equal.symbol](this: UnixPathAddress, that: Equal.Equal): boolean {
1181
+ return isUnixPathAddress(that) && this.path === that.path
1182
+ },
1183
+ [Hash.symbol](this: UnixPathAddress): number {
1184
+ return Hash.combine(Hash.string("UnixPathAddress"), Hash.string(this.path))
1185
+ },
1186
+ toString(this: UnixPathAddress): string {
1187
+ return this.path
1188
+ },
1189
+ toJSON(this: UnixPathAddress): string {
1190
+ return this.toString()
1191
+ },
1192
+ [NodeInspectSymbol](this: UnixPathAddress): string {
1193
+ return this.toJSON()
1194
+ }
1195
+ }
1196
+
1197
+ /**
1198
+ * Creates a Unix-domain filesystem address without normalizing its opaque path.
1199
+ *
1200
+ * @category constructors
1201
+ * @since 4.0.0
1202
+ */
1203
+ export const unixPathAddress = (path: string): UnixPathAddress => {
1204
+ const self = Object.create(UnixPathProto)
1205
+ self.path = path
1206
+ return Object.freeze(self)
1207
+ }
1208
+
1209
+ /**
1210
+ * Formats a Unix-domain socket path as a readable `unix://path` display string.
1211
+ *
1212
+ * **Details**
1213
+ *
1214
+ * Preserves the raw path without URL encoding or normalization. The resulting
1215
+ * string is intended for display.
1216
+ *
1217
+ * @category encoding
1218
+ * @since 4.0.0
1219
+ */
1220
+ export const formatUnixPath = (self: UnixPathAddress): string => `unix://${self.path}`
1221
+
1222
+ /**
1223
+ * Converts a `SocketAddress.Input` to a concrete socket address.
1224
+ *
1225
+ * **Details**
1226
+ *
1227
+ * Numeric IP strings are parsed without hostname resolution. Invalid IP
1228
+ * literals, ports, and input shapes return a `NetAddressError`.
1229
+ *
1230
+ * @category constructors
1231
+ * @since 4.0.0
1232
+ */
1233
+ export const socketAddressFromInput = (
1234
+ input: SocketAddress.Input
1235
+ ): Result.Result<SocketAddress, NetAddressError> => {
1236
+ if (isSocketAddress(input)) return Result.succeed(input)
1237
+ if (typeof input === "string") return inetAddressFromString(input)
1238
+ if (hasProperty(input, "path")) {
1239
+ return typeof input.path === "string"
1240
+ ? Result.succeed(unixPathAddress(input.path))
1241
+ : addressError(input, "path must be a string")
1242
+ }
1243
+ if (!hasProperty(input, "address") || !hasProperty(input, "port")) {
1244
+ return addressError(input, "expected an address and port or a Unix path")
1245
+ }
1246
+ const address = typeof input.address === "string"
1247
+ ? ipFromString(input.address)
1248
+ : isIpAddress(input.address)
1249
+ ? Result.succeed(input.address)
1250
+ : addressError(input, "address must be an IP address or numeric IP string")
1251
+ return Result.flatMap(address, (address) => inetAddress(address, input.port as number))
1252
+ }
1253
+
1254
+ /**
1255
+ * Converts a trusted `SocketAddress.Input` to a concrete socket address,
1256
+ * throwing on failure.
1257
+ *
1258
+ * @category unsafe
1259
+ * @since 4.0.0
1260
+ */
1261
+ export const socketAddressFromInputUnsafe = (input: SocketAddress.Input): SocketAddress =>
1262
+ Result.getOrThrow(socketAddressFromInput(input))
1263
+
1264
+ /**
1265
+ * Formats a portable socket address for human-readable output.
1266
+ *
1267
+ * @category encoding
1268
+ * @since 4.0.0
1269
+ */
1270
+ export const formatSocketAddress = (self: SocketAddress): string =>
1271
+ self._tag === "UnixPathAddress" ? self.path : formatInet(self)