/** * Test script for page-query-must-use-builders rule */ const rule = require('./page-query-must-use-builders.js'); const { Linter } = require('eslint'); const linter = new Linter(); // Register the plugin linter.defineRule('gridpilot-rules/page-query-must-use-builders', rule); const code = ` import { AdminApiClient } from '@/lib/api/admin/AdminApiClient'; import { PageQuery } from '@/lib/contracts/page-queries/PageQuery'; import { Result } from '@/lib/contracts/Result'; import { EnhancedErrorReporter } from '@/lib/infrastructure/EnhancedErrorReporter'; import { ConsoleLogger } from '@/lib/infrastructure/logging/ConsoleLogger'; import { AdminService } from '@/lib/services/admin/AdminService'; import type { DashboardStats } from '@/lib/api/admin/AdminApiClient'; export class AdminDashboardPageQuery implements PageQuery { async execute(): Promise> { try { const logger = new ConsoleLogger(); const errorReporter = new EnhancedErrorReporter(logger, { showUserNotifications: false, logToConsole: true, reportToExternal: process.env.NODE_ENV === 'production', }); const baseUrl = process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:3001'; const apiClient = new AdminApiClient(baseUrl, errorReporter, logger); const adminService = new AdminService(apiClient); const apiDto = await adminService.getDashboardStats(); return Result.ok(apiDto); } catch (err) { console.error('AdminDashboardPageQuery failed:', err); if (err instanceof Error && (err.message.includes('403') || err.message.includes('401'))) { return Result.err('notFound'); } return Result.err('admin_dashboard_fetch_failed'); } } } `; const messages = linter.verify(code, { parser: '@typescript-eslint/parser', parserOptions: { ecmaVersion: 2020, sourceType: 'module', }, rules: { 'gridpilot-rules/page-query-must-use-builders': 'error', }, }); console.log('ESLint messages:', messages);