aws-sdk-js-codemod
Version:
Collection of codemod scripts that help update AWS SDK for JavaScript APIs
105 lines (104 loc) • 3.95 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.removePromiseCalls = void 0;
const removePromiseForCallExpression_1 = require("./removePromiseForCallExpression");
// Removes .promise() from client API calls.
const removePromiseCalls = (j, source, { v2GlobalName, v2ClientName, v2ClientLocalName, clientIdentifiers }) => {
// Remove .promise() for API calls from client creation from global name.
if (v2GlobalName) {
source
.find(j.CallExpression, {
callee: {
type: "MemberExpression",
object: {
type: "CallExpression",
callee: {
type: "MemberExpression",
object: {
type: "NewExpression",
callee: {
type: "MemberExpression",
object: { type: "Identifier", name: v2GlobalName },
property: { type: "Identifier", name: v2ClientName },
},
},
},
},
property: { type: "Identifier", name: "promise" },
},
})
.forEach((callExpression) => {
(0, removePromiseForCallExpression_1.removePromiseForCallExpression)(j, callExpression);
});
}
// Remove .promise() for API calls client creation from local name.
source
.find(j.CallExpression, {
callee: {
type: "MemberExpression",
object: {
type: "CallExpression",
callee: {
type: "MemberExpression",
object: {
type: "NewExpression",
callee: { type: "Identifier", name: v2ClientLocalName },
},
},
},
property: { type: "Identifier", name: "promise" },
},
})
.forEach((callExpression) => {
(0, removePromiseForCallExpression_1.removePromiseForCallExpression)(j, callExpression);
});
for (const clientId of clientIdentifiers) {
// Remove .promise() from client API calls.
source
.find(j.CallExpression, {
callee: {
type: "MemberExpression",
object: {
type: "CallExpression",
callee: {
type: "MemberExpression",
object: clientId,
},
},
property: { type: "Identifier", name: "promise" },
},
})
.forEach((callExpression) => {
(0, removePromiseForCallExpression_1.removePromiseForCallExpression)(j, callExpression);
});
// Remove .promise() from client API request stored in a variable.
source
.find(j.VariableDeclarator, {
id: { type: "Identifier" },
init: {
type: "CallExpression",
callee: {
type: "MemberExpression",
object: clientId,
},
},
})
.forEach((variableDeclarator) => {
source
.find(j.CallExpression, {
callee: {
type: "MemberExpression",
object: {
type: "Identifier",
name: variableDeclarator.value.id.name,
},
property: { type: "Identifier", name: "promise" },
},
})
.forEach((callExpression) => {
(0, removePromiseForCallExpression_1.removePromiseForCallExpression)(j, callExpression);
});
});
}
};
exports.removePromiseCalls = removePromiseCalls;