| /** Defines a lazily computed enumerable property on a runtime facade. */ | |
| export function defineCachedValue(target: object, key: PropertyKey, create: () => unknown): void { | |
| let cached: unknown; | |
| let ready = false; | |
| Object.defineProperty(target, key, { | |
| configurable: true, | |
| enumerable: true, | |
| get() { | |
| if (!ready) { | |
| cached = create(); | |
| ready = true; | |
| } | |
| return cached; | |
| }, | |
| }); | |
| } | |