@glimmer/util
Version:
Common utilities used in Glimmer
31 lines (25 loc) • 3.48 kB
JavaScript
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=