vnopts
Version:
validate and normalize options
33 lines (32 loc) • 2.36 kB
TypeScript
import { DefaultResult, DeprecatedResult, ExpectedResult, ForwardResult, OptionValue, RedirectResult, Utils, ValidateResult } from './types.js';
export interface SchemaParameters<$Value> extends SchemaHandlers<$Value> {
name: string;
}
export interface SchemaHandlers<$Value> {
default?: DefaultResult<$Value> | ((schema: Schema<$Value>, utils: Utils) => DefaultResult<$Value>);
expected?: ExpectedResult | ((schema: Schema<$Value>, utils: Utils) => ExpectedResult);
validate?: ValidateResult | ((value: unknown, schema: Schema<$Value>, utils: Utils) => ValidateResult);
deprecated?: DeprecatedResult<$Value> | ((value: $Value, schema: Schema<$Value>, utils: Utils) => DeprecatedResult<$Value>);
forward?: ForwardResult<$Value> | ((value: $Value, schema: Schema<$Value>, utils: Utils) => ForwardResult<$Value>);
redirect?: RedirectResult<$Value> | ((value: $Value, schema: Schema<$Value>, utils: Utils) => RedirectResult<$Value>);
overlap?: (currentValue: $Value, newValue: $Value, schema: Schema<$Value>, utils: Utils) => $Value;
preprocess?: (value: unknown, schema: Schema<$Value>, utils: Utils) => unknown;
postprocess?: (value: $Value, schema: Schema<$Value>, utils: Utils) => unknown;
}
export declare function createSchema<$Schema extends Schema<any>, $Parameters extends $Schema['_parametersType']>(SchemaConstructor: new (parameters: $Parameters) => $Schema, parameters: $Parameters): $Schema;
export declare abstract class Schema<$Value extends OptionValue, $Parameters extends SchemaHandlers<$Value> = SchemaHandlers<$Value>> {
static create<$Schema extends Schema<any>>(parameters: $Schema['_parametersType']): $Schema;
name: string;
_valueType: $Value;
_parametersType: $Parameters;
constructor(parameters: SchemaParameters<$Value>);
default(_utils: Utils): DefaultResult<$Value>;
expected(_utils: Utils): ExpectedResult;
validate(_value: unknown, _utils: Utils): ValidateResult;
deprecated(_value: $Value, _utils: Utils): DeprecatedResult<$Value>;
forward(_value: $Value, _utils: Utils): ForwardResult<$Value>;
redirect(_value: $Value, _utils: Utils): RedirectResult<$Value>;
overlap(currentValue: $Value, _newValue: $Value, _utils: Utils): $Value;
preprocess(value: unknown, _utils: Utils): any;
postprocess(_value: $Value, _utils: Utils): any;
}