effect 4.0.5 → 4.0.7

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 (1177) 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/Arbitrary.d.ts +10 -2
  5. package/dist/Arbitrary.d.ts.map +1 -1
  6. package/dist/Arbitrary.js +2 -1
  7. package/dist/Arbitrary.js.map +1 -1
  8. package/dist/Array.d.ts +117 -52
  9. package/dist/Array.d.ts.map +1 -1
  10. package/dist/Array.js +41 -20
  11. package/dist/Array.js.map +1 -1
  12. package/dist/Bytes.d.ts +79 -0
  13. package/dist/Bytes.d.ts.map +1 -0
  14. package/dist/Bytes.js +109 -0
  15. package/dist/Bytes.js.map +1 -0
  16. package/dist/Channel.d.ts +181 -13
  17. package/dist/Channel.d.ts.map +1 -1
  18. package/dist/Channel.js +144 -34
  19. package/dist/Channel.js.map +1 -1
  20. package/dist/ChannelSchema.d.ts.map +1 -1
  21. package/dist/ChannelSchema.js.map +1 -1
  22. package/dist/Chunk.d.ts +39 -21
  23. package/dist/Chunk.d.ts.map +1 -1
  24. package/dist/Chunk.js +26 -17
  25. package/dist/Chunk.js.map +1 -1
  26. package/dist/Config.d.ts.map +1 -1
  27. package/dist/Config.js +8 -3
  28. package/dist/Config.js.map +1 -1
  29. package/dist/ConfigProvider.d.ts.map +1 -1
  30. package/dist/ConfigProvider.js +2 -1
  31. package/dist/ConfigProvider.js.map +1 -1
  32. package/dist/Cron.d.ts +2 -2
  33. package/dist/Cron.d.ts.map +1 -1
  34. package/dist/Cron.js +6 -3
  35. package/dist/Cron.js.map +1 -1
  36. package/dist/Data.d.ts +54 -235
  37. package/dist/Data.d.ts.map +1 -1
  38. package/dist/Data.js.map +1 -1
  39. package/dist/Duration.d.ts.map +1 -1
  40. package/dist/Duration.js +56 -16
  41. package/dist/Duration.js.map +1 -1
  42. package/dist/Effect.d.ts +488 -164
  43. package/dist/Effect.d.ts.map +1 -1
  44. package/dist/Effect.js +204 -38
  45. package/dist/Effect.js.map +1 -1
  46. package/dist/Equal.d.ts.map +1 -1
  47. package/dist/Equal.js +8 -1
  48. package/dist/Equal.js.map +1 -1
  49. package/dist/Equivalence.d.ts +2 -1
  50. package/dist/Equivalence.d.ts.map +1 -1
  51. package/dist/Equivalence.js +12 -8
  52. package/dist/Equivalence.js.map +1 -1
  53. package/dist/Exit.d.ts +27 -12
  54. package/dist/Exit.d.ts.map +1 -1
  55. package/dist/Exit.js +8 -3
  56. package/dist/Exit.js.map +1 -1
  57. package/dist/FiberHandle.d.ts +2 -0
  58. package/dist/FiberHandle.d.ts.map +1 -1
  59. package/dist/FiberHandle.js +9 -4
  60. package/dist/FiberHandle.js.map +1 -1
  61. package/dist/FiberMap.d.ts +2 -0
  62. package/dist/FiberMap.d.ts.map +1 -1
  63. package/dist/FiberMap.js +5 -2
  64. package/dist/FiberMap.js.map +1 -1
  65. package/dist/FileSystem.d.ts +5 -0
  66. package/dist/FileSystem.d.ts.map +1 -1
  67. package/dist/FileSystem.js +3 -0
  68. package/dist/FileSystem.js.map +1 -1
  69. package/dist/Formatter.d.ts.map +1 -1
  70. package/dist/Formatter.js +27 -13
  71. package/dist/Formatter.js.map +1 -1
  72. package/dist/Graph.d.ts.map +1 -1
  73. package/dist/Graph.js.map +1 -1
  74. package/dist/Hash.d.ts.map +1 -1
  75. package/dist/Hash.js +4 -1
  76. package/dist/Hash.js.map +1 -1
  77. package/dist/HashSet.d.ts.map +1 -1
  78. package/dist/HashSet.js.map +1 -1
  79. package/dist/Iterable.d.ts.map +1 -1
  80. package/dist/Iterable.js +18 -17
  81. package/dist/Iterable.js.map +1 -1
  82. package/dist/JsonPatch.js +4 -0
  83. package/dist/JsonPatch.js.map +1 -1
  84. package/dist/JsonSchema.d.ts +9 -3
  85. package/dist/JsonSchema.d.ts.map +1 -1
  86. package/dist/JsonSchema.js +32 -43
  87. package/dist/JsonSchema.js.map +1 -1
  88. package/dist/Layer.d.ts.map +1 -1
  89. package/dist/Layer.js +2 -2
  90. package/dist/Layer.js.map +1 -1
  91. package/dist/ManagedRuntime.d.ts +19 -1
  92. package/dist/ManagedRuntime.d.ts.map +1 -1
  93. package/dist/ManagedRuntime.js +62 -6
  94. package/dist/ManagedRuntime.js.map +1 -1
  95. package/dist/Metric.d.ts +135 -3
  96. package/dist/Metric.d.ts.map +1 -1
  97. package/dist/Metric.js +197 -25
  98. package/dist/Metric.js.map +1 -1
  99. package/dist/MutableHashMap.d.ts.map +1 -1
  100. package/dist/MutableHashMap.js.map +1 -1
  101. package/dist/MutableList.d.ts +5 -2
  102. package/dist/MutableList.d.ts.map +1 -1
  103. package/dist/MutableList.js +7 -5
  104. package/dist/MutableList.js.map +1 -1
  105. package/dist/MutableRef.d.ts.map +1 -1
  106. package/dist/MutableRef.js +7 -0
  107. package/dist/MutableRef.js.map +1 -1
  108. package/dist/Number.js +2 -2
  109. package/dist/Number.js.map +1 -1
  110. package/dist/Optic.d.ts.map +1 -1
  111. package/dist/Optic.js.map +1 -1
  112. package/dist/PartitionedSemaphore.d.ts +2 -1
  113. package/dist/PartitionedSemaphore.d.ts.map +1 -1
  114. package/dist/PartitionedSemaphore.js +22 -12
  115. package/dist/PartitionedSemaphore.js.map +1 -1
  116. package/dist/Path.d.ts.map +1 -1
  117. package/dist/Path.js +8 -1
  118. package/dist/Path.js.map +1 -1
  119. package/dist/Pool.d.ts.map +1 -1
  120. package/dist/Pool.js +77 -27
  121. package/dist/Pool.js.map +1 -1
  122. package/dist/PubSub.d.ts.map +1 -1
  123. package/dist/PubSub.js +17 -13
  124. package/dist/PubSub.js.map +1 -1
  125. package/dist/Queue.d.ts +4 -1
  126. package/dist/Queue.d.ts.map +1 -1
  127. package/dist/Queue.js +4 -1
  128. package/dist/Queue.js.map +1 -1
  129. package/dist/Random.d.ts.map +1 -1
  130. package/dist/Random.js +1 -1
  131. package/dist/Random.js.map +1 -1
  132. package/dist/RcMap.d.ts +12 -7
  133. package/dist/RcMap.d.ts.map +1 -1
  134. package/dist/RcMap.js +9 -6
  135. package/dist/RcMap.js.map +1 -1
  136. package/dist/Record.d.ts +51 -0
  137. package/dist/Record.d.ts.map +1 -1
  138. package/dist/Record.js +17 -0
  139. package/dist/Record.js.map +1 -1
  140. package/dist/Ref.d.ts.map +1 -1
  141. package/dist/Ref.js +8 -0
  142. package/dist/Ref.js.map +1 -1
  143. package/dist/References.d.ts +5 -4
  144. package/dist/References.d.ts.map +1 -1
  145. package/dist/References.js +5 -4
  146. package/dist/References.js.map +1 -1
  147. package/dist/RequestResolver.d.ts +31 -1
  148. package/dist/RequestResolver.d.ts.map +1 -1
  149. package/dist/RequestResolver.js +39 -4
  150. package/dist/RequestResolver.js.map +1 -1
  151. package/dist/Resource.js +1 -1
  152. package/dist/Resource.js.map +1 -1
  153. package/dist/Runtime.d.ts +3 -3
  154. package/dist/Runtime.d.ts.map +1 -1
  155. package/dist/Runtime.js +18 -15
  156. package/dist/Runtime.js.map +1 -1
  157. package/dist/Schedule.d.ts.map +1 -1
  158. package/dist/Schedule.js +1 -1
  159. package/dist/Schedule.js.map +1 -1
  160. package/dist/Schema.d.ts +408 -340
  161. package/dist/Schema.d.ts.map +1 -1
  162. package/dist/Schema.js +370 -47
  163. package/dist/Schema.js.map +1 -1
  164. package/dist/SchemaAST.d.ts +9 -7
  165. package/dist/SchemaAST.d.ts.map +1 -1
  166. package/dist/SchemaAST.js +38 -25
  167. package/dist/SchemaAST.js.map +1 -1
  168. package/dist/SchemaGetter.d.ts +8 -3
  169. package/dist/SchemaGetter.d.ts.map +1 -1
  170. package/dist/SchemaGetter.js +15 -5
  171. package/dist/SchemaGetter.js.map +1 -1
  172. package/dist/SchemaIssue.d.ts +4 -4
  173. package/dist/SchemaIssue.d.ts.map +1 -1
  174. package/dist/SchemaIssue.js +29 -51
  175. package/dist/SchemaIssue.js.map +1 -1
  176. package/dist/SchemaParser.d.ts.map +1 -1
  177. package/dist/SchemaParser.js +48 -22
  178. package/dist/SchemaParser.js.map +1 -1
  179. package/dist/SchemaRepresentation.d.ts +75 -11
  180. package/dist/SchemaRepresentation.d.ts.map +1 -1
  181. package/dist/SchemaRepresentation.js +41 -13
  182. package/dist/SchemaRepresentation.js.map +1 -1
  183. package/dist/SchemaTransformation.d.ts +5 -2
  184. package/dist/SchemaTransformation.d.ts.map +1 -1
  185. package/dist/SchemaTransformation.js +10 -3
  186. package/dist/SchemaTransformation.js.map +1 -1
  187. package/dist/Scope.d.ts +12 -2
  188. package/dist/Scope.d.ts.map +1 -1
  189. package/dist/Scope.js +5 -0
  190. package/dist/Scope.js.map +1 -1
  191. package/dist/ScopedCache.d.ts +10 -7
  192. package/dist/ScopedCache.d.ts.map +1 -1
  193. package/dist/ScopedCache.js +9 -5
  194. package/dist/ScopedCache.js.map +1 -1
  195. package/dist/SemVer.d.ts +1196 -0
  196. package/dist/SemVer.d.ts.map +1 -0
  197. package/dist/SemVer.js +756 -0
  198. package/dist/SemVer.js.map +1 -0
  199. package/dist/SemVerRange.d.ts +559 -0
  200. package/dist/SemVerRange.d.ts.map +1 -0
  201. package/dist/SemVerRange.js +551 -0
  202. package/dist/SemVerRange.js.map +1 -0
  203. package/dist/Semaphore.d.ts.map +1 -1
  204. package/dist/Semaphore.js +54 -35
  205. package/dist/Semaphore.js.map +1 -1
  206. package/dist/Sink.d.ts.map +1 -1
  207. package/dist/Sink.js +13 -4
  208. package/dist/Sink.js.map +1 -1
  209. package/dist/Stream.d.ts +235 -8
  210. package/dist/Stream.d.ts.map +1 -1
  211. package/dist/Stream.js +167 -70
  212. package/dist/Stream.js.map +1 -1
  213. package/dist/String.d.ts +7 -2
  214. package/dist/String.d.ts.map +1 -1
  215. package/dist/String.js +11 -6
  216. package/dist/String.js.map +1 -1
  217. package/dist/TextDiff.d.ts +399 -0
  218. package/dist/TextDiff.d.ts.map +1 -0
  219. package/dist/TextDiff.js +634 -0
  220. package/dist/TextDiff.js.map +1 -0
  221. package/dist/Tracer.d.ts +11 -1
  222. package/dist/Tracer.d.ts.map +1 -1
  223. package/dist/Tracer.js +6 -1
  224. package/dist/Tracer.js.map +1 -1
  225. package/dist/TxHashMap.d.ts.map +1 -1
  226. package/dist/TxHashMap.js.map +1 -1
  227. package/dist/TxHashSet.d.ts.map +1 -1
  228. package/dist/TxHashSet.js.map +1 -1
  229. package/dist/ai/AiError.d.ts +68 -4
  230. package/dist/ai/AiError.d.ts.map +1 -1
  231. package/dist/ai/AiError.js +50 -2
  232. package/dist/ai/AiError.js.map +1 -1
  233. package/dist/ai/Chat.d.ts +1 -2
  234. package/dist/ai/Chat.d.ts.map +1 -1
  235. package/dist/ai/Chat.js +6 -3
  236. package/dist/ai/Chat.js.map +1 -1
  237. package/dist/ai/Decision.d.ts +46 -1
  238. package/dist/ai/Decision.d.ts.map +1 -1
  239. package/dist/ai/Decision.js.map +1 -1
  240. package/dist/ai/DecisionModel.d.ts +129 -11
  241. package/dist/ai/DecisionModel.d.ts.map +1 -1
  242. package/dist/ai/DecisionModel.js +182 -94
  243. package/dist/ai/DecisionModel.js.map +1 -1
  244. package/dist/ai/EmbeddingModel.d.ts +10 -0
  245. package/dist/ai/EmbeddingModel.d.ts.map +1 -1
  246. package/dist/ai/EmbeddingModel.js +21 -7
  247. package/dist/ai/EmbeddingModel.js.map +1 -1
  248. package/dist/ai/LanguageModel.d.ts.map +1 -1
  249. package/dist/ai/LanguageModel.js +9 -0
  250. package/dist/ai/LanguageModel.js.map +1 -1
  251. package/dist/ai/McpClient.d.ts +289 -0
  252. package/dist/ai/McpClient.d.ts.map +1 -0
  253. package/dist/ai/McpClient.js +819 -0
  254. package/dist/ai/McpClient.js.map +1 -0
  255. package/dist/ai/McpClientError.d.ts +254 -0
  256. package/dist/ai/McpClientError.d.ts.map +1 -0
  257. package/dist/ai/McpClientError.js +260 -0
  258. package/dist/ai/McpClientError.js.map +1 -0
  259. package/dist/ai/McpProtocol.d.ts +2 -2
  260. package/dist/ai/McpProtocol.d.ts.map +1 -1
  261. package/dist/ai/McpSchema.d.ts +258 -125
  262. package/dist/ai/McpSchema.d.ts.map +1 -1
  263. package/dist/ai/McpSchema.js +94 -24
  264. package/dist/ai/McpSchema.js.map +1 -1
  265. package/dist/ai/McpServer.d.ts.map +1 -1
  266. package/dist/ai/McpServer.js +46 -37
  267. package/dist/ai/McpServer.js.map +1 -1
  268. package/dist/ai/Prompt.d.ts +74 -20
  269. package/dist/ai/Prompt.d.ts.map +1 -1
  270. package/dist/ai/Prompt.js +61 -1
  271. package/dist/ai/Prompt.js.map +1 -1
  272. package/dist/ai/Response.d.ts +160 -3
  273. package/dist/ai/Response.d.ts.map +1 -1
  274. package/dist/ai/Response.js +39 -37
  275. package/dist/ai/Response.js.map +1 -1
  276. package/dist/ai/Tool.d.ts +36 -4
  277. package/dist/ai/Tool.d.ts.map +1 -1
  278. package/dist/ai/Tool.js +5 -2
  279. package/dist/ai/Tool.js.map +1 -1
  280. package/dist/ai/Toolkit.d.ts +48 -1
  281. package/dist/ai/Toolkit.d.ts.map +1 -1
  282. package/dist/ai/Toolkit.js +73 -13
  283. package/dist/ai/Toolkit.js.map +1 -1
  284. package/dist/ai/index.d.ts +10 -0
  285. package/dist/ai/index.d.ts.map +1 -1
  286. package/dist/ai/index.js +10 -0
  287. package/dist/ai/index.js.map +1 -1
  288. package/dist/ai/internal/mcpCore.js.map +1 -1
  289. package/dist/ai/internal/mcpProtocol/v2024_11_05.js +1 -1
  290. package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
  291. package/dist/ai/internal/mcpProtocol/v2025_03_26.js +1 -1
  292. package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
  293. package/dist/ai/internal/mcpProtocol/v2025_06_18.js +2 -2
  294. package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
  295. package/dist/ai/internal/mcpProtocol/v2025_11_25.js +2 -2
  296. package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
  297. package/dist/ai/internal/mcpProtocol/v2026_07_28.js +4 -7
  298. package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
  299. package/dist/ai/internal/mcpProtocol.js +16 -2
  300. package/dist/ai/internal/mcpProtocol.js.map +1 -1
  301. package/dist/ai/internal/mcpRuntime.js +3 -4
  302. package/dist/ai/internal/mcpRuntime.js.map +1 -1
  303. package/dist/ai/internal/mcpSchema/v2024_11_05.js +19 -13
  304. package/dist/ai/internal/mcpSchema/v2024_11_05.js.map +1 -1
  305. package/dist/ai/internal/mcpSchema/v2025_03_26.js +3 -2
  306. package/dist/ai/internal/mcpSchema/v2025_03_26.js.map +1 -1
  307. package/dist/ai/internal/mcpSchema/v2025_06_18.js +7 -7
  308. package/dist/ai/internal/mcpSchema/v2025_06_18.js.map +1 -1
  309. package/dist/ai/internal/mcpSchema/v2025_11_25.js +8 -8
  310. package/dist/ai/internal/mcpSchema/v2025_11_25.js.map +1 -1
  311. package/dist/ai/internal/mcpSchema/v2026_07_28.js +43 -42
  312. package/dist/ai/internal/mcpSchema/v2026_07_28.js.map +1 -1
  313. package/dist/cli/Argument.d.ts +15 -0
  314. package/dist/cli/Argument.d.ts.map +1 -1
  315. package/dist/cli/Argument.js +5 -0
  316. package/dist/cli/Argument.js.map +1 -1
  317. package/dist/cli/CliError.d.ts +120 -2
  318. package/dist/cli/CliError.d.ts.map +1 -1
  319. package/dist/cli/CliError.js +106 -5
  320. package/dist/cli/CliError.js.map +1 -1
  321. package/dist/cli/CliOutput.d.ts +155 -6
  322. package/dist/cli/CliOutput.d.ts.map +1 -1
  323. package/dist/cli/CliOutput.js +62 -6
  324. package/dist/cli/CliOutput.js.map +1 -1
  325. package/dist/cli/Command.d.ts +310 -18
  326. package/dist/cli/Command.d.ts.map +1 -1
  327. package/dist/cli/Command.js +164 -33
  328. package/dist/cli/Command.js.map +1 -1
  329. package/dist/cli/Completions.d.ts +63 -0
  330. package/dist/cli/Completions.d.ts.map +1 -1
  331. package/dist/cli/Completions.js +49 -9
  332. package/dist/cli/Completions.js.map +1 -1
  333. package/dist/cli/Flag.d.ts +130 -0
  334. package/dist/cli/Flag.d.ts.map +1 -1
  335. package/dist/cli/Flag.js +61 -0
  336. package/dist/cli/Flag.js.map +1 -1
  337. package/dist/cli/GlobalFlag.d.ts.map +1 -1
  338. package/dist/cli/GlobalFlag.js +14 -6
  339. package/dist/cli/GlobalFlag.js.map +1 -1
  340. package/dist/cli/Param.d.ts +116 -0
  341. package/dist/cli/Param.d.ts.map +1 -1
  342. package/dist/cli/Param.js +77 -2
  343. package/dist/cli/Param.js.map +1 -1
  344. package/dist/cli/TerminalCapabilities.d.ts +85 -0
  345. package/dist/cli/TerminalCapabilities.d.ts.map +1 -0
  346. package/dist/cli/TerminalCapabilities.js +124 -0
  347. package/dist/cli/TerminalCapabilities.js.map +1 -0
  348. package/dist/cli/index.d.ts +5 -0
  349. package/dist/cli/index.d.ts.map +1 -1
  350. package/dist/cli/index.js +5 -0
  351. package/dist/cli/index.js.map +1 -1
  352. package/dist/cli/internal/command.d.ts +2 -1
  353. package/dist/cli/internal/command.d.ts.map +1 -1
  354. package/dist/cli/internal/command.js +5 -2
  355. package/dist/cli/internal/command.js.map +1 -1
  356. package/dist/cli/internal/completions/bash.js +77 -30
  357. package/dist/cli/internal/completions/bash.js.map +1 -1
  358. package/dist/cli/internal/completions/descriptor.js +9 -1
  359. package/dist/cli/internal/completions/descriptor.js.map +1 -1
  360. package/dist/cli/internal/completions/fish.js +10 -8
  361. package/dist/cli/internal/completions/fish.js.map +1 -1
  362. package/dist/cli/internal/completions/powershell.js +18 -9
  363. package/dist/cli/internal/completions/powershell.js.map +1 -1
  364. package/dist/cli/internal/completions/zsh.js +8 -5
  365. package/dist/cli/internal/completions/zsh.js.map +1 -1
  366. package/dist/cli/internal/formatter.d.ts +2 -0
  367. package/dist/cli/internal/formatter.d.ts.map +1 -0
  368. package/dist/cli/internal/formatter.js +15 -0
  369. package/dist/cli/internal/formatter.js.map +1 -0
  370. package/dist/cli/internal/lexer.js +24 -10
  371. package/dist/cli/internal/lexer.js.map +1 -1
  372. package/dist/cli/internal/parser.js +24 -12
  373. package/dist/cli/internal/parser.js.map +1 -1
  374. package/dist/cluster/ClusterCron.d.ts +29 -1
  375. package/dist/cluster/ClusterCron.d.ts.map +1 -1
  376. package/dist/cluster/ClusterCron.js +64 -32
  377. package/dist/cluster/ClusterCron.js.map +1 -1
  378. package/dist/cluster/ClusterMetrics.d.ts +143 -7
  379. package/dist/cluster/ClusterMetrics.d.ts.map +1 -1
  380. package/dist/cluster/ClusterMetrics.js +151 -7
  381. package/dist/cluster/ClusterMetrics.js.map +1 -1
  382. package/dist/cluster/ClusterWorkflowEngine.d.ts +1 -1
  383. package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  384. package/dist/cluster/ClusterWorkflowEngine.js +82 -21
  385. package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
  386. package/dist/cluster/Entity.d.ts +2 -0
  387. package/dist/cluster/Entity.d.ts.map +1 -1
  388. package/dist/cluster/Entity.js.map +1 -1
  389. package/dist/cluster/MessageStorage.d.ts +44 -45
  390. package/dist/cluster/MessageStorage.d.ts.map +1 -1
  391. package/dist/cluster/MessageStorage.js +6 -7
  392. package/dist/cluster/MessageStorage.js.map +1 -1
  393. package/dist/cluster/Runners.d.ts.map +1 -1
  394. package/dist/cluster/Runners.js +54 -15
  395. package/dist/cluster/Runners.js.map +1 -1
  396. package/dist/cluster/Sharding.d.ts +1 -0
  397. package/dist/cluster/Sharding.d.ts.map +1 -1
  398. package/dist/cluster/Sharding.js +155 -52
  399. package/dist/cluster/Sharding.js.map +1 -1
  400. package/dist/cluster/ShardingConfig.d.ts +30 -0
  401. package/dist/cluster/ShardingConfig.d.ts.map +1 -1
  402. package/dist/cluster/ShardingConfig.js +4 -0
  403. package/dist/cluster/ShardingConfig.js.map +1 -1
  404. package/dist/cluster/Snowflake.d.ts.map +1 -1
  405. package/dist/cluster/Snowflake.js +3 -7
  406. package/dist/cluster/Snowflake.js.map +1 -1
  407. package/dist/cluster/SqlMessageStorage.d.ts.map +1 -1
  408. package/dist/cluster/SqlMessageStorage.js +40 -50
  409. package/dist/cluster/SqlMessageStorage.js.map +1 -1
  410. package/dist/cluster/SqlRunnerStorage.d.ts +2 -2
  411. package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
  412. package/dist/cluster/SqlRunnerStorage.js +97 -43
  413. package/dist/cluster/SqlRunnerStorage.js.map +1 -1
  414. package/dist/cluster/internal/entityManager.js +119 -28
  415. package/dist/cluster/internal/entityManager.js.map +1 -1
  416. package/dist/devtools/DevTools.d.ts +3 -2
  417. package/dist/devtools/DevTools.d.ts.map +1 -1
  418. package/dist/devtools/DevTools.js +3 -2
  419. package/dist/devtools/DevTools.js.map +1 -1
  420. package/dist/devtools/DevToolsClient.d.ts +11 -0
  421. package/dist/devtools/DevToolsClient.d.ts.map +1 -1
  422. package/dist/devtools/DevToolsClient.js +33 -4
  423. package/dist/devtools/DevToolsClient.js.map +1 -1
  424. package/dist/encoding/Base64.js +36 -0
  425. package/dist/encoding/Base64.js.map +1 -1
  426. package/dist/encoding/Base64Url.d.ts +29 -0
  427. package/dist/encoding/Base64Url.d.ts.map +1 -1
  428. package/dist/encoding/Base64Url.js +29 -0
  429. package/dist/encoding/Base64Url.js.map +1 -1
  430. package/dist/encoding/Ini.d.ts.map +1 -1
  431. package/dist/encoding/Ini.js +3 -0
  432. package/dist/encoding/Ini.js.map +1 -1
  433. package/dist/encoding/JsonArray.d.ts +270 -0
  434. package/dist/encoding/JsonArray.d.ts.map +1 -0
  435. package/dist/encoding/JsonArray.js +691 -0
  436. package/dist/encoding/JsonArray.js.map +1 -0
  437. package/dist/encoding/Ndjson.d.ts +43 -4
  438. package/dist/encoding/Ndjson.d.ts.map +1 -1
  439. package/dist/encoding/Ndjson.js +169 -18
  440. package/dist/encoding/Ndjson.js.map +1 -1
  441. package/dist/encoding/SchemaBinary.d.ts +9 -1
  442. package/dist/encoding/SchemaBinary.d.ts.map +1 -1
  443. package/dist/encoding/SchemaBinary.js +12 -19
  444. package/dist/encoding/SchemaBinary.js.map +1 -1
  445. package/dist/encoding/Sse.d.ts.map +1 -1
  446. package/dist/encoding/Sse.js +3 -3
  447. package/dist/encoding/Sse.js.map +1 -1
  448. package/dist/encoding/Tar.d.ts +309 -0
  449. package/dist/encoding/Tar.d.ts.map +1 -0
  450. package/dist/encoding/Tar.js +1182 -0
  451. package/dist/encoding/Tar.js.map +1 -0
  452. package/dist/encoding/Toml.d.ts.map +1 -1
  453. package/dist/encoding/Toml.js +24 -19
  454. package/dist/encoding/Toml.js.map +1 -1
  455. package/dist/encoding/Xml.d.ts +464 -0
  456. package/dist/encoding/Xml.d.ts.map +1 -0
  457. package/dist/encoding/Xml.js +1619 -0
  458. package/dist/encoding/Xml.js.map +1 -0
  459. package/dist/encoding/Yaml.d.ts +6 -2
  460. package/dist/encoding/Yaml.d.ts.map +1 -1
  461. package/dist/encoding/Yaml.js +97 -34
  462. package/dist/encoding/Yaml.js.map +1 -1
  463. package/dist/encoding/Zip.d.ts +413 -0
  464. package/dist/encoding/Zip.d.ts.map +1 -0
  465. package/dist/encoding/Zip.js +1255 -0
  466. package/dist/encoding/Zip.js.map +1 -0
  467. package/dist/encoding/index.d.ts +20 -0
  468. package/dist/encoding/index.d.ts.map +1 -1
  469. package/dist/encoding/index.js +20 -0
  470. package/dist/encoding/index.js.map +1 -1
  471. package/dist/eventlog/EventJournal.d.ts +90 -5
  472. package/dist/eventlog/EventJournal.d.ts.map +1 -1
  473. package/dist/eventlog/EventJournal.js +488 -228
  474. package/dist/eventlog/EventJournal.js.map +1 -1
  475. package/dist/eventlog/EventLog.d.ts +180 -12
  476. package/dist/eventlog/EventLog.d.ts.map +1 -1
  477. package/dist/eventlog/EventLog.js +394 -146
  478. package/dist/eventlog/EventLog.js.map +1 -1
  479. package/dist/eventlog/EventLogEncryption.d.ts +36 -30
  480. package/dist/eventlog/EventLogEncryption.d.ts.map +1 -1
  481. package/dist/eventlog/EventLogEncryption.js +97 -38
  482. package/dist/eventlog/EventLogEncryption.js.map +1 -1
  483. package/dist/eventlog/EventLogMessage.d.ts +74 -34
  484. package/dist/eventlog/EventLogMessage.d.ts.map +1 -1
  485. package/dist/eventlog/EventLogMessage.js +45 -11
  486. package/dist/eventlog/EventLogMessage.js.map +1 -1
  487. package/dist/eventlog/EventLogRemote.d.ts +45 -8
  488. package/dist/eventlog/EventLogRemote.d.ts.map +1 -1
  489. package/dist/eventlog/EventLogRemote.js +51 -14
  490. package/dist/eventlog/EventLogRemote.js.map +1 -1
  491. package/dist/eventlog/EventLogServer.d.ts +46 -3
  492. package/dist/eventlog/EventLogServer.d.ts.map +1 -1
  493. package/dist/eventlog/EventLogServer.js +119 -19
  494. package/dist/eventlog/EventLogServer.js.map +1 -1
  495. package/dist/eventlog/EventLogServerEncrypted.d.ts +23 -33
  496. package/dist/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
  497. package/dist/eventlog/EventLogServerEncrypted.js +97 -70
  498. package/dist/eventlog/EventLogServerEncrypted.js.map +1 -1
  499. package/dist/eventlog/EventLogServerUnencrypted.d.ts +39 -5
  500. package/dist/eventlog/EventLogServerUnencrypted.d.ts.map +1 -1
  501. package/dist/eventlog/EventLogServerUnencrypted.js +151 -69
  502. package/dist/eventlog/EventLogServerUnencrypted.js.map +1 -1
  503. package/dist/eventlog/EventRow.d.ts +288 -0
  504. package/dist/eventlog/EventRow.d.ts.map +1 -0
  505. package/dist/eventlog/EventRow.js +435 -0
  506. package/dist/eventlog/EventRow.js.map +1 -0
  507. package/dist/eventlog/SqlEventJournal.d.ts +18 -18
  508. package/dist/eventlog/SqlEventJournal.d.ts.map +1 -1
  509. package/dist/eventlog/SqlEventJournal.js +417 -169
  510. package/dist/eventlog/SqlEventJournal.js.map +1 -1
  511. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts +10 -18
  512. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts.map +1 -1
  513. package/dist/eventlog/SqlEventLogServerEncrypted.js +179 -69
  514. package/dist/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
  515. package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts +23 -3
  516. package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts.map +1 -1
  517. package/dist/eventlog/SqlEventLogServerUnencrypted.js +102 -51
  518. package/dist/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
  519. package/dist/eventlog/index.d.ts +5 -0
  520. package/dist/eventlog/index.d.ts.map +1 -1
  521. package/dist/eventlog/index.js +5 -0
  522. package/dist/eventlog/index.js.map +1 -1
  523. package/dist/eventlog/internal/conflicts.d.ts +46 -0
  524. package/dist/eventlog/internal/conflicts.d.ts.map +1 -0
  525. package/dist/eventlog/internal/conflicts.js +89 -0
  526. package/dist/eventlog/internal/conflicts.js.map +1 -0
  527. package/dist/graphql/GraphQLClientError.d.ts +2 -2
  528. package/dist/graphql/GraphQLClientError.d.ts.map +1 -1
  529. package/dist/graphql/GraphQLClientError.js +4 -18
  530. package/dist/graphql/GraphQLClientError.js.map +1 -1
  531. package/dist/graphql/GraphQLProtocol.d.ts +12 -9
  532. package/dist/graphql/GraphQLProtocol.d.ts.map +1 -1
  533. package/dist/graphql/GraphQLProtocol.js +4 -3
  534. package/dist/graphql/GraphQLProtocol.js.map +1 -1
  535. package/dist/graphql/GraphQLResolver.d.ts +2 -0
  536. package/dist/graphql/GraphQLResolver.d.ts.map +1 -1
  537. package/dist/graphql/GraphQLResolver.js +74 -32
  538. package/dist/graphql/GraphQLResolver.js.map +1 -1
  539. package/dist/http/Cookies.d.ts.map +1 -1
  540. package/dist/http/Cookies.js +10 -9
  541. package/dist/http/Cookies.js.map +1 -1
  542. package/dist/http/FetchHttpClient.d.ts +8 -1
  543. package/dist/http/FetchHttpClient.d.ts.map +1 -1
  544. package/dist/http/FetchHttpClient.js +51 -4
  545. package/dist/http/FetchHttpClient.js.map +1 -1
  546. package/dist/http/FindMyWay/internal/router.js +10 -0
  547. package/dist/http/FindMyWay/internal/router.js.map +1 -1
  548. package/dist/http/Headers.d.ts +227 -0
  549. package/dist/http/Headers.d.ts.map +1 -1
  550. package/dist/http/Headers.js +261 -0
  551. package/dist/http/Headers.js.map +1 -1
  552. package/dist/http/HttpClient.d.ts +516 -0
  553. package/dist/http/HttpClient.d.ts.map +1 -1
  554. package/dist/http/HttpClient.js +286 -23
  555. package/dist/http/HttpClient.js.map +1 -1
  556. package/dist/http/HttpClientError.d.ts +8 -1
  557. package/dist/http/HttpClientError.d.ts.map +1 -1
  558. package/dist/http/HttpClientError.js +37 -1
  559. package/dist/http/HttpClientError.js.map +1 -1
  560. package/dist/http/HttpClientRequest.d.ts +127 -3
  561. package/dist/http/HttpClientRequest.d.ts.map +1 -1
  562. package/dist/http/HttpClientRequest.js +45 -3
  563. package/dist/http/HttpClientRequest.js.map +1 -1
  564. package/dist/http/HttpClientResponse.d.ts +53 -0
  565. package/dist/http/HttpClientResponse.d.ts.map +1 -1
  566. package/dist/http/HttpClientResponse.js +47 -0
  567. package/dist/http/HttpClientResponse.js.map +1 -1
  568. package/dist/http/HttpEffect.d.ts +6 -2
  569. package/dist/http/HttpEffect.d.ts.map +1 -1
  570. package/dist/http/HttpEffect.js +21 -17
  571. package/dist/http/HttpEffect.js.map +1 -1
  572. package/dist/http/HttpIncomingMessage.d.ts +2 -1
  573. package/dist/http/HttpIncomingMessage.d.ts.map +1 -1
  574. package/dist/http/HttpIncomingMessage.js +3 -23
  575. package/dist/http/HttpIncomingMessage.js.map +1 -1
  576. package/dist/http/HttpMiddleware.d.ts +119 -2
  577. package/dist/http/HttpMiddleware.d.ts.map +1 -1
  578. package/dist/http/HttpMiddleware.js +173 -29
  579. package/dist/http/HttpMiddleware.js.map +1 -1
  580. package/dist/http/HttpRouter.d.ts.map +1 -1
  581. package/dist/http/HttpRouter.js +9 -3
  582. package/dist/http/HttpRouter.js.map +1 -1
  583. package/dist/http/HttpServerError.d.ts +5 -2
  584. package/dist/http/HttpServerError.d.ts.map +1 -1
  585. package/dist/http/HttpServerError.js +7 -5
  586. package/dist/http/HttpServerError.js.map +1 -1
  587. package/dist/http/HttpServerRequest.d.ts +30 -5
  588. package/dist/http/HttpServerRequest.d.ts.map +1 -1
  589. package/dist/http/HttpServerRequest.js +109 -20
  590. package/dist/http/HttpServerRequest.js.map +1 -1
  591. package/dist/http/HttpServerResponse.d.ts +17 -8
  592. package/dist/http/HttpServerResponse.d.ts.map +1 -1
  593. package/dist/http/HttpServerResponse.js +37 -21
  594. package/dist/http/HttpServerResponse.js.map +1 -1
  595. package/dist/http/HttpStaticServer.d.ts +0 -12
  596. package/dist/http/HttpStaticServer.d.ts.map +1 -1
  597. package/dist/http/HttpStaticServer.js +65 -24
  598. package/dist/http/HttpStaticServer.js.map +1 -1
  599. package/dist/http/MultipartParser/internal/contentType.d.ts +15 -1
  600. package/dist/http/MultipartParser/internal/contentType.d.ts.map +1 -1
  601. package/dist/http/MultipartParser/internal/contentType.js +89 -7
  602. package/dist/http/MultipartParser/internal/contentType.js.map +1 -1
  603. package/dist/http/MultipartParser/internal/headers.d.ts.map +1 -1
  604. package/dist/http/MultipartParser/internal/headers.js +4 -12
  605. package/dist/http/MultipartParser/internal/headers.js.map +1 -1
  606. package/dist/http/MultipartParser/internal/multipart.d.ts.map +1 -1
  607. package/dist/http/MultipartParser/internal/multipart.js +6 -27
  608. package/dist/http/MultipartParser/internal/multipart.js.map +1 -1
  609. package/dist/http/Url.d.ts.map +1 -1
  610. package/dist/http/Url.js +6 -1
  611. package/dist/http/Url.js.map +1 -1
  612. package/dist/http/UrlParams.d.ts +3 -1
  613. package/dist/http/UrlParams.d.ts.map +1 -1
  614. package/dist/http/UrlParams.js +4 -2
  615. package/dist/http/UrlParams.js.map +1 -1
  616. package/dist/http/internal/compression.js +4 -5
  617. package/dist/http/internal/compression.js.map +1 -1
  618. package/dist/http/internal/decompression.js +20 -11
  619. package/dist/http/internal/decompression.js.map +1 -1
  620. package/dist/http/internal/httpBody.js +8 -1
  621. package/dist/http/internal/httpBody.js.map +1 -1
  622. package/dist/http/internal/lazyStream.d.ts +2 -0
  623. package/dist/http/internal/lazyStream.d.ts.map +1 -0
  624. package/dist/http/internal/lazyStream.js +18 -0
  625. package/dist/http/internal/lazyStream.js.map +1 -0
  626. package/dist/http/internal/requestState.d.ts +2 -0
  627. package/dist/http/internal/requestState.d.ts.map +1 -0
  628. package/dist/http/internal/requestState.js +28 -0
  629. package/dist/http/internal/requestState.js.map +1 -0
  630. package/dist/http/internal/urlParams.js +25 -0
  631. package/dist/http/internal/urlParams.js.map +1 -1
  632. package/dist/http/internal/webResponse.d.ts +2 -0
  633. package/dist/http/internal/webResponse.d.ts.map +1 -0
  634. package/dist/http/internal/webResponse.js +12 -0
  635. package/dist/http/internal/webResponse.js.map +1 -0
  636. package/dist/http-api/HttpApi.d.ts +3 -6
  637. package/dist/http-api/HttpApi.d.ts.map +1 -1
  638. package/dist/http-api/HttpApi.js +4 -7
  639. package/dist/http-api/HttpApi.js.map +1 -1
  640. package/dist/http-api/HttpApiBuilder.d.ts.map +1 -1
  641. package/dist/http-api/HttpApiBuilder.js +142 -23
  642. package/dist/http-api/HttpApiBuilder.js.map +1 -1
  643. package/dist/http-api/HttpApiClient.d.ts +99 -4
  644. package/dist/http-api/HttpApiClient.d.ts.map +1 -1
  645. package/dist/http-api/HttpApiClient.js +218 -60
  646. package/dist/http-api/HttpApiClient.js.map +1 -1
  647. package/dist/http-api/HttpApiEndpoint.d.ts +72 -29
  648. package/dist/http-api/HttpApiEndpoint.d.ts.map +1 -1
  649. package/dist/http-api/HttpApiEndpoint.js +140 -14
  650. package/dist/http-api/HttpApiEndpoint.js.map +1 -1
  651. package/dist/http-api/HttpApiError.d.ts +58 -0
  652. package/dist/http-api/HttpApiError.d.ts.map +1 -1
  653. package/dist/http-api/HttpApiError.js +38 -12
  654. package/dist/http-api/HttpApiError.js.map +1 -1
  655. package/dist/http-api/HttpApiScalar.d.ts +2 -1
  656. package/dist/http-api/HttpApiScalar.d.ts.map +1 -1
  657. package/dist/http-api/HttpApiScalar.js +6 -3
  658. package/dist/http-api/HttpApiScalar.js.map +1 -1
  659. package/dist/http-api/HttpApiSchema.d.ts +242 -13
  660. package/dist/http-api/HttpApiSchema.d.ts.map +1 -1
  661. package/dist/http-api/HttpApiSchema.js +149 -5
  662. package/dist/http-api/HttpApiSchema.js.map +1 -1
  663. package/dist/http-api/HttpApiSwagger.d.ts +5 -0
  664. package/dist/http-api/HttpApiSwagger.d.ts.map +1 -1
  665. package/dist/http-api/HttpApiSwagger.js +14 -4
  666. package/dist/http-api/HttpApiSwagger.js.map +1 -1
  667. package/dist/http-api/HttpApiTest.d.ts +13 -2
  668. package/dist/http-api/HttpApiTest.d.ts.map +1 -1
  669. package/dist/http-api/HttpApiTest.js +33 -11
  670. package/dist/http-api/HttpApiTest.js.map +1 -1
  671. package/dist/http-api/OpenApi.d.ts +17 -3
  672. package/dist/http-api/OpenApi.d.ts.map +1 -1
  673. package/dist/http-api/OpenApi.js +81 -47
  674. package/dist/http-api/OpenApi.js.map +1 -1
  675. package/dist/http-api/internal/path.js +35 -10
  676. package/dist/http-api/internal/path.js.map +1 -1
  677. package/dist/http-api/internal/toCodecHttpProperties.d.ts +2 -0
  678. package/dist/http-api/internal/toCodecHttpProperties.d.ts.map +1 -0
  679. package/dist/http-api/internal/toCodecHttpProperties.js +38 -0
  680. package/dist/http-api/internal/toCodecHttpProperties.js.map +1 -0
  681. package/dist/index.d.ts +20 -0
  682. package/dist/index.d.ts.map +1 -1
  683. package/dist/index.js +20 -0
  684. package/dist/index.js.map +1 -1
  685. package/dist/internal/arbitrary/runner.d.ts.map +1 -1
  686. package/dist/internal/arbitrary/runner.js +120 -44
  687. package/dist/internal/arbitrary/runner.js.map +1 -1
  688. package/dist/internal/core.js +3 -1
  689. package/dist/internal/core.js.map +1 -1
  690. package/dist/internal/dateTime.js +19 -7
  691. package/dist/internal/dateTime.js.map +1 -1
  692. package/dist/internal/effect.js +106 -87
  693. package/dist/internal/effect.js.map +1 -1
  694. package/dist/internal/equal.js +14 -0
  695. package/dist/internal/equal.js.map +1 -1
  696. package/dist/internal/hashMap.js +2 -2
  697. package/dist/internal/hashMap.js.map +1 -1
  698. package/dist/internal/hydration.d.ts +2 -0
  699. package/dist/internal/hydration.d.ts.map +1 -0
  700. package/dist/internal/hydration.js +15 -0
  701. package/dist/internal/hydration.js.map +1 -0
  702. package/dist/internal/inflate.d.ts +2 -0
  703. package/dist/internal/inflate.d.ts.map +1 -0
  704. package/dist/internal/inflate.js +680 -0
  705. package/dist/internal/inflate.js.map +1 -0
  706. package/dist/internal/jsonSchema.d.ts +2 -0
  707. package/dist/internal/jsonSchema.d.ts.map +1 -0
  708. package/dist/internal/jsonSchema.js +28 -0
  709. package/dist/internal/jsonSchema.js.map +1 -0
  710. package/dist/internal/matcher.js +1 -1
  711. package/dist/internal/matcher.js.map +1 -1
  712. package/dist/internal/record.js +6 -0
  713. package/dist/internal/record.js.map +1 -1
  714. package/dist/internal/request.js +20 -7
  715. package/dist/internal/request.js.map +1 -1
  716. package/dist/internal/schedule.js +17 -22
  717. package/dist/internal/schedule.js.map +1 -1
  718. package/dist/internal/schema/compilerRegistry.js +4 -1
  719. package/dist/internal/schema/compilerRegistry.js.map +1 -1
  720. package/dist/internal/schema/content.d.ts +2 -0
  721. package/dist/internal/schema/content.d.ts.map +1 -0
  722. package/dist/internal/schema/content.js +13 -0
  723. package/dist/internal/schema/content.js.map +1 -0
  724. package/dist/internal/schema/fromJsonSchemaDocument.js +253 -255
  725. package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
  726. package/dist/internal/schema/fromRepresentation.js +2 -1
  727. package/dist/internal/schema/fromRepresentation.js.map +1 -1
  728. package/dist/internal/schema/interpreter.js +51 -36
  729. package/dist/internal/schema/interpreter.js.map +1 -1
  730. package/dist/internal/schema/standardSchema.js +42 -35
  731. package/dist/internal/schema/standardSchema.js.map +1 -1
  732. package/dist/internal/schema/toCodeDocument.js +10 -5
  733. package/dist/internal/schema/toCodeDocument.js.map +1 -1
  734. package/dist/internal/schema/toCodec.js +99 -17
  735. package/dist/internal/schema/toCodec.js.map +1 -1
  736. package/dist/internal/schema/toFormatter.js +5 -5
  737. package/dist/internal/schema/toFormatter.js.map +1 -1
  738. package/dist/internal/schema/toJsonSchemaDocument.js +257 -170
  739. package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -1
  740. package/dist/internal/schema/toRepresentation.js +107 -129
  741. package/dist/internal/schema/toRepresentation.js.map +1 -1
  742. package/dist/internal/sql.d.ts +2 -0
  743. package/dist/internal/sql.d.ts.map +1 -0
  744. package/dist/internal/sql.js +13 -0
  745. package/dist/internal/sql.js.map +1 -0
  746. package/dist/internal/trie.js +1 -3
  747. package/dist/internal/trie.js.map +1 -1
  748. package/dist/internal/uuid.js +7 -3
  749. package/dist/internal/uuid.js.map +1 -1
  750. package/dist/internal/version.js +1 -1
  751. package/dist/net/NetAddress.d.ts.map +1 -1
  752. package/dist/net/NetAddress.js +2 -8
  753. package/dist/net/NetAddress.js.map +1 -1
  754. package/dist/observability/OtlpExporter.d.ts.map +1 -1
  755. package/dist/observability/OtlpExporter.js +5 -12
  756. package/dist/observability/OtlpExporter.js.map +1 -1
  757. package/dist/observability/OtlpMetrics.d.ts.map +1 -1
  758. package/dist/observability/OtlpMetrics.js +5 -3
  759. package/dist/observability/OtlpMetrics.js.map +1 -1
  760. package/dist/observability/OtlpProxy.d.ts +154 -0
  761. package/dist/observability/OtlpProxy.d.ts.map +1 -0
  762. package/dist/observability/OtlpProxy.js +235 -0
  763. package/dist/observability/OtlpProxy.js.map +1 -0
  764. package/dist/observability/OtlpResource.d.ts +3 -1
  765. package/dist/observability/OtlpResource.d.ts.map +1 -1
  766. package/dist/observability/OtlpResource.js +11 -4
  767. package/dist/observability/OtlpResource.js.map +1 -1
  768. package/dist/observability/OtlpSerialization.d.ts +5 -0
  769. package/dist/observability/OtlpSerialization.d.ts.map +1 -1
  770. package/dist/observability/OtlpSerialization.js +14 -3
  771. package/dist/observability/OtlpSerialization.js.map +1 -1
  772. package/dist/observability/OtlpTracer.d.ts.map +1 -1
  773. package/dist/observability/OtlpTracer.js +4 -0
  774. package/dist/observability/OtlpTracer.js.map +1 -1
  775. package/dist/observability/index.d.ts +5 -0
  776. package/dist/observability/index.d.ts.map +1 -1
  777. package/dist/observability/index.js +5 -0
  778. package/dist/observability/index.js.map +1 -1
  779. package/dist/observability/internal/protobuf.d.ts +0 -9
  780. package/dist/observability/internal/protobuf.d.ts.map +1 -1
  781. package/dist/observability/internal/protobuf.js +2 -10
  782. package/dist/observability/internal/protobuf.js.map +1 -1
  783. package/dist/persistence/CircuitBreaker.d.ts +897 -0
  784. package/dist/persistence/CircuitBreaker.d.ts.map +1 -0
  785. package/dist/persistence/CircuitBreaker.js +1165 -0
  786. package/dist/persistence/CircuitBreaker.js.map +1 -0
  787. package/dist/persistence/PersistedCache.d.ts.map +1 -1
  788. package/dist/persistence/PersistedCache.js +1 -1
  789. package/dist/persistence/PersistedCache.js.map +1 -1
  790. package/dist/persistence/PersistedQueue.d.ts +6 -2
  791. package/dist/persistence/PersistedQueue.d.ts.map +1 -1
  792. package/dist/persistence/PersistedQueue.js +162 -84
  793. package/dist/persistence/PersistedQueue.js.map +1 -1
  794. package/dist/persistence/Persistence.d.ts +28 -0
  795. package/dist/persistence/Persistence.d.ts.map +1 -1
  796. package/dist/persistence/Persistence.js +36 -8
  797. package/dist/persistence/Persistence.js.map +1 -1
  798. package/dist/persistence/RateLimiter.d.ts.map +1 -1
  799. package/dist/persistence/RateLimiter.js +8 -12
  800. package/dist/persistence/RateLimiter.js.map +1 -1
  801. package/dist/persistence/Redis.d.ts +78 -2
  802. package/dist/persistence/Redis.d.ts.map +1 -1
  803. package/dist/persistence/Redis.js +62 -7
  804. package/dist/persistence/Redis.js.map +1 -1
  805. package/dist/persistence/UserDirectories.d.ts +129 -0
  806. package/dist/persistence/UserDirectories.d.ts.map +1 -0
  807. package/dist/persistence/UserDirectories.js +178 -0
  808. package/dist/persistence/UserDirectories.js.map +1 -0
  809. package/dist/persistence/index.d.ts +10 -0
  810. package/dist/persistence/index.d.ts.map +1 -1
  811. package/dist/persistence/index.js +10 -0
  812. package/dist/persistence/index.js.map +1 -1
  813. package/dist/process/ChildProcess.d.ts +32 -5
  814. package/dist/process/ChildProcess.d.ts.map +1 -1
  815. package/dist/process/ChildProcess.js.map +1 -1
  816. package/dist/process/ChildProcessSpawner.d.ts +30 -0
  817. package/dist/process/ChildProcessSpawner.d.ts.map +1 -1
  818. package/dist/process/ChildProcessSpawner.js +5 -2
  819. package/dist/process/ChildProcessSpawner.js.map +1 -1
  820. package/dist/reactivity/AsyncResult.d.ts +1 -1
  821. package/dist/reactivity/AsyncResult.d.ts.map +1 -1
  822. package/dist/reactivity/AsyncResult.js +1 -1
  823. package/dist/reactivity/AsyncResult.js.map +1 -1
  824. package/dist/reactivity/Atom.d.ts +69 -30
  825. package/dist/reactivity/Atom.d.ts.map +1 -1
  826. package/dist/reactivity/Atom.js +40 -15
  827. package/dist/reactivity/Atom.js.map +1 -1
  828. package/dist/reactivity/AtomHttpApi.d.ts +5 -5
  829. package/dist/reactivity/AtomHttpApi.d.ts.map +1 -1
  830. package/dist/reactivity/AtomHttpApi.js +1 -1
  831. package/dist/reactivity/AtomHttpApi.js.map +1 -1
  832. package/dist/reactivity/AtomRegistry.d.ts +2 -2
  833. package/dist/reactivity/AtomRegistry.d.ts.map +1 -1
  834. package/dist/reactivity/AtomRegistry.js +44 -9
  835. package/dist/reactivity/AtomRegistry.js.map +1 -1
  836. package/dist/reactivity/AtomRpc.d.ts +3 -3
  837. package/dist/reactivity/AtomRpc.d.ts.map +1 -1
  838. package/dist/reactivity/AtomRpc.js +1 -1
  839. package/dist/reactivity/AtomRpc.js.map +1 -1
  840. package/dist/reactivity/Hydration.d.ts.map +1 -1
  841. package/dist/reactivity/Hydration.js +46 -12
  842. package/dist/reactivity/Hydration.js.map +1 -1
  843. package/dist/reactivity/Reactivity.d.ts +71 -7
  844. package/dist/reactivity/Reactivity.d.ts.map +1 -1
  845. package/dist/reactivity/Reactivity.js +21 -12
  846. package/dist/reactivity/Reactivity.js.map +1 -1
  847. package/dist/rpc/Rpc.d.ts +18 -0
  848. package/dist/rpc/Rpc.d.ts.map +1 -1
  849. package/dist/rpc/Rpc.js +20 -0
  850. package/dist/rpc/Rpc.js.map +1 -1
  851. package/dist/rpc/RpcClient.d.ts +26 -2
  852. package/dist/rpc/RpcClient.d.ts.map +1 -1
  853. package/dist/rpc/RpcClient.js +198 -61
  854. package/dist/rpc/RpcClient.js.map +1 -1
  855. package/dist/rpc/RpcSerialization.d.ts +29 -0
  856. package/dist/rpc/RpcSerialization.d.ts.map +1 -1
  857. package/dist/rpc/RpcSerialization.js +41 -13
  858. package/dist/rpc/RpcSerialization.js.map +1 -1
  859. package/dist/rpc/RpcServer.d.ts.map +1 -1
  860. package/dist/rpc/RpcServer.js +20 -19
  861. package/dist/rpc/RpcServer.js.map +1 -1
  862. package/dist/rpc/RpcTest.d.ts +1 -0
  863. package/dist/rpc/RpcTest.d.ts.map +1 -1
  864. package/dist/rpc/RpcTest.js +1 -0
  865. package/dist/rpc/RpcTest.js.map +1 -1
  866. package/dist/schema/Model.d.ts +1 -1
  867. package/dist/schema/VariantSchema.d.ts +22 -3
  868. package/dist/schema/VariantSchema.d.ts.map +1 -1
  869. package/dist/schema/VariantSchema.js +32 -18
  870. package/dist/schema/VariantSchema.js.map +1 -1
  871. package/dist/socket/Socket.d.ts +23 -1
  872. package/dist/socket/Socket.d.ts.map +1 -1
  873. package/dist/socket/Socket.js +36 -3
  874. package/dist/socket/Socket.js.map +1 -1
  875. package/dist/sql/Migrator.d.ts +2 -1
  876. package/dist/sql/Migrator.d.ts.map +1 -1
  877. package/dist/sql/Migrator.js +21 -6
  878. package/dist/sql/Migrator.js.map +1 -1
  879. package/dist/sql/SqlClient.d.ts +148 -5
  880. package/dist/sql/SqlClient.d.ts.map +1 -1
  881. package/dist/sql/SqlClient.js +155 -27
  882. package/dist/sql/SqlClient.js.map +1 -1
  883. package/dist/sql/SqlResolver.d.ts +13 -0
  884. package/dist/sql/SqlResolver.d.ts.map +1 -1
  885. package/dist/sql/SqlResolver.js +27 -4
  886. package/dist/sql/SqlResolver.js.map +1 -1
  887. package/dist/sql/Statement.d.ts +10 -1
  888. package/dist/sql/Statement.d.ts.map +1 -1
  889. package/dist/sql/Statement.js +45 -7
  890. package/dist/sql/Statement.js.map +1 -1
  891. package/dist/testing/TestClock.d.ts.map +1 -1
  892. package/dist/testing/TestClock.js +4 -2
  893. package/dist/testing/TestClock.js.map +1 -1
  894. package/dist/testing/TestSchema.d.ts +7 -1
  895. package/dist/testing/TestSchema.d.ts.map +1 -1
  896. package/dist/testing/TestSchema.js +9 -3
  897. package/dist/testing/TestSchema.js.map +1 -1
  898. package/dist/workflow/DurableDeferred.d.ts.map +1 -1
  899. package/dist/workflow/DurableDeferred.js +21 -2
  900. package/dist/workflow/DurableDeferred.js.map +1 -1
  901. package/dist/workflow/WorkflowEngine.d.ts.map +1 -1
  902. package/dist/workflow/WorkflowEngine.js +18 -4
  903. package/dist/workflow/WorkflowEngine.js.map +1 -1
  904. package/package.json +13 -3
  905. package/src/Arbitrary.ts +10 -2
  906. package/src/Array.ts +128 -55
  907. package/src/Bytes.ts +111 -0
  908. package/src/Channel.ts +308 -452
  909. package/src/ChannelSchema.ts +1 -49
  910. package/src/Chunk.ts +55 -61
  911. package/src/Config.ts +12 -86
  912. package/src/ConfigProvider.ts +2 -1
  913. package/src/Cron.ts +6 -3
  914. package/src/Data.ts +60 -265
  915. package/src/Duration.ts +66 -16
  916. package/src/Effect.ts +503 -168
  917. package/src/Equal.ts +8 -1
  918. package/src/Equivalence.ts +7 -4
  919. package/src/Exit.ts +27 -12
  920. package/src/FiberHandle.ts +10 -9
  921. package/src/FiberMap.ts +13 -66
  922. package/src/FileSystem.ts +10 -0
  923. package/src/Formatter.ts +28 -13
  924. package/src/Graph.ts +171 -1263
  925. package/src/Hash.ts +4 -1
  926. package/src/HashSet.ts +0 -60
  927. package/src/Iterable.ts +15 -14
  928. package/src/JsonPatch.ts +4 -0
  929. package/src/JsonSchema.ts +40 -43
  930. package/src/Layer.ts +2 -2
  931. package/src/ManagedRuntime.ts +72 -6
  932. package/src/Metric.ts +252 -510
  933. package/src/MutableHashMap.ts +4 -473
  934. package/src/MutableList.ts +7 -5
  935. package/src/MutableRef.ts +8 -1
  936. package/src/Number.ts +2 -2
  937. package/src/Optic.ts +17 -332
  938. package/src/PartitionedSemaphore.ts +24 -13
  939. package/src/Path.ts +9 -1
  940. package/src/Pool.ts +109 -37
  941. package/src/PubSub.ts +17 -13
  942. package/src/Queue.ts +5 -37
  943. package/src/Random.ts +1 -1
  944. package/src/RcMap.ts +14 -8
  945. package/src/Record.ts +51 -0
  946. package/src/Ref.ts +15 -104
  947. package/src/References.ts +5 -4
  948. package/src/RequestResolver.ts +46 -87
  949. package/src/Resource.ts +1 -1
  950. package/src/Runtime.ts +19 -18
  951. package/src/Schedule.ts +3 -95
  952. package/src/Schema.ts +639 -381
  953. package/src/SchemaAST.ts +40 -29
  954. package/src/SchemaGetter.ts +22 -5
  955. package/src/SchemaIssue.ts +44 -53
  956. package/src/SchemaParser.ts +51 -18
  957. package/src/SchemaRepresentation.ts +95 -35
  958. package/src/SchemaTransformation.ts +10 -3
  959. package/src/Scope.ts +12 -2
  960. package/src/ScopedCache.ts +17 -142
  961. package/src/SemVer.ts +1528 -0
  962. package/src/SemVerRange.ts +883 -0
  963. package/src/Semaphore.ts +67 -40
  964. package/src/Sink.ts +21 -4
  965. package/src/Stream.ts +367 -1027
  966. package/src/String.ts +11 -8
  967. package/src/TextDiff.ts +766 -0
  968. package/src/Tracer.ts +15 -1
  969. package/src/TxHashMap.ts +1 -103
  970. package/src/TxHashSet.ts +48 -753
  971. package/src/ai/AiError.ts +66 -4
  972. package/src/ai/Chat.ts +10 -5
  973. package/src/ai/Decision.ts +49 -1
  974. package/src/ai/DecisionModel.ts +264 -108
  975. package/src/ai/EmbeddingModel.ts +25 -13
  976. package/src/ai/LanguageModel.ts +9 -0
  977. package/src/ai/McpClient.ts +1211 -0
  978. package/src/ai/McpClientError.ts +329 -0
  979. package/src/ai/McpProtocol.ts +2 -2
  980. package/src/ai/McpSchema.ts +153 -35
  981. package/src/ai/McpServer.ts +231 -233
  982. package/src/ai/Prompt.ts +114 -35
  983. package/src/ai/Response.ts +220 -65
  984. package/src/ai/Tool.ts +50 -6
  985. package/src/ai/Toolkit.ts +82 -11
  986. package/src/ai/index.ts +12 -0
  987. package/src/ai/internal/mcpCore.ts +13 -14
  988. package/src/ai/internal/mcpProtocol/v2024_11_05.ts +1 -1
  989. package/src/ai/internal/mcpProtocol/v2025_03_26.ts +1 -1
  990. package/src/ai/internal/mcpProtocol/v2025_06_18.ts +3 -3
  991. package/src/ai/internal/mcpProtocol/v2025_11_25.ts +3 -3
  992. package/src/ai/internal/mcpProtocol/v2026_07_28.ts +12 -14
  993. package/src/ai/internal/mcpProtocol.ts +22 -2
  994. package/src/ai/internal/mcpRuntime.ts +3 -4
  995. package/src/ai/internal/mcpSchema/v2024_11_05.ts +20 -13
  996. package/src/ai/internal/mcpSchema/v2025_03_26.ts +4 -2
  997. package/src/ai/internal/mcpSchema/v2025_06_18.ts +7 -7
  998. package/src/ai/internal/mcpSchema/v2025_11_25.ts +8 -8
  999. package/src/ai/internal/mcpSchema/v2026_07_28.ts +44 -42
  1000. package/src/cli/Argument.ts +15 -0
  1001. package/src/cli/CliError.ts +136 -4
  1002. package/src/cli/CliOutput.ts +183 -6
  1003. package/src/cli/Command.ts +367 -48
  1004. package/src/cli/Completions.ts +56 -0
  1005. package/src/cli/Flag.ts +132 -0
  1006. package/src/cli/GlobalFlag.ts +5 -6
  1007. package/src/cli/Param.ts +151 -6
  1008. package/src/cli/TerminalCapabilities.ts +159 -0
  1009. package/src/cli/index.ts +6 -0
  1010. package/src/cli/internal/command.ts +8 -3
  1011. package/src/cli/internal/completions/bash.ts +83 -32
  1012. package/src/cli/internal/completions/descriptor.ts +11 -1
  1013. package/src/cli/internal/completions/fish.ts +10 -8
  1014. package/src/cli/internal/completions/powershell.ts +23 -14
  1015. package/src/cli/internal/completions/zsh.ts +8 -5
  1016. package/src/cli/internal/formatter.ts +18 -0
  1017. package/src/cli/internal/lexer.ts +12 -5
  1018. package/src/cli/internal/parser.ts +31 -11
  1019. package/src/cluster/ClusterCron.ts +94 -35
  1020. package/src/cluster/ClusterMetrics.ts +149 -7
  1021. package/src/cluster/ClusterWorkflowEngine.ts +130 -57
  1022. package/src/cluster/Entity.ts +4 -0
  1023. package/src/cluster/MessageStorage.ts +26 -14
  1024. package/src/cluster/Runners.ts +76 -25
  1025. package/src/cluster/Sharding.ts +200 -58
  1026. package/src/cluster/ShardingConfig.ts +20 -0
  1027. package/src/cluster/Snowflake.ts +3 -7
  1028. package/src/cluster/SqlMessageStorage.ts +58 -55
  1029. package/src/cluster/SqlRunnerStorage.ts +120 -51
  1030. package/src/cluster/internal/entityManager.ts +155 -32
  1031. package/src/devtools/DevTools.ts +3 -2
  1032. package/src/devtools/DevToolsClient.ts +29 -10
  1033. package/src/encoding/Base64.ts +38 -0
  1034. package/src/encoding/Base64Url.ts +31 -0
  1035. package/src/encoding/Ini.ts +3 -0
  1036. package/src/encoding/JsonArray.ts +849 -0
  1037. package/src/encoding/Ndjson.ts +211 -20
  1038. package/src/encoding/SchemaBinary.ts +14 -48
  1039. package/src/encoding/Sse.ts +4 -3
  1040. package/src/encoding/Tar.ts +1417 -0
  1041. package/src/encoding/Toml.ts +36 -19
  1042. package/src/encoding/Xml.ts +2037 -0
  1043. package/src/encoding/Yaml.ts +108 -36
  1044. package/src/encoding/Zip.ts +1558 -0
  1045. package/src/encoding/index.ts +24 -0
  1046. package/src/eventlog/EventJournal.ts +611 -227
  1047. package/src/eventlog/EventLog.ts +496 -196
  1048. package/src/eventlog/EventLogEncryption.ts +128 -43
  1049. package/src/eventlog/EventLogMessage.ts +62 -11
  1050. package/src/eventlog/EventLogRemote.ts +77 -21
  1051. package/src/eventlog/EventLogServer.ts +162 -20
  1052. package/src/eventlog/EventLogServerEncrypted.ts +121 -80
  1053. package/src/eventlog/EventLogServerUnencrypted.ts +180 -77
  1054. package/src/eventlog/EventRow.ts +706 -0
  1055. package/src/eventlog/SqlEventJournal.ts +496 -193
  1056. package/src/eventlog/SqlEventLogServerEncrypted.ts +212 -83
  1057. package/src/eventlog/SqlEventLogServerUnencrypted.ts +141 -62
  1058. package/src/eventlog/index.ts +6 -0
  1059. package/src/eventlog/internal/conflicts.ts +119 -0
  1060. package/src/graphql/GraphQLClientError.ts +5 -12
  1061. package/src/graphql/GraphQLProtocol.ts +12 -9
  1062. package/src/graphql/GraphQLResolver.ts +90 -239
  1063. package/src/http/Cookies.ts +10 -11
  1064. package/src/http/FetchHttpClient.ts +56 -6
  1065. package/src/http/FindMyWay/internal/router.ts +11 -0
  1066. package/src/http/Headers.ts +337 -154
  1067. package/src/http/HttpClient.ts +673 -142
  1068. package/src/http/HttpClientError.ts +35 -1
  1069. package/src/http/HttpClientRequest.ts +151 -5
  1070. package/src/http/HttpClientResponse.ts +71 -0
  1071. package/src/http/HttpEffect.ts +25 -33
  1072. package/src/http/HttpIncomingMessage.ts +3 -23
  1073. package/src/http/HttpMiddleware.ts +194 -40
  1074. package/src/http/HttpRouter.ts +10 -3
  1075. package/src/http/HttpServerError.ts +8 -5
  1076. package/src/http/HttpServerRequest.ts +172 -27
  1077. package/src/http/HttpServerResponse.ts +49 -23
  1078. package/src/http/HttpStaticServer.ts +71 -26
  1079. package/src/http/MultipartParser/internal/contentType.ts +109 -8
  1080. package/src/http/MultipartParser/internal/headers.ts +4 -16
  1081. package/src/http/MultipartParser/internal/multipart.ts +10 -32
  1082. package/src/http/Url.ts +6 -1
  1083. package/src/http/UrlParams.ts +6 -1
  1084. package/src/http/internal/compression.ts +4 -5
  1085. package/src/http/internal/decompression.ts +32 -17
  1086. package/src/http/internal/httpBody.ts +10 -2
  1087. package/src/http/internal/lazyStream.ts +25 -0
  1088. package/src/http/internal/requestState.ts +33 -0
  1089. package/src/http/internal/urlParams.ts +29 -0
  1090. package/src/http/internal/webResponse.ts +20 -0
  1091. package/src/http-api/HttpApi.ts +4 -7
  1092. package/src/http-api/HttpApiBuilder.ts +190 -32
  1093. package/src/http-api/HttpApiClient.ts +364 -90
  1094. package/src/http-api/HttpApiEndpoint.ts +248 -46
  1095. package/src/http-api/HttpApiError.ts +55 -0
  1096. package/src/http-api/HttpApiScalar.ts +4 -3
  1097. package/src/http-api/HttpApiSchema.ts +373 -18
  1098. package/src/http-api/HttpApiSwagger.ts +11 -4
  1099. package/src/http-api/HttpApiTest.ts +36 -11
  1100. package/src/http-api/OpenApi.ts +103 -58
  1101. package/src/http-api/internal/path.ts +40 -12
  1102. package/src/http-api/internal/toCodecHttpProperties.ts +56 -0
  1103. package/src/index.ts +24 -0
  1104. package/src/internal/arbitrary/runner.ts +133 -36
  1105. package/src/internal/core.ts +3 -1
  1106. package/src/internal/dateTime.ts +20 -7
  1107. package/src/internal/effect.ts +144 -100
  1108. package/src/internal/equal.ts +17 -0
  1109. package/src/internal/hashMap.ts +2 -2
  1110. package/src/internal/hydration.ts +15 -0
  1111. package/src/internal/inflate.ts +710 -0
  1112. package/src/internal/jsonSchema.ts +27 -0
  1113. package/src/internal/matcher.ts +1 -1
  1114. package/src/internal/record.ts +6 -0
  1115. package/src/internal/request.ts +21 -6
  1116. package/src/internal/schedule.ts +20 -39
  1117. package/src/internal/schema/compilerRegistry.ts +6 -1
  1118. package/src/internal/schema/content.ts +18 -0
  1119. package/src/internal/schema/fromJsonSchemaDocument.ts +458 -351
  1120. package/src/internal/schema/fromRepresentation.ts +2 -1
  1121. package/src/internal/schema/interpreter.ts +58 -45
  1122. package/src/internal/schema/standardSchema.ts +34 -32
  1123. package/src/internal/schema/toCodeDocument.ts +12 -7
  1124. package/src/internal/schema/toCodec.ts +134 -15
  1125. package/src/internal/schema/toFormatter.ts +6 -6
  1126. package/src/internal/schema/toJsonSchemaDocument.ts +246 -194
  1127. package/src/internal/schema/toRepresentation.ts +122 -140
  1128. package/src/internal/sql.ts +14 -0
  1129. package/src/internal/trie.ts +1 -3
  1130. package/src/internal/uuid.ts +15 -10
  1131. package/src/internal/version.ts +1 -1
  1132. package/src/net/NetAddress.ts +2 -9
  1133. package/src/observability/OtlpExporter.ts +5 -12
  1134. package/src/observability/OtlpMetrics.ts +5 -3
  1135. package/src/observability/OtlpProxy.ts +314 -0
  1136. package/src/observability/OtlpResource.ts +16 -6
  1137. package/src/observability/OtlpSerialization.ts +17 -3
  1138. package/src/observability/OtlpTracer.ts +4 -0
  1139. package/src/observability/index.ts +6 -0
  1140. package/src/observability/internal/protobuf.ts +2 -10
  1141. package/src/persistence/CircuitBreaker.ts +1678 -0
  1142. package/src/persistence/PersistedCache.ts +3 -1
  1143. package/src/persistence/PersistedQueue.ts +223 -153
  1144. package/src/persistence/Persistence.ts +64 -30
  1145. package/src/persistence/RateLimiter.ts +18 -21
  1146. package/src/persistence/Redis.ts +129 -8
  1147. package/src/persistence/UserDirectories.ts +273 -0
  1148. package/src/persistence/index.ts +12 -0
  1149. package/src/process/ChildProcess.ts +32 -5
  1150. package/src/process/ChildProcessSpawner.ts +41 -2
  1151. package/src/reactivity/AsyncResult.ts +5 -39
  1152. package/src/reactivity/Atom.ts +134 -166
  1153. package/src/reactivity/AtomHttpApi.ts +10 -16
  1154. package/src/reactivity/AtomRegistry.ts +50 -29
  1155. package/src/reactivity/AtomRpc.ts +6 -22
  1156. package/src/reactivity/Hydration.ts +53 -12
  1157. package/src/reactivity/Reactivity.ts +97 -39
  1158. package/src/rpc/Rpc.ts +21 -0
  1159. package/src/rpc/RpcClient.ts +283 -104
  1160. package/src/rpc/RpcSerialization.ts +53 -14
  1161. package/src/rpc/RpcServer.ts +27 -21
  1162. package/src/rpc/RpcTest.ts +3 -0
  1163. package/src/schema/VariantSchema.ts +86 -22
  1164. package/src/socket/Socket.ts +45 -20
  1165. package/src/sql/Migrator.ts +26 -11
  1166. package/src/sql/SqlClient.ts +273 -29
  1167. package/src/sql/SqlResolver.ts +32 -9
  1168. package/src/sql/Statement.ts +65 -10
  1169. package/src/testing/TestClock.ts +4 -1
  1170. package/src/testing/TestSchema.ts +9 -3
  1171. package/src/workflow/DurableDeferred.ts +23 -6
  1172. package/src/workflow/WorkflowEngine.ts +34 -10
  1173. package/dist/http/internal/preResponseHandler.d.ts +0 -2
  1174. package/dist/http/internal/preResponseHandler.d.ts.map +0 -1
  1175. package/dist/http/internal/preResponseHandler.js +0 -14
  1176. package/dist/http/internal/preResponseHandler.js.map +0 -1
  1177. package/src/http/internal/preResponseHandler.ts +0 -19
