ag-grid-community
Version:
Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
72 lines (71 loc) • 3.73 kB
TypeScript
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 {};