effect 4.0.2 → 4.0.4

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 (389) hide show
  1. package/AGENTS.md +24 -0
  2. package/CLAUDE.md +24 -0
  3. package/ai-docs/package.json +2 -2
  4. package/ai-docs/src/52_graphql/10_basics.ts +111 -0
  5. package/ai-docs/src/52_graphql/20_testing.ts +45 -0
  6. package/ai-docs/src/52_graphql/30_batching.ts +116 -0
  7. package/ai-docs/src/52_graphql/40_aliased-batching.ts +122 -0
  8. package/ai-docs/src/52_graphql/50_errors-and-retries.ts +74 -0
  9. package/ai-docs/src/52_graphql/index.md +6 -0
  10. package/dist/Context.d.ts.map +1 -1
  11. package/dist/Context.js +12 -3
  12. package/dist/Context.js.map +1 -1
  13. package/dist/Crypto.d.ts +33 -5
  14. package/dist/Crypto.d.ts.map +1 -1
  15. package/dist/Crypto.js +8 -2
  16. package/dist/Crypto.js.map +1 -1
  17. package/dist/DateTime.d.ts +9 -6
  18. package/dist/DateTime.d.ts.map +1 -1
  19. package/dist/DateTime.js +9 -6
  20. package/dist/DateTime.js.map +1 -1
  21. package/dist/Duration.d.ts +6 -6
  22. package/dist/Duration.d.ts.map +1 -1
  23. package/dist/Duration.js +27 -8
  24. package/dist/Duration.js.map +1 -1
  25. package/dist/FileSystem.d.ts +44 -2
  26. package/dist/FileSystem.d.ts.map +1 -1
  27. package/dist/FileSystem.js.map +1 -1
  28. package/dist/RequestResolver.d.ts.map +1 -1
  29. package/dist/RequestResolver.js +4 -10
  30. package/dist/RequestResolver.js.map +1 -1
  31. package/dist/Scheduler.d.ts +9 -0
  32. package/dist/Scheduler.d.ts.map +1 -1
  33. package/dist/Scheduler.js +9 -0
  34. package/dist/Scheduler.js.map +1 -1
  35. package/dist/Schema.d.ts +481 -1
  36. package/dist/Schema.d.ts.map +1 -1
  37. package/dist/Schema.js +362 -4
  38. package/dist/Schema.js.map +1 -1
  39. package/dist/SchemaGetter.d.ts +4 -0
  40. package/dist/SchemaGetter.d.ts.map +1 -1
  41. package/dist/SchemaGetter.js +52 -33
  42. package/dist/SchemaGetter.js.map +1 -1
  43. package/dist/Sink.d.ts.map +1 -1
  44. package/dist/Sink.js +38 -17
  45. package/dist/Sink.js.map +1 -1
  46. package/dist/Stdio.d.ts +7 -1
  47. package/dist/Stdio.d.ts.map +1 -1
  48. package/dist/Stdio.js +1 -0
  49. package/dist/Stdio.js.map +1 -1
  50. package/dist/Stream.d.ts +22 -11
  51. package/dist/Stream.d.ts.map +1 -1
  52. package/dist/Stream.js +21 -6
  53. package/dist/Stream.js.map +1 -1
  54. package/dist/Utils.js +8 -3
  55. package/dist/Utils.js.map +1 -1
  56. package/dist/ai/AnthropicStructuredOutput.js +0 -2
  57. package/dist/ai/AnthropicStructuredOutput.js.map +1 -1
  58. package/dist/ai/Chat.d.ts +2 -2
  59. package/dist/ai/Chat.d.ts.map +1 -1
  60. package/dist/ai/LanguageModel.d.ts +38 -7
  61. package/dist/ai/LanguageModel.d.ts.map +1 -1
  62. package/dist/ai/LanguageModel.js +25 -7
  63. package/dist/ai/LanguageModel.js.map +1 -1
  64. package/dist/ai/McpServer.d.ts +61 -0
  65. package/dist/ai/McpServer.d.ts.map +1 -1
  66. package/dist/ai/McpServer.js +196 -44
  67. package/dist/ai/McpServer.js.map +1 -1
  68. package/dist/ai/Prompt.d.ts.map +1 -1
  69. package/dist/ai/Prompt.js +28 -5
  70. package/dist/ai/Prompt.js.map +1 -1
  71. package/dist/ai/Response.d.ts +4 -3
  72. package/dist/ai/Response.d.ts.map +1 -1
  73. package/dist/ai/Response.js.map +1 -1
  74. package/dist/ai/internal/mcpProtocol/v2026_07_28.js +5 -0
  75. package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
  76. package/dist/ai/internal/mcpProtocol.js.map +1 -1
  77. package/dist/ai/internal/mcpRuntime.js +1 -0
  78. package/dist/ai/internal/mcpRuntime.js.map +1 -1
  79. package/dist/cli/CliOutput.d.ts +27 -0
  80. package/dist/cli/CliOutput.d.ts.map +1 -1
  81. package/dist/cli/CliOutput.js +33 -10
  82. package/dist/cli/CliOutput.js.map +1 -1
  83. package/dist/cli/Command.d.ts.map +1 -1
  84. package/dist/cli/Command.js +6 -3
  85. package/dist/cli/Command.js.map +1 -1
  86. package/dist/cli/Completions.d.ts +3 -3
  87. package/dist/cli/Completions.d.ts.map +1 -1
  88. package/dist/cli/Completions.js +8 -5
  89. package/dist/cli/Completions.js.map +1 -1
  90. package/dist/cli/GlobalFlag.d.ts +5 -4
  91. package/dist/cli/GlobalFlag.d.ts.map +1 -1
  92. package/dist/cli/GlobalFlag.js +3 -3
  93. package/dist/cli/GlobalFlag.js.map +1 -1
  94. package/dist/cli/Prompt.d.ts +17 -1
  95. package/dist/cli/Prompt.d.ts.map +1 -1
  96. package/dist/cli/Prompt.js +119 -114
  97. package/dist/cli/Prompt.js.map +1 -1
  98. package/dist/cli/internal/ansi.d.ts +0 -1
  99. package/dist/cli/internal/ansi.d.ts.map +1 -1
  100. package/dist/cli/internal/ansi.js +20 -3
  101. package/dist/cli/internal/ansi.js.map +1 -1
  102. package/dist/cli/internal/completions/powershell.d.ts +2 -0
  103. package/dist/cli/internal/completions/powershell.d.ts.map +1 -0
  104. package/dist/cli/internal/completions/powershell.js +273 -0
  105. package/dist/cli/internal/completions/powershell.js.map +1 -0
  106. package/dist/cli/internal/completions/zsh.js +3 -2
  107. package/dist/cli/internal/completions/zsh.js.map +1 -1
  108. package/dist/cli/internal/wizard.d.ts +3 -3
  109. package/dist/cli/internal/wizard.d.ts.map +1 -1
  110. package/dist/cli/internal/wizard.js +21 -18
  111. package/dist/cli/internal/wizard.js.map +1 -1
  112. package/dist/cluster/ClusterSchema.d.ts +28 -0
  113. package/dist/cluster/ClusterSchema.d.ts.map +1 -1
  114. package/dist/cluster/ClusterSchema.js +30 -0
  115. package/dist/cluster/ClusterSchema.js.map +1 -1
  116. package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  117. package/dist/cluster/ClusterWorkflowEngine.js +56 -26
  118. package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
  119. package/dist/cluster/MessageStorage.d.ts +18 -3
  120. package/dist/cluster/MessageStorage.d.ts.map +1 -1
  121. package/dist/cluster/MessageStorage.js +31 -11
  122. package/dist/cluster/MessageStorage.js.map +1 -1
  123. package/dist/cluster/Runners.d.ts.map +1 -1
  124. package/dist/cluster/Runners.js +8 -2
  125. package/dist/cluster/Runners.js.map +1 -1
  126. package/dist/cluster/Sharding.d.ts.map +1 -1
  127. package/dist/cluster/Sharding.js +187 -66
  128. package/dist/cluster/Sharding.js.map +1 -1
  129. package/dist/cluster/SqlMessageStorage.d.ts +59 -19
  130. package/dist/cluster/SqlMessageStorage.d.ts.map +1 -1
  131. package/dist/cluster/SqlMessageStorage.js +84 -55
  132. package/dist/cluster/SqlMessageStorage.js.map +1 -1
  133. package/dist/cluster/SqlRunnerStorage.d.ts +68 -19
  134. package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
  135. package/dist/cluster/SqlRunnerStorage.js +191 -113
  136. package/dist/cluster/SqlRunnerStorage.js.map +1 -1
  137. package/dist/cluster/internal/entityManager.js +104 -37
  138. package/dist/cluster/internal/entityManager.js.map +1 -1
  139. package/dist/encoding/Sse.d.ts +6 -0
  140. package/dist/encoding/Sse.d.ts.map +1 -1
  141. package/dist/encoding/Sse.js +62 -70
  142. package/dist/encoding/Sse.js.map +1 -1
  143. package/dist/graphql/GraphQL.d.ts +349 -0
  144. package/dist/graphql/GraphQL.d.ts.map +1 -0
  145. package/dist/graphql/GraphQL.js +207 -0
  146. package/dist/graphql/GraphQL.js.map +1 -0
  147. package/dist/graphql/GraphQLClient.d.ts +562 -0
  148. package/dist/graphql/GraphQLClient.d.ts.map +1 -0
  149. package/dist/graphql/GraphQLClient.js +498 -0
  150. package/dist/graphql/GraphQLClient.js.map +1 -0
  151. package/dist/graphql/GraphQLClientError.d.ts +445 -0
  152. package/dist/graphql/GraphQLClientError.d.ts.map +1 -0
  153. package/dist/graphql/GraphQLClientError.js +479 -0
  154. package/dist/graphql/GraphQLClientError.js.map +1 -0
  155. package/dist/graphql/GraphQLGroup.d.ts +118 -0
  156. package/dist/graphql/GraphQLGroup.d.ts.map +1 -0
  157. package/dist/graphql/GraphQLGroup.js +109 -0
  158. package/dist/graphql/GraphQLGroup.js.map +1 -0
  159. package/dist/graphql/GraphQLMiddleware.d.ts +249 -0
  160. package/dist/graphql/GraphQLMiddleware.d.ts.map +1 -0
  161. package/dist/graphql/GraphQLMiddleware.js +130 -0
  162. package/dist/graphql/GraphQLMiddleware.js.map +1 -0
  163. package/dist/graphql/GraphQLProtocol.d.ts +731 -0
  164. package/dist/graphql/GraphQLProtocol.d.ts.map +1 -0
  165. package/dist/graphql/GraphQLProtocol.js +719 -0
  166. package/dist/graphql/GraphQLProtocol.js.map +1 -0
  167. package/dist/graphql/GraphQLResolver.d.ts +453 -0
  168. package/dist/graphql/GraphQLResolver.d.ts.map +1 -0
  169. package/dist/graphql/GraphQLResolver.js +552 -0
  170. package/dist/graphql/GraphQLResolver.js.map +1 -0
  171. package/dist/graphql/index.d.ts +40 -0
  172. package/dist/graphql/index.d.ts.map +1 -0
  173. package/dist/graphql/index.js +41 -0
  174. package/dist/graphql/index.js.map +1 -0
  175. package/dist/http/FindMyWay/internal/router.js +3 -6
  176. package/dist/http/FindMyWay/internal/router.js.map +1 -1
  177. package/dist/http/HttpClient.d.ts +21 -0
  178. package/dist/http/HttpClient.d.ts.map +1 -1
  179. package/dist/http/HttpClient.js +63 -12
  180. package/dist/http/HttpClient.js.map +1 -1
  181. package/dist/http/HttpEffect.d.ts.map +1 -1
  182. package/dist/http/HttpEffect.js +14 -7
  183. package/dist/http/HttpEffect.js.map +1 -1
  184. package/dist/http/HttpMiddleware.d.ts.map +1 -1
  185. package/dist/http/HttpMiddleware.js +31 -32
  186. package/dist/http/HttpMiddleware.js.map +1 -1
  187. package/dist/http/HttpRouter.d.ts +35 -0
  188. package/dist/http/HttpRouter.d.ts.map +1 -1
  189. package/dist/http/HttpRouter.js +35 -0
  190. package/dist/http/HttpRouter.js.map +1 -1
  191. package/dist/http/HttpServerResponse.d.ts +8 -6
  192. package/dist/http/HttpServerResponse.d.ts.map +1 -1
  193. package/dist/http/HttpServerResponse.js +27 -16
  194. package/dist/http/HttpServerResponse.js.map +1 -1
  195. package/dist/http/HttpTraceContext.d.ts.map +1 -1
  196. package/dist/http/HttpTraceContext.js +4 -2
  197. package/dist/http/HttpTraceContext.js.map +1 -1
  198. package/dist/http/Multipart.d.ts.map +1 -1
  199. package/dist/http/Multipart.js +15 -1
  200. package/dist/http/Multipart.js.map +1 -1
  201. package/dist/http-api/HttpApiScalar.d.ts +5 -0
  202. package/dist/http-api/HttpApiScalar.d.ts.map +1 -1
  203. package/dist/http-api/HttpApiScalar.js.map +1 -1
  204. package/dist/internal/dateTime.js +40 -35
  205. package/dist/internal/dateTime.js.map +1 -1
  206. package/dist/internal/effect.js +19 -9
  207. package/dist/internal/effect.js.map +1 -1
  208. package/dist/internal/graphql.d.ts +2 -0
  209. package/dist/internal/graphql.d.ts.map +1 -0
  210. package/dist/internal/graphql.js +195 -0
  211. package/dist/internal/graphql.js.map +1 -0
  212. package/dist/internal/graphqlHeaders.d.ts +4 -0
  213. package/dist/internal/graphqlHeaders.d.ts.map +1 -0
  214. package/dist/internal/graphqlHeaders.js +11 -0
  215. package/dist/internal/graphqlHeaders.js.map +1 -0
  216. package/dist/internal/request.js +20 -1
  217. package/dist/internal/request.js.map +1 -1
  218. package/dist/internal/schema/toCodeDocument.js +4 -1
  219. package/dist/internal/schema/toCodeDocument.js.map +1 -1
  220. package/dist/internal/schema/toJsonSchemaDocument.js +29 -5
  221. package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -1
  222. package/dist/internal/version.js +1 -1
  223. package/dist/net/AddressResolver.d.ts +145 -0
  224. package/dist/net/AddressResolver.d.ts.map +1 -0
  225. package/dist/net/AddressResolver.js +114 -0
  226. package/dist/net/AddressResolver.js.map +1 -0
  227. package/dist/net/Dns.d.ts +596 -0
  228. package/dist/net/Dns.d.ts.map +1 -0
  229. package/dist/net/Dns.js +549 -0
  230. package/dist/net/Dns.js.map +1 -0
  231. package/dist/net/Host.d.ts +369 -0
  232. package/dist/net/Host.d.ts.map +1 -0
  233. package/dist/net/Host.js +397 -0
  234. package/dist/net/Host.js.map +1 -0
  235. package/dist/net/IpInterface.d.ts +76 -3
  236. package/dist/net/IpInterface.d.ts.map +1 -1
  237. package/dist/net/IpInterface.js +53 -4
  238. package/dist/net/IpInterface.js.map +1 -1
  239. package/dist/net/IpNetwork.d.ts +82 -8
  240. package/dist/net/IpNetwork.d.ts.map +1 -1
  241. package/dist/net/IpNetwork.js +60 -4
  242. package/dist/net/IpNetwork.js.map +1 -1
  243. package/dist/net/NetAddress.d.ts +396 -35
  244. package/dist/net/NetAddress.d.ts.map +1 -1
  245. package/dist/net/NetAddress.js +358 -34
  246. package/dist/net/NetAddress.js.map +1 -1
  247. package/dist/net/index.d.ts +15 -0
  248. package/dist/net/index.d.ts.map +1 -1
  249. package/dist/net/index.js +15 -0
  250. package/dist/net/index.js.map +1 -1
  251. package/dist/observability/OtlpMetrics.d.ts.map +1 -1
  252. package/dist/observability/OtlpMetrics.js +15 -21
  253. package/dist/observability/OtlpMetrics.js.map +1 -1
  254. package/dist/observability/PrometheusMetrics.js +1 -0
  255. package/dist/observability/PrometheusMetrics.js.map +1 -1
  256. package/dist/persistence/PersistedQueue.d.ts +32 -3
  257. package/dist/persistence/PersistedQueue.d.ts.map +1 -1
  258. package/dist/persistence/PersistedQueue.js +75 -16
  259. package/dist/persistence/PersistedQueue.js.map +1 -1
  260. package/dist/rpc/RpcClient.d.ts +22 -6
  261. package/dist/rpc/RpcClient.d.ts.map +1 -1
  262. package/dist/rpc/RpcClient.js +12 -5
  263. package/dist/rpc/RpcClient.js.map +1 -1
  264. package/dist/rpc/RpcServer.d.ts +6 -0
  265. package/dist/rpc/RpcServer.d.ts.map +1 -1
  266. package/dist/rpc/RpcServer.js +78 -29
  267. package/dist/rpc/RpcServer.js.map +1 -1
  268. package/dist/socket/DatagramSocket.d.ts +456 -0
  269. package/dist/socket/DatagramSocket.d.ts.map +1 -0
  270. package/dist/socket/DatagramSocket.js +535 -0
  271. package/dist/socket/DatagramSocket.js.map +1 -0
  272. package/dist/socket/Socket.d.ts +20 -1
  273. package/dist/socket/Socket.d.ts.map +1 -1
  274. package/dist/socket/Socket.js +9 -1
  275. package/dist/socket/Socket.js.map +1 -1
  276. package/dist/socket/index.d.ts +5 -0
  277. package/dist/socket/index.d.ts.map +1 -1
  278. package/dist/socket/index.js +5 -0
  279. package/dist/socket/index.js.map +1 -1
  280. package/dist/sql/Migrator.d.ts.map +1 -1
  281. package/dist/sql/Migrator.js +7 -2
  282. package/dist/sql/Migrator.js.map +1 -1
  283. package/dist/sql/SqlClient.d.ts +7 -1
  284. package/dist/sql/SqlClient.d.ts.map +1 -1
  285. package/dist/sql/SqlClient.js +31 -6
  286. package/dist/sql/SqlClient.js.map +1 -1
  287. package/dist/testing/TestCrypto.d.ts +73 -0
  288. package/dist/testing/TestCrypto.d.ts.map +1 -0
  289. package/dist/testing/TestCrypto.js +87 -0
  290. package/dist/testing/TestCrypto.js.map +1 -0
  291. package/dist/testing/index.d.ts +5 -0
  292. package/dist/testing/index.d.ts.map +1 -1
  293. package/dist/testing/index.js +5 -0
  294. package/dist/testing/index.js.map +1 -1
  295. package/dist/workflow/DurableDeferred.d.ts +54 -0
  296. package/dist/workflow/DurableDeferred.d.ts.map +1 -1
  297. package/dist/workflow/DurableDeferred.js +108 -50
  298. package/dist/workflow/DurableDeferred.js.map +1 -1
  299. package/dist/workflow/WorkflowEngine.d.ts +24 -2
  300. package/dist/workflow/WorkflowEngine.d.ts.map +1 -1
  301. package/dist/workflow/WorkflowEngine.js +13 -3
  302. package/dist/workflow/WorkflowEngine.js.map +1 -1
  303. package/package.json +6 -3
  304. package/src/Context.ts +12 -3
  305. package/src/Crypto.ts +43 -9
  306. package/src/DateTime.ts +9 -6
  307. package/src/Duration.ts +36 -16
  308. package/src/FileSystem.ts +48 -2
  309. package/src/RequestResolver.ts +4 -10
  310. package/src/Scheduler.ts +9 -0
  311. package/src/Schema.ts +677 -5
  312. package/src/SchemaGetter.ts +47 -35
  313. package/src/Sink.ts +45 -18
  314. package/src/Stdio.ts +9 -2
  315. package/src/Stream.ts +44 -15
  316. package/src/Utils.ts +8 -5
  317. package/src/ai/AnthropicStructuredOutput.ts +2 -2
  318. package/src/ai/Chat.ts +2 -2
  319. package/src/ai/LanguageModel.ts +96 -24
  320. package/src/ai/McpServer.ts +288 -94
  321. package/src/ai/Prompt.ts +24 -10
  322. package/src/ai/Response.ts +6 -3
  323. package/src/ai/internal/mcpProtocol/v2026_07_28.ts +5 -0
  324. package/src/ai/internal/mcpProtocol.ts +3 -0
  325. package/src/ai/internal/mcpRuntime.ts +2 -0
  326. package/src/cli/CliOutput.ts +33 -16
  327. package/src/cli/Command.ts +4 -3
  328. package/src/cli/Completions.ts +9 -6
  329. package/src/cli/GlobalFlag.ts +19 -11
  330. package/src/cli/Prompt.ts +159 -149
  331. package/src/cli/internal/ansi.ts +26 -3
  332. package/src/cli/internal/completions/powershell.ts +322 -0
  333. package/src/cli/internal/completions/zsh.ts +4 -2
  334. package/src/cli/internal/wizard.ts +34 -26
  335. package/src/cluster/ClusterSchema.ts +32 -0
  336. package/src/cluster/ClusterWorkflowEngine.ts +64 -36
  337. package/src/cluster/MessageStorage.ts +45 -14
  338. package/src/cluster/Runners.ts +8 -2
  339. package/src/cluster/Sharding.ts +219 -58
  340. package/src/cluster/SqlMessageStorage.ts +118 -84
  341. package/src/cluster/SqlRunnerStorage.ts +224 -128
  342. package/src/cluster/internal/entityManager.ts +151 -55
  343. package/src/encoding/Sse.ts +69 -79
  344. package/src/graphql/GraphQL.ts +494 -0
  345. package/src/graphql/GraphQLClient.ts +912 -0
  346. package/src/graphql/GraphQLClientError.ts +542 -0
  347. package/src/graphql/GraphQLGroup.ts +167 -0
  348. package/src/graphql/GraphQLMiddleware.ts +253 -0
  349. package/src/graphql/GraphQLProtocol.ts +1286 -0
  350. package/src/graphql/GraphQLResolver.ts +1010 -0
  351. package/src/graphql/index.ts +48 -0
  352. package/src/http/FindMyWay/internal/router.ts +4 -7
  353. package/src/http/HttpClient.ts +110 -12
  354. package/src/http/HttpEffect.ts +11 -5
  355. package/src/http/HttpMiddleware.ts +33 -34
  356. package/src/http/HttpRouter.ts +35 -0
  357. package/src/http/HttpServerResponse.ts +28 -16
  358. package/src/http/HttpTraceContext.ts +8 -2
  359. package/src/http/Multipart.ts +17 -1
  360. package/src/http-api/HttpApiScalar.ts +5 -0
  361. package/src/internal/dateTime.ts +13 -10
  362. package/src/internal/effect.ts +22 -15
  363. package/src/internal/graphql.ts +263 -0
  364. package/src/internal/graphqlHeaders.ts +11 -0
  365. package/src/internal/request.ts +31 -3
  366. package/src/internal/schema/toCodeDocument.ts +7 -1
  367. package/src/internal/schema/toJsonSchemaDocument.ts +34 -2
  368. package/src/internal/version.ts +1 -1
  369. package/src/net/AddressResolver.ts +222 -0
  370. package/src/net/Dns.ts +1035 -0
  371. package/src/net/Host.ts +544 -0
  372. package/src/net/IpInterface.ts +117 -7
  373. package/src/net/IpNetwork.ts +116 -17
  374. package/src/net/NetAddress.ts +620 -76
  375. package/src/net/index.ts +18 -0
  376. package/src/observability/OtlpMetrics.ts +12 -23
  377. package/src/observability/PrometheusMetrics.ts +1 -0
  378. package/src/persistence/PersistedQueue.ts +146 -53
  379. package/src/rpc/RpcClient.ts +41 -19
  380. package/src/rpc/RpcServer.ts +115 -40
  381. package/src/socket/DatagramSocket.ts +919 -0
  382. package/src/socket/Socket.ts +28 -2
  383. package/src/socket/index.ts +6 -0
  384. package/src/sql/Migrator.ts +21 -5
  385. package/src/sql/SqlClient.ts +39 -15
  386. package/src/testing/TestCrypto.ts +94 -0
  387. package/src/testing/index.ts +6 -0
  388. package/src/workflow/DurableDeferred.ts +160 -47
  389. package/src/workflow/WorkflowEngine.ts +50 -5