package/src/SemVer.ts ADDED
@@ -0,0 +1,1528 @@
1
+ /**
2
+ * Immutable [Semantic Versioning 2.0.0](https://semver.org/spec/v2.0.0.html)
3
+ * values with strict parsing, canonical formatting, spec precedence ordering,
4
+ * and version bumps.
5
+ *
6
+ * A `SemVer` has numeric major, minor, and patch components, optional
7
+ * pre-release identifiers, and optional build metadata. Structural equality
8
+ * and hashing include build metadata, while `Order` follows spec precedence
9
+ * and ignores it. Version ranges live in `SemVerRange`.
10
+ *
11
+ * @stability unstable
12
+ * @since 4.0.6
13
+ */
14
+ import * as Data from "./Data.ts"
15
+ import * as Equal from "./Equal.ts"
16
+ import * as Equ from "./Equivalence.ts"
17
+ import { dual } from "./Function.ts"
18
+ import * as Hash from "./Hash.ts"
19
+ import { type Inspectable, NodeInspectSymbol } from "./Inspectable.ts"
20
+ import * as Option from "./Option.ts"
21
+ import * as order from "./Order.ts"
22
+ import { type Pipeable, pipeArguments } from "./Pipeable.ts"
23
+ import { hasProperty } from "./Predicate.ts"
24
+ import * as Result from "./Result.ts"
25
+
26
+ const TypeId = "~effect/SemVer"
27
+ const SemVerErrorTypeId = "~effect/SemVer/SemVerError"
28
+
29
+ /**
30
+ * Represents a semantic version.
31
+ *
32
+ * **Details**
33
+ *
34
+ * Pre-release identifiers are numbers when they consist only of digits and
35
+ * strings otherwise. Build metadata identifiers are always strings because
36
+ * they may contain leading zeros. Both arrays are empty when absent.
37
+ *
38
+ * **Example** (Reading version components)
39
+ *
40
+ * ```ts import.meta.vitest
41
+ * import { SemVer } from "effect"
42
+ *
43
+ * const version = SemVer.parseUnsafe("1.2.3-rc.1+build.5")
44
+ *
45
+ * version.minor // => 2
46
+ * version.prerelease // => ["rc", 1]
47
+ * version.build // => ["build", "5"]
48
+ * ```
49
+ *
50
+ * @see {@link parse} for decoding version strings
51
+ * @see {@link make} for constructing versions from components
52
+ * @stability unstable
53
+ * @category models
54
+ * @since 4.0.6
55
+ */
56
+ export interface SemVer extends Pipeable, Equal.Equal, Inspectable {
57
+ readonly [TypeId]: typeof TypeId
58
+ readonly major: number
59
+ readonly minor: number
60
+ readonly patch: number
61
+ readonly prerelease: ReadonlyArray<string | number>
62
+ readonly build: ReadonlyArray<string>
63
+ }
64
+
65
+ /**
66
+ * Error raised for invalid version strings, ranges, or components.
67
+ *
68
+ * @see {@link isSemVerError} for narrowing unknown values
69
+ * @stability unstable
70
+ * @category errors
71
+ * @since 4.0.6
72
+ */
73
+ export class SemVerError extends Data.TaggedError("SemVerError")<{
74
+ readonly message: string
75
+ readonly input?: string
76
+ }> {
77
+ readonly [SemVerErrorTypeId]: typeof SemVerErrorTypeId = SemVerErrorTypeId
78
+ }
79
+
80
+ /**
81
+ * Checks whether a value is a `SemVerError`.
82
+ *
83
+ * @stability unstable
84
+ * @category guards
85
+ * @since 4.0.6
86
+ */
87
+ export const isSemVerError = (u: unknown): u is SemVerError => hasProperty(u, SemVerErrorTypeId)
88
+
89
+ /** @internal */
90
+ export const invalid = (message: string): never => {
91
+ throw new SemVerError({ message })
92
+ }
93
+
94
+ const attempt = <A>(evaluate: () => A): Result.Result<A, SemVerError> =>
95
+ Result.try({
96
+ try: evaluate,
97
+ catch: (error) => {
98
+ if (!isSemVerError(error)) throw error
99
+ return error
100
+ }
101
+ })
102
+
103
+ /** @internal */
104
+ export const tryParse = <A>(
105
+ label: string,
106
+ input: string,
107
+ parse: (input: string) => A
108
+ ): Result.Result<A, SemVerError> =>
109
+ Result.mapError(
110
+ attempt(() => parse(input)),
111
+ (error) => new SemVerError({ message: `Invalid ${label} ${JSON.stringify(input)}: ${error.message}`, input })
112
+ )
113
+
114
+ const numericPattern = /^(?:0|[1-9]\d*)$/
115
+ const digitsPattern = /^\d+$/
116
+ const identifierPattern = /^[0-9A-Za-z-]+$/
117
+
118
+ const checkComponent = (value: number, label: string): number => {
119
+ if (!Number.isSafeInteger(value) || value < 0) {
120
+ return invalid(`${label} must be a non-negative safe integer, received ${value}`)
121
+ }
122
+ return value
123
+ }
124
+
125
+ /** @internal */
126
+ export const parseComponent = (value: string, label: string): number => {
127
+ if (!numericPattern.test(value)) {
128
+ return invalid(`${label} must be a non-negative integer without leading zeros, received ${JSON.stringify(value)}`)
129
+ }
130
+ return checkComponent(Number(value), label)
131
+ }
132
+
133
+ /** @internal */
134
+ export const prereleaseIdentifier = (identifier: string | number): string | number => {
135
+ if (typeof identifier === "number") return checkComponent(identifier, "numeric pre-release identifier")
136
+ if (!identifierPattern.test(identifier)) {
137
+ return invalid(`pre-release identifier must be non-empty [0-9A-Za-z-], received ${JSON.stringify(identifier)}`)
138
+ }
139
+ return digitsPattern.test(identifier) ? parseComponent(identifier, "numeric pre-release identifier") : identifier
140
+ }
141
+
142
+ const buildIdentifier = (identifier: string): string => {
143
+ if (!identifierPattern.test(identifier)) {
144
+ return invalid(`build identifier must be non-empty [0-9A-Za-z-], received ${JSON.stringify(identifier)}`)
145
+ }
146
+ return identifier
147
+ }
148
+
149
+ /** @internal */
150
+ export type Core = Pick<SemVer, "major" | "minor" | "patch" | "prerelease">
151
+
152
+ const comparePrerelease = (
153
+ self: ReadonlyArray<string | number>,
154
+ that: ReadonlyArray<string | number>
155
+ ): -1 | 0 | 1 => {
156
+ if (self.length === 0) return that.length === 0 ? 0 : 1
157
+ if (that.length === 0) return -1
158
+ const length = Math.min(self.length, that.length)
159
+ for (let i = 0; i < length; i++) {
160
+ const a = self[i]
161
+ const b = that[i]
162
+ if (a === b) continue
163
+ if (typeof a === "number") return typeof b === "number" ? order.Number(a, b) : -1
164
+ if (typeof b === "number") return 1
165
+ return order.String(a, b)
166
+ }
167
+ return order.Number(self.length, that.length)
168
+ }
169
+
170
+ /** @internal */
171
+ export const sameCore = (self: Core, that: Core): boolean =>
172
+ self.major === that.major && self.minor === that.minor && self.patch === that.patch
173
+
174
+ /** @internal */
175
+ export const compareCore = (self: Core, that: Core): -1 | 0 | 1 =>
176
+ order.Number(self.major, that.major) ||
177
+ order.Number(self.minor, that.minor) ||
178
+ order.Number(self.patch, that.patch) ||
179
+ comparePrerelease(self.prerelease, that.prerelease)
180
+
181
+ const SemVerProto: Omit<SemVer, "major" | "minor" | "patch" | "prerelease" | "build"> = {
182
+ [TypeId]: TypeId,
183
+ [Equal.symbol](this: SemVer, that: unknown): boolean {
184
+ return isSemVer(that) && Equivalence(this, that)
185
+ },
186
+ [Hash.symbol](this: SemVer): number {
187
+ return Hash.string(format(this))
188
+ },
189
+ toString(this: SemVer) {
190
+ return `SemVer(${format(this)})`
191
+ },
192
+ toJSON(this: SemVer) {
193
+ return { _id: "SemVer", value: format(this) }
194
+ },
195
+ [NodeInspectSymbol](this: SemVer) {
196
+ return this.toJSON()
197
+ },
198
+ pipe() {
199
+ return pipeArguments(this, arguments)
200
+ }
201
+ }
202
+
203
+ const unchecked = (
204
+ major: number,
205
+ minor: number,
206
+ patch: number,
207
+ prerelease: ReadonlyArray<string | number>,
208
+ build: ReadonlyArray<string>
209
+ ): SemVer => {
210
+ const self = Object.create(SemVerProto)
211
+ self.major = major
212
+ self.minor = minor
213
+ self.patch = patch
214
+ self.prerelease = prerelease
215
+ self.build = build
216
+ return self
217
+ }
218
+
219
+ const increment = (value: number, label: string): number => {
220
+ if (value >= Number.MAX_SAFE_INTEGER) return invalid(`${label} cannot be incremented past Number.MAX_SAFE_INTEGER`)
221
+ return value + 1
222
+ }
223
+
224
+ /**
225
+ * Checks whether a value is a `SemVer`.
226
+ *
227
+ * @stability unstable
228
+ * @category guards
229
+ * @since 4.0.6
230
+ */
231
+ export const isSemVer = (u: unknown): u is SemVer => hasProperty(u, TypeId)
232
+
233
+ /**
234
+ * The numeric components and identifiers of a version.
235
+ *
236
+ * @see {@link make} for validating components into a version
237
+ * @stability unstable
238
+ * @category models
239
+ * @since 4.0.6
240
+ */
241
+ export interface Components {
242
+ readonly major: number
243
+ readonly minor: number
244
+ readonly patch: number
245
+ readonly prerelease?: ReadonlyArray<string | number> | undefined
246
+ readonly build?: ReadonlyArray<string> | undefined
247
+ }
248
+
249
+ // The intersection excludes signs, leading zeros, and exponent notation.
250
+ type NumericComponent = "0" | (`${bigint}` & `${"1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"}${string}`)
251
+
252
+ /**
253
+ * Version string literals accepted by `fromInput`.
254
+ *
255
+ * **Details**
256
+ *
257
+ * Requires three numeric components without signs or leading zeros, followed
258
+ * by an optional `-` pre-release and `+` build suffix. Component magnitudes
259
+ * (at most `Number.MAX_SAFE_INTEGER`) and identifiers are only validated at
260
+ * runtime.
261
+ *
262
+ * @see {@link parse} for arbitrary strings
263
+ * @stability unstable
264
+ * @category models
265
+ * @since 4.0.6
266
+ */
267
+ export type VersionString = `${NumericComponent}.${NumericComponent}.${NumericComponent}${
268
+ | ""
269
+ | `-${string}`
270
+ | `+${string}`}`
271
+
272
+ /**
273
+ * Values accepted by `fromInput`: a version, a version string literal, or
274
+ * version components.
275
+ *
276
+ * @see {@link fromInput} for converting inputs
277
+ * @stability unstable
278
+ * @category models
279
+ * @since 4.0.6
280
+ */
281
+ export type Input = SemVer | VersionString | Components
282
+
283
+ /**
284
+ * Creates a version from its components and throws `SemVerError` for invalid
285
+ * components.
286
+ *
287
+ * **Details**
288
+ *
289
+ * Components must be non-negative safe integers. Identifiers must be non-empty
290
+ * and contain only ASCII alphanumerics and hyphens. Digit-only pre-release
291
+ * strings are normalized to numbers and must not have leading zeros.
292
+ *
293
+ * A `SemVer` spreads into exactly these components, so `make({ ...version,
294
+ * patch: version.patch + 1 })` derives a validated version from an existing
295
+ * one.
296
+ *
297
+ * **Example** (Creating a pre-release version)
298
+ *
299
+ * ```ts import.meta.vitest
300
+ * import { SemVer } from "effect"
301
+ *
302
+ * SemVer.format(SemVer.make({ major: 1, minor: 0, patch: 0, prerelease: ["beta", "2"] })) // => "1.0.0-beta.2"
303
+ * ```
304
+ *
305
+ * @see {@link parse} for decoding version strings
306
+ * @stability unstable
307
+ * @category constructors
308
+ * @since 4.0.6
309
+ */
310
+ export const make = (components: Components): SemVer =>
311
+ unchecked(
312
+ checkComponent(components.major, "major"),
313
+ checkComponent(components.minor, "minor"),
314
+ checkComponent(components.patch, "patch"),
315
+ components.prerelease?.map(prereleaseIdentifier) ?? [],
316
+ components.build?.map(buildIdentifier) ?? []
317
+ )
318
+
319
+ const parseOrThrow = (input: string): SemVer => {
320
+ let rest = input
321
+ let build: ReadonlyArray<string> = []
322
+ const plus = rest.indexOf("+")
323
+ if (plus !== -1) {
324
+ build = rest.slice(plus + 1).split(".").map(buildIdentifier)
325
+ rest = rest.slice(0, plus)
326
+ }
327
+ let prerelease: ReadonlyArray<string | number> = []
328
+ const dash = rest.indexOf("-")
329
+ if (dash !== -1) {
330
+ prerelease = rest.slice(dash + 1).split(".").map(prereleaseIdentifier)
331
+ rest = rest.slice(0, dash)
332
+ }
333
+ const core = rest.split(".")
334
+ if (core.length !== 3) return invalid("expected MAJOR.MINOR.PATCH")
335
+ return unchecked(
336
+ parseComponent(core[0], "major"),
337
+ parseComponent(core[1], "minor"),
338
+ parseComponent(core[2], "patch"),
339
+ prerelease,
340
+ build
341
+ )
342
+ }
343
+
344
+ /**
345
+ * Parses a strict Semantic Versioning 2.0.0 string.
346
+ *
347
+ * **Details**
348
+ *
349
+ * The input must match the spec grammar exactly. Leading zeros in numeric
350
+ * components or pre-release identifiers, empty identifiers, and numbers above
351
+ * `Number.MAX_SAFE_INTEGER` are rejected.
352
+ *
353
+ * **Gotchas**
354
+ *
355
+ * A `v` prefix, surrounding whitespace, and partial versions such as `1.2` are
356
+ * rejected because they are not semantic versions.
357
+ *
358
+ * **Example** (Parsing version strings)
359
+ *
360
+ * ```ts import.meta.vitest
361
+ * import { Result, SemVer } from "effect"
362
+ *
363
+ * Result.isSuccess(SemVer.parse("1.2.3-alpha.1+001")) // => true
364
+ * Result.isFailure(SemVer.parse("v1.2.3")) // => true
365
+ * ```
366
+ *
367
+ * @see {@link parseUnsafe} for throwing on invalid input
368
+ * @see {@link format} for the inverse operation
369
+ * @stability unstable
370
+ * @category constructors
371
+ * @since 4.0.6
372
+ */
373
+ export const parse = (input: string): Result.Result<SemVer, SemVerError> => tryParse("SemVer", input, parseOrThrow)
374
+
375
+ /**
376
+ * Parses a strict Semantic Versioning 2.0.0 string and throws `SemVerError`
377
+ * for invalid input.
378
+ *
379
+ * @see {@link parse} for non-throwing parsing
380
+ * @stability unstable
381
+ * @category constructors
382
+ * @since 4.0.6
383
+ */
384
+ export const parseUnsafe = (input: string): SemVer => Result.getOrThrow(parse(input))
385
+
386
+ /**
387
+ * Converts a version, version string, or version components into a `SemVer`.
388
+ *
389
+ * **Details**
390
+ *
391
+ * Versions are returned unchanged, strings are parsed like {@link parse}, and
392
+ * components are validated like {@link make}. Invalid input fails with
393
+ * `SemVerError`.
394
+ *
395
+ * **Example** (Accepting flexible version input)
396
+ *
397
+ * ```ts import.meta.vitest
398
+ * import { Result, SemVer } from "effect"
399
+ *
400
+ * Result.map(SemVer.fromInput("1.2.3-rc.1"), SemVer.format) // => Result.succeed("1.2.3-rc.1")
401
+ * Result.map(SemVer.fromInput({ major: 1, minor: 2, patch: 3 }), SemVer.format) // => Result.succeed("1.2.3")
402
+ * Result.isFailure(SemVer.fromInput({ major: -1, minor: 0, patch: 0 })) // => true
403
+ * ```
404
+ *
405
+ * @see {@link fromInputUnsafe} for throwing on invalid input
406
+ * @stability unstable
407
+ * @category constructors
408
+ * @since 4.0.6
409
+ */
410
+ export const fromInput = (input: Input): Result.Result<SemVer, SemVerError> => {
411
+ if (isSemVer(input)) return Result.succeed(input)
412
+ if (typeof input === "string") return parse(input)
413
+ return attempt(() => make(input))
414
+ }
415
+
416
+ /**
417
+ * Converts a version, version string, or version components into a `SemVer`
418
+ * and throws `SemVerError` for invalid input.
419
+ *
420
+ * @see {@link fromInput} for non-throwing conversion
421
+ * @stability unstable
422
+ * @category constructors
423
+ * @since 4.0.6
424
+ */
425
+ export const fromInputUnsafe = (input: Input): SemVer => Result.getOrThrow(fromInput(input))
426
+
427
+ /**
428
+ * Formats a version as its canonical string, including pre-release identifiers
429
+ * and build metadata.
430
+ *
431
+ * @see {@link parse} for the inverse operation
432
+ * @stability unstable
433
+ * @category converting
434
+ * @since 4.0.6
435
+ */
436
+ export const format = (self: SemVer): string => {
437
+ let out = `${self.major}.${self.minor}.${self.patch}`
438
+ if (self.prerelease.length > 0) out += `-${self.prerelease.join(".")}`
439
+ if (self.build.length > 0) out += `+${self.build.join(".")}`
440
+ return out
441
+ }
442
+
443
+ /**
444
+ * Checks whether a version has pre-release identifiers.
445
+ *
446
+ * @stability unstable
447
+ * @category predicates
448
+ * @since 4.0.6
449
+ */
450
+ export const isPrerelease = (self: SemVer): boolean => self.prerelease.length > 0
451
+
452
+ /**
453
+ * Checks whether a version has build metadata.
454
+ *
455
+ * **Details**
456
+ *
457
+ * Build metadata does not affect precedence, but it is part of structural
458
+ * equality.
459
+ *
460
+ * @stability unstable
461
+ * @category predicates
462
+ * @since 4.0.6
463
+ */
464
+ export const hasBuild = (self: SemVer): boolean => self.build.length > 0
465
+
466
+ /**
467
+ * Checks whether a version is in initial development, meaning its major
468
+ * version is `0`.
469
+ *
470
+ * **Details**
471
+ *
472
+ * The SemVer spec treats `0.y.z` as initial development where anything may
473
+ * change at any time and the public API should not be considered stable.
474
+ *
475
+ * @stability unstable
476
+ * @category predicates
477
+ * @since 4.0.6
478
+ */
479
+ export const isInitialDevelopment = (self: SemVer): boolean => self.major === 0
480
+
481
+ /**
482
+ * Orders versions by Semantic Versioning precedence.
483
+ *
484
+ * **Details**
485
+ *
486
+ * Major, minor, and patch are compared numerically. A pre-release has lower
487
+ * precedence than its release. Pre-release identifiers are compared left to
488
+ * right: numeric identifiers compare numerically and sort before alphanumeric
489
+ * identifiers, which compare in ASCII order. A longer list of otherwise equal
490
+ * identifiers has higher precedence.
491
+ *
492
+ * **Gotchas**
493
+ *
494
+ * Build metadata is ignored, so versions that differ only in build metadata
495
+ * compare as `0` even though they are not `Equal`.
496
+ *
497
+ * **Example** (Sorting by precedence)
498
+ *
499
+ * ```ts import.meta.vitest
500
+ * import { Array, SemVer } from "effect"
501
+ *
502
+ * const versions = ["1.0.0", "1.0.0-rc.1", "1.0.0-beta.11", "1.0.0-beta.2", "1.0.0-alpha"].map(SemVer.parseUnsafe)
503
+ *
504
+ * Array.sort(versions, SemVer.Order).map(SemVer.format) // => ["1.0.0-alpha", "1.0.0-beta.2", "1.0.0-beta.11", "1.0.0-rc.1", "1.0.0"]
505
+ * ```
506
+ *
507
+ * @see {@link Equivalence} for structural equality including build metadata
508
+ * @stability unstable
509
+ * @category instances
510
+ * @since 4.0.6
511
+ */
512
+ export const Order: order.Order<SemVer> = order.make(compareCore)
513
+
514
+ const identifiersEqual = Equ.Array(Equ.strictEqual<string | number>())
515
+
516
+ /**
517
+ * Provides structural equivalence for versions, including build metadata.
518
+ *
519
+ * @see {@link Order} for precedence that ignores build metadata
520
+ * @stability unstable
521
+ * @category instances
522
+ * @since 4.0.6
523
+ */
524
+ export const Equivalence: Equ.Equivalence<SemVer> = Equ.make((self, that) =>
525
+ self.major === that.major &&
526
+ self.minor === that.minor &&
527
+ self.patch === that.patch &&
528
+ identifiersEqual(self.prerelease, that.prerelease) &&
529
+ identifiersEqual(self.build, that.build)
530
+ )
531
+
532
+ /**
533
+ * Checks whether two versions are structurally equal, including build
534
+ * metadata.
535
+ *
536
+ * @stability unstable
537
+ * @category predicates
538
+ * @since 4.0.6
539
+ */
540
+ export const equals: {
541
+ /**
542
+ * Checks whether two versions are structurally equal, including build
543
+ * metadata.
544
+ *
545
+ * @stability unstable
546
+ * @category predicates
547
+ * @since 4.0.6
548
+ */
549
+ (that: SemVer): (self: SemVer) => boolean
550
+ /**
551
+ * Checks whether two versions are structurally equal, including build
552
+ * metadata.
553
+ *
554
+ * @stability unstable
555
+ * @category predicates
556
+ * @since 4.0.6
557
+ */
558
+ (self: SemVer, that: SemVer): boolean
559
+ } = dual(2, Equivalence)
560
+
561
+ /**
562
+ * Checks whether the first version has lower precedence than the second.
563
+ *
564
+ * @stability unstable
565
+ * @category predicates
566
+ * @since 4.0.6
567
+ */
568
+ export const isLessThan: {
569
+ /**
570
+ * Checks whether the first version has lower precedence than the second.
571
+ *
572
+ * @stability unstable
573
+ * @category predicates
574
+ * @since 4.0.6
575
+ */
576
+ (that: SemVer): (self: SemVer) => boolean
577
+ /**
578
+ * Checks whether the first version has lower precedence than the second.
579
+ *
580
+ * @stability unstable
581
+ * @category predicates
582
+ * @since 4.0.6
583
+ */
584
+ (self: SemVer, that: SemVer): boolean
585
+ } = order.isLessThan(Order)
586
+
587
+ /**
588
+ * Checks whether the first version has lower or equal precedence than the
589
+ * second.
590
+ *
591
+ * @stability unstable
592
+ * @category predicates
593
+ * @since 4.0.6
594
+ */
595
+ export const isLessThanOrEqualTo: {
596
+ /**
597
+ * Checks whether the first version has lower or equal precedence than the
598
+ * second.
599
+ *
600
+ * @stability unstable
601
+ * @category predicates
602
+ * @since 4.0.6
603
+ */
604
+ (that: SemVer): (self: SemVer) => boolean
605
+ /**
606
+ * Checks whether the first version has lower or equal precedence than the
607
+ * second.
608
+ *
609
+ * @stability unstable
610
+ * @category predicates
611
+ * @since 4.0.6
612
+ */
613
+ (self: SemVer, that: SemVer): boolean
614
+ } = order.isLessThanOrEqualTo(Order)
615
+
616
+ /**
617
+ * Checks whether the first version has higher precedence than the second.
618
+ *
619
+ * @stability unstable
620
+ * @category predicates
621
+ * @since 4.0.6
622
+ */
623
+ export const isGreaterThan: {
624
+ /**
625
+ * Checks whether the first version has higher precedence than the second.
626
+ *
627
+ * @stability unstable
628
+ * @category predicates
629
+ * @since 4.0.6
630
+ */
631
+ (that: SemVer): (self: SemVer) => boolean
632
+ /**
633
+ * Checks whether the first version has higher precedence than the second.
634
+ *
635
+ * @stability unstable
636
+ * @category predicates
637
+ * @since 4.0.6
638
+ */
639
+ (self: SemVer, that: SemVer): boolean
640
+ } = order.isGreaterThan(Order)
641
+
642
+ /**
643
+ * Checks whether the first version has higher or equal precedence than the
644
+ * second.
645
+ *
646
+ * @stability unstable
647
+ * @category predicates
648
+ * @since 4.0.6
649
+ */
650
+ export const isGreaterThanOrEqualTo: {
651
+ /**
652
+ * Checks whether the first version has higher or equal precedence than the
653
+ * second.
654
+ *
655
+ * @stability unstable
656
+ * @category predicates
657
+ * @since 4.0.6
658
+ */
659
+ (that: SemVer): (self: SemVer) => boolean
660
+ /**
661
+ * Checks whether the first version has higher or equal precedence than the
662
+ * second.
663
+ *
664
+ * @stability unstable
665
+ * @category predicates
666
+ * @since 4.0.6
667
+ */
668
+ (self: SemVer, that: SemVer): boolean
669
+ } = order.isGreaterThanOrEqualTo(Order)
670
+
671
+ /**
672
+ * Checks whether a version's precedence is within an inclusive range.
673
+ *
674
+ * @stability unstable
675
+ * @category predicates
676
+ * @since 4.0.6
677
+ */
678
+ export const between: {
679
+ /**
680
+ * Checks whether a version's precedence is within an inclusive range.
681
+ *
682
+ * @stability unstable
683
+ * @category predicates
684
+ * @since 4.0.6
685
+ */
686
+ (options: { minimum: SemVer; maximum: SemVer }): (self: SemVer) => boolean
687
+ /**
688
+ * Checks whether a version's precedence is within an inclusive range.
689
+ *
690
+ * @stability unstable
691
+ * @category predicates
692
+ * @since 4.0.6
693
+ */
694
+ (self: SemVer, options: { minimum: SemVer; maximum: SemVer }): boolean
695
+ } = order.isBetween(Order)
696
+
697
+ /**
698
+ * Returns the version with lower precedence, preferring the first on ties.
699
+ *
700
+ * @stability unstable
701
+ * @category ordering
702
+ * @since 4.0.6
703
+ */
704
+ export const min: {
705
+ /**
706
+ * Returns the version with lower precedence, preferring the first on ties.
707
+ *
708
+ * @stability unstable
709
+ * @category ordering
710
+ * @since 4.0.6
711
+ */
712
+ (that: SemVer): (self: SemVer) => SemVer
713
+ /**
714
+ * Returns the version with lower precedence, preferring the first on ties.
715
+ *
716
+ * @stability unstable
717
+ * @category ordering
718
+ * @since 4.0.6
719
+ */
720
+ (self: SemVer, that: SemVer): SemVer
721
+ } = order.min(Order)
722
+
723
+ /**
724
+ * Returns the version with higher precedence, preferring the first on ties.
725
+ *
726
+ * @stability unstable
727
+ * @category ordering
728
+ * @since 4.0.6
729
+ */
730
+ export const max: {
731
+ /**
732
+ * Returns the version with higher precedence, preferring the first on ties.
733
+ *
734
+ * @stability unstable
735
+ * @category ordering
736
+ * @since 4.0.6
737
+ */
738
+ (that: SemVer): (self: SemVer) => SemVer
739
+ /**
740
+ * Returns the version with higher precedence, preferring the first on ties.
741
+ *
742
+ * @stability unstable
743
+ * @category ordering
744
+ * @since 4.0.6
745
+ */
746
+ (self: SemVer, that: SemVer): SemVer
747
+ } = order.max(Order)
748
+
749
+ /**
750
+ * Constrains a version's precedence to an inclusive range.
751
+ *
752
+ * @stability unstable
753
+ * @category ordering
754
+ * @since 4.0.6
755
+ */
756
+ export const clamp: {
757
+ /**
758
+ * Constrains a version's precedence to an inclusive range.
759
+ *
760
+ * @stability unstable
761
+ * @category ordering
762
+ * @since 4.0.6
763
+ */
764
+ (options: { minimum: SemVer; maximum: SemVer }): (self: SemVer) => SemVer
765
+ /**
766
+ * Constrains a version's precedence to an inclusive range.
767
+ *
768
+ * @stability unstable
769
+ * @category ordering
770
+ * @since 4.0.6
771
+ */
772
+ (self: SemVer, options: { minimum: SemVer; maximum: SemVer }): SemVer
773
+ } = order.clamp(Order)
774
+
775
+ /**
776
+ * Replaces the pre-release identifiers of a version and throws `SemVerError`
777
+ * for invalid identifiers.
778
+ *
779
+ * **Details**
780
+ *
781
+ * Digit-only strings are normalized to numbers. An empty array removes the
782
+ * pre-release. Build metadata is preserved.
783
+ *
784
+ * @stability unstable
785
+ * @category transforming
786
+ * @since 4.0.6
787
+ */
788
+ export const withPrerelease: {
789
+ /**
790
+ * Replaces the pre-release identifiers of a version and throws `SemVerError`
791
+ * for invalid identifiers.
792
+ *
793
+ * **Details**
794
+ *
795
+ * Digit-only strings are normalized to numbers. An empty array removes the
796
+ * pre-release. Build metadata is preserved.
797
+ *
798
+ * @stability unstable
799
+ * @category transforming
800
+ * @since 4.0.6
801
+ */
802
+ (prerelease: ReadonlyArray<string | number>): (self: SemVer) => SemVer
803
+ /**
804
+ * Replaces the pre-release identifiers of a version and throws `SemVerError`
805
+ * for invalid identifiers.
806
+ *
807
+ * **Details**
808
+ *
809
+ * Digit-only strings are normalized to numbers. An empty array removes the
810
+ * pre-release. Build metadata is preserved.
811
+ *
812
+ * @stability unstable
813
+ * @category transforming
814
+ * @since 4.0.6
815
+ */
816
+ (self: SemVer, prerelease: ReadonlyArray<string | number>): SemVer
817
+ } = dual(
818
+ 2,
819
+ (self: SemVer, prerelease: ReadonlyArray<string | number>): SemVer =>
820
+ unchecked(self.major, self.minor, self.patch, prerelease.map(prereleaseIdentifier), self.build)
821
+ )
822
+
823
+ /**
824
+ * Replaces the build metadata of a version and throws `SemVerError` for
825
+ * invalid identifiers.
826
+ *
827
+ * **Details**
828
+ *
829
+ * An empty array removes the build metadata. Pre-release identifiers are
830
+ * preserved.
831
+ *
832
+ * @stability unstable
833
+ * @category transforming
834
+ * @since 4.0.6
835
+ */
836
+ export const withBuild: {
837
+ /**
838
+ * Replaces the build metadata of a version and throws `SemVerError` for
839
+ * invalid identifiers.
840
+ *
841
+ * **Details**
842
+ *
843
+ * An empty array removes the build metadata. Pre-release identifiers are
844
+ * preserved.
845
+ *
846
+ * @stability unstable
847
+ * @category transforming
848
+ * @since 4.0.6
849
+ */
850
+ (build: ReadonlyArray<string>): (self: SemVer) => SemVer
851
+ /**
852
+ * Replaces the build metadata of a version and throws `SemVerError` for
853
+ * invalid identifiers.
854
+ *
855
+ * **Details**
856
+ *
857
+ * An empty array removes the build metadata. Pre-release identifiers are
858
+ * preserved.
859
+ *
860
+ * @stability unstable
861
+ * @category transforming
862
+ * @since 4.0.6
863
+ */
864
+ (self: SemVer, build: ReadonlyArray<string>): SemVer
865
+ } = dual(
866
+ 2,
867
+ (self: SemVer, build: ReadonlyArray<string>): SemVer =>
868
+ unchecked(self.major, self.minor, self.patch, self.prerelease, build.map(buildIdentifier))
869
+ )
870
+
871
+ /**
872
+ * Removes pre-release identifiers and build metadata from a version.
873
+ *
874
+ * **Example** (Finalizing a release candidate)
875
+ *
876
+ * ```ts import.meta.vitest
877
+ * import { SemVer } from "effect"
878
+ *
879
+ * SemVer.format(SemVer.release(SemVer.parseUnsafe("2.0.0-rc.3+sha.5114f85"))) // => "2.0.0"
880
+ * ```
881
+ *
882
+ * @stability unstable
883
+ * @category transforming
884
+ * @since 4.0.6
885
+ */
886
+ export const release = (self: SemVer): SemVer =>
887
+ self.prerelease.length === 0 && self.build.length === 0
888
+ ? self
889
+ : unchecked(self.major, self.minor, self.patch, [], [])
890
+
891
+ /**
892
+ * Returns the next major release.
893
+ *
894
+ * **Details**
895
+ *
896
+ * Returns the smallest major release with higher precedence, so a pre-release
897
+ * of a major version, such as `2.0.0-rc.1`, becomes `2.0.0`. Pre-release
898
+ * identifiers and build metadata are removed.
899
+ *
900
+ * **Example** (Bumping major versions)
901
+ *
902
+ * ```ts import.meta.vitest
903
+ * import { SemVer } from "effect"
904
+ *
905
+ * SemVer.format(SemVer.bumpMajor(SemVer.parseUnsafe("1.2.3"))) // => "2.0.0"
906
+ * SemVer.format(SemVer.bumpMajor(SemVer.parseUnsafe("2.0.0-rc.1"))) // => "2.0.0"
907
+ * SemVer.format(SemVer.bumpMajor(SemVer.parseUnsafe("2.1.0-rc.1"))) // => "3.0.0"
908
+ * ```
909
+ *
910
+ * @stability unstable
911
+ * @category transforming
912
+ * @since 4.0.6
913
+ */
914
+ export const bumpMajor = (self: SemVer): SemVer =>
915
+ unchecked(
916
+ self.minor === 0 && self.patch === 0 && self.prerelease.length > 0 ? self.major : increment(self.major, "major"),
917
+ 0,
918
+ 0,
919
+ [],
920
+ []
921
+ )
922
+
923
+ /**
924
+ * Returns the next minor release.
925
+ *
926
+ * **Details**
927
+ *
928
+ * Returns the smallest minor release with higher precedence, so a pre-release
929
+ * of a minor version, such as `1.3.0-rc.1`, becomes `1.3.0`. Pre-release
930
+ * identifiers and build metadata are removed.
931
+ *
932
+ * @stability unstable
933
+ * @category transforming
934
+ * @since 4.0.6
935
+ */
936
+ export const bumpMinor = (self: SemVer): SemVer =>
937
+ unchecked(
938
+ self.major,
939
+ self.patch === 0 && self.prerelease.length > 0 ? self.minor : increment(self.minor, "minor"),
940
+ 0,
941
+ [],
942
+ []
943
+ )
944
+
945
+ /**
946
+ * Returns the next patch release.
947
+ *
948
+ * **Details**
949
+ *
950
+ * Returns the smallest patch release with higher precedence, so a pre-release
951
+ * such as `1.2.3-rc.1` becomes `1.2.3`. Pre-release identifiers and build
952
+ * metadata are removed.
953
+ *
954
+ * @stability unstable
955
+ * @category transforming
956
+ * @since 4.0.6
957
+ */
958
+ export const bumpPatch = (self: SemVer): SemVer =>
959
+ unchecked(
960
+ self.major,
961
+ self.minor,
962
+ self.prerelease.length > 0 ? self.patch : increment(self.patch, "patch"),
963
+ [],
964
+ []
965
+ )
966
+
967
+ const startPrerelease = (identifier: string | undefined): ReadonlyArray<string | number> =>
968
+ identifier === undefined ? [0] : [prereleaseIdentifier(identifier), 0]
969
+
970
+ const isSemVerArgs = (args: IArguments) => isSemVer(args[0])
971
+
972
+ /**
973
+ * Returns the first pre-release of the next major version.
974
+ *
975
+ * **Details**
976
+ *
977
+ * Increments major, resets minor and patch, and starts the pre-release at
978
+ * `[identifier, 0]`, or `[0]` without an identifier. Build metadata is removed.
979
+ *
980
+ * @stability unstable
981
+ * @category transforming
982
+ * @since 4.0.6
983
+ */
984
+ export const bumpPremajor: {
985
+ /**
986
+ * Returns the first pre-release of the next major version.
987
+ *
988
+ * **Details**
989
+ *
990
+ * Increments major, resets minor and patch, and starts the pre-release at
991
+ * `[identifier, 0]`, or `[0]` without an identifier. Build metadata is removed.
992
+ *
993
+ * @stability unstable
994
+ * @category transforming
995
+ * @since 4.0.6
996
+ */
997
+ (identifier?: string): (self: SemVer) => SemVer
998
+ /**
999
+ * Returns the first pre-release of the next major version.
1000
+ *
1001
+ * **Details**
1002
+ *
1003
+ * Increments major, resets minor and patch, and starts the pre-release at
1004
+ * `[identifier, 0]`, or `[0]` without an identifier. Build metadata is removed.
1005
+ *
1006
+ * @stability unstable
1007
+ * @category transforming
1008
+ * @since 4.0.6
1009
+ */
1010
+ (self: SemVer, identifier?: string): SemVer
1011
+ } = dual(
1012
+ isSemVerArgs,
1013
+ (self: SemVer, identifier?: string): SemVer =>
1014
+ unchecked(increment(self.major, "major"), 0, 0, startPrerelease(identifier), [])
1015
+ )
1016
+
1017
+ /**
1018
+ * Returns the first pre-release of the next minor version.
1019
+ *
1020
+ * **Details**
1021
+ *
1022
+ * Increments minor, resets patch, and starts the pre-release at
1023
+ * `[identifier, 0]`, or `[0]` without an identifier. Build metadata is removed.
1024
+ *
1025
+ * @stability unstable
1026
+ * @category transforming
1027
+ * @since 4.0.6
1028
+ */
1029
+ export const bumpPreminor: {
1030
+ /**
1031
+ * Returns the first pre-release of the next minor version.
1032
+ *
1033
+ * **Details**
1034
+ *
1035
+ * Increments minor, resets patch, and starts the pre-release at
1036
+ * `[identifier, 0]`, or `[0]` without an identifier. Build metadata is removed.
1037
+ *
1038
+ * @stability unstable
1039
+ * @category transforming
1040
+ * @since 4.0.6
1041
+ */
1042
+ (identifier?: string): (self: SemVer) => SemVer
1043
+ /**
1044
+ * Returns the first pre-release of the next minor version.
1045
+ *
1046
+ * **Details**
1047
+ *
1048
+ * Increments minor, resets patch, and starts the pre-release at
1049
+ * `[identifier, 0]`, or `[0]` without an identifier. Build metadata is removed.
1050
+ *
1051
+ * @stability unstable
1052
+ * @category transforming
1053
+ * @since 4.0.6
1054
+ */
1055
+ (self: SemVer, identifier?: string): SemVer
1056
+ } = dual(
1057
+ isSemVerArgs,
1058
+ (self: SemVer, identifier?: string): SemVer =>
1059
+ unchecked(self.major, increment(self.minor, "minor"), 0, startPrerelease(identifier), [])
1060
+ )
1061
+
1062
+ /**
1063
+ * Returns the first pre-release of the next patch version.
1064
+ *
1065
+ * **Details**
1066
+ *
1067
+ * Increments patch and starts the pre-release at `[identifier, 0]`, or `[0]`
1068
+ * without an identifier. Build metadata is removed.
1069
+ *
1070
+ * @stability unstable
1071
+ * @category transforming
1072
+ * @since 4.0.6
1073
+ */
1074
+ export const bumpPrepatch: {
1075
+ /**
1076
+ * Returns the first pre-release of the next patch version.
1077
+ *
1078
+ * **Details**
1079
+ *
1080
+ * Increments patch and starts the pre-release at `[identifier, 0]`, or `[0]`
1081
+ * without an identifier. Build metadata is removed.
1082
+ *
1083
+ * @stability unstable
1084
+ * @category transforming
1085
+ * @since 4.0.6
1086
+ */
1087
+ (identifier?: string): (self: SemVer) => SemVer
1088
+ /**
1089
+ * Returns the first pre-release of the next patch version.
1090
+ *
1091
+ * **Details**
1092
+ *
1093
+ * Increments patch and starts the pre-release at `[identifier, 0]`, or `[0]`
1094
+ * without an identifier. Build metadata is removed.
1095
+ *
1096
+ * @stability unstable
1097
+ * @category transforming
1098
+ * @since 4.0.6
1099
+ */
1100
+ (self: SemVer, identifier?: string): SemVer
1101
+ } = dual(
1102
+ isSemVerArgs,
1103
+ (self: SemVer, identifier?: string): SemVer =>
1104
+ unchecked(self.major, self.minor, increment(self.patch, "patch"), startPrerelease(identifier), [])
1105
+ )
1106
+
1107
+ const nextPrerelease = (prerelease: ReadonlyArray<string | number>): ReadonlyArray<string | number> => {
1108
+ for (let i = prerelease.length - 1; i >= 0; i--) {
1109
+ const identifier = prerelease[i]
1110
+ if (typeof identifier === "number") {
1111
+ const next = prerelease.slice()
1112
+ next[i] = increment(identifier, "pre-release identifier")
1113
+ return next
1114
+ }
1115
+ }
1116
+ return [...prerelease, 0]
1117
+ }
1118
+
1119
+ /**
1120
+ * Returns the next pre-release.
1121
+ *
1122
+ * **Details**
1123
+ *
1124
+ * - A release starts the pre-release of the next patch, like
1125
+ * {@link bumpPrepatch}.
1126
+ * - An identifier that differs from the first pre-release identifier restarts
1127
+ * the pre-release at `[identifier, 0]`.
1128
+ * - Otherwise the right-most numeric identifier is incremented, or `0` is
1129
+ * appended when there is none.
1130
+ *
1131
+ * Build metadata is removed.
1132
+ *
1133
+ * **Gotchas**
1134
+ *
1135
+ * Switching to an identifier that sorts lower, such as from `beta` to `alpha`,
1136
+ * returns a version with lower precedence.
1137
+ *
1138
+ * **Example** (Advancing pre-releases)
1139
+ *
1140
+ * ```ts import.meta.vitest
1141
+ * import { SemVer } from "effect"
1142
+ *
1143
+ * SemVer.format(SemVer.bumpPrerelease(SemVer.parseUnsafe("1.2.3"), "alpha")) // => "1.2.4-alpha.0"
1144
+ * SemVer.format(SemVer.bumpPrerelease(SemVer.parseUnsafe("1.2.4-alpha.0"))) // => "1.2.4-alpha.1"
1145
+ * SemVer.format(SemVer.bumpPrerelease(SemVer.parseUnsafe("1.2.4-alpha.1"), "beta")) // => "1.2.4-beta.0"
1146
+ * ```
1147
+ *
1148
+ * @stability unstable
1149
+ * @category transforming
1150
+ * @since 4.0.6
1151
+ */
1152
+ export const bumpPrerelease: {
1153
+ /**
1154
+ * Returns the next pre-release.
1155
+ *
1156
+ * **Details**
1157
+ *
1158
+ * - A release starts the pre-release of the next patch, like
1159
+ * {@link bumpPrepatch}.
1160
+ * - An identifier that differs from the first pre-release identifier restarts
1161
+ * the pre-release at `[identifier, 0]`.
1162
+ * - Otherwise the right-most numeric identifier is incremented, or `0` is
1163
+ * appended when there is none.
1164
+ *
1165
+ * Build metadata is removed.
1166
+ *
1167
+ * **Gotchas**
1168
+ *
1169
+ * Switching to an identifier that sorts lower, such as from `beta` to `alpha`,
1170
+ * returns a version with lower precedence.
1171
+ *
1172
+ * **Example** (Advancing pre-releases)
1173
+ *
1174
+ * ```ts import.meta.vitest
1175
+ * import { SemVer } from "effect"
1176
+ *
1177
+ * SemVer.format(SemVer.bumpPrerelease(SemVer.parseUnsafe("1.2.3"), "alpha")) // => "1.2.4-alpha.0"
1178
+ * SemVer.format(SemVer.bumpPrerelease(SemVer.parseUnsafe("1.2.4-alpha.0"))) // => "1.2.4-alpha.1"
1179
+ * SemVer.format(SemVer.bumpPrerelease(SemVer.parseUnsafe("1.2.4-alpha.1"), "beta")) // => "1.2.4-beta.0"
1180
+ * ```
1181
+ *
1182
+ * @stability unstable
1183
+ * @category transforming
1184
+ * @since 4.0.6
1185
+ */
1186
+ (identifier?: string): (self: SemVer) => SemVer
1187
+ /**
1188
+ * Returns the next pre-release.
1189
+ *
1190
+ * **Details**
1191
+ *
1192
+ * - A release starts the pre-release of the next patch, like
1193
+ * {@link bumpPrepatch}.
1194
+ * - An identifier that differs from the first pre-release identifier restarts
1195
+ * the pre-release at `[identifier, 0]`.
1196
+ * - Otherwise the right-most numeric identifier is incremented, or `0` is
1197
+ * appended when there is none.
1198
+ *
1199
+ * Build metadata is removed.
1200
+ *
1201
+ * **Gotchas**
1202
+ *
1203
+ * Switching to an identifier that sorts lower, such as from `beta` to `alpha`,
1204
+ * returns a version with lower precedence.
1205
+ *
1206
+ * **Example** (Advancing pre-releases)
1207
+ *
1208
+ * ```ts import.meta.vitest
1209
+ * import { SemVer } from "effect"
1210
+ *
1211
+ * SemVer.format(SemVer.bumpPrerelease(SemVer.parseUnsafe("1.2.3"), "alpha")) // => "1.2.4-alpha.0"
1212
+ * SemVer.format(SemVer.bumpPrerelease(SemVer.parseUnsafe("1.2.4-alpha.0"))) // => "1.2.4-alpha.1"
1213
+ * SemVer.format(SemVer.bumpPrerelease(SemVer.parseUnsafe("1.2.4-alpha.1"), "beta")) // => "1.2.4-beta.0"
1214
+ * ```
1215
+ *
1216
+ * @stability unstable
1217
+ * @category transforming
1218
+ * @since 4.0.6
1219
+ */
1220
+ (self: SemVer, identifier?: string): SemVer
1221
+ } = dual(isSemVerArgs, (self: SemVer, identifier?: string): SemVer => {
1222
+ if (self.prerelease.length === 0) {
1223
+ return unchecked(self.major, self.minor, increment(self.patch, "patch"), startPrerelease(identifier), [])
1224
+ }
1225
+ if (identifier !== undefined) {
1226
+ const normalized = prereleaseIdentifier(identifier)
1227
+ if (self.prerelease[0] !== normalized) {
1228
+ return unchecked(self.major, self.minor, self.patch, [normalized, 0], [])
1229
+ }
1230
+ }
1231
+ return unchecked(self.major, self.minor, self.patch, nextPrerelease(self.prerelease), [])
1232
+ })
1233
+
1234
+ /**
1235
+ * Names of version changes, matching npm's release types.
1236
+ *
1237
+ * @see {@link difference} for classifying the change between two versions
1238
+ * @stability unstable
1239
+ * @category models
1240
+ * @since 4.0.6
1241
+ */
1242
+ export type ReleaseType = "major" | "premajor" | "minor" | "preminor" | "patch" | "prepatch" | "prerelease"
1243
+
1244
+ /**
1245
+ * Bumps a version by release type.
1246
+ *
1247
+ * **When to use**
1248
+ *
1249
+ * Use when the release type is data, such as a CLI argument, configuration, or
1250
+ * the result of {@link difference}.
1251
+ *
1252
+ * **Details**
1253
+ *
1254
+ * Dispatches to {@link bumpMajor}, {@link bumpMinor}, {@link bumpPatch},
1255
+ * {@link bumpPremajor}, {@link bumpPreminor}, {@link bumpPrepatch}, or
1256
+ * {@link bumpPrerelease}, with the same semantics.
1257
+ *
1258
+ * **Gotchas**
1259
+ *
1260
+ * The pre-release `identifier` is ignored for `"major"`, `"minor"`, and
1261
+ * `"patch"`.
1262
+ *
1263
+ * **Example** (Bumping by a release type from input)
1264
+ *
1265
+ * ```ts import.meta.vitest
1266
+ * import { SemVer } from "effect"
1267
+ *
1268
+ * const version = SemVer.parseUnsafe("1.2.3")
1269
+ *
1270
+ * SemVer.format(SemVer.bump(version, "minor")) // => "1.3.0"
1271
+ * SemVer.format(SemVer.bump(version, "premajor", "rc")) // => "2.0.0-rc.0"
1272
+ * ```
1273
+ *
1274
+ * **Example** (Defining custom bump rules)
1275
+ *
1276
+ * ```ts import.meta.vitest
1277
+ * import { SemVer } from "effect"
1278
+ *
1279
+ * // Always increment patch, even for pre-releases, and keep build metadata
1280
+ * const customBump = (version: SemVer.SemVer, releaseType: SemVer.ReleaseType): SemVer.SemVer =>
1281
+ * releaseType === "patch"
1282
+ * ? SemVer.make({ ...version, patch: version.patch + 1, prerelease: [] })
1283
+ * : SemVer.withBuild(SemVer.bump(version, releaseType), version.build)
1284
+ *
1285
+ * SemVer.format(customBump(SemVer.parseUnsafe("1.2.3-rc.1+b"), "patch")) // => "1.2.4+b"
1286
+ * SemVer.format(customBump(SemVer.parseUnsafe("1.2.3-rc.1+b"), "minor")) // => "1.3.0+b"
1287
+ * ```
1288
+ *
1289
+ * @stability unstable
1290
+ * @category transforming
1291
+ * @since 4.0.6
1292
+ */
1293
+ export const bump: {
1294
+ /**
1295
+ * Bumps a version by release type.
1296
+ *
1297
+ * **When to use**
1298
+ *
1299
+ * Use when the release type is data, such as a CLI argument, configuration, or
1300
+ * the result of {@link difference}.
1301
+ *
1302
+ * **Details**
1303
+ *
1304
+ * Dispatches to {@link bumpMajor}, {@link bumpMinor}, {@link bumpPatch},
1305
+ * {@link bumpPremajor}, {@link bumpPreminor}, {@link bumpPrepatch}, or
1306
+ * {@link bumpPrerelease}, with the same semantics.
1307
+ *
1308
+ * **Gotchas**
1309
+ *
1310
+ * The pre-release `identifier` is ignored for `"major"`, `"minor"`, and
1311
+ * `"patch"`.
1312
+ *
1313
+ * **Example** (Bumping by a release type from input)
1314
+ *
1315
+ * ```ts import.meta.vitest
1316
+ * import { SemVer } from "effect"
1317
+ *
1318
+ * const version = SemVer.parseUnsafe("1.2.3")
1319
+ *
1320
+ * SemVer.format(SemVer.bump(version, "minor")) // => "1.3.0"
1321
+ * SemVer.format(SemVer.bump(version, "premajor", "rc")) // => "2.0.0-rc.0"
1322
+ * ```
1323
+ *
1324
+ * **Example** (Defining custom bump rules)
1325
+ *
1326
+ * ```ts import.meta.vitest
1327
+ * import { SemVer } from "effect"
1328
+ *
1329
+ * // Always increment patch, even for pre-releases, and keep build metadata
1330
+ * const customBump = (version: SemVer.SemVer, releaseType: SemVer.ReleaseType): SemVer.SemVer =>
1331
+ * releaseType === "patch"
1332
+ * ? SemVer.make({ ...version, patch: version.patch + 1, prerelease: [] })
1333
+ * : SemVer.withBuild(SemVer.bump(version, releaseType), version.build)
1334
+ *
1335
+ * SemVer.format(customBump(SemVer.parseUnsafe("1.2.3-rc.1+b"), "patch")) // => "1.2.4+b"
1336
+ * SemVer.format(customBump(SemVer.parseUnsafe("1.2.3-rc.1+b"), "minor")) // => "1.3.0+b"
1337
+ * ```
1338
+ *
1339
+ * @stability unstable
1340
+ * @category transforming
1341
+ * @since 4.0.6
1342
+ */
1343
+ (releaseType: ReleaseType, identifier?: string): (self: SemVer) => SemVer
1344
+ /**
1345
+ * Bumps a version by release type.
1346
+ *
1347
+ * **When to use**
1348
+ *
1349
+ * Use when the release type is data, such as a CLI argument, configuration, or
1350
+ * the result of {@link difference}.
1351
+ *
1352
+ * **Details**
1353
+ *
1354
+ * Dispatches to {@link bumpMajor}, {@link bumpMinor}, {@link bumpPatch},
1355
+ * {@link bumpPremajor}, {@link bumpPreminor}, {@link bumpPrepatch}, or
1356
+ * {@link bumpPrerelease}, with the same semantics.
1357
+ *
1358
+ * **Gotchas**
1359
+ *
1360
+ * The pre-release `identifier` is ignored for `"major"`, `"minor"`, and
1361
+ * `"patch"`.
1362
+ *
1363
+ * **Example** (Bumping by a release type from input)
1364
+ *
1365
+ * ```ts import.meta.vitest
1366
+ * import { SemVer } from "effect"
1367
+ *
1368
+ * const version = SemVer.parseUnsafe("1.2.3")
1369
+ *
1370
+ * SemVer.format(SemVer.bump(version, "minor")) // => "1.3.0"
1371
+ * SemVer.format(SemVer.bump(version, "premajor", "rc")) // => "2.0.0-rc.0"
1372
+ * ```
1373
+ *
1374
+ * **Example** (Defining custom bump rules)
1375
+ *
1376
+ * ```ts import.meta.vitest
1377
+ * import { SemVer } from "effect"
1378
+ *
1379
+ * // Always increment patch, even for pre-releases, and keep build metadata
1380
+ * const customBump = (version: SemVer.SemVer, releaseType: SemVer.ReleaseType): SemVer.SemVer =>
1381
+ * releaseType === "patch"
1382
+ * ? SemVer.make({ ...version, patch: version.patch + 1, prerelease: [] })
1383
+ * : SemVer.withBuild(SemVer.bump(version, releaseType), version.build)
1384
+ *
1385
+ * SemVer.format(customBump(SemVer.parseUnsafe("1.2.3-rc.1+b"), "patch")) // => "1.2.4+b"
1386
+ * SemVer.format(customBump(SemVer.parseUnsafe("1.2.3-rc.1+b"), "minor")) // => "1.3.0+b"
1387
+ * ```
1388
+ *
1389
+ * @stability unstable
1390
+ * @category transforming
1391
+ * @since 4.0.6
1392
+ */
1393
+ (self: SemVer, releaseType: ReleaseType, identifier?: string): SemVer
1394
+ } = dual(isSemVerArgs, (self: SemVer, releaseType: ReleaseType, identifier?: string): SemVer => {
1395
+ switch (releaseType) {
1396
+ case "major":
1397
+ return bumpMajor(self)
1398
+ case "minor":
1399
+ return bumpMinor(self)
1400
+ case "patch":
1401
+ return bumpPatch(self)
1402
+ case "premajor":
1403
+ return bumpPremajor(self, identifier)
1404
+ case "preminor":
1405
+ return bumpPreminor(self, identifier)
1406
+ case "prepatch":
1407
+ return bumpPrepatch(self, identifier)
1408
+ case "prerelease":
1409
+ return bumpPrerelease(self, identifier)
1410
+ }
1411
+ })
1412
+
1413
+ /**
1414
+ * Classifies the change between two versions by release type.
1415
+ *
1416
+ * **Details**
1417
+ *
1418
+ * Follows node-semver's `diff`, so the result names the bump that produces the
1419
+ * higher version from the lower one. Moving to a pre-release adds the `pre`
1420
+ * prefix, and finalizing a pre-release reports the level it was released at:
1421
+ * `1.0.0-1` to `1.0.0` is `"major"`, `1.1.0-1` to `1.1.0` is `"minor"`, and
1422
+ * `1.2.3-1` to `1.2.3` is `"patch"`. The result does not depend on argument
1423
+ * order.
1424
+ *
1425
+ * **Gotchas**
1426
+ *
1427
+ * Returns `None` for versions with the same precedence, including versions
1428
+ * that differ only in build metadata.
1429
+ *
1430
+ * **Example** (Classifying upgrades)
1431
+ *
1432
+ * ```ts import.meta.vitest
1433
+ * import { Option, SemVer } from "effect"
1434
+ *
1435
+ * SemVer.difference(SemVer.parseUnsafe("1.2.3"), SemVer.parseUnsafe("1.3.0")) // => Option.some("minor")
1436
+ * SemVer.difference(SemVer.parseUnsafe("1.2.3"), SemVer.parseUnsafe("2.0.0-rc.1")) // => Option.some("premajor")
1437
+ * SemVer.difference(SemVer.parseUnsafe("2.0.0-rc.1"), SemVer.parseUnsafe("2.0.0")) // => Option.some("major")
1438
+ * SemVer.difference(SemVer.parseUnsafe("1.2.3+a"), SemVer.parseUnsafe("1.2.3+b")) // => Option.none()
1439
+ * ```
1440
+ *
1441
+ * @see {@link bump} for applying a release type to a version
1442
+ * @stability unstable
1443
+ * @category comparisons
1444
+ * @since 4.0.6
1445
+ */
1446
+ export const difference: {
1447
+ /**
1448
+ * Classifies the change between two versions by release type.
1449
+ *
1450
+ * **Details**
1451
+ *
1452
+ * Follows node-semver's `diff`, so the result names the bump that produces the
1453
+ * higher version from the lower one. Moving to a pre-release adds the `pre`
1454
+ * prefix, and finalizing a pre-release reports the level it was released at:
1455
+ * `1.0.0-1` to `1.0.0` is `"major"`, `1.1.0-1` to `1.1.0` is `"minor"`, and
1456
+ * `1.2.3-1` to `1.2.3` is `"patch"`. The result does not depend on argument
1457
+ * order.
1458
+ *
1459
+ * **Gotchas**
1460
+ *
1461
+ * Returns `None` for versions with the same precedence, including versions
1462
+ * that differ only in build metadata.
1463
+ *
1464
+ * **Example** (Classifying upgrades)
1465
+ *
1466
+ * ```ts import.meta.vitest
1467
+ * import { Option, SemVer } from "effect"
1468
+ *
1469
+ * SemVer.difference(SemVer.parseUnsafe("1.2.3"), SemVer.parseUnsafe("1.3.0")) // => Option.some("minor")
1470
+ * SemVer.difference(SemVer.parseUnsafe("1.2.3"), SemVer.parseUnsafe("2.0.0-rc.1")) // => Option.some("premajor")
1471
+ * SemVer.difference(SemVer.parseUnsafe("2.0.0-rc.1"), SemVer.parseUnsafe("2.0.0")) // => Option.some("major")
1472
+ * SemVer.difference(SemVer.parseUnsafe("1.2.3+a"), SemVer.parseUnsafe("1.2.3+b")) // => Option.none()
1473
+ * ```
1474
+ *
1475
+ * @see {@link bump} for applying a release type to a version
1476
+ * @stability unstable
1477
+ * @category comparisons
1478
+ * @since 4.0.6
1479
+ */
1480
+ (that: SemVer): (self: SemVer) => Option.Option<ReleaseType>
1481
+ /**
1482
+ * Classifies the change between two versions by release type.
1483
+ *
1484
+ * **Details**
1485
+ *
1486
+ * Follows node-semver's `diff`, so the result names the bump that produces the
1487
+ * higher version from the lower one. Moving to a pre-release adds the `pre`
1488
+ * prefix, and finalizing a pre-release reports the level it was released at:
1489
+ * `1.0.0-1` to `1.0.0` is `"major"`, `1.1.0-1` to `1.1.0` is `"minor"`, and
1490
+ * `1.2.3-1` to `1.2.3` is `"patch"`. The result does not depend on argument
1491
+ * order.
1492
+ *
1493
+ * **Gotchas**
1494
+ *
1495
+ * Returns `None` for versions with the same precedence, including versions
1496
+ * that differ only in build metadata.
1497
+ *
1498
+ * **Example** (Classifying upgrades)
1499
+ *
1500
+ * ```ts import.meta.vitest
1501
+ * import { Option, SemVer } from "effect"
1502
+ *
1503
+ * SemVer.difference(SemVer.parseUnsafe("1.2.3"), SemVer.parseUnsafe("1.3.0")) // => Option.some("minor")
1504
+ * SemVer.difference(SemVer.parseUnsafe("1.2.3"), SemVer.parseUnsafe("2.0.0-rc.1")) // => Option.some("premajor")
1505
+ * SemVer.difference(SemVer.parseUnsafe("2.0.0-rc.1"), SemVer.parseUnsafe("2.0.0")) // => Option.some("major")
1506
+ * SemVer.difference(SemVer.parseUnsafe("1.2.3+a"), SemVer.parseUnsafe("1.2.3+b")) // => Option.none()
1507
+ * ```
1508
+ *
1509
+ * @see {@link bump} for applying a release type to a version
1510
+ * @stability unstable
1511
+ * @category comparisons
1512
+ * @since 4.0.6
1513
+ */
1514
+ (self: SemVer, that: SemVer): Option.Option<ReleaseType>
1515
+ } = dual(2, (self: SemVer, that: SemVer): Option.Option<ReleaseType> => {
1516
+ const comparison = Order(self, that)
1517
+ if (comparison === 0) return Option.none()
1518
+ const [low, high] = comparison < 0 ? [self, that] : [that, self]
1519
+ const highIsPrerelease = high.prerelease.length > 0
1520
+ if (low.prerelease.length > 0 && !highIsPrerelease) {
1521
+ if (low.minor === 0 && low.patch === 0) return Option.some("major")
1522
+ if (sameCore(low, high)) return Option.some(low.patch === 0 ? "minor" : "patch")
1523
+ }
1524
+ if (self.major !== that.major) return Option.some(highIsPrerelease ? "premajor" : "major")
1525
+ if (self.minor !== that.minor) return Option.some(highIsPrerelease ? "preminor" : "minor")
1526
+ if (self.patch !== that.patch) return Option.some(highIsPrerelease ? "prepatch" : "patch")
1527
+ return Option.some("prerelease")
1528
+ })