File size: 427 Bytes
4c76b0d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/** 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;
    },
  });
}