@@ -0,0 +1,397 @@
1
+ import * as Equal from "../Equal.js";
2
+ import * as Hash from "../Hash.js";
3
+ import * as Inspectable from "../Inspectable.js";
4
+ import { hasProperty } from "../Predicate.js";
5
+ import * as Result from "../Result.js";
6
+ import * as NetAddress from "./NetAddress.js";
7
+ const TypeId = "~effect/net/Host";
8
+ const hostError = (input, message) => Result.fail(new NetAddress.NetAddressError({
9
+ input,
10
+ message
11
+ }));
12
+ const asciiNameCharacter = /^[a-z0-9_.-]$/i;
13
+ const labelPattern = /^[a-z0-9_](?:[a-z0-9_-]{0,61}[a-z0-9_])?$/;
14
+ const numericLabel = /^(?:\d+|0x[0-9a-f]*)$/;
15
+ const validateDomainName = name => {
16
+ if (name === ".") return undefined;
17
+ const relative = name.endsWith(".") ? name.slice(0, -1) : name;
18
+ if (relative.length === 0) return "domain name must not be empty";
19
+ if (relative.length > 253) return "domain name must be at most 253 characters";
20
+ const labels = relative.split(".");
21
+ for (const label of labels) {
22
+ if (label.length === 0) return "domain name labels must not be empty";
23
+ if (label.length > 63) return "domain name labels must be at most 63 characters";
24
+ if (!labelPattern.test(label)) {
25
+ return "domain name labels must contain only letters, digits, hyphens, or underscores and must not start or end with a hyphen";
26
+ }
27
+ }
28
+ if (numericLabel.test(labels[labels.length - 1])) {
29
+ return "the last domain name label must not be numeric";
30
+ }
31
+ return undefined;
32
+ };
33
+ const toAsciiDomainName = input => {
34
+ let ascii = true;
35
+ for (const character of input) {
36
+ if (character.charCodeAt(0) < 0x80) {
37
+ if (!asciiNameCharacter.test(character)) return undefined;
38
+ } else {
39
+ ascii = false;
40
+ }
41
+ }
42
+ if (ascii) return input.toLowerCase();
43
+ try {
44
+ return new URL(`http://${input}`).hostname;
45
+ } catch {
46
+ return undefined;
47
+ }
48
+ };
49
+ /**
50
+ * Returns `true` when a value is a valid, normalized domain name.
51
+ *
52
+ * @stability experimental
53
+ * @category guards
54
+ * @since 4.0.0
55
+ */
56
+ export const isDomainName = u => typeof u === "string" && /^[a-z0-9_.-]+$/.test(u) && validateDomainName(u) === undefined;
57
+ /**
58
+ * Returns `true` when a value is a host.
59
+ *
60
+ * @stability experimental
61
+ * @category guards
62
+ * @since 4.0.0
63
+ */
64
+ export const isHost = u => NetAddress.isIpAddress(u) || NetAddress.isScopedIpv6Literal(u) || isDomainName(u);
65
+ /**
66
+ * Returns `true` when a value is an unresolved host and port.
67
+ *
68
+ * @stability experimental
69
+ * @category guards
70
+ * @since 4.0.0
71
+ */
72
+ export const isHostPort = u => hasProperty(u, TypeId);
73
+ /**
74
+ * Parses and normalizes a domain name.
75
+ *
76
+ * **Details**
77
+ *
78
+ * ASCII names are lowercased. Names containing non-ASCII characters are
79
+ * converted to their ASCII (`xn--`) form using the WHATWG URL host parser, then
80
+ * validated with the same rules as ASCII names. A trailing dot is preserved.
81
+ *
82
+ * **Example** (Normalizing domain names)
83
+ *
84
+ * ```ts import.meta.vitest
85
+ * import { Result } from "effect"
86
+ * import { Host } from "effect/net"
87
+ *
88
+ * Result.getOrThrow(Host.domainNameFromString("Example.COM")) // => "example.com"
89
+ * Result.getOrThrow(Host.domainNameFromString("bücher.example")) // => "xn--bcher-kva.example"
90
+ * Result.isFailure(Host.domainNameFromString("1.2.3.4")) // => true
91
+ * ```
92
+ *
93
+ * @stability experimental
94
+ * @category decoding
95
+ * @since 4.0.0
96
+ */
97
+ export const domainNameFromString = input => {
98
+ const name = toAsciiDomainName(input);
99
+ if (name === undefined) return hostError(input, "invalid domain name");
100
+ const error = validateDomainName(name);
101
+ return error === undefined ? Result.succeed(name) : hostError(input, error);
102
+ };
103
+ /**
104
+ * Parses a trusted domain name, throwing on failure.
105
+ *
106
+ * @stability experimental
107
+ * @category unsafe
108
+ * @since 4.0.0
109
+ */
110
+ export const domainNameFromStringUnsafe = input => Result.getOrThrow(domainNameFromString(input));
111
+ /**
112
+ * Converts a `DomainNameInput` to a domain name, parsing and normalizing it like
113
+ * `domainNameFromString`.
114
+ *
115
+ * **Details**
116
+ *
117
+ * Domain names are strings, so every input is parsed.
118
+ *
119
+ * @stability experimental
120
+ * @category constructors
121
+ * @since 4.0.0
122
+ */
123
+ export const domainNameFromInput = input => domainNameFromString(input);
124
+ /**
125
+ * Converts a trusted `DomainNameInput` to a domain name, throwing on failure.
126
+ *
127
+ * @stability experimental
128
+ * @category unsafe
129
+ * @since 4.0.0
130
+ */
131
+ export const domainNameFromInputUnsafe = input => Result.getOrThrow(domainNameFromInput(input));
132
+ /**
133
+ * Parses a host as a numeric IP address, a scoped IPv6 literal, or a domain
134
+ * name, in that order.
135
+ *
136
+ * **Example** (Parsing hosts)
137
+ *
138
+ * ```ts import.meta.vitest
139
+ * import { Result } from "effect"
140
+ * import { Host, NetAddress } from "effect/net"
141
+ *
142
+ * NetAddress.isIpAddress(Result.getOrThrow(Host.hostFromString("10.0.0.5"))) // => true
143
+ * Result.getOrThrow(Host.hostFromString("fe80::1%eth0")) // => "fe80::1%eth0"
144
+ * Result.getOrThrow(Host.hostFromString("DB.internal")) // => "db.internal"
145
+ * ```
146
+ *
147
+ * @stability experimental
148
+ * @category decoding
149
+ * @since 4.0.0
150
+ */
151
+ export const hostFromString = input => {
152
+ if (input.includes("%")) return NetAddress.scopedIpv6LiteralFromString(input);
153
+ if (input.includes(":")) return NetAddress.ipFromString(input);
154
+ if (/^[\d.]+$/.test(input)) {
155
+ const address = NetAddress.ipFromString(input);
156
+ if (Result.isSuccess(address)) return address;
157
+ }
158
+ return domainNameFromString(input);
159
+ };
160
+ /**
161
+ * Parses a trusted host, throwing on failure.
162
+ *
163
+ * @stability experimental
164
+ * @category unsafe
165
+ * @since 4.0.0
166
+ */
167
+ export const hostFromStringUnsafe = input => Result.getOrThrow(hostFromString(input));
168
+ /**
169
+ * Converts a `HostInput` to a host, parsing strings like `hostFromString` and
170
+ * converting other inputs like `NetAddress.ipFromInput`.
171
+ *
172
+ * @stability experimental
173
+ * @category constructors
174
+ * @since 4.0.0
175
+ */
176
+ export const hostFromInput = input => typeof input === "string" ? hostFromString(input) : NetAddress.ipFromInput(input);
177
+ /**
178
+ * Converts a trusted `HostInput` to a host, throwing on failure.
179
+ *
180
+ * @stability experimental
181
+ * @category unsafe
182
+ * @since 4.0.0
183
+ */
184
+ export const hostFromInputUnsafe = input => Result.getOrThrow(hostFromInput(input));
185
+ /**
186
+ * Formats a host without brackets.
187
+ *
188
+ * @stability experimental
189
+ * @category encoding
190
+ * @since 4.0.0
191
+ */
192
+ export const formatHost = self => typeof self === "string" ? self : NetAddress.formatIp(self);
193
+ /**
194
+ * Returns `true` when a domain name ends with a dot, which excludes it from
195
+ * resolver search domains.
196
+ *
197
+ * @stability experimental
198
+ * @category predicates
199
+ * @since 4.0.0
200
+ */
201
+ export const isFullyQualified = self => self.endsWith(".");
202
+ /**
203
+ * Appends the trailing dot to a domain name, unless it is already fully
204
+ * qualified.
205
+ *
206
+ * @stability experimental
207
+ * @category converting
208
+ * @since 4.0.0
209
+ */
210
+ export const toFullyQualified = self => isFullyQualified(self) ? self : `${self}.`;
211
+ /**
212
+ * Removes the trailing dot of a fully qualified domain name, except from the
213
+ * root name `.`.
214
+ *
215
+ * @stability experimental
216
+ * @category converting
217
+ * @since 4.0.0
218
+ */
219
+ export const toRelative = self => self.length > 1 && isFullyQualified(self) ? self.slice(0, -1) : self;
220
+ const HostPortProto = {
221
+ ...Inspectable.BaseProto,
222
+ _tag: "HostPort",
223
+ [TypeId]: TypeId,
224
+ [Equal.symbol](that) {
225
+ return isHostPort(that) && this.port === that.port && Equal.equals(this.host, that.host);
226
+ },
227
+ [Hash.symbol]() {
228
+ return Hash.combine(Hash.hash(this.host), Hash.number(this.port));
229
+ },
230
+ toString() {
231
+ return formatHostPort(this);
232
+ },
233
+ toJSON() {
234
+ return this.toString();
235
+ }
236
+ };
237
+ const isPort = port => Number.isInteger(port) && port >= 0 && port <= 0xffff;
238
+ const makeHostPort = (host, port) => {
239
+ const self = Object.create(HostPortProto);
240
+ self.host = host;
241
+ self.port = port;
242
+ return Object.freeze(self);
243
+ };
244
+ /**
245
+ * Creates a checked host and port.
246
+ *
247
+ * @stability experimental
248
+ * @category constructors
249
+ * @since 4.0.0
250
+ */
251
+ export const hostPort = (host, port) => {
252
+ if (!isHost(host)) return hostError(host, "expected a host");
253
+ if (!isPort(port)) return hostError(port, "port must be an integer from 0 through 65535");
254
+ return Result.succeed(makeHostPort(host, port));
255
+ };
256
+ /**
257
+ * Creates a trusted host and port, throwing on failure.
258
+ *
259
+ * @stability experimental
260
+ * @category unsafe
261
+ * @since 4.0.0
262
+ */
263
+ export const hostPortUnsafe = (host, port) => Result.getOrThrow(hostPort(host, port));
264
+ /**
265
+ * Parses `host:port`, `[IPv6]:port`, or `[IPv6%zone]:port`.
266
+ *
267
+ * **Details**
268
+ *
269
+ * IPv6 hosts must be bracketed and other hosts must not be. The port is
270
+ * required and must be an unpadded decimal integer from 0 through 65535. A
271
+ * zone follows the `%` directly; the percent-encoded `%25` separator of RFC
272
+ * 6874 URLs is not decoded, because `[fe80::1%253]:80` would be ambiguous.
273
+ *
274
+ * **Example** (Parsing host and port strings)
275
+ *
276
+ * ```ts import.meta.vitest
277
+ * import { Result } from "effect"
278
+ * import { Host } from "effect/net"
279
+ *
280
+ * const endpoint = Result.getOrThrow(Host.hostPortFromString("DB.internal:5432"))
281
+ * endpoint.host // => "db.internal"
282
+ * endpoint.port // => 5432
283
+ * Host.formatHostPort(Result.getOrThrow(Host.hostPortFromString("[::1]:80"))) // => "[::1]:80"
284
+ * ```
285
+ *
286
+ * @see {@link formatHostPort} for the inverse operation
287
+ * @stability experimental
288
+ * @category decoding
289
+ * @since 4.0.0
290
+ */
291
+ export const hostPortFromString = input => {
292
+ let hostText;
293
+ let portText;
294
+ if (input.startsWith("[")) {
295
+ const end = input.indexOf("]");
296
+ if (end === -1 || input[end + 1] !== ":") return hostError(input, "expected [IPv6]:port");
297
+ hostText = input.slice(1, end);
298
+ portText = input.slice(end + 2);
299
+ if (!hostText.includes(":")) return hostError(input, "only IPv6 addresses use brackets");
300
+ } else {
301
+ const separator = input.lastIndexOf(":");
302
+ if (separator === -1) return hostError(input, "expected host:port");
303
+ if (input.indexOf(":") !== separator) return hostError(input, "IPv6 addresses must be bracketed");
304
+ hostText = input.slice(0, separator);
305
+ portText = input.slice(separator + 1);
306
+ }
307
+ if (!/^(0|[1-9]\d*)$/.test(portText)) {
308
+ return hostError(input, "port must be an unpadded decimal integer");
309
+ }
310
+ const port = Number(portText);
311
+ if (!isPort(port)) return hostError(input, "port must be an integer from 0 through 65535");
312
+ return Result.map(hostFromString(hostText), host => makeHostPort(host, port));
313
+ };
314
+ /**
315
+ * Parses a trusted `host:port` string, throwing on failure.
316
+ *
317
+ * @stability experimental
318
+ * @category unsafe
319
+ * @since 4.0.0
320
+ */
321
+ export const hostPortFromStringUnsafe = input => Result.getOrThrow(hostPortFromString(input));
322
+ /**
323
+ * Converts a `HostPortInput` to an endpoint, parsing strings like
324
+ * `hostPortFromString`, converting parts like `hostPort`, and returning
325
+ * endpoints unchanged.
326
+ *
327
+ * @stability experimental
328
+ * @category constructors
329
+ * @since 4.0.0
330
+ */
331
+ export const hostPortFromInput = input => {
332
+ if (isHostPort(input)) return Result.succeed(input);
333
+ if (typeof input === "string") return hostPortFromString(input);
334
+ if (!hasProperty(input, "host") || !hasProperty(input, "port")) {
335
+ return hostError(input, "expected a host and port");
336
+ }
337
+ const port = input.port;
338
+ return Result.flatMap(hostFromInput(input.host), host => hostPort(host, port));
339
+ };
340
+ /**
341
+ * Converts a trusted `HostPortInput` to an endpoint, throwing on failure.
342
+ *
343
+ * @stability experimental
344
+ * @category unsafe
345
+ * @since 4.0.0
346
+ */
347
+ export const hostPortFromInputUnsafe = input => Result.getOrThrow(hostPortFromInput(input));
348
+ /**
349
+ * Formats a host and port, bracketing IPv6 hosts.
350
+ *
351
+ * @see {@link hostPortFromString} for the inverse operation
352
+ * @stability experimental
353
+ * @category encoding
354
+ * @since 4.0.0
355
+ */
356
+ export const formatHostPort = self => {
357
+ const host = formatHost(self.host);
358
+ return host.includes(":") ? `[${host}]:${self.port}` : `${host}:${self.port}`;
359
+ };
360
+ /**
361
+ * Parses a hosts file into the addresses of each host name. Invalid entries
362
+ * are skipped.
363
+ *
364
+ * **Example** (Parsing a hosts file)
365
+ *
366
+ * ```ts import.meta.vitest
367
+ * import { Host, NetAddress } from "effect/net"
368
+ *
369
+ * const hosts = Host.parseHostsFile(`
370
+ * 127.0.0.1 localhost
371
+ * ::1 localhost ip6-localhost # loopback
372
+ * `)
373
+ * hosts.get(Host.domainNameFromStringUnsafe("localhost"))?.map(NetAddress.formatIp) // => ["127.0.0.1", "::1"]
374
+ * ```
375
+ *
376
+ * @stability experimental
377
+ * @category decoding
378
+ * @since 4.0.0
379
+ */
380
+ export const parseHostsFile = text => {
381
+ const hosts = new Map();
382
+ for (const line of text.split(/\r?\n/)) {
383
+ const comment = line.indexOf("#");
384
+ const [first, ...names] = (comment === -1 ? line : line.slice(0, comment)).trim().split(/\s+/);
385
+ const address = NetAddress.ipFromString(first);
386
+ if (Result.isFailure(address)) continue;
387
+ for (const name of names) {
388
+ const domain = domainNameFromString(name);
389
+ if (Result.isFailure(domain)) continue;
390
+ const key = toRelative(domain.success);
391
+ const addresses = hosts.get(key);
392
+ if (addresses === undefined) hosts.set(key, [address.success]);else if (!addresses.some(existing => Equal.equals(existing, address.success))) addresses.push(address.success);
393
+ }
394
+ }
395
+ return hosts;
396
+ };
397
+ //# sourceMappingURL=Host.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Host.js","names":[],"sources":["../../src/net/Host.ts"],"sourcesContent":[null],"mappings":"AAaA,OAAO,KAAK,KAAK,MAAM,aAAa;AACpC,OAAO,KAAK,IAAI,MAAM,YAAY;AAClC,OAAO,KAAK,WAAW,MAAM,mBAAmB;AAChD,SAAS,WAAW,QAAQ,iBAAiB;AAC7C,OAAO,KAAK,MAAM,MAAM,cAAc;AACtC,OAAO,KAAK,UAAU,MAAM,iBAAiB;AAE7C,MAAM,MAAM,GAAG,kBAA2B;AA0F1C,MAAM,SAAS,GAAG,CAAC,KAAc,EAAE,OAAe,KAChD,MAAM,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,eAAe,CAAC;EAAE,KAAK;EAAE;AAAO,CAAE,CAAC,CAAC;AAEjE,MAAM,kBAAkB,GAAG,gBAAgB;AAC3C,MAAM,YAAY,GAAG,2CAA2C;AAChE,MAAM,YAAY,GAAG,uBAAuB;AAE5C,MAAM,kBAAkB,GAAI,IAAY,IAAwB;EAC9D,IAAI,IAAI,KAAK,GAAG,EAAE,OAAO,SAAS;EAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI;EAC9D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,+BAA+B;EACjE,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE,OAAO,4CAA4C;EAC9E,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;EAClC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;IAC1B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,sCAAsC;IACrE,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE,OAAO,kDAAkD;IAChF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;MAC7B,OAAO,uHAAuH;IAChI;EACF;EACA,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE;IAChD,OAAO,gDAAgD;EACzD;EACA,OAAO,SAAS;AAClB,CAAC;AAED,MAAM,iBAAiB,GAAI,KAAa,IAAwB;EAC9D,IAAI,KAAK,GAAG,IAAI;EAChB,KAAK,MAAM,SAAS,IAAI,KAAK,EAAE;IAC7B,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE;MAClC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,SAAS;IAC3D,CAAC,MAAM;MACL,KAAK,GAAG,KAAK;IACf;EACF;EACA,IAAI,KAAK,EAAE,OAAO,KAAK,CAAC,WAAW,EAAE;EACrC,IAAI;IACF,OAAO,IAAI,GAAG,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,QAAQ;EAC5C,CAAC,CAAC,MAAM;IACN,OAAO,SAAS;EAClB;AACF,CAAC;AAED;;;;;;;AAOA,OAAO,MAAM,YAAY,GAAI,CAAU,IACrC,OAAO,CAAC,KAAK,QAAQ,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,kBAAkB,CAAC,CAAC,CAAC,KAAK,SAAS;AAE1F;;;;;;;AAOA,OAAO,MAAM,MAAM,GAAI,CAAU,IAC/B,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC;AAEnF;;;;;;;AAOA,OAAO,MAAM,UAAU,GAAI,CAAU,IAAoB,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,OAAO,MAAM,oBAAoB,GAAI,KAAa,IAA2D;EAC3G,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,CAAC;EACrC,IAAI,IAAI,KAAK,SAAS,EAAE,OAAO,SAAS,CAAC,KAAK,EAAE,qBAAqB,CAAC;EACtE,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC;EACtC,OAAO,KAAK,KAAK,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,IAAkB,CAAC,GAAG,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;AAC3F,CAAC;AAED;;;;;;;AAOA,OAAO,MAAM,0BAA0B,GAAI,KAAa,IAAiB,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAEvH;;;;;;;;;;;;AAYA,OAAO,MAAM,mBAAmB,GAAI,KAAsB,IACxD,oBAAoB,CAAC,KAAK,CAAC;AAE7B;;;;;;;AAOA,OAAO,MAAM,yBAAyB,GAAI,KAAsB,IAC9D,MAAM,CAAC,UAAU,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;AAmBA,OAAO,MAAM,cAAc,GAAI,KAAa,IAAqD;EAC/F,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,UAAU,CAAC,2BAA2B,CAAC,KAAK,CAAC;EAC7E,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC;EAC9D,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;IAC1B,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC;IAC9C,IAAI,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,OAAO;EAC/C;EACA,OAAO,oBAAoB,CAAC,KAAK,CAAC;AACpC,CAAC;AAED;;;;;;;AAOA,OAAO,MAAM,oBAAoB,GAAI,KAAa,IAAW,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAErG;;;;;;;;AAQA,OAAO,MAAM,aAAa,GAAI,KAAgB,IAC5C,OAAO,KAAK,KAAK,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC;AAEnF;;;;;;;AAOA,OAAO,MAAM,mBAAmB,GAAI,KAAgB,IAAW,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAEtG;;;;;;;AAOA,OAAO,MAAM,UAAU,GAAI,IAAU,IAAa,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC;AAE7G;;;;;;;;AAQA,OAAO,MAAM,gBAAgB,GAAI,IAAgB,IAAc,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AAEjF;;;;;;;;AAQA,OAAO,MAAM,gBAAgB,GAAI,IAAgB,IAC/C,gBAAgB,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,GAAG,IAAI,GAAiB;AAE1D;;;;;;;;AAQA,OAAO,MAAM,UAAU,GAAI,IAAgB,IACzC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAe,GAAG,IAAI;AAEpF,MAAM,aAAa,GAAG;EACpB,GAAG,WAAW,CAAC,SAAS;EACxB,IAAI,EAAE,UAAU;EAChB,CAAC,MAAM,GAAG,MAAM;EAChB,CAAC,KAAK,CAAC,MAAM,EAAkB,IAAiB;IAC9C,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;EAC1F,CAAC;EACD,CAAC,IAAI,CAAC,MAAM,IAAC;IACX,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACnE,CAAC;EACD,QAAQ;IACN,OAAO,cAAc,CAAC,IAAI,CAAC;EAC7B,CAAC;EACD,MAAM;IACJ,OAAO,IAAI,CAAC,QAAQ,EAAE;EACxB;CACD;AAED,MAAM,MAAM,GAAI,IAAY,IAAc,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,MAAM;AAE/F,MAAM,YAAY,GAAG,CAAC,IAAU,EAAE,IAAY,KAAc;EAC1D,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;EACzC,IAAI,CAAC,IAAI,GAAG,IAAI;EAChB,IAAI,CAAC,IAAI,GAAG,IAAI;EAChB,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AAC5B,CAAC;AAED;;;;;;;AAOA,OAAO,MAAM,QAAQ,GAAG,CAAC,IAAU,EAAE,IAAY,KAAyD;EACxG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,SAAS,CAAC,IAAI,EAAE,iBAAiB,CAAC;EAC5D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,SAAS,CAAC,IAAI,EAAE,8CAA8C,CAAC;EACzF,OAAO,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACjD,CAAC;AAED;;;;;;;AAOA,OAAO,MAAM,cAAc,GAAG,CAAC,IAAU,EAAE,IAAY,KAAe,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAE7G;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,OAAO,MAAM,kBAAkB,GAAI,KAAa,IAAyD;EACvG,IAAI,QAAgB;EACpB,IAAI,QAAgB;EACpB,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;IACzB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;IAC9B,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,OAAO,SAAS,CAAC,KAAK,EAAE,sBAAsB,CAAC;IACzF,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;IAC9B,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;IAC/B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,SAAS,CAAC,KAAK,EAAE,kCAAkC,CAAC;EAC1F,CAAC,MAAM;IACL,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC;IACxC,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,OAAO,SAAS,CAAC,KAAK,EAAE,oBAAoB,CAAC;IACnE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,OAAO,SAAS,CAAC,KAAK,EAAE,kCAAkC,CAAC;IACjG,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC;IACpC,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;EACvC;EACA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;IACpC,OAAO,SAAS,CAAC,KAAK,EAAE,0CAA0C,CAAC;EACrE;EACA,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC;EAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,SAAS,CAAC,KAAK,EAAE,8CAA8C,CAAC;EAC1F,OAAO,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAG,IAAI,IAAK,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACjF,CAAC;AAED;;;;;;;AAOA,OAAO,MAAM,wBAAwB,GAAI,KAAa,IAAe,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAEjH;;;;;;;;;AASA,OAAO,MAAM,iBAAiB,GAAI,KAAoB,IAAyD;EAC7G,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;EACnD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,OAAO,kBAAkB,CAAC,KAAK,CAAC;EAC/D,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE;IAC9D,OAAO,SAAS,CAAC,KAAK,EAAE,0BAA0B,CAAC;EACrD;EACA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI;EACvB,OAAO,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,EAAG,IAAI,IAAK,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAClF,CAAC;AAED;;;;;;;AAOA,OAAO,MAAM,uBAAuB,GAAI,KAAoB,IAAe,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAEtH;;;;;;;;AAQA,OAAO,MAAM,cAAc,GAAI,IAAc,IAAY;EACvD,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;EAClC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AAC/E,CAAC;AAYD;;;;;;;;;;;;;;;;;;;;AAoBA,OAAO,MAAM,cAAc,GAAI,IAAY,IAAgB;EACzD,MAAM,KAAK,GAAG,IAAI,GAAG,EAA2C;EAChE,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;IACjC,MAAM,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;IAC9F,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC;IAC9C,IAAI,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;IAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;MACxB,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC;MACzC,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;MAC9B,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC;MACtC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;MAChC,IAAI,SAAS,KAAK,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MACzD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAE,QAAQ,IAAK,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;IAClH;EACF;EACA,OAAO,KAA8B;AACvC,CAAC","ignoreList":[]}
@@ -6,6 +6,7 @@
6
6
  */
