import type { ApplicationService } from '../src/types.ts'; import { RequestValidator } from '../modules/http/main.ts'; import { type FileRuleValidationOptions, VineMultipartFile } from '../src/vine.ts'; /** * Extend VineJS */ declare module '@vinejs/vine' { interface Vine { file(options?: FileRuleValidationOptions): VineMultipartFile; } } /** * Extend HTTP request class */ declare module '@adonisjs/core/http' { interface HttpRequest extends RequestValidator { } } /** * The VineJS service provider integrates VineJS validation * library with AdonisJS application environment * * This provider sets up: * - File validation rule for multipart file uploads * - Request validation macro for easy validation in HTTP contexts * - Extension of VineJS with AdonisJS-specific validation features * * @example * const provider = new VineJSServiceProvider(app) * provider.boot() * // Now Request has validateUsing method */ export default class VineJSServiceProvider { protected app: ApplicationService; /** * VineJS service provider constructor * * Sets the usingVineJS flag to true to indicate VineJS is being used. * * @param app - The application service instance */ constructor(app: ApplicationService); /** * Boot the VineJS service provider * * Extends VineJS with file validation macro and adds validateUsing * method to the Request class for easy validation in HTTP contexts. * * @example * provider.boot() * // Now vine.file() and request.validateUsing() are available */ boot(): void; }