core.d.ts 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  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, UriResolver } 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 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. specialNumbers?: "fast" | "null";
  41. $comment?: true | ((comment: string, schemaPath?: string, rootSchema?: AnySchemaObject) => unknown);
  42. formats?: {
  43. [Name in string]?: Format;
  44. };
  45. keywords?: Vocabulary;
  46. schemas?: AnySchema[] | {
  47. [Key in string]?: AnySchema;
  48. };
  49. logger?: Logger | false;
  50. loadSchema?: (uri: string) => Promise<AnySchemaObject>;
  51. removeAdditional?: boolean | "all" | "failing";
  52. useDefaults?: boolean | "empty";
  53. coerceTypes?: boolean | "array";
  54. next?: boolean;
  55. unevaluated?: boolean;
  56. dynamicRef?: boolean;
  57. schemaId?: "id" | "$id";
  58. jtd?: boolean;
  59. meta?: SchemaObject | boolean;
  60. defaultMeta?: string | AnySchemaObject;
  61. validateSchema?: boolean | "log";
  62. addUsedSchema?: boolean;
  63. inlineRefs?: boolean | number;
  64. passContext?: boolean;
  65. loopRequired?: number;
  66. loopEnum?: number;
  67. ownProperties?: boolean;
  68. multipleOfPrecision?: number;
  69. int32range?: boolean;
  70. messages?: boolean;
  71. code?: CodeOptions;
  72. uriResolver?: UriResolver;
  73. }
  74. export interface CodeOptions {
  75. es5?: boolean;
  76. esm?: boolean;
  77. lines?: boolean;
  78. optimize?: boolean | number;
  79. formats?: Code;
  80. source?: boolean;
  81. process?: (code: string, schema?: SchemaEnv) => string;
  82. regExp?: RegExpEngine;
  83. }
  84. interface InstanceCodeOptions extends CodeOptions {
  85. regExp: RegExpEngine;
  86. optimize: number;
  87. }
  88. interface DeprecatedOptions {
  89. /** @deprecated */
  90. ignoreKeywordsWithRef?: boolean;
  91. /** @deprecated */
  92. jsPropertySyntax?: boolean;
  93. /** @deprecated */
  94. unicode?: boolean;
  95. }
  96. type RequiredInstanceOptions = {
  97. [K in "strictSchema" | "strictNumbers" | "strictTypes" | "strictTuples" | "strictRequired" | "inlineRefs" | "loopRequired" | "loopEnum" | "meta" | "messages" | "schemaId" | "addUsedSchema" | "validateSchema" | "validateFormats" | "int32range" | "unicodeRegExp" | "uriResolver"]: NonNullable<Options[K]>;
  98. } & {
  99. code: InstanceCodeOptions;
  100. };
  101. export type InstanceOptions = Options & RequiredInstanceOptions;
  102. export interface Logger {
  103. log(...args: unknown[]): unknown;
  104. warn(...args: unknown[]): unknown;
  105. error(...args: unknown[]): unknown;
  106. }
  107. export default class Ajv {
  108. opts: InstanceOptions;
  109. errors?: ErrorObject[] | null;
  110. logger: Logger;
  111. readonly scope: ValueScope;
  112. readonly schemas: {
  113. [Key in string]?: SchemaEnv;
  114. };
  115. readonly refs: {
  116. [Ref in string]?: SchemaEnv | string;
  117. };
  118. readonly formats: {
  119. [Name in string]?: AddedFormat;
  120. };
  121. readonly RULES: ValidationRules;
  122. readonly _compilations: Set<SchemaEnv>;
  123. private readonly _loading;
  124. private readonly _cache;
  125. private readonly _metaOpts;
  126. static ValidationError: typeof ValidationError;
  127. static MissingRefError: typeof MissingRefError;
  128. constructor(opts?: Options);
  129. _addVocabularies(): void;
  130. _addDefaultMetaSchema(): void;
  131. defaultMeta(): string | AnySchemaObject | undefined;
  132. validate(schema: Schema | string, data: unknown): boolean;
  133. validate(schemaKeyRef: AnySchema | string, data: unknown): boolean | Promise<unknown>;
  134. validate<T>(schema: Schema | JSONSchemaType<T> | string, data: unknown): data is T;
  135. validate<T>(schema: JTDSchemaType<T>, data: unknown): data is T;
  136. validate<N extends never, T extends SomeJTDSchemaType>(schema: T, data: unknown): data is JTDDataType<T>;
  137. validate<T>(schema: AsyncSchema, data: unknown | T): Promise<T>;
  138. validate<T>(schemaKeyRef: AnySchema | string, data: unknown): data is T | Promise<T>;
  139. compile<T = unknown>(schema: Schema | JSONSchemaType<T>, _meta?: boolean): ValidateFunction<T>;
  140. compile<T = unknown>(schema: JTDSchemaType<T>, _meta?: boolean): ValidateFunction<T>;
  141. compile<N extends never, T extends SomeJTDSchemaType>(schema: T, _meta?: boolean): ValidateFunction<JTDDataType<T>>;
  142. compile<T = unknown>(schema: AsyncSchema, _meta?: boolean): AsyncValidateFunction<T>;
  143. compile<T = unknown>(schema: AnySchema, _meta?: boolean): AnyValidateFunction<T>;
  144. compileAsync<T = unknown>(schema: SchemaObject | JSONSchemaType<T>, _meta?: boolean): Promise<ValidateFunction<T>>;
  145. compileAsync<T = unknown>(schema: JTDSchemaType<T>, _meta?: boolean): Promise<ValidateFunction<T>>;
  146. compileAsync<T = unknown>(schema: AsyncSchema, meta?: boolean): Promise<AsyncValidateFunction<T>>;
  147. compileAsync<T = unknown>(schema: AnySchemaObject, meta?: boolean): Promise<AnyValidateFunction<T>>;
  148. addSchema(schema: AnySchema | AnySchema[], // If array is passed, `key` will be ignored
  149. 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`.
  150. _meta?: boolean, // true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.
  151. _validateSchema?: boolean | "log"): Ajv;
  152. addMetaSchema(schema: AnySchemaObject, key?: string, // schema key
  153. _validateSchema?: boolean | "log"): Ajv;
  154. validateSchema(schema: AnySchema, throwOrLogError?: boolean): boolean | Promise<unknown>;
  155. getSchema<T = unknown>(keyRef: string): AnyValidateFunction<T> | undefined;
  156. removeSchema(schemaKeyRef?: AnySchema | string | RegExp): Ajv;
  157. addVocabulary(definitions: Vocabulary): Ajv;
  158. addKeyword(kwdOrDef: string | KeywordDefinition, def?: KeywordDefinition): Ajv;
  159. getKeyword(keyword: string): AddedKeywordDefinition | boolean;
  160. removeKeyword(keyword: string): Ajv;
  161. addFormat(name: string, format: Format): Ajv;
  162. errorsText(errors?: ErrorObject[] | null | undefined, // optional array of validation errors
  163. { separator, dataVar }?: ErrorsTextOptions): string;
  164. $dataMetaSchema(metaSchema: AnySchemaObject, keywordsJsonPointers: string[]): AnySchemaObject;
  165. private _removeAllSchemas;
  166. _addSchema(schema: AnySchema, meta?: boolean, baseId?: string, validateSchema?: boolean | "log", addSchema?: boolean): SchemaEnv;
  167. private _checkUnique;
  168. private _compileSchemaEnv;
  169. private _compileMetaSchema;
  170. }
  171. export interface ErrorsTextOptions {
  172. separator?: string;
  173. dataVar?: string;
  174. }