Skip to content

Commit 83e61cf

Browse files
committed
fix esmodule big, unify export emit between es6/pre-es6
1 parent a4770af commit 83e61cf

13 files changed

+44
-27
lines changed

src/compiler/emitter.ts

+22-27
Original file line numberDiff line numberDiff line change
@@ -3628,12 +3628,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
36283628
// only allow export default at a source file level
36293629
if (modulekind === ModuleKind.CommonJS || modulekind === ModuleKind.AMD || modulekind === ModuleKind.UMD) {
36303630
if (!isEs6Module) {
3631-
if (languageVersion === ScriptTarget.ES5) {
3631+
if (languageVersion !== ScriptTarget.ES3) {
36323632
// default value of configurable, enumerable, writable are `false`.
36333633
write("Object.defineProperty(exports, \"__esModule\", { value: true });");
36343634
writeLine();
36353635
}
3636-
else if (languageVersion === ScriptTarget.ES3) {
3636+
else {
36373637
write("exports.__esModule = true;");
36383638
writeLine();
36393639
}
@@ -5171,36 +5171,31 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
51715171
if (!(node.flags & NodeFlags.Export)) {
51725172
return;
51735173
}
5174-
// If this is an exported class, but not on the top level (i.e. on an internal
5175-
// module), export it
5176-
if (node.flags & NodeFlags.Default) {
5177-
// if this is a top level default export of decorated class, write the export after the declaration.
5178-
writeLine();
5179-
if (thisNodeIsDecorated && modulekind === ModuleKind.ES6) {
5180-
write("export default ");
5181-
emitDeclarationName(node);
5182-
write(";");
5183-
}
5184-
else if (modulekind === ModuleKind.System) {
5185-
write(`${exportFunctionForFile}("default", `);
5186-
emitDeclarationName(node);
5187-
write(");");
5174+
if (modulekind !== ModuleKind.ES6) {
5175+
emitExportMemberAssignment(node as ClassDeclaration);
5176+
}
5177+
else {
5178+
// If this is an exported class, but not on the top level (i.e. on an internal
5179+
// module), export it
5180+
if (node.flags & NodeFlags.Default) {
5181+
// if this is a top level default export of decorated class, write the export after the declaration.
5182+
if (thisNodeIsDecorated) {
5183+
writeLine();
5184+
write("export default ");
5185+
emitDeclarationName(node);
5186+
write(";");
5187+
}
51885188
}
5189-
else if (modulekind !== ModuleKind.ES6) {
5190-
write(`exports.default = `);
5189+
else if (node.parent.kind !== SyntaxKind.SourceFile) {
5190+
writeLine();
5191+
emitStart(node);
5192+
emitModuleMemberName(node);
5193+
write(" = ");
51915194
emitDeclarationName(node);
5195+
emitEnd(node);
51925196
write(";");
51935197
}
51945198
}
5195-
else if (node.parent.kind !== SyntaxKind.SourceFile || (modulekind !== ModuleKind.ES6 && !(node.flags & NodeFlags.Default))) {
5196-
writeLine();
5197-
emitStart(node);
5198-
emitModuleMemberName(node);
5199-
write(" = ");
5200-
emitDeclarationName(node);
5201-
emitEnd(node);
5202-
write(";");
5203-
}
52045199
}
52055200

52065201
function emitClassLikeDeclarationBelowES6(node: ClassLikeDeclaration) {

tests/baselines/reference/anonymousDefaultExportsAmd.js

+2
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,13 @@ define(["require", "exports"], function (require, exports) {
1111
"use strict";
1212
class default_1 {
1313
}
14+
Object.defineProperty(exports, "__esModule", { value: true });
1415
exports.default = default_1;
1516
});
1617
//// [b.js]
1718
define(["require", "exports"], function (require, exports) {
1819
"use strict";
1920
function default_1() { }
21+
Object.defineProperty(exports, "__esModule", { value: true });
2022
exports.default = default_1;
2123
});

tests/baselines/reference/anonymousDefaultExportsCommonjs.js

+2
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@ export default function() {}
1010
"use strict";
1111
class default_1 {
1212
}
13+
Object.defineProperty(exports, "__esModule", { value: true });
1314
exports.default = default_1;
1415
//// [b.js]
1516
"use strict";
1617
function default_1() { }
18+
Object.defineProperty(exports, "__esModule", { value: true });
1719
exports.default = default_1;

tests/baselines/reference/anonymousDefaultExportsUmd.js

+2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ export default function() {}
1818
"use strict";
1919
class default_1 {
2020
}
21+
Object.defineProperty(exports, "__esModule", { value: true });
2122
exports.default = default_1;
2223
});
2324
//// [b.js]
@@ -31,5 +32,6 @@ export default function() {}
3132
})(function (require, exports) {
3233
"use strict";
3334
function default_1() { }
35+
Object.defineProperty(exports, "__esModule", { value: true });
3436
exports.default = default_1;
3537
});

tests/baselines/reference/decoratedDefaultExportsGetExportedAmd.js

+2
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ define(["require", "exports"], function (require, exports) {
2828
Foo = __decorate([
2929
decorator
3030
], Foo);
31+
Object.defineProperty(exports, "__esModule", { value: true });
3132
exports.default = Foo;
3233
});
3334
//// [b.js]
@@ -45,5 +46,6 @@ define(["require", "exports"], function (require, exports) {
4546
default_1 = __decorate([
4647
decorator
4748
], default_1);
49+
Object.defineProperty(exports, "__esModule", { value: true });
4850
exports.default = default_1;
4951
});

tests/baselines/reference/decoratedDefaultExportsGetExportedCommonjs.js

+2
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ let Foo = class {
2727
Foo = __decorate([
2828
decorator
2929
], Foo);
30+
Object.defineProperty(exports, "__esModule", { value: true });
3031
exports.default = Foo;
3132
//// [b.js]
3233
"use strict";
@@ -42,4 +43,5 @@ let default_1 = class {
4243
default_1 = __decorate([
4344
decorator
4445
], default_1);
46+
Object.defineProperty(exports, "__esModule", { value: true });
4547
exports.default = default_1;

tests/baselines/reference/decoratedDefaultExportsGetExportedUmd.js

+2
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
3535
Foo = __decorate([
3636
decorator
3737
], Foo);
38+
Object.defineProperty(exports, "__esModule", { value: true });
3839
exports.default = Foo;
3940
});
4041
//// [b.js]
@@ -59,5 +60,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5960
default_1 = __decorate([
6061
decorator
6162
], default_1);
63+
Object.defineProperty(exports, "__esModule", { value: true });
6264
exports.default = default_1;
6365
});

tests/baselines/reference/defaultExportsGetExportedAmd.js

+2
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,13 @@ define(["require", "exports"], function (require, exports) {
1212
"use strict";
1313
class Foo {
1414
}
15+
Object.defineProperty(exports, "__esModule", { value: true });
1516
exports.default = Foo;
1617
});
1718
//// [b.js]
1819
define(["require", "exports"], function (require, exports) {
1920
"use strict";
2021
function foo() { }
22+
Object.defineProperty(exports, "__esModule", { value: true });
2123
exports.default = foo;
2224
});

tests/baselines/reference/defaultExportsGetExportedCommonjs.js

+2
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,10 @@ export default function foo() {}
1111
"use strict";
1212
class Foo {
1313
}
14+
Object.defineProperty(exports, "__esModule", { value: true });
1415
exports.default = Foo;
1516
//// [b.js]
1617
"use strict";
1718
function foo() { }
19+
Object.defineProperty(exports, "__esModule", { value: true });
1820
exports.default = foo;

tests/baselines/reference/defaultExportsGetExportedUmd.js

+2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ export default function foo() {}
1919
"use strict";
2020
class Foo {
2121
}
22+
Object.defineProperty(exports, "__esModule", { value: true });
2223
exports.default = Foo;
2324
});
2425
//// [b.js]
@@ -32,5 +33,6 @@ export default function foo() {}
3233
})(function (require, exports) {
3334
"use strict";
3435
function foo() { }
36+
Object.defineProperty(exports, "__esModule", { value: true });
3537
exports.default = foo;
3638
});

tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport.js

+1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ var x1: number = m;
2727
exports.a = 10;
2828
exports.x = exports.a;
2929
exports.m = exports.a;
30+
Object.defineProperty(exports, "__esModule", { value: true });
3031
exports.default = {};
3132
//// [es6ImportDefaultBindingFollowedWithNamedImport_1.js]
3233
"use strict";

tests/baselines/reference/exportsAndImports4-es6.js

+1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ export { a, b, c, d, e1, e2, f1, f2 };
4141

4242
//// [t1.js]
4343
"use strict";
44+
Object.defineProperty(exports, "__esModule", { value: true });
4445
exports.default = "hello";
4546
//// [t3.js]
4647
"use strict";

tests/baselines/reference/outFilerootDirModuleNamesAmd.js

+2
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,14 @@ export default function foo() { new Foo(); }
1414
define("b", ["require", "exports", "a"], function (require, exports, a_1) {
1515
"use strict";
1616
function foo() { new a_1.default(); }
17+
Object.defineProperty(exports, "__esModule", { value: true });
1718
exports.default = foo;
1819
});
1920
define("a", ["require", "exports", "b"], function (require, exports, b_1) {
2021
"use strict";
2122
class Foo {
2223
}
24+
Object.defineProperty(exports, "__esModule", { value: true });
2325
exports.default = Foo;
2426
b_1.default();
2527
});

0 commit comments

Comments
 (0)