core.d.ts
  1  export { Format, FormatDefinition, AsyncFormatDefinition, KeywordDefinition, KeywordErrorDefinition, CodeKeywordDefinition, MacroKeywordDefinition, FuncKeywordDefinition, Vocabulary, Schema, SchemaObject, AnySchemaObject, AsyncSchema, AnySchema, ValidateFunction, AsyncValidateFunction, AnyValidateFunction, ErrorObject, ErrorNoParams, } from "./types";
  2  export { SchemaCxt, SchemaObjCxt } from "./compile";
  3  export interface Plugin<Opts> {
  4      (ajv: Ajv, options?: Opts): Ajv;
  5      [prop: string]: any;
  6  }
  7  export { KeywordCxt } from "./compile/validate";
  8  export { DefinedError } from "./vocabularies/errors";
  9  export { JSONType } from "./compile/rules";
 10  export { JSONSchemaType } from "./types/json-schema";
 11  export { JTDSchemaType, SomeJTDSchemaType, JTDDataType } from "./types/jtd-schema";
 12  export { _, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions } from "./compile/codegen";
 13  import type { Schema, AnySchema, AnySchemaObject, SchemaObject, AsyncSchema, Vocabulary, KeywordDefinition, AddedKeywordDefinition, AnyValidateFunction, ValidateFunction, AsyncValidateFunction, ErrorObject, Format, AddedFormat, RegExpEngine } from "./types";
 14  import type { JSONSchemaType } from "./types/json-schema";
 15  import type { JTDSchemaType, SomeJTDSchemaType, JTDDataType } from "./types/jtd-schema";
 16  import ValidationError from "./runtime/validation_error";
 17  import MissingRefError from "./compile/ref_error";
 18  import { ValidationRules } from "./compile/rules";
 19  import { SchemaEnv } from "./compile";
 20  import { Code, ValueScope } from "./compile/codegen";
 21  export declare type Options = CurrentOptions & DeprecatedOptions;
 22  export interface CurrentOptions {
 23      strict?: boolean | "log";
 24      strictSchema?: boolean | "log";
 25      strictNumbers?: boolean | "log";
 26      strictTypes?: boolean | "log";
 27      strictTuples?: boolean | "log";
 28      strictRequired?: boolean | "log";
 29      allowMatchingProperties?: boolean;
 30      allowUnionTypes?: boolean;
 31      validateFormats?: boolean;
 32      $data?: boolean;
 33      allErrors?: boolean;
 34      verbose?: boolean;
 35      discriminator?: boolean;
 36      unicodeRegExp?: boolean;
 37      timestamp?: "string" | "date";
 38      parseDate?: boolean;
 39      allowDate?: boolean;
 40      $comment?: true | ((comment: string, schemaPath?: string, rootSchema?: AnySchemaObject) => unknown);
 41      formats?: {
 42          [Name in string]?: Format;
 43      };
 44      keywords?: Vocabulary;
 45      schemas?: AnySchema[] | {
 46          [Key in string]?: AnySchema;
 47      };
 48      logger?: Logger | false;
 49      loadSchema?: (uri: string) => Promise<AnySchemaObject>;
 50      removeAdditional?: boolean | "all" | "failing";
 51      useDefaults?: boolean | "empty";
 52      coerceTypes?: boolean | "array";
 53      next?: boolean;
 54      unevaluated?: boolean;
 55      dynamicRef?: boolean;
 56      schemaId?: "id" | "$id";
 57      jtd?: boolean;
 58      meta?: SchemaObject | boolean;
 59      defaultMeta?: string | AnySchemaObject;
 60      validateSchema?: boolean | "log";
 61      addUsedSchema?: boolean;
 62      inlineRefs?: boolean | number;
 63      passContext?: boolean;
 64      loopRequired?: number;
 65      loopEnum?: number;
 66      ownProperties?: boolean;
 67      multipleOfPrecision?: number;
 68      int32range?: boolean;
 69      messages?: boolean;
 70      code?: CodeOptions;
 71  }
 72  export interface CodeOptions {
 73      es5?: boolean;
 74      lines?: boolean;
 75      optimize?: boolean | number;
 76      formats?: Code;
 77      source?: boolean;
 78      process?: (code: string, schema?: SchemaEnv) => string;
 79      regExp?: RegExpEngine;
 80  }
 81  interface InstanceCodeOptions extends CodeOptions {
 82      regExp: RegExpEngine;
 83      optimize: number;
 84  }
 85  interface DeprecatedOptions {
 86      /** @deprecated */
 87      ignoreKeywordsWithRef?: boolean;
 88      /** @deprecated */
 89      jsPropertySyntax?: boolean;
 90      /** @deprecated */
 91      unicode?: boolean;
 92  }
 93  declare type RequiredInstanceOptions = {
 94      [K in "strictSchema" | "strictNumbers" | "strictTypes" | "strictTuples" | "strictRequired" | "inlineRefs" | "loopRequired" | "loopEnum" | "meta" | "messages" | "schemaId" | "addUsedSchema" | "validateSchema" | "validateFormats" | "int32range" | "unicodeRegExp"]: NonNullable<Options[K]>;
 95  } & {
 96      code: InstanceCodeOptions;
 97  };
 98  export declare type InstanceOptions = Options & RequiredInstanceOptions;
 99  export interface Logger {
100      log(...args: unknown[]): unknown;
101      warn(...args: unknown[]): unknown;
102      error(...args: unknown[]): unknown;
103  }
104  export default class Ajv {
105      opts: InstanceOptions;
106      errors?: ErrorObject[] | null;
107      logger: Logger;
108      readonly scope: ValueScope;
109      readonly schemas: {
110          [Key in string]?: SchemaEnv;
111      };
112      readonly refs: {
113          [Ref in string]?: SchemaEnv | string;
114      };
115      readonly formats: {
116          [Name in string]?: AddedFormat;
117      };
118      readonly RULES: ValidationRules;
119      readonly _compilations: Set<SchemaEnv>;
120      private readonly _loading;
121      private readonly _cache;
122      private readonly _metaOpts;
123      static ValidationError: typeof ValidationError;
124      static MissingRefError: typeof MissingRefError;
125      constructor(opts?: Options);
126      _addVocabularies(): void;
127      _addDefaultMetaSchema(): void;
128      defaultMeta(): string | AnySchemaObject | undefined;
129      validate(schema: Schema | string, data: unknown): boolean;
130      validate(schemaKeyRef: AnySchema | string, data: unknown): boolean | Promise<unknown>;
131      validate<T>(schema: Schema | JSONSchemaType<T> | string, data: unknown): data is T;
132      validate<T>(schema: JTDSchemaType<T>, data: unknown): data is T;
133      validate<N extends never, T extends SomeJTDSchemaType>(schema: T, data: unknown): data is JTDDataType<T>;
134      validate<T>(schema: AsyncSchema, data: unknown | T): Promise<T>;
135      validate<T>(schemaKeyRef: AnySchema | string, data: unknown): data is T | Promise<T>;
136      compile<T = unknown>(schema: Schema | JSONSchemaType<T>, _meta?: boolean): ValidateFunction<T>;
137      compile<T = unknown>(schema: JTDSchemaType<T>, _meta?: boolean): ValidateFunction<T>;
138      compile<N extends never, T extends SomeJTDSchemaType>(schema: T, _meta?: boolean): ValidateFunction<JTDDataType<T>>;
139      compile<T = unknown>(schema: AsyncSchema, _meta?: boolean): AsyncValidateFunction<T>;
140      compile<T = unknown>(schema: AnySchema, _meta?: boolean): AnyValidateFunction<T>;
141      compileAsync<T = unknown>(schema: SchemaObject | JSONSchemaType<T>, _meta?: boolean): Promise<ValidateFunction<T>>;
142      compileAsync<T = unknown>(schema: JTDSchemaType<T>, _meta?: boolean): Promise<ValidateFunction<T>>;
143      compileAsync<T = unknown>(schema: AsyncSchema, meta?: boolean): Promise<AsyncValidateFunction<T>>;
144      compileAsync<T = unknown>(schema: AnySchemaObject, meta?: boolean): Promise<AnyValidateFunction<T>>;
145      addSchema(schema: AnySchema | AnySchema[], // If array is passed, `key` will be ignored
146      key?: string, // Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.
147      _meta?: boolean, // true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.
148      _validateSchema?: boolean | "log"): Ajv;
149      addMetaSchema(schema: AnySchemaObject, key?: string, // schema key
150      _validateSchema?: boolean | "log"): Ajv;
151      validateSchema(schema: AnySchema, throwOrLogError?: boolean): boolean | Promise<unknown>;
152      getSchema<T = unknown>(keyRef: string): AnyValidateFunction<T> | undefined;
153      removeSchema(schemaKeyRef?: AnySchema | string | RegExp): Ajv;
154      addVocabulary(definitions: Vocabulary): Ajv;
155      addKeyword(kwdOrDef: string | KeywordDefinition, def?: KeywordDefinition): Ajv;
156      getKeyword(keyword: string): AddedKeywordDefinition | boolean;
157      removeKeyword(keyword: string): Ajv;
158      addFormat(name: string, format: Format): Ajv;
159      errorsText(errors?: ErrorObject[] | null | undefined, // optional array of validation errors
160      { separator, dataVar }?: ErrorsTextOptions): string;
161      $dataMetaSchema(metaSchema: AnySchemaObject, keywordsJsonPointers: string[]): AnySchemaObject;
162      private _removeAllSchemas;
163      _addSchema(schema: AnySchema, meta?: boolean, baseId?: string, validateSchema?: boolean | "log", addSchema?: boolean): SchemaEnv;
164      private _checkUnique;
165      private _compileSchemaEnv;
166      private _compileMetaSchema;
167  }
168  export interface ErrorsTextOptions {
169      separator?: string;
170      dataVar?: string;
171  }