core.d.ts 7.3 KB

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