You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					81 lines
				
				2.9 KiB
			
		
		
			
		
	
	
					81 lines
				
				2.9 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								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 {};
							 |