(target: T)
| 539 | export function lazyGetter<T extends object, T2>(creator: (target: T) => T2) { |
| 540 | const key = Symbol(creator.name) |
| 541 | const f = (target: T): T2 => { |
| 542 | let lazy = (target as unknown as Lazy)[LazySymbol] |
| 543 | if (!lazy) { |
| 544 | lazy = {} |
| 545 | Object.defineProperty(target, LazySymbol, { enumerable: false, value: lazy }) |
| 546 | } else if (lazy[key]) { |
| 547 | return lazy[key] |
| 548 | } |
| 549 | const value = creator(target) |
| 550 | lazy[key] = value |
| 551 | return value |
| 552 | } |
| 553 | Object.defineProperty(f, "name", { |
| 554 | enumerable: false, |
| 555 | value: `Lazy<${creator.name}>` |
no outgoing calls
no test coverage detected