effect 4.0.0-beta.99 → 4.0.0-rc.109
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/AGENTS.md +395 -0
- package/CLAUDE.md +395 -0
- package/README.md +19 -23
- package/ai-docs/README.md +44 -0
- package/ai-docs/package.json +36 -0
- package/ai-docs/src/01_effect/01_basics/01_effect-gen.ts +30 -0
- package/ai-docs/src/01_effect/01_basics/02_effect-fn.ts +39 -0
- package/ai-docs/src/01_effect/01_basics/10_creating-effects.ts +74 -0
- package/ai-docs/src/01_effect/01_basics/index.md +5 -0
- package/ai-docs/src/01_effect/02_schema/10_schema-basics.ts +43 -0
- package/ai-docs/src/01_effect/02_schema/index.md +7 -0
- package/ai-docs/src/01_effect/03_services/01_service.ts +45 -0
- package/ai-docs/src/01_effect/03_services/10_reference.ts +10 -0
- package/ai-docs/src/01_effect/03_services/20_layer-composition.ts +70 -0
- package/ai-docs/src/01_effect/03_services/20_layer-unwrap.ts +66 -0
- package/ai-docs/src/01_effect/03_services/index.md +5 -0
- package/ai-docs/src/01_effect/04_errors/01_error-handling.ts +30 -0
- package/ai-docs/src/01_effect/04_errors/10_catch-tags.ts +24 -0
- package/ai-docs/src/01_effect/04_errors/20_reason-errors.ts +64 -0
- package/ai-docs/src/01_effect/04_errors/index.md +1 -0
- package/ai-docs/src/01_effect/05_resources/10_acquire-release.ts +105 -0
- package/ai-docs/src/01_effect/05_resources/20_layer-side-effects.ts +31 -0
- package/ai-docs/src/01_effect/05_resources/30_layer-map.ts +86 -0
- package/ai-docs/src/01_effect/05_resources/index.md +3 -0
- package/ai-docs/src/01_effect/06_running/10_run-main.ts +30 -0
- package/ai-docs/src/01_effect/06_running/20_layer-launch.ts +27 -0
- package/ai-docs/src/01_effect/06_running/index.md +1 -0
- package/ai-docs/src/01_effect/07_pubsub/10_pubsub.ts +56 -0
- package/ai-docs/src/01_effect/07_pubsub/index.md +3 -0
- package/ai-docs/src/03_stream/10_creating-streams.ts +103 -0
- package/ai-docs/src/03_stream/20_consuming-streams.ts +137 -0
- package/ai-docs/src/03_stream/30_encoding.ts +165 -0
- package/ai-docs/src/03_stream/index.md +4 -0
- package/ai-docs/src/04_integration/10_managed-runtime.ts +129 -0
- package/ai-docs/src/04_integration/index.md +5 -0
- package/ai-docs/src/05_batching/10_request-resolver.ts +89 -0
- package/ai-docs/src/05_batching/index.md +3 -0
- package/ai-docs/src/06_schedule/10_schedules.ts +110 -0
- package/ai-docs/src/06_schedule/index.md +3 -0
- package/ai-docs/src/07_datetime/10_creating-and-formatting.ts +30 -0
- package/ai-docs/src/07_datetime/20_time-zones.ts +44 -0
- package/ai-docs/src/07_datetime/index.md +5 -0
- package/ai-docs/src/08_observability/10_logging.ts +66 -0
- package/ai-docs/src/08_observability/20_otlp-tracing.ts +95 -0
- package/ai-docs/src/08_observability/index.md +7 -0
- package/ai-docs/src/09_testing/10_effect-tests.ts +55 -0
- package/ai-docs/src/09_testing/20_layer-tests.ts +138 -0
- package/ai-docs/src/09_testing/index.md +1 -0
- package/ai-docs/src/10_predicate/01_basics.ts +14 -0
- package/ai-docs/src/10_predicate/index.md +9 -0
- package/ai-docs/src/40_sql/10_basics.ts +175 -0
- package/ai-docs/src/40_sql/index.md +6 -0
- package/ai-docs/src/50_http-client/10_basics.ts +102 -0
- package/ai-docs/src/50_http-client/index.md +3 -0
- package/ai-docs/src/51_http-server/10_basics.ts +118 -0
- package/ai-docs/src/51_http-server/20_testing.ts +100 -0
- package/ai-docs/src/51_http-server/fixtures/api/Api.ts +14 -0
- package/ai-docs/src/51_http-server/fixtures/api/Authorization.ts +36 -0
- package/ai-docs/src/51_http-server/fixtures/api/System.ts +10 -0
- package/ai-docs/src/51_http-server/fixtures/api/Users.ts +107 -0
- package/ai-docs/src/51_http-server/fixtures/domain/User.ts +21 -0
- package/ai-docs/src/51_http-server/fixtures/domain/UserErrors.ts +22 -0
- package/ai-docs/src/51_http-server/fixtures/server/Authorization.ts +37 -0
- package/ai-docs/src/51_http-server/fixtures/server/Users/http.ts +80 -0
- package/ai-docs/src/51_http-server/fixtures/server/Users.ts +183 -0
- package/ai-docs/src/51_http-server/index.md +3 -0
- package/ai-docs/src/60_child-process/10_working-with-child-processes.ts +117 -0
- package/ai-docs/src/60_child-process/index.md +3 -0
- package/ai-docs/src/70_cli/10_basics.ts +160 -0
- package/ai-docs/src/70_cli/index.md +5 -0
- package/ai-docs/src/71_ai/10_language-model.ts +156 -0
- package/ai-docs/src/71_ai/20_tools.ts +226 -0
- package/ai-docs/src/71_ai/30_chat.ts +158 -0
- package/ai-docs/src/71_ai/fixtures/domain/LaunchPlan.ts +9 -0
- package/ai-docs/src/71_ai/index.md +5 -0
- package/ai-docs/src/80_cluster/10_entities.ts +97 -0
- package/ai-docs/src/80_cluster/index.md +4 -0
- package/ai-docs/src/index.md +10 -0
- package/ai-docs/tsconfig.json +24 -0
- package/dist/Array.d.ts +971 -1037
- package/dist/Array.d.ts.map +1 -1
- package/dist/Array.js +462 -412
- package/dist/Array.js.map +1 -1
- package/dist/BigDecimal.d.ts +433 -756
- package/dist/BigDecimal.d.ts.map +1 -1
- package/dist/BigDecimal.js +200 -325
- package/dist/BigDecimal.js.map +1 -1
- package/dist/BigInt.d.ts +207 -267
- package/dist/BigInt.d.ts.map +1 -1
- package/dist/BigInt.js +107 -135
- package/dist/BigInt.js.map +1 -1
- package/dist/Boolean.d.ts +146 -188
- package/dist/Boolean.d.ts.map +1 -1
- package/dist/Boolean.js +64 -84
- package/dist/Boolean.js.map +1 -1
- package/dist/Brand.d.ts +3 -3
- package/dist/Brand.d.ts.map +1 -1
- package/dist/Brand.js +4 -3
- package/dist/Brand.js.map +1 -1
- package/dist/Cache.d.ts +409 -256
- package/dist/Cache.d.ts.map +1 -1
- package/dist/Cache.js +213 -134
- package/dist/Cache.js.map +1 -1
- package/dist/Cause.d.ts +167 -277
- package/dist/Cause.d.ts.map +1 -1
- package/dist/Cause.js +122 -176
- package/dist/Cause.js.map +1 -1
- package/dist/Channel.d.ts +756 -769
- package/dist/Channel.d.ts.map +1 -1
- package/dist/Channel.js +588 -449
- package/dist/Channel.js.map +1 -1
- package/dist/ChannelSchema.d.ts +1 -1
- package/dist/ChannelSchema.d.ts.map +1 -1
- package/dist/ChannelSchema.js.map +1 -1
- package/dist/Chunk.d.ts +834 -1173
- package/dist/Chunk.d.ts.map +1 -1
- package/dist/Chunk.js +326 -439
- package/dist/Chunk.js.map +1 -1
- package/dist/Clock.d.ts +180 -49
- package/dist/Clock.d.ts.map +1 -1
- package/dist/Clock.js +96 -31
- package/dist/Clock.js.map +1 -1
- package/dist/Combiner.d.ts +20 -33
- package/dist/Combiner.d.ts.map +1 -1
- package/dist/Combiner.js +18 -30
- package/dist/Combiner.js.map +1 -1
- package/dist/Config.d.ts +226 -174
- package/dist/Config.d.ts.map +1 -1
- package/dist/Config.js +361 -267
- package/dist/Config.js.map +1 -1
- package/dist/ConfigProvider.d.ts +229 -71
- package/dist/ConfigProvider.d.ts.map +1 -1
- package/dist/ConfigProvider.js +164 -95
- package/dist/ConfigProvider.js.map +1 -1
- package/dist/Console.d.ts +233 -33
- package/dist/Console.d.ts.map +1 -1
- package/dist/Console.js +232 -32
- package/dist/Console.js.map +1 -1
- package/dist/Context.d.ts +160 -277
- package/dist/Context.d.ts.map +1 -1
- package/dist/Context.js +179 -236
- package/dist/Context.js.map +1 -1
- package/dist/Cron.d.ts +144 -176
- package/dist/Cron.d.ts.map +1 -1
- package/dist/Cron.js +227 -162
- package/dist/Cron.js.map +1 -1
- package/dist/Crypto.d.ts +13 -15
- package/dist/Crypto.d.ts.map +1 -1
- package/dist/Crypto.js +24 -39
- package/dist/Crypto.js.map +1 -1
- package/dist/Data.d.ts +60 -80
- package/dist/Data.d.ts.map +1 -1
- package/dist/Data.js +18 -24
- package/dist/Data.js.map +1 -1
- package/dist/DateTime.d.ts +562 -660
- package/dist/DateTime.d.ts.map +1 -1
- package/dist/DateTime.js +307 -362
- package/dist/DateTime.js.map +1 -1
- package/dist/Deferred.d.ts +253 -256
- package/dist/Deferred.d.ts.map +1 -1
- package/dist/Deferred.js +110 -98
- package/dist/Deferred.js.map +1 -1
- package/dist/Duration.d.ts +216 -308
- package/dist/Duration.d.ts.map +1 -1
- package/dist/Duration.js +157 -188
- package/dist/Duration.js.map +1 -1
- package/dist/Effect.d.ts +3157 -3360
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +1457 -1574
- package/dist/Effect.js.map +1 -1
- package/dist/Effectable.js.map +1 -1
- package/dist/Encoding.d.ts +22 -40
- package/dist/Encoding.d.ts.map +1 -1
- package/dist/Encoding.js +22 -40
- package/dist/Encoding.js.map +1 -1
- package/dist/Equal.d.ts +33 -37
- package/dist/Equal.d.ts.map +1 -1
- package/dist/Equal.js +39 -23
- package/dist/Equal.js.map +1 -1
- package/dist/Equivalence.d.ts +103 -105
- package/dist/Equivalence.d.ts.map +1 -1
- package/dist/Equivalence.js +77 -79
- package/dist/Equivalence.js.map +1 -1
- package/dist/ErrorReporter.d.ts +52 -28
- package/dist/ErrorReporter.d.ts.map +1 -1
- package/dist/ErrorReporter.js +51 -27
- package/dist/ErrorReporter.js.map +1 -1
- package/dist/ExecutionPlan.d.ts +86 -55
- package/dist/ExecutionPlan.d.ts.map +1 -1
- package/dist/ExecutionPlan.js +8 -29
- package/dist/ExecutionPlan.js.map +1 -1
- package/dist/Exit.d.ts +116 -192
- package/dist/Exit.d.ts.map +1 -1
- package/dist/Exit.js +82 -130
- package/dist/Exit.js.map +1 -1
- package/dist/Fiber.d.ts +83 -147
- package/dist/Fiber.d.ts.map +1 -1
- package/dist/Fiber.js +48 -87
- package/dist/Fiber.js.map +1 -1
- package/dist/FiberHandle.d.ts +152 -105
- package/dist/FiberHandle.d.ts.map +1 -1
- package/dist/FiberHandle.js +109 -75
- package/dist/FiberHandle.js.map +1 -1
- package/dist/FiberMap.d.ts +213 -168
- package/dist/FiberMap.d.ts.map +1 -1
- package/dist/FiberMap.js +114 -89
- package/dist/FiberMap.js.map +1 -1
- package/dist/FiberSet.d.ts +123 -81
- package/dist/FiberSet.d.ts.map +1 -1
- package/dist/FiberSet.js +86 -60
- package/dist/FiberSet.js.map +1 -1
- package/dist/FileSystem.d.ts +154 -265
- package/dist/FileSystem.d.ts.map +1 -1
- package/dist/FileSystem.js +42 -147
- package/dist/FileSystem.js.map +1 -1
- package/dist/Filter.d.ts +61 -33
- package/dist/Filter.d.ts.map +1 -1
- package/dist/Filter.js +26 -15
- package/dist/Filter.js.map +1 -1
- package/dist/Formatter.d.ts +24 -32
- package/dist/Formatter.d.ts.map +1 -1
- package/dist/Formatter.js +55 -60
- package/dist/Formatter.js.map +1 -1
- package/dist/Function.d.ts +106 -148
- package/dist/Function.d.ts.map +1 -1
- package/dist/Function.js +81 -62
- package/dist/Function.js.map +1 -1
- package/dist/Graph.d.ts +360 -714
- package/dist/Graph.d.ts.map +1 -1
- package/dist/Graph.js +168 -297
- package/dist/Graph.js.map +1 -1
- package/dist/HKT.d.ts +12 -6
- package/dist/HKT.d.ts.map +1 -1
- package/dist/Hash.d.ts +47 -83
- package/dist/Hash.d.ts.map +1 -1
- package/dist/Hash.js +46 -68
- package/dist/Hash.js.map +1 -1
- package/dist/HashMap.d.ts +319 -411
- package/dist/HashMap.d.ts.map +1 -1
- package/dist/HashMap.js +122 -166
- package/dist/HashMap.js.map +1 -1
- package/dist/HashRing.d.ts.map +1 -1
- package/dist/HashRing.js +1 -0
- package/dist/HashRing.js.map +1 -1
- package/dist/HashSet.d.ts +177 -284
- package/dist/HashSet.d.ts.map +1 -1
- package/dist/HashSet.js +68 -109
- package/dist/HashSet.js.map +1 -1
- package/dist/Inspectable.d.ts +19 -18
- package/dist/Inspectable.d.ts.map +1 -1
- package/dist/Inspectable.js +20 -16
- package/dist/Inspectable.js.map +1 -1
- package/dist/Iterable.d.ts +620 -786
- package/dist/Iterable.d.ts.map +1 -1
- package/dist/Iterable.js +241 -317
- package/dist/Iterable.js.map +1 -1
- package/dist/JsonPatch.d.ts +11 -13
- package/dist/JsonPatch.d.ts.map +1 -1
- package/dist/JsonPatch.js +46 -103
- package/dist/JsonPatch.js.map +1 -1
- package/dist/JsonPointer.d.ts +8 -8
- package/dist/JsonPointer.js +8 -8
- package/dist/JsonPointer.js.map +1 -1
- package/dist/JsonSchema.d.ts +98 -44
- package/dist/JsonSchema.d.ts.map +1 -1
- package/dist/JsonSchema.js +319 -241
- package/dist/JsonSchema.js.map +1 -1
- package/dist/Latch.d.ts +23 -35
- package/dist/Latch.d.ts.map +1 -1
- package/dist/Latch.js +16 -28
- package/dist/Latch.js.map +1 -1
- package/dist/Layer.d.ts +362 -263
- package/dist/Layer.d.ts.map +1 -1
- package/dist/Layer.js +203 -181
- package/dist/Layer.js.map +1 -1
- package/dist/LayerMap.d.ts +42 -29
- package/dist/LayerMap.d.ts.map +1 -1
- package/dist/LayerMap.js +31 -21
- package/dist/LayerMap.js.map +1 -1
- package/dist/LayerRef.d.ts +6 -2
- package/dist/LayerRef.d.ts.map +1 -1
- package/dist/LayerRef.js +6 -2
- package/dist/LayerRef.js.map +1 -1
- package/dist/LogLevel.d.ts +114 -214
- package/dist/LogLevel.d.ts.map +1 -1
- package/dist/LogLevel.js +41 -76
- package/dist/LogLevel.js.map +1 -1
- package/dist/Logger.d.ts +219 -468
- package/dist/Logger.d.ts.map +1 -1
- package/dist/Logger.js +209 -454
- package/dist/Logger.js.map +1 -1
- package/dist/ManagedRuntime.d.ts +16 -5
- package/dist/ManagedRuntime.d.ts.map +1 -1
- package/dist/ManagedRuntime.js +10 -5
- package/dist/ManagedRuntime.js.map +1 -1
- package/dist/Match.d.ts +217 -252
- package/dist/Match.d.ts.map +1 -1
- package/dist/Match.js +150 -183
- package/dist/Match.js.map +1 -1
- package/dist/Metric.d.ts +442 -993
- package/dist/Metric.d.ts.map +1 -1
- package/dist/Metric.js +202 -645
- package/dist/Metric.js.map +1 -1
- package/dist/MutableHashMap.d.ts +144 -173
- package/dist/MutableHashMap.d.ts.map +1 -1
- package/dist/MutableHashMap.js +68 -79
- package/dist/MutableHashMap.js.map +1 -1
- package/dist/MutableHashSet.d.ts +84 -89
- package/dist/MutableHashSet.d.ts.map +1 -1
- package/dist/MutableHashSet.js +44 -47
- package/dist/MutableHashSet.js.map +1 -1
- package/dist/MutableList.d.ts +71 -370
- package/dist/MutableList.d.ts.map +1 -1
- package/dist/MutableList.js +63 -284
- package/dist/MutableList.js.map +1 -1
- package/dist/MutableRef.d.ts +420 -243
- package/dist/MutableRef.d.ts.map +1 -1
- package/dist/MutableRef.js +209 -120
- package/dist/MutableRef.js.map +1 -1
- package/dist/Newtype.d.ts +21 -14
- package/dist/Newtype.d.ts.map +1 -1
- package/dist/Newtype.js +15 -13
- package/dist/Newtype.js.map +1 -1
- package/dist/NonEmptyIterable.d.ts +7 -137
- package/dist/NonEmptyIterable.d.ts.map +1 -1
- package/dist/NonEmptyIterable.js +5 -93
- package/dist/NonEmptyIterable.js.map +1 -1
- package/dist/Number.d.ts +196 -233
- package/dist/Number.d.ts.map +1 -1
- package/dist/Number.js +90 -109
- package/dist/Number.js.map +1 -1
- package/dist/Optic.d.ts +132 -210
- package/dist/Optic.d.ts.map +1 -1
- package/dist/Optic.js +221 -324
- package/dist/Optic.js.map +1 -1
- package/dist/Option.d.ts +447 -812
- package/dist/Option.d.ts.map +1 -1
- package/dist/Option.js +213 -393
- package/dist/Option.js.map +1 -1
- package/dist/Order.d.ts +109 -109
- package/dist/Order.js +91 -91
- package/dist/Order.js.map +1 -1
- package/dist/Ordering.d.ts +20 -23
- package/dist/Ordering.d.ts.map +1 -1
- package/dist/Ordering.js +8 -9
- package/dist/Ordering.js.map +1 -1
- package/dist/PartitionedSemaphore.d.ts.map +1 -1
- package/dist/PartitionedSemaphore.js +1 -4
- package/dist/PartitionedSemaphore.js.map +1 -1
- package/dist/Path.d.ts +38 -41
- package/dist/Path.d.ts.map +1 -1
- package/dist/Path.js +3 -4
- package/dist/Path.js.map +1 -1
- package/dist/Pipeable.d.ts +6 -5
- package/dist/Pipeable.d.ts.map +1 -1
- package/dist/Pipeable.js +2 -2
- package/dist/Pipeable.js.map +1 -1
- package/dist/PlatformError.d.ts +4 -4
- package/dist/PlatformError.js +3 -3
- package/dist/PlatformError.js.map +1 -1
- package/dist/Pool.d.ts +4 -2
- package/dist/Pool.d.ts.map +1 -1
- package/dist/Pool.js +4 -2
- package/dist/Pool.js.map +1 -1
- package/dist/Predicate.d.ts +200 -181
- package/dist/Predicate.d.ts.map +1 -1
- package/dist/Predicate.js +100 -108
- package/dist/Predicate.js.map +1 -1
- package/dist/PrimaryKey.d.ts +7 -7
- package/dist/PrimaryKey.js +5 -5
- package/dist/PrimaryKey.js.map +1 -1
- package/dist/PubSub.d.ts +425 -494
- package/dist/PubSub.d.ts.map +1 -1
- package/dist/PubSub.js +373 -362
- package/dist/PubSub.js.map +1 -1
- package/dist/Pull.d.ts +24 -18
- package/dist/Pull.d.ts.map +1 -1
- package/dist/Pull.js +11 -9
- package/dist/Pull.js.map +1 -1
- package/dist/Queue.d.ts +200 -159
- package/dist/Queue.d.ts.map +1 -1
- package/dist/Queue.js +166 -138
- package/dist/Queue.js.map +1 -1
- package/dist/Random.d.ts +49 -74
- package/dist/Random.d.ts.map +1 -1
- package/dist/Random.js +35 -54
- package/dist/Random.js.map +1 -1
- package/dist/RcMap.d.ts +121 -63
- package/dist/RcMap.d.ts.map +1 -1
- package/dist/RcMap.js +42 -21
- package/dist/RcMap.js.map +1 -1
- package/dist/RcRef.d.ts +24 -13
- package/dist/RcRef.d.ts.map +1 -1
- package/dist/RcRef.js +15 -9
- package/dist/RcRef.js.map +1 -1
- package/dist/Record.d.ts +361 -466
- package/dist/Record.d.ts.map +1 -1
- package/dist/Record.js +163 -216
- package/dist/Record.js.map +1 -1
- package/dist/Redactable.d.ts +6 -2
- package/dist/Redactable.d.ts.map +1 -1
- package/dist/Redactable.js +7 -2
- package/dist/Redactable.js.map +1 -1
- package/dist/Redacted.d.ts +25 -25
- package/dist/Redacted.d.ts.map +1 -1
- package/dist/Redacted.js +19 -20
- package/dist/Redacted.js.map +1 -1
- package/dist/Reducer.d.ts +8 -15
- package/dist/Reducer.d.ts.map +1 -1
- package/dist/Reducer.js +6 -12
- package/dist/Reducer.js.map +1 -1
- package/dist/Ref.d.ts +95 -165
- package/dist/Ref.d.ts.map +1 -1
- package/dist/Ref.js +75 -122
- package/dist/Ref.js.map +1 -1
- package/dist/References.d.ts +102 -213
- package/dist/References.d.ts.map +1 -1
- package/dist/References.js +102 -213
- package/dist/References.js.map +1 -1
- package/dist/RegExp.d.ts +10 -14
- package/dist/RegExp.d.ts.map +1 -1
- package/dist/RegExp.js +10 -14
- package/dist/RegExp.js.map +1 -1
- package/dist/Request.d.ts +31 -21
- package/dist/Request.d.ts.map +1 -1
- package/dist/Request.js +25 -19
- package/dist/Request.js.map +1 -1
- package/dist/RequestResolver.d.ts +201 -90
- package/dist/RequestResolver.d.ts.map +1 -1
- package/dist/RequestResolver.js +87 -41
- package/dist/RequestResolver.js.map +1 -1
- package/dist/Resource.js.map +1 -1
- package/dist/Result.d.ts +302 -470
- package/dist/Result.d.ts.map +1 -1
- package/dist/Result.js +135 -218
- package/dist/Result.js.map +1 -1
- package/dist/Runtime.d.ts +50 -75
- package/dist/Runtime.d.ts.map +1 -1
- package/dist/Runtime.js +39 -60
- package/dist/Runtime.js.map +1 -1
- package/dist/Schedule.d.ts +292 -1638
- package/dist/Schedule.d.ts.map +1 -1
- package/dist/Schedule.js +164 -805
- package/dist/Schedule.js.map +1 -1
- package/dist/Scheduler.d.ts +5 -5
- package/dist/Scheduler.d.ts.map +1 -1
- package/dist/Scheduler.js +18 -6
- package/dist/Scheduler.js.map +1 -1
- package/dist/Schema.d.ts +2056 -1269
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +2868 -1135
- package/dist/Schema.js.map +1 -1
- package/dist/SchemaAST.d.ts +64 -72
- package/dist/SchemaAST.d.ts.map +1 -1
- package/dist/SchemaAST.js +698 -468
- package/dist/SchemaAST.js.map +1 -1
- package/dist/SchemaGetter.d.ts +236 -188
- package/dist/SchemaGetter.d.ts.map +1 -1
- package/dist/SchemaGetter.js +281 -234
- package/dist/SchemaGetter.js.map +1 -1
- package/dist/SchemaIssue.d.ts +219 -190
- package/dist/SchemaIssue.d.ts.map +1 -1
- package/dist/SchemaIssue.js +303 -309
- package/dist/SchemaIssue.js.map +1 -1
- package/dist/SchemaParser.d.ts +32 -2
- package/dist/SchemaParser.d.ts.map +1 -1
- package/dist/SchemaParser.js +170 -118
- package/dist/SchemaParser.js.map +1 -1
- package/dist/SchemaRepresentation.d.ts +433 -1511
- package/dist/SchemaRepresentation.d.ts.map +1 -1
- package/dist/SchemaRepresentation.js +301 -2854
- package/dist/SchemaRepresentation.js.map +1 -1
- package/dist/SchemaTransformation.d.ts +117 -77
- package/dist/SchemaTransformation.d.ts.map +1 -1
- package/dist/SchemaTransformation.js +139 -104
- package/dist/SchemaTransformation.js.map +1 -1
- package/dist/Scope.d.ts +123 -151
- package/dist/Scope.d.ts.map +1 -1
- package/dist/Scope.js +72 -92
- package/dist/Scope.js.map +1 -1
- package/dist/ScopedCache.js +1 -1
- package/dist/ScopedCache.js.map +1 -1
- package/dist/ScopedRef.d.ts +3 -3
- package/dist/ScopedRef.d.ts.map +1 -1
- package/dist/ScopedRef.js +2 -2
- package/dist/ScopedRef.js.map +1 -1
- package/dist/Semaphore.d.ts +101 -13
- package/dist/Semaphore.d.ts.map +1 -1
- package/dist/Semaphore.js +78 -39
- package/dist/Semaphore.js.map +1 -1
- package/dist/Sink.d.ts +118 -108
- package/dist/Sink.d.ts.map +1 -1
- package/dist/Sink.js +107 -100
- package/dist/Sink.js.map +1 -1
- package/dist/Stdio.d.ts +18 -5
- package/dist/Stdio.d.ts.map +1 -1
- package/dist/Stdio.js +6 -3
- package/dist/Stdio.js.map +1 -1
- package/dist/Stream.d.ts +2467 -2962
- package/dist/Stream.d.ts.map +1 -1
- package/dist/Stream.js +1154 -1413
- package/dist/Stream.js.map +1 -1
- package/dist/String.d.ts +262 -308
- package/dist/String.d.ts.map +1 -1
- package/dist/String.js +184 -215
- package/dist/String.js.map +1 -1
- package/dist/Struct.d.ts +109 -114
- package/dist/Struct.d.ts.map +1 -1
- package/dist/Struct.js +46 -54
- package/dist/Struct.js.map +1 -1
- package/dist/SubscriptionRef.d.ts +282 -250
- package/dist/SubscriptionRef.d.ts.map +1 -1
- package/dist/SubscriptionRef.js +104 -92
- package/dist/SubscriptionRef.js.map +1 -1
- package/dist/Symbol.d.ts +3 -3
- package/dist/Symbol.js +3 -3
- package/dist/Symbol.js.map +1 -1
- package/dist/SynchronizedRef.js +1 -1
- package/dist/SynchronizedRef.js.map +1 -1
- package/dist/Take.js.map +1 -1
- package/dist/Terminal.d.ts +2 -2
- package/dist/Terminal.js +2 -2
- package/dist/Terminal.js.map +1 -1
- package/dist/Tracer.d.ts +100 -54
- package/dist/Tracer.d.ts.map +1 -1
- package/dist/Tracer.js +41 -24
- package/dist/Tracer.js.map +1 -1
- package/dist/Trie.d.ts +287 -679
- package/dist/Trie.d.ts.map +1 -1
- package/dist/Trie.js +109 -251
- package/dist/Trie.js.map +1 -1
- package/dist/Tuple.d.ts +98 -131
- package/dist/Tuple.d.ts.map +1 -1
- package/dist/Tuple.js +42 -57
- package/dist/Tuple.js.map +1 -1
- package/dist/TxChunk.d.ts +201 -121
- package/dist/TxChunk.d.ts.map +1 -1
- package/dist/TxChunk.js +85 -56
- package/dist/TxChunk.js.map +1 -1
- package/dist/TxDeferred.d.ts +62 -46
- package/dist/TxDeferred.d.ts.map +1 -1
- package/dist/TxDeferred.js +30 -22
- package/dist/TxDeferred.js.map +1 -1
- package/dist/TxHashMap.d.ts +631 -779
- package/dist/TxHashMap.d.ts.map +1 -1
- package/dist/TxHashMap.js +268 -330
- package/dist/TxHashMap.js.map +1 -1
- package/dist/TxHashSet.d.ts +297 -236
- package/dist/TxHashSet.d.ts.map +1 -1
- package/dist/TxHashSet.js +130 -100
- package/dist/TxHashSet.js.map +1 -1
- package/dist/TxPriorityQueue.d.ts +126 -95
- package/dist/TxPriorityQueue.d.ts.map +1 -1
- package/dist/TxPriorityQueue.js +74 -56
- package/dist/TxPriorityQueue.js.map +1 -1
- package/dist/TxPubSub.d.ts +101 -88
- package/dist/TxPubSub.d.ts.map +1 -1
- package/dist/TxPubSub.js +87 -66
- package/dist/TxPubSub.js.map +1 -1
- package/dist/TxQueue.d.ts +200 -180
- package/dist/TxQueue.d.ts.map +1 -1
- package/dist/TxQueue.js +161 -137
- package/dist/TxQueue.js.map +1 -1
- package/dist/TxReentrantLock.d.ts +89 -114
- package/dist/TxReentrantLock.d.ts.map +1 -1
- package/dist/TxReentrantLock.js +75 -53
- package/dist/TxReentrantLock.js.map +1 -1
- package/dist/TxRef.d.ts +51 -32
- package/dist/TxRef.d.ts.map +1 -1
- package/dist/TxRef.js +23 -15
- package/dist/TxRef.js.map +1 -1
- package/dist/TxSemaphore.d.ts +129 -95
- package/dist/TxSemaphore.d.ts.map +1 -1
- package/dist/TxSemaphore.js +85 -70
- package/dist/TxSemaphore.js.map +1 -1
- package/dist/TxSubscriptionRef.d.ts +97 -70
- package/dist/TxSubscriptionRef.d.ts.map +1 -1
- package/dist/TxSubscriptionRef.js +44 -34
- package/dist/TxSubscriptionRef.js.map +1 -1
- package/dist/Types.d.ts +127 -70
- package/dist/Types.d.ts.map +1 -1
- package/dist/UndefinedOr.js.map +1 -1
- package/dist/Unify.d.ts +45 -65
- package/dist/Unify.d.ts.map +1 -1
- package/dist/Unify.js +6 -9
- package/dist/Unify.js.map +1 -1
- package/dist/Utils.d.ts +23 -16
- package/dist/Utils.d.ts.map +1 -1
- package/dist/Utils.js +3 -7
- package/dist/Utils.js.map +1 -1
- package/dist/index.d.ts +0 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -8
- package/dist/index.js.map +1 -1
- package/dist/internal/array.js.map +1 -1
- package/dist/internal/core.js +4 -3
- package/dist/internal/core.js.map +1 -1
- package/dist/internal/dateTime.js +5 -1
- package/dist/internal/dateTime.js.map +1 -1
- package/dist/internal/doNotation.js.map +1 -1
- package/dist/internal/effect.js +254 -114
- package/dist/internal/effect.js.map +1 -1
- package/dist/internal/equal.js.map +1 -1
- package/dist/internal/errors.js.map +1 -1
- package/dist/internal/executionPlan.js +52 -3
- package/dist/internal/executionPlan.js.map +1 -1
- package/dist/internal/hashMap.js +12 -8
- package/dist/internal/hashMap.js.map +1 -1
- package/dist/internal/hashSet.js.map +1 -1
- package/dist/internal/layer.js.map +1 -1
- package/dist/internal/matcher.js +2 -2
- package/dist/internal/matcher.js.map +1 -1
- package/dist/internal/metric.js.map +1 -1
- package/dist/internal/option.js.map +1 -1
- package/dist/internal/persistence.d.ts +2 -0
- package/dist/internal/persistence.d.ts.map +1 -0
- package/dist/internal/persistence.js +3 -0
- package/dist/internal/persistence.js.map +1 -0
- package/dist/internal/random.js.map +1 -1
- package/dist/internal/rcRef.js +18 -13
- package/dist/internal/rcRef.js.map +1 -1
- package/dist/internal/record.d.ts +0 -3
- package/dist/internal/record.d.ts.map +1 -1
- package/dist/internal/record.js +10 -5
- package/dist/internal/record.js.map +1 -1
- package/dist/internal/redacted.js.map +1 -1
- package/dist/internal/references.js +3 -4
- package/dist/internal/references.js.map +1 -1
- package/dist/internal/request.js.map +1 -1
- package/dist/internal/result.js.map +1 -1
- package/dist/internal/schedule.js.map +1 -1
- package/dist/internal/schema/annotations.js +15 -1
- package/dist/internal/schema/annotations.js.map +1 -1
- package/dist/internal/schema/cause.js.map +1 -1
- package/dist/internal/schema/fromJsonSchemaDocument.d.ts +2 -0
- package/dist/internal/schema/fromJsonSchemaDocument.d.ts.map +1 -0
- package/dist/internal/schema/fromJsonSchemaDocument.js +761 -0
- package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -0
- package/dist/internal/schema/fromRepresentation.d.ts +2 -0
- package/dist/internal/schema/fromRepresentation.d.ts.map +1 -0
- package/dist/internal/schema/fromRepresentation.js +245 -0
- package/dist/internal/schema/fromRepresentation.js.map +1 -0
- package/dist/internal/schema/parser.d.ts +14 -0
- package/dist/internal/schema/parser.d.ts.map +1 -0
- package/dist/internal/schema/parser.js +13 -0
- package/dist/internal/schema/parser.js.map +1 -0
- package/dist/internal/schema/schema.js +29 -49
- package/dist/internal/schema/schema.js.map +1 -1
- package/dist/internal/schema/toArbitrary.d.ts +2 -0
- package/dist/internal/schema/toArbitrary.d.ts.map +1 -0
- package/dist/internal/schema/{arbitrary.js → toArbitrary.js} +8 -83
- package/dist/internal/schema/toArbitrary.js.map +1 -0
- package/dist/internal/schema/toCodeDocument.d.ts +2 -0
- package/dist/internal/schema/toCodeDocument.d.ts.map +1 -0
- package/dist/internal/schema/toCodeDocument.js +438 -0
- package/dist/internal/schema/toCodeDocument.js.map +1 -0
- package/dist/internal/schema/toEquivalence.d.ts +2 -0
- package/dist/internal/schema/toEquivalence.d.ts.map +1 -0
- package/dist/internal/schema/{equivalence.js → toEquivalence.js} +15 -13
- package/dist/internal/schema/toEquivalence.js.map +1 -0
- package/dist/internal/schema/toJsonSchemaDocument.d.ts +2 -0
- package/dist/internal/schema/toJsonSchemaDocument.d.ts.map +1 -0
- package/dist/internal/schema/toJsonSchemaDocument.js +522 -0
- package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -0
- package/dist/internal/schema/toRepresentation.d.ts +2 -0
- package/dist/internal/schema/toRepresentation.d.ts.map +1 -0
- package/dist/internal/schema/toRepresentation.js +351 -0
- package/dist/internal/schema/toRepresentation.js.map +1 -0
- package/dist/internal/stackTraceLimit.js +3 -6
- package/dist/internal/stackTraceLimit.js.map +1 -1
- package/dist/internal/stream.js.map +1 -1
- package/dist/internal/tracer.js.map +1 -1
- package/dist/internal/trie.js +24 -10
- package/dist/internal/trie.js.map +1 -1
- package/dist/internal/uuid.d.ts +3 -0
- package/dist/internal/uuid.d.ts.map +1 -0
- package/dist/internal/uuid.js +30 -0
- package/dist/internal/uuid.js.map +1 -0
- package/dist/testing/FastCheck.d.ts +8 -7
- package/dist/testing/FastCheck.d.ts.map +1 -1
- package/dist/testing/FastCheck.js +8 -7
- package/dist/testing/FastCheck.js.map +1 -1
- package/dist/testing/TestClock.d.ts +58 -29
- package/dist/testing/TestClock.d.ts.map +1 -1
- package/dist/testing/TestClock.js +79 -24
- package/dist/testing/TestClock.js.map +1 -1
- package/dist/testing/TestConsole.d.ts +32 -31
- package/dist/testing/TestConsole.d.ts.map +1 -1
- package/dist/testing/TestConsole.js +24 -22
- package/dist/testing/TestConsole.js.map +1 -1
- package/dist/testing/TestSchema.d.ts +31 -31
- package/dist/testing/TestSchema.d.ts.map +1 -1
- package/dist/testing/TestSchema.js +35 -34
- package/dist/testing/TestSchema.js.map +1 -1
- package/dist/testing/index.js.map +1 -1
- package/dist/unstable/ai/AiError.d.ts +121 -144
- package/dist/unstable/ai/AiError.d.ts.map +1 -1
- package/dist/unstable/ai/AiError.js +118 -140
- package/dist/unstable/ai/AiError.js.map +1 -1
- package/dist/unstable/ai/AnthropicStructuredOutput.d.ts +22 -7
- package/dist/unstable/ai/AnthropicStructuredOutput.d.ts.map +1 -1
- package/dist/unstable/ai/AnthropicStructuredOutput.js +87 -317
- package/dist/unstable/ai/AnthropicStructuredOutput.js.map +1 -1
- package/dist/unstable/ai/Chat.d.ts +132 -97
- package/dist/unstable/ai/Chat.d.ts.map +1 -1
- package/dist/unstable/ai/Chat.js +56 -52
- package/dist/unstable/ai/Chat.js.map +1 -1
- package/dist/unstable/ai/EmbeddingModel.d.ts +1 -1
- package/dist/unstable/ai/EmbeddingModel.js +1 -1
- package/dist/unstable/ai/EmbeddingModel.js.map +1 -1
- package/dist/unstable/ai/IdGenerator.d.ts +32 -28
- package/dist/unstable/ai/IdGenerator.d.ts.map +1 -1
- package/dist/unstable/ai/IdGenerator.js +26 -21
- package/dist/unstable/ai/IdGenerator.js.map +1 -1
- package/dist/unstable/ai/LanguageModel.d.ts +111 -68
- package/dist/unstable/ai/LanguageModel.d.ts.map +1 -1
- package/dist/unstable/ai/LanguageModel.js +127 -83
- package/dist/unstable/ai/LanguageModel.js.map +1 -1
- package/dist/unstable/ai/McpProtocol.d.ts +116 -0
- package/dist/unstable/ai/McpProtocol.d.ts.map +1 -0
- package/dist/unstable/ai/McpProtocol.js +32 -0
- package/dist/unstable/ai/McpProtocol.js.map +1 -0
- package/dist/unstable/ai/McpSchema.d.ts +378 -223
- package/dist/unstable/ai/McpSchema.d.ts.map +1 -1
- package/dist/unstable/ai/McpSchema.js +135 -87
- package/dist/unstable/ai/McpSchema.js.map +1 -1
- package/dist/unstable/ai/McpServer.d.ts +89 -100
- package/dist/unstable/ai/McpServer.d.ts.map +1 -1
- package/dist/unstable/ai/McpServer.js +1037 -361
- package/dist/unstable/ai/McpServer.js.map +1 -1
- package/dist/unstable/ai/Model.d.ts +8 -19
- package/dist/unstable/ai/Model.d.ts.map +1 -1
- package/dist/unstable/ai/Model.js +9 -20
- package/dist/unstable/ai/Model.js.map +1 -1
- package/dist/unstable/ai/OpenAiStructuredOutput.d.ts +33 -11
- package/dist/unstable/ai/OpenAiStructuredOutput.d.ts.map +1 -1
- package/dist/unstable/ai/OpenAiStructuredOutput.js +194 -378
- package/dist/unstable/ai/OpenAiStructuredOutput.js.map +1 -1
- package/dist/unstable/ai/Prompt.d.ts +131 -44
- package/dist/unstable/ai/Prompt.d.ts.map +1 -1
- package/dist/unstable/ai/Prompt.js +100 -36
- package/dist/unstable/ai/Prompt.js.map +1 -1
- package/dist/unstable/ai/Response.d.ts +47 -33
- package/dist/unstable/ai/Response.d.ts.map +1 -1
- package/dist/unstable/ai/Response.js +23 -18
- package/dist/unstable/ai/Response.js.map +1 -1
- package/dist/unstable/ai/ResponseIdTracker.js.map +1 -1
- package/dist/unstable/ai/Telemetry.d.ts +46 -13
- package/dist/unstable/ai/Telemetry.d.ts.map +1 -1
- package/dist/unstable/ai/Telemetry.js +18 -7
- package/dist/unstable/ai/Telemetry.js.map +1 -1
- package/dist/unstable/ai/Tokenizer.d.ts +14 -3
- package/dist/unstable/ai/Tokenizer.d.ts.map +1 -1
- package/dist/unstable/ai/Tokenizer.js +10 -2
- package/dist/unstable/ai/Tokenizer.js.map +1 -1
- package/dist/unstable/ai/Tool.d.ts +63 -44
- package/dist/unstable/ai/Tool.d.ts.map +1 -1
- package/dist/unstable/ai/Tool.js +59 -42
- package/dist/unstable/ai/Tool.js.map +1 -1
- package/dist/unstable/ai/Toolkit.d.ts +35 -9
- package/dist/unstable/ai/Toolkit.d.ts.map +1 -1
- package/dist/unstable/ai/Toolkit.js +32 -14
- package/dist/unstable/ai/Toolkit.js.map +1 -1
- package/dist/unstable/ai/index.d.ts +4 -0
- package/dist/unstable/ai/index.d.ts.map +1 -1
- package/dist/unstable/ai/index.js +4 -0
- package/dist/unstable/ai/index.js.map +1 -1
- package/dist/unstable/ai/internal/codec-transformer.js +15 -12
- package/dist/unstable/ai/internal/codec-transformer.js.map +1 -1
- package/dist/unstable/ai/internal/mcpCore.d.ts +7 -0
- package/dist/unstable/ai/internal/mcpCore.d.ts.map +1 -0
- package/dist/unstable/ai/internal/mcpCore.js +152 -0
- package/dist/unstable/ai/internal/mcpCore.js.map +1 -0
- package/dist/unstable/ai/internal/mcpProtocol/v2024_11_05.d.ts +2 -0
- package/dist/unstable/ai/internal/mcpProtocol/v2024_11_05.d.ts.map +1 -0
- package/dist/unstable/ai/internal/mcpProtocol/v2024_11_05.js +259 -0
- package/dist/unstable/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -0
- package/dist/unstable/ai/internal/mcpProtocol/v2025_03_26.d.ts +2 -0
- package/dist/unstable/ai/internal/mcpProtocol/v2025_03_26.d.ts.map +1 -0
- package/dist/unstable/ai/internal/mcpProtocol/v2025_03_26.js +279 -0
- package/dist/unstable/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -0
- package/dist/unstable/ai/internal/mcpProtocol/v2025_06_18.d.ts +2 -0
- package/dist/unstable/ai/internal/mcpProtocol/v2025_06_18.d.ts.map +1 -0
- package/dist/unstable/ai/internal/mcpProtocol/v2025_06_18.js +281 -0
- package/dist/unstable/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -0
- package/dist/unstable/ai/internal/mcpProtocol.d.ts +2 -0
- package/dist/unstable/ai/internal/mcpProtocol.d.ts.map +1 -0
- package/dist/unstable/ai/internal/mcpProtocol.js +153 -0
- package/dist/unstable/ai/internal/mcpProtocol.js.map +1 -0
- package/dist/unstable/ai/internal/mcpProtocolRegistry.d.ts +2 -0
- package/dist/unstable/ai/internal/mcpProtocolRegistry.d.ts.map +1 -0
- package/dist/unstable/ai/internal/mcpProtocolRegistry.js +47 -0
- package/dist/unstable/ai/internal/mcpProtocolRegistry.js.map +1 -0
- package/dist/unstable/ai/internal/mcpSchema/v2024_11_05.d.ts +1185 -0
- package/dist/unstable/ai/internal/mcpSchema/v2024_11_05.d.ts.map +1 -0
- package/dist/unstable/ai/internal/mcpSchema/v2024_11_05.js +404 -0
- package/dist/unstable/ai/internal/mcpSchema/v2024_11_05.js.map +1 -0
- package/dist/unstable/ai/internal/mcpSchema/v2025_03_26.d.ts +825 -0
- package/dist/unstable/ai/internal/mcpSchema/v2025_03_26.d.ts.map +1 -0
- package/dist/unstable/ai/internal/mcpSchema/v2025_03_26.js +138 -0
- package/dist/unstable/ai/internal/mcpSchema/v2025_03_26.js.map +1 -0
- package/dist/unstable/ai/internal/mcpSchema/v2025_06_18.d.ts +1462 -0
- package/dist/unstable/ai/internal/mcpSchema/v2025_06_18.d.ts.map +1 -0
- package/dist/unstable/ai/internal/mcpSchema/v2025_06_18.js +309 -0
- package/dist/unstable/ai/internal/mcpSchema/v2025_06_18.js.map +1 -0
- package/dist/unstable/ai/internal/structured-output.d.ts +2 -0
- package/dist/unstable/ai/internal/structured-output.d.ts.map +1 -0
- package/dist/unstable/ai/internal/structured-output.js +315 -0
- package/dist/unstable/ai/internal/structured-output.js.map +1 -0
- package/dist/unstable/cli/Argument.d.ts +279 -72
- package/dist/unstable/cli/Argument.d.ts.map +1 -1
- package/dist/unstable/cli/Argument.js +113 -34
- package/dist/unstable/cli/Argument.js.map +1 -1
- package/dist/unstable/cli/CliConfig.js.map +1 -1
- package/dist/unstable/cli/CliError.d.ts +126 -76
- package/dist/unstable/cli/CliError.d.ts.map +1 -1
- package/dist/unstable/cli/CliError.js +136 -76
- package/dist/unstable/cli/CliError.js.map +1 -1
- package/dist/unstable/cli/CliOutput.d.ts +35 -54
- package/dist/unstable/cli/CliOutput.d.ts.map +1 -1
- package/dist/unstable/cli/CliOutput.js +26 -42
- package/dist/unstable/cli/CliOutput.js.map +1 -1
- package/dist/unstable/cli/Command.d.ts +736 -115
- package/dist/unstable/cli/Command.d.ts.map +1 -1
- package/dist/unstable/cli/Command.js +282 -56
- package/dist/unstable/cli/Command.js.map +1 -1
- package/dist/unstable/cli/Completions.js.map +1 -1
- package/dist/unstable/cli/Flag.d.ts +418 -138
- package/dist/unstable/cli/Flag.d.ts.map +1 -1
- package/dist/unstable/cli/Flag.js +197 -71
- package/dist/unstable/cli/Flag.js.map +1 -1
- package/dist/unstable/cli/GlobalFlag.d.ts +1 -1
- package/dist/unstable/cli/GlobalFlag.js.map +1 -1
- package/dist/unstable/cli/HelpDoc.d.ts +12 -4
- package/dist/unstable/cli/HelpDoc.d.ts.map +1 -1
- package/dist/unstable/cli/Param.d.ts +299 -83
- package/dist/unstable/cli/Param.d.ts.map +1 -1
- package/dist/unstable/cli/Param.js +146 -60
- package/dist/unstable/cli/Param.js.map +1 -1
- package/dist/unstable/cli/Primitive.d.ts +370 -149
- package/dist/unstable/cli/Primitive.d.ts.map +1 -1
- package/dist/unstable/cli/Primitive.js +377 -162
- package/dist/unstable/cli/Primitive.js.map +1 -1
- package/dist/unstable/cli/Prompt.d.ts +23 -14
- package/dist/unstable/cli/Prompt.d.ts.map +1 -1
- package/dist/unstable/cli/Prompt.js +54 -31
- package/dist/unstable/cli/Prompt.js.map +1 -1
- package/dist/unstable/cli/index.js.map +1 -1
- package/dist/unstable/cli/internal/ansi.js +2 -2
- package/dist/unstable/cli/internal/ansi.js.map +1 -1
- package/dist/unstable/cli/internal/auto-suggest.js.map +1 -1
- package/dist/unstable/cli/internal/command.d.ts +5 -3
- package/dist/unstable/cli/internal/command.d.ts.map +1 -1
- package/dist/unstable/cli/internal/command.js +21 -13
- package/dist/unstable/cli/internal/command.js.map +1 -1
- package/dist/unstable/cli/internal/completions/bash.js +69 -9
- package/dist/unstable/cli/internal/completions/bash.js.map +1 -1
- package/dist/unstable/cli/internal/completions/descriptor.js +24 -18
- package/dist/unstable/cli/internal/completions/descriptor.js.map +1 -1
- package/dist/unstable/cli/internal/completions/fish.js +5 -5
- package/dist/unstable/cli/internal/completions/fish.js.map +1 -1
- package/dist/unstable/cli/internal/completions/zsh.js.map +1 -1
- package/dist/unstable/cli/internal/config.d.ts +0 -48
- package/dist/unstable/cli/internal/config.d.ts.map +1 -1
- package/dist/unstable/cli/internal/config.js +8 -10
- package/dist/unstable/cli/internal/config.js.map +1 -1
- package/dist/unstable/cli/internal/help.d.ts.map +1 -1
- package/dist/unstable/cli/internal/help.js +4 -2
- package/dist/unstable/cli/internal/help.js.map +1 -1
- package/dist/unstable/cli/internal/lexer.js +17 -7
- package/dist/unstable/cli/internal/lexer.js.map +1 -1
- package/dist/unstable/cli/internal/parser.js +5 -5
- package/dist/unstable/cli/internal/parser.js.map +1 -1
- package/dist/unstable/cli/internal/wizard.js +2 -2
- package/dist/unstable/cli/internal/wizard.js.map +1 -1
- package/dist/unstable/cluster/ClusterCron.js.map +1 -1
- package/dist/unstable/cluster/ClusterError.d.ts +3 -1
- package/dist/unstable/cluster/ClusterError.d.ts.map +1 -1
- package/dist/unstable/cluster/ClusterError.js +10 -8
- package/dist/unstable/cluster/ClusterError.js.map +1 -1
- package/dist/unstable/cluster/ClusterMetrics.js.map +1 -1
- package/dist/unstable/cluster/ClusterSchema.d.ts +8 -8
- package/dist/unstable/cluster/ClusterSchema.js +8 -8
- package/dist/unstable/cluster/ClusterSchema.js.map +1 -1
- package/dist/unstable/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
- package/dist/unstable/cluster/ClusterWorkflowEngine.js +43 -21
- package/dist/unstable/cluster/ClusterWorkflowEngine.js.map +1 -1
- package/dist/unstable/cluster/DeliverAt.js.map +1 -1
- package/dist/unstable/cluster/Entity.d.ts +12 -12
- package/dist/unstable/cluster/Entity.d.ts.map +1 -1
- package/dist/unstable/cluster/Entity.js +9 -9
- package/dist/unstable/cluster/Entity.js.map +1 -1
- package/dist/unstable/cluster/EntityAddress.js.map +1 -1
- package/dist/unstable/cluster/EntityId.js.map +1 -1
- package/dist/unstable/cluster/EntityProxy.d.ts +7 -5
- package/dist/unstable/cluster/EntityProxy.d.ts.map +1 -1
- package/dist/unstable/cluster/EntityProxy.js +8 -5
- package/dist/unstable/cluster/EntityProxy.js.map +1 -1
- package/dist/unstable/cluster/EntityProxyServer.js.map +1 -1
- package/dist/unstable/cluster/EntityResource.d.ts +4 -4
- package/dist/unstable/cluster/EntityResource.d.ts.map +1 -1
- package/dist/unstable/cluster/EntityResource.js +14 -2
- package/dist/unstable/cluster/EntityResource.js.map +1 -1
- package/dist/unstable/cluster/EntityType.js.map +1 -1
- package/dist/unstable/cluster/Envelope.d.ts +3 -3
- package/dist/unstable/cluster/Envelope.d.ts.map +1 -1
- package/dist/unstable/cluster/Envelope.js +5 -4
- package/dist/unstable/cluster/Envelope.js.map +1 -1
- package/dist/unstable/cluster/HttpRunner.d.ts +2 -2
- package/dist/unstable/cluster/HttpRunner.d.ts.map +1 -1
- package/dist/unstable/cluster/HttpRunner.js +6 -4
- package/dist/unstable/cluster/HttpRunner.js.map +1 -1
- package/dist/unstable/cluster/K8sHttpClient.d.ts +2 -2
- package/dist/unstable/cluster/K8sHttpClient.d.ts.map +1 -1
- package/dist/unstable/cluster/K8sHttpClient.js +8 -0
- package/dist/unstable/cluster/K8sHttpClient.js.map +1 -1
- package/dist/unstable/cluster/K8sTypes.d.ts +2327 -0
- package/dist/unstable/cluster/K8sTypes.d.ts.map +1 -0
- package/dist/unstable/cluster/K8sTypes.js +29 -0
- package/dist/unstable/cluster/K8sTypes.js.map +1 -0
- package/dist/unstable/cluster/MachineId.js.map +1 -1
- package/dist/unstable/cluster/Message.d.ts +9 -9
- package/dist/unstable/cluster/Message.js +6 -6
- package/dist/unstable/cluster/Message.js.map +1 -1
- package/dist/unstable/cluster/MessageStorage.d.ts +66 -22
- package/dist/unstable/cluster/MessageStorage.d.ts.map +1 -1
- package/dist/unstable/cluster/MessageStorage.js +56 -13
- package/dist/unstable/cluster/MessageStorage.js.map +1 -1
- package/dist/unstable/cluster/Reply.d.ts +8 -0
- package/dist/unstable/cluster/Reply.d.ts.map +1 -1
- package/dist/unstable/cluster/Reply.js +17 -5
- package/dist/unstable/cluster/Reply.js.map +1 -1
- package/dist/unstable/cluster/Runner.d.ts +1 -1
- package/dist/unstable/cluster/Runner.js +1 -1
- package/dist/unstable/cluster/Runner.js.map +1 -1
- package/dist/unstable/cluster/RunnerAddress.d.ts +1 -1
- package/dist/unstable/cluster/RunnerAddress.js +1 -1
- package/dist/unstable/cluster/RunnerAddress.js.map +1 -1
- package/dist/unstable/cluster/RunnerHealth.d.ts +1 -1
- package/dist/unstable/cluster/RunnerHealth.js +1 -1
- package/dist/unstable/cluster/RunnerHealth.js.map +1 -1
- package/dist/unstable/cluster/RunnerServer.d.ts +2 -1
- package/dist/unstable/cluster/RunnerServer.d.ts.map +1 -1
- package/dist/unstable/cluster/RunnerServer.js +29 -23
- package/dist/unstable/cluster/RunnerServer.js.map +1 -1
- package/dist/unstable/cluster/RunnerStorage.d.ts +3 -4
- package/dist/unstable/cluster/RunnerStorage.d.ts.map +1 -1
- package/dist/unstable/cluster/RunnerStorage.js +8 -7
- package/dist/unstable/cluster/RunnerStorage.js.map +1 -1
- package/dist/unstable/cluster/Runners.d.ts +11 -15
- package/dist/unstable/cluster/Runners.d.ts.map +1 -1
- package/dist/unstable/cluster/Runners.js +32 -22
- package/dist/unstable/cluster/Runners.js.map +1 -1
- package/dist/unstable/cluster/ShardId.js +1 -1
- package/dist/unstable/cluster/ShardId.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 +293 -46
- package/dist/unstable/cluster/Sharding.js.map +1 -1
- package/dist/unstable/cluster/ShardingConfig.d.ts +57 -5
- package/dist/unstable/cluster/ShardingConfig.d.ts.map +1 -1
- package/dist/unstable/cluster/ShardingConfig.js +11 -3
- package/dist/unstable/cluster/ShardingConfig.js.map +1 -1
- package/dist/unstable/cluster/ShardingRegistrationEvent.js.map +1 -1
- package/dist/unstable/cluster/SingleRunner.d.ts +4 -2
- package/dist/unstable/cluster/SingleRunner.d.ts.map +1 -1
- package/dist/unstable/cluster/SingleRunner.js +2 -1
- package/dist/unstable/cluster/SingleRunner.js.map +1 -1
- package/dist/unstable/cluster/Singleton.js.map +1 -1
- package/dist/unstable/cluster/SingletonAddress.d.ts +1 -1
- package/dist/unstable/cluster/SingletonAddress.js +1 -1
- package/dist/unstable/cluster/SingletonAddress.js.map +1 -1
- package/dist/unstable/cluster/Snowflake.d.ts +8 -8
- package/dist/unstable/cluster/Snowflake.js +8 -8
- package/dist/unstable/cluster/Snowflake.js.map +1 -1
- package/dist/unstable/cluster/SocketRunner.js.map +1 -1
- package/dist/unstable/cluster/SqlMessageStorage.d.ts +21 -9
- package/dist/unstable/cluster/SqlMessageStorage.d.ts.map +1 -1
- package/dist/unstable/cluster/SqlMessageStorage.js +130 -43
- package/dist/unstable/cluster/SqlMessageStorage.js.map +1 -1
- package/dist/unstable/cluster/SqlRunnerStorage.d.ts.map +1 -1
- package/dist/unstable/cluster/SqlRunnerStorage.js +141 -79
- package/dist/unstable/cluster/SqlRunnerStorage.js.map +1 -1
- package/dist/unstable/cluster/TestRunner.js.map +1 -1
- package/dist/unstable/cluster/index.d.ts +4 -0
- package/dist/unstable/cluster/index.d.ts.map +1 -1
- package/dist/unstable/cluster/index.js +4 -0
- package/dist/unstable/cluster/index.js.map +1 -1
- package/dist/unstable/cluster/internal/entityManager.js +33 -13
- package/dist/unstable/cluster/internal/entityManager.js.map +1 -1
- package/dist/unstable/cluster/internal/entityReaper.js.map +1 -1
- package/dist/unstable/cluster/internal/hash.js.map +1 -1
- package/dist/unstable/cluster/internal/interruptors.js.map +1 -1
- package/dist/unstable/cluster/internal/resourceMap.js +8 -2
- package/dist/unstable/cluster/internal/resourceMap.js.map +1 -1
- package/dist/unstable/cluster/internal/resourceRef.js +17 -0
- package/dist/unstable/cluster/internal/resourceRef.js.map +1 -1
- package/dist/unstable/cluster/internal/shardLock.d.ts +2 -0
- package/dist/unstable/cluster/internal/shardLock.d.ts.map +1 -0
- package/dist/unstable/cluster/internal/shardLock.js +4 -0
- package/dist/unstable/cluster/internal/shardLock.js.map +1 -0
- package/dist/unstable/devtools/DevTools.js.map +1 -1
- package/dist/unstable/devtools/DevToolsClient.d.ts.map +1 -1
- package/dist/unstable/devtools/DevToolsClient.js +7 -2
- package/dist/unstable/devtools/DevToolsClient.js.map +1 -1
- package/dist/unstable/devtools/DevToolsSchema.d.ts +20 -20
- package/dist/unstable/devtools/DevToolsSchema.d.ts.map +1 -1
- package/dist/unstable/devtools/DevToolsSchema.js +8 -5
- package/dist/unstable/devtools/DevToolsSchema.js.map +1 -1
- package/dist/unstable/devtools/DevToolsServer.js.map +1 -1
- package/dist/unstable/devtools/index.js.map +1 -1
- package/dist/unstable/encoding/Ini.d.ts +20 -0
- package/dist/unstable/encoding/Ini.d.ts.map +1 -0
- package/dist/unstable/encoding/Ini.js +153 -0
- package/dist/unstable/encoding/Ini.js.map +1 -0
- package/dist/unstable/encoding/Msgpack.d.ts +2 -1
- package/dist/unstable/encoding/Msgpack.d.ts.map +1 -1
- package/dist/unstable/encoding/Msgpack.js +31 -19
- package/dist/unstable/encoding/Msgpack.js.map +1 -1
- package/dist/unstable/encoding/Ndjson.d.ts.map +1 -1
- package/dist/unstable/encoding/Ndjson.js +7 -1
- package/dist/unstable/encoding/Ndjson.js.map +1 -1
- package/dist/unstable/encoding/Sse.d.ts +72 -8
- package/dist/unstable/encoding/Sse.d.ts.map +1 -1
- package/dist/unstable/encoding/Sse.js +72 -31
- package/dist/unstable/encoding/Sse.js.map +1 -1
- package/dist/unstable/encoding/Toml.d.ts +19 -0
- package/dist/unstable/encoding/Toml.d.ts.map +1 -0
- package/dist/unstable/encoding/Toml.js +434 -0
- package/dist/unstable/encoding/Toml.js.map +1 -0
- package/dist/unstable/encoding/Yaml.d.ts +19 -0
- package/dist/unstable/encoding/Yaml.d.ts.map +1 -0
- package/dist/unstable/encoding/Yaml.js +461 -0
- package/dist/unstable/encoding/Yaml.js.map +1 -0
- package/dist/unstable/encoding/index.d.ts +12 -0
- package/dist/unstable/encoding/index.d.ts.map +1 -1
- package/dist/unstable/encoding/index.js +12 -0
- package/dist/unstable/encoding/index.js.map +1 -1
- package/dist/unstable/eventlog/Event.d.ts +20 -20
- package/dist/unstable/eventlog/Event.js.map +1 -1
- package/dist/unstable/eventlog/EventGroup.d.ts +4 -4
- package/dist/unstable/eventlog/EventGroup.js.map +1 -1
- package/dist/unstable/eventlog/EventJournal.d.ts +30 -17
- package/dist/unstable/eventlog/EventJournal.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventJournal.js +30 -35
- package/dist/unstable/eventlog/EventJournal.js.map +1 -1
- package/dist/unstable/eventlog/EventLog.d.ts +3 -3
- package/dist/unstable/eventlog/EventLog.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventLog.js +18 -14
- package/dist/unstable/eventlog/EventLog.js.map +1 -1
- package/dist/unstable/eventlog/EventLogEncryption.d.ts +8 -7
- package/dist/unstable/eventlog/EventLogEncryption.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventLogEncryption.js +16 -14
- package/dist/unstable/eventlog/EventLogEncryption.js.map +1 -1
- package/dist/unstable/eventlog/EventLogMessage.d.ts +31 -31
- package/dist/unstable/eventlog/EventLogMessage.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventLogMessage.js +12 -8
- package/dist/unstable/eventlog/EventLogMessage.js.map +1 -1
- package/dist/unstable/eventlog/EventLogRemote.d.ts +15 -15
- package/dist/unstable/eventlog/EventLogRemote.js +5 -5
- package/dist/unstable/eventlog/EventLogRemote.js.map +1 -1
- package/dist/unstable/eventlog/EventLogServer.d.ts +11 -2
- package/dist/unstable/eventlog/EventLogServer.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventLogServer.js +45 -21
- package/dist/unstable/eventlog/EventLogServer.js.map +1 -1
- package/dist/unstable/eventlog/EventLogServerEncrypted.d.ts +4 -4
- package/dist/unstable/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventLogServerEncrypted.js +17 -8
- package/dist/unstable/eventlog/EventLogServerEncrypted.js.map +1 -1
- package/dist/unstable/eventlog/EventLogServerUnencrypted.d.ts +5 -5
- package/dist/unstable/eventlog/EventLogServerUnencrypted.d.ts.map +1 -1
- package/dist/unstable/eventlog/EventLogServerUnencrypted.js +15 -7
- package/dist/unstable/eventlog/EventLogServerUnencrypted.js.map +1 -1
- package/dist/unstable/eventlog/EventLogSessionAuth.d.ts +1 -1
- package/dist/unstable/eventlog/EventLogSessionAuth.js +1 -1
- package/dist/unstable/eventlog/EventLogSessionAuth.js.map +1 -1
- package/dist/unstable/eventlog/SqlEventJournal.d.ts +10 -0
- package/dist/unstable/eventlog/SqlEventJournal.d.ts.map +1 -1
- package/dist/unstable/eventlog/SqlEventJournal.js +4 -7
- package/dist/unstable/eventlog/SqlEventJournal.js.map +1 -1
- package/dist/unstable/eventlog/SqlEventLogServerEncrypted.js +1 -1
- package/dist/unstable/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
- package/dist/unstable/eventlog/SqlEventLogServerUnencrypted.js +3 -3
- package/dist/unstable/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
- package/dist/unstable/eventlog/index.js.map +1 -1
- package/dist/unstable/eventlog/internal/identityRootSecretDerivation.js.map +1 -1
- package/dist/unstable/http/Cookies.d.ts +2 -2
- package/dist/unstable/http/Cookies.d.ts.map +1 -1
- package/dist/unstable/http/Cookies.js +54 -40
- package/dist/unstable/http/Cookies.js.map +1 -1
- package/dist/unstable/http/Etag.d.ts +1 -1
- package/dist/unstable/http/Etag.js +1 -1
- package/dist/unstable/http/Etag.js.map +1 -1
- package/dist/unstable/http/FetchHttpClient.d.ts.map +1 -1
- package/dist/unstable/http/FetchHttpClient.js +1 -1
- package/dist/unstable/http/FetchHttpClient.js.map +1 -1
- package/dist/unstable/http/FindMyWay/internal/queryString.d.ts +11 -0
- package/dist/unstable/http/FindMyWay/internal/queryString.d.ts.map +1 -0
- package/dist/unstable/http/FindMyWay/internal/queryString.js +259 -0
- package/dist/unstable/http/FindMyWay/internal/queryString.js.map +1 -0
- package/dist/unstable/http/FindMyWay/internal/router.d.ts +2 -0
- package/dist/unstable/http/FindMyWay/internal/router.d.ts.map +1 -0
- package/dist/unstable/http/FindMyWay/internal/router.js +665 -0
- package/dist/unstable/http/FindMyWay/internal/router.js.map +1 -0
- package/dist/unstable/http/FindMyWay.d.ts +33 -8
- package/dist/unstable/http/FindMyWay.d.ts.map +1 -1
- package/dist/unstable/http/FindMyWay.js +4 -7
- package/dist/unstable/http/FindMyWay.js.map +1 -1
- package/dist/unstable/http/Headers.d.ts +2 -2
- package/dist/unstable/http/Headers.js +10 -10
- package/dist/unstable/http/Headers.js.map +1 -1
- package/dist/unstable/http/HttpBody.d.ts +5 -3
- package/dist/unstable/http/HttpBody.d.ts.map +1 -1
- package/dist/unstable/http/HttpBody.js +11 -5
- package/dist/unstable/http/HttpBody.js.map +1 -1
- package/dist/unstable/http/HttpClient.d.ts +110 -47
- package/dist/unstable/http/HttpClient.d.ts.map +1 -1
- package/dist/unstable/http/HttpClient.js +79 -36
- package/dist/unstable/http/HttpClient.js.map +1 -1
- package/dist/unstable/http/HttpClientError.js +1 -1
- package/dist/unstable/http/HttpClientError.js.map +1 -1
- package/dist/unstable/http/HttpClientRequest.d.ts +44 -0
- package/dist/unstable/http/HttpClientRequest.d.ts.map +1 -1
- package/dist/unstable/http/HttpClientRequest.js +16 -12
- package/dist/unstable/http/HttpClientRequest.js.map +1 -1
- package/dist/unstable/http/HttpClientResponse.d.ts +4 -4
- package/dist/unstable/http/HttpClientResponse.js +3 -18
- package/dist/unstable/http/HttpClientResponse.js.map +1 -1
- package/dist/unstable/http/HttpEffect.d.ts +7 -9
- package/dist/unstable/http/HttpEffect.d.ts.map +1 -1
- package/dist/unstable/http/HttpEffect.js +14 -15
- package/dist/unstable/http/HttpEffect.js.map +1 -1
- package/dist/unstable/http/HttpIncomingMessage.js.map +1 -1
- package/dist/unstable/http/HttpMethod.d.ts +6 -9
- package/dist/unstable/http/HttpMethod.d.ts.map +1 -1
- package/dist/unstable/http/HttpMethod.js +6 -9
- package/dist/unstable/http/HttpMethod.js.map +1 -1
- package/dist/unstable/http/HttpMiddleware.d.ts +75 -9
- package/dist/unstable/http/HttpMiddleware.d.ts.map +1 -1
- package/dist/unstable/http/HttpMiddleware.js +164 -39
- package/dist/unstable/http/HttpMiddleware.js.map +1 -1
- package/dist/unstable/http/HttpPlatform.d.ts +76 -0
- package/dist/unstable/http/HttpPlatform.d.ts.map +1 -1
- package/dist/unstable/http/HttpPlatform.js +53 -3
- package/dist/unstable/http/HttpPlatform.js.map +1 -1
- package/dist/unstable/http/HttpRouter.d.ts +91 -92
- package/dist/unstable/http/HttpRouter.d.ts.map +1 -1
- package/dist/unstable/http/HttpRouter.js +79 -80
- package/dist/unstable/http/HttpRouter.js.map +1 -1
- package/dist/unstable/http/HttpServer.d.ts +13 -13
- package/dist/unstable/http/HttpServer.js +6 -6
- package/dist/unstable/http/HttpServer.js.map +1 -1
- package/dist/unstable/http/HttpServerError.d.ts +2 -2
- package/dist/unstable/http/HttpServerError.js +2 -2
- package/dist/unstable/http/HttpServerError.js.map +1 -1
- package/dist/unstable/http/HttpServerRequest.d.ts +4 -4
- package/dist/unstable/http/HttpServerRequest.d.ts.map +1 -1
- package/dist/unstable/http/HttpServerRequest.js +23 -15
- package/dist/unstable/http/HttpServerRequest.js.map +1 -1
- package/dist/unstable/http/HttpServerRespondable.js.map +1 -1
- package/dist/unstable/http/HttpServerResponse.d.ts +22 -0
- package/dist/unstable/http/HttpServerResponse.d.ts.map +1 -1
- package/dist/unstable/http/HttpServerResponse.js +17 -5
- package/dist/unstable/http/HttpServerResponse.js.map +1 -1
- package/dist/unstable/http/HttpStaticServer.d.ts +35 -7
- package/dist/unstable/http/HttpStaticServer.d.ts.map +1 -1
- package/dist/unstable/http/HttpStaticServer.js +35 -7
- package/dist/unstable/http/HttpStaticServer.js.map +1 -1
- package/dist/unstable/http/HttpStatus.d.ts +99 -0
- package/dist/unstable/http/HttpStatus.d.ts.map +1 -0
- package/dist/unstable/http/HttpStatus.js +91 -0
- package/dist/unstable/http/HttpStatus.js.map +1 -0
- package/dist/unstable/http/HttpTraceContext.js.map +1 -1
- package/dist/unstable/http/Multipart.d.ts +28 -9
- package/dist/unstable/http/Multipart.d.ts.map +1 -1
- package/dist/unstable/http/Multipart.js +65 -35
- package/dist/unstable/http/Multipart.js.map +1 -1
- package/dist/unstable/http/MultipartParser/HeadersParser.d.ts +53 -0
- package/dist/unstable/http/MultipartParser/HeadersParser.d.ts.map +1 -0
- package/dist/unstable/http/MultipartParser/HeadersParser.js +14 -0
- package/dist/unstable/http/MultipartParser/HeadersParser.js.map +1 -0
- package/dist/unstable/http/MultipartParser/Search.d.ts +11 -0
- package/dist/unstable/http/MultipartParser/Search.d.ts.map +1 -0
- package/dist/unstable/http/MultipartParser/Search.js +14 -0
- package/dist/unstable/http/MultipartParser/Search.js.map +1 -0
- package/dist/unstable/http/MultipartParser/internal/contentType.d.ts +5 -0
- package/dist/unstable/http/MultipartParser/internal/contentType.d.ts.map +1 -0
- package/dist/unstable/http/MultipartParser/internal/contentType.js +82 -0
- package/dist/unstable/http/MultipartParser/internal/contentType.js.map +1 -0
- package/dist/unstable/http/MultipartParser/internal/headers.d.ts +3 -0
- package/dist/unstable/http/MultipartParser/internal/headers.d.ts.map +1 -0
- package/dist/unstable/http/MultipartParser/internal/headers.js +208 -0
- package/dist/unstable/http/MultipartParser/internal/headers.js.map +1 -0
- package/dist/unstable/http/MultipartParser/internal/multipart.d.ts +8 -0
- package/dist/unstable/http/MultipartParser/internal/multipart.d.ts.map +1 -0
- package/dist/unstable/http/MultipartParser/internal/multipart.js +241 -0
- package/dist/unstable/http/MultipartParser/internal/multipart.js.map +1 -0
- package/dist/unstable/http/MultipartParser/internal/search.d.ts +5 -0
- package/dist/unstable/http/MultipartParser/internal/search.d.ts.map +1 -0
- package/dist/unstable/http/MultipartParser/internal/search.js +120 -0
- package/dist/unstable/http/MultipartParser/internal/search.js.map +1 -0
- package/dist/unstable/http/MultipartParser.d.ts +98 -0
- package/dist/unstable/http/MultipartParser.d.ts.map +1 -0
- package/dist/unstable/http/MultipartParser.js +23 -0
- package/dist/unstable/http/MultipartParser.js.map +1 -0
- package/dist/unstable/http/Template.d.ts.map +1 -1
- package/dist/unstable/http/Template.js +3 -3
- package/dist/unstable/http/Template.js.map +1 -1
- package/dist/unstable/http/Url.d.ts +33 -63
- package/dist/unstable/http/Url.d.ts.map +1 -1
- package/dist/unstable/http/Url.js +14 -28
- package/dist/unstable/http/Url.js.map +1 -1
- package/dist/unstable/http/UrlParams.d.ts +10 -18
- package/dist/unstable/http/UrlParams.d.ts.map +1 -1
- package/dist/unstable/http/UrlParams.js +26 -31
- package/dist/unstable/http/UrlParams.js.map +1 -1
- package/dist/unstable/http/index.d.ts +5 -1
- package/dist/unstable/http/index.d.ts.map +1 -1
- package/dist/unstable/http/index.js +5 -1
- package/dist/unstable/http/index.js.map +1 -1
- package/dist/unstable/http/internal/compression.d.ts +2 -0
- package/dist/unstable/http/internal/compression.d.ts.map +1 -0
- package/dist/unstable/http/internal/compression.js +155 -0
- package/dist/unstable/http/internal/compression.js.map +1 -0
- package/dist/unstable/http/internal/httpBody.d.ts +2 -0
- package/dist/unstable/http/internal/httpBody.d.ts.map +1 -0
- package/dist/unstable/http/internal/httpBody.js +10 -0
- package/dist/unstable/http/internal/httpBody.js.map +1 -0
- package/dist/unstable/http/internal/preResponseHandler.js.map +1 -1
- package/dist/unstable/httpapi/HttpApi.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApi.js +9 -9
- package/dist/unstable/httpapi/HttpApi.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiBuilder.d.ts +1 -1
- package/dist/unstable/httpapi/HttpApiBuilder.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiBuilder.js +82 -30
- package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiClient.d.ts +4 -5
- package/dist/unstable/httpapi/HttpApiClient.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiClient.js +89 -51
- package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +48 -46
- package/dist/unstable/httpapi/HttpApiEndpoint.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiEndpoint.js +73 -16
- package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiError.d.ts +18 -18
- package/dist/unstable/httpapi/HttpApiError.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiError.js +30 -30
- package/dist/unstable/httpapi/HttpApiError.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiGroup.d.ts +15 -15
- package/dist/unstable/httpapi/HttpApiGroup.js +2 -2
- package/dist/unstable/httpapi/HttpApiGroup.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiMiddleware.d.ts +71 -24
- package/dist/unstable/httpapi/HttpApiMiddleware.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiMiddleware.js +57 -10
- package/dist/unstable/httpapi/HttpApiMiddleware.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiScalar.d.ts +0 -12
- package/dist/unstable/httpapi/HttpApiScalar.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiScalar.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiSchema.d.ts +227 -71
- package/dist/unstable/httpapi/HttpApiSchema.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiSchema.js +176 -69
- package/dist/unstable/httpapi/HttpApiSchema.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiSecurity.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiSwagger.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiTest.js.map +1 -1
- package/dist/unstable/httpapi/OpenApi.d.ts +21 -13
- package/dist/unstable/httpapi/OpenApi.d.ts.map +1 -1
- package/dist/unstable/httpapi/OpenApi.js +110 -57
- package/dist/unstable/httpapi/OpenApi.js.map +1 -1
- package/dist/unstable/httpapi/index.js.map +1 -1
- package/dist/unstable/httpapi/internal/html.js.map +1 -1
- package/dist/unstable/httpapi/internal/httpApiScalar.js.map +1 -1
- package/dist/unstable/httpapi/internal/httpApiSwagger.js.map +1 -1
- package/dist/unstable/httpapi/internal/mediaType.js.map +1 -1
- package/dist/unstable/observability/Otlp.js.map +1 -1
- package/dist/unstable/observability/OtlpExporter.d.ts +71 -2
- package/dist/unstable/observability/OtlpExporter.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpExporter.js +86 -7
- package/dist/unstable/observability/OtlpExporter.js.map +1 -1
- package/dist/unstable/observability/OtlpLogger.d.ts +4 -3
- package/dist/unstable/observability/OtlpLogger.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpLogger.js +4 -4
- package/dist/unstable/observability/OtlpLogger.js.map +1 -1
- package/dist/unstable/observability/OtlpMetrics.d.ts +11 -4
- package/dist/unstable/observability/OtlpMetrics.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpMetrics.js +31 -15
- package/dist/unstable/observability/OtlpMetrics.js.map +1 -1
- package/dist/unstable/observability/OtlpResource.d.ts +16 -7
- package/dist/unstable/observability/OtlpResource.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpResource.js +21 -12
- package/dist/unstable/observability/OtlpResource.js.map +1 -1
- package/dist/unstable/observability/OtlpSerialization.js.map +1 -1
- package/dist/unstable/observability/OtlpTracer.d.ts +4 -3
- package/dist/unstable/observability/OtlpTracer.d.ts.map +1 -1
- package/dist/unstable/observability/OtlpTracer.js +3 -3
- package/dist/unstable/observability/OtlpTracer.js.map +1 -1
- package/dist/unstable/observability/PrometheusMetrics.d.ts +13 -4
- package/dist/unstable/observability/PrometheusMetrics.d.ts.map +1 -1
- package/dist/unstable/observability/PrometheusMetrics.js +10 -3
- package/dist/unstable/observability/PrometheusMetrics.js.map +1 -1
- package/dist/unstable/observability/index.js.map +1 -1
- package/dist/unstable/observability/internal/otlpEnv.js +1 -1
- package/dist/unstable/observability/internal/otlpEnv.js.map +1 -1
- package/dist/unstable/observability/internal/otlpProtobuf.js.map +1 -1
- package/dist/unstable/observability/internal/protobuf.js +3 -0
- package/dist/unstable/observability/internal/protobuf.js.map +1 -1
- package/dist/unstable/persistence/KeyValueStore.d.ts +8 -3
- package/dist/unstable/persistence/KeyValueStore.d.ts.map +1 -1
- package/dist/unstable/persistence/KeyValueStore.js +22 -13
- package/dist/unstable/persistence/KeyValueStore.js.map +1 -1
- package/dist/unstable/persistence/Persistable.d.ts +8 -8
- package/dist/unstable/persistence/Persistable.d.ts.map +1 -1
- package/dist/unstable/persistence/Persistable.js +2 -1
- package/dist/unstable/persistence/Persistable.js.map +1 -1
- package/dist/unstable/persistence/PersistedCache.js.map +1 -1
- package/dist/unstable/persistence/PersistedQueue.d.ts +6 -6
- package/dist/unstable/persistence/PersistedQueue.d.ts.map +1 -1
- package/dist/unstable/persistence/PersistedQueue.js +97 -86
- package/dist/unstable/persistence/PersistedQueue.js.map +1 -1
- package/dist/unstable/persistence/Persistence.d.ts +3 -3
- package/dist/unstable/persistence/Persistence.d.ts.map +1 -1
- package/dist/unstable/persistence/Persistence.js +108 -22
- package/dist/unstable/persistence/Persistence.js.map +1 -1
- package/dist/unstable/persistence/RateLimiter.d.ts +47 -26
- package/dist/unstable/persistence/RateLimiter.d.ts.map +1 -1
- package/dist/unstable/persistence/RateLimiter.js +31 -47
- package/dist/unstable/persistence/RateLimiter.js.map +1 -1
- package/dist/unstable/persistence/Redis.d.ts +2 -2
- package/dist/unstable/persistence/Redis.d.ts.map +1 -1
- package/dist/unstable/persistence/Redis.js +4 -4
- package/dist/unstable/persistence/Redis.js.map +1 -1
- package/dist/unstable/persistence/index.js.map +1 -1
- package/dist/unstable/process/ChildProcess.d.ts +72 -21
- package/dist/unstable/process/ChildProcess.d.ts.map +1 -1
- package/dist/unstable/process/ChildProcess.js +14 -5
- package/dist/unstable/process/ChildProcess.js.map +1 -1
- package/dist/unstable/process/ChildProcessSpawner.d.ts +21 -10
- package/dist/unstable/process/ChildProcessSpawner.d.ts.map +1 -1
- package/dist/unstable/process/ChildProcessSpawner.js +4 -2
- package/dist/unstable/process/ChildProcessSpawner.js.map +1 -1
- package/dist/unstable/process/index.js.map +1 -1
- package/dist/unstable/reactivity/AsyncResult.d.ts +8 -8
- package/dist/unstable/reactivity/AsyncResult.d.ts.map +1 -1
- package/dist/unstable/reactivity/AsyncResult.js +14 -13
- package/dist/unstable/reactivity/AsyncResult.js.map +1 -1
- package/dist/unstable/reactivity/Atom.d.ts +131 -30
- package/dist/unstable/reactivity/Atom.d.ts.map +1 -1
- package/dist/unstable/reactivity/Atom.js +55 -43
- package/dist/unstable/reactivity/Atom.js.map +1 -1
- package/dist/unstable/reactivity/AtomHttpApi.d.ts +1 -1
- package/dist/unstable/reactivity/AtomHttpApi.d.ts.map +1 -1
- package/dist/unstable/reactivity/AtomHttpApi.js +4 -1
- package/dist/unstable/reactivity/AtomHttpApi.js.map +1 -1
- package/dist/unstable/reactivity/AtomRef.js.map +1 -1
- package/dist/unstable/reactivity/AtomRegistry.js +25 -4
- package/dist/unstable/reactivity/AtomRegistry.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 +4 -1
- package/dist/unstable/reactivity/AtomRpc.js.map +1 -1
- package/dist/unstable/reactivity/Hydration.d.ts +1 -1
- package/dist/unstable/reactivity/Hydration.js +1 -1
- package/dist/unstable/reactivity/Hydration.js.map +1 -1
- package/dist/unstable/reactivity/Reactivity.js +1 -1
- package/dist/unstable/reactivity/Reactivity.js.map +1 -1
- package/dist/unstable/reactivity/index.js.map +1 -1
- package/dist/unstable/rpc/Rpc.d.ts +35 -33
- package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
- package/dist/unstable/rpc/Rpc.js +4 -2
- package/dist/unstable/rpc/Rpc.js.map +1 -1
- package/dist/unstable/rpc/RpcClient.d.ts +26 -12
- package/dist/unstable/rpc/RpcClient.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcClient.js +41 -23
- package/dist/unstable/rpc/RpcClient.js.map +1 -1
- package/dist/unstable/rpc/RpcClientError.js +2 -2
- package/dist/unstable/rpc/RpcClientError.js.map +1 -1
- package/dist/unstable/rpc/RpcGroup.d.ts +8 -8
- package/dist/unstable/rpc/RpcGroup.js +2 -2
- package/dist/unstable/rpc/RpcGroup.js.map +1 -1
- package/dist/unstable/rpc/RpcMessage.d.ts +31 -30
- package/dist/unstable/rpc/RpcMessage.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcMessage.js +6 -6
- package/dist/unstable/rpc/RpcMessage.js.map +1 -1
- package/dist/unstable/rpc/RpcMiddleware.d.ts +10 -10
- package/dist/unstable/rpc/RpcMiddleware.js +1 -1
- package/dist/unstable/rpc/RpcMiddleware.js.map +1 -1
- package/dist/unstable/rpc/RpcSchema.d.ts +4 -4
- package/dist/unstable/rpc/RpcSchema.js +3 -3
- package/dist/unstable/rpc/RpcSchema.js.map +1 -1
- package/dist/unstable/rpc/RpcSerialization.d.ts +58 -7
- package/dist/unstable/rpc/RpcSerialization.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcSerialization.js +178 -97
- package/dist/unstable/rpc/RpcSerialization.js.map +1 -1
- package/dist/unstable/rpc/RpcServer.d.ts +13 -13
- package/dist/unstable/rpc/RpcServer.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcServer.js +23 -18
- package/dist/unstable/rpc/RpcServer.js.map +1 -1
- package/dist/unstable/rpc/RpcTest.js.map +1 -1
- package/dist/unstable/rpc/RpcWorker.d.ts +5 -5
- package/dist/unstable/rpc/RpcWorker.js +4 -4
- package/dist/unstable/rpc/RpcWorker.js.map +1 -1
- package/dist/unstable/rpc/Utils.js.map +1 -1
- package/dist/unstable/rpc/index.js.map +1 -1
- package/dist/unstable/schema/Model.d.ts +66 -51
- package/dist/unstable/schema/Model.d.ts.map +1 -1
- package/dist/unstable/schema/Model.js +39 -52
- package/dist/unstable/schema/Model.js.map +1 -1
- package/dist/unstable/schema/VariantSchema.d.ts +11 -12
- package/dist/unstable/schema/VariantSchema.d.ts.map +1 -1
- package/dist/unstable/schema/VariantSchema.js +28 -17
- package/dist/unstable/schema/VariantSchema.js.map +1 -1
- package/dist/unstable/schema/index.js.map +1 -1
- package/dist/unstable/socket/Socket.d.ts +12 -4
- package/dist/unstable/socket/Socket.d.ts.map +1 -1
- package/dist/unstable/socket/Socket.js +38 -17
- package/dist/unstable/socket/Socket.js.map +1 -1
- package/dist/unstable/socket/SocketServer.js.map +1 -1
- package/dist/unstable/socket/index.js.map +1 -1
- package/dist/unstable/sql/Migrator.d.ts +9 -1
- package/dist/unstable/sql/Migrator.d.ts.map +1 -1
- package/dist/unstable/sql/Migrator.js +15 -2
- package/dist/unstable/sql/Migrator.js.map +1 -1
- package/dist/unstable/sql/SqlClient.d.ts +1 -1
- package/dist/unstable/sql/SqlClient.d.ts.map +1 -1
- package/dist/unstable/sql/SqlClient.js +11 -7
- package/dist/unstable/sql/SqlClient.js.map +1 -1
- package/dist/unstable/sql/SqlConnection.js.map +1 -1
- package/dist/unstable/sql/SqlError.d.ts +2 -2
- package/dist/unstable/sql/SqlError.js +15 -15
- package/dist/unstable/sql/SqlError.js.map +1 -1
- package/dist/unstable/sql/SqlModel.d.ts +2 -2
- package/dist/unstable/sql/SqlModel.js +2 -2
- package/dist/unstable/sql/SqlModel.js.map +1 -1
- package/dist/unstable/sql/SqlResolver.d.ts +5 -5
- package/dist/unstable/sql/SqlResolver.d.ts.map +1 -1
- package/dist/unstable/sql/SqlResolver.js +33 -26
- package/dist/unstable/sql/SqlResolver.js.map +1 -1
- package/dist/unstable/sql/SqlSchema.js.map +1 -1
- package/dist/unstable/sql/SqlStream.js.map +1 -1
- package/dist/unstable/sql/Statement.d.ts +6 -6
- package/dist/unstable/sql/Statement.d.ts.map +1 -1
- package/dist/unstable/sql/Statement.js +30 -27
- package/dist/unstable/sql/Statement.js.map +1 -1
- package/dist/unstable/sql/index.js.map +1 -1
- package/dist/unstable/workers/Transferable.d.ts +1 -1
- package/dist/unstable/workers/Transferable.js +1 -1
- package/dist/unstable/workers/Transferable.js.map +1 -1
- package/dist/unstable/workers/Worker.d.ts +2 -2
- package/dist/unstable/workers/Worker.d.ts.map +1 -1
- package/dist/unstable/workers/Worker.js +13 -14
- package/dist/unstable/workers/Worker.js.map +1 -1
- package/dist/unstable/workers/WorkerError.d.ts +7 -7
- package/dist/unstable/workers/WorkerError.js +11 -11
- package/dist/unstable/workers/WorkerError.js.map +1 -1
- package/dist/unstable/workers/WorkerRunner.d.ts +1 -1
- package/dist/unstable/workers/WorkerRunner.js +1 -1
- package/dist/unstable/workers/WorkerRunner.js.map +1 -1
- package/dist/unstable/workers/index.js.map +1 -1
- package/dist/unstable/workflow/Activity.d.ts +2 -2
- package/dist/unstable/workflow/Activity.js +2 -2
- package/dist/unstable/workflow/Activity.js.map +1 -1
- package/dist/unstable/workflow/DurableClock.d.ts +1 -1
- package/dist/unstable/workflow/DurableClock.js +1 -1
- package/dist/unstable/workflow/DurableClock.js.map +1 -1
- package/dist/unstable/workflow/DurableDeferred.d.ts +10 -10
- package/dist/unstable/workflow/DurableDeferred.d.ts.map +1 -1
- package/dist/unstable/workflow/DurableDeferred.js +13 -8
- package/dist/unstable/workflow/DurableDeferred.js.map +1 -1
- package/dist/unstable/workflow/DurableQueue.d.ts +22 -20
- package/dist/unstable/workflow/DurableQueue.d.ts.map +1 -1
- package/dist/unstable/workflow/DurableQueue.js +22 -20
- package/dist/unstable/workflow/DurableQueue.js.map +1 -1
- package/dist/unstable/workflow/Workflow.d.ts +21 -21
- package/dist/unstable/workflow/Workflow.d.ts.map +1 -1
- package/dist/unstable/workflow/Workflow.js +13 -14
- package/dist/unstable/workflow/Workflow.js.map +1 -1
- package/dist/unstable/workflow/WorkflowEngine.d.ts +26 -3
- package/dist/unstable/workflow/WorkflowEngine.d.ts.map +1 -1
- package/dist/unstable/workflow/WorkflowEngine.js +72 -6
- package/dist/unstable/workflow/WorkflowEngine.js.map +1 -1
- package/dist/unstable/workflow/WorkflowProxy.d.ts +4 -2
- package/dist/unstable/workflow/WorkflowProxy.d.ts.map +1 -1
- package/dist/unstable/workflow/WorkflowProxy.js +4 -2
- package/dist/unstable/workflow/WorkflowProxy.js.map +1 -1
- package/dist/unstable/workflow/WorkflowProxyServer.js.map +1 -1
- package/dist/unstable/workflow/index.js.map +1 -1
- package/dist/unstable/workflow/internal/crypto.js.map +1 -1
- package/package.json +10 -16
- package/src/Array.ts +1068 -1070
- package/src/BigDecimal.ts +433 -756
- package/src/BigInt.ts +213 -269
- package/src/Boolean.ts +146 -188
- package/src/Brand.ts +4 -4
- package/src/Cache.ts +469 -851
- package/src/Cause.ts +167 -277
- package/src/Channel.ts +982 -831
- package/src/ChannelSchema.ts +1 -1
- package/src/Chunk.ts +841 -1181
- package/src/Clock.ts +181 -49
- package/src/Combiner.ts +20 -33
- package/src/Config.ts +642 -335
- package/src/ConfigProvider.ts +267 -135
- package/src/Console.ts +289 -39
- package/src/Context.ts +336 -405
- package/src/Cron.ts +271 -219
- package/src/Crypto.ts +33 -63
- package/src/Data.ts +63 -82
- package/src/DateTime.ts +564 -660
- package/src/Deferred.ts +259 -258
- package/src/Duration.ts +244 -311
- package/src/Effect.ts +3241 -3410
- package/src/Encoding.ts +22 -40
- package/src/Equal.ts +59 -41
- package/src/Equivalence.ts +103 -105
- package/src/ErrorReporter.ts +52 -28
- package/src/ExecutionPlan.ts +91 -56
- package/src/Exit.ts +116 -192
- package/src/Fiber.ts +82 -149
- package/src/FiberHandle.ts +155 -107
- package/src/FiberMap.ts +225 -174
- package/src/FiberSet.ts +125 -83
- package/src/FileSystem.ts +156 -264
- package/src/Filter.ts +61 -33
- package/src/Formatter.ts +69 -76
- package/src/Function.ts +119 -151
- package/src/Graph.ts +416 -770
- package/src/HKT.ts +12 -6
- package/src/Hash.ts +52 -83
- package/src/HashMap.ts +319 -411
- package/src/HashRing.ts +1 -0
- package/src/HashSet.ts +177 -284
- package/src/Inspectable.ts +22 -20
- package/src/Iterable.ts +633 -797
- package/src/JsonPatch.ts +60 -113
- package/src/JsonPointer.ts +8 -8
- package/src/JsonSchema.ts +408 -251
- package/src/Latch.ts +23 -35
- package/src/Layer.ts +369 -268
- package/src/LayerMap.ts +49 -29
- package/src/LayerRef.ts +6 -2
- package/src/LogLevel.ts +114 -214
- package/src/Logger.ts +349 -701
- package/src/ManagedRuntime.ts +20 -5
- package/src/Match.ts +217 -252
- package/src/Metric.ts +520 -1092
- package/src/MutableHashMap.ts +218 -255
- package/src/MutableHashSet.ts +84 -89
- package/src/MutableList.ts +77 -370
- package/src/MutableRef.ts +420 -243
- package/src/Newtype.ts +21 -14
- package/src/NonEmptyIterable.ts +7 -137
- package/src/Number.ts +196 -233
- package/src/Optic.ts +303 -441
- package/src/Option.ts +449 -813
- package/src/Order.ts +109 -109
- package/src/Ordering.ts +20 -23
- package/src/PartitionedSemaphore.ts +1 -4
- package/src/Path.ts +38 -41
- package/src/Pipeable.ts +6 -5
- package/src/PlatformError.ts +4 -4
- package/src/Pool.ts +4 -2
- package/src/Predicate.ts +200 -181
- package/src/PrimaryKey.ts +7 -7
- package/src/PubSub.ts +526 -552
- package/src/Pull.ts +24 -18
- package/src/Queue.ts +204 -165
- package/src/Random.ts +49 -74
- package/src/RcMap.ts +121 -63
- package/src/RcRef.ts +24 -13
- package/src/Record.ts +387 -487
- package/src/Redactable.ts +10 -3
- package/src/Redacted.ts +25 -25
- package/src/Reducer.ts +8 -15
- package/src/Ref.ts +221 -361
- package/src/References.ts +102 -214
- package/src/RegExp.ts +10 -14
- package/src/Request.ts +36 -28
- package/src/RequestResolver.ts +202 -91
- package/src/Result.ts +314 -485
- package/src/Runtime.ts +50 -75
- package/src/Schedule.ts +311 -1737
- package/src/Scheduler.ts +20 -7
- package/src/Schema.ts +3475 -1913
- package/src/SchemaAST.ts +902 -573
- package/src/SchemaGetter.ts +351 -233
- package/src/SchemaIssue.ts +367 -334
- package/src/SchemaParser.ts +254 -148
- package/src/SchemaRepresentation.ts +732 -3414
- package/src/SchemaTransformation.ts +186 -97
- package/src/Scope.ts +123 -151
- package/src/ScopedCache.ts +1 -1
- package/src/ScopedRef.ts +6 -4
- package/src/Semaphore.ts +157 -54
- package/src/Sink.ts +129 -114
- package/src/Stdio.ts +24 -5
- package/src/Stream.ts +2745 -3173
- package/src/String.ts +275 -312
- package/src/Struct.ts +114 -118
- package/src/SubscriptionRef.ts +284 -252
- package/src/Symbol.ts +3 -3
- package/src/SynchronizedRef.ts +1 -1
- package/src/Terminal.ts +3 -3
- package/src/Tracer.ts +102 -55
- package/src/Trie.ts +287 -679
- package/src/Tuple.ts +99 -131
- package/src/TxChunk.ts +201 -121
- package/src/TxDeferred.ts +62 -46
- package/src/TxHashMap.ts +645 -799
- package/src/TxHashSet.ts +443 -356
- package/src/TxPriorityQueue.ts +130 -98
- package/src/TxPubSub.ts +107 -80
- package/src/TxQueue.ts +215 -184
- package/src/TxReentrantLock.ts +136 -101
- package/src/TxRef.ts +51 -32
- package/src/TxSemaphore.ts +129 -95
- package/src/TxSubscriptionRef.ts +97 -70
- package/src/Types.ts +127 -70
- package/src/Unify.ts +45 -65
- package/src/Utils.ts +23 -16
- package/src/index.ts +0 -10
- package/src/internal/core.ts +6 -5
- package/src/internal/dateTime.ts +7 -1
- package/src/internal/effect.ts +319 -149
- package/src/internal/executionPlan.ts +106 -10
- package/src/internal/hashMap.ts +20 -14
- package/src/internal/matcher.ts +3 -3
- package/src/internal/persistence.ts +2 -0
- package/src/internal/rcRef.ts +24 -16
- package/src/internal/record.ts +11 -7
- package/src/internal/references.ts +3 -7
- package/src/internal/schedule.ts +4 -4
- package/src/internal/schema/annotations.ts +48 -1
- package/src/internal/schema/fromJsonSchemaDocument.ts +977 -0
- package/src/internal/schema/fromRepresentation.ts +339 -0
- package/src/internal/schema/parser.ts +22 -0
- package/src/internal/schema/schema.ts +46 -63
- package/src/internal/schema/{arbitrary.ts → toArbitrary.ts} +9 -81
- package/src/internal/schema/toCodeDocument.ts +572 -0
- package/src/internal/schema/{equivalence.ts → toEquivalence.ts} +12 -7
- package/src/internal/schema/toJsonSchemaDocument.ts +549 -0
- package/src/internal/schema/toRepresentation.ts +404 -0
- package/src/internal/stackTraceLimit.ts +3 -7
- package/src/internal/trie.ts +21 -12
- package/src/internal/uuid.ts +51 -0
- package/src/testing/FastCheck.ts +8 -7
- package/src/testing/TestClock.ts +103 -36
- package/src/testing/TestConsole.ts +32 -31
- package/src/testing/TestSchema.ts +40 -40
- package/src/unstable/ai/AiError.ts +119 -141
- package/src/unstable/ai/AnthropicStructuredOutput.ts +103 -334
- package/src/unstable/ai/Chat.ts +133 -98
- package/src/unstable/ai/EmbeddingModel.ts +1 -1
- package/src/unstable/ai/IdGenerator.ts +32 -28
- package/src/unstable/ai/LanguageModel.ts +141 -97
- package/src/unstable/ai/McpProtocol.ts +137 -0
- package/src/unstable/ai/McpSchema.ts +199 -100
- package/src/unstable/ai/McpServer.ts +1360 -455
- package/src/unstable/ai/Model.ts +9 -20
- package/src/unstable/ai/OpenAiStructuredOutput.ts +231 -396
- package/src/unstable/ai/Prompt.ts +212 -63
- package/src/unstable/ai/Response.ts +52 -38
- package/src/unstable/ai/Telemetry.ts +46 -13
- package/src/unstable/ai/Tokenizer.ts +14 -3
- package/src/unstable/ai/Tool.ts +81 -48
- package/src/unstable/ai/Toolkit.ts +45 -15
- package/src/unstable/ai/index.ts +5 -0
- package/src/unstable/ai/internal/codec-transformer.ts +13 -7
- package/src/unstable/ai/internal/mcpCore.ts +457 -0
- package/src/unstable/ai/internal/mcpProtocol/v2024_11_05.ts +321 -0
- package/src/unstable/ai/internal/mcpProtocol/v2025_03_26.ts +347 -0
- package/src/unstable/ai/internal/mcpProtocol/v2025_06_18.ts +361 -0
- package/src/unstable/ai/internal/mcpProtocol.ts +336 -0
- package/src/unstable/ai/internal/mcpProtocolRegistry.ts +102 -0
- package/src/unstable/ai/internal/mcpSchema/v2024_11_05.ts +521 -0
- package/src/unstable/ai/internal/mcpSchema/v2025_03_26.ts +204 -0
- package/src/unstable/ai/internal/mcpSchema/v2025_06_18.ts +404 -0
- package/src/unstable/ai/internal/structured-output.ts +453 -0
- package/src/unstable/cli/Argument.ts +279 -72
- package/src/unstable/cli/CliError.ts +159 -91
- package/src/unstable/cli/CliOutput.ts +44 -58
- package/src/unstable/cli/Command.ts +764 -124
- package/src/unstable/cli/Flag.ts +418 -138
- package/src/unstable/cli/GlobalFlag.ts +1 -1
- package/src/unstable/cli/HelpDoc.ts +12 -4
- package/src/unstable/cli/Param.ts +336 -100
- package/src/unstable/cli/Primitive.ts +383 -156
- package/src/unstable/cli/Prompt.ts +64 -34
- package/src/unstable/cli/internal/ansi.ts +2 -2
- package/src/unstable/cli/internal/command.ts +28 -15
- package/src/unstable/cli/internal/completions/bash.ts +59 -9
- package/src/unstable/cli/internal/completions/descriptor.ts +14 -20
- package/src/unstable/cli/internal/completions/fish.ts +5 -7
- package/src/unstable/cli/internal/config.ts +8 -10
- package/src/unstable/cli/internal/help.ts +4 -2
- package/src/unstable/cli/internal/lexer.ts +8 -2
- package/src/unstable/cli/internal/parser.ts +5 -5
- package/src/unstable/cli/internal/wizard.ts +2 -2
- package/src/unstable/cluster/ClusterError.ts +10 -8
- package/src/unstable/cluster/ClusterSchema.ts +8 -8
- package/src/unstable/cluster/ClusterWorkflowEngine.ts +65 -39
- package/src/unstable/cluster/Entity.ts +23 -19
- package/src/unstable/cluster/EntityProxy.ts +16 -7
- package/src/unstable/cluster/EntityResource.ts +5 -5
- package/src/unstable/cluster/Envelope.ts +5 -4
- package/src/unstable/cluster/HttpRunner.ts +6 -4
- package/src/unstable/cluster/K8sHttpClient.ts +2 -2
- package/src/unstable/cluster/K8sTypes.ts +2467 -0
- package/src/unstable/cluster/Message.ts +9 -9
- package/src/unstable/cluster/MessageStorage.ts +106 -33
- package/src/unstable/cluster/Reply.ts +26 -7
- package/src/unstable/cluster/Runner.ts +1 -1
- package/src/unstable/cluster/RunnerAddress.ts +1 -1
- package/src/unstable/cluster/RunnerHealth.ts +1 -1
- package/src/unstable/cluster/RunnerServer.ts +45 -18
- package/src/unstable/cluster/RunnerStorage.ts +11 -9
- package/src/unstable/cluster/Runners.ts +48 -26
- package/src/unstable/cluster/ShardId.ts +1 -1
- package/src/unstable/cluster/Sharding.ts +360 -65
- package/src/unstable/cluster/ShardingConfig.ts +46 -4
- package/src/unstable/cluster/SingleRunner.ts +4 -2
- package/src/unstable/cluster/SingletonAddress.ts +1 -1
- package/src/unstable/cluster/Snowflake.ts +8 -8
- package/src/unstable/cluster/SqlMessageStorage.ts +212 -60
- package/src/unstable/cluster/SqlRunnerStorage.ts +223 -133
- package/src/unstable/cluster/index.ts +5 -0
- package/src/unstable/cluster/internal/entityManager.ts +72 -27
- package/src/unstable/cluster/internal/entityReaper.ts +2 -3
- package/src/unstable/cluster/internal/resourceMap.ts +13 -2
- package/src/unstable/cluster/internal/resourceRef.ts +27 -5
- package/src/unstable/cluster/internal/shardLock.ts +9 -0
- package/src/unstable/devtools/DevToolsClient.ts +3 -2
- package/src/unstable/devtools/DevToolsSchema.ts +10 -5
- package/src/unstable/encoding/Ini.ts +174 -0
- package/src/unstable/encoding/Msgpack.ts +61 -40
- package/src/unstable/encoding/Ndjson.ts +9 -1
- package/src/unstable/encoding/Sse.ts +109 -37
- package/src/unstable/encoding/Toml.ts +504 -0
- package/src/unstable/encoding/Yaml.ts +541 -0
- package/src/unstable/encoding/index.ts +15 -0
- package/src/unstable/eventlog/Event.ts +20 -20
- package/src/unstable/eventlog/EventGroup.ts +4 -4
- package/src/unstable/eventlog/EventJournal.ts +33 -25
- package/src/unstable/eventlog/EventLog.ts +24 -14
- package/src/unstable/eventlog/EventLogEncryption.ts +17 -18
- package/src/unstable/eventlog/EventLogMessage.ts +15 -9
- package/src/unstable/eventlog/EventLogRemote.ts +5 -5
- package/src/unstable/eventlog/EventLogServer.ts +41 -7
- package/src/unstable/eventlog/EventLogServerEncrypted.ts +16 -8
- package/src/unstable/eventlog/EventLogServerUnencrypted.ts +15 -7
- package/src/unstable/eventlog/EventLogSessionAuth.ts +1 -1
- package/src/unstable/eventlog/SqlEventJournal.ts +9 -7
- package/src/unstable/eventlog/SqlEventLogServerEncrypted.ts +1 -1
- package/src/unstable/eventlog/SqlEventLogServerUnencrypted.ts +6 -3
- package/src/unstable/http/Cookies.ts +64 -45
- package/src/unstable/http/Etag.ts +1 -1
- package/src/unstable/http/FetchHttpClient.ts +4 -2
- package/src/unstable/http/FindMyWay/internal/queryString.ts +420 -0
- package/src/unstable/http/FindMyWay/internal/router.ts +950 -0
- package/src/unstable/http/FindMyWay.ts +65 -6
- package/src/unstable/http/Headers.ts +10 -10
- package/src/unstable/http/HttpBody.ts +20 -5
- package/src/unstable/http/HttpClient.ts +215 -78
- package/src/unstable/http/HttpClientError.ts +1 -1
- package/src/unstable/http/HttpClientRequest.ts +59 -12
- package/src/unstable/http/HttpClientResponse.ts +5 -21
- package/src/unstable/http/HttpEffect.ts +27 -26
- package/src/unstable/http/HttpMethod.ts +6 -9
- package/src/unstable/http/HttpMiddleware.ts +202 -39
- package/src/unstable/http/HttpPlatform.ts +129 -6
- package/src/unstable/http/HttpRouter.ts +110 -102
- package/src/unstable/http/HttpServer.ts +13 -13
- package/src/unstable/http/HttpServerError.ts +2 -2
- package/src/unstable/http/HttpServerRequest.ts +31 -17
- package/src/unstable/http/HttpServerResponse.ts +38 -6
- package/src/unstable/http/HttpStaticServer.ts +35 -7
- package/src/unstable/http/HttpStatus.ts +100 -0
- package/src/unstable/http/Multipart.ts +67 -36
- package/src/unstable/http/MultipartParser/HeadersParser.ts +68 -0
- package/src/unstable/http/MultipartParser/Search.ts +17 -0
- package/src/unstable/http/MultipartParser/internal/contentType.ts +103 -0
- package/src/unstable/http/MultipartParser/internal/headers.ts +244 -0
- package/src/unstable/http/MultipartParser/internal/multipart.ts +279 -0
- package/src/unstable/http/MultipartParser/internal/search.ts +167 -0
- package/src/unstable/http/MultipartParser.ts +115 -0
- package/src/unstable/http/Template.ts +7 -6
- package/src/unstable/http/Url.ts +33 -63
- package/src/unstable/http/UrlParams.ts +27 -32
- package/src/unstable/http/index.ts +6 -1
- package/src/unstable/http/internal/compression.ts +196 -0
- package/src/unstable/http/internal/httpBody.ts +15 -0
- package/src/unstable/httpapi/HttpApi.ts +10 -11
- package/src/unstable/httpapi/HttpApiBuilder.ts +154 -33
- package/src/unstable/httpapi/HttpApiClient.ts +142 -61
- package/src/unstable/httpapi/HttpApiEndpoint.ts +159 -71
- package/src/unstable/httpapi/HttpApiError.ts +46 -52
- package/src/unstable/httpapi/HttpApiGroup.ts +17 -17
- package/src/unstable/httpapi/HttpApiMiddleware.ts +71 -24
- package/src/unstable/httpapi/HttpApiScalar.ts +0 -12
- package/src/unstable/httpapi/HttpApiSchema.ts +362 -73
- package/src/unstable/httpapi/OpenApi.ts +153 -62
- package/src/unstable/observability/OtlpExporter.ts +130 -12
- package/src/unstable/observability/OtlpLogger.ts +8 -6
- package/src/unstable/observability/OtlpMetrics.ts +42 -21
- package/src/unstable/observability/OtlpResource.ts +26 -17
- package/src/unstable/observability/OtlpTracer.ts +9 -5
- package/src/unstable/observability/PrometheusMetrics.ts +13 -4
- package/src/unstable/observability/internal/otlpEnv.ts +1 -1
- package/src/unstable/observability/internal/protobuf.ts +3 -0
- package/src/unstable/persistence/KeyValueStore.ts +72 -49
- package/src/unstable/persistence/Persistable.ts +11 -10
- package/src/unstable/persistence/PersistedQueue.ts +129 -108
- package/src/unstable/persistence/Persistence.ts +153 -26
- package/src/unstable/persistence/RateLimiter.ts +79 -45
- package/src/unstable/persistence/Redis.ts +5 -5
- package/src/unstable/process/ChildProcess.ts +72 -21
- package/src/unstable/process/ChildProcessSpawner.ts +22 -11
- package/src/unstable/reactivity/AsyncResult.ts +23 -18
- package/src/unstable/reactivity/Atom.ts +170 -56
- package/src/unstable/reactivity/AtomHttpApi.ts +5 -4
- package/src/unstable/reactivity/AtomRegistry.ts +25 -4
- package/src/unstable/reactivity/AtomRpc.ts +5 -4
- package/src/unstable/reactivity/Hydration.ts +1 -1
- package/src/unstable/reactivity/Reactivity.ts +1 -1
- package/src/unstable/rpc/Rpc.ts +35 -33
- package/src/unstable/rpc/RpcClient.ts +66 -30
- package/src/unstable/rpc/RpcClientError.ts +2 -2
- package/src/unstable/rpc/RpcGroup.ts +9 -9
- package/src/unstable/rpc/RpcMessage.ts +31 -30
- package/src/unstable/rpc/RpcMiddleware.ts +10 -10
- package/src/unstable/rpc/RpcSchema.ts +4 -4
- package/src/unstable/rpc/RpcSerialization.ts +168 -69
- package/src/unstable/rpc/RpcServer.ts +28 -22
- package/src/unstable/rpc/RpcWorker.ts +5 -5
- package/src/unstable/schema/Model.ts +60 -58
- package/src/unstable/schema/VariantSchema.ts +51 -43
- package/src/unstable/socket/Socket.ts +42 -19
- package/src/unstable/sql/Migrator.ts +22 -9
- package/src/unstable/sql/SqlClient.ts +71 -60
- package/src/unstable/sql/SqlError.ts +15 -15
- package/src/unstable/sql/SqlModel.ts +2 -2
- package/src/unstable/sql/SqlResolver.ts +44 -33
- package/src/unstable/sql/Statement.ts +44 -37
- package/src/unstable/workers/Transferable.ts +1 -1
- package/src/unstable/workers/Worker.ts +15 -16
- package/src/unstable/workers/WorkerError.ts +12 -12
- package/src/unstable/workers/WorkerRunner.ts +1 -1
- package/src/unstable/workflow/Activity.ts +2 -2
- package/src/unstable/workflow/DurableClock.ts +1 -1
- package/src/unstable/workflow/DurableDeferred.ts +18 -13
- package/src/unstable/workflow/DurableQueue.ts +22 -20
- package/src/unstable/workflow/Workflow.ts +23 -26
- package/src/unstable/workflow/WorkflowEngine.ts +111 -8
- package/src/unstable/workflow/WorkflowProxy.ts +4 -2
- package/dist/SchemaError.d.ts +0 -53
- package/dist/SchemaError.d.ts.map +0 -1
- package/dist/SchemaError.js +0 -61
- package/dist/SchemaError.js.map +0 -1
- package/dist/SchemaUtils.d.ts +0 -28
- package/dist/SchemaUtils.d.ts.map +0 -1
- package/dist/SchemaUtils.js +0 -45
- package/dist/SchemaUtils.js.map +0 -1
- package/dist/internal/schema/arbitrary.d.ts +0 -5
- package/dist/internal/schema/arbitrary.d.ts.map +0 -1
- package/dist/internal/schema/arbitrary.js.map +0 -1
- package/dist/internal/schema/equivalence.d.ts +0 -2
- package/dist/internal/schema/equivalence.d.ts.map +0 -1
- package/dist/internal/schema/equivalence.js.map +0 -1
- package/dist/internal/schema/representation.d.ts +0 -2
- package/dist/internal/schema/representation.d.ts.map +0 -1
- package/dist/internal/schema/representation.js +0 -865
- package/dist/internal/schema/representation.js.map +0 -1
- package/dist/internal/version.d.ts +0 -3
- package/dist/internal/version.d.ts.map +0 -1
- package/dist/internal/version.js +0 -2
- package/dist/internal/version.js.map +0 -1
- package/dist/unstable/http/Multipasta/HeadersParser.d.ts +0 -14
- package/dist/unstable/http/Multipasta/HeadersParser.d.ts.map +0 -1
- package/dist/unstable/http/Multipasta/HeadersParser.js +0 -14
- package/dist/unstable/http/Multipasta/HeadersParser.js.map +0 -1
- package/dist/unstable/http/Multipasta/Node.d.ts +0 -14
- package/dist/unstable/http/Multipasta/Node.d.ts.map +0 -1
- package/dist/unstable/http/Multipasta/Node.js +0 -14
- package/dist/unstable/http/Multipasta/Node.js.map +0 -1
- package/dist/unstable/http/Multipasta/Search.d.ts +0 -14
- package/dist/unstable/http/Multipasta/Search.d.ts.map +0 -1
- package/dist/unstable/http/Multipasta/Search.js +0 -14
- package/dist/unstable/http/Multipasta/Search.js.map +0 -1
- package/dist/unstable/http/Multipasta/Web.d.ts +0 -14
- package/dist/unstable/http/Multipasta/Web.d.ts.map +0 -1
- package/dist/unstable/http/Multipasta/Web.js +0 -14
- package/dist/unstable/http/Multipasta/Web.js.map +0 -1
- package/dist/unstable/http/Multipasta.d.ts +0 -15
- package/dist/unstable/http/Multipasta.d.ts.map +0 -1
- package/dist/unstable/http/Multipasta.js +0 -15
- package/dist/unstable/http/Multipasta.js.map +0 -1
- package/src/SchemaError.ts +0 -64
- package/src/SchemaUtils.ts +0 -51
- package/src/internal/schema/representation.ts +0 -795
- package/src/internal/version.ts +0 -2
- package/src/unstable/http/Multipasta/HeadersParser.ts +0 -14
- package/src/unstable/http/Multipasta/Node.ts +0 -14
- package/src/unstable/http/Multipasta/Search.ts +0 -14
- package/src/unstable/http/Multipasta/Web.ts +0 -14
- package/src/unstable/http/Multipasta.ts +0 -15
package/src/Cache.ts
CHANGED
|
@@ -9,7 +9,6 @@
|
|
|
9
9
|
* @since 4.0.0
|
|
10
10
|
*/
|
|
11
11
|
import * as Context from "./Context.ts"
|
|
12
|
-
import * as Deferred from "./Deferred.ts"
|
|
13
12
|
import * as Duration from "./Duration.ts"
|
|
14
13
|
import type * as Effect from "./Effect.ts"
|
|
15
14
|
import type * as Exit from "./Exit.ts"
|
|
@@ -33,7 +32,7 @@ const TypeId = "~effect/Cache"
|
|
|
33
32
|
*
|
|
34
33
|
* **Example** (Creating a basic cache)
|
|
35
34
|
*
|
|
36
|
-
* ```ts
|
|
35
|
+
* ```ts import.meta.vitest
|
|
37
36
|
* import { Cache, Effect } from "effect"
|
|
38
37
|
*
|
|
39
38
|
* // Basic cache with string keys and number values
|
|
@@ -50,12 +49,15 @@ const TypeId = "~effect/Cache"
|
|
|
50
49
|
*
|
|
51
50
|
* return [value1, value2, value3]
|
|
52
51
|
* })
|
|
52
|
+
*
|
|
53
|
+
* const actual = await Effect.runPromise(program)
|
|
54
|
+
* actual // => [5, 5, 5]
|
|
53
55
|
* ```
|
|
54
56
|
*
|
|
55
57
|
* **Example** (Handling lookup failures)
|
|
56
58
|
*
|
|
57
|
-
* ```ts
|
|
58
|
-
* import { Cache, Effect } from "effect"
|
|
59
|
+
* ```ts import.meta.vitest
|
|
60
|
+
* import { Cache, Effect, Exit } from "effect"
|
|
59
61
|
*
|
|
60
62
|
* // Cache with error handling
|
|
61
63
|
* const program = Effect.gen(function*() {
|
|
@@ -68,16 +70,19 @@ const TypeId = "~effect/Cache"
|
|
|
68
70
|
* })
|
|
69
71
|
*
|
|
70
72
|
* // Handle successful and failed lookups
|
|
71
|
-
* const success = yield* Cache.get(cache, "test")
|
|
72
|
-
* const failure = yield* Effect.exit(Cache.get(cache, "error"))
|
|
73
|
+
* const success = yield* Cache.get(cache, "test")
|
|
74
|
+
* const failure = yield* Effect.exit(Cache.get(cache, "error"))
|
|
73
75
|
*
|
|
74
|
-
* return
|
|
76
|
+
* return [success, failure] as const
|
|
75
77
|
* })
|
|
78
|
+
*
|
|
79
|
+
* const actual = await Effect.runPromise(program)
|
|
80
|
+
* actual // => [4, Exit.fail("Lookup failed")]
|
|
76
81
|
* ```
|
|
77
82
|
*
|
|
78
83
|
* **Example** (Using complex keys with TTL)
|
|
79
84
|
*
|
|
80
|
-
* ```ts
|
|
85
|
+
* ```ts import.meta.vitest
|
|
81
86
|
* import { Cache, Data, Duration, Effect } from "effect"
|
|
82
87
|
*
|
|
83
88
|
* // Cache with complex key types and TTL
|
|
@@ -93,8 +98,11 @@ const TypeId = "~effect/Cache"
|
|
|
93
98
|
* const userId = new UserId({ id: 123 })
|
|
94
99
|
* const userName = yield* Cache.get(userCache, userId)
|
|
95
100
|
*
|
|
96
|
-
* return userName
|
|
101
|
+
* return userName
|
|
97
102
|
* })
|
|
103
|
+
*
|
|
104
|
+
* const actual = await Effect.runPromise(program)
|
|
105
|
+
* actual // => "User-123"
|
|
98
106
|
* ```
|
|
99
107
|
*
|
|
100
108
|
* @category models
|
|
@@ -129,7 +137,9 @@ export interface Cache<in out Key, in out A, in out E = never, out R = never> ex
|
|
|
129
137
|
*/
|
|
130
138
|
export interface Entry<A, E> {
|
|
131
139
|
expiresAt: number | undefined
|
|
132
|
-
|
|
140
|
+
awaiters: number
|
|
141
|
+
readonly fiber: Fiber.Fiber<A, E>
|
|
142
|
+
await(this: Entry<A, E>): Effect.Effect<A, E>
|
|
133
143
|
}
|
|
134
144
|
|
|
135
145
|
/**
|
|
@@ -147,11 +157,11 @@ export interface Entry<A, E> {
|
|
|
147
157
|
*
|
|
148
158
|
* **Example** (Configuring dynamic time to live)
|
|
149
159
|
*
|
|
150
|
-
* ```ts
|
|
160
|
+
* ```ts import.meta.vitest
|
|
151
161
|
* import { Cache, Effect, Exit } from "effect"
|
|
152
162
|
*
|
|
153
163
|
* // Cache with TTL based on computed value
|
|
154
|
-
* const
|
|
164
|
+
* const program = Effect.gen(function*() {
|
|
155
165
|
* const cache = yield* Cache.makeWith(
|
|
156
166
|
* (id: number) => Effect.succeed({ id, active: id % 2 === 0 }),
|
|
157
167
|
* {
|
|
@@ -166,8 +176,11 @@ export interface Entry<A, E> {
|
|
|
166
176
|
* }
|
|
167
177
|
* )
|
|
168
178
|
*
|
|
169
|
-
* return cache
|
|
179
|
+
* return cache.capacity
|
|
170
180
|
* })
|
|
181
|
+
*
|
|
182
|
+
* const actual = await Effect.runPromise(program)
|
|
183
|
+
* actual // => 1000
|
|
171
184
|
* ```
|
|
172
185
|
*
|
|
173
186
|
* @see {@link make} for a simpler cache constructor with a fixed time-to-live for all entries
|
|
@@ -214,7 +227,7 @@ export const makeWith = <
|
|
|
214
227
|
*
|
|
215
228
|
* **Example** (Creating a basic cache)
|
|
216
229
|
*
|
|
217
|
-
* ```ts
|
|
230
|
+
* ```ts import.meta.vitest
|
|
218
231
|
* import { Cache, Effect } from "effect"
|
|
219
232
|
*
|
|
220
233
|
* // Basic cache with string keys
|
|
@@ -226,13 +239,16 @@ export const makeWith = <
|
|
|
226
239
|
*
|
|
227
240
|
* const result1 = yield* Cache.get(cache, "hello")
|
|
228
241
|
* const result2 = yield* Cache.get(cache, "world")
|
|
229
|
-
*
|
|
242
|
+
* return { result1, result2 }
|
|
230
243
|
* })
|
|
244
|
+
*
|
|
245
|
+
* const actual = await Effect.runPromise(program)
|
|
246
|
+
* actual // => { result1: 5, result2: 5 }
|
|
231
247
|
* ```
|
|
232
248
|
*
|
|
233
249
|
* **Example** (Creating a cache with TTL)
|
|
234
250
|
*
|
|
235
|
-
* ```ts
|
|
251
|
+
* ```ts import.meta.vitest
|
|
236
252
|
* import { Cache, Effect } from "effect"
|
|
237
253
|
*
|
|
238
254
|
* const program = Effect.gen(function*() {
|
|
@@ -258,11 +274,12 @@ export const makeWith = <
|
|
|
258
274
|
* })
|
|
259
275
|
*
|
|
260
276
|
* const user1 = yield* Cache.get(cache, 123)
|
|
261
|
-
* console.log(user1) // { name: "Ada", email: "ada@example.com" }
|
|
262
|
-
*
|
|
263
277
|
* const user2 = yield* Cache.get(cache, 123)
|
|
264
|
-
*
|
|
278
|
+
* return [user1, user2, user1 === user2] as const
|
|
265
279
|
* })
|
|
280
|
+
*
|
|
281
|
+
* const actual = await Effect.runPromise(program)
|
|
282
|
+
* actual // => [{ name: "Ada", email: "ada@example.com" }, { name: "Ada", email: "ada@example.com" }, true]
|
|
266
283
|
* ```
|
|
267
284
|
*
|
|
268
285
|
* @category constructors
|
|
@@ -288,7 +305,7 @@ export const make = <
|
|
|
288
305
|
> =>
|
|
289
306
|
makeWith<Key, A, E, R, ServiceMode>(options.lookup, {
|
|
290
307
|
...options,
|
|
291
|
-
timeToLive: options.timeToLive ? () => options.timeToLive! : defaultTimeToLive
|
|
308
|
+
timeToLive: options.timeToLive !== undefined ? () => options.timeToLive! : defaultTimeToLive
|
|
292
309
|
})
|
|
293
310
|
|
|
294
311
|
const Proto = {
|
|
@@ -317,7 +334,7 @@ const defaultTimeToLive = <A, E>(_: Exit.Exit<A, E>, _key: unknown): Duration.Du
|
|
|
317
334
|
*
|
|
318
335
|
* **Example** (Getting cached values)
|
|
319
336
|
*
|
|
320
|
-
* ```ts
|
|
337
|
+
* ```ts import.meta.vitest
|
|
321
338
|
* import { Cache, Effect } from "effect"
|
|
322
339
|
*
|
|
323
340
|
* const program = Effect.gen(function*() {
|
|
@@ -328,20 +345,21 @@ const defaultTimeToLive = <A, E>(_: Exit.Exit<A, E>, _key: unknown): Duration.Du
|
|
|
328
345
|
*
|
|
329
346
|
* // Cache miss - triggers lookup function
|
|
330
347
|
* const result1 = yield* Cache.get(cache, "hello")
|
|
331
|
-
* console.log(result1) // 5
|
|
332
348
|
*
|
|
333
349
|
* // Cache hit - returns cached value without lookup
|
|
334
350
|
* const result2 = yield* Cache.get(cache, "hello")
|
|
335
|
-
* console.log(result2) // 5 (from cache)
|
|
336
351
|
*
|
|
337
352
|
* return { result1, result2 }
|
|
338
353
|
* })
|
|
354
|
+
*
|
|
355
|
+
* const actual = await Effect.runPromise(program)
|
|
356
|
+
* actual // => { result1: 5, result2: 5 }
|
|
339
357
|
* ```
|
|
340
358
|
*
|
|
341
359
|
* **Example** (Handling lookup failures)
|
|
342
360
|
*
|
|
343
|
-
* ```ts
|
|
344
|
-
* import { Cache, Effect } from "effect"
|
|
361
|
+
* ```ts import.meta.vitest
|
|
362
|
+
* import { Cache, Effect, Exit } from "effect"
|
|
345
363
|
*
|
|
346
364
|
* // Error handling when lookup fails
|
|
347
365
|
* const program = Effect.gen(function*() {
|
|
@@ -355,17 +373,19 @@ const defaultTimeToLive = <A, E>(_: Exit.Exit<A, E>, _key: unknown): Duration.Du
|
|
|
355
373
|
*
|
|
356
374
|
* // Successful lookup
|
|
357
375
|
* const success = yield* Cache.get(cache, "hello")
|
|
358
|
-
* console.log(success) // 5
|
|
359
376
|
*
|
|
360
377
|
* // Failed lookup - returns error
|
|
361
378
|
* const failure = yield* Effect.exit(Cache.get(cache, "error"))
|
|
362
|
-
*
|
|
379
|
+
* return [success, failure] as const
|
|
363
380
|
* })
|
|
381
|
+
*
|
|
382
|
+
* const actual = await Effect.runPromise(program)
|
|
383
|
+
* actual // => [5, Exit.fail("Lookup failed")]
|
|
364
384
|
* ```
|
|
365
385
|
*
|
|
366
386
|
* **Example** (Sharing concurrent lookups)
|
|
367
387
|
*
|
|
368
|
-
* ```ts
|
|
388
|
+
* ```ts import.meta.vitest
|
|
369
389
|
* import { Cache, Effect } from "effect"
|
|
370
390
|
*
|
|
371
391
|
* // Concurrent access - multiple gets of same key only invoke lookup once
|
|
@@ -387,9 +407,11 @@ const defaultTimeToLive = <A, E>(_: Exit.Exit<A, E>, _key: unknown): Duration.Du
|
|
|
387
407
|
* Cache.get(cache, "hello")
|
|
388
408
|
* ], { concurrency: "unbounded" })
|
|
389
409
|
*
|
|
390
|
-
*
|
|
391
|
-
* console.log(lookupCount) // 1 (lookup called only once)
|
|
410
|
+
* return { results, lookupCount }
|
|
392
411
|
* })
|
|
412
|
+
*
|
|
413
|
+
* const actual = await Effect.runPromise(program)
|
|
414
|
+
* actual // => { results: [5, 5, 5], lookupCount: 1 }
|
|
393
415
|
* ```
|
|
394
416
|
*
|
|
395
417
|
* @category combinators
|
|
@@ -408,7 +430,7 @@ export const get: {
|
|
|
408
430
|
*
|
|
409
431
|
* **Example** (Getting cached values)
|
|
410
432
|
*
|
|
411
|
-
* ```ts
|
|
433
|
+
* ```ts import.meta.vitest
|
|
412
434
|
* import { Cache, Effect } from "effect"
|
|
413
435
|
*
|
|
414
436
|
* const program = Effect.gen(function*() {
|
|
@@ -419,20 +441,21 @@ export const get: {
|
|
|
419
441
|
*
|
|
420
442
|
* // Cache miss - triggers lookup function
|
|
421
443
|
* const result1 = yield* Cache.get(cache, "hello")
|
|
422
|
-
* console.log(result1) // 5
|
|
423
444
|
*
|
|
424
445
|
* // Cache hit - returns cached value without lookup
|
|
425
446
|
* const result2 = yield* Cache.get(cache, "hello")
|
|
426
|
-
* console.log(result2) // 5 (from cache)
|
|
427
447
|
*
|
|
428
448
|
* return { result1, result2 }
|
|
429
449
|
* })
|
|
450
|
+
*
|
|
451
|
+
* const actual = await Effect.runPromise(program)
|
|
452
|
+
* actual // => { result1: 5, result2: 5 }
|
|
430
453
|
* ```
|
|
431
454
|
*
|
|
432
455
|
* **Example** (Handling lookup failures)
|
|
433
456
|
*
|
|
434
|
-
* ```ts
|
|
435
|
-
* import { Cache, Effect } from "effect"
|
|
457
|
+
* ```ts import.meta.vitest
|
|
458
|
+
* import { Cache, Effect, Exit } from "effect"
|
|
436
459
|
*
|
|
437
460
|
* // Error handling when lookup fails
|
|
438
461
|
* const program = Effect.gen(function*() {
|
|
@@ -446,17 +469,19 @@ export const get: {
|
|
|
446
469
|
*
|
|
447
470
|
* // Successful lookup
|
|
448
471
|
* const success = yield* Cache.get(cache, "hello")
|
|
449
|
-
* console.log(success) // 5
|
|
450
472
|
*
|
|
451
473
|
* // Failed lookup - returns error
|
|
452
474
|
* const failure = yield* Effect.exit(Cache.get(cache, "error"))
|
|
453
|
-
*
|
|
475
|
+
* return [success, failure] as const
|
|
454
476
|
* })
|
|
477
|
+
*
|
|
478
|
+
* const actual = await Effect.runPromise(program)
|
|
479
|
+
* actual // => [5, Exit.fail("Lookup failed")]
|
|
455
480
|
* ```
|
|
456
481
|
*
|
|
457
482
|
* **Example** (Sharing concurrent lookups)
|
|
458
483
|
*
|
|
459
|
-
* ```ts
|
|
484
|
+
* ```ts import.meta.vitest
|
|
460
485
|
* import { Cache, Effect } from "effect"
|
|
461
486
|
*
|
|
462
487
|
* // Concurrent access - multiple gets of same key only invoke lookup once
|
|
@@ -478,9 +503,11 @@ export const get: {
|
|
|
478
503
|
* Cache.get(cache, "hello")
|
|
479
504
|
* ], { concurrency: "unbounded" })
|
|
480
505
|
*
|
|
481
|
-
*
|
|
482
|
-
* console.log(lookupCount) // 1 (lookup called only once)
|
|
506
|
+
* return { results, lookupCount }
|
|
483
507
|
* })
|
|
508
|
+
*
|
|
509
|
+
* const actual = await Effect.runPromise(program)
|
|
510
|
+
* actual // => { results: [5, 5, 5], lookupCount: 1 }
|
|
484
511
|
* ```
|
|
485
512
|
*
|
|
486
513
|
* @category combinators
|
|
@@ -499,7 +526,7 @@ export const get: {
|
|
|
499
526
|
*
|
|
500
527
|
* **Example** (Getting cached values)
|
|
501
528
|
*
|
|
502
|
-
* ```ts
|
|
529
|
+
* ```ts import.meta.vitest
|
|
503
530
|
* import { Cache, Effect } from "effect"
|
|
504
531
|
*
|
|
505
532
|
* const program = Effect.gen(function*() {
|
|
@@ -510,20 +537,21 @@ export const get: {
|
|
|
510
537
|
*
|
|
511
538
|
* // Cache miss - triggers lookup function
|
|
512
539
|
* const result1 = yield* Cache.get(cache, "hello")
|
|
513
|
-
* console.log(result1) // 5
|
|
514
540
|
*
|
|
515
541
|
* // Cache hit - returns cached value without lookup
|
|
516
542
|
* const result2 = yield* Cache.get(cache, "hello")
|
|
517
|
-
* console.log(result2) // 5 (from cache)
|
|
518
543
|
*
|
|
519
544
|
* return { result1, result2 }
|
|
520
545
|
* })
|
|
546
|
+
*
|
|
547
|
+
* const actual = await Effect.runPromise(program)
|
|
548
|
+
* actual // => { result1: 5, result2: 5 }
|
|
521
549
|
* ```
|
|
522
550
|
*
|
|
523
551
|
* **Example** (Handling lookup failures)
|
|
524
552
|
*
|
|
525
|
-
* ```ts
|
|
526
|
-
* import { Cache, Effect } from "effect"
|
|
553
|
+
* ```ts import.meta.vitest
|
|
554
|
+
* import { Cache, Effect, Exit } from "effect"
|
|
527
555
|
*
|
|
528
556
|
* // Error handling when lookup fails
|
|
529
557
|
* const program = Effect.gen(function*() {
|
|
@@ -537,17 +565,19 @@ export const get: {
|
|
|
537
565
|
*
|
|
538
566
|
* // Successful lookup
|
|
539
567
|
* const success = yield* Cache.get(cache, "hello")
|
|
540
|
-
* console.log(success) // 5
|
|
541
568
|
*
|
|
542
569
|
* // Failed lookup - returns error
|
|
543
570
|
* const failure = yield* Effect.exit(Cache.get(cache, "error"))
|
|
544
|
-
*
|
|
571
|
+
* return [success, failure] as const
|
|
545
572
|
* })
|
|
573
|
+
*
|
|
574
|
+
* const actual = await Effect.runPromise(program)
|
|
575
|
+
* actual // => [5, Exit.fail("Lookup failed")]
|
|
546
576
|
* ```
|
|
547
577
|
*
|
|
548
578
|
* **Example** (Sharing concurrent lookups)
|
|
549
579
|
*
|
|
550
|
-
* ```ts
|
|
580
|
+
* ```ts import.meta.vitest
|
|
551
581
|
* import { Cache, Effect } from "effect"
|
|
552
582
|
*
|
|
553
583
|
* // Concurrent access - multiple gets of same key only invoke lookup once
|
|
@@ -569,9 +599,11 @@ export const get: {
|
|
|
569
599
|
* Cache.get(cache, "hello")
|
|
570
600
|
* ], { concurrency: "unbounded" })
|
|
571
601
|
*
|
|
572
|
-
*
|
|
573
|
-
* console.log(lookupCount) // 1 (lookup called only once)
|
|
602
|
+
* return { results, lookupCount }
|
|
574
603
|
* })
|
|
604
|
+
*
|
|
605
|
+
* const actual = await Effect.runPromise(program)
|
|
606
|
+
* actual // => { results: [5, 5, 5], lookupCount: 1 }
|
|
575
607
|
* ```
|
|
576
608
|
*
|
|
577
609
|
* @category combinators
|
|
@@ -587,210 +619,58 @@ export const get: {
|
|
|
587
619
|
// Move the entry to the end of the map to keep it fresh
|
|
588
620
|
MutableHashMap.remove(self.map, key)
|
|
589
621
|
MutableHashMap.set(self.map, key, oentry.value)
|
|
590
|
-
return
|
|
591
|
-
}
|
|
592
|
-
const deferred = Deferred.makeUnsafe</**
|
|
593
|
-
* Retrieves the value for a key, invoking the lookup function on a cache miss
|
|
594
|
-
* or expired entry.
|
|
595
|
-
*
|
|
596
|
-
* **Details**
|
|
597
|
-
*
|
|
598
|
-
* Concurrent `get` calls for the same missing key share the same pending
|
|
599
|
-
* lookup. The cache stores the lookup `Exit`, so failed lookups are cached and
|
|
600
|
-
* will fail again until the entry expires, is invalidated, or is refreshed.
|
|
601
|
-
*
|
|
602
|
-
* **Example** (Getting cached values)
|
|
603
|
-
*
|
|
604
|
-
* ```ts
|
|
605
|
-
* import { Cache, Effect } from "effect"
|
|
606
|
-
*
|
|
607
|
-
* const program = Effect.gen(function*() {
|
|
608
|
-
* const cache = yield* Cache.make({
|
|
609
|
-
* capacity: 10,
|
|
610
|
-
* lookup: (key: string) => Effect.succeed(key.length)
|
|
611
|
-
* })
|
|
612
|
-
*
|
|
613
|
-
* // Cache miss - triggers lookup function
|
|
614
|
-
* const result1 = yield* Cache.get(cache, "hello")
|
|
615
|
-
* console.log(result1) // 5
|
|
616
|
-
*
|
|
617
|
-
* // Cache hit - returns cached value without lookup
|
|
618
|
-
* const result2 = yield* Cache.get(cache, "hello")
|
|
619
|
-
* console.log(result2) // 5 (from cache)
|
|
620
|
-
*
|
|
621
|
-
* return { result1, result2 }
|
|
622
|
-
* })
|
|
623
|
-
* ```
|
|
624
|
-
*
|
|
625
|
-
* **Example** (Handling lookup failures)
|
|
626
|
-
*
|
|
627
|
-
* ```ts
|
|
628
|
-
* import { Cache, Effect } from "effect"
|
|
629
|
-
*
|
|
630
|
-
* // Error handling when lookup fails
|
|
631
|
-
* const program = Effect.gen(function*() {
|
|
632
|
-
* const cache = yield* Cache.make<string, number, string>({
|
|
633
|
-
* capacity: 10,
|
|
634
|
-
* lookup: (key: string) =>
|
|
635
|
-
* key === "error"
|
|
636
|
-
* ? Effect.fail("Lookup failed")
|
|
637
|
-
* : Effect.succeed(key.length)
|
|
638
|
-
* })
|
|
639
|
-
*
|
|
640
|
-
* // Successful lookup
|
|
641
|
-
* const success = yield* Cache.get(cache, "hello")
|
|
642
|
-
* console.log(success) // 5
|
|
643
|
-
*
|
|
644
|
-
* // Failed lookup - returns error
|
|
645
|
-
* const failure = yield* Effect.exit(Cache.get(cache, "error"))
|
|
646
|
-
* console.log(failure) // Exit.fail("Lookup failed")
|
|
647
|
-
* })
|
|
648
|
-
* ```
|
|
649
|
-
*
|
|
650
|
-
* **Example** (Sharing concurrent lookups)
|
|
651
|
-
*
|
|
652
|
-
* ```ts
|
|
653
|
-
* import { Cache, Effect } from "effect"
|
|
654
|
-
*
|
|
655
|
-
* // Concurrent access - multiple gets of same key only invoke lookup once
|
|
656
|
-
* const program = Effect.gen(function*() {
|
|
657
|
-
* let lookupCount = 0
|
|
658
|
-
* const cache = yield* Cache.make({
|
|
659
|
-
* capacity: 10,
|
|
660
|
-
* lookup: (key: string) =>
|
|
661
|
-
* Effect.sync(() => {
|
|
662
|
-
* lookupCount++
|
|
663
|
-
* return key.length
|
|
664
|
-
* })
|
|
665
|
-
* })
|
|
666
|
-
*
|
|
667
|
-
* // Multiple concurrent gets
|
|
668
|
-
* const results = yield* Effect.all([
|
|
669
|
-
* Cache.get(cache, "hello"),
|
|
670
|
-
* Cache.get(cache, "hello"),
|
|
671
|
-
* Cache.get(cache, "hello")
|
|
672
|
-
* ], { concurrency: "unbounded" })
|
|
673
|
-
*
|
|
674
|
-
* console.log(results) // [5, 5, 5]
|
|
675
|
-
* console.log(lookupCount) // 1 (lookup called only once)
|
|
676
|
-
* })
|
|
677
|
-
* ```
|
|
678
|
-
*
|
|
679
|
-
* @category combinators
|
|
680
|
-
* @since 4.0.0
|
|
681
|
-
*/
|
|
682
|
-
A, /**
|
|
683
|
-
* Retrieves the value for a key, invoking the lookup function on a cache miss
|
|
684
|
-
* or expired entry.
|
|
685
|
-
*
|
|
686
|
-
* **Details**
|
|
687
|
-
*
|
|
688
|
-
* Concurrent `get` calls for the same missing key share the same pending
|
|
689
|
-
* lookup. The cache stores the lookup `Exit`, so failed lookups are cached and
|
|
690
|
-
* will fail again until the entry expires, is invalidated, or is refreshed.
|
|
691
|
-
*
|
|
692
|
-
* **Example** (Getting cached values)
|
|
693
|
-
*
|
|
694
|
-
* ```ts
|
|
695
|
-
* import { Cache, Effect } from "effect"
|
|
696
|
-
*
|
|
697
|
-
* const program = Effect.gen(function*() {
|
|
698
|
-
* const cache = yield* Cache.make({
|
|
699
|
-
* capacity: 10,
|
|
700
|
-
* lookup: (key: string) => Effect.succeed(key.length)
|
|
701
|
-
* })
|
|
702
|
-
*
|
|
703
|
-
* // Cache miss - triggers lookup function
|
|
704
|
-
* const result1 = yield* Cache.get(cache, "hello")
|
|
705
|
-
* console.log(result1) // 5
|
|
706
|
-
*
|
|
707
|
-
* // Cache hit - returns cached value without lookup
|
|
708
|
-
* const result2 = yield* Cache.get(cache, "hello")
|
|
709
|
-
* console.log(result2) // 5 (from cache)
|
|
710
|
-
*
|
|
711
|
-
* return { result1, result2 }
|
|
712
|
-
* })
|
|
713
|
-
* ```
|
|
714
|
-
*
|
|
715
|
-
* **Example** (Handling lookup failures)
|
|
716
|
-
*
|
|
717
|
-
* ```ts
|
|
718
|
-
* import { Cache, Effect } from "effect"
|
|
719
|
-
*
|
|
720
|
-
* // Error handling when lookup fails
|
|
721
|
-
* const program = Effect.gen(function*() {
|
|
722
|
-
* const cache = yield* Cache.make<string, number, string>({
|
|
723
|
-
* capacity: 10,
|
|
724
|
-
* lookup: (key: string) =>
|
|
725
|
-
* key === "error"
|
|
726
|
-
* ? Effect.fail("Lookup failed")
|
|
727
|
-
* : Effect.succeed(key.length)
|
|
728
|
-
* })
|
|
729
|
-
*
|
|
730
|
-
* // Successful lookup
|
|
731
|
-
* const success = yield* Cache.get(cache, "hello")
|
|
732
|
-
* console.log(success) // 5
|
|
733
|
-
*
|
|
734
|
-
* // Failed lookup - returns error
|
|
735
|
-
* const failure = yield* Effect.exit(Cache.get(cache, "error"))
|
|
736
|
-
* console.log(failure) // Exit.fail("Lookup failed")
|
|
737
|
-
* })
|
|
738
|
-
* ```
|
|
739
|
-
*
|
|
740
|
-
* **Example** (Sharing concurrent lookups)
|
|
741
|
-
*
|
|
742
|
-
* ```ts
|
|
743
|
-
* import { Cache, Effect } from "effect"
|
|
744
|
-
*
|
|
745
|
-
* // Concurrent access - multiple gets of same key only invoke lookup once
|
|
746
|
-
* const program = Effect.gen(function*() {
|
|
747
|
-
* let lookupCount = 0
|
|
748
|
-
* const cache = yield* Cache.make({
|
|
749
|
-
* capacity: 10,
|
|
750
|
-
* lookup: (key: string) =>
|
|
751
|
-
* Effect.sync(() => {
|
|
752
|
-
* lookupCount++
|
|
753
|
-
* return key.length
|
|
754
|
-
* })
|
|
755
|
-
* })
|
|
756
|
-
*
|
|
757
|
-
* // Multiple concurrent gets
|
|
758
|
-
* const results = yield* Effect.all([
|
|
759
|
-
* Cache.get(cache, "hello"),
|
|
760
|
-
* Cache.get(cache, "hello"),
|
|
761
|
-
* Cache.get(cache, "hello")
|
|
762
|
-
* ], { concurrency: "unbounded" })
|
|
763
|
-
*
|
|
764
|
-
* console.log(results) // [5, 5, 5]
|
|
765
|
-
* console.log(lookupCount) // 1 (lookup called only once)
|
|
766
|
-
* })
|
|
767
|
-
* ```
|
|
768
|
-
*
|
|
769
|
-
* @category combinators
|
|
770
|
-
* @since 4.0.0
|
|
771
|
-
*/
|
|
772
|
-
E>()
|
|
773
|
-
const entry: Entry<A, E> = {
|
|
774
|
-
expiresAt: undefined,
|
|
775
|
-
deferred
|
|
776
|
-
}
|
|
777
|
-
MutableHashMap.set(self.map, key, entry)
|
|
778
|
-
if (Number.isFinite(self.capacity)) {
|
|
779
|
-
checkCapacity(self)
|
|
622
|
+
return oentry.value.await()
|
|
780
623
|
}
|
|
781
|
-
|
|
782
|
-
|
|
624
|
+
const entry = new EntryImpl(fiber, self.lookup(key))
|
|
625
|
+
entry.fiber.addObserver((exit) => {
|
|
626
|
+
if (effect.exitHasInterrupts(exit)) {
|
|
627
|
+
const current = MutableHashMap.get(self.map, key)
|
|
628
|
+
if (Option.isSome(current) && current.value === entry) {
|
|
629
|
+
MutableHashMap.remove(self.map, key)
|
|
630
|
+
}
|
|
631
|
+
return
|
|
632
|
+
}
|
|
783
633
|
const ttl = self.timeToLive(exit, key)
|
|
784
634
|
if (Duration.isFinite(ttl)) {
|
|
785
635
|
entry.expiresAt = fiber.getRef(effect.ClockRef).currentTimeMillisUnsafe() + Duration.toMillis(ttl)
|
|
786
636
|
} else if (Duration.isZero(ttl)) {
|
|
787
637
|
MutableHashMap.remove(self.map, key)
|
|
788
638
|
}
|
|
789
|
-
return effect.void
|
|
790
639
|
})
|
|
640
|
+
MutableHashMap.set(self.map, key, entry)
|
|
641
|
+
if (Number.isFinite(self.capacity)) {
|
|
642
|
+
checkCapacity(self)
|
|
643
|
+
}
|
|
644
|
+
return entry.await()
|
|
791
645
|
})
|
|
792
646
|
)
|
|
793
647
|
|
|
648
|
+
class EntryImpl<A, E> implements Entry<A, E> {
|
|
649
|
+
expiresAt: number | undefined
|
|
650
|
+
awaiters: number
|
|
651
|
+
fiber: Fiber.Fiber<A, E>
|
|
652
|
+
|
|
653
|
+
constructor(
|
|
654
|
+
parent: Fiber.Fiber<unknown, unknown>,
|
|
655
|
+
valueEffect: Effect.Effect<A, E, any>
|
|
656
|
+
) {
|
|
657
|
+
this.fiber = effect.forkUnsafe(parent, valueEffect, true, true)
|
|
658
|
+
this.awaiters = 0
|
|
659
|
+
this.expiresAt = undefined
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
await(): Effect.Effect<A, E> {
|
|
663
|
+
const exit = this.fiber.pollUnsafe()
|
|
664
|
+
if (exit) return exit
|
|
665
|
+
this.awaiters++
|
|
666
|
+
return effect.onExit(effect.fiberJoin(this.fiber), () => {
|
|
667
|
+
this.awaiters--
|
|
668
|
+
if (this.awaiters > 0 || this.fiber.pollUnsafe()) return effect.void
|
|
669
|
+
return effect.fiberInterrupt(this.fiber)
|
|
670
|
+
})
|
|
671
|
+
}
|
|
672
|
+
}
|
|
673
|
+
|
|
794
674
|
const hasExpired = <A, E>(entry: Entry<A, E>, fiber: Fiber.Fiber<unknown, unknown>): boolean => {
|
|
795
675
|
if (entry.expiresAt === undefined) {
|
|
796
676
|
return false
|
|
@@ -821,8 +701,8 @@ const checkCapacity = <K, A, E, R>(self: Cache<K, A, E, R>) => {
|
|
|
821
701
|
*
|
|
822
702
|
* **Example** (Reading cached values without lookup)
|
|
823
703
|
*
|
|
824
|
-
* ```ts
|
|
825
|
-
* import { Cache, Effect } from "effect"
|
|
704
|
+
* ```ts import.meta.vitest
|
|
705
|
+
* import { Cache, Effect, Option } from "effect"
|
|
826
706
|
*
|
|
827
707
|
* const program = Effect.gen(function*() {
|
|
828
708
|
* const cache = yield* Cache.make({
|
|
@@ -832,23 +712,23 @@ const checkCapacity = <K, A, E, R>(self: Cache<K, A, E, R>) => {
|
|
|
832
712
|
*
|
|
833
713
|
* // No value in cache yet - returns None without lookup
|
|
834
714
|
* const empty = yield* Cache.getOption(cache, "hello")
|
|
835
|
-
* console.log(empty) // Option.none()
|
|
836
715
|
*
|
|
837
716
|
* // Populate cache using get
|
|
838
717
|
* yield* Cache.get(cache, "hello")
|
|
839
718
|
*
|
|
840
719
|
* // Now getOption returns the cached value
|
|
841
720
|
* const cached = yield* Cache.getOption(cache, "hello")
|
|
842
|
-
*
|
|
843
|
-
*
|
|
844
|
-
* return { empty, cached }
|
|
721
|
+
* return [empty, cached] as const
|
|
845
722
|
* })
|
|
723
|
+
*
|
|
724
|
+
* const actual = await Effect.runPromise(program)
|
|
725
|
+
* actual // => [Option.none(), Option.some(5)]
|
|
846
726
|
* ```
|
|
847
727
|
*
|
|
848
728
|
* **Example** (Skipping expired entries)
|
|
849
729
|
*
|
|
850
|
-
* ```ts
|
|
851
|
-
* import { Cache, Effect } from "effect"
|
|
730
|
+
* ```ts import.meta.vitest
|
|
731
|
+
* import { Cache, Effect, Option } from "effect"
|
|
852
732
|
* import { TestClock } from "effect/testing"
|
|
853
733
|
*
|
|
854
734
|
* // Expired entries return None
|
|
@@ -864,21 +744,23 @@ const checkCapacity = <K, A, E, R>(self: Cache<K, A, E, R>) => {
|
|
|
864
744
|
*
|
|
865
745
|
* // Value exists before expiration
|
|
866
746
|
* const beforeExpiry = yield* Cache.getOption(cache, "hello")
|
|
867
|
-
* console.log(beforeExpiry) // Option.some(5)
|
|
868
747
|
*
|
|
869
748
|
* // Simulate time passing
|
|
870
749
|
* yield* TestClock.adjust("2 hours")
|
|
871
750
|
*
|
|
872
751
|
* // Value expired - returns None
|
|
873
752
|
* const afterExpiry = yield* Cache.getOption(cache, "hello")
|
|
874
|
-
*
|
|
753
|
+
* return [beforeExpiry, afterExpiry] as const
|
|
875
754
|
* })
|
|
755
|
+
*
|
|
756
|
+
* const actual = await Effect.runPromise(Effect.provide(program, TestClock.layer()))
|
|
757
|
+
* actual // => [Option.some(5), Option.none()]
|
|
876
758
|
* ```
|
|
877
759
|
*
|
|
878
760
|
* **Example** (Waiting for pending lookups)
|
|
879
761
|
*
|
|
880
|
-
* ```ts
|
|
881
|
-
* import { Cache, Deferred, Effect, Fiber } from "effect"
|
|
762
|
+
* ```ts import.meta.vitest
|
|
763
|
+
* import { Cache, Deferred, Effect, Fiber, Option } from "effect"
|
|
882
764
|
*
|
|
883
765
|
* // Waits for ongoing computation to complete
|
|
884
766
|
* const program = Effect.gen(function*() {
|
|
@@ -898,11 +780,12 @@ const checkCapacity = <K, A, E, R>(self: Cache<K, A, E, R>) => {
|
|
|
898
780
|
* yield* Deferred.succeed(deferred, void 0)
|
|
899
781
|
*
|
|
900
782
|
* const result = yield* Fiber.join(optionFiber)
|
|
901
|
-
* console.log(result) // Option.some(42)
|
|
902
|
-
*
|
|
903
783
|
* const value = yield* Fiber.join(getFiber)
|
|
904
|
-
*
|
|
784
|
+
* return [result, value] as const
|
|
905
785
|
* })
|
|
786
|
+
*
|
|
787
|
+
* const actual = await Effect.runPromise(program)
|
|
788
|
+
* actual // => [Option.some(42), 42]
|
|
906
789
|
* ```
|
|
907
790
|
*
|
|
908
791
|
* @category combinators
|
|
@@ -921,8 +804,8 @@ export const getOption: {
|
|
|
921
804
|
*
|
|
922
805
|
* **Example** (Reading cached values without lookup)
|
|
923
806
|
*
|
|
924
|
-
* ```ts
|
|
925
|
-
* import { Cache, Effect } from "effect"
|
|
807
|
+
* ```ts import.meta.vitest
|
|
808
|
+
* import { Cache, Effect, Option } from "effect"
|
|
926
809
|
*
|
|
927
810
|
* const program = Effect.gen(function*() {
|
|
928
811
|
* const cache = yield* Cache.make({
|
|
@@ -932,23 +815,23 @@ export const getOption: {
|
|
|
932
815
|
*
|
|
933
816
|
* // No value in cache yet - returns None without lookup
|
|
934
817
|
* const empty = yield* Cache.getOption(cache, "hello")
|
|
935
|
-
* console.log(empty) // Option.none()
|
|
936
818
|
*
|
|
937
819
|
* // Populate cache using get
|
|
938
820
|
* yield* Cache.get(cache, "hello")
|
|
939
821
|
*
|
|
940
822
|
* // Now getOption returns the cached value
|
|
941
823
|
* const cached = yield* Cache.getOption(cache, "hello")
|
|
942
|
-
*
|
|
943
|
-
*
|
|
944
|
-
* return { empty, cached }
|
|
824
|
+
* return [empty, cached] as const
|
|
945
825
|
* })
|
|
826
|
+
*
|
|
827
|
+
* const actual = await Effect.runPromise(program)
|
|
828
|
+
* actual // => [Option.none(), Option.some(5)]
|
|
946
829
|
* ```
|
|
947
830
|
*
|
|
948
831
|
* **Example** (Skipping expired entries)
|
|
949
832
|
*
|
|
950
|
-
* ```ts
|
|
951
|
-
* import { Cache, Effect } from "effect"
|
|
833
|
+
* ```ts import.meta.vitest
|
|
834
|
+
* import { Cache, Effect, Option } from "effect"
|
|
952
835
|
* import { TestClock } from "effect/testing"
|
|
953
836
|
*
|
|
954
837
|
* // Expired entries return None
|
|
@@ -964,21 +847,23 @@ export const getOption: {
|
|
|
964
847
|
*
|
|
965
848
|
* // Value exists before expiration
|
|
966
849
|
* const beforeExpiry = yield* Cache.getOption(cache, "hello")
|
|
967
|
-
* console.log(beforeExpiry) // Option.some(5)
|
|
968
850
|
*
|
|
969
851
|
* // Simulate time passing
|
|
970
852
|
* yield* TestClock.adjust("2 hours")
|
|
971
853
|
*
|
|
972
854
|
* // Value expired - returns None
|
|
973
855
|
* const afterExpiry = yield* Cache.getOption(cache, "hello")
|
|
974
|
-
*
|
|
856
|
+
* return [beforeExpiry, afterExpiry] as const
|
|
975
857
|
* })
|
|
858
|
+
*
|
|
859
|
+
* const actual = await Effect.runPromise(Effect.provide(program, TestClock.layer()))
|
|
860
|
+
* actual // => [Option.some(5), Option.none()]
|
|
976
861
|
* ```
|
|
977
862
|
*
|
|
978
863
|
* **Example** (Waiting for pending lookups)
|
|
979
864
|
*
|
|
980
|
-
* ```ts
|
|
981
|
-
* import { Cache, Deferred, Effect, Fiber } from "effect"
|
|
865
|
+
* ```ts import.meta.vitest
|
|
866
|
+
* import { Cache, Deferred, Effect, Fiber, Option } from "effect"
|
|
982
867
|
*
|
|
983
868
|
* // Waits for ongoing computation to complete
|
|
984
869
|
* const program = Effect.gen(function*() {
|
|
@@ -998,11 +883,12 @@ export const getOption: {
|
|
|
998
883
|
* yield* Deferred.succeed(deferred, void 0)
|
|
999
884
|
*
|
|
1000
885
|
* const result = yield* Fiber.join(optionFiber)
|
|
1001
|
-
* console.log(result) // Option.some(42)
|
|
1002
|
-
*
|
|
1003
886
|
* const value = yield* Fiber.join(getFiber)
|
|
1004
|
-
*
|
|
887
|
+
* return [result, value] as const
|
|
1005
888
|
* })
|
|
889
|
+
*
|
|
890
|
+
* const actual = await Effect.runPromise(program)
|
|
891
|
+
* actual // => [Option.some(42), 42]
|
|
1006
892
|
* ```
|
|
1007
893
|
*
|
|
1008
894
|
* @category combinators
|
|
@@ -1021,8 +907,8 @@ export const getOption: {
|
|
|
1021
907
|
*
|
|
1022
908
|
* **Example** (Reading cached values without lookup)
|
|
1023
909
|
*
|
|
1024
|
-
* ```ts
|
|
1025
|
-
* import { Cache, Effect } from "effect"
|
|
910
|
+
* ```ts import.meta.vitest
|
|
911
|
+
* import { Cache, Effect, Option } from "effect"
|
|
1026
912
|
*
|
|
1027
913
|
* const program = Effect.gen(function*() {
|
|
1028
914
|
* const cache = yield* Cache.make({
|
|
@@ -1032,23 +918,23 @@ export const getOption: {
|
|
|
1032
918
|
*
|
|
1033
919
|
* // No value in cache yet - returns None without lookup
|
|
1034
920
|
* const empty = yield* Cache.getOption(cache, "hello")
|
|
1035
|
-
* console.log(empty) // Option.none()
|
|
1036
921
|
*
|
|
1037
922
|
* // Populate cache using get
|
|
1038
923
|
* yield* Cache.get(cache, "hello")
|
|
1039
924
|
*
|
|
1040
925
|
* // Now getOption returns the cached value
|
|
1041
926
|
* const cached = yield* Cache.getOption(cache, "hello")
|
|
1042
|
-
*
|
|
1043
|
-
*
|
|
1044
|
-
* return { empty, cached }
|
|
927
|
+
* return [empty, cached] as const
|
|
1045
928
|
* })
|
|
929
|
+
*
|
|
930
|
+
* const actual = await Effect.runPromise(program)
|
|
931
|
+
* actual // => [Option.none(), Option.some(5)]
|
|
1046
932
|
* ```
|
|
1047
933
|
*
|
|
1048
934
|
* **Example** (Skipping expired entries)
|
|
1049
935
|
*
|
|
1050
|
-
* ```ts
|
|
1051
|
-
* import { Cache, Effect } from "effect"
|
|
936
|
+
* ```ts import.meta.vitest
|
|
937
|
+
* import { Cache, Effect, Option } from "effect"
|
|
1052
938
|
* import { TestClock } from "effect/testing"
|
|
1053
939
|
*
|
|
1054
940
|
* // Expired entries return None
|
|
@@ -1064,21 +950,23 @@ export const getOption: {
|
|
|
1064
950
|
*
|
|
1065
951
|
* // Value exists before expiration
|
|
1066
952
|
* const beforeExpiry = yield* Cache.getOption(cache, "hello")
|
|
1067
|
-
* console.log(beforeExpiry) // Option.some(5)
|
|
1068
953
|
*
|
|
1069
954
|
* // Simulate time passing
|
|
1070
955
|
* yield* TestClock.adjust("2 hours")
|
|
1071
956
|
*
|
|
1072
957
|
* // Value expired - returns None
|
|
1073
958
|
* const afterExpiry = yield* Cache.getOption(cache, "hello")
|
|
1074
|
-
*
|
|
959
|
+
* return [beforeExpiry, afterExpiry] as const
|
|
1075
960
|
* })
|
|
961
|
+
*
|
|
962
|
+
* const actual = await Effect.runPromise(Effect.provide(program, TestClock.layer()))
|
|
963
|
+
* actual // => [Option.some(5), Option.none()]
|
|
1076
964
|
* ```
|
|
1077
965
|
*
|
|
1078
966
|
* **Example** (Waiting for pending lookups)
|
|
1079
967
|
*
|
|
1080
|
-
* ```ts
|
|
1081
|
-
* import { Cache, Deferred, Effect, Fiber } from "effect"
|
|
968
|
+
* ```ts import.meta.vitest
|
|
969
|
+
* import { Cache, Deferred, Effect, Fiber, Option } from "effect"
|
|
1082
970
|
*
|
|
1083
971
|
* // Waits for ongoing computation to complete
|
|
1084
972
|
* const program = Effect.gen(function*() {
|
|
@@ -1098,11 +986,12 @@ export const getOption: {
|
|
|
1098
986
|
* yield* Deferred.succeed(deferred, void 0)
|
|
1099
987
|
*
|
|
1100
988
|
* const result = yield* Fiber.join(optionFiber)
|
|
1101
|
-
* console.log(result) // Option.some(42)
|
|
1102
|
-
*
|
|
1103
989
|
* const value = yield* Fiber.join(getFiber)
|
|
1104
|
-
*
|
|
990
|
+
* return [result, value] as const
|
|
1105
991
|
* })
|
|
992
|
+
*
|
|
993
|
+
* const actual = await Effect.runPromise(program)
|
|
994
|
+
* actual // => [Option.some(42), 42]
|
|
1106
995
|
* ```
|
|
1107
996
|
*
|
|
1108
997
|
* @category combinators
|
|
@@ -1114,7 +1003,7 @@ export const getOption: {
|
|
|
1114
1003
|
<Key, A, E, R>(self: Cache<Key, A, E, R>, key: Key): Effect.Effect<Option.Option<A>, E> =>
|
|
1115
1004
|
core.withFiber((fiber) => {
|
|
1116
1005
|
const entry = getImpl(self, key, fiber)
|
|
1117
|
-
return entry ? effect.asSome(
|
|
1006
|
+
return entry ? effect.asSome(entry.await()) : effect.succeedNone
|
|
1118
1007
|
})
|
|
1119
1008
|
)
|
|
1120
1009
|
|
|
@@ -1192,7 +1081,7 @@ export const getSuccess: {
|
|
|
1192
1081
|
2,
|
|
1193
1082
|
<Key, A, E, R>(self: Cache<Key, A, E, R>, key: Key): Effect.Effect<Option.Option<A>> =>
|
|
1194
1083
|
core.withFiber((fiber) => {
|
|
1195
|
-
const exit = getImpl(self, key, fiber)?.
|
|
1084
|
+
const exit = getImpl(self, key, fiber)?.fiber.pollUnsafe()
|
|
1196
1085
|
if (exit && effect.exitIsSuccess(exit)) {
|
|
1197
1086
|
return effect.succeedSome(exit.value)
|
|
1198
1087
|
}
|
|
@@ -1206,7 +1095,7 @@ export const getSuccess: {
|
|
|
1206
1095
|
*
|
|
1207
1096
|
* **Example** (Setting values directly)
|
|
1208
1097
|
*
|
|
1209
|
-
* ```ts
|
|
1098
|
+
* ```ts import.meta.vitest
|
|
1210
1099
|
* import { Cache, Effect } from "effect"
|
|
1211
1100
|
*
|
|
1212
1101
|
* const program = Effect.gen(function*() {
|
|
@@ -1217,14 +1106,16 @@ export const getSuccess: {
|
|
|
1217
1106
|
*
|
|
1218
1107
|
* // Set a value directly without invoking lookup
|
|
1219
1108
|
* yield* Cache.set(cache, "hello", 42)
|
|
1220
|
-
*
|
|
1221
|
-
* console.log(result) // 42 (not 5 from lookup)
|
|
1109
|
+
* return yield* Cache.get(cache, "hello")
|
|
1222
1110
|
* })
|
|
1111
|
+
*
|
|
1112
|
+
* const actual = await Effect.runPromise(program)
|
|
1113
|
+
* actual // => 42
|
|
1223
1114
|
* ```
|
|
1224
1115
|
*
|
|
1225
1116
|
* **Example** (Overwriting cached values)
|
|
1226
1117
|
*
|
|
1227
|
-
* ```ts
|
|
1118
|
+
* ```ts import.meta.vitest
|
|
1228
1119
|
* import { Cache, Effect } from "effect"
|
|
1229
1120
|
*
|
|
1230
1121
|
* // Overwriting existing cached values
|
|
@@ -1241,13 +1132,16 @@ export const getSuccess: {
|
|
|
1241
1132
|
* yield* Cache.set(cache, "test", 999)
|
|
1242
1133
|
* const updated = yield* Cache.get(cache, "test") // 999
|
|
1243
1134
|
*
|
|
1244
|
-
*
|
|
1135
|
+
* return { original, updated }
|
|
1245
1136
|
* })
|
|
1137
|
+
*
|
|
1138
|
+
* const actual = await Effect.runPromise(program)
|
|
1139
|
+
* actual // => { original: 4, updated: 999 }
|
|
1246
1140
|
* ```
|
|
1247
1141
|
*
|
|
1248
1142
|
* **Example** (Applying TTL to set values)
|
|
1249
1143
|
*
|
|
1250
|
-
* ```ts
|
|
1144
|
+
* ```ts import.meta.vitest
|
|
1251
1145
|
* import { Cache, Effect } from "effect"
|
|
1252
1146
|
* import { TestClock } from "effect/testing"
|
|
1253
1147
|
*
|
|
@@ -1261,17 +1155,21 @@ export const getSuccess: {
|
|
|
1261
1155
|
*
|
|
1262
1156
|
* // Set value with TTL applied
|
|
1263
1157
|
* yield* Cache.set(cache, "temporary", 123)
|
|
1264
|
-
*
|
|
1158
|
+
* const beforeExpiry = yield* Cache.has(cache, "temporary")
|
|
1265
1159
|
*
|
|
1266
1160
|
* // Advance time past TTL
|
|
1267
1161
|
* yield* TestClock.adjust("2 hours")
|
|
1268
|
-
*
|
|
1162
|
+
* const afterExpiry = yield* Cache.has(cache, "temporary")
|
|
1163
|
+
* return [beforeExpiry, afterExpiry]
|
|
1269
1164
|
* })
|
|
1165
|
+
*
|
|
1166
|
+
* const actual = await Effect.runPromise(Effect.provide(program, TestClock.layer()))
|
|
1167
|
+
* actual // => [true, false]
|
|
1270
1168
|
* ```
|
|
1271
1169
|
*
|
|
1272
1170
|
* **Example** (Enforcing capacity when setting values)
|
|
1273
1171
|
*
|
|
1274
|
-
* ```ts
|
|
1172
|
+
* ```ts import.meta.vitest
|
|
1275
1173
|
* import { Cache, Effect } from "effect"
|
|
1276
1174
|
*
|
|
1277
1175
|
* // Capacity enforcement with set operations
|
|
@@ -1284,14 +1182,18 @@ export const getSuccess: {
|
|
|
1284
1182
|
* // Fill cache to capacity
|
|
1285
1183
|
* yield* Cache.set(cache, "a", 1)
|
|
1286
1184
|
* yield* Cache.set(cache, "b", 2)
|
|
1287
|
-
*
|
|
1185
|
+
* const sizeBeforeEviction = yield* Cache.size(cache)
|
|
1288
1186
|
*
|
|
1289
1187
|
* // Adding another entry evicts oldest
|
|
1290
1188
|
* yield* Cache.set(cache, "c", 3)
|
|
1291
|
-
*
|
|
1292
|
-
*
|
|
1293
|
-
*
|
|
1189
|
+
* const sizeAfterEviction = yield* Cache.size(cache)
|
|
1190
|
+
* const hasOldest = yield* Cache.has(cache, "a")
|
|
1191
|
+
* const hasNewest = yield* Cache.has(cache, "c")
|
|
1192
|
+
* return [sizeBeforeEviction, sizeAfterEviction, hasOldest, hasNewest]
|
|
1294
1193
|
* })
|
|
1194
|
+
*
|
|
1195
|
+
* const actual = await Effect.runPromise(program)
|
|
1196
|
+
* actual // => [2, 2, false, true]
|
|
1295
1197
|
* ```
|
|
1296
1198
|
*
|
|
1297
1199
|
* @category combinators
|
|
@@ -1304,7 +1206,7 @@ export const set: {
|
|
|
1304
1206
|
*
|
|
1305
1207
|
* **Example** (Setting values directly)
|
|
1306
1208
|
*
|
|
1307
|
-
* ```ts
|
|
1209
|
+
* ```ts import.meta.vitest
|
|
1308
1210
|
* import { Cache, Effect } from "effect"
|
|
1309
1211
|
*
|
|
1310
1212
|
* const program = Effect.gen(function*() {
|
|
@@ -1315,14 +1217,16 @@ export const set: {
|
|
|
1315
1217
|
*
|
|
1316
1218
|
* // Set a value directly without invoking lookup
|
|
1317
1219
|
* yield* Cache.set(cache, "hello", 42)
|
|
1318
|
-
*
|
|
1319
|
-
* console.log(result) // 42 (not 5 from lookup)
|
|
1220
|
+
* return yield* Cache.get(cache, "hello")
|
|
1320
1221
|
* })
|
|
1222
|
+
*
|
|
1223
|
+
* const actual = await Effect.runPromise(program)
|
|
1224
|
+
* actual // => 42
|
|
1321
1225
|
* ```
|
|
1322
1226
|
*
|
|
1323
1227
|
* **Example** (Overwriting cached values)
|
|
1324
1228
|
*
|
|
1325
|
-
* ```ts
|
|
1229
|
+
* ```ts import.meta.vitest
|
|
1326
1230
|
* import { Cache, Effect } from "effect"
|
|
1327
1231
|
*
|
|
1328
1232
|
* // Overwriting existing cached values
|
|
@@ -1339,13 +1243,16 @@ export const set: {
|
|
|
1339
1243
|
* yield* Cache.set(cache, "test", 999)
|
|
1340
1244
|
* const updated = yield* Cache.get(cache, "test") // 999
|
|
1341
1245
|
*
|
|
1342
|
-
*
|
|
1246
|
+
* return { original, updated }
|
|
1343
1247
|
* })
|
|
1248
|
+
*
|
|
1249
|
+
* const actual = await Effect.runPromise(program)
|
|
1250
|
+
* actual // => { original: 4, updated: 999 }
|
|
1344
1251
|
* ```
|
|
1345
1252
|
*
|
|
1346
1253
|
* **Example** (Applying TTL to set values)
|
|
1347
1254
|
*
|
|
1348
|
-
* ```ts
|
|
1255
|
+
* ```ts import.meta.vitest
|
|
1349
1256
|
* import { Cache, Effect } from "effect"
|
|
1350
1257
|
* import { TestClock } from "effect/testing"
|
|
1351
1258
|
*
|
|
@@ -1359,17 +1266,21 @@ export const set: {
|
|
|
1359
1266
|
*
|
|
1360
1267
|
* // Set value with TTL applied
|
|
1361
1268
|
* yield* Cache.set(cache, "temporary", 123)
|
|
1362
|
-
*
|
|
1269
|
+
* const beforeExpiry = yield* Cache.has(cache, "temporary")
|
|
1363
1270
|
*
|
|
1364
1271
|
* // Advance time past TTL
|
|
1365
1272
|
* yield* TestClock.adjust("2 hours")
|
|
1366
|
-
*
|
|
1273
|
+
* const afterExpiry = yield* Cache.has(cache, "temporary")
|
|
1274
|
+
* return [beforeExpiry, afterExpiry]
|
|
1367
1275
|
* })
|
|
1276
|
+
*
|
|
1277
|
+
* const actual = await Effect.runPromise(Effect.provide(program, TestClock.layer()))
|
|
1278
|
+
* actual // => [true, false]
|
|
1368
1279
|
* ```
|
|
1369
1280
|
*
|
|
1370
1281
|
* **Example** (Enforcing capacity when setting values)
|
|
1371
1282
|
*
|
|
1372
|
-
* ```ts
|
|
1283
|
+
* ```ts import.meta.vitest
|
|
1373
1284
|
* import { Cache, Effect } from "effect"
|
|
1374
1285
|
*
|
|
1375
1286
|
* // Capacity enforcement with set operations
|
|
@@ -1382,14 +1293,18 @@ export const set: {
|
|
|
1382
1293
|
* // Fill cache to capacity
|
|
1383
1294
|
* yield* Cache.set(cache, "a", 1)
|
|
1384
1295
|
* yield* Cache.set(cache, "b", 2)
|
|
1385
|
-
*
|
|
1296
|
+
* const sizeBeforeEviction = yield* Cache.size(cache)
|
|
1386
1297
|
*
|
|
1387
1298
|
* // Adding another entry evicts oldest
|
|
1388
1299
|
* yield* Cache.set(cache, "c", 3)
|
|
1389
|
-
*
|
|
1390
|
-
*
|
|
1391
|
-
*
|
|
1300
|
+
* const sizeAfterEviction = yield* Cache.size(cache)
|
|
1301
|
+
* const hasOldest = yield* Cache.has(cache, "a")
|
|
1302
|
+
* const hasNewest = yield* Cache.has(cache, "c")
|
|
1303
|
+
* return [sizeBeforeEviction, sizeAfterEviction, hasOldest, hasNewest]
|
|
1392
1304
|
* })
|
|
1305
|
+
*
|
|
1306
|
+
* const actual = await Effect.runPromise(program)
|
|
1307
|
+
* actual // => [2, 2, false, true]
|
|
1393
1308
|
* ```
|
|
1394
1309
|
*
|
|
1395
1310
|
* @category combinators
|
|
@@ -1402,7 +1317,7 @@ export const set: {
|
|
|
1402
1317
|
*
|
|
1403
1318
|
* **Example** (Setting values directly)
|
|
1404
1319
|
*
|
|
1405
|
-
* ```ts
|
|
1320
|
+
* ```ts import.meta.vitest
|
|
1406
1321
|
* import { Cache, Effect } from "effect"
|
|
1407
1322
|
*
|
|
1408
1323
|
* const program = Effect.gen(function*() {
|
|
@@ -1413,14 +1328,16 @@ export const set: {
|
|
|
1413
1328
|
*
|
|
1414
1329
|
* // Set a value directly without invoking lookup
|
|
1415
1330
|
* yield* Cache.set(cache, "hello", 42)
|
|
1416
|
-
*
|
|
1417
|
-
* console.log(result) // 42 (not 5 from lookup)
|
|
1331
|
+
* return yield* Cache.get(cache, "hello")
|
|
1418
1332
|
* })
|
|
1333
|
+
*
|
|
1334
|
+
* const actual = await Effect.runPromise(program)
|
|
1335
|
+
* actual // => 42
|
|
1419
1336
|
* ```
|
|
1420
1337
|
*
|
|
1421
1338
|
* **Example** (Overwriting cached values)
|
|
1422
1339
|
*
|
|
1423
|
-
* ```ts
|
|
1340
|
+
* ```ts import.meta.vitest
|
|
1424
1341
|
* import { Cache, Effect } from "effect"
|
|
1425
1342
|
*
|
|
1426
1343
|
* // Overwriting existing cached values
|
|
@@ -1437,13 +1354,16 @@ export const set: {
|
|
|
1437
1354
|
* yield* Cache.set(cache, "test", 999)
|
|
1438
1355
|
* const updated = yield* Cache.get(cache, "test") // 999
|
|
1439
1356
|
*
|
|
1440
|
-
*
|
|
1357
|
+
* return { original, updated }
|
|
1441
1358
|
* })
|
|
1359
|
+
*
|
|
1360
|
+
* const actual = await Effect.runPromise(program)
|
|
1361
|
+
* actual // => { original: 4, updated: 999 }
|
|
1442
1362
|
* ```
|
|
1443
1363
|
*
|
|
1444
1364
|
* **Example** (Applying TTL to set values)
|
|
1445
1365
|
*
|
|
1446
|
-
* ```ts
|
|
1366
|
+
* ```ts import.meta.vitest
|
|
1447
1367
|
* import { Cache, Effect } from "effect"
|
|
1448
1368
|
* import { TestClock } from "effect/testing"
|
|
1449
1369
|
*
|
|
@@ -1457,17 +1377,21 @@ export const set: {
|
|
|
1457
1377
|
*
|
|
1458
1378
|
* // Set value with TTL applied
|
|
1459
1379
|
* yield* Cache.set(cache, "temporary", 123)
|
|
1460
|
-
*
|
|
1380
|
+
* const beforeExpiry = yield* Cache.has(cache, "temporary")
|
|
1461
1381
|
*
|
|
1462
1382
|
* // Advance time past TTL
|
|
1463
1383
|
* yield* TestClock.adjust("2 hours")
|
|
1464
|
-
*
|
|
1384
|
+
* const afterExpiry = yield* Cache.has(cache, "temporary")
|
|
1385
|
+
* return [beforeExpiry, afterExpiry]
|
|
1465
1386
|
* })
|
|
1387
|
+
*
|
|
1388
|
+
* const actual = await Effect.runPromise(Effect.provide(program, TestClock.layer()))
|
|
1389
|
+
* actual // => [true, false]
|
|
1466
1390
|
* ```
|
|
1467
1391
|
*
|
|
1468
1392
|
* **Example** (Enforcing capacity when setting values)
|
|
1469
1393
|
*
|
|
1470
|
-
* ```ts
|
|
1394
|
+
* ```ts import.meta.vitest
|
|
1471
1395
|
* import { Cache, Effect } from "effect"
|
|
1472
1396
|
*
|
|
1473
1397
|
* // Capacity enforcement with set operations
|
|
@@ -1480,14 +1404,18 @@ export const set: {
|
|
|
1480
1404
|
* // Fill cache to capacity
|
|
1481
1405
|
* yield* Cache.set(cache, "a", 1)
|
|
1482
1406
|
* yield* Cache.set(cache, "b", 2)
|
|
1483
|
-
*
|
|
1407
|
+
* const sizeBeforeEviction = yield* Cache.size(cache)
|
|
1484
1408
|
*
|
|
1485
1409
|
* // Adding another entry evicts oldest
|
|
1486
1410
|
* yield* Cache.set(cache, "c", 3)
|
|
1487
|
-
*
|
|
1488
|
-
*
|
|
1489
|
-
*
|
|
1411
|
+
* const sizeAfterEviction = yield* Cache.size(cache)
|
|
1412
|
+
* const hasOldest = yield* Cache.has(cache, "a")
|
|
1413
|
+
* const hasNewest = yield* Cache.has(cache, "c")
|
|
1414
|
+
* return [sizeBeforeEviction, sizeAfterEviction, hasOldest, hasNewest]
|
|
1490
1415
|
* })
|
|
1416
|
+
*
|
|
1417
|
+
* const actual = await Effect.runPromise(program)
|
|
1418
|
+
* actual // => [2, 2, false, true]
|
|
1491
1419
|
* ```
|
|
1492
1420
|
*
|
|
1493
1421
|
* @category combinators
|
|
@@ -1499,213 +1427,16 @@ export const set: {
|
|
|
1499
1427
|
<Key, A, E, R>(self: Cache<Key, A, E, R>, key: Key, value: A): Effect.Effect<void> =>
|
|
1500
1428
|
core.withFiber((fiber) => {
|
|
1501
1429
|
const exit = core.exitSucceed(value)
|
|
1502
|
-
const
|
|
1503
|
-
* Sets the value associated with the specified key in the cache. This will
|
|
1504
|
-
* overwrite any existing value for that key, skipping the lookup function.
|
|
1505
|
-
*
|
|
1506
|
-
* **Example** (Setting values directly)
|
|
1507
|
-
*
|
|
1508
|
-
* ```ts
|
|
1509
|
-
* import { Cache, Effect } from "effect"
|
|
1510
|
-
*
|
|
1511
|
-
* const program = Effect.gen(function*() {
|
|
1512
|
-
* const cache = yield* Cache.make({
|
|
1513
|
-
* capacity: 100,
|
|
1514
|
-
* lookup: (key: string) => Effect.succeed(key.length)
|
|
1515
|
-
* })
|
|
1516
|
-
*
|
|
1517
|
-
* // Set a value directly without invoking lookup
|
|
1518
|
-
* yield* Cache.set(cache, "hello", 42)
|
|
1519
|
-
* const result = yield* Cache.get(cache, "hello")
|
|
1520
|
-
* console.log(result) // 42 (not 5 from lookup)
|
|
1521
|
-
* })
|
|
1522
|
-
* ```
|
|
1523
|
-
*
|
|
1524
|
-
* **Example** (Overwriting cached values)
|
|
1525
|
-
*
|
|
1526
|
-
* ```ts
|
|
1527
|
-
* import { Cache, Effect } from "effect"
|
|
1528
|
-
*
|
|
1529
|
-
* // Overwriting existing cached values
|
|
1530
|
-
* const program = Effect.gen(function*() {
|
|
1531
|
-
* const cache = yield* Cache.make({
|
|
1532
|
-
* capacity: 100,
|
|
1533
|
-
* lookup: (key: string) => Effect.succeed(key.length)
|
|
1534
|
-
* })
|
|
1535
|
-
*
|
|
1536
|
-
* // First get populates via lookup
|
|
1537
|
-
* const original = yield* Cache.get(cache, "test") // 4
|
|
1538
|
-
*
|
|
1539
|
-
* // Set overwrites the cached value
|
|
1540
|
-
* yield* Cache.set(cache, "test", 999)
|
|
1541
|
-
* const updated = yield* Cache.get(cache, "test") // 999
|
|
1542
|
-
*
|
|
1543
|
-
* console.log({ original, updated })
|
|
1544
|
-
* })
|
|
1545
|
-
* ```
|
|
1546
|
-
*
|
|
1547
|
-
* **Example** (Applying TTL to set values)
|
|
1548
|
-
*
|
|
1549
|
-
* ```ts
|
|
1550
|
-
* import { Cache, Effect } from "effect"
|
|
1551
|
-
* import { TestClock } from "effect/testing"
|
|
1552
|
-
*
|
|
1553
|
-
* // TTL behavior with set operations
|
|
1554
|
-
* const program = Effect.gen(function*() {
|
|
1555
|
-
* const cache = yield* Cache.make({
|
|
1556
|
-
* capacity: 100,
|
|
1557
|
-
* lookup: (key: string) => Effect.succeed(key.length),
|
|
1558
|
-
* timeToLive: "1 hour"
|
|
1559
|
-
* })
|
|
1560
|
-
*
|
|
1561
|
-
* // Set value with TTL applied
|
|
1562
|
-
* yield* Cache.set(cache, "temporary", 123)
|
|
1563
|
-
* console.log(yield* Cache.has(cache, "temporary")) // true
|
|
1564
|
-
*
|
|
1565
|
-
* // Advance time past TTL
|
|
1566
|
-
* yield* TestClock.adjust("2 hours")
|
|
1567
|
-
* console.log(yield* Cache.has(cache, "temporary")) // false
|
|
1568
|
-
* })
|
|
1569
|
-
* ```
|
|
1570
|
-
*
|
|
1571
|
-
* **Example** (Enforcing capacity when setting values)
|
|
1572
|
-
*
|
|
1573
|
-
* ```ts
|
|
1574
|
-
* import { Cache, Effect } from "effect"
|
|
1575
|
-
*
|
|
1576
|
-
* // Capacity enforcement with set operations
|
|
1577
|
-
* const program = Effect.gen(function*() {
|
|
1578
|
-
* const cache = yield* Cache.make({
|
|
1579
|
-
* capacity: 2,
|
|
1580
|
-
* lookup: (key: string) => Effect.succeed(key.length)
|
|
1581
|
-
* })
|
|
1582
|
-
*
|
|
1583
|
-
* // Fill cache to capacity
|
|
1584
|
-
* yield* Cache.set(cache, "a", 1)
|
|
1585
|
-
* yield* Cache.set(cache, "b", 2)
|
|
1586
|
-
* console.log(yield* Cache.size(cache)) // 2
|
|
1587
|
-
*
|
|
1588
|
-
* // Adding another entry evicts oldest
|
|
1589
|
-
* yield* Cache.set(cache, "c", 3)
|
|
1590
|
-
* console.log(yield* Cache.size(cache)) // 2
|
|
1591
|
-
* console.log(yield* Cache.has(cache, "a")) // false (evicted)
|
|
1592
|
-
* console.log(yield* Cache.has(cache, "c")) // true
|
|
1593
|
-
* })
|
|
1594
|
-
* ```
|
|
1595
|
-
*
|
|
1596
|
-
* @category combinators
|
|
1597
|
-
* @since 4.0.0
|
|
1598
|
-
*/
|
|
1599
|
-
A, /**
|
|
1600
|
-
* Sets the value associated with the specified key in the cache. This will
|
|
1601
|
-
* overwrite any existing value for that key, skipping the lookup function.
|
|
1602
|
-
*
|
|
1603
|
-
* **Example** (Setting values directly)
|
|
1604
|
-
*
|
|
1605
|
-
* ```ts
|
|
1606
|
-
* import { Cache, Effect } from "effect"
|
|
1607
|
-
*
|
|
1608
|
-
* const program = Effect.gen(function*() {
|
|
1609
|
-
* const cache = yield* Cache.make({
|
|
1610
|
-
* capacity: 100,
|
|
1611
|
-
* lookup: (key: string) => Effect.succeed(key.length)
|
|
1612
|
-
* })
|
|
1613
|
-
*
|
|
1614
|
-
* // Set a value directly without invoking lookup
|
|
1615
|
-
* yield* Cache.set(cache, "hello", 42)
|
|
1616
|
-
* const result = yield* Cache.get(cache, "hello")
|
|
1617
|
-
* console.log(result) // 42 (not 5 from lookup)
|
|
1618
|
-
* })
|
|
1619
|
-
* ```
|
|
1620
|
-
*
|
|
1621
|
-
* **Example** (Overwriting cached values)
|
|
1622
|
-
*
|
|
1623
|
-
* ```ts
|
|
1624
|
-
* import { Cache, Effect } from "effect"
|
|
1625
|
-
*
|
|
1626
|
-
* // Overwriting existing cached values
|
|
1627
|
-
* const program = Effect.gen(function*() {
|
|
1628
|
-
* const cache = yield* Cache.make({
|
|
1629
|
-
* capacity: 100,
|
|
1630
|
-
* lookup: (key: string) => Effect.succeed(key.length)
|
|
1631
|
-
* })
|
|
1632
|
-
*
|
|
1633
|
-
* // First get populates via lookup
|
|
1634
|
-
* const original = yield* Cache.get(cache, "test") // 4
|
|
1635
|
-
*
|
|
1636
|
-
* // Set overwrites the cached value
|
|
1637
|
-
* yield* Cache.set(cache, "test", 999)
|
|
1638
|
-
* const updated = yield* Cache.get(cache, "test") // 999
|
|
1639
|
-
*
|
|
1640
|
-
* console.log({ original, updated })
|
|
1641
|
-
* })
|
|
1642
|
-
* ```
|
|
1643
|
-
*
|
|
1644
|
-
* **Example** (Applying TTL to set values)
|
|
1645
|
-
*
|
|
1646
|
-
* ```ts
|
|
1647
|
-
* import { Cache, Effect } from "effect"
|
|
1648
|
-
* import { TestClock } from "effect/testing"
|
|
1649
|
-
*
|
|
1650
|
-
* // TTL behavior with set operations
|
|
1651
|
-
* const program = Effect.gen(function*() {
|
|
1652
|
-
* const cache = yield* Cache.make({
|
|
1653
|
-
* capacity: 100,
|
|
1654
|
-
* lookup: (key: string) => Effect.succeed(key.length),
|
|
1655
|
-
* timeToLive: "1 hour"
|
|
1656
|
-
* })
|
|
1657
|
-
*
|
|
1658
|
-
* // Set value with TTL applied
|
|
1659
|
-
* yield* Cache.set(cache, "temporary", 123)
|
|
1660
|
-
* console.log(yield* Cache.has(cache, "temporary")) // true
|
|
1661
|
-
*
|
|
1662
|
-
* // Advance time past TTL
|
|
1663
|
-
* yield* TestClock.adjust("2 hours")
|
|
1664
|
-
* console.log(yield* Cache.has(cache, "temporary")) // false
|
|
1665
|
-
* })
|
|
1666
|
-
* ```
|
|
1667
|
-
*
|
|
1668
|
-
* **Example** (Enforcing capacity when setting values)
|
|
1669
|
-
*
|
|
1670
|
-
* ```ts
|
|
1671
|
-
* import { Cache, Effect } from "effect"
|
|
1672
|
-
*
|
|
1673
|
-
* // Capacity enforcement with set operations
|
|
1674
|
-
* const program = Effect.gen(function*() {
|
|
1675
|
-
* const cache = yield* Cache.make({
|
|
1676
|
-
* capacity: 2,
|
|
1677
|
-
* lookup: (key: string) => Effect.succeed(key.length)
|
|
1678
|
-
* })
|
|
1679
|
-
*
|
|
1680
|
-
* // Fill cache to capacity
|
|
1681
|
-
* yield* Cache.set(cache, "a", 1)
|
|
1682
|
-
* yield* Cache.set(cache, "b", 2)
|
|
1683
|
-
* console.log(yield* Cache.size(cache)) // 2
|
|
1684
|
-
*
|
|
1685
|
-
* // Adding another entry evicts oldest
|
|
1686
|
-
* yield* Cache.set(cache, "c", 3)
|
|
1687
|
-
* console.log(yield* Cache.size(cache)) // 2
|
|
1688
|
-
* console.log(yield* Cache.has(cache, "a")) // false (evicted)
|
|
1689
|
-
* console.log(yield* Cache.has(cache, "c")) // true
|
|
1690
|
-
* })
|
|
1691
|
-
* ```
|
|
1692
|
-
*
|
|
1693
|
-
* @category combinators
|
|
1694
|
-
* @since 4.0.0
|
|
1695
|
-
*/
|
|
1696
|
-
E>()
|
|
1697
|
-
Deferred.doneUnsafe(deferred, exit)
|
|
1430
|
+
const entry = new EntryImpl(fiber, exit)
|
|
1698
1431
|
const ttl = self.timeToLive(exit, key)
|
|
1699
1432
|
if (Duration.isZero(ttl)) {
|
|
1700
1433
|
MutableHashMap.remove(self.map, key)
|
|
1701
1434
|
return effect.void
|
|
1702
1435
|
}
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
: undefined
|
|
1708
|
-
})
|
|
1436
|
+
entry.expiresAt = Duration.isFinite(ttl)
|
|
1437
|
+
? fiber.getRef(effect.ClockRef).currentTimeMillisUnsafe() + Duration.toMillis(ttl)
|
|
1438
|
+
: undefined
|
|
1439
|
+
MutableHashMap.set(self.map, key, entry)
|
|
1709
1440
|
checkCapacity(self)
|
|
1710
1441
|
return effect.void
|
|
1711
1442
|
})
|
|
@@ -1721,7 +1452,7 @@ export const set: {
|
|
|
1721
1452
|
*
|
|
1722
1453
|
* **Example** (Checking for cached keys)
|
|
1723
1454
|
*
|
|
1724
|
-
* ```ts
|
|
1455
|
+
* ```ts import.meta.vitest
|
|
1725
1456
|
* import { Cache, Effect } from "effect"
|
|
1726
1457
|
*
|
|
1727
1458
|
* const program = Effect.gen(function*() {
|
|
@@ -1731,17 +1462,21 @@ export const set: {
|
|
|
1731
1462
|
* })
|
|
1732
1463
|
*
|
|
1733
1464
|
* // Check non-existent key
|
|
1734
|
-
*
|
|
1465
|
+
* const missing = yield* Cache.has(cache, "missing")
|
|
1735
1466
|
*
|
|
1736
1467
|
* // Add entry and check existence
|
|
1737
1468
|
* yield* Cache.get(cache, "hello")
|
|
1738
|
-
*
|
|
1469
|
+
* const present = yield* Cache.has(cache, "hello")
|
|
1470
|
+
* return [missing, present]
|
|
1739
1471
|
* })
|
|
1472
|
+
*
|
|
1473
|
+
* const actual = await Effect.runPromise(program)
|
|
1474
|
+
* actual // => [false, true]
|
|
1740
1475
|
* ```
|
|
1741
1476
|
*
|
|
1742
1477
|
* **Example** (Checking TTL expiration)
|
|
1743
1478
|
*
|
|
1744
|
-
* ```ts
|
|
1479
|
+
* ```ts import.meta.vitest
|
|
1745
1480
|
* import { Cache, Effect } from "effect"
|
|
1746
1481
|
* import { TestClock } from "effect/testing"
|
|
1747
1482
|
*
|
|
@@ -1755,21 +1490,25 @@ export const set: {
|
|
|
1755
1490
|
*
|
|
1756
1491
|
* // Add entry with TTL
|
|
1757
1492
|
* yield* Cache.get(cache, "expires")
|
|
1758
|
-
*
|
|
1493
|
+
* const initial = yield* Cache.has(cache, "expires")
|
|
1759
1494
|
*
|
|
1760
1495
|
* // Still valid before expiration
|
|
1761
1496
|
* yield* TestClock.adjust("30 minutes")
|
|
1762
|
-
*
|
|
1497
|
+
* const beforeExpiry = yield* Cache.has(cache, "expires")
|
|
1763
1498
|
*
|
|
1764
1499
|
* // Expired after TTL
|
|
1765
1500
|
* yield* TestClock.adjust("31 minutes")
|
|
1766
|
-
*
|
|
1501
|
+
* const afterExpiry = yield* Cache.has(cache, "expires")
|
|
1502
|
+
* return [initial, beforeExpiry, afterExpiry]
|
|
1767
1503
|
* })
|
|
1504
|
+
*
|
|
1505
|
+
* const actual = await Effect.runPromise(Effect.provide(program, TestClock.layer()))
|
|
1506
|
+
* actual // => [true, true, false]
|
|
1768
1507
|
* ```
|
|
1769
1508
|
*
|
|
1770
1509
|
* **Example** (Checking multiple keys)
|
|
1771
1510
|
*
|
|
1772
|
-
* ```ts
|
|
1511
|
+
* ```ts import.meta.vitest
|
|
1773
1512
|
* import { Cache, Effect } from "effect"
|
|
1774
1513
|
*
|
|
1775
1514
|
* // Checking multiple keys efficiently
|
|
@@ -1785,16 +1524,16 @@ export const set: {
|
|
|
1785
1524
|
*
|
|
1786
1525
|
* // Check multiple keys
|
|
1787
1526
|
* const keys = ["apple", "banana", "cherry", "date"]
|
|
1527
|
+
* const results: Array<string> = []
|
|
1788
1528
|
* for (const key of keys) {
|
|
1789
1529
|
* const exists = yield* Cache.has(cache, key)
|
|
1790
|
-
*
|
|
1530
|
+
* results.push(`${key}: ${exists}`)
|
|
1791
1531
|
* }
|
|
1792
|
-
*
|
|
1793
|
-
* // apple: true
|
|
1794
|
-
* // banana: true
|
|
1795
|
-
* // cherry: false
|
|
1796
|
-
* // date: false
|
|
1532
|
+
* return results
|
|
1797
1533
|
* })
|
|
1534
|
+
*
|
|
1535
|
+
* const actual = await Effect.runPromise(program)
|
|
1536
|
+
* actual // => ["apple: true", "banana: true", "cherry: false", "date: false"]
|
|
1798
1537
|
* ```
|
|
1799
1538
|
*
|
|
1800
1539
|
* @category combinators
|
|
@@ -1811,7 +1550,7 @@ export const has: {
|
|
|
1811
1550
|
*
|
|
1812
1551
|
* **Example** (Checking for cached keys)
|
|
1813
1552
|
*
|
|
1814
|
-
* ```ts
|
|
1553
|
+
* ```ts import.meta.vitest
|
|
1815
1554
|
* import { Cache, Effect } from "effect"
|
|
1816
1555
|
*
|
|
1817
1556
|
* const program = Effect.gen(function*() {
|
|
@@ -1821,17 +1560,21 @@ export const has: {
|
|
|
1821
1560
|
* })
|
|
1822
1561
|
*
|
|
1823
1562
|
* // Check non-existent key
|
|
1824
|
-
*
|
|
1563
|
+
* const missing = yield* Cache.has(cache, "missing")
|
|
1825
1564
|
*
|
|
1826
1565
|
* // Add entry and check existence
|
|
1827
1566
|
* yield* Cache.get(cache, "hello")
|
|
1828
|
-
*
|
|
1567
|
+
* const present = yield* Cache.has(cache, "hello")
|
|
1568
|
+
* return [missing, present]
|
|
1829
1569
|
* })
|
|
1570
|
+
*
|
|
1571
|
+
* const actual = await Effect.runPromise(program)
|
|
1572
|
+
* actual // => [false, true]
|
|
1830
1573
|
* ```
|
|
1831
1574
|
*
|
|
1832
1575
|
* **Example** (Checking TTL expiration)
|
|
1833
1576
|
*
|
|
1834
|
-
* ```ts
|
|
1577
|
+
* ```ts import.meta.vitest
|
|
1835
1578
|
* import { Cache, Effect } from "effect"
|
|
1836
1579
|
* import { TestClock } from "effect/testing"
|
|
1837
1580
|
*
|
|
@@ -1845,21 +1588,25 @@ export const has: {
|
|
|
1845
1588
|
*
|
|
1846
1589
|
* // Add entry with TTL
|
|
1847
1590
|
* yield* Cache.get(cache, "expires")
|
|
1848
|
-
*
|
|
1591
|
+
* const initial = yield* Cache.has(cache, "expires")
|
|
1849
1592
|
*
|
|
1850
1593
|
* // Still valid before expiration
|
|
1851
1594
|
* yield* TestClock.adjust("30 minutes")
|
|
1852
|
-
*
|
|
1595
|
+
* const beforeExpiry = yield* Cache.has(cache, "expires")
|
|
1853
1596
|
*
|
|
1854
1597
|
* // Expired after TTL
|
|
1855
1598
|
* yield* TestClock.adjust("31 minutes")
|
|
1856
|
-
*
|
|
1599
|
+
* const afterExpiry = yield* Cache.has(cache, "expires")
|
|
1600
|
+
* return [initial, beforeExpiry, afterExpiry]
|
|
1857
1601
|
* })
|
|
1602
|
+
*
|
|
1603
|
+
* const actual = await Effect.runPromise(Effect.provide(program, TestClock.layer()))
|
|
1604
|
+
* actual // => [true, true, false]
|
|
1858
1605
|
* ```
|
|
1859
1606
|
*
|
|
1860
1607
|
* **Example** (Checking multiple keys)
|
|
1861
1608
|
*
|
|
1862
|
-
* ```ts
|
|
1609
|
+
* ```ts import.meta.vitest
|
|
1863
1610
|
* import { Cache, Effect } from "effect"
|
|
1864
1611
|
*
|
|
1865
1612
|
* // Checking multiple keys efficiently
|
|
@@ -1875,16 +1622,16 @@ export const has: {
|
|
|
1875
1622
|
*
|
|
1876
1623
|
* // Check multiple keys
|
|
1877
1624
|
* const keys = ["apple", "banana", "cherry", "date"]
|
|
1625
|
+
* const results: Array<string> = []
|
|
1878
1626
|
* for (const key of keys) {
|
|
1879
1627
|
* const exists = yield* Cache.has(cache, key)
|
|
1880
|
-
*
|
|
1628
|
+
* results.push(`${key}: ${exists}`)
|
|
1881
1629
|
* }
|
|
1882
|
-
*
|
|
1883
|
-
* // apple: true
|
|
1884
|
-
* // banana: true
|
|
1885
|
-
* // cherry: false
|
|
1886
|
-
* // date: false
|
|
1630
|
+
* return results
|
|
1887
1631
|
* })
|
|
1632
|
+
*
|
|
1633
|
+
* const actual = await Effect.runPromise(program)
|
|
1634
|
+
* actual // => ["apple: true", "banana: true", "cherry: false", "date: false"]
|
|
1888
1635
|
* ```
|
|
1889
1636
|
*
|
|
1890
1637
|
* @category combinators
|
|
@@ -1901,7 +1648,7 @@ export const has: {
|
|
|
1901
1648
|
*
|
|
1902
1649
|
* **Example** (Checking for cached keys)
|
|
1903
1650
|
*
|
|
1904
|
-
* ```ts
|
|
1651
|
+
* ```ts import.meta.vitest
|
|
1905
1652
|
* import { Cache, Effect } from "effect"
|
|
1906
1653
|
*
|
|
1907
1654
|
* const program = Effect.gen(function*() {
|
|
@@ -1911,17 +1658,21 @@ export const has: {
|
|
|
1911
1658
|
* })
|
|
1912
1659
|
*
|
|
1913
1660
|
* // Check non-existent key
|
|
1914
|
-
*
|
|
1661
|
+
* const missing = yield* Cache.has(cache, "missing")
|
|
1915
1662
|
*
|
|
1916
1663
|
* // Add entry and check existence
|
|
1917
1664
|
* yield* Cache.get(cache, "hello")
|
|
1918
|
-
*
|
|
1665
|
+
* const present = yield* Cache.has(cache, "hello")
|
|
1666
|
+
* return [missing, present]
|
|
1919
1667
|
* })
|
|
1668
|
+
*
|
|
1669
|
+
* const actual = await Effect.runPromise(program)
|
|
1670
|
+
* actual // => [false, true]
|
|
1920
1671
|
* ```
|
|
1921
1672
|
*
|
|
1922
1673
|
* **Example** (Checking TTL expiration)
|
|
1923
1674
|
*
|
|
1924
|
-
* ```ts
|
|
1675
|
+
* ```ts import.meta.vitest
|
|
1925
1676
|
* import { Cache, Effect } from "effect"
|
|
1926
1677
|
* import { TestClock } from "effect/testing"
|
|
1927
1678
|
*
|
|
@@ -1935,21 +1686,25 @@ export const has: {
|
|
|
1935
1686
|
*
|
|
1936
1687
|
* // Add entry with TTL
|
|
1937
1688
|
* yield* Cache.get(cache, "expires")
|
|
1938
|
-
*
|
|
1689
|
+
* const initial = yield* Cache.has(cache, "expires")
|
|
1939
1690
|
*
|
|
1940
1691
|
* // Still valid before expiration
|
|
1941
1692
|
* yield* TestClock.adjust("30 minutes")
|
|
1942
|
-
*
|
|
1693
|
+
* const beforeExpiry = yield* Cache.has(cache, "expires")
|
|
1943
1694
|
*
|
|
1944
1695
|
* // Expired after TTL
|
|
1945
1696
|
* yield* TestClock.adjust("31 minutes")
|
|
1946
|
-
*
|
|
1697
|
+
* const afterExpiry = yield* Cache.has(cache, "expires")
|
|
1698
|
+
* return [initial, beforeExpiry, afterExpiry]
|
|
1947
1699
|
* })
|
|
1700
|
+
*
|
|
1701
|
+
* const actual = await Effect.runPromise(Effect.provide(program, TestClock.layer()))
|
|
1702
|
+
* actual // => [true, true, false]
|
|
1948
1703
|
* ```
|
|
1949
1704
|
*
|
|
1950
1705
|
* **Example** (Checking multiple keys)
|
|
1951
1706
|
*
|
|
1952
|
-
* ```ts
|
|
1707
|
+
* ```ts import.meta.vitest
|
|
1953
1708
|
* import { Cache, Effect } from "effect"
|
|
1954
1709
|
*
|
|
1955
1710
|
* // Checking multiple keys efficiently
|
|
@@ -1965,16 +1720,16 @@ export const has: {
|
|
|
1965
1720
|
*
|
|
1966
1721
|
* // Check multiple keys
|
|
1967
1722
|
* const keys = ["apple", "banana", "cherry", "date"]
|
|
1723
|
+
* const results: Array<string> = []
|
|
1968
1724
|
* for (const key of keys) {
|
|
1969
1725
|
* const exists = yield* Cache.has(cache, key)
|
|
1970
|
-
*
|
|
1726
|
+
* results.push(`${key}: ${exists}`)
|
|
1971
1727
|
* }
|
|
1972
|
-
*
|
|
1973
|
-
* // apple: true
|
|
1974
|
-
* // banana: true
|
|
1975
|
-
* // cherry: false
|
|
1976
|
-
* // date: false
|
|
1728
|
+
* return results
|
|
1977
1729
|
* })
|
|
1730
|
+
*
|
|
1731
|
+
* const actual = await Effect.runPromise(program)
|
|
1732
|
+
* actual // => ["apple: true", "banana: true", "cherry: false", "date: false"]
|
|
1978
1733
|
* ```
|
|
1979
1734
|
*
|
|
1980
1735
|
* @category combinators
|
|
@@ -1995,7 +1750,7 @@ export const has: {
|
|
|
1995
1750
|
*
|
|
1996
1751
|
* **Example** (Invalidating cached entries)
|
|
1997
1752
|
*
|
|
1998
|
-
* ```ts
|
|
1753
|
+
* ```ts import.meta.vitest
|
|
1999
1754
|
* import { Cache, Effect } from "effect"
|
|
2000
1755
|
*
|
|
2001
1756
|
* const program = Effect.gen(function*() {
|
|
@@ -2006,11 +1761,11 @@ export const has: {
|
|
|
2006
1761
|
*
|
|
2007
1762
|
* // Add a value to the cache
|
|
2008
1763
|
* yield* Cache.get(cache, "hello")
|
|
2009
|
-
*
|
|
1764
|
+
* const beforeInvalidation = yield* Cache.has(cache, "hello")
|
|
2010
1765
|
*
|
|
2011
1766
|
* // Invalidate the entry
|
|
2012
1767
|
* yield* Cache.invalidate(cache, "hello")
|
|
2013
|
-
*
|
|
1768
|
+
* const afterInvalidation = yield* Cache.has(cache, "hello")
|
|
2014
1769
|
*
|
|
2015
1770
|
* // Invalidating non-existent keys doesn't error
|
|
2016
1771
|
* yield* Cache.invalidate(cache, "nonexistent")
|
|
@@ -2029,7 +1784,11 @@ export const has: {
|
|
|
2029
1784
|
* yield* Cache.get(cache2, "test") // lookupCount = 1
|
|
2030
1785
|
* yield* Cache.invalidate(cache2, "test")
|
|
2031
1786
|
* yield* Cache.get(cache2, "test") // lookupCount = 2 (lookup called again)
|
|
1787
|
+
* return { beforeInvalidation, afterInvalidation, lookupCount }
|
|
2032
1788
|
* })
|
|
1789
|
+
*
|
|
1790
|
+
* const actual = await Effect.runPromise(program)
|
|
1791
|
+
* actual // => { beforeInvalidation: true, afterInvalidation: false, lookupCount: 2 }
|
|
2033
1792
|
* ```
|
|
2034
1793
|
*
|
|
2035
1794
|
* @category combinators
|
|
@@ -2041,7 +1800,7 @@ export const invalidate: {
|
|
|
2041
1800
|
*
|
|
2042
1801
|
* **Example** (Invalidating cached entries)
|
|
2043
1802
|
*
|
|
2044
|
-
* ```ts
|
|
1803
|
+
* ```ts import.meta.vitest
|
|
2045
1804
|
* import { Cache, Effect } from "effect"
|
|
2046
1805
|
*
|
|
2047
1806
|
* const program = Effect.gen(function*() {
|
|
@@ -2052,11 +1811,11 @@ export const invalidate: {
|
|
|
2052
1811
|
*
|
|
2053
1812
|
* // Add a value to the cache
|
|
2054
1813
|
* yield* Cache.get(cache, "hello")
|
|
2055
|
-
*
|
|
1814
|
+
* const beforeInvalidation = yield* Cache.has(cache, "hello")
|
|
2056
1815
|
*
|
|
2057
1816
|
* // Invalidate the entry
|
|
2058
1817
|
* yield* Cache.invalidate(cache, "hello")
|
|
2059
|
-
*
|
|
1818
|
+
* const afterInvalidation = yield* Cache.has(cache, "hello")
|
|
2060
1819
|
*
|
|
2061
1820
|
* // Invalidating non-existent keys doesn't error
|
|
2062
1821
|
* yield* Cache.invalidate(cache, "nonexistent")
|
|
@@ -2075,7 +1834,11 @@ export const invalidate: {
|
|
|
2075
1834
|
* yield* Cache.get(cache2, "test") // lookupCount = 1
|
|
2076
1835
|
* yield* Cache.invalidate(cache2, "test")
|
|
2077
1836
|
* yield* Cache.get(cache2, "test") // lookupCount = 2 (lookup called again)
|
|
1837
|
+
* return { beforeInvalidation, afterInvalidation, lookupCount }
|
|
2078
1838
|
* })
|
|
1839
|
+
*
|
|
1840
|
+
* const actual = await Effect.runPromise(program)
|
|
1841
|
+
* actual // => { beforeInvalidation: true, afterInvalidation: false, lookupCount: 2 }
|
|
2079
1842
|
* ```
|
|
2080
1843
|
*
|
|
2081
1844
|
* @category combinators
|
|
@@ -2087,7 +1850,7 @@ export const invalidate: {
|
|
|
2087
1850
|
*
|
|
2088
1851
|
* **Example** (Invalidating cached entries)
|
|
2089
1852
|
*
|
|
2090
|
-
* ```ts
|
|
1853
|
+
* ```ts import.meta.vitest
|
|
2091
1854
|
* import { Cache, Effect } from "effect"
|
|
2092
1855
|
*
|
|
2093
1856
|
* const program = Effect.gen(function*() {
|
|
@@ -2098,11 +1861,11 @@ export const invalidate: {
|
|
|
2098
1861
|
*
|
|
2099
1862
|
* // Add a value to the cache
|
|
2100
1863
|
* yield* Cache.get(cache, "hello")
|
|
2101
|
-
*
|
|
1864
|
+
* const beforeInvalidation = yield* Cache.has(cache, "hello")
|
|
2102
1865
|
*
|
|
2103
1866
|
* // Invalidate the entry
|
|
2104
1867
|
* yield* Cache.invalidate(cache, "hello")
|
|
2105
|
-
*
|
|
1868
|
+
* const afterInvalidation = yield* Cache.has(cache, "hello")
|
|
2106
1869
|
*
|
|
2107
1870
|
* // Invalidating non-existent keys doesn't error
|
|
2108
1871
|
* yield* Cache.invalidate(cache, "nonexistent")
|
|
@@ -2121,7 +1884,11 @@ export const invalidate: {
|
|
|
2121
1884
|
* yield* Cache.get(cache2, "test") // lookupCount = 1
|
|
2122
1885
|
* yield* Cache.invalidate(cache2, "test")
|
|
2123
1886
|
* yield* Cache.get(cache2, "test") // lookupCount = 2 (lookup called again)
|
|
1887
|
+
* return { beforeInvalidation, afterInvalidation, lookupCount }
|
|
2124
1888
|
* })
|
|
1889
|
+
*
|
|
1890
|
+
* const actual = await Effect.runPromise(program)
|
|
1891
|
+
* actual // => { beforeInvalidation: true, afterInvalidation: false, lookupCount: 2 }
|
|
2125
1892
|
* ```
|
|
2126
1893
|
*
|
|
2127
1894
|
* @category combinators
|
|
@@ -2139,7 +1906,7 @@ export const invalidate: {
|
|
|
2139
1906
|
*
|
|
2140
1907
|
* **Example** (Invalidating entries conditionally)
|
|
2141
1908
|
*
|
|
2142
|
-
* ```ts
|
|
1909
|
+
* ```ts import.meta.vitest
|
|
2143
1910
|
* import { Cache, Effect } from "effect"
|
|
2144
1911
|
*
|
|
2145
1912
|
* const program = Effect.gen(function*() {
|
|
@@ -2158,8 +1925,7 @@ export const invalidate: {
|
|
|
2158
1925
|
* "hello",
|
|
2159
1926
|
* (value) => value === 5
|
|
2160
1927
|
* )
|
|
2161
|
-
*
|
|
2162
|
-
* console.log(yield* Cache.has(cache, "hello")) // false
|
|
1928
|
+
* const hasHello = yield* Cache.has(cache, "hello")
|
|
2163
1929
|
*
|
|
2164
1930
|
* // Don't invalidate when predicate doesn't match
|
|
2165
1931
|
* const invalidated2 = yield* Cache.invalidateWhen(
|
|
@@ -2167,8 +1933,7 @@ export const invalidate: {
|
|
|
2167
1933
|
* "hi",
|
|
2168
1934
|
* (value) => value === 5
|
|
2169
1935
|
* )
|
|
2170
|
-
*
|
|
2171
|
-
* console.log(yield* Cache.has(cache, "hi")) // true (still present)
|
|
1936
|
+
* const hasHi = yield* Cache.has(cache, "hi")
|
|
2172
1937
|
*
|
|
2173
1938
|
* // Returns false for non-existent keys
|
|
2174
1939
|
* const invalidated3 = yield* Cache.invalidateWhen(
|
|
@@ -2176,7 +1941,6 @@ export const invalidate: {
|
|
|
2176
1941
|
* "nonexistent",
|
|
2177
1942
|
* () => true
|
|
2178
1943
|
* )
|
|
2179
|
-
* console.log(invalidated3) // false
|
|
2180
1944
|
*
|
|
2181
1945
|
* // Returns false for failed cached values
|
|
2182
1946
|
* const cacheWithErrors = yield* Cache.make<string, number, string>({
|
|
@@ -2191,8 +1955,11 @@ export const invalidate: {
|
|
|
2191
1955
|
* "fail",
|
|
2192
1956
|
* () => true
|
|
2193
1957
|
* )
|
|
2194
|
-
*
|
|
1958
|
+
* return [invalidated1, hasHello, invalidated2, hasHi, invalidated3, invalidated4]
|
|
2195
1959
|
* })
|
|
1960
|
+
*
|
|
1961
|
+
* const actual = await Effect.runPromise(program)
|
|
1962
|
+
* actual // => [true, false, false, true, false, false]
|
|
2196
1963
|
* ```
|
|
2197
1964
|
*
|
|
2198
1965
|
* @category combinators
|
|
@@ -2205,7 +1972,7 @@ export const invalidateWhen: {
|
|
|
2205
1972
|
*
|
|
2206
1973
|
* **Example** (Invalidating entries conditionally)
|
|
2207
1974
|
*
|
|
2208
|
-
* ```ts
|
|
1975
|
+
* ```ts import.meta.vitest
|
|
2209
1976
|
* import { Cache, Effect } from "effect"
|
|
2210
1977
|
*
|
|
2211
1978
|
* const program = Effect.gen(function*() {
|
|
@@ -2224,8 +1991,7 @@ export const invalidateWhen: {
|
|
|
2224
1991
|
* "hello",
|
|
2225
1992
|
* (value) => value === 5
|
|
2226
1993
|
* )
|
|
2227
|
-
*
|
|
2228
|
-
* console.log(yield* Cache.has(cache, "hello")) // false
|
|
1994
|
+
* const hasHello = yield* Cache.has(cache, "hello")
|
|
2229
1995
|
*
|
|
2230
1996
|
* // Don't invalidate when predicate doesn't match
|
|
2231
1997
|
* const invalidated2 = yield* Cache.invalidateWhen(
|
|
@@ -2233,8 +1999,7 @@ export const invalidateWhen: {
|
|
|
2233
1999
|
* "hi",
|
|
2234
2000
|
* (value) => value === 5
|
|
2235
2001
|
* )
|
|
2236
|
-
*
|
|
2237
|
-
* console.log(yield* Cache.has(cache, "hi")) // true (still present)
|
|
2002
|
+
* const hasHi = yield* Cache.has(cache, "hi")
|
|
2238
2003
|
*
|
|
2239
2004
|
* // Returns false for non-existent keys
|
|
2240
2005
|
* const invalidated3 = yield* Cache.invalidateWhen(
|
|
@@ -2242,7 +2007,6 @@ export const invalidateWhen: {
|
|
|
2242
2007
|
* "nonexistent",
|
|
2243
2008
|
* () => true
|
|
2244
2009
|
* )
|
|
2245
|
-
* console.log(invalidated3) // false
|
|
2246
2010
|
*
|
|
2247
2011
|
* // Returns false for failed cached values
|
|
2248
2012
|
* const cacheWithErrors = yield* Cache.make<string, number, string>({
|
|
@@ -2257,8 +2021,11 @@ export const invalidateWhen: {
|
|
|
2257
2021
|
* "fail",
|
|
2258
2022
|
* () => true
|
|
2259
2023
|
* )
|
|
2260
|
-
*
|
|
2024
|
+
* return [invalidated1, hasHello, invalidated2, hasHi, invalidated3, invalidated4]
|
|
2261
2025
|
* })
|
|
2026
|
+
*
|
|
2027
|
+
* const actual = await Effect.runPromise(program)
|
|
2028
|
+
* actual // => [true, false, false, true, false, false]
|
|
2262
2029
|
* ```
|
|
2263
2030
|
*
|
|
2264
2031
|
* @category combinators
|
|
@@ -2271,7 +2038,7 @@ export const invalidateWhen: {
|
|
|
2271
2038
|
*
|
|
2272
2039
|
* **Example** (Invalidating entries conditionally)
|
|
2273
2040
|
*
|
|
2274
|
-
* ```ts
|
|
2041
|
+
* ```ts import.meta.vitest
|
|
2275
2042
|
* import { Cache, Effect } from "effect"
|
|
2276
2043
|
*
|
|
2277
2044
|
* const program = Effect.gen(function*() {
|
|
@@ -2290,8 +2057,7 @@ export const invalidateWhen: {
|
|
|
2290
2057
|
* "hello",
|
|
2291
2058
|
* (value) => value === 5
|
|
2292
2059
|
* )
|
|
2293
|
-
*
|
|
2294
|
-
* console.log(yield* Cache.has(cache, "hello")) // false
|
|
2060
|
+
* const hasHello = yield* Cache.has(cache, "hello")
|
|
2295
2061
|
*
|
|
2296
2062
|
* // Don't invalidate when predicate doesn't match
|
|
2297
2063
|
* const invalidated2 = yield* Cache.invalidateWhen(
|
|
@@ -2299,8 +2065,7 @@ export const invalidateWhen: {
|
|
|
2299
2065
|
* "hi",
|
|
2300
2066
|
* (value) => value === 5
|
|
2301
2067
|
* )
|
|
2302
|
-
*
|
|
2303
|
-
* console.log(yield* Cache.has(cache, "hi")) // true (still present)
|
|
2068
|
+
* const hasHi = yield* Cache.has(cache, "hi")
|
|
2304
2069
|
*
|
|
2305
2070
|
* // Returns false for non-existent keys
|
|
2306
2071
|
* const invalidated3 = yield* Cache.invalidateWhen(
|
|
@@ -2308,7 +2073,6 @@ export const invalidateWhen: {
|
|
|
2308
2073
|
* "nonexistent",
|
|
2309
2074
|
* () => true
|
|
2310
2075
|
* )
|
|
2311
|
-
* console.log(invalidated3) // false
|
|
2312
2076
|
*
|
|
2313
2077
|
* // Returns false for failed cached values
|
|
2314
2078
|
* const cacheWithErrors = yield* Cache.make<string, number, string>({
|
|
@@ -2323,8 +2087,11 @@ export const invalidateWhen: {
|
|
|
2323
2087
|
* "fail",
|
|
2324
2088
|
* () => true
|
|
2325
2089
|
* )
|
|
2326
|
-
*
|
|
2090
|
+
* return [invalidated1, hasHello, invalidated2, hasHi, invalidated3, invalidated4]
|
|
2327
2091
|
* })
|
|
2092
|
+
*
|
|
2093
|
+
* const actual = await Effect.runPromise(program)
|
|
2094
|
+
* actual // => [true, false, false, true, false, false]
|
|
2328
2095
|
* ```
|
|
2329
2096
|
*
|
|
2330
2097
|
* @category combinators
|
|
@@ -2339,7 +2106,7 @@ export const invalidateWhen: {
|
|
|
2339
2106
|
if (oentry === undefined) {
|
|
2340
2107
|
return effect.succeed(false)
|
|
2341
2108
|
}
|
|
2342
|
-
return
|
|
2109
|
+
return oentry.await().pipe(
|
|
2343
2110
|
effect.map((value) => {
|
|
2344
2111
|
if (f(value)) {
|
|
2345
2112
|
MutableHashMap.remove(self.map, key)
|
|
@@ -2362,7 +2129,7 @@ export const invalidateWhen: {
|
|
|
2362
2129
|
*
|
|
2363
2130
|
* **Example** (Refreshing cached values)
|
|
2364
2131
|
*
|
|
2365
|
-
* ```ts
|
|
2132
|
+
* ```ts import.meta.vitest
|
|
2366
2133
|
* import { Cache, Effect } from "effect"
|
|
2367
2134
|
*
|
|
2368
2135
|
* // Force refresh of existing cached values
|
|
@@ -2375,25 +2142,25 @@ export const invalidateWhen: {
|
|
|
2375
2142
|
*
|
|
2376
2143
|
* // Initial cache population
|
|
2377
2144
|
* const value1 = yield* Cache.get(cache, "user")
|
|
2378
|
-
* console.log(value1) // "user-1"
|
|
2379
2145
|
*
|
|
2380
2146
|
* // Get from cache (no lookup)
|
|
2381
2147
|
* const value2 = yield* Cache.get(cache, "user")
|
|
2382
|
-
* console.log(value2) // "user-1" (same value)
|
|
2383
2148
|
*
|
|
2384
2149
|
* // Force refresh - always calls lookup
|
|
2385
2150
|
* const refreshed = yield* Cache.refresh(cache, "user")
|
|
2386
|
-
* console.log(refreshed) // "user-2" (new value)
|
|
2387
2151
|
*
|
|
2388
2152
|
* // Subsequent gets return refreshed value
|
|
2389
2153
|
* const value3 = yield* Cache.get(cache, "user")
|
|
2390
|
-
*
|
|
2154
|
+
* return [value1, value2, refreshed, value3, counter]
|
|
2391
2155
|
* })
|
|
2156
|
+
*
|
|
2157
|
+
* const actual = await Effect.runPromise(program)
|
|
2158
|
+
* actual // => ["user-1", "user-1", "user-2", "user-2", 2]
|
|
2392
2159
|
* ```
|
|
2393
2160
|
*
|
|
2394
2161
|
* **Example** (Resetting TTL on refresh)
|
|
2395
2162
|
*
|
|
2396
|
-
* ```ts
|
|
2163
|
+
* ```ts import.meta.vitest
|
|
2397
2164
|
* import { Cache, Effect } from "effect"
|
|
2398
2165
|
* import { TestClock } from "effect/testing"
|
|
2399
2166
|
*
|
|
@@ -2409,20 +2176,24 @@ export const invalidateWhen: {
|
|
|
2409
2176
|
* yield* TestClock.adjust("45 minutes")
|
|
2410
2177
|
*
|
|
2411
2178
|
* // Entry would normally expire in 15 minutes
|
|
2412
|
-
*
|
|
2179
|
+
* const beforeRefresh = yield* Cache.has(cache, "test")
|
|
2413
2180
|
*
|
|
2414
2181
|
* // Refresh resets the TTL to full 1 hour
|
|
2415
2182
|
* yield* Cache.refresh(cache, "test")
|
|
2416
2183
|
* yield* TestClock.adjust("30 minutes")
|
|
2417
2184
|
*
|
|
2418
2185
|
* // Still valid because TTL was reset
|
|
2419
|
-
*
|
|
2186
|
+
* const afterRefresh = yield* Cache.has(cache, "test")
|
|
2187
|
+
* return [beforeRefresh, afterRefresh]
|
|
2420
2188
|
* })
|
|
2189
|
+
*
|
|
2190
|
+
* const actual = await Effect.runPromise(Effect.provide(program, TestClock.layer()))
|
|
2191
|
+
* actual // => [true, true]
|
|
2421
2192
|
* ```
|
|
2422
2193
|
*
|
|
2423
2194
|
* **Example** (Refreshing missing keys)
|
|
2424
2195
|
*
|
|
2425
|
-
* ```ts
|
|
2196
|
+
* ```ts import.meta.vitest
|
|
2426
2197
|
* import { Cache, Effect } from "effect"
|
|
2427
2198
|
*
|
|
2428
2199
|
* // Refresh non-existent keys
|
|
@@ -2434,11 +2205,14 @@ export const invalidateWhen: {
|
|
|
2434
2205
|
*
|
|
2435
2206
|
* // Refresh non-existent key creates new entry
|
|
2436
2207
|
* const result = yield* Cache.refresh(cache, "newKey")
|
|
2437
|
-
* console.log(result) // "value-for-newKey"
|
|
2438
2208
|
*
|
|
2439
2209
|
* // Verify it's now cached
|
|
2440
|
-
*
|
|
2210
|
+
* const cached = yield* Cache.has(cache, "newKey")
|
|
2211
|
+
* return [result, cached]
|
|
2441
2212
|
* })
|
|
2213
|
+
*
|
|
2214
|
+
* const actual = await Effect.runPromise(program)
|
|
2215
|
+
* actual // => ["value-for-newKey", true]
|
|
2442
2216
|
* ```
|
|
2443
2217
|
*
|
|
2444
2218
|
* @category combinators
|
|
@@ -2455,7 +2229,7 @@ export const refresh: {
|
|
|
2455
2229
|
*
|
|
2456
2230
|
* **Example** (Refreshing cached values)
|
|
2457
2231
|
*
|
|
2458
|
-
* ```ts
|
|
2232
|
+
* ```ts import.meta.vitest
|
|
2459
2233
|
* import { Cache, Effect } from "effect"
|
|
2460
2234
|
*
|
|
2461
2235
|
* // Force refresh of existing cached values
|
|
@@ -2468,25 +2242,25 @@ export const refresh: {
|
|
|
2468
2242
|
*
|
|
2469
2243
|
* // Initial cache population
|
|
2470
2244
|
* const value1 = yield* Cache.get(cache, "user")
|
|
2471
|
-
* console.log(value1) // "user-1"
|
|
2472
2245
|
*
|
|
2473
2246
|
* // Get from cache (no lookup)
|
|
2474
2247
|
* const value2 = yield* Cache.get(cache, "user")
|
|
2475
|
-
* console.log(value2) // "user-1" (same value)
|
|
2476
2248
|
*
|
|
2477
2249
|
* // Force refresh - always calls lookup
|
|
2478
2250
|
* const refreshed = yield* Cache.refresh(cache, "user")
|
|
2479
|
-
* console.log(refreshed) // "user-2" (new value)
|
|
2480
2251
|
*
|
|
2481
2252
|
* // Subsequent gets return refreshed value
|
|
2482
2253
|
* const value3 = yield* Cache.get(cache, "user")
|
|
2483
|
-
*
|
|
2254
|
+
* return [value1, value2, refreshed, value3, counter]
|
|
2484
2255
|
* })
|
|
2256
|
+
*
|
|
2257
|
+
* const actual = await Effect.runPromise(program)
|
|
2258
|
+
* actual // => ["user-1", "user-1", "user-2", "user-2", 2]
|
|
2485
2259
|
* ```
|
|
2486
2260
|
*
|
|
2487
2261
|
* **Example** (Resetting TTL on refresh)
|
|
2488
2262
|
*
|
|
2489
|
-
* ```ts
|
|
2263
|
+
* ```ts import.meta.vitest
|
|
2490
2264
|
* import { Cache, Effect } from "effect"
|
|
2491
2265
|
* import { TestClock } from "effect/testing"
|
|
2492
2266
|
*
|
|
@@ -2502,20 +2276,24 @@ export const refresh: {
|
|
|
2502
2276
|
* yield* TestClock.adjust("45 minutes")
|
|
2503
2277
|
*
|
|
2504
2278
|
* // Entry would normally expire in 15 minutes
|
|
2505
|
-
*
|
|
2279
|
+
* const beforeRefresh = yield* Cache.has(cache, "test")
|
|
2506
2280
|
*
|
|
2507
2281
|
* // Refresh resets the TTL to full 1 hour
|
|
2508
2282
|
* yield* Cache.refresh(cache, "test")
|
|
2509
2283
|
* yield* TestClock.adjust("30 minutes")
|
|
2510
2284
|
*
|
|
2511
2285
|
* // Still valid because TTL was reset
|
|
2512
|
-
*
|
|
2286
|
+
* const afterRefresh = yield* Cache.has(cache, "test")
|
|
2287
|
+
* return [beforeRefresh, afterRefresh]
|
|
2513
2288
|
* })
|
|
2289
|
+
*
|
|
2290
|
+
* const actual = await Effect.runPromise(Effect.provide(program, TestClock.layer()))
|
|
2291
|
+
* actual // => [true, true]
|
|
2514
2292
|
* ```
|
|
2515
2293
|
*
|
|
2516
2294
|
* **Example** (Refreshing missing keys)
|
|
2517
2295
|
*
|
|
2518
|
-
* ```ts
|
|
2296
|
+
* ```ts import.meta.vitest
|
|
2519
2297
|
* import { Cache, Effect } from "effect"
|
|
2520
2298
|
*
|
|
2521
2299
|
* // Refresh non-existent keys
|
|
@@ -2527,11 +2305,14 @@ export const refresh: {
|
|
|
2527
2305
|
*
|
|
2528
2306
|
* // Refresh non-existent key creates new entry
|
|
2529
2307
|
* const result = yield* Cache.refresh(cache, "newKey")
|
|
2530
|
-
* console.log(result) // "value-for-newKey"
|
|
2531
2308
|
*
|
|
2532
2309
|
* // Verify it's now cached
|
|
2533
|
-
*
|
|
2310
|
+
* const cached = yield* Cache.has(cache, "newKey")
|
|
2311
|
+
* return [result, cached]
|
|
2534
2312
|
* })
|
|
2313
|
+
*
|
|
2314
|
+
* const actual = await Effect.runPromise(program)
|
|
2315
|
+
* actual // => ["value-for-newKey", true]
|
|
2535
2316
|
* ```
|
|
2536
2317
|
*
|
|
2537
2318
|
* @category combinators
|
|
@@ -2548,7 +2329,7 @@ export const refresh: {
|
|
|
2548
2329
|
*
|
|
2549
2330
|
* **Example** (Refreshing cached values)
|
|
2550
2331
|
*
|
|
2551
|
-
* ```ts
|
|
2332
|
+
* ```ts import.meta.vitest
|
|
2552
2333
|
* import { Cache, Effect } from "effect"
|
|
2553
2334
|
*
|
|
2554
2335
|
* // Force refresh of existing cached values
|
|
@@ -2561,25 +2342,25 @@ export const refresh: {
|
|
|
2561
2342
|
*
|
|
2562
2343
|
* // Initial cache population
|
|
2563
2344
|
* const value1 = yield* Cache.get(cache, "user")
|
|
2564
|
-
* console.log(value1) // "user-1"
|
|
2565
2345
|
*
|
|
2566
2346
|
* // Get from cache (no lookup)
|
|
2567
2347
|
* const value2 = yield* Cache.get(cache, "user")
|
|
2568
|
-
* console.log(value2) // "user-1" (same value)
|
|
2569
2348
|
*
|
|
2570
2349
|
* // Force refresh - always calls lookup
|
|
2571
2350
|
* const refreshed = yield* Cache.refresh(cache, "user")
|
|
2572
|
-
* console.log(refreshed) // "user-2" (new value)
|
|
2573
2351
|
*
|
|
2574
2352
|
* // Subsequent gets return refreshed value
|
|
2575
2353
|
* const value3 = yield* Cache.get(cache, "user")
|
|
2576
|
-
*
|
|
2354
|
+
* return [value1, value2, refreshed, value3, counter]
|
|
2577
2355
|
* })
|
|
2356
|
+
*
|
|
2357
|
+
* const actual = await Effect.runPromise(program)
|
|
2358
|
+
* actual // => ["user-1", "user-1", "user-2", "user-2", 2]
|
|
2578
2359
|
* ```
|
|
2579
2360
|
*
|
|
2580
2361
|
* **Example** (Resetting TTL on refresh)
|
|
2581
2362
|
*
|
|
2582
|
-
* ```ts
|
|
2363
|
+
* ```ts import.meta.vitest
|
|
2583
2364
|
* import { Cache, Effect } from "effect"
|
|
2584
2365
|
* import { TestClock } from "effect/testing"
|
|
2585
2366
|
*
|
|
@@ -2595,20 +2376,24 @@ export const refresh: {
|
|
|
2595
2376
|
* yield* TestClock.adjust("45 minutes")
|
|
2596
2377
|
*
|
|
2597
2378
|
* // Entry would normally expire in 15 minutes
|
|
2598
|
-
*
|
|
2379
|
+
* const beforeRefresh = yield* Cache.has(cache, "test")
|
|
2599
2380
|
*
|
|
2600
2381
|
* // Refresh resets the TTL to full 1 hour
|
|
2601
2382
|
* yield* Cache.refresh(cache, "test")
|
|
2602
2383
|
* yield* TestClock.adjust("30 minutes")
|
|
2603
2384
|
*
|
|
2604
2385
|
* // Still valid because TTL was reset
|
|
2605
|
-
*
|
|
2386
|
+
* const afterRefresh = yield* Cache.has(cache, "test")
|
|
2387
|
+
* return [beforeRefresh, afterRefresh]
|
|
2606
2388
|
* })
|
|
2389
|
+
*
|
|
2390
|
+
* const actual = await Effect.runPromise(Effect.provide(program, TestClock.layer()))
|
|
2391
|
+
* actual // => [true, true]
|
|
2607
2392
|
* ```
|
|
2608
2393
|
*
|
|
2609
2394
|
* **Example** (Refreshing missing keys)
|
|
2610
2395
|
*
|
|
2611
|
-
* ```ts
|
|
2396
|
+
* ```ts import.meta.vitest
|
|
2612
2397
|
* import { Cache, Effect } from "effect"
|
|
2613
2398
|
*
|
|
2614
2399
|
* // Refresh non-existent keys
|
|
@@ -2620,11 +2405,14 @@ export const refresh: {
|
|
|
2620
2405
|
*
|
|
2621
2406
|
* // Refresh non-existent key creates new entry
|
|
2622
2407
|
* const result = yield* Cache.refresh(cache, "newKey")
|
|
2623
|
-
* console.log(result) // "value-for-newKey"
|
|
2624
2408
|
*
|
|
2625
2409
|
* // Verify it's now cached
|
|
2626
|
-
*
|
|
2410
|
+
* const cached = yield* Cache.has(cache, "newKey")
|
|
2411
|
+
* return [result, cached]
|
|
2627
2412
|
* })
|
|
2413
|
+
*
|
|
2414
|
+
* const actual = await Effect.runPromise(program)
|
|
2415
|
+
* actual // => ["value-for-newKey", true]
|
|
2628
2416
|
* ```
|
|
2629
2417
|
*
|
|
2630
2418
|
* @category combinators
|
|
@@ -2635,202 +2423,17 @@ export const refresh: {
|
|
|
2635
2423
|
2,
|
|
2636
2424
|
<Key, A, E, R>(self: Cache<Key, A, E, R>, key: Key): Effect.Effect<A, E, R> =>
|
|
2637
2425
|
core.withFiber((fiber) => {
|
|
2638
|
-
const
|
|
2639
|
-
* Forces a refresh of the value associated with the specified key in the cache.
|
|
2640
|
-
*
|
|
2641
|
-
* **Details**
|
|
2642
|
-
*
|
|
2643
|
-
* It will always invoke the lookup function to construct a new value,
|
|
2644
|
-
* overwriting any existing value for that key.
|
|
2645
|
-
*
|
|
2646
|
-
* **Example** (Refreshing cached values)
|
|
2647
|
-
*
|
|
2648
|
-
* ```ts
|
|
2649
|
-
* import { Cache, Effect } from "effect"
|
|
2650
|
-
*
|
|
2651
|
-
* // Force refresh of existing cached values
|
|
2652
|
-
* const program = Effect.gen(function*() {
|
|
2653
|
-
* let counter = 0
|
|
2654
|
-
* const cache = yield* Cache.make({
|
|
2655
|
-
* capacity: 10,
|
|
2656
|
-
* lookup: (key: string) => Effect.sync(() => `${key}-${++counter}`)
|
|
2657
|
-
* })
|
|
2658
|
-
*
|
|
2659
|
-
* // Initial cache population
|
|
2660
|
-
* const value1 = yield* Cache.get(cache, "user")
|
|
2661
|
-
* console.log(value1) // "user-1"
|
|
2662
|
-
*
|
|
2663
|
-
* // Get from cache (no lookup)
|
|
2664
|
-
* const value2 = yield* Cache.get(cache, "user")
|
|
2665
|
-
* console.log(value2) // "user-1" (same value)
|
|
2666
|
-
*
|
|
2667
|
-
* // Force refresh - always calls lookup
|
|
2668
|
-
* const refreshed = yield* Cache.refresh(cache, "user")
|
|
2669
|
-
* console.log(refreshed) // "user-2" (new value)
|
|
2670
|
-
*
|
|
2671
|
-
* // Subsequent gets return refreshed value
|
|
2672
|
-
* const value3 = yield* Cache.get(cache, "user")
|
|
2673
|
-
* console.log(value3) // "user-2"
|
|
2674
|
-
* })
|
|
2675
|
-
* ```
|
|
2676
|
-
*
|
|
2677
|
-
* **Example** (Resetting TTL on refresh)
|
|
2678
|
-
*
|
|
2679
|
-
* ```ts
|
|
2680
|
-
* import { Cache, Effect } from "effect"
|
|
2681
|
-
* import { TestClock } from "effect/testing"
|
|
2682
|
-
*
|
|
2683
|
-
* // Refresh resets TTL (Time To Live)
|
|
2684
|
-
* const program = Effect.gen(function*() {
|
|
2685
|
-
* const cache = yield* Cache.make({
|
|
2686
|
-
* capacity: 10,
|
|
2687
|
-
* lookup: (key: string) => Effect.succeed(key.length),
|
|
2688
|
-
* timeToLive: "1 hour"
|
|
2689
|
-
* })
|
|
2690
|
-
*
|
|
2691
|
-
* yield* Cache.get(cache, "test")
|
|
2692
|
-
* yield* TestClock.adjust("45 minutes")
|
|
2693
|
-
*
|
|
2694
|
-
* // Entry would normally expire in 15 minutes
|
|
2695
|
-
* console.log(yield* Cache.has(cache, "test")) // true
|
|
2696
|
-
*
|
|
2697
|
-
* // Refresh resets the TTL to full 1 hour
|
|
2698
|
-
* yield* Cache.refresh(cache, "test")
|
|
2699
|
-
* yield* TestClock.adjust("30 minutes")
|
|
2700
|
-
*
|
|
2701
|
-
* // Still valid because TTL was reset
|
|
2702
|
-
* console.log(yield* Cache.has(cache, "test")) // true
|
|
2703
|
-
* })
|
|
2704
|
-
* ```
|
|
2705
|
-
*
|
|
2706
|
-
* **Example** (Refreshing missing keys)
|
|
2707
|
-
*
|
|
2708
|
-
* ```ts
|
|
2709
|
-
* import { Cache, Effect } from "effect"
|
|
2710
|
-
*
|
|
2711
|
-
* // Refresh non-existent keys
|
|
2712
|
-
* const program = Effect.gen(function*() {
|
|
2713
|
-
* const cache = yield* Cache.make({
|
|
2714
|
-
* capacity: 10,
|
|
2715
|
-
* lookup: (key: string) => Effect.succeed(`value-for-${key}`)
|
|
2716
|
-
* })
|
|
2717
|
-
*
|
|
2718
|
-
* // Refresh non-existent key creates new entry
|
|
2719
|
-
* const result = yield* Cache.refresh(cache, "newKey")
|
|
2720
|
-
* console.log(result) // "value-for-newKey"
|
|
2721
|
-
*
|
|
2722
|
-
* // Verify it's now cached
|
|
2723
|
-
* console.log(yield* Cache.has(cache, "newKey")) // true
|
|
2724
|
-
* })
|
|
2725
|
-
* ```
|
|
2726
|
-
*
|
|
2727
|
-
* @category combinators
|
|
2728
|
-
* @since 4.0.0
|
|
2729
|
-
*/
|
|
2730
|
-
A, /**
|
|
2731
|
-
* Forces a refresh of the value associated with the specified key in the cache.
|
|
2732
|
-
*
|
|
2733
|
-
* **Details**
|
|
2734
|
-
*
|
|
2735
|
-
* It will always invoke the lookup function to construct a new value,
|
|
2736
|
-
* overwriting any existing value for that key.
|
|
2737
|
-
*
|
|
2738
|
-
* **Example** (Refreshing cached values)
|
|
2739
|
-
*
|
|
2740
|
-
* ```ts
|
|
2741
|
-
* import { Cache, Effect } from "effect"
|
|
2742
|
-
*
|
|
2743
|
-
* // Force refresh of existing cached values
|
|
2744
|
-
* const program = Effect.gen(function*() {
|
|
2745
|
-
* let counter = 0
|
|
2746
|
-
* const cache = yield* Cache.make({
|
|
2747
|
-
* capacity: 10,
|
|
2748
|
-
* lookup: (key: string) => Effect.sync(() => `${key}-${++counter}`)
|
|
2749
|
-
* })
|
|
2750
|
-
*
|
|
2751
|
-
* // Initial cache population
|
|
2752
|
-
* const value1 = yield* Cache.get(cache, "user")
|
|
2753
|
-
* console.log(value1) // "user-1"
|
|
2754
|
-
*
|
|
2755
|
-
* // Get from cache (no lookup)
|
|
2756
|
-
* const value2 = yield* Cache.get(cache, "user")
|
|
2757
|
-
* console.log(value2) // "user-1" (same value)
|
|
2758
|
-
*
|
|
2759
|
-
* // Force refresh - always calls lookup
|
|
2760
|
-
* const refreshed = yield* Cache.refresh(cache, "user")
|
|
2761
|
-
* console.log(refreshed) // "user-2" (new value)
|
|
2762
|
-
*
|
|
2763
|
-
* // Subsequent gets return refreshed value
|
|
2764
|
-
* const value3 = yield* Cache.get(cache, "user")
|
|
2765
|
-
* console.log(value3) // "user-2"
|
|
2766
|
-
* })
|
|
2767
|
-
* ```
|
|
2768
|
-
*
|
|
2769
|
-
* **Example** (Resetting TTL on refresh)
|
|
2770
|
-
*
|
|
2771
|
-
* ```ts
|
|
2772
|
-
* import { Cache, Effect } from "effect"
|
|
2773
|
-
* import { TestClock } from "effect/testing"
|
|
2774
|
-
*
|
|
2775
|
-
* // Refresh resets TTL (Time To Live)
|
|
2776
|
-
* const program = Effect.gen(function*() {
|
|
2777
|
-
* const cache = yield* Cache.make({
|
|
2778
|
-
* capacity: 10,
|
|
2779
|
-
* lookup: (key: string) => Effect.succeed(key.length),
|
|
2780
|
-
* timeToLive: "1 hour"
|
|
2781
|
-
* })
|
|
2782
|
-
*
|
|
2783
|
-
* yield* Cache.get(cache, "test")
|
|
2784
|
-
* yield* TestClock.adjust("45 minutes")
|
|
2785
|
-
*
|
|
2786
|
-
* // Entry would normally expire in 15 minutes
|
|
2787
|
-
* console.log(yield* Cache.has(cache, "test")) // true
|
|
2788
|
-
*
|
|
2789
|
-
* // Refresh resets the TTL to full 1 hour
|
|
2790
|
-
* yield* Cache.refresh(cache, "test")
|
|
2791
|
-
* yield* TestClock.adjust("30 minutes")
|
|
2792
|
-
*
|
|
2793
|
-
* // Still valid because TTL was reset
|
|
2794
|
-
* console.log(yield* Cache.has(cache, "test")) // true
|
|
2795
|
-
* })
|
|
2796
|
-
* ```
|
|
2797
|
-
*
|
|
2798
|
-
* **Example** (Refreshing missing keys)
|
|
2799
|
-
*
|
|
2800
|
-
* ```ts
|
|
2801
|
-
* import { Cache, Effect } from "effect"
|
|
2802
|
-
*
|
|
2803
|
-
* // Refresh non-existent keys
|
|
2804
|
-
* const program = Effect.gen(function*() {
|
|
2805
|
-
* const cache = yield* Cache.make({
|
|
2806
|
-
* capacity: 10,
|
|
2807
|
-
* lookup: (key: string) => Effect.succeed(`value-for-${key}`)
|
|
2808
|
-
* })
|
|
2809
|
-
*
|
|
2810
|
-
* // Refresh non-existent key creates new entry
|
|
2811
|
-
* const result = yield* Cache.refresh(cache, "newKey")
|
|
2812
|
-
* console.log(result) // "value-for-newKey"
|
|
2813
|
-
*
|
|
2814
|
-
* // Verify it's now cached
|
|
2815
|
-
* console.log(yield* Cache.has(cache, "newKey")) // true
|
|
2816
|
-
* })
|
|
2817
|
-
* ```
|
|
2818
|
-
*
|
|
2819
|
-
* @category combinators
|
|
2820
|
-
* @since 4.0.0
|
|
2821
|
-
*/
|
|
2822
|
-
E>()
|
|
2823
|
-
const entry: Entry<A, E> = {
|
|
2824
|
-
expiresAt: undefined,
|
|
2825
|
-
deferred
|
|
2826
|
-
}
|
|
2426
|
+
const entry = new EntryImpl(fiber, self.lookup(key))
|
|
2827
2427
|
const existing = getImpl(self, key, fiber, false) !== undefined
|
|
2828
2428
|
if (!existing) {
|
|
2829
2429
|
MutableHashMap.set(self.map, key, entry)
|
|
2830
2430
|
checkCapacity(self)
|
|
2831
2431
|
}
|
|
2832
|
-
|
|
2833
|
-
|
|
2432
|
+
entry.fiber.addObserver((exit) => {
|
|
2433
|
+
if (effect.exitHasInterrupts(exit)) {
|
|
2434
|
+
if (!existing) MutableHashMap.remove(self.map, key)
|
|
2435
|
+
return
|
|
2436
|
+
}
|
|
2834
2437
|
const ttl = self.timeToLive(exit, key)
|
|
2835
2438
|
if (Duration.isZero(ttl)) {
|
|
2836
2439
|
MutableHashMap.remove(self.map, key)
|
|
@@ -2842,8 +2445,8 @@ export const refresh: {
|
|
|
2842
2445
|
if (existing) {
|
|
2843
2446
|
MutableHashMap.set(self.map, key, entry)
|
|
2844
2447
|
}
|
|
2845
|
-
return effect.void
|
|
2846
2448
|
})
|
|
2449
|
+
return entry.await()
|
|
2847
2450
|
})
|
|
2848
2451
|
)
|
|
2849
2452
|
|
|
@@ -2852,7 +2455,7 @@ export const refresh: {
|
|
|
2852
2455
|
*
|
|
2853
2456
|
* **Example** (Invalidating all entries)
|
|
2854
2457
|
*
|
|
2855
|
-
* ```ts
|
|
2458
|
+
* ```ts import.meta.vitest
|
|
2856
2459
|
* import { Cache, Effect } from "effect"
|
|
2857
2460
|
*
|
|
2858
2461
|
* // Clear all cached entries at once
|
|
@@ -2867,18 +2470,29 @@ export const refresh: {
|
|
|
2867
2470
|
* yield* Cache.get(cache, "banana")
|
|
2868
2471
|
* yield* Cache.get(cache, "cherry")
|
|
2869
2472
|
*
|
|
2870
|
-
*
|
|
2871
|
-
*
|
|
2473
|
+
* const sizeBeforeInvalidation = yield* Cache.size(cache)
|
|
2474
|
+
* const hasAppleBeforeInvalidation = yield* Cache.has(cache, "apple")
|
|
2872
2475
|
*
|
|
2873
2476
|
* // Clear all entries
|
|
2874
2477
|
* yield* Cache.invalidateAll(cache)
|
|
2875
2478
|
*
|
|
2876
2479
|
* // Verify cache is empty
|
|
2877
|
-
*
|
|
2878
|
-
*
|
|
2879
|
-
*
|
|
2880
|
-
*
|
|
2480
|
+
* const sizeAfterInvalidation = yield* Cache.size(cache)
|
|
2481
|
+
* const hasAppleAfterInvalidation = yield* Cache.has(cache, "apple")
|
|
2482
|
+
* const hasBananaAfterInvalidation = yield* Cache.has(cache, "banana")
|
|
2483
|
+
* const hasCherryAfterInvalidation = yield* Cache.has(cache, "cherry")
|
|
2484
|
+
* return [
|
|
2485
|
+
* sizeBeforeInvalidation,
|
|
2486
|
+
* hasAppleBeforeInvalidation,
|
|
2487
|
+
* sizeAfterInvalidation,
|
|
2488
|
+
* hasAppleAfterInvalidation,
|
|
2489
|
+
* hasBananaAfterInvalidation,
|
|
2490
|
+
* hasCherryAfterInvalidation
|
|
2491
|
+
* ]
|
|
2881
2492
|
* })
|
|
2493
|
+
*
|
|
2494
|
+
* const actual = await Effect.runPromise(program)
|
|
2495
|
+
* actual // => [3, true, 0, false, false, false]
|
|
2882
2496
|
* ```
|
|
2883
2497
|
*
|
|
2884
2498
|
* @category combinators
|
|
@@ -2900,7 +2514,7 @@ export const invalidateAll = <Key, A, E, R>(self: Cache<Key, A, E, R>): Effect.E
|
|
|
2900
2514
|
*
|
|
2901
2515
|
* **Example** (Reading cache size)
|
|
2902
2516
|
*
|
|
2903
|
-
* ```ts
|
|
2517
|
+
* ```ts import.meta.vitest
|
|
2904
2518
|
* import { Cache, Effect } from "effect"
|
|
2905
2519
|
*
|
|
2906
2520
|
* const program = Effect.gen(function*() {
|
|
@@ -2911,19 +2525,20 @@ export const invalidateAll = <Key, A, E, R>(self: Cache<Key, A, E, R>): Effect.E
|
|
|
2911
2525
|
*
|
|
2912
2526
|
* // Empty cache has size 0
|
|
2913
2527
|
* const emptySize = yield* Cache.size(cache)
|
|
2914
|
-
* console.log(emptySize) // 0
|
|
2915
2528
|
*
|
|
2916
2529
|
* // Add entries and check size
|
|
2917
2530
|
* yield* Cache.get(cache, "hello")
|
|
2918
2531
|
* yield* Cache.get(cache, "world")
|
|
2919
2532
|
* const sizeAfterAdding = yield* Cache.size(cache)
|
|
2920
|
-
* console.log(sizeAfterAdding) // 2
|
|
2921
2533
|
*
|
|
2922
2534
|
* // Size decreases after invalidation
|
|
2923
2535
|
* yield* Cache.invalidate(cache, "hello")
|
|
2924
2536
|
* const sizeAfterInvalidation = yield* Cache.size(cache)
|
|
2925
|
-
*
|
|
2537
|
+
* return [emptySize, sizeAfterAdding, sizeAfterInvalidation]
|
|
2926
2538
|
* })
|
|
2539
|
+
*
|
|
2540
|
+
* const actual = await Effect.runPromise(program)
|
|
2541
|
+
* actual // => [0, 2, 1]
|
|
2927
2542
|
* ```
|
|
2928
2543
|
*
|
|
2929
2544
|
* @category combinators
|
|
@@ -2937,7 +2552,7 @@ export const size = <Key, A, E, R>(self: Cache<Key, A, E, R>): Effect.Effect<num
|
|
|
2937
2552
|
*
|
|
2938
2553
|
* **Example** (Reading active keys)
|
|
2939
2554
|
*
|
|
2940
|
-
* ```ts
|
|
2555
|
+
* ```ts import.meta.vitest
|
|
2941
2556
|
* import { Cache, Effect } from "effect"
|
|
2942
2557
|
*
|
|
2943
2558
|
* // Basic key enumeration
|
|
@@ -2954,9 +2569,11 @@ export const size = <Key, A, E, R>(self: Cache<Key, A, E, R>): Effect.Effect<num
|
|
|
2954
2569
|
*
|
|
2955
2570
|
* // Retrieve all active keys
|
|
2956
2571
|
* const keys = yield* Cache.keys(cache)
|
|
2957
|
-
*
|
|
2958
|
-
* console.log(Array.from(keys).sort()) // ["cache", "hello", "world"]
|
|
2572
|
+
* return Array.from(keys).sort()
|
|
2959
2573
|
* })
|
|
2574
|
+
*
|
|
2575
|
+
* const actual = await Effect.runPromise(program)
|
|
2576
|
+
* actual // => ["cache", "hello", "world"]
|
|
2960
2577
|
* ```
|
|
2961
2578
|
*
|
|
2962
2579
|
* @category combinators
|
|
@@ -2980,7 +2597,7 @@ export const keys = <Key, A, E, R>(self: Cache<Key, A, E, R>): Effect.Effect<Ite
|
|
|
2980
2597
|
*
|
|
2981
2598
|
* **Example** (Reading all cached values)
|
|
2982
2599
|
*
|
|
2983
|
-
* ```ts
|
|
2600
|
+
* ```ts import.meta.vitest
|
|
2984
2601
|
* import { Cache, Effect } from "effect"
|
|
2985
2602
|
*
|
|
2986
2603
|
* const program = Effect.gen(function*() {
|
|
@@ -2996,10 +2613,11 @@ export const keys = <Key, A, E, R>(self: Cache<Key, A, E, R>): Effect.Effect<Ite
|
|
|
2996
2613
|
*
|
|
2997
2614
|
* // Retrieve all cached values
|
|
2998
2615
|
* const values = yield* Cache.values(cache)
|
|
2999
|
-
*
|
|
3000
|
-
*
|
|
3001
|
-
* console.log(valuesArray) // [1, 2, 3]
|
|
2616
|
+
* return Array.from(values).sort()
|
|
3002
2617
|
* })
|
|
2618
|
+
*
|
|
2619
|
+
* const actual = await Effect.runPromise(program)
|
|
2620
|
+
* actual // => [1, 2, 3]
|
|
3003
2621
|
* ```
|
|
3004
2622
|
*
|
|
3005
2623
|
* @category combinators
|
|
@@ -3028,10 +2646,10 @@ export const entries = <Key, A, E, R>(self: Cache<Key, A, E, R>): Effect.Effect<
|
|
|
3028
2646
|
const now = fiber.getRef(effect.ClockRef).currentTimeMillisUnsafe()
|
|
3029
2647
|
return effect.succeed(Iterable.filterMap(self.map, ([key, entry]) => {
|
|
3030
2648
|
if (entry.expiresAt === undefined || entry.expiresAt > now) {
|
|
3031
|
-
const exit = entry.
|
|
3032
|
-
return
|
|
3033
|
-
? Result.
|
|
3034
|
-
: Result.
|
|
2649
|
+
const exit = entry.fiber.pollUnsafe()
|
|
2650
|
+
return exit && exit._tag === "Success"
|
|
2651
|
+
? Result.succeed([key, exit.value])
|
|
2652
|
+
: Result.failVoid
|
|
3035
2653
|
}
|
|
3036
2654
|
MutableHashMap.remove(self.map, key)
|
|
3037
2655
|
return Result.failVoid
|