UNPKG

aws-sdk-js-codemod

Version:

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

38 lines (37 loc) 2.01 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.addNamedModule = void 0; const addDefaultModule_1 = require("./addDefaultModule"); const getDefaultName_1 = require("./getDefaultName"); const getImportEqualsDeclarations_1 = require("./getImportEqualsDeclarations"); const getImportSpecifiers_1 = require("./getImportSpecifiers"); const addNamedModule = (j, source, options) => { const { localName, importedName = localName, packageName } = options; const defaultLocalName = (0, getDefaultName_1.getDefaultName)(packageName); const existingDeclaration = source.find(j.TSImportEqualsDeclaration, { type: "TSImportEqualsDeclaration", id: { type: "Identifier", name: localName }, moduleReference: { type: "TSQualifiedName", left: { type: "Identifier", name: defaultLocalName }, right: { type: "Identifier", name: importedName }, }, }); if (existingDeclaration.size()) { return; } if ((0, getImportSpecifiers_1.getImportSpecifiers)(j, source, packageName).length === 0) { (0, addDefaultModule_1.addDefaultModule)(j, source, packageName); } const importEqualsDeclaration = j.tsImportEqualsDeclaration(j.identifier(localName), j.tsQualifiedName(j.identifier(defaultLocalName), j.identifier(importedName))); const v3ClientImportEquals = (0, getImportEqualsDeclarations_1.getImportEqualsDeclarations)(j, source, packageName).filter((importEqualsDeclaration) => importEqualsDeclaration.value.id.name === defaultLocalName); // Insert import equals after the package import equals. if (v3ClientImportEquals.size() > 0) { v3ClientImportEquals.at(0).insertAfter(importEqualsDeclaration); return; } // Unreachable code, throw error throw new Error("The named import equals can't exist on it's own.\n" + "Please report your use case on https://github.com/aws/aws-sdk-js-codemod"); }; exports.addNamedModule = addNamedModule;