import { createRule, paramMessage } from '@typespec/compiler' import { isKebabCase } from './utils.js' export const operationIdKebabCaseRule = createRule({ name: 'operation-id-kebab-case', severity: 'error', description: 'Ensure @operationId values are in kebab-case.', messages: { default: paramMessage`The operationId "${'operationId'}" should be in kebab-case.`, }, create: (context) => ({ operation: (node) => { const operationIdDecorator = node.decorators.find( (d) => d.decorator.name === '$operationId', ) if (operationIdDecorator) { const operationId = operationIdDecorator.args[0]?.jsValue if ( operationId && typeof operationId === 'string' && !isKebabCase(operationId) ) { context.reportDiagnostic({ format: { operationId, }, target: node, messageId: 'default', }) } } }, }), })