UNPKG

ag-grid-community

Version:

Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue

72 lines (71 loc) 3.73 kB
import type { BeanCollection } from '../context/context'; import type { GridOptions } from '../entities/gridOptions'; import type { ValidationModuleName } from '../interfaces/iModule'; import type { RowModelType } from '../interfaces/iRowModel'; import type { ErrorId, GetErrorParams } from './errorMessages/errorText'; import type { LogService } from './logService'; /** * A validation result that resolves to a first-class error id (so it is captured by the diagnostic * overlay and throw mode), rather than a free-text message. Build via {@link _createValidationWarning}. * `emit` is captured at construction, where the id/params pairing is concrete. * @internal AG_GRID_INTERNAL - Not for public use. Can change / be removed at any time. */ export interface ValidationWarning { errorId: ErrorId; /** Emit through the emitting grid's log service, so the diagnostic is attributed to that grid. */ emit: (log: LogService) => void; } /** @internal AG_GRID_INTERNAL - Not for public use. Can change / be removed at any time. */ export declare function _createValidationWarning<TId extends ErrorId>(errorId: TId, params: GetErrorParams<TId>): ValidationWarning; /** * As {@link _createValidationWarning}, but the diagnostic is captured as a deprecation (see {@link _deprecated}). * @internal AG_GRID_INTERNAL - Not for public use. Can change / be removed at any time. */ export declare function _createDeprecationWarning<TId extends ErrorId>(errorId: TId, params: GetErrorParams<TId>): ValidationWarning; /** * Emits a validation result that may be either a first-class {@link ValidationWarning} or a legacy * free-text string (logged under the generic id 322), through the emitting grid's log service so the * diagnostic is attributed to that grid. * @internal AG_GRID_INTERNAL - Not for public use. Can change / be removed at any time. */ export declare function _emitValidationWarning(warning: string | ValidationWarning, log: LogService): void; /** Build the set of all property names that should be accepted without warning. */ export declare function buildAllValidNames<T extends object>(allProperties: string[], deprecations: Deprecations<T>, propertyExceptions?: string[]): Set<string>; export interface OptionsValidator<T extends object> { objectName: string; allProperties: string[]; /** Pre-computed set of all accepted property names (valid + deprecated + exceptions + Vue). */ allValidNames: Set<string>; docsUrl?: `${string}/`; deprecations: Deprecations<T>; validations: Validations<T>; } export type Deprecations<T extends object> = Partial<{ [key in keyof T]: { version: string; message?: string; }; }>; type GetRequiredModule<T extends object> = (options: T, gridOptions: GridOptions, beans: BeanCollection) => ValidationModuleName | ValidationModuleName[] | null; export type RequiredModule<T extends object> = GetRequiredModule<T> | ValidationModuleName | ValidationModuleName[]; export type ModuleValidation<T extends object> = { [key in keyof T]?: RequiredModule<T>; }; export type Validations<T extends object> = { [key in keyof T]?: OptionsValidation<T>; }; interface OptionsValidation<T extends object> { supportedRowModels?: RowModelType[]; dependencies?: RequiredOptions<T>; validate?: (options: T, gridOptions: GridOptions, beans: BeanCollection) => string | ValidationWarning | null; /** Currently only supports boolean or number */ expectedType?: 'boolean' | 'number'; } export type DependentValues<T extends object, K extends keyof T> = { required: T[K][]; reason?: string; }; export type RequiredOptions<T extends object> = { [K in keyof T]: DependentValues<T, K>; }; export {};