effect 4.0.0-beta.94 → 4.0.0-beta.98

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 (532) hide show
  1. package/dist/Array.d.ts.map +1 -1
  2. package/dist/BigDecimal.d.ts.map +1 -1
  3. package/dist/BigDecimal.js.map +1 -1
  4. package/dist/BigInt.d.ts.map +1 -1
  5. package/dist/Boolean.d.ts.map +1 -1
  6. package/dist/Brand.d.ts.map +1 -1
  7. package/dist/Cache.d.ts.map +1 -1
  8. package/dist/Cause.d.ts.map +1 -1
  9. package/dist/Channel.d.ts.map +1 -1
  10. package/dist/ChannelSchema.d.ts.map +1 -1
  11. package/dist/Chunk.d.ts.map +1 -1
  12. package/dist/Combiner.d.ts.map +1 -1
  13. package/dist/Config.d.ts.map +1 -1
  14. package/dist/Config.js.map +1 -1
  15. package/dist/ConfigProvider.d.ts +44 -6
  16. package/dist/ConfigProvider.d.ts.map +1 -1
  17. package/dist/ConfigProvider.js +63 -24
  18. package/dist/ConfigProvider.js.map +1 -1
  19. package/dist/Console.d.ts.map +1 -1
  20. package/dist/Context.d.ts.map +1 -1
  21. package/dist/Cron.d.ts +4 -1
  22. package/dist/Cron.d.ts.map +1 -1
  23. package/dist/Cron.js +98 -53
  24. package/dist/Cron.js.map +1 -1
  25. package/dist/Crypto.d.ts.map +1 -1
  26. package/dist/Data.d.ts.map +1 -1
  27. package/dist/DateTime.d.ts +12 -12
  28. package/dist/DateTime.d.ts.map +1 -1
  29. package/dist/Deferred.d.ts.map +1 -1
  30. package/dist/Duration.d.ts.map +1 -1
  31. package/dist/Effect.d.ts.map +1 -1
  32. package/dist/Effectable.d.ts.map +1 -1
  33. package/dist/Encoding.d.ts.map +1 -1
  34. package/dist/Equal.d.ts.map +1 -1
  35. package/dist/Equivalence.d.ts.map +1 -1
  36. package/dist/ErrorReporter.d.ts.map +1 -1
  37. package/dist/ExecutionPlan.d.ts +2 -2
  38. package/dist/ExecutionPlan.d.ts.map +1 -1
  39. package/dist/Fiber.d.ts.map +1 -1
  40. package/dist/FiberHandle.d.ts +8 -8
  41. package/dist/FiberHandle.d.ts.map +1 -1
  42. package/dist/FiberMap.d.ts +8 -8
  43. package/dist/FiberMap.d.ts.map +1 -1
  44. package/dist/FiberSet.d.ts +4 -4
  45. package/dist/FiberSet.d.ts.map +1 -1
  46. package/dist/FileSystem.d.ts.map +1 -1
  47. package/dist/Filter.d.ts.map +1 -1
  48. package/dist/Function.d.ts.map +1 -1
  49. package/dist/Graph.d.ts.map +1 -1
  50. package/dist/Graph.js.map +1 -1
  51. package/dist/Hash.d.ts.map +1 -1
  52. package/dist/HashMap.d.ts.map +1 -1
  53. package/dist/HashRing.d.ts.map +1 -1
  54. package/dist/Inspectable.d.ts.map +1 -1
  55. package/dist/Inspectable.js.map +1 -1
  56. package/dist/Iterable.d.ts.map +1 -1
  57. package/dist/Latch.d.ts.map +1 -1
  58. package/dist/Layer.d.ts.map +1 -1
  59. package/dist/LayerMap.d.ts.map +1 -1
  60. package/dist/LayerRef.d.ts +5 -7
  61. package/dist/LayerRef.d.ts.map +1 -1
  62. package/dist/LayerRef.js +4 -6
  63. package/dist/LayerRef.js.map +1 -1
  64. package/dist/LogLevel.d.ts.map +1 -1
  65. package/dist/Logger.d.ts.map +1 -1
  66. package/dist/ManagedRuntime.d.ts.map +1 -1
  67. package/dist/Metric.d.ts.map +1 -1
  68. package/dist/MutableHashMap.d.ts.map +1 -1
  69. package/dist/MutableHashSet.d.ts.map +1 -1
  70. package/dist/MutableList.d.ts.map +1 -1
  71. package/dist/MutableRef.d.ts.map +1 -1
  72. package/dist/NonEmptyIterable.d.ts.map +1 -1
  73. package/dist/Number.d.ts.map +1 -1
  74. package/dist/Number.js +28 -10
  75. package/dist/Number.js.map +1 -1
  76. package/dist/Optic.d.ts.map +1 -1
  77. package/dist/Option.d.ts.map +1 -1
  78. package/dist/Order.d.ts.map +1 -1
  79. package/dist/Ordering.d.ts.map +1 -1
  80. package/dist/PartitionedSemaphore.d.ts.map +1 -1
  81. package/dist/Pipeable.d.ts.map +1 -1
  82. package/dist/PlatformError.d.ts.map +1 -1
  83. package/dist/Pool.d.ts.map +1 -1
  84. package/dist/PrimaryKey.d.ts.map +1 -1
  85. package/dist/PubSub.d.ts.map +1 -1
  86. package/dist/Pull.d.ts.map +1 -1
  87. package/dist/Queue.d.ts.map +1 -1
  88. package/dist/Random.d.ts.map +1 -1
  89. package/dist/RcMap.d.ts.map +1 -1
  90. package/dist/Record.d.ts.map +1 -1
  91. package/dist/Redactable.d.ts.map +1 -1
  92. package/dist/Redacted.d.ts.map +1 -1
  93. package/dist/Ref.d.ts.map +1 -1
  94. package/dist/RegExp.d.ts.map +1 -1
  95. package/dist/Request.d.ts +1 -1
  96. package/dist/Request.d.ts.map +1 -1
  97. package/dist/RequestResolver.d.ts.map +1 -1
  98. package/dist/Resource.d.ts.map +1 -1
  99. package/dist/Result.d.ts.map +1 -1
  100. package/dist/Runtime.d.ts.map +1 -1
  101. package/dist/Schedule.d.ts +1206 -4013
  102. package/dist/Schedule.d.ts.map +1 -1
  103. package/dist/Schedule.js +244 -1348
  104. package/dist/Schedule.js.map +1 -1
  105. package/dist/Scheduler.d.ts.map +1 -1
  106. package/dist/Scheduler.js.map +1 -1
  107. package/dist/Schema.d.ts +71 -22
  108. package/dist/Schema.d.ts.map +1 -1
  109. package/dist/Schema.js +76 -33
  110. package/dist/Schema.js.map +1 -1
  111. package/dist/SchemaAST.d.ts.map +1 -1
  112. package/dist/SchemaAST.js +25 -10
  113. package/dist/SchemaAST.js.map +1 -1
  114. package/dist/SchemaError.d.ts +53 -0
  115. package/dist/SchemaError.d.ts.map +1 -0
  116. package/dist/SchemaError.js +61 -0
  117. package/dist/SchemaError.js.map +1 -0
  118. package/dist/SchemaGetter.d.ts.map +1 -1
  119. package/dist/SchemaGetter.js +17 -12
  120. package/dist/SchemaGetter.js.map +1 -1
  121. package/dist/SchemaIssue.d.ts.map +1 -1
  122. package/dist/SchemaIssue.js.map +1 -1
  123. package/dist/SchemaParser.d.ts.map +1 -1
  124. package/dist/SchemaRepresentation.d.ts +106 -106
  125. package/dist/SchemaRepresentation.d.ts.map +1 -1
  126. package/dist/SchemaRepresentation.js +186 -224
  127. package/dist/SchemaRepresentation.js.map +1 -1
  128. package/dist/SchemaTransformation.d.ts +38 -2
  129. package/dist/SchemaTransformation.d.ts.map +1 -1
  130. package/dist/SchemaTransformation.js +38 -2
  131. package/dist/SchemaTransformation.js.map +1 -1
  132. package/dist/ScopedCache.d.ts.map +1 -1
  133. package/dist/ScopedRef.d.ts.map +1 -1
  134. package/dist/Semaphore.d.ts.map +1 -1
  135. package/dist/Sink.d.ts.map +1 -1
  136. package/dist/Stdio.d.ts.map +1 -1
  137. package/dist/Stream.d.ts +2 -2
  138. package/dist/Stream.d.ts.map +1 -1
  139. package/dist/Stream.js +1 -1
  140. package/dist/String.d.ts.map +1 -1
  141. package/dist/String.js.map +1 -1
  142. package/dist/Struct.d.ts.map +1 -1
  143. package/dist/SubscriptionRef.d.ts.map +1 -1
  144. package/dist/SynchronizedRef.d.ts.map +1 -1
  145. package/dist/Take.d.ts.map +1 -1
  146. package/dist/Terminal.d.ts.map +1 -1
  147. package/dist/Tracer.d.ts.map +1 -1
  148. package/dist/Trie.d.ts.map +1 -1
  149. package/dist/Tuple.d.ts.map +1 -1
  150. package/dist/TxChunk.d.ts.map +1 -1
  151. package/dist/TxDeferred.d.ts.map +1 -1
  152. package/dist/TxHashMap.d.ts.map +1 -1
  153. package/dist/TxHashSet.d.ts.map +1 -1
  154. package/dist/TxPriorityQueue.d.ts.map +1 -1
  155. package/dist/TxPubSub.d.ts.map +1 -1
  156. package/dist/TxQueue.d.ts.map +1 -1
  157. package/dist/TxReentrantLock.d.ts.map +1 -1
  158. package/dist/TxRef.d.ts.map +1 -1
  159. package/dist/TxSemaphore.d.ts.map +1 -1
  160. package/dist/TxSubscriptionRef.d.ts.map +1 -1
  161. package/dist/Types.d.ts +1 -1
  162. package/dist/Types.d.ts.map +1 -1
  163. package/dist/UndefinedOr.d.ts.map +1 -1
  164. package/dist/Utils.d.ts.map +1 -1
  165. package/dist/index.d.ts +8 -0
  166. package/dist/index.d.ts.map +1 -1
  167. package/dist/index.js +8 -0
  168. package/dist/index.js.map +1 -1
  169. package/dist/internal/effect.js +26 -8
  170. package/dist/internal/effect.js.map +1 -1
  171. package/dist/internal/schema/equivalence.js +1 -2
  172. package/dist/internal/schema/equivalence.js.map +1 -1
  173. package/dist/internal/schema/representation.js +1 -3
  174. package/dist/internal/schema/representation.js.map +1 -1
  175. package/dist/internal/schema/schema.d.ts +0 -13
  176. package/dist/internal/schema/schema.d.ts.map +1 -1
  177. package/dist/internal/schema/schema.js +4 -29
  178. package/dist/internal/schema/schema.js.map +1 -1
  179. package/dist/testing/TestClock.d.ts.map +1 -1
  180. package/dist/testing/TestConsole.d.ts.map +1 -1
  181. package/dist/testing/TestSchema.d.ts.map +1 -1
  182. package/dist/unstable/ai/AiError.d.ts +1 -1
  183. package/dist/unstable/ai/AiError.d.ts.map +1 -1
  184. package/dist/unstable/ai/Chat.d.ts +1 -1
  185. package/dist/unstable/ai/Chat.d.ts.map +1 -1
  186. package/dist/unstable/ai/IdGenerator.d.ts.map +1 -1
  187. package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
  188. package/dist/unstable/ai/McpSchema.d.ts +278 -278
  189. package/dist/unstable/ai/McpSchema.d.ts.map +1 -1
  190. package/dist/unstable/ai/McpServer.d.ts.map +1 -1
  191. package/dist/unstable/ai/Model.d.ts.map +1 -1
  192. package/dist/unstable/ai/Prompt.d.ts.map +1 -1
  193. package/dist/unstable/ai/Response.d.ts.map +1 -1
  194. package/dist/unstable/ai/Telemetry.d.ts.map +1 -1
  195. package/dist/unstable/ai/Tokenizer.d.ts.map +1 -1
  196. package/dist/unstable/ai/Tool.d.ts.map +1 -1
  197. package/dist/unstable/ai/Toolkit.d.ts.map +1 -1
  198. package/dist/unstable/cli/Argument.d.ts.map +1 -1
  199. package/dist/unstable/cli/CliError.d.ts +8 -16
  200. package/dist/unstable/cli/CliError.d.ts.map +1 -1
  201. package/dist/unstable/cli/CliError.js +8 -16
  202. package/dist/unstable/cli/CliError.js.map +1 -1
  203. package/dist/unstable/cli/CliOutput.d.ts.map +1 -1
  204. package/dist/unstable/cli/Command.d.ts +4 -3
  205. package/dist/unstable/cli/Command.d.ts.map +1 -1
  206. package/dist/unstable/cli/Command.js +3 -3
  207. package/dist/unstable/cli/Command.js.map +1 -1
  208. package/dist/unstable/cli/Completions.d.ts.map +1 -1
  209. package/dist/unstable/cli/Flag.d.ts.map +1 -1
  210. package/dist/unstable/cli/GlobalFlag.d.ts +6 -8
  211. package/dist/unstable/cli/GlobalFlag.d.ts.map +1 -1
  212. package/dist/unstable/cli/GlobalFlag.js +6 -6
  213. package/dist/unstable/cli/GlobalFlag.js.map +1 -1
  214. package/dist/unstable/cli/Param.d.ts.map +1 -1
  215. package/dist/unstable/cli/Primitive.d.ts.map +1 -1
  216. package/dist/unstable/cli/Prompt.d.ts.map +1 -1
  217. package/dist/unstable/cli/Prompt.js.map +1 -1
  218. package/dist/unstable/cli/internal/ansi.d.ts.map +1 -1
  219. package/dist/unstable/cli/internal/ansi.js.map +1 -1
  220. package/dist/unstable/cli/internal/command.d.ts.map +1 -1
  221. package/dist/unstable/cli/internal/help.d.ts.map +1 -1
  222. package/dist/unstable/cli/internal/parser.js.map +1 -1
  223. package/dist/unstable/cluster/ClusterCron.d.ts.map +1 -1
  224. package/dist/unstable/cluster/ClusterCron.js +1 -1
  225. package/dist/unstable/cluster/ClusterCron.js.map +1 -1
  226. package/dist/unstable/cluster/ClusterError.d.ts.map +1 -1
  227. package/dist/unstable/cluster/ClusterSchema.d.ts +1 -1
  228. package/dist/unstable/cluster/ClusterSchema.d.ts.map +1 -1
  229. package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts +1 -1
  230. package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  231. package/dist/unstable/cluster/ClusterWorkflowEngine.js +1 -1
  232. package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
  233. package/dist/unstable/cluster/DeliverAt.d.ts.map +1 -1
  234. package/dist/unstable/cluster/Entity.d.ts.map +1 -1
  235. package/dist/unstable/cluster/EntityAddress.d.ts.map +1 -1
  236. package/dist/unstable/cluster/EntityId.d.ts.map +1 -1
  237. package/dist/unstable/cluster/EntityProxy.d.ts.map +1 -1
  238. package/dist/unstable/cluster/EntityProxyServer.d.ts +1 -1
  239. package/dist/unstable/cluster/EntityProxyServer.d.ts.map +1 -1
  240. package/dist/unstable/cluster/EntityProxyServer.js +2 -4
  241. package/dist/unstable/cluster/EntityProxyServer.js.map +1 -1
  242. package/dist/unstable/cluster/EntityType.d.ts.map +1 -1
  243. package/dist/unstable/cluster/Envelope.d.ts.map +1 -1
  244. package/dist/unstable/cluster/HttpRunner.d.ts.map +1 -1
  245. package/dist/unstable/cluster/MachineId.d.ts.map +1 -1
  246. package/dist/unstable/cluster/Message.d.ts.map +1 -1
  247. package/dist/unstable/cluster/MessageStorage.d.ts +25 -29
  248. package/dist/unstable/cluster/MessageStorage.d.ts.map +1 -1
  249. package/dist/unstable/cluster/Reply.d.ts.map +1 -1
  250. package/dist/unstable/cluster/Runner.d.ts.map +1 -1
  251. package/dist/unstable/cluster/RunnerAddress.d.ts.map +1 -1
  252. package/dist/unstable/cluster/RunnerHealth.d.ts.map +1 -1
  253. package/dist/unstable/cluster/RunnerServer.d.ts +1 -1
  254. package/dist/unstable/cluster/RunnerStorage.d.ts.map +1 -1
  255. package/dist/unstable/cluster/Runners.d.ts +8 -8
  256. package/dist/unstable/cluster/ShardId.d.ts.map +1 -1
  257. package/dist/unstable/cluster/Sharding.js +3 -4
  258. package/dist/unstable/cluster/Sharding.js.map +1 -1
  259. package/dist/unstable/cluster/ShardingConfig.d.ts.map +1 -1
  260. package/dist/unstable/cluster/ShardingRegistrationEvent.d.ts +6 -8
  261. package/dist/unstable/cluster/ShardingRegistrationEvent.d.ts.map +1 -1
  262. package/dist/unstable/cluster/SingleRunner.d.ts.map +1 -1
  263. package/dist/unstable/cluster/Singleton.d.ts.map +1 -1
  264. package/dist/unstable/cluster/SingletonAddress.d.ts.map +1 -1
  265. package/dist/unstable/cluster/Snowflake.d.ts +1 -1
  266. package/dist/unstable/cluster/Snowflake.d.ts.map +1 -1
  267. package/dist/unstable/cluster/Snowflake.js +1 -1
  268. package/dist/unstable/cluster/Snowflake.js.map +1 -1
  269. package/dist/unstable/cluster/SqlMessageStorage.d.ts.map +1 -1
  270. package/dist/unstable/cluster/SqlRunnerStorage.d.ts +1 -1
  271. package/dist/unstable/cluster/SqlRunnerStorage.d.ts.map +1 -1
  272. package/dist/unstable/cluster/internal/entityManager.js +26 -24
  273. package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
  274. package/dist/unstable/devtools/DevTools.d.ts.map +1 -1
  275. package/dist/unstable/encoding/Msgpack.d.ts.map +1 -1
  276. package/dist/unstable/encoding/Ndjson.d.ts.map +1 -1
  277. package/dist/unstable/encoding/Sse.d.ts.map +1 -1
  278. package/dist/unstable/eventlog/Event.d.ts.map +1 -1
  279. package/dist/unstable/eventlog/EventGroup.d.ts.map +1 -1
  280. package/dist/unstable/eventlog/EventJournal.d.ts.map +1 -1
  281. package/dist/unstable/eventlog/EventJournal.js.map +1 -1
  282. package/dist/unstable/eventlog/EventLog.d.ts.map +1 -1
  283. package/dist/unstable/eventlog/EventLog.js +2 -2
  284. package/dist/unstable/eventlog/EventLog.js.map +1 -1
  285. package/dist/unstable/eventlog/EventLogEncryption.d.ts.map +1 -1
  286. package/dist/unstable/eventlog/EventLogMessage.d.ts.map +1 -1
  287. package/dist/unstable/eventlog/EventLogRemote.d.ts +21 -21
  288. package/dist/unstable/eventlog/EventLogServer.d.ts.map +1 -1
  289. package/dist/unstable/eventlog/EventLogServerEncrypted.d.ts +1 -1
  290. package/dist/unstable/eventlog/EventLogServerUnencrypted.d.ts +3 -4
  291. package/dist/unstable/eventlog/EventLogServerUnencrypted.d.ts.map +1 -1
  292. package/dist/unstable/eventlog/EventLogSessionAuth.d.ts.map +1 -1
  293. package/dist/unstable/eventlog/SqlEventJournal.d.ts.map +1 -1
  294. package/dist/unstable/eventlog/SqlEventLogServerEncrypted.d.ts.map +1 -1
  295. package/dist/unstable/eventlog/SqlEventLogServerUnencrypted.d.ts.map +1 -1
  296. package/dist/unstable/http/Cookies.d.ts +1 -1
  297. package/dist/unstable/http/Cookies.d.ts.map +1 -1
  298. package/dist/unstable/http/Etag.d.ts.map +1 -1
  299. package/dist/unstable/http/Headers.d.ts.map +1 -1
  300. package/dist/unstable/http/HttpBody.d.ts.map +1 -1
  301. package/dist/unstable/http/HttpClient.d.ts.map +1 -1
  302. package/dist/unstable/http/HttpClientError.d.ts +1 -1
  303. package/dist/unstable/http/HttpClientError.d.ts.map +1 -1
  304. package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
  305. package/dist/unstable/http/HttpClientResponse.d.ts.map +1 -1
  306. package/dist/unstable/http/HttpEffect.d.ts.map +1 -1
  307. package/dist/unstable/http/HttpIncomingMessage.d.ts.map +1 -1
  308. package/dist/unstable/http/HttpMethod.d.ts.map +1 -1
  309. package/dist/unstable/http/HttpMiddleware.d.ts +1 -1
  310. package/dist/unstable/http/HttpMiddleware.d.ts.map +1 -1
  311. package/dist/unstable/http/HttpRouter.d.ts.map +1 -1
  312. package/dist/unstable/http/HttpServer.d.ts.map +1 -1
  313. package/dist/unstable/http/HttpServerError.d.ts +1 -1
  314. package/dist/unstable/http/HttpServerError.d.ts.map +1 -1
  315. package/dist/unstable/http/HttpServerRequest.d.ts +2 -2
  316. package/dist/unstable/http/HttpServerRequest.d.ts.map +1 -1
  317. package/dist/unstable/http/HttpServerRespondable.d.ts.map +1 -1
  318. package/dist/unstable/http/HttpServerResponse.d.ts.map +1 -1
  319. package/dist/unstable/http/HttpStaticServer.d.ts.map +1 -1
  320. package/dist/unstable/http/HttpTraceContext.d.ts.map +1 -1
  321. package/dist/unstable/http/Multipart.d.ts +2 -1
  322. package/dist/unstable/http/Multipart.d.ts.map +1 -1
  323. package/dist/unstable/http/Url.d.ts.map +1 -1
  324. package/dist/unstable/http/UrlParams.d.ts.map +1 -1
  325. package/dist/unstable/httpapi/HttpApi.d.ts +36 -15
  326. package/dist/unstable/httpapi/HttpApi.d.ts.map +1 -1
  327. package/dist/unstable/httpapi/HttpApi.js +19 -20
  328. package/dist/unstable/httpapi/HttpApi.js.map +1 -1
  329. package/dist/unstable/httpapi/HttpApiBuilder.d.ts +51 -62
  330. package/dist/unstable/httpapi/HttpApiBuilder.d.ts.map +1 -1
  331. package/dist/unstable/httpapi/HttpApiBuilder.js +68 -58
  332. package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
  333. package/dist/unstable/httpapi/HttpApiClient.d.ts +53 -53
  334. package/dist/unstable/httpapi/HttpApiClient.d.ts.map +1 -1
  335. package/dist/unstable/httpapi/HttpApiClient.js +40 -30
  336. package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
  337. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +171 -170
  338. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts.map +1 -1
  339. package/dist/unstable/httpapi/HttpApiEndpoint.js +31 -19
  340. package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
  341. package/dist/unstable/httpapi/HttpApiError.d.ts +23 -1
  342. package/dist/unstable/httpapi/HttpApiError.d.ts.map +1 -1
  343. package/dist/unstable/httpapi/HttpApiError.js +31 -0
  344. package/dist/unstable/httpapi/HttpApiError.js.map +1 -1
  345. package/dist/unstable/httpapi/HttpApiGroup.d.ts +55 -30
  346. package/dist/unstable/httpapi/HttpApiGroup.d.ts.map +1 -1
  347. package/dist/unstable/httpapi/HttpApiGroup.js +22 -29
  348. package/dist/unstable/httpapi/HttpApiGroup.js.map +1 -1
  349. package/dist/unstable/httpapi/HttpApiMiddleware.d.ts +8 -8
  350. package/dist/unstable/httpapi/HttpApiMiddleware.d.ts.map +1 -1
  351. package/dist/unstable/httpapi/HttpApiMiddleware.js.map +1 -1
  352. package/dist/unstable/httpapi/HttpApiScalar.d.ts +2 -2
  353. package/dist/unstable/httpapi/HttpApiScalar.d.ts.map +1 -1
  354. package/dist/unstable/httpapi/HttpApiScalar.js +4 -3
  355. package/dist/unstable/httpapi/HttpApiScalar.js.map +1 -1
  356. package/dist/unstable/httpapi/HttpApiSchema.d.ts +8 -0
  357. package/dist/unstable/httpapi/HttpApiSchema.d.ts.map +1 -1
  358. package/dist/unstable/httpapi/HttpApiSchema.js.map +1 -1
  359. package/dist/unstable/httpapi/HttpApiSecurity.d.ts.map +1 -1
  360. package/dist/unstable/httpapi/HttpApiSwagger.d.ts +1 -1
  361. package/dist/unstable/httpapi/HttpApiSwagger.d.ts.map +1 -1
  362. package/dist/unstable/httpapi/HttpApiSwagger.js.map +1 -1
  363. package/dist/unstable/httpapi/HttpApiTest.d.ts +4 -4
  364. package/dist/unstable/httpapi/HttpApiTest.d.ts.map +1 -1
  365. package/dist/unstable/httpapi/HttpApiTest.js +9 -8
  366. package/dist/unstable/httpapi/HttpApiTest.js.map +1 -1
  367. package/dist/unstable/httpapi/OpenApi.d.ts +1 -1
  368. package/dist/unstable/httpapi/OpenApi.d.ts.map +1 -1
  369. package/dist/unstable/httpapi/OpenApi.js +77 -37
  370. package/dist/unstable/httpapi/OpenApi.js.map +1 -1
  371. package/dist/unstable/httpapi/internal/html.js +6 -2
  372. package/dist/unstable/httpapi/internal/html.js.map +1 -1
  373. package/dist/unstable/httpapi/internal/mediaType.d.ts +2 -0
  374. package/dist/unstable/httpapi/internal/mediaType.d.ts.map +1 -0
  375. package/dist/unstable/httpapi/internal/mediaType.js +7 -0
  376. package/dist/unstable/httpapi/internal/mediaType.js.map +1 -0
  377. package/dist/unstable/observability/Otlp.d.ts.map +1 -1
  378. package/dist/unstable/observability/OtlpExporter.js +3 -1
  379. package/dist/unstable/observability/OtlpExporter.js.map +1 -1
  380. package/dist/unstable/observability/OtlpLogger.d.ts.map +1 -1
  381. package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
  382. package/dist/unstable/observability/OtlpResource.d.ts.map +1 -1
  383. package/dist/unstable/observability/OtlpTracer.d.ts.map +1 -1
  384. package/dist/unstable/observability/PrometheusMetrics.d.ts.map +1 -1
  385. package/dist/unstable/observability/internal/otlpEnv.d.ts.map +1 -1
  386. package/dist/unstable/persistence/KeyValueStore.d.ts.map +1 -1
  387. package/dist/unstable/persistence/KeyValueStore.js.map +1 -1
  388. package/dist/unstable/persistence/Persistable.d.ts.map +1 -1
  389. package/dist/unstable/persistence/PersistedQueue.d.ts +1 -1
  390. package/dist/unstable/persistence/PersistedQueue.d.ts.map +1 -1
  391. package/dist/unstable/persistence/PersistedQueue.js +16 -12
  392. package/dist/unstable/persistence/PersistedQueue.js.map +1 -1
  393. package/dist/unstable/persistence/Persistence.d.ts.map +1 -1
  394. package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
  395. package/dist/unstable/persistence/Redis.d.ts.map +1 -1
  396. package/dist/unstable/process/ChildProcess.d.ts.map +1 -1
  397. package/dist/unstable/process/ChildProcess.js.map +1 -1
  398. package/dist/unstable/process/ChildProcessSpawner.d.ts.map +1 -1
  399. package/dist/unstable/reactivity/AsyncResult.d.ts +2 -2
  400. package/dist/unstable/reactivity/AsyncResult.d.ts.map +1 -1
  401. package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
  402. package/dist/unstable/reactivity/Atom.js +1 -1
  403. package/dist/unstable/reactivity/Atom.js.map +1 -1
  404. package/dist/unstable/reactivity/AtomHttpApi.d.ts +7 -7
  405. package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
  406. package/dist/unstable/reactivity/AtomHttpApi.js +3 -2
  407. package/dist/unstable/reactivity/AtomHttpApi.js.map +1 -1
  408. package/dist/unstable/reactivity/AtomRef.d.ts.map +1 -1
  409. package/dist/unstable/reactivity/AtomRegistry.d.ts +2 -2
  410. package/dist/unstable/reactivity/AtomRegistry.d.ts.map +1 -1
  411. package/dist/unstable/reactivity/AtomRegistry.js +28 -37
  412. package/dist/unstable/reactivity/AtomRegistry.js.map +1 -1
  413. package/dist/unstable/reactivity/AtomRpc.d.ts.map +1 -1
  414. package/dist/unstable/reactivity/Hydration.d.ts.map +1 -1
  415. package/dist/unstable/reactivity/Reactivity.d.ts.map +1 -1
  416. package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
  417. package/dist/unstable/rpc/RpcClient.d.ts +2 -1
  418. package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
  419. package/dist/unstable/rpc/RpcClient.js +5 -5
  420. package/dist/unstable/rpc/RpcClient.js.map +1 -1
  421. package/dist/unstable/rpc/RpcGroup.d.ts.map +1 -1
  422. package/dist/unstable/rpc/RpcMessage.d.ts +7 -7
  423. package/dist/unstable/rpc/RpcMessage.d.ts.map +1 -1
  424. package/dist/unstable/rpc/RpcMessage.js +2 -2
  425. package/dist/unstable/rpc/RpcMessage.js.map +1 -1
  426. package/dist/unstable/rpc/RpcMiddleware.d.ts.map +1 -1
  427. package/dist/unstable/rpc/RpcSchema.d.ts +1 -1
  428. package/dist/unstable/rpc/RpcSerialization.d.ts.map +1 -1
  429. package/dist/unstable/rpc/RpcSerialization.js +8 -8
  430. package/dist/unstable/rpc/RpcSerialization.js.map +1 -1
  431. package/dist/unstable/rpc/RpcServer.d.ts +5 -3
  432. package/dist/unstable/rpc/RpcServer.d.ts.map +1 -1
  433. package/dist/unstable/rpc/RpcServer.js +11 -8
  434. package/dist/unstable/rpc/RpcServer.js.map +1 -1
  435. package/dist/unstable/rpc/RpcWorker.d.ts.map +1 -1
  436. package/dist/unstable/rpc/Utils.d.ts.map +1 -1
  437. package/dist/unstable/schema/Model.d.ts +24 -38
  438. package/dist/unstable/schema/Model.d.ts.map +1 -1
  439. package/dist/unstable/schema/VariantSchema.d.ts +1 -1
  440. package/dist/unstable/schema/VariantSchema.d.ts.map +1 -1
  441. package/dist/unstable/socket/Socket.d.ts +1 -1
  442. package/dist/unstable/socket/Socket.d.ts.map +1 -1
  443. package/dist/unstable/socket/SocketServer.d.ts.map +1 -1
  444. package/dist/unstable/sql/Migrator.d.ts.map +1 -1
  445. package/dist/unstable/sql/SqlClient.d.ts.map +1 -1
  446. package/dist/unstable/sql/SqlError.d.ts +2 -2
  447. package/dist/unstable/sql/SqlError.d.ts.map +1 -1
  448. package/dist/unstable/sql/SqlError.js.map +1 -1
  449. package/dist/unstable/sql/SqlModel.d.ts.map +1 -1
  450. package/dist/unstable/sql/SqlResolver.d.ts.map +1 -1
  451. package/dist/unstable/sql/SqlSchema.d.ts.map +1 -1
  452. package/dist/unstable/sql/SqlStream.d.ts.map +1 -1
  453. package/dist/unstable/sql/Statement.d.ts.map +1 -1
  454. package/dist/unstable/workers/Transferable.d.ts.map +1 -1
  455. package/dist/unstable/workers/Worker.d.ts.map +1 -1
  456. package/dist/unstable/workers/WorkerError.d.ts.map +1 -1
  457. package/dist/unstable/workflow/Activity.d.ts +1 -1
  458. package/dist/unstable/workflow/Activity.d.ts.map +1 -1
  459. package/dist/unstable/workflow/Activity.js +1 -1
  460. package/dist/unstable/workflow/Activity.js.map +1 -1
  461. package/dist/unstable/workflow/DurableClock.d.ts.map +1 -1
  462. package/dist/unstable/workflow/DurableDeferred.d.ts.map +1 -1
  463. package/dist/unstable/workflow/DurableDeferred.js +1 -1
  464. package/dist/unstable/workflow/DurableDeferred.js.map +1 -1
  465. package/dist/unstable/workflow/DurableQueue.d.ts.map +1 -1
  466. package/dist/unstable/workflow/DurableQueue.js +1 -1
  467. package/dist/unstable/workflow/DurableQueue.js.map +1 -1
  468. package/dist/unstable/workflow/Workflow.d.ts.map +1 -1
  469. package/dist/unstable/workflow/WorkflowEngine.d.ts.map +1 -1
  470. package/dist/unstable/workflow/WorkflowEngine.js +1 -1
  471. package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
  472. package/dist/unstable/workflow/WorkflowProxy.d.ts.map +1 -1
  473. package/dist/unstable/workflow/WorkflowProxyServer.d.ts +1 -1
  474. package/dist/unstable/workflow/WorkflowProxyServer.d.ts.map +1 -1
  475. package/dist/unstable/workflow/WorkflowProxyServer.js +1 -2
  476. package/dist/unstable/workflow/WorkflowProxyServer.js.map +1 -1
  477. package/package.json +11 -12
  478. package/src/ConfigProvider.ts +79 -27
  479. package/src/Cron.ts +109 -57
  480. package/src/LayerRef.ts +4 -6
  481. package/src/Number.ts +29 -10
  482. package/src/Schedule.ts +1437 -4445
  483. package/src/Schema.ts +95 -34
  484. package/src/SchemaAST.ts +25 -13
  485. package/src/SchemaError.ts +64 -0
  486. package/src/SchemaGetter.ts +22 -16
  487. package/src/SchemaRepresentation.ts +165 -202
  488. package/src/SchemaTransformation.ts +42 -2
  489. package/src/Stream.ts +1 -1
  490. package/src/index.ts +10 -0
  491. package/src/internal/effect.ts +39 -22
  492. package/src/internal/schema/equivalence.ts +1 -2
  493. package/src/internal/schema/representation.ts +4 -4
  494. package/src/internal/schema/schema.ts +4 -37
  495. package/src/unstable/cli/CliError.ts +24 -16
  496. package/src/unstable/cli/Command.ts +8 -8
  497. package/src/unstable/cli/GlobalFlag.ts +22 -33
  498. package/src/unstable/cluster/ClusterCron.ts +4 -3
  499. package/src/unstable/cluster/ClusterWorkflowEngine.ts +4 -3
  500. package/src/unstable/cluster/EntityProxyServer.ts +15 -17
  501. package/src/unstable/cluster/Sharding.ts +4 -4
  502. package/src/unstable/cluster/Snowflake.ts +2 -2
  503. package/src/unstable/cluster/internal/entityManager.ts +61 -47
  504. package/src/unstable/eventlog/EventLog.ts +4 -3
  505. package/src/unstable/httpapi/HttpApi.ts +72 -47
  506. package/src/unstable/httpapi/HttpApiBuilder.ts +320 -217
  507. package/src/unstable/httpapi/HttpApiClient.ts +196 -151
  508. package/src/unstable/httpapi/HttpApiEndpoint.ts +251 -447
  509. package/src/unstable/httpapi/HttpApiError.ts +33 -0
  510. package/src/unstable/httpapi/HttpApiGroup.ts +95 -74
  511. package/src/unstable/httpapi/HttpApiMiddleware.ts +10 -7
  512. package/src/unstable/httpapi/HttpApiScalar.ts +15 -12
  513. package/src/unstable/httpapi/HttpApiSchema.ts +8 -0
  514. package/src/unstable/httpapi/HttpApiSwagger.ts +2 -2
  515. package/src/unstable/httpapi/HttpApiTest.ts +15 -14
  516. package/src/unstable/httpapi/OpenApi.ts +74 -36
  517. package/src/unstable/httpapi/internal/html.ts +9 -2
  518. package/src/unstable/httpapi/internal/mediaType.ts +6 -0
  519. package/src/unstable/observability/OtlpExporter.ts +1 -1
  520. package/src/unstable/persistence/PersistedQueue.ts +16 -14
  521. package/src/unstable/reactivity/Atom.ts +1 -1
  522. package/src/unstable/reactivity/AtomHttpApi.ts +164 -162
  523. package/src/unstable/reactivity/AtomRegistry.ts +35 -44
  524. package/src/unstable/rpc/RpcClient.ts +10 -9
  525. package/src/unstable/rpc/RpcMessage.ts +8 -9
  526. package/src/unstable/rpc/RpcSerialization.ts +16 -16
  527. package/src/unstable/rpc/RpcServer.ts +15 -9
  528. package/src/unstable/workflow/Activity.ts +6 -5
  529. package/src/unstable/workflow/DurableDeferred.ts +1 -1
  530. package/src/unstable/workflow/DurableQueue.ts +4 -3
  531. package/src/unstable/workflow/WorkflowEngine.ts +4 -3
  532. package/src/unstable/workflow/WorkflowProxyServer.ts +11 -12