7
7
  import * as Equal from "../Equal.ts";
8
8
  import * as Hash from "../Hash.ts";
9
+ import * as Inspectable from "../Inspectable.ts";
9
10
  import * as Result from "../Result.ts";
10
11
  import * as NetAddress from "./NetAddress.ts";
11
12
  declare const TypeId: "~effect/net/IpInterface";
@@ -19,13 +20,11 @@ declare const TypeId: "~effect/net/IpInterface";
19
20
  * @category models
20
21
  * @since 4.0.0
21
22
  */
22
- export interface IpInterface<out A extends NetAddress.IpAddress = NetAddress.IpAddress> extends Equal.Equal, Hash.Hash {
23
+ export interface IpInterface<out A extends NetAddress.IpAddress = NetAddress.IpAddress> extends Equal.Equal, Hash.Hash, Inspectable.Inspectable {
23
24
  readonly _tag: "IpInterface";
24
25
  readonly address: A;
25
26
  readonly prefixLength: number;
26
27
  readonly [TypeId]: typeof TypeId;
27
- toString(): string;
28
- toJSON(): string;
29
28
  }
30
29
  /**
31
30
  * An IPv4 host address and prefix length.
@@ -43,6 +42,42 @@ export type Ipv4Interface = IpInterface<NetAddress.Ipv4Address>;
43
42
  * @since 4.0.0
44
43
  */
45
44
  export type Ipv6Interface = IpInterface<NetAddress.Ipv6Address>;
45
+ /**
46
+ * An address and prefix length, generic over the accepted address input.
47
+ *
48
+ * @see {@link make} for the checked constructor
49
+ * @stability unstable
50
+ * @category models
51
+ * @since 4.0.0
52
+ */
53
+ export interface IpInterfaceParts<A extends NetAddress.IpAddressInput = NetAddress.IpAddressInput> {
54
+ readonly address: A;
55
+ readonly prefixLength: number;
56
+ }
57
+ /**
58
+ * An interface address, or a string or parts to convert to one.
59
+ *
60
+ * @stability unstable
61
+ * @category models
62
+ * @since 4.0.0
63
+ */
64
+ export type IpInterfaceInput = IpInterface | string | IpInterfaceParts;
65
+ /**
66
+ * An IPv4 interface address, or a string or parts to convert to one.
67
+ *
68
+ * @stability unstable
69
+ * @category models
70
+ * @since 4.0.0
71
+ */
72
+ export type Ipv4InterfaceInput = Ipv4Interface | string | IpInterfaceParts<NetAddress.Ipv4AddressInput>;
73
+ /**
74
+ * An IPv6 interface address, or a string or parts to convert to one.
75
+ *
76
+ * @stability unstable
77
+ * @category models
78
+ * @since 4.0.0
79
+ */
80
+ export type Ipv6InterfaceInput = Ipv6Interface | string | IpInterfaceParts<NetAddress.Ipv6AddressInput>;
46
81
  /**
47
82
  * Companion types for parsing IP interface addresses.
48
83
  *
@@ -131,6 +166,44 @@ export declare const ipv6FromString: (input: string, options?: IpInterface.Parse
131
166
  * @since 4.0.0
132
167
  */
133
168
  export declare const fromString: (input: string, options?: IpInterface.ParseOptions) => Result.Result<IpInterface, NetAddress.NetAddressError>;
169
+ /**
170
+ * Converts an `Ipv4InterfaceInput` to an IPv4 interface address, parsing
171
+ * strings like `ipv4FromString` with the given options, converting parts like
172
+ * `make`, and returning interface addresses unchanged.
173
+ *
174
+ * @stability unstable
175
+ * @category constructors
176
+ * @since 4.0.0
177
+ */
178
+ export declare const ipv4FromInput: (input: Ipv4InterfaceInput, options?: IpInterface.ParseOptions) => Result.Result<Ipv4Interface, NetAddress.NetAddressError>;
179
+ /**
180
+ * Converts an `Ipv6InterfaceInput` to an IPv6 interface address, parsing
181
+ * strings like `ipv6FromString` with the given options, converting parts like
182
+ * `make`, and returning interface addresses unchanged.
183
+ *
184
+ * @stability unstable
185
+ * @category constructors
186
+ * @since 4.0.0
187
+ */
188
+ export declare const ipv6FromInput: (input: Ipv6InterfaceInput, options?: IpInterface.ParseOptions) => Result.Result<Ipv6Interface, NetAddress.NetAddressError>;
189
+ /**
190
+ * Converts an `IpInterfaceInput` to an interface address, parsing strings like
191
+ * `fromString` with the given options, converting parts like `make`, and
192
+ * returning interface addresses unchanged.
193
+ *
194
+ * @stability unstable
195
+ * @category constructors
196
+ * @since 4.0.0
197
+ */
198
+ export declare const fromInput: (input: IpInterfaceInput, options?: IpInterface.ParseOptions) => Result.Result<IpInterface, NetAddress.NetAddressError>;
199
+ /**
200
+ * Converts a trusted `IpInterfaceInput` to an interface address, throwing on failure.
201
+ *
202
+ * @stability unstable
203
+ * @category unsafe
204
+ * @since 4.0.0
205
+ */
206
+ export declare const fromInputUnsafe: (input: IpInterfaceInput, options?: IpInterface.ParseOptions) => IpInterface;
134
207
  /**
135
208
  * Creates a trusted interface address, throwing when its prefix length is invalid.
136
209
  *
@@ -1 +1 @@
1
- {"version":3,"file":"IpInterface.d.ts","sourceRoot":"","sources":["../../src/net/IpInterface.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,KAAK,MAAM,aAAa,CAAA;AACpC,OAAO,KAAK,IAAI,MAAM,YAAY,CAAA;AAGlC,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AACtC,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C,QAAA,MAAM,MAAM,EAAG,yBAAkC,CAAA;AAEjD;;;;;;;;;GASG;AACH,MAAM,WAAW,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,UAAU,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAE,SAAQ,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI;IACpH,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;IAC5B,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;IACnB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,MAAM,CAAA;IAChC,QAAQ,IAAI,MAAM,CAAA;IAClB,MAAM,IAAI,MAAM,CAAA;CACjB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;AAE/D;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;AAE/D;;;;;GAKG;AACH,MAAM,CAAC,OAAO,WAAW,WAAW,CAAC;IACnC;;;;;;;OAOG;IACH,UAAiB,YAAY;QAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,UAAU,CAAA;KAC1C;CACF;AAED;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,MAAO,OAAO,KAAG,CAAC,IAAI,aACO,CAAA;AAEzD;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,MAAO,OAAO,KAAG,CAAC,IAAI,aACO,CAAA;AAEzD;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,MAAO,OAAO,KAAG,CAAC,IAAI,WAAqC,CAAA;AA2BrF;;;;;;GAMG;AACH,eAAO,MAAM,IAAI,GAAI,CAAC,SAAS,UAAU,CAAC,SAAS,WACxC,CAAC,gBACI,MAAM,KACnB,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,eAAe,CAO1D,CAAA;AAuBD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc,UAClB,MAAM,YACH,WAAW,CAAC,YAAY,KACjC,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,eAAe,CAMvD,CAAA;AAEH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc,UAClB,MAAM,YACH,WAAW,CAAC,YAAY,KACjC,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,eAAe,CAMvD,CAAA;AAEH;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,UAAU,UACd,MAAM,YACH,WAAW,CAAC,YAAY,KACjC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,eAAe,CAMrD,CAAA;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,UAAU,CAAC,SAAS,WAAW,CAAC,gBAAgB,MAAM,KAAG,WAAW,CAAC,CAAC,CAC3D,CAAA;AAEhD;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,UAAW,MAAM,YAAY,WAAW,CAAC,YAAY,KAAG,WACtC,CAAA;AAE/C;;;;;;GAMG;AACH,eAAO,MAAM,MAAM,SAAU,WAAW,KAAG,MAAqE,CAAA"}
1
+ {"version":3,"file":"IpInterface.d.ts","sourceRoot":"","sources":["../../src/net/IpInterface.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import * as Equal from "../Equal.js";
8
8
  import * as Hash from "../Hash.js";
9
- import { NodeInspectSymbol } from "../Inspectable.js";
9
+ import * as Inspectable from "../Inspectable.js";
10
10
  import { hasProperty } from "../Predicate.js";
11
11
  import * as Result from "../Result.js";
12
12
  import * as NetAddress from "./NetAddress.js";
@@ -36,6 +36,7 @@ export const isIpv6Interface = u => isIpInterface(u) && NetAddress.isIpv6Address
36
36
  */
37
37
  export const isIpInterface = u => hasProperty(u, TypeId);
38
38
  const IpInterfaceProto = {
39
+ ...Inspectable.BaseProto,
39
40
  _tag: "IpInterface",
40
41
  [TypeId]: TypeId,
41
42
  [Equal.symbol](that) {
@@ -49,9 +50,6 @@ const IpInterfaceProto = {
49
50
  },
50
51
  toJSON() {
51
52
  return this.toString();
52
- },
53
- [NodeInspectSymbol]() {
54
- return this.toJSON();
55
53
  }
56
54
  };
57
55
  const interfaceError = (input, message) => Result.fail(new NetAddress.NetAddressError({
@@ -133,6 +131,57 @@ export const ipv6FromString = (input, options) => Result.flatMap(parseAddressWit
133
131
  * @since 4.0.0
134
132
  */
135
133
  export const fromString = (input, options) => Result.flatMap(parseAddressWithPrefix(input, options), parts => Result.flatMap(NetAddress.ipFromString(parts.address), address => make(address, parts.prefixLength ?? NetAddress.width(address))));
134
+ const fromParts = (input, toAddress) => hasProperty(input, "address") && hasProperty(input, "prefixLength") ? Result.flatMap(toAddress(input.address), address => make(address, input.prefixLength)) : interfaceError(input, "expected an address and prefix length");
135
+ /**
136
+ * Converts an `Ipv4InterfaceInput` to an IPv4 interface address, parsing
137
+ * strings like `ipv4FromString` with the given options, converting parts like
138
+ * `make`, and returning interface addresses unchanged.
139
+ *
140
+ * @stability unstable
141
+ * @category constructors
142
+ * @since 4.0.0
143
+ */
144
+ export const ipv4FromInput = (input, options) => {
145
+ if (isIpv4Interface(input)) return Result.succeed(input);
146
+ if (typeof input === "string") return ipv4FromString(input, options);
147
+ return fromParts(input, NetAddress.ipv4FromInput);
148
+ };
149
+ /**
150
+ * Converts an `Ipv6InterfaceInput` to an IPv6 interface address, parsing
151
+ * strings like `ipv6FromString` with the given options, converting parts like
152
+ * `make`, and returning interface addresses unchanged.
153
+ *
154
+ * @stability unstable
155
+ * @category constructors
156
+ * @since 4.0.0
157
+ */
158
+ export const ipv6FromInput = (input, options) => {
159
+ if (isIpv6Interface(input)) return Result.succeed(input);
160
+ if (typeof input === "string") return ipv6FromString(input, options);
161
+ return fromParts(input, NetAddress.ipv6FromInput);
162
+ };
163
+ /**
164
+ * Converts an `IpInterfaceInput` to an interface address, parsing strings like
165
+ * `fromString` with the given options, converting parts like `make`, and
166
+ * returning interface addresses unchanged.
167
+ *
168
+ * @stability unstable
169
+ * @category constructors
170
+ * @since 4.0.0
171
+ */
172
+ export const fromInput = (input, options) => {
173
+ if (isIpInterface(input)) return Result.succeed(input);
174
+ if (typeof input === "string") return fromString(input, options);
175
+ return fromParts(input, NetAddress.ipFromInput);
176
+ };
177
+ /**
178
+ * Converts a trusted `IpInterfaceInput` to an interface address, throwing on failure.
179
+ *
180
+ * @stability unstable
181
+ * @category unsafe
182
+ * @since 4.0.0
183
+ */
184
+ export const fromInputUnsafe = (input, options) => Result.getOrThrow(fromInput(input, options));
136
185
  /**
137
186
  * Creates a trusted interface address, throwing when its prefix length is invalid.
138
187
  *
@@ -1 +1 @@
1
- {"version":3,"file":"IpInterface.js","names":[],"sources":["../../src/net/IpInterface.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"IpInterface.js","names":[],"sources":["../../src/net/IpInterface.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}