81 lines
2.9 KiB
TypeScript
81 lines
2.9 KiB
TypeScript
|
import type { AnySchema, AnySchemaObject, AnyValidateFunction, EvaluatedProperties, EvaluatedItems } from "../types";
|
||
|
import type Ajv from "../core";
|
||
|
import type { InstanceOptions } from "../core";
|
||
|
import { CodeGen, Name, Code, ValueScopeName } from "./codegen";
|
||
|
import { LocalRefs } from "./resolve";
|
||
|
import { JSONType } from "./rules";
|
||
|
export declare type SchemaRefs = {
|
||
|
[Ref in string]?: SchemaEnv | AnySchema;
|
||
|
};
|
||
|
export interface SchemaCxt {
|
||
|
readonly gen: CodeGen;
|
||
|
readonly allErrors?: boolean;
|
||
|
readonly data: Name;
|
||
|
readonly parentData: Name;
|
||
|
readonly parentDataProperty: Code | number;
|
||
|
readonly dataNames: Name[];
|
||
|
readonly dataPathArr: (Code | number)[];
|
||
|
readonly dataLevel: number;
|
||
|
dataTypes: JSONType[];
|
||
|
definedProperties: Set<string>;
|
||
|
readonly topSchemaRef: Code;
|
||
|
readonly validateName: Name;
|
||
|
evaluated?: Name;
|
||
|
readonly ValidationError?: Name;
|
||
|
readonly schema: AnySchema;
|
||
|
readonly schemaEnv: SchemaEnv;
|
||
|
readonly rootId: string;
|
||
|
baseId: string;
|
||
|
readonly schemaPath: Code;
|
||
|
readonly errSchemaPath: string;
|
||
|
readonly errorPath: Code;
|
||
|
readonly propertyName?: Name;
|
||
|
readonly compositeRule?: boolean;
|
||
|
props?: EvaluatedProperties | Name;
|
||
|
items?: EvaluatedItems | Name;
|
||
|
jtdDiscriminator?: string;
|
||
|
jtdMetadata?: boolean;
|
||
|
readonly createErrors?: boolean;
|
||
|
readonly opts: InstanceOptions;
|
||
|
readonly self: Ajv;
|
||
|
}
|
||
|
export interface SchemaObjCxt extends SchemaCxt {
|
||
|
readonly schema: AnySchemaObject;
|
||
|
}
|
||
|
interface SchemaEnvArgs {
|
||
|
readonly schema: AnySchema;
|
||
|
readonly schemaId?: "$id" | "id";
|
||
|
readonly root?: SchemaEnv;
|
||
|
readonly baseId?: string;
|
||
|
readonly schemaPath?: string;
|
||
|
readonly localRefs?: LocalRefs;
|
||
|
readonly meta?: boolean;
|
||
|
}
|
||
|
export declare class SchemaEnv implements SchemaEnvArgs {
|
||
|
readonly schema: AnySchema;
|
||
|
readonly schemaId?: "$id" | "id";
|
||
|
readonly root: SchemaEnv;
|
||
|
baseId: string;
|
||
|
schemaPath?: string;
|
||
|
localRefs?: LocalRefs;
|
||
|
readonly meta?: boolean;
|
||
|
readonly $async?: boolean;
|
||
|
readonly refs: SchemaRefs;
|
||
|
readonly dynamicAnchors: {
|
||
|
[Ref in string]?: true;
|
||
|
};
|
||
|
validate?: AnyValidateFunction;
|
||
|
validateName?: ValueScopeName;
|
||
|
serialize?: (data: unknown) => string;
|
||
|
serializeName?: ValueScopeName;
|
||
|
parse?: (data: string) => unknown;
|
||
|
parseName?: ValueScopeName;
|
||
|
constructor(env: SchemaEnvArgs);
|
||
|
}
|
||
|
export declare function compileSchema(this: Ajv, sch: SchemaEnv): SchemaEnv;
|
||
|
export declare function resolveRef(this: Ajv, root: SchemaEnv, baseId: string, ref: string): AnySchema | SchemaEnv | undefined;
|
||
|
export declare function getCompilingSchema(this: Ajv, schEnv: SchemaEnv): SchemaEnv | void;
|
||
|
export declare function resolveSchema(this: Ajv, root: SchemaEnv, // root object with properties schema, refs TODO below SchemaEnv is assigned to it
|
||
|
ref: string): SchemaEnv | undefined;
|
||
|
export {};
|