UNPKG

babel-plugin-system-import-transformer

Version:

Babel plugin that replaces System.import with the equivalent UMD pattern

75 lines (59 loc) 2.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.UtilsHelper = void 0; var _babelArgumentProvider = require("./babelArgumentProvider"); var _globalObjectHelper = require("./globalObjectHelper"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } var UtilsHelper = /*#__PURE__*/ function () { function UtilsHelper(file) { _classCallCheck(this, UtilsHelper); this.file = file; } _createClass(UtilsHelper, [{ key: "getGlobalIdentifier", value: function getGlobalIdentifier() { var name = 'system-import-transformer-global-identifier'; var result = this.getOrCreateHelper(name, function () { return (0, _globalObjectHelper.getGlobalObjectExpression)(); }); return result; } }, { key: "getOrCreateHelper", value: function getOrCreateHelper(name, ref) { var declar = this.file.declarations[name]; if (declar) { return declar; } var uid = this.file.declarations[name] = this.file.scope.generateUidIdentifier(name); this.file.hub.addHelper(name); if (typeof ref === 'function') { ref = ref(); } if (_babelArgumentProvider.types.isFunctionExpression(ref) && !ref.id) { ref.body._compact = true; ref._generated = true; ref.id = uid; ref.type = 'FunctionDeclaration'; this.file.attachAuxiliaryComment(ref); this.file.path.unshiftContainer('body', ref); } else { ref._compact = true; this.file.scope.push({ id: uid, init: ref, unique: true }); } return uid; } }]); return UtilsHelper; }(); exports.UtilsHelper = UtilsHelper;