effect 4.0.5 → 4.0.6

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 (985) hide show
  1. package/ai-docs/package.json +1 -1
  2. package/ai-docs/src/06_schedule/10_schedules.ts +5 -4
  3. package/ai-docs/tsconfig.json +3 -1
  4. package/dist/Array.d.ts +117 -52
  5. package/dist/Array.d.ts.map +1 -1
  6. package/dist/Array.js +41 -20
  7. package/dist/Array.js.map +1 -1
  8. package/dist/Bytes.d.ts +79 -0
  9. package/dist/Bytes.d.ts.map +1 -0
  10. package/dist/Bytes.js +109 -0
  11. package/dist/Bytes.js.map +1 -0
  12. package/dist/Channel.d.ts +181 -13
  13. package/dist/Channel.d.ts.map +1 -1
  14. package/dist/Channel.js +125 -30
  15. package/dist/Channel.js.map +1 -1
  16. package/dist/ChannelSchema.d.ts.map +1 -1
  17. package/dist/ChannelSchema.js.map +1 -1
  18. package/dist/Chunk.d.ts +39 -21
  19. package/dist/Chunk.d.ts.map +1 -1
  20. package/dist/Chunk.js +26 -17
  21. package/dist/Chunk.js.map +1 -1
  22. package/dist/Config.d.ts.map +1 -1
  23. package/dist/Config.js +8 -3
  24. package/dist/Config.js.map +1 -1
  25. package/dist/ConfigProvider.d.ts.map +1 -1
  26. package/dist/ConfigProvider.js +2 -1
  27. package/dist/ConfigProvider.js.map +1 -1
  28. package/dist/Cron.d.ts +2 -2
  29. package/dist/Cron.d.ts.map +1 -1
  30. package/dist/Cron.js +6 -3
  31. package/dist/Cron.js.map +1 -1
  32. package/dist/Duration.d.ts.map +1 -1
  33. package/dist/Duration.js +56 -16
  34. package/dist/Duration.js.map +1 -1
  35. package/dist/Effect.d.ts +487 -163
  36. package/dist/Effect.d.ts.map +1 -1
  37. package/dist/Effect.js +203 -37
  38. package/dist/Effect.js.map +1 -1
  39. package/dist/Equivalence.d.ts +2 -1
  40. package/dist/Equivalence.d.ts.map +1 -1
  41. package/dist/Equivalence.js +12 -8
  42. package/dist/Equivalence.js.map +1 -1
  43. package/dist/Exit.d.ts +24 -9
  44. package/dist/Exit.d.ts.map +1 -1
  45. package/dist/Exit.js +8 -3
  46. package/dist/Exit.js.map +1 -1
  47. package/dist/FiberHandle.d.ts +2 -0
  48. package/dist/FiberHandle.d.ts.map +1 -1
  49. package/dist/FiberHandle.js +9 -4
  50. package/dist/FiberHandle.js.map +1 -1
  51. package/dist/FiberMap.d.ts +2 -0
  52. package/dist/FiberMap.d.ts.map +1 -1
  53. package/dist/FiberMap.js +5 -2
  54. package/dist/FiberMap.js.map +1 -1
  55. package/dist/FileSystem.d.ts +5 -0
  56. package/dist/FileSystem.d.ts.map +1 -1
  57. package/dist/FileSystem.js +3 -0
  58. package/dist/FileSystem.js.map +1 -1
  59. package/dist/Graph.d.ts.map +1 -1
  60. package/dist/Graph.js.map +1 -1
  61. package/dist/HashSet.d.ts.map +1 -1
  62. package/dist/HashSet.js.map +1 -1
  63. package/dist/Iterable.d.ts.map +1 -1
  64. package/dist/Iterable.js +18 -17
  65. package/dist/Iterable.js.map +1 -1
  66. package/dist/JsonSchema.d.ts +9 -3
  67. package/dist/JsonSchema.d.ts.map +1 -1
  68. package/dist/JsonSchema.js +19 -3
  69. package/dist/JsonSchema.js.map +1 -1
  70. package/dist/Layer.d.ts.map +1 -1
  71. package/dist/Layer.js +2 -2
  72. package/dist/Layer.js.map +1 -1
  73. package/dist/ManagedRuntime.d.ts +19 -1
  74. package/dist/ManagedRuntime.d.ts.map +1 -1
  75. package/dist/ManagedRuntime.js +62 -6
  76. package/dist/ManagedRuntime.js.map +1 -1
  77. package/dist/Metric.d.ts +132 -0
  78. package/dist/Metric.d.ts.map +1 -1
  79. package/dist/Metric.js +197 -25
  80. package/dist/Metric.js.map +1 -1
  81. package/dist/MutableHashMap.d.ts.map +1 -1
  82. package/dist/MutableHashMap.js.map +1 -1
  83. package/dist/Number.js +2 -2
  84. package/dist/Number.js.map +1 -1
  85. package/dist/Optic.d.ts.map +1 -1
  86. package/dist/Optic.js.map +1 -1
  87. package/dist/Path.d.ts.map +1 -1
  88. package/dist/Path.js +8 -1
  89. package/dist/Path.js.map +1 -1
  90. package/dist/PubSub.d.ts.map +1 -1
  91. package/dist/PubSub.js +12 -7
  92. package/dist/PubSub.js.map +1 -1
  93. package/dist/Queue.d.ts +4 -1
  94. package/dist/Queue.d.ts.map +1 -1
  95. package/dist/Queue.js +4 -1
  96. package/dist/Queue.js.map +1 -1
  97. package/dist/Random.d.ts.map +1 -1
  98. package/dist/Random.js +1 -1
  99. package/dist/Random.js.map +1 -1
  100. package/dist/RcMap.d.ts +12 -7
  101. package/dist/RcMap.d.ts.map +1 -1
  102. package/dist/RcMap.js +9 -6
  103. package/dist/RcMap.js.map +1 -1
  104. package/dist/Record.d.ts +51 -0
  105. package/dist/Record.d.ts.map +1 -1
  106. package/dist/Record.js +17 -0
  107. package/dist/Record.js.map +1 -1
  108. package/dist/Ref.d.ts.map +1 -1
  109. package/dist/Ref.js.map +1 -1
  110. package/dist/References.d.ts +5 -4
  111. package/dist/References.d.ts.map +1 -1
  112. package/dist/References.js +5 -4
  113. package/dist/References.js.map +1 -1
  114. package/dist/RequestResolver.d.ts +31 -1
  115. package/dist/RequestResolver.d.ts.map +1 -1
  116. package/dist/RequestResolver.js +39 -4
  117. package/dist/RequestResolver.js.map +1 -1
  118. package/dist/Resource.js +1 -1
  119. package/dist/Resource.js.map +1 -1
  120. package/dist/Runtime.d.ts +3 -3
  121. package/dist/Runtime.d.ts.map +1 -1
  122. package/dist/Runtime.js +18 -15
  123. package/dist/Runtime.js.map +1 -1
  124. package/dist/Schedule.d.ts.map +1 -1
  125. package/dist/Schedule.js.map +1 -1
  126. package/dist/Schema.d.ts +384 -332
  127. package/dist/Schema.d.ts.map +1 -1
  128. package/dist/Schema.js +333 -19
  129. package/dist/Schema.js.map +1 -1
  130. package/dist/SchemaAST.d.ts +5 -5
  131. package/dist/SchemaAST.d.ts.map +1 -1
  132. package/dist/SchemaAST.js +24 -8
  133. package/dist/SchemaAST.js.map +1 -1
  134. package/dist/SchemaGetter.d.ts +8 -3
  135. package/dist/SchemaGetter.d.ts.map +1 -1
  136. package/dist/SchemaGetter.js +15 -5
  137. package/dist/SchemaGetter.js.map +1 -1
  138. package/dist/SchemaIssue.d.ts +4 -4
  139. package/dist/SchemaIssue.d.ts.map +1 -1
  140. package/dist/SchemaIssue.js +29 -51
  141. package/dist/SchemaIssue.js.map +1 -1
  142. package/dist/SchemaRepresentation.d.ts +56 -1
  143. package/dist/SchemaRepresentation.d.ts.map +1 -1
  144. package/dist/SchemaRepresentation.js +18 -0
  145. package/dist/SchemaRepresentation.js.map +1 -1
  146. package/dist/SchemaTransformation.d.ts +1 -1
  147. package/dist/SchemaTransformation.js +1 -1
  148. package/dist/Scope.d.ts +12 -2
  149. package/dist/Scope.d.ts.map +1 -1
  150. package/dist/Scope.js +5 -0
  151. package/dist/Scope.js.map +1 -1
  152. package/dist/ScopedCache.d.ts +10 -7
  153. package/dist/ScopedCache.d.ts.map +1 -1
  154. package/dist/ScopedCache.js +9 -5
  155. package/dist/ScopedCache.js.map +1 -1
  156. package/dist/SemVer.d.ts +1196 -0
  157. package/dist/SemVer.d.ts.map +1 -0
  158. package/dist/SemVer.js +756 -0
  159. package/dist/SemVer.js.map +1 -0
  160. package/dist/SemVerRange.d.ts +559 -0
  161. package/dist/SemVerRange.d.ts.map +1 -0
  162. package/dist/SemVerRange.js +551 -0
  163. package/dist/SemVerRange.js.map +1 -0
  164. package/dist/Sink.d.ts.map +1 -1
  165. package/dist/Sink.js +6 -2
  166. package/dist/Sink.js.map +1 -1
  167. package/dist/Stream.d.ts +235 -8
  168. package/dist/Stream.d.ts.map +1 -1
  169. package/dist/Stream.js +145 -60
  170. package/dist/Stream.js.map +1 -1
  171. package/dist/String.d.ts +4 -2
  172. package/dist/String.d.ts.map +1 -1
  173. package/dist/String.js +8 -6
  174. package/dist/String.js.map +1 -1
  175. package/dist/TextDiff.d.ts +399 -0
  176. package/dist/TextDiff.d.ts.map +1 -0
  177. package/dist/TextDiff.js +634 -0
  178. package/dist/TextDiff.js.map +1 -0
  179. package/dist/TxHashMap.d.ts.map +1 -1
  180. package/dist/TxHashMap.js.map +1 -1
  181. package/dist/TxHashSet.d.ts.map +1 -1
  182. package/dist/TxHashSet.js.map +1 -1
  183. package/dist/ai/AiError.d.ts +68 -4
  184. package/dist/ai/AiError.d.ts.map +1 -1
  185. package/dist/ai/AiError.js +50 -2
  186. package/dist/ai/AiError.js.map +1 -1
  187. package/dist/ai/Chat.d.ts +1 -2
  188. package/dist/ai/Chat.d.ts.map +1 -1
  189. package/dist/ai/Chat.js +6 -3
  190. package/dist/ai/Chat.js.map +1 -1
  191. package/dist/ai/Decision.d.ts +46 -1
  192. package/dist/ai/Decision.d.ts.map +1 -1
  193. package/dist/ai/Decision.js.map +1 -1
  194. package/dist/ai/DecisionModel.d.ts +129 -11
  195. package/dist/ai/DecisionModel.d.ts.map +1 -1
  196. package/dist/ai/DecisionModel.js +182 -94
  197. package/dist/ai/DecisionModel.js.map +1 -1
  198. package/dist/ai/EmbeddingModel.d.ts +10 -0
  199. package/dist/ai/EmbeddingModel.d.ts.map +1 -1
  200. package/dist/ai/EmbeddingModel.js +21 -7
  201. package/dist/ai/EmbeddingModel.js.map +1 -1
  202. package/dist/ai/McpClient.d.ts +289 -0
  203. package/dist/ai/McpClient.d.ts.map +1 -0
  204. package/dist/ai/McpClient.js +819 -0
  205. package/dist/ai/McpClient.js.map +1 -0
  206. package/dist/ai/McpClientError.d.ts +254 -0
  207. package/dist/ai/McpClientError.d.ts.map +1 -0
  208. package/dist/ai/McpClientError.js +260 -0
  209. package/dist/ai/McpClientError.js.map +1 -0
  210. package/dist/ai/McpProtocol.d.ts +2 -2
  211. package/dist/ai/McpProtocol.d.ts.map +1 -1
  212. package/dist/ai/McpSchema.d.ts +368 -235
  213. package/dist/ai/McpSchema.d.ts.map +1 -1
  214. package/dist/ai/McpSchema.js +94 -24
  215. package/dist/ai/McpSchema.js.map +1 -1
  216. package/dist/ai/McpServer.d.ts.map +1 -1
  217. package/dist/ai/McpServer.js +25 -22
  218. package/dist/ai/McpServer.js.map +1 -1
  219. package/dist/ai/Prompt.d.ts +22 -20
  220. package/dist/ai/Prompt.d.ts.map +1 -1
  221. package/dist/ai/Prompt.js +23 -1
  222. package/dist/ai/Prompt.js.map +1 -1
  223. package/dist/ai/Response.d.ts +147 -3
  224. package/dist/ai/Response.d.ts.map +1 -1
  225. package/dist/ai/Response.js +35 -37
  226. package/dist/ai/Response.js.map +1 -1
  227. package/dist/ai/Tool.d.ts +12 -4
  228. package/dist/ai/Tool.d.ts.map +1 -1
  229. package/dist/ai/Tool.js.map +1 -1
  230. package/dist/ai/Toolkit.d.ts +48 -1
  231. package/dist/ai/Toolkit.d.ts.map +1 -1
  232. package/dist/ai/Toolkit.js +65 -12
  233. package/dist/ai/Toolkit.js.map +1 -1
  234. package/dist/ai/index.d.ts +10 -0
  235. package/dist/ai/index.d.ts.map +1 -1
  236. package/dist/ai/index.js +10 -0
  237. package/dist/ai/index.js.map +1 -1
  238. package/dist/ai/internal/mcpCore.js.map +1 -1
  239. package/dist/ai/internal/mcpProtocol/v2024_11_05.js +1 -1
  240. package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
  241. package/dist/ai/internal/mcpProtocol/v2025_03_26.js +1 -1
  242. package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
  243. package/dist/ai/internal/mcpProtocol/v2025_06_18.js +2 -2
  244. package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
  245. package/dist/ai/internal/mcpProtocol/v2025_11_25.js +2 -2
  246. package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
  247. package/dist/ai/internal/mcpProtocol/v2026_07_28.js +4 -7
  248. package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
  249. package/dist/ai/internal/mcpProtocol.js +16 -2
  250. package/dist/ai/internal/mcpProtocol.js.map +1 -1
  251. package/dist/ai/internal/mcpRuntime.js +3 -4
  252. package/dist/ai/internal/mcpRuntime.js.map +1 -1
  253. package/dist/ai/internal/mcpSchema/v2024_11_05.js +19 -13
  254. package/dist/ai/internal/mcpSchema/v2024_11_05.js.map +1 -1
  255. package/dist/ai/internal/mcpSchema/v2025_03_26.js +3 -2
  256. package/dist/ai/internal/mcpSchema/v2025_03_26.js.map +1 -1
  257. package/dist/ai/internal/mcpSchema/v2025_06_18.js +7 -7
  258. package/dist/ai/internal/mcpSchema/v2025_06_18.js.map +1 -1
  259. package/dist/ai/internal/mcpSchema/v2025_11_25.js +8 -8
  260. package/dist/ai/internal/mcpSchema/v2025_11_25.js.map +1 -1
  261. package/dist/ai/internal/mcpSchema/v2026_07_28.js +43 -42
  262. package/dist/ai/internal/mcpSchema/v2026_07_28.js.map +1 -1
  263. package/dist/cli/CliError.d.ts +42 -2
  264. package/dist/cli/CliError.d.ts.map +1 -1
  265. package/dist/cli/CliError.js +44 -5
  266. package/dist/cli/CliError.js.map +1 -1
  267. package/dist/cli/Command.d.ts +286 -2
  268. package/dist/cli/Command.d.ts.map +1 -1
  269. package/dist/cli/Command.js +107 -6
  270. package/dist/cli/Command.js.map +1 -1
  271. package/dist/cli/Completions.d.ts +5 -0
  272. package/dist/cli/Completions.d.ts.map +1 -1
  273. package/dist/cli/Completions.js.map +1 -1
  274. package/dist/cli/Flag.d.ts +115 -0
  275. package/dist/cli/Flag.d.ts.map +1 -1
  276. package/dist/cli/Flag.js +56 -0
  277. package/dist/cli/Flag.js.map +1 -1
  278. package/dist/cli/GlobalFlag.d.ts.map +1 -1
  279. package/dist/cli/GlobalFlag.js +3 -3
  280. package/dist/cli/GlobalFlag.js.map +1 -1
  281. package/dist/cli/Param.d.ts +107 -0
  282. package/dist/cli/Param.d.ts.map +1 -1
  283. package/dist/cli/Param.js +56 -0
  284. package/dist/cli/Param.js.map +1 -1
  285. package/dist/cli/TerminalCapabilities.d.ts +84 -0
  286. package/dist/cli/TerminalCapabilities.d.ts.map +1 -0
  287. package/dist/cli/TerminalCapabilities.js +122 -0
  288. package/dist/cli/TerminalCapabilities.js.map +1 -0
  289. package/dist/cli/index.d.ts +5 -0
  290. package/dist/cli/index.d.ts.map +1 -1
  291. package/dist/cli/index.js +5 -0
  292. package/dist/cli/index.js.map +1 -1
  293. package/dist/cli/internal/command.d.ts +2 -1
  294. package/dist/cli/internal/command.d.ts.map +1 -1
  295. package/dist/cli/internal/command.js +5 -2
  296. package/dist/cli/internal/command.js.map +1 -1
  297. package/dist/cli/internal/completions/bash.js +4 -3
  298. package/dist/cli/internal/completions/bash.js.map +1 -1
  299. package/dist/cli/internal/completions/descriptor.js +9 -1
  300. package/dist/cli/internal/completions/descriptor.js.map +1 -1
  301. package/dist/cli/internal/completions/fish.js +10 -8
  302. package/dist/cli/internal/completions/fish.js.map +1 -1
  303. package/dist/cli/internal/completions/powershell.js +18 -9
  304. package/dist/cli/internal/completions/powershell.js.map +1 -1
  305. package/dist/cli/internal/completions/zsh.js +8 -5
  306. package/dist/cli/internal/completions/zsh.js.map +1 -1
  307. package/dist/cli/internal/formatter.d.ts +2 -0
  308. package/dist/cli/internal/formatter.d.ts.map +1 -0
  309. package/dist/cli/internal/formatter.js +15 -0
  310. package/dist/cli/internal/formatter.js.map +1 -0
  311. package/dist/cli/internal/lexer.js +24 -10
  312. package/dist/cli/internal/lexer.js.map +1 -1
  313. package/dist/cli/internal/parser.js +24 -12
  314. package/dist/cli/internal/parser.js.map +1 -1
  315. package/dist/cluster/ClusterCron.d.ts +29 -1
  316. package/dist/cluster/ClusterCron.d.ts.map +1 -1
  317. package/dist/cluster/ClusterCron.js +64 -32
  318. package/dist/cluster/ClusterCron.js.map +1 -1
  319. package/dist/cluster/ClusterMetrics.d.ts +143 -7
  320. package/dist/cluster/ClusterMetrics.d.ts.map +1 -1
  321. package/dist/cluster/ClusterMetrics.js +151 -7
  322. package/dist/cluster/ClusterMetrics.js.map +1 -1
  323. package/dist/cluster/ClusterWorkflowEngine.d.ts +1 -1
  324. package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  325. package/dist/cluster/ClusterWorkflowEngine.js +37 -11
  326. package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
  327. package/dist/cluster/Entity.d.ts +2 -0
  328. package/dist/cluster/Entity.d.ts.map +1 -1
  329. package/dist/cluster/Entity.js.map +1 -1
  330. package/dist/cluster/MessageStorage.d.ts +21 -0
  331. package/dist/cluster/MessageStorage.d.ts.map +1 -1
  332. package/dist/cluster/MessageStorage.js.map +1 -1
  333. package/dist/cluster/Runners.d.ts.map +1 -1
  334. package/dist/cluster/Runners.js +54 -15
  335. package/dist/cluster/Runners.js.map +1 -1
  336. package/dist/cluster/Sharding.d.ts +1 -0
  337. package/dist/cluster/Sharding.d.ts.map +1 -1
  338. package/dist/cluster/Sharding.js +95 -32
  339. package/dist/cluster/Sharding.js.map +1 -1
  340. package/dist/cluster/ShardingConfig.d.ts +20 -0
  341. package/dist/cluster/ShardingConfig.d.ts.map +1 -1
  342. package/dist/cluster/ShardingConfig.js +4 -0
  343. package/dist/cluster/ShardingConfig.js.map +1 -1
  344. package/dist/cluster/SqlMessageStorage.d.ts.map +1 -1
  345. package/dist/cluster/SqlMessageStorage.js +40 -50
  346. package/dist/cluster/SqlMessageStorage.js.map +1 -1
  347. package/dist/cluster/SqlRunnerStorage.d.ts +2 -2
  348. package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
  349. package/dist/cluster/SqlRunnerStorage.js +10 -4
  350. package/dist/cluster/SqlRunnerStorage.js.map +1 -1
  351. package/dist/cluster/internal/entityManager.js +65 -8
  352. package/dist/cluster/internal/entityManager.js.map +1 -1
  353. package/dist/devtools/DevTools.d.ts +3 -2
  354. package/dist/devtools/DevTools.d.ts.map +1 -1
  355. package/dist/devtools/DevTools.js +3 -2
  356. package/dist/devtools/DevTools.js.map +1 -1
  357. package/dist/devtools/DevToolsClient.d.ts +11 -0
  358. package/dist/devtools/DevToolsClient.d.ts.map +1 -1
  359. package/dist/devtools/DevToolsClient.js +31 -4
  360. package/dist/devtools/DevToolsClient.js.map +1 -1
  361. package/dist/encoding/Base64Url.d.ts +29 -0
  362. package/dist/encoding/Base64Url.d.ts.map +1 -1
  363. package/dist/encoding/Base64Url.js +29 -0
  364. package/dist/encoding/Base64Url.js.map +1 -1
  365. package/dist/encoding/Ini.d.ts.map +1 -1
  366. package/dist/encoding/Ini.js +3 -0
  367. package/dist/encoding/Ini.js.map +1 -1
  368. package/dist/encoding/JsonArray.d.ts +270 -0
  369. package/dist/encoding/JsonArray.d.ts.map +1 -0
  370. package/dist/encoding/JsonArray.js +691 -0
  371. package/dist/encoding/JsonArray.js.map +1 -0
  372. package/dist/encoding/Ndjson.d.ts +43 -4
  373. package/dist/encoding/Ndjson.d.ts.map +1 -1
  374. package/dist/encoding/Ndjson.js +169 -18
  375. package/dist/encoding/Ndjson.js.map +1 -1
  376. package/dist/encoding/SchemaBinary.d.ts +9 -1
  377. package/dist/encoding/SchemaBinary.d.ts.map +1 -1
  378. package/dist/encoding/SchemaBinary.js +12 -19
  379. package/dist/encoding/SchemaBinary.js.map +1 -1
  380. package/dist/encoding/Tar.d.ts +309 -0
  381. package/dist/encoding/Tar.d.ts.map +1 -0
  382. package/dist/encoding/Tar.js +1182 -0
  383. package/dist/encoding/Tar.js.map +1 -0
  384. package/dist/encoding/Toml.js +3 -3
  385. package/dist/encoding/Toml.js.map +1 -1
  386. package/dist/encoding/Xml.d.ts +464 -0
  387. package/dist/encoding/Xml.d.ts.map +1 -0
  388. package/dist/encoding/Xml.js +1619 -0
  389. package/dist/encoding/Xml.js.map +1 -0
  390. package/dist/encoding/Yaml.d.ts +6 -2
  391. package/dist/encoding/Yaml.d.ts.map +1 -1
  392. package/dist/encoding/Yaml.js +97 -34
  393. package/dist/encoding/Yaml.js.map +1 -1
  394. package/dist/encoding/Zip.d.ts +413 -0
  395. package/dist/encoding/Zip.d.ts.map +1 -0
  396. package/dist/encoding/Zip.js +1255 -0
  397. package/dist/encoding/Zip.js.map +1 -0
  398. package/dist/encoding/index.d.ts +20 -0
  399. package/dist/encoding/index.d.ts.map +1 -1
  400. package/dist/encoding/index.js +20 -0
  401. package/dist/encoding/index.js.map +1 -1
  402. package/dist/eventlog/EventJournal.d.ts +90 -5
  403. package/dist/eventlog/EventJournal.d.ts.map +1 -1
  404. package/dist/eventlog/EventJournal.js +488 -228
  405. package/dist/eventlog/EventJournal.js.map +1 -1
  406. package/dist/eventlog/EventLog.d.ts +180 -12
  407. package/dist/eventlog/EventLog.d.ts.map +1 -1
  408. package/dist/eventlog/EventLog.js +394 -146
  409. package/dist/eventlog/EventLog.js.map +1 -1
  410. package/dist/eventlog/EventLogEncryption.d.ts +36 -30
  411. package/dist/eventlog/EventLogEncryption.d.ts.map +1 -1
  412. package/dist/eventlog/EventLogEncryption.js +97 -38
  413. package/dist/eventlog/EventLogEncryption.js.map +1 -1
  414. package/dist/eventlog/EventLogMessage.d.ts +74 -34
  415. package/dist/eventlog/EventLogMessage.d.ts.map +1 -1
  416. package/dist/eventlog/EventLogMessage.js +45 -11
  417. package/dist/eventlog/EventLogMessage.js.map +1 -1
  418. package/dist/eventlog/EventLogRemote.d.ts +45 -8
  419. package/dist/eventlog/EventLogRemote.d.ts.map +1 -1
  420. package/dist/eventlog/EventLogRemote.js +51 -14
  421. package/dist/eventlog/EventLogRemote.js.map +1 -1
  422. package/dist/eventlog/EventLogServer.d.ts +46 -3
  423. package/dist/eventlog/EventLogServer.d.ts.map +1 -1
  424. package/dist/eventlog/EventLogServer.js +119 -19
  425. package/dist/eventlog/EventLogServer.js.map +1 -1
  426. package/dist/eventlog/EventLogServerEncrypted.d.ts +23 -33
  427. package/dist/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
  428. package/dist/eventlog/EventLogServerEncrypted.js +97 -70
  429. package/dist/eventlog/EventLogServerEncrypted.js.map +1 -1
  430. package/dist/eventlog/EventLogServerUnencrypted.d.ts +39 -5
  431. package/dist/eventlog/EventLogServerUnencrypted.d.ts.map +1 -1
  432. package/dist/eventlog/EventLogServerUnencrypted.js +151 -69
  433. package/dist/eventlog/EventLogServerUnencrypted.js.map +1 -1
  434. package/dist/eventlog/EventRow.d.ts +288 -0
  435. package/dist/eventlog/EventRow.d.ts.map +1 -0
  436. package/dist/eventlog/EventRow.js +435 -0
  437. package/dist/eventlog/EventRow.js.map +1 -0
  438. package/dist/eventlog/SqlEventJournal.d.ts +18 -18
  439. package/dist/eventlog/SqlEventJournal.d.ts.map +1 -1
  440. package/dist/eventlog/SqlEventJournal.js +387 -159
  441. package/dist/eventlog/SqlEventJournal.js.map +1 -1
  442. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts +10 -18
  443. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts.map +1 -1
  444. package/dist/eventlog/SqlEventLogServerEncrypted.js +179 -69
  445. package/dist/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
  446. package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts +23 -3
  447. package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts.map +1 -1
  448. package/dist/eventlog/SqlEventLogServerUnencrypted.js +102 -51
  449. package/dist/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
  450. package/dist/eventlog/index.d.ts +5 -0
  451. package/dist/eventlog/index.d.ts.map +1 -1
  452. package/dist/eventlog/index.js +5 -0
  453. package/dist/eventlog/index.js.map +1 -1
  454. package/dist/eventlog/internal/conflicts.d.ts +47 -0
  455. package/dist/eventlog/internal/conflicts.d.ts.map +1 -0
  456. package/dist/eventlog/internal/conflicts.js +92 -0
  457. package/dist/eventlog/internal/conflicts.js.map +1 -0
  458. package/dist/graphql/GraphQLClientError.d.ts +2 -2
  459. package/dist/graphql/GraphQLClientError.d.ts.map +1 -1
  460. package/dist/graphql/GraphQLClientError.js +4 -18
  461. package/dist/graphql/GraphQLClientError.js.map +1 -1
  462. package/dist/graphql/GraphQLProtocol.d.ts +12 -9
  463. package/dist/graphql/GraphQLProtocol.d.ts.map +1 -1
  464. package/dist/graphql/GraphQLProtocol.js +4 -3
  465. package/dist/graphql/GraphQLProtocol.js.map +1 -1
  466. package/dist/graphql/GraphQLResolver.d.ts +2 -0
  467. package/dist/graphql/GraphQLResolver.d.ts.map +1 -1
  468. package/dist/graphql/GraphQLResolver.js +74 -32
  469. package/dist/graphql/GraphQLResolver.js.map +1 -1
  470. package/dist/http/FetchHttpClient.d.ts +8 -1
  471. package/dist/http/FetchHttpClient.d.ts.map +1 -1
  472. package/dist/http/FetchHttpClient.js +51 -4
  473. package/dist/http/FetchHttpClient.js.map +1 -1
  474. package/dist/http/FindMyWay/internal/router.js +10 -0
  475. package/dist/http/FindMyWay/internal/router.js.map +1 -1
  476. package/dist/http/Headers.d.ts +227 -0
  477. package/dist/http/Headers.d.ts.map +1 -1
  478. package/dist/http/Headers.js +261 -0
  479. package/dist/http/Headers.js.map +1 -1
  480. package/dist/http/HttpClient.d.ts +93 -0
  481. package/dist/http/HttpClient.d.ts.map +1 -1
  482. package/dist/http/HttpClient.js +55 -16
  483. package/dist/http/HttpClient.js.map +1 -1
  484. package/dist/http/HttpClientRequest.d.ts +127 -3
  485. package/dist/http/HttpClientRequest.d.ts.map +1 -1
  486. package/dist/http/HttpClientRequest.js +44 -2
  487. package/dist/http/HttpClientRequest.js.map +1 -1
  488. package/dist/http/HttpClientResponse.d.ts +53 -0
  489. package/dist/http/HttpClientResponse.d.ts.map +1 -1
  490. package/dist/http/HttpClientResponse.js +47 -0
  491. package/dist/http/HttpClientResponse.js.map +1 -1
  492. package/dist/http/HttpEffect.d.ts +6 -2
  493. package/dist/http/HttpEffect.d.ts.map +1 -1
  494. package/dist/http/HttpEffect.js +21 -17
  495. package/dist/http/HttpEffect.js.map +1 -1
  496. package/dist/http/HttpIncomingMessage.d.ts +2 -1
  497. package/dist/http/HttpIncomingMessage.d.ts.map +1 -1
  498. package/dist/http/HttpIncomingMessage.js +3 -23
  499. package/dist/http/HttpIncomingMessage.js.map +1 -1
  500. package/dist/http/HttpMiddleware.d.ts +119 -2
  501. package/dist/http/HttpMiddleware.d.ts.map +1 -1
  502. package/dist/http/HttpMiddleware.js +159 -13
  503. package/dist/http/HttpMiddleware.js.map +1 -1
  504. package/dist/http/HttpRouter.d.ts.map +1 -1
  505. package/dist/http/HttpRouter.js +7 -2
  506. package/dist/http/HttpRouter.js.map +1 -1
  507. package/dist/http/HttpServerError.d.ts +5 -2
  508. package/dist/http/HttpServerError.d.ts.map +1 -1
  509. package/dist/http/HttpServerError.js +5 -3
  510. package/dist/http/HttpServerError.js.map +1 -1
  511. package/dist/http/HttpServerRequest.d.ts +25 -5
  512. package/dist/http/HttpServerRequest.d.ts.map +1 -1
  513. package/dist/http/HttpServerRequest.js +36 -10
  514. package/dist/http/HttpServerRequest.js.map +1 -1
  515. package/dist/http/HttpServerResponse.d.ts +17 -8
  516. package/dist/http/HttpServerResponse.d.ts.map +1 -1
  517. package/dist/http/HttpServerResponse.js +37 -21
  518. package/dist/http/HttpServerResponse.js.map +1 -1
  519. package/dist/http/HttpStaticServer.d.ts +0 -12
  520. package/dist/http/HttpStaticServer.d.ts.map +1 -1
  521. package/dist/http/HttpStaticServer.js +21 -7
  522. package/dist/http/HttpStaticServer.js.map +1 -1
  523. package/dist/http/MultipartParser/internal/contentType.d.ts +15 -1
  524. package/dist/http/MultipartParser/internal/contentType.d.ts.map +1 -1
  525. package/dist/http/MultipartParser/internal/contentType.js +87 -5
  526. package/dist/http/MultipartParser/internal/contentType.js.map +1 -1
  527. package/dist/http/MultipartParser/internal/headers.d.ts.map +1 -1
  528. package/dist/http/MultipartParser/internal/headers.js +4 -12
  529. package/dist/http/MultipartParser/internal/headers.js.map +1 -1
  530. package/dist/http/MultipartParser/internal/multipart.d.ts.map +1 -1
  531. package/dist/http/MultipartParser/internal/multipart.js +6 -27
  532. package/dist/http/MultipartParser/internal/multipart.js.map +1 -1
  533. package/dist/http/Url.d.ts.map +1 -1
  534. package/dist/http/Url.js +6 -1
  535. package/dist/http/Url.js.map +1 -1
  536. package/dist/http/internal/decompression.js +17 -11
  537. package/dist/http/internal/decompression.js.map +1 -1
  538. package/dist/http/internal/lazyStream.d.ts +2 -0
  539. package/dist/http/internal/lazyStream.d.ts.map +1 -0
  540. package/dist/http/internal/lazyStream.js +18 -0
  541. package/dist/http/internal/lazyStream.js.map +1 -0
  542. package/dist/http/internal/requestState.d.ts +2 -0
  543. package/dist/http/internal/requestState.d.ts.map +1 -0
  544. package/dist/http/internal/requestState.js +28 -0
  545. package/dist/http/internal/requestState.js.map +1 -0
  546. package/dist/http/internal/webResponse.d.ts +2 -0
  547. package/dist/http/internal/webResponse.d.ts.map +1 -0
  548. package/dist/http/internal/webResponse.js +12 -0
  549. package/dist/http/internal/webResponse.js.map +1 -0
  550. package/dist/http-api/HttpApi.js +1 -1
  551. package/dist/http-api/HttpApi.js.map +1 -1
  552. package/dist/http-api/HttpApiBuilder.d.ts.map +1 -1
  553. package/dist/http-api/HttpApiBuilder.js +121 -18
  554. package/dist/http-api/HttpApiBuilder.js.map +1 -1
  555. package/dist/http-api/HttpApiClient.d.ts +29 -4
  556. package/dist/http-api/HttpApiClient.d.ts.map +1 -1
  557. package/dist/http-api/HttpApiClient.js +83 -23
  558. package/dist/http-api/HttpApiClient.js.map +1 -1
  559. package/dist/http-api/HttpApiEndpoint.d.ts +55 -29
  560. package/dist/http-api/HttpApiEndpoint.d.ts.map +1 -1
  561. package/dist/http-api/HttpApiEndpoint.js +49 -5
  562. package/dist/http-api/HttpApiEndpoint.js.map +1 -1
  563. package/dist/http-api/HttpApiError.d.ts +58 -0
  564. package/dist/http-api/HttpApiError.d.ts.map +1 -1
  565. package/dist/http-api/HttpApiError.js +38 -12
  566. package/dist/http-api/HttpApiError.js.map +1 -1
  567. package/dist/http-api/HttpApiScalar.d.ts +2 -1
  568. package/dist/http-api/HttpApiScalar.d.ts.map +1 -1
  569. package/dist/http-api/HttpApiScalar.js +6 -3
  570. package/dist/http-api/HttpApiScalar.js.map +1 -1
  571. package/dist/http-api/HttpApiSchema.d.ts +191 -9
  572. package/dist/http-api/HttpApiSchema.d.ts.map +1 -1
  573. package/dist/http-api/HttpApiSchema.js +137 -4
  574. package/dist/http-api/HttpApiSchema.js.map +1 -1
  575. package/dist/http-api/HttpApiSwagger.d.ts +5 -0
  576. package/dist/http-api/HttpApiSwagger.d.ts.map +1 -1
  577. package/dist/http-api/HttpApiSwagger.js +14 -4
  578. package/dist/http-api/HttpApiSwagger.js.map +1 -1
  579. package/dist/http-api/HttpApiTest.d.ts +13 -2
  580. package/dist/http-api/HttpApiTest.d.ts.map +1 -1
  581. package/dist/http-api/HttpApiTest.js +30 -9
  582. package/dist/http-api/HttpApiTest.js.map +1 -1
  583. package/dist/http-api/OpenApi.d.ts +17 -3
  584. package/dist/http-api/OpenApi.d.ts.map +1 -1
  585. package/dist/http-api/OpenApi.js +57 -32
  586. package/dist/http-api/OpenApi.js.map +1 -1
  587. package/dist/http-api/internal/path.js +35 -10
  588. package/dist/http-api/internal/path.js.map +1 -1
  589. package/dist/index.d.ts +20 -0
  590. package/dist/index.d.ts.map +1 -1
  591. package/dist/index.js +20 -0
  592. package/dist/index.js.map +1 -1
  593. package/dist/internal/core.js +1 -1
  594. package/dist/internal/core.js.map +1 -1
  595. package/dist/internal/dateTime.js +19 -7
  596. package/dist/internal/dateTime.js.map +1 -1
  597. package/dist/internal/effect.js +85 -74
  598. package/dist/internal/effect.js.map +1 -1
  599. package/dist/internal/hashMap.js +2 -2
  600. package/dist/internal/hashMap.js.map +1 -1
  601. package/dist/internal/hydration.d.ts +2 -0
  602. package/dist/internal/hydration.d.ts.map +1 -0
  603. package/dist/internal/hydration.js +15 -0
  604. package/dist/internal/hydration.js.map +1 -0
  605. package/dist/internal/inflate.d.ts +2 -0
  606. package/dist/internal/inflate.d.ts.map +1 -0
  607. package/dist/internal/inflate.js +680 -0
  608. package/dist/internal/inflate.js.map +1 -0
  609. package/dist/internal/record.js +6 -0
  610. package/dist/internal/record.js.map +1 -1
  611. package/dist/internal/request.js +20 -7
  612. package/dist/internal/request.js.map +1 -1
  613. package/dist/internal/schedule.js +17 -22
  614. package/dist/internal/schedule.js.map +1 -1
  615. package/dist/internal/schema/fromJsonSchemaDocument.js +136 -126
  616. package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
  617. package/dist/internal/schema/interpreter.js +51 -36
  618. package/dist/internal/schema/interpreter.js.map +1 -1
  619. package/dist/internal/schema/standardSchema.js +34 -33
  620. package/dist/internal/schema/standardSchema.js.map +1 -1
  621. package/dist/internal/schema/toCodeDocument.js +7 -2
  622. package/dist/internal/schema/toCodeDocument.js.map +1 -1
  623. package/dist/internal/schema/toCodec.js +86 -1
  624. package/dist/internal/schema/toCodec.js.map +1 -1
  625. package/dist/internal/schema/toFormatter.js +5 -5
  626. package/dist/internal/schema/toFormatter.js.map +1 -1
  627. package/dist/internal/schema/toJsonSchemaDocument.js +60 -38
  628. package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -1
  629. package/dist/internal/trie.js +1 -3
  630. package/dist/internal/trie.js.map +1 -1
  631. package/dist/internal/uuid.js +7 -3
  632. package/dist/internal/uuid.js.map +1 -1
  633. package/dist/internal/version.js +1 -1
  634. package/dist/net/NetAddress.d.ts.map +1 -1
  635. package/dist/net/NetAddress.js +2 -8
  636. package/dist/net/NetAddress.js.map +1 -1
  637. package/dist/observability/OtlpExporter.d.ts.map +1 -1
  638. package/dist/observability/OtlpExporter.js +5 -12
  639. package/dist/observability/OtlpExporter.js.map +1 -1
  640. package/dist/observability/OtlpMetrics.d.ts.map +1 -1
  641. package/dist/observability/OtlpMetrics.js +5 -3
  642. package/dist/observability/OtlpMetrics.js.map +1 -1
  643. package/dist/observability/OtlpResource.d.ts +3 -1
  644. package/dist/observability/OtlpResource.d.ts.map +1 -1
  645. package/dist/observability/OtlpResource.js +11 -4
  646. package/dist/observability/OtlpResource.js.map +1 -1
  647. package/dist/observability/OtlpSerialization.d.ts +5 -0
  648. package/dist/observability/OtlpSerialization.d.ts.map +1 -1
  649. package/dist/observability/OtlpSerialization.js +14 -3
  650. package/dist/observability/OtlpSerialization.js.map +1 -1
  651. package/dist/observability/internal/protobuf.d.ts +0 -9
  652. package/dist/observability/internal/protobuf.d.ts.map +1 -1
  653. package/dist/observability/internal/protobuf.js +2 -10
  654. package/dist/observability/internal/protobuf.js.map +1 -1
  655. package/dist/persistence/PersistedCache.d.ts.map +1 -1
  656. package/dist/persistence/PersistedCache.js +1 -1
  657. package/dist/persistence/PersistedCache.js.map +1 -1
  658. package/dist/persistence/PersistedQueue.d.ts +6 -2
  659. package/dist/persistence/PersistedQueue.d.ts.map +1 -1
  660. package/dist/persistence/PersistedQueue.js +162 -84
  661. package/dist/persistence/PersistedQueue.js.map +1 -1
  662. package/dist/persistence/Persistence.d.ts +28 -0
  663. package/dist/persistence/Persistence.d.ts.map +1 -1
  664. package/dist/persistence/Persistence.js +36 -8
  665. package/dist/persistence/Persistence.js.map +1 -1
  666. package/dist/persistence/RateLimiter.d.ts.map +1 -1
  667. package/dist/persistence/RateLimiter.js +8 -12
  668. package/dist/persistence/RateLimiter.js.map +1 -1
  669. package/dist/persistence/UserDirectories.d.ts +129 -0
  670. package/dist/persistence/UserDirectories.d.ts.map +1 -0
  671. package/dist/persistence/UserDirectories.js +178 -0
  672. package/dist/persistence/UserDirectories.js.map +1 -0
  673. package/dist/persistence/index.d.ts +5 -0
  674. package/dist/persistence/index.d.ts.map +1 -1
  675. package/dist/persistence/index.js +5 -0
  676. package/dist/persistence/index.js.map +1 -1
  677. package/dist/process/ChildProcess.d.ts +2 -1
  678. package/dist/process/ChildProcess.d.ts.map +1 -1
  679. package/dist/process/ChildProcess.js.map +1 -1
  680. package/dist/reactivity/AsyncResult.d.ts.map +1 -1
  681. package/dist/reactivity/AsyncResult.js +1 -1
  682. package/dist/reactivity/AsyncResult.js.map +1 -1
  683. package/dist/reactivity/Atom.d.ts +69 -30
  684. package/dist/reactivity/Atom.d.ts.map +1 -1
  685. package/dist/reactivity/Atom.js +40 -15
  686. package/dist/reactivity/Atom.js.map +1 -1
  687. package/dist/reactivity/AtomHttpApi.d.ts +5 -5
  688. package/dist/reactivity/AtomHttpApi.d.ts.map +1 -1
  689. package/dist/reactivity/AtomHttpApi.js +1 -1
  690. package/dist/reactivity/AtomHttpApi.js.map +1 -1
  691. package/dist/reactivity/AtomRegistry.d.ts +2 -2
  692. package/dist/reactivity/AtomRegistry.d.ts.map +1 -1
  693. package/dist/reactivity/AtomRegistry.js +44 -9
  694. package/dist/reactivity/AtomRegistry.js.map +1 -1
  695. package/dist/reactivity/AtomRpc.d.ts +3 -3
  696. package/dist/reactivity/AtomRpc.d.ts.map +1 -1
  697. package/dist/reactivity/AtomRpc.js +1 -1
  698. package/dist/reactivity/AtomRpc.js.map +1 -1
  699. package/dist/reactivity/Hydration.d.ts.map +1 -1
  700. package/dist/reactivity/Hydration.js +46 -12
  701. package/dist/reactivity/Hydration.js.map +1 -1
  702. package/dist/reactivity/Reactivity.d.ts +71 -7
  703. package/dist/reactivity/Reactivity.d.ts.map +1 -1
  704. package/dist/reactivity/Reactivity.js +21 -12
  705. package/dist/reactivity/Reactivity.js.map +1 -1
  706. package/dist/rpc/Rpc.d.ts +18 -0
  707. package/dist/rpc/Rpc.d.ts.map +1 -1
  708. package/dist/rpc/Rpc.js +20 -0
  709. package/dist/rpc/Rpc.js.map +1 -1
  710. package/dist/rpc/RpcClient.d.ts +26 -2
  711. package/dist/rpc/RpcClient.d.ts.map +1 -1
  712. package/dist/rpc/RpcClient.js +196 -60
  713. package/dist/rpc/RpcClient.js.map +1 -1
  714. package/dist/rpc/RpcSerialization.d.ts +15 -0
  715. package/dist/rpc/RpcSerialization.d.ts.map +1 -1
  716. package/dist/rpc/RpcSerialization.js +21 -5
  717. package/dist/rpc/RpcSerialization.js.map +1 -1
  718. package/dist/rpc/RpcServer.d.ts.map +1 -1
  719. package/dist/rpc/RpcServer.js +9 -18
  720. package/dist/rpc/RpcServer.js.map +1 -1
  721. package/dist/schema/Model.d.ts +1 -1
  722. package/dist/schema/VariantSchema.d.ts +22 -3
  723. package/dist/schema/VariantSchema.d.ts.map +1 -1
  724. package/dist/schema/VariantSchema.js +32 -18
  725. package/dist/schema/VariantSchema.js.map +1 -1
  726. package/dist/socket/Socket.d.ts +23 -1
  727. package/dist/socket/Socket.d.ts.map +1 -1
  728. package/dist/socket/Socket.js +36 -3
  729. package/dist/socket/Socket.js.map +1 -1
  730. package/dist/sql/Migrator.d.ts.map +1 -1
  731. package/dist/sql/Migrator.js +15 -3
  732. package/dist/sql/Migrator.js.map +1 -1
  733. package/dist/sql/SqlClient.d.ts +143 -5
  734. package/dist/sql/SqlClient.d.ts.map +1 -1
  735. package/dist/sql/SqlClient.js +148 -27
  736. package/dist/sql/SqlClient.js.map +1 -1
  737. package/dist/sql/SqlResolver.d.ts +9 -0
  738. package/dist/sql/SqlResolver.d.ts.map +1 -1
  739. package/dist/sql/SqlResolver.js +9 -0
  740. package/dist/sql/SqlResolver.js.map +1 -1
  741. package/dist/sql/Statement.d.ts +3 -1
  742. package/dist/sql/Statement.d.ts.map +1 -1
  743. package/dist/sql/Statement.js +24 -5
  744. package/dist/sql/Statement.js.map +1 -1
  745. package/dist/testing/TestClock.d.ts.map +1 -1
  746. package/dist/testing/TestClock.js +4 -2
  747. package/dist/testing/TestClock.js.map +1 -1
  748. package/dist/testing/TestSchema.d.ts +7 -1
  749. package/dist/testing/TestSchema.d.ts.map +1 -1
  750. package/dist/testing/TestSchema.js +9 -3
  751. package/dist/testing/TestSchema.js.map +1 -1
  752. package/dist/workflow/WorkflowEngine.d.ts.map +1 -1
  753. package/dist/workflow/WorkflowEngine.js +18 -4
  754. package/dist/workflow/WorkflowEngine.js.map +1 -1
  755. package/package.json +13 -3
  756. package/src/Array.ts +128 -55
  757. package/src/Bytes.ts +111 -0
  758. package/src/Channel.ts +263 -436
  759. package/src/ChannelSchema.ts +1 -49
  760. package/src/Chunk.ts +55 -61
  761. package/src/Config.ts +12 -86
  762. package/src/ConfigProvider.ts +2 -1
  763. package/src/Cron.ts +6 -3
  764. package/src/Duration.ts +66 -16
  765. package/src/Effect.ts +502 -167
  766. package/src/Equivalence.ts +7 -4
  767. package/src/Exit.ts +24 -9
  768. package/src/FiberHandle.ts +10 -9
  769. package/src/FiberMap.ts +13 -66
  770. package/src/FileSystem.ts +10 -0
  771. package/src/Graph.ts +171 -1263
  772. package/src/HashSet.ts +0 -60
  773. package/src/Iterable.ts +15 -14
  774. package/src/JsonSchema.ts +28 -3
  775. package/src/Layer.ts +2 -2
  776. package/src/ManagedRuntime.ts +72 -6
  777. package/src/Metric.ts +249 -507
  778. package/src/MutableHashMap.ts +4 -473
  779. package/src/Number.ts +2 -2
  780. package/src/Optic.ts +17 -332
  781. package/src/Path.ts +9 -1
  782. package/src/PubSub.ts +12 -7
  783. package/src/Queue.ts +5 -37
  784. package/src/Random.ts +1 -1
  785. package/src/RcMap.ts +14 -8
  786. package/src/Record.ts +51 -0
  787. package/src/Ref.ts +7 -104
  788. package/src/References.ts +5 -4
  789. package/src/RequestResolver.ts +46 -87
  790. package/src/Resource.ts +1 -1
  791. package/src/Runtime.ts +19 -18
  792. package/src/Schedule.ts +2 -94
  793. package/src/Schema.ts +591 -356
  794. package/src/SchemaAST.ts +20 -9
  795. package/src/SchemaGetter.ts +22 -5
  796. package/src/SchemaIssue.ts +44 -53
  797. package/src/SchemaRepresentation.ts +64 -1
  798. package/src/SchemaTransformation.ts +1 -1
  799. package/src/Scope.ts +12 -2
  800. package/src/ScopedCache.ts +17 -142
  801. package/src/SemVer.ts +1528 -0
  802. package/src/SemVerRange.ts +883 -0
  803. package/src/Sink.ts +6 -2
  804. package/src/Stream.ts +334 -1011
  805. package/src/String.ts +8 -8
  806. package/src/TextDiff.ts +766 -0
  807. package/src/TxHashMap.ts +1 -103
  808. package/src/TxHashSet.ts +48 -753
  809. package/src/ai/AiError.ts +66 -4
  810. package/src/ai/Chat.ts +10 -5
  811. package/src/ai/Decision.ts +49 -1
  812. package/src/ai/DecisionModel.ts +264 -108
  813. package/src/ai/EmbeddingModel.ts +25 -13
  814. package/src/ai/McpClient.ts +1211 -0
  815. package/src/ai/McpClientError.ts +329 -0
  816. package/src/ai/McpProtocol.ts +2 -2
  817. package/src/ai/McpSchema.ts +153 -35
  818. package/src/ai/McpServer.ts +217 -220
  819. package/src/ai/Prompt.ts +49 -35
  820. package/src/ai/Response.ts +195 -65
  821. package/src/ai/Tool.ts +12 -4
  822. package/src/ai/Toolkit.ts +78 -10
  823. package/src/ai/index.ts +12 -0
  824. package/src/ai/internal/mcpCore.ts +13 -14
  825. package/src/ai/internal/mcpProtocol/v2024_11_05.ts +1 -1
  826. package/src/ai/internal/mcpProtocol/v2025_03_26.ts +1 -1
  827. package/src/ai/internal/mcpProtocol/v2025_06_18.ts +3 -3
  828. package/src/ai/internal/mcpProtocol/v2025_11_25.ts +3 -3
  829. package/src/ai/internal/mcpProtocol/v2026_07_28.ts +12 -14
  830. package/src/ai/internal/mcpProtocol.ts +22 -2
  831. package/src/ai/internal/mcpRuntime.ts +3 -4
  832. package/src/ai/internal/mcpSchema/v2024_11_05.ts +20 -13
  833. package/src/ai/internal/mcpSchema/v2025_03_26.ts +4 -2
  834. package/src/ai/internal/mcpSchema/v2025_06_18.ts +7 -7
  835. package/src/ai/internal/mcpSchema/v2025_11_25.ts +8 -8
  836. package/src/ai/internal/mcpSchema/v2026_07_28.ts +44 -42
  837. package/src/cli/CliError.ts +49 -4
  838. package/src/cli/Command.ts +316 -9
  839. package/src/cli/Completions.ts +5 -0
  840. package/src/cli/Flag.ts +117 -0
  841. package/src/cli/GlobalFlag.ts +3 -3
  842. package/src/cli/Param.ts +122 -0
  843. package/src/cli/TerminalCapabilities.ts +156 -0
  844. package/src/cli/index.ts +6 -0
  845. package/src/cli/internal/command.ts +8 -3
  846. package/src/cli/internal/completions/bash.ts +4 -3
  847. package/src/cli/internal/completions/descriptor.ts +11 -1
  848. package/src/cli/internal/completions/fish.ts +10 -8
  849. package/src/cli/internal/completions/powershell.ts +23 -14
  850. package/src/cli/internal/completions/zsh.ts +8 -5
  851. package/src/cli/internal/formatter.ts +18 -0
  852. package/src/cli/internal/lexer.ts +12 -5
  853. package/src/cli/internal/parser.ts +31 -11
  854. package/src/cluster/ClusterCron.ts +94 -35
  855. package/src/cluster/ClusterMetrics.ts +149 -7
  856. package/src/cluster/ClusterWorkflowEngine.ts +84 -41
  857. package/src/cluster/Entity.ts +4 -0
  858. package/src/cluster/MessageStorage.ts +7 -0
  859. package/src/cluster/Runners.ts +76 -25
  860. package/src/cluster/Sharding.ts +118 -38
  861. package/src/cluster/ShardingConfig.ts +15 -0
  862. package/src/cluster/SqlMessageStorage.ts +58 -55
  863. package/src/cluster/SqlRunnerStorage.ts +10 -4
  864. package/src/cluster/internal/entityManager.ts +80 -10
  865. package/src/devtools/DevTools.ts +3 -2
  866. package/src/devtools/DevToolsClient.ts +27 -10
  867. package/src/encoding/Base64Url.ts +31 -0
  868. package/src/encoding/Ini.ts +3 -0
  869. package/src/encoding/JsonArray.ts +849 -0
  870. package/src/encoding/Ndjson.ts +211 -20
  871. package/src/encoding/SchemaBinary.ts +14 -48
  872. package/src/encoding/Tar.ts +1417 -0
  873. package/src/encoding/Toml.ts +3 -3
  874. package/src/encoding/Xml.ts +2037 -0
  875. package/src/encoding/Yaml.ts +108 -36
  876. package/src/encoding/Zip.ts +1558 -0
  877. package/src/encoding/index.ts +24 -0
  878. package/src/eventlog/EventJournal.ts +611 -227
  879. package/src/eventlog/EventLog.ts +496 -196
  880. package/src/eventlog/EventLogEncryption.ts +128 -43
  881. package/src/eventlog/EventLogMessage.ts +62 -11
  882. package/src/eventlog/EventLogRemote.ts +77 -21
  883. package/src/eventlog/EventLogServer.ts +162 -20
  884. package/src/eventlog/EventLogServerEncrypted.ts +121 -80
  885. package/src/eventlog/EventLogServerUnencrypted.ts +180 -77
  886. package/src/eventlog/EventRow.ts +706 -0
  887. package/src/eventlog/SqlEventJournal.ts +453 -173
  888. package/src/eventlog/SqlEventLogServerEncrypted.ts +212 -83
  889. package/src/eventlog/SqlEventLogServerUnencrypted.ts +141 -62
  890. package/src/eventlog/index.ts +6 -0
  891. package/src/eventlog/internal/conflicts.ts +123 -0
  892. package/src/graphql/GraphQLClientError.ts +5 -12
  893. package/src/graphql/GraphQLProtocol.ts +12 -9
  894. package/src/graphql/GraphQLResolver.ts +90 -239
  895. package/src/http/FetchHttpClient.ts +56 -6
  896. package/src/http/FindMyWay/internal/router.ts +11 -0
  897. package/src/http/Headers.ts +337 -154
  898. package/src/http/HttpClient.ts +126 -135
  899. package/src/http/HttpClientRequest.ts +142 -4
  900. package/src/http/HttpClientResponse.ts +71 -0
  901. package/src/http/HttpEffect.ts +25 -33
  902. package/src/http/HttpIncomingMessage.ts +3 -23
  903. package/src/http/HttpMiddleware.ts +180 -23
  904. package/src/http/HttpRouter.ts +8 -2
  905. package/src/http/HttpServerError.ts +6 -3
  906. package/src/http/HttpServerRequest.ts +71 -12
  907. package/src/http/HttpServerResponse.ts +49 -23
  908. package/src/http/HttpStaticServer.ts +25 -9
  909. package/src/http/MultipartParser/internal/contentType.ts +107 -6
  910. package/src/http/MultipartParser/internal/headers.ts +4 -16
  911. package/src/http/MultipartParser/internal/multipart.ts +10 -32
  912. package/src/http/Url.ts +6 -1
  913. package/src/http/internal/decompression.ts +26 -17
  914. package/src/http/internal/lazyStream.ts +25 -0
  915. package/src/http/internal/requestState.ts +33 -0
  916. package/src/http/internal/webResponse.ts +20 -0
  917. package/src/http-api/HttpApi.ts +1 -1
  918. package/src/http-api/HttpApiBuilder.ts +151 -23
  919. package/src/http-api/HttpApiClient.ts +158 -30
  920. package/src/http-api/HttpApiEndpoint.ts +144 -33
  921. package/src/http-api/HttpApiError.ts +55 -0
  922. package/src/http-api/HttpApiScalar.ts +4 -3
  923. package/src/http-api/HttpApiSchema.ts +275 -13
  924. package/src/http-api/HttpApiSwagger.ts +11 -4
  925. package/src/http-api/HttpApiTest.ts +33 -9
  926. package/src/http-api/OpenApi.ts +84 -42
  927. package/src/http-api/internal/path.ts +40 -12
  928. package/src/index.ts +24 -0
  929. package/src/internal/core.ts +1 -1
  930. package/src/internal/dateTime.ts +20 -7
  931. package/src/internal/effect.ts +120 -84
  932. package/src/internal/hashMap.ts +2 -2
  933. package/src/internal/hydration.ts +15 -0
  934. package/src/internal/inflate.ts +710 -0
  935. package/src/internal/record.ts +6 -0
  936. package/src/internal/request.ts +21 -6
  937. package/src/internal/schedule.ts +20 -39
  938. package/src/internal/schema/fromJsonSchemaDocument.ts +262 -193
  939. package/src/internal/schema/interpreter.ts +58 -45
  940. package/src/internal/schema/standardSchema.ts +32 -30
  941. package/src/internal/schema/toCodeDocument.ts +8 -3
  942. package/src/internal/schema/toCodec.ts +116 -1
  943. package/src/internal/schema/toFormatter.ts +6 -6
  944. package/src/internal/schema/toJsonSchemaDocument.ts +69 -39
  945. package/src/internal/trie.ts +1 -3
  946. package/src/internal/uuid.ts +15 -10
  947. package/src/internal/version.ts +1 -1
  948. package/src/net/NetAddress.ts +2 -9
  949. package/src/observability/OtlpExporter.ts +5 -12
  950. package/src/observability/OtlpMetrics.ts +5 -3
  951. package/src/observability/OtlpResource.ts +16 -6
  952. package/src/observability/OtlpSerialization.ts +17 -3
  953. package/src/observability/internal/protobuf.ts +2 -10
  954. package/src/persistence/PersistedCache.ts +3 -1
  955. package/src/persistence/PersistedQueue.ts +223 -153
  956. package/src/persistence/Persistence.ts +64 -30
  957. package/src/persistence/RateLimiter.ts +18 -21
  958. package/src/persistence/UserDirectories.ts +273 -0
  959. package/src/persistence/index.ts +6 -0
  960. package/src/process/ChildProcess.ts +2 -1
  961. package/src/reactivity/AsyncResult.ts +4 -38
  962. package/src/reactivity/Atom.ts +134 -166
  963. package/src/reactivity/AtomHttpApi.ts +10 -16
  964. package/src/reactivity/AtomRegistry.ts +50 -29
  965. package/src/reactivity/AtomRpc.ts +6 -22
  966. package/src/reactivity/Hydration.ts +53 -12
  967. package/src/reactivity/Reactivity.ts +97 -39
  968. package/src/rpc/Rpc.ts +21 -0
  969. package/src/rpc/RpcClient.ts +279 -103
  970. package/src/rpc/RpcSerialization.ts +21 -5
  971. package/src/rpc/RpcServer.ts +11 -20
  972. package/src/schema/VariantSchema.ts +86 -22
  973. package/src/socket/Socket.ts +45 -20
  974. package/src/sql/Migrator.ts +19 -9
  975. package/src/sql/SqlClient.ts +266 -29
  976. package/src/sql/SqlResolver.ts +9 -0
  977. package/src/sql/Statement.ts +35 -8
  978. package/src/testing/TestClock.ts +4 -1
  979. package/src/testing/TestSchema.ts +9 -3
  980. package/src/workflow/WorkflowEngine.ts +34 -10
  981. package/dist/http/internal/preResponseHandler.d.ts +0 -2
  982. package/dist/http/internal/preResponseHandler.d.ts.map +0 -1
  983. package/dist/http/internal/preResponseHandler.js +0 -14
  984. package/dist/http/internal/preResponseHandler.js.map +0 -1
  985. package/src/http/internal/preResponseHandler.ts +0 -19
