You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							71 lines
						
					
					
						
							2.4 KiB
						
					
					
				
			
		
		
	
	
							71 lines
						
					
					
						
							2.4 KiB
						
					
					
				| "use strict";
 | |
| 
 | |
| Object.defineProperty(exports, "__esModule", {
 | |
|   value: true
 | |
| });
 | |
| exports.default = addCreateSuperHelper;
 | |
| var _core = require("@babel/core");
 | |
| const helper = _core.template.statement`
 | |
|   function CREATE_SUPER(Derived) {
 | |
|     function isNativeReflectConstruct() {
 | |
|       if (typeof Reflect === "undefined" || !Reflect.construct) return false;
 | |
| 
 | |
|       // core-js@3
 | |
|       if (Reflect.construct.sham) return false;
 | |
| 
 | |
|       // Proxy can't be polyfilled. Every browser implemented
 | |
|       // proxies before or at the same time as Reflect.construct,
 | |
|       // so if they support Proxy they also support Reflect.construct.
 | |
|       if (typeof Proxy === "function") return true;
 | |
| 
 | |
|       // Since Reflect.construct can't be properly polyfilled, some
 | |
|       // implementations (e.g. core-js@2) don't set the correct internal slots.
 | |
|       // Those polyfills don't allow us to subclass built-ins, so we need to
 | |
|       // use our fallback implementation.
 | |
|       try {
 | |
|         // If the internal slots aren't set, this throws an error similar to
 | |
|         //   TypeError: this is not a Date object.
 | |
|         Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));
 | |
|         return true;
 | |
|       } catch (e) {
 | |
|         return false;
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     return function () {
 | |
|       var Super = GET_PROTOTYPE_OF(Derived), result;
 | |
|       if (isNativeReflectConstruct()) {
 | |
|         // NOTE: This doesn't work if this.__proto__.constructor has been modified.
 | |
|         var NewTarget = GET_PROTOTYPE_OF(this).constructor;
 | |
|         result = Reflect.construct(Super, arguments, NewTarget);
 | |
|       } else {
 | |
|         result = Super.apply(this, arguments);
 | |
|       }
 | |
|       return POSSIBLE_CONSTRUCTOR_RETURN(this, result);
 | |
|     }
 | |
|   }
 | |
| `;
 | |
| const helperIDs = new WeakMap();
 | |
| function addCreateSuperHelper(file) {
 | |
|   if (helperIDs.has(file)) {
 | |
|     return (_core.types.cloneNode || _core.types.clone)(helperIDs.get(file));
 | |
|   }
 | |
|   try {
 | |
|     return file.addHelper("createSuper");
 | |
|   } catch (_unused) {
 | |
|   }
 | |
| 
 | |
|   const id = file.scope.generateUidIdentifier("createSuper");
 | |
|   helperIDs.set(file, id);
 | |
|   const fn = helper({
 | |
|     CREATE_SUPER: id,
 | |
|     GET_PROTOTYPE_OF: file.addHelper("getPrototypeOf"),
 | |
|     POSSIBLE_CONSTRUCTOR_RETURN: file.addHelper("possibleConstructorReturn")
 | |
|   });
 | |
|   file.path.unshiftContainer("body", [fn]);
 | |
|   file.scope.registerDeclaration(file.path.get("body.0"));
 | |
|   return _core.types.cloneNode(id);
 | |
| }
 | |
| 
 | |
| //# sourceMappingURL=inline-createSuper-helpers.js.map
 |