effect 4.0.1 → 4.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1085) hide show
  1. package/ai-docs/package.json +2 -2
  2. package/ai-docs/tsconfig.json +2 -1
  3. package/dist/Array.d.ts +339 -0
  4. package/dist/Array.d.ts.map +1 -1
  5. package/dist/Array.js +143 -3
  6. package/dist/Array.js.map +1 -1
  7. package/dist/BigDecimal.d.ts +88 -0
  8. package/dist/BigDecimal.d.ts.map +1 -1
  9. package/dist/BigDecimal.js +44 -0
  10. package/dist/BigDecimal.js.map +1 -1
  11. package/dist/BigInt.d.ts +68 -0
  12. package/dist/BigInt.d.ts.map +1 -1
  13. package/dist/BigInt.js +36 -0
  14. package/dist/BigInt.js.map +1 -1
  15. package/dist/Boolean.d.ts +34 -0
  16. package/dist/Boolean.d.ts.map +1 -1
  17. package/dist/Boolean.js +18 -0
  18. package/dist/Boolean.js.map +1 -1
  19. package/dist/Brand.d.ts +9 -0
  20. package/dist/Brand.d.ts.map +1 -1
  21. package/dist/Brand.js +6 -0
  22. package/dist/Brand.js.map +1 -1
  23. package/dist/ByteSize.d.ts +86 -0
  24. package/dist/ByteSize.d.ts.map +1 -1
  25. package/dist/ByteSize.js +51 -0
  26. package/dist/ByteSize.js.map +1 -1
  27. package/dist/Cache.d.ts +38 -1
  28. package/dist/Cache.d.ts.map +1 -1
  29. package/dist/Cache.js +27 -7
  30. package/dist/Cache.js.map +1 -1
  31. package/dist/Cause.d.ts +82 -0
  32. package/dist/Cause.d.ts.map +1 -1
  33. package/dist/Cause.js +60 -0
  34. package/dist/Cause.js.map +1 -1
  35. package/dist/Channel.d.ts +327 -4
  36. package/dist/Channel.d.ts.map +1 -1
  37. package/dist/Channel.js +168 -8
  38. package/dist/Channel.js.map +1 -1
  39. package/dist/ChannelSchema.d.ts +11 -0
  40. package/dist/ChannelSchema.d.ts.map +1 -1
  41. package/dist/ChannelSchema.js +6 -0
  42. package/dist/ChannelSchema.js.map +1 -1
  43. package/dist/Chunk.d.ts +192 -0
  44. package/dist/Chunk.d.ts.map +1 -1
  45. package/dist/Chunk.js +78 -0
  46. package/dist/Chunk.js.map +1 -1
  47. package/dist/Clock.d.ts +7 -0
  48. package/dist/Clock.d.ts.map +1 -1
  49. package/dist/Clock.js +5 -0
  50. package/dist/Clock.js.map +1 -1
  51. package/dist/Combiner.d.ts +10 -0
  52. package/dist/Combiner.d.ts.map +1 -1
  53. package/dist/Combiner.js +8 -0
  54. package/dist/Combiner.js.map +1 -1
  55. package/dist/Config.d.ts +52 -12
  56. package/dist/Config.d.ts.map +1 -1
  57. package/dist/Config.js +55 -5
  58. package/dist/Config.js.map +1 -1
  59. package/dist/ConfigProvider.d.ts +28 -0
  60. package/dist/ConfigProvider.d.ts.map +1 -1
  61. package/dist/ConfigProvider.js +19 -0
  62. package/dist/ConfigProvider.js.map +1 -1
  63. package/dist/Console.d.ts +22 -0
  64. package/dist/Console.d.ts.map +1 -1
  65. package/dist/Console.js +20 -0
  66. package/dist/Console.js.map +1 -1
  67. package/dist/Context.d.ts +50 -0
  68. package/dist/Context.d.ts.map +1 -1
  69. package/dist/Context.js +24 -3
  70. package/dist/Context.js.map +1 -1
  71. package/dist/Cron.d.ts +16 -0
  72. package/dist/Cron.d.ts.map +1 -1
  73. package/dist/Cron.js +26 -1
  74. package/dist/Cron.js.map +1 -1
  75. package/dist/Crypto.d.ts +38 -5
  76. package/dist/Crypto.d.ts.map +1 -1
  77. package/dist/Crypto.js +11 -2
  78. package/dist/Crypto.js.map +1 -1
  79. package/dist/Data.d.ts +13 -0
  80. package/dist/Data.d.ts.map +1 -1
  81. package/dist/Data.js +5 -0
  82. package/dist/Data.js.map +1 -1
  83. package/dist/DateTime.d.ts +180 -6
  84. package/dist/DateTime.d.ts.map +1 -1
  85. package/dist/DateTime.js +98 -6
  86. package/dist/DateTime.js.map +1 -1
  87. package/dist/Deferred.d.ts +51 -0
  88. package/dist/Deferred.d.ts.map +1 -1
  89. package/dist/Deferred.js +22 -0
  90. package/dist/Deferred.js.map +1 -1
  91. package/dist/Differ.d.ts +2 -0
  92. package/dist/Differ.d.ts.map +1 -1
  93. package/dist/Differ.js +1 -0
  94. package/dist/Duration.d.ts +96 -6
  95. package/dist/Duration.d.ts.map +1 -1
  96. package/dist/Duration.js +80 -8
  97. package/dist/Duration.js.map +1 -1
  98. package/dist/Effect.d.ts +527 -0
  99. package/dist/Effect.d.ts.map +1 -1
  100. package/dist/Effect.js +240 -5
  101. package/dist/Effect.js.map +1 -1
  102. package/dist/Effectable.d.ts +4 -0
  103. package/dist/Effectable.d.ts.map +1 -1
  104. package/dist/Effectable.js +3 -0
  105. package/dist/Effectable.js.map +1 -1
  106. package/dist/Equal.d.ts +8 -0
  107. package/dist/Equal.d.ts.map +1 -1
  108. package/dist/Equal.js +9 -1
  109. package/dist/Equal.js.map +1 -1
  110. package/dist/Equivalence.d.ts +21 -0
  111. package/dist/Equivalence.d.ts.map +1 -1
  112. package/dist/Equivalence.js +16 -0
  113. package/dist/Equivalence.js.map +1 -1
  114. package/dist/ErrorReporter.d.ts +36 -0
  115. package/dist/ErrorReporter.d.ts.map +1 -1
  116. package/dist/ErrorReporter.js +11 -0
  117. package/dist/ErrorReporter.js.map +1 -1
  118. package/dist/ExecutionPlan.d.ts +49 -8
  119. package/dist/ExecutionPlan.d.ts.map +1 -1
  120. package/dist/ExecutionPlan.js +7 -0
  121. package/dist/ExecutionPlan.js.map +1 -1
  122. package/dist/Exit.d.ts +40 -0
  123. package/dist/Exit.d.ts.map +1 -1
  124. package/dist/Exit.js +27 -0
  125. package/dist/Exit.js.map +1 -1
  126. package/dist/Fiber.d.ts +20 -0
  127. package/dist/Fiber.d.ts.map +1 -1
  128. package/dist/Fiber.js +11 -0
  129. package/dist/Fiber.js.map +1 -1
  130. package/dist/FiberHandle.d.ts +21 -0
  131. package/dist/FiberHandle.d.ts.map +1 -1
  132. package/dist/FiberHandle.js +21 -4
  133. package/dist/FiberHandle.js.map +1 -1
  134. package/dist/FiberMap.d.ts +35 -0
  135. package/dist/FiberMap.d.ts.map +1 -1
  136. package/dist/FiberMap.js +19 -0
  137. package/dist/FiberMap.js.map +1 -1
  138. package/dist/FiberSet.d.ts +20 -0
  139. package/dist/FiberSet.d.ts.map +1 -1
  140. package/dist/FiberSet.js +14 -0
  141. package/dist/FiberSet.js.map +1 -1
  142. package/dist/FileSystem.d.ts +59 -2
  143. package/dist/FileSystem.d.ts.map +1 -1
  144. package/dist/FileSystem.js +8 -0
  145. package/dist/FileSystem.js.map +1 -1
  146. package/dist/Filter.d.ts +55 -0
  147. package/dist/Filter.d.ts.map +1 -1
  148. package/dist/Filter.js +28 -0
  149. package/dist/Filter.js.map +1 -1
  150. package/dist/Formatter.d.ts +3 -0
  151. package/dist/Formatter.d.ts.map +1 -1
  152. package/dist/Formatter.js +39 -1
  153. package/dist/Formatter.js.map +1 -1
  154. package/dist/Function.d.ts +30 -0
  155. package/dist/Function.d.ts.map +1 -1
  156. package/dist/Function.js +20 -0
  157. package/dist/Function.js.map +1 -1
  158. package/dist/Graph.d.ts +247 -12
  159. package/dist/Graph.d.ts.map +1 -1
  160. package/dist/Graph.js +149 -28
  161. package/dist/Graph.js.map +1 -1
  162. package/dist/HKT.d.ts +5 -0
  163. package/dist/HKT.d.ts.map +1 -1
  164. package/dist/Hash.d.ts +14 -0
  165. package/dist/Hash.d.ts.map +1 -1
  166. package/dist/Hash.js +12 -0
  167. package/dist/Hash.js.map +1 -1
  168. package/dist/HashMap.d.ts +91 -0
  169. package/dist/HashMap.d.ts.map +1 -1
  170. package/dist/HashMap.js +39 -0
  171. package/dist/HashMap.js.map +1 -1
  172. package/dist/HashRing.d.ts +17 -0
  173. package/dist/HashRing.d.ts.map +1 -1
  174. package/dist/HashRing.js +9 -0
  175. package/dist/HashRing.js.map +1 -1
  176. package/dist/HashSet.d.ts +49 -0
  177. package/dist/HashSet.d.ts.map +1 -1
  178. package/dist/HashSet.js +19 -0
  179. package/dist/HashSet.js.map +1 -1
  180. package/dist/Inspectable.d.ts +7 -0
  181. package/dist/Inspectable.d.ts.map +1 -1
  182. package/dist/Inspectable.js +6 -0
  183. package/dist/Inspectable.js.map +1 -1
  184. package/dist/Iterable.d.ts +127 -0
  185. package/dist/Iterable.d.ts.map +1 -1
  186. package/dist/Iterable.js +51 -0
  187. package/dist/Iterable.js.map +1 -1
  188. package/dist/JsonPatch.d.ts +4 -0
  189. package/dist/JsonPatch.d.ts.map +1 -1
  190. package/dist/JsonPatch.js +3 -0
  191. package/dist/JsonPatch.js.map +1 -1
  192. package/dist/JsonPointer.d.ts +5 -0
  193. package/dist/JsonPointer.d.ts.map +1 -1
  194. package/dist/JsonPointer.js +5 -0
  195. package/dist/JsonPointer.js.map +1 -1
  196. package/dist/JsonSchema.d.ts +16 -0
  197. package/dist/JsonSchema.d.ts.map +1 -1
  198. package/dist/JsonSchema.js +11 -0
  199. package/dist/JsonSchema.js.map +1 -1
  200. package/dist/Latch.d.ts +14 -0
  201. package/dist/Latch.d.ts.map +1 -1
  202. package/dist/Latch.js +10 -0
  203. package/dist/Latch.js.map +1 -1
  204. package/dist/Layer.d.ts +100 -0
  205. package/dist/Layer.d.ts.map +1 -1
  206. package/dist/Layer.js +45 -1
  207. package/dist/Layer.js.map +1 -1
  208. package/dist/LayerMap.d.ts +7 -0
  209. package/dist/LayerMap.d.ts.map +1 -1
  210. package/dist/LayerMap.js +4 -0
  211. package/dist/LayerMap.js.map +1 -1
  212. package/dist/LayerRef.d.ts +5 -0
  213. package/dist/LayerRef.d.ts.map +1 -1
  214. package/dist/LayerRef.js +3 -0
  215. package/dist/LayerRef.js.map +1 -1
  216. package/dist/LogLevel.d.ts +20 -0
  217. package/dist/LogLevel.d.ts.map +1 -1
  218. package/dist/LogLevel.js +9 -0
  219. package/dist/LogLevel.js.map +1 -1
  220. package/dist/Logger.d.ts +25 -0
  221. package/dist/Logger.d.ts.map +1 -1
  222. package/dist/Logger.js +30 -4
  223. package/dist/Logger.js.map +1 -1
  224. package/dist/ManagedRuntime.d.ts +5 -0
  225. package/dist/ManagedRuntime.d.ts.map +1 -1
  226. package/dist/ManagedRuntime.js +9 -1
  227. package/dist/ManagedRuntime.js.map +1 -1
  228. package/dist/Match.d.ts +51 -0
  229. package/dist/Match.d.ts.map +1 -1
  230. package/dist/Match.js +39 -0
  231. package/dist/Match.js.map +1 -1
  232. package/dist/Metric.d.ts +59 -0
  233. package/dist/Metric.d.ts.map +1 -1
  234. package/dist/Metric.js +31 -0
  235. package/dist/Metric.js.map +1 -1
  236. package/dist/MutableHashMap.d.ts +32 -0
  237. package/dist/MutableHashMap.d.ts.map +1 -1
  238. package/dist/MutableHashMap.js +16 -0
  239. package/dist/MutableHashMap.js.map +1 -1
  240. package/dist/MutableHashSet.d.ts +16 -0
  241. package/dist/MutableHashSet.d.ts.map +1 -1
  242. package/dist/MutableHashSet.js +10 -0
  243. package/dist/MutableHashSet.js.map +1 -1
  244. package/dist/MutableList.d.ts +20 -0
  245. package/dist/MutableList.d.ts.map +1 -1
  246. package/dist/MutableList.js +18 -0
  247. package/dist/MutableList.js.map +1 -1
  248. package/dist/MutableRef.d.ts +31 -0
  249. package/dist/MutableRef.d.ts.map +1 -1
  250. package/dist/MutableRef.js +17 -0
  251. package/dist/MutableRef.js.map +1 -1
  252. package/dist/Newtype.d.ts +9 -0
  253. package/dist/Newtype.d.ts.map +1 -1
  254. package/dist/Newtype.js +6 -0
  255. package/dist/Newtype.js.map +1 -1
  256. package/dist/NonEmptyIterable.d.ts +4 -0
  257. package/dist/NonEmptyIterable.d.ts.map +1 -1
  258. package/dist/NonEmptyIterable.js +2 -0
  259. package/dist/NonEmptyIterable.js.map +1 -1
  260. package/dist/Number.d.ts +61 -0
  261. package/dist/Number.d.ts.map +1 -1
  262. package/dist/Number.js +31 -0
  263. package/dist/Number.js.map +1 -1
  264. package/dist/Optic.d.ts +41 -0
  265. package/dist/Optic.d.ts.map +1 -1
  266. package/dist/Optic.js +20 -0
  267. package/dist/Optic.js.map +1 -1
  268. package/dist/Option.d.ts +134 -0
  269. package/dist/Option.d.ts.map +1 -1
  270. package/dist/Option.js +61 -0
  271. package/dist/Option.js.map +1 -1
  272. package/dist/Order.d.ts +29 -0
  273. package/dist/Order.d.ts.map +1 -1
  274. package/dist/Order.js +24 -0
  275. package/dist/Order.js.map +1 -1
  276. package/dist/Ordering.d.ts +7 -0
  277. package/dist/Ordering.d.ts.map +1 -1
  278. package/dist/Ordering.js +3 -0
  279. package/dist/Ordering.js.map +1 -1
  280. package/dist/PartitionedSemaphore.d.ts +24 -0
  281. package/dist/PartitionedSemaphore.d.ts.map +1 -1
  282. package/dist/PartitionedSemaphore.js +47 -21
  283. package/dist/PartitionedSemaphore.js.map +1 -1
  284. package/dist/Path.d.ts +6 -0
  285. package/dist/Path.d.ts.map +1 -1
  286. package/dist/Path.js +4 -0
  287. package/dist/Path.js.map +1 -1
  288. package/dist/Pipeable.d.ts +7 -0
  289. package/dist/Pipeable.d.ts.map +1 -1
  290. package/dist/Pipeable.js +5 -0
  291. package/dist/Pipeable.js.map +1 -1
  292. package/dist/PlatformError.d.ts +8 -0
  293. package/dist/PlatformError.d.ts.map +1 -1
  294. package/dist/PlatformError.js +7 -0
  295. package/dist/PlatformError.js.map +1 -1
  296. package/dist/Pool.d.ts +19 -0
  297. package/dist/Pool.d.ts.map +1 -1
  298. package/dist/Pool.js +8 -1
  299. package/dist/Pool.js.map +1 -1
  300. package/dist/Predicate.d.ts +84 -0
  301. package/dist/Predicate.d.ts.map +1 -1
  302. package/dist/Predicate.js +48 -0
  303. package/dist/Predicate.js.map +1 -1
  304. package/dist/PrimaryKey.d.ts +5 -0
  305. package/dist/PrimaryKey.d.ts.map +1 -1
  306. package/dist/PrimaryKey.js +4 -0
  307. package/dist/PrimaryKey.js.map +1 -1
  308. package/dist/PubSub.d.ts +67 -5
  309. package/dist/PubSub.d.ts.map +1 -1
  310. package/dist/PubSub.js +60 -8
  311. package/dist/PubSub.js.map +1 -1
  312. package/dist/Pull.d.ts +20 -0
  313. package/dist/Pull.d.ts.map +1 -1
  314. package/dist/Pull.js +10 -0
  315. package/dist/Pull.js.map +1 -1
  316. package/dist/Queue.d.ts +60 -0
  317. package/dist/Queue.d.ts.map +1 -1
  318. package/dist/Queue.js +58 -8
  319. package/dist/Queue.js.map +1 -1
  320. package/dist/Random.d.ts +13 -0
  321. package/dist/Random.d.ts.map +1 -1
  322. package/dist/Random.js +9 -0
  323. package/dist/Random.js.map +1 -1
  324. package/dist/RcMap.d.ts +23 -0
  325. package/dist/RcMap.d.ts.map +1 -1
  326. package/dist/RcMap.js +8 -0
  327. package/dist/RcMap.js.map +1 -1
  328. package/dist/RcRef.d.ts +6 -0
  329. package/dist/RcRef.d.ts.map +1 -1
  330. package/dist/RcRef.js +3 -0
  331. package/dist/RcRef.js.map +1 -1
  332. package/dist/Record.d.ts +100 -0
  333. package/dist/Record.d.ts.map +1 -1
  334. package/dist/Record.js +43 -0
  335. package/dist/Record.js.map +1 -1
  336. package/dist/Redactable.d.ts +6 -0
  337. package/dist/Redactable.d.ts.map +1 -1
  338. package/dist/Redactable.js +4 -0
  339. package/dist/Redactable.js.map +1 -1
  340. package/dist/Redacted.d.ts +8 -0
  341. package/dist/Redacted.d.ts.map +1 -1
  342. package/dist/Redacted.js +6 -0
  343. package/dist/Redacted.js.map +1 -1
  344. package/dist/Reducer.d.ts +4 -0
  345. package/dist/Reducer.d.ts.map +1 -1
  346. package/dist/Reducer.js +3 -0
  347. package/dist/Reducer.js.map +1 -1
  348. package/dist/Ref.d.ts +20 -0
  349. package/dist/Ref.d.ts.map +1 -1
  350. package/dist/Ref.js +16 -0
  351. package/dist/Ref.js.map +1 -1
  352. package/dist/References.d.ts +21 -0
  353. package/dist/References.d.ts.map +1 -1
  354. package/dist/References.js +19 -0
  355. package/dist/References.js.map +1 -1
  356. package/dist/RegExp.d.ts +3 -0
  357. package/dist/RegExp.d.ts.map +1 -1
  358. package/dist/RegExp.js +4 -0
  359. package/dist/RegExp.js.map +1 -1
  360. package/dist/Request.d.ts +32 -0
  361. package/dist/Request.d.ts.map +1 -1
  362. package/dist/Request.js +12 -0
  363. package/dist/Request.js.map +1 -1
  364. package/dist/RequestResolver.d.ts +42 -0
  365. package/dist/RequestResolver.d.ts.map +1 -1
  366. package/dist/RequestResolver.js +27 -6
  367. package/dist/RequestResolver.js.map +1 -1
  368. package/dist/Resource.d.ts +6 -0
  369. package/dist/Resource.d.ts.map +1 -1
  370. package/dist/Resource.js +6 -0
  371. package/dist/Resource.js.map +1 -1
  372. package/dist/Result.d.ts +91 -0
  373. package/dist/Result.d.ts.map +1 -1
  374. package/dist/Result.js +41 -0
  375. package/dist/Result.js.map +1 -1
  376. package/dist/Runtime.d.ts +9 -0
  377. package/dist/Runtime.d.ts.map +1 -1
  378. package/dist/Runtime.js +7 -0
  379. package/dist/Runtime.js.map +1 -1
  380. package/dist/Schedule.d.ts +57 -0
  381. package/dist/Schedule.d.ts.map +1 -1
  382. package/dist/Schedule.js +32 -0
  383. package/dist/Schedule.js.map +1 -1
  384. package/dist/Scheduler.d.ts +7 -0
  385. package/dist/Scheduler.d.ts.map +1 -1
  386. package/dist/Scheduler.js +5 -0
  387. package/dist/Scheduler.js.map +1 -1
  388. package/dist/Schema.d.ts +969 -2
  389. package/dist/Schema.d.ts.map +1 -1
  390. package/dist/Schema.js +635 -5
  391. package/dist/Schema.js.map +1 -1
  392. package/dist/SchemaAST.d.ts +107 -0
  393. package/dist/SchemaAST.d.ts.map +1 -1
  394. package/dist/SchemaAST.js +81 -1
  395. package/dist/SchemaAST.js.map +1 -1
  396. package/dist/SchemaGetter.d.ts +69 -2
  397. package/dist/SchemaGetter.d.ts.map +1 -1
  398. package/dist/SchemaGetter.js +63 -4
  399. package/dist/SchemaGetter.js.map +1 -1
  400. package/dist/SchemaIssue.d.ts +33 -0
  401. package/dist/SchemaIssue.d.ts.map +1 -1
  402. package/dist/SchemaIssue.js +18 -0
  403. package/dist/SchemaIssue.js.map +1 -1
  404. package/dist/SchemaParser.d.ts +25 -0
  405. package/dist/SchemaParser.d.ts.map +1 -1
  406. package/dist/SchemaParser.js +26 -0
  407. package/dist/SchemaParser.js.map +1 -1
  408. package/dist/SchemaRepresentation.d.ts +147 -0
  409. package/dist/SchemaRepresentation.d.ts.map +1 -1
  410. package/dist/SchemaRepresentation.js +99 -0
  411. package/dist/SchemaRepresentation.js.map +1 -1
  412. package/dist/SchemaTransformation.d.ts +53 -0
  413. package/dist/SchemaTransformation.d.ts.map +1 -1
  414. package/dist/SchemaTransformation.js +46 -0
  415. package/dist/SchemaTransformation.js.map +1 -1
  416. package/dist/Scope.d.ts +19 -0
  417. package/dist/Scope.d.ts.map +1 -1
  418. package/dist/Scope.js +12 -0
  419. package/dist/Scope.js.map +1 -1
  420. package/dist/ScopedCache.d.ts +34 -0
  421. package/dist/ScopedCache.d.ts.map +1 -1
  422. package/dist/ScopedCache.js +26 -3
  423. package/dist/ScopedCache.js.map +1 -1
  424. package/dist/ScopedRef.d.ts +9 -0
  425. package/dist/ScopedRef.d.ts.map +1 -1
  426. package/dist/ScopedRef.js +6 -0
  427. package/dist/ScopedRef.js.map +1 -1
  428. package/dist/Semaphore.d.ts +26 -0
  429. package/dist/Semaphore.d.ts.map +1 -1
  430. package/dist/Semaphore.js +10 -0
  431. package/dist/Semaphore.js.map +1 -1
  432. package/dist/Sink.d.ts +125 -1
  433. package/dist/Sink.d.ts.map +1 -1
  434. package/dist/Sink.js +75 -1
  435. package/dist/Sink.js.map +1 -1
  436. package/dist/StandardSchema.d.ts +1 -0
  437. package/dist/StandardSchema.d.ts.map +1 -1
  438. package/dist/StandardSchema.js +1 -0
  439. package/dist/Stdio.d.ts +14 -1
  440. package/dist/Stdio.d.ts.map +1 -1
  441. package/dist/Stdio.js +6 -0
  442. package/dist/Stdio.js.map +1 -1
  443. package/dist/Stream.d.ts +569 -11
  444. package/dist/Stream.d.ts.map +1 -1
  445. package/dist/Stream.js +266 -18
  446. package/dist/Stream.js.map +1 -1
  447. package/dist/String.d.ts +87 -0
  448. package/dist/String.d.ts.map +1 -1
  449. package/dist/String.js +61 -0
  450. package/dist/String.js.map +1 -1
  451. package/dist/Struct.d.ts +46 -0
  452. package/dist/Struct.d.ts.map +1 -1
  453. package/dist/Struct.js +19 -0
  454. package/dist/Struct.js.map +1 -1
  455. package/dist/SubscriptionRef.d.ts +65 -0
  456. package/dist/SubscriptionRef.d.ts.map +1 -1
  457. package/dist/SubscriptionRef.js +25 -0
  458. package/dist/SubscriptionRef.js.map +1 -1
  459. package/dist/Symbol.d.ts +2 -0
  460. package/dist/Symbol.d.ts.map +1 -1
  461. package/dist/Symbol.js +2 -0
  462. package/dist/Symbol.js.map +1 -1
  463. package/dist/SynchronizedRef.d.ts +63 -0
  464. package/dist/SynchronizedRef.d.ts.map +1 -1
  465. package/dist/SynchronizedRef.js +24 -0
  466. package/dist/SynchronizedRef.js.map +1 -1
  467. package/dist/Take.d.ts +3 -0
  468. package/dist/Take.d.ts.map +1 -1
  469. package/dist/Take.js +1 -0
  470. package/dist/Take.js.map +1 -1
  471. package/dist/Terminal.d.ts +8 -0
  472. package/dist/Terminal.d.ts.map +1 -1
  473. package/dist/Terminal.js +4 -0
  474. package/dist/Terminal.js.map +1 -1
  475. package/dist/Tracer.d.ts +23 -0
  476. package/dist/Tracer.d.ts.map +1 -1
  477. package/dist/Tracer.js +12 -0
  478. package/dist/Tracer.js.map +1 -1
  479. package/dist/Trie.d.ts +68 -0
  480. package/dist/Trie.d.ts.map +1 -1
  481. package/dist/Trie.js +28 -0
  482. package/dist/Trie.js.map +1 -1
  483. package/dist/Tuple.d.ts +38 -0
  484. package/dist/Tuple.d.ts.map +1 -1
  485. package/dist/Tuple.js +18 -0
  486. package/dist/Tuple.js.map +1 -1
  487. package/dist/TxChunk.d.ts +52 -0
  488. package/dist/TxChunk.d.ts.map +1 -1
  489. package/dist/TxChunk.js +23 -0
  490. package/dist/TxChunk.js.map +1 -1
  491. package/dist/TxDeferred.d.ts +15 -0
  492. package/dist/TxDeferred.d.ts.map +1 -1
  493. package/dist/TxDeferred.js +8 -0
  494. package/dist/TxDeferred.js.map +1 -1
  495. package/dist/TxHashMap.d.ts +83 -0
  496. package/dist/TxHashMap.d.ts.map +1 -1
  497. package/dist/TxHashMap.js +52 -7
  498. package/dist/TxHashMap.js.map +1 -1
  499. package/dist/TxHashSet.d.ts +51 -0
  500. package/dist/TxHashSet.d.ts.map +1 -1
  501. package/dist/TxHashSet.js +29 -4
  502. package/dist/TxHashSet.js.map +1 -1
  503. package/dist/TxPriorityQueue.d.ts +30 -0
  504. package/dist/TxPriorityQueue.d.ts.map +1 -1
  505. package/dist/TxPriorityQueue.js +22 -1
  506. package/dist/TxPriorityQueue.js.map +1 -1
  507. package/dist/TxPubSub.d.ts +25 -0
  508. package/dist/TxPubSub.d.ts.map +1 -1
  509. package/dist/TxPubSub.js +19 -0
  510. package/dist/TxPubSub.js.map +1 -1
  511. package/dist/TxQueue.d.ts +51 -0
  512. package/dist/TxQueue.d.ts.map +1 -1
  513. package/dist/TxQueue.js +30 -0
  514. package/dist/TxQueue.js.map +1 -1
  515. package/dist/TxReentrantLock.d.ts +24 -0
  516. package/dist/TxReentrantLock.d.ts.map +1 -1
  517. package/dist/TxReentrantLock.js +32 -18
  518. package/dist/TxReentrantLock.js.map +1 -1
  519. package/dist/TxRef.d.ts +14 -0
  520. package/dist/TxRef.d.ts.map +1 -1
  521. package/dist/TxRef.js +7 -0
  522. package/dist/TxRef.js.map +1 -1
  523. package/dist/TxSemaphore.d.ts +25 -0
  524. package/dist/TxSemaphore.d.ts.map +1 -1
  525. package/dist/TxSemaphore.js +29 -13
  526. package/dist/TxSemaphore.js.map +1 -1
  527. package/dist/TxSubscriptionRef.d.ts +25 -0
  528. package/dist/TxSubscriptionRef.d.ts.map +1 -1
  529. package/dist/TxSubscriptionRef.js +12 -0
  530. package/dist/TxSubscriptionRef.js.map +1 -1
  531. package/dist/Types.d.ts +36 -0
  532. package/dist/Types.d.ts.map +1 -1
  533. package/dist/Types.js +1 -0
  534. package/dist/UndefinedOr.d.ts +15 -0
  535. package/dist/UndefinedOr.d.ts.map +1 -1
  536. package/dist/UndefinedOr.js +9 -0
  537. package/dist/UndefinedOr.js.map +1 -1
  538. package/dist/Unify.d.ts +15 -0
  539. package/dist/Unify.d.ts.map +1 -1
  540. package/dist/Unify.js +2 -0
  541. package/dist/Unify.js.map +1 -1
  542. package/dist/Utils.d.ts +4 -0
  543. package/dist/Utils.d.ts.map +1 -1
  544. package/dist/Utils.js +1 -0
  545. package/dist/Utils.js.map +1 -1
  546. package/dist/Version.d.ts +26 -0
  547. package/dist/Version.d.ts.map +1 -0
  548. package/dist/Version.js +36 -0
  549. package/dist/Version.js.map +1 -0
  550. package/dist/ai/Chat.js +1 -1
  551. package/dist/ai/Chat.js.map +1 -1
  552. package/dist/ai/DecisionModel.d.ts +22 -0
  553. package/dist/ai/DecisionModel.d.ts.map +1 -1
  554. package/dist/ai/DecisionModel.js +22 -4
  555. package/dist/ai/DecisionModel.js.map +1 -1
  556. package/dist/ai/LanguageModel.d.ts.map +1 -1
  557. package/dist/ai/LanguageModel.js +14 -13
  558. package/dist/ai/LanguageModel.js.map +1 -1
  559. package/dist/ai/McpServer.d.ts +38 -11
  560. package/dist/ai/McpServer.d.ts.map +1 -1
  561. package/dist/ai/McpServer.js +276 -190
  562. package/dist/ai/McpServer.js.map +1 -1
  563. package/dist/ai/Telemetry.d.ts +49 -41
  564. package/dist/ai/Telemetry.d.ts.map +1 -1
  565. package/dist/ai/Telemetry.js +6 -8
  566. package/dist/ai/Telemetry.js.map +1 -1
  567. package/dist/ai/internal/mcpProtocol/v2026_07_28.js +5 -0
  568. package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
  569. package/dist/ai/internal/mcpProtocol.js.map +1 -1
  570. package/dist/ai/internal/mcpRuntime.js +80 -46
  571. package/dist/ai/internal/mcpRuntime.js.map +1 -1
  572. package/dist/ai/internal/mcpStatefulRuntime.js +1 -0
  573. package/dist/ai/internal/mcpStatefulRuntime.js.map +1 -1
  574. package/dist/cli/CliOutput.d.ts +27 -0
  575. package/dist/cli/CliOutput.d.ts.map +1 -1
  576. package/dist/cli/CliOutput.js +33 -10
  577. package/dist/cli/CliOutput.js.map +1 -1
  578. package/dist/cli/Command.d.ts.map +1 -1
  579. package/dist/cli/Command.js +6 -3
  580. package/dist/cli/Command.js.map +1 -1
  581. package/dist/cli/Completions.d.ts +3 -3
  582. package/dist/cli/Completions.d.ts.map +1 -1
  583. package/dist/cli/Completions.js +8 -5
  584. package/dist/cli/Completions.js.map +1 -1
  585. package/dist/cli/GlobalFlag.d.ts +5 -4
  586. package/dist/cli/GlobalFlag.d.ts.map +1 -1
  587. package/dist/cli/GlobalFlag.js +3 -3
  588. package/dist/cli/GlobalFlag.js.map +1 -1
  589. package/dist/cli/Prompt.d.ts +17 -1
  590. package/dist/cli/Prompt.d.ts.map +1 -1
  591. package/dist/cli/Prompt.js +119 -114
  592. package/dist/cli/Prompt.js.map +1 -1
  593. package/dist/cli/internal/ansi.d.ts +0 -1
  594. package/dist/cli/internal/ansi.d.ts.map +1 -1
  595. package/dist/cli/internal/ansi.js +20 -3
  596. package/dist/cli/internal/ansi.js.map +1 -1
  597. package/dist/cli/internal/completions/powershell.d.ts +2 -0
  598. package/dist/cli/internal/completions/powershell.d.ts.map +1 -0
  599. package/dist/cli/internal/completions/powershell.js +273 -0
  600. package/dist/cli/internal/completions/powershell.js.map +1 -0
  601. package/dist/cli/internal/completions/zsh.js +3 -2
  602. package/dist/cli/internal/completions/zsh.js.map +1 -1
  603. package/dist/cli/internal/wizard.d.ts +3 -3
  604. package/dist/cli/internal/wizard.d.ts.map +1 -1
  605. package/dist/cli/internal/wizard.js +21 -18
  606. package/dist/cli/internal/wizard.js.map +1 -1
  607. package/dist/cluster/ClusterSchema.d.ts +28 -0
  608. package/dist/cluster/ClusterSchema.d.ts.map +1 -1
  609. package/dist/cluster/ClusterSchema.js +30 -0
  610. package/dist/cluster/ClusterSchema.js.map +1 -1
  611. package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  612. package/dist/cluster/ClusterWorkflowEngine.js +10 -18
  613. package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
  614. package/dist/cluster/K8sHttpClient.d.ts.map +1 -1
  615. package/dist/cluster/K8sHttpClient.js +5 -2
  616. package/dist/cluster/K8sHttpClient.js.map +1 -1
  617. package/dist/cluster/MessageStorage.d.ts +18 -3
  618. package/dist/cluster/MessageStorage.d.ts.map +1 -1
  619. package/dist/cluster/MessageStorage.js +31 -11
  620. package/dist/cluster/MessageStorage.js.map +1 -1
  621. package/dist/cluster/Runners.d.ts.map +1 -1
  622. package/dist/cluster/Runners.js +8 -2
  623. package/dist/cluster/Runners.js.map +1 -1
  624. package/dist/cluster/Sharding.d.ts.map +1 -1
  625. package/dist/cluster/Sharding.js +181 -62
  626. package/dist/cluster/Sharding.js.map +1 -1
  627. package/dist/cluster/SqlMessageStorage.d.ts +59 -19
  628. package/dist/cluster/SqlMessageStorage.d.ts.map +1 -1
  629. package/dist/cluster/SqlMessageStorage.js +84 -55
  630. package/dist/cluster/SqlMessageStorage.js.map +1 -1
  631. package/dist/cluster/SqlRunnerStorage.d.ts +68 -19
  632. package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
  633. package/dist/cluster/SqlRunnerStorage.js +191 -113
  634. package/dist/cluster/SqlRunnerStorage.js.map +1 -1
  635. package/dist/cluster/internal/entityManager.js +104 -37
  636. package/dist/cluster/internal/entityManager.js.map +1 -1
  637. package/dist/encoding/Base64.d.ts +4 -0
  638. package/dist/encoding/Base64.d.ts.map +1 -1
  639. package/dist/encoding/Base64.js +4 -0
  640. package/dist/encoding/Base64.js.map +1 -1
  641. package/dist/encoding/Base64Url.d.ts +4 -0
  642. package/dist/encoding/Base64Url.d.ts.map +1 -1
  643. package/dist/encoding/Base64Url.js +4 -0
  644. package/dist/encoding/Base64Url.js.map +1 -1
  645. package/dist/encoding/EncodingError.d.ts +4 -0
  646. package/dist/encoding/EncodingError.d.ts.map +1 -1
  647. package/dist/encoding/EncodingError.js +4 -0
  648. package/dist/encoding/EncodingError.js.map +1 -1
  649. package/dist/encoding/Hex.d.ts +5 -0
  650. package/dist/encoding/Hex.d.ts.map +1 -1
  651. package/dist/encoding/Hex.js +5 -0
  652. package/dist/encoding/Hex.js.map +1 -1
  653. package/dist/encoding/Toml.js +2 -2
  654. package/dist/encoding/Toml.js.map +1 -1
  655. package/dist/encoding/Yaml.d.ts.map +1 -1
  656. package/dist/encoding/Yaml.js +6 -4
  657. package/dist/encoding/Yaml.js.map +1 -1
  658. package/dist/encoding/index.d.ts +4 -0
  659. package/dist/encoding/index.d.ts.map +1 -1
  660. package/dist/encoding/index.js +4 -0
  661. package/dist/encoding/index.js.map +1 -1
  662. package/dist/eventlog/SqlEventJournal.js +8 -4
  663. package/dist/eventlog/SqlEventJournal.js.map +1 -1
  664. package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts +27 -10
  665. package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts.map +1 -1
  666. package/dist/eventlog/SqlEventLogServerUnencrypted.js +49 -7
  667. package/dist/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
  668. package/dist/http/FindMyWay/internal/router.js +3 -6
  669. package/dist/http/FindMyWay/internal/router.js.map +1 -1
  670. package/dist/http/Headers.d.ts +3 -1
  671. package/dist/http/Headers.d.ts.map +1 -1
  672. package/dist/http/Headers.js +4 -2
  673. package/dist/http/Headers.js.map +1 -1
  674. package/dist/http/HttpClient.d.ts +15 -0
  675. package/dist/http/HttpClient.d.ts.map +1 -1
  676. package/dist/http/HttpClient.js +79 -23
  677. package/dist/http/HttpClient.js.map +1 -1
  678. package/dist/http/HttpClientResponse.js +3 -1
  679. package/dist/http/HttpClientResponse.js.map +1 -1
  680. package/dist/http/HttpEffect.d.ts +3 -0
  681. package/dist/http/HttpEffect.d.ts.map +1 -1
  682. package/dist/http/HttpEffect.js +5 -2
  683. package/dist/http/HttpEffect.js.map +1 -1
  684. package/dist/http/HttpMiddleware.d.ts +17 -0
  685. package/dist/http/HttpMiddleware.d.ts.map +1 -1
  686. package/dist/http/HttpMiddleware.js +56 -39
  687. package/dist/http/HttpMiddleware.js.map +1 -1
  688. package/dist/http/HttpServer.d.ts +1 -1
  689. package/dist/http/HttpServer.d.ts.map +1 -1
  690. package/dist/http/HttpTraceContext.d.ts.map +1 -1
  691. package/dist/http/HttpTraceContext.js +4 -2
  692. package/dist/http/HttpTraceContext.js.map +1 -1
  693. package/dist/http/internal/tracing.d.ts +2 -0
  694. package/dist/http/internal/tracing.d.ts.map +1 -0
  695. package/dist/http/internal/tracing.js +37 -0
  696. package/dist/http/internal/tracing.js.map +1 -0
  697. package/dist/http-api/HttpApiBuilder.js +2 -1
  698. package/dist/http-api/HttpApiBuilder.js.map +1 -1
  699. package/dist/http-api/HttpApiClient.d.ts +12 -3
  700. package/dist/http-api/HttpApiClient.d.ts.map +1 -1
  701. package/dist/http-api/HttpApiClient.js.map +1 -1
  702. package/dist/http-api/HttpApiError.d.ts +4 -3
  703. package/dist/http-api/HttpApiError.d.ts.map +1 -1
  704. package/dist/http-api/HttpApiError.js +7 -4
  705. package/dist/http-api/HttpApiError.js.map +1 -1
  706. package/dist/http-api/HttpApiSecurity.d.ts +8 -8
  707. package/dist/http-api/HttpApiSecurity.js +8 -8
  708. package/dist/index.d.ts +155 -0
  709. package/dist/index.d.ts.map +1 -1
  710. package/dist/index.js +155 -0
  711. package/dist/index.js.map +1 -1
  712. package/dist/internal/arbitrary/array.js +3 -3
  713. package/dist/internal/arbitrary/array.js.map +1 -1
  714. package/dist/internal/arbitrary/model.js +26 -11
  715. package/dist/internal/arbitrary/model.js.map +1 -1
  716. package/dist/internal/arbitrary/runner.js +8 -8
  717. package/dist/internal/arbitrary/runner.js.map +1 -1
  718. package/dist/internal/arbitrary/schema.js +4 -5
  719. package/dist/internal/arbitrary/schema.js.map +1 -1
  720. package/dist/internal/effect.js +53 -46
  721. package/dist/internal/effect.js.map +1 -1
  722. package/dist/internal/schedule.js +7 -5
  723. package/dist/internal/schedule.js.map +1 -1
  724. package/dist/internal/schema/standardSchema.js +2 -2
  725. package/dist/internal/schema/standardSchema.js.map +1 -1
  726. package/dist/internal/version.d.ts +2 -0
  727. package/dist/internal/version.d.ts.map +1 -0
  728. package/dist/internal/version.js +3 -0
  729. package/dist/internal/version.js.map +1 -0
  730. package/dist/net/AddressResolver.d.ts +145 -0
  731. package/dist/net/AddressResolver.d.ts.map +1 -0
  732. package/dist/net/AddressResolver.js +114 -0
  733. package/dist/net/AddressResolver.js.map +1 -0
  734. package/dist/net/Dns.d.ts +596 -0
  735. package/dist/net/Dns.d.ts.map +1 -0
  736. package/dist/net/Dns.js +549 -0
  737. package/dist/net/Dns.js.map +1 -0
  738. package/dist/net/Host.d.ts +320 -0
  739. package/dist/net/Host.d.ts.map +1 -0
  740. package/dist/net/Host.js +342 -0
  741. package/dist/net/Host.js.map +1 -0
  742. package/dist/net/IpInterface.d.ts +76 -3
  743. package/dist/net/IpInterface.d.ts.map +1 -1
  744. package/dist/net/IpInterface.js +53 -4
  745. package/dist/net/IpInterface.js.map +1 -1
  746. package/dist/net/IpNetwork.d.ts +82 -8
  747. package/dist/net/IpNetwork.d.ts.map +1 -1
  748. package/dist/net/IpNetwork.js +60 -4
  749. package/dist/net/IpNetwork.js.map +1 -1
  750. package/dist/net/NetAddress.d.ts +388 -35
  751. package/dist/net/NetAddress.d.ts.map +1 -1
  752. package/dist/net/NetAddress.js +350 -34
  753. package/dist/net/NetAddress.js.map +1 -1
  754. package/dist/net/index.d.ts +15 -0
  755. package/dist/net/index.d.ts.map +1 -1
  756. package/dist/net/index.js +15 -0
  757. package/dist/net/index.js.map +1 -1
  758. package/dist/observability/OtlpExporter.d.ts.map +1 -1
  759. package/dist/observability/OtlpExporter.js +5 -6
  760. package/dist/observability/OtlpExporter.js.map +1 -1
  761. package/dist/observability/OtlpLogger.d.ts.map +1 -1
  762. package/dist/observability/OtlpLogger.js +23 -27
  763. package/dist/observability/OtlpLogger.js.map +1 -1
  764. package/dist/observability/OtlpMetrics.d.ts +5 -3
  765. package/dist/observability/OtlpMetrics.d.ts.map +1 -1
  766. package/dist/observability/OtlpMetrics.js +36 -115
  767. package/dist/observability/OtlpMetrics.js.map +1 -1
  768. package/dist/observability/OtlpResource.d.ts +4 -3
  769. package/dist/observability/OtlpResource.d.ts.map +1 -1
  770. package/dist/observability/OtlpResource.js +20 -23
  771. package/dist/observability/OtlpResource.js.map +1 -1
  772. package/dist/observability/OtlpTracer.d.ts +1 -0
  773. package/dist/observability/OtlpTracer.d.ts.map +1 -1
  774. package/dist/observability/OtlpTracer.js +32 -36
  775. package/dist/observability/OtlpTracer.js.map +1 -1
  776. package/dist/observability/PrometheusMetrics.js +1 -0
  777. package/dist/observability/PrometheusMetrics.js.map +1 -1
  778. package/dist/observability/internal/otlpProtobuf.js +32 -1
  779. package/dist/observability/internal/otlpProtobuf.js.map +1 -1
  780. package/dist/persistence/PersistedQueue.d.ts +32 -3
  781. package/dist/persistence/PersistedQueue.d.ts.map +1 -1
  782. package/dist/persistence/PersistedQueue.js +75 -16
  783. package/dist/persistence/PersistedQueue.js.map +1 -1
  784. package/dist/reactivity/AsyncResult.d.ts +1 -1
  785. package/dist/reactivity/Atom.d.ts +5 -5
  786. package/dist/reactivity/Atom.d.ts.map +1 -1
  787. package/dist/reactivity/Atom.js +9 -5
  788. package/dist/reactivity/Atom.js.map +1 -1
  789. package/dist/reactivity/AtomHttpApi.d.ts +2 -2
  790. package/dist/reactivity/AtomHttpApi.d.ts.map +1 -1
  791. package/dist/reactivity/AtomRegistry.d.ts +8 -0
  792. package/dist/reactivity/AtomRegistry.d.ts.map +1 -1
  793. package/dist/reactivity/AtomRegistry.js.map +1 -1
  794. package/dist/rpc/RpcClient.d.ts +41 -7
  795. package/dist/rpc/RpcClient.d.ts.map +1 -1
  796. package/dist/rpc/RpcClient.js +50 -25
  797. package/dist/rpc/RpcClient.js.map +1 -1
  798. package/dist/rpc/RpcServer.d.ts +6 -0
  799. package/dist/rpc/RpcServer.d.ts.map +1 -1
  800. package/dist/rpc/RpcServer.js +59 -40
  801. package/dist/rpc/RpcServer.js.map +1 -1
  802. package/dist/rpc/internal/tracing.d.ts +2 -0
  803. package/dist/rpc/internal/tracing.d.ts.map +1 -0
  804. package/dist/rpc/internal/tracing.js +18 -0
  805. package/dist/rpc/internal/tracing.js.map +1 -0
  806. package/dist/schema/SchemaCompiler/runtime.js +9 -1
  807. package/dist/schema/SchemaCompiler/runtime.js.map +1 -1
  808. package/dist/socket/DatagramSocket.d.ts +456 -0
  809. package/dist/socket/DatagramSocket.d.ts.map +1 -0
  810. package/dist/socket/DatagramSocket.js +535 -0
  811. package/dist/socket/DatagramSocket.js.map +1 -0
  812. package/dist/socket/Socket.d.ts +14 -1
  813. package/dist/socket/Socket.d.ts.map +1 -1
  814. package/dist/socket/Socket.js +9 -1
  815. package/dist/socket/Socket.js.map +1 -1
  816. package/dist/socket/index.d.ts +5 -0
  817. package/dist/socket/index.d.ts.map +1 -1
  818. package/dist/socket/index.js +5 -0
  819. package/dist/socket/index.js.map +1 -1
  820. package/dist/sql/Migrator.d.ts.map +1 -1
  821. package/dist/sql/Migrator.js +7 -2
  822. package/dist/sql/Migrator.js.map +1 -1
  823. package/dist/sql/SqlClient.d.ts +7 -1
  824. package/dist/sql/SqlClient.d.ts.map +1 -1
  825. package/dist/sql/SqlClient.js +35 -10
  826. package/dist/sql/SqlClient.js.map +1 -1
  827. package/dist/sql/Statement.d.ts +21 -1
  828. package/dist/sql/Statement.d.ts.map +1 -1
  829. package/dist/sql/Statement.js +55 -7
  830. package/dist/sql/Statement.js.map +1 -1
  831. package/dist/testing/TestClock.d.ts +8 -0
  832. package/dist/testing/TestClock.d.ts.map +1 -1
  833. package/dist/testing/TestClock.js +7 -0
  834. package/dist/testing/TestClock.js.map +1 -1
  835. package/dist/testing/TestConsole.d.ts +7 -0
  836. package/dist/testing/TestConsole.d.ts.map +1 -1
  837. package/dist/testing/TestConsole.js +6 -0
  838. package/dist/testing/TestConsole.js.map +1 -1
  839. package/dist/testing/TestCrypto.d.ts +73 -0
  840. package/dist/testing/TestCrypto.d.ts.map +1 -0
  841. package/dist/testing/TestCrypto.js +87 -0
  842. package/dist/testing/TestCrypto.js.map +1 -0
  843. package/dist/testing/index.d.ts +8 -0
  844. package/dist/testing/index.d.ts.map +1 -1
  845. package/dist/testing/index.js +8 -0
  846. package/dist/testing/index.js.map +1 -1
  847. package/dist/workflow/DurableDeferred.d.ts +54 -0
  848. package/dist/workflow/DurableDeferred.d.ts.map +1 -1
  849. package/dist/workflow/DurableDeferred.js +78 -49
  850. package/dist/workflow/DurableDeferred.js.map +1 -1
  851. package/dist/workflow/WorkflowEngine.d.ts.map +1 -1
  852. package/dist/workflow/WorkflowEngine.js +2 -1
  853. package/dist/workflow/WorkflowEngine.js.map +1 -1
  854. package/package.json +3 -3
  855. package/src/Array.ts +351 -3
  856. package/src/BigDecimal.ts +88 -0
  857. package/src/BigInt.ts +68 -0
  858. package/src/Boolean.ts +34 -0
  859. package/src/Brand.ts +10 -0
  860. package/src/ByteSize.ts +87 -0
  861. package/src/Cache.ts +50 -8
  862. package/src/Cause.ts +82 -0
  863. package/src/Channel.ts +368 -18
  864. package/src/ChannelSchema.ts +13 -0
  865. package/src/Chunk.ts +193 -0
  866. package/src/Clock.ts +7 -0
  867. package/src/Combiner.ts +10 -0
  868. package/src/Config.ts +82 -8
  869. package/src/ConfigProvider.ts +28 -0
  870. package/src/Console.ts +26 -0
  871. package/src/Context.ts +53 -3
  872. package/src/Cron.ts +32 -1
  873. package/src/Crypto.ts +48 -9
  874. package/src/Data.ts +13 -0
  875. package/src/DateTime.ts +180 -6
  876. package/src/Deferred.ts +51 -0
  877. package/src/Differ.ts +2 -0
  878. package/src/Duration.ts +126 -16
  879. package/src/Effect.ts +539 -5
  880. package/src/Effectable.ts +4 -0
  881. package/src/Equal.ts +12 -1
  882. package/src/Equivalence.ts +22 -0
  883. package/src/ErrorReporter.ts +36 -0
  884. package/src/ExecutionPlan.ts +58 -14
  885. package/src/Exit.ts +40 -0
  886. package/src/Fiber.ts +20 -0
  887. package/src/FiberHandle.ts +29 -4
  888. package/src/FiberMap.ts +38 -0
  889. package/src/FiberSet.ts +21 -0
  890. package/src/FileSystem.ts +64 -2
  891. package/src/Filter.ts +55 -0
  892. package/src/Formatter.ts +42 -1
  893. package/src/Function.ts +30 -0
  894. package/src/Graph.ts +317 -36
  895. package/src/HKT.ts +5 -0
  896. package/src/Hash.ts +15 -0
  897. package/src/HashMap.ts +91 -0
  898. package/src/HashRing.ts +18 -0
  899. package/src/HashSet.ts +53 -0
  900. package/src/Inspectable.ts +8 -0
  901. package/src/Iterable.ts +127 -0
  902. package/src/JsonPatch.ts +5 -0
  903. package/src/JsonPointer.ts +5 -0
  904. package/src/JsonSchema.ts +17 -0
  905. package/src/Latch.ts +14 -0
  906. package/src/Layer.ts +101 -1
  907. package/src/LayerMap.ts +7 -0
  908. package/src/LayerRef.ts +5 -0
  909. package/src/LogLevel.ts +20 -0
  910. package/src/Logger.ts +41 -5
  911. package/src/ManagedRuntime.ts +12 -1
  912. package/src/Match.ts +52 -0
  913. package/src/Metric.ts +69 -0
  914. package/src/MutableHashMap.ts +44 -0
  915. package/src/MutableHashSet.ts +17 -0
  916. package/src/MutableList.ts +21 -0
  917. package/src/MutableRef.ts +32 -0
  918. package/src/Newtype.ts +9 -0
  919. package/src/NonEmptyIterable.ts +4 -0
  920. package/src/Number.ts +61 -0
  921. package/src/Optic.ts +57 -0
  922. package/src/Option.ts +134 -0
  923. package/src/Order.ts +30 -0
  924. package/src/Ordering.ts +7 -0
  925. package/src/PartitionedSemaphore.ts +61 -22
  926. package/src/Path.ts +6 -0
  927. package/src/Pipeable.ts +7 -0
  928. package/src/PlatformError.ts +8 -0
  929. package/src/Pool.ts +20 -1
  930. package/src/Predicate.ts +85 -0
  931. package/src/PrimaryKey.ts +5 -0
  932. package/src/PubSub.ts +90 -9
  933. package/src/Pull.ts +20 -0
  934. package/src/Queue.ts +80 -10
  935. package/src/Random.ts +13 -0
  936. package/src/RcMap.ts +23 -0
  937. package/src/RcRef.ts +6 -0
  938. package/src/Record.ts +100 -0
  939. package/src/Redactable.ts +6 -0
  940. package/src/Redacted.ts +8 -0
  941. package/src/Reducer.ts +4 -0
  942. package/src/Ref.ts +42 -0
  943. package/src/References.ts +21 -0
  944. package/src/RegExp.ts +4 -0
  945. package/src/Request.ts +32 -0
  946. package/src/RequestResolver.ts +59 -10
  947. package/src/Resource.ts +7 -0
  948. package/src/Result.ts +93 -0
  949. package/src/Runtime.ts +10 -0
  950. package/src/Schedule.ts +61 -0
  951. package/src/Scheduler.ts +7 -0
  952. package/src/Schema.ts +1168 -9
  953. package/src/SchemaAST.ts +115 -1
  954. package/src/SchemaGetter.ts +80 -4
  955. package/src/SchemaIssue.ts +34 -0
  956. package/src/SchemaParser.ts +26 -0
  957. package/src/SchemaRepresentation.ts +148 -0
  958. package/src/SchemaTransformation.ts +53 -0
  959. package/src/Scope.ts +19 -0
  960. package/src/ScopedCache.ts +55 -3
  961. package/src/ScopedRef.ts +9 -0
  962. package/src/Semaphore.ts +26 -0
  963. package/src/Sink.ts +126 -2
  964. package/src/StandardSchema.ts +1 -0
  965. package/src/Stdio.ts +16 -2
  966. package/src/Stream.ts +633 -26
  967. package/src/String.ts +87 -0
  968. package/src/Struct.ts +46 -0
  969. package/src/SubscriptionRef.ts +65 -0
  970. package/src/Symbol.ts +2 -0
  971. package/src/SynchronizedRef.ts +63 -0
  972. package/src/Take.ts +3 -0
  973. package/src/Terminal.ts +8 -0
  974. package/src/Tracer.ts +23 -0
  975. package/src/Trie.ts +68 -0
  976. package/src/Tuple.ts +38 -0
  977. package/src/TxChunk.ts +52 -0
  978. package/src/TxDeferred.ts +15 -0
  979. package/src/TxHashMap.ts +97 -6
  980. package/src/TxHashSet.ts +83 -3
  981. package/src/TxPriorityQueue.ts +34 -2
  982. package/src/TxPubSub.ts +26 -0
  983. package/src/TxQueue.ts +51 -0
  984. package/src/TxReentrantLock.ts +53 -36
  985. package/src/TxRef.ts +14 -0
  986. package/src/TxSemaphore.ts +47 -31
  987. package/src/TxSubscriptionRef.ts +25 -0
  988. package/src/Types.ts +36 -0
  989. package/src/UndefinedOr.ts +15 -0
  990. package/src/Unify.ts +15 -0
  991. package/src/Utils.ts +4 -0
  992. package/src/Version.ts +38 -0
  993. package/src/ai/Chat.ts +1 -1
  994. package/src/ai/DecisionModel.ts +42 -1
  995. package/src/ai/LanguageModel.ts +16 -19
  996. package/src/ai/McpServer.ts +169 -58
  997. package/src/ai/Telemetry.ts +62 -58
  998. package/src/ai/internal/mcpProtocol/v2026_07_28.ts +5 -0
  999. package/src/ai/internal/mcpProtocol.ts +3 -0
  1000. package/src/ai/internal/mcpRuntime.ts +86 -43
  1001. package/src/ai/internal/mcpStatefulRuntime.ts +2 -0
  1002. package/src/cli/CliOutput.ts +33 -16
  1003. package/src/cli/Command.ts +4 -3
  1004. package/src/cli/Completions.ts +9 -6
  1005. package/src/cli/GlobalFlag.ts +19 -11
  1006. package/src/cli/Prompt.ts +159 -149
  1007. package/src/cli/internal/ansi.ts +26 -3
  1008. package/src/cli/internal/completions/powershell.ts +322 -0
  1009. package/src/cli/internal/completions/zsh.ts +4 -2
  1010. package/src/cli/internal/wizard.ts +34 -26
  1011. package/src/cluster/ClusterSchema.ts +32 -0
  1012. package/src/cluster/ClusterWorkflowEngine.ts +13 -24
  1013. package/src/cluster/K8sHttpClient.ts +12 -2
  1014. package/src/cluster/MessageStorage.ts +45 -14
  1015. package/src/cluster/Runners.ts +8 -2
  1016. package/src/cluster/Sharding.ts +207 -49
  1017. package/src/cluster/SqlMessageStorage.ts +118 -84
  1018. package/src/cluster/SqlRunnerStorage.ts +224 -128
  1019. package/src/cluster/internal/entityManager.ts +151 -55
  1020. package/src/encoding/Base64.ts +4 -0
  1021. package/src/encoding/Base64Url.ts +4 -0
  1022. package/src/encoding/EncodingError.ts +5 -0
  1023. package/src/encoding/Hex.ts +5 -0
  1024. package/src/encoding/Toml.ts +2 -2
  1025. package/src/encoding/Yaml.ts +8 -4
  1026. package/src/encoding/index.ts +4 -0
  1027. package/src/eventlog/SqlEventJournal.ts +18 -4
  1028. package/src/eventlog/SqlEventLogServerUnencrypted.ts +282 -235
  1029. package/src/http/FindMyWay/internal/router.ts +4 -7
  1030. package/src/http/Headers.ts +8 -2
  1031. package/src/http/HttpClient.ts +100 -29
  1032. package/src/http/HttpClientResponse.ts +3 -1
  1033. package/src/http/HttpEffect.ts +11 -2
  1034. package/src/http/HttpMiddleware.ts +60 -45
  1035. package/src/http/HttpServer.ts +1 -1
  1036. package/src/http/HttpTraceContext.ts +8 -2
  1037. package/src/http/internal/tracing.ts +52 -0
  1038. package/src/http-api/HttpApiBuilder.ts +5 -1
  1039. package/src/http-api/HttpApiClient.ts +13 -4
  1040. package/src/http-api/HttpApiError.ts +8 -4
  1041. package/src/http-api/HttpApiSecurity.ts +8 -8
  1042. package/src/index.ts +156 -0
  1043. package/src/internal/arbitrary/array.ts +3 -3
  1044. package/src/internal/arbitrary/model.ts +37 -14
  1045. package/src/internal/arbitrary/runner.ts +7 -7
  1046. package/src/internal/arbitrary/schema.ts +4 -3
  1047. package/src/internal/effect.ts +62 -58
  1048. package/src/internal/schedule.ts +23 -17
  1049. package/src/internal/schema/standardSchema.ts +2 -2
  1050. package/src/internal/version.ts +2 -0
  1051. package/src/net/AddressResolver.ts +222 -0
  1052. package/src/net/Dns.ts +1035 -0
  1053. package/src/net/Host.ts +472 -0
  1054. package/src/net/IpInterface.ts +117 -7
  1055. package/src/net/IpNetwork.ts +116 -17
  1056. package/src/net/NetAddress.ts +611 -76
  1057. package/src/net/index.ts +18 -0
  1058. package/src/observability/OtlpExporter.ts +9 -6
  1059. package/src/observability/OtlpLogger.ts +20 -21
  1060. package/src/observability/OtlpMetrics.ts +46 -116
  1061. package/src/observability/OtlpResource.ts +18 -27
  1062. package/src/observability/OtlpTracer.ts +34 -40
  1063. package/src/observability/PrometheusMetrics.ts +1 -0
  1064. package/src/observability/internal/otlpProtobuf.ts +60 -0
  1065. package/src/persistence/PersistedQueue.ts +146 -53
  1066. package/src/reactivity/AsyncResult.ts +1 -1
  1067. package/src/reactivity/Atom.ts +10 -6
  1068. package/src/reactivity/AtomHttpApi.ts +2 -4
  1069. package/src/reactivity/AtomRegistry.ts +7 -0
  1070. package/src/rpc/RpcClient.ts +87 -41
  1071. package/src/rpc/RpcServer.ts +85 -48
  1072. package/src/rpc/internal/tracing.ts +22 -0
  1073. package/src/schema/SchemaCompiler/runtime.ts +4 -1
  1074. package/src/socket/DatagramSocket.ts +919 -0
  1075. package/src/socket/Socket.ts +22 -2
  1076. package/src/socket/index.ts +6 -0
  1077. package/src/sql/Migrator.ts +21 -5
  1078. package/src/sql/SqlClient.ts +43 -19
  1079. package/src/sql/Statement.ts +59 -7
  1080. package/src/testing/TestClock.ts +9 -0
  1081. package/src/testing/TestConsole.ts +8 -0
  1082. package/src/testing/TestCrypto.ts +94 -0
  1083. package/src/testing/index.ts +9 -0
  1084. package/src/workflow/DurableDeferred.ts +123 -48
  1085. package/src/workflow/WorkflowEngine.ts +2 -1
