| 65 | |
| 66 | /** Accessor for a service method that returns a plain value. Wraps via `useSync`. */ |
| 67 | export const accessFn = < |
| 68 | Self extends object, |
| 69 | Shape extends Record<PropertyKey, any>, |
| 70 | K extends keyof Shape |
| 71 | >( |
| 72 | Tag: Opaque<Self, Shape>, |
| 73 | key: K |
| 74 | ): Shape[K] extends (...args: [...infer Args]) => infer A ? (...args: Readonly<Args>) => Effect.Effect<A, never, Self> |
| 75 | : never => ((...args: Array<any>) => Tag.useSync((s: any) => s[key](...args))) as any |
| 76 | |
| 77 | /** Accessor for a service method that returns an Effect. Delegates via `use`. */ |
| 78 | export const accessEffectFn = < |