| 686 | } as any |
| 687 | |
| 688 | const mockImpl = <I, S extends object>(tag: Context.Tag<I, S>, service: Layer.PartialEffectful<S>): Layer.Layer<I> => |
| 689 | succeed( |
| 690 | tag, |
| 691 | new Proxy({ ...service as object } as S, { |
| 692 | get(target, prop, _receiver) { |
| 693 | if (prop in target) { |
| 694 | return target[prop as keyof S] |
| 695 | } |
| 696 | const prevLimit = Error.stackTraceLimit |
| 697 | Error.stackTraceLimit = 2 |
| 698 | const error = new Error(`${tag.key}: Unimplemented method "${prop.toString()}"`) |
| 699 | Error.stackTraceLimit = prevLimit |
| 700 | error.name = "UnimplementedError" |
| 701 | return makeUnimplemented(error) |
| 702 | }, |
| 703 | has: constTrue |
| 704 | }) |
| 705 | ) |
| 706 | |
| 707 | const makeUnimplemented = (error: Error) => { |
| 708 | const dead = core.die(error) |