123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- import type {AnySchemaObject, SchemaObject, JTDParser} from "./types"
- import type {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from "./types/jtd-schema"
- import AjvCore, {CurrentOptions} from "./core"
- import jtdVocabulary from "./vocabularies/jtd"
- import jtdMetaSchema from "./refs/jtd-schema"
- import compileSerializer from "./compile/jtd/serialize"
- import compileParser from "./compile/jtd/parse"
- import {SchemaEnv} from "./compile"
- const META_SCHEMA_ID = "JTD-meta-schema"
- type JTDOptions = CurrentOptions & {
- // strict mode options not supported with JTD:
- strict?: never
- allowMatchingProperties?: never
- allowUnionTypes?: never
- validateFormats?: never
- // validation and reporting options not supported with JTD:
- $data?: never
- verbose?: boolean
- $comment?: never
- formats?: never
- loadSchema?: never
- // options to modify validated data:
- useDefaults?: never
- coerceTypes?: never
- // advanced options:
- next?: never
- unevaluated?: never
- dynamicRef?: never
- meta?: boolean
- defaultMeta?: never
- inlineRefs?: boolean
- loopRequired?: never
- multipleOfPrecision?: never
- }
- export class Ajv extends AjvCore {
- constructor(opts: JTDOptions = {}) {
- super({
- ...opts,
- jtd: true,
- })
- }
- _addVocabularies(): void {
- super._addVocabularies()
- this.addVocabulary(jtdVocabulary)
- }
- _addDefaultMetaSchema(): void {
- super._addDefaultMetaSchema()
- if (!this.opts.meta) return
- this.addMetaSchema(jtdMetaSchema, META_SCHEMA_ID, false)
- }
- defaultMeta(): string | AnySchemaObject | undefined {
- return (this.opts.defaultMeta =
- super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined))
- }
- compileSerializer<T = unknown>(schema: SchemaObject): (data: T) => string
- // Separated for type inference to work
- // eslint-disable-next-line @typescript-eslint/unified-signatures
- compileSerializer<T = unknown>(schema: JTDSchemaType<T>): (data: T) => string
- compileSerializer<T = unknown>(schema: SchemaObject): (data: T) => string {
- const sch = this._addSchema(schema)
- return sch.serialize || this._compileSerializer(sch)
- }
- compileParser<T = unknown>(schema: SchemaObject): JTDParser<T>
- // Separated for type inference to work
- // eslint-disable-next-line @typescript-eslint/unified-signatures
- compileParser<T = unknown>(schema: JTDSchemaType<T>): JTDParser<T>
- compileParser<T = unknown>(schema: SchemaObject): JTDParser<T> {
- const sch = this._addSchema(schema)
- return (sch.parse || this._compileParser(sch)) as JTDParser<T>
- }
- private _compileSerializer<T>(sch: SchemaEnv): (data: T) => string {
- compileSerializer.call(this, sch, (sch.schema as AnySchemaObject).definitions || {})
- /* istanbul ignore if */
- if (!sch.serialize) throw new Error("ajv implementation error")
- return sch.serialize
- }
- private _compileParser(sch: SchemaEnv): JTDParser {
- compileParser.call(this, sch, (sch.schema as AnySchemaObject).definitions || {})
- /* istanbul ignore if */
- if (!sch.parse) throw new Error("ajv implementation error")
- return sch.parse
- }
- }
- module.exports = exports = Ajv
- module.exports.Ajv = Ajv
- Object.defineProperty(exports, "__esModule", {value: true})
- export default Ajv
- export {
- Format,
- FormatDefinition,
- AsyncFormatDefinition,
- KeywordDefinition,
- KeywordErrorDefinition,
- CodeKeywordDefinition,
- MacroKeywordDefinition,
- FuncKeywordDefinition,
- Vocabulary,
- Schema,
- SchemaObject,
- AnySchemaObject,
- AsyncSchema,
- AnySchema,
- ValidateFunction,
- AsyncValidateFunction,
- ErrorObject,
- ErrorNoParams,
- JTDParser,
- } from "./types"
- export {Plugin, Options, CodeOptions, InstanceOptions, Logger, ErrorsTextOptions} from "./core"
- export {SchemaCxt, SchemaObjCxt} from "./compile"
- export {KeywordCxt} from "./compile/validate"
- export {JTDErrorObject} from "./vocabularies/jtd"
- export {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from "./compile/codegen"
- export {JTDSchemaType, SomeJTDSchemaType, JTDDataType}
- export {JTDOptions}
- export {default as ValidationError} from "./runtime/validation_error"
- export {default as MissingRefError} from "./compile/ref_error"
|