summaryrefslogtreecommitdiff
path: root/node_modules/@babel/helper-module-imports/lib/import-builder.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/@babel/helper-module-imports/lib/import-builder.js')
-rw-r--r--node_modules/@babel/helper-module-imports/lib/import-builder.js122
1 files changed, 122 insertions, 0 deletions
diff --git a/node_modules/@babel/helper-module-imports/lib/import-builder.js b/node_modules/@babel/helper-module-imports/lib/import-builder.js
new file mode 100644
index 00000000..b01187f9
--- /dev/null
+++ b/node_modules/@babel/helper-module-imports/lib/import-builder.js
@@ -0,0 +1,122 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+var _assert = require("assert");
+var _t = require("@babel/types");
+const {
+ callExpression,
+ cloneNode,
+ expressionStatement,
+ identifier,
+ importDeclaration,
+ importDefaultSpecifier,
+ importNamespaceSpecifier,
+ importSpecifier,
+ memberExpression,
+ stringLiteral,
+ variableDeclaration,
+ variableDeclarator
+} = _t;
+class ImportBuilder {
+ constructor(importedSource, scope, hub) {
+ this._statements = [];
+ this._resultName = null;
+ this._importedSource = void 0;
+ this._scope = scope;
+ this._hub = hub;
+ this._importedSource = importedSource;
+ }
+ done() {
+ return {
+ statements: this._statements,
+ resultName: this._resultName
+ };
+ }
+ import() {
+ this._statements.push(importDeclaration([], stringLiteral(this._importedSource)));
+ return this;
+ }
+ require() {
+ this._statements.push(expressionStatement(callExpression(identifier("require"), [stringLiteral(this._importedSource)])));
+ return this;
+ }
+ namespace(name = "namespace") {
+ const local = this._scope.generateUidIdentifier(name);
+ const statement = this._statements[this._statements.length - 1];
+ _assert(statement.type === "ImportDeclaration");
+ _assert(statement.specifiers.length === 0);
+ statement.specifiers = [importNamespaceSpecifier(local)];
+ this._resultName = cloneNode(local);
+ return this;
+ }
+ default(name) {
+ const id = this._scope.generateUidIdentifier(name);
+ const statement = this._statements[this._statements.length - 1];
+ _assert(statement.type === "ImportDeclaration");
+ _assert(statement.specifiers.length === 0);
+ statement.specifiers = [importDefaultSpecifier(id)];
+ this._resultName = cloneNode(id);
+ return this;
+ }
+ named(name, importName) {
+ if (importName === "default") return this.default(name);
+ const id = this._scope.generateUidIdentifier(name);
+ const statement = this._statements[this._statements.length - 1];
+ _assert(statement.type === "ImportDeclaration");
+ _assert(statement.specifiers.length === 0);
+ statement.specifiers = [importSpecifier(id, identifier(importName))];
+ this._resultName = cloneNode(id);
+ return this;
+ }
+ var(name) {
+ const id = this._scope.generateUidIdentifier(name);
+ let statement = this._statements[this._statements.length - 1];
+ if (statement.type !== "ExpressionStatement") {
+ _assert(this._resultName);
+ statement = expressionStatement(this._resultName);
+ this._statements.push(statement);
+ }
+ this._statements[this._statements.length - 1] = variableDeclaration("var", [variableDeclarator(id, statement.expression)]);
+ this._resultName = cloneNode(id);
+ return this;
+ }
+ defaultInterop() {
+ return this._interop(this._hub.addHelper("interopRequireDefault"));
+ }
+ wildcardInterop() {
+ return this._interop(this._hub.addHelper("interopRequireWildcard"));
+ }
+ _interop(callee) {
+ const statement = this._statements[this._statements.length - 1];
+ if (statement.type === "ExpressionStatement") {
+ statement.expression = callExpression(callee, [statement.expression]);
+ } else if (statement.type === "VariableDeclaration") {
+ _assert(statement.declarations.length === 1);
+ statement.declarations[0].init = callExpression(callee, [statement.declarations[0].init]);
+ } else {
+ _assert.fail("Unexpected type.");
+ }
+ return this;
+ }
+ prop(name) {
+ const statement = this._statements[this._statements.length - 1];
+ if (statement.type === "ExpressionStatement") {
+ statement.expression = memberExpression(statement.expression, identifier(name));
+ } else if (statement.type === "VariableDeclaration") {
+ _assert(statement.declarations.length === 1);
+ statement.declarations[0].init = memberExpression(statement.declarations[0].init, identifier(name));
+ } else {
+ _assert.fail("Unexpected type:" + statement.type);
+ }
+ return this;
+ }
+ read(name) {
+ this._resultName = memberExpression(this._resultName, identifier(name));
+ }
+}
+exports.default = ImportBuilder;
+
+//# sourceMappingURL=import-builder.js.map