| 76 | |
| 77 | /** Accessor for a service method that returns an Effect. Delegates via `use`. */ |
| 78 | export const accessEffectFn = < |
| 79 | Self extends object, |
| 80 | Shape extends Record<PropertyKey, any>, |
| 81 | K extends keyof Shape |
| 82 | >( |
| 83 | Tag: Opaque<Self, Shape>, |
| 84 | key: K |
| 85 | ): Shape[K] extends (...args: [...infer Args]) => Effect.Effect<infer A, infer E, infer R> |
| 86 | ? (...args: Readonly<Args>) => Effect.Effect<A, E, Self | R> |
| 87 | : never => ((...args: Array<any>) => Tag.use((s: any) => s[key](...args))) as any |
| 88 | |
| 89 | /** Accessor for a service property (constant). Wraps via `useSync`. */ |
| 90 | export const accessCn = < |