forked from enviPath/enviPy
Current Dev State
This commit is contained in:
87
static/js/ketcher2/node_modules/babel-preset-env/lib/transform-polyfill-require-plugin.js
generated
vendored
Normal file
87
static/js/ketcher2/node_modules/babel-preset-env/lib/transform-polyfill-require-plugin.js
generated
vendored
Normal file
@ -0,0 +1,87 @@
|
||||
"use strict";
|
||||
|
||||
exports.__esModule = true;
|
||||
|
||||
exports.default = function (_ref) {
|
||||
var t = _ref.types;
|
||||
|
||||
function createImportDeclaration(polyfill) {
|
||||
var declar = t.importDeclaration([], t.stringLiteral(polyfill));
|
||||
declar._blockHoist = 3;
|
||||
return declar;
|
||||
}
|
||||
|
||||
function createRequireStatement(polyfill) {
|
||||
return t.expressionStatement(t.callExpression(t.identifier("require"), [t.stringLiteral(polyfill)]));
|
||||
}
|
||||
|
||||
function isRequire(path) {
|
||||
return t.isExpressionStatement(path.node) && t.isCallExpression(path.node.expression) && t.isIdentifier(path.node.expression.callee) && path.node.expression.callee.name === "require" && path.node.expression.arguments.length === 1 && t.isStringLiteral(path.node.expression.arguments[0]) && isPolyfillSource(path.node.expression.arguments[0].value);
|
||||
}
|
||||
|
||||
function createImport(polyfill, requireType, core) {
|
||||
if (core) {
|
||||
polyfill = "core-js/modules/" + polyfill;
|
||||
}
|
||||
|
||||
if (requireType === "import") {
|
||||
return createImportDeclaration(polyfill);
|
||||
} else {
|
||||
return createRequireStatement(polyfill);
|
||||
}
|
||||
}
|
||||
|
||||
function createImports(polyfills, requireType, regenerator) {
|
||||
var imports = polyfills.filter(function (el, i, arr) {
|
||||
return arr.indexOf(el) === i;
|
||||
}).map(function (polyfill) {
|
||||
return createImport(polyfill, requireType, true);
|
||||
});
|
||||
|
||||
return [].concat(imports, [regenerator && createImport("regenerator-runtime/runtime", requireType)]).filter(Boolean);
|
||||
}
|
||||
|
||||
var isPolyfillImport = {
|
||||
ImportDeclaration: function ImportDeclaration(path, state) {
|
||||
if (path.node.specifiers.length === 0 && isPolyfillSource(path.node.source.value)) {
|
||||
this.numPolyfillImports++;
|
||||
if (this.numPolyfillImports > 1) {
|
||||
path.remove();
|
||||
return;
|
||||
}
|
||||
|
||||
path.replaceWithMultiple(createImports(state.opts.polyfills, "import", state.opts.regenerator));
|
||||
}
|
||||
},
|
||||
Program: function Program(path, state) {
|
||||
var _this = this;
|
||||
|
||||
if (!state.opts.polyfills) {
|
||||
throw path.buildCodeFrameError("\nThere was an issue in \"babel-preset-env\" such that\nthe \"polyfills\" option was not correctly passed\nto the \"transform-polyfill-require\" plugin\n");
|
||||
}
|
||||
path.get("body").forEach(function (bodyPath) {
|
||||
if (isRequire(bodyPath)) {
|
||||
_this.numPolyfillImports++;
|
||||
if (_this.numPolyfillImports > 1) {
|
||||
path.remove();
|
||||
return;
|
||||
}
|
||||
|
||||
bodyPath.replaceWithMultiple(createImports(state.opts.polyfills, "require", state.opts.regenerator));
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
return {
|
||||
name: "transform-polyfill-require",
|
||||
visitor: isPolyfillImport,
|
||||
pre: function pre() {
|
||||
this.numPolyfillImports = 0;
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
function isPolyfillSource(value) {
|
||||
return value === "babel-polyfill" || value === "core-js";
|
||||
}
|
||||
Reference in New Issue
Block a user