(target, id, keys, writable = true, check)
| 629 | } |
| 630 | |
| 631 | function defineReplaceableLazyAttribute(target, id, keys, writable = true, check) { |
| 632 | let mod; |
| 633 | for (let i = 0; i < keys.length; i++) { |
| 634 | const key = keys[i]; |
| 635 | let value; |
| 636 | let setterCalled = false; |
| 637 | |
| 638 | function get() { |
| 639 | if (check !== undefined) { |
| 640 | FunctionPrototypeCall(check, this); |
| 641 | } |
| 642 | if (setterCalled) { |
| 643 | return value; |
| 644 | } |
| 645 | mod ??= require(id); |
| 646 | value ??= mod[key]; |
| 647 | return value; |
| 648 | } |
| 649 | |
| 650 | ObjectDefineProperty(get, 'name', { |
| 651 | __proto__: null, |
| 652 | value: `get ${key}`, |
| 653 | }); |
| 654 | |
| 655 | function set(val) { |
| 656 | setterCalled = true; |
| 657 | value = val; |
| 658 | } |
| 659 | ObjectDefineProperty(set, 'name', { |
| 660 | __proto__: null, |
| 661 | value: `set ${key}`, |
| 662 | }); |
| 663 | |
| 664 | ObjectDefineProperty(target, key, { |
| 665 | __proto__: null, |
| 666 | enumerable: true, |
| 667 | configurable: true, |
| 668 | get, |
| 669 | set: writable ? set : undefined, |
| 670 | }); |
| 671 | } |
| 672 | } |
| 673 | |
| 674 | function exposeLazyInterfaces(target, id, keys) { |
| 675 | defineLazyProperties(target, id, keys, false); |
no outgoing calls
no test coverage detected
searching dependent graphs…