/** * @deprecated use initOnRead */ export function cachedProperty(object: object, name: string, callback: () => any) { Object.defineProperty(object, name, { get: () => { const ret = callback(); delete object[name]; object[name] = ret; return ret; }, configurable: true, enumerable: true, }); } // TODO a decorator