@modern-js/utils 2.58.0 → 2.58.2-alpha.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. package/dist/cjs/cli/require.js +21 -9
  2. package/dist/cjs/universal/pluginDagSort.js +1 -4
  3. package/dist/compiled/ajv/codegen.js +1 -0
  4. package/dist/compiled/ajv/index.js +9 -0
  5. package/dist/compiled/ajv/license +22 -0
  6. package/dist/compiled/ajv/package.json +1 -0
  7. package/dist/compiled/ajv/types/ajv.d.ts +16 -0
  8. package/dist/compiled/ajv/types/compile/codegen/code.d.ts +40 -0
  9. package/dist/compiled/ajv/types/compile/codegen/index.d.ts +79 -0
  10. package/dist/compiled/ajv/types/compile/codegen/scope.d.ts +79 -0
  11. package/dist/compiled/ajv/types/compile/errors.d.ts +13 -0
  12. package/dist/compiled/ajv/types/compile/index.d.ts +80 -0
  13. package/dist/compiled/ajv/types/compile/ref_error.d.ts +6 -0
  14. package/dist/compiled/ajv/types/compile/resolve.d.ts +12 -0
  15. package/dist/compiled/ajv/types/compile/rules.d.ts +28 -0
  16. package/dist/compiled/ajv/types/compile/util.d.ts +40 -0
  17. package/dist/compiled/ajv/types/compile/validate/index.d.ts +42 -0
  18. package/dist/compiled/ajv/types/compile/validate/subschema.d.ts +47 -0
  19. package/dist/compiled/ajv/types/core.d.ts +173 -0
  20. package/dist/compiled/ajv/types/runtime/validation_error.d.ts +7 -0
  21. package/dist/compiled/ajv/types/types/index.d.ts +183 -0
  22. package/dist/compiled/ajv/types/types/json-schema.d.ts +124 -0
  23. package/dist/compiled/ajv/types/types/jtd-schema.d.ts +169 -0
  24. package/dist/compiled/ajv/types/vocabularies/errors.d.ts +1 -0
  25. package/dist/compiled/ajv/uri-js.d.ts +59 -0
  26. package/dist/compiled/ajv-keywords/index.d.ts +1 -0
  27. package/dist/compiled/ajv-keywords/index.js +1 -0
  28. package/dist/compiled/ajv-keywords/license +21 -0
  29. package/dist/compiled/ajv-keywords/package.json +1 -0
  30. package/dist/compiled/better-ajv-errors/index.d.ts +1 -0
  31. package/dist/compiled/better-ajv-errors/index.js +1 -0
  32. package/dist/compiled/better-ajv-errors/license +13 -0
  33. package/dist/compiled/better-ajv-errors/package.json +1 -0
  34. package/dist/compiled/schema-utils3/index.d.ts +1 -0
  35. package/dist/compiled/schema-utils3/index.js +3 -0
  36. package/dist/compiled/schema-utils3/license +20 -0
  37. package/dist/compiled/schema-utils3/package.json +1 -0
  38. package/dist/esm/cli/require.js +98 -23
  39. package/dist/esm/universal/pluginDagSort.js +5 -8
  40. package/dist/esm-node/cli/require.js +20 -8
  41. package/dist/esm-node/universal/pluginDagSort.js +1 -4
  42. package/dist/types/cli/require.d.ts +3 -3
  43. package/package.json +6 -6
