UNPKG

@glimmer/util

Version:

Common utilities used in Glimmer

31 lines (25 loc) 3.48 kB
import { DEBUG } from '@glimmer/env'; import { HAS_NATIVE_PROXY } from './platform-utils'; export default function buildUntouchableThis(source) { let context = null; if (DEBUG && HAS_NATIVE_PROXY) { let assertOnProperty = property => { throw new Error(`You accessed \`this.${String(property)}\` from a function passed to the ${source}, but the function itself was not bound to a valid \`this\` context. Consider updating to use a bound function (for instance, use an arrow function, \`() => {}\`).`); }; context = new Proxy({}, { get(_target, property) { assertOnProperty(property); }, set(_target, property) { assertOnProperty(property); return false; }, has(_target, property) { assertOnProperty(property); return false; } }); } return context; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3V0aWwvbGliL3VudG91Y2hhYmxlLXRoaXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxLQUFULFFBQXNCLGNBQXRCO0FBQ0EsU0FBUyxnQkFBVCxRQUFpQyxrQkFBakM7QUFFQSxlQUFjLFNBQVUsb0JBQVYsQ0FBK0IsTUFBL0IsRUFBNkM7QUFDekQsTUFBSSxPQUFPLEdBQWtCLElBQTdCOztBQUNBLE1BQUksS0FBSyxJQUFJLGdCQUFiLEVBQStCO0FBQzdCLFFBQUksZ0JBQWdCLEdBQUksUUFBRCxJQUF1QztBQUM1RCxZQUFNLElBQUksS0FBSixDQUNKLHVCQUF1QixNQUFNLENBQzNCLFFBRDJCLENBRTVCLG9DQUFvQyxNQUFNLHFLQUh2QyxDQUFOO0FBS0QsS0FORDs7QUFRQSxJQUFBLE9BQU8sR0FBRyxJQUFJLEtBQUosQ0FDUixFQURRLEVBRVI7QUFDRSxNQUFBLEdBQUcsQ0FBQyxPQUFELEVBQWMsUUFBZCxFQUF1QztBQUN4QyxRQUFBLGdCQUFnQixDQUFDLFFBQUQsQ0FBaEI7QUFDRCxPQUhIOztBQUtFLE1BQUEsR0FBRyxDQUFDLE9BQUQsRUFBYyxRQUFkLEVBQXVDO0FBQ3hDLFFBQUEsZ0JBQWdCLENBQUMsUUFBRCxDQUFoQjtBQUVBLGVBQU8sS0FBUDtBQUNELE9BVEg7O0FBV0UsTUFBQSxHQUFHLENBQUMsT0FBRCxFQUFjLFFBQWQsRUFBdUM7QUFDeEMsUUFBQSxnQkFBZ0IsQ0FBQyxRQUFELENBQWhCO0FBRUEsZUFBTyxLQUFQO0FBQ0Q7O0FBZkgsS0FGUSxDQUFWO0FBb0JEOztBQUVELFNBQU8sT0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgREVCVUcgfSBmcm9tICdAZ2xpbW1lci9lbnYnO1xuaW1wb3J0IHsgSEFTX05BVElWRV9QUk9YWSB9IGZyb20gJy4vcGxhdGZvcm0tdXRpbHMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBidWlsZFVudG91Y2hhYmxlVGhpcyhzb3VyY2U6IHN0cmluZyk6IG51bGwgfCBvYmplY3Qge1xuICBsZXQgY29udGV4dDogbnVsbCB8IG9iamVjdCA9IG51bGw7XG4gIGlmIChERUJVRyAmJiBIQVNfTkFUSVZFX1BST1hZKSB7XG4gICAgbGV0IGFzc2VydE9uUHJvcGVydHkgPSAocHJvcGVydHk6IHN0cmluZyB8IG51bWJlciB8IHN5bWJvbCkgPT4ge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgWW91IGFjY2Vzc2VkIFxcYHRoaXMuJHtTdHJpbmcoXG4gICAgICAgICAgcHJvcGVydHlcbiAgICAgICAgKX1cXGAgZnJvbSBhIGZ1bmN0aW9uIHBhc3NlZCB0byB0aGUgJHtzb3VyY2V9LCBidXQgdGhlIGZ1bmN0aW9uIGl0c2VsZiB3YXMgbm90IGJvdW5kIHRvIGEgdmFsaWQgXFxgdGhpc1xcYCBjb250ZXh0LiBDb25zaWRlciB1cGRhdGluZyB0byB1c2UgYSBib3VuZCBmdW5jdGlvbiAoZm9yIGluc3RhbmNlLCB1c2UgYW4gYXJyb3cgZnVuY3Rpb24sIFxcYCgpID0+IHt9XFxgKS5gXG4gICAgICApO1xuICAgIH07XG5cbiAgICBjb250ZXh0ID0gbmV3IFByb3h5KFxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgIGdldChfdGFyZ2V0OiB7fSwgcHJvcGVydHk6IHN0cmluZyB8IHN5bWJvbCkge1xuICAgICAgICAgIGFzc2VydE9uUHJvcGVydHkocHJvcGVydHkpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHNldChfdGFyZ2V0OiB7fSwgcHJvcGVydHk6IHN0cmluZyB8IHN5bWJvbCkge1xuICAgICAgICAgIGFzc2VydE9uUHJvcGVydHkocHJvcGVydHkpO1xuXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9LFxuXG4gICAgICAgIGhhcyhfdGFyZ2V0OiB7fSwgcHJvcGVydHk6IHN0cmluZyB8IHN5bWJvbCkge1xuICAgICAgICAgIGFzc2VydE9uUHJvcGVydHkocHJvcGVydHkpO1xuXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICByZXR1cm4gY29udGV4dDtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=