MCPcopy Create free account
hub / github.com/nodejs/node / convertExportsDotXEquals_replaceNode

Function convertExportsDotXEquals_replaceNode

test/fixtures/snapshot/typescript.js:152372–152396  ·  view source on GitHub ↗
(name, exported, useSitesToUnqualify)

Source from the content-addressed store, hash-verified

152370 }
152371 // TODO: GH#22492 this will cause an error if a change has been made inside the body of the node.
152372 function convertExportsDotXEquals_replaceNode(name, exported, useSitesToUnqualify) {
152373 var modifiers = [ts.factory.createToken(93 /* SyntaxKind.ExportKeyword */)];
152374 switch (exported.kind) {
152375 case 213 /* SyntaxKind.FunctionExpression */: {
152376 var expressionName = exported.name;
152377 if (expressionName && expressionName.text !== name) {
152378 // `exports.f = function g() {}` -> `export const f = function g() {}`
152379 return exportConst();
152380 }
152381 }
152382 // falls through
152383 case 214 /* SyntaxKind.ArrowFunction */:
152384 // `exports.f = function() {}` --> `export function f() {}`
152385 return functionExpressionToDeclaration(name, modifiers, exported, useSitesToUnqualify);
152386 case 226 /* SyntaxKind.ClassExpression */:
152387 // `exports.C = class {}` --> `export class C {}`
152388 return classExpressionToDeclaration(name, modifiers, exported, useSitesToUnqualify);
152389 default:
152390 return exportConst();
152391 }
152392 function exportConst() {
152393 // `exports.x = 0;` --> `export const x = 0;`
152394 return makeConst(modifiers, ts.factory.createIdentifier(name), replaceImportUseSites(exported, useSitesToUnqualify)); // TODO: GH#18217
152395 }
152396 }
152397 function replaceImportUseSites(nodeOrNodes, useSitesToUnqualify) {
152398 if (!useSitesToUnqualify || !ts.some(ts.arrayFrom(useSitesToUnqualify.keys()), function (original) { return ts.rangeContainsRange(nodeOrNodes, original); })) {
152399 return nodeOrNodes;

Callers 1

Calls 3

exportConstFunction · 0.85

Tested by

no test coverage detected