UNPKG

vike

Version:

The Framework *You* Control - Next.js & Nuxt alternative for unprecedented flexibility and dependability.

31 lines (30 loc) 1.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.preservePropertyGetters = preservePropertyGetters; const assert_js_1 = require("./assert.js"); function preservePropertyGetters(objOriginal) { // Store original getter descriptors const getters = Object.fromEntries(Object.entries(Object.getOwnPropertyDescriptors(objOriginal)).filter(([_, desc]) => 'get' in desc)); // Make getters non-enumerable for (const [key, desc] of Object.entries(getters)) { Object.defineProperty(objOriginal, key, { ...desc, enumerable: false }); } const restorePropertyGetters = function () { const objCopy = this; delete objOriginal._restorePropertyGetters; delete objCopy._restorePropertyGetters; for (const [key, desc] of Object.entries(getters)) { if (objCopy !== objOriginal) { (0, assert_js_1.assert)(!(key in objCopy)); Object.defineProperty(objCopy, key, desc); // Add property getters to copy } (0, assert_js_1.assert)(key in objOriginal); Object.defineProperty(objOriginal, key, desc); // Restore original `enumerable` value } }; Object.defineProperty(objOriginal, '_restorePropertyGetters', { value: restorePropertyGetters, enumerable: true, configurable: true, }); }