| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288 | 
							- "use strict";
 
- exports.__esModule = true;
 
- exports.default = void 0;
 
- var _assert = _interopRequireDefault(require("assert"));
 
- var t = _interopRequireWildcard(require("@babel/types"));
 
- var _importBuilder = _interopRequireDefault(require("./import-builder"));
 
- var _isModule = _interopRequireDefault(require("./is-module"));
 
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
 
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
- var ImportInjector = function () {
 
-   function ImportInjector(path, importedSource, opts) {
 
-     this._programPath = void 0;
 
-     this._programScope = void 0;
 
-     this._file = void 0;
 
-     this._defaultOpts = {
 
-       importedSource: null,
 
-       importedType: "commonjs",
 
-       importedInterop: "babel",
 
-       importingInterop: "babel",
 
-       ensureLiveReference: false,
 
-       ensureNoContext: false
 
-     };
 
-     var programPath = path.find(function (p) {
 
-       return p.isProgram();
 
-     });
 
-     this._programPath = programPath;
 
-     this._programScope = programPath.scope;
 
-     this._file = programPath.hub.file;
 
-     this._defaultOpts = this._applyDefaults(importedSource, opts, true);
 
-   }
 
-   var _proto = ImportInjector.prototype;
 
-   _proto.addDefault = function addDefault(importedSourceIn, opts) {
 
-     return this.addNamed("default", importedSourceIn, opts);
 
-   };
 
-   _proto.addNamed = function addNamed(importName, importedSourceIn, opts) {
 
-     (0, _assert.default)(typeof importName === "string");
 
-     return this._generateImport(this._applyDefaults(importedSourceIn, opts), importName);
 
-   };
 
-   _proto.addNamespace = function addNamespace(importedSourceIn, opts) {
 
-     return this._generateImport(this._applyDefaults(importedSourceIn, opts), null);
 
-   };
 
-   _proto.addSideEffect = function addSideEffect(importedSourceIn, opts) {
 
-     return this._generateImport(this._applyDefaults(importedSourceIn, opts), false);
 
-   };
 
-   _proto._applyDefaults = function _applyDefaults(importedSource, opts, isInit) {
 
-     if (isInit === void 0) {
 
-       isInit = false;
 
-     }
 
-     var optsList = [];
 
-     if (typeof importedSource === "string") {
 
-       optsList.push({
 
-         importedSource: importedSource
 
-       });
 
-       optsList.push(opts);
 
-     } else {
 
-       (0, _assert.default)(!opts, "Unexpected secondary arguments.");
 
-       optsList.push(importedSource);
 
-     }
 
-     var newOpts = Object.assign({}, this._defaultOpts);
 
-     var _loop = function _loop(_opts) {
 
-       if (!_opts) return "continue";
 
-       Object.keys(newOpts).forEach(function (key) {
 
-         if (_opts[key] !== undefined) newOpts[key] = _opts[key];
 
-       });
 
-       if (!isInit) {
 
-         if (_opts.nameHint !== undefined) newOpts.nameHint = _opts.nameHint;
 
-         if (_opts.blockHoist !== undefined) newOpts.blockHoist = _opts.blockHoist;
 
-       }
 
-     };
 
-     for (var _i = 0; _i < optsList.length; _i++) {
 
-       var _opts = optsList[_i];
 
-       var _ret = _loop(_opts);
 
-       if (_ret === "continue") continue;
 
-     }
 
-     return newOpts;
 
-   };
 
-   _proto._generateImport = function _generateImport(opts, importName) {
 
-     var isDefault = importName === "default";
 
-     var isNamed = !!importName && !isDefault;
 
-     var isNamespace = importName === null;
 
-     var importedSource = opts.importedSource,
 
-         importedType = opts.importedType,
 
-         importedInterop = opts.importedInterop,
 
-         importingInterop = opts.importingInterop,
 
-         ensureLiveReference = opts.ensureLiveReference,
 
-         ensureNoContext = opts.ensureNoContext,
 
-         nameHint = opts.nameHint,
 
-         blockHoist = opts.blockHoist;
 
-     var name = nameHint || importName;
 
-     var isMod = (0, _isModule.default)(this._programPath, true);
 
-     var isModuleForNode = isMod && importingInterop === "node";
 
-     var isModuleForBabel = isMod && importingInterop === "babel";
 
-     var builder = new _importBuilder.default(importedSource, this._programScope, this._file);
 
-     if (importedType === "es6") {
 
-       if (!isModuleForNode && !isModuleForBabel) {
 
-         throw new Error("Cannot import an ES6 module from CommonJS");
 
-       }
 
-       builder.import();
 
-       if (isNamespace) {
 
-         builder.namespace(nameHint || importedSource);
 
-       } else if (isDefault || isNamed) {
 
-         builder.named(name, importName);
 
-       }
 
-     } else if (importedType !== "commonjs") {
 
-       throw new Error("Unexpected interopType \"" + importedType + "\"");
 
-     } else if (importedInterop === "babel") {
 
-       if (isModuleForNode) {
 
-         name = name !== "default" ? name : importedSource;
 
-         var es6Default = importedSource + "$es6Default";
 
-         builder.import();
 
-         if (isNamespace) {
 
-           builder.default(es6Default).var(name || importedSource).wildcardInterop();
 
-         } else if (isDefault) {
 
-           if (ensureLiveReference) {
 
-             builder.default(es6Default).var(name || importedSource).defaultInterop().read("default");
 
-           } else {
 
-             builder.default(es6Default).var(name).defaultInterop().prop(importName);
 
-           }
 
-         } else if (isNamed) {
 
-           builder.default(es6Default).read(importName);
 
-         }
 
-       } else if (isModuleForBabel) {
 
-         builder.import();
 
-         if (isNamespace) {
 
-           builder.namespace(name || importedSource);
 
-         } else if (isDefault || isNamed) {
 
-           builder.named(name, importName);
 
-         }
 
-       } else {
 
-         builder.require();
 
-         if (isNamespace) {
 
-           builder.var(name || importedSource).wildcardInterop();
 
-         } else if ((isDefault || isNamed) && ensureLiveReference) {
 
-           if (isDefault) {
 
-             name = name !== "default" ? name : importedSource;
 
-             builder.var(name).read(importName);
 
-             builder.defaultInterop();
 
-           } else {
 
-             builder.var(importedSource).read(importName);
 
-           }
 
-         } else if (isDefault) {
 
-           builder.var(name).defaultInterop().prop(importName);
 
-         } else if (isNamed) {
 
-           builder.var(name).prop(importName);
 
-         }
 
-       }
 
-     } else if (importedInterop === "compiled") {
 
-       if (isModuleForNode) {
 
-         builder.import();
 
-         if (isNamespace) {
 
-           builder.default(name || importedSource);
 
-         } else if (isDefault || isNamed) {
 
-           builder.default(importedSource).read(name);
 
-         }
 
-       } else if (isModuleForBabel) {
 
-         builder.import();
 
-         if (isNamespace) {
 
-           builder.namespace(name || importedSource);
 
-         } else if (isDefault || isNamed) {
 
-           builder.named(name, importName);
 
-         }
 
-       } else {
 
-         builder.require();
 
-         if (isNamespace) {
 
-           builder.var(name || importedSource);
 
-         } else if (isDefault || isNamed) {
 
-           if (ensureLiveReference) {
 
-             builder.var(importedSource).read(name);
 
-           } else {
 
-             builder.prop(importName).var(name);
 
-           }
 
-         }
 
-       }
 
-     } else if (importedInterop === "uncompiled") {
 
-       if (isDefault && ensureLiveReference) {
 
-         throw new Error("No live reference for commonjs default");
 
-       }
 
-       if (isModuleForNode) {
 
-         builder.import();
 
-         if (isNamespace) {
 
-           builder.default(name || importedSource);
 
-         } else if (isDefault) {
 
-           builder.default(name);
 
-         } else if (isNamed) {
 
-           builder.default(importedSource).read(name);
 
-         }
 
-       } else if (isModuleForBabel) {
 
-         builder.import();
 
-         if (isNamespace) {
 
-           builder.default(name || importedSource);
 
-         } else if (isDefault) {
 
-           builder.default(name);
 
-         } else if (isNamed) {
 
-           builder.named(name, importName);
 
-         }
 
-       } else {
 
-         builder.require();
 
-         if (isNamespace) {
 
-           builder.var(name || importedSource);
 
-         } else if (isDefault) {
 
-           builder.var(name);
 
-         } else if (isNamed) {
 
-           if (ensureLiveReference) {
 
-             builder.var(importedSource).read(name);
 
-           } else {
 
-             builder.var(name).prop(importName);
 
-           }
 
-         }
 
-       }
 
-     } else {
 
-       throw new Error("Unknown importedInterop \"" + importedInterop + "\".");
 
-     }
 
-     var _builder$done = builder.done(),
 
-         statements = _builder$done.statements,
 
-         resultName = _builder$done.resultName;
 
-     this._insertStatements(statements, blockHoist);
 
-     if ((isDefault || isNamed) && ensureNoContext && resultName.type !== "Identifier") {
 
-       return t.sequenceExpression([t.numericLiteral(0), resultName]);
 
-     }
 
-     return resultName;
 
-   };
 
-   _proto._insertStatements = function _insertStatements(statements, blockHoist) {
 
-     if (blockHoist === void 0) {
 
-       blockHoist = 3;
 
-     }
 
-     statements.forEach(function (node) {
 
-       node._blockHoist = blockHoist;
 
-     });
 
-     var targetPath = this._programPath.get("body").filter(function (p) {
 
-       var val = p.node._blockHoist;
 
-       return Number.isFinite(val) && val < 4;
 
-     })[0];
 
-     if (targetPath) {
 
-       targetPath.insertBefore(statements);
 
-     } else {
 
-       this._programPath.unshiftContainer("body", statements);
 
-     }
 
-   };
 
-   return ImportInjector;
 
- }();
 
- exports.default = ImportInjector;
 
 
  |