Skip to main content
Glama
push-based

Angular Toolkit MCP

by push-based
parse-component.ts1.3 kB
import { toUnixPath } from '@code-pushup/utils'; import * as ts from 'typescript'; import { classDecoratorVisitor } from './decorator-config.visitor.js'; import { ParsedComponent } from './types.js'; /** * Parses Angular components from a `FastFindInFiles` result. * It uses `typescript` to parse the components source files and extract the decorators. * From the decorators, it extracts the `@Component` decorator and its properties. * The used properties are `templateUrl`, `template`, `styles`, and `styleUrls`. * * @param files */ export async function parseComponents( files: string[], ): Promise<ParsedComponent[]> { const filePaths = new Set(files.map((filePath) => toUnixPath(filePath))); const program = ts.createProgram([...filePaths], { target: ts.ScriptTarget.Latest, module: ts.ModuleKind.ESNext, experimentalDecorators: true, }); const sourceFiles: ts.SourceFile[] = program .getSourceFiles() .filter((file: ts.SourceFile) => filePaths.has(file.fileName)); const results: ParsedComponent[] = []; //sourceFiles for (const sourceFile of sourceFiles) { const visitor = await classDecoratorVisitor({ sourceFile }); ts.visitEachChild(sourceFile, visitor, undefined); results.push(...visitor.components); } return results; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/push-based/angular-toolkit-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server