UNPKG

aws-sdk-js-codemod

Version:

Collection of codemod scripts that help update AWS SDK for JavaScript APIs

35 lines (34 loc) 1.83 kB
"use strict"; 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;