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
package/src/Schema.ts CHANGED
@@ -40,7 +40,6 @@ import * as InternalArbitrary from "./internal/schema/arbitrary.ts"
40
40
  import * as InternalEquivalence from "./internal/schema/equivalence.ts"
41
41
  import * as InternalStandard from "./internal/schema/representation.ts"
42
42
  import * as InternalSchema from "./internal/schema/schema.ts"
43
- import { SchemaError } from "./internal/schema/schema.ts"
44
43
  import * as JsonPatch from "./JsonPatch.ts"
45
44
  import * as JsonSchema from "./JsonSchema.ts"
46
45
  import { remainder } from "./Number.ts"
@@ -54,6 +53,7 @@ import * as Redacted_ from "./Redacted.ts"
54
53
  import * as Result_ from "./Result.ts"
55
54
  import * as Scheduler from "./Scheduler.ts"
56
55
  import * as SchemaAST from "./SchemaAST.ts"
56
+ import { isSchemaError, SchemaError } from "./SchemaError.ts"
57
57
  import * as SchemaGetter from "./SchemaGetter.ts"
58
58
  import * as SchemaIssue from "./SchemaIssue.ts"
59
59
  import * as SchemaParser from "./SchemaParser.ts"
@@ -1029,6 +1029,27 @@ export interface Optic<out T, out Iso> extends Schema<T> {
1029
1029
  }
1030
1030
 
