UNPKG

@spec2ts/core

Version:

Core module for @spec2ts modules, includes codegen helpers and common parsing methods

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