@aeternity/aepp-sdk
Version:
SDK for the æternity blockchain
15 lines • 889 B
JavaScript
import { ArgumentError } from './errors.js';
export function wrapWithProxy(valueCb) {
return new Proxy({}, Object.fromEntries(['apply', 'construct', 'defineProperty', 'deleteProperty', 'getOwnPropertyDescriptor', 'getPrototypeOf', 'isExtensible', 'ownKeys', 'preventExtensions', 'set', 'setPrototypeOf', 'get', 'has'].map(name => [name, (t, ...args) => {
const target = valueCb();
if (target == null) throw new ArgumentError('wrapped value', 'defined', target);
if (name === 'get' && args[0] === '_wrappedValue') return target;
const res = Reflect[name](target, ...args);
return typeof res === 'function' && name === 'get' ? res.bind(target) : res;
}])));
}
export function unwrapProxy(value) {
var _wrappedValue;
return (_wrappedValue = value._wrappedValue) !== null && _wrappedValue !== void 0 ? _wrappedValue : value;
}
//# sourceMappingURL=wrap-proxy.js.map