effect 4.0.0-beta.19 → 4.0.0-beta.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Channel.d.ts +6 -6
- package/dist/Channel.d.ts.map +1 -1
- package/dist/Channel.js.map +1 -1
- package/dist/Config.d.ts +5 -6
- package/dist/Config.d.ts.map +1 -1
- package/dist/Config.js +3 -3
- package/dist/Config.js.map +1 -1
- package/dist/Effect.d.ts +22 -22
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +3 -3
- package/dist/Effect.js.map +1 -1
- package/dist/ErrorReporter.js +2 -2
- package/dist/ErrorReporter.js.map +1 -1
- package/dist/Layer.d.ts +9 -9
- package/dist/Layer.d.ts.map +1 -1
- package/dist/Layer.js.map +1 -1
- package/dist/Schedule.d.ts +14 -6
- package/dist/Schedule.d.ts.map +1 -1
- package/dist/Schedule.js +25 -9
- package/dist/Schedule.js.map +1 -1
- package/dist/Schema.d.ts +21 -0
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js.map +1 -1
- package/dist/ServiceMap.d.ts +39 -30
- package/dist/ServiceMap.d.ts.map +1 -1
- package/dist/ServiceMap.js +3 -3
- package/dist/ServiceMap.js.map +1 -1
- package/dist/Sink.d.ts +2 -2
- package/dist/Sink.d.ts.map +1 -1
- package/dist/Sink.js.map +1 -1
- package/dist/Stream.d.ts +6 -6
- package/dist/Stream.d.ts.map +1 -1
- package/dist/Stream.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/internal/effect.js +2 -2
- package/dist/internal/effect.js.map +1 -1
- package/dist/testing/TestSchema.d.ts +2 -2
- package/dist/testing/TestSchema.d.ts.map +1 -1
- package/dist/testing/TestSchema.js.map +1 -1
- package/dist/unstable/ai/AiError.d.ts +90 -10
- package/dist/unstable/ai/AiError.d.ts.map +1 -1
- package/dist/unstable/ai/AiError.js +11 -12
- package/dist/unstable/ai/AiError.js.map +1 -1
- package/dist/unstable/ai/Model.d.ts +25 -7
- package/dist/unstable/ai/Model.d.ts.map +1 -1
- package/dist/unstable/ai/Model.js +22 -6
- package/dist/unstable/ai/Model.js.map +1 -1
- package/dist/unstable/ai/Tool.d.ts +3 -3
- package/dist/unstable/ai/Tool.d.ts.map +1 -1
- package/dist/unstable/ai/Tool.js.map +1 -1
- package/dist/unstable/ai/index.d.ts +1 -1
- package/dist/unstable/ai/index.js +1 -1
- package/dist/unstable/cli/Command.d.ts +6 -6
- package/dist/unstable/cli/Command.d.ts.map +1 -1
- package/dist/unstable/cli/Command.js.map +1 -1
- package/dist/unstable/cli/internal/command.d.ts +2 -2
- package/dist/unstable/cli/internal/command.d.ts.map +1 -1
- package/dist/unstable/cluster/Entity.d.ts +2 -2
- package/dist/unstable/cluster/Entity.d.ts.map +1 -1
- package/dist/unstable/cluster/Entity.js.map +1 -1
- package/dist/unstable/cluster/ShardingConfig.js +20 -20
- package/dist/unstable/cluster/ShardingConfig.js.map +1 -1
- package/dist/unstable/httpapi/HttpApi.d.ts +3 -3
- package/dist/unstable/httpapi/HttpApi.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApi.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiClient.d.ts +7 -2
- package/dist/unstable/httpapi/HttpApiClient.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +3 -3
- package/dist/unstable/httpapi/HttpApiEndpoint.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiGroup.d.ts +3 -3
- package/dist/unstable/httpapi/HttpApiGroup.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiGroup.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiMiddleware.d.ts +4 -4
- package/dist/unstable/httpapi/HttpApiMiddleware.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiMiddleware.js.map +1 -1
- package/dist/unstable/httpapi/HttpApiSecurity.d.ts +2 -2
- package/dist/unstable/httpapi/HttpApiSecurity.d.ts.map +1 -1
- package/dist/unstable/httpapi/HttpApiSecurity.js.map +1 -1
- package/dist/unstable/httpapi/OpenApi.js.map +1 -1
- package/dist/unstable/process/ChildProcess.d.ts +3 -126
- package/dist/unstable/process/ChildProcess.d.ts.map +1 -1
- package/dist/unstable/process/ChildProcess.js +1 -65
- package/dist/unstable/process/ChildProcess.js.map +1 -1
- package/dist/unstable/process/ChildProcessSpawner.d.ts +39 -7
- package/dist/unstable/process/ChildProcessSpawner.d.ts.map +1 -1
- package/dist/unstable/process/ChildProcessSpawner.js +21 -1
- package/dist/unstable/process/ChildProcessSpawner.js.map +1 -1
- package/dist/unstable/rpc/Rpc.d.ts +1 -1
- package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
- package/dist/unstable/rpc/Rpc.js.map +1 -1
- package/dist/unstable/rpc/RpcGroup.d.ts +2 -2
- package/dist/unstable/rpc/RpcGroup.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcGroup.js.map +1 -1
- package/dist/unstable/rpc/RpcMiddleware.d.ts +3 -3
- package/dist/unstable/rpc/RpcMiddleware.d.ts.map +1 -1
- package/dist/unstable/rpc/RpcMiddleware.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/workflow/Workflow.d.ts +1 -1
- package/dist/unstable/workflow/Workflow.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/Channel.ts +9 -9
- package/src/Config.ts +9 -9
- package/src/Effect.ts +24 -32
- package/src/ErrorReporter.ts +2 -2
- package/src/Layer.ts +11 -15
- package/src/Schedule.ts +35 -19
- package/src/Schema.ts +21 -0
- package/src/ServiceMap.ts +47 -38
- package/src/Sink.ts +3 -3
- package/src/Stream.ts +9 -9
- package/src/index.ts +1 -1
- package/src/internal/effect.ts +24 -24
- package/src/testing/TestSchema.ts +2 -2
- package/src/unstable/ai/AiError.ts +95 -42
- package/src/unstable/ai/Model.ts +40 -9
- package/src/unstable/ai/Tool.ts +4 -4
- package/src/unstable/ai/index.ts +1 -1
- package/src/unstable/cli/Command.ts +9 -12
- package/src/unstable/cli/internal/command.ts +2 -2
- package/src/unstable/cluster/Entity.ts +4 -4
- package/src/unstable/cluster/ShardingConfig.ts +20 -20
- package/src/unstable/httpapi/HttpApi.ts +5 -5
- package/src/unstable/httpapi/HttpApiBuilder.ts +2 -2
- package/src/unstable/httpapi/HttpApiClient.ts +11 -3
- package/src/unstable/httpapi/HttpApiEndpoint.ts +7 -7
- package/src/unstable/httpapi/HttpApiGroup.ts +6 -6
- package/src/unstable/httpapi/HttpApiMiddleware.ts +4 -4
- package/src/unstable/httpapi/HttpApiSecurity.ts +3 -3
- package/src/unstable/httpapi/OpenApi.ts +2 -2
- package/src/unstable/process/ChildProcess.ts +4 -206
- package/src/unstable/process/ChildProcessSpawner.ts +69 -14
- package/src/unstable/rpc/Rpc.ts +2 -2
- package/src/unstable/rpc/RpcGroup.ts +4 -4
- package/src/unstable/rpc/RpcMiddleware.ts +3 -3
- package/src/unstable/sql/SqlClient.ts +1 -1
- package/src/unstable/workflow/Workflow.ts +1 -1
package/src/ServiceMap.ts
CHANGED
|
@@ -24,6 +24,24 @@ import type * as Types from "./Types.ts"
|
|
|
24
24
|
|
|
25
25
|
const ServiceTypeId = "~effect/ServiceMap/Service" as const
|
|
26
26
|
|
|
27
|
+
/**
|
|
28
|
+
* The base type used for all ServiceMap keys.
|
|
29
|
+
*
|
|
30
|
+
* @since 4.0.0
|
|
31
|
+
* @category Models
|
|
32
|
+
*/
|
|
33
|
+
export interface Key<in out Identifier, in out Shape> extends Pipeable, Inspectable {
|
|
34
|
+
readonly [ServiceTypeId]: {
|
|
35
|
+
readonly _Service: Types.Invariant<Shape>
|
|
36
|
+
readonly _Identifier: Types.Invariant<Identifier>
|
|
37
|
+
}
|
|
38
|
+
readonly Service: Shape
|
|
39
|
+
readonly Identifier: Identifier
|
|
40
|
+
readonly key: string
|
|
41
|
+
readonly stack?: string | undefined
|
|
42
|
+
asEffect(): Effect<Shape, never, Identifier>
|
|
43
|
+
}
|
|
44
|
+
|
|
27
45
|
/**
|
|
28
46
|
* @example
|
|
29
47
|
* ```ts
|
|
@@ -42,21 +60,12 @@ const ServiceTypeId = "~effect/ServiceMap/Service" as const
|
|
|
42
60
|
* @category Models
|
|
43
61
|
*/
|
|
44
62
|
export interface Service<in out Identifier, in out Shape>
|
|
45
|
-
extends
|
|
63
|
+
extends Key<Identifier, Shape>, Yieldable<Service<Identifier, Shape>, Shape, never, Identifier>
|
|
46
64
|
{
|
|
47
|
-
readonly [ServiceTypeId]: {
|
|
48
|
-
readonly _Service: Types.Invariant<Shape>
|
|
49
|
-
readonly _Identifier: Types.Invariant<Identifier>
|
|
50
|
-
}
|
|
51
|
-
readonly Service: Shape
|
|
52
|
-
readonly Identifier: Identifier
|
|
53
65
|
of(self: Shape): Shape
|
|
54
66
|
serviceMap(self: Shape): ServiceMap<Identifier>
|
|
55
67
|
use<A, E, R>(f: (service: Shape) => Effect<A, E, R>): Effect<A, E, R | Identifier>
|
|
56
68
|
useSync<A>(f: (service: Shape) => A): Effect<A, never, Identifier>
|
|
57
|
-
|
|
58
|
-
readonly stack?: string | undefined
|
|
59
|
-
readonly key: string
|
|
60
69
|
}
|
|
61
70
|
|
|
62
71
|
/**
|
|
@@ -368,7 +377,7 @@ export declare namespace Service {
|
|
|
368
377
|
* @since 4.0.0
|
|
369
378
|
* @category Models
|
|
370
379
|
*/
|
|
371
|
-
export type Any =
|
|
380
|
+
export type Any = Key<never, any> | Key<any, any>
|
|
372
381
|
|
|
373
382
|
/**
|
|
374
383
|
* @example
|
|
@@ -508,20 +517,20 @@ const Proto: Omit<ServiceMap<never>, "mapUnsafe"> = {
|
|
|
508
517
|
export const isServiceMap = (u: unknown): u is ServiceMap<never> => hasProperty(u, TypeId)
|
|
509
518
|
|
|
510
519
|
/**
|
|
511
|
-
* Checks if the provided argument is a `
|
|
520
|
+
* Checks if the provided argument is a `Key`.
|
|
512
521
|
*
|
|
513
522
|
* @example
|
|
514
523
|
* ```ts
|
|
515
524
|
* import { ServiceMap } from "effect"
|
|
516
525
|
* import * as assert from "node:assert"
|
|
517
526
|
*
|
|
518
|
-
* assert.strictEqual(ServiceMap.
|
|
527
|
+
* assert.strictEqual(ServiceMap.isKey(ServiceMap.Service("Service")), true)
|
|
519
528
|
* ```
|
|
520
529
|
*
|
|
521
530
|
* @since 4.0.0
|
|
522
531
|
* @category Guards
|
|
523
532
|
*/
|
|
524
|
-
export const
|
|
533
|
+
export const isKey = (u: unknown): u is Key<any, any> => hasProperty(u, ServiceTypeId)
|
|
525
534
|
|
|
526
535
|
/**
|
|
527
536
|
* Checks if the provided argument is a `Reference`.
|
|
@@ -580,7 +589,7 @@ const emptyServiceMap = makeUnsafe(new Map())
|
|
|
580
589
|
* @category Constructors
|
|
581
590
|
*/
|
|
582
591
|
export const make = <I, S>(
|
|
583
|
-
key:
|
|
592
|
+
key: Key<I, S>,
|
|
584
593
|
service: Types.NoInfer<S>
|
|
585
594
|
): ServiceMap<I> => makeUnsafe(new Map([[key.key, service]]))
|
|
586
595
|
|
|
@@ -635,7 +644,7 @@ export const add: {
|
|
|
635
644
|
* @since 4.0.0
|
|
636
645
|
* @category Adders
|
|
637
646
|
*/
|
|
638
|
-
<I, S>(key:
|
|
647
|
+
<I, S>(key: Key<I, S>, service: Types.NoInfer<S>): <Services>(self: ServiceMap<Services>) => ServiceMap<Services | I>
|
|
639
648
|
/**
|
|
640
649
|
* Adds a service to a given `ServiceMap`.
|
|
641
650
|
*
|
|
@@ -661,10 +670,10 @@ export const add: {
|
|
|
661
670
|
* @since 4.0.0
|
|
662
671
|
* @category Adders
|
|
663
672
|
*/
|
|
664
|
-
<Services, I, S>(self: ServiceMap<Services>, key:
|
|
673
|
+
<Services, I, S>(self: ServiceMap<Services>, key: Key<I, S>, service: Types.NoInfer<S>): ServiceMap<Services | I>
|
|
665
674
|
} = dual(3, <Services, I, S>(
|
|
666
675
|
self: ServiceMap<Services>,
|
|
667
|
-
key:
|
|
676
|
+
key: Key<I, S>,
|
|
668
677
|
service: Types.NoInfer<S>
|
|
669
678
|
): ServiceMap<Services | I> => {
|
|
670
679
|
const map = new Map(self.mapUnsafe)
|
|
@@ -681,19 +690,19 @@ export const addOrOmit: {
|
|
|
681
690
|
* @since 4.0.0
|
|
682
691
|
* @category Adders
|
|
683
692
|
*/
|
|
684
|
-
<I, S>(key:
|
|
693
|
+
<I, S>(key: Key<I, S>, service: Option.Option<Types.NoInfer<S>>): <Services>(self: ServiceMap<Services>) => ServiceMap<Services | I>
|
|
685
694
|
/**
|
|
686
695
|
* @since 4.0.0
|
|
687
696
|
* @category Adders
|
|
688
697
|
*/
|
|
689
698
|
<Services, I, S>(
|
|
690
699
|
self: ServiceMap<Services>,
|
|
691
|
-
key:
|
|
700
|
+
key: Key<I, S>,
|
|
692
701
|
service: Option.Option<Types.NoInfer<S>>
|
|
693
702
|
): ServiceMap<Services | I>
|
|
694
703
|
} = dual(3, <Services, I, S>(
|
|
695
704
|
self: ServiceMap<Services>,
|
|
696
|
-
key:
|
|
705
|
+
key: Key<I, S>,
|
|
697
706
|
service: Option.Option<Types.NoInfer<S>>
|
|
698
707
|
): ServiceMap<Services | I> => {
|
|
699
708
|
const map = new Map(self.mapUnsafe)
|
|
@@ -770,7 +779,7 @@ export const getOrElse: {
|
|
|
770
779
|
* @since 4.0.0
|
|
771
780
|
* @category Getters
|
|
772
781
|
*/
|
|
773
|
-
<S, I, B>(key:
|
|
782
|
+
<S, I, B>(key: Key<I, S>, orElse: LazyArg<B>): <Services>(self: ServiceMap<Services>) => S | B
|
|
774
783
|
/**
|
|
775
784
|
* Get a service from the context that corresponds to the given key, or
|
|
776
785
|
* use the fallback value.
|
|
@@ -803,8 +812,8 @@ export const getOrElse: {
|
|
|
803
812
|
* @since 4.0.0
|
|
804
813
|
* @category Getters
|
|
805
814
|
*/
|
|
806
|
-
<Services, S, I, B>(self: ServiceMap<Services>, key:
|
|
807
|
-
} = dual(3, <Services, S, I, B>(self: ServiceMap<Services>, key:
|
|
815
|
+
<Services, S, I, B>(self: ServiceMap<Services>, key: Key<I, S>, orElse: LazyArg<B>): S | B
|
|
816
|
+
} = dual(3, <Services, S, I, B>(self: ServiceMap<Services>, key: Key<I, S>, orElse: LazyArg<B>): S | B => {
|
|
808
817
|
if (self.mapUnsafe.has(key.key)) {
|
|
809
818
|
return self.mapUnsafe.get(key.key)! as any
|
|
810
819
|
}
|
|
@@ -820,15 +829,15 @@ export const getOrUndefined: {
|
|
|
820
829
|
* @since 4.0.0
|
|
821
830
|
* @category Getters
|
|
822
831
|
*/
|
|
823
|
-
<S, I>(key:
|
|
832
|
+
<S, I>(key: Key<I, S>): <Services>(self: ServiceMap<Services>) => S | undefined
|
|
824
833
|
/**
|
|
825
834
|
* @since 4.0.0
|
|
826
835
|
* @category Getters
|
|
827
836
|
*/
|
|
828
|
-
<Services, S, I>(self: ServiceMap<Services>, key:
|
|
837
|
+
<Services, S, I>(self: ServiceMap<Services>, key: Key<I, S>): S | undefined
|
|
829
838
|
} = dual(
|
|
830
839
|
2,
|
|
831
|
-
<Services, S, I>(self: ServiceMap<Services>, key:
|
|
840
|
+
<Services, S, I>(self: ServiceMap<Services>, key: Key<I, S>): S | undefined => self.mapUnsafe.get(key.key)
|
|
832
841
|
)
|
|
833
842
|
|
|
834
843
|
/**
|
|
@@ -888,7 +897,7 @@ export const getUnsafe: {
|
|
|
888
897
|
* @since 4.0.0
|
|
889
898
|
* @category unsafe
|
|
890
899
|
*/
|
|
891
|
-
<S, I>(service:
|
|
900
|
+
<S, I>(service: Key<I, S>): <Services>(self: ServiceMap<Services>) => S
|
|
892
901
|
/**
|
|
893
902
|
* Get a service from the context that corresponds to the given key.
|
|
894
903
|
*
|
|
@@ -917,10 +926,10 @@ export const getUnsafe: {
|
|
|
917
926
|
* @since 4.0.0
|
|
918
927
|
* @category unsafe
|
|
919
928
|
*/
|
|
920
|
-
<Services, S, I>(self: ServiceMap<Services>, services:
|
|
929
|
+
<Services, S, I>(self: ServiceMap<Services>, services: Key<I, S>): S
|
|
921
930
|
} = dual(
|
|
922
931
|
2,
|
|
923
|
-
<Services, I extends Services, S>(self: ServiceMap<Services>, service:
|
|
932
|
+
<Services, I extends Services, S>(self: ServiceMap<Services>, service: Key<I, S>): S => {
|
|
924
933
|
if (!self.mapUnsafe.has(service.key)) {
|
|
925
934
|
if (ReferenceTypeId in service) return getDefaultValue(service as any)
|
|
926
935
|
throw serviceNotFoundError(service)
|
|
@@ -980,7 +989,7 @@ export const get: {
|
|
|
980
989
|
* @since 4.0.0
|
|
981
990
|
* @category Getters
|
|
982
991
|
*/
|
|
983
|
-
<Services, I extends Services, S>(service:
|
|
992
|
+
<Services, I extends Services, S>(service: Key<I, S>): (self: ServiceMap<Services>) => S
|
|
984
993
|
/**
|
|
985
994
|
* Get a service from the context that corresponds to the given key.
|
|
986
995
|
*
|
|
@@ -1006,7 +1015,7 @@ export const get: {
|
|
|
1006
1015
|
* @since 4.0.0
|
|
1007
1016
|
* @category Getters
|
|
1008
1017
|
*/
|
|
1009
|
-
<Services, I extends Services, S>(self: ServiceMap<Services>, service:
|
|
1018
|
+
<Services, I extends Services, S>(self: ServiceMap<Services>, service: Key<I, S>): S
|
|
1010
1019
|
} = getUnsafe
|
|
1011
1020
|
|
|
1012
1021
|
/**
|
|
@@ -1044,7 +1053,7 @@ const getDefaultValue = (ref: Reference<any>) => {
|
|
|
1044
1053
|
return (ref as any)[defaultValueCacheKey] = ref.defaultValue()
|
|
1045
1054
|
}
|
|
1046
1055
|
|
|
1047
|
-
const serviceNotFoundError = (service:
|
|
1056
|
+
const serviceNotFoundError = (service: Key<any, any>) => {
|
|
1048
1057
|
const error = new Error(
|
|
1049
1058
|
`Service not found${service.key ? `: ${String(service.key)}` : ""}`
|
|
1050
1059
|
)
|
|
@@ -1122,7 +1131,7 @@ export const getOption: {
|
|
|
1122
1131
|
* @since 4.0.0
|
|
1123
1132
|
* @category Getters
|
|
1124
1133
|
*/
|
|
1125
|
-
<S, I>(service:
|
|
1134
|
+
<S, I>(service: Key<I, S>): <Services>(self: ServiceMap<Services>) => Option.Option<S>
|
|
1126
1135
|
/**
|
|
1127
1136
|
* Get the value associated with the specified key from the context wrapped in
|
|
1128
1137
|
* an `Option` object. If the key is not found, the `Option` object will be
|
|
@@ -1151,8 +1160,8 @@ export const getOption: {
|
|
|
1151
1160
|
* @since 4.0.0
|
|
1152
1161
|
* @category Getters
|
|
1153
1162
|
*/
|
|
1154
|
-
<Services, S, I>(self: ServiceMap<Services>, service:
|
|
1155
|
-
} = dual(2, <Services, I extends Services, S>(self: ServiceMap<Services>, service:
|
|
1163
|
+
<Services, S, I>(self: ServiceMap<Services>, service: Key<I, S>): Option.Option<S>
|
|
1164
|
+
} = dual(2, <Services, I extends Services, S>(self: ServiceMap<Services>, service: Key<I, S>): Option.Option<S> => {
|
|
1156
1165
|
if (self.mapUnsafe.has(service.key)) {
|
|
1157
1166
|
return Option.some(self.mapUnsafe.get(service.key)! as any)
|
|
1158
1167
|
}
|
|
@@ -1320,7 +1329,7 @@ export const mergeAll = <T extends Array<unknown>>(
|
|
|
1320
1329
|
* @since 4.0.0
|
|
1321
1330
|
* @category Utils
|
|
1322
1331
|
*/
|
|
1323
|
-
export const pick = <S extends ReadonlyArray<
|
|
1332
|
+
export const pick = <S extends ReadonlyArray<Key<any, any>>>(
|
|
1324
1333
|
...services: S
|
|
1325
1334
|
) =>
|
|
1326
1335
|
<Services>(self: ServiceMap<Services>): ServiceMap<Services & Service.Identifier<S[number]>> => {
|
|
@@ -1360,7 +1369,7 @@ export const pick = <S extends ReadonlyArray<Service<any, any>>>(
|
|
|
1360
1369
|
* @since 4.0.0
|
|
1361
1370
|
* @category Utils
|
|
1362
1371
|
*/
|
|
1363
|
-
export const omit = <S extends ReadonlyArray<
|
|
1372
|
+
export const omit = <S extends ReadonlyArray<Key<any, any>>>(
|
|
1364
1373
|
...keys: S
|
|
1365
1374
|
) =>
|
|
1366
1375
|
<Services>(self: ServiceMap<Services>): ServiceMap<Exclude<Services, Service.Identifier<S[number]>>> => {
|
package/src/Sink.ts
CHANGED
|
@@ -1834,19 +1834,19 @@ export const provideService: {
|
|
|
1834
1834
|
* @since 4.0.0
|
|
1835
1835
|
* @category Services
|
|
1836
1836
|
*/
|
|
1837
|
-
<I, S>(key: ServiceMap.
|
|
1837
|
+
<I, S>(key: ServiceMap.Key<I, S>, value: Types.NoInfer<S>): <A, In, L, E, R>(self: Sink<A, In, L, E, R>) => Sink<A, In, L, E, Exclude<R, I>>
|
|
1838
1838
|
/**
|
|
1839
1839
|
* @since 4.0.0
|
|
1840
1840
|
* @category Services
|
|
1841
1841
|
*/
|
|
1842
1842
|
<A, In, L, E, R, I, S>(
|
|
1843
1843
|
self: Sink<A, In, L, E, R>,
|
|
1844
|
-
key: ServiceMap.
|
|
1844
|
+
key: ServiceMap.Key<I, S>,
|
|
1845
1845
|
value: Types.NoInfer<S>
|
|
1846
1846
|
): Sink<A, In, L, E, Exclude<R, I>>
|
|
1847
1847
|
} = dual(3, <A, In, L, E, R, I, S>(
|
|
1848
1848
|
self: Sink<A, In, L, E, R>,
|
|
1849
|
-
key: ServiceMap.
|
|
1849
|
+
key: ServiceMap.Key<I, S>,
|
|
1850
1850
|
value: Types.NoInfer<S>
|
|
1851
1851
|
): Sink<A, In, L, E, Exclude<R, I>> =>
|
|
1852
1852
|
fromTransform((upstream, scope) =>
|
package/src/Stream.ts
CHANGED
|
@@ -16086,7 +16086,7 @@ export const provideService: {
|
|
|
16086
16086
|
* @since 4.0.0
|
|
16087
16087
|
* @category Services
|
|
16088
16088
|
*/
|
|
16089
|
-
<I, S>(key: ServiceMap.
|
|
16089
|
+
<I, S>(key: ServiceMap.Key<I, S>, service: NoInfer<S>): <A, E, R>(
|
|
16090
16090
|
self: Stream<A, E, R>
|
|
16091
16091
|
) => Stream<A, E, Exclude<R, I>>
|
|
16092
16092
|
/**
|
|
@@ -16125,10 +16125,10 @@ export const provideService: {
|
|
|
16125
16125
|
* @since 4.0.0
|
|
16126
16126
|
* @category Services
|
|
16127
16127
|
*/
|
|
16128
|
-
<A, E, R, I, S>(self: Stream<A, E, R>, key: ServiceMap.
|
|
16128
|
+
<A, E, R, I, S>(self: Stream<A, E, R>, key: ServiceMap.Key<I, S>, service: NoInfer<S>): Stream<A, E, Exclude<R, I>>
|
|
16129
16129
|
} = dual(3, <A, E, R, I, S>(
|
|
16130
16130
|
self: Stream<A, E, R>,
|
|
16131
|
-
key: ServiceMap.
|
|
16131
|
+
key: ServiceMap.Key<I, S>,
|
|
16132
16132
|
service: NoInfer<S>
|
|
16133
16133
|
): Stream<A, E, Exclude<R, I>> => fromChannel(Channel.provideService(self.channel, key, service)))
|
|
16134
16134
|
|
|
@@ -16209,7 +16209,7 @@ export const provideServiceEffect: {
|
|
|
16209
16209
|
* @since 4.0.0
|
|
16210
16210
|
* @category Services
|
|
16211
16211
|
*/
|
|
16212
|
-
<I, S, ES, RS>(key: ServiceMap.
|
|
16212
|
+
<I, S, ES, RS>(key: ServiceMap.Key<I, S>, service: Effect.Effect<NoInfer<S>, ES, RS>): <A, E, R>(
|
|
16213
16213
|
self: Stream<A, E, R>
|
|
16214
16214
|
) => Stream<A, E | ES, Exclude<R, I> | RS>
|
|
16215
16215
|
/**
|
|
@@ -16252,12 +16252,12 @@ export const provideServiceEffect: {
|
|
|
16252
16252
|
*/
|
|
16253
16253
|
<A, E, R, I, S, ES, RS>(
|
|
16254
16254
|
self: Stream<A, E, R>,
|
|
16255
|
-
key: ServiceMap.
|
|
16255
|
+
key: ServiceMap.Key<I, S>,
|
|
16256
16256
|
service: Effect.Effect<NoInfer<S>, ES, RS>
|
|
16257
16257
|
): Stream<A, E | ES, Exclude<R, I> | RS>
|
|
16258
16258
|
} = dual(3, <A, E, R, I, S, ES, RS>(
|
|
16259
16259
|
self: Stream<A, E, R>,
|
|
16260
|
-
key: ServiceMap.
|
|
16260
|
+
key: ServiceMap.Key<I, S>,
|
|
16261
16261
|
service: Effect.Effect<NoInfer<S>, ES, RS>
|
|
16262
16262
|
): Stream<A, E | ES, Exclude<R, I> | RS> => fromChannel(Channel.provideServiceEffect(self.channel, key, service)))
|
|
16263
16263
|
|
|
@@ -16442,7 +16442,7 @@ export const updateService: {
|
|
|
16442
16442
|
* @since 2.0.0
|
|
16443
16443
|
* @category Services
|
|
16444
16444
|
*/
|
|
16445
|
-
<I, S>(key: ServiceMap.
|
|
16445
|
+
<I, S>(key: ServiceMap.Key<I, S>, f: (service: NoInfer<S>) => S): <A, E, R>(
|
|
16446
16446
|
self: Stream<A, E, R>
|
|
16447
16447
|
) => Stream<A, E, R | I>
|
|
16448
16448
|
/**
|
|
@@ -16472,12 +16472,12 @@ export const updateService: {
|
|
|
16472
16472
|
*/
|
|
16473
16473
|
<A, E, R, I, S>(
|
|
16474
16474
|
self: Stream<A, E, R>,
|
|
16475
|
-
key: ServiceMap.
|
|
16475
|
+
key: ServiceMap.Key<I, S>,
|
|
16476
16476
|
f: (service: NoInfer<S>) => S
|
|
16477
16477
|
): Stream<A, E, R | I>
|
|
16478
16478
|
} = dual(3, <A, E, R, I, S>(
|
|
16479
16479
|
self: Stream<A, E, R>,
|
|
16480
|
-
service: ServiceMap.
|
|
16480
|
+
service: ServiceMap.Key<I, S>,
|
|
16481
16481
|
f: (service: NoInfer<S>) => S
|
|
16482
16482
|
): Stream<A, E, R | I> =>
|
|
16483
16483
|
updateServices(self, (services) =>
|
package/src/index.ts
CHANGED
|
@@ -2614,7 +2614,7 @@ export * as Optic from "./Optic.ts"
|
|
|
2614
2614
|
* **Gotchas**
|
|
2615
2615
|
*
|
|
2616
2616
|
* - `Option.some(null)` is a valid `Some`; use {@link fromNullishOr} to treat `null`/`undefined` as `None`
|
|
2617
|
-
* - {@link filterMap}
|
|
2617
|
+
* - {@link filterMap} uses a `Filter` callback that returns `Result`
|
|
2618
2618
|
* - {@link getOrThrow} throws a generic `Error`; prefer {@link getOrThrowWith} for custom errors
|
|
2619
2619
|
* - `None` is a singleton; compare with {@link isNone}, not `===`
|
|
2620
2620
|
* - When yielded in `Effect.gen`, a `None` becomes a `NoSuchElementError` defect
|
package/src/internal/effect.ts
CHANGED
|
@@ -1983,17 +1983,17 @@ export const exitFindErrorOption = <A, E>(self: Exit.Exit<A, E>): Option.Option<
|
|
|
1983
1983
|
|
|
1984
1984
|
/** @internal */
|
|
1985
1985
|
export const service: {
|
|
1986
|
-
<I, S>(service: ServiceMap.
|
|
1986
|
+
<I, S>(service: ServiceMap.Key<I, S>): Effect.Effect<S, never, I>
|
|
1987
1987
|
} = fromYieldable as any
|
|
1988
1988
|
|
|
1989
1989
|
/** @internal */
|
|
1990
1990
|
export const serviceOption = <I, S>(
|
|
1991
|
-
service: ServiceMap.
|
|
1991
|
+
service: ServiceMap.Key<I, S>
|
|
1992
1992
|
): Effect.Effect<Option.Option<S>> => withFiber((fiber) => succeed(ServiceMap.getOption(fiber.services, service)))
|
|
1993
1993
|
|
|
1994
1994
|
/** @internal */
|
|
1995
1995
|
export const serviceOptional = <I, S>(
|
|
1996
|
-
service: ServiceMap.
|
|
1996
|
+
service: ServiceMap.Key<I, S>
|
|
1997
1997
|
): Effect.Effect<S, Cause.NoSuchElementError> =>
|
|
1998
1998
|
withFiber((fiber) =>
|
|
1999
1999
|
fiber.services.mapUnsafe.has(service.key)
|
|
@@ -2031,19 +2031,19 @@ export const updateServices: {
|
|
|
2031
2031
|
/** @internal */
|
|
2032
2032
|
export const updateService: {
|
|
2033
2033
|
<I, A>(
|
|
2034
|
-
service: ServiceMap.
|
|
2034
|
+
service: ServiceMap.Key<I, A>,
|
|
2035
2035
|
f: (value: A) => A
|
|
2036
2036
|
): <XA, E, R>(self: Effect.Effect<XA, E, R>) => Effect.Effect<XA, E, R | I>
|
|
2037
2037
|
<XA, E, R, I, A>(
|
|
2038
2038
|
self: Effect.Effect<XA, E, R>,
|
|
2039
|
-
service: ServiceMap.
|
|
2039
|
+
service: ServiceMap.Key<I, A>,
|
|
2040
2040
|
f: (value: A) => A
|
|
2041
2041
|
): Effect.Effect<XA, E, R | I>
|
|
2042
2042
|
} = dual(
|
|
2043
2043
|
3,
|
|
2044
2044
|
<XA, E, R, I, A>(
|
|
2045
2045
|
self: Effect.Effect<XA, E, R>,
|
|
2046
|
-
service: ServiceMap.
|
|
2046
|
+
service: ServiceMap.Key<I, A>,
|
|
2047
2047
|
f: (value: A) => A
|
|
2048
2048
|
): Effect.Effect<XA, E, R | I> =>
|
|
2049
2049
|
updateServices(self, (s) => {
|
|
@@ -2088,20 +2088,20 @@ export const provideServices: {
|
|
|
2088
2088
|
/** @internal */
|
|
2089
2089
|
export const provideService: {
|
|
2090
2090
|
<I, S>(
|
|
2091
|
-
service: ServiceMap.
|
|
2091
|
+
service: ServiceMap.Key<I, S>
|
|
2092
2092
|
): {
|
|
2093
2093
|
(implementation: S): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, I>>
|
|
2094
2094
|
<A, E, R>(self: Effect.Effect<A, E, R>, implementation: S): Effect.Effect<A, E, Exclude<R, I>>
|
|
2095
2095
|
}
|
|
2096
2096
|
<I, S>(
|
|
2097
|
-
key: ServiceMap.
|
|
2097
|
+
key: ServiceMap.Key<I, S>,
|
|
2098
2098
|
implementation: S
|
|
2099
2099
|
): <A, E, R>(
|
|
2100
2100
|
self: Effect.Effect<A, E, R>
|
|
2101
2101
|
) => Effect.Effect<A, E, Exclude<R, I>>
|
|
2102
2102
|
<A, E, R, I, S>(
|
|
2103
2103
|
self: Effect.Effect<A, E, R>,
|
|
2104
|
-
service: ServiceMap.
|
|
2104
|
+
service: ServiceMap.Key<I, S>,
|
|
2105
2105
|
implementation: S
|
|
2106
2106
|
): Effect.Effect<A, E, Exclude<R, I>>
|
|
2107
2107
|
} = function(this: any) {
|
|
@@ -2114,7 +2114,7 @@ export const provideService: {
|
|
|
2114
2114
|
|
|
2115
2115
|
const provideServiceImpl = <A, E, R, I, S>(
|
|
2116
2116
|
self: Effect.Effect<A, E, R>,
|
|
2117
|
-
service: ServiceMap.
|
|
2117
|
+
service: ServiceMap.Key<I, S>,
|
|
2118
2118
|
implementation: S
|
|
2119
2119
|
): Effect.Effect<A, E, Exclude<R, I>> =>
|
|
2120
2120
|
updateServices(self, (s) => {
|
|
@@ -2126,21 +2126,21 @@ const provideServiceImpl = <A, E, R, I, S>(
|
|
|
2126
2126
|
/** @internal */
|
|
2127
2127
|
export const provideServiceEffect: {
|
|
2128
2128
|
<I, S, E2, R2>(
|
|
2129
|
-
service: ServiceMap.
|
|
2129
|
+
service: ServiceMap.Key<I, S>,
|
|
2130
2130
|
acquire: Effect.Effect<S, E2, R2>
|
|
2131
2131
|
): <A, E, R>(
|
|
2132
2132
|
self: Effect.Effect<A, E, R>
|
|
2133
2133
|
) => Effect.Effect<A, E | E2, Exclude<R, I> | R2>
|
|
2134
2134
|
<A, E, R, I, S, E2, R2>(
|
|
2135
2135
|
self: Effect.Effect<A, E, R>,
|
|
2136
|
-
service: ServiceMap.
|
|
2136
|
+
service: ServiceMap.Key<I, S>,
|
|
2137
2137
|
acquire: Effect.Effect<S, E2, R2>
|
|
2138
2138
|
): Effect.Effect<A, E | E2, Exclude<R, I> | R2>
|
|
2139
2139
|
} = dual(
|
|
2140
2140
|
3,
|
|
2141
2141
|
<A, E, R, I, S, E2, R2>(
|
|
2142
2142
|
self: Effect.Effect<A, E, R>,
|
|
2143
|
-
service: ServiceMap.
|
|
2143
|
+
service: ServiceMap.Key<I, S>,
|
|
2144
2144
|
acquire: Effect.Effect<S, E2, R2>
|
|
2145
2145
|
): Effect.Effect<A, E | E2, Exclude<R, I> | R2> =>
|
|
2146
2146
|
flatMap(acquire, (implementation) => provideService(self, service, implementation))
|
|
@@ -4214,24 +4214,24 @@ export const all = <
|
|
|
4214
4214
|
|
|
4215
4215
|
/** @internal */
|
|
4216
4216
|
export const partition: {
|
|
4217
|
-
<A,
|
|
4218
|
-
|
|
4217
|
+
<A, B, E, R>(
|
|
4218
|
+
f: (a: A, i: number) => Effect.Effect<B, E, R>,
|
|
4219
4219
|
options?: { readonly concurrency?: Concurrency | undefined }
|
|
4220
|
-
): (elements: Iterable<A>) => Effect.Effect<[excluded: Array<
|
|
4221
|
-
<A,
|
|
4220
|
+
): (elements: Iterable<A>) => Effect.Effect<[excluded: Array<E>, satisfying: Array<B>], never, R>
|
|
4221
|
+
<A, B, E, R>(
|
|
4222
4222
|
elements: Iterable<A>,
|
|
4223
|
-
|
|
4223
|
+
f: (a: A, i: number) => Effect.Effect<B, E, R>,
|
|
4224
4224
|
options?: { readonly concurrency?: Concurrency | undefined }
|
|
4225
|
-
): Effect.Effect<[excluded: Array<
|
|
4225
|
+
): Effect.Effect<[excluded: Array<E>, satisfying: Array<B>], never, R>
|
|
4226
4226
|
} = dual(
|
|
4227
4227
|
(args) => isIterable(args[0]) && !isEffect(args[0]),
|
|
4228
|
-
<A,
|
|
4228
|
+
<A, B, E, R>(
|
|
4229
4229
|
elements: Iterable<A>,
|
|
4230
|
-
|
|
4230
|
+
f: (a: A, i: number) => Effect.Effect<B, E, R>,
|
|
4231
4231
|
options?: { readonly concurrency?: Concurrency | undefined }
|
|
4232
|
-
): Effect.Effect<[excluded: Array<
|
|
4232
|
+
): Effect.Effect<[excluded: Array<E>, satisfying: Array<B>], never, R> =>
|
|
4233
4233
|
map(
|
|
4234
|
-
forEach(elements,
|
|
4234
|
+
forEach(elements, (a, i) => result(f(a, i)), options),
|
|
4235
4235
|
(results) => Arr.partition(results, identity)
|
|
4236
4236
|
)
|
|
4237
4237
|
)
|
|
@@ -4279,7 +4279,7 @@ export const validate: {
|
|
|
4279
4279
|
} | undefined
|
|
4280
4280
|
): Effect.Effect<Array<B> | void, Arr.NonEmptyArray<E>, R> =>
|
|
4281
4281
|
flatMap(
|
|
4282
|
-
partition(elements,
|
|
4282
|
+
partition(elements, f, { concurrency: options?.concurrency }),
|
|
4283
4283
|
([excluded, satisfying]) => {
|
|
4284
4284
|
if (Arr.isArrayNonEmpty(excluded)) {
|
|
4285
4285
|
return fail(excluded)
|
|
@@ -200,7 +200,7 @@ export class Decoding<S extends Schema.Top> {
|
|
|
200
200
|
* decoding context.
|
|
201
201
|
*/
|
|
202
202
|
provide<Id, Service>(
|
|
203
|
-
service: ServiceMap.
|
|
203
|
+
service: ServiceMap.Key<Id, Service>,
|
|
204
204
|
implementation: Service
|
|
205
205
|
): Decoding<Schema.middlewareDecoding<S, Exclude<S["DecodingServices"], Id>>> {
|
|
206
206
|
return new Decoding(
|
|
@@ -276,7 +276,7 @@ class Encoding<S extends Schema.Top> {
|
|
|
276
276
|
* encoding context.
|
|
277
277
|
*/
|
|
278
278
|
provide<Id, Service>(
|
|
279
|
-
service: ServiceMap.
|
|
279
|
+
service: ServiceMap.Key<Id, Service>,
|
|
280
280
|
implementation: Service
|
|
281
281
|
): Encoding<Schema.middlewareEncoding<S, Exclude<S["EncodingServices"], Id>>> {
|
|
282
282
|
return new Encoding(
|