effect 4.0.0-beta.4 → 4.0.0-beta.41

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 (1235) hide show
  1. package/dist/Array.d.ts +213 -385
  2. package/dist/Array.d.ts.map +1 -1
  3. package/dist/Array.js +149 -102
  4. package/dist/Array.js.map +1 -1
  5. package/dist/BigDecimal.d.ts +82 -45
  6. package/dist/BigDecimal.d.ts.map +1 -1
  7. package/dist/BigDecimal.js +87 -38
  8. package/dist/BigDecimal.js.map +1 -1
  9. package/dist/BigInt.d.ts +39 -32
  10. package/dist/BigInt.d.ts.map +1 -1
  11. package/dist/BigInt.js +32 -29
  12. package/dist/BigInt.js.map +1 -1
  13. package/dist/Brand.d.ts +1 -1
  14. package/dist/Brand.d.ts.map +1 -1
  15. package/dist/Brand.js +1 -1
  16. package/dist/Brand.js.map +1 -1
  17. package/dist/Cache.d.ts +2 -2
  18. package/dist/Cache.d.ts.map +1 -1
  19. package/dist/Cache.js +6 -5
  20. package/dist/Cache.js.map +1 -1
  21. package/dist/Cause.d.ts +33 -2
  22. package/dist/Cause.d.ts.map +1 -1
  23. package/dist/Cause.js +19 -0
  24. package/dist/Cause.js.map +1 -1
  25. package/dist/Channel.d.ts +130 -35
  26. package/dist/Channel.d.ts.map +1 -1
  27. package/dist/Channel.js +96 -45
  28. package/dist/Channel.js.map +1 -1
  29. package/dist/Chunk.d.ts +112 -304
  30. package/dist/Chunk.d.ts.map +1 -1
  31. package/dist/Chunk.js +56 -88
  32. package/dist/Chunk.js.map +1 -1
  33. package/dist/Combiner.d.ts +280 -13
  34. package/dist/Combiner.d.ts.map +1 -1
  35. package/dist/Combiner.js +198 -7
  36. package/dist/Combiner.js.map +1 -1
  37. package/dist/Config.d.ts +169 -9
  38. package/dist/Config.d.ts.map +1 -1
  39. package/dist/Config.js +69 -11
  40. package/dist/Config.js.map +1 -1
  41. package/dist/ConfigProvider.d.ts +1 -1
  42. package/dist/Cron.d.ts +11 -7
  43. package/dist/Cron.d.ts.map +1 -1
  44. package/dist/Cron.js +120 -63
  45. package/dist/Cron.js.map +1 -1
  46. package/dist/Data.d.ts +535 -366
  47. package/dist/Data.d.ts.map +1 -1
  48. package/dist/Data.js +132 -79
  49. package/dist/Data.js.map +1 -1
  50. package/dist/DateTime.d.ts +72 -253
  51. package/dist/DateTime.d.ts.map +1 -1
  52. package/dist/DateTime.js +15 -60
  53. package/dist/DateTime.js.map +1 -1
  54. package/dist/Deferred.d.ts +7 -5
  55. package/dist/Deferred.d.ts.map +1 -1
  56. package/dist/Deferred.js +7 -5
  57. package/dist/Deferred.js.map +1 -1
  58. package/dist/Duration.d.ts +62 -32
  59. package/dist/Duration.d.ts.map +1 -1
  60. package/dist/Duration.js +108 -78
  61. package/dist/Duration.js.map +1 -1
  62. package/dist/Effect.d.ts +1225 -951
  63. package/dist/Effect.d.ts.map +1 -1
  64. package/dist/Effect.js +398 -338
  65. package/dist/Effect.js.map +1 -1
  66. package/dist/Encoding.d.ts +194 -0
  67. package/dist/Encoding.d.ts.map +1 -0
  68. package/dist/Encoding.js +352 -0
  69. package/dist/Encoding.js.map +1 -0
  70. package/dist/Equal.d.ts +276 -109
  71. package/dist/Equal.d.ts.map +1 -1
  72. package/dist/Equal.js +124 -48
  73. package/dist/Equal.js.map +1 -1
  74. package/dist/Equivalence.d.ts +60 -3
  75. package/dist/Equivalence.d.ts.map +1 -1
  76. package/dist/Equivalence.js +70 -13
  77. package/dist/Equivalence.js.map +1 -1
  78. package/dist/ErrorReporter.d.ts +374 -0
  79. package/dist/ErrorReporter.d.ts.map +1 -0
  80. package/dist/ErrorReporter.js +245 -0
  81. package/dist/ErrorReporter.js.map +1 -0
  82. package/dist/Exit.d.ts +24 -12
  83. package/dist/Exit.d.ts.map +1 -1
  84. package/dist/Exit.js +8 -4
  85. package/dist/Exit.js.map +1 -1
  86. package/dist/Fiber.d.ts +5 -3
  87. package/dist/Fiber.d.ts.map +1 -1
  88. package/dist/Fiber.js.map +1 -1
  89. package/dist/FiberHandle.d.ts +9 -8
  90. package/dist/FiberHandle.d.ts.map +1 -1
  91. package/dist/FiberHandle.js +8 -7
  92. package/dist/FiberHandle.js.map +1 -1
  93. package/dist/FiberMap.d.ts +20 -19
  94. package/dist/FiberMap.d.ts.map +1 -1
  95. package/dist/FiberMap.js +6 -6
  96. package/dist/FiberMap.js.map +1 -1
  97. package/dist/FileSystem.d.ts +18 -17
  98. package/dist/FileSystem.d.ts.map +1 -1
  99. package/dist/FileSystem.js +17 -13
  100. package/dist/FileSystem.js.map +1 -1
  101. package/dist/Filter.d.ts +34 -38
  102. package/dist/Filter.d.ts.map +1 -1
  103. package/dist/Filter.js +15 -13
  104. package/dist/Filter.js.map +1 -1
  105. package/dist/Formatter.d.ts +131 -47
  106. package/dist/Formatter.d.ts.map +1 -1
  107. package/dist/Formatter.js +229 -51
  108. package/dist/Formatter.js.map +1 -1
  109. package/dist/Function.d.ts +1 -9
  110. package/dist/Function.d.ts.map +1 -1
  111. package/dist/Function.js +2 -10
  112. package/dist/Function.js.map +1 -1
  113. package/dist/Graph.d.ts +65 -65
  114. package/dist/Graph.d.ts.map +1 -1
  115. package/dist/Graph.js +60 -62
  116. package/dist/Graph.js.map +1 -1
  117. package/dist/HashMap.d.ts +26 -19
  118. package/dist/HashMap.d.ts.map +1 -1
  119. package/dist/HashMap.js +7 -5
  120. package/dist/HashMap.js.map +1 -1
  121. package/dist/Iterable.d.ts +50 -50
  122. package/dist/Iterable.d.ts.map +1 -1
  123. package/dist/Iterable.js +106 -34
  124. package/dist/Iterable.js.map +1 -1
  125. package/dist/JsonSchema.d.ts +299 -10
  126. package/dist/JsonSchema.d.ts.map +1 -1
  127. package/dist/JsonSchema.js +323 -4
  128. package/dist/JsonSchema.js.map +1 -1
  129. package/dist/Latch.d.ts +175 -0
  130. package/dist/Latch.d.ts.map +1 -0
  131. package/dist/Latch.js +130 -0
  132. package/dist/Latch.js.map +1 -0
  133. package/dist/Layer.d.ts +306 -129
  134. package/dist/Layer.d.ts.map +1 -1
  135. package/dist/Layer.js +93 -48
  136. package/dist/Layer.js.map +1 -1
  137. package/dist/LayerMap.d.ts +9 -8
  138. package/dist/LayerMap.d.ts.map +1 -1
  139. package/dist/LayerMap.js +3 -3
  140. package/dist/LayerMap.js.map +1 -1
  141. package/dist/LogLevel.d.ts +32 -0
  142. package/dist/LogLevel.d.ts.map +1 -1
  143. package/dist/LogLevel.js +28 -100
  144. package/dist/LogLevel.js.map +1 -1
  145. package/dist/Logger.d.ts +29 -95
  146. package/dist/Logger.d.ts.map +1 -1
  147. package/dist/Logger.js +2 -3
  148. package/dist/Logger.js.map +1 -1
  149. package/dist/ManagedRuntime.d.ts +2 -2
  150. package/dist/ManagedRuntime.d.ts.map +1 -1
  151. package/dist/ManagedRuntime.js +21 -9
  152. package/dist/ManagedRuntime.js.map +1 -1
  153. package/dist/Metric.d.ts +4 -6
  154. package/dist/Metric.d.ts.map +1 -1
  155. package/dist/Metric.js +3 -5
  156. package/dist/Metric.js.map +1 -1
  157. package/dist/MutableHashMap.d.ts +7 -0
  158. package/dist/MutableHashMap.d.ts.map +1 -1
  159. package/dist/MutableHashMap.js +8 -0
  160. package/dist/MutableHashMap.js.map +1 -1
  161. package/dist/MutableHashSet.d.ts +7 -0
  162. package/dist/MutableHashSet.d.ts.map +1 -1
  163. package/dist/MutableHashSet.js +8 -0
  164. package/dist/MutableHashSet.js.map +1 -1
  165. package/dist/Newtype.d.ts +291 -0
  166. package/dist/Newtype.d.ts.map +1 -0
  167. package/dist/Newtype.js +161 -0
  168. package/dist/Newtype.js.map +1 -0
  169. package/dist/Number.d.ts +74 -18
  170. package/dist/Number.d.ts.map +1 -1
  171. package/dist/Number.js +34 -15
  172. package/dist/Number.js.map +1 -1
  173. package/dist/Optic.d.ts +947 -18
  174. package/dist/Optic.d.ts.map +1 -1
  175. package/dist/Optic.js +454 -5
  176. package/dist/Optic.js.map +1 -1
  177. package/dist/Option.d.ts +25 -16
  178. package/dist/Option.d.ts.map +1 -1
  179. package/dist/Option.js +15 -9
  180. package/dist/Option.js.map +1 -1
  181. package/dist/Order.d.ts +6 -1
  182. package/dist/Order.d.ts.map +1 -1
  183. package/dist/Order.js +19 -14
  184. package/dist/Order.js.map +1 -1
  185. package/dist/PartitionedSemaphore.d.ts +146 -15
  186. package/dist/PartitionedSemaphore.d.ts.map +1 -1
  187. package/dist/PartitionedSemaphore.js +174 -61
  188. package/dist/PartitionedSemaphore.js.map +1 -1
  189. package/dist/Pipeable.d.ts +17 -0
  190. package/dist/Pipeable.d.ts.map +1 -1
  191. package/dist/Pipeable.js +19 -1
  192. package/dist/Pipeable.js.map +1 -1
  193. package/dist/PlatformError.d.ts +10 -9
  194. package/dist/PlatformError.d.ts.map +1 -1
  195. package/dist/PlatformError.js +2 -2
  196. package/dist/PlatformError.js.map +1 -1
  197. package/dist/Pool.d.ts +6 -4
  198. package/dist/Pool.d.ts.map +1 -1
  199. package/dist/Pool.js +7 -5
  200. package/dist/Pool.js.map +1 -1
  201. package/dist/PubSub.d.ts +8 -6
  202. package/dist/PubSub.d.ts.map +1 -1
  203. package/dist/PubSub.js +18 -10
  204. package/dist/PubSub.js.map +1 -1
  205. package/dist/Pull.d.ts.map +1 -1
  206. package/dist/Pull.js +1 -1
  207. package/dist/Pull.js.map +1 -1
  208. package/dist/Queue.d.ts +9 -6
  209. package/dist/Queue.d.ts.map +1 -1
  210. package/dist/Queue.js +7 -5
  211. package/dist/Queue.js.map +1 -1
  212. package/dist/Random.d.ts +35 -1
  213. package/dist/Random.d.ts.map +1 -1
  214. package/dist/Random.js +46 -12
  215. package/dist/Random.js.map +1 -1
  216. package/dist/RcMap.d.ts +2 -2
  217. package/dist/RcMap.d.ts.map +1 -1
  218. package/dist/RcMap.js +1 -1
  219. package/dist/RcMap.js.map +1 -1
  220. package/dist/RcRef.d.ts +1 -1
  221. package/dist/RcRef.d.ts.map +1 -1
  222. package/dist/Record.d.ts +63 -160
  223. package/dist/Record.d.ts.map +1 -1
  224. package/dist/Record.js +37 -56
  225. package/dist/Record.js.map +1 -1
  226. package/dist/Reducer.d.ts +166 -7
  227. package/dist/Reducer.d.ts.map +1 -1
  228. package/dist/Reducer.js +135 -1
  229. package/dist/Reducer.js.map +1 -1
  230. package/dist/References.d.ts +242 -226
  231. package/dist/References.d.ts.map +1 -1
  232. package/dist/References.js +240 -247
  233. package/dist/References.js.map +1 -1
  234. package/dist/Request.d.ts +1 -1
  235. package/dist/Request.d.ts.map +1 -1
  236. package/dist/Request.js +2 -1
  237. package/dist/Request.js.map +1 -1
  238. package/dist/RequestResolver.d.ts +25 -45
  239. package/dist/RequestResolver.d.ts.map +1 -1
  240. package/dist/RequestResolver.js +10 -30
  241. package/dist/RequestResolver.js.map +1 -1
  242. package/dist/Resource.d.ts.map +1 -1
  243. package/dist/Resource.js +2 -1
  244. package/dist/Resource.js.map +1 -1
  245. package/dist/Result.d.ts +1 -1
  246. package/dist/Result.d.ts.map +1 -1
  247. package/dist/Result.js +1 -2
  248. package/dist/Result.js.map +1 -1
  249. package/dist/Runtime.d.ts +66 -0
  250. package/dist/Runtime.d.ts.map +1 -1
  251. package/dist/Runtime.js +79 -6
  252. package/dist/Runtime.js.map +1 -1
  253. package/dist/Schedule.d.ts +174 -291
  254. package/dist/Schedule.d.ts.map +1 -1
  255. package/dist/Schedule.js +160 -134
  256. package/dist/Schedule.js.map +1 -1
  257. package/dist/Scheduler.d.ts +34 -123
  258. package/dist/Scheduler.d.ts.map +1 -1
  259. package/dist/Scheduler.js +31 -123
  260. package/dist/Scheduler.js.map +1 -1
  261. package/dist/Schema.d.ts +2722 -247
  262. package/dist/Schema.d.ts.map +1 -1
  263. package/dist/Schema.js +1947 -224
  264. package/dist/Schema.js.map +1 -1
  265. package/dist/SchemaAST.d.ts +7 -2
  266. package/dist/SchemaAST.d.ts.map +1 -1
  267. package/dist/SchemaAST.js +131 -25
  268. package/dist/SchemaAST.js.map +1 -1
  269. package/dist/SchemaGetter.d.ts +5 -5
  270. package/dist/SchemaGetter.d.ts.map +1 -1
  271. package/dist/SchemaGetter.js +18 -18
  272. package/dist/SchemaGetter.js.map +1 -1
  273. package/dist/SchemaParser.d.ts +44 -54
  274. package/dist/SchemaParser.d.ts.map +1 -1
  275. package/dist/SchemaParser.js +55 -2
  276. package/dist/SchemaParser.js.map +1 -1
  277. package/dist/SchemaRepresentation.d.ts +46 -45
  278. package/dist/SchemaRepresentation.d.ts.map +1 -1
  279. package/dist/SchemaRepresentation.js +49 -24
  280. package/dist/SchemaRepresentation.js.map +1 -1
  281. package/dist/SchemaTransformation.d.ts +107 -3
  282. package/dist/SchemaTransformation.d.ts.map +1 -1
  283. package/dist/SchemaTransformation.js +173 -13
  284. package/dist/SchemaTransformation.js.map +1 -1
  285. package/dist/ScopedCache.d.ts +2 -2
  286. package/dist/ScopedCache.d.ts.map +1 -1
  287. package/dist/ScopedCache.js +1 -1
  288. package/dist/ScopedCache.js.map +1 -1
  289. package/dist/Semaphore.d.ts +307 -0
  290. package/dist/Semaphore.d.ts.map +1 -0
  291. package/dist/Semaphore.js +222 -0
  292. package/dist/Semaphore.js.map +1 -0
  293. package/dist/ServiceMap.d.ts +76 -52
  294. package/dist/ServiceMap.d.ts.map +1 -1
  295. package/dist/ServiceMap.js +45 -29
  296. package/dist/ServiceMap.js.map +1 -1
  297. package/dist/Sink.d.ts +18 -15
  298. package/dist/Sink.d.ts.map +1 -1
  299. package/dist/Sink.js +53 -6
  300. package/dist/Sink.js.map +1 -1
  301. package/dist/Stdio.d.ts +16 -4
  302. package/dist/Stdio.d.ts.map +1 -1
  303. package/dist/Stdio.js +18 -0
  304. package/dist/Stdio.js.map +1 -1
  305. package/dist/Stream.d.ts +284 -431
  306. package/dist/Stream.d.ts.map +1 -1
  307. package/dist/Stream.js +189 -88
  308. package/dist/Stream.js.map +1 -1
  309. package/dist/String.d.ts +114 -47
  310. package/dist/String.d.ts.map +1 -1
  311. package/dist/String.js +29 -47
  312. package/dist/String.js.map +1 -1
  313. package/dist/Struct.d.ts +23 -7
  314. package/dist/Struct.d.ts.map +1 -1
  315. package/dist/Struct.js +22 -0
  316. package/dist/Struct.js.map +1 -1
  317. package/dist/SubscriptionRef.d.ts +3 -3
  318. package/dist/SubscriptionRef.d.ts.map +1 -1
  319. package/dist/SubscriptionRef.js +85 -117
  320. package/dist/SubscriptionRef.js.map +1 -1
  321. package/dist/SynchronizedRef.d.ts +2 -1
  322. package/dist/SynchronizedRef.d.ts.map +1 -1
  323. package/dist/SynchronizedRef.js +2 -1
  324. package/dist/SynchronizedRef.js.map +1 -1
  325. package/dist/Terminal.d.ts +2 -1
  326. package/dist/Terminal.d.ts.map +1 -1
  327. package/dist/Terminal.js.map +1 -1
  328. package/dist/Tracer.d.ts +5 -4
  329. package/dist/Tracer.d.ts.map +1 -1
  330. package/dist/Tracer.js +2 -1
  331. package/dist/Tracer.js.map +1 -1
  332. package/dist/Trie.d.ts +44 -31
  333. package/dist/Trie.d.ts.map +1 -1
  334. package/dist/Trie.js +13 -9
  335. package/dist/Trie.js.map +1 -1
  336. package/dist/TxChunk.d.ts +37 -37
  337. package/dist/TxChunk.d.ts.map +1 -1
  338. package/dist/TxChunk.js +3 -3
  339. package/dist/TxChunk.js.map +1 -1
  340. package/dist/TxDeferred.d.ts +328 -0
  341. package/dist/TxDeferred.d.ts.map +1 -0
  342. package/dist/TxDeferred.js +197 -0
  343. package/dist/TxDeferred.js.map +1 -0
  344. package/dist/TxHashMap.d.ts +159 -140
  345. package/dist/TxHashMap.d.ts.map +1 -1
  346. package/dist/TxHashMap.js +51 -44
  347. package/dist/TxHashMap.js.map +1 -1
  348. package/dist/TxHashSet.d.ts +36 -36
  349. package/dist/TxHashSet.d.ts.map +1 -1
  350. package/dist/TxHashSet.js +16 -15
  351. package/dist/TxHashSet.js.map +1 -1
  352. package/dist/TxPriorityQueue.d.ts +609 -0
  353. package/dist/TxPriorityQueue.d.ts.map +1 -0
  354. package/dist/TxPriorityQueue.js +416 -0
  355. package/dist/TxPriorityQueue.js.map +1 -0
  356. package/dist/TxPubSub.d.ts +585 -0
  357. package/dist/TxPubSub.d.ts.map +1 -0
  358. package/dist/TxPubSub.js +521 -0
  359. package/dist/TxPubSub.js.map +1 -0
  360. package/dist/TxQueue.d.ts +32 -32
  361. package/dist/TxQueue.d.ts.map +1 -1
  362. package/dist/TxQueue.js +26 -26
  363. package/dist/TxQueue.js.map +1 -1
  364. package/dist/TxReentrantLock.d.ts +523 -0
  365. package/dist/TxReentrantLock.d.ts.map +1 -0
  366. package/dist/TxReentrantLock.js +504 -0
  367. package/dist/TxReentrantLock.js.map +1 -0
  368. package/dist/TxRef.d.ts +34 -34
  369. package/dist/TxRef.d.ts.map +1 -1
  370. package/dist/TxRef.js +21 -14
  371. package/dist/TxRef.js.map +1 -1
  372. package/dist/TxSemaphore.d.ts +170 -10
  373. package/dist/TxSemaphore.d.ts.map +1 -1
  374. package/dist/TxSemaphore.js +23 -8
  375. package/dist/TxSemaphore.js.map +1 -1
  376. package/dist/TxSubscriptionRef.d.ts +508 -0
  377. package/dist/TxSubscriptionRef.d.ts.map +1 -0
  378. package/dist/TxSubscriptionRef.js +293 -0
  379. package/dist/TxSubscriptionRef.js.map +1 -0
  380. package/dist/Types.d.ts +80 -23
  381. package/dist/Types.d.ts.map +1 -1
  382. package/dist/Utils.d.ts +137 -65
  383. package/dist/Utils.d.ts.map +1 -1
  384. package/dist/Utils.js +38 -66
  385. package/dist/Utils.js.map +1 -1
  386. package/dist/index.d.ts +806 -55
  387. package/dist/index.d.ts.map +1 -1
  388. package/dist/index.js +806 -55
  389. package/dist/index.js.map +1 -1
  390. package/dist/internal/core.js +11 -3
  391. package/dist/internal/core.js.map +1 -1
  392. package/dist/internal/dateTime.js +77 -71
  393. package/dist/internal/dateTime.js.map +1 -1
  394. package/dist/internal/effect.js +284 -201
  395. package/dist/internal/effect.js.map +1 -1
  396. package/dist/internal/hashMap.js +7 -5
  397. package/dist/internal/hashMap.js.map +1 -1
  398. package/dist/internal/option.js +6 -0
  399. package/dist/internal/option.js.map +1 -1
  400. package/dist/internal/random.d.ts +2 -0
  401. package/dist/internal/random.d.ts.map +1 -0
  402. package/dist/internal/random.js +13 -0
  403. package/dist/internal/random.js.map +1 -0
  404. package/dist/internal/rcRef.js +3 -2
  405. package/dist/internal/rcRef.js.map +1 -1
  406. package/dist/internal/references.d.ts +2 -0
  407. package/dist/internal/references.d.ts.map +1 -0
  408. package/dist/internal/references.js +51 -0
  409. package/dist/internal/references.js.map +1 -0
  410. package/dist/internal/request.js +2 -2
  411. package/dist/internal/request.js.map +1 -1
  412. package/dist/internal/schema/annotations.js +2 -0
  413. package/dist/internal/schema/annotations.js.map +1 -1
  414. package/dist/internal/schema/representation.js +75 -106
  415. package/dist/internal/schema/representation.js.map +1 -1
  416. package/dist/internal/schema/schema.js +1 -0
  417. package/dist/internal/schema/schema.js.map +1 -1
  418. package/dist/internal/schema/to-codec.js +7 -10
  419. package/dist/internal/schema/to-codec.js.map +1 -1
  420. package/dist/internal/trie.js +8 -7
  421. package/dist/internal/trie.js.map +1 -1
  422. package/dist/testing/TestClock.d.ts +8 -7
  423. package/dist/testing/TestClock.d.ts.map +1 -1
  424. package/dist/testing/TestClock.js +6 -4
  425. package/dist/testing/TestClock.js.map +1 -1
  426. package/dist/testing/TestSchema.d.ts +266 -32
  427. package/dist/testing/TestSchema.d.ts.map +1 -1
  428. package/dist/testing/TestSchema.js +296 -23
  429. package/dist/testing/TestSchema.js.map +1 -1
  430. package/dist/testing/index.d.ts +64 -1
  431. package/dist/testing/index.d.ts.map +1 -1
  432. package/dist/testing/index.js +64 -1
  433. package/dist/testing/index.js.map +1 -1
  434. package/dist/unstable/ai/AiError.d.ts +136 -54
  435. package/dist/unstable/ai/AiError.d.ts.map +1 -1
  436. package/dist/unstable/ai/AiError.js +28 -23
  437. package/dist/unstable/ai/AiError.js.map +1 -1
  438. package/dist/unstable/ai/AnthropicStructuredOutput.d.ts.map +1 -1
  439. package/dist/unstable/ai/AnthropicStructuredOutput.js +4 -0
  440. package/dist/unstable/ai/AnthropicStructuredOutput.js.map +1 -1
  441. package/dist/unstable/ai/Chat.d.ts +35 -7
  442. package/dist/unstable/ai/Chat.d.ts.map +1 -1
  443. package/dist/unstable/ai/Chat.js +38 -44
  444. package/dist/unstable/ai/Chat.js.map +1 -1
  445. package/dist/unstable/ai/EmbeddingModel.d.ts +130 -0
  446. package/dist/unstable/ai/EmbeddingModel.d.ts.map +1 -0
  447. package/dist/unstable/ai/EmbeddingModel.js +127 -0
  448. package/dist/unstable/ai/EmbeddingModel.js.map +1 -0
  449. package/dist/unstable/ai/LanguageModel.d.ts +117 -47
  450. package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
  451. package/dist/unstable/ai/LanguageModel.js +258 -59
  452. package/dist/unstable/ai/LanguageModel.js.map +1 -1
  453. package/dist/unstable/ai/McpSchema.d.ts +183 -88
  454. package/dist/unstable/ai/McpSchema.d.ts.map +1 -1
  455. package/dist/unstable/ai/McpSchema.js +57 -12
  456. package/dist/unstable/ai/McpSchema.js.map +1 -1
  457. package/dist/unstable/ai/McpServer.d.ts +66 -13
  458. package/dist/unstable/ai/McpServer.d.ts.map +1 -1
  459. package/dist/unstable/ai/McpServer.js +193 -51
  460. package/dist/unstable/ai/McpServer.js.map +1 -1
  461. package/dist/unstable/ai/Model.d.ts +25 -7
  462. package/dist/unstable/ai/Model.d.ts.map +1 -1
  463. package/dist/unstable/ai/Model.js +22 -6
  464. package/dist/unstable/ai/Model.js.map +1 -1
  465. package/dist/unstable/ai/OpenAiStructuredOutput.d.ts.map +1 -1
  466. package/dist/unstable/ai/OpenAiStructuredOutput.js +4 -0
  467. package/dist/unstable/ai/OpenAiStructuredOutput.js.map +1 -1
  468. package/dist/unstable/ai/Prompt.d.ts +20 -20
  469. package/dist/unstable/ai/Prompt.d.ts.map +1 -1
  470. package/dist/unstable/ai/Response.d.ts +26 -26
  471. package/dist/unstable/ai/Response.d.ts.map +1 -1
  472. package/dist/unstable/ai/Response.js +1 -1
  473. package/dist/unstable/ai/Response.js.map +1 -1
  474. package/dist/unstable/ai/ResponseIdTracker.d.ts +38 -0
  475. package/dist/unstable/ai/ResponseIdTracker.d.ts.map +1 -0
  476. package/dist/unstable/ai/ResponseIdTracker.js +68 -0
  477. package/dist/unstable/ai/ResponseIdTracker.js.map +1 -0
  478. package/dist/unstable/ai/Tool.d.ts +34 -4
  479. package/dist/unstable/ai/Tool.d.ts.map +1 -1
  480. package/dist/unstable/ai/Tool.js +28 -10
  481. package/dist/unstable/ai/Tool.js.map +1 -1
  482. package/dist/unstable/ai/Toolkit.d.ts +1 -1
  483. package/dist/unstable/ai/Toolkit.d.ts.map +1 -1
  484. package/dist/unstable/ai/Toolkit.js +4 -11
  485. package/dist/unstable/ai/Toolkit.js.map +1 -1
  486. package/dist/unstable/ai/index.d.ts +22 -1
  487. package/dist/unstable/ai/index.d.ts.map +1 -1
  488. package/dist/unstable/ai/index.js +22 -1
  489. package/dist/unstable/ai/index.js.map +1 -1
  490. package/dist/unstable/ai/internal/codec-transformer.js +0 -5
  491. package/dist/unstable/ai/internal/codec-transformer.js.map +1 -1
  492. package/dist/unstable/cli/Argument.d.ts +2 -4
  493. package/dist/unstable/cli/Argument.d.ts.map +1 -1
  494. package/dist/unstable/cli/Argument.js +1 -3
  495. package/dist/unstable/cli/Argument.js.map +1 -1
  496. package/dist/unstable/cli/CliError.d.ts +27 -60
  497. package/dist/unstable/cli/CliError.d.ts.map +1 -1
  498. package/dist/unstable/cli/CliError.js +25 -57
  499. package/dist/unstable/cli/CliError.js.map +1 -1
  500. package/dist/unstable/cli/CliOutput.d.ts +3 -2
  501. package/dist/unstable/cli/CliOutput.d.ts.map +1 -1
  502. package/dist/unstable/cli/CliOutput.js +65 -10
  503. package/dist/unstable/cli/CliOutput.js.map +1 -1
  504. package/dist/unstable/cli/Command.d.ts +371 -58
  505. package/dist/unstable/cli/Command.d.ts.map +1 -1
  506. package/dist/unstable/cli/Command.js +328 -67
  507. package/dist/unstable/cli/Command.js.map +1 -1
  508. package/dist/unstable/cli/Completions.d.ts +16 -0
  509. package/dist/unstable/cli/Completions.d.ts.map +1 -0
  510. package/dist/unstable/cli/Completions.js +23 -0
  511. package/dist/unstable/cli/Completions.js.map +1 -0
  512. package/dist/unstable/cli/Flag.d.ts +2 -2
  513. package/dist/unstable/cli/Flag.d.ts.map +1 -1
  514. package/dist/unstable/cli/Flag.js +1 -1
  515. package/dist/unstable/cli/Flag.js.map +1 -1
  516. package/dist/unstable/cli/GlobalFlag.d.ts +125 -0
  517. package/dist/unstable/cli/GlobalFlag.d.ts.map +1 -0
  518. package/dist/unstable/cli/GlobalFlag.js +118 -0
  519. package/dist/unstable/cli/GlobalFlag.js.map +1 -0
  520. package/dist/unstable/cli/HelpDoc.d.ts +81 -11
  521. package/dist/unstable/cli/HelpDoc.d.ts.map +1 -1
  522. package/dist/unstable/cli/Param.d.ts +4 -4
  523. package/dist/unstable/cli/Param.d.ts.map +1 -1
  524. package/dist/unstable/cli/Param.js +7 -7
  525. package/dist/unstable/cli/Param.js.map +1 -1
  526. package/dist/unstable/cli/Primitive.d.ts +2 -2
  527. package/dist/unstable/cli/Primitive.d.ts.map +1 -1
  528. package/dist/unstable/cli/Primitive.js +1 -1
  529. package/dist/unstable/cli/Primitive.js.map +1 -1
  530. package/dist/unstable/cli/Prompt.js +259 -85
  531. package/dist/unstable/cli/Prompt.js.map +1 -1
  532. package/dist/unstable/cli/index.d.ts +8 -0
  533. package/dist/unstable/cli/index.d.ts.map +1 -1
  534. package/dist/unstable/cli/index.js +8 -0
  535. package/dist/unstable/cli/index.js.map +1 -1
  536. package/dist/unstable/cli/internal/command.d.ts +40 -14
  537. package/dist/unstable/cli/internal/command.d.ts.map +1 -1
  538. package/dist/unstable/cli/internal/command.js +72 -46
  539. package/dist/unstable/cli/internal/command.js.map +1 -1
  540. package/dist/unstable/cli/internal/completions/CommandDescriptor.js +16 -4
  541. package/dist/unstable/cli/internal/completions/CommandDescriptor.js.map +1 -1
  542. package/dist/unstable/cli/internal/config.js +42 -0
  543. package/dist/unstable/cli/internal/config.js.map +1 -1
  544. package/dist/unstable/cli/internal/help.d.ts +33 -0
  545. package/dist/unstable/cli/internal/help.d.ts.map +1 -0
  546. package/dist/unstable/cli/internal/help.js +125 -0
  547. package/dist/unstable/cli/internal/help.js.map +1 -0
  548. package/dist/unstable/cli/internal/parser.js +61 -43
  549. package/dist/unstable/cli/internal/parser.js.map +1 -1
  550. package/dist/unstable/cluster/ClusterCron.d.ts +1 -1
  551. package/dist/unstable/cluster/ClusterCron.d.ts.map +1 -1
  552. package/dist/unstable/cluster/ClusterCron.js +1 -1
  553. package/dist/unstable/cluster/ClusterCron.js.map +1 -1
  554. package/dist/unstable/cluster/ClusterSchema.d.ts +18 -0
  555. package/dist/unstable/cluster/ClusterSchema.d.ts.map +1 -1
  556. package/dist/unstable/cluster/ClusterSchema.js +21 -1
  557. package/dist/unstable/cluster/ClusterSchema.js.map +1 -1
  558. package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts +3 -2
  559. package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  560. package/dist/unstable/cluster/ClusterWorkflowEngine.js +35 -29
  561. package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
  562. package/dist/unstable/cluster/DeliverAt.js +1 -1
  563. package/dist/unstable/cluster/DeliverAt.js.map +1 -1
  564. package/dist/unstable/cluster/Entity.d.ts +10 -8
  565. package/dist/unstable/cluster/Entity.d.ts.map +1 -1
  566. package/dist/unstable/cluster/Entity.js +8 -7
  567. package/dist/unstable/cluster/Entity.js.map +1 -1
  568. package/dist/unstable/cluster/EntityAddress.d.ts.map +1 -1
  569. package/dist/unstable/cluster/EntityAddress.js +1 -1
  570. package/dist/unstable/cluster/EntityAddress.js.map +1 -1
  571. package/dist/unstable/cluster/EntityResource.d.ts +2 -2
  572. package/dist/unstable/cluster/EntityResource.d.ts.map +1 -1
  573. package/dist/unstable/cluster/Envelope.d.ts +1 -1
  574. package/dist/unstable/cluster/K8sHttpClient.d.ts +1 -1
  575. package/dist/unstable/cluster/K8sHttpClient.js +4 -4
  576. package/dist/unstable/cluster/K8sHttpClient.js.map +1 -1
  577. package/dist/unstable/cluster/Message.d.ts +18 -15
  578. package/dist/unstable/cluster/Message.d.ts.map +1 -1
  579. package/dist/unstable/cluster/Message.js +15 -7
  580. package/dist/unstable/cluster/Message.js.map +1 -1
  581. package/dist/unstable/cluster/MessageStorage.d.ts +33 -10
  582. package/dist/unstable/cluster/MessageStorage.d.ts.map +1 -1
  583. package/dist/unstable/cluster/MessageStorage.js +36 -20
  584. package/dist/unstable/cluster/MessageStorage.js.map +1 -1
  585. package/dist/unstable/cluster/Reply.d.ts +8 -7
  586. package/dist/unstable/cluster/Reply.d.ts.map +1 -1
  587. package/dist/unstable/cluster/Reply.js +4 -3
  588. package/dist/unstable/cluster/Reply.js.map +1 -1
  589. package/dist/unstable/cluster/Runner.d.ts +1 -1
  590. package/dist/unstable/cluster/Runner.d.ts.map +1 -1
  591. package/dist/unstable/cluster/Runner.js +1 -1
  592. package/dist/unstable/cluster/Runner.js.map +1 -1
  593. package/dist/unstable/cluster/RunnerAddress.d.ts.map +1 -1
  594. package/dist/unstable/cluster/RunnerAddress.js +1 -1
  595. package/dist/unstable/cluster/RunnerAddress.js.map +1 -1
  596. package/dist/unstable/cluster/RunnerServer.d.ts.map +1 -1
  597. package/dist/unstable/cluster/RunnerServer.js +9 -8
  598. package/dist/unstable/cluster/RunnerServer.js.map +1 -1
  599. package/dist/unstable/cluster/Runners.d.ts +2 -1
  600. package/dist/unstable/cluster/Runners.d.ts.map +1 -1
  601. package/dist/unstable/cluster/Runners.js +11 -9
  602. package/dist/unstable/cluster/Runners.js.map +1 -1
  603. package/dist/unstable/cluster/ShardId.js +3 -3
  604. package/dist/unstable/cluster/ShardId.js.map +1 -1
  605. package/dist/unstable/cluster/Sharding.d.ts +2 -2
  606. package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
  607. package/dist/unstable/cluster/Sharding.js +51 -39
  608. package/dist/unstable/cluster/Sharding.js.map +1 -1
  609. package/dist/unstable/cluster/ShardingConfig.d.ts +26 -25
  610. package/dist/unstable/cluster/ShardingConfig.d.ts.map +1 -1
  611. package/dist/unstable/cluster/ShardingConfig.js +24 -24
  612. package/dist/unstable/cluster/ShardingConfig.js.map +1 -1
  613. package/dist/unstable/cluster/SqlMessageStorage.d.ts.map +1 -1
  614. package/dist/unstable/cluster/SqlMessageStorage.js +25 -19
  615. package/dist/unstable/cluster/SqlMessageStorage.js.map +1 -1
  616. package/dist/unstable/cluster/SqlRunnerStorage.js +1 -1
  617. package/dist/unstable/cluster/SqlRunnerStorage.js.map +1 -1
  618. package/dist/unstable/cluster/internal/entityManager.js +24 -18
  619. package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
  620. package/dist/unstable/cluster/internal/entityReaper.js +2 -1
  621. package/dist/unstable/cluster/internal/entityReaper.js.map +1 -1
  622. package/dist/unstable/cluster/internal/resourceRef.js +2 -1
  623. package/dist/unstable/cluster/internal/resourceRef.js.map +1 -1
  624. package/dist/unstable/devtools/DevToolsClient.d.ts.map +1 -1
  625. package/dist/unstable/devtools/DevToolsClient.js +4 -3
  626. package/dist/unstable/devtools/DevToolsClient.js.map +1 -1
  627. package/dist/unstable/devtools/DevToolsSchema.d.ts +40 -40
  628. package/dist/unstable/devtools/DevToolsSchema.d.ts.map +1 -1
  629. package/dist/unstable/devtools/DevToolsSchema.js +9 -2
  630. package/dist/unstable/devtools/DevToolsSchema.js.map +1 -1
  631. package/dist/unstable/encoding/Msgpack.d.ts +1 -1
  632. package/dist/unstable/encoding/Ndjson.d.ts +9 -9
  633. package/dist/unstable/encoding/Ndjson.d.ts.map +1 -1
  634. package/dist/unstable/encoding/Ndjson.js.map +1 -1
  635. package/dist/unstable/encoding/Sse.d.ts +4 -4
  636. package/dist/unstable/encoding/Sse.d.ts.map +1 -1
  637. package/dist/unstable/encoding/Sse.js +1 -1
  638. package/dist/unstable/encoding/Sse.js.map +1 -1
  639. package/dist/unstable/eventlog/EventJournal.d.ts +2 -2
  640. package/dist/unstable/eventlog/EventJournal.js +2 -2
  641. package/dist/unstable/eventlog/EventJournal.js.map +1 -1
  642. package/dist/unstable/eventlog/EventLog.d.ts.map +1 -1
  643. package/dist/unstable/eventlog/EventLog.js +3 -2
  644. package/dist/unstable/eventlog/EventLog.js.map +1 -1
  645. package/dist/unstable/eventlog/EventLogRemote.d.ts +6 -6
  646. package/dist/unstable/eventlog/SqlEventLogJournal.js +2 -2
  647. package/dist/unstable/eventlog/SqlEventLogJournal.js.map +1 -1
  648. package/dist/unstable/http/Cookies.d.ts +52 -7
  649. package/dist/unstable/http/Cookies.d.ts.map +1 -1
  650. package/dist/unstable/http/Cookies.js +27 -6
  651. package/dist/unstable/http/Cookies.js.map +1 -1
  652. package/dist/unstable/http/Etag.d.ts.map +1 -1
  653. package/dist/unstable/http/Etag.js +5 -1
  654. package/dist/unstable/http/Etag.js.map +1 -1
  655. package/dist/unstable/http/Headers.d.ts +19 -2
  656. package/dist/unstable/http/Headers.d.ts.map +1 -1
  657. package/dist/unstable/http/Headers.js +40 -11
  658. package/dist/unstable/http/Headers.js.map +1 -1
  659. package/dist/unstable/http/HttpBody.d.ts +1 -1
  660. package/dist/unstable/http/HttpClient.d.ts +117 -15
  661. package/dist/unstable/http/HttpClient.d.ts.map +1 -1
  662. package/dist/unstable/http/HttpClient.js +191 -13
  663. package/dist/unstable/http/HttpClient.js.map +1 -1
  664. package/dist/unstable/http/HttpClientError.d.ts +7 -7
  665. package/dist/unstable/http/HttpClientRequest.d.ts +43 -15
  666. package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
  667. package/dist/unstable/http/HttpClientRequest.js +131 -21
  668. package/dist/unstable/http/HttpClientRequest.js.map +1 -1
  669. package/dist/unstable/http/HttpClientResponse.d.ts +2 -1
  670. package/dist/unstable/http/HttpClientResponse.d.ts.map +1 -1
  671. package/dist/unstable/http/HttpClientResponse.js +6 -1
  672. package/dist/unstable/http/HttpClientResponse.js.map +1 -1
  673. package/dist/unstable/http/HttpEffect.d.ts +7 -5
  674. package/dist/unstable/http/HttpEffect.d.ts.map +1 -1
  675. package/dist/unstable/http/HttpEffect.js +46 -54
  676. package/dist/unstable/http/HttpEffect.js.map +1 -1
  677. package/dist/unstable/http/HttpIncomingMessage.d.ts +3 -2
  678. package/dist/unstable/http/HttpIncomingMessage.d.ts.map +1 -1
  679. package/dist/unstable/http/HttpIncomingMessage.js.map +1 -1
  680. package/dist/unstable/http/HttpMethod.d.ts +4 -4
  681. package/dist/unstable/http/HttpMethod.d.ts.map +1 -1
  682. package/dist/unstable/http/HttpMethod.js +3 -3
  683. package/dist/unstable/http/HttpMethod.js.map +1 -1
  684. package/dist/unstable/http/HttpMiddleware.d.ts +1 -6
  685. package/dist/unstable/http/HttpMiddleware.d.ts.map +1 -1
  686. package/dist/unstable/http/HttpMiddleware.js +24 -32
  687. package/dist/unstable/http/HttpMiddleware.js.map +1 -1
  688. package/dist/unstable/http/HttpPlatform.d.ts.map +1 -1
  689. package/dist/unstable/http/HttpPlatform.js +3 -2
  690. package/dist/unstable/http/HttpPlatform.js.map +1 -1
  691. package/dist/unstable/http/HttpRouter.d.ts +2 -1
  692. package/dist/unstable/http/HttpRouter.d.ts.map +1 -1
  693. package/dist/unstable/http/HttpRouter.js +7 -7
  694. package/dist/unstable/http/HttpRouter.js.map +1 -1
  695. package/dist/unstable/http/HttpServer.d.ts.map +1 -1
  696. package/dist/unstable/http/HttpServer.js +2 -2
  697. package/dist/unstable/http/HttpServer.js.map +1 -1
  698. package/dist/unstable/http/HttpServerError.d.ts +22 -34
  699. package/dist/unstable/http/HttpServerError.d.ts.map +1 -1
  700. package/dist/unstable/http/HttpServerError.js +39 -45
  701. package/dist/unstable/http/HttpServerError.js.map +1 -1
  702. package/dist/unstable/http/HttpServerRequest.d.ts +15 -3
  703. package/dist/unstable/http/HttpServerRequest.d.ts.map +1 -1
  704. package/dist/unstable/http/HttpServerRequest.js +301 -7
  705. package/dist/unstable/http/HttpServerRequest.js.map +1 -1
  706. package/dist/unstable/http/HttpServerRespondable.d.ts +2 -2
  707. package/dist/unstable/http/HttpServerRespondable.d.ts.map +1 -1
  708. package/dist/unstable/http/HttpServerRespondable.js +5 -5
  709. package/dist/unstable/http/HttpServerRespondable.js.map +1 -1
  710. package/dist/unstable/http/HttpServerResponse.d.ts +50 -3
  711. package/dist/unstable/http/HttpServerResponse.d.ts.map +1 -1
  712. package/dist/unstable/http/HttpServerResponse.js +236 -1
  713. package/dist/unstable/http/HttpServerResponse.js.map +1 -1
  714. package/dist/unstable/http/HttpStaticServer.d.ts +69 -0
  715. package/dist/unstable/http/HttpStaticServer.d.ts.map +1 -0
  716. package/dist/unstable/http/HttpStaticServer.js +353 -0
  717. package/dist/unstable/http/HttpStaticServer.js.map +1 -0
  718. package/dist/unstable/http/HttpTraceContext.d.ts +3 -2
  719. package/dist/unstable/http/HttpTraceContext.d.ts.map +1 -1
  720. package/dist/unstable/http/HttpTraceContext.js +27 -15
  721. package/dist/unstable/http/HttpTraceContext.js.map +1 -1
  722. package/dist/unstable/http/Multipart.d.ts +3 -3
  723. package/dist/unstable/http/Url.d.ts +604 -0
  724. package/dist/unstable/http/Url.d.ts.map +1 -0
  725. package/dist/unstable/http/Url.js +256 -0
  726. package/dist/unstable/http/Url.js.map +1 -0
  727. package/dist/unstable/http/UrlParams.d.ts +19 -10
  728. package/dist/unstable/http/UrlParams.d.ts.map +1 -1
  729. package/dist/unstable/http/UrlParams.js +6 -7
  730. package/dist/unstable/http/UrlParams.js.map +1 -1
  731. package/dist/unstable/http/index.d.ts +8 -0
  732. package/dist/unstable/http/index.d.ts.map +1 -1
  733. package/dist/unstable/http/index.js +8 -0
  734. package/dist/unstable/http/index.js.map +1 -1
  735. package/dist/unstable/http/internal/preResponseHandler.d.ts +2 -0
  736. package/dist/unstable/http/internal/preResponseHandler.d.ts.map +1 -0
  737. package/dist/unstable/http/internal/preResponseHandler.js +10 -0
  738. package/dist/unstable/http/internal/preResponseHandler.js.map +1 -0
  739. package/dist/unstable/httpapi/HttpApi.d.ts +4 -4
  740. package/dist/unstable/httpapi/HttpApi.d.ts.map +1 -1
  741. package/dist/unstable/httpapi/HttpApi.js.map +1 -1
  742. package/dist/unstable/httpapi/HttpApiBuilder.d.ts +11 -5
  743. package/dist/unstable/httpapi/HttpApiBuilder.d.ts.map +1 -1
  744. package/dist/unstable/httpapi/HttpApiBuilder.js +40 -27
  745. package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
  746. package/dist/unstable/httpapi/HttpApiClient.d.ts +83 -7
  747. package/dist/unstable/httpapi/HttpApiClient.d.ts.map +1 -1
  748. package/dist/unstable/httpapi/HttpApiClient.js +78 -10
  749. package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
  750. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +207 -101
  751. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts.map +1 -1
  752. package/dist/unstable/httpapi/HttpApiEndpoint.js +49 -43
  753. package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
  754. package/dist/unstable/httpapi/HttpApiError.d.ts +31 -14
  755. package/dist/unstable/httpapi/HttpApiError.d.ts.map +1 -1
  756. package/dist/unstable/httpapi/HttpApiError.js +125 -32
  757. package/dist/unstable/httpapi/HttpApiError.js.map +1 -1
  758. package/dist/unstable/httpapi/HttpApiGroup.d.ts +4 -3
  759. package/dist/unstable/httpapi/HttpApiGroup.d.ts.map +1 -1
  760. package/dist/unstable/httpapi/HttpApiGroup.js.map +1 -1
  761. package/dist/unstable/httpapi/HttpApiMiddleware.d.ts +46 -15
  762. package/dist/unstable/httpapi/HttpApiMiddleware.d.ts.map +1 -1
  763. package/dist/unstable/httpapi/HttpApiMiddleware.js +32 -3
  764. package/dist/unstable/httpapi/HttpApiMiddleware.js.map +1 -1
  765. package/dist/unstable/httpapi/HttpApiScalar.d.ts +6 -0
  766. package/dist/unstable/httpapi/HttpApiScalar.d.ts.map +1 -1
  767. package/dist/unstable/httpapi/HttpApiScalar.js.map +1 -1
  768. package/dist/unstable/httpapi/HttpApiSchema.d.ts +6 -3
  769. package/dist/unstable/httpapi/HttpApiSchema.d.ts.map +1 -1
  770. package/dist/unstable/httpapi/HttpApiSchema.js +20 -2
  771. package/dist/unstable/httpapi/HttpApiSchema.js.map +1 -1
  772. package/dist/unstable/httpapi/HttpApiSecurity.d.ts +2 -2
  773. package/dist/unstable/httpapi/HttpApiSecurity.d.ts.map +1 -1
  774. package/dist/unstable/httpapi/HttpApiSecurity.js.map +1 -1
  775. package/dist/unstable/httpapi/OpenApi.d.ts +1 -0
  776. package/dist/unstable/httpapi/OpenApi.d.ts.map +1 -1
  777. package/dist/unstable/httpapi/OpenApi.js +34 -26
  778. package/dist/unstable/httpapi/OpenApi.js.map +1 -1
  779. package/dist/unstable/observability/Otlp.d.ts +12 -12
  780. package/dist/unstable/observability/Otlp.d.ts.map +1 -1
  781. package/dist/unstable/observability/OtlpExporter.d.ts +2 -2
  782. package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
  783. package/dist/unstable/observability/OtlpExporter.js +3 -3
  784. package/dist/unstable/observability/OtlpExporter.js.map +1 -1
  785. package/dist/unstable/observability/OtlpLogger.d.ts +4 -4
  786. package/dist/unstable/observability/OtlpLogger.d.ts.map +1 -1
  787. package/dist/unstable/observability/OtlpLogger.js +7 -4
  788. package/dist/unstable/observability/OtlpLogger.js.map +1 -1
  789. package/dist/unstable/observability/OtlpMetrics.d.ts +4 -4
  790. package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
  791. package/dist/unstable/observability/OtlpTracer.d.ts +4 -4
  792. package/dist/unstable/observability/OtlpTracer.d.ts.map +1 -1
  793. package/dist/unstable/observability/OtlpTracer.js +7 -3
  794. package/dist/unstable/observability/OtlpTracer.js.map +1 -1
  795. package/dist/unstable/persistence/KeyValueStore.d.ts +1 -1
  796. package/dist/unstable/persistence/KeyValueStore.js +6 -6
  797. package/dist/unstable/persistence/KeyValueStore.js.map +1 -1
  798. package/dist/unstable/persistence/Persistable.d.ts +2 -2
  799. package/dist/unstable/persistence/Persistable.d.ts.map +1 -1
  800. package/dist/unstable/persistence/Persistable.js +1 -1
  801. package/dist/unstable/persistence/Persistable.js.map +1 -1
  802. package/dist/unstable/persistence/PersistedCache.d.ts +6 -5
  803. package/dist/unstable/persistence/PersistedCache.d.ts.map +1 -1
  804. package/dist/unstable/persistence/PersistedCache.js +2 -1
  805. package/dist/unstable/persistence/PersistedCache.js.map +1 -1
  806. package/dist/unstable/persistence/PersistedQueue.d.ts +12 -12
  807. package/dist/unstable/persistence/PersistedQueue.d.ts.map +1 -1
  808. package/dist/unstable/persistence/PersistedQueue.js +12 -11
  809. package/dist/unstable/persistence/PersistedQueue.js.map +1 -1
  810. package/dist/unstable/persistence/Persistence.d.ts +1 -1
  811. package/dist/unstable/persistence/Persistence.d.ts.map +1 -1
  812. package/dist/unstable/persistence/Persistence.js +2 -2
  813. package/dist/unstable/persistence/Persistence.js.map +1 -1
  814. package/dist/unstable/persistence/RateLimiter.d.ts +3 -3
  815. package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
  816. package/dist/unstable/persistence/RateLimiter.js +1 -1
  817. package/dist/unstable/persistence/RateLimiter.js.map +1 -1
  818. package/dist/unstable/process/ChildProcess.d.ts +5 -128
  819. package/dist/unstable/process/ChildProcess.d.ts.map +1 -1
  820. package/dist/unstable/process/ChildProcess.js +1 -65
  821. package/dist/unstable/process/ChildProcess.js.map +1 -1
  822. package/dist/unstable/process/ChildProcessSpawner.d.ts +45 -7
  823. package/dist/unstable/process/ChildProcessSpawner.d.ts.map +1 -1
  824. package/dist/unstable/process/ChildProcessSpawner.js +21 -1
  825. package/dist/unstable/process/ChildProcessSpawner.js.map +1 -1
  826. package/dist/unstable/reactivity/Atom.d.ts +73 -12
  827. package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
  828. package/dist/unstable/reactivity/Atom.js +108 -25
  829. package/dist/unstable/reactivity/Atom.js.map +1 -1
  830. package/dist/unstable/reactivity/AtomHttpApi.d.ts +17 -15
  831. package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
  832. package/dist/unstable/reactivity/AtomHttpApi.js +45 -15
  833. package/dist/unstable/reactivity/AtomHttpApi.js.map +1 -1
  834. package/dist/unstable/reactivity/AtomRegistry.d.ts +6 -0
  835. package/dist/unstable/reactivity/AtomRegistry.d.ts.map +1 -1
  836. package/dist/unstable/reactivity/AtomRegistry.js +54 -11
  837. package/dist/unstable/reactivity/AtomRegistry.js.map +1 -1
  838. package/dist/unstable/reactivity/AtomRpc.d.ts +9 -9
  839. package/dist/unstable/reactivity/AtomRpc.d.ts.map +1 -1
  840. package/dist/unstable/reactivity/AtomRpc.js +47 -21
  841. package/dist/unstable/reactivity/AtomRpc.js.map +1 -1
  842. package/dist/unstable/reactivity/Hydration.d.ts +39 -0
  843. package/dist/unstable/reactivity/Hydration.d.ts.map +1 -0
  844. package/dist/unstable/reactivity/Hydration.js +76 -0
  845. package/dist/unstable/reactivity/Hydration.js.map +1 -0
  846. package/dist/unstable/reactivity/index.d.ts +4 -0
  847. package/dist/unstable/reactivity/index.d.ts.map +1 -1
  848. package/dist/unstable/reactivity/index.js +4 -0
  849. package/dist/unstable/reactivity/index.js.map +1 -1
  850. package/dist/unstable/rpc/Rpc.d.ts +6 -5
  851. package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
  852. package/dist/unstable/rpc/Rpc.js +4 -3
  853. package/dist/unstable/rpc/Rpc.js.map +1 -1
  854. package/dist/unstable/rpc/RpcClient.d.ts +5 -26
  855. package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
  856. package/dist/unstable/rpc/RpcClient.js +53 -43
  857. package/dist/unstable/rpc/RpcClient.js.map +1 -1
  858. package/dist/unstable/rpc/RpcGroup.d.ts +3 -5
  859. package/dist/unstable/rpc/RpcGroup.d.ts.map +1 -1
  860. package/dist/unstable/rpc/RpcGroup.js.map +1 -1
  861. package/dist/unstable/rpc/RpcMiddleware.d.ts +8 -8
  862. package/dist/unstable/rpc/RpcMiddleware.d.ts.map +1 -1
  863. package/dist/unstable/rpc/RpcMiddleware.js.map +1 -1
  864. package/dist/unstable/rpc/RpcSchema.d.ts +13 -0
  865. package/dist/unstable/rpc/RpcSchema.d.ts.map +1 -1
  866. package/dist/unstable/rpc/RpcSchema.js +17 -2
  867. package/dist/unstable/rpc/RpcSchema.js.map +1 -1
  868. package/dist/unstable/rpc/RpcSerialization.d.ts.map +1 -1
  869. package/dist/unstable/rpc/RpcSerialization.js +39 -11
  870. package/dist/unstable/rpc/RpcSerialization.js.map +1 -1
  871. package/dist/unstable/rpc/RpcServer.d.ts +6 -10
  872. package/dist/unstable/rpc/RpcServer.d.ts.map +1 -1
  873. package/dist/unstable/rpc/RpcServer.js +20 -19
  874. package/dist/unstable/rpc/RpcServer.js.map +1 -1
  875. package/dist/unstable/rpc/Utils.d.ts.map +1 -1
  876. package/dist/unstable/rpc/Utils.js +3 -2
  877. package/dist/unstable/rpc/Utils.js.map +1 -1
  878. package/dist/unstable/schema/Model.d.ts +22 -1
  879. package/dist/unstable/schema/Model.d.ts.map +1 -1
  880. package/dist/unstable/schema/Model.js +15 -0
  881. package/dist/unstable/schema/Model.js.map +1 -1
  882. package/dist/unstable/schema/VariantSchema.d.ts +6 -6
  883. package/dist/unstable/schema/VariantSchema.d.ts.map +1 -1
  884. package/dist/unstable/schema/VariantSchema.js +6 -6
  885. package/dist/unstable/schema/VariantSchema.js.map +1 -1
  886. package/dist/unstable/socket/Socket.d.ts +6 -5
  887. package/dist/unstable/socket/Socket.d.ts.map +1 -1
  888. package/dist/unstable/socket/Socket.js +12 -9
  889. package/dist/unstable/socket/Socket.js.map +1 -1
  890. package/dist/unstable/socket/SocketServer.d.ts +3 -3
  891. package/dist/unstable/sql/Migrator.d.ts +1 -1
  892. package/dist/unstable/sql/Migrator.d.ts.map +1 -1
  893. package/dist/unstable/sql/Migrator.js +2 -2
  894. package/dist/unstable/sql/Migrator.js.map +1 -1
  895. package/dist/unstable/sql/SqlClient.d.ts +1 -1
  896. package/dist/unstable/sql/SqlClient.d.ts.map +1 -1
  897. package/dist/unstable/sql/SqlClient.js +1 -1
  898. package/dist/unstable/sql/SqlClient.js.map +1 -1
  899. package/dist/unstable/sql/SqlError.d.ts +237 -17
  900. package/dist/unstable/sql/SqlError.d.ts.map +1 -1
  901. package/dist/unstable/sql/SqlError.js +260 -4
  902. package/dist/unstable/sql/SqlError.js.map +1 -1
  903. package/dist/unstable/sql/SqlModel.d.ts +2 -2
  904. package/dist/unstable/sql/SqlModel.d.ts.map +1 -1
  905. package/dist/unstable/sql/SqlModel.js +3 -3
  906. package/dist/unstable/sql/SqlModel.js.map +1 -1
  907. package/dist/unstable/sql/SqlResolver.d.ts.map +1 -1
  908. package/dist/unstable/sql/SqlResolver.js +17 -8
  909. package/dist/unstable/sql/SqlResolver.js.map +1 -1
  910. package/dist/unstable/sql/SqlSchema.d.ts +17 -6
  911. package/dist/unstable/sql/SqlSchema.d.ts.map +1 -1
  912. package/dist/unstable/sql/SqlSchema.js +17 -7
  913. package/dist/unstable/sql/SqlSchema.js.map +1 -1
  914. package/dist/unstable/sql/Statement.js +0 -1
  915. package/dist/unstable/sql/Statement.js.map +1 -1
  916. package/dist/unstable/workers/Worker.d.ts.map +1 -1
  917. package/dist/unstable/workers/Worker.js +2 -1
  918. package/dist/unstable/workers/Worker.js.map +1 -1
  919. package/dist/unstable/workflow/Activity.d.ts +5 -0
  920. package/dist/unstable/workflow/Activity.d.ts.map +1 -1
  921. package/dist/unstable/workflow/Activity.js +13 -0
  922. package/dist/unstable/workflow/Activity.js.map +1 -1
  923. package/dist/unstable/workflow/DurableClock.d.ts +3 -3
  924. package/dist/unstable/workflow/DurableClock.d.ts.map +1 -1
  925. package/dist/unstable/workflow/DurableClock.js +3 -3
  926. package/dist/unstable/workflow/DurableClock.js.map +1 -1
  927. package/dist/unstable/workflow/DurableDeferred.js +8 -8
  928. package/dist/unstable/workflow/DurableDeferred.js.map +1 -1
  929. package/dist/unstable/workflow/Workflow.d.ts +5 -4
  930. package/dist/unstable/workflow/Workflow.d.ts.map +1 -1
  931. package/dist/unstable/workflow/Workflow.js +1 -1
  932. package/dist/unstable/workflow/Workflow.js.map +1 -1
  933. package/dist/unstable/workflow/WorkflowEngine.d.ts +17 -5
  934. package/dist/unstable/workflow/WorkflowEngine.d.ts.map +1 -1
  935. package/dist/unstable/workflow/WorkflowEngine.js +153 -12
  936. package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
  937. package/package.json +2 -2
  938. package/src/Array.ts +304 -447
  939. package/src/BigDecimal.ts +117 -66
  940. package/src/BigInt.ts +49 -41
  941. package/src/Brand.ts +1 -1
  942. package/src/Cache.ts +9 -8
  943. package/src/Cause.ts +37 -2
  944. package/src/Channel.ts +582 -154
  945. package/src/Chunk.ts +149 -331
  946. package/src/Combiner.ts +280 -13
  947. package/src/Config.ts +195 -25
  948. package/src/Cron.ts +155 -63
  949. package/src/Data.ts +539 -376
  950. package/src/DateTime.ts +75 -256
  951. package/src/Deferred.ts +8 -6
  952. package/src/Duration.ts +122 -66
  953. package/src/Effect.ts +1484 -1157
  954. package/src/Encoding.ts +879 -0
  955. package/src/Equal.ts +278 -111
  956. package/src/Equivalence.ts +114 -52
  957. package/src/ErrorReporter.ts +458 -0
  958. package/src/Exit.ts +24 -12
  959. package/src/Fiber.ts +12 -3
  960. package/src/FiberHandle.ts +10 -9
  961. package/src/FiberMap.ts +22 -22
  962. package/src/FileSystem.ts +34 -31
  963. package/src/Filter.ts +52 -63
  964. package/src/Formatter.ts +253 -51
  965. package/src/Function.ts +2 -10
  966. package/src/Graph.ts +131 -117
  967. package/src/HashMap.ts +26 -19
  968. package/src/Iterable.ts +117 -63
  969. package/src/JsonSchema.ts +383 -10
  970. package/src/Latch.ts +194 -0
  971. package/src/Layer.ts +394 -160
  972. package/src/LayerMap.ts +11 -9
  973. package/src/LogLevel.ts +37 -0
  974. package/src/Logger.ts +33 -100
  975. package/src/ManagedRuntime.ts +35 -22
  976. package/src/Metric.ts +6 -8
  977. package/src/MutableHashMap.ts +9 -0
  978. package/src/MutableHashSet.ts +9 -0
  979. package/src/Newtype.ts +308 -0
  980. package/src/Number.ts +85 -26
  981. package/src/Optic.ts +948 -19
  982. package/src/Option.ts +34 -24
  983. package/src/Order.ts +39 -32
  984. package/src/PartitionedSemaphore.ts +288 -56
  985. package/src/Pipeable.ts +32 -1
  986. package/src/PlatformError.ts +5 -5
  987. package/src/Pool.ts +13 -11
  988. package/src/PubSub.ts +30 -20
  989. package/src/Pull.ts +1 -1
  990. package/src/Queue.ts +11 -9
  991. package/src/Random.ts +51 -14
  992. package/src/RcMap.ts +5 -5
  993. package/src/RcRef.ts +1 -1
  994. package/src/Record.ts +94 -199
  995. package/src/Reducer.ts +166 -7
  996. package/src/References.ts +283 -287
  997. package/src/Request.ts +3 -2
  998. package/src/RequestResolver.ts +29 -49
  999. package/src/Resource.ts +2 -1
  1000. package/src/Result.ts +2 -4
  1001. package/src/Runtime.ts +102 -6
  1002. package/src/Schedule.ts +458 -449
  1003. package/src/Scheduler.ts +49 -126
  1004. package/src/Schema.ts +3298 -392
  1005. package/src/SchemaAST.ts +172 -33
  1006. package/src/SchemaGetter.ts +19 -21
  1007. package/src/SchemaParser.ts +92 -27
  1008. package/src/SchemaRepresentation.ts +51 -26
  1009. package/src/SchemaTransformation.ts +198 -13
  1010. package/src/ScopedCache.ts +3 -3
  1011. package/src/Semaphore.ts +444 -0
  1012. package/src/ServiceMap.ts +144 -97
  1013. package/src/Sink.ts +83 -28
  1014. package/src/Stdio.ts +27 -4
  1015. package/src/Stream.ts +687 -617
  1016. package/src/String.ts +122 -69
  1017. package/src/Struct.ts +33 -7
  1018. package/src/SubscriptionRef.ts +101 -120
  1019. package/src/SynchronizedRef.ts +3 -2
  1020. package/src/Terminal.ts +2 -1
  1021. package/src/Tracer.ts +6 -5
  1022. package/src/Trie.ts +44 -31
  1023. package/src/TxChunk.ts +72 -53
  1024. package/src/TxDeferred.ts +394 -0
  1025. package/src/TxHashMap.ts +409 -343
  1026. package/src/TxHashSet.ts +113 -118
  1027. package/src/TxPriorityQueue.ts +766 -0
  1028. package/src/TxPubSub.ts +789 -0
  1029. package/src/TxQueue.ts +241 -251
  1030. package/src/TxReentrantLock.ts +753 -0
  1031. package/src/TxRef.ts +50 -38
  1032. package/src/TxSemaphore.ts +217 -44
  1033. package/src/TxSubscriptionRef.ts +639 -0
  1034. package/src/Types.ts +73 -19
  1035. package/src/Utils.ts +137 -111
  1036. package/src/index.ts +816 -56
  1037. package/src/internal/core.ts +12 -5
  1038. package/src/internal/dateTime.ts +91 -96
  1039. package/src/internal/effect.ts +844 -432
  1040. package/src/internal/hashMap.ts +12 -10
  1041. package/src/internal/option.ts +7 -0
  1042. package/src/internal/random.ts +20 -0
  1043. package/src/internal/rcRef.ts +4 -3
  1044. package/src/internal/references.ts +72 -0
  1045. package/src/internal/request.ts +2 -2
  1046. package/src/internal/schema/annotations.ts +2 -0
  1047. package/src/internal/schema/representation.ts +73 -94
  1048. package/src/internal/schema/schema.ts +1 -0
  1049. package/src/internal/schema/to-codec.ts +7 -17
  1050. package/src/internal/trie.ts +21 -15
  1051. package/src/testing/TestClock.ts +13 -11
  1052. package/src/testing/TestSchema.ts +332 -35
  1053. package/src/testing/index.ts +64 -1
  1054. package/src/unstable/ai/AiError.ts +111 -54
  1055. package/src/unstable/ai/AnthropicStructuredOutput.ts +4 -0
  1056. package/src/unstable/ai/Chat.ts +134 -85
  1057. package/src/unstable/ai/EmbeddingModel.ts +209 -0
  1058. package/src/unstable/ai/LanguageModel.ts +683 -253
  1059. package/src/unstable/ai/McpSchema.ts +73 -13
  1060. package/src/unstable/ai/McpServer.ts +271 -61
  1061. package/src/unstable/ai/Model.ts +40 -9
  1062. package/src/unstable/ai/OpenAiStructuredOutput.ts +4 -0
  1063. package/src/unstable/ai/Prompt.ts +37 -37
  1064. package/src/unstable/ai/Response.ts +25 -25
  1065. package/src/unstable/ai/ResponseIdTracker.ts +97 -0
  1066. package/src/unstable/ai/Tool.ts +42 -16
  1067. package/src/unstable/ai/Toolkit.ts +5 -14
  1068. package/src/unstable/ai/index.ts +24 -1
  1069. package/src/unstable/ai/internal/codec-transformer.ts +0 -7
  1070. package/src/unstable/cli/Argument.ts +2 -4
  1071. package/src/unstable/cli/CliError.ts +47 -59
  1072. package/src/unstable/cli/CliOutput.ts +85 -13
  1073. package/src/unstable/cli/Command.ts +801 -192
  1074. package/src/unstable/cli/Completions.ts +36 -0
  1075. package/src/unstable/cli/Flag.ts +2 -2
  1076. package/src/unstable/cli/GlobalFlag.ts +242 -0
  1077. package/src/unstable/cli/HelpDoc.ts +91 -11
  1078. package/src/unstable/cli/Param.ts +15 -11
  1079. package/src/unstable/cli/Primitive.ts +2 -2
  1080. package/src/unstable/cli/Prompt.ts +265 -101
  1081. package/src/unstable/cli/index.ts +10 -0
  1082. package/src/unstable/cli/internal/command.ts +109 -63
  1083. package/src/unstable/cli/internal/completions/CommandDescriptor.ts +10 -4
  1084. package/src/unstable/cli/internal/config.ts +49 -0
  1085. package/src/unstable/cli/internal/help.ts +171 -0
  1086. package/src/unstable/cli/internal/parser.ts +71 -63
  1087. package/src/unstable/cluster/ClusterCron.ts +2 -2
  1088. package/src/unstable/cluster/ClusterSchema.ts +29 -1
  1089. package/src/unstable/cluster/ClusterWorkflowEngine.ts +62 -37
  1090. package/src/unstable/cluster/DeliverAt.ts +1 -1
  1091. package/src/unstable/cluster/Entity.ts +25 -22
  1092. package/src/unstable/cluster/EntityAddress.ts +1 -1
  1093. package/src/unstable/cluster/EntityResource.ts +4 -4
  1094. package/src/unstable/cluster/Envelope.ts +1 -1
  1095. package/src/unstable/cluster/K8sHttpClient.ts +5 -5
  1096. package/src/unstable/cluster/Message.ts +28 -15
  1097. package/src/unstable/cluster/MessageStorage.ts +66 -36
  1098. package/src/unstable/cluster/Reply.ts +7 -4
  1099. package/src/unstable/cluster/Runner.ts +1 -1
  1100. package/src/unstable/cluster/RunnerAddress.ts +1 -1
  1101. package/src/unstable/cluster/RunnerServer.ts +10 -13
  1102. package/src/unstable/cluster/Runners.ts +14 -12
  1103. package/src/unstable/cluster/ShardId.ts +2 -2
  1104. package/src/unstable/cluster/Sharding.ts +66 -49
  1105. package/src/unstable/cluster/ShardingConfig.ts +36 -37
  1106. package/src/unstable/cluster/SqlMessageStorage.ts +31 -19
  1107. package/src/unstable/cluster/SqlRunnerStorage.ts +1 -1
  1108. package/src/unstable/cluster/internal/entityManager.ts +50 -34
  1109. package/src/unstable/cluster/internal/entityReaper.ts +2 -1
  1110. package/src/unstable/cluster/internal/resourceRef.ts +2 -1
  1111. package/src/unstable/devtools/DevToolsClient.ts +23 -18
  1112. package/src/unstable/devtools/DevToolsSchema.ts +16 -3
  1113. package/src/unstable/encoding/Ndjson.ts +17 -17
  1114. package/src/unstable/encoding/Sse.ts +3 -5
  1115. package/src/unstable/eventlog/EventJournal.ts +2 -2
  1116. package/src/unstable/eventlog/EventLog.ts +3 -2
  1117. package/src/unstable/eventlog/SqlEventLogJournal.ts +2 -2
  1118. package/src/unstable/http/Cookies.ts +94 -11
  1119. package/src/unstable/http/Etag.ts +5 -3
  1120. package/src/unstable/http/Headers.ts +68 -18
  1121. package/src/unstable/http/HttpClient.ts +376 -34
  1122. package/src/unstable/http/HttpClientRequest.ts +151 -39
  1123. package/src/unstable/http/HttpClientResponse.ts +12 -6
  1124. package/src/unstable/http/HttpEffect.ts +54 -68
  1125. package/src/unstable/http/HttpIncomingMessage.ts +3 -2
  1126. package/src/unstable/http/HttpMethod.ts +16 -4
  1127. package/src/unstable/http/HttpMiddleware.ts +25 -39
  1128. package/src/unstable/http/HttpPlatform.ts +3 -2
  1129. package/src/unstable/http/HttpRouter.ts +9 -9
  1130. package/src/unstable/http/HttpServer.ts +3 -9
  1131. package/src/unstable/http/HttpServerError.ts +45 -47
  1132. package/src/unstable/http/HttpServerRequest.ts +407 -16
  1133. package/src/unstable/http/HttpServerRespondable.ts +6 -6
  1134. package/src/unstable/http/HttpServerResponse.ts +345 -7
  1135. package/src/unstable/http/HttpStaticServer.ts +456 -0
  1136. package/src/unstable/http/HttpTraceContext.ts +31 -17
  1137. package/src/unstable/http/Multipart.ts +2 -2
  1138. package/src/unstable/http/Url.ts +650 -0
  1139. package/src/unstable/http/UrlParams.ts +31 -19
  1140. package/src/unstable/http/index.ts +10 -0
  1141. package/src/unstable/http/internal/preResponseHandler.ts +15 -0
  1142. package/src/unstable/httpapi/HttpApi.ts +6 -6
  1143. package/src/unstable/httpapi/HttpApiBuilder.ts +106 -41
  1144. package/src/unstable/httpapi/HttpApiClient.ts +180 -28
  1145. package/src/unstable/httpapi/HttpApiEndpoint.ts +216 -104
  1146. package/src/unstable/httpapi/HttpApiError.ts +108 -30
  1147. package/src/unstable/httpapi/HttpApiGroup.ts +7 -6
  1148. package/src/unstable/httpapi/HttpApiMiddleware.ts +83 -22
  1149. package/src/unstable/httpapi/HttpApiScalar.ts +6 -0
  1150. package/src/unstable/httpapi/HttpApiSchema.ts +21 -3
  1151. package/src/unstable/httpapi/HttpApiSecurity.ts +3 -3
  1152. package/src/unstable/httpapi/OpenApi.ts +44 -29
  1153. package/src/unstable/observability/Otlp.ts +12 -12
  1154. package/src/unstable/observability/OtlpExporter.ts +8 -5
  1155. package/src/unstable/observability/OtlpLogger.ts +13 -9
  1156. package/src/unstable/observability/OtlpMetrics.ts +4 -4
  1157. package/src/unstable/observability/OtlpTracer.ts +12 -8
  1158. package/src/unstable/persistence/KeyValueStore.ts +6 -6
  1159. package/src/unstable/persistence/Persistable.ts +3 -3
  1160. package/src/unstable/persistence/PersistedCache.ts +20 -9
  1161. package/src/unstable/persistence/PersistedQueue.ts +25 -24
  1162. package/src/unstable/persistence/Persistence.ts +3 -3
  1163. package/src/unstable/persistence/RateLimiter.ts +4 -4
  1164. package/src/unstable/process/ChildProcess.ts +6 -208
  1165. package/src/unstable/process/ChildProcessSpawner.ts +75 -14
  1166. package/src/unstable/reactivity/Atom.ts +212 -54
  1167. package/src/unstable/reactivity/AtomHttpApi.ts +81 -41
  1168. package/src/unstable/reactivity/AtomRegistry.ts +66 -12
  1169. package/src/unstable/reactivity/AtomRpc.ts +51 -20
  1170. package/src/unstable/reactivity/Hydration.ts +112 -0
  1171. package/src/unstable/reactivity/index.ts +5 -0
  1172. package/src/unstable/rpc/Rpc.ts +12 -12
  1173. package/src/unstable/rpc/RpcClient.ts +67 -96
  1174. package/src/unstable/rpc/RpcGroup.ts +7 -7
  1175. package/src/unstable/rpc/RpcMiddleware.ts +15 -9
  1176. package/src/unstable/rpc/RpcSchema.ts +23 -5
  1177. package/src/unstable/rpc/RpcSerialization.ts +49 -11
  1178. package/src/unstable/rpc/RpcServer.ts +31 -35
  1179. package/src/unstable/rpc/Utils.ts +3 -2
  1180. package/src/unstable/schema/Model.ts +31 -0
  1181. package/src/unstable/schema/VariantSchema.ts +10 -10
  1182. package/src/unstable/socket/Socket.ts +31 -27
  1183. package/src/unstable/sql/Migrator.ts +7 -5
  1184. package/src/unstable/sql/SqlClient.ts +6 -4
  1185. package/src/unstable/sql/SqlError.ts +365 -11
  1186. package/src/unstable/sql/SqlModel.ts +5 -5
  1187. package/src/unstable/sql/SqlResolver.ts +17 -7
  1188. package/src/unstable/sql/SqlSchema.ts +42 -26
  1189. package/src/unstable/sql/Statement.ts +0 -1
  1190. package/src/unstable/workers/Worker.ts +2 -1
  1191. package/src/unstable/workflow/Activity.ts +23 -0
  1192. package/src/unstable/workflow/DurableClock.ts +8 -8
  1193. package/src/unstable/workflow/DurableDeferred.ts +8 -8
  1194. package/src/unstable/workflow/Workflow.ts +7 -3
  1195. package/src/unstable/workflow/WorkflowEngine.ts +211 -19
  1196. package/dist/NullOr.d.ts +0 -149
  1197. package/dist/NullOr.d.ts.map +0 -1
  1198. package/dist/NullOr.js +0 -152
  1199. package/dist/NullOr.js.map +0 -1
  1200. package/dist/encoding/Base64.d.ts +0 -67
  1201. package/dist/encoding/Base64.d.ts.map +0 -1
  1202. package/dist/encoding/Base64.js +0 -146
  1203. package/dist/encoding/Base64.js.map +0 -1
  1204. package/dist/encoding/Base64Url.d.ts +0 -60
  1205. package/dist/encoding/Base64Url.d.ts.map +0 -1
  1206. package/dist/encoding/Base64Url.js +0 -89
  1207. package/dist/encoding/Base64Url.js.map +0 -1
  1208. package/dist/encoding/EncodingError.d.ts +0 -31
  1209. package/dist/encoding/EncodingError.d.ts.map +0 -1
  1210. package/dist/encoding/EncodingError.js +0 -22
  1211. package/dist/encoding/EncodingError.js.map +0 -1
  1212. package/dist/encoding/Hex.d.ts +0 -61
  1213. package/dist/encoding/Hex.d.ts.map +0 -1
  1214. package/dist/encoding/Hex.js +0 -115
  1215. package/dist/encoding/Hex.js.map +0 -1
  1216. package/dist/encoding/index.d.ts +0 -26
  1217. package/dist/encoding/index.d.ts.map +0 -1
  1218. package/dist/encoding/index.js +0 -27
  1219. package/dist/encoding/index.js.map +0 -1
  1220. package/dist/unstable/cli/internal/builtInFlags.d.ts +0 -7
  1221. package/dist/unstable/cli/internal/builtInFlags.d.ts.map +0 -1
  1222. package/dist/unstable/cli/internal/builtInFlags.js +0 -44
  1223. package/dist/unstable/cli/internal/builtInFlags.js.map +0 -1
  1224. package/dist/unstable/cli/internal/completions/Completions.d.ts +0 -2
  1225. package/dist/unstable/cli/internal/completions/Completions.d.ts.map +0 -1
  1226. package/dist/unstable/cli/internal/completions/Completions.js +0 -23
  1227. package/dist/unstable/cli/internal/completions/Completions.js.map +0 -1
  1228. package/src/NullOr.ts +0 -204
  1229. package/src/encoding/Base64.ts +0 -366
  1230. package/src/encoding/Base64Url.ts +0 -104
  1231. package/src/encoding/EncodingError.ts +0 -35
  1232. package/src/encoding/Hex.ts +0 -390
  1233. package/src/encoding/index.ts +0 -31
  1234. package/src/unstable/cli/internal/builtInFlags.ts +0 -78
  1235. package/src/unstable/cli/internal/completions/Completions.ts +0 -31
