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.
Files changed (141) hide show
  1. package/dist/Channel.d.ts +6 -6
  2. package/dist/Channel.d.ts.map +1 -1
  3. package/dist/Channel.js.map +1 -1
  4. package/dist/Config.d.ts +5 -6
  5. package/dist/Config.d.ts.map +1 -1
  6. package/dist/Config.js +3 -3
  7. package/dist/Config.js.map +1 -1
  8. package/dist/Effect.d.ts +22 -22
  9. package/dist/Effect.d.ts.map +1 -1
  10. package/dist/Effect.js +3 -3
  11. package/dist/Effect.js.map +1 -1
  12. package/dist/ErrorReporter.js +2 -2
  13. package/dist/ErrorReporter.js.map +1 -1
  14. package/dist/Layer.d.ts +9 -9
  15. package/dist/Layer.d.ts.map +1 -1
  16. package/dist/Layer.js.map +1 -1
  17. package/dist/Schedule.d.ts +14 -6
  18. package/dist/Schedule.d.ts.map +1 -1
  19. package/dist/Schedule.js +25 -9
  20. package/dist/Schedule.js.map +1 -1
  21. package/dist/Schema.d.ts +21 -0
  22. package/dist/Schema.d.ts.map +1 -1
  23. package/dist/Schema.js.map +1 -1
  24. package/dist/ServiceMap.d.ts +39 -30
  25. package/dist/ServiceMap.d.ts.map +1 -1
  26. package/dist/ServiceMap.js +3 -3
  27. package/dist/ServiceMap.js.map +1 -1
  28. package/dist/Sink.d.ts +2 -2
  29. package/dist/Sink.d.ts.map +1 -1
  30. package/dist/Sink.js.map +1 -1
  31. package/dist/Stream.d.ts +6 -6
  32. package/dist/Stream.d.ts.map +1 -1
  33. package/dist/Stream.js.map +1 -1
  34. package/dist/index.d.ts +1 -1
  35. package/dist/index.js +1 -1
  36. package/dist/internal/effect.js +2 -2
  37. package/dist/internal/effect.js.map +1 -1
  38. package/dist/testing/TestSchema.d.ts +2 -2
  39. package/dist/testing/TestSchema.d.ts.map +1 -1
  40. package/dist/testing/TestSchema.js.map +1 -1
  41. package/dist/unstable/ai/AiError.d.ts +90 -10
  42. package/dist/unstable/ai/AiError.d.ts.map +1 -1
  43. package/dist/unstable/ai/AiError.js +11 -12
  44. package/dist/unstable/ai/AiError.js.map +1 -1
  45. package/dist/unstable/ai/Model.d.ts +25 -7
  46. package/dist/unstable/ai/Model.d.ts.map +1 -1
  47. package/dist/unstable/ai/Model.js +22 -6
  48. package/dist/unstable/ai/Model.js.map +1 -1
  49. package/dist/unstable/ai/Tool.d.ts +3 -3
  50. package/dist/unstable/ai/Tool.d.ts.map +1 -1
  51. package/dist/unstable/ai/Tool.js.map +1 -1
  52. package/dist/unstable/ai/index.d.ts +1 -1
  53. package/dist/unstable/ai/index.js +1 -1
  54. package/dist/unstable/cli/Command.d.ts +6 -6
  55. package/dist/unstable/cli/Command.d.ts.map +1 -1
  56. package/dist/unstable/cli/Command.js.map +1 -1
  57. package/dist/unstable/cli/internal/command.d.ts +2 -2
  58. package/dist/unstable/cli/internal/command.d.ts.map +1 -1
  59. package/dist/unstable/cluster/Entity.d.ts +2 -2
  60. package/dist/unstable/cluster/Entity.d.ts.map +1 -1
  61. package/dist/unstable/cluster/Entity.js.map +1 -1
  62. package/dist/unstable/cluster/ShardingConfig.js +20 -20
  63. package/dist/unstable/cluster/ShardingConfig.js.map +1 -1
  64. package/dist/unstable/httpapi/HttpApi.d.ts +3 -3
  65. package/dist/unstable/httpapi/HttpApi.d.ts.map +1 -1
  66. package/dist/unstable/httpapi/HttpApi.js.map +1 -1
  67. package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
  68. package/dist/unstable/httpapi/HttpApiClient.d.ts +7 -2
  69. package/dist/unstable/httpapi/HttpApiClient.d.ts.map +1 -1
  70. package/dist/unstable/httpapi/HttpApiClient.js.map +1 -1
  71. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts +3 -3
  72. package/dist/unstable/httpapi/HttpApiEndpoint.d.ts.map +1 -1
  73. package/dist/unstable/httpapi/HttpApiEndpoint.js.map +1 -1
  74. package/dist/unstable/httpapi/HttpApiGroup.d.ts +3 -3
  75. package/dist/unstable/httpapi/HttpApiGroup.d.ts.map +1 -1
  76. package/dist/unstable/httpapi/HttpApiGroup.js.map +1 -1
  77. package/dist/unstable/httpapi/HttpApiMiddleware.d.ts +4 -4
  78. package/dist/unstable/httpapi/HttpApiMiddleware.d.ts.map +1 -1
  79. package/dist/unstable/httpapi/HttpApiMiddleware.js.map +1 -1
  80. package/dist/unstable/httpapi/HttpApiSecurity.d.ts +2 -2
  81. package/dist/unstable/httpapi/HttpApiSecurity.d.ts.map +1 -1
  82. package/dist/unstable/httpapi/HttpApiSecurity.js.map +1 -1
  83. package/dist/unstable/httpapi/OpenApi.js.map +1 -1
  84. package/dist/unstable/process/ChildProcess.d.ts +3 -126
  85. package/dist/unstable/process/ChildProcess.d.ts.map +1 -1
  86. package/dist/unstable/process/ChildProcess.js +1 -65
  87. package/dist/unstable/process/ChildProcess.js.map +1 -1
  88. package/dist/unstable/process/ChildProcessSpawner.d.ts +39 -7
  89. package/dist/unstable/process/ChildProcessSpawner.d.ts.map +1 -1
  90. package/dist/unstable/process/ChildProcessSpawner.js +21 -1
  91. package/dist/unstable/process/ChildProcessSpawner.js.map +1 -1
  92. package/dist/unstable/rpc/Rpc.d.ts +1 -1
  93. package/dist/unstable/rpc/Rpc.d.ts.map +1 -1
  94. package/dist/unstable/rpc/Rpc.js.map +1 -1
  95. package/dist/unstable/rpc/RpcGroup.d.ts +2 -2
  96. package/dist/unstable/rpc/RpcGroup.d.ts.map +1 -1
  97. package/dist/unstable/rpc/RpcGroup.js.map +1 -1
  98. package/dist/unstable/rpc/RpcMiddleware.d.ts +3 -3
  99. package/dist/unstable/rpc/RpcMiddleware.d.ts.map +1 -1
  100. package/dist/unstable/rpc/RpcMiddleware.js.map +1 -1
  101. package/dist/unstable/sql/SqlClient.d.ts +1 -1
  102. package/dist/unstable/sql/SqlClient.d.ts.map +1 -1
  103. package/dist/unstable/workflow/Workflow.d.ts +1 -1
  104. package/dist/unstable/workflow/Workflow.d.ts.map +1 -1
  105. package/package.json +1 -1
  106. package/src/Channel.ts +9 -9
  107. package/src/Config.ts +9 -9
  108. package/src/Effect.ts +24 -32
  109. package/src/ErrorReporter.ts +2 -2
  110. package/src/Layer.ts +11 -15
  111. package/src/Schedule.ts +35 -19
  112. package/src/Schema.ts +21 -0
  113. package/src/ServiceMap.ts +47 -38
  114. package/src/Sink.ts +3 -3
  115. package/src/Stream.ts +9 -9
  116. package/src/index.ts +1 -1
  117. package/src/internal/effect.ts +24 -24
  118. package/src/testing/TestSchema.ts +2 -2
  119. package/src/unstable/ai/AiError.ts +95 -42
  120. package/src/unstable/ai/Model.ts +40 -9
  121. package/src/unstable/ai/Tool.ts +4 -4
  122. package/src/unstable/ai/index.ts +1 -1
  123. package/src/unstable/cli/Command.ts +9 -12
  124. package/src/unstable/cli/internal/command.ts +2 -2
  125. package/src/unstable/cluster/Entity.ts +4 -4
  126. package/src/unstable/cluster/ShardingConfig.ts +20 -20
  127. package/src/unstable/httpapi/HttpApi.ts +5 -5
  128. package/src/unstable/httpapi/HttpApiBuilder.ts +2 -2
  129. package/src/unstable/httpapi/HttpApiClient.ts +11 -3
  130. package/src/unstable/httpapi/HttpApiEndpoint.ts +7 -7
  131. package/src/unstable/httpapi/HttpApiGroup.ts +6 -6
  132. package/src/unstable/httpapi/HttpApiMiddleware.ts +4 -4
  133. package/src/unstable/httpapi/HttpApiSecurity.ts +3 -3
  134. package/src/unstable/httpapi/OpenApi.ts +2 -2
  135. package/src/unstable/process/ChildProcess.ts +4 -206
  136. package/src/unstable/process/ChildProcessSpawner.ts +69 -14
  137. package/src/unstable/rpc/Rpc.ts +2 -2
  138. package/src/unstable/rpc/RpcGroup.ts +4 -4
  139. package/src/unstable/rpc/RpcMiddleware.ts +3 -3
  140. package/src/unstable/sql/SqlClient.ts +1 -1
  141. 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 Pipeable, Inspectable, Yieldable<Service<Identifier, Shape>, Shape, never, Identifier>
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 = Service<never, any> | Service<any, 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 `Service`.
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.isService(ServiceMap.Service("Service")), true)
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 isService = (u: unknown): u is Service<any, any> => hasProperty(u, ServiceTypeId)
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: Service<I, S>,
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: Service<I, S>, service: Types.NoInfer<S>): <Services>(self: ServiceMap<Services>) => ServiceMap<Services | I>
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: Service<I, S>, service: Types.NoInfer<S>): ServiceMap<Services | I>
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: Service<I, S>,
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: Service<I, S>, service: Option.Option<Types.NoInfer<S>>): <Services>(self: ServiceMap<Services>) => ServiceMap<Services | I>
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: Service<I, S>,
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: Service<I, S>,
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: Service<I, S>, orElse: LazyArg<B>): <Services>(self: ServiceMap<Services>) => S | B
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: Service<I, S>, orElse: LazyArg<B>): S | B
807
- } = dual(3, <Services, S, I, B>(self: ServiceMap<Services>, key: Service<I, S>, orElse: LazyArg<B>): S | B => {
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: Service<I, S>): <Services>(self: ServiceMap<Services>) => S | undefined
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: Service<I, S>): S | undefined
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: Service<I, S>): S | undefined => self.mapUnsafe.get(key.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: Service<I, S>): <Services>(self: ServiceMap<Services>) => S
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: Service<I, S>): S
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: Service<I, S>): S => {
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: Service<I, S>): (self: ServiceMap<Services>) => S
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: Service<I, S>): S
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: Service<any, any>) => {
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: Service<I, S>): <Services>(self: ServiceMap<Services>) => Option.Option<S>
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: Service<I, S>): Option.Option<S>
1155
- } = dual(2, <Services, I extends Services, S>(self: ServiceMap<Services>, service: Service<I, S>): Option.Option<S> => {
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<Service<any, any>>>(
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<Service<any, any>>>(
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.Service<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>>
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.Service<I, S>,
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.Service<I, S>,
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.Service<I, S>, service: NoInfer<S>): <A, E, R>(
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.Service<I, S>, service: NoInfer<S>): Stream<A, E, Exclude<R, I>>
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.Service<I, S>,
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.Service<I, S>, service: Effect.Effect<NoInfer<S>, ES, RS>): <A, E, R>(
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.Service<I, S>,
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.Service<I, S>,
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.Service<I, S>, f: (service: NoInfer<S>) => S): <A, E, R>(
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.Service<I, S>,
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.Service<I, S>,
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} is an alias for {@link flatMap}
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
@@ -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.Service<I, S>): Effect.Effect<S, never, I>
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.Service<I, S>
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.Service<I, S>
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.Service<I, A>,
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.Service<I, A>,
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.Service<I, A>,
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.Service<I, S>
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.Service<I, S>,
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.Service<I, S>,
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.Service<I, S>,
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.Service<I, S>,
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.Service<I, S>,
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.Service<I, S>,
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, Pass, Fail, E, R>(
4218
- filter: Filter.FilterEffect<NoInfer<A>, Pass, Fail, E, R, [i: number]>,
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<Fail>, satisfying: Array<Pass>], E, R>
4221
- <A, Pass, Fail, E, R>(
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
- filter: Filter.FilterEffect<NoInfer<A>, Pass, Fail, E, R, [i: number]>,
4223
+ f: (a: A, i: number) => Effect.Effect<B, E, R>,
4224
4224
  options?: { readonly concurrency?: Concurrency | undefined }
4225
- ): Effect.Effect<[excluded: Array<Fail>, satisfying: Array<Pass>], E, R>
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, Pass, Fail, E, R>(
4228
+ <A, B, E, R>(
4229
4229
  elements: Iterable<A>,
4230
- filter: Filter.FilterEffect<A, Pass, Fail, E, R, [i: number]>,
4230
+ f: (a: A, i: number) => Effect.Effect<B, E, R>,
4231
4231
  options?: { readonly concurrency?: Concurrency | undefined }
4232
- ): Effect.Effect<[excluded: Array<Fail>, satisfying: Array<Pass>], E, R> =>
4232
+ ): Effect.Effect<[excluded: Array<E>, satisfying: Array<B>], never, R> =>
4233
4233
  map(
4234
- forEach(elements, filter, options),
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, (a, i) => result(f(a, i)), { concurrency: options?.concurrency }),
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.Service<Id, Service>,
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.Service<Id, Service>,
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(