@@ -18,6 +18,7 @@ import { collectBrands } from "./internal/schema/annotations.ts"
18
18
  import * as InternalRepresentation from "./internal/schema/representation.ts"
19
19
  import { unescapeToken } from "./JsonPointer.ts"
20
20
  import type * as JsonSchema from "./JsonSchema.ts"
21
+ import { remainder } from "./Number.ts"
21
22
  import * as Option from "./Option.ts"
22
23
  import * as Predicate from "./Predicate.ts"
23
24
  import * as Rec from "./Record.ts"
@@ -3038,63 +3039,37 @@ export function fromJsonSchemaDocument(document: JsonSchema.Document<"draft-2020
3038
3039
  export function fromJsonSchemaMultiDocument(document: JsonSchema.MultiDocument<"draft-2020-12">, options?: {
3039
3040
  readonly onEnter?: ((js: JsonSchema.JsonSchema) => JsonSchema.JsonSchema) | undefined
3040
3041
  }): MultiDocument {
3041
- let visited: Set<string>
3042
+ let definitionIdentifier: string | undefined
3042
3043
  const references: Record<string, Representation> = {}
3043
3044
 
3044
- type Slot = {
3045
- // 0 = not started, 1 = building, 2 = done
3046
- state: 0 | 1 | 2
3047
- value: Exclude<Representation, { _tag: "Reference" }> | undefined
3048
- }
3045
+ type ResolvedReference = Exclude<Representation, { _tag: "Reference" }>
3046
+ const resolvedReferences = new Map<string, ResolvedReference | null>()
3049
3047
 
3050
- const slots = new Map<string, Slot>()
3051
-
3052
- function getSlot(identifier: string): Slot {
3053
- const existing = slots.get(identifier)
3054
- if (existing) return existing
3055
-
3056
- // Create the slot *before* resolving, so self-references can see it.
3057
- const slot: Slot = {
3058
- state: 0,
3059
- value: undefined
3060
- }
3061
- slots.set(identifier, slot)
3062
- return slot
3063
- }
3064
-
3065
- function resolveReference($ref: string): Exclude<Representation, { _tag: "Reference" }> {
3048
+ function resolveReference($ref: string): ResolvedReference {
3066
3049
  const definition = document.definitions[$ref]
3067
3050
  if (definition === undefined) {
3068
3051
  throw new Error(`Reference ${$ref} not found`)
3069
3052
  }
3070
3053
 
3071
- const slot = getSlot($ref)
3072
-
3073
- if (slot.state === 2) {
3074
- // Already built: return the built schema directly
3075
- return slot.value!
3076
- }
3077
-
3078
- if (slot.state === 1) {
3079
- // Circular: we're currently building this identifier.
3054
+ const resolved = resolvedReferences.get($ref)
3055
+ if (resolved === null) {
3080
3056
  throw new Error(`Circular reference detected: ${$ref}`)
3081
3057
  }
3058
+ if (resolved !== undefined) return resolved
3082
3059
 
3083
- // First time: build it.
3084
- slot.state = 1
3060
+ resolvedReferences.set($ref, null)
3085
3061
  const value = recur(definition)
3086
-
3087
- slot.value = value._tag === "Reference" ? resolveReference(value.$ref) : value
3088
- slot.state = 2
3089
- return slot.value
3062
+ const out = value._tag === "Reference" ? resolveReference(value.$ref) : value
3063
+ resolvedReferences.set($ref, out)
3064
+ return out
3090
3065
  }
3091
3066
 
3092
- Object.entries(document.definitions).forEach(([identifier, definition]) => {
3093
- visited = new Set<string>([identifier])
3067
+ for (const [identifier, definition] of Object.entries(document.definitions)) {
3068
+ definitionIdentifier = identifier
3094
3069
  references[identifier] = unknownToJson(recur(definition))
3095
- })
3070
+ }
3096
3071
 
3097
- visited = new Set<string>()
3072
+ definitionIdentifier = undefined
3098
3073
  const representations = Arr.map(document.schemas, (schema) => unknownToJson(recur(schema)))
3099
3074
  return {
3100
3075
  representations,
@@ -3143,7 +3118,7 @@ export function fromJsonSchemaMultiDocument(document: JsonSchema.MultiDocument<"
3143
3118
  const $ref = js.$ref.slice(2).split("/").at(-1)
3144
3119
  if ($ref !== undefined) {
3145
3120
  const reference: Reference = { _tag: "Reference", $ref: unescapeToken($ref) }
3146
- if (visited.has($ref)) {
3121
+ if (definitionIdentifier === $ref) {
3147
3122
  return { _tag: "Suspend", thunk: reference, checks: [] }
3148
3123
  } else {
3149
3124
  return reference
@@ -3250,168 +3225,159 @@ export function fromJsonSchemaMultiDocument(document: JsonSchema.MultiDocument<"
3250
3225
  return combine(resolveReference(a.$ref), b)
3251
3226
  case "Never":
3252
3227
  return a
3253
- case "Unknown":
3254
- switch (b._tag) {
3255
- case "Reference":
3256
- return combine(a, resolveReference(b.$ref))
3257
- default:
3258
- return { ...b, ...combineAnnotations(a.annotations, b.annotations) }
3259
- }
3228
+ case "Unknown": {
3229
+ const resolved = b._tag === "Reference" ? resolveReference(b.$ref) : b
3230
+ return { ...resolved, ...combineAnnotations(a.annotations, resolved.annotations) }
3231
+ }
3260
3232
  case "Null":
3261
- switch (b._tag) {
3262
- case "Unknown":
3263
- case "Null":
3264
- return { ...a, ...combineAnnotations(a.annotations, b.annotations) }
3265
- case "Union":
3266
- return combine(b, a)
3267
- case "Reference":
3268
- return combine(a, resolveReference(b.$ref))
3269
- default:
3270
- return never
3271
- }
3272
3233
  case "String":
3273
- switch (b._tag) {
3274
- case "Unknown":
3275
- return { ...a, ...combineAnnotations(a.annotations, b.annotations) }
3276
- case "String": {
3277
- const checks = combineChecks(a.checks, b.checks, b.annotations)
3278
- return {
3279
- _tag: "String",
3280
- checks: checks ?? a.checks,
3281
- ...combineAnnotations(a.annotations, checks ? undefined : b.annotations)
3282
- }
3283
- }
3284
- case "Literal":
3285
- return typeof b.literal === "string" ? { ...b, ...combineAnnotations(a.annotations, b.annotations) } : never
3286
- case "Union":
3287
- return combine(b, a)
3288
- case "Reference":
3289
- return combine(a, resolveReference(b.$ref))
3290
- default:
3291
- return never
3292
- }
3293
3234
  case "Number":
3294
- switch (b._tag) {
3295
- case "Unknown":
3296
- return { ...a, ...combineAnnotations(a.annotations, b.annotations) }
3297
- case "Number": {
3298
- const checks = combineNumberChecks(a.checks, b.checks, b.annotations)
3299
- return {
3300
- _tag: "Number",
3301
- checks: checks ?? a.checks,
3302
- ...combineAnnotations(a.annotations, checks ? undefined : b.annotations)
3303
- }
3304
- }
3305
- case "Literal":
3306
- return typeof b.literal === "number" ? { ...b, ...combineAnnotations(a.annotations, b.annotations) } : never
3307
- case "Union":
3308
- return combine(b, a)
3309
- case "Reference":
3310
- return combine(a, resolveReference(b.$ref))
3311
- default:
3312
- return never
3235
+ case "Boolean":
3236
+ case "Literal":
3237
+ case "Arrays":
3238
+ case "Objects":
3239
+ case "Union":
3240
+ break
3241
+ }
3242
+
3243
+ if (b._tag === "Reference") {
3244
+ return combine(a, resolveReference(b.$ref))
3245
+ }
3246
+ if (b._tag === "Unknown") {
3247
+ return { ...a, ...combineAnnotations(a.annotations, b.annotations) }
3248
+ }
3249
+ if (a._tag === "Union") {
3250
+ const types = a.types.map((s) => combine(s, b)).filter((s) => s !== never)
3251
+ if (types.length === 0) return never
3252
+ return {
3253
+ _tag: "Union",
3254
+ types,
3255
+ mode: a.mode,
3256
+ ...makeAnnotations(a.annotations)
3257
+ }
3258
+ }
3259
+ if (b._tag === "Union") {
3260
+ return combine(b, a)
3261
+ }
3262
+
3263
+ switch (a._tag) {
3264
+ case "Null":
3265
+ return b._tag === "Null" ? { ...a, ...combineAnnotations(a.annotations, b.annotations) } : never
3266
+ case "String": {
3267
+ if (b._tag === "Literal") {
3268
+ return satisfiesLiteral(a, b) ? { ...b, ...combineAnnotations(a.annotations, b.annotations) } : never
3269
+ }
3270
+ if (b._tag !== "String") return never
3271
+ const checks = combineChecks(a.checks, b.checks, b.annotations)
3272
+ return {
3273
+ _tag: "String",
3274
+ checks: checks ?? a.checks,
3275
+ ...combineAnnotations(a.annotations, checks ? undefined : b.annotations)
3276
+ }
3277
+ }
3278
+ case "Number": {
3279
+ if (b._tag === "Literal") {
3280
+ return satisfiesLiteral(a, b) ? { ...b, ...combineAnnotations(a.annotations, b.annotations) } : never
3281
+ }
3282
+ if (b._tag !== "Number") return never
3283
+ const checks = combineNumberChecks(a.checks, b.checks, b.annotations)
3284
+ return {
3285
+ _tag: "Number",
3286
+ checks: checks ?? a.checks,
3287
+ ...combineAnnotations(a.annotations, checks ? undefined : b.annotations)
3313
3288
  }
3289
+ }
3314
3290
  case "Boolean":
3315
- switch (b._tag) {
3316
- case "Unknown":
3317
- return { ...a, ...combineAnnotations(a.annotations, b.annotations) }
3318
- case "Boolean":
3319
- return { _tag: "Boolean", ...combineAnnotations(a.annotations, b.annotations) }
3320
- case "Literal":
3321
- return typeof b.literal === "boolean"
3322
- ? { ...b, ...combineAnnotations(a.annotations, b.annotations) }
3323
- : never
3324
- case "Union":
3325
- return combine(b, a)
3326
- case "Reference":
3327
- return combine(a, resolveReference(b.$ref))
3328
- default:
3329
- return never
3291
+ if (b._tag === "Boolean") {
3292
+ return { _tag: "Boolean", ...combineAnnotations(a.annotations, b.annotations) }
3330
3293
  }
3294
+ return b._tag === "Literal" && typeof b.literal === "boolean"
3295
+ ? { ...b, ...combineAnnotations(a.annotations, b.annotations) }
3296
+ : never
3331
3297
  case "Literal":
3332
3298
  switch (b._tag) {
3333
- case "Unknown":
3334
- return { ...a, ...combineAnnotations(a.annotations, b.annotations) }
3335
3299
  case "Literal":
3336
3300
  return a.literal === b.literal
3337
3301
  ? { ...a, ...combineAnnotations(a.annotations, b.annotations) }
3338
3302
  : never
3339
3303
  case "String":
3340
- return typeof a.literal === "string" ? { ...a, ...combineAnnotations(a.annotations, b.annotations) } : never
3341
3304
  case "Number":
3342
- return typeof a.literal === "number" ? { ...a, ...combineAnnotations(a.annotations, b.annotations) } : never
3305
+ return satisfiesLiteral(b, a) ? { ...a, ...combineAnnotations(a.annotations, b.annotations) } : never
3343
3306
  case "Boolean":
3344
3307
  return typeof a.literal === "boolean"
3345
3308
  ? { ...a, ...combineAnnotations(a.annotations, b.annotations) }
3346
3309
  : never
3347
- case "Union":
3348
- return combine(b, a)
3349
- case "Reference":
3350
- return combine(a, resolveReference(b.$ref))
3351
3310
  default:
3352
3311
  return never
3353
3312
  }
3354
- case "Arrays":
3355
- switch (b._tag) {
3356
- case "Unknown":
3357
- return { ...a, ...combineAnnotations(a.annotations, b.annotations) }
3358
- case "Arrays": {
3359
- const checks = combineArraysChecks(a.checks, b.checks, b.annotations)
3360
- return {
3361
- _tag: "Arrays",
3362
- elements: combineElements(a.elements, b.elements),
3363
- rest: combineRest(a.rest, b.rest),
3364
- checks: checks ?? a.checks,
3365
- ...combineAnnotations(a.annotations, checks ? undefined : b.annotations)
3366
- }
3367
- }
3368
- case "Union":
3369
- return combine(b, a)
3370
- case "Reference":
3371
- return combine(a, resolveReference(b.$ref))
3372
- default:
3373
- return never
3374
- }
3375
- case "Objects":
3376
- switch (b._tag) {
3377
- case "Unknown":
3378
- return { ...a, ...combineAnnotations(a.annotations, b.annotations) }
3379
- case "Objects": {
3380
- const checks = combineChecks(a.checks, b.checks, b.annotations)
3381
- return {
3382
- _tag: "Objects",
3383
- propertySignatures: combinePropertySignatures(a.propertySignatures, b.propertySignatures),
3384
- indexSignatures: combineIndexSignatures(a.indexSignatures, b.indexSignatures),
3385
- checks: checks ?? a.checks,
3386
- ...combineAnnotations(a.annotations, checks ? undefined : b.annotations)
3387
- }
3388
- }
3389
- case "Union":
3390
- return combine(b, a)
3391
- case "Reference":
3392
- return combine(a, resolveReference(b.$ref))
3393
- default:
3394
- return never
3313
+ case "Arrays": {
3314
+ if (b._tag !== "Arrays") return never
3315
+ const arrays = combineArrays(a, b)
3316
+ if (arrays === undefined) return never
3317
+ const checks = combineArraysChecks(a.checks, b.checks, b.annotations)
3318
+ return {
3319
+ _tag: "Arrays",
3320
+ elements: arrays.elements,
3321
+ rest: arrays.rest,
3322
+ checks: checks ?? a.checks,
3323
+ ...combineAnnotations(a.annotations, checks ? undefined : b.annotations)
3395
3324
  }
3396
- case "Union": {
3397
- switch (b._tag) {
3398
- case "Unknown":
3399
- return { ...a, ...combineAnnotations(a.annotations, b.annotations) }
3400
- default: {
3401
- const types = a.types.map((s) => combine(s, b)).filter((s) => s !== never)
3402
- if (types.length === 0) return never
3403
- return {
3404
- _tag: "Union",
3405
- types,
3406
- mode: a.mode,
3407
- ...makeAnnotations(a.annotations)
3408
- }
3409
- }
3325
+ }
3326
+ case "Objects": {
3327
+ if (b._tag !== "Objects") return never
3328
+ const checks = combineChecks(a.checks, b.checks, b.annotations)
3329
+ return {
3330
+ _tag: "Objects",
3331
+ propertySignatures: combinePropertySignatures(a.propertySignatures, b.propertySignatures),
3332
+ indexSignatures: combineIndexSignatures(a.indexSignatures, b.indexSignatures),
3333
+ checks: checks ?? a.checks,
3334
+ ...combineAnnotations(a.annotations, checks ? undefined : b.annotations)
3410
3335
  }
3411
3336
  }
3337
+ default:
3338
+ return never
3339
+ }
3340
+ }
3341
+
3342
+ function satisfiesPrimitiveCheck(check: Check<Meta>, value: unknown): boolean {
3343
+ if (check._tag === "FilterGroup") {
3344
+ return check.checks.every((check) => satisfiesPrimitiveCheck(check, value))
3345
+ }
3346
+ const meta = check.meta
3347
+ switch (meta._tag) {
3348
+ case "isMinLength":
3349
+ return typeof value === "string" && value.length >= meta.minLength
3350
+ case "isMaxLength":
3351
+ return typeof value === "string" && value.length <= meta.maxLength
3352
+ case "isPattern":
3353
+ return typeof value === "string" && meta.regExp.test(value)
3354
+ case "isFinite":
3355
+ return typeof value === "number" && globalThis.Number.isFinite(value)
3356
+ case "isInt":
3357
+ return typeof value === "number" && globalThis.Number.isSafeInteger(value)
3358
+ case "isMultipleOf":
3359
+ return typeof value === "number" && remainder(value, meta.divisor) === 0
3360
+ case "isGreaterThan":
3361
+ return typeof value === "number" && value > meta.exclusiveMinimum
3362
+ case "isGreaterThanOrEqualTo":
3363
+ return typeof value === "number" && value >= meta.minimum
3364
+ case "isLessThan":
3365
+ return typeof value === "number" && value < meta.exclusiveMaximum
3366
+ case "isLessThanOrEqualTo":
3367
+ return typeof value === "number" && value <= meta.maximum
3368
+ default:
3369
+ return false
3412
3370
  }
3413
3371
  }
3414
3372
 
3373
+ function satisfiesLiteral(type: String | Number, literal: Literal): boolean {
3374
+ const value = literal.literal
3375
+ if (type._tag === "String" ? typeof value !== "string" : typeof value !== "number") {
3376
+ return false
3377
+ }
3378
+ return type.checks.every((check) => satisfiesPrimitiveCheck(check, value))
3379
+ }
3380
+
3415
3381
  function collectProperties(js: JsonSchema.JsonSchema): Array<PropertySignature> {
3416
3382
  const properties: Record<string, unknown> = Predicate.isObject(js.properties) ? js.properties : {}
3417
3383
  const required = Array.isArray(js.required) ? js.required : []
@@ -3446,35 +3412,32 @@ export function fromJsonSchemaMultiDocument(document: JsonSchema.MultiDocument<"
3446
3412
  return out
3447
3413
  }
3448
3414
 
3449
- function combineElements(a: ReadonlyArray<Element>, b: ReadonlyArray<Element>): Array<Element> {
3450
- const len = Math.max(a.length, b.length)
3451
- let out: Array<Element> = []
3415
+ function combineArrays(a: Arrays, b: Arrays): Pick<Arrays, "elements" | "rest"> | undefined {
3416
+ const elements: Array<Element> = []
3417
+ const len = Math.max(a.elements.length, b.elements.length)
3452
3418
  for (let i = 0; i < len; i++) {
3453
- out.push({
3454
- isOptional: a[i].isOptional && b[i].isOptional,
3455
- type: combine(a[i].type, b[i].type)
3456
- })
3457
- }
3458
- if (a.length > len) {
3459
- out = [...out, ...a.slice(len)]
3460
- } else if (b.length > len) {
3461
- out = [...out, ...b.slice(len)]
3419
+ const ae = a.elements[i]
3420
+ const be = b.elements[i]
3421
+ const isOptional = ae?.isOptional !== false && be?.isOptional !== false
3422
+ const at = ae?.type ?? a.rest[0]
3423
+ const bt = be?.type ?? b.rest[0]
3424
+ if (at === undefined || bt === undefined) {
3425
+ return isOptional ? { elements, rest: [] } : undefined
3426
+ }
3427
+ const type = combine(at, bt)
3428
+ if (type === never) {
3429
+ return isOptional ? { elements, rest: [] } : undefined
3430
+ }
3431
+ elements.push({ isOptional, type })
3462
3432
  }
3463
- return out
3464
- }
3465
3433
 
3466
- function combineRest(a: ReadonlyArray<Representation>, b: ReadonlyArray<Representation>): Array<Representation> {
3467
- const len = Math.max(a.length, b.length)
3468
- let out: Array<Representation> = []
3469
- for (let i = 0; i < len; i++) {
3470
- out.push(combine(a[i], b[i]))
3434
+ const ar = a.rest[0]
3435
+ const br = b.rest[0]
3436
+ if (ar === undefined || br === undefined) {
3437
+ return { elements, rest: [] }
3471
3438
  }
3472
- if (a.length > len) {
3473
- out = [...out, ...a.slice(len)]
3474
- } else if (b.length > len) {
3475
- out = [...out, ...b.slice(len)]
3476
- }
3477
- return out
3439
+ const rest = combine(ar, br)
3440
+ return { elements, rest: rest === never ? [] : [rest] }
3478
3441
  }
3479
3442
 
3480
3443
  function combinePropertySignatures(
@@ -871,7 +871,7 @@ export const bigintFromString = new Transformation(
871
871
  * )
872
872
  * ```
873
873
  *
874
- * @see {@link numberFromString}
874
+ * @see {@link dateFromMillis}
875
875
  * @see {@link dateTimeUtcFromString}
876
876
  *
877
877
  * @category Coercions
@@ -882,6 +882,46 @@ export const dateFromString: Transformation<globalThis.Date, string> = new Trans
882
882
  SchemaGetter.transform(formatDate)
883
883
  )
884
884
 
885
+ /**
886
+ * Decodes epoch milliseconds into a `Date` and encodes a `Date` back to epoch
887
+ * milliseconds.
888
+ *
889
+ * **When to use**
890
+ *
891
+ * Use when you need a schema transformation for numeric timestamps represented
892
+ * as milliseconds since the Unix epoch.
893
+ *
894
+ * **Details**
895
+ *
896
+ * Decoding creates a `Date` from the number like `new Date(ms)`. Encoding
897
+ * returns the `Date` timestamp like `date.getTime()`.
898
+ *
899
+ * **Gotchas**
900
+ *
901
+ * This transformation does not validate date validity. `NaN`, `Infinity`, and
902
+ * `-Infinity` decode to invalid `Date` instances.
903
+ *
904
+ * **Example** (Converting milliseconds to a Date)
905
+ *
906
+ * ```ts
907
+ * import { Schema, SchemaTransformation } from "effect"
908
+ *
909
+ * const schema = Schema.Number.pipe(
910
+ * Schema.decodeTo(Schema.Date, SchemaTransformation.dateFromMillis)
911
+ * )
912
+ * ```
913
+ *
914
+ * @see {@link dateFromString}
915
+ * @see {@link SchemaGetter.dateTimeUtcFromInput}
916
+ *
917
+ * @category Coercions
918
+ * @since 4.0.0
919
+ */
920
+ export const dateFromMillis: Transformation<globalThis.Date, number> = new Transformation(
921
+ SchemaGetter.Date(),
922
+ SchemaGetter.transform((date) => date.getTime())
923
+ )
924
+
885
925
  /**
886
926
  * Decodes a `string` into a `Duration` and encodes a `Duration` back to a
887
927
  * parseable `string`.
@@ -1762,8 +1802,8 @@ export const timeZoneFromString: Transformation<DateTime.TimeZone, string> = tra
1762
1802
  * UTC, and fails with `InvalidValue` when parsing fails. Encode uses
1763
1803
  * `DateTime.formatIso`.
1764
1804
  *
1765
- * @see {@link dateTimeZonedFromString} for ISO strings that should preserve zoned date-time information
1766
1805
  * @see {@link dateFromString} for decoding into JavaScript `Date`
1806
+ * @see {@link dateTimeZonedFromString} for ISO strings that should preserve zoned date-time information
1767
1807
  *
1768
1808
  * @category transforming
1769
1809
  * @since 4.0.0
package/src/Stream.ts CHANGED
@@ -1471,7 +1471,7 @@ export const fromAsyncIterable = <A, E>(
1471
1471
  *
1472
1472
  * const program = Effect.gen(function*() {
1473
1473
  * const schedule = Schedule.spaced("50 millis").pipe(
1474
- * Schedule.both(Schedule.recurs(2))
1474
+ * Schedule.upTo({ times: 3 })
1475
1475
  * )
1476
1476
  * const stream = Stream.fromSchedule(schedule)
1477
1477
  * const values = yield* Stream.runCollect(stream)
package/src/index.ts CHANGED
@@ -296,6 +296,11 @@ export * as Layer from "./Layer.ts"
296
296
  */
297
297
  export * as LayerMap from "./LayerMap.ts"
298
298
 
299
+ /**
300
+ * @since 4.0.0
301
+ */
302
+ export * as LayerRef from "./LayerRef.ts"
303
+
299
304
  /**
300
305
  * @since 2.0.0
301
306
  */
@@ -521,6 +526,11 @@ export * as Schema from "./Schema.ts"
521
526
  */
522
527
  export * as SchemaAST from "./SchemaAST.ts"
523
528
 
529
+ /**
530
+ * @since 4.0.0
531
+ */
532
+ export * as SchemaError from "./SchemaError.ts"
533
+
524
534
  /**
525
535
  * @since 4.0.0
526
536
  */