1031
1031
  export {
1032
+ /**
1033
+ * Returns `true` if `u` is a {@link SchemaError}.
1034
+ *
1035
+ * **Example** (Narrowing Schema errors in a catch block)
1036
+ *
1037
+ * ```ts
1038
+ * import { Schema } from "effect"
1039
+ *
1040
+ * try {
1041
+ * Schema.decodeUnknownSync(Schema.Number)("oops")
1042
+ * } catch (err) {
1043
+ * if (Schema.isSchemaError(err)) {
1044
+ * console.log(err._tag) // "SchemaError"
1045
+ * }
1046
+ * }
1047
+ * ```
1048
+ *
1049
+ * @category guards
1050
+ * @since 4.0.0
1051
+ */
1052
+ isSchemaError,
1032
1053
  /**
1033
1054
  * Error thrown (or returned as the error channel value) when schema decoding
1034
1055
  * or encoding fails.
@@ -1063,30 +1084,6 @@ export {
1063
1084
  SchemaError
1064
1085
  }
1065
1086
 
1066
- /**
1067
- * Returns `true` if `u` is a {@link SchemaError}.
1068
- *
1069
- * **Example** (Narrowing Schema errors in a catch block)
1070
- *
1071
- * ```ts
1072
- * import { Schema } from "effect"
1073
- *
1074
- * try {
1075
- * Schema.decodeUnknownSync(Schema.Number)("oops")
1076
- * } catch (err) {
1077
- * if (Schema.isSchemaError(err)) {
1078
- * console.log(err._tag) // "SchemaError"
1079
- * }
1080
- * }
1081
- * ```
1082
- *
1083
- * @category guards
1084
- * @since 4.0.0
1085
- */
1086
- export function isSchemaError(u: unknown): u is SchemaError {
1087
- return Predicate.hasProperty(u, InternalSchema.SchemaErrorTypeId)
1088
- }
1089
-
1090
1087
  function makeStandardResult<A>(exit: Exit_.Exit<StandardSchemaV1.Result<A>>): StandardSchemaV1.Result<A> {
1091
1088
  return Exit_.isSuccess(exit) ? exit.value : {
1092
1089
  issues: [{ message: Cause_.pretty(exit.cause) }]
@@ -1374,7 +1371,7 @@ export function decodeUnknownEffect<S extends Constraint>(schema: S, options?: S
1374
1371
  input: unknown,
1375
1372
  options?: SchemaAST.ParseOptions
1376
1373
  ): Effect.Effect<S["Type"], SchemaError, S["DecodingServices"]> => {
1377
- return InternalSchema.mapSchemaIssueEffect(parser(input, options))
1374
+ return InternalSchema.fromIssueEffect(parser(input, options))
1378
1375
  }
1379
1376
  }
1380
1377
 
@@ -1478,10 +1475,16 @@ function runSchemaErrorSync<A>(
1478
1475
  export function decodeUnknownExit<S extends ConstraintDecoder<unknown>>(schema: S, options?: SchemaAST.ParseOptions) {
1479
1476
  const parser = SchemaParser.decodeUnknownExit(schema, options)
1480
1477
  return (input: unknown, options?: SchemaAST.ParseOptions): Exit_.Exit<S["Type"], SchemaError> => {
1481
- return InternalSchema.mapSchemaIssueExit(parser(input, options))
1478
+ return fromIssueExit(parser(input, options))
1482
1479
  }
1483
1480
  }
1484
1481
 
1482
+ function fromIssueExit<A>(exit: Exit_.Exit<A, SchemaIssue.Issue>): Exit_.Exit<A, SchemaError> {
1483
+ return Exit_.isSuccess(exit)
1484
+ ? Exit_.succeed(exit.value)
1485
+ : Exit_.failCause(Cause_.map(exit.cause, (issue) => new SchemaError(issue)))
1486
+ }
1487
+
1485
1488
  /**
1486
1489
  * Decodes a typed input (the schema's `Encoded` type) against a schema
1487
1490
  * synchronously, returning an `Exit` that is either a `Success` with the decoded
@@ -1837,7 +1840,7 @@ export function encodeUnknownEffect<S extends Constraint>(schema: S, options?: S
1837
1840
  input: unknown,
1838
1841
  options?: SchemaAST.ParseOptions
1839
1842
  ): Effect.Effect<S["Encoded"], SchemaError, S["EncodingServices"]> => {
1840
- return InternalSchema.mapSchemaIssueEffect(parser(input, options))
1843
+ return InternalSchema.fromIssueEffect(parser(input, options))
1841
1844
  }
1842
1845
  }
1843
1846
 
@@ -1902,7 +1905,7 @@ export const encodeEffect: <S extends Constraint>(
1902
1905
  export function encodeUnknownExit<S extends ConstraintEncoder<unknown>>(schema: S, options?: SchemaAST.ParseOptions) {
1903
1906
  const parser = SchemaParser.encodeUnknownExit(schema, options)
1904
1907
  return (input: unknown, options?: SchemaAST.ParseOptions): Exit_.Exit<S["Encoded"], SchemaError> => {
1905
- return InternalSchema.mapSchemaIssueExit(parser(input, options))
1908
+ return fromIssueExit(parser(input, options))
1906
1909
  }
1907
1910
  }
1908
1911
 
@@ -5695,7 +5698,13 @@ export function withConstructorDefault<S extends Constraint & WithoutConstructor
5695
5698
  defaultValue: Effect.Effect<S["~type.make.in"], SchemaError>
5696
5699
  ) {
5697
5700
  return (schema: S): withConstructorDefault<S> =>
5698
- make(SchemaAST.withConstructorDefault(schema.ast, InternalSchema.mapSchemaErrorEffect(defaultValue)), { schema })
5701
+ make(SchemaAST.withConstructorDefault(schema.ast, toIssueEffect(defaultValue)), { schema })
5702
+ }
5703
+
5704
+ function toIssueEffect<A, R>(
5705
+ self: Effect.Effect<A, SchemaError, R>
5706
+ ): Effect.Effect<A, SchemaIssue.Issue, R> {
5707
+ return Effect.catchCause(self, (cause) => Effect.failCauseSync(() => Cause_.map(cause, (error) => error.issue)))
5699
5708
  }
5700
5709
 
5701
5710
  /**
@@ -5767,7 +5776,7 @@ export function withDecodingDefaultKey<S extends Constraint, R = never>(
5767
5776
  const encode = options?.encodingStrategy === "omit" ? SchemaGetter.omit() : SchemaGetter.passthrough()
5768
5777
  return (self: S): withDecodingDefaultKey<S, R> => {
5769
5778
  return optionalKey(toEncoded(self)).pipe(decodeTo(self, {
5770
- decode: SchemaGetter.withDefault(InternalSchema.mapSchemaErrorEffect(defaultValue)),
5779
+ decode: SchemaGetter.withDefault(toIssueEffect(defaultValue)),
5771
5780
  encode
5772
5781
  }))
5773
5782
  }
@@ -5875,7 +5884,7 @@ export function withDecodingDefault<S extends Constraint, R = never>(
5875
5884
  const encode = options?.encodingStrategy === "omit" ? SchemaGetter.omit() : SchemaGetter.passthrough()
5876
5885
  return (self: S): withDecodingDefault<S, R> => {
5877
5886
  return optional(toEncoded(self)).pipe(decodeTo(self, {
5878
- decode: SchemaGetter.withDefault(InternalSchema.mapSchemaErrorEffect(defaultValue)),
5887
+ decode: SchemaGetter.withDefault(toIssueEffect(defaultValue)),
5879
5888
  encode
5880
5889
  }))
5881
5890
  }
@@ -10451,6 +10460,8 @@ const DateString = String.annotate({ expected: "a string in ISO 8601 format that
10451
10460
  * ```
10452
10461
  *
10453
10462
  * @see {@link DateValid} for accepting only valid Date instances
10463
+ * @see {@link DateFromString} for decoding strings into Date instances
10464
+ * @see {@link DateFromMillis} for decoding epoch milliseconds into Date instances
10454
10465
  *
10455
10466
  * @category Date
10456
10467
  * @since 4.0.0
@@ -10510,6 +10521,8 @@ export interface DateFromString extends decodeTo<Date, String> {
10510
10521
  *
10511
10522
  * Invalid date strings can decode to invalid `Date` instances.
10512
10523
  *
10524
+ * @see {@link DateFromMillis} for decoding epoch milliseconds into Date instances
10525
+ * @see {@link DateTimeUtcFromString} for decoding date-time strings into UTC values
10513
10526
  * @see {@link Date} for accepting Date instances directly
10514
10527
  * @see {@link DateValid} for rejecting invalid Date instances
10515
10528
  *
@@ -10518,6 +10531,47 @@ export interface DateFromString extends decodeTo<Date, String> {
10518
10531
  */
10519
10532
  export const DateFromString: DateFromString = DateString.pipe(decodeTo(Date, SchemaTransformation.dateFromString))
10520
10533
 
10534
+ /**
10535
+ * Type-level representation of {@link DateFromMillis}.
10536
+ *
10537
+ * @category Date
10538
+ * @since 4.0.0
10539
+ */
10540
+ export interface DateFromMillis extends decodeTo<Date, Number> {
10541
+ readonly "Rebuild": DateFromMillis
10542
+ }
10543
+
10544
+ /**
10545
+ * Schema that decodes epoch milliseconds into a JavaScript `Date`.
10546
+ *
10547
+ * **When to use**
10548
+ *
10549
+ * Use to model numeric millisecond timestamps that decode to JavaScript `Date`
10550
+ * objects and encode back to numbers.
10551
+ *
10552
+ * **Details**
10553
+ *
10554
+ * Decoding:
10555
+ * A number of milliseconds since the Unix epoch is decoded as a `Date`.
10556
+ *
10557
+ * Encoding:
10558
+ * A `Date` is encoded as its millisecond timestamp.
10559
+ *
10560
+ * **Gotchas**
10561
+ *
10562
+ * This schema accepts any number, including `NaN`, `Infinity`, and `-Infinity`.
10563
+ * Those values decode to invalid `Date` instances.
10564
+ *
10565
+ * @see {@link DateFromString} for decoding string-encoded dates
10566
+ * @see {@link DateTimeUtcFromMillis} for decoding epoch milliseconds into UTC values
10567
+ *
10568
+ * @category Date
10569
+ * @since 4.0.0
10570
+ */
10571
+ export const DateFromMillis: DateFromMillis = Number.pipe(
10572
+ decodeTo(Date, SchemaTransformation.dateFromMillis)
10573
+ )
10574
+
10521
10575
  /**
10522
10576
  * Type-level representation of {@link DateValid}.
10523
10577
  *
@@ -12064,6 +12118,10 @@ export interface DateTimeUtcFromString extends decodeTo<DateTimeUtc, String> {
12064
12118
  *
12065
12119
  * - A `DateTime.Utc` is encoded as a UTC ISO 8601 string.
12066
12120
  *
12121
+ * @see {@link DateTimeUtcFromDate} for decoding JavaScript Date values into UTC values
12122
+ * @see {@link DateTimeUtcFromMillis} for decoding epoch milliseconds into UTC values
12123
+ * @see {@link DateFromString} for decoding strings into JavaScript Date instances
12124
+ *
12067
12125
  * @category DateTime
12068
12126
  * @since 4.0.0
12069
12127
  */
@@ -12097,6 +12155,10 @@ export interface DateTimeUtcFromMillis extends decodeTo<instanceOf<DateTime.Utc>
12097
12155
  * Encoding:
12098
12156
  * - A `DateTime.Utc` is encoded as a number of milliseconds since the Unix epoch.
12099
12157
  *
12158
+ * @see {@link DateTimeUtcFromDate} for decoding JavaScript Date values into UTC values
12159
+ * @see {@link DateTimeUtcFromString} for decoding date-time strings into UTC values
12160
+ * @see {@link DateFromMillis} for decoding epoch milliseconds into JavaScript Date instances
12161
+ *
12100
12162
  * @category DateTime
12101
12163
  * @since 4.0.0
12102
12164
  */
@@ -13546,8 +13608,7 @@ export function toFormatter<S extends Constraint>(schema: S, options?: {
13546
13608
  // handle post rest elements
13547
13609
  // ---------------------------------------------
13548
13610
  for (let j = 0; j < tail.length; j++) {
13549
- i += j
13550
- out.push(tail[j](t[i]))
13611
+ out.push(tail[j](t[i + j]))
13551
13612
  }
13552
13613
  }
13553
13614
 
package/src/SchemaAST.ts CHANGED
@@ -2504,9 +2504,9 @@ export function collectSentinels(ast: AST): Array<Sentinel> {
2504
2504
  }
2505
2505
 
2506
2506
  type CandidateIndex = {
2507
- byType?: { [K in Type]?: Array<AST> }
2508
- bySentinel?: Map<PropertyKey, Map<LiteralValue | symbol, Array<AST>>>
2509
- otherwise?: { [K in Type]?: Array<AST> }
2507
+ byType?: { [K in Type]?: Array<number> }
2508
+ bySentinel?: Map<PropertyKey, Map<LiteralValue | symbol, Array<number>>>
2509
+ otherwise?: { [K in Type]?: Array<number> }
2510
2510
  }
2511
2511
 
2512
2512
  const candidateIndexCache = new WeakMap<ReadonlyArray<AST>, CandidateIndex>()
@@ -2516,16 +2516,17 @@ function getIndex(types: ReadonlyArray<AST>): CandidateIndex {
2516
2516
  if (idx) return idx
2517
2517
 
2518
2518
  idx = {}
2519
- for (const a of types) {
2519
+ for (let i = 0; i < types.length; i++) {
2520
+ const a = types[i]
2520
2521
  const encoded = toEncoded(a)
2521
2522
  if (isNever(encoded)) continue
2522
2523
 
2523
- const types = getCandidateTypes(encoded)
2524
+ const candidateTypes = getCandidateTypes(encoded)
2524
2525
  const sentinels = collectSentinels(encoded)
2525
2526
 
2526
2527
  // by-type (always filled – cheap primary filter)
2527
2528
  idx.byType ??= {}
2528
- for (const t of types) (idx.byType[t] ??= []).push(a)
2529
+ for (const t of candidateTypes) (idx.byType[t] ??= []).push(i)
2529
2530
 
2530
2531
  if (sentinels.length > 0) { // discriminated variants
2531
2532
  idx.bySentinel ??= new Map()
@@ -2534,11 +2535,11 @@ function getIndex(types: ReadonlyArray<AST>): CandidateIndex {
2534
2535
  if (!m) idx.bySentinel.set(key, m = new Map())
2535
2536
  let arr = m.get(literal)
2536
2537
  if (!arr) m.set(literal, arr = [])
2537
- arr.push(a)
2538
+ arr.push(i)
2538
2539
  }
2539
2540
  } else { // non-discriminated
2540
2541
  idx.otherwise ??= {}
2541
- for (const t of types) (idx.otherwise[t] ??= []).push(a)
2542
+ for (const t of candidateTypes) (idx.otherwise[t] ??= []).push(i)
2542
2543
  }
2543
2544
  }
2544
2545
 
@@ -2571,18 +2572,22 @@ export function getCandidates(input: any, types: ReadonlyArray<AST>): ReadonlyAr
2571
2572
  if (idx.bySentinel) {
2572
2573
  const base = idx.otherwise?.[runtimeType] ?? []
2573
2574
  if (runtimeType === "object" || runtimeType === "array") {
2575
+ const selected = new Set(base)
2574
2576
  for (const [k, m] of idx.bySentinel) {
2575
2577
  if (Object.hasOwn(input, k)) {
2576
2578
  const match = m.get((input as any)[k])
2577
- if (match) return [...match, ...base].filter(filterLiterals(input))
2579
+ if (match) {
2580
+ for (const candidate of match) selected.add(candidate)
2581
+ }
2578
2582
  }
2579
2583
  }
2584
+ return Array.from(selected).sort((a, b) => a - b).map((i) => types[i]).filter(filterLiterals(input))
2580
2585
  }
2581
- return base
2586
+ return base.map((i) => types[i])
2582
2587
  }
2583
2588
 
2584
2589
  // 2. Fallback: runtime-type dispatch only
2585
- return (idx.byType?.[runtimeType] ?? []).filter(filterLiterals(input))
2590
+ return (idx.byType?.[runtimeType] ?? []).map((i) => types[i]).filter(filterLiterals(input))
2586
2591
  }
2587
2592
 
2588
2593
  /**
@@ -2659,7 +2664,7 @@ export class Union<A extends AST = AST> extends Base {
2659
2664
  options
2660
2665
  }
2661
2666
  const concurrency = resolveConcurrency(options?.concurrency)
2662
- const eff = parseUnion(state, candidates, concurrency)
2667
+ const eff = parseUnion(state, candidates, concurrency ? { ...concurrency, orderedStep: true } : undefined)
2663
2668
  if (!eff) {
2664
2669
  return state.out
2665
2670
  ? Effect.succeed(state.out)
@@ -3883,8 +3888,15 @@ export function isJson(u: unknown): u is Schema.Json {
3883
3888
  if (validated.has(u)) {
3884
3889
  return true
3885
3890
  }
3891
+ const isArray = Array.isArray(u)
3892
+ if (!isArray) {
3893
+ const prototype = Object.getPrototypeOf(u)
3894
+ if (prototype !== null && Object.getPrototypeOf(prototype) !== null) {
3895
+ return false
3896
+ }
3897
+ }
3886
3898
  onPath.add(u)
3887
- const ok = Array.isArray(u)
3899
+ const ok = isArray
3888
3900
  ? u.every(recur)
3889
3901
  : Object.keys(u).every((key) => recur((u as Record<string, unknown>)[key]))
3890
3902
  // Pop on exit so siblings reaching the same node via a different path
@@ -0,0 +1,64 @@
1
+ /**
2
+ * @since 4.0.0
3
+ */
4
+ import * as Data from "./Data.ts"
5
+ import * as Predicate from "./Predicate.ts"
6
+ import type { Issue } from "./SchemaIssue.ts"
7
+
8
+ const TypeId = "~effect/SchemaError/SchemaError"
9
+
10
+ /**
11
+ * Error thrown (or returned as the error channel value) when schema decoding
12
+ * or encoding fails.
13
+ *
14
+ * **Details**
15
+ *
16
+ * The `issue` field contains a structured {@link Issue} tree describing
17
+ * every validation failure, including the path to the problematic value,
18
+ * expected types, and actual values received. `message` renders the issue tree
19
+ * as a human-readable string.
20
+ *
21
+ * Use {@link isSchemaError} to narrow an unknown value to `SchemaError`.
22
+ *
23
+ * **Example** (Catching a SchemaError)
24
+ *
25
+ * ```ts
26
+ * import { Schema } from "effect"
27
+ *
28
+ * try {
29
+ * Schema.decodeUnknownSync(Schema.Number)("not a number")
30
+ * } catch (err) {
31
+ * if (Schema.isSchemaError(err)) {
32
+ * console.log(err.message)
33
+ * // Expected number, actual "not a number"
34
+ * }
35
+ * }
36
+ * ```
37
+ *
38
+ * @category errors
39
+ * @since 4.0.0
40
+ */
41
+ export class SchemaError extends Data.TaggedError("SchemaError")<{
42
+ readonly issue: Issue
43
+ }> {
44
+ readonly [TypeId]: typeof TypeId = TypeId
45
+ constructor(issue: Issue) {
46
+ super({ issue })
47
+ }
48
+ override get message() {
49
+ return this.issue.toString()
50
+ }
51
+ override toString() {
52
+ return `SchemaError(${this.message})`
53
+ }
54
+ }
55
+
56
+ /**
57
+ * Returns `true` if `u` is a {@link SchemaError}.
58
+ *
59
+ * @category guards
60
+ * @since 4.0.0
61
+ */
62
+ export function isSchemaError(u: unknown): u is SchemaError {
63
+ return Predicate.hasProperty(u, TypeId)
64
+ }
@@ -14,6 +14,7 @@
14
14
  import * as DateTime from "./DateTime.ts"
15
15
  import * as Effect from "./Effect.ts"
16
16
  import * as Encoding from "./Encoding.ts"
17
+ import * as internalRecord from "./internal/record.ts"
17
18
  import * as Option from "./Option.ts"
18
19
  import * as Pipeable from "./Pipeable.ts"
19
20
  import * as Predicate from "./Predicate.ts"
@@ -1703,6 +1704,20 @@ function bracketPathToTokens(bracketPath: string): Array<string | number> {
1703
1704
  .map((part) => (INDEX_REGEXP.test(part) ? globalThis.Number(part) : part))
1704
1705
  }
1705
1706
 
1707
+ function getOrCreateContainer(
1708
+ self: any,
1709
+ key: PropertyKey,
1710
+ shouldBeArray: boolean
1711
+ ): any {
1712
+ const current = Object.hasOwn(self, key) ? self[key] : undefined
1713
+ if (current !== undefined) {
1714
+ return current
1715
+ }
1716
+ const container = shouldBeArray ? [] : {}
1717
+ internalRecord.set(self, key, container)
1718
+ return container
1719
+ }
1720
+
1706
1721
  /**
1707
1722
  * Builds a nested tree object from a list of bracket-path entries.
1708
1723
  *
@@ -1765,33 +1780,24 @@ export function makeTreeRecord<A>(
1765
1780
  const next = tokens[i + 1]
1766
1781
  const shouldBeArray = typeof next === "number" || next === ""
1767
1782
  const index = cur.length
1768
-
1769
- if (cur[index] === undefined) {
1770
- cur[index] = shouldBeArray ? [] : {}
1771
- }
1772
-
1773
- cur = cur[index]
1783
+ cur = getOrCreateContainer(cur, index, shouldBeArray)
1774
1784
  }
1775
1785
  } else if (isLast) {
1776
1786
  // If we're setting a value at a path that already exists
1777
1787
  // convert it to an array to support multiple values for the same key
1778
- if (Array.isArray(cur[token])) {
1788
+ const hasOwn = Object.hasOwn(cur, token)
1789
+ if (hasOwn && Array.isArray(cur[token])) {
1779
1790
  cur[token].push(value)
1780
- } else if (Object.prototype.hasOwnProperty.call(cur, token)) {
1781
- cur[token] = [cur[token], value]
1791
+ } else if (hasOwn) {
1792
+ internalRecord.set(cur, token, [cur[token], value])
1782
1793
  } else {
1783
- cur[token] = value
1794
+ internalRecord.set(cur, token, value)
1784
1795
  }
1785
1796
  } else {
1786
1797
  const next = tokens[i + 1]
1787
1798
  // if next is a number OR "" (from []), we are building an array
1788
1799
  const shouldBeArray = typeof next === "number" || next === ""
1789
-
1790
- if (cur[token] === undefined) {
1791
- cur[token] = shouldBeArray ? [] : {}
1792
- }
1793
-
1794
- cur = cur[token]
1800
+ cur = getOrCreateContainer(cur, token, shouldBeArray)
1795
1801
  }
1796
1802
  })
1797
1803
  })