| 121 | } |
| 122 | |
| 123 | function makeLiveProxy(helperName, property) { |
| 124 | const resolve = () => Container.helpers(helperName)?.[property] |
| 125 | return new Proxy(function () {}, { |
| 126 | get(_, prop) { |
| 127 | const target = resolve() |
| 128 | if (target == null) return undefined |
| 129 | const value = target[prop] |
| 130 | if (typeof value === 'function') return value.bind(target) |
| 131 | return value |
| 132 | }, |
| 133 | has(_, prop) { |
| 134 | const target = resolve() |
| 135 | return target != null && prop in target |
| 136 | }, |
| 137 | apply(_, thisArg, args) { |
| 138 | const target = resolve() |
| 139 | return target?.apply(thisArg, args) |
| 140 | }, |
| 141 | set(_, prop, value) { |
| 142 | const target = resolve() |
| 143 | if (target != null) target[prop] = value |
| 144 | return true |
| 145 | }, |
| 146 | getPrototypeOf() { |
| 147 | const target = resolve() |
| 148 | return target != null ? Object.getPrototypeOf(target) : null |
| 149 | }, |
| 150 | ownKeys() { |
| 151 | const target = resolve() |
| 152 | return target != null ? Reflect.ownKeys(target) : [] |
| 153 | }, |
| 154 | getOwnPropertyDescriptor(_, prop) { |
| 155 | const target = resolve() |
| 156 | return target != null ? Object.getOwnPropertyDescriptor(target, prop) : undefined |
| 157 | }, |
| 158 | }) |
| 159 | } |