@@ -9,10 +9,11 @@ import * as Data from "../Data.ts"
9
9
  import * as Equal from "../Equal.ts"
10
10
  import { dual } from "../Function.ts"
11
11
  import * as Hash from "../Hash.ts"
12
- import { NodeInspectSymbol } from "../Inspectable.ts"
12
+ import * as Inspectable from "../Inspectable.ts"
13
13
  import * as Option from "../Option.ts"
14
- import { hasProperty } from "../Predicate.ts"
14
+ import { hasProperty, isTupleOf } from "../Predicate.ts"
15
15
  import * as Result from "../Result.ts"
16
+ import type { TupleOf } from "../Types.ts"
16
17
 
17
18
  const TypeId = "~effect/net/NetAddress" as const
18
19
 
@@ -23,11 +24,9 @@ const TypeId = "~effect/net/NetAddress" as const
23
24
  * @category models
24
25
  * @since 4.0.0
25
26
  */
26
- export interface Ipv4Address extends Equal.Equal, Hash.Hash {
27
+ export interface Ipv4Address extends Equal.Equal, Hash.Hash, Inspectable.Inspectable {
27
28
  readonly _tag: "Ipv4Address"
28
29
  readonly [TypeId]: typeof TypeId
29
- toString(): string
30
- toJSON(): string
31
30
  }
32
31
 
33
32
  /**
@@ -37,11 +36,9 @@ export interface Ipv4Address extends Equal.Equal, Hash.Hash {
37
36
  * @category models
38
37
  * @since 4.0.0
39
38
  */
40
- export interface Ipv6Address extends Equal.Equal, Hash.Hash {
39
+ export interface Ipv6Address extends Equal.Equal, Hash.Hash, Inspectable.Inspectable {
41
40
  readonly _tag: "Ipv6Address"
42
41
  readonly [TypeId]: typeof TypeId
43
- toString(): string
44
- toJSON(): string
45
42
  }
46
43
 
47
44
  /**
@@ -53,6 +50,89 @@ export interface Ipv6Address extends Equal.Equal, Hash.Hash {
53
50
  */
54
51
  export type IpAddress = Ipv4Address | Ipv6Address
55
52
 
53
+ /**
54
+ * The four octets of an IPv4 address in network order.
55
+ *
56
+ * @stability unstable
57
+ * @category models
58
+ * @since 4.0.0
59
+ */
60
+ export type Ipv4Octets = Readonly<TupleOf<4, number>>
61
+
62
+ /**
63
+ * The eight 16-bit segments of an IPv6 address in network order.
64
+ *
65
+ * @stability unstable
66
+ * @category models
67
+ * @since 4.0.0
68
+ */
69
+ export type Ipv6Segments = Readonly<TupleOf<8, number>>
70
+
71
+ /**
72
+ * The six octets of a MAC address in transmission order.
73
+ *
74
+ * @stability unstable
75
+ * @category models
76
+ * @since 4.0.0
77
+ */
78
+ export type MacAddressOctets = Readonly<TupleOf<6, number>>
79
+
80
+ /**
81
+ * An IPv4 address, or a string, four octets, or four network-order bytes to
82
+ * convert to one.
83
+ *
84
+ * @stability unstable
85
+ * @category models
86
+ * @since 4.0.0
87
+ */
88
+ export type Ipv4AddressInput = Ipv4Address | string | Ipv4Octets | Uint8Array
89
+
90
+ /**
91
+ * An IPv6 address, or a string, eight 16-bit segments, or sixteen
92
+ * network-order bytes to convert to one.
93
+ *
94
+ * @stability unstable
95
+ * @category models
96
+ * @since 4.0.0
97
+ */
98
+ export type Ipv6AddressInput = Ipv6Address | string | Ipv6Segments | Uint8Array
99
+
100
+ /**
101
+ * An IP address, or any `Ipv4AddressInput` or `Ipv6AddressInput` to convert to
102
+ * one.
103
+ *
104
+ * @stability unstable
105
+ * @category models
106
+ * @since 4.0.0
107
+ */
108
+ export type IpAddressInput = Ipv4AddressInput | Ipv6AddressInput
109
+
110
+ /**
111
+ * An IPv6 literal with a zone, such as `fe80::1%eth0` or `fe80::1%3`.
112
+ *
113
+ * **Details**
114
+ *
115
+ * Named zones are kept as written because mapping an interface name to a
116
+ * numeric scope ID requires the operating system's interface table. Numeric
117
+ * zones must be unsigned 32-bit integers and are stored without leading zeros,
118
+ * and the address part is stored in canonical form.
119
+ *
120
+ * @see {@link scopedIpv6LiteralFromString} for parsing scoped IPv6 literals
121
+ * @stability experimental
122
+ * @category models
123
+ * @since 4.0.0
124
+ */
125
+ export type ScopedIpv6Literal = Brand.Branded<string, "~effect/net/NetAddress/ScopedIpv6Literal">
126
+
127
+ /**
128
+ * A scoped IPv6 literal or a string to parse as one.
129
+ *
130
+ * @stability experimental
131
+ * @category models
132
+ * @since 4.0.0
133
+ */
134
+ export type ScopedIpv6LiteralInput = ScopedIpv6Literal | string
135
+
56
136
  /**
57
137
  * An immutable 48-bit IEEE 802 MAC address.
58
138
  *
@@ -60,13 +140,20 @@ export type IpAddress = Ipv4Address | Ipv6Address
60
140
  * @category models
61
141
  * @since 4.0.0
62
142
  */
63
- export interface MacAddress extends Equal.Equal, Hash.Hash {
143
+ export interface MacAddress extends Equal.Equal, Hash.Hash, Inspectable.Inspectable {
64
144
  readonly _tag: "MacAddress"
65
145
  readonly [TypeId]: typeof TypeId
66
- toString(): string
67
- toJSON(): string
68
146
  }
69
147
 
148
+ /**
149
+ * A MAC address, or a string or six octets to convert to one.
150
+ *
151
+ * @stability unstable
152
+ * @category models
153
+ * @since 4.0.0
154
+ */
155
+ export type MacAddressInput = MacAddress | string | MacAddressOctets
156
+
70
157
  const MulticastTypeId = "~effect/net/NetAddress/MulticastAddress" as const
71
158
  const UnicastTypeId = "~effect/net/NetAddress/UnicastAddress" as const
72
159
  const BroadcastTypeId = "~effect/net/NetAddress/BroadcastAddress" as const
@@ -228,13 +315,11 @@ const getMacBytes = (self: MacAddress): Uint8Array => (self as any).bytes
228
315
  * @category models
229
316
  * @since 4.0.0
230
317
  */
231
- export interface InetAddressV4 extends Equal.Equal, Hash.Hash {
318
+ export interface InetAddressV4 extends Equal.Equal, Hash.Hash, Inspectable.Inspectable {
232
319
  readonly _tag: "InetAddressV4"
233
320
  readonly address: Ipv4Address
234
321
  readonly port: number
235
322
  readonly [TypeId]: typeof TypeId
236
- toString(): string
237
- toJSON(): string
238
323
  }
239
324
 
240
325
  /**
@@ -244,14 +329,12 @@ export interface InetAddressV4 extends Equal.Equal, Hash.Hash {
244
329
  * @category models
245
330
  * @since 4.0.0
246
331
  */
247
- export interface InetAddressV6 extends Equal.Equal, Hash.Hash {
332
+ export interface InetAddressV6 extends Equal.Equal, Hash.Hash, Inspectable.Inspectable {
248
333
  readonly _tag: "InetAddressV6"
249
334
  readonly address: Ipv6Address
250
335
  readonly port: number
251
336
  readonly scopeId: number
252
337
  readonly [TypeId]: typeof TypeId
253
- toString(): string
254
- toJSON(): string
255
338
  }
256
339
 
257
340
  /**
@@ -263,6 +346,32 @@ export interface InetAddressV6 extends Equal.Equal, Hash.Hash {
263
346
  */
264
347
  export type InetAddress = InetAddressV4 | InetAddressV6
265
348
 
349
+ /**
350
+ * The address, port, and optional IPv6 scope identifier of an internet address.
351
+ *
352
+ * **Details**
353
+ *
354
+ * A nonzero `scopeId` is only valid with an IPv6 address.
355
+ *
356
+ * @stability unstable
357
+ * @category models
358
+ * @since 4.0.0
359
+ */
360
+ export interface InetAddressParts<A extends IpAddressInput = IpAddressInput> {
361
+ readonly address: A
362
+ readonly port: number
363
+ readonly scopeId?: number | undefined
364
+ }
365
+
366
+ /**
367
+ * An internet address and port, or a string or parts to convert to one.
368
+ *
369
+ * @stability unstable
370
+ * @category models
371
+ * @since 4.0.0
372
+ */
373
+ export type InetAddressInput = InetAddress | string | InetAddressParts
374
+
266
375
  /**
267
376
  * An opaque Unix-domain filesystem socket path.
268
377
  *
@@ -270,12 +379,10 @@ export type InetAddress = InetAddressV4 | InetAddressV6
270
379
  * @category models
271
380
  * @since 4.0.0
272
381
  */
273
- export interface UnixPathAddress extends Equal.Equal, Hash.Hash {
382
+ export interface UnixPathAddress extends Equal.Equal, Hash.Hash, Inspectable.Inspectable {
274
383
  readonly _tag: "UnixPathAddress"
275
384
  readonly path: string
276
385
  readonly [TypeId]: typeof TypeId
277
- toString(): string
278
- toJSON(): string
279
386
  }
280
387
 
281
388
  /**
@@ -287,6 +394,17 @@ export interface UnixPathAddress extends Equal.Equal, Hash.Hash {
287
394
  */
288
395
  export type SocketAddress = InetAddress | UnixPathAddress
289
396
 
397
+ /**
398
+ * The path of a Unix-domain socket address.
399
+ *
400
+ * @stability unstable
401
+ * @category models
402
+ * @since 4.0.0
403
+ */
404
+ export interface UnixPathAddressParts {
405
+ readonly path: string
406
+ }
407
+
290
408
  /**
291
409
  * Companion types for constructing socket addresses.
292
410
  *
@@ -300,18 +418,14 @@ export declare namespace SocketAddress {
300
418
  *
301
419
  * **Details**
302
420
  *
303
- * String inputs must use `IPv4:port` or `[IPv6]:port` notation. Address
304
- * properties must be numeric IPv4 or IPv6 literals.
421
+ * Accepts any `InetAddressInput` or a Unix path. String inputs must use
422
+ * `IPv4:port` or `[IPv6]:port` notation.
305
423
  *
306
424
  * @stability unstable
307
425
  * @category models
308
426
  * @since 4.0.0
309
427
  */
310
- export type Input =
311
- | SocketAddress
312
- | string
313
- | { readonly address: IpAddress | string; readonly port: number }
314
- | { readonly path: string }
428
+ export type Input = SocketAddress | InetAddressInput | UnixPathAddressParts
315
429
  }
316
430
 
317
431
  /**
@@ -338,6 +452,29 @@ export declare namespace SocketAddress {
338
452
  export type Family<A extends IpAddress | InetAddress> = A extends Ipv4Address | InetAddressV4 ? Ipv4Address
339
453
  : Ipv6Address
340
454
 
455
+ /**
456
+ * The name of an IP address family, spelled as in `os.networkInterfaces()` and
457
+ * socket address information on Node.js, Deno, and Bun.
458
+ *
459
+ * @see {@link familyOf} for reading the family of an address
460
+ * @see {@link FamilyAddress} for the address type of a family
461
+ * @stability experimental
462
+ * @category models
463
+ * @since 4.0.0
464
+ */
465
+ export type IpFamily = "IPv4" | "IPv6"
466
+
467
+ /**
468
+ * The IP address type for an IP address family name. `FamilyAddress<IpFamily>`
469
+ * is `IpAddress`.
470
+ *
471
+ * @see {@link Family} for the inverse mapping from an address type
472
+ * @stability experimental
473
+ * @category models
474
+ * @since 4.0.0
475
+ */
476
+ export type FamilyAddress<F extends IpFamily> = F extends "IPv4" ? Ipv4Address : Ipv6Address
477
+
341
478
  /**
342
479
  * The internet address type for an IP address family.
343
480
  *
@@ -444,6 +581,93 @@ export const isIpAddress = (u: unknown): u is IpAddress => isIpv4Address(u) || i
444
581
  */
445
582
  export const width = (address: IpAddress): 32 | 128 => isIpv4Address(address) ? 32 : 128
446
583
 
584
+ /**
585
+ * Returns the family of an IP address or internet address.
586
+ *
587
+ * **Example** (Reading address families)
588
+ *
589
+ * ```ts import.meta.vitest
590
+ * import { NetAddress } from "effect/net"
591
+ *
592
+ * NetAddress.familyOf(NetAddress.ipv4Loopback) // => "IPv4"
593
+ * NetAddress.familyOf(NetAddress.inetAddressFromStringUnsafe("[::1]:80")) // => "IPv6"
594
+ * ```
595
+ *
596
+ * @stability experimental
597
+ * @category getters
598
+ * @since 4.0.0
599
+ */
600
+ export const familyOf = (self: IpAddress | InetAddress): IpFamily =>
601
+ isIpv4Address(self) || isInetAddressV4(self) ? "IPv4" : "IPv6"
602
+
603
+ /**
604
+ * Returns `true` when an IP address or internet address belongs to a family,
605
+ * narrowing it to that family.
606
+ *
607
+ * @stability experimental
608
+ * @category predicates
609
+ * @since 4.0.0
610
+ */
611
+ export const isFamily: {
612
+ /**
613
+ * Returns `true` when an IP address or internet address belongs to a family,
614
+ * narrowing it to that family.
615
+ *
616
+ * @stability experimental
617
+ * @category predicates
618
+ * @since 4.0.0
619
+ */
620
+ (family: "IPv4"): <A extends IpAddress | InetAddress>(self: A) => self is Extract<A, Ipv4Address | InetAddressV4>
621
+ /**
622
+ * Returns `true` when an IP address or internet address belongs to a family,
623
+ * narrowing it to that family.
624
+ *
625
+ * @stability experimental
626
+ * @category predicates
627
+ * @since 4.0.0
628
+ */
629
+ (family: "IPv6"): <A extends IpAddress | InetAddress>(self: A) => self is Extract<A, Ipv6Address | InetAddressV6>
630
+ /**
631
+ * Returns `true` when an IP address or internet address belongs to a family,
632
+ * narrowing it to that family.
633
+ *
634
+ * @stability experimental
635
+ * @category predicates
636
+ * @since 4.0.0
637
+ */
638
+ (family: IpFamily): (self: IpAddress | InetAddress) => boolean
639
+ /**
640
+ * Returns `true` when an IP address or internet address belongs to a family,
641
+ * narrowing it to that family.
642
+ *
643
+ * @stability experimental
644
+ * @category predicates
645
+ * @since 4.0.0
646
+ */
647
+ <A extends IpAddress | InetAddress>(self: A, family: "IPv4"): self is Extract<A, Ipv4Address | InetAddressV4>
648
+ /**
649
+ * Returns `true` when an IP address or internet address belongs to a family,
650
+ * narrowing it to that family.
651
+ *
652
+ * @stability experimental
653
+ * @category predicates
654
+ * @since 4.0.0
655
+ */
656
+ <A extends IpAddress | InetAddress>(self: A, family: "IPv6"): self is Extract<A, Ipv6Address | InetAddressV6>
657
+ /**
658
+ * Returns `true` when an IP address or internet address belongs to a family,
659
+ * narrowing it to that family.
660
+ *
661
+ * @stability experimental
662
+ * @category predicates
663
+ * @since 4.0.0
664
+ */
665
+ (self: IpAddress | InetAddress, family: IpFamily): boolean
666
+ } = dual(
667
+ 2,
668
+ <A extends IpAddress | InetAddress>(self: A, family: IpFamily): self is A => familyOf(self) === family
669
+ )
670
+
447
671
  /**
448
672
  * Returns `true` when a value is a MAC address.
449
673
  *
@@ -499,6 +723,7 @@ export const isUnixPathAddress = (u: unknown): u is UnixPathAddress => isAddress
499
723
  export const isSocketAddress = (u: unknown): u is SocketAddress => isInetAddress(u) || isUnixPathAddress(u)
500
724
 
501
725
  const Ipv4Proto = {
726
+ ...Inspectable.BaseProto,
502
727
  _tag: "Ipv4Address",
503
728
  [TypeId]: TypeId,
504
729
  [Equal.symbol](this: Ipv4Address, that: Equal.Equal): boolean {
@@ -512,13 +737,11 @@ const Ipv4Proto = {
512
737
  },
513
738
  toJSON(this: Ipv4Address): string {
514
739
  return this.toString()
515
- },
516
- [NodeInspectSymbol](this: Ipv4Address): string {
517
- return this.toJSON()
518
740
  }
519
741
  }
520
742
 
521
743
  const Ipv6Proto = {
744
+ ...Inspectable.BaseProto,
522
745
  _tag: "Ipv6Address",
523
746
  [TypeId]: TypeId,
524
747
  [Equal.symbol](this: Ipv6Address, that: Equal.Equal): boolean {
@@ -539,13 +762,11 @@ const Ipv6Proto = {
539
762
  },
540
763
  toJSON(this: Ipv6Address): string {
541
764
  return this.toString()
542
- },
543
- [NodeInspectSymbol](this: Ipv6Address): string {
544
- return this.toJSON()
545
765
  }
546
766
  }
547
767
 
548
768
  const MacProto = {
769
+ ...Inspectable.BaseProto,
549
770
  _tag: "MacAddress",
550
771
  [TypeId]: TypeId,
551
772
  [Equal.symbol](this: MacAddress, that: Equal.Equal): boolean {
@@ -559,9 +780,6 @@ const MacProto = {
559
780
  },
560
781
  toJSON(this: MacAddress): string {
561
782
  return this.toString()
562
- },
563
- [NodeInspectSymbol](this: MacAddress): string {
564
- return this.toJSON()
565
783
  }
566
784
  }
567
785
 
@@ -597,7 +815,7 @@ const packOctets = (a: number, b: number, c: number, d: number): number => ((a <
597
815
  const packBytes = (bytes: Uint8Array, offset: number): number =>
598
816
  packOctets(bytes[offset], bytes[offset + 1], bytes[offset + 2], bytes[offset + 3])
599
817
 
600
- const wordToOctets = (word: number): readonly [number, number, number, number] => [
818
+ const wordToOctets = (word: number): Ipv4Octets => [
601
819
  word >>> 24,
602
820
  (word >>> 16) & 0xff,
603
821
  (word >>> 8) & 0xff,
@@ -676,6 +894,15 @@ export const ipv4Broadcast: Ipv4Address = makeIpv4(0xffffffff)
676
894
  const addressError = (input: unknown, message: string): Result.Result<never, NetAddressError> =>
677
895
  Result.fail(new NetAddressError({ input, message }))
678
896
 
897
+ // Checks by index because `every` skips holes in sparse arrays.
898
+ const allIntegersInRange = (values: ReadonlyArray<number>, max: number): boolean => {
899
+ for (let i = 0; i < values.length; i++) {
900
+ const n = values[i]
901
+ if (!Number.isInteger(n) || n < 0 || n > max) return false
902
+ }
903
+ return true
904
+ }
905
+
679
906
  /**
680
907
  * Creates an IPv4 address from four checked octets.
681
908
  *
@@ -684,9 +911,9 @@ const addressError = (input: unknown, message: string): Result.Result<never, Net
684
911
  * @since 4.0.0
685
912
  */
686
913
  export const ipv4FromOctets = (
687
- octets: readonly [number, number, number, number]
914
+ octets: Ipv4Octets
688
915
  ): Result.Result<Ipv4Address, NetAddressError> => {
689
- if (!octets.every((n) => Number.isInteger(n) && n >= 0 && n <= 255)) {
916
+ if (!allIntegersInRange(octets, 255)) {
690
917
  return addressError(octets, "octets must be integers from 0 through 255")
691
918
  }
692
919
  return Result.succeed(makeIpv4(packOctets(octets[0], octets[1], octets[2], octets[3])))
@@ -700,9 +927,9 @@ export const ipv4FromOctets = (
700
927
  * @since 4.0.0
701
928
  */
702
929
  export const ipv6FromSegments = (
703
- segments: readonly [number, number, number, number, number, number, number, number]
930
+ segments: Ipv6Segments
704
931
  ): Result.Result<Ipv6Address, NetAddressError> => {
705
- if (!segments.every((n) => Number.isInteger(n) && n >= 0 && n <= 0xffff)) {
932
+ if (!allIntegersInRange(segments, 0xffff)) {
706
933
  return addressError(segments, "segments must be integers from 0 through 65535")
707
934
  }
708
935
  return Result.succeed(makeIpv6(
@@ -721,9 +948,9 @@ export const ipv6FromSegments = (
721
948
  * @since 4.0.0
722
949
  */
723
950
  export const macAddressFromOctets = (
724
- octets: readonly [number, number, number, number, number, number]
951
+ octets: MacAddressOctets
725
952
  ): Result.Result<MacAddress, NetAddressError> => {
726
- if (!octets.every((n) => Number.isInteger(n) && n >= 0 && n <= 255)) {
953
+ if (!allIntegersInRange(octets, 255)) {
727
954
  return addressError(octets, "octets must be integers from 0 through 255")
728
955
  }
729
956
  return Result.succeed(makeMac(new Uint8Array(octets)))
@@ -752,6 +979,32 @@ export const macAddressFromString = (input: string): Result.Result<MacAddress, N
752
979
  */
753
980
  export const macAddressFromStringUnsafe = (input: string): MacAddress => Result.getOrThrow(macAddressFromString(input))
754
981
 
982
+ /**
983
+ * Converts a `MacAddressInput` to a MAC address, parsing strings like
984
+ * `macAddressFromString`, checking octets like `macAddressFromOctets`, and
985
+ * returning MAC addresses unchanged.
986
+ *
987
+ * @stability unstable
988
+ * @category constructors
989
+ * @since 4.0.0
990
+ */
991
+ export const macAddressFromInput = (input: MacAddressInput): Result.Result<MacAddress, NetAddressError> => {
992
+ if (isMacAddress(input)) return Result.succeed(input)
993
+ if (typeof input === "string") return macAddressFromString(input)
994
+ if (Array.isArray(input) && isTupleOf(input, 6)) return macAddressFromOctets(input)
995
+ return addressError(input, "expected a MAC address, string, or 6 octets")
996
+ }
997
+
998
+ /**
999
+ * Converts a trusted `MacAddressInput` to a MAC address, throwing on failure.
1000
+ *
1001
+ * @stability unstable
1002
+ * @category unsafe
1003
+ * @since 4.0.0
1004
+ */
1005
+ export const macAddressFromInputUnsafe = (input: MacAddressInput): MacAddress =>
1006
+ Result.getOrThrow(macAddressFromInput(input))
1007
+
755
1008
  /**
756
1009
  * Parses a strict dotted-decimal IPv4 address.
757
1010
  *
@@ -875,6 +1128,141 @@ export const ipFromString = (input: string): Result.Result<IpAddress, NetAddress
875
1128
  */
876
1129
  export const ipFromStringUnsafe = (input: string): IpAddress => Result.getOrThrow(ipFromString(input))
877
1130
 
1131
+ /**
1132
+ * Converts an `IpAddressInput` to an IP address, returning IP addresses
1133
+ * unchanged.
1134
+ *
1135
+ * **Details**
1136
+ *
1137
+ * Strings are parsed like `ipFromString`. Four octets or bytes make an IPv4
1138
+ * address, and eight segments or sixteen bytes make an IPv6 address.
1139
+ *
1140
+ * **Example** (Converting IP address inputs)
1141
+ *
1142
+ * ```ts import.meta.vitest
1143
+ * import { Result } from "effect"
1144
+ * import { NetAddress } from "effect/net"
1145
+ *
1146
+ * const address = Result.getOrThrow(NetAddress.ipFromInput("192.0.2.1"))
1147
+ * NetAddress.formatIp(address) // => "192.0.2.1"
1148
+ * Result.getOrThrow(NetAddress.ipFromInput(address)) === address // => true
1149
+ * NetAddress.formatIp(Result.getOrThrow(NetAddress.ipFromInput([192, 0, 2, 1]))) // => "192.0.2.1"
1150
+ * Result.isFailure(NetAddress.ipFromInput("example.com")) // => true
1151
+ * ```
1152
+ *
1153
+ * @stability unstable
1154
+ * @category constructors
1155
+ * @since 4.0.0
1156
+ */
1157
+ export const ipFromInput = (input: IpAddressInput): Result.Result<IpAddress, NetAddressError> => {
1158
+ if (isIpAddress(input)) return Result.succeed(input)
1159
+ if (typeof input === "string") return ipFromString(input)
1160
+ if (input instanceof Uint8Array && input.length === 4) return Result.succeed(ipv4FromBytesUnsafe(input))
1161
+ if (input instanceof Uint8Array && input.length === 16) return Result.succeed(ipv6FromBytesUnsafe(input))
1162
+ if (Array.isArray(input) && isTupleOf(input, 4)) return ipv4FromOctets(input)
1163
+ if (Array.isArray(input) && isTupleOf(input, 8)) return ipv6FromSegments(input)
1164
+ return addressError(input, "expected an IP address, string, 4 octets, 8 segments, or 4 or 16 bytes")
1165
+ }
1166
+
1167
+ /**
1168
+ * Converts a trusted `IpAddressInput` to an IP address, throwing on failure.
1169
+ *
1170
+ * @stability unstable
1171
+ * @category unsafe
1172
+ * @since 4.0.0
1173
+ */
1174
+ export const ipFromInputUnsafe = (input: IpAddressInput): IpAddress => Result.getOrThrow(ipFromInput(input))
1175
+
1176
+ /**
1177
+ * Converts an `Ipv4AddressInput` to an IPv4 address, parsing strings like
1178
+ * `ipv4FromString`, checking octets like `ipv4FromOctets`, and returning IPv4
1179
+ * addresses unchanged.
1180
+ *
1181
+ * @stability unstable
1182
+ * @category constructors
1183
+ * @since 4.0.0
1184
+ */
1185
+ export const ipv4FromInput = (input: Ipv4AddressInput): Result.Result<Ipv4Address, NetAddressError> => {
1186
+ if (isIpv4Address(input)) return Result.succeed(input)
1187
+ if (typeof input === "string") return ipv4FromString(input)
1188
+ if (input instanceof Uint8Array && input.length === 4) return Result.succeed(ipv4FromBytesUnsafe(input))
1189
+ if (Array.isArray(input) && isTupleOf(input, 4)) return ipv4FromOctets(input)
1190
+ return addressError(input, "expected an IPv4 address, string, 4 octets, or 4 bytes")
1191
+ }
1192
+
1193
+ /**
1194
+ * Converts an `Ipv6AddressInput` to an IPv6 address, parsing strings like
1195
+ * `ipv6FromString`, checking segments like `ipv6FromSegments`, and returning
1196
+ * IPv6 addresses unchanged.
1197
+ *
1198
+ * @stability unstable
1199
+ * @category constructors
1200
+ * @since 4.0.0
1201
+ */
1202
+ export const ipv6FromInput = (input: Ipv6AddressInput): Result.Result<Ipv6Address, NetAddressError> => {
1203
+ if (isIpv6Address(input)) return Result.succeed(input)
1204
+ if (typeof input === "string") return ipv6FromString(input)
1205
+ if (input instanceof Uint8Array && input.length === 16) return Result.succeed(ipv6FromBytesUnsafe(input))
1206
+ if (Array.isArray(input) && isTupleOf(input, 8)) return ipv6FromSegments(input)
1207
+ return addressError(input, "expected an IPv6 address, string, 8 segments, or 16 bytes")
1208
+ }
1209
+
1210
+ /**
1211
+ * Returns `true` when a value is a canonical scoped IPv6 literal.
1212
+ *
1213
+ * @stability experimental
1214
+ * @category guards
1215
+ * @since 4.0.0
1216
+ */
1217
+ export const isScopedIpv6Literal = (u: unknown): u is ScopedIpv6Literal => {
1218
+ if (typeof u !== "string" || !u.includes("%")) return false
1219
+ const result = scopedIpv6LiteralFromString(u)
1220
+ return Result.isSuccess(result) && result.success === u
1221
+ }
1222
+
1223
+ /**
1224
+ * Parses an IPv6 literal with a numeric or named zone, such as `fe80::1%eth0`.
1225
+ *
1226
+ * @stability experimental
1227
+ * @category decoding
1228
+ * @since 4.0.0
1229
+ */
1230
+ export const scopedIpv6LiteralFromString = (
1231
+ input: string
1232
+ ): Result.Result<ScopedIpv6Literal, NetAddressError> => {
1233
+ const separator = input.indexOf("%")
1234
+ if (separator === -1) return addressError(input, "expected an IPv6 zone")
1235
+ let zone = input.slice(separator + 1)
1236
+ if (zone.length === 0 || /[%[\]/\s\p{Cc}]/u.test(zone)) {
1237
+ return addressError(input, "invalid IPv6 scope identifier")
1238
+ }
1239
+ if (/^\d+$/.test(zone)) {
1240
+ const scopeId = Number(zone)
1241
+ if (scopeId > 0xffffffff) return addressError(input, "scope identifier must be an unsigned 32-bit integer")
1242
+ zone = String(scopeId)
1243
+ }
1244
+ return Result.map(
1245
+ ipv6FromString(input.slice(0, separator)),
1246
+ (address) => `${formatIp(address)}%${zone}` as ScopedIpv6Literal
1247
+ )
1248
+ }
1249
+
1250
+ /**
1251
+ * Converts a `ScopedIpv6LiteralInput` to a scoped IPv6 literal, parsing it
1252
+ * like `scopedIpv6LiteralFromString`.
1253
+ *
1254
+ * **Details**
1255
+ *
1256
+ * Scoped IPv6 literals are strings, so every input is parsed.
1257
+ *
1258
+ * @stability experimental
1259
+ * @category constructors
1260
+ * @since 4.0.0
1261
+ */
1262
+ export const scopedIpv6LiteralFromInput = (
1263
+ input: ScopedIpv6LiteralInput
1264
+ ): Result.Result<ScopedIpv6Literal, NetAddressError> => scopedIpv6LiteralFromString(input)
1265
+
878
1266
  /**
879
1267
  * Returns the four numeric octets of an IPv4 address in a fresh tuple.
880
1268
  *
@@ -882,8 +1270,7 @@ export const ipFromStringUnsafe = (input: string): IpAddress => Result.getOrThro
882
1270
  * @category getters
883
1271
  * @since 4.0.0
884
1272
  */
885
- export const ipv4ToOctets = (self: Ipv4Address): readonly [number, number, number, number] =>
886
- wordToOctets(ipv4Value(self))
1273
+ export const ipv4ToOctets = (self: Ipv4Address): Ipv4Octets => wordToOctets(ipv4Value(self))
887
1274
 
888
1275
  /**
889
1276
  * Returns the eight numeric segments of an IPv6 address in a fresh tuple.
@@ -892,9 +1279,7 @@ export const ipv4ToOctets = (self: Ipv4Address): readonly [number, number, numbe
892
1279
  * @category getters
893
1280
  * @since 4.0.0
894
1281
  */
895
- export const ipv6ToSegments = (
896
- self: Ipv6Address
897
- ): readonly [number, number, number, number, number, number, number, number] => {
1282
+ export const ipv6ToSegments = (self: Ipv6Address): Ipv6Segments => {
898
1283
  const { w0, w1, w2, w3 } = ipv6Words(self)
899
1284
  return [w0 >>> 16, w0 & 0xffff, w1 >>> 16, w1 & 0xffff, w2 >>> 16, w2 & 0xffff, w3 >>> 16, w3 & 0xffff]
900
1285
  }
@@ -920,9 +1305,7 @@ export const ipv6ToOctets = (
920
1305
  * @category getters
921
1306
  * @since 4.0.0
922
1307
  */
923
- export const macAddressToOctets = (
924
- self: MacAddress
925
- ): readonly [number, number, number, number, number, number] => {
1308
+ export const macAddressToOctets = (self: MacAddress): MacAddressOctets => {
926
1309
  const bytes = getMacBytes(self)
927
1310
  return [bytes[0], bytes[1], bytes[2], bytes[3], bytes[4], bytes[5]]
928
1311
  }
@@ -1254,6 +1637,7 @@ export function toCanonical(self: IpAddress | InetAddress): IpAddress | InetAddr
1254
1637
  }
1255
1638
 
1256
1639
  const InetV4Proto = {
1640
+ ...Inspectable.BaseProto,
1257
1641
  _tag: "InetAddressV4",
1258
1642
  [TypeId]: TypeId,
1259
1643
  [Equal.symbol](this: InetAddressV4, that: Equal.Equal): boolean {
@@ -1267,13 +1651,11 @@ const InetV4Proto = {
1267
1651
  },
1268
1652
  toJSON(this: InetAddressV4): string {
1269
1653
  return this.toString()
1270
- },
1271
- [NodeInspectSymbol](this: InetAddressV4): string {
1272
- return this.toJSON()
1273
1654
  }
1274
1655
  }
1275
1656
 
1276
1657
  const InetV6Proto = {
1658
+ ...Inspectable.BaseProto,
1277
1659
  _tag: "InetAddressV6",
1278
1660
  [TypeId]: TypeId,
1279
1661
  [Equal.symbol](this: InetAddressV6, that: Equal.Equal): boolean {
@@ -1291,9 +1673,6 @@ const InetV6Proto = {
1291
1673
  },
1292
1674
  toJSON(this: InetAddressV6): string {
1293
1675
  return this.toString()
1294
- },
1295
- [NodeInspectSymbol](this: InetAddressV6): string {
1296
- return this.toJSON()
1297
1676
  }
1298
1677
  }
1299
1678
 
@@ -1396,6 +1775,112 @@ export const inetAddressFromIpString = (
1396
1775
  export const inetAddressFromIpStringUnsafe = (address: string, port: number): InetAddress =>
1397
1776
  Result.getOrThrow(inetAddressFromIpString(address, port))
1398
1777
 
1778
+ /**
1779
+ * Creates an internet address from a trusted native numeric host and port.
1780
+ * Named IPv6 zones are resolved using the supplied interface-to-scope map.
1781
+ * Use only for runtime-supplied socket addresses: this skips input validation,
1782
+ * so malformed strings or ports may silently produce incorrect values. An
1783
+ * unknown named IPv6 zone throws rather than losing its scope.
1784
+ *
1785
+ * @stability unstable
1786
+ * @category unsafe
1787
+ * @since 4.0.0
1788
+ */
1789
+ export const inetAddressFromNativeUnsafe = (
1790
+ host: string,
1791
+ port: number,
1792
+ scopeIds?: ReadonlyMap<string, number>
1793
+ ): InetAddress => {
1794
+ const zoneStart = host.indexOf("%")
1795
+ const end = zoneStart === -1 ? host.length : zoneStart
1796
+ if (host.indexOf(":") === -1) {
1797
+ const self = Object.create(InetV4Proto)
1798
+ self.address = makeIpv4(parseNativeIpv4(host, 0, end))
1799
+ self.port = port
1800
+ return Object.freeze(self)
1801
+ }
1802
+
1803
+ let scopeId = 0
1804
+ if (zoneStart !== -1) {
1805
+ const zone = host.slice(zoneStart + 1)
1806
+ const resolved = numericZone.test(zone) ? Number(zone) : scopeIds?.get(zone)
1807
+ if (resolved === undefined) throw new Error(`unknown IPv6 interface: ${zone}`)
1808
+ scopeId = resolved
1809
+ }
1810
+
1811
+ let w0 = 0
1812
+ let w1 = 0
1813
+ let w2 = 0
1814
+ let w3 = 0
1815
+ let segment = 0
1816
+ let i = 0
1817
+ while (i < end) {
1818
+ if (host.charCodeAt(i) === 58) {
1819
+ // The rest of a compressed address is anchored at the last segment.
1820
+ i += 2
1821
+ if (i === end) break
1822
+ let remaining = 1
1823
+ for (let j = i; j < end; j++) {
1824
+ if (host.charCodeAt(j) === 58) remaining++
1825
+ }
1826
+ const dot = host.indexOf(".", i)
1827
+ if (dot !== -1 && dot < end) remaining++
1828
+ segment = 8 - remaining
1829
+ }
1830
+ const start = i
1831
+ let value = 0
1832
+ while (i < end) {
1833
+ const ch = host.charCodeAt(i)
1834
+ if (ch === 58 || ch === 46) break
1835
+ value = (value << 4) | (ch <= 57 ? ch - 48 : (ch & 0x5f) - 55)
1836
+ i++
1837
+ }
1838
+ if (i < end && host.charCodeAt(i) === 46) {
1839
+ w3 = parseNativeIpv4(host, start, end)
1840
+ break
1841
+ }
1842
+ // even segments fill the high half of their 32-bit word
1843
+ const shifted = value << ((1 - (segment & 1)) * 16)
1844
+ switch (segment >>> 1) {
1845
+ case 0:
1846
+ w0 |= shifted
1847
+ break
1848
+ case 1:
1849
+ w1 |= shifted
1850
+ break
1851
+ case 2:
1852
+ w2 |= shifted
1853
+ break
1854
+ default:
1855
+ w3 |= shifted
1856
+ }
1857
+ segment++
1858
+ if (i < end && host.charCodeAt(i + 1) !== 58) i++
1859
+ }
1860
+ const self = Object.create(InetV6Proto)
1861
+ self.address = makeIpv6(w0, w1, w2, w3)
1862
+ self.port = port
1863
+ self.scopeId = scopeId
1864
+ return Object.freeze(self)
1865
+ }
1866
+
1867
+ const numericZone = /^\d+$/
1868
+
1869
+ const parseNativeIpv4 = (host: string, start: number, end: number): number => {
1870
+ let value = 0
1871
+ let octet = 0
1872
+ for (let i = start; i < end; i++) {
1873
+ const ch = host.charCodeAt(i)
1874
+ if (ch === 46) {
1875
+ value = (value << 8) | octet
1876
+ octet = 0
1877
+ } else {
1878
+ octet = octet * 10 + ch - 48
1879
+ }
1880
+ }
1881
+ return ((value << 8) | octet) >>> 0
1882
+ }
1883
+
1399
1884
  /**
1400
1885
  * Parses an unbracketed numeric host and port, resolving named IPv6 zones using
1401
1886
  * a supplied map of interface names to numeric scope IDs.
@@ -1443,7 +1928,33 @@ export const inetAddressFromHostString = (
1443
1928
  */
1444
1929
  export interface NetworkInterfaceAddress {
1445
1930
  readonly family: string
1446
- readonly scopeid?: number | undefined
1931
+ readonly scopeid?: number | null | undefined
1932
+ }
1933
+
1934
+ /**
1935
+ * Returns the IPv6 scope ID of a network interface from its addresses.
1936
+ *
1937
+ * **Details**
1938
+ *
1939
+ * The first IPv6 address with a positive scope ID supplies the result. Accepts
1940
+ * the addresses of one interface, such as `os.networkInterfaces()[name]` or the
1941
+ * entries of `Deno.networkInterfaces()` with that name, without performing any
1942
+ * operating-system lookup itself.
1943
+ *
1944
+ * @see {@link scopeIdsFromInterfaces} for mapping every interface at once
1945
+ * @stability experimental
1946
+ * @category converting
1947
+ * @since 4.0.0
1948
+ */
1949
+ export const scopeIdFromInterface = (
1950
+ addresses: ReadonlyArray<NetworkInterfaceAddress> | undefined
1951
+ ): Option.Option<number> => {
1952
+ for (const address of addresses ?? []) {
1953
+ if (address.family === "IPv6" && typeof address.scopeid === "number" && address.scopeid > 0) {
1954
+ return Option.some(address.scopeid)
1955
+ }
1956
+ }
1957
+ return Option.none()
1447
1958
  }
1448
1959
 
1449
1960
  /**
@@ -1468,8 +1979,8 @@ export const scopeIdsFromInterfaces = (
1468
1979
  ): Map<string, number> => {
1469
1980
  const scopeIds = new Map<string, number>()
1470
1981
  for (const [name, addresses] of interfaces) {
1471
- const address = addresses?.find((address) => address.family === "IPv6" && (address.scopeid ?? 0) > 0)
1472
- if (address?.scopeid !== undefined) scopeIds.set(name, address.scopeid)
1982
+ const scopeId = scopeIdFromInterface(addresses)
1983
+ if (Option.isSome(scopeId)) scopeIds.set(name, scopeId.value)
1473
1984
  }
1474
1985
  return scopeIds
1475
1986
  }
@@ -1539,6 +2050,40 @@ export const inetAddressFromString = (input: string): Result.Result<InetAddress,
1539
2050
  export const inetAddressFromStringUnsafe = (input: string): InetAddress =>
1540
2051
  Result.getOrThrow(inetAddressFromString(input))
1541
2052
 
2053
+ /**
2054
+ * Converts an `InetAddressInput` to an internet address, parsing strings like
2055
+ * `inetAddressFromString`, converting parts like `inetAddressV4` and
2056
+ * `inetAddressV6`, and returning internet addresses unchanged.
2057
+ *
2058
+ * @stability unstable
2059
+ * @category constructors
2060
+ * @since 4.0.0
2061
+ */
2062
+ export const inetAddressFromInput = (input: InetAddressInput): Result.Result<InetAddress, NetAddressError> => {
2063
+ if (isInetAddress(input)) return Result.succeed(input)
2064
+ if (typeof input === "string") return inetAddressFromString(input)
2065
+ if (!hasProperty(input, "address") || !hasProperty(input, "port")) {
2066
+ return addressError(input, "expected an address and port")
2067
+ }
2068
+ const { port, scopeId } = input
2069
+ return Result.flatMap(ipFromInput(input.address), (address): Result.Result<InetAddress, NetAddressError> => {
2070
+ if (isIpv6Address(address)) return inetAddressV6(address, port, { scopeId })
2071
+ return (scopeId ?? 0) === 0
2072
+ ? inetAddressV4(address, port)
2073
+ : addressError(input, "scopeId requires an IPv6 address")
2074
+ })
2075
+ }
2076
+
2077
+ /**
2078
+ * Converts a trusted `InetAddressInput` to an internet address, throwing on failure.
2079
+ *
2080
+ * @stability unstable
2081
+ * @category unsafe
2082
+ * @since 4.0.0
2083
+ */
2084
+ export const inetAddressFromInputUnsafe = (input: InetAddressInput): InetAddress =>
2085
+ Result.getOrThrow(inetAddressFromInput(input))
2086
+
1542
2087
  /**
1543
2088
  * Formats the numeric host of an internet address without brackets or a port,
1544
2089
  * preserving a nonzero IPv6 scope ID as a `%` suffix.
@@ -1722,6 +2267,7 @@ export const formatUrlHostString = (host: string): string =>
1722
2267
  host.includes(":") && !host.startsWith("[") ? `[${host}]` : host
1723
2268
 
1724
2269
  const UnixPathProto = {
2270
+ ...Inspectable.BaseProto,
1725
2271
  _tag: "UnixPathAddress",
1726
2272
  [TypeId]: TypeId,
1727
2273
  [Equal.symbol](this: UnixPathAddress, that: Equal.Equal): boolean {
@@ -1735,9 +2281,6 @@ const UnixPathProto = {
1735
2281
  },
1736
2282
  toJSON(this: UnixPathAddress): string {
1737
2283
  return this.toString()
1738
- },
1739
- [NodeInspectSymbol](this: UnixPathAddress): string {
1740
- return this.toJSON()
1741
2284
  }
1742
2285
  }
1743
2286
 
@@ -1773,8 +2316,9 @@ export const formatUnixPath = (self: UnixPathAddress): string => `unix://${self.
1773
2316
  *
1774
2317
  * **Details**
1775
2318
  *
1776
- * Numeric IP strings are parsed without hostname resolution. Invalid IP
1777
- * literals, ports, and input shapes return a `NetAddressError`.
2319
+ * Internet addresses are converted like `inetAddressFromInput`, without
2320
+ * hostname resolution. Invalid IP literals, ports, and input shapes return a
2321
+ * `NetAddressError`.
1778
2322
  *
1779
2323
  * @stability unstable
1780
2324
  * @category constructors
@@ -1783,22 +2327,13 @@ export const formatUnixPath = (self: UnixPathAddress): string => `unix://${self.
1783
2327
  export const socketAddressFromInput = (
1784
2328
  input: SocketAddress.Input
1785
2329
  ): Result.Result<SocketAddress, NetAddressError> => {
1786
- if (isSocketAddress(input)) return Result.succeed(input)
1787
- if (typeof input === "string") return inetAddressFromString(input)
2330
+ if (isUnixPathAddress(input)) return Result.succeed(input)
1788
2331
  if (hasProperty(input, "path")) {
1789
2332
  return typeof input.path === "string"
1790
2333
  ? Result.succeed(unixPathAddress(input.path))
1791
2334
  : addressError(input, "path must be a string")
1792
2335
  }
1793
- if (!hasProperty(input, "address") || !hasProperty(input, "port")) {
1794
- return addressError(input, "expected an address and port or a Unix path")
1795
- }
1796
- const address = typeof input.address === "string"
1797
- ? ipFromString(input.address)
1798
- : isIpAddress(input.address)
1799
- ? Result.succeed(input.address)
1800
- : addressError(input, "address must be an IP address or numeric IP string")
1801
- return Result.flatMap(address, (address) => inetAddress(address, input.port as number))
2336
+ return inetAddressFromInput(input)
1802
2337
  }
1803
2338
 
1804
2339
  /**