Skip to main content
Glama
nrwl

Nx MCP Server

Official
by nrwl
add-dependency-codelens-provider.ts2.24 kB
import { NxCodeLensProvider, getWorkspacePath, registerCodeLensProvider, } from '@nx-console/vscode-utils'; import { join } from 'path'; import { isPropertyAssignment, isStringLiteral, ObjectLiteralElementLike, ObjectLiteralExpression, parseJsonText, } from 'typescript'; import { CodeLens, Command, ProviderResult, Range, TextDocument } from 'vscode'; import { ADD_DEPENDENCY_COMMAND, ADD_DEV_DEPENDENCY_COMMAND, } from './vscode-add-dependency'; export class AddDependencyCodelensProvider implements NxCodeLensProvider { CODELENS_PATTERN = { pattern: '**/package.json' }; constructor() { registerCodeLensProvider(this); } provideCodeLenses(document: TextDocument): ProviderResult<CodeLens[]> { try { const workspacePath = getWorkspacePath(); if (document.uri.path !== join(workspacePath, 'package.json')) { return; } const packageJson = parseJsonText('package.json', document.getText()); const packageJsonObject = packageJson.statements[0] .expression as ObjectLiteralExpression; const depProperty = packageJsonObject.properties.find( (property) => getPropertyName(property) === 'dependencies' ); const devDepProperty = packageJsonObject.properties.find( (property) => getPropertyName(property) === 'devDependencies' ); const lenses: CodeLens[] = []; if (depProperty) { const pos = document.positionAt(depProperty.getStart(packageJson)); const command: Command = { title: 'Add Dependency', command: ADD_DEPENDENCY_COMMAND, }; lenses.push(new CodeLens(new Range(pos, pos), command)); } if (devDepProperty) { const pos = document.positionAt(devDepProperty.getStart(packageJson)); const command: Command = { title: 'Add Dev Dependency', command: ADD_DEV_DEPENDENCY_COMMAND, }; lenses.push(new CodeLens(new Range(pos, pos), command)); } return lenses; } catch (e) { return []; } } } function getPropertyName(property: ObjectLiteralElementLike) { if (isPropertyAssignment(property) && isStringLiteral(property.name)) { return property.name.text; } }

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/nrwl/nx-console'

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