| 2312 | } as any |
| 2313 | |
| 2314 | const mockImpl = <I, S extends object>(service: Context.Key<I, S>, implementation: PartialEffectful<S>): Layer<I> => |
| 2315 | succeed(service)( |
| 2316 | new Proxy({ ...implementation as object } as S, { |
| 2317 | get(target, prop, _receiver) { |
| 2318 | if (prop in target) { |
| 2319 | return target[prop as keyof S] |
| 2320 | } |
| 2321 | const prevLimit = getStackTraceLimit() |
| 2322 | setStackTraceLimit(2) |
| 2323 | const error = new Error(`${service.key}: Unimplemented method "${prop.toString()}"`) |
| 2324 | setStackTraceLimit(prevLimit) |
| 2325 | error.name = "UnimplementedError" |
| 2326 | return makeUnimplemented(error) |
| 2327 | }, |
| 2328 | has: constTrue |
| 2329 | }) |
| 2330 | ) |
| 2331 | |
| 2332 | const makeUnimplemented = (error: globalThis.Error) => { |
| 2333 | const dead = Object.assign(internalEffect.die(error), { |