untouchable-this.js 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = buildUntouchableThis;
  6. var _env = require("@glimmer/env");
  7. var _platformUtils = require("./platform-utils");
  8. function buildUntouchableThis(source) {
  9. let context = null;
  10. if (_env.DEBUG && _platformUtils.HAS_NATIVE_PROXY) {
  11. let assertOnProperty = property => {
  12. 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, \`() => {}\`).`);
  13. };
  14. context = new Proxy({}, {
  15. get(_target, property) {
  16. assertOnProperty(property);
  17. },
  18. set(_target, property) {
  19. assertOnProperty(property);
  20. return false;
  21. },
  22. has(_target, property) {
  23. assertOnProperty(property);
  24. return false;
  25. }
  26. });
  27. }
  28. return context;
  29. }
  30. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3V0aWwvbGliL3VudG91Y2hhYmxlLXRoaXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUVjLFNBQUEsb0JBQUEsQ0FBQSxNQUFBLEVBQTZDO0FBQ3pELE1BQUksT0FBTyxHQUFYLElBQUE7O0FBQ0EsTUFBSSxjQUFKLCtCQUFBLEVBQStCO0FBQzdCLFFBQUksZ0JBQWdCLEdBQUksUUFBRCxJQUF1QztBQUM1RCxZQUFNLElBQUEsS0FBQSxDQUNKLHVCQUF1QixNQUFNLENBQUEsUUFBQSxDQUU1QixvQ0FBb0MsTUFIdkMscUtBQU0sQ0FBTjtBQURGLEtBQUE7O0FBUUEsSUFBQSxPQUFPLEdBQUcsSUFBQSxLQUFBLENBQUEsRUFBQSxFQUVSO0FBQ0UsTUFBQSxHQUFHLENBQUEsT0FBQSxFQUFBLFFBQUEsRUFBdUM7QUFDeEMsUUFBQSxnQkFBZ0IsQ0FBaEIsUUFBZ0IsQ0FBaEI7QUFGSixPQUFBOztBQUtFLE1BQUEsR0FBRyxDQUFBLE9BQUEsRUFBQSxRQUFBLEVBQXVDO0FBQ3hDLFFBQUEsZ0JBQWdCLENBQWhCLFFBQWdCLENBQWhCO0FBRUEsZUFBQSxLQUFBO0FBUkosT0FBQTs7QUFXRSxNQUFBLEdBQUcsQ0FBQSxPQUFBLEVBQUEsUUFBQSxFQUF1QztBQUN4QyxRQUFBLGdCQUFnQixDQUFoQixRQUFnQixDQUFoQjtBQUVBLGVBQUEsS0FBQTtBQUNEOztBQWZILEtBRlEsQ0FBVjtBQW9CRDs7QUFFRCxTQUFBLE9BQUE7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERFQlVHIH0gZnJvbSAnQGdsaW1tZXIvZW52JztcbmltcG9ydCB7IEhBU19OQVRJVkVfUFJPWFkgfSBmcm9tICcuL3BsYXRmb3JtLXV0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYnVpbGRVbnRvdWNoYWJsZVRoaXMoc291cmNlOiBzdHJpbmcpOiBudWxsIHwgb2JqZWN0IHtcbiAgbGV0IGNvbnRleHQ6IG51bGwgfCBvYmplY3QgPSBudWxsO1xuICBpZiAoREVCVUcgJiYgSEFTX05BVElWRV9QUk9YWSkge1xuICAgIGxldCBhc3NlcnRPblByb3BlcnR5ID0gKHByb3BlcnR5OiBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wpID0+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFlvdSBhY2Nlc3NlZCBcXGB0aGlzLiR7U3RyaW5nKFxuICAgICAgICAgIHByb3BlcnR5XG4gICAgICAgICl9XFxgIGZyb20gYSBmdW5jdGlvbiBwYXNzZWQgdG8gdGhlICR7c291cmNlfSwgYnV0IHRoZSBmdW5jdGlvbiBpdHNlbGYgd2FzIG5vdCBib3VuZCB0byBhIHZhbGlkIFxcYHRoaXNcXGAgY29udGV4dC4gQ29uc2lkZXIgdXBkYXRpbmcgdG8gdXNlIGEgYm91bmQgZnVuY3Rpb24gKGZvciBpbnN0YW5jZSwgdXNlIGFuIGFycm93IGZ1bmN0aW9uLCBcXGAoKSA9PiB7fVxcYCkuYFxuICAgICAgKTtcbiAgICB9O1xuXG4gICAgY29udGV4dCA9IG5ldyBQcm94eShcbiAgICAgIHt9LFxuICAgICAge1xuICAgICAgICBnZXQoX3RhcmdldDoge30sIHByb3BlcnR5OiBzdHJpbmcgfCBzeW1ib2wpIHtcbiAgICAgICAgICBhc3NlcnRPblByb3BlcnR5KHByb3BlcnR5KTtcbiAgICAgICAgfSxcblxuICAgICAgICBzZXQoX3RhcmdldDoge30sIHByb3BlcnR5OiBzdHJpbmcgfCBzeW1ib2wpIHtcbiAgICAgICAgICBhc3NlcnRPblByb3BlcnR5KHByb3BlcnR5KTtcblxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSxcblxuICAgICAgICBoYXMoX3RhcmdldDoge30sIHByb3BlcnR5OiBzdHJpbmcgfCBzeW1ib2wpIHtcbiAgICAgICAgICBhc3NlcnRPblByb3BlcnR5KHByb3BlcnR5KTtcblxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9