* Provide a value for a dependency effect with a getter. * @param name The name of the dependency. * @param getter The getter to provide for the dependency. * @returns
(
name: Name,
getter: ExtractEffect<E> extends infer E extends Effect ?
E extends Effect.Dependency<Name, infer R> ?
() => R | Generator<F, R, unknown> | Effected<F, R>
: never
: never,
)
| 1156 | * @returns |
| 1157 | */ |
| 1158 | provideBy<Name extends DependencyName<ExtractEffect<E>>, F extends Effect = never>( |
| 1159 | name: Name, |
| 1160 | getter: ExtractEffect<E> extends infer E extends Effect ? |
| 1161 | E extends Effect.Dependency<Name, infer R> ? |
| 1162 | () => R | Generator<F, R, unknown> | Effected<F, R> |
| 1163 | : never |
| 1164 | : never, |
| 1165 | ): Effected<ExcludeEffect<E, Effect.Dependency<Name>> | F, R> { |
| 1166 | return this.resume(`dependency:${name}`, getter as never) as never; |
| 1167 | } |
| 1168 | |
| 1169 | /** |
| 1170 | * Apply a handler to the effected program. |