@@ -0,0 +1,883 @@
1
+ /**
2
+ * npm-style version ranges over `SemVer` values.
3
+ *
4
+ * A `SemVerRange` keeps the syntax it was parsed from, such as `^1.2`, `~1.2.3`,
5
+ * `1.x`, or `1.2.3 - 2.3.4`. Matching follows node-semver's pre-release rules,
6
+ * except that wildcard alternatives preserve the union described in {@link matches}.
7
+ *
8
+ * @stability unstable
9
+ * @since 4.0.6
10
+ */
11
+ import * as Equal from "./Equal.ts"
12
+ import { dual } from "./Function.ts"
13
+ import * as Hash from "./Hash.ts"
14
+ import { type Inspectable, NodeInspectSymbol } from "./Inspectable.ts"
15
+ import * as Option from "./Option.ts"
16
+ import { type Pipeable, pipeArguments } from "./Pipeable.ts"
17
+ import { hasProperty } from "./Predicate.ts"
18
+ import * as Result from "./Result.ts"
19
+ import {
20
+ compareCore,
21
+ type Core,
22
+ fromInputUnsafe as versionFromInputUnsafe,
23
+ type Input as VersionInput,
24
+ invalid,
25
+ parseComponent,
26
+ prereleaseIdentifier,
27
+ sameCore,
28
+ type SemVer,
29
+ type SemVerError,
30
+ tryParse
31
+ } from "./SemVer.ts"
32
+
33
+ const TypeId = "~effect/SemVerRange"
34
+
35
+ /**
36
+ * Represents an npm-style version range.
37
+ *
38
+ * **Details**
39
+ *
40
+ * Ranges are opaque. {@link format} preserves parsed operators such as `^1.2`
41
+ * rather than expanding them into bounds.
42
+ *
43
+ * @see {@link parse} for decoding range strings
44
+ * @see {@link matches} for matching versions
45
+ * @stability unstable
46
+ * @category models
47
+ * @since 4.0.6
48
+ */
49
+ export interface SemVerRange extends Pipeable, Equal.Equal, Inspectable {
50
+ readonly [TypeId]: typeof TypeId
51
+ }
52
+
53
+ interface PartialVersion {
54
+ // The components given before the first wildcard; empty for `*`.
55
+ readonly components: ReadonlyArray<number>
56
+ // Only a full MAJOR.MINOR.PATCH may carry a pre-release.
57
+ readonly prerelease: ReadonlyArray<string | number>
58
+ }
59
+
60
+ type Operator = "=" | "<" | "<=" | ">" | ">=" | "~" | "^"
61
+
62
+ type Comparator =
63
+ | {
64
+ readonly _tag: "Comparator"
65
+ readonly operator: Operator
66
+ readonly version: PartialVersion
67
+ }
68
+ | {
69
+ readonly _tag: "Hyphen"
70
+ readonly from: PartialVersion
71
+ readonly to: PartialVersion
72
+ }
73
+
74
+ interface SemVerRangeImpl extends SemVerRange {
75
+ // Alternatives separated by `||`, each a set of comparators that must all match.
76
+ readonly sets: ReadonlyArray<ReadonlyArray<Comparator>>
77
+ matcher?: (version: SemVer) => boolean
78
+ prereleaseMatcher?: (version: SemVer) => boolean
79
+ }
80
+
81
+ /**
82
+ * Options controlling how pre-release versions match a range.
83
+ *
84
+ * @stability unstable
85
+ * @category models
86
+ * @since 4.0.6
87
+ */
88
+ export interface MatchOptions {
89
+ /**
90
+ * Lets pre-release versions match any comparator set whose bounds contain
91
+ * them, and lowers wildcard lower bounds to include pre-releases.
92
+ *
93
+ * @default false
94
+ */
95
+ readonly includePrerelease?: boolean | undefined
96
+ }
97
+
98
+ const SemVerRangeProto: SemVerRange = {
99
+ [TypeId]: TypeId,
100
+ [Equal.symbol](this: SemVerRange, that: unknown): boolean {
101
+ return isSemVerRange(that) && format(this) === format(that)
102
+ },
103
+ [Hash.symbol](this: SemVerRange): number {
104
+ return Hash.string(format(this))
105
+ },
106
+ toString(this: SemVerRange) {
107
+ return `SemVerRange(${format(this)})`
108
+ },
109
+ toJSON(this: SemVerRange) {
110
+ return { _id: "SemVerRange", value: format(this) }
111
+ },
112
+ [NodeInspectSymbol](this: SemVerRange) {
113
+ return this.toJSON()
114
+ },
115
+ pipe() {
116
+ return pipeArguments(this, arguments)
117
+ }
118
+ }
119
+
120
+ /**
121
+ * Checks whether a value is a `SemVerRange`.
122
+ *
123
+ * @stability unstable
124
+ * @category guards
125
+ * @since 4.0.6
126
+ */
127
+ export const isSemVerRange = (u: unknown): u is SemVerRange => hasProperty(u, TypeId)
128
+
129
+ const isRangeArgs = (args: IArguments) => isSemVerRange(args[0])
130
+
131
+ const wildcard: PartialVersion = { components: [], prerelease: [] }
132
+ const operatorPattern = /^(<=|>=|<|>|=|~|\^)?(.*)$/
133
+ const isWildcard = (part: string): boolean => part === "x" || part === "X" || part === "*"
134
+
135
+ const componentLabels = ["major", "minor", "patch"] as const
136
+
137
+ const parsePartial = (input: string): PartialVersion => {
138
+ if (input.length === 0) return invalid("expected a version after the operator")
139
+ if (input.includes("+")) {
140
+ return invalid(`build metadata is not allowed in ranges, received ${JSON.stringify(input)}`)
141
+ }
142
+ const dash = input.indexOf("-")
143
+ const parts = (dash === -1 ? input : input.slice(0, dash)).split(".")
144
+ if (parts.length > 3) return invalid(`expected at most MAJOR.MINOR.PATCH, received ${JSON.stringify(input)}`)
145
+ const components: Array<number> = []
146
+ for (let i = 0; i < parts.length; i++) {
147
+ if (isWildcard(parts[i])) continue
148
+ // A skipped wildcard leaves `components` shorter than the position reached.
149
+ if (components.length < i) {
150
+ return invalid(`a version component cannot follow a wildcard, received ${JSON.stringify(input)}`)
151
+ }
152
+ components.push(parseComponent(parts[i], componentLabels[i]))
153
+ }
154
+ if (dash === -1) return { components, prerelease: [] }
155
+ if (components.length < 3) {
156
+ return invalid(`a pre-release requires MAJOR.MINOR.PATCH, received ${JSON.stringify(input)}`)
157
+ }
158
+ return { components, prerelease: input.slice(dash + 1).split(".").map(prereleaseIdentifier) }
159
+ }
160
+
161
+ const parseComparatorSet = (input: string): ReadonlyArray<Comparator> => {
162
+ const tokens = input.split(/\s+/).filter((token) => token.length > 0)
163
+ if (tokens.length === 0) return invalid("expected a comparator")
164
+ if (tokens.length === 3 && tokens[1] === "-") {
165
+ return [{ _tag: "Hyphen", from: parsePartial(tokens[0]), to: parsePartial(tokens[2]) }]
166
+ }
167
+ const comparators: Array<Comparator> = []
168
+ for (let i = 0; i < tokens.length; i++) {
169
+ const [, operator, rest] = operatorPattern.exec(tokens[i])!
170
+ // Allow whitespace between an operator and its version, as in `>= 1.2.3`.
171
+ const version = rest.length === 0 && operator !== undefined && i + 1 < tokens.length ? tokens[++i] : rest
172
+ comparators.push({ _tag: "Comparator", operator: (operator ?? "=") as Operator, version: parsePartial(version) })
173
+ }
174
+ return comparators
175
+ }
176
+
177
+ const makeRange = (sets: ReadonlyArray<ReadonlyArray<Comparator>>): SemVerRange => {
178
+ const self = Object.create(SemVerRangeProto)
179
+ self.sets = sets
180
+ return self
181
+ }
182
+
183
+ const parseOrThrow = (input: string): SemVerRange => {
184
+ if (input.trim().length === 0) return any
185
+ return makeRange(input.split("||").map(parseComparatorSet))
186
+ }
187
+
188
+ /**
189
+ * Parses an npm-style version range.
190
+ *
191
+ * **Details**
192
+ *
193
+ * Supports:
194
+ *
195
+ * - comparators `=`, `<`, `<=`, `>`, `>=`, whitespace-separated as AND;
196
+ * - alternatives separated by `||`;
197
+ * - X-ranges such as `1.x`, `1.2.*`, `1`, and `*`;
198
+ * - tilde (`~1.2.3`), caret (`^1.2.3`), and hyphen (`1.2.3 - 2.3.4`) ranges.
199
+ *
200
+ * An empty string is equivalent to `*`. Invalid input fails with
201
+ * `SemVer.SemVerError`.
202
+ *
203
+ * **Gotchas**
204
+ *
205
+ * Versions must follow the strict SemVer grammar apart from wildcards, so a
206
+ * `v` prefix, leading zeros, build metadata, and empty `||` alternatives are
207
+ * rejected.
208
+ *
209
+ * **Example** (Parsing and matching a caret range)
210
+ *
211
+ * ```ts import.meta.vitest
212
+ * import { Result, SemVerRange } from "effect"
213
+ *
214
+ * const range = SemVerRange.parseUnsafe("^1.2.0 || >=3.0.0-rc.1")
215
+ *
216
+ * SemVerRange.matches(range, "1.9.0") // => true
217
+ * SemVerRange.matches(range, "2.0.0") // => false
218
+ * SemVerRange.matches(range, "3.0.0-rc.2") // => true
219
+ * Result.isFailure(SemVerRange.parse("^v1.2.0")) // => true
220
+ * ```
221
+ *
222
+ * @see {@link parseUnsafe} for throwing on invalid input
223
+ * @see {@link format} for the inverse operation
224
+ * @stability unstable
225
+ * @category constructors
226
+ * @since 4.0.6
227
+ */
228
+ export const parse = (input: string): Result.Result<SemVerRange, SemVerError> =>
229
+ tryParse("SemVer range", input, parseOrThrow)
230
+
231
+ /**
232
+ * Parses an npm-style version range and throws `SemVer.SemVerError` for
233
+ * invalid input.
234
+ *
235
+ * @see {@link parse} for non-throwing parsing
236
+ * @stability unstable
237
+ * @category constructors
238
+ * @since 4.0.6
239
+ */
240
+ export const parseUnsafe = (input: string): SemVerRange => Result.getOrThrow(parse(input))
241
+
242
+ /**
243
+ * Values accepted by `fromInput`: a range or a range string.
244
+ *
245
+ * @see {@link fromInput} for converting inputs
246
+ * @stability unstable
247
+ * @category models
248
+ * @since 4.0.6
249
+ */
250
+ export type Input = SemVerRange | string
251
+
252
+ /**
253
+ * Converts a range or range string into a `SemVerRange`.
254
+ *
255
+ * **Details**
256
+ *
257
+ * Ranges are returned unchanged and strings are parsed like {@link parse}.
258
+ * Invalid strings fail with `SemVer.SemVerError`.
259
+ *
260
+ * @see {@link fromInputUnsafe} for throwing on invalid input
261
+ * @stability unstable
262
+ * @category constructors
263
+ * @since 4.0.6
264
+ */
265
+ export const fromInput = (input: Input): Result.Result<SemVerRange, SemVerError> =>
266
+ isSemVerRange(input) ? Result.succeed(input) : parse(input)
267
+
268
+ /**
269
+ * Converts a range or range string into a `SemVerRange` and throws
270
+ * `SemVer.SemVerError` for invalid input.
271
+ *
272
+ * @see {@link fromInput} for non-throwing conversion
273
+ * @stability unstable
274
+ * @category constructors
275
+ * @since 4.0.6
276
+ */
277
+ export const fromInputUnsafe = (input: Input): SemVerRange => Result.getOrThrow(fromInput(input))
278
+
279
+ const toPartial = (version: SemVer): PartialVersion => ({
280
+ components: [version.major, version.minor, version.patch],
281
+ prerelease: version.prerelease
282
+ })
283
+
284
+ const comparator = (operator: Operator, version: VersionInput): Comparator => ({
285
+ _tag: "Comparator",
286
+ operator,
287
+ version: toPartial(versionFromInputUnsafe(version))
288
+ })
289
+
290
+ const fromComparator = (operator: Operator, version: VersionInput): SemVerRange =>
291
+ makeRange([[comparator(operator, version)]])
292
+
293
+ /**
294
+ * The range matching every release, written `*`.
295
+ *
296
+ * **Gotchas**
297
+ *
298
+ * Like every range, `*` only matches pre-releases with `includePrerelease`.
299
+ *
300
+ * @stability unstable
301
+ * @category constants
302
+ * @since 4.0.6
303
+ */
304
+ export const any: SemVerRange = makeRange([[{ _tag: "Comparator", operator: "=", version: wildcard }]])
305
+
306
+ /**
307
+ * Creates a range matching exactly one version, written `1.2.3`.
308
+ *
309
+ * **Details**
310
+ *
311
+ * Build metadata is dropped because ranges cannot express it and it does not
312
+ * affect matching, so `1.2.3+a` and `1.2.3+b` both match. Throws `SemVerError` for an invalid `SemVer.Input`.
313
+ *
314
+ * **Example** (Building ranges from versions)
315
+ *
316
+ * ```ts import.meta.vitest
317
+ * import { SemVer, SemVerRange } from "effect"
318
+ *
319
+ * const version = SemVer.parseUnsafe("1.2.3+build.5")
320
+ *
321
+ * SemVerRange.format(SemVerRange.exact(version)) // => "1.2.3"
322
+ * SemVerRange.format(SemVerRange.greaterThanOrEqualTo(version)) // => ">=1.2.3"
323
+ * SemVerRange.format(SemVerRange.caret("1.2.3")) // => "^1.2.3"
324
+ * SemVerRange.matches(SemVerRange.greaterThan(version), "1.2.4") // => true
325
+ * ```
326
+ *
327
+ * @stability unstable
328
+ * @category constructors
329
+ * @since 4.0.6
330
+ */
331
+ export const exact = (version: VersionInput): SemVerRange => fromComparator("=", version)
332
+
333
+ /**
334
+ * Creates a range matching versions with higher precedence, written `>1.2.3`.
335
+ *
336
+ * **Details**
337
+ *
338
+ * Build metadata is dropped. Throws `SemVerError` for an invalid `SemVer.Input`.
339
+ *
340
+ * @stability unstable
341
+ * @category constructors
342
+ * @since 4.0.6
343
+ */
344
+ export const greaterThan = (version: VersionInput): SemVerRange => fromComparator(">", version)
345
+
346
+ /**
347
+ * Creates a range matching versions with at least the given precedence, written `>=1.2.3`.
348
+ *
349
+ * **Details**
350
+ *
351
+ * Build metadata is dropped. Throws `SemVerError` for an invalid `SemVer.Input`.
352
+ *
353
+ * @stability unstable
354
+ * @category constructors
355
+ * @since 4.0.6
356
+ */
357
+ export const greaterThanOrEqualTo = (version: VersionInput): SemVerRange => fromComparator(">=", version)
358
+
359
+ /**
360
+ * Creates a range matching versions with lower precedence, written `<1.2.3`.
361
+ *
362
+ * **Details**
363
+ *
364
+ * Build metadata is dropped. Throws `SemVerError` for an invalid `SemVer.Input`.
365
+ *
366
+ * @stability unstable
367
+ * @category constructors
368
+ * @since 4.0.6
369
+ */
370
+ export const lessThan = (version: VersionInput): SemVerRange => fromComparator("<", version)
371
+
372
+ /**
373
+ * Creates a range matching versions with at most the given precedence, written `<=1.2.3`.
374
+ *
375
+ * **Details**
376
+ *
377
+ * Build metadata is dropped. Throws `SemVerError` for an invalid `SemVer.Input`.
378
+ *
379
+ * @stability unstable
380
+ * @category constructors
381
+ * @since 4.0.6
382
+ */
383
+ export const lessThanOrEqualTo = (version: VersionInput): SemVerRange => fromComparator("<=", version)
384
+
385
+ /**
386
+ * Creates a range matching versions compatible with a version, written `^1.2.3`.
387
+ *
388
+ * **Details**
389
+ *
390
+ * Allows changes that do not modify the left-most non-zero component: `^1.2.3`
391
+ * means `>=1.2.3 <2.0.0-0` and `^0.2.3` means `>=0.2.3 <0.3.0-0`. Build
392
+ * metadata is dropped. Throws `SemVerError` for an invalid `SemVer.Input`.
393
+ *
394
+ * @stability unstable
395
+ * @category constructors
396
+ * @since 4.0.6
397
+ */
398
+ export const caret = (version: VersionInput): SemVerRange => fromComparator("^", version)
399
+
400
+ /**
401
+ * Creates a range matching patch-level changes of a version, written `~1.2.3`.
402
+ *
403
+ * **Details**
404
+ *
405
+ * `~1.2.3` means `>=1.2.3 <1.3.0-0`. Build metadata is dropped.
406
+ * Throws `SemVerError` for an invalid `SemVer.Input`.
407
+ *
408
+ * @stability unstable
409
+ * @category constructors
410
+ * @since 4.0.6
411
+ */
412
+ export const tilde = (version: VersionInput): SemVerRange => fromComparator("~", version)
413
+
414
+ /**
415
+ * Creates a range matching versions within inclusive bounds, written
416
+ * `>=1.2.3 <=2.0.0`.
417
+ *
418
+ * **Details**
419
+ *
420
+ * Matches the same versions as `SemVer.between`, subject to the pre-release
421
+ * rule. Build metadata is dropped. Throws `SemVerError` for an invalid `SemVer.Input`.
422
+ *
423
+ * @stability unstable
424
+ * @category constructors
425
+ * @since 4.0.6
426
+ */
427
+ export const between = (options: { readonly minimum: VersionInput; readonly maximum: VersionInput }): SemVerRange =>
428
+ makeRange([[comparator(">=", options.minimum), comparator("<=", options.maximum)]])
429
+
430
+ const formatPartial = (self: PartialVersion): string => {
431
+ if (self.components.length === 0) return "*"
432
+ const core = self.components.join(".")
433
+ return self.prerelease.length === 0 ? core : `${core}-${self.prerelease.join(".")}`
434
+ }
435
+
436
+ const formatComparator = (self: Comparator): string =>
437
+ self._tag === "Hyphen"
438
+ ? `${formatPartial(self.from)} - ${formatPartial(self.to)}`
439
+ : `${self.operator === "=" ? "" : self.operator}${formatPartial(self.version)}`
440
+
441
+ /**
442
+ * Formats a range in canonical form.
443
+ *
444
+ * **Details**
445
+ *
446
+ * Operators and comparators are kept as parsed. Wildcard spellings are
447
+ * normalized by dropping trailing wildcard components (`1.x` and `1.*.*`
448
+ * format as `1`, and `x` as `*`), and an explicit `=` operator is omitted.
449
+ *
450
+ * @see {@link parse} for the inverse operation
451
+ * @stability unstable
452
+ * @category converting
453
+ * @since 4.0.6
454
+ */
455
+ export const format = (self: SemVerRange): string =>
456
+ (self as SemVerRangeImpl).sets.map((set) => set.map(formatComparator).join(" ")).join(" || ")
457
+
458
+ interface Bound extends Core {
459
+ readonly operator: "=" | "<" | "<=" | ">" | ">="
460
+ }
461
+
462
+ const bound = (
463
+ operator: Bound["operator"],
464
+ [major = 0, minor = 0, patch = 0]: ReadonlyArray<number>,
465
+ prerelease: ReadonlyArray<string | number>
466
+ ): Bound => ({ operator, major, minor, patch, prerelease })
467
+
468
+ // The expansions below follow node-semver's `Range` desugaring. `z` is the
469
+ // pre-release a wildcard lower bound carries: `[0]` when pre-releases are
470
+ // included, so `>=1.2` admits `1.2.0-alpha`, and empty otherwise.
471
+
472
+ // Exclusive upper bound at the first pre-release of `core`, node-semver's `<X.Y.Z-0`.
473
+ const below = (core: ReadonlyArray<number>): Bound => bound("<", core, [0])
474
+
475
+ // The lowest version a partial covers.
476
+ const floor = (self: PartialVersion, z: ReadonlyArray<number>): Bound =>
477
+ bound(">=", self.components, self.components.length === 3 ? self.prerelease : z)
478
+
479
+ // The first core above every version the first `precision` components cover.
480
+ const after = (components: ReadonlyArray<number>, precision: number): ReadonlyArray<number> => {
481
+ const next = components.slice(0, precision)
482
+ next[precision - 1]++
483
+ return next
484
+ }
485
+
486
+ const expandCaret = (self: PartialVersion, z: ReadonlyArray<number>): ReadonlyArray<Bound> => {
487
+ const n = self.components.length
488
+ if (n === 0) return []
489
+ // The first non-zero component may not change; `^0.0.x` pins the patch.
490
+ const precision = self.components.findIndex((component) => component !== 0) + 1 || n
491
+ return [floor(self, z), below(after(self.components, precision))]
492
+ }
493
+
494
+ const expandTilde = (self: PartialVersion, z: ReadonlyArray<number>): ReadonlyArray<Bound> => {
495
+ const n = self.components.length
496
+ if (n === 0) return []
497
+ return [floor(self, z), below(after(self.components, Math.min(n, 2)))]
498
+ }
499
+
500
+ const expandXRange = (
501
+ operator: Bound["operator"],
502
+ self: PartialVersion,
503
+ z: ReadonlyArray<number>
504
+ ): ReadonlyArray<Bound> => {
505
+ const n = self.components.length
506
+ if (n === 3) return [bound(operator, self.components, self.prerelease)]
507
+ if (n === 0) return operator === "<" || operator === ">" ? [below([0, 0, 0])] : []
508
+ switch (operator) {
509
+ case "=":
510
+ return [floor(self, z), below(after(self.components, n))]
511
+ case ">":
512
+ return [bound(">=", after(self.components, n), z)]
513
+ case ">=":
514
+ return [floor(self, z)]
515
+ case "<=":
516
+ return [below(after(self.components, n))]
517
+ case "<":
518
+ return [below(self.components)]
519
+ }
520
+ }
521
+
522
+ const expand = (self: Comparator, includePrerelease: boolean): ReadonlyArray<Bound> => {
523
+ const z = includePrerelease ? [0] : []
524
+ if (self._tag === "Hyphen") {
525
+ const { from, to } = self
526
+ // Unlike `>=`, a full hyphen lower bound without a pre-release also takes `z`.
527
+ const lower = from.components.length === 0
528
+ ? []
529
+ : [bound(">=", from.components, from.prerelease.length > 0 ? from.prerelease : z)]
530
+ return [...lower, ...expandXRange("<=", to, z)]
531
+ }
532
+ switch (self.operator) {
533
+ case "^":
534
+ return expandCaret(self.version, z)
535
+ case "~":
536
+ return expandTilde(self.version, z)
537
+ default:
538
+ return expandXRange(self.operator, self.version, z)
539
+ }
540
+ }
541
+
542
+ const testBound = (self: Bound, version: SemVer): boolean => {
543
+ const result = compareCore(version, self)
544
+ switch (self.operator) {
545
+ case "=":
546
+ return result === 0
547
+ case "<":
548
+ return result < 0
549
+ case "<=":
550
+ return result <= 0
551
+ case ">":
552
+ return result > 0
553
+ case ">=":
554
+ return result >= 0
555
+ }
556
+ }
557
+
558
+ const compile = (self: SemVerRangeImpl, includePrerelease: boolean): (version: SemVer) => boolean => {
559
+ const sets = self.sets.map((set) => set.flatMap((comparator) => expand(comparator, includePrerelease)))
560
+ return (version) =>
561
+ sets.some((bounds) =>
562
+ bounds.every((bound) => testBound(bound, version)) &&
563
+ (includePrerelease || version.prerelease.length === 0 ||
564
+ bounds.some((bound) => bound.prerelease.length > 0 && sameCore(bound, version)))
565
+ )
566
+ }
567
+
568
+ const matcher = (range: SemVerRange, options: MatchOptions | undefined): (version: SemVer) => boolean => {
569
+ const self = range as SemVerRangeImpl
570
+ return options?.includePrerelease === true
571
+ ? (self.prereleaseMatcher ??= compile(self, true))
572
+ : (self.matcher ??= compile(self, false))
573
+ }
574
+
575
+ /**
576
+ * Checks whether a range matches a version.
577
+ *
578
+ * **Details**
579
+ *
580
+ * Partial versions, tilde, caret, and hyphen ranges expand to bounds following
581
+ * node-semver. For example, `^1.2.3` means `>=1.2.3 <2.0.0-0`, `~1.2` means
582
+ * `>=1.2.0 <1.3.0-0`, and `<=1.2` means `<1.3.0-0`. Throws `SemVerError` when
583
+ * `version` is an invalid `SemVer.Input`.
584
+ *
585
+ * **Gotchas**
586
+ *
587
+ * A pre-release version only matches a comparator set that contains a
588
+ * comparator with a pre-release on the same major, minor, and patch. So
589
+ * `^1.2.3-beta.1` matches `1.2.3-beta.2` but not `1.3.0-rc.1`, and `*` does
590
+ * not match any pre-release. Set `includePrerelease` to disable this rule.
591
+ *
592
+ * Alternatives separated by `||` always form a union. Unlike node-semver, a `*`
593
+ * alternative does not discard pre-releases admitted by another alternative.
594
+ *
595
+ * **Example** (Matching pre-releases)
596
+ *
597
+ * ```ts import.meta.vitest
598
+ * import { SemVerRange } from "effect"
599
+ *
600
+ * const range = SemVerRange.parseUnsafe("^1.2.3-beta.1")
601
+ *
602
+ * SemVerRange.matches(range, "1.2.3-beta.2") // => true
603
+ * SemVerRange.matches(range, "1.3.0-rc.1") // => false
604
+ * SemVerRange.matches(range, "1.3.0-rc.1", { includePrerelease: true }) // => true
605
+ * ```
606
+ *
607
+ * **Example** (Filtering versions)
608
+ *
609
+ * ```ts import.meta.vitest
610
+ * import { SemVer, SemVerRange } from "effect"
611
+ *
612
+ * const range = SemVerRange.parseUnsafe("~1.2")
613
+ * const versions = ["1.1.0", "1.2.0", "1.2.7", "1.3.0"].map(SemVer.parseUnsafe)
614
+ *
615
+ * versions.filter((version) => SemVerRange.matches(range, version)).map(SemVer.format) // => ["1.2.0", "1.2.7"]
616
+ * ```
617
+ *
618
+ * @see {@link maxSatisfying} for selecting the highest matching version
619
+ * @stability unstable
620
+ * @category predicates
621
+ * @since 4.0.6
622
+ */
623
+ export const matches: {
624
+ /**
625
+ * Checks whether a range matches a version.
626
+ *
627
+ * **Details**
628
+ *
629
+ * Partial versions, tilde, caret, and hyphen ranges expand to bounds following
630
+ * node-semver. For example, `^1.2.3` means `>=1.2.3 <2.0.0-0`, `~1.2` means
631
+ * `>=1.2.0 <1.3.0-0`, and `<=1.2` means `<1.3.0-0`. Throws `SemVerError` when
632
+ * `version` is an invalid `SemVer.Input`.
633
+ *
634
+ * **Gotchas**
635
+ *
636
+ * A pre-release version only matches a comparator set that contains a
637
+ * comparator with a pre-release on the same major, minor, and patch. So
638
+ * `^1.2.3-beta.1` matches `1.2.3-beta.2` but not `1.3.0-rc.1`, and `*` does
639
+ * not match any pre-release. Set `includePrerelease` to disable this rule.
640
+ *
641
+ * Alternatives separated by `||` always form a union. Unlike node-semver, a `*`
642
+ * alternative does not discard pre-releases admitted by another alternative.
643
+ *
644
+ * **Example** (Matching pre-releases)
645
+ *
646
+ * ```ts import.meta.vitest
647
+ * import { SemVerRange } from "effect"
648
+ *
649
+ * const range = SemVerRange.parseUnsafe("^1.2.3-beta.1")
650
+ *
651
+ * SemVerRange.matches(range, "1.2.3-beta.2") // => true
652
+ * SemVerRange.matches(range, "1.3.0-rc.1") // => false
653
+ * SemVerRange.matches(range, "1.3.0-rc.1", { includePrerelease: true }) // => true
654
+ * ```
655
+ *
656
+ * **Example** (Filtering versions)
657
+ *
658
+ * ```ts import.meta.vitest
659
+ * import { SemVer, SemVerRange } from "effect"
660
+ *
661
+ * const range = SemVerRange.parseUnsafe("~1.2")
662
+ * const versions = ["1.1.0", "1.2.0", "1.2.7", "1.3.0"].map(SemVer.parseUnsafe)
663
+ *
664
+ * versions.filter((version) => SemVerRange.matches(range, version)).map(SemVer.format) // => ["1.2.0", "1.2.7"]
665
+ * ```
666
+ *
667
+ * @see {@link maxSatisfying} for selecting the highest matching version
668
+ * @stability unstable
669
+ * @category predicates
670
+ * @since 4.0.6
671
+ */
672
+ (version: VersionInput, options?: MatchOptions): (self: SemVerRange) => boolean
673
+ /**
674
+ * Checks whether a range matches a version.
675
+ *
676
+ * **Details**
677
+ *
678
+ * Partial versions, tilde, caret, and hyphen ranges expand to bounds following
679
+ * node-semver. For example, `^1.2.3` means `>=1.2.3 <2.0.0-0`, `~1.2` means
680
+ * `>=1.2.0 <1.3.0-0`, and `<=1.2` means `<1.3.0-0`. Throws `SemVerError` when
681
+ * `version` is an invalid `SemVer.Input`.
682
+ *
683
+ * **Gotchas**
684
+ *
685
+ * A pre-release version only matches a comparator set that contains a
686
+ * comparator with a pre-release on the same major, minor, and patch. So
687
+ * `^1.2.3-beta.1` matches `1.2.3-beta.2` but not `1.3.0-rc.1`, and `*` does
688
+ * not match any pre-release. Set `includePrerelease` to disable this rule.
689
+ *
690
+ * Alternatives separated by `||` always form a union. Unlike node-semver, a `*`
691
+ * alternative does not discard pre-releases admitted by another alternative.
692
+ *
693
+ * **Example** (Matching pre-releases)
694
+ *
695
+ * ```ts import.meta.vitest
696
+ * import { SemVerRange } from "effect"
697
+ *
698
+ * const range = SemVerRange.parseUnsafe("^1.2.3-beta.1")
699
+ *
700
+ * SemVerRange.matches(range, "1.2.3-beta.2") // => true
701
+ * SemVerRange.matches(range, "1.3.0-rc.1") // => false
702
+ * SemVerRange.matches(range, "1.3.0-rc.1", { includePrerelease: true }) // => true
703
+ * ```
704
+ *
705
+ * **Example** (Filtering versions)
706
+ *
707
+ * ```ts import.meta.vitest
708
+ * import { SemVer, SemVerRange } from "effect"
709
+ *
710
+ * const range = SemVerRange.parseUnsafe("~1.2")
711
+ * const versions = ["1.1.0", "1.2.0", "1.2.7", "1.3.0"].map(SemVer.parseUnsafe)
712
+ *
713
+ * versions.filter((version) => SemVerRange.matches(range, version)).map(SemVer.format) // => ["1.2.0", "1.2.7"]
714
+ * ```
715
+ *
716
+ * @see {@link maxSatisfying} for selecting the highest matching version
717
+ * @stability unstable
718
+ * @category predicates
719
+ * @since 4.0.6
720
+ */
721
+ (self: SemVerRange, version: VersionInput, options?: MatchOptions): boolean
722
+ } = dual(
723
+ isRangeArgs,
724
+ (self: SemVerRange, version: VersionInput, options?: MatchOptions): boolean =>
725
+ matcher(self, options)(versionFromInputUnsafe(version))
726
+ )
727
+
728
+ const select = (
729
+ self: SemVerRange,
730
+ versions: Iterable<VersionInput>,
731
+ options: MatchOptions | undefined,
732
+ better: -1 | 1
733
+ ): Option.Option<SemVer> => {
734
+ const test = matcher(self, options)
735
+ let selected: SemVer | undefined
736
+ for (const input of versions) {
737
+ const version = versionFromInputUnsafe(input)
738
+ if (test(version) && (selected === undefined || compareCore(version, selected) === better)) {
739
+ selected = version
740
+ }
741
+ }
742
+ return Option.fromUndefinedOr(selected)
743
+ }
744
+
745
+ /**
746
+ * Returns the version with the highest precedence that a range matches.
747
+ *
748
+ * **Details**
749
+ *
750
+ * Returns `None` when no version matches. When several versions share the
751
+ * highest precedence, the first one is returned. Throws `SemVerError` when a
752
+ * version is an invalid `SemVer.Input`.
753
+ *
754
+ * **Example** (Selecting the newest compatible version)
755
+ *
756
+ * ```ts import.meta.vitest
757
+ * import { Option, SemVer, SemVerRange } from "effect"
758
+ *
759
+ * const range = SemVerRange.parseUnsafe("^1.2.0")
760
+ *
761
+ * SemVerRange.maxSatisfying(range, ["1.2.0", "1.4.1", "2.0.0", "1.5.0-rc.1"]).pipe(Option.map(SemVer.format)) // => Option.some("1.4.1")
762
+ * ```
763
+ *
764
+ * @see {@link minSatisfying} for the lowest matching version
765
+ * @stability unstable
766
+ * @category filtering
767
+ * @since 4.0.6
768
+ */
769
+ export const maxSatisfying: {
770
+ /**
771
+ * Returns the version with the highest precedence that a range matches.
772
+ *
773
+ * **Details**
774
+ *
775
+ * Returns `None` when no version matches. When several versions share the
776
+ * highest precedence, the first one is returned. Throws `SemVerError` when a
777
+ * version is an invalid `SemVer.Input`.
778
+ *
779
+ * **Example** (Selecting the newest compatible version)
780
+ *
781
+ * ```ts import.meta.vitest
782
+ * import { Option, SemVer, SemVerRange } from "effect"
783
+ *
784
+ * const range = SemVerRange.parseUnsafe("^1.2.0")
785
+ *
786
+ * SemVerRange.maxSatisfying(range, ["1.2.0", "1.4.1", "2.0.0", "1.5.0-rc.1"]).pipe(Option.map(SemVer.format)) // => Option.some("1.4.1")
787
+ * ```
788
+ *
789
+ * @see {@link minSatisfying} for the lowest matching version
790
+ * @stability unstable
791
+ * @category filtering
792
+ * @since 4.0.6
793
+ */
794
+ (versions: Iterable<VersionInput>, options?: MatchOptions): (self: SemVerRange) => Option.Option<SemVer>
795
+ /**
796
+ * Returns the version with the highest precedence that a range matches.
797
+ *
798
+ * **Details**
799
+ *
800
+ * Returns `None` when no version matches. When several versions share the
801
+ * highest precedence, the first one is returned. Throws `SemVerError` when a
802
+ * version is an invalid `SemVer.Input`.
803
+ *
804
+ * **Example** (Selecting the newest compatible version)
805
+ *
806
+ * ```ts import.meta.vitest
807
+ * import { Option, SemVer, SemVerRange } from "effect"
808
+ *
809
+ * const range = SemVerRange.parseUnsafe("^1.2.0")
810
+ *
811
+ * SemVerRange.maxSatisfying(range, ["1.2.0", "1.4.1", "2.0.0", "1.5.0-rc.1"]).pipe(Option.map(SemVer.format)) // => Option.some("1.4.1")
812
+ * ```
813
+ *
814
+ * @see {@link minSatisfying} for the lowest matching version
815
+ * @stability unstable
816
+ * @category filtering
817
+ * @since 4.0.6
818
+ */
819
+ (
820
+ self: SemVerRange,
821
+ versions: Iterable<VersionInput>,
822
+ options?: MatchOptions
823
+ ): Option.Option<SemVer>
824
+ } = dual(
825
+ isRangeArgs,
826
+ (self: SemVerRange, versions: Iterable<VersionInput>, options?: MatchOptions): Option.Option<SemVer> =>
827
+ select(self, versions, options, 1)
828
+ )
829
+
830
+ /**
831
+ * Returns the version with the lowest precedence that a range matches.
832
+ *
833
+ * **Details**
834
+ *
835
+ * Returns `None` when no version matches. When several versions share the
836
+ * lowest precedence, the first one is returned. Throws `SemVerError` when a
837
+ * version is an invalid `SemVer.Input`.
838
+ *
839
+ * @see {@link maxSatisfying} for the highest matching version
840
+ * @stability unstable
841
+ * @category filtering
842
+ * @since 4.0.6
843
+ */
844
+ export const minSatisfying: {
845
+ /**
846
+ * Returns the version with the lowest precedence that a range matches.
847
+ *
848
+ * **Details**
849
+ *
850
+ * Returns `None` when no version matches. When several versions share the
851
+ * lowest precedence, the first one is returned. Throws `SemVerError` when a
852
+ * version is an invalid `SemVer.Input`.
853
+ *
854
+ * @see {@link maxSatisfying} for the highest matching version
855
+ * @stability unstable
856
+ * @category filtering
857
+ * @since 4.0.6
858
+ */
859
+ (versions: Iterable<VersionInput>, options?: MatchOptions): (self: SemVerRange) => Option.Option<SemVer>
860
+ /**
861
+ * Returns the version with the lowest precedence that a range matches.
862
+ *
863
+ * **Details**
864
+ *
865
+ * Returns `None` when no version matches. When several versions share the
866
+ * lowest precedence, the first one is returned. Throws `SemVerError` when a
867
+ * version is an invalid `SemVer.Input`.
868
+ *
869
+ * @see {@link maxSatisfying} for the highest matching version
870
+ * @stability unstable
871
+ * @category filtering
872
+ * @since 4.0.6
873
+ */
874
+ (
875
+ self: SemVerRange,
876
+ versions: Iterable<VersionInput>,
877
+ options?: MatchOptions
878
+ ): Option.Option<SemVer>
879
+ } = dual(
880
+ isRangeArgs,
881
+ (self: SemVerRange, versions: Iterable<VersionInput>, options?: MatchOptions): Option.Option<SemVer> =>
882
+ select(self, versions, options, -1)
883
+ )