@glimmer/util
Version:
Common utilities used in Glimmer
28 lines (25 loc) • 3.54 kB
JavaScript
import { DEBUG } from '@glimmer/env';
import { HAS_NATIVE_PROXY } from './platform-utils';
export default function buildUntouchableThis(source) {
var context = null;
if (DEBUG && HAS_NATIVE_PROXY) {
var assertOnProperty = function 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: function get(_target, property) {
assertOnProperty(property);
},
set: function set(_target, property) {
assertOnProperty(property);
return false;
},
has: function has(_target, property) {
assertOnProperty(property);
return false;
}
});
}
return context;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3V0aWwvbGliL3VudG91Y2hhYmxlLXRoaXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBQSxLQUFBLFFBQUEsY0FBQTtBQUNBLFNBQUEsZ0JBQUEsUUFBQSxrQkFBQTtBQUVBLGVBQWMsU0FBQSxvQkFBQSxDQUFBLE1BQUEsRUFBNkM7QUFDekQsTUFBSSxPQUFPLEdBQVgsSUFBQTs7QUFDQSxNQUFJLEtBQUssSUFBVCxnQkFBQSxFQUErQjtBQUM3QixRQUFJLGdCQUFnQixHQUFJLFNBQXBCLGdCQUFvQixDQUFBLFFBQUQsRUFBdUM7QUFDNUQsWUFBTSxJQUFBLEtBQUEseUJBQ21CLE1BQU0sQ0FBQSxRQUFBLENBRHpCLHdDQUFOLE1BQU0scUtBQU47QUFERixLQUFBOztBQVFBLElBQUEsT0FBTyxHQUFHLElBQUEsS0FBQSxDQUFBLEVBQUEsRUFFUjtBQUNFLE1BQUEsR0FERixlQUNLLE9BREwsRUFDSyxRQURMLEVBQzRDO0FBQ3hDLFFBQUEsZ0JBQWdCLENBQWhCLFFBQWdCLENBQWhCO0FBRkosT0FBQTtBQUtFLE1BQUEsR0FMRixlQUtLLE9BTEwsRUFLSyxRQUxMLEVBSzRDO0FBQ3hDLFFBQUEsZ0JBQWdCLENBQWhCLFFBQWdCLENBQWhCO0FBRUEsZUFBQSxLQUFBO0FBUkosT0FBQTtBQVdFLE1BQUEsR0FYRixlQVdLLE9BWEwsRUFXSyxRQVhMLEVBVzRDO0FBQ3hDLFFBQUEsZ0JBQWdCLENBQWhCLFFBQWdCLENBQWhCO0FBRUEsZUFBQSxLQUFBO0FBQ0Q7QUFmSCxLQUZRLENBQVY7QUFvQkQ7O0FBRUQsU0FBQSxPQUFBO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBERUJVRyB9IGZyb20gJ0BnbGltbWVyL2Vudic7XG5pbXBvcnQgeyBIQVNfTkFUSVZFX1BST1hZIH0gZnJvbSAnLi9wbGF0Zm9ybS11dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGJ1aWxkVW50b3VjaGFibGVUaGlzKHNvdXJjZTogc3RyaW5nKTogbnVsbCB8IG9iamVjdCB7XG4gIGxldCBjb250ZXh0OiBudWxsIHwgb2JqZWN0ID0gbnVsbDtcbiAgaWYgKERFQlVHICYmIEhBU19OQVRJVkVfUFJPWFkpIHtcbiAgICBsZXQgYXNzZXJ0T25Qcm9wZXJ0eSA9IChwcm9wZXJ0eTogc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sKSA9PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBZb3UgYWNjZXNzZWQgXFxgdGhpcy4ke1N0cmluZyhcbiAgICAgICAgICBwcm9wZXJ0eVxuICAgICAgICApfVxcYCBmcm9tIGEgZnVuY3Rpb24gcGFzc2VkIHRvIHRoZSAke3NvdXJjZX0sIGJ1dCB0aGUgZnVuY3Rpb24gaXRzZWxmIHdhcyBub3QgYm91bmQgdG8gYSB2YWxpZCBcXGB0aGlzXFxgIGNvbnRleHQuIENvbnNpZGVyIHVwZGF0aW5nIHRvIHVzZSBhIGJvdW5kIGZ1bmN0aW9uIChmb3IgaW5zdGFuY2UsIHVzZSBhbiBhcnJvdyBmdW5jdGlvbiwgXFxgKCkgPT4ge31cXGApLmBcbiAgICAgICk7XG4gICAgfTtcblxuICAgIGNvbnRleHQgPSBuZXcgUHJveHkoXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgZ2V0KF90YXJnZXQ6IHt9LCBwcm9wZXJ0eTogc3RyaW5nIHwgc3ltYm9sKSB7XG4gICAgICAgICAgYXNzZXJ0T25Qcm9wZXJ0eShwcm9wZXJ0eSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgc2V0KF90YXJnZXQ6IHt9LCBwcm9wZXJ0eTogc3RyaW5nIHwgc3ltYm9sKSB7XG4gICAgICAgICAgYXNzZXJ0T25Qcm9wZXJ0eShwcm9wZXJ0eSk7XG5cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0sXG5cbiAgICAgICAgaGFzKF90YXJnZXQ6IHt9LCBwcm9wZXJ0eTogc3RyaW5nIHwgc3ltYm9sKSB7XG4gICAgICAgICAgYXNzZXJ0T25Qcm9wZXJ0eShwcm9wZXJ0eSk7XG5cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBjb250ZXh0O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==