123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- /*!
- * TSBuffer Validator v2.1.2
- * -----------------------------------------
- * MIT LICENSE
- * KingWorks (C) Copyright 2023
- * https://github.com/k8w/tsbuffer-validator
- */
- import { InterfaceReference } from 'tsbuffer-schema';
- import { InterfaceTypeSchema } from 'tsbuffer-schema';
- import { IntersectionTypeSchema } from 'tsbuffer-schema';
- import { OmitTypeSchema } from 'tsbuffer-schema';
- import { OverwriteTypeSchema } from 'tsbuffer-schema';
- import { PartialTypeSchema } from 'tsbuffer-schema';
- import { PickTypeSchema } from 'tsbuffer-schema';
- import { TSBufferProto } from 'tsbuffer-schema';
- import { TSBufferSchema } from 'tsbuffer-schema';
- import { TypeReference } from 'tsbuffer-schema';
- import { UnionTypeSchema } from 'tsbuffer-schema';
- /** @public */
- export declare interface FlatInterfaceTypeSchema {
- type: InterfaceTypeSchema['type'];
- properties: NonNullable<InterfaceTypeSchema['properties']>;
- indexSignature?: InterfaceTypeSchema['indexSignature'];
- }
- export declare class ProtoHelper {
- readonly proto: TSBufferProto;
- constructor(proto: TSBufferProto);
- /** 将ReferenceTypeSchema层层转换为它最终实际引用的类型 */
- parseReference(schema: TSBufferSchema): Exclude<TSBufferSchema, TypeReference>;
- isInterface(schema: TSBufferSchema, excludeReference?: boolean): schema is InterfaceTypeSchema | InterfaceReference;
- isMappedType(schema: TSBufferSchema): schema is Exclude<InterfaceReference, TypeReference>;
- isTypeReference(schema: TSBufferSchema): schema is TypeReference;
- getUnionProperties(schema: UnionTypeSchema | IntersectionTypeSchema): string[];
- /**
- * unionProperties: 在Union或Intersection类型中,出现在任意member中的字段
- */
- /**
- * 将unionProperties 扩展到 InterfaceTypeSchema中(optional的any类型)
- * 以此来跳过对它们的检查(用于Intersection/Union)
- */
- applyUnionProperties(schema: FlatInterfaceTypeSchema, unionProperties: string[]): FlatInterfaceTypeSchema;
- /**
- * 将interface及其引用转换为展平的schema
- */
- getFlatInterfaceSchema(schema: InterfaceTypeSchema | InterfaceReference): FlatInterfaceTypeSchema;
- /**
- * 展平interface
- */
- /** 将MappedTypeSchema转换为展平的Interface
- */
- parseMappedType(schema: PickTypeSchema | OmitTypeSchema | PartialTypeSchema | OverwriteTypeSchema): InterfaceTypeSchema | UnionTypeSchema | IntersectionTypeSchema;
- }
- /** @public */
- export declare type PruneOutput<T> = {
- isSucc: true;
- pruneOutput: T;
- errMsg?: undefined;
- } | {
- isSucc: false;
- errMsg: string;
- pruneOutput?: undefined;
- };
- /**
- * TSBuffer Schema Validator
- * @public
- */
- export declare class TSBufferValidator<Proto extends TSBufferProto = TSBufferProto> {
- /**
- * Default options
- */
- options: TSBufferValidatorOptions;
- proto: Proto;
- readonly protoHelper: ProtoHelper;
- constructor(proto: Proto, options?: Partial<TSBufferValidatorOptions>);
- /**
- * Validate whether the value is valid to the schema
- * @param value - Value to be validated.
- * @param schemaId - Schema or schema ID.
- * For example, the schema ID for type `Test` in `a/b.ts` may be `a/b/Test`.
- */
- validate(value: any, schemaOrId: keyof Proto | TSBufferSchema, options?: Partial<ValidateOptions>): ValidateOutput;
- /**
- * 修剪 Object,移除 Schema 中未定义的 Key
- * 需要确保 value 类型合法
- * @param value - value to be validated
- * @param schemaOrId -Schema or schema ID.
- * @returns Validate result and pruned value. if validate failed, `pruneOutput` would be undefined.
- */
- prune<T>(value: T, schemaOrId: string | TSBufferSchema, options?: Partial<ValidateOptions>): PruneOutput<T>;
- }
- /** @public */
- export declare interface TSBufferValidatorOptions {
- /**
- * 检查interface中是否包含Schema之外的字段
- *
- * 例1:
- * ```
- * type AB = { a: string, b: string };
- * let ab: AB = { a: 'x', b: 'x', c: 'x' }
- * ```
- * 字段 `c` 为 excess property,当 `excessPropertyChecks` 启用时将会报错。
- *
- * 例2:
- * ```
- * type AB = { a: string} | { b: string };
- * let ab: AB = { a: 'x', b: 'x', c: 'x' }
- * ```
- * 字段 `c` 为 excess property,当 `excessPropertyChecks` 启用时将会报错。
- *
- * 默认:`true`
- */
- excessPropertyChecks: boolean;
- /**
- * 同 `tsconfig.json` 中的 `strictNullChecks`
- * 是否使用严格等于去判定 `undefined` 和 `null`
- * @defaultValue false
- */
- strictNullChecks: boolean;
- /**
- * Clone the proto, don't change this if you don't know what it is.
- * @defaultValue true
- */
- cloneProto?: boolean;
- }
- /**
- * 单次validate的选项,会向下透传
- * @public
- */
- export declare interface ValidateOptions extends TSBufferValidatorOptions {
- /**
- * Common properties from Union/Intersection type
- * ( In case of they are treated as excess property and lead to validation error )
- */
- unionProperties?: string[];
- }
- /** @public */
- export declare type ValidateOutput = {
- isSucc: true;
- errMsg?: undefined;
- } | {
- isSucc: false;
- errMsg: string;
- };
- export { }
|