@orion-js/schema 4.0.0-next.2 → 4.0.0-next.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/ValidationError.ts","../src/getValidationErrors/convertTypedModel.ts","../src/getSchemaFromTypedModel.ts","../src/getValidationErrors/getError/index.ts","../src/getValidationErrors/getError/getFieldValidator.ts","../src/fieldType.ts","../src/fieldTypes/array.ts","../src/Errors.ts","../src/fieldTypes/plainObject.ts","../src/fieldTypes/string.ts","../src/fieldTypes/date.ts","../src/fieldTypes/integer.ts","../src/fieldTypes/number.ts","../src/fieldTypes/ID.ts","../src/fieldTypes/boolean.ts","../src/fieldTypes/email.ts","../src/fieldTypes/blackbox.ts","../src/fieldTypes/any.ts","../src/fieldTypes/index.ts","../src/getValidationErrors/doValidation.ts","../src/getValidationErrors/getValidationErrorsObject.ts","../src/getValidationErrors/index.ts","../src/validate.ts","../src/isValid.ts","../src/getValidationErrors/getError/getFieldType.ts","../src/clean/recursiveClean.ts","../src/clean/cleanType.ts","../src/clean/getObjectNode.ts","../src/clean/index.ts","../src/validateKey/dotGetSchema.ts","../src/dotGetSchema.ts","../src/cleanKey.ts","../src/validateKey/index.ts","../src/fieldTypes/enum.ts"],"sourcesContent":["import validate from './validate'\nimport ValidationError from './ValidationError'\nimport getValidationErrors from './getValidationErrors'\nimport isValid from './isValid'\nimport getFieldType from './getValidationErrors/getError/getFieldType'\nimport clean from './clean'\nimport cleanKey from './cleanKey'\nimport validateKey from './validateKey'\nimport dotGetSchema from './dotGetSchema'\nimport createEnum from './fieldTypes/enum'\n\nexport {\n validate,\n ValidationError,\n getValidationErrors,\n isValid,\n getFieldType,\n clean,\n cleanKey,\n dotGetSchema,\n validateKey,\n createEnum\n}\n\nexport * from './types'\nexport * from './fieldType'\n","import isPlainObject from 'lodash/isPlainObject'\n\nexport interface ValidationErrorInfo {\n error: string\n message: string\n validationErrors: object\n}\n\nconst getPrintableError = (validationErrors: object): string => {\n const printableErrors = Object.keys(validationErrors)\n .map(key => {\n return `${key}: ${validationErrors[key]}`\n })\n .join(', ')\n const message = `Validation Error: {${printableErrors}}`\n return message\n}\n\nexport default class ValidationError extends Error {\n public code: string\n public isValidationError: boolean\n public isOrionError: boolean\n public validationErrors: object\n\n constructor(validationErrors: object) {\n super(getPrintableError(validationErrors))\n\n if (!isPlainObject(validationErrors)) {\n throw new Error('ValidationError must be initialized with an errors object')\n }\n\n Error.captureStackTrace(this, this.constructor)\n\n this.code = 'validationError'\n this.isValidationError = true\n this.isOrionError = true\n this.validationErrors = validationErrors\n\n this.getInfo\n }\n\n public getInfo = (): ValidationErrorInfo => {\n return {\n error: 'validationError',\n message: 'Validation Error',\n validationErrors: this.validationErrors\n }\n }\n\n public prependKey = prepend => {\n const newErrors = {}\n\n const keys = Object.keys(this.validationErrors)\n\n for (const key of keys) {\n newErrors[`${prepend}.${key}`] = this.validationErrors[key]\n }\n\n return new ValidationError(newErrors)\n }\n}\n","import {CurrentNodeInfo} from '../types/schema'\n\nexport function isClass(obj: any) {\n const isCtorClass = obj.constructor && obj.constructor.toString().substring(0, 5) === 'class'\n if (obj.prototype === undefined) {\n return isCtorClass\n }\n const isPrototypeCtorClass =\n obj.prototype.constructor &&\n obj.prototype.constructor.toString &&\n obj.prototype.constructor.toString().substring(0, 5) === 'class'\n return isCtorClass || isPrototypeCtorClass\n}\n\nconst convertOnParam = (info: CurrentNodeInfo, paramName: string) => {\n if (!info[paramName]) return\n\n const type = info[paramName].type as any\n\n if (!type) return\n if (typeof type !== 'function') return\n if (!isClass(type)) return\n if (!type.getModel || !type.__schemaId) return\n\n info[paramName].type = type.getModel().getCleanSchema()\n}\n\nexport const convertTypedModel = (info: CurrentNodeInfo) => {\n convertOnParam(info, 'schema')\n convertOnParam(info, 'currentSchema')\n}\n","import {Schema} from '.'\nimport {isClass} from './getValidationErrors/convertTypedModel'\n\nexport const getSchemaFromTypedModel = (schema: Schema | Function): Schema => {\n const item = schema as any\n if (typeof item !== 'function') return item\n if (!isClass(item)) return item\n if (!item.getModel || !item.__schemaId) return item\n\n return item.getModel().getCleanSchema()\n}\n","import isNil from 'lodash/isNil'\nimport getFieldValidator from './getFieldValidator'\nimport fieldTypes from '../../fieldTypes'\nimport Errors from '../../Errors'\nimport {CurrentNodeInfo, SchemaRecursiveNodeTypeExtras} from '../../types/schema'\nimport {FieldType} from '../../fieldType'\n\nexport default async function getValidationErrors(\n params: CurrentNodeInfo\n): Promise<object | string | void> {\n const {schema, doc, currentDoc, value, currentSchema, keys, options = {}, args = []} = params\n const info = {schema, doc, currentDoc, keys, currentSchema, options}\n\n if (isNil(value)) {\n if (!currentSchema.optional && !options.omitRequired) {\n return Errors.REQUIRED\n }\n } else {\n const validatorKey = getFieldValidator(currentSchema.type)\n const validator =\n validatorKey === 'custom' ? (currentSchema.type as FieldType) : fieldTypes[validatorKey]\n\n const error = await validator.validate(value, info, ...args)\n if (error) {\n return error\n }\n }\n\n // to not deprecate yet custom field\n if (currentSchema.custom) currentSchema.validate = currentSchema.custom\n\n if (currentSchema.validate) {\n const customError = await currentSchema.validate(value, info, ...args)\n if (customError) {\n return customError\n }\n }\n\n const type = currentSchema.type as SchemaRecursiveNodeTypeExtras\n\n if (type.__validate) {\n const typeError = await type.__validate(value, info, ...args)\n if (typeError) {\n return typeError\n }\n }\n\n return null\n}\n","import isPlainObject from 'lodash/isPlainObject'\nimport isArray from 'lodash/isArray'\nimport isString from 'lodash/isString'\nimport fieldTypes from '../../fieldTypes'\nimport has from 'lodash/has'\nimport {FieldValidatorType} from '../../types/fieldValidators'\n\nexport default function (type: any): FieldValidatorType {\n if (isPlainObject(type)) {\n if (type._isFieldType) return 'custom'\n return 'plainObject'\n }\n if (isArray(type)) return 'array'\n if (type === String) return 'string'\n if (type === Date) return 'date'\n if (type === Number) return 'number'\n if (type === Boolean) return 'boolean'\n if (type === 'enum') return 'string'\n\n if (!isString(type)) {\n throw new Error('Field type is invalid. Pass a string or a custom field type. Got ' + type)\n }\n\n const exists = has(fieldTypes, type)\n\n if (!exists) {\n throw new Error('Field type does not exist')\n }\n\n return type as FieldValidatorType\n}\n","import {CleanFunction, ValidateFunction} from './types/schema'\n\nexport interface FieldTypeOpts {\n name: string\n validate?: ValidateFunction\n clean?: CleanFunction\n toGraphQLType?: (GraphQL: any) => any\n meta?: any\n}\n\nexport interface FieldType {\n name: string\n validate: ValidateFunction\n clean: CleanFunction\n meta?: any\n toGraphQLType?: (GraphQL: any) => any\n _isFieldType: boolean\n}\n\nexport default function fieldType(opts: FieldTypeOpts): FieldType {\n const {name, validate, clean, ...otherFields} = opts\n const overwrittenValidate: ValidateFunction = (value, info = {}) => {\n if (!info.currentSchema) {\n info.currentSchema = {}\n }\n return validate(value, info)\n }\n\n const overwrittenClean: CleanFunction = (value, info = {}) => {\n if (!info.options) {\n info.options = {}\n }\n if (clean) {\n return clean(value, info)\n }\n\n return value\n }\n\n return {\n ...otherFields,\n name,\n validate: overwrittenValidate,\n clean: overwrittenClean,\n _isFieldType: true\n }\n}\n","import fieldType from '../fieldType'\nimport isArray from 'lodash/isArray'\nimport Errors from '../Errors'\n\nexport default fieldType({\n name: 'array',\n validate(value) {\n if (!isArray(value)) return Errors.NOT_AN_ARRAY\n },\n clean(value, {options}) {\n if (options.autoConvert) {\n if (!isArray(value)) {\n value = [value]\n }\n }\n\n return value\n }\n})\n","export default {\n NOT_IN_SCHEMA: 'notInSchema',\n REQUIRED: 'required',\n UNKNOWN_FIELD_TYPE: 'unknownFieldType',\n NOT_AN_ARRAY: 'notAnArray',\n NOT_AN_OBJECT: 'notAnObject',\n NOT_A_STRING: 'notAString',\n NOT_A_DATE: 'notADate',\n NOT_AN_INTEGER: 'notAnInteger',\n NOT_A_NUMBER: 'notANumber',\n NOT_AN_ID: 'notAnId',\n STRING_TOO_SHORT: 'stringTooShort',\n STRING_TOO_LONG: 'stringTooLong',\n NUMBER_TOO_SMALL: 'numberTooSmall',\n NUMBER_TOO_BIG: 'numberTooBig',\n NOT_A_BOOLEAN: 'notABoolean',\n NOT_AN_EMAIL: 'notAnEmail',\n NOT_UNIQUE: 'notUnique',\n NOT_AN_ALLOWED_VALUE: 'notAnAllowedValue'\n}\n","import fieldType from '../fieldType'\nimport isPlainObject from 'lodash/isPlainObject'\nimport Errors from '../Errors'\nimport difference from 'lodash/difference'\n\nexport default fieldType({\n name: 'plainObject',\n validate(value: object) {\n if (!isPlainObject(value)) return Errors.NOT_AN_OBJECT\n },\n clean(value, {type, options}) {\n if (!isPlainObject(value)) return value\n\n if (options.filter) {\n const documentKeys = Object.keys(value)\n const schemaKeys = Object.keys(type)\n const notInSchemaKeys = difference(documentKeys, schemaKeys)\n for (const key of notInSchemaKeys) {\n delete value[key]\n }\n }\n\n return value\n }\n})\n","import fieldType from '../fieldType'\nimport isString from 'lodash/isString'\nimport Errors from '../Errors'\nimport includes from 'lodash/includes'\nimport isArray from 'lodash/isArray'\n\nexport default fieldType({\n name: 'string',\n validate(value: string, {currentSchema}) {\n if (!isString(value)) return Errors.NOT_A_STRING\n\n if (isFinite(currentSchema.min)) {\n if (value.length < currentSchema.min) {\n return Errors.STRING_TOO_SHORT\n }\n }\n\n if (isFinite(currentSchema.max)) {\n if (value.length > currentSchema.max) {\n return Errors.STRING_TOO_LONG\n }\n }\n\n if (isArray(currentSchema.allowedValues)) {\n if (!includes(currentSchema.allowedValues, value)) {\n return Errors.NOT_AN_ALLOWED_VALUE\n }\n }\n\n if (value === '' && !currentSchema.optional) {\n return Errors.REQUIRED\n }\n },\n clean(value, {options: {autoConvert, trimStrings, removeEmptyStrings}}) {\n if (autoConvert) {\n value = String(value)\n }\n\n if (trimStrings) {\n value = value.trim()\n }\n\n if (removeEmptyStrings && value === '') {\n return undefined\n }\n\n return value\n }\n})\n","import fieldType from '../fieldType'\nimport isDate from 'lodash/isDate'\nimport Errors from '../Errors'\nimport isString from 'lodash/isString'\nimport isNumber from 'lodash/isNumber'\n\nexport default fieldType({\n name: 'date',\n validate(value) {\n if (!isDate(value)) return Errors.NOT_A_DATE\n },\n clean(value: Date, {options}) {\n if (options.autoConvert) {\n if (isString(value)) {\n const result = new Date(value)\n if (isNaN(result.getTime())) {\n return value\n }\n\n value = result\n } else if (isNumber(value)) {\n const result = new Date(value)\n if (isNaN(result.getTime())) {\n return value\n }\n\n value = result\n }\n }\n\n return value\n }\n})\n","import fieldType from '../fieldType'\nimport isInteger from 'lodash/isInteger'\nimport Errors from '../Errors'\nimport number from './number'\n\nexport default fieldType({\n name: 'integer',\n validate(value: number, info) {\n if (!isInteger(value)) return Errors.NOT_AN_INTEGER\n return number.validate(value, info)\n }\n})\n","import fieldType from '../fieldType'\nimport isFinite from 'lodash/isFinite'\nimport Errors from '../Errors'\nimport toNumber from 'lodash/toNumber'\n\nexport default fieldType({\n name: 'number',\n validate(value: number, {currentSchema}) {\n if (!isFinite(value)) return Errors.NOT_A_NUMBER\n\n if (isFinite(currentSchema.min)) {\n if (value < currentSchema.min) {\n return Errors.NUMBER_TOO_SMALL\n }\n }\n\n if (isFinite(currentSchema.max)) {\n if (value > currentSchema.max) {\n return Errors.NUMBER_TOO_BIG\n }\n }\n },\n clean(value, {options: {autoConvert}}) {\n if (typeof value === 'string' && autoConvert) {\n value = toNumber(value)\n }\n\n return value\n }\n})\n","import fieldType from '../fieldType'\nimport isString from 'lodash/isString'\nimport isInteger from 'lodash/isInteger'\nimport Errors from '../Errors'\n\nexport default fieldType({\n name: 'ID',\n validate(value: string) {\n if (!isString(value) && !isInteger(value)) return Errors.NOT_AN_ID\n },\n clean(value: string, {options}) {\n if (!isString(value) && !isInteger(value)) return value\n const {trimStrings, removeEmptyStrings} = options\n\n value = String(value)\n\n if (trimStrings) {\n value = value.trim()\n }\n\n if (removeEmptyStrings && value === '') {\n return undefined\n }\n\n return value\n }\n})\n","import fieldType from '../fieldType'\nimport isBoolean from 'lodash/isBoolean'\nimport Errors from '../Errors'\n\nexport default fieldType({\n name: 'boolean',\n validate(value) {\n if (!isBoolean(value)) return Errors.NOT_A_BOOLEAN\n },\n clean(value, {options}) {\n if (options.autoConvert) {\n if (typeof value === 'string') {\n if (value === 'true') {\n value = true\n }\n if (value === 'false') {\n value = false\n }\n }\n if (typeof value === 'number') {\n if (value === 0) {\n value = false\n } else {\n value = true\n }\n }\n }\n\n return value\n }\n})\n","import fieldType from '../fieldType'\nimport isString from 'lodash/isString'\nimport Errors from '../Errors'\nimport isNil from 'lodash/isNil'\n\nexport default fieldType({\n name: 'email',\n validate(value: string, {currentSchema}) {\n if ((value === '' || isNil(value)) && !currentSchema.optional) {\n return Errors.REQUIRED\n }\n\n if (value && !isString(value)) return Errors.NOT_A_STRING\n\n // eslint-disable-next-line\n const regex =\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n\n if (value && !regex.test(value)) return Errors.NOT_AN_EMAIL\n },\n clean(value) {\n if (typeof value === 'string') {\n value = value.toLowerCase()\n }\n\n return value\n }\n})\n","import fieldType from '../fieldType'\nimport isPlainObject from 'lodash/isPlainObject'\nimport Errors from '../Errors'\n\nexport default fieldType({\n name: 'blackbox',\n validate(value) {\n if (!isPlainObject(value)) return Errors.NOT_AN_OBJECT\n }\n})\n","import fieldType from '../fieldType'\n\nexport default fieldType({\n name: 'any',\n validate(value) {}\n})\n","import array from './array'\nimport plainObject from './plainObject'\nimport string from './string'\nimport date from './date'\nimport integer from './integer'\nimport number from './number'\nimport ID from './ID'\nimport boolean from './boolean'\nimport email from './email'\nimport blackbox from './blackbox'\nimport any from './any'\n\nexport default {\n array,\n plainObject,\n string,\n date,\n integer,\n number,\n ID,\n boolean,\n email,\n blackbox,\n any\n}\n","import getError from './getError'\nimport isPlainObject from 'lodash/isPlainObject'\nimport isArray from 'lodash/isArray'\nimport clone from 'lodash/clone'\nimport isNil from 'lodash/isNil'\nimport difference from 'lodash/difference'\nimport Errors from '../Errors'\nimport {CurrentNodeInfo, SchemaNode, SchemaRecursiveNodeTypeExtras} from '../types/schema'\nimport {convertTypedModel} from './convertTypedModel'\n\nexport default async function doValidation(params: CurrentNodeInfo) {\n convertTypedModel(params)\n\n const {schema, doc, currentDoc, value, currentSchema, keys = [], addError, options, args} = params\n const info = {schema, doc, currentDoc, value, currentSchema, keys, options, args, addError}\n\n const error = await getError(info)\n if (error) {\n addError(keys, error)\n return\n }\n\n if (isNil(value)) return\n\n /**\n * Deep validation\n */\n if (isPlainObject(currentSchema.type)) {\n const type = currentSchema.type as SchemaRecursiveNodeTypeExtras\n\n if (type) {\n if (type._isFieldType) {\n return\n }\n\n if (typeof type.__skipChildValidation === 'function') {\n if (await type.__skipChildValidation(value, info)) {\n return\n }\n }\n }\n\n const schemaKeys = Object.keys(currentSchema.type).filter(key => !key.startsWith('__'))\n for (const key of schemaKeys) {\n const itemSchema = currentSchema.type[key] as SchemaNode\n const itemValue = value[key]\n const keyItemKeys = clone(keys)\n keyItemKeys.push(key)\n await doValidation({\n ...info,\n currentDoc: value,\n value: itemValue,\n currentSchema: itemSchema,\n keys: keyItemKeys\n })\n }\n\n const documentKeys = Object.keys(value)\n const notInSchemaKeys = difference(documentKeys, schemaKeys)\n for (const key of notInSchemaKeys) {\n const keyItemKeys = clone(keys)\n keyItemKeys.push(key)\n addError(keyItemKeys, Errors.NOT_IN_SCHEMA)\n }\n } else if (isArray(currentSchema.type)) {\n const itemSchema = currentSchema.type[0]\n for (let i = 0; i < value.length; i++) {\n const itemValue = value[i]\n const keyItemKeys = clone(keys)\n keyItemKeys.push(i.toString())\n await doValidation({\n ...info,\n currentDoc: value,\n value: itemValue,\n currentSchema: {type: itemSchema},\n keys: keyItemKeys\n })\n }\n }\n}\n","import Dot from 'dot-object'\n\nconst dot = new Dot('.', false, true, false)\n\nexport default function getValidationErrorsObject(validationErrors: {key: string; code: string}[]) {\n if (validationErrors.length === 0) return null\n\n const errors = {}\n\n for (const validationError of validationErrors) {\n errors[validationError.key] = validationError.code\n }\n\n return dot.dot(errors)\n}\n","import {getSchemaFromTypedModel} from '../getSchemaFromTypedModel'\nimport {Schema} from '../types/schema'\nimport doValidation from './doValidation'\nimport getValidationErrorsObject from './getValidationErrorsObject'\n\nconst defaultOptions = {\n omitRequired: false\n}\n\nexport default async function getValidationErrors(\n schema: Schema | Function,\n doc: any,\n passedOptions = {},\n ...args\n) {\n schema = getSchemaFromTypedModel(schema)\n\n const options = {...defaultOptions, ...passedOptions}\n const errors: {key: string; code: string}[] = []\n\n const addError = function (keys, code) {\n errors.push({\n key: keys.join('.'),\n code\n })\n }\n\n await doValidation({\n schema,\n doc,\n currentDoc: doc,\n value: doc,\n currentSchema: {type: schema},\n addError,\n options,\n args\n })\n\n return getValidationErrorsObject(errors)\n}\n","import ValidationError from './ValidationError'\nimport getValidationErrors from './getValidationErrors'\nimport {Schema} from './types/schema'\n\nexport default async function validate(\n schema: Schema | Function,\n doc: any,\n passedOptions = {},\n ...args\n) {\n const validationErrors = await getValidationErrors(schema, doc, passedOptions, ...args)\n if (validationErrors) {\n throw new ValidationError(validationErrors)\n }\n}\n","import getValidationErrors from './getValidationErrors'\nimport {Schema} from './types/schema'\n\nexport default async function isValid(schema: Schema, doc: any, passedOptions = {}, ...args) {\n const validationErrors = await getValidationErrors(schema, doc, passedOptions, ...args)\n return !validationErrors\n}\n","import getFieldValidator from './getFieldValidator'\nimport fieldTypes from '../../fieldTypes'\nimport {SchemaMetaFieldType} from '../../types/schema'\nimport {FieldValidatorType} from '../../types/fieldValidators'\nimport {FieldType} from '../../fieldType'\n\nexport default function getFieldType(type: SchemaMetaFieldType | FieldValidatorType | any) {\n const validatorKey = getFieldValidator(type)\n const validator = validatorKey === 'custom' ? type : fieldTypes[validatorKey]\n return validator as FieldType\n}\n","import isUndefined from 'lodash/isUndefined'\nimport isArray from 'lodash/isArray'\nimport cleanType from './cleanType'\nimport isNil from 'lodash/isNil'\nimport {CurrentNodeInfo, SchemaNode} from '../types/schema'\nimport getObjectNode from './getObjectNode'\nimport {convertTypedModel} from '../getValidationErrors/convertTypedModel'\n\nconst cleanObjectFields = async function ({\n schema,\n value,\n ...other\n}: {\n schema: SchemaNode\n value: object\n}): Promise<any> {\n const keys = Object.keys(schema.type).filter(key => !key.startsWith('__'))\n const newDoc: object = {}\n\n for (const key of keys) {\n try {\n const cleanOptions = {\n ...other,\n schema: schema.type[key],\n value: value[key],\n currentDoc: value\n }\n const newValue = await clean(cleanOptions)\n if (!isUndefined(newValue)) {\n newDoc[key] = newValue\n }\n } catch (error) {\n throw new Error(`Error cleaning field ${key}, error: ${error.message}`)\n }\n }\n return newDoc\n}\n\nconst cleanArrayItems = async function ({\n schema,\n value,\n ...other\n}: {\n schema: Partial<SchemaNode>\n value: any\n}): Promise<any> {\n // clean array items\n\n const schemaType = schema.type[0]\n\n const promises = value.map(async (item, index) => {\n const newValue = await clean({\n ...other,\n schema: {\n type: schemaType\n },\n value: item,\n currentDoc: value\n })\n return newValue\n })\n\n const result = await Promise.all(promises)\n return result.filter(value => !isUndefined(value))\n}\n\nfunction getArrayNode(schema: Partial<SchemaNode>, value: any | Array<any>): SchemaNode | void {\n if (isArray(schema.type) && !isNil(value)) {\n const result = schema as SchemaNode\n return result\n }\n\n return null\n}\n\nconst clean = async function (info: CurrentNodeInfo): Promise<any> {\n convertTypedModel(info)\n\n let {schema, args = [], value} = info\n\n const currSchema: SchemaNode =\n schema.type === undefined ? ({type: schema} as SchemaNode) : (schema as SchemaNode)\n\n const objectSchema = getObjectNode(currSchema, value)\n if (objectSchema) {\n const newDoc = await cleanObjectFields({\n ...info,\n schema: objectSchema,\n value: value as object\n })\n const result = await cleanType('plainObject', objectSchema, newDoc, info, ...args)\n return result\n }\n\n const arraySchema = getArrayNode(currSchema, value)\n\n if (arraySchema) {\n let updatedValue = value\n if (!isArray(value) && !Array.isArray(value)) {\n updatedValue = [value]\n }\n\n const newDoc = await cleanArrayItems({\n ...info,\n schema: arraySchema,\n value: updatedValue\n })\n const result = await cleanType('array', arraySchema, newDoc, info, ...args)\n return result\n }\n\n const result = await cleanType(currSchema.type, currSchema, value, info, ...args)\n return result\n}\n\nexport default clean\n","import getFieldType from '../getValidationErrors/getError/getFieldType'\nimport isNil from 'lodash/isNil'\nimport {\n CurrentNodeInfo,\n SchemaMetaFieldType,\n SchemaNode,\n SchemaRecursiveNodeType\n} from '../types/schema'\nimport {FieldValidatorType} from '../types/fieldValidators'\nimport getObjectNode from './getObjectNode'\n\nexport default async function cleanType(\n type: SchemaMetaFieldType | FieldValidatorType,\n fieldSchema: Partial<SchemaNode>,\n value: any,\n info: CurrentNodeInfo,\n ...args: any[]\n): Promise<any> {\n info.type = fieldSchema.type\n if (!info.type) {\n throw new Error('Cleaning field with no type')\n }\n\n const {clean: rootFieldClean} = await getFieldType(type)\n\n if (rootFieldClean && !isNil(value)) {\n value = await rootFieldClean(value, info, ...args)\n }\n\n let needReClean = false\n\n const objectTypeSchema = getObjectNode(fieldSchema, value)\n if (objectTypeSchema && (objectTypeSchema.type as SchemaRecursiveNodeType).__clean) {\n needReClean = true\n value = await (objectTypeSchema.type as SchemaRecursiveNodeType).__clean(value, info, ...args)\n }\n\n const {defaultValue} = fieldSchema\n if (isNil(value) && !isNil(defaultValue)) {\n needReClean = true\n if (typeof defaultValue === 'function') {\n value = await defaultValue(info, ...args)\n } else {\n value = defaultValue\n }\n }\n\n const {autoValue} = fieldSchema\n if (autoValue) {\n needReClean = true\n value = await autoValue(value, info, ...args)\n }\n\n const {clean} = fieldSchema\n if (clean) {\n needReClean = true\n value = await clean(value, info, ...args)\n }\n\n if (needReClean && rootFieldClean && !isNil(value)) {\n value = await rootFieldClean(value, info, ...args)\n }\n\n return value\n}\n","import isPlainObject from 'lodash/isPlainObject'\nimport {SchemaNode} from '../types/schema'\n\nexport default function getObjectNode(schema: Partial<SchemaNode>, value: any): SchemaNode | void {\n if (isPlainObject(schema.type) && isPlainObject(value)) {\n const result = schema as SchemaNode\n return result\n }\n\n return null\n}\n","import {getSchemaFromTypedModel} from '../getSchemaFromTypedModel'\nimport {Blackbox, CurrentNodeInfoOptions, Schema} from '../types/schema'\nimport recursiveClean from './recursiveClean'\n\nconst defaultOptions = {\n autoConvert: true,\n filter: true,\n trimStrings: true,\n removeEmptyStrings: false\n}\n\nexport default async function clean<TDoc = Blackbox>(\n schema: Schema | Function,\n doc: TDoc,\n opts: CurrentNodeInfoOptions = {},\n ...args\n): Promise<TDoc> {\n if (!doc) return doc\n schema = getSchemaFromTypedModel(schema)\n\n const options = {...defaultOptions, ...opts}\n const params = {\n schema: {type: schema},\n value: doc,\n doc: options.forceDoc || doc,\n currentDoc: doc,\n options,\n args\n }\n const cleanedResult = await recursiveClean(params)\n return cleanedResult as TDoc\n}\n","import isPlainObject from 'lodash/isPlainObject'\nimport isNil from 'lodash/isNil'\nimport {Schema, SchemaNode} from '..'\n\nconst dotGet = function dotGet(object: SchemaNode, path: string) {\n if (path === '') return object\n\n const pathParts = path.split('.')\n const first = pathParts.shift()\n const remainingPath = pathParts.join('.')\n\n const levelObject = object.type\n\n if (first === '$' || /^[0-9]+$/.test(first)) {\n return dotGet({type: levelObject[0]}, remainingPath)\n } else if (isPlainObject(levelObject[first])) {\n return dotGet(levelObject[first], remainingPath)\n }\n\n if (levelObject === 'blackbox') {\n return {type: 'blackbox', optional: true, isBlackboxChild: true}\n }\n\n return null\n}\n\nexport default function (schema: Schema, path: string) {\n if (isNil(schema)) {\n throw new Error('You need to pass a schema')\n }\n return dotGet({type: schema}, path)\n}\n","import dotGetSchema from './validateKey/dotGetSchema'\n\nexport default dotGetSchema\n","import clean from './clean'\nimport dotGetSchema from './dotGetSchema'\n\nconst defaultOptions = {\n filter: true\n}\n\nexport default async function(schema, key, value, passedOptions = {}, ...args) {\n const options = {...defaultOptions, ...passedOptions}\n const keySchema = dotGetSchema(schema, key)\n\n if (!keySchema) {\n if (options.filter) {\n return\n } else {\n return value\n }\n }\n\n const result = await clean({clean: keySchema as any}, {clean: value}, options, ...args)\n return result.clean\n}\n","import dotGetSchema from './dotGetSchema'\nimport getValidationErrors from '../getValidationErrors'\nimport Errors from '../Errors'\nimport {CurrentNodeInfoOptions, Schema} from '..'\n\nconst defaultOptions = {\n filter: false\n}\n\nexport default async function (\n schema: Schema,\n key: string,\n value: any,\n passedOptions: CurrentNodeInfoOptions = {},\n ...args\n) {\n const options: CurrentNodeInfoOptions = {...defaultOptions, ...passedOptions}\n const keySchema = dotGetSchema(schema, key)\n\n if (!keySchema) {\n if (options.filter) {\n return Errors.NOT_IN_SCHEMA\n } else {\n return null\n }\n }\n\n if (keySchema.isBlackboxChild) {\n return null\n }\n\n const result = await getValidationErrors(\n {validate: keySchema as any},\n {validate: value},\n options,\n ...args\n )\n\n if (!result) return null\n\n return result.validate\n}\n","import fieldType, {FieldType} from '../fieldType'\nimport isString from 'lodash/isString'\nimport Errors from '../Errors'\nimport includes from 'lodash/includes'\n\nexport default function createEnum<TValues extends readonly string[]>(\n name: string,\n values: TValues\n): FieldType & {type: TValues[number]} {\n return {\n type: values[0],\n ...fieldType({\n name: 'enum',\n meta: {\n enumName: name,\n enumValues: values\n },\n toGraphQLType: GraphQL => {\n global.GraphQLEnums = global.GraphQLEnums || {}\n\n global.GraphQLEnums[name] =\n global.GraphQLEnums[name] ||\n new GraphQL.GraphQLEnumType({\n name,\n values: values.reduce((result, value) => {\n result[value] = {value}\n return result\n }, {})\n })\n\n return global.GraphQLEnums[name]\n },\n validate(value: string, {currentSchema}) {\n if (!isString(value)) return Errors.NOT_A_STRING\n\n if (!includes(values, value)) {\n return Errors.NOT_AN_ALLOWED_VALUE\n }\n\n if (value === '' && !currentSchema.optional) {\n return Errors.REQUIRED\n }\n },\n clean(value, {options: {autoConvert, trimStrings, removeEmptyStrings}}) {\n if (autoConvert) {\n value = String(value)\n }\n\n if (trimStrings) {\n value = value.trim()\n }\n\n if (removeEmptyStrings && value === '') {\n return undefined\n }\n\n return value\n }\n })\n }\n}\n"],"mappings":"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","names":["clean","dotGetSchema_default","getValidationErrors","getPrintableError","validationErrors","printableErrors","Object","keys","map","key","join","message","ValidationError","Error","code","isValidationError","isOrionError","constructor","isPlainObject","captureStackTrace","getInfo","error","prependKey","prepend","newErrors","isClass","obj","isCtorClass","constructor","toString","substring","prototype","undefined","isPrototypeCtorClass","convertOnParam","info","paramName","type","getModel","__schemaId","getCleanSchema","convertTypedModel","getSchemaFromTypedModel","schema","item","isClass","getModel","__schemaId","getCleanSchema","import_isNil","import_isPlainObject","import_isArray","import_isString","opts","name","validate","clean","otherFields","overwrittenValidate","value","info","currentSchema","overwrittenClean","options","_isFieldType","fieldType","NOT_IN_SCHEMA","REQUIRED","UNKNOWN_FIELD_TYPE","NOT_AN_ARRAY","NOT_AN_OBJECT","NOT_A_STRING","NOT_A_DATE","NOT_AN_INTEGER","NOT_A_NUMBER","NOT_AN_ID","STRING_TOO_SHORT","STRING_TOO_LONG","NUMBER_TOO_SMALL","NUMBER_TOO_BIG","NOT_A_BOOLEAN","NOT_AN_EMAIL","NOT_UNIQUE","NOT_AN_ALLOWED_VALUE","fieldType","name","validate","value","isArray","Errors","NOT_AN_ARRAY","clean","options","autoConvert","import_isPlainObject","fieldType","name","validate","value","isPlainObject","Errors","NOT_AN_OBJECT","clean","type","options","filter","documentKeys","Object","keys","schemaKeys","notInSchemaKeys","difference","key","import_isArray","fieldType","name","validate","value","currentSchema","isString","Errors","NOT_A_STRING","isFinite","min","length","STRING_TOO_SHORT","max","STRING_TOO_LONG","isArray","allowedValues","includes","NOT_AN_ALLOWED_VALUE","optional","REQUIRED","clean","options","autoConvert","trimStrings","removeEmptyStrings","String","trim","undefined","import_isString","fieldType","name","validate","value","isDate","Errors","NOT_A_DATE","clean","options","autoConvert","isString","result","Date","isNaN","getTime","isNumber","fieldType","name","validate","value","currentSchema","isFinite","Errors","NOT_A_NUMBER","min","NUMBER_TOO_SMALL","max","NUMBER_TOO_BIG","clean","options","autoConvert","toNumber","fieldType","name","validate","value","info","isInteger","Errors","NOT_AN_INTEGER","number","import_isString","import_isInteger","fieldType","name","validate","value","isString","isInteger","Errors","NOT_AN_ID","clean","options","trimStrings","removeEmptyStrings","String","trim","undefined","fieldType","name","validate","value","isBoolean","Errors","NOT_A_BOOLEAN","clean","options","autoConvert","import_isString","fieldType","name","validate","value","currentSchema","isNil","optional","Errors","REQUIRED","isString","NOT_A_STRING","regex","test","NOT_AN_EMAIL","clean","toLowerCase","import_isPlainObject","fieldType","name","validate","value","isPlainObject","Errors","NOT_AN_OBJECT","fieldType","name","validate","value","array","plainObject","string","date","integer","number","ID","boolean","email","blackbox","any","type","isPlainObject","_isFieldType","isArray","String","Date","Number","Boolean","isString","Error","exists","has","fieldTypes","params","schema","doc","currentDoc","value","currentSchema","keys","options","args","info","isNil","optional","omitRequired","Errors","REQUIRED","validatorKey","getFieldValidator","type","validator","fieldTypes","error","validate","custom","customError","__validate","typeError","getValidationErrors","import_isPlainObject","import_isArray","import_isNil","import_difference","params","convertTypedModel","schema","doc","currentDoc","value","currentSchema","keys","addError","options","args","info","error","getError","isNil","isPlainObject","type","_isFieldType","__skipChildValidation","schemaKeys","Object","filter","key","startsWith","itemSchema","itemValue","keyItemKeys","clone","push","doValidation","documentKeys","notInSchemaKeys","difference","Errors","NOT_IN_SCHEMA","isArray","i","length","toString","dot","Dot","validationErrors","length","errors","validationError","key","code","getValidationErrorsObject","defaultOptions","omitRequired","getValidationErrors","schema","doc","passedOptions","args","getSchemaFromTypedModel","options","errors","addError","keys","code","push","key","join","doValidation","currentDoc","value","currentSchema","type","getValidationErrorsObject","schema","doc","passedOptions","args","validationErrors","getValidationErrors","ValidationError","validate","schema","doc","passedOptions","args","validationErrors","getValidationErrors","isValid","type","validatorKey","getFieldValidator","validator","fieldTypes","getFieldType","import_isArray","import_isNil","import_isPlainObject","schema","value","isPlainObject","type","result","getObjectNode","type","fieldSchema","value","info","args","Error","clean","rootFieldClean","getFieldType","isNil","needReClean","objectTypeSchema","getObjectNode","__clean","defaultValue","autoValue","cleanType","import_isNil","cleanObjectFields","schema","value","other","keys","Object","type","filter","key","startsWith","newDoc","cleanOptions","currentDoc","newValue","clean","isUndefined","error","Error","message","cleanArrayItems","schemaType","promises","map","item","index","result","Promise","all","getArrayNode","isArray","isNil","info","convertTypedModel","args","currSchema","undefined","objectSchema","getObjectNode","cleanType","arraySchema","updatedValue","Array","defaultOptions","autoConvert","filter","trimStrings","removeEmptyStrings","clean","schema","doc","opts","args","getSchemaFromTypedModel","options","params","type","value","forceDoc","currentDoc","cleanedResult","recursiveClean","import_isPlainObject","import_isNil","dotGet","object","path","pathParts","split","first","shift","remainingPath","join","levelObject","type","test","isPlainObject","optional","isBlackboxChild","schema","isNil","Error","dotGetSchema_default","dotGetSchema","defaultOptions","filter","schema","key","value","passedOptions","args","options","keySchema","dotGetSchema","result","clean","defaultOptions","filter","schema","key","value","passedOptions","args","options","keySchema","dotGetSchema","Errors","NOT_IN_SCHEMA","isBlackboxChild","result","getValidationErrors","validate","import_isString","import_includes","name","values","type","fieldType","meta","enumName","enumValues","toGraphQLType","GraphQL","global","GraphQLEnums","GraphQLEnumType","reduce","result","value","validate","currentSchema","isString","Errors","NOT_A_STRING","includes","NOT_AN_ALLOWED_VALUE","optional","REQUIRED","clean","options","autoConvert","trimStrings","removeEmptyStrings","String","trim","undefined","createEnum"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/ValidationError.ts","../src/getValidationErrors/convertTypedModel.ts","../src/getSchemaFromTypedModel.ts","../src/getValidationErrors/getError/index.ts","../src/getValidationErrors/getError/getFieldValidator.ts","../src/fieldType.ts","../src/fieldTypes/array.ts","../src/Errors.ts","../src/fieldTypes/plainObject.ts","../src/fieldTypes/string.ts","../src/fieldTypes/date.ts","../src/fieldTypes/integer.ts","../src/fieldTypes/number.ts","../src/fieldTypes/ID.ts","../src/fieldTypes/boolean.ts","../src/fieldTypes/email.ts","../src/fieldTypes/blackbox.ts","../src/fieldTypes/any.ts","../src/fieldTypes/index.ts","../src/getValidationErrors/doValidation.ts","../src/getValidationErrors/getValidationErrorsObject.ts","../src/getValidationErrors/index.ts","../src/validate.ts","../src/isValid.ts","../src/getValidationErrors/getError/getFieldType.ts","../src/clean/recursiveClean.ts","../src/clean/cleanType.ts","../src/clean/getObjectNode.ts","../src/clean/index.ts","../src/validateKey/dotGetSchema.ts","../src/dotGetSchema.ts","../src/cleanKey.ts","../src/validateKey/index.ts","../src/fieldTypes/enum.ts"],"sourcesContent":["import validate from './validate'\nimport ValidationError from './ValidationError'\nimport getValidationErrors from './getValidationErrors'\nimport isValid from './isValid'\nimport getFieldType from './getValidationErrors/getError/getFieldType'\nimport clean from './clean'\nimport cleanKey from './cleanKey'\nimport validateKey from './validateKey'\nimport dotGetSchema from './dotGetSchema'\nimport createEnum from './fieldTypes/enum'\n\nexport {\n validate,\n ValidationError,\n getValidationErrors,\n isValid,\n getFieldType,\n clean,\n cleanKey,\n dotGetSchema,\n validateKey,\n createEnum\n}\n\nexport * from './types'\nexport * from './fieldType'\n","import isPlainObject from 'lodash/isPlainObject'\n\nexport interface ValidationErrorInfo {\n error: string\n message: string\n validationErrors: object\n}\n\nconst getPrintableError = (validationErrors: object): string => {\n const printableErrors = Object.keys(validationErrors)\n .map(key => {\n return `${key}: ${validationErrors[key]}`\n })\n .join(', ')\n const message = `Validation Error: {${printableErrors}}`\n return message\n}\n\nexport default class ValidationError extends Error {\n public code: string\n public isValidationError: boolean\n public isOrionError: boolean\n public validationErrors: object\n\n constructor(validationErrors: object) {\n super(getPrintableError(validationErrors))\n\n if (!isPlainObject(validationErrors)) {\n throw new Error('ValidationError must be initialized with an errors object')\n }\n\n Error.captureStackTrace(this, this.constructor)\n\n this.code = 'validationError'\n this.isValidationError = true\n this.isOrionError = true\n this.validationErrors = validationErrors\n\n this.getInfo\n }\n\n public getInfo = (): ValidationErrorInfo => {\n return {\n error: 'validationError',\n message: 'Validation Error',\n validationErrors: this.validationErrors\n }\n }\n\n public prependKey = prepend => {\n const newErrors = {}\n\n const keys = Object.keys(this.validationErrors)\n\n for (const key of keys) {\n newErrors[`${prepend}.${key}`] = this.validationErrors[key]\n }\n\n return new ValidationError(newErrors)\n }\n}\n","import {CurrentNodeInfo} from '../types/schema'\n\nexport function isClass(obj: any) {\n const isCtorClass = obj.constructor && obj.constructor.toString().substring(0, 5) === 'class'\n if (obj.prototype === undefined) {\n return isCtorClass\n }\n const isPrototypeCtorClass =\n obj.prototype.constructor &&\n obj.prototype.constructor.toString &&\n obj.prototype.constructor.toString().substring(0, 5) === 'class'\n return isCtorClass || isPrototypeCtorClass\n}\n\nconst convertOnParam = (info: CurrentNodeInfo, paramName: string) => {\n if (!info[paramName]) return\n\n const type = info[paramName].type as any\n\n if (!type) return\n if (typeof type !== 'function') return\n if (!isClass(type)) return\n if (!type.getModel || !type.__schemaId) return\n\n info[paramName].type = type.getModel().getCleanSchema()\n}\n\nexport const convertTypedModel = (info: CurrentNodeInfo) => {\n convertOnParam(info, 'schema')\n convertOnParam(info, 'currentSchema')\n}\n","import {Schema} from '.'\nimport {isClass} from './getValidationErrors/convertTypedModel'\n\nexport const getSchemaFromTypedModel = (schema: Schema | Function): Schema => {\n const item = schema as any\n if (typeof item !== 'function') return item\n if (!isClass(item)) return item\n if (!item.getModel || !item.__schemaId) return item\n\n return item.getModel().getCleanSchema()\n}\n","import isNil from 'lodash/isNil'\nimport getFieldValidator from './getFieldValidator'\nimport fieldTypes from '../../fieldTypes'\nimport Errors from '../../Errors'\nimport {CurrentNodeInfo, SchemaRecursiveNodeTypeExtras} from '../../types/schema'\nimport {FieldType} from '../../fieldType'\n\nexport default async function getValidationErrors(\n params: CurrentNodeInfo\n): Promise<object | string | void> {\n const {schema, doc, currentDoc, value, currentSchema, keys, options = {}, args = []} = params\n const info = {schema, doc, currentDoc, keys, currentSchema, options}\n\n if (isNil(value)) {\n if (!currentSchema.optional && !options.omitRequired) {\n return Errors.REQUIRED\n }\n } else {\n const validatorKey = getFieldValidator(currentSchema.type)\n const validator =\n validatorKey === 'custom' ? (currentSchema.type as FieldType) : fieldTypes[validatorKey]\n\n const error = await validator.validate(value, info, ...args)\n if (error) {\n return error\n }\n }\n\n // to not deprecate yet custom field\n if (currentSchema.custom) currentSchema.validate = currentSchema.custom\n\n if (currentSchema.validate) {\n const customError = await currentSchema.validate(value, info, ...args)\n if (customError) {\n return customError\n }\n }\n\n const type = currentSchema.type as SchemaRecursiveNodeTypeExtras\n\n if (type.__validate) {\n const typeError = await type.__validate(value, info, ...args)\n if (typeError) {\n return typeError\n }\n }\n\n return null\n}\n","import isPlainObject from 'lodash/isPlainObject'\nimport isArray from 'lodash/isArray'\nimport isString from 'lodash/isString'\nimport fieldTypes from '../../fieldTypes'\nimport has from 'lodash/has'\nimport {FieldValidatorType} from '../../types/fieldValidators'\n\nexport default function (type: any): FieldValidatorType {\n if (isPlainObject(type)) {\n if (type._isFieldType) return 'custom'\n return 'plainObject'\n }\n if (isArray(type)) return 'array'\n if (type === String) return 'string'\n if (type === Date) return 'date'\n if (type === Number) return 'number'\n if (type === Boolean) return 'boolean'\n if (type === 'enum') return 'string'\n\n if (!isString(type)) {\n throw new Error('Field type is invalid. Pass a string or a custom field type. Got ' + type)\n }\n\n const exists = has(fieldTypes, type)\n\n if (!exists) {\n throw new Error('Field type does not exist')\n }\n\n return type as FieldValidatorType\n}\n","import {CleanFunction, ValidateFunction} from './types/schema'\n\nexport interface FieldTypeOpts {\n name: string\n validate?: ValidateFunction\n clean?: CleanFunction\n toGraphQLType?: (GraphQL: any) => any\n meta?: any\n}\n\nexport interface FieldType {\n name: string\n validate: ValidateFunction\n clean: CleanFunction\n meta?: any\n toGraphQLType?: (GraphQL: any) => any\n _isFieldType: boolean\n}\n\nexport default function fieldType(opts: FieldTypeOpts): FieldType {\n const {name, validate, clean, ...otherFields} = opts\n const overwrittenValidate: ValidateFunction = (value, info = {}) => {\n if (!info.currentSchema) {\n info.currentSchema = {}\n }\n return validate(value, info)\n }\n\n const overwrittenClean: CleanFunction = (value, info = {}) => {\n if (!info.options) {\n info.options = {}\n }\n if (clean) {\n return clean(value, info)\n }\n\n return value\n }\n\n return {\n ...otherFields,\n name,\n validate: overwrittenValidate,\n clean: overwrittenClean,\n _isFieldType: true\n }\n}\n","import fieldType from '../fieldType'\nimport isArray from 'lodash/isArray'\nimport Errors from '../Errors'\n\nexport default fieldType({\n name: 'array',\n validate(value) {\n if (!isArray(value)) return Errors.NOT_AN_ARRAY\n },\n clean(value, {options}) {\n if (options.autoConvert) {\n if (!isArray(value)) {\n value = [value]\n }\n }\n\n return value\n }\n})\n","export default {\n NOT_IN_SCHEMA: 'notInSchema',\n REQUIRED: 'required',\n UNKNOWN_FIELD_TYPE: 'unknownFieldType',\n NOT_AN_ARRAY: 'notAnArray',\n NOT_AN_OBJECT: 'notAnObject',\n NOT_A_STRING: 'notAString',\n NOT_A_DATE: 'notADate',\n NOT_AN_INTEGER: 'notAnInteger',\n NOT_A_NUMBER: 'notANumber',\n NOT_AN_ID: 'notAnId',\n STRING_TOO_SHORT: 'stringTooShort',\n STRING_TOO_LONG: 'stringTooLong',\n NUMBER_TOO_SMALL: 'numberTooSmall',\n NUMBER_TOO_BIG: 'numberTooBig',\n NOT_A_BOOLEAN: 'notABoolean',\n NOT_AN_EMAIL: 'notAnEmail',\n NOT_UNIQUE: 'notUnique',\n NOT_AN_ALLOWED_VALUE: 'notAnAllowedValue'\n}\n","import fieldType from '../fieldType'\nimport isPlainObject from 'lodash/isPlainObject'\nimport Errors from '../Errors'\nimport difference from 'lodash/difference'\n\nexport default fieldType({\n name: 'plainObject',\n validate(value: object) {\n if (!isPlainObject(value)) return Errors.NOT_AN_OBJECT\n },\n clean(value, {type, options}) {\n if (!isPlainObject(value)) return value\n\n if (options.filter) {\n const documentKeys = Object.keys(value)\n const schemaKeys = Object.keys(type)\n const notInSchemaKeys = difference(documentKeys, schemaKeys)\n for (const key of notInSchemaKeys) {\n delete value[key]\n }\n }\n\n return value\n }\n})\n","import fieldType from '../fieldType'\nimport isString from 'lodash/isString'\nimport Errors from '../Errors'\nimport includes from 'lodash/includes'\nimport isArray from 'lodash/isArray'\n\nexport default fieldType({\n name: 'string',\n validate(value: string, {currentSchema}) {\n if (!isString(value)) return Errors.NOT_A_STRING\n\n if (isFinite(currentSchema.min)) {\n if (value.length < currentSchema.min) {\n return Errors.STRING_TOO_SHORT\n }\n }\n\n if (isFinite(currentSchema.max)) {\n if (value.length > currentSchema.max) {\n return Errors.STRING_TOO_LONG\n }\n }\n\n if (isArray(currentSchema.allowedValues)) {\n if (!includes(currentSchema.allowedValues, value)) {\n return Errors.NOT_AN_ALLOWED_VALUE\n }\n }\n\n if (value === '' && !currentSchema.optional) {\n return Errors.REQUIRED\n }\n },\n clean(value, {options: {autoConvert, trimStrings, removeEmptyStrings}}) {\n if (autoConvert) {\n value = String(value)\n }\n\n if (trimStrings) {\n value = value.trim()\n }\n\n if (removeEmptyStrings && value === '') {\n return undefined\n }\n\n return value\n }\n})\n","import fieldType from '../fieldType'\nimport isDate from 'lodash/isDate'\nimport Errors from '../Errors'\nimport isString from 'lodash/isString'\nimport isNumber from 'lodash/isNumber'\n\nexport default fieldType({\n name: 'date',\n validate(value) {\n if (!isDate(value)) return Errors.NOT_A_DATE\n },\n clean(value: Date, {options}) {\n if (options.autoConvert) {\n if (isString(value)) {\n const result = new Date(value)\n if (isNaN(result.getTime())) {\n return value\n }\n\n value = result\n } else if (isNumber(value)) {\n const result = new Date(value)\n if (isNaN(result.getTime())) {\n return value\n }\n\n value = result\n }\n }\n\n return value\n }\n})\n","import fieldType from '../fieldType'\nimport isInteger from 'lodash/isInteger'\nimport Errors from '../Errors'\nimport number from './number'\n\nexport default fieldType({\n name: 'integer',\n validate(value: number, info) {\n if (!isInteger(value)) return Errors.NOT_AN_INTEGER\n return number.validate(value, info)\n }\n})\n","import fieldType from '../fieldType'\nimport isFinite from 'lodash/isFinite'\nimport Errors from '../Errors'\nimport toNumber from 'lodash/toNumber'\n\nexport default fieldType({\n name: 'number',\n validate(value: number, {currentSchema}) {\n if (!isFinite(value)) return Errors.NOT_A_NUMBER\n\n if (isFinite(currentSchema.min)) {\n if (value < currentSchema.min) {\n return Errors.NUMBER_TOO_SMALL\n }\n }\n\n if (isFinite(currentSchema.max)) {\n if (value > currentSchema.max) {\n return Errors.NUMBER_TOO_BIG\n }\n }\n },\n clean(value, {options: {autoConvert}}) {\n if (typeof value === 'string' && autoConvert) {\n value = toNumber(value)\n }\n\n return value\n }\n})\n","import fieldType from '../fieldType'\nimport isString from 'lodash/isString'\nimport isInteger from 'lodash/isInteger'\nimport Errors from '../Errors'\n\nexport default fieldType({\n name: 'ID',\n validate(value: string) {\n if (!isString(value) && !isInteger(value)) return Errors.NOT_AN_ID\n },\n clean(value: string, {options}) {\n if (!isString(value) && !isInteger(value)) return value\n const {trimStrings, removeEmptyStrings} = options\n\n value = String(value)\n\n if (trimStrings) {\n value = value.trim()\n }\n\n if (removeEmptyStrings && value === '') {\n return undefined\n }\n\n return value\n }\n})\n","import fieldType from '../fieldType'\nimport isBoolean from 'lodash/isBoolean'\nimport Errors from '../Errors'\n\nexport default fieldType({\n name: 'boolean',\n validate(value) {\n if (!isBoolean(value)) return Errors.NOT_A_BOOLEAN\n },\n clean(value, {options}) {\n if (options.autoConvert) {\n if (typeof value === 'string') {\n if (value === 'true') {\n value = true\n }\n if (value === 'false') {\n value = false\n }\n }\n if (typeof value === 'number') {\n if (value === 0) {\n value = false\n } else {\n value = true\n }\n }\n }\n\n return value\n }\n})\n","import fieldType from '../fieldType'\nimport isString from 'lodash/isString'\nimport Errors from '../Errors'\nimport isNil from 'lodash/isNil'\n\nexport default fieldType({\n name: 'email',\n validate(value: string, {currentSchema}) {\n if ((value === '' || isNil(value)) && !currentSchema.optional) {\n return Errors.REQUIRED\n }\n\n if (value && !isString(value)) return Errors.NOT_A_STRING\n\n // eslint-disable-next-line\n const regex =\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n\n if (value && !regex.test(value)) return Errors.NOT_AN_EMAIL\n },\n clean(value) {\n if (typeof value === 'string') {\n value = value.toLowerCase()\n }\n\n return value\n }\n})\n","import fieldType from '../fieldType'\nimport isPlainObject from 'lodash/isPlainObject'\nimport Errors from '../Errors'\n\nexport default fieldType({\n name: 'blackbox',\n validate(value) {\n if (!isPlainObject(value)) return Errors.NOT_AN_OBJECT\n }\n})\n","import fieldType from '../fieldType'\n\nexport default fieldType({\n name: 'any',\n validate(value) {}\n})\n","import array from './array'\nimport plainObject from './plainObject'\nimport string from './string'\nimport date from './date'\nimport integer from './integer'\nimport number from './number'\nimport ID from './ID'\nimport boolean from './boolean'\nimport email from './email'\nimport blackbox from './blackbox'\nimport any from './any'\n\nexport default {\n array,\n plainObject,\n string,\n date,\n integer,\n number,\n ID,\n boolean,\n email,\n blackbox,\n any\n}\n","import getError from './getError'\nimport isPlainObject from 'lodash/isPlainObject'\nimport isArray from 'lodash/isArray'\nimport clone from 'lodash/clone'\nimport isNil from 'lodash/isNil'\nimport difference from 'lodash/difference'\nimport Errors from '../Errors'\nimport {CurrentNodeInfo, SchemaNode, SchemaRecursiveNodeTypeExtras} from '../types/schema'\nimport {convertTypedModel} from './convertTypedModel'\n\nexport default async function doValidation(params: CurrentNodeInfo) {\n convertTypedModel(params)\n\n const {schema, doc, currentDoc, value, currentSchema, keys = [], addError, options, args} = params\n const info = {schema, doc, currentDoc, value, currentSchema, keys, options, args, addError}\n\n const error = await getError(info)\n if (error) {\n addError(keys, error)\n return\n }\n\n if (isNil(value)) return\n\n /**\n * Deep validation\n */\n if (isPlainObject(currentSchema.type)) {\n const type = currentSchema.type as SchemaRecursiveNodeTypeExtras\n\n if (type) {\n if (type._isFieldType) {\n return\n }\n\n if (typeof type.__skipChildValidation === 'function') {\n if (await type.__skipChildValidation(value, info)) {\n return\n }\n }\n }\n\n const schemaKeys = Object.keys(currentSchema.type).filter(key => !key.startsWith('__'))\n for (const key of schemaKeys) {\n const itemSchema = currentSchema.type[key] as SchemaNode\n const itemValue = value[key]\n const keyItemKeys = clone(keys)\n keyItemKeys.push(key)\n await doValidation({\n ...info,\n currentDoc: value,\n value: itemValue,\n currentSchema: itemSchema,\n keys: keyItemKeys\n })\n }\n\n const documentKeys = Object.keys(value)\n const notInSchemaKeys = difference(documentKeys, schemaKeys)\n for (const key of notInSchemaKeys) {\n const keyItemKeys = clone(keys)\n keyItemKeys.push(key)\n addError(keyItemKeys, Errors.NOT_IN_SCHEMA)\n }\n } else if (isArray(currentSchema.type)) {\n const itemSchema = currentSchema.type[0]\n for (let i = 0; i < value.length; i++) {\n const itemValue = value[i]\n const keyItemKeys = clone(keys)\n keyItemKeys.push(i.toString())\n await doValidation({\n ...info,\n currentDoc: value,\n value: itemValue,\n currentSchema: {type: itemSchema},\n keys: keyItemKeys\n })\n }\n }\n}\n","import Dot from 'dot-object'\n\nconst dot = new Dot('.', false, true, false)\n\nexport default function getValidationErrorsObject(validationErrors: {key: string; code: string}[]) {\n if (validationErrors.length === 0) return null\n\n const errors = {}\n\n for (const validationError of validationErrors) {\n errors[validationError.key] = validationError.code\n }\n\n return dot.dot(errors)\n}\n","import {getSchemaFromTypedModel} from '../getSchemaFromTypedModel'\nimport {Schema} from '../types/schema'\nimport doValidation from './doValidation'\nimport getValidationErrorsObject from './getValidationErrorsObject'\n\nconst defaultOptions = {\n omitRequired: false\n}\n\nexport default async function getValidationErrors(\n schema: Schema | Function,\n doc: any,\n passedOptions = {},\n ...args\n) {\n schema = getSchemaFromTypedModel(schema)\n\n const options = {...defaultOptions, ...passedOptions}\n const errors: {key: string; code: string}[] = []\n\n const addError = function (keys, code) {\n errors.push({\n key: keys.join('.'),\n code\n })\n }\n\n await doValidation({\n schema,\n doc,\n currentDoc: doc,\n value: doc,\n currentSchema: {type: schema},\n addError,\n options,\n args\n })\n\n return getValidationErrorsObject(errors)\n}\n","import ValidationError from './ValidationError'\nimport getValidationErrors from './getValidationErrors'\nimport {Schema} from './types/schema'\n\nexport default async function validate(\n schema: Schema | Function,\n doc: any,\n passedOptions = {},\n ...args\n) {\n const validationErrors = await getValidationErrors(schema, doc, passedOptions, ...args)\n if (validationErrors) {\n throw new ValidationError(validationErrors)\n }\n}\n","import getValidationErrors from './getValidationErrors'\nimport {Schema} from './types/schema'\n\nexport default async function isValid(schema: Schema, doc: any, passedOptions = {}, ...args) {\n const validationErrors = await getValidationErrors(schema, doc, passedOptions, ...args)\n return !validationErrors\n}\n","import getFieldValidator from './getFieldValidator'\nimport fieldTypes from '../../fieldTypes'\nimport {SchemaMetaFieldType} from '../../types/schema'\nimport {FieldValidatorType} from '../../types/fieldValidators'\nimport {FieldType} from '../../fieldType'\n\nexport default function getFieldType(type: SchemaMetaFieldType | FieldValidatorType | any) {\n const validatorKey = getFieldValidator(type)\n const validator = validatorKey === 'custom' ? type : fieldTypes[validatorKey]\n return validator as FieldType\n}\n","import isUndefined from 'lodash/isUndefined'\nimport isArray from 'lodash/isArray'\nimport cleanType from './cleanType'\nimport isNil from 'lodash/isNil'\nimport {CurrentNodeInfo, SchemaNode} from '../types/schema'\nimport getObjectNode from './getObjectNode'\nimport {convertTypedModel} from '../getValidationErrors/convertTypedModel'\n\nconst cleanObjectFields = async function ({\n schema,\n value,\n ...other\n}: {\n schema: SchemaNode\n value: object\n}): Promise<any> {\n const keys = Object.keys(schema.type).filter(key => !key.startsWith('__'))\n const newDoc: object = {}\n\n for (const key of keys) {\n try {\n const cleanOptions = {\n ...other,\n schema: schema.type[key],\n value: value[key],\n currentDoc: value\n }\n const newValue = await clean(cleanOptions)\n if (!isUndefined(newValue)) {\n newDoc[key] = newValue\n }\n } catch (error) {\n throw new Error(`Error cleaning field ${key}, error: ${error.message}`)\n }\n }\n return newDoc\n}\n\nconst cleanArrayItems = async function ({\n schema,\n value,\n ...other\n}: {\n schema: Partial<SchemaNode>\n value: any\n}): Promise<any> {\n // clean array items\n\n const schemaType = schema.type[0]\n\n const promises = value.map(async (item, index) => {\n const newValue = await clean({\n ...other,\n schema: {\n type: schemaType\n },\n value: item,\n currentDoc: value\n })\n return newValue\n })\n\n const result = await Promise.all(promises)\n return result.filter(value => !isUndefined(value))\n}\n\nfunction getArrayNode(schema: Partial<SchemaNode>, value: any | Array<any>): SchemaNode | void {\n if (isArray(schema.type) && !isNil(value)) {\n const result = schema as SchemaNode\n return result\n }\n\n return null\n}\n\nconst clean = async function (info: CurrentNodeInfo): Promise<any> {\n convertTypedModel(info)\n\n let {schema, args = [], value} = info\n\n const currSchema: SchemaNode =\n schema.type === undefined ? ({type: schema} as SchemaNode) : (schema as SchemaNode)\n\n const objectSchema = getObjectNode(currSchema, value)\n if (objectSchema) {\n const newDoc = await cleanObjectFields({\n ...info,\n schema: objectSchema,\n value: value as object\n })\n const result = await cleanType('plainObject', objectSchema, newDoc, info, ...args)\n return result\n }\n\n const arraySchema = getArrayNode(currSchema, value)\n\n if (arraySchema) {\n let updatedValue = value\n if (!isArray(value) && !Array.isArray(value)) {\n updatedValue = [value]\n }\n\n const newDoc = await cleanArrayItems({\n ...info,\n schema: arraySchema,\n value: updatedValue\n })\n const result = await cleanType('array', arraySchema, newDoc, info, ...args)\n return result\n }\n\n const result = await cleanType(currSchema.type, currSchema, value, info, ...args)\n return result\n}\n\nexport default clean\n","import getFieldType from '../getValidationErrors/getError/getFieldType'\nimport isNil from 'lodash/isNil'\nimport {\n CurrentNodeInfo,\n SchemaMetaFieldType,\n SchemaNode,\n SchemaRecursiveNodeType\n} from '../types/schema'\nimport {FieldValidatorType} from '../types/fieldValidators'\nimport getObjectNode from './getObjectNode'\n\nexport default async function cleanType(\n type: SchemaMetaFieldType | FieldValidatorType,\n fieldSchema: Partial<SchemaNode>,\n value: any,\n info: CurrentNodeInfo,\n ...args: any[]\n): Promise<any> {\n info.type = fieldSchema.type\n if (!info.type) {\n throw new Error('Cleaning field with no type')\n }\n\n const {clean: rootFieldClean} = await getFieldType(type)\n\n if (rootFieldClean && !isNil(value)) {\n value = await rootFieldClean(value, info, ...args)\n }\n\n let needReClean = false\n\n const objectTypeSchema = getObjectNode(fieldSchema, value)\n if (objectTypeSchema && (objectTypeSchema.type as SchemaRecursiveNodeType).__clean) {\n needReClean = true\n value = await (objectTypeSchema.type as SchemaRecursiveNodeType).__clean(value, info, ...args)\n }\n\n const {defaultValue} = fieldSchema\n if (isNil(value) && !isNil(defaultValue)) {\n needReClean = true\n if (typeof defaultValue === 'function') {\n value = await defaultValue(info, ...args)\n } else {\n value = defaultValue\n }\n }\n\n const {autoValue} = fieldSchema\n if (autoValue) {\n needReClean = true\n value = await autoValue(value, info, ...args)\n }\n\n const {clean} = fieldSchema\n if (clean) {\n needReClean = true\n value = await clean(value, info, ...args)\n }\n\n if (needReClean && rootFieldClean && !isNil(value)) {\n value = await rootFieldClean(value, info, ...args)\n }\n\n return value\n}\n","import isPlainObject from 'lodash/isPlainObject'\nimport {SchemaNode} from '../types/schema'\n\nexport default function getObjectNode(schema: Partial<SchemaNode>, value: any): SchemaNode | void {\n if (isPlainObject(schema.type) && isPlainObject(value)) {\n const result = schema as SchemaNode\n return result\n }\n\n return null\n}\n","import {getSchemaFromTypedModel} from '../getSchemaFromTypedModel'\nimport {Blackbox, CurrentNodeInfoOptions, Schema} from '../types/schema'\nimport recursiveClean from './recursiveClean'\n\nconst defaultOptions = {\n autoConvert: true,\n filter: true,\n trimStrings: true,\n removeEmptyStrings: false\n}\n\nexport default async function clean<TDoc = Blackbox>(\n schema: Schema | Function,\n doc: TDoc,\n opts: CurrentNodeInfoOptions = {},\n ...args\n): Promise<TDoc> {\n if (!doc) return doc\n schema = getSchemaFromTypedModel(schema)\n\n const options = {...defaultOptions, ...opts}\n const params = {\n schema: {type: schema},\n value: doc,\n doc: options.forceDoc || doc,\n currentDoc: doc,\n options,\n args\n }\n const cleanedResult = await recursiveClean(params)\n return cleanedResult as TDoc\n}\n","import isPlainObject from 'lodash/isPlainObject'\nimport isNil from 'lodash/isNil'\nimport {Schema, SchemaNode} from '..'\n\nconst dotGet = function dotGet(object: SchemaNode, path: string) {\n if (path === '') return object\n\n const pathParts = path.split('.')\n const first = pathParts.shift()\n const remainingPath = pathParts.join('.')\n\n const levelObject = object.type\n\n if (first === '$' || /^[0-9]+$/.test(first)) {\n return dotGet({type: levelObject[0]}, remainingPath)\n } else if (isPlainObject(levelObject[first])) {\n return dotGet(levelObject[first], remainingPath)\n }\n\n if (levelObject === 'blackbox') {\n return {type: 'blackbox', optional: true, isBlackboxChild: true}\n }\n\n return null\n}\n\nexport default function (schema: Schema, path: string) {\n if (isNil(schema)) {\n throw new Error('You need to pass a schema')\n }\n return dotGet({type: schema}, path)\n}\n","import dotGetSchema from './validateKey/dotGetSchema'\n\nexport default dotGetSchema\n","import clean from './clean'\nimport dotGetSchema from './dotGetSchema'\n\nconst defaultOptions = {\n filter: true\n}\n\nexport default async function(schema, key, value, passedOptions = {}, ...args) {\n const options = {...defaultOptions, ...passedOptions}\n const keySchema = dotGetSchema(schema, key)\n\n if (!keySchema) {\n if (options.filter) {\n return\n } else {\n return value\n }\n }\n\n const result = await clean({clean: keySchema as any}, {clean: value}, options, ...args)\n return result.clean\n}\n","import dotGetSchema from './dotGetSchema'\nimport getValidationErrors from '../getValidationErrors'\nimport Errors from '../Errors'\nimport {CurrentNodeInfoOptions, Schema} from '..'\n\nconst defaultOptions = {\n filter: false\n}\n\nexport default async function (\n schema: Schema,\n key: string,\n value: any,\n passedOptions: CurrentNodeInfoOptions = {},\n ...args\n) {\n const options: CurrentNodeInfoOptions = {...defaultOptions, ...passedOptions}\n const keySchema = dotGetSchema(schema, key)\n\n if (!keySchema) {\n if (options.filter) {\n return Errors.NOT_IN_SCHEMA\n } else {\n return null\n }\n }\n\n if (keySchema.isBlackboxChild) {\n return null\n }\n\n const result = await getValidationErrors(\n {validate: keySchema as any},\n {validate: value},\n options,\n ...args\n )\n\n if (!result) return null\n\n return result.validate\n}\n","import fieldType, {FieldType} from '../fieldType'\nimport isString from 'lodash/isString'\nimport Errors from '../Errors'\nimport includes from 'lodash/includes'\n\nexport default function createEnum<TValues extends readonly string[]>(\n name: string,\n values: TValues\n): FieldType & {type: TValues[number]} {\n return {\n type: values[0],\n ...fieldType({\n name: 'enum',\n meta: {\n enumName: name,\n enumValues: values\n },\n toGraphQLType: GraphQL => {\n global.GraphQLEnums = global.GraphQLEnums || {}\n\n global.GraphQLEnums[name] =\n global.GraphQLEnums[name] ||\n new GraphQL.GraphQLEnumType({\n name,\n values: values.reduce((result, value) => {\n result[value] = {value}\n return result\n }, {})\n })\n\n return global.GraphQLEnums[name]\n },\n validate(value: string, {currentSchema}) {\n if (!isString(value)) return Errors.NOT_A_STRING\n\n if (!includes(values, value)) {\n return Errors.NOT_AN_ALLOWED_VALUE\n }\n\n if (value === '' && !currentSchema.optional) {\n return Errors.REQUIRED\n }\n },\n clean(value, {options: {autoConvert, trimStrings, removeEmptyStrings}}) {\n if (autoConvert) {\n value = String(value)\n }\n\n if (trimStrings) {\n value = value.trim()\n }\n\n if (removeEmptyStrings && value === '') {\n return undefined\n }\n\n return value\n }\n })\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA,eAAAA;AAAA,EAAA;AAAA;AAAA,sBAAAC;AAAA,EAAA;AAAA,6BAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,2BAA0B;AAQ1B,IAAM,oBAAoB,CAAC,qBAAqC;AAC9D,QAAM,kBAAkB,OAAO,KAAK,gBAAgB,EACjD,IAAI,SAAO;AACV,WAAO,GAAG,GAAG,KAAK,iBAAiB,GAAG,CAAC;AAAA,EACzC,CAAC,EACA,KAAK,IAAI;AACZ,QAAM,UAAU,sBAAsB,eAAe;AACrD,SAAO;AACT;AAEA,IAAqB,kBAArB,MAAqB,yBAAwB,MAAM;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEP,YAAY,kBAA0B;AACpC,UAAM,kBAAkB,gBAAgB,CAAC;AAEzC,QAAI,KAAC,qBAAAC,SAAc,gBAAgB,GAAG;AACpC,YAAM,IAAI,MAAM,2DAA2D;AAAA,IAC7E;AAEA,UAAM,kBAAkB,MAAM,KAAK,WAAW;AAE9C,SAAK,OAAO;AACZ,SAAK,oBAAoB;AACzB,SAAK,eAAe;AACpB,SAAK,mBAAmB;AAExB,SAAK;AAAA,EACP;AAAA,EAEO,UAAU,MAA2B;AAC1C,WAAO;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,kBAAkB,KAAK;AAAA,IACzB;AAAA,EACF;AAAA,EAEO,aAAa,aAAW;AAC7B,UAAM,YAAY,CAAC;AAEnB,UAAM,OAAO,OAAO,KAAK,KAAK,gBAAgB;AAE9C,eAAW,OAAO,MAAM;AACtB,gBAAU,GAAG,OAAO,IAAI,GAAG,EAAE,IAAI,KAAK,iBAAiB,GAAG;AAAA,IAC5D;AAEA,WAAO,IAAI,iBAAgB,SAAS;AAAA,EACtC;AACF;;;AC1DO,SAAS,QAAQ,KAAU;AAChC,QAAM,cAAc,IAAI,eAAe,IAAI,YAAY,SAAS,EAAE,UAAU,GAAG,CAAC,MAAM;AACtF,MAAI,IAAI,cAAc,QAAW;AAC/B,WAAO;AAAA,EACT;AACA,QAAM,uBACJ,IAAI,UAAU,eACd,IAAI,UAAU,YAAY,YAC1B,IAAI,UAAU,YAAY,SAAS,EAAE,UAAU,GAAG,CAAC,MAAM;AAC3D,SAAO,eAAe;AACxB;AAEA,IAAM,iBAAiB,CAAC,MAAuB,cAAsB;AACnE,MAAI,CAAC,KAAK,SAAS,EAAG;AAEtB,QAAM,OAAO,KAAK,SAAS,EAAE;AAE7B,MAAI,CAAC,KAAM;AACX,MAAI,OAAO,SAAS,WAAY;AAChC,MAAI,CAAC,QAAQ,IAAI,EAAG;AACpB,MAAI,CAAC,KAAK,YAAY,CAAC,KAAK,WAAY;AAExC,OAAK,SAAS,EAAE,OAAO,KAAK,SAAS,EAAE,eAAe;AACxD;AAEO,IAAM,oBAAoB,CAAC,SAA0B;AAC1D,iBAAe,MAAM,QAAQ;AAC7B,iBAAe,MAAM,eAAe;AACtC;;;AC3BO,IAAM,0BAA0B,CAAC,WAAsC;AAC5E,QAAM,OAAO;AACb,MAAI,OAAO,SAAS,WAAY,QAAO;AACvC,MAAI,CAAC,QAAQ,IAAI,EAAG,QAAO;AAC3B,MAAI,CAAC,KAAK,YAAY,CAAC,KAAK,WAAY,QAAO;AAE/C,SAAO,KAAK,SAAS,EAAE,eAAe;AACxC;;;ACVA,IAAAC,gBAAkB;;;ACAlB,IAAAC,wBAA0B;AAC1B,IAAAC,kBAAoB;AACpB,IAAAC,mBAAqB;;;ACiBN,SAAR,UAA2B,MAAgC;AAChE,QAAM,EAAC,MAAM,UAAAC,WAAU,OAAAC,QAAO,GAAG,YAAW,IAAI;AAChD,QAAM,sBAAwC,CAAC,OAAO,OAAO,CAAC,MAAM;AAClE,QAAI,CAAC,KAAK,eAAe;AACvB,WAAK,gBAAgB,CAAC;AAAA,IACxB;AACA,WAAOD,UAAS,OAAO,IAAI;AAAA,EAC7B;AAEA,QAAM,mBAAkC,CAAC,OAAO,OAAO,CAAC,MAAM;AAC5D,QAAI,CAAC,KAAK,SAAS;AACjB,WAAK,UAAU,CAAC;AAAA,IAClB;AACA,QAAIC,QAAO;AACT,aAAOA,OAAM,OAAO,IAAI;AAAA,IAC1B;AAEA,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,GAAG;AAAA,IACH;AAAA,IACA,UAAU;AAAA,IACV,OAAO;AAAA,IACP,cAAc;AAAA,EAChB;AACF;;;AC7CA,qBAAoB;;;ACDpB,IAAO,iBAAQ;AAAA,EACb,eAAe;AAAA,EACf,UAAU;AAAA,EACV,oBAAoB;AAAA,EACpB,cAAc;AAAA,EACd,eAAe;AAAA,EACf,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,cAAc;AAAA,EACd,WAAW;AAAA,EACX,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,sBAAsB;AACxB;;;ADfA,IAAO,gBAAQ,UAAU;AAAA,EACvB,MAAM;AAAA,EACN,SAAS,OAAO;AACd,QAAI,KAAC,eAAAC,SAAQ,KAAK,EAAG,QAAO,eAAO;AAAA,EACrC;AAAA,EACA,MAAM,OAAO,EAAC,QAAO,GAAG;AACtB,QAAI,QAAQ,aAAa;AACvB,UAAI,KAAC,eAAAA,SAAQ,KAAK,GAAG;AACnB,gBAAQ,CAAC,KAAK;AAAA,MAChB;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AACF,CAAC;;;AEjBD,IAAAC,wBAA0B;AAE1B,wBAAuB;AAEvB,IAAO,sBAAQ,UAAU;AAAA,EACvB,MAAM;AAAA,EACN,SAAS,OAAe;AACtB,QAAI,KAAC,sBAAAC,SAAc,KAAK,EAAG,QAAO,eAAO;AAAA,EAC3C;AAAA,EACA,MAAM,OAAO,EAAC,MAAM,QAAO,GAAG;AAC5B,QAAI,KAAC,sBAAAA,SAAc,KAAK,EAAG,QAAO;AAElC,QAAI,QAAQ,QAAQ;AAClB,YAAM,eAAe,OAAO,KAAK,KAAK;AACtC,YAAM,aAAa,OAAO,KAAK,IAAI;AACnC,YAAM,sBAAkB,kBAAAC,SAAW,cAAc,UAAU;AAC3D,iBAAW,OAAO,iBAAiB;AACjC,eAAO,MAAM,GAAG;AAAA,MAClB;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AACF,CAAC;;;ACvBD,sBAAqB;AAErB,sBAAqB;AACrB,IAAAC,kBAAoB;AAEpB,IAAO,iBAAQ,UAAU;AAAA,EACvB,MAAM;AAAA,EACN,SAAS,OAAe,EAAC,cAAa,GAAG;AACvC,QAAI,KAAC,gBAAAC,SAAS,KAAK,EAAG,QAAO,eAAO;AAEpC,QAAI,SAAS,cAAc,GAAG,GAAG;AAC/B,UAAI,MAAM,SAAS,cAAc,KAAK;AACpC,eAAO,eAAO;AAAA,MAChB;AAAA,IACF;AAEA,QAAI,SAAS,cAAc,GAAG,GAAG;AAC/B,UAAI,MAAM,SAAS,cAAc,KAAK;AACpC,eAAO,eAAO;AAAA,MAChB;AAAA,IACF;AAEA,YAAI,gBAAAC,SAAQ,cAAc,aAAa,GAAG;AACxC,UAAI,KAAC,gBAAAC,SAAS,cAAc,eAAe,KAAK,GAAG;AACjD,eAAO,eAAO;AAAA,MAChB;AAAA,IACF;AAEA,QAAI,UAAU,MAAM,CAAC,cAAc,UAAU;AAC3C,aAAO,eAAO;AAAA,IAChB;AAAA,EACF;AAAA,EACA,MAAM,OAAO,EAAC,SAAS,EAAC,aAAa,aAAa,mBAAkB,EAAC,GAAG;AACtE,QAAI,aAAa;AACf,cAAQ,OAAO,KAAK;AAAA,IACtB;AAEA,QAAI,aAAa;AACf,cAAQ,MAAM,KAAK;AAAA,IACrB;AAEA,QAAI,sBAAsB,UAAU,IAAI;AACtC,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AACF,CAAC;;;AC/CD,oBAAmB;AAEnB,IAAAC,mBAAqB;AACrB,sBAAqB;AAErB,IAAO,eAAQ,UAAU;AAAA,EACvB,MAAM;AAAA,EACN,SAAS,OAAO;AACd,QAAI,KAAC,cAAAC,SAAO,KAAK,EAAG,QAAO,eAAO;AAAA,EACpC;AAAA,EACA,MAAM,OAAa,EAAC,QAAO,GAAG;AAC5B,QAAI,QAAQ,aAAa;AACvB,cAAI,iBAAAC,SAAS,KAAK,GAAG;AACnB,cAAM,SAAS,IAAI,KAAK,KAAK;AAC7B,YAAI,MAAM,OAAO,QAAQ,CAAC,GAAG;AAC3B,iBAAO;AAAA,QACT;AAEA,gBAAQ;AAAA,MACV,eAAW,gBAAAC,SAAS,KAAK,GAAG;AAC1B,cAAM,SAAS,IAAI,KAAK,KAAK;AAC7B,YAAI,MAAM,OAAO,QAAQ,CAAC,GAAG;AAC3B,iBAAO;AAAA,QACT;AAEA,gBAAQ;AAAA,MACV;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AACF,CAAC;;;AC/BD,uBAAsB;;;ACAtB,sBAAqB;AAErB,sBAAqB;AAErB,IAAO,iBAAQ,UAAU;AAAA,EACvB,MAAM;AAAA,EACN,SAAS,OAAe,EAAC,cAAa,GAAG;AACvC,QAAI,KAAC,gBAAAC,SAAS,KAAK,EAAG,QAAO,eAAO;AAEpC,YAAI,gBAAAA,SAAS,cAAc,GAAG,GAAG;AAC/B,UAAI,QAAQ,cAAc,KAAK;AAC7B,eAAO,eAAO;AAAA,MAChB;AAAA,IACF;AAEA,YAAI,gBAAAA,SAAS,cAAc,GAAG,GAAG;AAC/B,UAAI,QAAQ,cAAc,KAAK;AAC7B,eAAO,eAAO;AAAA,MAChB;AAAA,IACF;AAAA,EACF;AAAA,EACA,MAAM,OAAO,EAAC,SAAS,EAAC,YAAW,EAAC,GAAG;AACrC,QAAI,OAAO,UAAU,YAAY,aAAa;AAC5C,kBAAQ,gBAAAC,SAAS,KAAK;AAAA,IACxB;AAEA,WAAO;AAAA,EACT;AACF,CAAC;;;ADxBD,IAAO,kBAAQ,UAAU;AAAA,EACvB,MAAM;AAAA,EACN,SAAS,OAAe,MAAM;AAC5B,QAAI,KAAC,iBAAAC,SAAU,KAAK,EAAG,QAAO,eAAO;AACrC,WAAO,eAAO,SAAS,OAAO,IAAI;AAAA,EACpC;AACF,CAAC;;;AEVD,IAAAC,mBAAqB;AACrB,IAAAC,oBAAsB;AAGtB,IAAO,aAAQ,UAAU;AAAA,EACvB,MAAM;AAAA,EACN,SAAS,OAAe;AACtB,QAAI,KAAC,iBAAAC,SAAS,KAAK,KAAK,KAAC,kBAAAC,SAAU,KAAK,EAAG,QAAO,eAAO;AAAA,EAC3D;AAAA,EACA,MAAM,OAAe,EAAC,QAAO,GAAG;AAC9B,QAAI,KAAC,iBAAAD,SAAS,KAAK,KAAK,KAAC,kBAAAC,SAAU,KAAK,EAAG,QAAO;AAClD,UAAM,EAAC,aAAa,mBAAkB,IAAI;AAE1C,YAAQ,OAAO,KAAK;AAEpB,QAAI,aAAa;AACf,cAAQ,MAAM,KAAK;AAAA,IACrB;AAEA,QAAI,sBAAsB,UAAU,IAAI;AACtC,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AACF,CAAC;;;ACzBD,uBAAsB;AAGtB,IAAO,kBAAQ,UAAU;AAAA,EACvB,MAAM;AAAA,EACN,SAAS,OAAO;AACd,QAAI,KAAC,iBAAAC,SAAU,KAAK,EAAG,QAAO,eAAO;AAAA,EACvC;AAAA,EACA,MAAM,OAAO,EAAC,QAAO,GAAG;AACtB,QAAI,QAAQ,aAAa;AACvB,UAAI,OAAO,UAAU,UAAU;AAC7B,YAAI,UAAU,QAAQ;AACpB,kBAAQ;AAAA,QACV;AACA,YAAI,UAAU,SAAS;AACrB,kBAAQ;AAAA,QACV;AAAA,MACF;AACA,UAAI,OAAO,UAAU,UAAU;AAC7B,YAAI,UAAU,GAAG;AACf,kBAAQ;AAAA,QACV,OAAO;AACL,kBAAQ;AAAA,QACV;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AACF,CAAC;;;AC7BD,IAAAC,mBAAqB;AAErB,mBAAkB;AAElB,IAAO,gBAAQ,UAAU;AAAA,EACvB,MAAM;AAAA,EACN,SAAS,OAAe,EAAC,cAAa,GAAG;AACvC,SAAK,UAAU,UAAM,aAAAC,SAAM,KAAK,MAAM,CAAC,cAAc,UAAU;AAC7D,aAAO,eAAO;AAAA,IAChB;AAEA,QAAI,SAAS,KAAC,iBAAAC,SAAS,KAAK,EAAG,QAAO,eAAO;AAG7C,UAAM,QACJ;AAEF,QAAI,SAAS,CAAC,MAAM,KAAK,KAAK,EAAG,QAAO,eAAO;AAAA,EACjD;AAAA,EACA,MAAM,OAAO;AACX,QAAI,OAAO,UAAU,UAAU;AAC7B,cAAQ,MAAM,YAAY;AAAA,IAC5B;AAEA,WAAO;AAAA,EACT;AACF,CAAC;;;AC1BD,IAAAC,wBAA0B;AAG1B,IAAO,mBAAQ,UAAU;AAAA,EACvB,MAAM;AAAA,EACN,SAAS,OAAO;AACd,QAAI,KAAC,sBAAAC,SAAc,KAAK,EAAG,QAAO,eAAO;AAAA,EAC3C;AACF,CAAC;;;ACPD,IAAO,cAAQ,UAAU;AAAA,EACvB,MAAM;AAAA,EACN,SAAS,OAAO;AAAA,EAAC;AACnB,CAAC;;;ACOD,IAAO,qBAAQ;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;AdpBA,iBAAgB;AAGD,SAAR,0BAAkB,MAA+B;AACtD,UAAI,sBAAAC,SAAc,IAAI,GAAG;AACvB,QAAI,KAAK,aAAc,QAAO;AAC9B,WAAO;AAAA,EACT;AACA,UAAI,gBAAAC,SAAQ,IAAI,EAAG,QAAO;AAC1B,MAAI,SAAS,OAAQ,QAAO;AAC5B,MAAI,SAAS,KAAM,QAAO;AAC1B,MAAI,SAAS,OAAQ,QAAO;AAC5B,MAAI,SAAS,QAAS,QAAO;AAC7B,MAAI,SAAS,OAAQ,QAAO;AAE5B,MAAI,KAAC,iBAAAC,SAAS,IAAI,GAAG;AACnB,UAAM,IAAI,MAAM,sEAAsE,IAAI;AAAA,EAC5F;AAEA,QAAM,aAAS,WAAAC,SAAI,oBAAY,IAAI;AAEnC,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI,MAAM,2BAA2B;AAAA,EAC7C;AAEA,SAAO;AACT;;;ADvBA,eAAO,oBACL,QACiC;AACjC,QAAM,EAAC,QAAQ,KAAK,YAAY,OAAO,eAAe,MAAM,UAAU,CAAC,GAAG,OAAO,CAAC,EAAC,IAAI;AACvF,QAAM,OAAO,EAAC,QAAQ,KAAK,YAAY,MAAM,eAAe,QAAO;AAEnE,UAAI,cAAAC,SAAM,KAAK,GAAG;AAChB,QAAI,CAAC,cAAc,YAAY,CAAC,QAAQ,cAAc;AACpD,aAAO,eAAO;AAAA,IAChB;AAAA,EACF,OAAO;AACL,UAAM,eAAe,0BAAkB,cAAc,IAAI;AACzD,UAAM,YACJ,iBAAiB,WAAY,cAAc,OAAqB,mBAAW,YAAY;AAEzF,UAAM,QAAQ,MAAM,UAAU,SAAS,OAAO,MAAM,GAAG,IAAI;AAC3D,QAAI,OAAO;AACT,aAAO;AAAA,IACT;AAAA,EACF;AAGA,MAAI,cAAc,OAAQ,eAAc,WAAW,cAAc;AAEjE,MAAI,cAAc,UAAU;AAC1B,UAAM,cAAc,MAAM,cAAc,SAAS,OAAO,MAAM,GAAG,IAAI;AACrE,QAAI,aAAa;AACf,aAAO;AAAA,IACT;AAAA,EACF;AAEA,QAAM,OAAO,cAAc;AAE3B,MAAI,KAAK,YAAY;AACnB,UAAM,YAAY,MAAM,KAAK,WAAW,OAAO,MAAM,GAAG,IAAI;AAC5D,QAAI,WAAW;AACb,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AACT;;;AgB/CA,IAAAC,wBAA0B;AAC1B,IAAAC,kBAAoB;AACpB,mBAAkB;AAClB,IAAAC,gBAAkB;AAClB,IAAAC,qBAAuB;AAKvB,eAAO,aAAoC,QAAyB;AAClE,oBAAkB,MAAM;AAExB,QAAM,EAAC,QAAQ,KAAK,YAAY,OAAO,eAAe,OAAO,CAAC,GAAG,UAAU,SAAS,KAAI,IAAI;AAC5F,QAAM,OAAO,EAAC,QAAQ,KAAK,YAAY,OAAO,eAAe,MAAM,SAAS,MAAM,SAAQ;AAE1F,QAAM,QAAQ,MAAM,oBAAS,IAAI;AACjC,MAAI,OAAO;AACT,aAAS,MAAM,KAAK;AACpB;AAAA,EACF;AAEA,UAAI,cAAAC,SAAM,KAAK,EAAG;AAKlB,UAAI,sBAAAC,SAAc,cAAc,IAAI,GAAG;AACrC,UAAM,OAAO,cAAc;AAE3B,QAAI,MAAM;AACR,UAAI,KAAK,cAAc;AACrB;AAAA,MACF;AAEA,UAAI,OAAO,KAAK,0BAA0B,YAAY;AACpD,YAAI,MAAM,KAAK,sBAAsB,OAAO,IAAI,GAAG;AACjD;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,UAAM,aAAa,OAAO,KAAK,cAAc,IAAI,EAAE,OAAO,SAAO,CAAC,IAAI,WAAW,IAAI,CAAC;AACtF,eAAW,OAAO,YAAY;AAC5B,YAAM,aAAa,cAAc,KAAK,GAAG;AACzC,YAAM,YAAY,MAAM,GAAG;AAC3B,YAAM,kBAAc,aAAAC,SAAM,IAAI;AAC9B,kBAAY,KAAK,GAAG;AACpB,YAAM,aAAa;AAAA,QACjB,GAAG;AAAA,QACH,YAAY;AAAA,QACZ,OAAO;AAAA,QACP,eAAe;AAAA,QACf,MAAM;AAAA,MACR,CAAC;AAAA,IACH;AAEA,UAAM,eAAe,OAAO,KAAK,KAAK;AACtC,UAAM,sBAAkB,mBAAAC,SAAW,cAAc,UAAU;AAC3D,eAAW,OAAO,iBAAiB;AACjC,YAAM,kBAAc,aAAAD,SAAM,IAAI;AAC9B,kBAAY,KAAK,GAAG;AACpB,eAAS,aAAa,eAAO,aAAa;AAAA,IAC5C;AAAA,EACF,eAAW,gBAAAE,SAAQ,cAAc,IAAI,GAAG;AACtC,UAAM,aAAa,cAAc,KAAK,CAAC;AACvC,aAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,YAAM,YAAY,MAAM,CAAC;AACzB,YAAM,kBAAc,aAAAF,SAAM,IAAI;AAC9B,kBAAY,KAAK,EAAE,SAAS,CAAC;AAC7B,YAAM,aAAa;AAAA,QACjB,GAAG;AAAA,QACH,YAAY;AAAA,QACZ,OAAO;AAAA,QACP,eAAe,EAAC,MAAM,WAAU;AAAA,QAChC,MAAM;AAAA,MACR,CAAC;AAAA,IACH;AAAA,EACF;AACF;;;AC/EA,wBAAgB;AAEhB,IAAM,MAAM,IAAI,kBAAAG,QAAI,KAAK,OAAO,MAAM,KAAK;AAE5B,SAAR,0BAA2C,kBAAiD;AACjG,MAAI,iBAAiB,WAAW,EAAG,QAAO;AAE1C,QAAM,SAAS,CAAC;AAEhB,aAAW,mBAAmB,kBAAkB;AAC9C,WAAO,gBAAgB,GAAG,IAAI,gBAAgB;AAAA,EAChD;AAEA,SAAO,IAAI,IAAI,MAAM;AACvB;;;ACTA,IAAM,iBAAiB;AAAA,EACrB,cAAc;AAChB;AAEA,eAAOC,qBACL,QACA,KACA,gBAAgB,CAAC,MACd,MACH;AACA,WAAS,wBAAwB,MAAM;AAEvC,QAAM,UAAU,EAAC,GAAG,gBAAgB,GAAG,cAAa;AACpD,QAAM,SAAwC,CAAC;AAE/C,QAAM,WAAW,SAAU,MAAM,MAAM;AACrC,WAAO,KAAK;AAAA,MACV,KAAK,KAAK,KAAK,GAAG;AAAA,MAClB;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM,aAAa;AAAA,IACjB;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,eAAe,EAAC,MAAM,OAAM;AAAA,IAC5B;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,SAAO,0BAA0B,MAAM;AACzC;;;ACnCA,eAAO,SACL,QACA,KACA,gBAAgB,CAAC,MACd,MACH;AACA,QAAM,mBAAmB,MAAMC,qBAAoB,QAAQ,KAAK,eAAe,GAAG,IAAI;AACtF,MAAI,kBAAkB;AACpB,UAAM,IAAI,gBAAgB,gBAAgB;AAAA,EAC5C;AACF;;;ACXA,eAAO,QAA+B,QAAgB,KAAU,gBAAgB,CAAC,MAAM,MAAM;AAC3F,QAAM,mBAAmB,MAAMC,qBAAoB,QAAQ,KAAK,eAAe,GAAG,IAAI;AACtF,SAAO,CAAC;AACV;;;ACAe,SAAR,aAA8B,MAAsD;AACzF,QAAM,eAAe,0BAAkB,IAAI;AAC3C,QAAM,YAAY,iBAAiB,WAAW,OAAO,mBAAW,YAAY;AAC5E,SAAO;AACT;;;ACVA,yBAAwB;AACxB,IAAAC,kBAAoB;;;ACApB,IAAAC,gBAAkB;;;ACDlB,IAAAC,wBAA0B;AAGX,SAAR,cAA+B,QAA6B,OAA+B;AAChG,UAAI,sBAAAC,SAAc,OAAO,IAAI,SAAK,sBAAAA,SAAc,KAAK,GAAG;AACtD,UAAM,SAAS;AACf,WAAO;AAAA,EACT;AAEA,SAAO;AACT;;;ADCA,eAAO,UACL,MACA,aACA,OACA,SACG,MACW;AACd,OAAK,OAAO,YAAY;AACxB,MAAI,CAAC,KAAK,MAAM;AACd,UAAM,IAAI,MAAM,6BAA6B;AAAA,EAC/C;AAEA,QAAM,EAAC,OAAO,eAAc,IAAI,MAAM,aAAa,IAAI;AAEvD,MAAI,kBAAkB,KAAC,cAAAC,SAAM,KAAK,GAAG;AACnC,YAAQ,MAAM,eAAe,OAAO,MAAM,GAAG,IAAI;AAAA,EACnD;AAEA,MAAI,cAAc;AAElB,QAAM,mBAAmB,cAAc,aAAa,KAAK;AACzD,MAAI,oBAAqB,iBAAiB,KAAiC,SAAS;AAClF,kBAAc;AACd,YAAQ,MAAO,iBAAiB,KAAiC,QAAQ,OAAO,MAAM,GAAG,IAAI;AAAA,EAC/F;AAEA,QAAM,EAAC,aAAY,IAAI;AACvB,UAAI,cAAAA,SAAM,KAAK,KAAK,KAAC,cAAAA,SAAM,YAAY,GAAG;AACxC,kBAAc;AACd,QAAI,OAAO,iBAAiB,YAAY;AACtC,cAAQ,MAAM,aAAa,MAAM,GAAG,IAAI;AAAA,IAC1C,OAAO;AACL,cAAQ;AAAA,IACV;AAAA,EACF;AAEA,QAAM,EAAC,UAAS,IAAI;AACpB,MAAI,WAAW;AACb,kBAAc;AACd,YAAQ,MAAM,UAAU,OAAO,MAAM,GAAG,IAAI;AAAA,EAC9C;AAEA,QAAM,EAAC,OAAAC,OAAK,IAAI;AAChB,MAAIA,QAAO;AACT,kBAAc;AACd,YAAQ,MAAMA,OAAM,OAAO,MAAM,GAAG,IAAI;AAAA,EAC1C;AAEA,MAAI,eAAe,kBAAkB,KAAC,cAAAD,SAAM,KAAK,GAAG;AAClD,YAAQ,MAAM,eAAe,OAAO,MAAM,GAAG,IAAI;AAAA,EACnD;AAEA,SAAO;AACT;;;AD7DA,IAAAE,gBAAkB;AAKlB,IAAM,oBAAoB,eAAgB;AAAA,EACxC;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAGiB;AACf,QAAM,OAAO,OAAO,KAAK,OAAO,IAAI,EAAE,OAAO,SAAO,CAAC,IAAI,WAAW,IAAI,CAAC;AACzE,QAAM,SAAiB,CAAC;AAExB,aAAW,OAAO,MAAM;AACtB,QAAI;AACF,YAAM,eAAe;AAAA,QACnB,GAAG;AAAA,QACH,QAAQ,OAAO,KAAK,GAAG;AAAA,QACvB,OAAO,MAAM,GAAG;AAAA,QAChB,YAAY;AAAA,MACd;AACA,YAAM,WAAW,MAAM,MAAM,YAAY;AACzC,UAAI,KAAC,mBAAAC,SAAY,QAAQ,GAAG;AAC1B,eAAO,GAAG,IAAI;AAAA,MAChB;AAAA,IACF,SAAS,OAAO;AACd,YAAM,IAAI,MAAM,wBAAwB,GAAG,YAAY,MAAM,OAAO,EAAE;AAAA,IACxE;AAAA,EACF;AACA,SAAO;AACT;AAEA,IAAM,kBAAkB,eAAgB;AAAA,EACtC;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAGiB;AAGf,QAAM,aAAa,OAAO,KAAK,CAAC;AAEhC,QAAM,WAAW,MAAM,IAAI,OAAO,MAAM,UAAU;AAChD,UAAM,WAAW,MAAM,MAAM;AAAA,MAC3B,GAAG;AAAA,MACH,QAAQ;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA,OAAO;AAAA,MACP,YAAY;AAAA,IACd,CAAC;AACD,WAAO;AAAA,EACT,CAAC;AAED,QAAM,SAAS,MAAM,QAAQ,IAAI,QAAQ;AACzC,SAAO,OAAO,OAAO,CAAAC,WAAS,KAAC,mBAAAD,SAAYC,MAAK,CAAC;AACnD;AAEA,SAAS,aAAa,QAA6B,OAA4C;AAC7F,UAAI,gBAAAC,SAAQ,OAAO,IAAI,KAAK,KAAC,cAAAC,SAAM,KAAK,GAAG;AACzC,UAAM,SAAS;AACf,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEA,IAAM,QAAQ,eAAgB,MAAqC;AACjE,oBAAkB,IAAI;AAEtB,MAAI,EAAC,QAAQ,OAAO,CAAC,GAAG,MAAK,IAAI;AAEjC,QAAM,aACJ,OAAO,SAAS,SAAa,EAAC,MAAM,OAAM,IAAoB;AAEhE,QAAM,eAAe,cAAc,YAAY,KAAK;AACpD,MAAI,cAAc;AAChB,UAAM,SAAS,MAAM,kBAAkB;AAAA,MACrC,GAAG;AAAA,MACH,QAAQ;AAAA,MACR;AAAA,IACF,CAAC;AACD,UAAMC,UAAS,MAAM,UAAU,eAAe,cAAc,QAAQ,MAAM,GAAG,IAAI;AACjF,WAAOA;AAAA,EACT;AAEA,QAAM,cAAc,aAAa,YAAY,KAAK;AAElD,MAAI,aAAa;AACf,QAAI,eAAe;AACnB,QAAI,KAAC,gBAAAF,SAAQ,KAAK,KAAK,CAAC,MAAM,QAAQ,KAAK,GAAG;AAC5C,qBAAe,CAAC,KAAK;AAAA,IACvB;AAEA,UAAM,SAAS,MAAM,gBAAgB;AAAA,MACnC,GAAG;AAAA,MACH,QAAQ;AAAA,MACR,OAAO;AAAA,IACT,CAAC;AACD,UAAME,UAAS,MAAM,UAAU,SAAS,aAAa,QAAQ,MAAM,GAAG,IAAI;AAC1E,WAAOA;AAAA,EACT;AAEA,QAAM,SAAS,MAAM,UAAU,WAAW,MAAM,YAAY,OAAO,MAAM,GAAG,IAAI;AAChF,SAAO;AACT;AAEA,IAAO,yBAAQ;;;AG/Gf,IAAMC,kBAAiB;AAAA,EACrB,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,oBAAoB;AACtB;AAEA,eAAOC,OACL,QACA,KACA,OAA+B,CAAC,MAC7B,MACY;AACf,MAAI,CAAC,IAAK,QAAO;AACjB,WAAS,wBAAwB,MAAM;AAEvC,QAAM,UAAU,EAAC,GAAGD,iBAAgB,GAAG,KAAI;AAC3C,QAAM,SAAS;AAAA,IACb,QAAQ,EAAC,MAAM,OAAM;AAAA,IACrB,OAAO;AAAA,IACP,KAAK,QAAQ,YAAY;AAAA,IACzB,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,EACF;AACA,QAAM,gBAAgB,MAAM,uBAAe,MAAM;AACjD,SAAO;AACT;;;AC/BA,IAAAE,wBAA0B;AAC1B,IAAAC,gBAAkB;AAGlB,IAAM,SAAS,SAASC,QAAO,QAAoB,MAAc;AAC/D,MAAI,SAAS,GAAI,QAAO;AAExB,QAAM,YAAY,KAAK,MAAM,GAAG;AAChC,QAAM,QAAQ,UAAU,MAAM;AAC9B,QAAM,gBAAgB,UAAU,KAAK,GAAG;AAExC,QAAM,cAAc,OAAO;AAE3B,MAAI,UAAU,OAAO,WAAW,KAAK,KAAK,GAAG;AAC3C,WAAOA,QAAO,EAAC,MAAM,YAAY,CAAC,EAAC,GAAG,aAAa;AAAA,EACrD,eAAW,sBAAAC,SAAc,YAAY,KAAK,CAAC,GAAG;AAC5C,WAAOD,QAAO,YAAY,KAAK,GAAG,aAAa;AAAA,EACjD;AAEA,MAAI,gBAAgB,YAAY;AAC9B,WAAO,EAAC,MAAM,YAAY,UAAU,MAAM,iBAAiB,KAAI;AAAA,EACjE;AAEA,SAAO;AACT;AAEe,SAAR,qBAAkB,QAAgB,MAAc;AACrD,UAAI,cAAAE,SAAM,MAAM,GAAG;AACjB,UAAM,IAAI,MAAM,2BAA2B;AAAA,EAC7C;AACA,SAAO,OAAO,EAAC,MAAM,OAAM,GAAG,IAAI;AACpC;;;AC7BA,IAAOC,wBAAQ;;;ACCf,IAAMC,kBAAiB;AAAA,EACrB,QAAQ;AACV;AAEA,eAAO,iBAAuB,QAAQ,KAAK,OAAO,gBAAgB,CAAC,MAAM,MAAM;AAC7E,QAAM,UAAU,EAAC,GAAGA,iBAAgB,GAAG,cAAa;AACpD,QAAM,YAAYC,sBAAa,QAAQ,GAAG;AAE1C,MAAI,CAAC,WAAW;AACd,QAAI,QAAQ,QAAQ;AAClB;AAAA,IACF,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAEA,QAAM,SAAS,MAAMC,OAAM,EAAC,OAAO,UAAgB,GAAG,EAAC,OAAO,MAAK,GAAG,SAAS,GAAG,IAAI;AACtF,SAAO,OAAO;AAChB;;;AChBA,IAAMC,kBAAiB;AAAA,EACrB,QAAQ;AACV;AAEA,eAAO,oBACL,QACA,KACA,OACA,gBAAwC,CAAC,MACtC,MACH;AACA,QAAM,UAAkC,EAAC,GAAGA,iBAAgB,GAAG,cAAa;AAC5E,QAAM,YAAY,qBAAa,QAAQ,GAAG;AAE1C,MAAI,CAAC,WAAW;AACd,QAAI,QAAQ,QAAQ;AAClB,aAAO,eAAO;AAAA,IAChB,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAEA,MAAI,UAAU,iBAAiB;AAC7B,WAAO;AAAA,EACT;AAEA,QAAM,SAAS,MAAMC;AAAA,IACnB,EAAC,UAAU,UAAgB;AAAA,IAC3B,EAAC,UAAU,MAAK;AAAA,IAChB;AAAA,IACA,GAAG;AAAA,EACL;AAEA,MAAI,CAAC,OAAQ,QAAO;AAEpB,SAAO,OAAO;AAChB;;;ACxCA,IAAAC,mBAAqB;AAErB,IAAAC,mBAAqB;AAEN,SAAR,WACL,MACA,QACqC;AACrC,SAAO;AAAA,IACL,MAAM,OAAO,CAAC;AAAA,IACd,GAAG,UAAU;AAAA,MACX,MAAM;AAAA,MACN,MAAM;AAAA,QACJ,UAAU;AAAA,QACV,YAAY;AAAA,MACd;AAAA,MACA,eAAe,aAAW;AACxB,eAAO,eAAe,OAAO,gBAAgB,CAAC;AAE9C,eAAO,aAAa,IAAI,IACtB,OAAO,aAAa,IAAI,KACxB,IAAI,QAAQ,gBAAgB;AAAA,UAC1B;AAAA,UACA,QAAQ,OAAO,OAAO,CAAC,QAAQ,UAAU;AACvC,mBAAO,KAAK,IAAI,EAAC,MAAK;AACtB,mBAAO;AAAA,UACT,GAAG,CAAC,CAAC;AAAA,QACP,CAAC;AAEH,eAAO,OAAO,aAAa,IAAI;AAAA,MACjC;AAAA,MACA,SAAS,OAAe,EAAC,cAAa,GAAG;AACvC,YAAI,KAAC,iBAAAC,SAAS,KAAK,EAAG,QAAO,eAAO;AAEpC,YAAI,KAAC,iBAAAC,SAAS,QAAQ,KAAK,GAAG;AAC5B,iBAAO,eAAO;AAAA,QAChB;AAEA,YAAI,UAAU,MAAM,CAAC,cAAc,UAAU;AAC3C,iBAAO,eAAO;AAAA,QAChB;AAAA,MACF;AAAA,MACA,MAAM,OAAO,EAAC,SAAS,EAAC,aAAa,aAAa,mBAAkB,EAAC,GAAG;AACtE,YAAI,aAAa;AACf,kBAAQ,OAAO,KAAK;AAAA,QACtB;AAEA,YAAI,aAAa;AACf,kBAAQ,MAAM,KAAK;AAAA,QACrB;AAEA,YAAI,sBAAsB,UAAU,IAAI;AACtC,iBAAO;AAAA,QACT;AAEA,eAAO;AAAA,MACT;AAAA,IACF,CAAC;AAAA,EACH;AACF;","names":["clean","dotGetSchema_default","getValidationErrors","isPlainObject","import_isNil","import_isPlainObject","import_isArray","import_isString","validate","clean","isArray","import_isPlainObject","isPlainObject","difference","import_isArray","isString","isArray","includes","import_isString","isDate","isString","isNumber","isFinite","toNumber","isInteger","import_isString","import_isInteger","isString","isInteger","isBoolean","import_isString","isNil","isString","import_isPlainObject","isPlainObject","isPlainObject","isArray","isString","has","isNil","import_isPlainObject","import_isArray","import_isNil","import_difference","isNil","isPlainObject","clone","difference","isArray","Dot","getValidationErrors","getValidationErrors","getValidationErrors","import_isArray","import_isNil","import_isPlainObject","isPlainObject","isNil","clean","import_isNil","isUndefined","value","isArray","isNil","result","defaultOptions","clean","import_isPlainObject","import_isNil","dotGet","isPlainObject","isNil","dotGetSchema_default","defaultOptions","dotGetSchema_default","clean","defaultOptions","getValidationErrors","import_isString","import_includes","isString","includes"]}