Allowed hintedNames for namespaced imports, changed some other defaults for more readable ones (#6744)
This commit is contained in:
parent
9206df964d
commit
1ef7e0f48e
@ -43,7 +43,7 @@ export default class ImportBuilder {
|
||||
return this;
|
||||
}
|
||||
|
||||
namespace(name) {
|
||||
namespace(name = "namespace") {
|
||||
name = this._scope.generateUidIdentifier(name);
|
||||
|
||||
const statement = this._statements[this._statements.length - 1];
|
||||
|
||||
@ -197,17 +197,18 @@ export default class ImportInjector {
|
||||
importingInterop,
|
||||
ensureLiveReference,
|
||||
ensureNoContext,
|
||||
|
||||
// Provide a hint for generateUidIdentifier for the local variable name
|
||||
// to use for the import, if the code will generate a simple assignment
|
||||
// to a variable.
|
||||
nameHint = importName,
|
||||
nameHint,
|
||||
|
||||
// Not meant for public usage. Allows code that absolutely must control
|
||||
// ordering to set a specific hoist value on the import nodes.
|
||||
blockHoist,
|
||||
} = opts;
|
||||
|
||||
// Provide a hint for generateUidIdentifier for the local variable name
|
||||
// to use for the import, if the code will generate a simple assignment
|
||||
// to a variable.
|
||||
let name = nameHint || importName;
|
||||
|
||||
const isMod = isModule(this._programPath, true);
|
||||
const isModuleForNode = isMod && importingInterop === "node";
|
||||
const isModuleForBabel = isMod && importingInterop === "babel";
|
||||
@ -228,9 +229,9 @@ export default class ImportInjector {
|
||||
// import { named } from ''; named
|
||||
builder.import();
|
||||
if (isNamespace) {
|
||||
builder.namespace("namespace");
|
||||
builder.namespace(nameHint || importedSource);
|
||||
} else if (isDefault || isNamed) {
|
||||
builder.named(nameHint, importName);
|
||||
builder.named(name, importName);
|
||||
}
|
||||
} else if (importedType !== "commonjs") {
|
||||
throw new Error(`Unexpected interopType "${importedType}"`);
|
||||
@ -239,29 +240,31 @@ export default class ImportInjector {
|
||||
// import _tmp from ''; var namespace = interopRequireWildcard(_tmp); namespace
|
||||
// import _tmp from ''; var def = interopRequireDefault(_tmp).default; def
|
||||
// import _tmp from ''; _tmp.named
|
||||
name = name !== "default" ? name : importedSource;
|
||||
const es6Default = `${importedSource}$es6Default`;
|
||||
|
||||
builder.import();
|
||||
if (isNamespace) {
|
||||
builder
|
||||
.default("es6Default")
|
||||
.var(nameHint || "namespace")
|
||||
.default(es6Default)
|
||||
.var(name || importedSource)
|
||||
.wildcardInterop();
|
||||
} else if (isDefault) {
|
||||
if (ensureLiveReference) {
|
||||
builder
|
||||
.default("es6Default")
|
||||
.var("namespace")
|
||||
.default(es6Default)
|
||||
.var(name || importedSource)
|
||||
.defaultInterop()
|
||||
.read("default");
|
||||
} else {
|
||||
builder
|
||||
.default("es6Default")
|
||||
.var(nameHint)
|
||||
.default(es6Default)
|
||||
.var(name)
|
||||
.defaultInterop()
|
||||
.prop(importName);
|
||||
}
|
||||
} else if (isNamed) {
|
||||
builder.default("es6Default").read(importName);
|
||||
builder.default(es6Default).read(importName);
|
||||
}
|
||||
} else if (isModuleForBabel) {
|
||||
// import * as namespace from ''; namespace
|
||||
@ -269,9 +272,9 @@ export default class ImportInjector {
|
||||
// import { named } from ''; named
|
||||
builder.import();
|
||||
if (isNamespace) {
|
||||
builder.namespace("namespace");
|
||||
builder.namespace(name || importedSource);
|
||||
} else if (isDefault || isNamed) {
|
||||
builder.named(nameHint, importName);
|
||||
builder.named(name, importName);
|
||||
}
|
||||
} else {
|
||||
// var namespace = interopRequireWildcard(require(''));
|
||||
@ -279,18 +282,22 @@ export default class ImportInjector {
|
||||
// var named = require('').named; named
|
||||
builder.require();
|
||||
if (isNamespace) {
|
||||
builder.var("namespace").wildcardInterop();
|
||||
builder.var(name || importedSource).wildcardInterop();
|
||||
} else if ((isDefault || isNamed) && ensureLiveReference) {
|
||||
builder.var("namespace").read(importName);
|
||||
|
||||
if (isDefault) builder.defaultInterop();
|
||||
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(nameHint)
|
||||
.var(name)
|
||||
.defaultInterop()
|
||||
.prop(importName);
|
||||
} else if (isNamed) {
|
||||
builder.var(nameHint).prop(importName);
|
||||
builder.var(name).prop(importName);
|
||||
}
|
||||
}
|
||||
} else if (importedInterop === "compiled") {
|
||||
@ -301,9 +308,9 @@ export default class ImportInjector {
|
||||
|
||||
builder.import();
|
||||
if (isNamespace) {
|
||||
builder.default("namespace");
|
||||
builder.default(name || importedSource);
|
||||
} else if (isDefault || isNamed) {
|
||||
builder.default("namespace").read(importName);
|
||||
builder.default(importedSource).read(name);
|
||||
}
|
||||
} else if (isModuleForBabel) {
|
||||
// import * as namespace from ''; namespace
|
||||
@ -314,24 +321,23 @@ export default class ImportInjector {
|
||||
|
||||
builder.import();
|
||||
if (isNamespace) {
|
||||
builder.namespace("namespace");
|
||||
builder.namespace(name || importedSource);
|
||||
} else if (isDefault || isNamed) {
|
||||
builder.named(nameHint, importName);
|
||||
builder.named(name, importName);
|
||||
}
|
||||
} else {
|
||||
// var namespace = require(''); namespace
|
||||
// var namespace = require(''); namespace.default
|
||||
// var namespace = require(''); namespace.named
|
||||
// var named = require('').named;
|
||||
|
||||
builder.require();
|
||||
if (isNamespace) {
|
||||
builder.var("namespace");
|
||||
builder.var(name || importedSource);
|
||||
} else if (isDefault || isNamed) {
|
||||
if (ensureLiveReference) {
|
||||
builder.var("namespace").read(importName);
|
||||
builder.var(importedSource).read(name);
|
||||
} else {
|
||||
builder.prop(importName).var(nameHint);
|
||||
builder.prop(importName).var(name);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -344,14 +350,13 @@ export default class ImportInjector {
|
||||
// import namespace from ''; namespace
|
||||
// import def from ''; def;
|
||||
// import namespace from ''; namespace.named
|
||||
|
||||
builder.import();
|
||||
if (isNamespace) {
|
||||
builder.default("namespace");
|
||||
builder.default(name || importedSource);
|
||||
} else if (isDefault) {
|
||||
builder.default(nameHint);
|
||||
builder.default(name);
|
||||
} else if (isNamed) {
|
||||
builder.default("namespace").read(importName);
|
||||
builder.default(importedSource).read(name);
|
||||
}
|
||||
} else if (isModuleForBabel) {
|
||||
// import namespace from '';
|
||||
@ -363,28 +368,27 @@ export default class ImportInjector {
|
||||
|
||||
builder.import();
|
||||
if (isNamespace) {
|
||||
builder.default("namespace");
|
||||
builder.default(name || importedSource);
|
||||
} else if (isDefault) {
|
||||
builder.default(nameHint);
|
||||
builder.default(name);
|
||||
} else if (isNamed) {
|
||||
builder.named(nameHint, importName);
|
||||
builder.named(name, importName);
|
||||
}
|
||||
} else {
|
||||
// var namespace = require(''); namespace
|
||||
// var def = require(''); def
|
||||
// var namespace = require(''); namespace.named
|
||||
// var named = require('').named;
|
||||
|
||||
builder.require();
|
||||
if (isNamespace) {
|
||||
builder.var("namespace");
|
||||
builder.var(name || importedSource);
|
||||
} else if (isDefault) {
|
||||
builder.var(nameHint);
|
||||
builder.var(name);
|
||||
} else if (isNamed) {
|
||||
if (ensureLiveReference) {
|
||||
builder.var("namespace").read(importName);
|
||||
builder.var(importedSource).read(name);
|
||||
} else {
|
||||
builder.var(nameHint).prop(importName);
|
||||
builder.var(name).prop(importName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -55,8 +55,19 @@ describe("@babel/helper-module-imports", () => {
|
||||
{ importingInterop, importedType },
|
||||
addNamespace(),
|
||||
`
|
||||
import * as _namespace from "source";
|
||||
_namespace;
|
||||
import * as _source from "source";
|
||||
_source;
|
||||
`,
|
||||
);
|
||||
});
|
||||
|
||||
it("should import with a name hint", () => {
|
||||
testModule(
|
||||
{ importingInterop, importedType },
|
||||
addNamespace({ nameHint: "hintedName" }),
|
||||
`
|
||||
import * as _hintedName from "source";
|
||||
_hintedName;
|
||||
`,
|
||||
);
|
||||
});
|
||||
@ -70,8 +81,8 @@ describe("@babel/helper-module-imports", () => {
|
||||
{ importingInterop, importedType },
|
||||
addNamespace(),
|
||||
`
|
||||
import * as _namespace from "source";
|
||||
_namespace;
|
||||
import * as _source from "source";
|
||||
_source;
|
||||
`,
|
||||
);
|
||||
});
|
||||
@ -99,8 +110,8 @@ describe("@babel/helper-module-imports", () => {
|
||||
{ importingInterop, importedInterop },
|
||||
addNamespace(),
|
||||
`
|
||||
import _namespace from "source";
|
||||
_namespace;
|
||||
import _source from "source";
|
||||
_source;
|
||||
`,
|
||||
);
|
||||
});
|
||||
@ -114,8 +125,8 @@ describe("@babel/helper-module-imports", () => {
|
||||
{ importingInterop, importedInterop },
|
||||
addNamespace(),
|
||||
`
|
||||
import _namespace from "source";
|
||||
_namespace;
|
||||
import _source from "source";
|
||||
_source;
|
||||
`,
|
||||
);
|
||||
});
|
||||
@ -127,8 +138,8 @@ describe("@babel/helper-module-imports", () => {
|
||||
{ importedInterop },
|
||||
addNamespace(),
|
||||
`
|
||||
var _namespace = require("source");
|
||||
_namespace;
|
||||
var _source = require("source");
|
||||
_source;
|
||||
`,
|
||||
);
|
||||
});
|
||||
@ -146,8 +157,8 @@ describe("@babel/helper-module-imports", () => {
|
||||
{ importingInterop, importedInterop },
|
||||
addNamespace(),
|
||||
`
|
||||
import _namespace from "source";
|
||||
_namespace;
|
||||
import _source from "source";
|
||||
_source;
|
||||
`,
|
||||
);
|
||||
});
|
||||
@ -161,8 +172,8 @@ describe("@babel/helper-module-imports", () => {
|
||||
{ importingInterop, importedInterop },
|
||||
addNamespace(),
|
||||
`
|
||||
import * as _namespace from "source";
|
||||
_namespace;
|
||||
import * as _source from "source";
|
||||
_source;
|
||||
`,
|
||||
);
|
||||
});
|
||||
@ -174,8 +185,8 @@ describe("@babel/helper-module-imports", () => {
|
||||
{ importedInterop },
|
||||
addNamespace(),
|
||||
`
|
||||
var _namespace = require("source");
|
||||
_namespace;
|
||||
var _source = require("source");
|
||||
_source;
|
||||
`,
|
||||
);
|
||||
});
|
||||
@ -193,9 +204,9 @@ describe("@babel/helper-module-imports", () => {
|
||||
{ importingInterop, importedInterop },
|
||||
addNamespace(),
|
||||
`
|
||||
import _es6Default from "source";
|
||||
var _namespace = babelHelpers.interopRequireWildcard(_es6Default);
|
||||
_namespace;
|
||||
import _source$es6Default from "source";
|
||||
var _source = babelHelpers.interopRequireWildcard(_source$es6Default);
|
||||
_source;
|
||||
`,
|
||||
);
|
||||
});
|
||||
@ -209,8 +220,8 @@ describe("@babel/helper-module-imports", () => {
|
||||
{ importingInterop, importedInterop },
|
||||
addNamespace(),
|
||||
`
|
||||
import * as _namespace from "source";
|
||||
_namespace;
|
||||
import * as _source from "source";
|
||||
_source;
|
||||
`,
|
||||
);
|
||||
});
|
||||
@ -222,8 +233,8 @@ describe("@babel/helper-module-imports", () => {
|
||||
{ importedInterop },
|
||||
addNamespace(),
|
||||
`
|
||||
var _namespace = babelHelpers.interopRequireWildcard(require("source"));
|
||||
_namespace;
|
||||
var _source = babelHelpers.interopRequireWildcard(require("source"));
|
||||
_source;
|
||||
`,
|
||||
);
|
||||
});
|
||||
@ -402,8 +413,8 @@ describe("@babel/helper-module-imports", () => {
|
||||
{ importingInterop, importedInterop },
|
||||
addDefault(),
|
||||
`
|
||||
import _namespace from "source";
|
||||
_namespace.default;
|
||||
import _source from "source";
|
||||
_source.default;
|
||||
`,
|
||||
);
|
||||
});
|
||||
@ -413,8 +424,8 @@ describe("@babel/helper-module-imports", () => {
|
||||
{ importingInterop, importedInterop, ensureNoContext: true },
|
||||
addDefault(),
|
||||
`
|
||||
import _namespace from "source";
|
||||
0, _namespace.default;
|
||||
import _source from "source";
|
||||
0, _source.default;
|
||||
`,
|
||||
);
|
||||
});
|
||||
@ -474,8 +485,8 @@ describe("@babel/helper-module-imports", () => {
|
||||
{ importedInterop, ensureLiveReference: true },
|
||||
addDefault(),
|
||||
`
|
||||
var _namespace = require("source");
|
||||
_namespace.default;
|
||||
var _source = require("source");
|
||||
_source.default;
|
||||
`,
|
||||
);
|
||||
});
|
||||
@ -493,9 +504,9 @@ describe("@babel/helper-module-imports", () => {
|
||||
{ importingInterop, importedInterop },
|
||||
addDefault(),
|
||||
`
|
||||
import _es6Default from "source";
|
||||
var _default = babelHelpers.interopRequireDefault(_es6Default).default;
|
||||
_default;
|
||||
import _source$es6Default from "source";
|
||||
var _source = babelHelpers.interopRequireDefault(_source$es6Default).default;
|
||||
_source;
|
||||
`,
|
||||
);
|
||||
});
|
||||
@ -505,8 +516,8 @@ describe("@babel/helper-module-imports", () => {
|
||||
{ importingInterop, importedInterop },
|
||||
addDefault({ nameHint: "hintedName" }),
|
||||
`
|
||||
import _es6Default from "source";
|
||||
var _hintedName = babelHelpers.interopRequireDefault(_es6Default).default;
|
||||
import _source$es6Default from "source";
|
||||
var _hintedName = babelHelpers.interopRequireDefault(_source$es6Default).default;
|
||||
_hintedName;
|
||||
`,
|
||||
);
|
||||
@ -517,9 +528,9 @@ describe("@babel/helper-module-imports", () => {
|
||||
{ importingInterop, importedInterop, ensureLiveReference: true },
|
||||
addDefault(),
|
||||
`
|
||||
import _es6Default from "source";
|
||||
var _namespace = babelHelpers.interopRequireDefault(_es6Default);
|
||||
_namespace.default;
|
||||
import _source$es6Default from "source";
|
||||
var _source = babelHelpers.interopRequireDefault(_source$es6Default);
|
||||
_source.default;
|
||||
`,
|
||||
);
|
||||
});
|
||||
@ -579,8 +590,8 @@ describe("@babel/helper-module-imports", () => {
|
||||
{ importedInterop, ensureLiveReference: true },
|
||||
addDefault(),
|
||||
`
|
||||
var _namespace = babelHelpers.interopRequireDefault(require("source"));
|
||||
_namespace.default;
|
||||
var _source = babelHelpers.interopRequireDefault(require("source"));
|
||||
_source.default;
|
||||
`,
|
||||
);
|
||||
});
|
||||
@ -668,8 +679,8 @@ describe("@babel/helper-module-imports", () => {
|
||||
{ importingInterop, importedInterop },
|
||||
addNamed(),
|
||||
`
|
||||
import _namespace from "source";
|
||||
_namespace.read;
|
||||
import _source from "source";
|
||||
_source.read;
|
||||
`,
|
||||
);
|
||||
});
|
||||
@ -679,8 +690,8 @@ describe("@babel/helper-module-imports", () => {
|
||||
{ importingInterop, importedInterop, ensureNoContext: true },
|
||||
addNamed(),
|
||||
`
|
||||
import _namespace from "source";
|
||||
0, _namespace.read;
|
||||
import _source from "source";
|
||||
0, _source.read;
|
||||
`,
|
||||
);
|
||||
});
|
||||
@ -740,8 +751,8 @@ describe("@babel/helper-module-imports", () => {
|
||||
{ importedInterop, ensureLiveReference: true },
|
||||
addNamed(),
|
||||
`
|
||||
var _namespace = require("source");
|
||||
_namespace.read;
|
||||
var _source = require("source");
|
||||
_source.read;
|
||||
`,
|
||||
);
|
||||
});
|
||||
@ -759,8 +770,8 @@ describe("@babel/helper-module-imports", () => {
|
||||
{ importingInterop, importedInterop },
|
||||
addNamed(),
|
||||
`
|
||||
import _namespace from "source";
|
||||
_namespace.read;
|
||||
import _source from "source";
|
||||
_source.read;
|
||||
`,
|
||||
);
|
||||
});
|
||||
@ -770,8 +781,8 @@ describe("@babel/helper-module-imports", () => {
|
||||
{ importingInterop, importedInterop, ensureNoContext: true },
|
||||
addNamed(),
|
||||
`
|
||||
import _namespace from "source";
|
||||
0, _namespace.read;
|
||||
import _source from "source";
|
||||
0, _source.read;
|
||||
`,
|
||||
);
|
||||
});
|
||||
@ -831,8 +842,8 @@ describe("@babel/helper-module-imports", () => {
|
||||
{ importedInterop, ensureLiveReference: true },
|
||||
addNamed(),
|
||||
`
|
||||
var _namespace = require("source");
|
||||
_namespace.read;
|
||||
var _source = require("source");
|
||||
_source.read;
|
||||
`,
|
||||
);
|
||||
});
|
||||
@ -850,8 +861,8 @@ describe("@babel/helper-module-imports", () => {
|
||||
{ importingInterop, importedInterop },
|
||||
addNamed(),
|
||||
`
|
||||
import _es6Default from "source";
|
||||
_es6Default.read;
|
||||
import _source$es6Default from "source";
|
||||
_source$es6Default.read;
|
||||
`,
|
||||
);
|
||||
});
|
||||
@ -911,8 +922,8 @@ describe("@babel/helper-module-imports", () => {
|
||||
{ importedInterop, ensureLiveReference: true },
|
||||
addNamed(),
|
||||
`
|
||||
var _namespace = require("source");
|
||||
_namespace.read;
|
||||
var _source = require("source");
|
||||
_source.read;
|
||||
`,
|
||||
);
|
||||
});
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user