aws-sdk-js-codemod
Version:
Collection of codemod scripts that help update AWS SDK for JavaScript APIs
38 lines (37 loc) • 2.01 kB
JavaScript
;
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;