Fixes stack overflow when exporting a lot in commonjs (#38994)

* Fixes stack overflow when exporting a lot in commonjs

Fixes #38691

* Add missing test files
This commit is contained in:
Eric Anderson authored and GitHub committed 2020-09-04 09:01:59 -07:00
1 parent 237b6f61f6
commit 79f919e8f5
5 files changed
+50123 -1

No files matched your search

+13 -1
View File
@@ -99,7 +99,19 @@ namespace ts {
append(statements, createUnderscoreUnderscoreESModule());
}
if (length(currentModuleInfo.exportedNames)) {
append(statements, factory.createExpressionStatement(reduceLeft(currentModuleInfo.exportedNames, (prev, nextId) => factory.createAssignment(factory.createPropertyAccessExpression(factory.createIdentifier("exports"), factory.createIdentifier(idText(nextId))), prev), factory.createVoidZero() as Expression)));
const chunkSize = 50;
for (let i=0; i<currentModuleInfo.exportedNames!.length; i += chunkSize) {
append(
statements,
factory.createExpressionStatement(
reduceLeft(
currentModuleInfo.exportedNames!.slice(i, i + chunkSize),
(prev, nextId) => factory.createAssignment(factory.createPropertyAccessExpression(factory.createIdentifier("exports"), factory.createIdentifier(idText(nextId))), prev),
factory.createVoidZero() as Expression
)
)
);
}
}
append(statements, visitNode(currentModuleInfo.externalHelpersImportDeclaration, sourceElementVisitor, isStatement));
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff