You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					132 lines
				
				4.0 KiB
			
		
		
			
		
	
	
					132 lines
				
				4.0 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								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
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								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
							 | 
						||
| 
								 | 
							
								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"
							 |