effect 4.0.0-beta.31 → 4.0.0-beta.32
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.
- package/dist/Array.d.ts +87 -86
- package/dist/Array.d.ts.map +1 -1
- package/dist/Array.js +47 -40
- package/dist/Array.js.map +1 -1
- package/dist/BigDecimal.d.ts +46 -45
- package/dist/BigDecimal.d.ts.map +1 -1
- package/dist/BigDecimal.js +35 -38
- package/dist/BigDecimal.js.map +1 -1
- package/dist/BigInt.d.ts +39 -32
- package/dist/BigInt.d.ts.map +1 -1
- package/dist/BigInt.js +32 -29
- package/dist/BigInt.js.map +1 -1
- package/dist/Chunk.d.ts +58 -57
- package/dist/Chunk.d.ts.map +1 -1
- package/dist/Chunk.js +20 -21
- package/dist/Chunk.js.map +1 -1
- package/dist/Config.d.ts.map +1 -1
- package/dist/Config.js +4 -1
- package/dist/Config.js.map +1 -1
- package/dist/Cron.d.ts +3 -6
- package/dist/Cron.d.ts.map +1 -1
- package/dist/Cron.js +8 -15
- package/dist/Cron.js.map +1 -1
- package/dist/DateTime.d.ts +16 -15
- package/dist/DateTime.d.ts.map +1 -1
- package/dist/DateTime.js +8 -8
- package/dist/DateTime.js.map +1 -1
- package/dist/Deferred.d.ts +7 -5
- package/dist/Deferred.d.ts.map +1 -1
- package/dist/Deferred.js +7 -5
- package/dist/Deferred.js.map +1 -1
- package/dist/Duration.d.ts +26 -24
- package/dist/Duration.d.ts.map +1 -1
- package/dist/Duration.js +23 -22
- package/dist/Duration.js.map +1 -1
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +3 -4
- package/dist/Effect.js.map +1 -1
- package/dist/Fiber.d.ts +2 -1
- package/dist/Fiber.d.ts.map +1 -1
- package/dist/Fiber.js.map +1 -1
- package/dist/FiberHandle.d.ts +9 -8
- package/dist/FiberHandle.d.ts.map +1 -1
- package/dist/FiberHandle.js +8 -7
- package/dist/FiberHandle.js.map +1 -1
- package/dist/FiberMap.d.ts +20 -19
- package/dist/FiberMap.d.ts.map +1 -1
- package/dist/FiberMap.js +6 -6
- package/dist/FiberMap.js.map +1 -1
- package/dist/FileSystem.d.ts +17 -16
- package/dist/FileSystem.d.ts.map +1 -1
- package/dist/FileSystem.js +10 -7
- package/dist/FileSystem.js.map +1 -1
- package/dist/Graph.d.ts +64 -64
- package/dist/Graph.d.ts.map +1 -1
- package/dist/Graph.js +53 -53
- package/dist/Graph.js.map +1 -1
- package/dist/HashMap.d.ts +11 -5
- package/dist/HashMap.d.ts.map +1 -1
- package/dist/HashMap.js +3 -1
- package/dist/HashMap.js.map +1 -1
- package/dist/Iterable.d.ts +11 -11
- package/dist/Iterable.d.ts.map +1 -1
- package/dist/Iterable.js +12 -12
- package/dist/Iterable.js.map +1 -1
- package/dist/Latch.d.ts +69 -3
- package/dist/Latch.d.ts.map +1 -1
- package/dist/Latch.js +58 -0
- package/dist/Latch.js.map +1 -1
- package/dist/Layer.d.ts +84 -0
- package/dist/Layer.d.ts.map +1 -1
- package/dist/Layer.js +27 -0
- package/dist/Layer.js.map +1 -1
- package/dist/Number.d.ts +74 -18
- package/dist/Number.d.ts.map +1 -1
- package/dist/Number.js +34 -15
- package/dist/Number.js.map +1 -1
- package/dist/Option.d.ts +2 -0
- package/dist/Option.d.ts.map +1 -1
- package/dist/Option.js.map +1 -1
- package/dist/PartitionedSemaphore.d.ts +183 -0
- package/dist/PartitionedSemaphore.d.ts.map +1 -0
- package/dist/PartitionedSemaphore.js +231 -0
- package/dist/PartitionedSemaphore.js.map +1 -0
- package/dist/PubSub.d.ts +5 -4
- package/dist/PubSub.d.ts.map +1 -1
- package/dist/PubSub.js +6 -5
- package/dist/PubSub.js.map +1 -1
- package/dist/Queue.d.ts +3 -3
- package/dist/Queue.d.ts.map +1 -1
- package/dist/Queue.js +2 -2
- package/dist/Queue.js.map +1 -1
- package/dist/Record.d.ts +40 -40
- package/dist/Record.d.ts.map +1 -1
- package/dist/Record.js +16 -15
- package/dist/Record.js.map +1 -1
- package/dist/Scheduler.d.ts +25 -123
- package/dist/Scheduler.d.ts.map +1 -1
- package/dist/Scheduler.js +20 -123
- package/dist/Scheduler.js.map +1 -1
- package/dist/Schema.d.ts +30 -0
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +28 -1
- package/dist/Schema.js.map +1 -1
- package/dist/SchemaGetter.js +6 -4
- package/dist/SchemaGetter.js.map +1 -1
- package/dist/SchemaTransformation.d.ts.map +1 -1
- package/dist/SchemaTransformation.js +32 -27
- package/dist/SchemaTransformation.js.map +1 -1
- package/dist/Semaphore.d.ts +149 -53
- package/dist/Semaphore.d.ts.map +1 -1
- package/dist/Semaphore.js +137 -117
- package/dist/Semaphore.js.map +1 -1
- package/dist/ServiceMap.d.ts +26 -0
- package/dist/ServiceMap.d.ts.map +1 -1
- package/dist/ServiceMap.js +36 -21
- package/dist/ServiceMap.js.map +1 -1
- package/dist/Stream.js +1 -1
- package/dist/Stream.js.map +1 -1
- package/dist/String.d.ts +114 -47
- package/dist/String.d.ts.map +1 -1
- package/dist/String.js +29 -47
- package/dist/String.js.map +1 -1
- package/dist/SubscriptionRef.d.ts +1 -2
- package/dist/SubscriptionRef.d.ts.map +1 -1
- package/dist/SubscriptionRef.js +81 -115
- package/dist/SubscriptionRef.js.map +1 -1
- package/dist/Terminal.d.ts +2 -1
- package/dist/Terminal.d.ts.map +1 -1
- package/dist/Terminal.js.map +1 -1
- package/dist/Tracer.d.ts +5 -4
- package/dist/Tracer.d.ts.map +1 -1
- package/dist/Tracer.js +2 -1
- package/dist/Tracer.js.map +1 -1
- package/dist/Trie.d.ts +26 -14
- package/dist/Trie.d.ts.map +1 -1
- package/dist/Trie.js +8 -4
- package/dist/Trie.js.map +1 -1
- package/dist/TxHashMap.d.ts +77 -59
- package/dist/TxHashMap.d.ts.map +1 -1
- package/dist/TxHashMap.js +25 -19
- package/dist/TxHashMap.js.map +1 -1
- package/dist/TxSemaphore.d.ts +162 -2
- package/dist/TxSemaphore.d.ts.map +1 -1
- package/dist/TxSemaphore.js +16 -2
- package/dist/TxSemaphore.js.map +1 -1
- package/dist/index.d.ts +88 -32
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +88 -32
- package/dist/index.js.map +1 -1
- package/dist/internal/dateTime.js +9 -9
- package/dist/internal/dateTime.js.map +1 -1
- package/dist/internal/effect.js +20 -89
- package/dist/internal/effect.js.map +1 -1
- package/dist/internal/hashMap.js +2 -1
- package/dist/internal/hashMap.js.map +1 -1
- package/dist/internal/option.js +6 -0
- package/dist/internal/option.js.map +1 -1
- package/dist/internal/trie.js +3 -3
- package/dist/internal/trie.js.map +1 -1
- package/dist/unstable/ai/AiError.js +1 -1
- package/dist/unstable/ai/AiError.js.map +1 -1
- package/dist/unstable/ai/AnthropicStructuredOutput.d.ts.map +1 -1
- package/dist/unstable/ai/AnthropicStructuredOutput.js +4 -0
- package/dist/unstable/ai/AnthropicStructuredOutput.js.map +1 -1
- package/dist/unstable/ai/Chat.d.ts.map +1 -1
- package/dist/unstable/ai/Chat.js +2 -2
- package/dist/unstable/ai/Chat.js.map +1 -1
- package/dist/unstable/ai/OpenAiStructuredOutput.d.ts.map +1 -1
- package/dist/unstable/ai/OpenAiStructuredOutput.js +4 -0
- package/dist/unstable/ai/OpenAiStructuredOutput.js.map +1 -1
- package/dist/unstable/ai/Tool.d.ts +14 -0
- package/dist/unstable/ai/Tool.d.ts.map +1 -1
- package/dist/unstable/ai/Tool.js +13 -0
- package/dist/unstable/ai/Tool.js.map +1 -1
- package/dist/unstable/cli/Argument.d.ts +2 -4
- package/dist/unstable/cli/Argument.d.ts.map +1 -1
- package/dist/unstable/cli/Argument.js +1 -3
- package/dist/unstable/cli/Argument.js.map +1 -1
- package/dist/unstable/cli/CliOutput.d.ts +3 -2
- package/dist/unstable/cli/CliOutput.d.ts.map +1 -1
- package/dist/unstable/cli/CliOutput.js +4 -3
- package/dist/unstable/cli/CliOutput.js.map +1 -1
- package/dist/unstable/cli/Command.d.ts +3 -2
- package/dist/unstable/cli/Command.d.ts.map +1 -1
- package/dist/unstable/cli/Command.js +3 -3
- package/dist/unstable/cli/Command.js.map +1 -1
- package/dist/unstable/cli/Flag.d.ts +2 -2
- package/dist/unstable/cli/Flag.d.ts.map +1 -1
- package/dist/unstable/cli/Flag.js +1 -1
- package/dist/unstable/cli/Flag.js.map +1 -1
- package/dist/unstable/cli/HelpDoc.d.ts +14 -12
- package/dist/unstable/cli/HelpDoc.d.ts.map +1 -1
- package/dist/unstable/cli/Param.d.ts +4 -4
- package/dist/unstable/cli/Param.d.ts.map +1 -1
- package/dist/unstable/cli/Param.js +7 -7
- package/dist/unstable/cli/Param.js.map +1 -1
- package/dist/unstable/cli/Primitive.d.ts +1 -1
- package/dist/unstable/cli/Primitive.d.ts.map +1 -1
- package/dist/unstable/cli/Primitive.js.map +1 -1
- package/dist/unstable/cli/Prompt.js +71 -67
- package/dist/unstable/cli/Prompt.js.map +1 -1
- package/dist/unstable/cli/internal/completions/CommandDescriptor.js +9 -2
- package/dist/unstable/cli/internal/completions/CommandDescriptor.js.map +1 -1
- package/dist/unstable/cli/internal/parser.js +8 -3
- package/dist/unstable/cli/internal/parser.js.map +1 -1
- package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts +3 -2
- package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
- package/dist/unstable/cluster/ClusterWorkflowEngine.js +25 -23
- package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
- package/dist/unstable/cluster/Entity.d.ts +3 -2
- package/dist/unstable/cluster/Entity.d.ts.map +1 -1
- package/dist/unstable/cluster/Entity.js +7 -7
- package/dist/unstable/cluster/Entity.js.map +1 -1
- package/dist/unstable/cluster/Message.d.ts +4 -3
- package/dist/unstable/cluster/Message.d.ts.map +1 -1
- package/dist/unstable/cluster/Message.js +3 -2
- package/dist/unstable/cluster/Message.js.map +1 -1
- package/dist/unstable/cluster/MessageStorage.d.ts +10 -10
- package/dist/unstable/cluster/MessageStorage.d.ts.map +1 -1
- package/dist/unstable/cluster/MessageStorage.js +12 -12
- package/dist/unstable/cluster/MessageStorage.js.map +1 -1
- package/dist/unstable/cluster/Reply.d.ts +2 -1
- package/dist/unstable/cluster/Reply.d.ts.map +1 -1
- package/dist/unstable/cluster/Reply.js +4 -3
- package/dist/unstable/cluster/Reply.js.map +1 -1
- package/dist/unstable/cluster/RunnerServer.d.ts.map +1 -1
- package/dist/unstable/cluster/RunnerServer.js +9 -8
- package/dist/unstable/cluster/RunnerServer.js.map +1 -1
- package/dist/unstable/cluster/Runners.d.ts +2 -1
- package/dist/unstable/cluster/Runners.d.ts.map +1 -1
- package/dist/unstable/cluster/Runners.js +7 -6
- package/dist/unstable/cluster/Runners.js.map +1 -1
- package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
- package/dist/unstable/cluster/Sharding.js +19 -13
- package/dist/unstable/cluster/Sharding.js.map +1 -1
- package/dist/unstable/cluster/ShardingConfig.d.ts +5 -4
- package/dist/unstable/cluster/ShardingConfig.d.ts.map +1 -1
- package/dist/unstable/cluster/ShardingConfig.js +4 -4
- package/dist/unstable/cluster/ShardingConfig.js.map +1 -1
- package/dist/unstable/cluster/SqlMessageStorage.d.ts.map +1 -1
- package/dist/unstable/cluster/SqlMessageStorage.js +19 -18
- package/dist/unstable/cluster/SqlMessageStorage.js.map +1 -1
- package/dist/unstable/cluster/internal/entityManager.js +9 -10
- package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
- package/dist/unstable/devtools/DevToolsSchema.d.ts +2 -1
- package/dist/unstable/devtools/DevToolsSchema.d.ts.map +1 -1
- package/dist/unstable/devtools/DevToolsSchema.js +1 -4
- package/dist/unstable/devtools/DevToolsSchema.js.map +1 -1
- package/dist/unstable/http/Cookies.d.ts +5 -4
- package/dist/unstable/http/Cookies.d.ts.map +1 -1
- package/dist/unstable/http/Cookies.js +3 -4
- package/dist/unstable/http/Cookies.js.map +1 -1
- package/dist/unstable/http/Etag.d.ts.map +1 -1
- package/dist/unstable/http/Etag.js +5 -1
- package/dist/unstable/http/Etag.js.map +1 -1
- package/dist/unstable/http/Headers.d.ts +3 -2
- package/dist/unstable/http/Headers.d.ts.map +1 -1
- package/dist/unstable/http/Headers.js +2 -1
- package/dist/unstable/http/Headers.js.map +1 -1
- package/dist/unstable/http/HttpClient.d.ts.map +1 -1
- package/dist/unstable/http/HttpClient.js +2 -1
- package/dist/unstable/http/HttpClient.js.map +1 -1
- package/dist/unstable/http/HttpClientRequest.d.ts +4 -3
- package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
- package/dist/unstable/http/HttpClientRequest.js +8 -6
- package/dist/unstable/http/HttpClientRequest.js.map +1 -1
- package/dist/unstable/http/HttpClientResponse.d.ts.map +1 -1
- package/dist/unstable/http/HttpClientResponse.js +2 -1
- package/dist/unstable/http/HttpClientResponse.js.map +1 -1
- package/dist/unstable/http/HttpIncomingMessage.d.ts +2 -1
- package/dist/unstable/http/HttpIncomingMessage.d.ts.map +1 -1
- package/dist/unstable/http/HttpIncomingMessage.js.map +1 -1
- package/dist/unstable/http/HttpMiddleware.d.ts.map +1 -1
- package/dist/unstable/http/HttpMiddleware.js +16 -15
- package/dist/unstable/http/HttpMiddleware.js.map +1 -1
- package/dist/unstable/http/HttpPlatform.d.ts.map +1 -1
- package/dist/unstable/http/HttpPlatform.js +3 -2
- package/dist/unstable/http/HttpPlatform.js.map +1 -1
- package/dist/unstable/http/HttpRouter.d.ts +2 -1
- package/dist/unstable/http/HttpRouter.d.ts.map +1 -1
- package/dist/unstable/http/HttpRouter.js +7 -7
- package/dist/unstable/http/HttpRouter.js.map +1 -1
- package/dist/unstable/http/HttpServer.d.ts.map +1 -1
- package/dist/unstable/http/HttpServer.js +2 -2
- package/dist/unstable/http/HttpServer.js.map +1 -1
- package/dist/unstable/http/HttpServerError.d.ts +2 -1
- package/dist/unstable/http/HttpServerError.d.ts.map +1 -1
- package/dist/unstable/http/HttpServerError.js +2 -1
- package/dist/unstable/http/HttpServerError.js.map +1 -1
- package/dist/unstable/http/HttpServerRequest.d.ts +3 -2
- package/dist/unstable/http/HttpServerRequest.d.ts.map +1 -1
- package/dist/unstable/http/HttpServerRequest.js +14 -10
- package/dist/unstable/http/HttpServerRequest.js.map +1 -1
- package/dist/unstable/http/HttpServerResponse.d.ts.map +1 -1
- package/dist/unstable/http/HttpServerResponse.js +4 -3
- package/dist/unstable/http/HttpServerResponse.js.map +1 -1
- package/dist/unstable/http/HttpTraceContext.d.ts +3 -2
- package/dist/unstable/http/HttpTraceContext.d.ts.map +1 -1
- package/dist/unstable/http/HttpTraceContext.js +27 -15
- package/dist/unstable/http/HttpTraceContext.js.map +1 -1
- package/dist/unstable/http/UrlParams.d.ts +5 -4
- package/dist/unstable/http/UrlParams.d.ts.map +1 -1
- package/dist/unstable/http/UrlParams.js +5 -6
- package/dist/unstable/http/UrlParams.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiBuilder.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiBuilder.js +4 -2
- package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiError.d.ts +15 -0
- package/dist/unstable/httpapi/HttpApiError.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiError.js +81 -3
- package/dist/unstable/httpapi/HttpApiError.js.map +1 -1
- package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpExporter.js +2 -2
- package/dist/unstable/observability/OtlpExporter.js.map +1 -1
- package/dist/unstable/observability/OtlpTracer.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpTracer.js +7 -3
- package/dist/unstable/observability/OtlpTracer.js.map +1 -1
- package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
- package/dist/unstable/reactivity/Atom.js +1 -5
- package/dist/unstable/reactivity/Atom.js.map +1 -1
- package/dist/unstable/reactivity/AtomRegistry.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomRegistry.js +4 -2
- package/dist/unstable/reactivity/AtomRegistry.js.map +1 -1
- package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
- package/dist/unstable/rpc/Rpc.js +4 -3
- package/dist/unstable/rpc/Rpc.js.map +1 -1
- package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcClient.js +4 -4
- package/dist/unstable/rpc/RpcClient.js.map +1 -1
- package/dist/unstable/rpc/RpcSchema.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcSchema.js +3 -2
- package/dist/unstable/rpc/RpcSchema.js.map +1 -1
- package/dist/unstable/rpc/RpcSerialization.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcSerialization.js +4 -1
- package/dist/unstable/rpc/RpcSerialization.js.map +1 -1
- package/dist/unstable/rpc/RpcServer.d.ts +1 -1
- package/dist/unstable/rpc/RpcServer.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcServer.js +3 -2
- package/dist/unstable/rpc/RpcServer.js.map +1 -1
- package/dist/unstable/socket/Socket.d.ts.map +1 -1
- package/dist/unstable/socket/Socket.js +2 -1
- package/dist/unstable/socket/Socket.js.map +1 -1
- package/dist/unstable/sql/SqlClient.d.ts.map +1 -1
- package/dist/unstable/sql/SqlClient.js +1 -1
- package/dist/unstable/sql/SqlClient.js.map +1 -1
- package/dist/unstable/workflow/DurableDeferred.js +6 -6
- package/dist/unstable/workflow/DurableDeferred.js.map +1 -1
- package/dist/unstable/workflow/Workflow.d.ts +2 -1
- package/dist/unstable/workflow/Workflow.d.ts.map +1 -1
- package/dist/unstable/workflow/WorkflowEngine.d.ts +5 -4
- package/dist/unstable/workflow/WorkflowEngine.d.ts.map +1 -1
- package/dist/unstable/workflow/WorkflowEngine.js +19 -14
- package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
- package/package.json +1 -1
- package/src/Array.ts +112 -105
- package/src/BigDecimal.ts +63 -66
- package/src/BigInt.ts +49 -41
- package/src/Chunk.ts +68 -63
- package/src/Config.ts +4 -1
- package/src/Cron.ts +10 -15
- package/src/DateTime.ts +16 -15
- package/src/Deferred.ts +8 -6
- package/src/Duration.ts +34 -33
- package/src/Effect.ts +3 -4
- package/src/Fiber.ts +2 -1
- package/src/FiberHandle.ts +10 -9
- package/src/FiberMap.ts +22 -22
- package/src/FileSystem.ts +25 -22
- package/src/Graph.ts +105 -105
- package/src/HashMap.ts +11 -5
- package/src/Iterable.ts +13 -13
- package/src/Latch.ts +85 -3
- package/src/Layer.ts +121 -0
- package/src/Number.ts +85 -26
- package/src/Option.ts +2 -0
- package/src/PartitionedSemaphore.ts +414 -0
- package/src/PubSub.ts +7 -6
- package/src/Queue.ts +5 -5
- package/src/Record.ts +52 -47
- package/src/Scheduler.ts +37 -126
- package/src/Schema.ts +49 -1
- package/src/SchemaGetter.ts +4 -4
- package/src/SchemaTransformation.ts +27 -27
- package/src/Semaphore.ts +271 -183
- package/src/ServiceMap.ts +83 -31
- package/src/Stream.ts +1 -1
- package/src/String.ts +122 -69
- package/src/SubscriptionRef.ts +96 -117
- package/src/Terminal.ts +2 -1
- package/src/Tracer.ts +6 -5
- package/src/Trie.ts +26 -14
- package/src/TxHashMap.ts +78 -60
- package/src/TxSemaphore.ts +186 -11
- package/src/index.ts +89 -33
- package/src/internal/dateTime.ts +14 -14
- package/src/internal/effect.ts +29 -121
- package/src/internal/hashMap.ts +4 -3
- package/src/internal/option.ts +7 -0
- package/src/internal/trie.ts +6 -6
- package/src/unstable/ai/AiError.ts +1 -1
- package/src/unstable/ai/AnthropicStructuredOutput.ts +4 -0
- package/src/unstable/ai/Chat.ts +6 -2
- package/src/unstable/ai/OpenAiStructuredOutput.ts +4 -0
- package/src/unstable/ai/Tool.ts +20 -0
- package/src/unstable/cli/Argument.ts +2 -4
- package/src/unstable/cli/CliOutput.ts +7 -5
- package/src/unstable/cli/Command.ts +5 -5
- package/src/unstable/cli/Flag.ts +2 -2
- package/src/unstable/cli/HelpDoc.ts +14 -12
- package/src/unstable/cli/Param.ts +15 -11
- package/src/unstable/cli/Primitive.ts +1 -1
- package/src/unstable/cli/Prompt.ts +81 -83
- package/src/unstable/cli/internal/completions/CommandDescriptor.ts +3 -2
- package/src/unstable/cli/internal/parser.ts +7 -4
- package/src/unstable/cluster/ClusterWorkflowEngine.ts +35 -30
- package/src/unstable/cluster/Entity.ts +13 -12
- package/src/unstable/cluster/Message.ts +6 -5
- package/src/unstable/cluster/MessageStorage.ts +26 -25
- package/src/unstable/cluster/Reply.ts +7 -4
- package/src/unstable/cluster/RunnerServer.ts +10 -13
- package/src/unstable/cluster/Runners.ts +8 -7
- package/src/unstable/cluster/Sharding.ts +24 -17
- package/src/unstable/cluster/ShardingConfig.ts +6 -6
- package/src/unstable/cluster/SqlMessageStorage.ts +21 -18
- package/src/unstable/cluster/internal/entityManager.ts +27 -21
- package/src/unstable/devtools/DevToolsSchema.ts +3 -2
- package/src/unstable/http/Cookies.ts +7 -8
- package/src/unstable/http/Etag.ts +5 -3
- package/src/unstable/http/Headers.ts +6 -5
- package/src/unstable/http/HttpClient.ts +2 -1
- package/src/unstable/http/HttpClientRequest.ts +11 -9
- package/src/unstable/http/HttpClientResponse.ts +3 -2
- package/src/unstable/http/HttpIncomingMessage.ts +2 -1
- package/src/unstable/http/HttpMiddleware.ts +16 -15
- package/src/unstable/http/HttpPlatform.ts +3 -2
- package/src/unstable/http/HttpRouter.ts +9 -9
- package/src/unstable/http/HttpServer.ts +3 -9
- package/src/unstable/http/HttpServerError.ts +3 -2
- package/src/unstable/http/HttpServerRequest.ts +25 -21
- package/src/unstable/http/HttpServerResponse.ts +5 -4
- package/src/unstable/http/HttpTraceContext.ts +31 -17
- package/src/unstable/http/UrlParams.ts +11 -14
- package/src/unstable/httpapi/HttpApiBuilder.ts +9 -3
- package/src/unstable/httpapi/HttpApiError.ts +67 -12
- package/src/unstable/observability/OtlpExporter.ts +5 -2
- package/src/unstable/observability/OtlpTracer.ts +8 -4
- package/src/unstable/reactivity/Atom.ts +1 -4
- package/src/unstable/reactivity/AtomRegistry.ts +5 -3
- package/src/unstable/rpc/Rpc.ts +4 -3
- package/src/unstable/rpc/RpcClient.ts +10 -9
- package/src/unstable/rpc/RpcSchema.ts +6 -5
- package/src/unstable/rpc/RpcSerialization.ts +4 -1
- package/src/unstable/rpc/RpcServer.ts +3 -3
- package/src/unstable/socket/Socket.ts +2 -1
- package/src/unstable/sql/SqlClient.ts +5 -3
- package/src/unstable/workflow/DurableDeferred.ts +6 -6
- package/src/unstable/workflow/Workflow.ts +1 -1
- package/src/unstable/workflow/WorkflowEngine.ts +29 -20
- package/dist/NullOr.d.ts +0 -149
- package/dist/NullOr.d.ts.map +0 -1
- package/dist/NullOr.js +0 -152
- package/dist/NullOr.js.map +0 -1
- package/src/NullOr.ts +0 -204
package/src/Iterable.ts
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
*
|
|
13
13
|
* @example
|
|
14
14
|
* ```ts
|
|
15
|
-
* import { Iterable } from "effect"
|
|
15
|
+
* import { Iterable, Option } from "effect"
|
|
16
16
|
*
|
|
17
17
|
* // Create iterables
|
|
18
18
|
* const numbers = Iterable.range(1, 5)
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
* console.log(Array.from(filtered)) // [6, 8, 10]
|
|
23
23
|
*
|
|
24
24
|
* // Infinite iterables
|
|
25
|
-
* const fibonacci = Iterable.unfold([0, 1], ([a, b]) => [a, [b, a + b]])
|
|
25
|
+
* const fibonacci = Iterable.unfold([0, 1], ([a, b]) => Option.some([a, [b, a + b]]))
|
|
26
26
|
* const first10 = Iterable.take(fibonacci, 10)
|
|
27
27
|
* console.log(Array.from(first10)) // [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
|
|
28
28
|
* ```
|
|
@@ -4054,31 +4054,31 @@ export const some: {
|
|
|
4054
4054
|
* next element and state.
|
|
4055
4055
|
*
|
|
4056
4056
|
* This is useful for creating iterables from a generating function that
|
|
4057
|
-
* maintains state. The function should return `[value, nextState]`
|
|
4058
|
-
* or `
|
|
4057
|
+
* maintains state. The function should return `Option.some([value, nextState])`
|
|
4058
|
+
* to continue or `Option.none()` to stop.
|
|
4059
4059
|
*
|
|
4060
4060
|
* @example
|
|
4061
4061
|
* ```ts
|
|
4062
|
-
* import { Iterable } from "effect"
|
|
4062
|
+
* import { Iterable, Option } from "effect"
|
|
4063
4063
|
*
|
|
4064
4064
|
* // Generate Fibonacci sequence
|
|
4065
|
-
* const fibonacci = Iterable.unfold([0, 1], ([a, b]) => [a, [b, a + b]])
|
|
4065
|
+
* const fibonacci = Iterable.unfold([0, 1], ([a, b]) => Option.some([a, [b, a + b]]))
|
|
4066
4066
|
* const first10Fib = Iterable.take(fibonacci, 10)
|
|
4067
4067
|
* console.log(Array.from(first10Fib)) // [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
|
|
4068
4068
|
*
|
|
4069
4069
|
* // Generate powers of 2 up to a limit
|
|
4070
|
-
* const powersOf2 = Iterable.unfold(1, (n) => n <= 1000 ? [n, n * 2] :
|
|
4070
|
+
* const powersOf2 = Iterable.unfold(1, (n) => n <= 1000 ? Option.some([n, n * 2]) : Option.none())
|
|
4071
4071
|
* console.log(Array.from(powersOf2)) // [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
|
|
4072
4072
|
*
|
|
4073
4073
|
* // Generate countdown
|
|
4074
|
-
* const countdown = Iterable.unfold(5, (n) => n > 0 ? [n, n - 1] :
|
|
4074
|
+
* const countdown = Iterable.unfold(5, (n) => n > 0 ? Option.some([n, n - 1]) : Option.none())
|
|
4075
4075
|
* console.log(Array.from(countdown)) // [5, 4, 3, 2, 1]
|
|
4076
4076
|
*
|
|
4077
4077
|
* // Generate collatz sequence
|
|
4078
4078
|
* const collatz = Iterable.unfold(7, (n) => {
|
|
4079
|
-
* if (n === 1) return
|
|
4079
|
+
* if (n === 1) return Option.none()
|
|
4080
4080
|
* const next = n % 2 === 0 ? n / 2 : n * 3 + 1
|
|
4081
|
-
* return [n, next]
|
|
4081
|
+
* return Option.some([n, next])
|
|
4082
4082
|
* })
|
|
4083
4083
|
* console.log(Array.from(collatz)) // [7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2]
|
|
4084
4084
|
* ```
|
|
@@ -4086,16 +4086,16 @@ export const some: {
|
|
|
4086
4086
|
* @category constructors
|
|
4087
4087
|
* @since 2.0.0
|
|
4088
4088
|
*/
|
|
4089
|
-
export const unfold = <B, A>(b: B, f: (b: B) => readonly [A, B]
|
|
4089
|
+
export const unfold = <B, A>(b: B, f: (b: B) => Option<readonly [A, B]>): Iterable<A> => ({
|
|
4090
4090
|
[Symbol.iterator]() {
|
|
4091
4091
|
let next = b
|
|
4092
4092
|
return {
|
|
4093
4093
|
next() {
|
|
4094
4094
|
const ab = f(next)
|
|
4095
|
-
if (ab
|
|
4095
|
+
if (O.isNone(ab)) {
|
|
4096
4096
|
return { done: true, value: undefined }
|
|
4097
4097
|
}
|
|
4098
|
-
const [a, b] = ab
|
|
4098
|
+
const [a, b] = ab.value
|
|
4099
4099
|
next = b
|
|
4100
4100
|
return { done: false, value: a }
|
|
4101
4101
|
}
|
package/src/Latch.ts
CHANGED
|
@@ -26,7 +26,7 @@ export interface Latch {
|
|
|
26
26
|
/** open the latch, releasing all fibers waiting on it */
|
|
27
27
|
readonly open: Effect.Effect<boolean>
|
|
28
28
|
/** open the latch, releasing all fibers waiting on it */
|
|
29
|
-
|
|
29
|
+
openUnsafe(this: Latch): boolean
|
|
30
30
|
/** release all fibers waiting on the latch, without opening it */
|
|
31
31
|
readonly release: Effect.Effect<boolean>
|
|
32
32
|
/** wait for the latch to be opened */
|
|
@@ -34,9 +34,9 @@ export interface Latch {
|
|
|
34
34
|
/** close the latch */
|
|
35
35
|
readonly close: Effect.Effect<boolean>
|
|
36
36
|
/** close the latch */
|
|
37
|
-
|
|
37
|
+
closeUnsafe(this: Latch): boolean
|
|
38
38
|
/** only run the given effect when the latch is open */
|
|
39
|
-
|
|
39
|
+
whenOpen<A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<A, E, R>
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
/**
|
|
@@ -110,3 +110,85 @@ export const makeUnsafe: (open?: boolean | undefined) => Latch = internal.makeLa
|
|
|
110
110
|
* @since 3.8.0
|
|
111
111
|
*/
|
|
112
112
|
export const make: (open?: boolean | undefined) => Effect.Effect<Latch> = internal.makeLatch
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Opens the latch, releasing all fibers waiting on it.
|
|
116
|
+
*
|
|
117
|
+
* @category combinators
|
|
118
|
+
* @since 4.0.0
|
|
119
|
+
*/
|
|
120
|
+
export const open = (self: Latch): Effect.Effect<boolean> => self.open
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Opens the latch, releasing all fibers waiting on it.
|
|
124
|
+
*
|
|
125
|
+
* @category unsafe
|
|
126
|
+
* @since 4.0.0
|
|
127
|
+
*/
|
|
128
|
+
export const openUnsafe = (self: Latch): boolean => self.openUnsafe()
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Releases all fibers waiting on the latch, without opening it.
|
|
132
|
+
*
|
|
133
|
+
* @category combinators
|
|
134
|
+
* @since 4.0.0
|
|
135
|
+
*/
|
|
136
|
+
export const release = (self: Latch): Effect.Effect<boolean> => self.release
|
|
137
|
+
|
|
138
|
+
const _await = (self: Latch): Effect.Effect<void> => self.await
|
|
139
|
+
|
|
140
|
+
export {
|
|
141
|
+
/**
|
|
142
|
+
* Waits for the latch to be opened.
|
|
143
|
+
*
|
|
144
|
+
* @category getters
|
|
145
|
+
* @since 4.0.0
|
|
146
|
+
*/
|
|
147
|
+
_await as await
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Closes the latch.
|
|
152
|
+
*
|
|
153
|
+
* @category combinators
|
|
154
|
+
* @since 4.0.0
|
|
155
|
+
*/
|
|
156
|
+
export const close = (self: Latch): Effect.Effect<boolean> => self.close
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Closes the latch.
|
|
160
|
+
*
|
|
161
|
+
* @category unsafe
|
|
162
|
+
* @since 4.0.0
|
|
163
|
+
*/
|
|
164
|
+
export const closeUnsafe = (self: Latch): boolean => self.closeUnsafe()
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Runs the given effect only when the latch is open.
|
|
168
|
+
*
|
|
169
|
+
* @category combinators
|
|
170
|
+
* @since 4.0.0
|
|
171
|
+
*/
|
|
172
|
+
export const whenOpen: {
|
|
173
|
+
/**
|
|
174
|
+
* Runs the given effect only when the latch is open.
|
|
175
|
+
*
|
|
176
|
+
* @category combinators
|
|
177
|
+
* @since 4.0.0
|
|
178
|
+
*/
|
|
179
|
+
(self: Latch): <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>
|
|
180
|
+
/**
|
|
181
|
+
* Runs the given effect only when the latch is open.
|
|
182
|
+
*
|
|
183
|
+
* @category combinators
|
|
184
|
+
* @since 4.0.0
|
|
185
|
+
*/
|
|
186
|
+
<A, E, R>(self: Latch, effect: Effect.Effect<A, E, R>): Effect.Effect<A, E, R>
|
|
187
|
+
} = ((...args: Array<any>) => {
|
|
188
|
+
if (args.length === 1) {
|
|
189
|
+
const [self] = args
|
|
190
|
+
return (effect: Effect.Effect<any, any, any>) => self.whenOpen(effect)
|
|
191
|
+
}
|
|
192
|
+
const [self, effect] = args
|
|
193
|
+
return self.whenOpen(effect)
|
|
194
|
+
}) as any
|
package/src/Layer.ts
CHANGED
|
@@ -2447,6 +2447,127 @@ export const flatMap: {
|
|
|
2447
2447
|
)
|
|
2448
2448
|
))
|
|
2449
2449
|
|
|
2450
|
+
/**
|
|
2451
|
+
* Performs the specified effect if this layer succeeds.
|
|
2452
|
+
*
|
|
2453
|
+
* @since 4.0.0
|
|
2454
|
+
* @category sequencing
|
|
2455
|
+
*/
|
|
2456
|
+
export const tap: {
|
|
2457
|
+
/**
|
|
2458
|
+
* Performs the specified effect if this layer succeeds.
|
|
2459
|
+
*
|
|
2460
|
+
* @since 4.0.0
|
|
2461
|
+
* @category sequencing
|
|
2462
|
+
*/
|
|
2463
|
+
<ROut, XR extends ROut, RIn2, E2, X>(f: (context: ServiceMap.ServiceMap<XR>) => Effect<X, E2, RIn2>): <RIn, E>(self: Layer<ROut, E, RIn>) => Layer<ROut, E | E2, RIn | Exclude<RIn2, Scope.Scope>>
|
|
2464
|
+
/**
|
|
2465
|
+
* Performs the specified effect if this layer succeeds.
|
|
2466
|
+
*
|
|
2467
|
+
* @since 4.0.0
|
|
2468
|
+
* @category sequencing
|
|
2469
|
+
*/
|
|
2470
|
+
<RIn, E, ROut, XR extends ROut, RIn2, E2, X>(
|
|
2471
|
+
self: Layer<ROut, E, RIn>,
|
|
2472
|
+
f: (context: ServiceMap.ServiceMap<XR>) => Effect<X, E2, RIn2>
|
|
2473
|
+
): Layer<ROut, E | E2, RIn | Exclude<RIn2, Scope.Scope>>
|
|
2474
|
+
} = dual(2, <RIn, E, ROut, XR extends ROut, RIn2, E2, X>(
|
|
2475
|
+
self: Layer<ROut, E, RIn>,
|
|
2476
|
+
f: (context: ServiceMap.ServiceMap<XR>) => Effect<X, E2, RIn2>
|
|
2477
|
+
): Layer<ROut, E | E2, RIn | Exclude<RIn2, Scope.Scope>> =>
|
|
2478
|
+
fromBuild((memoMap, scope) =>
|
|
2479
|
+
internalEffect.flatMap(
|
|
2480
|
+
self.build(memoMap, scope),
|
|
2481
|
+
(context) => Scope.provide(internalEffect.as(f(context as ServiceMap.ServiceMap<XR>), context), scope)
|
|
2482
|
+
)
|
|
2483
|
+
))
|
|
2484
|
+
|
|
2485
|
+
/**
|
|
2486
|
+
* Performs the specified effect if this layer fails.
|
|
2487
|
+
*
|
|
2488
|
+
* @since 4.0.0
|
|
2489
|
+
* @category sequencing
|
|
2490
|
+
*/
|
|
2491
|
+
export const tapError: {
|
|
2492
|
+
/**
|
|
2493
|
+
* Performs the specified effect if this layer fails.
|
|
2494
|
+
*
|
|
2495
|
+
* @since 4.0.0
|
|
2496
|
+
* @category sequencing
|
|
2497
|
+
*/
|
|
2498
|
+
<E, XE extends E, RIn2, E2, X>(f: (e: XE) => Effect<X, E2, RIn2>): <RIn, ROut>(self: Layer<ROut, E, RIn>) => Layer<ROut, E | E2, RIn | Exclude<RIn2, Scope.Scope>>
|
|
2499
|
+
/**
|
|
2500
|
+
* Performs the specified effect if this layer fails.
|
|
2501
|
+
*
|
|
2502
|
+
* @since 4.0.0
|
|
2503
|
+
* @category sequencing
|
|
2504
|
+
*/
|
|
2505
|
+
<RIn, E, XE extends E, ROut, RIn2, E2, X>(self: Layer<ROut, E, RIn>, f: (e: XE) => Effect<X, E2, RIn2>): Layer<ROut, E | E2, RIn | Exclude<RIn2, Scope.Scope>>
|
|
2506
|
+
} = dual(2, <RIn, E, XE extends E, ROut, RIn2, E2, X>(
|
|
2507
|
+
self: Layer<ROut, E, RIn>,
|
|
2508
|
+
f: (e: XE) => Effect<X, E2, RIn2>
|
|
2509
|
+
): Layer<ROut, E | E2, RIn | Exclude<RIn2, Scope.Scope>> =>
|
|
2510
|
+
fromBuild((memoMap, scope) =>
|
|
2511
|
+
internalEffect.catch_(
|
|
2512
|
+
self.build(memoMap, scope),
|
|
2513
|
+
(error) => Scope.provide(internalEffect.andThen(f(error as XE), internalEffect.fail(error)), scope)
|
|
2514
|
+
)
|
|
2515
|
+
))
|
|
2516
|
+
|
|
2517
|
+
/**
|
|
2518
|
+
* Performs the specified effect if this layer fails.
|
|
2519
|
+
*
|
|
2520
|
+
* **Previously Known As**
|
|
2521
|
+
*
|
|
2522
|
+
* This API replaces the following from Effect 3.x:
|
|
2523
|
+
*
|
|
2524
|
+
* - `Layer.tapErrorCause`
|
|
2525
|
+
*
|
|
2526
|
+
* @since 4.0.0
|
|
2527
|
+
* @category sequencing
|
|
2528
|
+
*/
|
|
2529
|
+
export const tapCause: {
|
|
2530
|
+
/**
|
|
2531
|
+
* Performs the specified effect if this layer fails.
|
|
2532
|
+
*
|
|
2533
|
+
* **Previously Known As**
|
|
2534
|
+
*
|
|
2535
|
+
* This API replaces the following from Effect 3.x:
|
|
2536
|
+
*
|
|
2537
|
+
* - `Layer.tapErrorCause`
|
|
2538
|
+
*
|
|
2539
|
+
* @since 4.0.0
|
|
2540
|
+
* @category sequencing
|
|
2541
|
+
*/
|
|
2542
|
+
<E, XE extends E, RIn2, E2, X>(f: (cause: Cause.Cause<XE>) => Effect<X, E2, RIn2>): <RIn, ROut>(self: Layer<ROut, E, RIn>) => Layer<ROut, E | E2, RIn | Exclude<RIn2, Scope.Scope>>
|
|
2543
|
+
/**
|
|
2544
|
+
* Performs the specified effect if this layer fails.
|
|
2545
|
+
*
|
|
2546
|
+
* **Previously Known As**
|
|
2547
|
+
*
|
|
2548
|
+
* This API replaces the following from Effect 3.x:
|
|
2549
|
+
*
|
|
2550
|
+
* - `Layer.tapErrorCause`
|
|
2551
|
+
*
|
|
2552
|
+
* @since 4.0.0
|
|
2553
|
+
* @category sequencing
|
|
2554
|
+
*/
|
|
2555
|
+
<RIn, E, XE extends E, ROut, RIn2, E2, X>(
|
|
2556
|
+
self: Layer<ROut, E, RIn>,
|
|
2557
|
+
f: (cause: Cause.Cause<XE>) => Effect<X, E2, RIn2>
|
|
2558
|
+
): Layer<ROut, E | E2, RIn | Exclude<RIn2, Scope.Scope>>
|
|
2559
|
+
} = dual(2, <RIn, E, XE extends E, ROut, RIn2, E2, X>(
|
|
2560
|
+
self: Layer<ROut, E, RIn>,
|
|
2561
|
+
f: (cause: Cause.Cause<XE>) => Effect<X, E2, RIn2>
|
|
2562
|
+
): Layer<ROut, E | E2, RIn | Exclude<RIn2, Scope.Scope>> =>
|
|
2563
|
+
fromBuild((memoMap, scope) =>
|
|
2564
|
+
internalEffect.catchCause(
|
|
2565
|
+
self.build(memoMap, scope),
|
|
2566
|
+
(cause) =>
|
|
2567
|
+
Scope.provide(internalEffect.andThen(f(cause as Cause.Cause<XE>), internalEffect.failCause(cause)), scope)
|
|
2568
|
+
)
|
|
2569
|
+
))
|
|
2570
|
+
|
|
2450
2571
|
/**
|
|
2451
2572
|
* Translates effect failure into death of the fiber, making all failures
|
|
2452
2573
|
* unchecked and not a part of the type of the layer.
|
package/src/Number.ts
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import * as Equ from "./Equivalence.ts"
|
|
8
8
|
import { dual } from "./Function.ts"
|
|
9
|
+
import * as Option from "./Option.ts"
|
|
9
10
|
import * as order from "./Order.ts"
|
|
10
11
|
import type { Ordering } from "./Ordering.ts"
|
|
11
12
|
import * as predicate from "./Predicate.ts"
|
|
@@ -191,15 +192,15 @@ export const subtract: {
|
|
|
191
192
|
/**
|
|
192
193
|
* Provides a division operation on `number`s.
|
|
193
194
|
*
|
|
194
|
-
* Returns `
|
|
195
|
+
* Returns `Option.none()` if the divisor is `0`.
|
|
195
196
|
*
|
|
196
197
|
* **Example**
|
|
197
198
|
*
|
|
198
199
|
* ```ts
|
|
199
200
|
* import { Number } from "effect"
|
|
200
201
|
*
|
|
201
|
-
* Number.divide(6, 3) // 2
|
|
202
|
-
* Number.divide(6, 0) //
|
|
202
|
+
* Number.divide(6, 3) // Option.some(2)
|
|
203
|
+
* Number.divide(6, 0) // Option.none()
|
|
203
204
|
* ```
|
|
204
205
|
*
|
|
205
206
|
* @category math
|
|
@@ -209,42 +210,102 @@ export const divide: {
|
|
|
209
210
|
/**
|
|
210
211
|
* Provides a division operation on `number`s.
|
|
211
212
|
*
|
|
212
|
-
* Returns `
|
|
213
|
+
* Returns `Option.none()` if the divisor is `0`.
|
|
213
214
|
*
|
|
214
215
|
* **Example**
|
|
215
216
|
*
|
|
216
217
|
* ```ts
|
|
217
218
|
* import { Number } from "effect"
|
|
218
219
|
*
|
|
219
|
-
* Number.divide(6, 3) // 2
|
|
220
|
-
* Number.divide(6, 0) //
|
|
220
|
+
* Number.divide(6, 3) // Option.some(2)
|
|
221
|
+
* Number.divide(6, 0) // Option.none()
|
|
221
222
|
* ```
|
|
222
223
|
*
|
|
223
224
|
* @category math
|
|
224
225
|
* @since 2.0.0
|
|
225
226
|
*/
|
|
226
|
-
(that: number): (self: number) => number
|
|
227
|
+
(that: number): (self: number) => Option.Option<number>
|
|
227
228
|
/**
|
|
228
229
|
* Provides a division operation on `number`s.
|
|
229
230
|
*
|
|
230
|
-
* Returns `
|
|
231
|
+
* Returns `Option.none()` if the divisor is `0`.
|
|
231
232
|
*
|
|
232
233
|
* **Example**
|
|
233
234
|
*
|
|
234
235
|
* ```ts
|
|
235
236
|
* import { Number } from "effect"
|
|
236
237
|
*
|
|
237
|
-
* Number.divide(6, 3) // 2
|
|
238
|
-
* Number.divide(6, 0) //
|
|
238
|
+
* Number.divide(6, 3) // Option.some(2)
|
|
239
|
+
* Number.divide(6, 0) // Option.none()
|
|
239
240
|
* ```
|
|
240
241
|
*
|
|
241
242
|
* @category math
|
|
242
243
|
* @since 2.0.0
|
|
243
244
|
*/
|
|
244
|
-
(self: number, that: number): number
|
|
245
|
+
(self: number, that: number): Option.Option<number>
|
|
245
246
|
} = dual(
|
|
246
247
|
2,
|
|
247
|
-
(self: number, that: number): number
|
|
248
|
+
(self: number, that: number): Option.Option<number> => that === 0 ? Option.none() : Option.some(self / that)
|
|
249
|
+
)
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* Provides an unsafe division operation on `number`s.
|
|
253
|
+
*
|
|
254
|
+
* Throws a `RangeError` if the divisor is `0`.
|
|
255
|
+
*
|
|
256
|
+
* **Example**
|
|
257
|
+
*
|
|
258
|
+
* ```ts
|
|
259
|
+
* import { Number } from "effect"
|
|
260
|
+
*
|
|
261
|
+
* Number.divideUnsafe(6, 3) // 2
|
|
262
|
+
* Number.divideUnsafe(6, 0) // throws RangeError("Division by zero")
|
|
263
|
+
* ```
|
|
264
|
+
*
|
|
265
|
+
* @category math
|
|
266
|
+
* @since 2.0.0
|
|
267
|
+
*/
|
|
268
|
+
export const divideUnsafe: {
|
|
269
|
+
/**
|
|
270
|
+
* Provides an unsafe division operation on `number`s.
|
|
271
|
+
*
|
|
272
|
+
* Throws a `RangeError` if the divisor is `0`.
|
|
273
|
+
*
|
|
274
|
+
* **Example**
|
|
275
|
+
*
|
|
276
|
+
* ```ts
|
|
277
|
+
* import { Number } from "effect"
|
|
278
|
+
*
|
|
279
|
+
* Number.divideUnsafe(6, 3) // 2
|
|
280
|
+
* Number.divideUnsafe(6, 0) // throws RangeError("Division by zero")
|
|
281
|
+
* ```
|
|
282
|
+
*
|
|
283
|
+
* @category math
|
|
284
|
+
* @since 2.0.0
|
|
285
|
+
*/
|
|
286
|
+
(that: number): (self: number) => number
|
|
287
|
+
/**
|
|
288
|
+
* Provides an unsafe division operation on `number`s.
|
|
289
|
+
*
|
|
290
|
+
* Throws a `RangeError` if the divisor is `0`.
|
|
291
|
+
*
|
|
292
|
+
* **Example**
|
|
293
|
+
*
|
|
294
|
+
* ```ts
|
|
295
|
+
* import { Number } from "effect"
|
|
296
|
+
*
|
|
297
|
+
* Number.divideUnsafe(6, 3) // 2
|
|
298
|
+
* Number.divideUnsafe(6, 0) // throws RangeError("Division by zero")
|
|
299
|
+
* ```
|
|
300
|
+
*
|
|
301
|
+
* @category math
|
|
302
|
+
* @since 2.0.0
|
|
303
|
+
*/
|
|
304
|
+
(self: number, that: number): number
|
|
305
|
+
} = dual(
|
|
306
|
+
2,
|
|
307
|
+
(self: number, that: number): number =>
|
|
308
|
+
Option.getOrThrowWith(divide(self, that), () => new RangeError("Division by zero"))
|
|
248
309
|
)
|
|
249
310
|
|
|
250
311
|
/**
|
|
@@ -934,34 +995,32 @@ export const nextPow2 = (n: number): number => {
|
|
|
934
995
|
* ```ts
|
|
935
996
|
* import { Number } from "effect"
|
|
936
997
|
*
|
|
937
|
-
* Number.parse("42") // 42
|
|
938
|
-
* Number.parse("3.14") // 3.14
|
|
939
|
-
* Number.parse("NaN") // NaN
|
|
940
|
-
* Number.parse("Infinity") // Infinity
|
|
941
|
-
* Number.parse("-Infinity") // -Infinity
|
|
942
|
-
* Number.parse("not a number") //
|
|
998
|
+
* Number.parse("42") // Option.some(42)
|
|
999
|
+
* Number.parse("3.14") // Option.some(3.14)
|
|
1000
|
+
* Number.parse("NaN") // Option.some(NaN)
|
|
1001
|
+
* Number.parse("Infinity") // Option.some(Infinity)
|
|
1002
|
+
* Number.parse("-Infinity") // Option.some(-Infinity)
|
|
1003
|
+
* Number.parse("not a number") // Option.none()
|
|
943
1004
|
* ```
|
|
944
1005
|
*
|
|
945
1006
|
* @category constructors
|
|
946
1007
|
* @since 2.0.0
|
|
947
1008
|
*/
|
|
948
|
-
export const parse = (s: string): number
|
|
1009
|
+
export const parse = (s: string): Option.Option<number> => {
|
|
949
1010
|
if (s === "NaN") {
|
|
950
|
-
return NaN
|
|
1011
|
+
return Option.some(NaN)
|
|
951
1012
|
}
|
|
952
1013
|
if (s === "Infinity") {
|
|
953
|
-
return Infinity
|
|
1014
|
+
return Option.some(Infinity)
|
|
954
1015
|
}
|
|
955
1016
|
if (s === "-Infinity") {
|
|
956
|
-
return -Infinity
|
|
1017
|
+
return Option.some(-Infinity)
|
|
957
1018
|
}
|
|
958
1019
|
if (s.trim() === "") {
|
|
959
|
-
return
|
|
1020
|
+
return Option.none()
|
|
960
1021
|
}
|
|
961
1022
|
const n = Number(s)
|
|
962
|
-
return Number.isNaN(n) ?
|
|
963
|
-
undefined
|
|
964
|
-
: n
|
|
1023
|
+
return Number.isNaN(n) ? Option.none() : Option.some(n)
|
|
965
1024
|
}
|
|
966
1025
|
|
|
967
1026
|
/**
|
package/src/Option.ts
CHANGED
|
@@ -156,6 +156,7 @@ export type Option<A> = None<A> | Some<A>
|
|
|
156
156
|
export interface None<out A> extends Pipeable, Inspectable, Yieldable<Option<A>, A, NoSuchElementError> {
|
|
157
157
|
readonly _tag: "None"
|
|
158
158
|
readonly _op: "None"
|
|
159
|
+
readonly valueOrUndefined: undefined
|
|
159
160
|
readonly [TypeId]: {
|
|
160
161
|
readonly _A: Covariant<A>
|
|
161
162
|
}
|
|
@@ -189,6 +190,7 @@ export interface Some<out A> extends Pipeable, Inspectable, Yieldable<Option<A>,
|
|
|
189
190
|
readonly _tag: "Some"
|
|
190
191
|
readonly _op: "Some"
|
|
191
192
|
readonly value: A
|
|
193
|
+
readonly valueOrUndefined: A
|
|
192
194
|
readonly [TypeId]: {
|
|
193
195
|
readonly _A: Covariant<A>
|
|
194
196
|
}
|