@@ -0,0 +1,79 @@
1
+ import { Code, Name } from './code';
2
+ interface NameGroup {
3
+ prefix: string;
4
+ index: number;
5
+ }
6
+ export interface NameValue {
7
+ ref: ValueReference;
8
+ key?: unknown;
9
+ code?: Code;
10
+ }
11
+ export declare type ValueReference = unknown;
12
+ interface ScopeOptions {
13
+ prefixes?: Set<string>;
14
+ parent?: Scope;
15
+ }
16
+ interface ValueScopeOptions extends ScopeOptions {
17
+ scope: ScopeStore;
18
+ es5?: boolean;
19
+ lines?: boolean;
20
+ }
21
+ export declare type ScopeStore = Record<string, ValueReference[] | undefined>;
22
+ declare type ScopeValues = {
23
+ [Prefix in string]?: Map<unknown, ValueScopeName>;
24
+ };
25
+ export declare type ScopeValueSets = {
26
+ [Prefix in string]?: Set<ValueScopeName>;
27
+ };
28
+ export declare enum UsedValueState {
29
+ Started = 0,
30
+ Completed = 1
31
+ }
32
+ export declare type UsedScopeValues = {
33
+ [Prefix in string]?: Map<ValueScopeName, UsedValueState | undefined>;
34
+ };
35
+ export declare const varKinds: {
36
+ const: Name;
37
+ let: Name;
38
+ var: Name;
39
+ };
40
+ export declare class Scope {
41
+ protected readonly _names: {
42
+ [Prefix in string]?: NameGroup;
43
+ };
44
+ protected readonly _prefixes?: Set<string>;
45
+ protected readonly _parent?: Scope;
46
+ constructor({ prefixes, parent }?: ScopeOptions);
47
+ toName(nameOrPrefix: Name | string): Name;
48
+ name(prefix: string): Name;
49
+ protected _newName(prefix: string): string;
50
+ private _nameGroup;
51
+ }
52
+ interface ScopePath {
53
+ property: string;
54
+ itemIndex: number;
55
+ }
56
+ export declare class ValueScopeName extends Name {
57
+ readonly prefix: string;
58
+ value?: NameValue;
59
+ scopePath?: Code;
60
+ constructor(prefix: string, nameStr: string);
61
+ setValue(value: NameValue, { property, itemIndex }: ScopePath): void;
62
+ }
63
+ interface VSOptions extends ValueScopeOptions {
64
+ _n: Code;
65
+ }
66
+ export declare class ValueScope extends Scope {
67
+ protected readonly _values: ScopeValues;
68
+ protected readonly _scope: ScopeStore;
69
+ readonly opts: VSOptions;
70
+ constructor(opts: ValueScopeOptions);
71
+ get(): ScopeStore;
72
+ name(prefix: string): ValueScopeName;
73
+ value(nameOrPrefix: ValueScopeName | string, value: NameValue): ValueScopeName;
74
+ getValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined;
75
+ scopeRefs(scopeName: Name, values?: ScopeValues | ScopeValueSets): Code;
76
+ scopeCode(values?: ScopeValues | ScopeValueSets, usedValues?: UsedScopeValues, getCode?: (n: ValueScopeName) => Code | undefined): Code;
77
+ private _reduceValues;
78
+ }
79
+ export {};
@@ -0,0 +1,13 @@
1
+ import type { KeywordErrorCxt, KeywordErrorDefinition } from '../types';
2
+ import { CodeGen, Code, Name } from './codegen';
3
+ export declare const keywordError: KeywordErrorDefinition;
4
+ export declare const keyword$DataError: KeywordErrorDefinition;
5
+ export interface ErrorPaths {
6
+ instancePath?: Code;
7
+ schemaPath?: string;
8
+ parentSchema?: boolean;
9
+ }
10
+ export declare function reportError(cxt: KeywordErrorCxt, error?: KeywordErrorDefinition, errorPaths?: ErrorPaths, overrideAllErrors?: boolean): void;
11
+ export declare function reportExtraError(cxt: KeywordErrorCxt, error?: KeywordErrorDefinition, errorPaths?: ErrorPaths): void;
12
+ export declare function resetErrorsCount(gen: CodeGen, errsCount: Name): void;
13
+ export declare function extendErrors({ gen, keyword, schemaValue, data, errsCount, it, }: KeywordErrorCxt): void;
@@ -0,0 +1,80 @@
1
+ import type { AnySchema, AnySchemaObject, AnyValidateFunction, EvaluatedProperties, EvaluatedItems } from '../types';
2
+ import type Ajv from '../core';
3
+ import type { InstanceOptions } from '../core';
4
+ import { CodeGen, Name, Code, ValueScopeName } from './codegen';
5
+ import { LocalRefs } from './resolve';
6
+ import { JSONType } from './rules';
7
+ export declare type SchemaRefs = {
8
+ [Ref in string]?: SchemaEnv | AnySchema;
9
+ };
10
+ export interface SchemaCxt {
11
+ readonly gen: CodeGen;
12
+ readonly allErrors?: boolean;
13
+ readonly data: Name;
14
+ readonly parentData: Name;
15
+ readonly parentDataProperty: Code | number;
16
+ readonly dataNames: Name[];
17
+ readonly dataPathArr: (Code | number)[];
18
+ readonly dataLevel: number;
19
+ dataTypes: JSONType[];
20
+ definedProperties: Set<string>;
21
+ readonly topSchemaRef: Code;
22
+ readonly validateName: Name;
23
+ evaluated?: Name;
24
+ readonly ValidationError?: Name;
25
+ readonly schema: AnySchema;
26
+ readonly schemaEnv: SchemaEnv;
27
+ readonly rootId: string;
28
+ baseId: string;
29
+ readonly schemaPath: Code;
30
+ readonly errSchemaPath: string;
31
+ readonly errorPath: Code;
32
+ readonly propertyName?: Name;
33
+ readonly compositeRule?: boolean;
34
+ props?: EvaluatedProperties | Name;
35
+ items?: EvaluatedItems | Name;
36
+ jtdDiscriminator?: string;
37
+ jtdMetadata?: boolean;
38
+ readonly createErrors?: boolean;
39
+ readonly opts: InstanceOptions;
40
+ readonly self: Ajv;
41
+ }
42
+ export interface SchemaObjCxt extends SchemaCxt {
43
+ readonly schema: AnySchemaObject;
44
+ }
45
+ interface SchemaEnvArgs {
46
+ readonly schema: AnySchema;
47
+ readonly schemaId?: "$id" | "id";
48
+ readonly root?: SchemaEnv;
49
+ readonly baseId?: string;
50
+ readonly schemaPath?: string;
51
+ readonly localRefs?: LocalRefs;
52
+ readonly meta?: boolean;
53
+ }
54
+ export declare class SchemaEnv implements SchemaEnvArgs {
55
+ readonly schema: AnySchema;
56
+ readonly schemaId?: "$id" | "id";
57
+ readonly root: SchemaEnv;
58
+ baseId: string;
59
+ schemaPath?: string;
60
+ localRefs?: LocalRefs;
61
+ readonly meta?: boolean;
62
+ readonly $async?: boolean;
63
+ readonly refs: SchemaRefs;
64
+ readonly dynamicAnchors: {
65
+ [Ref in string]?: true;
66
+ };
67
+ validate?: AnyValidateFunction;
68
+ validateName?: ValueScopeName;
69
+ serialize?: (data: unknown) => string;
70
+ serializeName?: ValueScopeName;
71
+ parse?: (data: string) => unknown;
72
+ parseName?: ValueScopeName;
73
+ constructor(env: SchemaEnvArgs);
74
+ }
75
+ export declare function compileSchema(this: Ajv, sch: SchemaEnv): SchemaEnv;
76
+ export declare function resolveRef(this: Ajv, root: SchemaEnv, baseId: string, ref: string): AnySchema | SchemaEnv | undefined;
77
+ export declare function getCompilingSchema(this: Ajv, schEnv: SchemaEnv): SchemaEnv | void;
78
+ export declare function resolveSchema(this: Ajv, root: SchemaEnv, // root object with properties schema, refs TODO below SchemaEnv is assigned to it
79
+ ref: string): SchemaEnv | undefined;
80
+ export {};
@@ -0,0 +1,6 @@
1
+ import type { UriResolver } from '../types';
2
+ export default class MissingRefError extends Error {
3
+ readonly missingRef: string;
4
+ readonly missingSchema: string;
5
+ constructor(resolver: UriResolver, baseId: string, ref: string, msg?: string);
6
+ }
@@ -0,0 +1,12 @@
1
+ import type { AnySchema, AnySchemaObject, UriResolver } from '../types';
2
+ import type Ajv from '../ajv';
3
+ import type { URIComponents } from '../../uri-js';
4
+ export declare type LocalRefs = {
5
+ [Ref in string]?: AnySchemaObject;
6
+ };
7
+ export declare function inlineRef(schema: AnySchema, limit?: boolean | number): boolean;
8
+ export declare function getFullPath(resolver: UriResolver, id?: string, normalize?: boolean): string;
9
+ export declare function _getFullPath(resolver: UriResolver, p: URIComponents): string;
10
+ export declare function normalizeId(id: string | undefined): string;
11
+ export declare function resolveUrl(resolver: UriResolver, baseId: string, id: string): string;
12
+ export declare function getSchemaRefs(this: Ajv, schema: AnySchema, baseId: string): LocalRefs;
@@ -0,0 +1,28 @@
1
+ import type { AddedKeywordDefinition } from '../types';
2
+ declare const _jsonTypes: readonly ["string", "number", "integer", "boolean", "null", "object", "array"];
3
+ export declare type JSONType = typeof _jsonTypes[number];
4
+ export declare function isJSONType(x: unknown): x is JSONType;
5
+ declare type ValidationTypes = {
6
+ [K in JSONType]: boolean | RuleGroup | undefined;
7
+ };
8
+ export interface ValidationRules {
9
+ rules: RuleGroup[];
10
+ post: RuleGroup;
11
+ all: {
12
+ [Key in string]?: boolean | Rule;
13
+ };
14
+ keywords: {
15
+ [Key in string]?: boolean;
16
+ };
17
+ types: ValidationTypes;
18
+ }
19
+ export interface RuleGroup {
20
+ type?: JSONType;
21
+ rules: Rule[];
22
+ }
23
+ export interface Rule {
24
+ keyword: string;
25
+ definition: AddedKeywordDefinition;
26
+ }
27
+ export declare function getRules(): ValidationRules;
28
+ export {};
@@ -0,0 +1,40 @@
1
+ import type { AnySchema, EvaluatedProperties, EvaluatedItems } from '../types';
2
+ import type { SchemaCxt, SchemaObjCxt } from '.';
3
+ import { Code, Name, CodeGen } from './codegen';
4
+ import type { Rule, ValidationRules } from './rules';
5
+ export declare function toHash<T extends string = string>(arr: T[]): {
6
+ [K in T]?: true;
7
+ };
8
+ export declare function alwaysValidSchema(it: SchemaCxt, schema: AnySchema): boolean | void;
9
+ export declare function checkUnknownRules(it: SchemaCxt, schema?: AnySchema): void;
10
+ export declare function schemaHasRules(schema: AnySchema, rules: {
11
+ [Key in string]?: boolean | Rule;
12
+ }): boolean;
13
+ export declare function schemaHasRulesButRef(schema: AnySchema, RULES: ValidationRules): boolean;
14
+ export declare function schemaRefOrVal({ topSchemaRef, schemaPath }: SchemaObjCxt, schema: unknown, keyword: string, $data?: string | false): Code | number | boolean;
15
+ export declare function unescapeFragment(str: string): string;
16
+ export declare function escapeFragment(str: string | number): string;
17
+ export declare function escapeJsonPointer(str: string | number): string;
18
+ export declare function unescapeJsonPointer(str: string): string;
19
+ export declare function eachItem<T>(xs: T | T[], f: (x: T) => void): void;
20
+ declare type SomeEvaluated = EvaluatedProperties | EvaluatedItems;
21
+ declare type MergeEvaluatedFunc<T extends SomeEvaluated> = (gen: CodeGen, from: Name | T, to: Name | Exclude<T, true> | undefined, toName?: typeof Name) => Name | T;
22
+ interface MergeEvaluated {
23
+ props: MergeEvaluatedFunc<EvaluatedProperties>;
24
+ items: MergeEvaluatedFunc<EvaluatedItems>;
25
+ }
26
+ export declare const mergeEvaluated: MergeEvaluated;
27
+ export declare function evaluatedPropsToName(gen: CodeGen, ps?: EvaluatedProperties): Name;
28
+ export declare function setEvaluated(gen: CodeGen, props: Name, ps: {
29
+ [K in string]?: true;
30
+ }): void;
31
+ export declare function useFunc(gen: CodeGen, f: {
32
+ code: string;
33
+ }): Name;
34
+ export declare enum Type {
35
+ Num = 0,
36
+ Str = 1
37
+ }
38
+ export declare function getErrorPath(dataProp: Name | string | number, dataPropType?: Type, jsPropertySyntax?: boolean): Code | string;
39
+ export declare function checkStrictMode(it: SchemaCxt, msg: string, mode?: boolean | "log"): void;
40
+ export {};
@@ -0,0 +1,42 @@
1
+ import type { AddedKeywordDefinition, AnySchemaObject, KeywordErrorCxt, KeywordCxtParams } from '../../types';
2
+ import type { SchemaCxt, SchemaObjCxt } from '..';
3
+ import { SubschemaArgs } from './subschema';
4
+ import { Code, Name, CodeGen } from '../codegen';
5
+ import type { JSONType } from '../rules';
6
+ import { ErrorPaths } from '../errors';
7
+ export declare function validateFunctionCode(it: SchemaCxt): void;
8
+ export declare class KeywordCxt implements KeywordErrorCxt {
9
+ readonly gen: CodeGen;
10
+ readonly allErrors?: boolean;
11
+ readonly keyword: string;
12
+ readonly data: Name;
13
+ readonly $data?: string | false;
14
+ schema: any;
15
+ readonly schemaValue: Code | number | boolean;
16
+ readonly schemaCode: Code | number | boolean;
17
+ readonly schemaType: JSONType[];
18
+ readonly parentSchema: AnySchemaObject;
19
+ readonly errsCount?: Name;
20
+ params: KeywordCxtParams;
21
+ readonly it: SchemaObjCxt;
22
+ readonly def: AddedKeywordDefinition;
23
+ constructor(it: SchemaObjCxt, def: AddedKeywordDefinition, keyword: string);
24
+ result(condition: Code, successAction?: () => void, failAction?: () => void): void;
25
+ failResult(condition: Code, successAction?: () => void, failAction?: () => void): void;
26
+ pass(condition: Code, failAction?: () => void): void;
27
+ fail(condition?: Code): void;
28
+ fail$data(condition: Code): void;
29
+ error(append?: boolean, errorParams?: KeywordCxtParams, errorPaths?: ErrorPaths): void;
30
+ private _error;
31
+ $dataError(): void;
32
+ reset(): void;
33
+ ok(cond: Code | boolean): void;
34
+ setParams(obj: KeywordCxtParams, assign?: true): void;
35
+ block$data(valid: Name, codeBlock: () => void, $dataValid?: Code): void;
36
+ check$data(valid?: Name, $dataValid?: Code): void;
37
+ invalid$data(): Code;
38
+ subschema(appl: SubschemaArgs, valid: Name): SchemaCxt;
39
+ mergeEvaluated(schemaCxt: SchemaCxt, toName?: typeof Name): void;
40
+ mergeValidEvaluated(schemaCxt: SchemaCxt, valid: Name): boolean | void;
41
+ }
42
+ export declare function getData($data: string, { dataLevel, dataNames, dataPathArr }: SchemaCxt): Code | number;
@@ -0,0 +1,47 @@
1
+ import type { AnySchema } from '../../types';
2
+ import type { SchemaObjCxt } from '..';
3
+ import { Code, Name } from '../codegen';
4
+ import { Type } from '../util';
5
+ import type { JSONType } from '../rules';
6
+ export interface SubschemaContext {
7
+ schema: AnySchema;
8
+ schemaPath: Code;
9
+ errSchemaPath: string;
10
+ topSchemaRef?: Code;
11
+ errorPath?: Code;
12
+ dataLevel?: number;
13
+ dataTypes?: JSONType[];
14
+ data?: Name;
15
+ parentData?: Name;
16
+ parentDataProperty?: Code | number;
17
+ dataNames?: Name[];
18
+ dataPathArr?: (Code | number)[];
19
+ propertyName?: Name;
20
+ jtdDiscriminator?: string;
21
+ jtdMetadata?: boolean;
22
+ compositeRule?: true;
23
+ createErrors?: boolean;
24
+ allErrors?: boolean;
25
+ }
26
+ export declare type SubschemaArgs = Partial<{
27
+ keyword: string;
28
+ schemaProp: string | number;
29
+ schema: AnySchema;
30
+ schemaPath: Code;
31
+ errSchemaPath: string;
32
+ topSchemaRef: Code;
33
+ data: Name | Code;
34
+ dataProp: Code | string | number;
35
+ dataTypes: JSONType[];
36
+ definedProperties: Set<string>;
37
+ propertyName: Name;
38
+ dataPropType: Type;
39
+ jtdDiscriminator: string;
40
+ jtdMetadata: boolean;
41
+ compositeRule: true;
42
+ createErrors: boolean;
43
+ allErrors: boolean;
44
+ }>;
45
+ export declare function getSubschema(it: SchemaObjCxt, { keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef }: SubschemaArgs): SubschemaContext;
46
+ export declare function extendSubschemaData(subschema: SubschemaContext, it: SchemaObjCxt, { dataProp, dataPropType: dpType, data, dataTypes, propertyName }: SubschemaArgs): void;
47
+ export declare function extendSubschemaMode(subschema: SubschemaContext, { jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors }: SubschemaArgs): void;
@@ -0,0 +1,173 @@
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 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
+ uriResolver?: UriResolver;
72
+ }
73
+ export interface CodeOptions {
74
+ es5?: boolean;
75
+ esm?: boolean;
76
+ lines?: boolean;
77
+ optimize?: boolean | number;
78
+ formats?: Code;
79
+ source?: boolean;
80
+ process?: (code: string, schema?: SchemaEnv) => string;
81
+ regExp?: RegExpEngine;
82
+ }
83
+ interface InstanceCodeOptions extends CodeOptions {
84
+ regExp: RegExpEngine;
85
+ optimize: number;
86
+ }
87
+ interface DeprecatedOptions {
88
+ /** @deprecated */
89
+ ignoreKeywordsWithRef?: boolean;
90
+ /** @deprecated */
91
+ jsPropertySyntax?: boolean;
92
+ /** @deprecated */
93
+ unicode?: boolean;
94
+ }
95
+ declare type RequiredInstanceOptions = {
96
+ [K in "strictSchema" | "strictNumbers" | "strictTypes" | "strictTuples" | "strictRequired" | "inlineRefs" | "loopRequired" | "loopEnum" | "meta" | "messages" | "schemaId" | "addUsedSchema" | "validateSchema" | "validateFormats" | "int32range" | "unicodeRegExp" | "uriResolver"]: NonNullable<Options[K]>;
97
+ } & {
98
+ code: InstanceCodeOptions;
99
+ };
100
+ export declare type InstanceOptions = Options & RequiredInstanceOptions;
101
+ export interface Logger {
102
+ log(...args: unknown[]): unknown;
103
+ warn(...args: unknown[]): unknown;
104
+ error(...args: unknown[]): unknown;
105
+ }
106
+ export default class Ajv {
107
+ opts: InstanceOptions;
108
+ errors?: ErrorObject[] | null;
109
+ logger: Logger;
110
+ readonly scope: ValueScope;
111
+ readonly schemas: {
112
+ [Key in string]?: SchemaEnv;
113
+ };
114
+ readonly refs: {
115
+ [Ref in string]?: SchemaEnv | string;
116
+ };
117
+ readonly formats: {
118
+ [Name in string]?: AddedFormat;
119
+ };
120
+ readonly RULES: ValidationRules;
121
+ readonly _compilations: Set<SchemaEnv>;
122
+ private readonly _loading;
123
+ private readonly _cache;
124
+ private readonly _metaOpts;
125
+ static ValidationError: typeof ValidationError;
126
+ static MissingRefError: typeof MissingRefError;
127
+ constructor(opts?: Options);
128
+ _addVocabularies(): void;
129
+ _addDefaultMetaSchema(): void;
130
+ defaultMeta(): string | AnySchemaObject | undefined;
131
+ validate(schema: Schema | string, data: unknown): boolean;
132
+ validate(schemaKeyRef: AnySchema | string, data: unknown): boolean | Promise<unknown>;
133
+ validate<T>(schema: Schema | JSONSchemaType<T> | string, data: unknown): data is T;
134
+ validate<T>(schema: JTDSchemaType<T>, data: unknown): data is T;
135
+ validate<N extends never, T extends SomeJTDSchemaType>(schema: T, data: unknown): data is JTDDataType<T>;
136
+ validate<T>(schema: AsyncSchema, data: unknown | T): Promise<T>;
137
+ validate<T>(schemaKeyRef: AnySchema | string, data: unknown): data is T | Promise<T>;
138
+ compile<T = unknown>(schema: Schema | JSONSchemaType<T>, _meta?: boolean): ValidateFunction<T>;
139
+ compile<T = unknown>(schema: JTDSchemaType<T>, _meta?: boolean): ValidateFunction<T>;
140
+ compile<N extends never, T extends SomeJTDSchemaType>(schema: T, _meta?: boolean): ValidateFunction<JTDDataType<T>>;
141
+ compile<T = unknown>(schema: AsyncSchema, _meta?: boolean): AsyncValidateFunction<T>;
142
+ compile<T = unknown>(schema: AnySchema, _meta?: boolean): AnyValidateFunction<T>;
143
+ compileAsync<T = unknown>(schema: SchemaObject | JSONSchemaType<T>, _meta?: boolean): Promise<ValidateFunction<T>>;
144
+ compileAsync<T = unknown>(schema: JTDSchemaType<T>, _meta?: boolean): Promise<ValidateFunction<T>>;
145
+ compileAsync<T = unknown>(schema: AsyncSchema, meta?: boolean): Promise<AsyncValidateFunction<T>>;
146
+ compileAsync<T = unknown>(schema: AnySchemaObject, meta?: boolean): Promise<AnyValidateFunction<T>>;
147
+ addSchema(schema: AnySchema | AnySchema[], // If array is passed, `key` will be ignored
148
+ 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`.
149
+ _meta?: boolean, // true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.
150
+ _validateSchema?: boolean | "log"): Ajv;
151
+ addMetaSchema(schema: AnySchemaObject, key?: string, // schema key
152
+ _validateSchema?: boolean | "log"): Ajv;
153
+ validateSchema(schema: AnySchema, throwOrLogError?: boolean): boolean | Promise<unknown>;
154
+ getSchema<T = unknown>(keyRef: string): AnyValidateFunction<T> | undefined;
155
+ removeSchema(schemaKeyRef?: AnySchema | string | RegExp): Ajv;
156
+ addVocabulary(definitions: Vocabulary): Ajv;
157
+ addKeyword(kwdOrDef: string | KeywordDefinition, def?: KeywordDefinition): Ajv;
158
+ getKeyword(keyword: string): AddedKeywordDefinition | boolean;
159
+ removeKeyword(keyword: string): Ajv;
160
+ addFormat(name: string, format: Format): Ajv;
161
+ errorsText(errors?: ErrorObject[] | null | undefined, // optional array of validation errors
162
+ { separator, dataVar }?: ErrorsTextOptions): string;
163
+ $dataMetaSchema(metaSchema: AnySchemaObject, keywordsJsonPointers: string[]): AnySchemaObject;
164
+ private _removeAllSchemas;
165
+ _addSchema(schema: AnySchema, meta?: boolean, baseId?: string, validateSchema?: boolean | "log", addSchema?: boolean): SchemaEnv;
166
+ private _checkUnique;
167
+ private _compileSchemaEnv;
168
+ private _compileMetaSchema;
169
+ }
170
+ export interface ErrorsTextOptions {
171
+ separator?: string;
172
+ dataVar?: string;
173
+ }
@@ -0,0 +1,7 @@
1
+ import type { ErrorObject } from '../types';
2
+ export default class ValidationError extends Error {
3
+ readonly errors: Partial<ErrorObject>[];
4
+ readonly ajv: true;
5
+ readonly validation: true;
6
+ constructor(errors: Partial<ErrorObject>[]);
7
+ }