@@ -710,7 +710,7 @@ export const date = (options: DateOptions): Prompt<Date> => {
710
710
  typed: "",
711
711
  cursor: initialCursorPosition,
712
712
  value: opts.initial,
713
- error: undefined
713
+ error: Option.none()
714
714
  }
715
715
  return custom(initialState, {
716
716
  render: handleDateRender(opts),
@@ -727,7 +727,7 @@ export const file = (options: FileOptions = {}): Prompt<string> => {
727
727
  const opts: FileOptionsReq = {
728
728
  type: options.type ?? "file",
729
729
  message: options.message ?? `Choose a file`,
730
- startingPath: options.startingPath,
730
+ startingPath: Option.fromUndefinedOr(options.startingPath),
731
731
  maxPerPage: options.maxPerPage ?? 10,
732
732
  filter: options.filter ?? (() => Effect.succeed(true))
733
733
  }
@@ -736,10 +736,10 @@ export const file = (options: FileOptions = {}): Prompt<string> => {
736
736
  never,
737
737
  Environment
738
738
  > = Effect.gen(function*() {
739
- const currentPath = yield* resolveCurrentPath(undefined, opts)
739
+ const currentPath = yield* resolveCurrentPath(Option.none(), opts)
740
740
  const files = yield* getFileList(currentPath, opts)
741
741
  const confirm = Confirm.Hide()
742
- return { cursor: 0, files, path: undefined, confirm }
742
+ return { cursor: 0, files, allFiles: files, query: "", path: Option.none(), confirm }
743
743
  })
744
744
  return custom(initialState, {
745
745
  render: handleFileRender(opts),
@@ -799,7 +799,7 @@ export const float = (options: FloatOptions): Prompt<number> => {
799
799
  const initialState: NumberState = {
800
800
  cursor: 0,
801
801
  value: "",
802
- error: undefined
802
+ error: Option.none()
803
803
  }
804
804
  return custom(initialState, {
805
805
  render: handleRenderFloat(opts),
@@ -839,7 +839,7 @@ export const integer = (options: IntegerOptions): Prompt<number> => {
839
839
  const initialState: NumberState = {
840
840
  cursor: 0,
841
841
  value: "",
842
- error: undefined
842
+ error: Option.none()
843
843
  }
844
844
  return custom(initialState, {
845
845
  render: handleRenderInteger(opts),
@@ -1009,7 +1009,7 @@ export const multiSelect = <const A>(
1009
1009
  initialSelected.add(i)
1010
1010
  }
1011
1011
  }
1012
- const initialState: MultiSelectState = { index: 0, selectedIndices: initialSelected, error: undefined }
1012
+ const initialState: MultiSelectState = { index: 0, selectedIndices: initialSelected, error: Option.none() }
1013
1013
  return custom(initialState, {
1014
1014
  render: handleMultiSelectRender(opts),
1015
1015
  process: handleMultiSelectProcess(opts),
@@ -1289,7 +1289,7 @@ const TRUE_VALUE_REGEXP = /^y|t$/
1289
1289
  const FALSE_VALUE_REGEXP = /^n|f$/
1290
1290
 
1291
1291
  const handleConfirmProcess = (input: Terminal.UserInput, defaultValue: boolean) => {
1292
- const value = input.input ?? ""
1292
+ const value = Option.getOrElse(input.input, () => "")
1293
1293
  if (input.key.name === "enter" || input.key.name === "return") {
1294
1294
  return Effect.succeed(Action.Submit({ value: defaultValue }))
1295
1295
  }
@@ -1309,7 +1309,7 @@ interface DateState {
1309
1309
  readonly cursor: number
1310
1310
  readonly value: globalThis.Date
1311
1311
  readonly dateParts: ReadonlyArray<DatePart>
1312
- readonly error: string | undefined
1312
+ readonly error: Option.Option<string>
1313
1313
  }
1314
1314
 
1315
1315
  const handleDateClear = (options: DateOptionsReq) => {
@@ -1320,8 +1320,8 @@ const handleDateClear = (options: DateOptionsReq) => {
1320
1320
  const resetCurrentLine = Ansi.eraseLine + Ansi.cursorLeft
1321
1321
  const parts = Arr.reduce(state.dateParts, "", (doc, part) => doc + part.toString())
1322
1322
  const promptText = renderDateOutput("?", figures.pointerSmall, parts, options, { plain: true })
1323
- const errorText = state.error !== undefined
1324
- ? Arr.match(state.error.split(NEWLINE_REGEXP), {
1323
+ const errorText = Option.isSome(state.error)
1324
+ ? Arr.match(state.error.value.split(NEWLINE_REGEXP), {
1325
1325
  onEmpty: () => "",
1326
1326
  onNonEmpty: (errorLines) => `${figures.pointerSmall} ${errorLines.join("\n")}`
1327
1327
  })
@@ -1332,8 +1332,8 @@ const handleDateClear = (options: DateOptionsReq) => {
1332
1332
  }
1333
1333
 
1334
1334
  const renderDateError = (state: DateState, pointer: string): string => {
1335
- if (state.error !== undefined) {
1336
- const errorLines = state.error.split(NEWLINE_REGEXP)
1335
+ if (Option.isSome(state.error)) {
1336
+ const errorLines = state.error.value.split(NEWLINE_REGEXP)
1337
1337
  if (Arr.isReadonlyArrayNonEmpty(errorLines)) {
1338
1338
  const prefix = Ansi.annotate(pointer, Ansi.red) + " "
1339
1339
  const lines = Arr.map(errorLines, (str) => annotateErrorLine(str))
@@ -1401,12 +1401,12 @@ const processDown = (state: DateState) => {
1401
1401
 
1402
1402
  const processDateCursorLeft = (state: DateState) => {
1403
1403
  const previous = state.dateParts[state.cursor].previousPart()
1404
- if (previous !== undefined) {
1404
+ if (Option.isSome(previous)) {
1405
1405
  return Action.NextFrame({
1406
1406
  state: {
1407
1407
  ...state,
1408
1408
  typed: "",
1409
- cursor: state.dateParts.indexOf(previous)
1409
+ cursor: state.dateParts.indexOf(previous.value)
1410
1410
  }
1411
1411
  })
1412
1412
  }
@@ -1415,12 +1415,12 @@ const processDateCursorLeft = (state: DateState) => {
1415
1415
 
1416
1416
  const processDateCursorRight = (state: DateState) => {
1417
1417
  const next = state.dateParts[state.cursor].nextPart()
1418
- if (next !== undefined) {
1418
+ if (Option.isSome(next)) {
1419
1419
  return Action.NextFrame({
1420
1420
  state: {
1421
1421
  ...state,
1422
1422
  typed: "",
1423
- cursor: state.dateParts.indexOf(next)
1423
+ cursor: state.dateParts.indexOf(next.value)
1424
1424
  }
1425
1425
  })
1426
1426
  }
@@ -1429,9 +1429,10 @@ const processDateCursorRight = (state: DateState) => {
1429
1429
 
1430
1430
  const processDateNext = (state: DateState) => {
1431
1431
  const next = state.dateParts[state.cursor].nextPart()
1432
- const cursor = next !== undefined
1433
- ? state.dateParts.indexOf(next)
1434
- : state.dateParts.findIndex((part) => !part.isToken())
1432
+ const cursor = Option.match(next, {
1433
+ onNone: () => state.dateParts.findIndex((part) => !part.isToken()),
1434
+ onSome: (next) => state.dateParts.indexOf(next)
1435
+ })
1435
1436
  return Action.NextFrame({
1436
1437
  state: { ...state, cursor }
1437
1438
  })
@@ -1505,14 +1506,14 @@ const handleDateProcess = (options: DateOptionsReq) => {
1505
1506
  Action.NextFrame({
1506
1507
  state: {
1507
1508
  ...state,
1508
- error
1509
+ error: Option.some(error)
1509
1510
  }
1510
1511
  }),
1511
1512
  onSuccess: (value) => Action.Submit({ value })
1512
1513
  })
1513
1514
  }
1514
1515
  default: {
1515
- return Effect.succeed(defaultDateProcessor(input.input ?? "", state))
1516
+ return Effect.succeed(defaultDateProcessor(Option.getOrElse(input.input, () => ""), state))
1516
1517
  }
1517
1518
  }
1518
1519
  }
@@ -1609,23 +1610,20 @@ abstract class DatePart {
1609
1610
  /**
1610
1611
  * Retrieves the next date part in the list of parts.
1611
1612
  */
1612
- nextPart(): DatePart | undefined {
1613
- const currentPartIndex = Arr.findFirstIndex(this.parts, (part) => part === this) ?? 0
1614
- return Option.getOrUndefined(
1615
- Arr.findFirst(this.parts.slice(currentPartIndex + 1), (part) => !part.isToken())
1616
- )
1613
+ nextPart(): Option.Option<DatePart> {
1614
+ const currentPartIndex = Option.getOrElse(Arr.findFirstIndex(this.parts, (part) => part === this), () => 0)
1615
+ return Arr.findFirst(this.parts.slice(currentPartIndex + 1), (part) => !part.isToken())
1617
1616
  }
1618
1617
 
1619
1618
  /**
1620
1619
  * Retrieves the previous date part in the list of parts.
1621
1620
  */
1622
- previousPart(): DatePart | undefined {
1621
+ previousPart(): Option.Option<DatePart> {
1623
1622
  const currentPartIndex = Arr.findFirstIndex(this.parts, (part) => part === this)
1624
- if (currentPartIndex !== undefined) {
1625
- return Option.getOrUndefined(
1626
- Arr.findLast(this.parts.slice(0, currentPartIndex), (part) => !part.isToken())
1627
- )
1623
+ if (Option.isSome(currentPartIndex)) {
1624
+ return Arr.findLast(this.parts.slice(0, currentPartIndex.value), (part) => !part.isToken())
1628
1625
  }
1626
+ return Option.none()
1629
1627
  }
1630
1628
 
1631
1629
  toString() {
@@ -1851,17 +1849,22 @@ class Meridiem extends DatePart {
1851
1849
  }
1852
1850
 
1853
1851
  interface FileOptionsReq extends Required<Omit<FileOptions, "startingPath">> {
1854
- readonly startingPath: string | undefined
1852
+ readonly startingPath: Option.Option<string>
1855
1853
  }
1856
1854
 
1857
1855
  interface FileState {
1858
1856
  readonly cursor: number
1859
1857
  readonly files: ReadonlyArray<string>
1860
- readonly path: string | undefined
1858
+ readonly allFiles: ReadonlyArray<string>
1859
+ readonly query: string
1860
+ readonly path: Option.Option<string>
1861
1861
  readonly confirm: Confirm
1862
1862
  }
1863
1863
 
1864
1864
  const CONFIRM_MESSAGE = "The selected directory contains files. Would you like to traverse the selected directory?"
1865
+ const FILE_FILTER_LABEL = "filter"
1866
+ const FILE_FILTER_PLACEHOLDER = "type to filter"
1867
+ const FILE_EMPTY_MESSAGE = "No matches"
1865
1868
  type Confirm = Data.TaggedEnum<{
1866
1869
  readonly Show: {}
1867
1870
  readonly Hide: {}
@@ -1871,14 +1874,14 @@ const Confirm = Data.taggedEnum<Confirm>()
1871
1874
  const showConfirmation = Confirm.$is("Show")
1872
1875
 
1873
1876
  const resolveCurrentPath = (
1874
- path: string | undefined,
1877
+ path: Option.Option<string>,
1875
1878
  options: FileOptionsReq
1876
1879
  ): Effect.Effect<string, never, FileSystem.FileSystem> => {
1877
- if (path !== undefined) {
1878
- return Effect.succeed(path)
1880
+ if (Option.isSome(path)) {
1881
+ return Effect.succeed(path.value)
1879
1882
  }
1880
- const startingPath = options.startingPath
1881
- if (startingPath !== undefined) {
1883
+ if (Option.isSome(options.startingPath)) {
1884
+ const startingPath = options.startingPath.value
1882
1885
  return Effect.flatMap(FileSystem.FileSystem.asEffect(), (fs) =>
1883
1886
  // Ensure the user provided starting path exists
1884
1887
  Effect.orDie(fs.exists(startingPath)).pipe(
@@ -1916,6 +1919,40 @@ const getFileList = Effect.fnUntraced(function*(directory: string, options: File
1916
1919
  }, { concurrency: files.length })
1917
1920
  })
1918
1921
 
1922
+ const filterFiles = (files: ReadonlyArray<string>, query: string) => {
1923
+ if (query.length === 0) {
1924
+ return files
1925
+ }
1926
+ const normalizedQuery = query.toLowerCase()
1927
+ const filtered: Array<string> = []
1928
+ for (let index = 0; index < files.length; index++) {
1929
+ if (files[index].toLowerCase().includes(normalizedQuery)) {
1930
+ filtered.push(files[index])
1931
+ }
1932
+ }
1933
+ return filtered
1934
+ }
1935
+
1936
+ const updateFileState = (
1937
+ state: FileState,
1938
+ query: string,
1939
+ allFiles: ReadonlyArray<string> = state.allFiles
1940
+ ): FileState => {
1941
+ const files = filterFiles(allFiles, query)
1942
+ if (files.length === 0) {
1943
+ return { ...state, query, allFiles, files, cursor: 0 }
1944
+ }
1945
+ const selected = state.files[state.cursor]
1946
+ const cursor = selected === undefined ? 0 : files.indexOf(selected)
1947
+ return {
1948
+ ...state,
1949
+ query,
1950
+ allFiles,
1951
+ files,
1952
+ cursor: cursor === -1 ? 0 : cursor
1953
+ }
1954
+ }
1955
+
1919
1956
  const handleFileClear = (options: FileOptionsReq) => {
1920
1957
  return Effect.fnUntraced(function*(state: FileState, _: Action<FileState, string>) {
1921
1958
  const terminal = yield* Terminal.Terminal
@@ -1924,12 +1961,14 @@ const handleFileClear = (options: FileOptionsReq) => {
1924
1961
  const figures = yield* platformFigures
1925
1962
  const currentPath = yield* resolveCurrentPath(state.path, options)
1926
1963
  const selectedPath = state.files[state.cursor]
1927
- const resolvedPath = path.resolve(currentPath, selectedPath)
1964
+ const resolvedPath = selectedPath === undefined ? currentPath : path.resolve(currentPath, selectedPath)
1928
1965
  const resolvedPathText = `${figures.pointerSmall} ${resolvedPath}`
1929
1966
  const isConfirming = showConfirmation(state.confirm)
1930
1967
  const promptText = isConfirming
1931
1968
  ? renderPrompt("(Y/n)", CONFIRM_MESSAGE, "?", figures.pointerSmall, { plain: true })
1932
- : renderPrompt("", options.message, figures.tick, figures.ellipsis, { plain: true })
1969
+ : renderPrompt(renderFileFilter(state, { plain: true }), options.message, figures.tick, figures.ellipsis, {
1970
+ plain: true
1971
+ })
1933
1972
  const filesText = isConfirming
1934
1973
  ? ""
1935
1974
  : renderFiles(state, state.files, figures, options, { plain: true })
@@ -1997,6 +2036,17 @@ const renderFileName = (file: string, isSelected: boolean, renderOptions?: Rende
1997
2036
  : file
1998
2037
  }
1999
2038
 
2039
+ const renderFileFilter = (state: FileState, renderOptions?: RenderOptions | undefined) => {
2040
+ const filterValue = state.query.length === 0
2041
+ ? renderOptions?.plain === true
2042
+ ? FILE_FILTER_PLACEHOLDER
2043
+ : Ansi.annotate(FILE_FILTER_PLACEHOLDER, Ansi.blackBright)
2044
+ : renderOptions?.plain === true
2045
+ ? state.query
2046
+ : Ansi.annotate(state.query, Ansi.combine(Ansi.underlined, Ansi.cyanBright))
2047
+ return `[${FILE_FILTER_LABEL}: ${filterValue}]`
2048
+ }
2049
+
2000
2050
  const renderFiles = (
2001
2051
  state: FileState,
2002
2052
  files: ReadonlyArray<string>,
@@ -2005,6 +2055,11 @@ const renderFiles = (
2005
2055
  renderOptions?: RenderOptions | undefined
2006
2056
  ) => {
2007
2057
  const length = files.length
2058
+ if (length === 0) {
2059
+ return renderOptions?.plain === true
2060
+ ? FILE_EMPTY_MESSAGE
2061
+ : Ansi.annotate(FILE_EMPTY_MESSAGE, Ansi.blackBright)
2062
+ }
2008
2063
  const toDisplay = entriesToDisplay(state.cursor, length, options.maxPerPage)
2009
2064
  const documents: Array<string> = []
2010
2065
  for (let index = toDisplay.startIndex; index < toDisplay.endIndex; index++) {
@@ -2021,7 +2076,7 @@ const renderFileNextFrame = Effect.fnUntraced(function*(state: FileState, option
2021
2076
  const figures = yield* platformFigures
2022
2077
  const currentPath = yield* resolveCurrentPath(state.path, options)
2023
2078
  const selectedPath = state.files[state.cursor]
2024
- const resolvedPath = path.resolve(currentPath, selectedPath)
2079
+ const resolvedPath = selectedPath === undefined ? currentPath : path.resolve(currentPath, selectedPath)
2025
2080
  const resolvedPathMsg = Ansi.annotate(figures.pointerSmall + " " + resolvedPath, Ansi.blackBright)
2026
2081
 
2027
2082
  if (showConfirmation(state.confirm)) {
@@ -2033,33 +2088,36 @@ const renderFileNextFrame = Effect.fnUntraced(function*(state: FileState, option
2033
2088
  }
2034
2089
  const leadingSymbol = Ansi.annotate(figures.tick, Ansi.green)
2035
2090
  const trailingSymbol = Ansi.annotate(figures.ellipsis, Ansi.blackBright)
2036
- const promptMsg = renderPrompt("", options.message, leadingSymbol, trailingSymbol)
2091
+ const promptMsg = renderPrompt(renderFileFilter(state), options.message, leadingSymbol, trailingSymbol)
2037
2092
  const files = renderFiles(state, state.files, figures, options)
2038
2093
  return Ansi.cursorHide + promptMsg + "\n" + resolvedPathMsg + "\n" + files
2039
2094
  })
2040
2095
 
2041
- const renderFileSubmission = Effect.fnUntraced(function*(value: string, options: FileOptionsReq) {
2096
+ const renderFileSubmission = Effect.fnUntraced(function*(state: FileState, value: string, options: FileOptionsReq) {
2042
2097
  const figures = yield* platformFigures
2043
2098
  const leadingSymbol = Ansi.annotate(figures.tick, Ansi.green)
2044
2099
  const trailingSymbol = Ansi.annotate(figures.ellipsis, Ansi.blackBright)
2045
- const promptMsg = renderPrompt("", options.message, leadingSymbol, trailingSymbol)
2100
+ const promptMsg = renderPrompt(renderFileFilter(state), options.message, leadingSymbol, trailingSymbol)
2046
2101
  return promptMsg + " " + Ansi.annotate(value, Ansi.white) + "\n"
2047
2102
  })
2048
2103
 
2049
2104
  const handleFileRender = (options: FileOptionsReq) => {
2050
2105
  return (
2051
- _: FileState,
2106
+ state: FileState,
2052
2107
  action: Action<FileState, string>
2053
2108
  ): Effect.Effect<string, never, Path.Path | FileSystem.FileSystem> => {
2054
2109
  return Action.$match(action, {
2055
2110
  Beep: () => Effect.succeed(renderBeep),
2056
2111
  NextFrame: ({ state }) => renderFileNextFrame(state, options),
2057
- Submit: ({ value }) => renderFileSubmission(value, options)
2112
+ Submit: ({ value }) => renderFileSubmission(state, value, options)
2058
2113
  })
2059
2114
  }
2060
2115
  }
2061
2116
 
2062
2117
  const processFileCursorUp = (state: FileState) => {
2118
+ if (state.files.length === 0) {
2119
+ return Effect.succeed(Action.Beep())
2120
+ }
2063
2121
  const cursor = state.cursor - 1
2064
2122
  return Effect.succeed(Action.NextFrame({
2065
2123
  state: { ...state, cursor: cursor < 0 ? state.files.length - 1 : cursor }
@@ -2067,12 +2125,36 @@ const processFileCursorUp = (state: FileState) => {
2067
2125
  }
2068
2126
 
2069
2127
  const processFileCursorDown = (state: FileState) => {
2128
+ if (state.files.length === 0) {
2129
+ return Effect.succeed(Action.Beep())
2130
+ }
2070
2131
  return Effect.succeed(Action.NextFrame({
2071
2132
  state: { ...state, cursor: (state.cursor + 1) % state.files.length }
2072
2133
  }))
2073
2134
  }
2074
2135
 
2136
+ const processFileBackspace = (state: FileState) => {
2137
+ if (state.query.length === 0) {
2138
+ return Effect.succeed(Action.Beep())
2139
+ }
2140
+ const query = state.query.slice(0, state.query.length - 1)
2141
+ return Effect.succeed(Action.NextFrame({ state: updateFileState(state, query) }))
2142
+ }
2143
+
2144
+ const processFileClear = (state: FileState) => Effect.succeed(Action.NextFrame({ state: updateFileState(state, "") }))
2145
+
2146
+ const processFileInput = (input: string, state: FileState) => {
2147
+ if (input.length === 0) {
2148
+ return Effect.succeed(Action.Beep())
2149
+ }
2150
+ const query = state.query + input
2151
+ return Effect.succeed(Action.NextFrame({ state: updateFileState(state, query) }))
2152
+ }
2153
+
2075
2154
  const processSelection = Effect.fnUntraced(function*(state: FileState, options: FileOptionsReq) {
2155
+ if (state.files.length === 0) {
2156
+ return Action.Beep()
2157
+ }
2076
2158
  const fs = yield* FileSystem.FileSystem
2077
2159
  const path = yield* Path.Path
2078
2160
  const currentPath = yield* resolveCurrentPath(state.path, options)
@@ -2099,7 +2181,9 @@ const processSelection = Effect.fnUntraced(function*(state: FileState, options:
2099
2181
  state: {
2100
2182
  cursor: 0,
2101
2183
  files,
2102
- path: resolvedPath,
2184
+ allFiles: files,
2185
+ query: "",
2186
+ path: Option.some(resolvedPath),
2103
2187
  confirm: Confirm.Hide()
2104
2188
  }
2105
2189
  })
@@ -2109,6 +2193,15 @@ const processSelection = Effect.fnUntraced(function*(state: FileState, options:
2109
2193
 
2110
2194
  const handleFileProcess = (options: FileOptionsReq) => {
2111
2195
  return Effect.fnUntraced(function*(input: Terminal.UserInput, state: FileState) {
2196
+ if (input.key.ctrl) {
2197
+ if (input.key.name === "u") {
2198
+ if (showConfirmation(state.confirm)) {
2199
+ return Action.Beep()
2200
+ }
2201
+ return yield* processFileClear(state)
2202
+ }
2203
+ return Action.Beep()
2204
+ }
2112
2205
  switch (input.key.name) {
2113
2206
  case "k":
2114
2207
  case "up": {
@@ -2119,6 +2212,12 @@ const handleFileProcess = (options: FileOptionsReq) => {
2119
2212
  case "tab": {
2120
2213
  return yield* processFileCursorDown(state)
2121
2214
  }
2215
+ case "backspace": {
2216
+ if (showConfirmation(state.confirm)) {
2217
+ return Action.Beep()
2218
+ }
2219
+ return yield* processFileBackspace(state)
2220
+ }
2122
2221
  case "enter":
2123
2222
  case "return": {
2124
2223
  return yield* processSelection(state, options)
@@ -2135,12 +2234,14 @@ const handleFileProcess = (options: FileOptionsReq) => {
2135
2234
  state: {
2136
2235
  cursor: 0,
2137
2236
  files,
2138
- path: resolvedPath,
2237
+ allFiles: files,
2238
+ query: "",
2239
+ path: Option.some(resolvedPath),
2139
2240
  confirm: Confirm.Hide()
2140
2241
  }
2141
2242
  })
2142
2243
  }
2143
- return Action.Beep()
2244
+ return yield* processFileInput(Option.getOrElse(input.input, () => ""), state)
2144
2245
  }
2145
2246
  case "n":
2146
2247
  case "f": {
@@ -2151,10 +2252,13 @@ const handleFileProcess = (options: FileOptionsReq) => {
2151
2252
  const resolvedPath = path.resolve(currentPath, selectedPath)
2152
2253
  return Action.Submit({ value: resolvedPath })
2153
2254
  }
2154
- return Action.Beep()
2255
+ return yield* processFileInput(Option.getOrElse(input.input, () => ""), state)
2155
2256
  }
2156
2257
  default: {
2157
- return Action.Beep()
2258
+ if (showConfirmation(state.confirm)) {
2259
+ return Action.Beep()
2260
+ }
2261
+ return yield* processFileInput(Option.getOrElse(input.input, () => ""), state)
2158
2262
  }
2159
2263
  }
2160
2264
  })
@@ -2166,7 +2270,7 @@ interface MultiSelectOptionsReq extends MultiSelectOptions {}
2166
2270
  type MultiSelectState = {
2167
2271
  index: number
2168
2272
  selectedIndices: Set<number>
2169
- error: string | undefined
2273
+ error: Option.Option<string>
2170
2274
  }
2171
2275
 
2172
2276
  const renderMultiSelectError = (
@@ -2174,8 +2278,8 @@ const renderMultiSelectError = (
2174
2278
  pointer: string,
2175
2279
  renderOptions?: RenderOptions | undefined
2176
2280
  ): string => {
2177
- if (state.error !== undefined) {
2178
- return Arr.match(state.error.split(NEWLINE_REGEXP), {
2281
+ if (Option.isSome(state.error)) {
2282
+ return Arr.match(state.error.value.split(NEWLINE_REGEXP), {
2179
2283
  onEmpty: () => "",
2180
2284
  onNonEmpty: (errorLines) => {
2181
2285
  if (renderOptions?.plain === true) {
@@ -2252,7 +2356,9 @@ const renderMultiSelectChoices = <A>(
2252
2356
  const annotatedCheckbox = isHighlighted && renderOptions?.plain !== true
2253
2357
  ? Ansi.annotate(checkbox, Ansi.cyanBright)
2254
2358
  : checkbox
2255
- const title = choice.title
2359
+ const title = isHighlighted && renderOptions?.plain !== true
2360
+ ? Ansi.annotate(choice.title, Ansi.cyanBright)
2361
+ : choice.title
2256
2362
  const description = renderChoiceDescription(choice as SelectChoice<A>, isHighlighted, renderOptions)
2257
2363
  documents.push(prefix + " " + annotatedCheckbox + " " + title + " " + description)
2258
2364
  }
@@ -2347,12 +2453,12 @@ const handleMultiSelectProcess = <A>(options: SelectOptionsReq<A> & MultiSelectO
2347
2453
  switch (input.key.name) {
2348
2454
  case "k":
2349
2455
  case "up": {
2350
- return processMultiSelectCursorUp({ ...state, error: undefined }, totalChoices)
2456
+ return processMultiSelectCursorUp({ ...state, error: Option.none() }, totalChoices)
2351
2457
  }
2352
2458
  case "j":
2353
2459
  case "down":
2354
2460
  case "tab": {
2355
- return processMultiSelectCursorDown({ ...state, error: undefined }, totalChoices)
2461
+ return processMultiSelectCursorDown({ ...state, error: Option.none() }, totalChoices)
2356
2462
  }
2357
2463
  case "space": {
2358
2464
  return processSpace(state, options)
@@ -2362,12 +2468,12 @@ const handleMultiSelectProcess = <A>(options: SelectOptionsReq<A> & MultiSelectO
2362
2468
  const selectedCount = state.selectedIndices.size
2363
2469
  if (options.min !== undefined && selectedCount < options.min) {
2364
2470
  return Effect.succeed(
2365
- Action.NextFrame({ state: { ...state, error: `At least ${options.min} are required` } })
2471
+ Action.NextFrame({ state: { ...state, error: Option.some(`At least ${options.min} are required`) } })
2366
2472
  )
2367
2473
  }
2368
2474
  if (options.max !== undefined && selectedCount > options.max) {
2369
2475
  return Effect.succeed(
2370
- Action.NextFrame({ state: { ...state, error: `At most ${options.max} choices are allowed` } })
2476
+ Action.NextFrame({ state: { ...state, error: Option.some(`At most ${options.max} choices are allowed`) } })
2371
2477
  )
2372
2478
  }
2373
2479
  const selectedValues = Array.from(state.selectedIndices).sort(EffectNumber.Order).map((index) =>
@@ -2398,7 +2504,7 @@ interface FloatOptionsReq extends Required<FloatOptions> {}
2398
2504
  interface NumberState {
2399
2505
  readonly cursor: number
2400
2506
  readonly value: string
2401
- readonly error: string | undefined
2507
+ readonly error: Option.Option<string>
2402
2508
  }
2403
2509
 
2404
2510
  const handleNumberClear = (options: IntegerOptionsReq) => {
@@ -2423,7 +2529,7 @@ const renderNumberInput = (
2423
2529
  if (submitted || renderOptions?.plain === true) {
2424
2530
  return value
2425
2531
  }
2426
- const annotation = state.error !== undefined ?
2532
+ const annotation = Option.isSome(state.error) ?
2427
2533
  Ansi.red :
2428
2534
  Ansi.combine(Ansi.underlined, Ansi.cyanBright)
2429
2535
  return Ansi.annotate(value, annotation)
@@ -2434,8 +2540,8 @@ const renderNumberError = (
2434
2540
  pointer: string,
2435
2541
  renderOptions?: RenderOptions | undefined
2436
2542
  ) => {
2437
- if (state.error !== undefined) {
2438
- return Arr.match(state.error.split(NEWLINE_REGEXP), {
2543
+ if (Option.isSome(state.error)) {
2544
+ return Arr.match(state.error.value.split(NEWLINE_REGEXP), {
2439
2545
  onEmpty: () => "",
2440
2546
  onNonEmpty: (errorLines) => {
2441
2547
  if (renderOptions?.plain === true) {
@@ -2485,14 +2591,19 @@ const processNumberBackspace = (state: NumberState) => {
2485
2591
  }
2486
2592
  const value = state.value.slice(0, state.value.length - 1)
2487
2593
  return Effect.succeed(Action.NextFrame({
2488
- state: { ...state, value, error: undefined }
2594
+ state: { ...state, value, error: Option.none() }
2489
2595
  }))
2490
2596
  }
2491
2597
 
2598
+ const processNumberClear = (state: NumberState) =>
2599
+ Effect.succeed(Action.NextFrame({
2600
+ state: { ...state, cursor: 0, value: "", error: Option.none() }
2601
+ }))
2602
+
2492
2603
  const defaultIntProcessor = (input: string, state: NumberState) => {
2493
2604
  if (state.value.length === 0 && input === "-") {
2494
2605
  return Effect.succeed(Action.NextFrame({
2495
- state: { ...state, value: "-", error: undefined }
2606
+ state: { ...state, value: "-", error: Option.none() }
2496
2607
  }))
2497
2608
  }
2498
2609
 
@@ -2501,7 +2612,7 @@ const defaultIntProcessor = (input: string, state: NumberState) => {
2501
2612
  return Effect.succeed(Action.Beep())
2502
2613
  } else {
2503
2614
  return Effect.succeed(Action.NextFrame({
2504
- state: { ...state, value: `${parsed}`, error: undefined }
2615
+ state: { ...state, value: `${parsed}`, error: Option.none() }
2505
2616
  }))
2506
2617
  }
2507
2618
  }
@@ -2512,7 +2623,7 @@ const defaultFloatProcessor = (input: string, state: NumberState) => {
2512
2623
  }
2513
2624
  if (state.value.length === 0 && input === "-") {
2514
2625
  return Effect.succeed(Action.NextFrame({
2515
- state: { ...state, value: "-", error: undefined }
2626
+ state: { ...state, value: "-", error: Option.none() }
2516
2627
  }))
2517
2628
  }
2518
2629
 
@@ -2524,7 +2635,7 @@ const defaultFloatProcessor = (input: string, state: NumberState) => {
2524
2635
  state: {
2525
2636
  ...state,
2526
2637
  value: input === "." ? `${parsed}.` : `${parsed}`,
2527
- error: undefined
2638
+ error: Option.none()
2528
2639
  }
2529
2640
  }))
2530
2641
  }
@@ -2542,6 +2653,9 @@ const handleRenderInteger = (options: IntegerOptionsReq) => {
2542
2653
 
2543
2654
  const handleProcessInteger = (options: IntegerOptionsReq) => {
2544
2655
  return (input: Terminal.UserInput, state: NumberState) => {
2656
+ if (input.key.ctrl && input.key.name === "u") {
2657
+ return processNumberClear(state)
2658
+ }
2545
2659
  switch (input.key.name) {
2546
2660
  case "backspace": {
2547
2661
  return processNumberBackspace(state)
@@ -2554,7 +2668,7 @@ const handleProcessInteger = (options: IntegerOptionsReq) => {
2554
2668
  value: state.value === "" || state.value === "-"
2555
2669
  ? `${options.incrementBy}`
2556
2670
  : `${Number.parseInt(state.value) + options.incrementBy}`,
2557
- error: undefined
2671
+ error: Option.none()
2558
2672
  }
2559
2673
  }))
2560
2674
  }
@@ -2566,7 +2680,7 @@ const handleProcessInteger = (options: IntegerOptionsReq) => {
2566
2680
  value: state.value === "" || state.value === "-"
2567
2681
  ? `-${options.decrementBy}`
2568
2682
  : `${Number.parseInt(state.value) - options.decrementBy}`,
2569
- error: undefined
2683
+ error: Option.none()
2570
2684
  }
2571
2685
  }))
2572
2686
  }
@@ -2577,7 +2691,7 @@ const handleProcessInteger = (options: IntegerOptionsReq) => {
2577
2691
  return Effect.succeed(Action.NextFrame({
2578
2692
  state: {
2579
2693
  ...state,
2580
- error: "Must provide an integer value"
2694
+ error: Option.some("Must provide an integer value")
2581
2695
  }
2582
2696
  }))
2583
2697
  } else {
@@ -2586,7 +2700,7 @@ const handleProcessInteger = (options: IntegerOptionsReq) => {
2586
2700
  Action.NextFrame({
2587
2701
  state: {
2588
2702
  ...state,
2589
- error
2703
+ error: Option.some(error)
2590
2704
  }
2591
2705
  }),
2592
2706
  onSuccess: (value) => Action.Submit({ value })
@@ -2594,7 +2708,7 @@ const handleProcessInteger = (options: IntegerOptionsReq) => {
2594
2708
  }
2595
2709
  }
2596
2710
  default: {
2597
- return defaultIntProcessor(input.input ?? "", state)
2711
+ return defaultIntProcessor(Option.getOrElse(input.input, () => ""), state)
2598
2712
  }
2599
2713
  }
2600
2714
  }
@@ -2612,6 +2726,9 @@ const handleRenderFloat = (options: FloatOptionsReq) => {
2612
2726
 
2613
2727
  const handleProcessFloat = (options: FloatOptionsReq) => {
2614
2728
  return (input: Terminal.UserInput, state: NumberState) => {
2729
+ if (input.key.ctrl && input.key.name === "u") {
2730
+ return processNumberClear(state)
2731
+ }
2615
2732
  switch (input.key.name) {
2616
2733
  case "backspace": {
2617
2734
  return processNumberBackspace(state)
@@ -2624,7 +2741,7 @@ const handleProcessFloat = (options: FloatOptionsReq) => {
2624
2741
  value: state.value === "" || state.value === "-"
2625
2742
  ? `${options.incrementBy}`
2626
2743
  : `${Number.parseFloat(state.value) + options.incrementBy}`,
2627
- error: undefined
2744
+ error: Option.none()
2628
2745
  }
2629
2746
  }))
2630
2747
  }
@@ -2636,7 +2753,7 @@ const handleProcessFloat = (options: FloatOptionsReq) => {
2636
2753
  value: state.value === "" || state.value === "-"
2637
2754
  ? `-${options.decrementBy}`
2638
2755
  : `${Number.parseFloat(state.value) - options.decrementBy}`,
2639
- error: undefined
2756
+ error: Option.none()
2640
2757
  }
2641
2758
  }))
2642
2759
  }
@@ -2647,7 +2764,7 @@ const handleProcessFloat = (options: FloatOptionsReq) => {
2647
2764
  return Effect.succeed(Action.NextFrame({
2648
2765
  state: {
2649
2766
  ...state,
2650
- error: "Must provide a floating point value"
2767
+ error: Option.some("Must provide a floating point value")
2651
2768
  }
2652
2769
  }))
2653
2770
  } else {
@@ -2659,7 +2776,7 @@ const handleProcessFloat = (options: FloatOptionsReq) => {
2659
2776
  Action.NextFrame({
2660
2777
  state: {
2661
2778
  ...state,
2662
- error
2779
+ error: Option.some(error)
2663
2780
  }
2664
2781
  }),
2665
2782
  onSuccess: (value) => Action.Submit({ value })
@@ -2668,7 +2785,7 @@ const handleProcessFloat = (options: FloatOptionsReq) => {
2668
2785
  }
2669
2786
  }
2670
2787
  default: {
2671
- return defaultFloatProcessor(input.input ?? "", state)
2788
+ return defaultFloatProcessor(Option.getOrElse(input.input, () => ""), state)
2672
2789
  }
2673
2790
  }
2674
2791
  }
@@ -2712,7 +2829,7 @@ const updateAutoCompleteState = <A>(
2712
2829
  }
2713
2830
 
2714
2831
  const autoCompleteCursor = (state: AutoCompleteState) =>
2715
- Arr.findFirstIndex(state.filtered, (index) => index === state.index) ?? 0
2832
+ Option.getOrElse(Arr.findFirstIndex(state.filtered, (index) => index === state.index), () => 0)
2716
2833
 
2717
2834
  const renderSelectOutput = <A>(
2718
2835
  leadingSymbol: string,
@@ -2962,6 +3079,9 @@ const processAutoCompleteBackspace = <A>(state: AutoCompleteState, options: Auto
2962
3079
  return Effect.succeed(Action.NextFrame({ state: updateAutoCompleteState(state, options, query) }))
2963
3080
  }
2964
3081
 
3082
+ const processAutoCompleteClear = <A>(state: AutoCompleteState, options: AutoCompleteOptionsReq<A>) =>
3083
+ Effect.succeed(Action.NextFrame({ state: updateAutoCompleteState(state, options, "") }))
3084
+
2965
3085
  const processAutoCompleteInput = <A>(input: string, state: AutoCompleteState, options: AutoCompleteOptionsReq<A>) => {
2966
3086
  if (input.length === 0) {
2967
3087
  return Effect.succeed(Action.Beep())
@@ -3045,6 +3165,12 @@ const handleSelectProcess = <A>(options: SelectOptionsReq<A>) => {
3045
3165
 
3046
3166
  const handleAutoCompleteProcess = <A>(options: AutoCompleteOptionsReq<A>) => {
3047
3167
  return (input: Terminal.UserInput, state: AutoCompleteState) => {
3168
+ if (input.key.ctrl) {
3169
+ if (input.key.name === "u") {
3170
+ return processAutoCompleteClear(state, options)
3171
+ }
3172
+ return Effect.succeed(Action.Beep())
3173
+ }
3048
3174
  switch (input.key.name) {
3049
3175
  case "k":
3050
3176
  case "up": {
@@ -3072,7 +3198,7 @@ const handleAutoCompleteProcess = <A>(options: AutoCompleteOptionsReq<A>) => {
3072
3198
  return Effect.succeed(Action.Submit({ value: selected.value }))
3073
3199
  }
3074
3200
  default: {
3075
- return processAutoCompleteInput(input.input ?? "", state, options)
3201
+ return processAutoCompleteInput(Option.getOrElse(input.input, () => ""), state, options)
3076
3202
  }
3077
3203
  }
3078
3204
  }
@@ -3088,11 +3214,7 @@ interface TextOptionsReq extends Required<TextOptions> {
3088
3214
  interface TextState {
3089
3215
  readonly cursor: number
3090
3216
  readonly value: string
3091
- readonly error: string | undefined
3092
- }
3093
-
3094
- const getValue = (state: TextState, options: TextOptionsReq): string => {
3095
- return state.value.length > 0 ? state.value : options.default
3217
+ readonly error: Option.Option<string>
3096
3218
  }
3097
3219
 
3098
3220
  const renderClearScreen = Effect.fnUntraced(function*(state: TextState, options: TextOptionsReq) {
@@ -3115,7 +3237,7 @@ const renderTextInput = (
3115
3237
  submitted: boolean,
3116
3238
  renderOptions?: RenderOptions | undefined
3117
3239
  ) => {
3118
- const text = getValue(nextState, options)
3240
+ const text = nextState.value
3119
3241
  if (renderOptions?.plain === true) {
3120
3242
  switch (options.type) {
3121
3243
  case "hidden": {
@@ -3130,7 +3252,7 @@ const renderTextInput = (
3130
3252
  }
3131
3253
  }
3132
3254
 
3133
- const annotation = nextState.error !== undefined ?
3255
+ const annotation = Option.isSome(nextState.error) ?
3134
3256
  Ansi.red
3135
3257
  : submitted ?
3136
3258
  Ansi.white
@@ -3156,8 +3278,8 @@ const renderTextError = (
3156
3278
  pointer: string,
3157
3279
  renderOptions?: RenderOptions | undefined
3158
3280
  ): string => {
3159
- if (nextState.error !== undefined) {
3160
- return Arr.match(nextState.error.split(NEWLINE_REGEXP), {
3281
+ if (Option.isSome(nextState.error)) {
3282
+ return Arr.match(nextState.error.value.split(NEWLINE_REGEXP), {
3161
3283
  onEmpty: () => "",
3162
3284
  onNonEmpty: (errorLines) => {
3163
3285
  if (renderOptions?.plain === true) {
@@ -3212,11 +3334,18 @@ const processTextBackspace = (state: TextState) => {
3212
3334
  const value = `${beforeCursor}${afterCursor}`
3213
3335
  return Effect.succeed(
3214
3336
  Action.NextFrame({
3215
- state: { ...state, cursor, value, error: undefined }
3337
+ state: { ...state, cursor, value, error: Option.none() }
3216
3338
  })
3217
3339
  )
3218
3340
  }
3219
3341
 
3342
+ const processTextClear = (state: TextState) =>
3343
+ Effect.succeed(
3344
+ Action.NextFrame({
3345
+ state: { ...state, cursor: 0, value: "", error: Option.none() }
3346
+ })
3347
+ )
3348
+
3220
3349
  const processTextCursorLeft = (state: TextState) => {
3221
3350
  if (state.cursor <= 0) {
3222
3351
  return Effect.succeed(Action.Beep())
@@ -3224,7 +3353,7 @@ const processTextCursorLeft = (state: TextState) => {
3224
3353
  const cursor = state.cursor - 1
3225
3354
  return Effect.succeed(
3226
3355
  Action.NextFrame({
3227
- state: { ...state, cursor, error: undefined }
3356
+ state: { ...state, cursor, error: Option.none() }
3228
3357
  })
3229
3358
  )
3230
3359
  }
@@ -3236,20 +3365,33 @@ const processTextCursorRight = (state: TextState) => {
3236
3365
  const cursor = Math.min(state.cursor + 1, state.value.length)
3237
3366
  return Effect.succeed(
3238
3367
  Action.NextFrame({
3239
- state: { ...state, cursor, error: undefined }
3368
+ state: { ...state, cursor, error: Option.none() }
3240
3369
  })
3241
3370
  )
3242
3371
  }
3243
3372
 
3373
+ const processTextCursorStart = (state: TextState) =>
3374
+ Effect.succeed(
3375
+ Action.NextFrame({
3376
+ state: { ...state, cursor: 0, error: Option.none() }
3377
+ })
3378
+ )
3379
+
3380
+ const processTextCursorEnd = (state: TextState) =>
3381
+ Effect.succeed(
3382
+ Action.NextFrame({
3383
+ state: { ...state, cursor: state.value.length, error: Option.none() }
3384
+ })
3385
+ )
3386
+
3244
3387
  const processTab = (state: TextState, options: TextOptionsReq) => {
3245
3388
  if (state.value === options.default) {
3246
3389
  return Effect.succeed(Action.Beep())
3247
3390
  }
3248
- const value = getValue(state, options)
3249
- const cursor = value.length
3391
+ const value = state.value.length === 0 ? options.default : state.value
3250
3392
  return Effect.succeed(
3251
3393
  Action.NextFrame({
3252
- state: { ...state, value, cursor, error: undefined }
3394
+ state: { ...state, value, cursor: value.length, error: Option.none() }
3253
3395
  })
3254
3396
  )
3255
3397
  }
@@ -3261,7 +3403,7 @@ const defaultTextProcessor = (input: string, state: TextState) => {
3261
3403
  const cursor = state.cursor + input.length
3262
3404
  return Effect.succeed(
3263
3405
  Action.NextFrame({
3264
- state: { ...state, cursor, value, error: undefined }
3406
+ state: { ...state, cursor, value, error: Option.none() }
3265
3407
  })
3266
3408
  )
3267
3409
  }
@@ -3278,6 +3420,22 @@ const handleTextRender = (options: TextOptionsReq) => {
3278
3420
 
3279
3421
  const handleTextProcess = (options: TextOptionsReq) => {
3280
3422
  return (input: Terminal.UserInput, state: TextState) => {
3423
+ if (input.key.ctrl) {
3424
+ switch (input.key.name) {
3425
+ case "u": {
3426
+ return processTextClear(state)
3427
+ }
3428
+ case "a": {
3429
+ return processTextCursorStart(state)
3430
+ }
3431
+ case "e": {
3432
+ return processTextCursorEnd(state)
3433
+ }
3434
+ default: {
3435
+ return Effect.succeed(Action.Beep())
3436
+ }
3437
+ }
3438
+ }
3281
3439
  switch (input.key.name) {
3282
3440
  case "backspace": {
3283
3441
  return processTextBackspace(state)
@@ -3288,13 +3446,19 @@ const handleTextProcess = (options: TextOptionsReq) => {
3288
3446
  case "right": {
3289
3447
  return processTextCursorRight(state)
3290
3448
  }
3449
+ case "home": {
3450
+ return processTextCursorStart(state)
3451
+ }
3452
+ case "end": {
3453
+ return processTextCursorEnd(state)
3454
+ }
3291
3455
  case "enter":
3292
3456
  case "return": {
3293
- const value = getValue(state, options)
3457
+ const value = state.value
3294
3458
  return Effect.match(options.validate(value), {
3295
3459
  onFailure: (error) =>
3296
3460
  Action.NextFrame({
3297
- state: { ...state, value, error }
3461
+ state: { ...state, value, error: Option.some(error) }
3298
3462
  }),
3299
3463
  onSuccess: (value) => Action.Submit({ value })
3300
3464
  })
@@ -3303,7 +3467,7 @@ const handleTextProcess = (options: TextOptionsReq) => {
3303
3467
  return processTab(state, options)
3304
3468
  }
3305
3469
  default: {
3306
- return defaultTextProcessor(input.input ?? "", state)
3470
+ return defaultTextProcessor(Option.getOrElse(input.input, () => ""), state)
3307
3471
  }
3308
3472
  }
3309
3473
  }
@@ -3329,7 +3493,7 @@ const basePrompt = (
3329
3493
  const initialState: TextState = {
3330
3494
  cursor: opts.default.length,
3331
3495
  value: opts.default,
3332
- error: undefined
3496
+ error: Option.none()
3333
3497
  }
3334
3498
  return custom(initialState, {
3335
3499
  render: handleTextRender(opts),