@spec2ts/core
Version:
Core module for @spec2ts modules, includes codegen helpers and common parsing methods
34 lines (33 loc) • 2.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.updateVariableStatementPropertyValue = exports.updateVariableStatementValue = exports.findFirstVariableStatement = void 0;
const ts = require("typescript");
const common_1 = require("./common");
const declaration_1 = require("./declaration");
const expression_1 = require("./expression");
const finder_1 = require("./finder");
function findFirstVariableStatement(nodes, variableName) {
return (0, finder_1.findNode)(nodes, ts.SyntaxKind.VariableStatement, n => !!(0, finder_1.findVariableDeclarationName)(n, variableName));
}
exports.findFirstVariableStatement = findFirstVariableStatement;
function updateVariableStatementValue(statement, variableName, value) {
const decla = (0, finder_1.findVariableDeclarationName)(statement, variableName);
if (!decla) {
throw new Error(`Could not find variable declaration in given statement: ${variableName}`);
}
return ts.factory.updateVariableStatement(statement, statement.modifiers, ts.factory.updateVariableDeclarationList(statement.declarationList, (0, common_1.replaceNode)(statement.declarationList.declarations, decla, (0, declaration_1.updateVariableDeclarationInitializer)(decla, value))));
}
exports.updateVariableStatementValue = updateVariableStatementValue;
function updateVariableStatementPropertyValue(statement, variableName, propertyName, value) {
const decla = (0, finder_1.findVariableDeclarationName)(statement, variableName);
if (!decla) {
throw new Error(`Could not find variable declaration in given statement: ${variableName}`);
}
if (!decla.initializer || !ts.isObjectLiteralExpression(decla.initializer)) {
return ts.factory.updateVariableStatement(statement, statement.modifiers, ts.factory.updateVariableDeclarationList(statement.declarationList, (0, common_1.replaceNode)(statement.declarationList.declarations, decla, (0, declaration_1.updateVariableDeclarationInitializer)(decla, ts.factory.createObjectLiteralExpression([
ts.factory.createPropertyAssignment(propertyName, value)
])))));
}
return ts.factory.updateVariableStatement(statement, statement.modifiers, ts.factory.updateVariableDeclarationList(statement.declarationList, (0, common_1.replaceNode)(statement.declarationList.declarations, decla, (0, declaration_1.updateVariableDeclarationInitializer)(decla, (0, expression_1.upsertPropertyValue)(decla.initializer, propertyName, value)))));
}
exports.updateVariableStatementPropertyValue = updateVariableStatementPropertyValue;