aws-sdk-js-codemod
Version:
Collection of codemod scripts that help update AWS SDK for JavaScript APIs
35 lines (34 loc) • 1.83 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.addNamedModule = void 0;
const importModule_1 = require("../importModule");
const importSpecifierCompareFn_1 = require("../importSpecifierCompareFn");
const addNamedModule = (j, source, options) => {
const { localName, importedName = localName, packageName } = options;
const importSpecifiers = (0, importModule_1.getImportSpecifiers)(j, source, packageName);
if (importSpecifiers.length > 0) {
// Return if the import specifier already exists.
if (importSpecifiers.find((specifier) => specifier.importedName === importedName && specifier.localName === localName)) {
return;
}
// Add named import to the first import declaration.
const firstImportDeclSpecifiers = (0, importModule_1.getImportDeclarations)(j, source, packageName).nodes()[0]
.specifiers;
if (firstImportDeclSpecifiers) {
firstImportDeclSpecifiers.push(j.importSpecifier(j.identifier(importedName), j.identifier(localName)));
firstImportDeclSpecifiers.sort(importSpecifierCompareFn_1.importSpecifierCompareFn);
return;
}
}
// Build a new import declaration.
const v3ImportDeclaration = j.importDeclaration([j.importSpecifier(j.identifier(importedName), j.identifier(localName))], j.stringLiteral(packageName));
const v2importDeclarations = (0, importModule_1.getImportDeclarations)(j, source);
if (v2importDeclarations.size()) {
// Insert it after the last import declaration.
v2importDeclarations.at(0).insertAfter(v3ImportDeclaration);
return;
}
// Insert it at the top of the document.
source.get().node.program.body.unshift(v3ImportDeclaration);
};
exports.addNamedModule = addNamedModule;