effect 4.0.0-beta.0 → 4.0.0-beta.10
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/Cache.d.ts +2 -2
- package/dist/Cache.d.ts.map +1 -1
- package/dist/Cache.js +1 -1
- package/dist/Cache.js.map +1 -1
- package/dist/Cause.d.ts +1 -1
- package/dist/Cause.d.ts.map +1 -1
- package/dist/Channel.d.ts.map +1 -1
- package/dist/Channel.js +6 -4
- package/dist/Channel.js.map +1 -1
- package/dist/Combiner.d.ts +280 -13
- package/dist/Combiner.d.ts.map +1 -1
- package/dist/Combiner.js +198 -7
- package/dist/Combiner.js.map +1 -1
- package/dist/Config.d.ts +3 -3
- package/dist/Config.js +3 -3
- package/dist/Config.js.map +1 -1
- package/dist/ConfigProvider.d.ts +1 -1
- package/dist/Cron.d.ts +1 -1
- package/dist/Data.d.ts +534 -365
- package/dist/Data.d.ts.map +1 -1
- package/dist/Data.js +132 -79
- package/dist/Data.js.map +1 -1
- package/dist/DateTime.d.ts +23 -161
- package/dist/DateTime.d.ts.map +1 -1
- package/dist/DateTime.js +6 -51
- package/dist/DateTime.js.map +1 -1
- package/dist/Duration.d.ts +12 -12
- package/dist/Duration.d.ts.map +1 -1
- package/dist/Duration.js +12 -12
- package/dist/Duration.js.map +1 -1
- package/dist/Effect.d.ts +175 -240
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +73 -119
- package/dist/Effect.js.map +1 -1
- package/dist/Encoding.d.ts +194 -0
- package/dist/Encoding.d.ts.map +1 -0
- package/dist/Encoding.js +352 -0
- package/dist/Encoding.js.map +1 -0
- package/dist/Equal.d.ts +276 -109
- package/dist/Equal.d.ts.map +1 -1
- package/dist/Equal.js +124 -48
- package/dist/Equal.js.map +1 -1
- package/dist/FileSystem.d.ts +1 -1
- package/dist/FileSystem.d.ts.map +1 -1
- package/dist/FileSystem.js +5 -5
- package/dist/FileSystem.js.map +1 -1
- package/dist/Filter.d.ts +30 -1
- package/dist/Filter.d.ts.map +1 -1
- package/dist/Filter.js +15 -0
- package/dist/Filter.js.map +1 -1
- package/dist/Formatter.d.ts +131 -47
- package/dist/Formatter.d.ts.map +1 -1
- package/dist/Formatter.js +229 -51
- package/dist/Formatter.js.map +1 -1
- package/dist/Graph.d.ts +1 -1
- package/dist/Graph.d.ts.map +1 -1
- package/dist/Graph.js +2 -2
- package/dist/Graph.js.map +1 -1
- package/dist/JsonSchema.d.ts +299 -10
- package/dist/JsonSchema.d.ts.map +1 -1
- package/dist/JsonSchema.js +323 -4
- package/dist/JsonSchema.js.map +1 -1
- package/dist/Latch.d.ts +109 -0
- package/dist/Latch.d.ts.map +1 -0
- package/dist/Latch.js +72 -0
- package/dist/Latch.js.map +1 -0
- package/dist/LayerMap.d.ts +4 -4
- package/dist/LayerMap.d.ts.map +1 -1
- package/dist/LogLevel.d.ts +27 -0
- package/dist/LogLevel.d.ts.map +1 -1
- package/dist/LogLevel.js +28 -100
- package/dist/LogLevel.js.map +1 -1
- package/dist/Logger.d.ts +4 -4
- package/dist/Logger.d.ts.map +1 -1
- package/dist/Metric.d.ts +2 -2
- package/dist/Metric.d.ts.map +1 -1
- package/dist/Metric.js +1 -1
- package/dist/Metric.js.map +1 -1
- package/dist/Optic.d.ts +947 -18
- package/dist/Optic.d.ts.map +1 -1
- package/dist/Optic.js +454 -5
- package/dist/Optic.js.map +1 -1
- package/dist/Pipeable.d.ts +17 -0
- package/dist/Pipeable.d.ts.map +1 -1
- package/dist/Pipeable.js +19 -1
- package/dist/Pipeable.js.map +1 -1
- package/dist/PlatformError.d.ts +10 -9
- package/dist/PlatformError.d.ts.map +1 -1
- package/dist/PlatformError.js +2 -2
- package/dist/PlatformError.js.map +1 -1
- package/dist/Pool.d.ts +6 -4
- package/dist/Pool.d.ts.map +1 -1
- package/dist/Pool.js +7 -5
- package/dist/Pool.js.map +1 -1
- package/dist/PubSub.d.ts +3 -2
- package/dist/PubSub.d.ts.map +1 -1
- package/dist/PubSub.js +3 -2
- package/dist/PubSub.js.map +1 -1
- package/dist/Random.d.ts +18 -1
- package/dist/Random.d.ts.map +1 -1
- package/dist/Random.js +29 -12
- package/dist/Random.js.map +1 -1
- package/dist/RcMap.d.ts +2 -2
- package/dist/RcMap.d.ts.map +1 -1
- package/dist/RcMap.js +1 -1
- package/dist/RcMap.js.map +1 -1
- package/dist/RcRef.d.ts +1 -1
- package/dist/RcRef.d.ts.map +1 -1
- package/dist/Reducer.d.ts +166 -7
- package/dist/Reducer.d.ts.map +1 -1
- package/dist/Reducer.js +135 -1
- package/dist/Reducer.js.map +1 -1
- package/dist/Request.d.ts +1 -1
- package/dist/Request.d.ts.map +1 -1
- package/dist/Request.js +2 -1
- package/dist/Request.js.map +1 -1
- package/dist/RequestResolver.d.ts +6 -26
- package/dist/RequestResolver.d.ts.map +1 -1
- package/dist/RequestResolver.js +0 -20
- package/dist/RequestResolver.js.map +1 -1
- package/dist/Result.d.ts +12 -0
- package/dist/Result.d.ts.map +1 -1
- package/dist/Result.js +12 -0
- package/dist/Result.js.map +1 -1
- package/dist/Schedule.d.ts +33 -14
- package/dist/Schedule.d.ts.map +1 -1
- package/dist/Schedule.js +65 -24
- package/dist/Schedule.js.map +1 -1
- package/dist/Schema.d.ts +199 -49
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +386 -72
- package/dist/Schema.js.map +1 -1
- package/dist/SchemaGetter.d.ts +2 -2
- package/dist/SchemaGetter.d.ts.map +1 -1
- package/dist/SchemaGetter.js +12 -14
- package/dist/SchemaGetter.js.map +1 -1
- package/dist/SchemaRepresentation.d.ts +44 -43
- package/dist/SchemaRepresentation.d.ts.map +1 -1
- package/dist/SchemaRepresentation.js +43 -24
- package/dist/SchemaRepresentation.js.map +1 -1
- package/dist/SchemaTransformation.d.ts +37 -0
- package/dist/SchemaTransformation.d.ts.map +1 -1
- package/dist/SchemaTransformation.js +80 -0
- package/dist/SchemaTransformation.js.map +1 -1
- package/dist/ScopedCache.d.ts +2 -2
- package/dist/ScopedCache.d.ts.map +1 -1
- package/dist/ScopedCache.js +1 -1
- package/dist/ScopedCache.js.map +1 -1
- package/dist/Semaphore.d.ts +211 -0
- package/dist/Semaphore.d.ts.map +1 -0
- package/dist/{PartitionedSemaphore.js → Semaphore.js} +97 -13
- package/dist/Semaphore.js.map +1 -0
- package/dist/Stream.d.ts +19 -19
- package/dist/Stream.d.ts.map +1 -1
- package/dist/Stream.js +12 -11
- package/dist/Stream.js.map +1 -1
- package/dist/Struct.d.ts +16 -0
- package/dist/Struct.d.ts.map +1 -1
- package/dist/Struct.js +22 -0
- package/dist/Struct.js.map +1 -1
- package/dist/SubscriptionRef.d.ts +2 -1
- package/dist/SubscriptionRef.d.ts.map +1 -1
- package/dist/SubscriptionRef.js +2 -1
- package/dist/SubscriptionRef.js.map +1 -1
- package/dist/SynchronizedRef.d.ts +2 -1
- package/dist/SynchronizedRef.d.ts.map +1 -1
- package/dist/SynchronizedRef.js +2 -1
- package/dist/SynchronizedRef.js.map +1 -1
- package/dist/Types.d.ts +14 -6
- package/dist/Types.d.ts.map +1 -1
- package/dist/index.d.ts +499 -19
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +499 -19
- package/dist/index.js.map +1 -1
- package/dist/internal/core.js +11 -3
- package/dist/internal/core.js.map +1 -1
- package/dist/internal/dateTime.js +3 -11
- package/dist/internal/dateTime.js.map +1 -1
- package/dist/internal/effect.js +37 -22
- package/dist/internal/effect.js.map +1 -1
- package/dist/internal/random.d.ts +2 -0
- package/dist/internal/random.d.ts.map +1 -0
- package/dist/internal/random.js +13 -0
- package/dist/internal/random.js.map +1 -0
- package/dist/internal/rcRef.js +3 -2
- package/dist/internal/rcRef.js.map +1 -1
- package/dist/testing/TestClock.d.ts +7 -6
- package/dist/testing/TestClock.d.ts.map +1 -1
- package/dist/testing/TestClock.js +6 -4
- package/dist/testing/TestClock.js.map +1 -1
- package/dist/testing/TestSchema.d.ts +6 -6
- package/dist/testing/TestSchema.d.ts.map +1 -1
- package/dist/unstable/ai/AiError.d.ts +48 -48
- package/dist/unstable/ai/AiError.d.ts.map +1 -1
- package/dist/unstable/ai/Chat.d.ts +3 -3
- package/dist/unstable/ai/Chat.d.ts.map +1 -1
- package/dist/unstable/ai/Chat.js +4 -3
- package/dist/unstable/ai/Chat.js.map +1 -1
- package/dist/unstable/ai/LanguageModel.d.ts +2 -2
- package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
- package/dist/unstable/ai/McpSchema.d.ts +51 -51
- package/dist/unstable/ai/McpServer.d.ts +1 -1
- package/dist/unstable/ai/McpServer.d.ts.map +1 -1
- package/dist/unstable/ai/McpServer.js.map +1 -1
- package/dist/unstable/ai/Prompt.d.ts +20 -20
- package/dist/unstable/ai/Prompt.d.ts.map +1 -1
- package/dist/unstable/ai/Response.d.ts +26 -26
- package/dist/unstable/ai/Response.d.ts.map +1 -1
- package/dist/unstable/ai/Response.js +1 -1
- package/dist/unstable/ai/Response.js.map +1 -1
- package/dist/unstable/cli/CliError.d.ts +5 -5
- package/dist/unstable/cli/Prompt.js +2 -2
- package/dist/unstable/cli/Prompt.js.map +1 -1
- package/dist/unstable/cluster/ClusterCron.d.ts +1 -1
- package/dist/unstable/cluster/ClusterCron.d.ts.map +1 -1
- package/dist/unstable/cluster/ClusterCron.js +1 -1
- package/dist/unstable/cluster/ClusterCron.js.map +1 -1
- package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
- package/dist/unstable/cluster/ClusterWorkflowEngine.js +2 -1
- package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
- package/dist/unstable/cluster/Entity.d.ts +5 -4
- package/dist/unstable/cluster/Entity.d.ts.map +1 -1
- package/dist/unstable/cluster/Entity.js.map +1 -1
- package/dist/unstable/cluster/EntityResource.d.ts +2 -2
- package/dist/unstable/cluster/EntityResource.d.ts.map +1 -1
- package/dist/unstable/cluster/Envelope.d.ts +1 -1
- package/dist/unstable/cluster/K8sHttpClient.d.ts +1 -1
- package/dist/unstable/cluster/K8sHttpClient.js +1 -1
- package/dist/unstable/cluster/K8sHttpClient.js.map +1 -1
- package/dist/unstable/cluster/Message.d.ts +10 -10
- package/dist/unstable/cluster/MessageStorage.d.ts.map +1 -1
- package/dist/unstable/cluster/MessageStorage.js +2 -1
- package/dist/unstable/cluster/MessageStorage.js.map +1 -1
- package/dist/unstable/cluster/Reply.d.ts +6 -6
- package/dist/unstable/cluster/Runner.d.ts +1 -1
- package/dist/unstable/cluster/Runners.d.ts.map +1 -1
- package/dist/unstable/cluster/Runners.js +4 -3
- package/dist/unstable/cluster/Runners.js.map +1 -1
- package/dist/unstable/cluster/Sharding.d.ts +2 -2
- package/dist/unstable/cluster/Sharding.d.ts.map +1 -1
- package/dist/unstable/cluster/Sharding.js +8 -6
- package/dist/unstable/cluster/Sharding.js.map +1 -1
- package/dist/unstable/cluster/ShardingConfig.d.ts +21 -21
- package/dist/unstable/cluster/ShardingConfig.d.ts.map +1 -1
- package/dist/unstable/cluster/ShardingConfig.js.map +1 -1
- package/dist/unstable/cluster/SqlRunnerStorage.js +1 -1
- package/dist/unstable/cluster/SqlRunnerStorage.js.map +1 -1
- package/dist/unstable/cluster/internal/entityManager.js +5 -4
- package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
- package/dist/unstable/cluster/internal/entityReaper.js +2 -1
- package/dist/unstable/cluster/internal/entityReaper.js.map +1 -1
- package/dist/unstable/cluster/internal/resourceRef.js +2 -1
- package/dist/unstable/cluster/internal/resourceRef.js.map +1 -1
- package/dist/unstable/devtools/DevToolsSchema.d.ts +36 -36
- package/dist/unstable/encoding/Msgpack.d.ts +1 -1
- package/dist/unstable/encoding/Ndjson.d.ts +1 -1
- package/dist/unstable/encoding/Sse.d.ts +4 -4
- package/dist/unstable/encoding/Sse.d.ts.map +1 -1
- package/dist/unstable/encoding/Sse.js.map +1 -1
- package/dist/unstable/eventlog/EventJournal.d.ts +2 -2
- package/dist/unstable/eventlog/EventLog.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventLog.js +2 -1
- package/dist/unstable/eventlog/EventLog.js.map +1 -1
- package/dist/unstable/eventlog/EventLogRemote.d.ts +6 -6
- package/dist/unstable/http/Cookies.d.ts +3 -3
- package/dist/unstable/http/Cookies.d.ts.map +1 -1
- package/dist/unstable/http/Cookies.js +2 -2
- package/dist/unstable/http/Cookies.js.map +1 -1
- package/dist/unstable/http/HttpBody.d.ts +17 -2
- package/dist/unstable/http/HttpBody.d.ts.map +1 -1
- package/dist/unstable/http/HttpBody.js +28 -1
- package/dist/unstable/http/HttpBody.js.map +1 -1
- package/dist/unstable/http/HttpClient.d.ts +11 -11
- package/dist/unstable/http/HttpClient.d.ts.map +1 -1
- package/dist/unstable/http/HttpClient.js +4 -4
- package/dist/unstable/http/HttpClient.js.map +1 -1
- package/dist/unstable/http/HttpClientError.d.ts +7 -7
- package/dist/unstable/http/HttpClientRequest.d.ts +27 -11
- package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
- package/dist/unstable/http/HttpClientRequest.js +15 -3
- package/dist/unstable/http/HttpClientRequest.js.map +1 -1
- package/dist/unstable/http/HttpEffect.d.ts.map +1 -1
- package/dist/unstable/http/HttpEffect.js +18 -26
- package/dist/unstable/http/HttpEffect.js.map +1 -1
- package/dist/unstable/http/HttpMethod.d.ts +4 -4
- package/dist/unstable/http/HttpMethod.d.ts.map +1 -1
- package/dist/unstable/http/HttpMethod.js +3 -3
- package/dist/unstable/http/HttpMethod.js.map +1 -1
- package/dist/unstable/http/HttpMiddleware.d.ts +1 -6
- package/dist/unstable/http/HttpMiddleware.d.ts.map +1 -1
- package/dist/unstable/http/HttpMiddleware.js +4 -9
- package/dist/unstable/http/HttpMiddleware.js.map +1 -1
- package/dist/unstable/http/HttpServerError.d.ts +6 -6
- package/dist/unstable/http/HttpServerResponse.js +1 -1
- package/dist/unstable/http/HttpServerResponse.js.map +1 -1
- package/dist/unstable/http/Multipart.d.ts +3 -3
- package/dist/unstable/http/UrlParams.d.ts +14 -6
- package/dist/unstable/http/UrlParams.d.ts.map +1 -1
- package/dist/unstable/http/UrlParams.js +1 -1
- package/dist/unstable/http/UrlParams.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiBuilder.js +5 -5
- package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiClient.js +3 -3
- package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +21 -39
- package/dist/unstable/httpapi/HttpApiEndpoint.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiEndpoint.js +15 -24
- package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiScalar.d.ts +6 -0
- package/dist/unstable/httpapi/HttpApiScalar.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiScalar.js.map +1 -1
- package/dist/unstable/httpapi/OpenApi.d.ts.map +1 -1
- package/dist/unstable/httpapi/OpenApi.js +18 -16
- package/dist/unstable/httpapi/OpenApi.js.map +1 -1
- package/dist/unstable/observability/Otlp.d.ts +12 -12
- package/dist/unstable/observability/Otlp.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpExporter.d.ts +2 -2
- package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpExporter.js +1 -1
- package/dist/unstable/observability/OtlpExporter.js.map +1 -1
- package/dist/unstable/observability/OtlpLogger.d.ts +4 -4
- package/dist/unstable/observability/OtlpLogger.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpMetrics.d.ts +4 -4
- package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpTracer.d.ts +4 -4
- package/dist/unstable/observability/OtlpTracer.d.ts.map +1 -1
- package/dist/unstable/persistence/KeyValueStore.d.ts +1 -1
- package/dist/unstable/persistence/KeyValueStore.js +6 -6
- package/dist/unstable/persistence/KeyValueStore.js.map +1 -1
- package/dist/unstable/persistence/Persistable.d.ts +2 -2
- package/dist/unstable/persistence/Persistable.d.ts.map +1 -1
- package/dist/unstable/persistence/PersistedCache.d.ts +6 -5
- package/dist/unstable/persistence/PersistedCache.d.ts.map +1 -1
- package/dist/unstable/persistence/PersistedCache.js +2 -1
- package/dist/unstable/persistence/PersistedCache.js.map +1 -1
- package/dist/unstable/persistence/PersistedQueue.d.ts +12 -12
- package/dist/unstable/persistence/PersistedQueue.d.ts.map +1 -1
- package/dist/unstable/persistence/PersistedQueue.js +12 -11
- package/dist/unstable/persistence/PersistedQueue.js.map +1 -1
- package/dist/unstable/persistence/Persistence.d.ts +1 -1
- package/dist/unstable/persistence/Persistence.d.ts.map +1 -1
- package/dist/unstable/persistence/Persistence.js +2 -2
- package/dist/unstable/persistence/Persistence.js.map +1 -1
- package/dist/unstable/persistence/RateLimiter.d.ts +3 -3
- package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
- package/dist/unstable/persistence/RateLimiter.js +1 -1
- package/dist/unstable/persistence/RateLimiter.js.map +1 -1
- package/dist/unstable/process/ChildProcess.d.ts +2 -2
- package/dist/unstable/process/ChildProcess.d.ts.map +1 -1
- package/dist/unstable/process/ChildProcessSpawner.d.ts +6 -0
- package/dist/unstable/process/ChildProcessSpawner.d.ts.map +1 -1
- package/dist/unstable/process/ChildProcessSpawner.js.map +1 -1
- package/dist/unstable/reactivity/Atom.d.ts +6 -6
- package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
- package/dist/unstable/reactivity/Atom.js +15 -12
- package/dist/unstable/reactivity/Atom.js.map +1 -1
- package/dist/unstable/reactivity/AtomHttpApi.d.ts +6 -6
- package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomHttpApi.js +3 -3
- package/dist/unstable/reactivity/AtomHttpApi.js.map +1 -1
- package/dist/unstable/reactivity/AtomRpc.d.ts +1 -1
- package/dist/unstable/reactivity/AtomRpc.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomRpc.js +1 -1
- package/dist/unstable/reactivity/AtomRpc.js.map +1 -1
- package/dist/unstable/reactivity/Hydration.d.ts +39 -0
- package/dist/unstable/reactivity/Hydration.d.ts.map +1 -0
- package/dist/unstable/reactivity/Hydration.js +76 -0
- package/dist/unstable/reactivity/Hydration.js.map +1 -0
- package/dist/unstable/reactivity/index.d.ts +4 -0
- package/dist/unstable/reactivity/index.d.ts.map +1 -1
- package/dist/unstable/reactivity/index.js +4 -0
- package/dist/unstable/reactivity/index.js.map +1 -1
- package/dist/unstable/rpc/Rpc.d.ts +2 -2
- package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcClient.d.ts +5 -26
- package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcClient.js +6 -13
- package/dist/unstable/rpc/RpcClient.js.map +1 -1
- package/dist/unstable/rpc/RpcServer.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcServer.js +5 -3
- package/dist/unstable/rpc/RpcServer.js.map +1 -1
- package/dist/unstable/rpc/Utils.d.ts.map +1 -1
- package/dist/unstable/rpc/Utils.js +2 -1
- package/dist/unstable/rpc/Utils.js.map +1 -1
- package/dist/unstable/schema/Model.d.ts +4 -4
- package/dist/unstable/schema/Model.d.ts.map +1 -1
- package/dist/unstable/schema/VariantSchema.d.ts +2 -2
- package/dist/unstable/schema/VariantSchema.d.ts.map +1 -1
- package/dist/unstable/schema/VariantSchema.js +13 -2
- package/dist/unstable/schema/VariantSchema.js.map +1 -1
- package/dist/unstable/socket/Socket.d.ts +4 -4
- package/dist/unstable/socket/Socket.d.ts.map +1 -1
- package/dist/unstable/socket/Socket.js +3 -2
- package/dist/unstable/socket/Socket.js.map +1 -1
- package/dist/unstable/socket/SocketServer.d.ts +3 -3
- package/dist/unstable/sql/Migrator.d.ts +1 -1
- package/dist/unstable/sql/SqlError.d.ts +2 -2
- package/dist/unstable/sql/SqlModel.d.ts +2 -2
- package/dist/unstable/sql/SqlModel.d.ts.map +1 -1
- package/dist/unstable/sql/SqlSchema.d.ts +24 -1
- package/dist/unstable/sql/SqlSchema.d.ts.map +1 -1
- package/dist/unstable/sql/SqlSchema.js +24 -3
- package/dist/unstable/sql/SqlSchema.js.map +1 -1
- package/dist/unstable/sql/Statement.js +0 -1
- package/dist/unstable/sql/Statement.js.map +1 -1
- package/dist/unstable/workers/Worker.d.ts.map +1 -1
- package/dist/unstable/workers/Worker.js +2 -1
- package/dist/unstable/workers/Worker.js.map +1 -1
- package/dist/unstable/workflow/DurableClock.d.ts +3 -3
- package/dist/unstable/workflow/DurableClock.d.ts.map +1 -1
- package/dist/unstable/workflow/DurableClock.js +3 -3
- package/dist/unstable/workflow/DurableClock.js.map +1 -1
- package/dist/unstable/workflow/DurableDeferred.js +2 -2
- package/dist/unstable/workflow/DurableDeferred.js.map +1 -1
- package/dist/unstable/workflow/Workflow.d.ts +2 -2
- package/dist/unstable/workflow/WorkflowEngine.d.ts +2 -1
- package/dist/unstable/workflow/WorkflowEngine.d.ts.map +1 -1
- package/dist/unstable/workflow/WorkflowEngine.js +2 -1
- package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
- package/package.json +2 -2
- package/src/Cache.ts +3 -3
- package/src/Cause.ts +1 -1
- package/src/Channel.ts +6 -4
- package/src/Combiner.ts +280 -13
- package/src/Config.ts +3 -3
- package/src/Data.ts +538 -374
- package/src/DateTime.ts +24 -164
- package/src/Duration.ts +15 -15
- package/src/Effect.ts +202 -261
- package/src/Encoding.ts +879 -0
- package/src/Equal.ts +278 -111
- package/src/FileSystem.ts +7 -8
- package/src/Filter.ts +48 -1
- package/src/Formatter.ts +253 -51
- package/src/Graph.ts +8 -5
- package/src/JsonSchema.ts +383 -10
- package/src/Latch.ts +112 -0
- package/src/LayerMap.ts +5 -5
- package/src/LogLevel.ts +31 -0
- package/src/Logger.ts +5 -5
- package/src/Metric.ts +4 -4
- package/src/Optic.ts +948 -19
- package/src/Pipeable.ts +32 -1
- package/src/PlatformError.ts +5 -5
- package/src/Pool.ts +13 -11
- package/src/PubSub.ts +10 -9
- package/src/Random.ts +33 -14
- package/src/RcMap.ts +5 -5
- package/src/RcRef.ts +1 -1
- package/src/Reducer.ts +166 -7
- package/src/Request.ts +3 -2
- package/src/RequestResolver.ts +9 -29
- package/src/Result.ts +13 -0
- package/src/Schedule.ts +279 -140
- package/src/Schema.ts +575 -113
- package/src/SchemaGetter.ts +12 -14
- package/src/SchemaRepresentation.ts +43 -24
- package/src/SchemaTransformation.ts +104 -0
- package/src/ScopedCache.ts +3 -3
- package/src/Semaphore.ts +356 -0
- package/src/Stream.ts +43 -42
- package/src/Struct.ts +26 -0
- package/src/SubscriptionRef.ts +3 -2
- package/src/SynchronizedRef.ts +3 -2
- package/src/Types.ts +12 -2
- package/src/index.ts +502 -20
- package/src/internal/core.ts +12 -5
- package/src/internal/dateTime.ts +9 -30
- package/src/internal/effect.ts +70 -37
- package/src/internal/random.ts +20 -0
- package/src/internal/rcRef.ts +4 -3
- package/src/testing/TestClock.ts +13 -11
- package/src/testing/TestSchema.ts +8 -8
- package/src/unstable/ai/AiError.ts +2 -2
- package/src/unstable/ai/Chat.ts +12 -11
- package/src/unstable/ai/LanguageModel.ts +3 -3
- package/src/unstable/ai/McpServer.ts +2 -2
- package/src/unstable/ai/Prompt.ts +37 -37
- package/src/unstable/ai/Response.ts +25 -25
- package/src/unstable/cli/Prompt.ts +2 -2
- package/src/unstable/cluster/ClusterCron.ts +2 -2
- package/src/unstable/cluster/ClusterWorkflowEngine.ts +3 -2
- package/src/unstable/cluster/Entity.ts +7 -6
- package/src/unstable/cluster/EntityResource.ts +4 -4
- package/src/unstable/cluster/Envelope.ts +1 -1
- package/src/unstable/cluster/K8sHttpClient.ts +1 -1
- package/src/unstable/cluster/MessageStorage.ts +3 -5
- package/src/unstable/cluster/Runners.ts +6 -5
- package/src/unstable/cluster/Sharding.ts +11 -9
- package/src/unstable/cluster/ShardingConfig.ts +10 -11
- package/src/unstable/cluster/SqlRunnerStorage.ts +1 -1
- package/src/unstable/cluster/internal/entityManager.ts +9 -8
- package/src/unstable/cluster/internal/entityReaper.ts +2 -1
- package/src/unstable/cluster/internal/resourceRef.ts +2 -1
- package/src/unstable/encoding/Sse.ts +2 -4
- package/src/unstable/eventlog/EventLog.ts +2 -1
- package/src/unstable/http/Cookies.ts +3 -3
- package/src/unstable/http/HttpBody.ts +42 -1
- package/src/unstable/http/HttpClient.ts +19 -19
- package/src/unstable/http/HttpClientRequest.ts +38 -13
- package/src/unstable/http/HttpEffect.ts +17 -25
- package/src/unstable/http/HttpMethod.ts +16 -4
- package/src/unstable/http/HttpMiddleware.ts +5 -10
- package/src/unstable/http/HttpServerResponse.ts +1 -1
- package/src/unstable/http/Multipart.ts +2 -2
- package/src/unstable/http/UrlParams.ts +20 -5
- package/src/unstable/httpapi/HttpApiBuilder.ts +5 -5
- package/src/unstable/httpapi/HttpApiClient.ts +3 -3
- package/src/unstable/httpapi/HttpApiEndpoint.ts +47 -72
- package/src/unstable/httpapi/HttpApiScalar.ts +6 -0
- package/src/unstable/httpapi/OpenApi.ts +18 -16
- package/src/unstable/observability/Otlp.ts +12 -12
- package/src/unstable/observability/OtlpExporter.ts +3 -3
- package/src/unstable/observability/OtlpLogger.ts +4 -4
- package/src/unstable/observability/OtlpMetrics.ts +4 -4
- package/src/unstable/observability/OtlpTracer.ts +4 -4
- package/src/unstable/persistence/KeyValueStore.ts +6 -6
- package/src/unstable/persistence/Persistable.ts +2 -2
- package/src/unstable/persistence/PersistedCache.ts +20 -9
- package/src/unstable/persistence/PersistedQueue.ts +25 -24
- package/src/unstable/persistence/Persistence.ts +3 -3
- package/src/unstable/persistence/RateLimiter.ts +4 -4
- package/src/unstable/process/ChildProcess.ts +2 -2
- package/src/unstable/process/ChildProcessSpawner.ts +6 -0
- package/src/unstable/reactivity/Atom.ts +20 -18
- package/src/unstable/reactivity/AtomHttpApi.ts +19 -18
- package/src/unstable/reactivity/AtomRpc.ts +3 -3
- package/src/unstable/reactivity/Hydration.ts +112 -0
- package/src/unstable/reactivity/index.ts +5 -0
- package/src/unstable/rpc/Rpc.ts +3 -3
- package/src/unstable/rpc/RpcClient.ts +12 -54
- package/src/unstable/rpc/RpcServer.ts +6 -4
- package/src/unstable/rpc/Utils.ts +2 -1
- package/src/unstable/schema/VariantSchema.ts +36 -7
- package/src/unstable/socket/Socket.ts +7 -6
- package/src/unstable/sql/SqlModel.ts +2 -2
- package/src/unstable/sql/SqlSchema.ts +62 -13
- package/src/unstable/sql/Statement.ts +0 -1
- package/src/unstable/workers/Worker.ts +2 -1
- package/src/unstable/workflow/DurableClock.ts +8 -8
- package/src/unstable/workflow/DurableDeferred.ts +2 -2
- package/src/unstable/workflow/WorkflowEngine.ts +3 -2
- package/dist/PartitionedSemaphore.d.ts +0 -52
- package/dist/PartitionedSemaphore.d.ts.map +0 -1
- package/dist/PartitionedSemaphore.js.map +0 -1
- package/dist/encoding/Base64.d.ts +0 -67
- package/dist/encoding/Base64.d.ts.map +0 -1
- package/dist/encoding/Base64.js +0 -146
- package/dist/encoding/Base64.js.map +0 -1
- package/dist/encoding/Base64Url.d.ts +0 -60
- package/dist/encoding/Base64Url.d.ts.map +0 -1
- package/dist/encoding/Base64Url.js +0 -89
- package/dist/encoding/Base64Url.js.map +0 -1
- package/dist/encoding/EncodingError.d.ts +0 -31
- package/dist/encoding/EncodingError.d.ts.map +0 -1
- package/dist/encoding/EncodingError.js +0 -22
- package/dist/encoding/EncodingError.js.map +0 -1
- package/dist/encoding/Hex.d.ts +0 -61
- package/dist/encoding/Hex.d.ts.map +0 -1
- package/dist/encoding/Hex.js +0 -115
- package/dist/encoding/Hex.js.map +0 -1
- package/dist/encoding/index.d.ts +0 -26
- package/dist/encoding/index.d.ts.map +0 -1
- package/dist/encoding/index.js +0 -27
- package/dist/encoding/index.js.map +0 -1
- package/src/PartitionedSemaphore.ts +0 -182
- package/src/encoding/Base64.ts +0 -366
- package/src/encoding/Base64Url.ts +0 -104
- package/src/encoding/EncodingError.ts +0 -35
- package/src/encoding/Hex.ts +0 -390
- package/src/encoding/index.ts +0 -31
package/src/Pipeable.ts
CHANGED
|
@@ -554,8 +554,39 @@ export const pipeArguments = <A>(self: A, args: IArguments): unknown => {
|
|
|
554
554
|
/**
|
|
555
555
|
* @since 4.0.0
|
|
556
556
|
*/
|
|
557
|
-
export const
|
|
557
|
+
export const Prototype: Pipeable = {
|
|
558
558
|
pipe() {
|
|
559
559
|
return pipeArguments(this, arguments)
|
|
560
560
|
}
|
|
561
561
|
}
|
|
562
|
+
|
|
563
|
+
/**
|
|
564
|
+
* @since 4.0.0
|
|
565
|
+
* @category constructors
|
|
566
|
+
*/
|
|
567
|
+
export const Class: new() => Pipeable = (function() {
|
|
568
|
+
function PipeableBase() {}
|
|
569
|
+
PipeableBase.prototype = Prototype
|
|
570
|
+
return PipeableBase as any
|
|
571
|
+
})()
|
|
572
|
+
|
|
573
|
+
/**
|
|
574
|
+
* @since 4.0.0
|
|
575
|
+
* @category models
|
|
576
|
+
*/
|
|
577
|
+
export interface PipeableConstructor {
|
|
578
|
+
new(...args: ReadonlyArray<any>): Pipeable
|
|
579
|
+
}
|
|
580
|
+
|
|
581
|
+
/**
|
|
582
|
+
* @since 4.0.0
|
|
583
|
+
* @category constructors
|
|
584
|
+
*/
|
|
585
|
+
export const Mixin = <TBase extends new(...args: ReadonlyArray<any>) => any>(
|
|
586
|
+
klass: TBase
|
|
587
|
+
): TBase & PipeableConstructor =>
|
|
588
|
+
(class extends klass {
|
|
589
|
+
pipe() {
|
|
590
|
+
return pipeArguments(this, arguments)
|
|
591
|
+
}
|
|
592
|
+
})
|
package/src/PlatformError.ts
CHANGED
|
@@ -27,7 +27,7 @@ export class BadArgument extends Data.TaggedError("BadArgument")<{
|
|
|
27
27
|
* @since 4.0.0
|
|
28
28
|
* @category Model
|
|
29
29
|
*/
|
|
30
|
-
export type
|
|
30
|
+
export type SystemErrorTag =
|
|
31
31
|
| "AlreadyExists"
|
|
32
32
|
| "BadResource"
|
|
33
33
|
| "Busy"
|
|
@@ -44,8 +44,8 @@ export type SystemErrorKind =
|
|
|
44
44
|
* @since 4.0.0
|
|
45
45
|
* @category models
|
|
46
46
|
*/
|
|
47
|
-
export class SystemError extends Data.
|
|
48
|
-
|
|
47
|
+
export class SystemError extends Data.Error<{
|
|
48
|
+
_tag: SystemErrorTag
|
|
49
49
|
module: string
|
|
50
50
|
method: string
|
|
51
51
|
description?: string | undefined
|
|
@@ -57,7 +57,7 @@ export class SystemError extends Data.TaggedError("SystemError")<{
|
|
|
57
57
|
* @since 4.0.0
|
|
58
58
|
*/
|
|
59
59
|
override get message(): string {
|
|
60
|
-
return `${this.
|
|
60
|
+
return `${this._tag}: ${this.module}.${this.method}${
|
|
61
61
|
this.pathOrDescriptor !== undefined ? ` (${this.pathOrDescriptor})` : ""
|
|
62
62
|
}${this.description ? `: ${this.description}` : ""}`
|
|
63
63
|
}
|
|
@@ -93,7 +93,7 @@ export class PlatformError extends Data.TaggedError("PlatformError")<{
|
|
|
93
93
|
* @category constructors
|
|
94
94
|
*/
|
|
95
95
|
export const systemError = (options: {
|
|
96
|
-
readonly
|
|
96
|
+
readonly _tag: SystemErrorTag
|
|
97
97
|
readonly module: string
|
|
98
98
|
readonly method: string
|
|
99
99
|
readonly description?: string | undefined
|
package/src/Pool.ts
CHANGED
|
@@ -9,11 +9,13 @@ import type * as Exit from "./Exit.ts"
|
|
|
9
9
|
import * as Fiber from "./Fiber.ts"
|
|
10
10
|
import { dual, identity } from "./Function.ts"
|
|
11
11
|
import * as Iterable from "./Iterable.ts"
|
|
12
|
+
import * as Latch from "./Latch.ts"
|
|
12
13
|
import { type Pipeable, pipeArguments } from "./Pipeable.ts"
|
|
13
14
|
import { hasProperty } from "./Predicate.ts"
|
|
14
15
|
import * as Queue from "./Queue.ts"
|
|
15
16
|
import { UnhandledLogLevel } from "./References.ts"
|
|
16
17
|
import * as Scope from "./Scope.ts"
|
|
18
|
+
import * as Semaphore from "./Semaphore.ts"
|
|
17
19
|
import * as ServiceMap from "./ServiceMap.ts"
|
|
18
20
|
|
|
19
21
|
const TypeId = "~effect/Pool"
|
|
@@ -52,11 +54,11 @@ export interface Config<A, E> {
|
|
|
52
54
|
export interface State<A, E> {
|
|
53
55
|
readonly scope: Scope.Scope
|
|
54
56
|
isShuttingDown: boolean
|
|
55
|
-
readonly semaphore:
|
|
56
|
-
readonly resizeSemaphore:
|
|
57
|
+
readonly semaphore: Semaphore.Semaphore
|
|
58
|
+
readonly resizeSemaphore: Semaphore.Semaphore
|
|
57
59
|
readonly items: Set<PoolItem<A, E>>
|
|
58
60
|
readonly available: Set<PoolItem<A, E>>
|
|
59
|
-
readonly availableLatch:
|
|
61
|
+
readonly availableLatch: Latch.Latch
|
|
60
62
|
readonly invalidated: Set<PoolItem<A, E>>
|
|
61
63
|
waiters: number
|
|
62
64
|
}
|
|
@@ -170,7 +172,7 @@ export const makeWithTTL = <A, E, R>(options: {
|
|
|
170
172
|
readonly max: number
|
|
171
173
|
readonly concurrency?: number | undefined
|
|
172
174
|
readonly targetUtilization?: number | undefined
|
|
173
|
-
readonly timeToLive: Duration.
|
|
175
|
+
readonly timeToLive: Duration.Input
|
|
174
176
|
readonly timeToLiveStrategy?: "creation" | "usage" | undefined
|
|
175
177
|
}): Effect.Effect<Pool<A, E>, never, R | Scope.Scope> =>
|
|
176
178
|
Effect.flatMap(
|
|
@@ -212,11 +214,11 @@ export const makeWithStrategy = <A, E, R>(options: {
|
|
|
212
214
|
const state: State<A, E> = {
|
|
213
215
|
scope,
|
|
214
216
|
isShuttingDown: false,
|
|
215
|
-
semaphore:
|
|
216
|
-
resizeSemaphore:
|
|
217
|
+
semaphore: Semaphore.makeUnsafe(concurrency * options.max),
|
|
218
|
+
resizeSemaphore: Semaphore.makeUnsafe(1),
|
|
217
219
|
items: new Set(),
|
|
218
220
|
available: new Set(),
|
|
219
|
-
availableLatch:
|
|
221
|
+
availableLatch: Latch.makeUnsafe(false),
|
|
220
222
|
invalidated: new Set(),
|
|
221
223
|
waiters: 0
|
|
222
224
|
}
|
|
@@ -244,7 +246,7 @@ const shutdown = Effect.fnUntraced(function*<A, E>(self: Pool<A, E>) {
|
|
|
244
246
|
if (self.state.isShuttingDown) return
|
|
245
247
|
self.state.isShuttingDown = true
|
|
246
248
|
const size = self.state.items.size
|
|
247
|
-
const semaphore =
|
|
249
|
+
const semaphore = Semaphore.makeUnsafe(size)
|
|
248
250
|
for (const item of self.state.items) {
|
|
249
251
|
if (item.refCount > 0) {
|
|
250
252
|
item.finalizer = Effect.tap(item.finalizer, semaphore.release(1))
|
|
@@ -471,10 +473,10 @@ const strategyNoop = <A, E>(): Strategy<A, E> => ({
|
|
|
471
473
|
reclaim: (_) => Effect.undefined
|
|
472
474
|
})
|
|
473
475
|
|
|
474
|
-
const strategyCreationTTL = Effect.fnUntraced(function*<A, E>(ttl: Duration.
|
|
476
|
+
const strategyCreationTTL = Effect.fnUntraced(function*<A, E>(ttl: Duration.Input) {
|
|
475
477
|
const clock = yield* Clock
|
|
476
478
|
const queue = yield* Queue.unbounded<PoolItem<A, E>>()
|
|
477
|
-
const ttlMillis = Duration.toMillis(Duration.
|
|
479
|
+
const ttlMillis = Duration.toMillis(Duration.fromInputUnsafe(ttl))
|
|
478
480
|
const creationTimes = new WeakMap<PoolItem<A, E>, number>()
|
|
479
481
|
return identity<Strategy<A, E>>({
|
|
480
482
|
run: (pool) => {
|
|
@@ -504,7 +506,7 @@ const strategyCreationTTL = Effect.fnUntraced(function*<A, E>(ttl: Duration.Dura
|
|
|
504
506
|
})
|
|
505
507
|
})
|
|
506
508
|
|
|
507
|
-
const strategyUsageTTL = Effect.fnUntraced(function*<A, E>(ttl: Duration.
|
|
509
|
+
const strategyUsageTTL = Effect.fnUntraced(function*<A, E>(ttl: Duration.Input) {
|
|
508
510
|
const queue = yield* Queue.unbounded<PoolItem<A, E>>()
|
|
509
511
|
return identity<Strategy<A, E>>({
|
|
510
512
|
run: (pool) => {
|
package/src/PubSub.ts
CHANGED
|
@@ -34,6 +34,7 @@ import * as Effect from "./Effect.ts"
|
|
|
34
34
|
import * as Exit from "./Exit.ts"
|
|
35
35
|
import type { LazyArg } from "./Function.ts"
|
|
36
36
|
import { dual, identity } from "./Function.ts"
|
|
37
|
+
import * as Latch from "./Latch.ts"
|
|
37
38
|
import * as MutableList from "./MutableList.ts"
|
|
38
39
|
import * as MutableRef from "./MutableRef.ts"
|
|
39
40
|
import { nextPow2 } from "./Number.ts"
|
|
@@ -81,7 +82,7 @@ export interface PubSub<in out A> extends Pipeable {
|
|
|
81
82
|
readonly pubsub: PubSub.Atomic<A>
|
|
82
83
|
readonly subscribers: PubSub.Subscribers<A>
|
|
83
84
|
readonly scope: Scope.Closeable
|
|
84
|
-
readonly shutdownHook:
|
|
85
|
+
readonly shutdownHook: Latch.Latch
|
|
85
86
|
readonly shutdownFlag: MutableRef.MutableRef<boolean>
|
|
86
87
|
readonly strategy: PubSub.Strategy<A>
|
|
87
88
|
}
|
|
@@ -242,7 +243,7 @@ export interface Subscription<out A> extends Pipeable {
|
|
|
242
243
|
readonly subscribers: PubSub.Subscribers<any>
|
|
243
244
|
readonly subscription: PubSub.BackingSubscription<A>
|
|
244
245
|
readonly pollers: MutableList.MutableList<Deferred.Deferred<any>>
|
|
245
|
-
readonly shutdownHook:
|
|
246
|
+
readonly shutdownHook: Latch.Latch
|
|
246
247
|
readonly shutdownFlag: MutableRef.MutableRef<boolean>
|
|
247
248
|
readonly strategy: PubSub.Strategy<any>
|
|
248
249
|
readonly replayWindow: PubSub.ReplayWindow<A>
|
|
@@ -282,7 +283,7 @@ export const make = <A>(
|
|
|
282
283
|
options.atomicPubSub(),
|
|
283
284
|
new Map(),
|
|
284
285
|
Scope.makeUnsafe(),
|
|
285
|
-
|
|
286
|
+
Latch.makeUnsafe(false),
|
|
286
287
|
MutableRef.make(false),
|
|
287
288
|
options.strategy()
|
|
288
289
|
)
|
|
@@ -1701,7 +1702,7 @@ const makeSubscriptionUnsafe = <A>(
|
|
|
1701
1702
|
subscribers,
|
|
1702
1703
|
pubsub.subscribe(),
|
|
1703
1704
|
MutableList.make<Deferred.Deferred<A>>(),
|
|
1704
|
-
|
|
1705
|
+
Latch.makeUnsafe(false),
|
|
1705
1706
|
MutableRef.make(false),
|
|
1706
1707
|
strategy,
|
|
1707
1708
|
pubsub.replayWindow()
|
|
@@ -2446,7 +2447,7 @@ class SubscriptionImpl<in out A> implements Subscription<A> {
|
|
|
2446
2447
|
readonly subscribers: PubSub.Subscribers<A>
|
|
2447
2448
|
readonly subscription: PubSub.BackingSubscription<A>
|
|
2448
2449
|
readonly pollers: MutableList.MutableList<Deferred.Deferred<A>>
|
|
2449
|
-
readonly shutdownHook:
|
|
2450
|
+
readonly shutdownHook: Latch.Latch
|
|
2450
2451
|
readonly shutdownFlag: MutableRef.MutableRef<boolean>
|
|
2451
2452
|
readonly strategy: PubSub.Strategy<A>
|
|
2452
2453
|
readonly replayWindow: PubSub.ReplayWindow<A>
|
|
@@ -2456,7 +2457,7 @@ class SubscriptionImpl<in out A> implements Subscription<A> {
|
|
|
2456
2457
|
subscribers: PubSub.Subscribers<A>,
|
|
2457
2458
|
subscription: PubSub.BackingSubscription<A>,
|
|
2458
2459
|
pollers: MutableList.MutableList<Deferred.Deferred<A>>,
|
|
2459
|
-
shutdownHook:
|
|
2460
|
+
shutdownHook: Latch.Latch,
|
|
2460
2461
|
shutdownFlag: MutableRef.MutableRef<boolean>,
|
|
2461
2462
|
strategy: PubSub.Strategy<A>,
|
|
2462
2463
|
replayWindow: PubSub.ReplayWindow<A>
|
|
@@ -2484,7 +2485,7 @@ class PubSubImpl<in out A> implements PubSub<A> {
|
|
|
2484
2485
|
readonly pubsub: PubSub.Atomic<A>
|
|
2485
2486
|
readonly subscribers: PubSub.Subscribers<A>
|
|
2486
2487
|
readonly scope: Scope.Closeable
|
|
2487
|
-
readonly shutdownHook:
|
|
2488
|
+
readonly shutdownHook: Latch.Latch
|
|
2488
2489
|
readonly shutdownFlag: MutableRef.MutableRef<boolean>
|
|
2489
2490
|
readonly strategy: PubSub.Strategy<A>
|
|
2490
2491
|
|
|
@@ -2492,7 +2493,7 @@ class PubSubImpl<in out A> implements PubSub<A> {
|
|
|
2492
2493
|
pubsub: PubSub.Atomic<A>,
|
|
2493
2494
|
subscribers: PubSub.Subscribers<A>,
|
|
2494
2495
|
scope: Scope.Closeable,
|
|
2495
|
-
shutdownHook:
|
|
2496
|
+
shutdownHook: Latch.Latch,
|
|
2496
2497
|
shutdownFlag: MutableRef.MutableRef<boolean>,
|
|
2497
2498
|
strategy: PubSub.Strategy<A>
|
|
2498
2499
|
) {
|
|
@@ -2513,7 +2514,7 @@ const makePubSubUnsafe = <A>(
|
|
|
2513
2514
|
pubsub: PubSub.Atomic<A>,
|
|
2514
2515
|
subscribers: PubSub.Subscribers<A>,
|
|
2515
2516
|
scope: Scope.Closeable,
|
|
2516
|
-
shutdownHook:
|
|
2517
|
+
shutdownHook: Latch.Latch,
|
|
2517
2518
|
shutdownFlag: MutableRef.MutableRef<boolean>,
|
|
2518
2519
|
strategy: PubSub.Strategy<A>
|
|
2519
2520
|
): PubSub<A> => new PubSubImpl(pubsub, subscribers, scope, shutdownHook, shutdownFlag, strategy)
|
package/src/Random.ts
CHANGED
|
@@ -23,8 +23,9 @@
|
|
|
23
23
|
*/
|
|
24
24
|
import * as Effect from "./Effect.ts"
|
|
25
25
|
import { dual } from "./Function.ts"
|
|
26
|
+
import * as random from "./internal/random.ts"
|
|
26
27
|
import * as Predicate from "./Predicate.ts"
|
|
27
|
-
import * as ServiceMap from "./ServiceMap.ts"
|
|
28
|
+
import type * as ServiceMap from "./ServiceMap.ts"
|
|
28
29
|
|
|
29
30
|
/**
|
|
30
31
|
* Represents a service for generating random numbers.
|
|
@@ -49,23 +50,13 @@ import * as ServiceMap from "./ServiceMap.ts"
|
|
|
49
50
|
* @since 4.0.0
|
|
50
51
|
* @category Random Number Generators
|
|
51
52
|
*/
|
|
52
|
-
export const Random
|
|
53
|
+
export const Random: ServiceMap.Reference<{
|
|
53
54
|
nextIntUnsafe(): number
|
|
54
55
|
nextDoubleUnsafe(): number
|
|
55
|
-
}>
|
|
56
|
-
defaultValue: () => ({
|
|
57
|
-
nextIntUnsafe() {
|
|
58
|
-
return Math.floor(Math.random() * (Number.MAX_SAFE_INTEGER - Number.MIN_SAFE_INTEGER + 1)) +
|
|
59
|
-
Number.MIN_SAFE_INTEGER
|
|
60
|
-
},
|
|
61
|
-
nextDoubleUnsafe() {
|
|
62
|
-
return Math.random()
|
|
63
|
-
}
|
|
64
|
-
})
|
|
65
|
-
})
|
|
56
|
+
}> = random.Random
|
|
66
57
|
|
|
67
58
|
const randomWith = <A>(f: (random: typeof Random["Service"]) => A): Effect.Effect<A> =>
|
|
68
|
-
Effect.withFiber((fiber) => Effect.succeed(f(
|
|
59
|
+
Effect.withFiber((fiber) => Effect.succeed(f(fiber.getRef(Random))))
|
|
69
60
|
|
|
70
61
|
/**
|
|
71
62
|
* Generates a random number between 0 (inclusive) and 1 (inclusive).
|
|
@@ -156,6 +147,34 @@ export const nextIntBetween = (min: number, max: number, options?: {
|
|
|
156
147
|
})
|
|
157
148
|
}
|
|
158
149
|
|
|
150
|
+
/**
|
|
151
|
+
* Uses the pseudo-random number generator to shuffle the specified iterable.
|
|
152
|
+
*
|
|
153
|
+
* @example
|
|
154
|
+
* ```ts
|
|
155
|
+
* import { Effect, Random } from "effect"
|
|
156
|
+
*
|
|
157
|
+
* const program = Effect.gen(function*() {
|
|
158
|
+
* const values = yield* Random.shuffle([1, 2, 3, 4, 5])
|
|
159
|
+
* console.log(values)
|
|
160
|
+
* })
|
|
161
|
+
* ```
|
|
162
|
+
*
|
|
163
|
+
* @since 4.0.0
|
|
164
|
+
* @category Random Number Generators
|
|
165
|
+
*/
|
|
166
|
+
export const shuffle = <A>(elements: Iterable<A>): Effect.Effect<Array<A>> =>
|
|
167
|
+
randomWith((r) => {
|
|
168
|
+
const buffer = Array.from(elements)
|
|
169
|
+
for (let i = buffer.length - 1; i >= 1; i = i - 1) {
|
|
170
|
+
const index = Math.min(i, Math.floor(r.nextDoubleUnsafe() * (i + 1)))
|
|
171
|
+
const value = buffer[i]!
|
|
172
|
+
buffer[i] = buffer[index]!
|
|
173
|
+
buffer[index] = value
|
|
174
|
+
}
|
|
175
|
+
return buffer
|
|
176
|
+
})
|
|
177
|
+
|
|
159
178
|
/**
|
|
160
179
|
* Generates a random UUID (v4) string.
|
|
161
180
|
*
|
package/src/RcMap.ts
CHANGED
|
@@ -292,7 +292,7 @@ export const make: {
|
|
|
292
292
|
<K, A, E, R>(
|
|
293
293
|
options: {
|
|
294
294
|
readonly lookup: (key: K) => Effect.Effect<A, E, R>
|
|
295
|
-
readonly idleTimeToLive?: Duration.
|
|
295
|
+
readonly idleTimeToLive?: Duration.Input | ((key: K) => Duration.Input) | undefined
|
|
296
296
|
readonly capacity?: undefined
|
|
297
297
|
}
|
|
298
298
|
): Effect.Effect<RcMap<K, A, E>, never, Scope.Scope | R>
|
|
@@ -335,13 +335,13 @@ export const make: {
|
|
|
335
335
|
<K, A, E, R>(
|
|
336
336
|
options: {
|
|
337
337
|
readonly lookup: (key: K) => Effect.Effect<A, E, R>
|
|
338
|
-
readonly idleTimeToLive?: Duration.
|
|
338
|
+
readonly idleTimeToLive?: Duration.Input | ((key: K) => Duration.Input) | undefined
|
|
339
339
|
readonly capacity: number
|
|
340
340
|
}
|
|
341
341
|
): Effect.Effect<RcMap<K, A, E | Cause.ExceededCapacityError>, never, Scope.Scope | R>
|
|
342
342
|
} = <K, A, E, R>(options: {
|
|
343
343
|
readonly lookup: (key: K) => Effect.Effect<A, E, R>
|
|
344
|
-
readonly idleTimeToLive?: Duration.
|
|
344
|
+
readonly idleTimeToLive?: Duration.Input | ((key: K) => Duration.Input) | undefined
|
|
345
345
|
readonly capacity?: number | undefined
|
|
346
346
|
}) =>
|
|
347
347
|
Effect.withFiber<RcMap<K, A, E>, never, R | Scope.Scope>((fiber) => {
|
|
@@ -352,8 +352,8 @@ export const make: {
|
|
|
352
352
|
services,
|
|
353
353
|
scope,
|
|
354
354
|
idleTimeToLive: typeof options.idleTimeToLive === "function"
|
|
355
|
-
? flow(options.idleTimeToLive, Duration.
|
|
356
|
-
: constant(Duration.
|
|
355
|
+
? flow(options.idleTimeToLive, Duration.fromInputUnsafe)
|
|
356
|
+
: constant(Duration.fromInputUnsafe(options.idleTimeToLive ?? Duration.zero)),
|
|
357
357
|
capacity: Math.max(options.capacity ?? Number.POSITIVE_INFINITY, 0)
|
|
358
358
|
})
|
|
359
359
|
return Effect.as(
|
package/src/RcRef.ts
CHANGED
|
@@ -120,7 +120,7 @@ export const make: <A, E, R>(
|
|
|
120
120
|
* When the reference count reaches zero, the resource will be released
|
|
121
121
|
* after this duration.
|
|
122
122
|
*/
|
|
123
|
-
readonly idleTimeToLive?: Duration.
|
|
123
|
+
readonly idleTimeToLive?: Duration.Input | undefined
|
|
124
124
|
}
|
|
125
125
|
) => Effect.Effect<RcRef<A, E>, never, R | Scope> = internal.make
|
|
126
126
|
|
package/src/Reducer.ts
CHANGED
|
@@ -1,17 +1,107 @@
|
|
|
1
1
|
/**
|
|
2
|
+
* A module for reducing collections of values into a single result.
|
|
3
|
+
*
|
|
4
|
+
* A `Reducer<A>` extends {@link Combiner.Combiner} by adding an
|
|
5
|
+
* `initialValue` (identity element) and a `combineAll` method that folds an
|
|
6
|
+
* entire collection. Think `Array.prototype.reduce`, but packaged as a
|
|
7
|
+
* reusable, composable value.
|
|
8
|
+
*
|
|
9
|
+
* ## Mental model
|
|
10
|
+
*
|
|
11
|
+
* - **Reducer** – a {@link Combiner.Combiner} plus an `initialValue` and a
|
|
12
|
+
* `combineAll` method.
|
|
13
|
+
* - **initialValue** – the neutral/identity element. Combining any value with
|
|
14
|
+
* `initialValue` should return the original value unchanged (e.g. `0` for
|
|
15
|
+
* addition, `""` for string concatenation).
|
|
16
|
+
* - **combineAll** – folds an `Iterable<A>` starting from `initialValue`.
|
|
17
|
+
* When omitted from {@link make}, a default left-to-right fold is used.
|
|
18
|
+
* - **Purity** – all reducers produced by this module are pure; they never
|
|
19
|
+
* mutate their arguments.
|
|
20
|
+
* - **Composability** – reducers can be lifted into `Option`, `Struct`,
|
|
21
|
+
* `Tuple`, `Record`, and other container types via helpers in those modules.
|
|
22
|
+
* - **Subtype of Combiner** – every `Reducer` is also a valid
|
|
23
|
+
* `Combiner`, so you can pass a `Reducer` anywhere a `Combiner` is
|
|
24
|
+
* expected.
|
|
25
|
+
*
|
|
26
|
+
* ## Common tasks
|
|
27
|
+
*
|
|
28
|
+
* - Create a reducer from a combine function and initial value → {@link make}
|
|
29
|
+
* - Swap argument order → {@link flip}
|
|
30
|
+
* - Combine two values without an initial value → use {@link Combiner.Combiner}
|
|
31
|
+
* instead
|
|
32
|
+
*
|
|
33
|
+
* ## Gotchas
|
|
34
|
+
*
|
|
35
|
+
* - `combineAll` on an empty iterable returns `initialValue`, not an error.
|
|
36
|
+
* - The default `combineAll` folds left-to-right. If your `combine` is not
|
|
37
|
+
* associative, order matters. Pass a custom `combineAll` to {@link make} if
|
|
38
|
+
* you need different traversal or short-circuiting.
|
|
39
|
+
* - A `Reducer` is also a valid `Combiner` — but a `Combiner` is *not* a
|
|
40
|
+
* `Reducer` (it lacks `initialValue`).
|
|
41
|
+
*
|
|
42
|
+
* ## Quickstart
|
|
43
|
+
*
|
|
44
|
+
* **Example** (summing a list of numbers)
|
|
45
|
+
*
|
|
46
|
+
* ```ts
|
|
47
|
+
* import { Reducer } from "effect"
|
|
48
|
+
*
|
|
49
|
+
* const Sum = Reducer.make<number>((a, b) => a + b, 0)
|
|
50
|
+
*
|
|
51
|
+
* console.log(Sum.combine(3, 4))
|
|
52
|
+
* // Output: 7
|
|
53
|
+
*
|
|
54
|
+
* console.log(Sum.combineAll([1, 2, 3, 4]))
|
|
55
|
+
* // Output: 10
|
|
56
|
+
*
|
|
57
|
+
* console.log(Sum.combineAll([]))
|
|
58
|
+
* // Output: 0
|
|
59
|
+
* ```
|
|
60
|
+
*
|
|
61
|
+
* ## See also
|
|
62
|
+
*
|
|
63
|
+
* - {@link make} – the primary constructor
|
|
64
|
+
* - {@link Reducer} – the core interface
|
|
65
|
+
* - {@link Combiner.Combiner} – the parent interface (no `initialValue`)
|
|
66
|
+
*
|
|
2
67
|
* @since 4.0.0
|
|
3
68
|
*/
|
|
4
69
|
|
|
5
70
|
import type * as Combiner from "./Combiner.ts"
|
|
6
71
|
|
|
7
72
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
73
|
+
* Represents a strategy for reducing a collection of values of type `A` into
|
|
74
|
+
* a single result.
|
|
75
|
+
*
|
|
76
|
+
* Extends {@link Combiner.Combiner} with:
|
|
77
|
+
* - `initialValue` – the identity/neutral element for `combine`.
|
|
78
|
+
* - `combineAll` – folds an entire `Iterable<A>` from `initialValue`.
|
|
79
|
+
*
|
|
80
|
+
* When to use:
|
|
81
|
+
* - You need to fold/reduce a collection into a single value.
|
|
82
|
+
* - You want a reusable reducing strategy that can be passed to library
|
|
83
|
+
* functions like `Struct.makeReducer`, `Option.makeReducer`, or
|
|
84
|
+
* `Record.makeReducerUnion`.
|
|
85
|
+
* - You need both the combining logic *and* a known starting value.
|
|
86
|
+
*
|
|
87
|
+
* Many modules ship pre-built reducers:
|
|
88
|
+
* - `Number.ReducerSum`, `Number.ReducerMultiply`
|
|
89
|
+
* - `String.ReducerConcat`
|
|
90
|
+
* - `Boolean.ReducerAnd`, `Boolean.ReducerOr`
|
|
10
91
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
92
|
+
* **Example** (string concatenation reducer)
|
|
93
|
+
*
|
|
94
|
+
* ```ts
|
|
95
|
+
* import { Reducer } from "effect"
|
|
96
|
+
*
|
|
97
|
+
* const Concat = Reducer.make<string>((a, b) => a + b, "")
|
|
98
|
+
*
|
|
99
|
+
* console.log(Concat.combineAll(["hello", " ", "world"]))
|
|
100
|
+
* // Output: "hello world"
|
|
101
|
+
* ```
|
|
102
|
+
*
|
|
103
|
+
* @see {@link make} – create a `Reducer` from a function and initial value
|
|
104
|
+
* @see {@link Combiner.Combiner} – parent interface without `initialValue`
|
|
15
105
|
*
|
|
16
106
|
* @category model
|
|
17
107
|
* @since 4.0.0
|
|
@@ -27,7 +117,44 @@ export interface Reducer<A> extends Combiner.Combiner<A> {
|
|
|
27
117
|
/**
|
|
28
118
|
* Creates a `Reducer` from a `combine` function and an `initialValue`.
|
|
29
119
|
*
|
|
30
|
-
*
|
|
120
|
+
* When to use:
|
|
121
|
+
* - You have a custom reducing operation not covered by a pre-built reducer.
|
|
122
|
+
* - You want to provide an optimized `combineAll` (e.g. short-circuiting on
|
|
123
|
+
* a known absorbing element like `0` for multiplication).
|
|
124
|
+
*
|
|
125
|
+
* Behavior:
|
|
126
|
+
* - If `combineAll` is omitted, a default left-to-right fold starting from
|
|
127
|
+
* `initialValue` is used.
|
|
128
|
+
* - If `combineAll` is provided, it completely replaces the default fold.
|
|
129
|
+
* - Pure – the returned reducer does not mutate its arguments.
|
|
130
|
+
*
|
|
131
|
+
* **Example** (multiplication with short-circuit)
|
|
132
|
+
*
|
|
133
|
+
* ```ts
|
|
134
|
+
* import { Reducer } from "effect"
|
|
135
|
+
*
|
|
136
|
+
* const Product = Reducer.make<number>(
|
|
137
|
+
* (a, b) => a * b,
|
|
138
|
+
* 1,
|
|
139
|
+
* (collection) => {
|
|
140
|
+
* let acc = 1
|
|
141
|
+
* for (const n of collection) {
|
|
142
|
+
* if (n === 0) return 0
|
|
143
|
+
* acc *= n
|
|
144
|
+
* }
|
|
145
|
+
* return acc
|
|
146
|
+
* }
|
|
147
|
+
* )
|
|
148
|
+
*
|
|
149
|
+
* console.log(Product.combineAll([2, 3, 4]))
|
|
150
|
+
* // Output: 24
|
|
151
|
+
*
|
|
152
|
+
* console.log(Product.combineAll([2, 0, 4]))
|
|
153
|
+
* // Output: 0
|
|
154
|
+
* ```
|
|
155
|
+
*
|
|
156
|
+
* @see {@link Reducer} – the interface this creates
|
|
157
|
+
* @see {@link flip} – reverse the argument order
|
|
31
158
|
*
|
|
32
159
|
* @since 4.0.0
|
|
33
160
|
*/
|
|
@@ -51,6 +178,38 @@ export function make<A>(
|
|
|
51
178
|
}
|
|
52
179
|
|
|
53
180
|
/**
|
|
181
|
+
* Reverses the argument order of a reducer's `combine` method.
|
|
182
|
+
*
|
|
183
|
+
* When to use:
|
|
184
|
+
* - You need the "right" value to act as the accumulator side.
|
|
185
|
+
* - You want to reverse the natural direction of a non-commutative reducer
|
|
186
|
+
* (e.g. string concatenation becomes prepend).
|
|
187
|
+
*
|
|
188
|
+
* Behavior:
|
|
189
|
+
* - Returns a new `Reducer` where `combine(self, that)` calls the original
|
|
190
|
+
* reducer as `combine(that, self)`.
|
|
191
|
+
* - The `initialValue` is preserved from the original reducer.
|
|
192
|
+
* - The `combineAll` is re-derived from the flipped `combine` (using the
|
|
193
|
+
* default left-to-right fold), not carried over from the original.
|
|
194
|
+
* - Does not mutate the input reducer.
|
|
195
|
+
*
|
|
196
|
+
* **Example** (reversing string concatenation)
|
|
197
|
+
*
|
|
198
|
+
* ```ts
|
|
199
|
+
* import { Reducer, String } from "effect"
|
|
200
|
+
*
|
|
201
|
+
* const Prepend = Reducer.flip(String.ReducerConcat)
|
|
202
|
+
*
|
|
203
|
+
* console.log(Prepend.combine("a", "b"))
|
|
204
|
+
* // Output: "ba"
|
|
205
|
+
*
|
|
206
|
+
* console.log(Prepend.combineAll(["a", "b", "c"]))
|
|
207
|
+
* // Output: "cba"
|
|
208
|
+
* ```
|
|
209
|
+
*
|
|
210
|
+
* @see {@link make}
|
|
211
|
+
* @see {@link Combiner.flip} – the same operation on a plain `Combiner`
|
|
212
|
+
*
|
|
54
213
|
* @since 4.0.0
|
|
55
214
|
*/
|
|
56
215
|
export function flip<A>(reducer: Reducer<A>): Reducer<A> {
|
package/src/Request.ts
CHANGED
|
@@ -88,7 +88,7 @@ export interface Variance<out A, out E, out R> {
|
|
|
88
88
|
* @category models
|
|
89
89
|
*/
|
|
90
90
|
export interface Constructor<R extends Request<any, any, any>, T extends keyof R = never> {
|
|
91
|
-
(args: Omit<R, T | keyof (Variance<any, any, any>)
|
|
91
|
+
(args: Types.VoidIfEmpty<Types.Simplify<Omit<R, T | keyof (Variance<any, any, any>)>>>): R
|
|
92
92
|
}
|
|
93
93
|
|
|
94
94
|
/**
|
|
@@ -285,7 +285,8 @@ export const tagged = <R extends Request<any, any, any> & { _tag: string }>(
|
|
|
285
285
|
tag: R["_tag"]
|
|
286
286
|
): Constructor<R, "_tag"> =>
|
|
287
287
|
(args) => {
|
|
288
|
-
const request = Object.
|
|
288
|
+
const request = Object.create(RequestPrototype)
|
|
289
|
+
if (args) Object.assign(request, args)
|
|
289
290
|
request._tag = tag
|
|
290
291
|
return request
|
|
291
292
|
}
|