@spec2ts/core
Version:
Core module for @spec2ts modules, includes codegen helpers and common parsing methods
38 lines (37 loc) • 1.61 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.findVariableDeclarationName = exports.findFirstVariableDeclarationName = exports.findFirstVariableDeclaration = exports.filterNodes = exports.findNode = void 0;
const ts = require("typescript");
const common_1 = require("./common");
function findNode(nodes, kind, test) {
const node = nodes.find(s => s.kind === kind && (!test || test(s)));
return node;
}
exports.findNode = findNode;
function filterNodes(nodes, kind, test) {
return nodes.filter(s => s.kind === kind && (!test || test(s)));
}
exports.filterNodes = filterNodes;
function findFirstVariableDeclaration(nodes, name) {
const statement = findNode(nodes, ts.SyntaxKind.VariableStatement, n => findFirstVariableDeclarationName(n) === name);
if (!statement)
return;
const [first] = statement.declarationList.declarations;
return first;
}
exports.findFirstVariableDeclaration = findFirstVariableDeclaration;
function findFirstVariableDeclarationName(n) {
const name = ts.getNameOfDeclaration(n.declarationList.declarations[0]);
return name && (0, common_1.getName)(name);
}
exports.findFirstVariableDeclarationName = findFirstVariableDeclarationName;
function findVariableDeclarationName(variable, name) {
for (const decla of variable.declarationList.declarations) {
const declaName = ts.getNameOfDeclaration(decla);
if (declaName && (0, common_1.getName)(declaName) === name) {
return decla;
}
}
return null;
}
exports.findVariableDeclarationName = findVariableDeclarationName;