apisurf
Version:
Analyze API surface changes between npm package versions to catch breaking changes
41 lines (40 loc) • 1.21 kB
JavaScript
/**
* Parse enum definition from source lines
*/
export function parseEnumDefinition(lines, startIndex, name) {
const members = [];
let braceCount = 0;
let inEnum = false;
for (let i = startIndex; i < lines.length; i++) {
const line = lines[i].trim();
if (line.includes('{')) {
braceCount++;
inEnum = true;
}
if (inEnum && braceCount > 0) {
// Skip comment lines
if (line.startsWith('//') || line.startsWith('/*') || line.startsWith('*')) {
continue;
}
// Remove inline comments
const lineWithoutComment = line.split('//')[0].trim();
// Match enum members like: PENDING = 'pending',
const memberMatch = lineWithoutComment.match(/^\s*(\w+)\s*=/);
if (memberMatch) {
members.push(memberMatch[1]);
}
}
if (line.includes('}')) {
braceCount--;
if (braceCount === 0) {
break;
}
}
}
return {
name,
kind: 'enum',
members,
signature: `export enum ${name} { ${members.join(', ')} }`
};
}