Skip to content

Commit d9e2033

Browse files
author
Yui T
committed
Address PR: remove __resolved when emit for commonJs and just do Promise.resolve().then(...)
1 parent e6d7327 commit d9e2033

2 files changed

Lines changed: 9 additions & 20 deletions

File tree

src/compiler/transformers/module/module.ts

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -553,8 +553,8 @@ namespace ts {
553553
// ...
554554
// new Promise(function (_a, _b) { require([x], _a, _b); }); /*Amd Require*/
555555
// });
556-
const resolve = createIdentifier("_a");
557-
const reject = createIdentifier("_b");
556+
const resolve = createUniqueName("resolve");
557+
const reject = createUniqueName("reject")
558558
return createNew(
559559
createIdentifier("Promise"),
560560
/*typeArguments*/ undefined,
@@ -570,24 +570,21 @@ namespace ts {
570570
createCall(
571571
createIdentifier("require"),
572572
/*typeArguments*/ undefined,
573-
[createArrayLiteral(node.arguments), resolve, reject]
573+
[createArrayLiteral([firstOrUndefined(node.arguments) || createOmittedExpression()]), resolve, reject]
574574
))])
575575
)]);
576576
}
577577

578578
function transformImportCallExpressionCommonJS(node: ImportCall): Expression {
579579
// import("./blah")
580580
// emit as
581-
// var __resolved = new Promise(function (resolve) { resolve(); });
582-
// ....
583-
// __resolved.then(function () { return require(x); }) /*CommonJs Require*/
584-
585-
// Promise.resolve().then(() => require("./blah"));
581+
// Promise.resolve().then(function () { return require(x); }) /*CommonJs Require*/
586582
// We have to wrap require in then callback so that require is done in asynchronously
587583
// if we simply do require in resolve callback in Promise constructor. We will execute the loading immediately
588-
context.requestEmitHelper(dynamicImportCreateResolvedHelper);
589584
return createCall(
590-
createPropertyAccess(createIdentifier("__resolved"), "then"),
585+
createPropertyAccess(
586+
createCall(createPropertyAccess(createIdentifier("Promise"), "resolve"), /*typeArguments*/ undefined, /*argumentsArray*/ []),
587+
"then"),
591588
/*typeArguments*/ undefined,
592589
[createFunctionExpression(
593590
/*modifiers*/ undefined,
@@ -1609,14 +1606,6 @@ namespace ts {
16091606
name: "typescript:dynamicimport-sync-require",
16101607
scoped: true,
16111608
text: `
1612-
var __syncRequire = typeof module === "object" && typeof module.exports === "object";
1613-
var __resolved = new Promise(function (resolve) { resolve(); });`
1614-
};
1615-
1616-
const dynamicImportCreateResolvedHelper: EmitHelper = {
1617-
name: "typescript:dynamicimport-create-resolved",
1618-
scoped: false,
1619-
priority: 1,
1620-
text: `var __resolved = new Promise(function (resolve) { resolve(); });`
1609+
var __syncRequire = typeof module === "object" && typeof module.exports === "object";`
16211610
};
16221611
}

src/compiler/transformers/module/system.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ namespace ts {
5050
* @param node The SourceFile node.
5151
*/
5252
function transformSourceFile(node: SourceFile) {
53-
if (node.isDeclarationFile || !(isExternalModule(node) || compilerOptions.isolatedModules || node.transformFlags & TransformFlags.ContainsDynamicImport)) {
53+
if (node.isDeclarationFile || !(isEffectiveExternalModule(node, compilerOptions)|| node.transformFlags & TransformFlags.ContainsDynamicImport)) {
5454
return node;
5555
}
5656

0 commit comments

Comments
 (0)