@orion-js/schema 4.0.7 → 4.0.9

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.
package/dist/index.cjs CHANGED
@@ -529,7 +529,6 @@ function getSchemaFromAnyOrionForm(type2) {
529
529
  if (type2.getSchema) {
530
530
  return type2.getSchema();
531
531
  }
532
- if (objectHasSubObjectWithKey(type2, "type")) return type2;
533
532
  return type2;
534
533
  }
535
534
  function objectHasSubObjectWithKey(object, key) {
@@ -579,21 +578,12 @@ async function getValidationErrors(params) {
579
578
  return null;
580
579
  }
581
580
 
582
- // src/getSchemaFromTypedSchema.ts
583
- Symbol.metadata ?? (Symbol.metadata = Symbol("Symbol.metadata"));
584
- var getSchemaFromTypedSchema = (schema2) => {
585
- const item = schema2;
586
- if (!schema2[Symbol.metadata]) return item;
587
- if (!schema2[Symbol.metadata]._isTypedSchema) return item;
588
- return schema2[Symbol.metadata]._getModel().getSchema();
589
- };
590
-
591
581
  // src/getValidationErrors/convertTypedSchema.ts
592
582
  var convertOnParam = (info, paramName) => {
593
583
  if (!info[paramName]) return;
594
584
  const type2 = info[paramName].type;
595
585
  if (!type2) return;
596
- info[paramName].type = getSchemaFromTypedSchema(type2);
586
+ info[paramName].type = getSchemaFromAnyOrionForm(type2);
597
587
  };
598
588
  var convertTypedSchema = (info) => {
599
589
  convertOnParam(info, "schema");
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/type.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/_internals/isArray.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/_internals/isInteger.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/_internals/createPath.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/pick.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/isType.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/clone.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/isEmpty.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/isNil.js","../src/ValidationError.ts","../src/fieldType.ts","../src/Errors.ts","../src/fieldTypes/array.ts","../src/fieldTypes/plainObject.ts","../src/fieldTypes/string.ts","../src/fieldTypes/date.ts","../src/fieldTypes/number.ts","../src/fieldTypes/integer.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/getError/getFieldValidator.ts","../src/models.ts","../src/getValidationErrors/getError/index.ts","../src/getSchemaFromTypedSchema.ts","../src/getValidationErrors/convertTypedSchema.ts","../src/clone.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/getObjectNode.ts","../src/clean/cleanType.ts","../src/clean/recursiveClean.ts","../src/clean/index.ts","../src/validateKey/dotGetSchema.ts","../src/dotGetSchema.ts","../src/cleanKey.ts","../src/validateKey/index.ts","../src/fieldTypes/enum.ts","../src/types/fields.ts","../src/cleanAndValidate.ts","../src/schemaWithName/index.ts","../src/cloneSchema.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'\nimport fieldTypes from './fieldTypes'\n\nexport {\n validate,\n ValidationError,\n getValidationErrors,\n isValid,\n getFieldType,\n clean,\n cleanKey,\n dotGetSchema,\n validateKey,\n createEnum,\n fieldTypes,\n}\n\nexport * from './types'\nexport * from './models'\nexport * from './cleanAndValidate'\nexport * from './fieldType'\nexport * from './schemaWithName'\nexport * from './cloneSchema'\n","export function type(input){\n if (input === null){\n return 'Null'\n } else if (input === undefined){\n return 'Undefined'\n } else if (Number.isNaN(input)){\n return 'NaN'\n }\n const typeResult = Object.prototype.toString.call(input).slice(8, -1)\n\n return typeResult === 'AsyncFunction' ? 'Promise' : typeResult\n}\n","export const { isArray } = Array\n","function _isInteger(n){\n return n << 0 === n\n}\n\nexport const isInteger = Number.isInteger || _isInteger\n\n/**\n * Check if `index` is integer even if it is a string.\n */\nexport const isIndexInteger = index => Number.isInteger(Number(index))\n","import { isInteger } from './isInteger.js'\n\nexport function createPath(path, delimiter = '.'){\n return typeof path === 'string' ?\n path.split(delimiter).map(x => isInteger(x) ? Number(x) : x) :\n path\n}\n","import { createPath } from './_internals/createPath.js'\n\nexport function pick(propsToPick, input){\n if (arguments.length === 1) return _input => pick(propsToPick, _input)\n\n if (input === null || input === undefined){\n return undefined\n }\n const keys = createPath(propsToPick, ',')\n const willReturn = {}\n let counter = 0\n\n while (counter < keys.length){\n if (keys[ counter ] in input){\n willReturn[ keys[ counter ] ] = input[ keys[ counter ] ]\n }\n counter++\n }\n\n return willReturn\n}\n","import { type } from './type.js'\n\nexport function isType(xType, x){\n if (arguments.length === 1){\n return xHolder => isType(xType, xHolder)\n }\n\n return type(x) === xType\n}\n","import { isArray } from './_internals/isArray.js'\n\nexport function clone(input){\n const out = isArray(input) ? Array(input.length) : {}\n if (input && input.getTime) return new Date(input.getTime())\n\n for (const key in input){\n const v = input[ key ]\n out[ key ] =\n typeof v === 'object' && v !== null ?\n v.getTime ?\n new Date(v.getTime()) :\n clone(v) :\n v\n }\n\n return out\n}\n","import { type } from './type.js'\n\nexport function isEmpty(input){\n const inputType = type(input)\n if ([ 'Undefined', 'NaN', 'Number', 'Null' ].includes(inputType))\n return false\n if (!input) return true\n\n if (inputType === 'Object'){\n return Object.keys(input).length === 0\n }\n\n if (inputType === 'Array'){\n return input.length === 0\n }\n\n return false\n}\n","export function isNil(x){\n return x === undefined || x === null\n}\n","import {type} from 'rambdax'\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 (type(validationErrors) !== 'Object') {\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 {CleanFunction, SchemaFieldType, SchemaNode, ValidateFunction} from './types/schema'\n\nexport interface FieldTypeOpts<TType = any> {\n name: string\n validate?: ValidateFunction<TType>\n clean?: CleanFunction<TType>\n toGraphQLType?: (GraphQL: any) => any\n meta?: any\n}\n\nexport interface FieldType<TType = any> {\n name: string\n validate: ValidateFunction\n clean: CleanFunction\n meta?: any\n toGraphQLType?: (GraphQL: any) => any\n toSerializedType?: (node: SchemaNode) => Promise<SchemaFieldType>\n __tsFieldType: TType\n __isFieldType: boolean\n}\n\nexport default function fieldType<TType>(opts: FieldTypeOpts<TType>): FieldType<TType> {\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 __tsFieldType: null,\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 Errors from '../Errors'\n\nexport default fieldType<any[]>({\n name: 'array',\n validate(value) {\n if (!Array.isArray(value)) return Errors.NOT_AN_ARRAY\n },\n clean(value, {options}) {\n if (options.autoConvert) {\n if (!Array.isArray(value)) {\n value = [value]\n }\n }\n\n return value\n },\n})\n","import fieldType from '../fieldType'\nimport {type} from 'rambdax'\nimport Errors from '../Errors'\nimport {Blackbox} from '../types'\n\nexport default fieldType<Blackbox>({\n name: 'plainObject',\n validate(value: object) {\n if (type(value) !== 'Object') return Errors.NOT_AN_OBJECT\n },\n clean(value, {type: typeObj, options}) {\n if (type(value) !== 'Object') return value\n\n if (options.filter) {\n const documentKeys = Object.keys(value)\n const schemaKeys = Object.keys(typeObj)\n const notInSchemaKeys = documentKeys.filter(key => !schemaKeys.includes(key))\n for (const key of notInSchemaKeys) {\n delete value[key]\n }\n }\n\n return value\n },\n})\n","import fieldType from '../fieldType'\nimport Errors from '../Errors'\n\nexport default fieldType<string>({\n name: 'string',\n validate(value: string, {currentSchema}) {\n if (typeof value !== 'string') return Errors.NOT_A_STRING\n\n if (Number.isFinite(currentSchema.min)) {\n if (value.length < currentSchema.min) {\n return Errors.STRING_TOO_SHORT\n }\n }\n\n if (Number.isFinite(currentSchema.max)) {\n if (value.length > currentSchema.max) {\n return Errors.STRING_TOO_LONG\n }\n }\n\n if (Array.isArray(currentSchema.allowedValues)) {\n if (!currentSchema.allowedValues.includes(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 Errors from '../Errors'\n\nexport default fieldType<Date>({\n name: 'date',\n validate(value) {\n if (!(value instanceof Date)) return Errors.NOT_A_DATE\n },\n clean(value: Date, {options}) {\n if (options.autoConvert) {\n if (typeof value === 'string') {\n const result = new Date(value)\n if (Number.isNaN(result.getTime())) {\n return value\n }\n\n value = result\n } else if (typeof value === 'number') {\n const result = new Date(value)\n if (Number.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 Errors from '../Errors'\n\nexport default fieldType<number>({\n name: 'number',\n validate(value: number, {currentSchema}) {\n if (!Number.isFinite(value)) return Errors.NOT_A_NUMBER\n\n if (Number.isFinite(currentSchema.min)) {\n if (value < currentSchema.min) {\n return Errors.NUMBER_TOO_SMALL\n }\n }\n\n if (Number.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 = Number(value)\n }\n\n return value\n },\n})\n","import fieldType from '../fieldType'\nimport Errors from '../Errors'\nimport number from './number'\n\nexport default fieldType<number>({\n name: 'integer',\n validate(value: number, info) {\n if (!Number.isInteger(value)) return Errors.NOT_AN_INTEGER\n return number.validate(value, info)\n },\n})\n","import fieldType from '../fieldType'\nimport Errors from '../Errors'\n\nexport default fieldType<string>({\n name: 'ID',\n validate(value: string) {\n if (typeof value !== 'string' && !Number.isInteger(value)) return Errors.NOT_AN_ID\n },\n clean(value: string, {options}) {\n if (typeof value !== 'string' && !Number.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 Errors from '../Errors'\n\nexport default fieldType<boolean>({\n name: 'boolean',\n validate(value) {\n if (typeof value !== 'boolean') return Errors.NOT_A_BOOLEAN\n },\n clean(value, {options}) {\n if (options.autoConvert) {\n if (typeof value === 'string') {\n const stringValue = value as string\n if (stringValue === 'true') {\n value = true\n }\n if (stringValue === '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 {isNil} from 'rambdax'\nimport Errors from '../Errors'\n\nexport default fieldType<string>({\n name: 'email',\n validate(value, {currentSchema}) {\n if ((value === '' || isNil(value)) && !currentSchema.optional) {\n return Errors.REQUIRED\n }\n\n if (value && typeof value !== 'string') 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 {type} from 'rambdax'\nimport Errors from '../Errors'\nimport {Blackbox} from '../types'\n\nexport default fieldType<Blackbox>({\n name: 'blackbox',\n validate(value) {\n if (type(value) !== 'Object') return Errors.NOT_AN_OBJECT\n },\n})\n","import fieldType from '../fieldType'\n\nexport default fieldType<any>({\n name: 'any',\n validate() {},\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 fieldTypes from '../../fieldTypes'\nimport {FieldValidatorType} from '../../types/fieldValidators'\nimport {SchemaFieldType} from '../../types'\nimport {isType} from 'rambdax'\n\nexport default function getFieldValidator(type: SchemaFieldType): FieldValidatorType {\n if (isType('Object', type)) {\n if ((type as any).__isFieldType) return 'custom'\n return 'plainObject'\n }\n if (Array.isArray(type)) return 'array'\n\n if (type === String) return 'string'\n if (typeof type === 'function' && type.name === 'Date') return 'date'\n if (type === Number) return 'number'\n if (type === Boolean) return 'boolean'\n if (type === 'enum') return 'string'\n\n if (typeof type !== 'string') {\n throw new Error(`Field type is invalid. Pass a string or a custom field type. Got ${type}`)\n }\n\n const exists = fieldTypes[type]\n\n if (!exists) {\n throw new Error(`Field type does not exist. Got ${type}`)\n }\n\n return type as FieldValidatorType\n}\n","import getFieldValidator from './getValidationErrors/getError/getFieldValidator'\nimport {Schema, SchemaFieldType, SchemaFieldTypeNonSchema, SchemaWithMetadata} from './types'\n\n// @ts-ignore polyfill for Symbol.metadata\nSymbol.metadata ??= Symbol('Symbol.metadata')\n\nexport function isSchemaLike(type: any): boolean {\n if (!type) return false\n\n if (objectHasSubObjectWithKey(type, 'type')) return true\n if (type?.[Symbol.metadata]?._getModel) return true\n if (type.getModel) return true\n if (type.getSchema) return true\n if (type.getCleanSchema) return true\n if (type.__isModel) return true\n if (type.__modelName) return true\n\n return false\n}\n\nexport function isStrictSchemaLike<TType extends Schema | SchemaFieldTypeNonSchema>(\n type: TType,\n): TType extends Schema ? true : false {\n if (isSchemaLike(type)) return true as any\n return false as any\n}\n\nexport function isSchemaOrFieldLike(type: any): boolean {\n if (Array.isArray(type)) {\n if (type.length !== 1) return false\n return isSchemaOrFieldLike(type[0])\n }\n\n if (isSchemaLike(type)) return true\n try {\n if (getFieldValidator(type)) return true\n } catch {\n return false\n }\n\n return false\n}\n\nexport function getSchemaModelName(type: any): string | null {\n if (!type) return null\n if (type.__modelName) return type.__modelName\n if (type.getModel) return type.getModel().name\n if (type.getSchema) return type.getSchema().__modelName\n return null\n}\n\nexport function getSchemaFromAnyOrionForm(type: any): SchemaFieldType {\n if (!type) return type\n\n if (type?.[Symbol.metadata]?._getModel) {\n return type?.[Symbol.metadata]?._getModel().getSchema()\n }\n if (type?.getModel) return type.getModel().getSchema()\n\n if (type.getSchema) {\n return type.getSchema()\n }\n\n if (objectHasSubObjectWithKey(type, 'type')) return type // ya es un schema\n\n return type\n}\n\nfunction objectHasSubObjectWithKey(object: any, key: string) {\n if (!object || typeof object !== 'object') return false\n\n for (const key1 in object) {\n const value = object[key1]\n if (value && typeof value === 'object' && key in value) {\n return true\n }\n }\n\n return false\n}\n\nexport function getSchemaWithMetadataFromAnyOrionForm(type: any): SchemaWithMetadata {\n return getSchemaFromAnyOrionForm(type) as SchemaWithMetadata\n}\n","import getFieldValidator from './getFieldValidator'\nimport fieldTypes from '../../fieldTypes'\nimport Errors from '../../Errors'\nimport {CurrentNodeInfo, SchemaRecursiveNodeTypeExtras} from '../../types/schema'\nimport {FieldType} from '../../fieldType'\nimport {isNil} from 'rambdax'\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 {Schema, SchemaFieldType} from '.'\n\n// @ts-ignore polyfill for Symbol.metadata // https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-2.html#decorator-metadata\nSymbol.metadata ??= Symbol('Symbol.metadata')\n\nexport const getSchemaFromTypedSchema = (schema: Schema | Function | SchemaFieldType): Schema => {\n const item = schema as any\n\n if (!schema[Symbol.metadata]) return item\n if (!schema[Symbol.metadata]._isTypedSchema) return item\n\n return schema[Symbol.metadata]._getModel().getSchema()\n}\n","import {getSchemaFromTypedSchema} from '../getSchemaFromTypedSchema'\nimport {CurrentNodeInfo} from '../types/schema'\n\nconst convertOnParam = (info: CurrentNodeInfo, paramName: string) => {\n if (!info[paramName]) return\n\n const type = info[paramName].type as any\n if (!type) return\n\n info[paramName].type = getSchemaFromTypedSchema(type)\n}\n\nexport const convertTypedSchema = (info: CurrentNodeInfo) => {\n convertOnParam(info, 'schema')\n convertOnParam(info, 'currentSchema')\n}\n","import {isType, clone as cloneRambdax} from 'rambdax'\n\nexport function clone<T>(value: T): T {\n if (isType('Object', value)) {\n return cloneRambdax(value)\n }\n\n if (Array.isArray(value)) {\n return cloneRambdax(value)\n }\n\n return value\n}\n","import getError from './getError'\nimport Errors from '../Errors'\nimport {CurrentNodeInfo, SchemaNode, SchemaRecursiveNodeTypeExtras} from '../types/schema'\nimport {convertTypedSchema} from './convertTypedSchema'\nimport {isNil, type} from 'rambdax'\nimport {clone} from '../clone'\n\nexport default async function doValidation(params: CurrentNodeInfo) {\n convertTypedSchema(params)\n\n const {schema, doc, currentDoc, value, currentSchema, keys = [], addError, options, args} = params\n const info = {\n schema,\n doc,\n currentDoc,\n value,\n currentSchema,\n keys,\n options,\n args,\n addError,\n }\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 (type(currentSchema.type) === 'Object') {\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 } as any)\n }\n\n const documentKeys = Object.keys(value)\n const notInSchemaKeys = documentKeys.filter(key => !schemaKeys.includes(key))\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 (Array.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 {getSchemaFromAnyOrionForm} from '../models'\nimport {InferSchemaType} from '../types'\nimport {SchemaFieldType} from '../types/schema'\nimport doValidation from './doValidation'\nimport getValidationErrorsObject from './getValidationErrorsObject'\n\nconst defaultOptions = {\n omitRequired: false,\n}\n\nexport default async function getValidationErrors<TSchema extends SchemaFieldType>(\n schema: TSchema,\n doc: InferSchemaType<TSchema>,\n passedOptions = {},\n ...args\n) {\n schema = getSchemaFromAnyOrionForm(schema) as TSchema\n\n const options = {...defaultOptions, ...passedOptions}\n const errors: {key: string; code: string}[] = []\n\n const addError = (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 {InferSchemaType} from './types/fields'\nimport {SchemaFieldType} from './types/schema'\n\nexport default async function validate<TSchema extends SchemaFieldType>(\n schema: TSchema,\n doc: InferSchemaType<TSchema>,\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 {InferSchemaType} from './types'\nimport {Schema} from './types/schema'\n\nexport default async function isValid<TSchema extends Schema>(\n schema: TSchema,\n doc: InferSchemaType<TSchema>,\n passedOptions = {},\n ...args\n) {\n const validationErrors = await getValidationErrors(schema, doc, passedOptions, ...args)\n return !validationErrors\n}\n","import getFieldValidator from './getFieldValidator'\nimport fieldTypes from '../../fieldTypes'\nimport {SchemaFieldType} from '../../types/schema'\nimport {FieldValidatorType} from '../../types/fieldValidators'\nimport {FieldType} from '../../fieldType'\n\nexport default function getFieldType(type: SchemaFieldType | FieldValidatorType | any) {\n const validatorKey = getFieldValidator(type)\n const validator = validatorKey === 'custom' ? type : fieldTypes[validatorKey]\n return validator as FieldType\n}\n","import {type} from 'rambdax'\nimport {SchemaNode} from '../types/schema'\n\nexport default function getObjectNode(schema: Partial<SchemaNode>, value: any): SchemaNode {\n if (type(schema.type) === 'Object' && type(value) === 'Object') {\n const result = schema as any\n return result\n }\n\n return null\n}\n","import getFieldType from '../getValidationErrors/getError/getFieldType'\nimport {isNil} from 'rambdax'\nimport {CurrentNodeInfo, SchemaFieldType, SchemaNode, SchemaMetadata, Schema} from '../types/schema'\nimport {FieldValidatorType} from '../types/fieldValidators'\nimport getObjectNode from './getObjectNode'\n\nexport default async function cleanType<TSchema extends Schema>(\n type: SchemaFieldType | FieldValidatorType,\n fieldSchema: Partial<SchemaNode>,\n value: any,\n info: CurrentNodeInfo<TSchema>,\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 SchemaMetadata).__clean) {\n needReClean = true\n value = await (objectTypeSchema.type as SchemaMetadata).__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 {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 {isNil} from 'rambdax'\nimport cleanType from './cleanType'\nimport {CurrentNodeInfo, SchemaNode} from '../types/schema'\nimport getObjectNode from './getObjectNode'\nimport {convertTypedSchema} from '../getValidationErrors/convertTypedSchema'\n\nconst cleanObjectFields = async ({\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 (newValue !== undefined) {\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 ({\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: any) => {\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 => value !== undefined)\n}\n\nfunction getArrayNode(\n schema: Partial<SchemaNode>,\n value: any | Array<any>,\n): SchemaNode | undefined {\n if (Array.isArray(schema.type) && !isNil(value)) {\n const result = schema as SchemaNode\n return result\n }\n\n return null\n}\n\nconst clean = async (info: CurrentNodeInfo): Promise<any> => {\n convertTypedSchema(info)\n\n const {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 (!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 {getSchemaFromAnyOrionForm} from '../models'\nimport {InferSchemaType} from '../types'\nimport {CurrentNodeInfoOptions, SchemaFieldType} 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<TSchema extends SchemaFieldType>(\n schema: TSchema,\n doc: InferSchemaType<TSchema>,\n opts: CurrentNodeInfoOptions = {},\n ...args\n): Promise<InferSchemaType<TSchema>> {\n if (!doc) return doc\n schema = getSchemaFromAnyOrionForm(schema) as TSchema\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\n const cleanedResult = await recursiveClean(params as any)\n return cleanedResult\n}\n","import {Schema, SchemaNode} from '..'\nimport {isType, isNil} from 'rambdax'\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 }\n\n if (isType('Object', 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 }\n return null\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 Errors from '../Errors'\n\nexport default function createEnum<const TValues extends readonly string[]>(\n name: string,\n values: TValues,\n): FieldType<TValues[number]> {\n return 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 (typeof value !== 'string') return Errors.NOT_A_STRING\n\n if (!values.includes(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","import {createEnum} from '..'\nimport {FieldType} from '../fieldType'\nimport {Blackbox, Schema, SchemaMetaFieldTypeSingleNonSchema, TypedSchemaOnSchema} from './schema'\n\ntype InferSchemaTypeForFieldType<T> =\n // field type with setted _tsFieldType\n T extends {__tsFieldType: infer U}\n ? U\n : // typed as strings\n T extends 'string'\n ? string\n : T extends 'date'\n ? Date\n : T extends 'integer'\n ? number\n : T extends 'number'\n ? number\n : T extends 'ID'\n ? string\n : T extends 'boolean'\n ? boolean\n : T extends 'email'\n ? string\n : T extends 'blackbox'\n ? Blackbox\n : T extends 'any'\n ? any\n : // typed as object constructors (Like String, Number, Boolean, Date)\n T extends String\n ? string\n : T extends Number\n ? number\n : T extends Boolean\n ? boolean\n : T extends Date\n ? Date\n : T extends StringConstructor\n ? string\n : T extends NumberConstructor\n ? number\n : T extends BooleanConstructor\n ? boolean\n : T extends DateConstructor\n ? Date\n : // if is array, return infer the first element recursively\n T extends Array<infer U>\n ? InferSchemaTypeForFieldType<U>[]\n : // if is object, asume it's a schema and infer the type of the object\n T extends Record<string, any>\n ? InferSchemaTypeForSchema<T>\n : T\n\ntype SchemaKeysNotOfSchemaItems = '__isFieldType' | '__GraphQLType' | '__skipChildValidation'\n\ntype NodeIsOptional<TNode> = TNode extends {optional: true} ? true : false\n\n// esto hace que haya un infinity loopp\n// type NodeIsOptional<TNode> = TNode extends {optional: true}\n// ? true\n// : TNode extends {defaultValue: any}\n// ? true\n// : false\n\ntype WithoutNotSchemaItems<T extends Record<string, any>> = T extends {\n [key in SchemaKeysNotOfSchemaItems]: any\n} & Record<string, any>\n ? Omit<T, SchemaKeysNotOfSchemaItems>\n : T\n\ntype InferSchemaTypeForSchema<TSchema extends Record<string, any>> = WithoutNotSchemaItems<\n {\n -readonly [K in keyof TSchema as NodeIsOptional<TSchema[K]> extends true\n ? never\n : K]: InferSchemaType<TSchema[K]['type']>\n } & {\n -readonly [K in keyof TSchema as NodeIsOptional<TSchema[K]> extends true\n ? K\n : never]?: InferSchemaType<TSchema[K]['type']>\n }\n>\n\n// is a record with a child item that has type in its type\ntype IsPossiblyASchema<TType> = TType extends FieldType\n ? false\n : TType extends Record<string, any>\n ? keyof {\n [K in keyof TType as 'type' extends keyof TType[K] ? K : never]: TType[K]\n } extends never\n ? false\n : true\n : false\n\ntype AClass<T = any> = abstract new (...args: any) => T\n\n/**\n * Returns the type of the schema\n */\nexport type InferSchemaType<TType> = TType extends {__isModel: true; type: infer U}\n ? InferSchemaTypeForSchema<U>\n : TType extends SchemaMetaFieldTypeSingleNonSchema\n ? InferSchemaTypeForFieldType<TType>\n : TType extends AClass<infer U>\n ? U\n : IsPossiblyASchema<TType> extends true\n ? InferSchemaTypeForSchema<TType>\n : InferSchemaTypeForFieldType<TType>\n\n/**\n * Returns the type of the schema but only if its a schema\n */\nexport type StrictInferSchemaType<TSchema extends Schema> = InferSchemaTypeForSchema<TSchema>\n/**\n * Returns the type of the schema but only if its a schema\n */\nexport type InferSchemaTypeFromTypedSchema<TTypedSchema extends TypedSchemaOnSchema> = TTypedSchema\n\nconst subSchema = {\n name: {\n type: String,\n },\n}\n\nconst schema = {\n filter: {\n type: String,\n },\n sub: {\n type: subSchema,\n },\n gender: {\n type: createEnum('gender', ['male', 'female']),\n },\n page: {\n type: 'integer',\n defaultValue: 1,\n min: 1,\n },\n limit: {\n type: 'integer',\n defaultValue: 0,\n min: 0,\n max: 200,\n },\n sortBy: {\n type: String,\n optional: true,\n },\n sortType: {\n type: String,\n allowedValues: ['asc', 'desc'],\n optional: true,\n },\n} as const\n\ntype _ = InferSchemaType<typeof schema>\n\nconst _a: _ = {\n filter: '123',\n gender: 'male',\n sub: {\n name: '123',\n },\n limit: 1,\n page: 1,\n}\n\ntype _2 = NodeIsOptional<(typeof schema)['sortType']>\n","import {InferSchemaType, SchemaFieldType} from './types'\nimport clean from './clean'\nimport validate from './validate'\n\nexport async function cleanAndValidate<TSchema extends SchemaFieldType>(\n schema: TSchema,\n doc: InferSchemaType<TSchema>,\n): Promise<InferSchemaType<TSchema>> {\n const cleaned = await clean(schema, doc)\n await validate(schema, cleaned)\n return cleaned\n}\n","// import {ModelResolver, ModelResolverResolve} from '@orion-js/resolvers'\n\nimport {Schema} from '../types'\n\n/**\n * Assigns a name to a schema for GraphQL type generation.\n *\n * This function associates a name with a schema object by setting an internal\n * `__modelName` property. This name is used when generating GraphQL types.\n *\n * @param name - The name to assign to the schema\n * @param schema - The schema object to name\n * @returns The same schema object with the internal name property added\n *\n * Note: The schema object is modified in-place, so the name will persist\n * even if you don't use the returned value.\n */\nexport function schemaWithName<TModelName extends string, TSchema extends Schema>(\n name: TModelName,\n schema: TSchema,\n): TSchema {\n // @ts-ignore Internal property not included in type definition\n schema.__modelName = name\n return schema\n}\n","import {isEmpty, pick} from 'rambdax'\nimport {Schema, SchemaNode} from './types'\n\nexport type CloneSchemaOptions<\n TSchema extends Schema,\n TExtendFields extends Schema | undefined = undefined,\n TPickFields extends (keyof TSchema)[] | undefined = undefined,\n TOmitFields extends (keyof TSchema)[] | undefined = undefined,\n> = {\n /**\n * The schema to clone\n */\n schema: TSchema\n /**\n * The name of the cloned schema\n */\n name?: string\n /**\n * The schema to extend the cloned schema with\n */\n extendSchema?: TExtendFields\n /**\n * A function to map the fields of the cloned schema.\n * Warning: This function will not be applied to the typescript types of this schema.\n */\n mapFields?: (field: TSchema[keyof TSchema], key: keyof TSchema) => SchemaNode\n /**\n * The fields to pick from the cloned schema\n */\n pickFields?: TPickFields\n /**\n * The fields to omit from the cloned schema\n */\n omitFields?: TOmitFields\n}\n\n// TExtendFields should replace TSchema if present\ntype ExtendFields<\n TSchema extends Schema,\n TExtendFields extends Schema | undefined,\n> = TExtendFields extends undefined\n ? TSchema\n : {\n [key in keyof (TSchema & TExtendFields)]: key extends keyof TExtendFields\n ? TExtendFields[key]\n : key extends keyof TSchema\n ? TSchema[key]\n : never\n }\n\ntype PickOrOmit<\n TSchema extends Schema,\n TPickFields extends (keyof TSchema)[] | undefined = undefined,\n TOmitFields extends (keyof TSchema)[] | undefined = undefined,\n> = TPickFields extends undefined\n ? TOmitFields extends undefined\n ? TSchema\n : Omit<TSchema, TOmitFields[number]>\n : Pick<TSchema, TPickFields[number]>\n\nexport type ClonedSchema<\n TSchema extends Schema,\n TExtendFields extends Schema | undefined = undefined,\n TPickFields extends (keyof TSchema)[] | undefined = undefined,\n TOmitFields extends (keyof TSchema)[] | undefined = undefined,\n> = ExtendFields<PickOrOmit<TSchema, TPickFields, TOmitFields>, TExtendFields>\n\nexport function cloneSchema<\n TSchema extends Schema,\n TExtendFields extends Schema | undefined = undefined,\n TPickFields extends (keyof TSchema)[] | undefined = undefined,\n TOmitFields extends (keyof TSchema)[] | undefined = undefined,\n>(\n options: CloneSchemaOptions<TSchema, TExtendFields, TPickFields, TOmitFields>,\n): ClonedSchema<TSchema, TExtendFields, TPickFields, TOmitFields> {\n const {schema, extendSchema, mapFields, pickFields, omitFields} = options\n\n const originalMetaKeys = Object.keys(schema).filter(key => key.startsWith('__'))\n const originalMetaFields = pick(originalMetaKeys, schema)\n\n const cloned = {...schema} as any\n\n if (pickFields?.length) {\n for (const key in cloned) {\n if (!pickFields.includes(key)) {\n delete cloned[key]\n }\n }\n }\n\n if (omitFields?.length) {\n for (const key in cloned) {\n if (omitFields.includes(key)) {\n delete cloned[key]\n }\n }\n }\n\n if (!isEmpty(extendSchema)) {\n for (const key in extendSchema) {\n cloned[key] = extendSchema[key]\n }\n }\n\n if (mapFields) {\n for (const key in cloned) {\n cloned[key] = mapFields(cloned[key], key)\n }\n }\n\n for (const key of originalMetaKeys) {\n if (originalMetaFields[key]) {\n cloned[key] = originalMetaFields[key]\n }\n }\n\n if (options.name) {\n cloned.__modelName = options.name\n }\n\n return cloned\n}\n"],"mappings":"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","names":["clean","dotGetSchema_default","getValidationErrors","validate","clean","type","type","schema","type","schema","type","clone","schema","type","clone","Dot","getValidationErrors","schema","schema","getValidationErrors","schema","getValidationErrors","type","schema","type","clean","schema","value","result","defaultOptions","clean","schema","dotGet","schema","dotGetSchema_default","defaultOptions","schema","dotGetSchema_default","clean","defaultOptions","schema","getValidationErrors","schema","clean","schema","schema"]}
1
+ {"version":3,"sources":["../src/index.ts","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/type.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/_internals/isArray.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/_internals/isInteger.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/_internals/createPath.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/pick.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/isType.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/clone.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/isEmpty.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/isNil.js","../src/ValidationError.ts","../src/fieldType.ts","../src/Errors.ts","../src/fieldTypes/array.ts","../src/fieldTypes/plainObject.ts","../src/fieldTypes/string.ts","../src/fieldTypes/date.ts","../src/fieldTypes/number.ts","../src/fieldTypes/integer.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/getError/getFieldValidator.ts","../src/models.ts","../src/getValidationErrors/getError/index.ts","../src/getValidationErrors/convertTypedSchema.ts","../src/clone.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/getObjectNode.ts","../src/clean/cleanType.ts","../src/clean/recursiveClean.ts","../src/clean/index.ts","../src/validateKey/dotGetSchema.ts","../src/dotGetSchema.ts","../src/cleanKey.ts","../src/validateKey/index.ts","../src/fieldTypes/enum.ts","../src/types/fields.ts","../src/cleanAndValidate.ts","../src/schemaWithName/index.ts","../src/cloneSchema.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'\nimport fieldTypes from './fieldTypes'\n\nexport {\n validate,\n ValidationError,\n getValidationErrors,\n isValid,\n getFieldType,\n clean,\n cleanKey,\n dotGetSchema,\n validateKey,\n createEnum,\n fieldTypes,\n}\n\nexport * from './types'\nexport * from './models'\nexport * from './cleanAndValidate'\nexport * from './fieldType'\nexport * from './schemaWithName'\nexport * from './cloneSchema'\n","export function type(input){\n if (input === null){\n return 'Null'\n } else if (input === undefined){\n return 'Undefined'\n } else if (Number.isNaN(input)){\n return 'NaN'\n }\n const typeResult = Object.prototype.toString.call(input).slice(8, -1)\n\n return typeResult === 'AsyncFunction' ? 'Promise' : typeResult\n}\n","export const { isArray } = Array\n","function _isInteger(n){\n return n << 0 === n\n}\n\nexport const isInteger = Number.isInteger || _isInteger\n\n/**\n * Check if `index` is integer even if it is a string.\n */\nexport const isIndexInteger = index => Number.isInteger(Number(index))\n","import { isInteger } from './isInteger.js'\n\nexport function createPath(path, delimiter = '.'){\n return typeof path === 'string' ?\n path.split(delimiter).map(x => isInteger(x) ? Number(x) : x) :\n path\n}\n","import { createPath } from './_internals/createPath.js'\n\nexport function pick(propsToPick, input){\n if (arguments.length === 1) return _input => pick(propsToPick, _input)\n\n if (input === null || input === undefined){\n return undefined\n }\n const keys = createPath(propsToPick, ',')\n const willReturn = {}\n let counter = 0\n\n while (counter < keys.length){\n if (keys[ counter ] in input){\n willReturn[ keys[ counter ] ] = input[ keys[ counter ] ]\n }\n counter++\n }\n\n return willReturn\n}\n","import { type } from './type.js'\n\nexport function isType(xType, x){\n if (arguments.length === 1){\n return xHolder => isType(xType, xHolder)\n }\n\n return type(x) === xType\n}\n","import { isArray } from './_internals/isArray.js'\n\nexport function clone(input){\n const out = isArray(input) ? Array(input.length) : {}\n if (input && input.getTime) return new Date(input.getTime())\n\n for (const key in input){\n const v = input[ key ]\n out[ key ] =\n typeof v === 'object' && v !== null ?\n v.getTime ?\n new Date(v.getTime()) :\n clone(v) :\n v\n }\n\n return out\n}\n","import { type } from './type.js'\n\nexport function isEmpty(input){\n const inputType = type(input)\n if ([ 'Undefined', 'NaN', 'Number', 'Null' ].includes(inputType))\n return false\n if (!input) return true\n\n if (inputType === 'Object'){\n return Object.keys(input).length === 0\n }\n\n if (inputType === 'Array'){\n return input.length === 0\n }\n\n return false\n}\n","export function isNil(x){\n return x === undefined || x === null\n}\n","import {type} from 'rambdax'\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 (type(validationErrors) !== 'Object') {\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 {CleanFunction, SchemaFieldType, SchemaNode, ValidateFunction} from './types/schema'\n\nexport interface FieldTypeOpts<TType = any> {\n name: string\n validate?: ValidateFunction<TType>\n clean?: CleanFunction<TType>\n toGraphQLType?: (GraphQL: any) => any\n meta?: any\n}\n\nexport interface FieldType<TType = any> {\n name: string\n validate: ValidateFunction\n clean: CleanFunction\n meta?: any\n toGraphQLType?: (GraphQL: any) => any\n toSerializedType?: (node: SchemaNode) => Promise<SchemaFieldType>\n __tsFieldType: TType\n __isFieldType: boolean\n}\n\nexport default function fieldType<TType>(opts: FieldTypeOpts<TType>): FieldType<TType> {\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 __tsFieldType: null,\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 Errors from '../Errors'\n\nexport default fieldType<any[]>({\n name: 'array',\n validate(value) {\n if (!Array.isArray(value)) return Errors.NOT_AN_ARRAY\n },\n clean(value, {options}) {\n if (options.autoConvert) {\n if (!Array.isArray(value)) {\n value = [value]\n }\n }\n\n return value\n },\n})\n","import fieldType from '../fieldType'\nimport {type} from 'rambdax'\nimport Errors from '../Errors'\nimport {Blackbox} from '../types'\n\nexport default fieldType<Blackbox>({\n name: 'plainObject',\n validate(value: object) {\n if (type(value) !== 'Object') return Errors.NOT_AN_OBJECT\n },\n clean(value, {type: typeObj, options}) {\n if (type(value) !== 'Object') return value\n\n if (options.filter) {\n const documentKeys = Object.keys(value)\n const schemaKeys = Object.keys(typeObj)\n const notInSchemaKeys = documentKeys.filter(key => !schemaKeys.includes(key))\n for (const key of notInSchemaKeys) {\n delete value[key]\n }\n }\n\n return value\n },\n})\n","import fieldType from '../fieldType'\nimport Errors from '../Errors'\n\nexport default fieldType<string>({\n name: 'string',\n validate(value: string, {currentSchema}) {\n if (typeof value !== 'string') return Errors.NOT_A_STRING\n\n if (Number.isFinite(currentSchema.min)) {\n if (value.length < currentSchema.min) {\n return Errors.STRING_TOO_SHORT\n }\n }\n\n if (Number.isFinite(currentSchema.max)) {\n if (value.length > currentSchema.max) {\n return Errors.STRING_TOO_LONG\n }\n }\n\n if (Array.isArray(currentSchema.allowedValues)) {\n if (!currentSchema.allowedValues.includes(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 Errors from '../Errors'\n\nexport default fieldType<Date>({\n name: 'date',\n validate(value) {\n if (!(value instanceof Date)) return Errors.NOT_A_DATE\n },\n clean(value: Date, {options}) {\n if (options.autoConvert) {\n if (typeof value === 'string') {\n const result = new Date(value)\n if (Number.isNaN(result.getTime())) {\n return value\n }\n\n value = result\n } else if (typeof value === 'number') {\n const result = new Date(value)\n if (Number.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 Errors from '../Errors'\n\nexport default fieldType<number>({\n name: 'number',\n validate(value: number, {currentSchema}) {\n if (!Number.isFinite(value)) return Errors.NOT_A_NUMBER\n\n if (Number.isFinite(currentSchema.min)) {\n if (value < currentSchema.min) {\n return Errors.NUMBER_TOO_SMALL\n }\n }\n\n if (Number.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 = Number(value)\n }\n\n return value\n },\n})\n","import fieldType from '../fieldType'\nimport Errors from '../Errors'\nimport number from './number'\n\nexport default fieldType<number>({\n name: 'integer',\n validate(value: number, info) {\n if (!Number.isInteger(value)) return Errors.NOT_AN_INTEGER\n return number.validate(value, info)\n },\n})\n","import fieldType from '../fieldType'\nimport Errors from '../Errors'\n\nexport default fieldType<string>({\n name: 'ID',\n validate(value: string) {\n if (typeof value !== 'string' && !Number.isInteger(value)) return Errors.NOT_AN_ID\n },\n clean(value: string, {options}) {\n if (typeof value !== 'string' && !Number.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 Errors from '../Errors'\n\nexport default fieldType<boolean>({\n name: 'boolean',\n validate(value) {\n if (typeof value !== 'boolean') return Errors.NOT_A_BOOLEAN\n },\n clean(value, {options}) {\n if (options.autoConvert) {\n if (typeof value === 'string') {\n const stringValue = value as string\n if (stringValue === 'true') {\n value = true\n }\n if (stringValue === '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 {isNil} from 'rambdax'\nimport Errors from '../Errors'\n\nexport default fieldType<string>({\n name: 'email',\n validate(value, {currentSchema}) {\n if ((value === '' || isNil(value)) && !currentSchema.optional) {\n return Errors.REQUIRED\n }\n\n if (value && typeof value !== 'string') 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 {type} from 'rambdax'\nimport Errors from '../Errors'\nimport {Blackbox} from '../types'\n\nexport default fieldType<Blackbox>({\n name: 'blackbox',\n validate(value) {\n if (type(value) !== 'Object') return Errors.NOT_AN_OBJECT\n },\n})\n","import fieldType from '../fieldType'\n\nexport default fieldType<any>({\n name: 'any',\n validate() {},\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 fieldTypes from '../../fieldTypes'\nimport {FieldValidatorType} from '../../types/fieldValidators'\nimport {SchemaFieldType} from '../../types'\nimport {isType} from 'rambdax'\n\nexport default function getFieldValidator(type: SchemaFieldType): FieldValidatorType {\n if (isType('Object', type)) {\n if ((type as any).__isFieldType) return 'custom'\n return 'plainObject'\n }\n if (Array.isArray(type)) return 'array'\n\n if (type === String) return 'string'\n if (typeof type === 'function' && type.name === 'Date') return 'date'\n if (type === Number) return 'number'\n if (type === Boolean) return 'boolean'\n if (type === 'enum') return 'string'\n\n if (typeof type !== 'string') {\n throw new Error(`Field type is invalid. Pass a string or a custom field type. Got ${type}`)\n }\n\n const exists = fieldTypes[type]\n\n if (!exists) {\n throw new Error(`Field type does not exist. Got ${type}`)\n }\n\n return type as FieldValidatorType\n}\n","import getFieldValidator from './getValidationErrors/getError/getFieldValidator'\nimport {Schema, SchemaFieldType, SchemaFieldTypeNonSchema, SchemaWithMetadata} from './types'\n\n// @ts-ignore polyfill for Symbol.metadata\nSymbol.metadata ??= Symbol('Symbol.metadata')\n\nexport function isSchemaLike(type: any): boolean {\n if (!type) return false\n\n if (objectHasSubObjectWithKey(type, 'type')) return true\n if (type?.[Symbol.metadata]?._getModel) return true\n if (type.getModel) return true\n if (type.getSchema) return true\n if (type.getCleanSchema) return true\n if (type.__isModel) return true\n if (type.__modelName) return true\n\n return false\n}\n\nexport function isStrictSchemaLike<TType extends Schema | SchemaFieldTypeNonSchema>(\n type: TType,\n): TType extends Schema ? true : false {\n if (isSchemaLike(type)) return true as any\n return false as any\n}\n\nexport function isSchemaOrFieldLike(type: any): boolean {\n if (Array.isArray(type)) {\n if (type.length !== 1) return false\n return isSchemaOrFieldLike(type[0])\n }\n\n if (isSchemaLike(type)) return true\n try {\n if (getFieldValidator(type)) return true\n } catch {\n return false\n }\n\n return false\n}\n\nexport function getSchemaModelName(type: any): string | null {\n if (!type) return null\n if (type.__modelName) return type.__modelName\n if (type.getModel) return type.getModel().name\n if (type.getSchema) return type.getSchema().__modelName\n return null\n}\n\nexport function getSchemaFromAnyOrionForm(type: any): SchemaFieldType {\n if (!type) return type\n\n if (type?.[Symbol.metadata]?._getModel) {\n return type?.[Symbol.metadata]?._getModel().getSchema()\n }\n if (type?.getModel) return type.getModel().getSchema()\n\n if (type.getSchema) {\n return type.getSchema()\n }\n\n // if (objectHasSubObjectWithKey(type, 'type')) return type // ya es un schema\n\n return type\n}\n\nfunction objectHasSubObjectWithKey(object: any, key: string) {\n if (!object || typeof object !== 'object') return false\n\n for (const key1 in object) {\n const value = object[key1]\n if (value && typeof value === 'object' && key in value) {\n return true\n }\n }\n\n return false\n}\n\nexport function getSchemaWithMetadataFromAnyOrionForm(type: any): SchemaWithMetadata {\n return getSchemaFromAnyOrionForm(type) as SchemaWithMetadata\n}\n","import getFieldValidator from './getFieldValidator'\nimport fieldTypes from '../../fieldTypes'\nimport Errors from '../../Errors'\nimport {CurrentNodeInfo, SchemaRecursiveNodeTypeExtras} from '../../types/schema'\nimport {FieldType} from '../../fieldType'\nimport {isNil} from 'rambdax'\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 {getSchemaFromAnyOrionForm} from '../models'\nimport {CurrentNodeInfo} from '../types/schema'\n\nconst convertOnParam = (info: CurrentNodeInfo, paramName: string) => {\n if (!info[paramName]) return\n\n const type = info[paramName].type as any\n if (!type) return\n\n info[paramName].type = getSchemaFromAnyOrionForm(type)\n}\n\nexport const convertTypedSchema = (info: CurrentNodeInfo) => {\n convertOnParam(info, 'schema')\n convertOnParam(info, 'currentSchema')\n}\n","import {isType, clone as cloneRambdax} from 'rambdax'\n\nexport function clone<T>(value: T): T {\n if (isType('Object', value)) {\n return cloneRambdax(value)\n }\n\n if (Array.isArray(value)) {\n return cloneRambdax(value)\n }\n\n return value\n}\n","import getError from './getError'\nimport Errors from '../Errors'\nimport {CurrentNodeInfo, SchemaNode, SchemaRecursiveNodeTypeExtras} from '../types/schema'\nimport {convertTypedSchema} from './convertTypedSchema'\nimport {isNil, type} from 'rambdax'\nimport {clone} from '../clone'\n\nexport default async function doValidation(params: CurrentNodeInfo) {\n convertTypedSchema(params)\n\n const {schema, doc, currentDoc, value, currentSchema, keys = [], addError, options, args} = params\n const info = {\n schema,\n doc,\n currentDoc,\n value,\n currentSchema,\n keys,\n options,\n args,\n addError,\n }\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 (type(currentSchema.type) === 'Object') {\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 } as any)\n }\n\n const documentKeys = Object.keys(value)\n const notInSchemaKeys = documentKeys.filter(key => !schemaKeys.includes(key))\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 (Array.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 {getSchemaFromAnyOrionForm} from '../models'\nimport {InferSchemaType} from '../types'\nimport {SchemaFieldType} from '../types/schema'\nimport doValidation from './doValidation'\nimport getValidationErrorsObject from './getValidationErrorsObject'\n\nconst defaultOptions = {\n omitRequired: false,\n}\n\nexport default async function getValidationErrors<TSchema extends SchemaFieldType>(\n schema: TSchema,\n doc: InferSchemaType<TSchema>,\n passedOptions = {},\n ...args\n) {\n schema = getSchemaFromAnyOrionForm(schema) as TSchema\n\n const options = {...defaultOptions, ...passedOptions}\n const errors: {key: string; code: string}[] = []\n\n const addError = (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 {InferSchemaType} from './types/fields'\nimport {SchemaFieldType} from './types/schema'\n\nexport default async function validate<TSchema extends SchemaFieldType>(\n schema: TSchema,\n doc: InferSchemaType<TSchema>,\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 {InferSchemaType} from './types'\nimport {Schema} from './types/schema'\n\nexport default async function isValid<TSchema extends Schema>(\n schema: TSchema,\n doc: InferSchemaType<TSchema>,\n passedOptions = {},\n ...args\n) {\n const validationErrors = await getValidationErrors(schema, doc, passedOptions, ...args)\n return !validationErrors\n}\n","import getFieldValidator from './getFieldValidator'\nimport fieldTypes from '../../fieldTypes'\nimport {SchemaFieldType} from '../../types/schema'\nimport {FieldValidatorType} from '../../types/fieldValidators'\nimport {FieldType} from '../../fieldType'\n\nexport default function getFieldType(type: SchemaFieldType | FieldValidatorType | any) {\n const validatorKey = getFieldValidator(type)\n const validator = validatorKey === 'custom' ? type : fieldTypes[validatorKey]\n return validator as FieldType\n}\n","import {type} from 'rambdax'\nimport {SchemaNode} from '../types/schema'\n\nexport default function getObjectNode(schema: Partial<SchemaNode>, value: any): SchemaNode {\n if (type(schema.type) === 'Object' && type(value) === 'Object') {\n const result = schema as any\n return result\n }\n\n return null\n}\n","import getFieldType from '../getValidationErrors/getError/getFieldType'\nimport {isNil} from 'rambdax'\nimport {CurrentNodeInfo, SchemaFieldType, SchemaNode, SchemaMetadata, Schema} from '../types/schema'\nimport {FieldValidatorType} from '../types/fieldValidators'\nimport getObjectNode from './getObjectNode'\n\nexport default async function cleanType<TSchema extends Schema>(\n type: SchemaFieldType | FieldValidatorType,\n fieldSchema: Partial<SchemaNode>,\n value: any,\n info: CurrentNodeInfo<TSchema>,\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 SchemaMetadata).__clean) {\n needReClean = true\n value = await (objectTypeSchema.type as SchemaMetadata).__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 {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 {isNil} from 'rambdax'\nimport cleanType from './cleanType'\nimport {CurrentNodeInfo, SchemaNode} from '../types/schema'\nimport getObjectNode from './getObjectNode'\nimport {convertTypedSchema} from '../getValidationErrors/convertTypedSchema'\n\nconst cleanObjectFields = async ({\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 (newValue !== undefined) {\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 ({\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: any) => {\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 => value !== undefined)\n}\n\nfunction getArrayNode(\n schema: Partial<SchemaNode>,\n value: any | Array<any>,\n): SchemaNode | undefined {\n if (Array.isArray(schema.type) && !isNil(value)) {\n const result = schema as SchemaNode\n return result\n }\n\n return null\n}\n\nconst clean = async (info: CurrentNodeInfo): Promise<any> => {\n convertTypedSchema(info)\n\n const {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 (!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 {getSchemaFromAnyOrionForm} from '../models'\nimport {InferSchemaType} from '../types'\nimport {CurrentNodeInfoOptions, SchemaFieldType} 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<TSchema extends SchemaFieldType>(\n schema: TSchema,\n doc: InferSchemaType<TSchema>,\n opts: CurrentNodeInfoOptions = {},\n ...args\n): Promise<InferSchemaType<TSchema>> {\n if (!doc) return doc\n schema = getSchemaFromAnyOrionForm(schema) as TSchema\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\n const cleanedResult = await recursiveClean(params as any)\n return cleanedResult\n}\n","import {Schema, SchemaNode} from '..'\nimport {isType, isNil} from 'rambdax'\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 }\n\n if (isType('Object', 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 }\n return null\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 Errors from '../Errors'\n\nexport default function createEnum<const TValues extends readonly string[]>(\n name: string,\n values: TValues,\n): FieldType<TValues[number]> {\n return 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 (typeof value !== 'string') return Errors.NOT_A_STRING\n\n if (!values.includes(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","import {createEnum} from '..'\nimport {FieldType} from '../fieldType'\nimport {Blackbox, Schema, SchemaMetaFieldTypeSingleNonSchema, TypedSchemaOnSchema} from './schema'\n\ntype InferSchemaTypeForFieldType<T> =\n // field type with setted _tsFieldType\n T extends {__tsFieldType: infer U}\n ? U\n : // typed as strings\n T extends 'string'\n ? string\n : T extends 'date'\n ? Date\n : T extends 'integer'\n ? number\n : T extends 'number'\n ? number\n : T extends 'ID'\n ? string\n : T extends 'boolean'\n ? boolean\n : T extends 'email'\n ? string\n : T extends 'blackbox'\n ? Blackbox\n : T extends 'any'\n ? any\n : // typed as object constructors (Like String, Number, Boolean, Date)\n T extends String\n ? string\n : T extends Number\n ? number\n : T extends Boolean\n ? boolean\n : T extends Date\n ? Date\n : T extends StringConstructor\n ? string\n : T extends NumberConstructor\n ? number\n : T extends BooleanConstructor\n ? boolean\n : T extends DateConstructor\n ? Date\n : // if is array, return infer the first element recursively\n T extends Array<infer U>\n ? InferSchemaTypeForFieldType<U>[]\n : // if is object, asume it's a schema and infer the type of the object\n T extends Record<string, any>\n ? InferSchemaTypeForSchema<T>\n : T\n\ntype SchemaKeysNotOfSchemaItems = '__isFieldType' | '__GraphQLType' | '__skipChildValidation'\n\ntype NodeIsOptional<TNode> = TNode extends {optional: true} ? true : false\n\n// esto hace que haya un infinity loopp\n// type NodeIsOptional<TNode> = TNode extends {optional: true}\n// ? true\n// : TNode extends {defaultValue: any}\n// ? true\n// : false\n\ntype WithoutNotSchemaItems<T extends Record<string, any>> = T extends {\n [key in SchemaKeysNotOfSchemaItems]: any\n} & Record<string, any>\n ? Omit<T, SchemaKeysNotOfSchemaItems>\n : T\n\ntype InferSchemaTypeForSchema<TSchema extends Record<string, any>> = WithoutNotSchemaItems<\n {\n -readonly [K in keyof TSchema as NodeIsOptional<TSchema[K]> extends true\n ? never\n : K]: InferSchemaType<TSchema[K]['type']>\n } & {\n -readonly [K in keyof TSchema as NodeIsOptional<TSchema[K]> extends true\n ? K\n : never]?: InferSchemaType<TSchema[K]['type']>\n }\n>\n\n// is a record with a child item that has type in its type\ntype IsPossiblyASchema<TType> = TType extends FieldType\n ? false\n : TType extends Record<string, any>\n ? keyof {\n [K in keyof TType as 'type' extends keyof TType[K] ? K : never]: TType[K]\n } extends never\n ? false\n : true\n : false\n\ntype AClass<T = any> = abstract new (...args: any) => T\n\n/**\n * Returns the type of the schema\n */\nexport type InferSchemaType<TType> = TType extends {__isModel: true; type: infer U}\n ? InferSchemaTypeForSchema<U>\n : TType extends SchemaMetaFieldTypeSingleNonSchema\n ? InferSchemaTypeForFieldType<TType>\n : TType extends AClass<infer U>\n ? U\n : IsPossiblyASchema<TType> extends true\n ? InferSchemaTypeForSchema<TType>\n : InferSchemaTypeForFieldType<TType>\n\n/**\n * Returns the type of the schema but only if its a schema\n */\nexport type StrictInferSchemaType<TSchema extends Schema> = InferSchemaTypeForSchema<TSchema>\n/**\n * Returns the type of the schema but only if its a schema\n */\nexport type InferSchemaTypeFromTypedSchema<TTypedSchema extends TypedSchemaOnSchema> = TTypedSchema\n\nconst subSchema = {\n name: {\n type: String,\n },\n}\n\nconst schema = {\n filter: {\n type: String,\n },\n sub: {\n type: subSchema,\n },\n gender: {\n type: createEnum('gender', ['male', 'female']),\n },\n page: {\n type: 'integer',\n defaultValue: 1,\n min: 1,\n },\n limit: {\n type: 'integer',\n defaultValue: 0,\n min: 0,\n max: 200,\n },\n sortBy: {\n type: String,\n optional: true,\n },\n sortType: {\n type: String,\n allowedValues: ['asc', 'desc'],\n optional: true,\n },\n} as const\n\ntype _ = InferSchemaType<typeof schema>\n\nconst _a: _ = {\n filter: '123',\n gender: 'male',\n sub: {\n name: '123',\n },\n limit: 1,\n page: 1,\n}\n\ntype _2 = NodeIsOptional<(typeof schema)['sortType']>\n","import {InferSchemaType, SchemaFieldType} from './types'\nimport clean from './clean'\nimport validate from './validate'\n\nexport async function cleanAndValidate<TSchema extends SchemaFieldType>(\n schema: TSchema,\n doc: InferSchemaType<TSchema>,\n): Promise<InferSchemaType<TSchema>> {\n const cleaned = await clean(schema, doc)\n await validate(schema, cleaned)\n return cleaned\n}\n","// import {ModelResolver, ModelResolverResolve} from '@orion-js/resolvers'\n\nimport {Schema} from '../types'\n\n/**\n * Assigns a name to a schema for GraphQL type generation.\n *\n * This function associates a name with a schema object by setting an internal\n * `__modelName` property. This name is used when generating GraphQL types.\n *\n * @param name - The name to assign to the schema\n * @param schema - The schema object to name\n * @returns The same schema object with the internal name property added\n *\n * Note: The schema object is modified in-place, so the name will persist\n * even if you don't use the returned value.\n */\nexport function schemaWithName<TModelName extends string, TSchema extends Schema>(\n name: TModelName,\n schema: TSchema,\n): TSchema {\n // @ts-ignore Internal property not included in type definition\n schema.__modelName = name\n return schema\n}\n","import {isEmpty, pick} from 'rambdax'\nimport {Schema, SchemaNode} from './types'\n\nexport type CloneSchemaOptions<\n TSchema extends Schema,\n TExtendFields extends Schema | undefined = undefined,\n TPickFields extends (keyof TSchema)[] | undefined = undefined,\n TOmitFields extends (keyof TSchema)[] | undefined = undefined,\n> = {\n /**\n * The schema to clone\n */\n schema: TSchema\n /**\n * The name of the cloned schema\n */\n name?: string\n /**\n * The schema to extend the cloned schema with\n */\n extendSchema?: TExtendFields\n /**\n * A function to map the fields of the cloned schema.\n * Warning: This function will not be applied to the typescript types of this schema.\n */\n mapFields?: (field: TSchema[keyof TSchema], key: keyof TSchema) => SchemaNode\n /**\n * The fields to pick from the cloned schema\n */\n pickFields?: TPickFields\n /**\n * The fields to omit from the cloned schema\n */\n omitFields?: TOmitFields\n}\n\n// TExtendFields should replace TSchema if present\ntype ExtendFields<\n TSchema extends Schema,\n TExtendFields extends Schema | undefined,\n> = TExtendFields extends undefined\n ? TSchema\n : {\n [key in keyof (TSchema & TExtendFields)]: key extends keyof TExtendFields\n ? TExtendFields[key]\n : key extends keyof TSchema\n ? TSchema[key]\n : never\n }\n\ntype PickOrOmit<\n TSchema extends Schema,\n TPickFields extends (keyof TSchema)[] | undefined = undefined,\n TOmitFields extends (keyof TSchema)[] | undefined = undefined,\n> = TPickFields extends undefined\n ? TOmitFields extends undefined\n ? TSchema\n : Omit<TSchema, TOmitFields[number]>\n : Pick<TSchema, TPickFields[number]>\n\nexport type ClonedSchema<\n TSchema extends Schema,\n TExtendFields extends Schema | undefined = undefined,\n TPickFields extends (keyof TSchema)[] | undefined = undefined,\n TOmitFields extends (keyof TSchema)[] | undefined = undefined,\n> = ExtendFields<PickOrOmit<TSchema, TPickFields, TOmitFields>, TExtendFields>\n\nexport function cloneSchema<\n TSchema extends Schema,\n TExtendFields extends Schema | undefined = undefined,\n TPickFields extends (keyof TSchema)[] | undefined = undefined,\n TOmitFields extends (keyof TSchema)[] | undefined = undefined,\n>(\n options: CloneSchemaOptions<TSchema, TExtendFields, TPickFields, TOmitFields>,\n): ClonedSchema<TSchema, TExtendFields, TPickFields, TOmitFields> {\n const {schema, extendSchema, mapFields, pickFields, omitFields} = options\n\n const originalMetaKeys = Object.keys(schema).filter(key => key.startsWith('__'))\n const originalMetaFields = pick(originalMetaKeys, schema)\n\n const cloned = {...schema} as any\n\n if (pickFields?.length) {\n for (const key in cloned) {\n if (!pickFields.includes(key)) {\n delete cloned[key]\n }\n }\n }\n\n if (omitFields?.length) {\n for (const key in cloned) {\n if (omitFields.includes(key)) {\n delete cloned[key]\n }\n }\n }\n\n if (!isEmpty(extendSchema)) {\n for (const key in extendSchema) {\n cloned[key] = extendSchema[key]\n }\n }\n\n if (mapFields) {\n for (const key in cloned) {\n cloned[key] = mapFields(cloned[key], key)\n }\n }\n\n for (const key of originalMetaKeys) {\n if (originalMetaFields[key]) {\n cloned[key] = originalMetaFields[key]\n }\n }\n\n if (options.name) {\n cloned.__modelName = options.name\n }\n\n return cloned\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA,eAAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA,sBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6BAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAO,SAAS,KAAK,OAAM;AACzB,MAAI,UAAU,MAAK;AACjB,WAAO;AAAA,EACT,WAAW,UAAU,QAAU;AAC7B,WAAO;AAAA,EACT,WAAW,OAAO,MAAM,KAAK,GAAE;AAC7B,WAAO;AAAA,EACT;AACA,QAAM,aAAa,OAAO,UAAU,SAAS,KAAK,KAAK,EAAE,MAAM,GAAG,EAAE;AAEpE,SAAO,eAAe,kBAAkB,YAAY;AACtD;;;ACXO,IAAM,EAAE,QAAQ,IAAI;;;ACA3B,SAAS,WAAW,GAAE;AACpB,SAAO,KAAK,MAAM;AACpB;AAEO,IAAM,YAAY,OAAO,aAAa;;;ACFtC,SAAS,WAAW,MAAM,YAAY,KAAI;AAC/C,SAAO,OAAO,SAAS,WACrB,KAAK,MAAM,SAAS,EAAE,IAAI,OAAK,UAAU,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,IAC3D;AACJ;;;ACJO,SAAS,KAAK,aAAa,OAAM;AACtC,MAAI,UAAU,WAAW,EAAG,QAAO,YAAU,KAAK,aAAa,MAAM;AAErE,MAAI,UAAU,QAAQ,UAAU,QAAU;AACxC,WAAO;AAAA,EACT;AACA,QAAM,OAAO,WAAW,aAAa,GAAG;AACxC,QAAM,aAAa,CAAC;AACpB,MAAI,UAAU;AAEd,SAAO,UAAU,KAAK,QAAO;AAC3B,QAAI,KAAM,OAAQ,KAAK,OAAM;AAC3B,iBAAY,KAAM,OAAQ,CAAE,IAAI,MAAO,KAAM,OAAQ,CAAE;AAAA,IACzD;AACA;AAAA,EACF;AAEA,SAAO;AACT;;;AClBO,SAAS,OAAO,OAAO,GAAE;AAC9B,MAAI,UAAU,WAAW,GAAE;AACzB,WAAO,aAAW,OAAO,OAAO,OAAO;AAAA,EACzC;AAEA,SAAO,KAAK,CAAC,MAAM;AACrB;;;ACNO,SAAS,MAAM,OAAM;AAC1B,QAAM,MAAM,QAAQ,KAAK,IAAI,MAAM,MAAM,MAAM,IAAI,CAAC;AACpD,MAAI,SAAS,MAAM,QAAS,QAAO,IAAI,KAAK,MAAM,QAAQ,CAAC;AAE3D,aAAW,OAAO,OAAM;AACtB,UAAM,IAAI,MAAO,GAAI;AACrB,QAAK,GAAI,IACP,OAAO,MAAM,YAAY,MAAM,OAC7B,EAAE,UACA,IAAI,KAAK,EAAE,QAAQ,CAAC,IACpB,MAAM,CAAC,IACT;AAAA,EACN;AAEA,SAAO;AACT;;;ACfO,SAAS,QAAQ,OAAM;AAC5B,QAAM,YAAY,KAAK,KAAK;AAC5B,MAAI,CAAE,aAAa,OAAO,UAAU,MAAO,EAAE,SAAS,SAAS;AAC7D,WAAO;AACT,MAAI,CAAC,MAAO,QAAO;AAEnB,MAAI,cAAc,UAAS;AACzB,WAAO,OAAO,KAAK,KAAK,EAAE,WAAW;AAAA,EACvC;AAEA,MAAI,cAAc,SAAQ;AACxB,WAAO,MAAM,WAAW;AAAA,EAC1B;AAEA,SAAO;AACT;;;ACjBO,SAAS,MAAM,GAAE;AACtB,SAAO,MAAM,UAAa,MAAM;AAClC;;;ACMA,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,KAAK,gBAAgB,MAAM,UAAU;AACvC,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;;;ACvCe,SAAR,UAAkC,MAA8C;AACrF,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,eAAe;AAAA,IACf,eAAe;AAAA,EACjB;AACF;;;ACjDA,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;;;AChBA,IAAO,gBAAQ,UAAiB;AAAA,EAC9B,MAAM;AAAA,EACN,SAAS,OAAO;AACd,QAAI,CAAC,MAAM,QAAQ,KAAK,EAAG,QAAO,eAAO;AAAA,EAC3C;AAAA,EACA,MAAM,OAAO,EAAC,QAAO,GAAG;AACtB,QAAI,QAAQ,aAAa;AACvB,UAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AACzB,gBAAQ,CAAC,KAAK;AAAA,MAChB;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AACF,CAAC;;;ACZD,IAAO,sBAAQ,UAAoB;AAAA,EACjC,MAAM;AAAA,EACN,SAAS,OAAe;AACtB,QAAI,KAAK,KAAK,MAAM,SAAU,QAAO,eAAO;AAAA,EAC9C;AAAA,EACA,MAAM,OAAO,EAAC,MAAM,SAAS,QAAO,GAAG;AACrC,QAAI,KAAK,KAAK,MAAM,SAAU,QAAO;AAErC,QAAI,QAAQ,QAAQ;AAClB,YAAM,eAAe,OAAO,KAAK,KAAK;AACtC,YAAM,aAAa,OAAO,KAAK,OAAO;AACtC,YAAM,kBAAkB,aAAa,OAAO,SAAO,CAAC,WAAW,SAAS,GAAG,CAAC;AAC5E,iBAAW,OAAO,iBAAiB;AACjC,eAAO,MAAM,GAAG;AAAA,MAClB;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AACF,CAAC;;;ACrBD,IAAO,iBAAQ,UAAkB;AAAA,EAC/B,MAAM;AAAA,EACN,SAAS,OAAe,EAAC,cAAa,GAAG;AACvC,QAAI,OAAO,UAAU,SAAU,QAAO,eAAO;AAE7C,QAAI,OAAO,SAAS,cAAc,GAAG,GAAG;AACtC,UAAI,MAAM,SAAS,cAAc,KAAK;AACpC,eAAO,eAAO;AAAA,MAChB;AAAA,IACF;AAEA,QAAI,OAAO,SAAS,cAAc,GAAG,GAAG;AACtC,UAAI,MAAM,SAAS,cAAc,KAAK;AACpC,eAAO,eAAO;AAAA,MAChB;AAAA,IACF;AAEA,QAAI,MAAM,QAAQ,cAAc,aAAa,GAAG;AAC9C,UAAI,CAAC,cAAc,cAAc,SAAS,KAAK,GAAG;AAChD,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;;;AC1CD,IAAO,eAAQ,UAAgB;AAAA,EAC7B,MAAM;AAAA,EACN,SAAS,OAAO;AACd,QAAI,EAAE,iBAAiB,MAAO,QAAO,eAAO;AAAA,EAC9C;AAAA,EACA,MAAM,OAAa,EAAC,QAAO,GAAG;AAC5B,QAAI,QAAQ,aAAa;AACvB,UAAI,OAAO,UAAU,UAAU;AAC7B,cAAM,SAAS,IAAI,KAAK,KAAK;AAC7B,YAAI,OAAO,MAAM,OAAO,QAAQ,CAAC,GAAG;AAClC,iBAAO;AAAA,QACT;AAEA,gBAAQ;AAAA,MACV,WAAW,OAAO,UAAU,UAAU;AACpC,cAAM,SAAS,IAAI,KAAK,KAAK;AAC7B,YAAI,OAAO,MAAM,OAAO,QAAQ,CAAC,GAAG;AAClC,iBAAO;AAAA,QACT;AAEA,gBAAQ;AAAA,MACV;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AACF,CAAC;;;AC1BD,IAAO,iBAAQ,UAAkB;AAAA,EAC/B,MAAM;AAAA,EACN,SAAS,OAAe,EAAC,cAAa,GAAG;AACvC,QAAI,CAAC,OAAO,SAAS,KAAK,EAAG,QAAO,eAAO;AAE3C,QAAI,OAAO,SAAS,cAAc,GAAG,GAAG;AACtC,UAAI,QAAQ,cAAc,KAAK;AAC7B,eAAO,eAAO;AAAA,MAChB;AAAA,IACF;AAEA,QAAI,OAAO,SAAS,cAAc,GAAG,GAAG;AACtC,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,cAAQ,OAAO,KAAK;AAAA,IACtB;AAEA,WAAO;AAAA,EACT;AACF,CAAC;;;ACvBD,IAAO,kBAAQ,UAAkB;AAAA,EAC/B,MAAM;AAAA,EACN,SAAS,OAAe,MAAM;AAC5B,QAAI,CAAC,OAAO,UAAU,KAAK,EAAG,QAAO,eAAO;AAC5C,WAAO,eAAO,SAAS,OAAO,IAAI;AAAA,EACpC;AACF,CAAC;;;ACPD,IAAO,aAAQ,UAAkB;AAAA,EAC/B,MAAM;AAAA,EACN,SAAS,OAAe;AACtB,QAAI,OAAO,UAAU,YAAY,CAAC,OAAO,UAAU,KAAK,EAAG,QAAO,eAAO;AAAA,EAC3E;AAAA,EACA,MAAM,OAAe,EAAC,QAAO,GAAG;AAC9B,QAAI,OAAO,UAAU,YAAY,CAAC,OAAO,UAAU,KAAK,EAAG,QAAO;AAClE,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;;;ACrBD,IAAO,kBAAQ,UAAmB;AAAA,EAChC,MAAM;AAAA,EACN,SAAS,OAAO;AACd,QAAI,OAAO,UAAU,UAAW,QAAO,eAAO;AAAA,EAChD;AAAA,EACA,MAAM,OAAO,EAAC,QAAO,GAAG;AACtB,QAAI,QAAQ,aAAa;AACvB,UAAI,OAAO,UAAU,UAAU;AAC7B,cAAM,cAAc;AACpB,YAAI,gBAAgB,QAAQ;AAC1B,kBAAQ;AAAA,QACV;AACA,YAAI,gBAAgB,SAAS;AAC3B,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;;;AC1BD,IAAO,gBAAQ,UAAkB;AAAA,EAC/B,MAAM;AAAA,EACN,SAAS,OAAO,EAAC,cAAa,GAAG;AAC/B,SAAK,UAAU,MAAM,MAAM,KAAK,MAAM,CAAC,cAAc,UAAU;AAC7D,aAAO,eAAO;AAAA,IAChB;AAEA,QAAI,SAAS,OAAO,UAAU,SAAU,QAAO,eAAO;AAGtD,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;;;ACrBD,IAAO,mBAAQ,UAAoB;AAAA,EACjC,MAAM;AAAA,EACN,SAAS,OAAO;AACd,QAAI,KAAK,KAAK,MAAM,SAAU,QAAO,eAAO;AAAA,EAC9C;AACF,CAAC;;;ACRD,IAAO,cAAQ,UAAe;AAAA,EAC5B,MAAM;AAAA,EACN,WAAW;AAAA,EAAC;AACd,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;;;ACnBe,SAAR,kBAAmCC,OAA2C;AACnF,MAAI,OAAO,UAAUA,KAAI,GAAG;AAC1B,QAAKA,MAAa,cAAe,QAAO;AACxC,WAAO;AAAA,EACT;AACA,MAAI,MAAM,QAAQA,KAAI,EAAG,QAAO;AAEhC,MAAIA,UAAS,OAAQ,QAAO;AAC5B,MAAI,OAAOA,UAAS,cAAcA,MAAK,SAAS,OAAQ,QAAO;AAC/D,MAAIA,UAAS,OAAQ,QAAO;AAC5B,MAAIA,UAAS,QAAS,QAAO;AAC7B,MAAIA,UAAS,OAAQ,QAAO;AAE5B,MAAI,OAAOA,UAAS,UAAU;AAC5B,UAAM,IAAI,MAAM,oEAAoEA,KAAI,EAAE;AAAA,EAC5F;AAEA,QAAM,SAAS,mBAAWA,KAAI;AAE9B,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI,MAAM,kCAAkCA,KAAI,EAAE;AAAA,EAC1D;AAEA,SAAOA;AACT;;;ACzBA,OAAO,aAAP,OAAO,WAAa,OAAO,iBAAiB;AAErC,SAAS,aAAaC,OAAoB;AANjD;AAOE,MAAI,CAACA,MAAM,QAAO;AAElB,MAAI,0BAA0BA,OAAM,MAAM,EAAG,QAAO;AACpD,OAAI,KAAAA,SAAA,gBAAAA,MAAO,OAAO,cAAd,mBAAyB,UAAW,QAAO;AAC/C,MAAIA,MAAK,SAAU,QAAO;AAC1B,MAAIA,MAAK,UAAW,QAAO;AAC3B,MAAIA,MAAK,eAAgB,QAAO;AAChC,MAAIA,MAAK,UAAW,QAAO;AAC3B,MAAIA,MAAK,YAAa,QAAO;AAE7B,SAAO;AACT;AAEO,SAAS,mBACdA,OACqC;AACrC,MAAI,aAAaA,KAAI,EAAG,QAAO;AAC/B,SAAO;AACT;AAEO,SAAS,oBAAoBA,OAAoB;AACtD,MAAI,MAAM,QAAQA,KAAI,GAAG;AACvB,QAAIA,MAAK,WAAW,EAAG,QAAO;AAC9B,WAAO,oBAAoBA,MAAK,CAAC,CAAC;AAAA,EACpC;AAEA,MAAI,aAAaA,KAAI,EAAG,QAAO;AAC/B,MAAI;AACF,QAAI,kBAAkBA,KAAI,EAAG,QAAO;AAAA,EACtC,QAAQ;AACN,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEO,SAAS,mBAAmBA,OAA0B;AAC3D,MAAI,CAACA,MAAM,QAAO;AAClB,MAAIA,MAAK,YAAa,QAAOA,MAAK;AAClC,MAAIA,MAAK,SAAU,QAAOA,MAAK,SAAS,EAAE;AAC1C,MAAIA,MAAK,UAAW,QAAOA,MAAK,UAAU,EAAE;AAC5C,SAAO;AACT;AAEO,SAAS,0BAA0BA,OAA4B;AAnDtE;AAoDE,MAAI,CAACA,MAAM,QAAOA;AAElB,OAAI,KAAAA,SAAA,gBAAAA,MAAO,OAAO,cAAd,mBAAyB,WAAW;AACtC,YAAO,KAAAA,SAAA,gBAAAA,MAAO,OAAO,cAAd,mBAAyB,YAAY;AAAA,EAC9C;AACA,MAAIA,SAAA,gBAAAA,MAAM,SAAU,QAAOA,MAAK,SAAS,EAAE,UAAU;AAErD,MAAIA,MAAK,WAAW;AAClB,WAAOA,MAAK,UAAU;AAAA,EACxB;AAIA,SAAOA;AACT;AAEA,SAAS,0BAA0B,QAAa,KAAa;AAC3D,MAAI,CAAC,UAAU,OAAO,WAAW,SAAU,QAAO;AAElD,aAAW,QAAQ,QAAQ;AACzB,UAAM,QAAQ,OAAO,IAAI;AACzB,QAAI,SAAS,OAAO,UAAU,YAAY,OAAO,OAAO;AACtD,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AACT;AAEO,SAAS,sCAAsCA,OAA+B;AACnF,SAAO,0BAA0BA,KAAI;AACvC;;;AC5EA,eAAO,oBACL,QACiC;AACjC,QAAM,EAAC,QAAAC,SAAQ,KAAK,YAAY,OAAO,eAAe,MAAM,UAAU,CAAC,GAAG,OAAO,CAAC,EAAC,IAAI;AACvF,QAAM,OAAO,EAAC,QAAAA,SAAQ,KAAK,YAAY,MAAM,eAAe,QAAO;AAEnE,MAAI,MAAM,KAAK,GAAG;AAChB,QAAI,CAAC,cAAc,YAAY,CAAC,QAAQ,cAAc;AACpD,aAAO,eAAO;AAAA,IAChB;AAAA,EACF,OAAO;AACL,UAAM,eAAe,kBAAkB,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,QAAMC,QAAO,cAAc;AAE3B,MAAIA,MAAK,YAAY;AACnB,UAAM,YAAY,MAAMA,MAAK,WAAW,OAAO,MAAM,GAAG,IAAI;AAC5D,QAAI,WAAW;AACb,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AACT;;;AC7CA,IAAM,iBAAiB,CAAC,MAAuB,cAAsB;AACnE,MAAI,CAAC,KAAK,SAAS,EAAG;AAEtB,QAAMC,QAAO,KAAK,SAAS,EAAE;AAC7B,MAAI,CAACA,MAAM;AAEX,OAAK,SAAS,EAAE,OAAO,0BAA0BA,KAAI;AACvD;AAEO,IAAM,qBAAqB,CAAC,SAA0B;AAC3D,iBAAe,MAAM,QAAQ;AAC7B,iBAAe,MAAM,eAAe;AACtC;;;ACbO,SAASC,OAAS,OAAa;AACpC,MAAI,OAAO,UAAU,KAAK,GAAG;AAC3B,WAAO,MAAa,KAAK;AAAA,EAC3B;AAEA,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAO,MAAa,KAAK;AAAA,EAC3B;AAEA,SAAO;AACT;;;ACLA,eAAO,aAAoC,QAAyB;AAClE,qBAAmB,MAAM;AAEzB,QAAM,EAAC,QAAAC,SAAQ,KAAK,YAAY,OAAO,eAAe,OAAO,CAAC,GAAG,UAAU,SAAS,KAAI,IAAI;AAC5F,QAAM,OAAO;AAAA,IACX,QAAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,QAAM,QAAQ,MAAM,oBAAS,IAAI;AACjC,MAAI,OAAO;AACT,aAAS,MAAM,KAAK;AACpB;AAAA,EACF;AAEA,MAAI,MAAM,KAAK,EAAG;AAKlB,MAAI,KAAK,cAAc,IAAI,MAAM,UAAU;AACzC,UAAMC,QAAO,cAAc;AAE3B,QAAIA,OAAM;AACR,UAAIA,MAAK,eAAe;AACtB;AAAA,MACF;AAEA,UAAI,OAAOA,MAAK,0BAA0B,YAAY;AACpD,YAAI,MAAMA,MAAK,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,cAAcC,OAAM,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,CAAQ;AAAA,IACV;AAEA,UAAM,eAAe,OAAO,KAAK,KAAK;AACtC,UAAM,kBAAkB,aAAa,OAAO,SAAO,CAAC,WAAW,SAAS,GAAG,CAAC;AAC5E,eAAW,OAAO,iBAAiB;AACjC,YAAM,cAAcA,OAAM,IAAI;AAC9B,kBAAY,KAAK,GAAG;AACpB,eAAS,aAAa,eAAO,aAAa;AAAA,IAC5C;AAAA,EACF,WAAW,MAAM,QAAQ,cAAc,IAAI,GAAG;AAC5C,UAAM,aAAa,cAAc,KAAK,CAAC;AACvC,aAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,YAAM,YAAY,MAAM,CAAC;AACzB,YAAM,cAAcA,OAAM,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;;;ACtFA,wBAAgB;AAEhB,IAAM,MAAM,IAAI,kBAAAC,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;;;ACRA,IAAM,iBAAiB;AAAA,EACrB,cAAc;AAChB;AAEA,eAAOC,qBACLC,SACA,KACA,gBAAgB,CAAC,MACd,MACH;AACA,EAAAA,UAAS,0BAA0BA,OAAM;AAEzC,QAAM,UAAU,EAAC,GAAG,gBAAgB,GAAG,cAAa;AACpD,QAAM,SAAwC,CAAC;AAE/C,QAAM,WAAW,CAAC,MAAM,SAAS;AAC/B,WAAO,KAAK;AAAA,MACV,KAAK,KAAK,KAAK,GAAG;AAAA,MAClB;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM,aAAa;AAAA,IACjB,QAAAA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,eAAe,EAAC,MAAMA,QAAM;AAAA,IAC5B;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,SAAO,0BAA0B,MAAM;AACzC;;;ACnCA,eAAO,SACLC,SACA,KACA,gBAAgB,CAAC,MACd,MACH;AACA,QAAM,mBAAmB,MAAMC,qBAAoBD,SAAQ,KAAK,eAAe,GAAG,IAAI;AACtF,MAAI,kBAAkB;AACpB,UAAM,IAAI,gBAAgB,gBAAgB;AAAA,EAC5C;AACF;;;ACXA,eAAO,QACLE,SACA,KACA,gBAAgB,CAAC,MACd,MACH;AACA,QAAM,mBAAmB,MAAMC,qBAAoBD,SAAQ,KAAK,eAAe,GAAG,IAAI;AACtF,SAAO,CAAC;AACV;;;ACNe,SAAR,aAA8BE,OAAkD;AACrF,QAAM,eAAe,kBAAkBA,KAAI;AAC3C,QAAM,YAAY,iBAAiB,WAAWA,QAAO,mBAAW,YAAY;AAC5E,SAAO;AACT;;;ACPe,SAAR,cAA+BC,SAA6B,OAAwB;AACzF,MAAI,KAAKA,QAAO,IAAI,MAAM,YAAY,KAAK,KAAK,MAAM,UAAU;AAC9D,UAAM,SAASA;AACf,WAAO;AAAA,EACT;AAEA,SAAO;AACT;;;ACJA,eAAO,UACLC,OACA,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,aAAaA,KAAI;AAEvD,MAAI,kBAAkB,CAAC,MAAM,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,KAAwB,SAAS;AACzE,kBAAc;AACd,YAAQ,MAAO,iBAAiB,KAAwB,QAAQ,OAAO,MAAM,GAAG,IAAI;AAAA,EACtF;AAEA,QAAM,EAAC,aAAY,IAAI;AACvB,MAAI,MAAM,KAAK,KAAK,CAAC,MAAM,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,OAAAC,OAAK,IAAI;AAChB,MAAIA,QAAO;AACT,kBAAc;AACd,YAAQ,MAAMA,OAAM,OAAO,MAAM,GAAG,IAAI;AAAA,EAC1C;AAEA,MAAI,eAAe,kBAAkB,CAAC,MAAM,KAAK,GAAG;AAClD,YAAQ,MAAM,eAAe,OAAO,MAAM,GAAG,IAAI;AAAA,EACnD;AAEA,SAAO;AACT;;;AC/CA,IAAM,oBAAoB,OAAO;AAAA,EAC/B,QAAAC;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAGoB;AAClB,QAAM,OAAO,OAAO,KAAKA,QAAO,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,QAAQA,QAAO,KAAK,GAAG;AAAA,QACvB,OAAO,MAAM,GAAG;AAAA,QAChB,YAAY;AAAA,MACd;AACA,YAAM,WAAW,MAAM,MAAM,YAAY;AACzC,UAAI,aAAa,QAAW;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,OAAO;AAAA,EAC7B,QAAAA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAGoB;AAGlB,QAAM,aAAaA,QAAO,KAAK,CAAC;AAEhC,QAAM,WAAW,MAAM,IAAI,OAAO,SAAc;AAC9C,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,WAASA,WAAU,MAAS;AACnD;AAEA,SAAS,aACPD,SACA,OACwB;AACxB,MAAI,MAAM,QAAQA,QAAO,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG;AAC/C,UAAM,SAASA;AACf,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEA,IAAM,QAAQ,OAAO,SAAwC;AAC3D,qBAAmB,IAAI;AAEvB,QAAM,EAAC,QAAAA,SAAQ,OAAO,CAAC,GAAG,MAAK,IAAI;AAEnC,QAAM,aACJA,QAAO,SAAS,SAAa,EAAC,MAAMA,QAAM,IAAoBA;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,UAAME,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,CAAC,MAAM,QAAQ,KAAK,GAAG;AACzB,qBAAe,CAAC,KAAK;AAAA,IACvB;AAEA,UAAM,SAAS,MAAM,gBAAgB;AAAA,MACnC,GAAG;AAAA,MACH,QAAQ;AAAA,MACR,OAAO;AAAA,IACT,CAAC;AACD,UAAMA,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;;;AC/Gf,IAAMC,kBAAiB;AAAA,EACrB,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,oBAAoB;AACtB;AAEA,eAAOC,OACLC,SACA,KACA,OAA+B,CAAC,MAC7B,MACgC;AACnC,MAAI,CAAC,IAAK,QAAO;AACjB,EAAAA,UAAS,0BAA0BA,OAAM;AAEzC,QAAM,UAAU,EAAC,GAAGF,iBAAgB,GAAG,KAAI;AAC3C,QAAM,SAAS;AAAA,IACb,QAAQ,EAAC,MAAME,QAAM;AAAA,IACrB,OAAO;AAAA,IACP,KAAK,QAAQ,YAAY;AAAA,IACzB,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,EACF;AAEA,QAAM,gBAAgB,MAAM,uBAAe,MAAa;AACxD,SAAO;AACT;;;AC9BA,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;AAEA,MAAI,OAAO,UAAU,YAAY,KAAK,CAAC,GAAG;AACxC,WAAOA,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,qBAAkBC,SAAgB,MAAc;AACrD,MAAI,MAAMA,OAAM,GAAG;AACjB,UAAM,IAAI,MAAM,2BAA2B;AAAA,EAC7C;AACA,SAAO,OAAO,EAAC,MAAMA,QAAM,GAAG,IAAI;AACpC;;;AC9BA,IAAOC,wBAAQ;;;ACCf,IAAMC,kBAAiB;AAAA,EACrB,QAAQ;AACV;AAEA,eAAO,iBAAwBC,SAAQ,KAAK,OAAO,gBAAgB,CAAC,MAAM,MAAM;AAC9E,QAAM,UAAU,EAAC,GAAGD,iBAAgB,GAAG,cAAa;AACpD,QAAM,YAAYE,sBAAaD,SAAQ,GAAG;AAE1C,MAAI,CAAC,WAAW;AACd,QAAI,QAAQ,QAAQ;AAClB;AAAA,IACF,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAEA,QAAM,SAAS,MAAME,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,oBACLC,SACA,KACA,OACA,gBAAwC,CAAC,MACtC,MACH;AACA,QAAM,UAAkC,EAAC,GAAGD,iBAAgB,GAAG,cAAa;AAC5E,QAAM,YAAY,qBAAaC,SAAQ,GAAG;AAE1C,MAAI,CAAC,WAAW;AACd,QAAI,QAAQ,QAAQ;AAClB,aAAO,eAAO;AAAA,IAChB;AACA,WAAO;AAAA,EACT;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;;;ACrCe,SAAR,WACL,MACA,QAC4B;AAC5B,SAAO,UAAU;AAAA,IACf,MAAM;AAAA,IACN,MAAM;AAAA,MACJ,UAAU;AAAA,MACV,YAAY;AAAA,IACd;AAAA,IACA,eAAe,aAAW;AACxB,aAAO,eAAe,OAAO,gBAAgB,CAAC;AAE9C,aAAO,aAAa,IAAI,IACtB,OAAO,aAAa,IAAI,KACxB,IAAI,QAAQ,gBAAgB;AAAA,QAC1B;AAAA,QACA,QAAQ,OAAO,OAAO,CAAC,QAAQ,UAAU;AACvC,iBAAO,KAAK,IAAI,EAAC,MAAK;AACtB,iBAAO;AAAA,QACT,GAAG,CAAC,CAAC;AAAA,MACP,CAAC;AAEH,aAAO,OAAO,aAAa,IAAI;AAAA,IACjC;AAAA,IACA,SAAS,OAAe,EAAC,cAAa,GAAG;AACvC,UAAI,OAAO,UAAU,SAAU,QAAO,eAAO;AAE7C,UAAI,CAAC,OAAO,SAAS,KAAK,GAAG;AAC3B,eAAO,eAAO;AAAA,MAChB;AAEA,UAAI,UAAU,MAAM,CAAC,cAAc,UAAU;AAC3C,eAAO,eAAO;AAAA,MAChB;AAAA,IACF;AAAA,IACA,MAAM,OAAO,EAAC,SAAS,EAAC,aAAa,aAAa,mBAAkB,EAAC,GAAG;AACtE,UAAI,aAAa;AACf,gBAAQ,OAAO,KAAK;AAAA,MACtB;AAEA,UAAI,aAAa;AACf,gBAAQ,MAAM,KAAK;AAAA,MACrB;AAEA,UAAI,sBAAsB,UAAU,IAAI;AACtC,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT;AAAA,EACF,CAAC;AACH;;;AC6DA,IAAM,YAAY;AAAA,EAChB,MAAM;AAAA,IACJ,MAAM;AAAA,EACR;AACF;AAEA,IAAM,SAAS;AAAA,EACb,QAAQ;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA,KAAK;AAAA,IACH,MAAM;AAAA,EACR;AAAA,EACA,QAAQ;AAAA,IACN,MAAM,WAAW,UAAU,CAAC,QAAQ,QAAQ,CAAC;AAAA,EAC/C;AAAA,EACA,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,cAAc;AAAA,IACd,KAAK;AAAA,EACP;AAAA,EACA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,cAAc;AAAA,IACd,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AAAA,EACA,QAAQ;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,EACZ;AAAA,EACA,UAAU;AAAA,IACR,MAAM;AAAA,IACN,eAAe,CAAC,OAAO,MAAM;AAAA,IAC7B,UAAU;AAAA,EACZ;AACF;;;ACpJA,eAAsB,iBACpBC,SACA,KACmC;AACnC,QAAM,UAAU,MAAMC,OAAMD,SAAQ,GAAG;AACvC,QAAM,SAASA,SAAQ,OAAO;AAC9B,SAAO;AACT;;;ACMO,SAAS,eACd,MACAE,SACS;AAET,EAAAA,QAAO,cAAc;AACrB,SAAOA;AACT;;;AC2CO,SAAS,YAMd,SACgE;AAChE,QAAM,EAAC,QAAAC,SAAQ,cAAc,WAAW,YAAY,WAAU,IAAI;AAElE,QAAM,mBAAmB,OAAO,KAAKA,OAAM,EAAE,OAAO,SAAO,IAAI,WAAW,IAAI,CAAC;AAC/E,QAAM,qBAAqB,KAAK,kBAAkBA,OAAM;AAExD,QAAM,SAAS,EAAC,GAAGA,QAAM;AAEzB,MAAI,yCAAY,QAAQ;AACtB,eAAW,OAAO,QAAQ;AACxB,UAAI,CAAC,WAAW,SAAS,GAAG,GAAG;AAC7B,eAAO,OAAO,GAAG;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AAEA,MAAI,yCAAY,QAAQ;AACtB,eAAW,OAAO,QAAQ;AACxB,UAAI,WAAW,SAAS,GAAG,GAAG;AAC5B,eAAO,OAAO,GAAG;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AAEA,MAAI,CAAC,QAAQ,YAAY,GAAG;AAC1B,eAAW,OAAO,cAAc;AAC9B,aAAO,GAAG,IAAI,aAAa,GAAG;AAAA,IAChC;AAAA,EACF;AAEA,MAAI,WAAW;AACb,eAAW,OAAO,QAAQ;AACxB,aAAO,GAAG,IAAI,UAAU,OAAO,GAAG,GAAG,GAAG;AAAA,IAC1C;AAAA,EACF;AAEA,aAAW,OAAO,kBAAkB;AAClC,QAAI,mBAAmB,GAAG,GAAG;AAC3B,aAAO,GAAG,IAAI,mBAAmB,GAAG;AAAA,IACtC;AAAA,EACF;AAEA,MAAI,QAAQ,MAAM;AAChB,WAAO,cAAc,QAAQ;AAAA,EAC/B;AAEA,SAAO;AACT;","names":["clean","dotGetSchema_default","getValidationErrors","validate","clean","type","type","schema","type","type","clone","schema","type","clone","Dot","getValidationErrors","schema","schema","getValidationErrors","schema","getValidationErrors","type","schema","type","clean","schema","value","result","defaultOptions","clean","schema","dotGet","schema","dotGetSchema_default","defaultOptions","schema","dotGetSchema_default","clean","defaultOptions","schema","getValidationErrors","schema","clean","schema","schema"]}
package/dist/index.js CHANGED
@@ -475,7 +475,6 @@ function getSchemaFromAnyOrionForm(type2) {
475
475
  if (type2.getSchema) {
476
476
  return type2.getSchema();
477
477
  }
478
- if (objectHasSubObjectWithKey(type2, "type")) return type2;
479
478
  return type2;
480
479
  }
481
480
  function objectHasSubObjectWithKey(object, key) {
@@ -525,21 +524,12 @@ async function getValidationErrors(params) {
525
524
  return null;
526
525
  }
527
526
 
528
- // src/getSchemaFromTypedSchema.ts
529
- Symbol.metadata ?? (Symbol.metadata = Symbol("Symbol.metadata"));
530
- var getSchemaFromTypedSchema = (schema2) => {
531
- const item = schema2;
532
- if (!schema2[Symbol.metadata]) return item;
533
- if (!schema2[Symbol.metadata]._isTypedSchema) return item;
534
- return schema2[Symbol.metadata]._getModel().getSchema();
535
- };
536
-
537
527
  // src/getValidationErrors/convertTypedSchema.ts
538
528
  var convertOnParam = (info, paramName) => {
539
529
  if (!info[paramName]) return;
540
530
  const type2 = info[paramName].type;
541
531
  if (!type2) return;
542
- info[paramName].type = getSchemaFromTypedSchema(type2);
532
+ info[paramName].type = getSchemaFromAnyOrionForm(type2);
543
533
  };
544
534
  var convertTypedSchema = (info) => {
545
535
  convertOnParam(info, "schema");
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/type.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/_internals/isArray.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/_internals/isInteger.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/_internals/createPath.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/pick.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/isType.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/clone.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/isEmpty.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/isNil.js","../src/ValidationError.ts","../src/fieldType.ts","../src/Errors.ts","../src/fieldTypes/array.ts","../src/fieldTypes/plainObject.ts","../src/fieldTypes/string.ts","../src/fieldTypes/date.ts","../src/fieldTypes/number.ts","../src/fieldTypes/integer.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/getError/getFieldValidator.ts","../src/models.ts","../src/getValidationErrors/getError/index.ts","../src/getSchemaFromTypedSchema.ts","../src/getValidationErrors/convertTypedSchema.ts","../src/clone.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/getObjectNode.ts","../src/clean/cleanType.ts","../src/clean/recursiveClean.ts","../src/clean/index.ts","../src/validateKey/dotGetSchema.ts","../src/dotGetSchema.ts","../src/cleanKey.ts","../src/validateKey/index.ts","../src/fieldTypes/enum.ts","../src/types/fields.ts","../src/cleanAndValidate.ts","../src/schemaWithName/index.ts","../src/cloneSchema.ts"],"sourcesContent":["export function type(input){\n if (input === null){\n return 'Null'\n } else if (input === undefined){\n return 'Undefined'\n } else if (Number.isNaN(input)){\n return 'NaN'\n }\n const typeResult = Object.prototype.toString.call(input).slice(8, -1)\n\n return typeResult === 'AsyncFunction' ? 'Promise' : typeResult\n}\n","export const { isArray } = Array\n","function _isInteger(n){\n return n << 0 === n\n}\n\nexport const isInteger = Number.isInteger || _isInteger\n\n/**\n * Check if `index` is integer even if it is a string.\n */\nexport const isIndexInteger = index => Number.isInteger(Number(index))\n","import { isInteger } from './isInteger.js'\n\nexport function createPath(path, delimiter = '.'){\n return typeof path === 'string' ?\n path.split(delimiter).map(x => isInteger(x) ? Number(x) : x) :\n path\n}\n","import { createPath } from './_internals/createPath.js'\n\nexport function pick(propsToPick, input){\n if (arguments.length === 1) return _input => pick(propsToPick, _input)\n\n if (input === null || input === undefined){\n return undefined\n }\n const keys = createPath(propsToPick, ',')\n const willReturn = {}\n let counter = 0\n\n while (counter < keys.length){\n if (keys[ counter ] in input){\n willReturn[ keys[ counter ] ] = input[ keys[ counter ] ]\n }\n counter++\n }\n\n return willReturn\n}\n","import { type } from './type.js'\n\nexport function isType(xType, x){\n if (arguments.length === 1){\n return xHolder => isType(xType, xHolder)\n }\n\n return type(x) === xType\n}\n","import { isArray } from './_internals/isArray.js'\n\nexport function clone(input){\n const out = isArray(input) ? Array(input.length) : {}\n if (input && input.getTime) return new Date(input.getTime())\n\n for (const key in input){\n const v = input[ key ]\n out[ key ] =\n typeof v === 'object' && v !== null ?\n v.getTime ?\n new Date(v.getTime()) :\n clone(v) :\n v\n }\n\n return out\n}\n","import { type } from './type.js'\n\nexport function isEmpty(input){\n const inputType = type(input)\n if ([ 'Undefined', 'NaN', 'Number', 'Null' ].includes(inputType))\n return false\n if (!input) return true\n\n if (inputType === 'Object'){\n return Object.keys(input).length === 0\n }\n\n if (inputType === 'Array'){\n return input.length === 0\n }\n\n return false\n}\n","export function isNil(x){\n return x === undefined || x === null\n}\n","import {type} from 'rambdax'\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 (type(validationErrors) !== 'Object') {\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 {CleanFunction, SchemaFieldType, SchemaNode, ValidateFunction} from './types/schema'\n\nexport interface FieldTypeOpts<TType = any> {\n name: string\n validate?: ValidateFunction<TType>\n clean?: CleanFunction<TType>\n toGraphQLType?: (GraphQL: any) => any\n meta?: any\n}\n\nexport interface FieldType<TType = any> {\n name: string\n validate: ValidateFunction\n clean: CleanFunction\n meta?: any\n toGraphQLType?: (GraphQL: any) => any\n toSerializedType?: (node: SchemaNode) => Promise<SchemaFieldType>\n __tsFieldType: TType\n __isFieldType: boolean\n}\n\nexport default function fieldType<TType>(opts: FieldTypeOpts<TType>): FieldType<TType> {\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 __tsFieldType: null,\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 Errors from '../Errors'\n\nexport default fieldType<any[]>({\n name: 'array',\n validate(value) {\n if (!Array.isArray(value)) return Errors.NOT_AN_ARRAY\n },\n clean(value, {options}) {\n if (options.autoConvert) {\n if (!Array.isArray(value)) {\n value = [value]\n }\n }\n\n return value\n },\n})\n","import fieldType from '../fieldType'\nimport {type} from 'rambdax'\nimport Errors from '../Errors'\nimport {Blackbox} from '../types'\n\nexport default fieldType<Blackbox>({\n name: 'plainObject',\n validate(value: object) {\n if (type(value) !== 'Object') return Errors.NOT_AN_OBJECT\n },\n clean(value, {type: typeObj, options}) {\n if (type(value) !== 'Object') return value\n\n if (options.filter) {\n const documentKeys = Object.keys(value)\n const schemaKeys = Object.keys(typeObj)\n const notInSchemaKeys = documentKeys.filter(key => !schemaKeys.includes(key))\n for (const key of notInSchemaKeys) {\n delete value[key]\n }\n }\n\n return value\n },\n})\n","import fieldType from '../fieldType'\nimport Errors from '../Errors'\n\nexport default fieldType<string>({\n name: 'string',\n validate(value: string, {currentSchema}) {\n if (typeof value !== 'string') return Errors.NOT_A_STRING\n\n if (Number.isFinite(currentSchema.min)) {\n if (value.length < currentSchema.min) {\n return Errors.STRING_TOO_SHORT\n }\n }\n\n if (Number.isFinite(currentSchema.max)) {\n if (value.length > currentSchema.max) {\n return Errors.STRING_TOO_LONG\n }\n }\n\n if (Array.isArray(currentSchema.allowedValues)) {\n if (!currentSchema.allowedValues.includes(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 Errors from '../Errors'\n\nexport default fieldType<Date>({\n name: 'date',\n validate(value) {\n if (!(value instanceof Date)) return Errors.NOT_A_DATE\n },\n clean(value: Date, {options}) {\n if (options.autoConvert) {\n if (typeof value === 'string') {\n const result = new Date(value)\n if (Number.isNaN(result.getTime())) {\n return value\n }\n\n value = result\n } else if (typeof value === 'number') {\n const result = new Date(value)\n if (Number.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 Errors from '../Errors'\n\nexport default fieldType<number>({\n name: 'number',\n validate(value: number, {currentSchema}) {\n if (!Number.isFinite(value)) return Errors.NOT_A_NUMBER\n\n if (Number.isFinite(currentSchema.min)) {\n if (value < currentSchema.min) {\n return Errors.NUMBER_TOO_SMALL\n }\n }\n\n if (Number.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 = Number(value)\n }\n\n return value\n },\n})\n","import fieldType from '../fieldType'\nimport Errors from '../Errors'\nimport number from './number'\n\nexport default fieldType<number>({\n name: 'integer',\n validate(value: number, info) {\n if (!Number.isInteger(value)) return Errors.NOT_AN_INTEGER\n return number.validate(value, info)\n },\n})\n","import fieldType from '../fieldType'\nimport Errors from '../Errors'\n\nexport default fieldType<string>({\n name: 'ID',\n validate(value: string) {\n if (typeof value !== 'string' && !Number.isInteger(value)) return Errors.NOT_AN_ID\n },\n clean(value: string, {options}) {\n if (typeof value !== 'string' && !Number.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 Errors from '../Errors'\n\nexport default fieldType<boolean>({\n name: 'boolean',\n validate(value) {\n if (typeof value !== 'boolean') return Errors.NOT_A_BOOLEAN\n },\n clean(value, {options}) {\n if (options.autoConvert) {\n if (typeof value === 'string') {\n const stringValue = value as string\n if (stringValue === 'true') {\n value = true\n }\n if (stringValue === '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 {isNil} from 'rambdax'\nimport Errors from '../Errors'\n\nexport default fieldType<string>({\n name: 'email',\n validate(value, {currentSchema}) {\n if ((value === '' || isNil(value)) && !currentSchema.optional) {\n return Errors.REQUIRED\n }\n\n if (value && typeof value !== 'string') 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 {type} from 'rambdax'\nimport Errors from '../Errors'\nimport {Blackbox} from '../types'\n\nexport default fieldType<Blackbox>({\n name: 'blackbox',\n validate(value) {\n if (type(value) !== 'Object') return Errors.NOT_AN_OBJECT\n },\n})\n","import fieldType from '../fieldType'\n\nexport default fieldType<any>({\n name: 'any',\n validate() {},\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 fieldTypes from '../../fieldTypes'\nimport {FieldValidatorType} from '../../types/fieldValidators'\nimport {SchemaFieldType} from '../../types'\nimport {isType} from 'rambdax'\n\nexport default function getFieldValidator(type: SchemaFieldType): FieldValidatorType {\n if (isType('Object', type)) {\n if ((type as any).__isFieldType) return 'custom'\n return 'plainObject'\n }\n if (Array.isArray(type)) return 'array'\n\n if (type === String) return 'string'\n if (typeof type === 'function' && type.name === 'Date') return 'date'\n if (type === Number) return 'number'\n if (type === Boolean) return 'boolean'\n if (type === 'enum') return 'string'\n\n if (typeof type !== 'string') {\n throw new Error(`Field type is invalid. Pass a string or a custom field type. Got ${type}`)\n }\n\n const exists = fieldTypes[type]\n\n if (!exists) {\n throw new Error(`Field type does not exist. Got ${type}`)\n }\n\n return type as FieldValidatorType\n}\n","import getFieldValidator from './getValidationErrors/getError/getFieldValidator'\nimport {Schema, SchemaFieldType, SchemaFieldTypeNonSchema, SchemaWithMetadata} from './types'\n\n// @ts-ignore polyfill for Symbol.metadata\nSymbol.metadata ??= Symbol('Symbol.metadata')\n\nexport function isSchemaLike(type: any): boolean {\n if (!type) return false\n\n if (objectHasSubObjectWithKey(type, 'type')) return true\n if (type?.[Symbol.metadata]?._getModel) return true\n if (type.getModel) return true\n if (type.getSchema) return true\n if (type.getCleanSchema) return true\n if (type.__isModel) return true\n if (type.__modelName) return true\n\n return false\n}\n\nexport function isStrictSchemaLike<TType extends Schema | SchemaFieldTypeNonSchema>(\n type: TType,\n): TType extends Schema ? true : false {\n if (isSchemaLike(type)) return true as any\n return false as any\n}\n\nexport function isSchemaOrFieldLike(type: any): boolean {\n if (Array.isArray(type)) {\n if (type.length !== 1) return false\n return isSchemaOrFieldLike(type[0])\n }\n\n if (isSchemaLike(type)) return true\n try {\n if (getFieldValidator(type)) return true\n } catch {\n return false\n }\n\n return false\n}\n\nexport function getSchemaModelName(type: any): string | null {\n if (!type) return null\n if (type.__modelName) return type.__modelName\n if (type.getModel) return type.getModel().name\n if (type.getSchema) return type.getSchema().__modelName\n return null\n}\n\nexport function getSchemaFromAnyOrionForm(type: any): SchemaFieldType {\n if (!type) return type\n\n if (type?.[Symbol.metadata]?._getModel) {\n return type?.[Symbol.metadata]?._getModel().getSchema()\n }\n if (type?.getModel) return type.getModel().getSchema()\n\n if (type.getSchema) {\n return type.getSchema()\n }\n\n if (objectHasSubObjectWithKey(type, 'type')) return type // ya es un schema\n\n return type\n}\n\nfunction objectHasSubObjectWithKey(object: any, key: string) {\n if (!object || typeof object !== 'object') return false\n\n for (const key1 in object) {\n const value = object[key1]\n if (value && typeof value === 'object' && key in value) {\n return true\n }\n }\n\n return false\n}\n\nexport function getSchemaWithMetadataFromAnyOrionForm(type: any): SchemaWithMetadata {\n return getSchemaFromAnyOrionForm(type) as SchemaWithMetadata\n}\n","import getFieldValidator from './getFieldValidator'\nimport fieldTypes from '../../fieldTypes'\nimport Errors from '../../Errors'\nimport {CurrentNodeInfo, SchemaRecursiveNodeTypeExtras} from '../../types/schema'\nimport {FieldType} from '../../fieldType'\nimport {isNil} from 'rambdax'\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 {Schema, SchemaFieldType} from '.'\n\n// @ts-ignore polyfill for Symbol.metadata // https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-2.html#decorator-metadata\nSymbol.metadata ??= Symbol('Symbol.metadata')\n\nexport const getSchemaFromTypedSchema = (schema: Schema | Function | SchemaFieldType): Schema => {\n const item = schema as any\n\n if (!schema[Symbol.metadata]) return item\n if (!schema[Symbol.metadata]._isTypedSchema) return item\n\n return schema[Symbol.metadata]._getModel().getSchema()\n}\n","import {getSchemaFromTypedSchema} from '../getSchemaFromTypedSchema'\nimport {CurrentNodeInfo} from '../types/schema'\n\nconst convertOnParam = (info: CurrentNodeInfo, paramName: string) => {\n if (!info[paramName]) return\n\n const type = info[paramName].type as any\n if (!type) return\n\n info[paramName].type = getSchemaFromTypedSchema(type)\n}\n\nexport const convertTypedSchema = (info: CurrentNodeInfo) => {\n convertOnParam(info, 'schema')\n convertOnParam(info, 'currentSchema')\n}\n","import {isType, clone as cloneRambdax} from 'rambdax'\n\nexport function clone<T>(value: T): T {\n if (isType('Object', value)) {\n return cloneRambdax(value)\n }\n\n if (Array.isArray(value)) {\n return cloneRambdax(value)\n }\n\n return value\n}\n","import getError from './getError'\nimport Errors from '../Errors'\nimport {CurrentNodeInfo, SchemaNode, SchemaRecursiveNodeTypeExtras} from '../types/schema'\nimport {convertTypedSchema} from './convertTypedSchema'\nimport {isNil, type} from 'rambdax'\nimport {clone} from '../clone'\n\nexport default async function doValidation(params: CurrentNodeInfo) {\n convertTypedSchema(params)\n\n const {schema, doc, currentDoc, value, currentSchema, keys = [], addError, options, args} = params\n const info = {\n schema,\n doc,\n currentDoc,\n value,\n currentSchema,\n keys,\n options,\n args,\n addError,\n }\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 (type(currentSchema.type) === 'Object') {\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 } as any)\n }\n\n const documentKeys = Object.keys(value)\n const notInSchemaKeys = documentKeys.filter(key => !schemaKeys.includes(key))\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 (Array.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 {getSchemaFromAnyOrionForm} from '../models'\nimport {InferSchemaType} from '../types'\nimport {SchemaFieldType} from '../types/schema'\nimport doValidation from './doValidation'\nimport getValidationErrorsObject from './getValidationErrorsObject'\n\nconst defaultOptions = {\n omitRequired: false,\n}\n\nexport default async function getValidationErrors<TSchema extends SchemaFieldType>(\n schema: TSchema,\n doc: InferSchemaType<TSchema>,\n passedOptions = {},\n ...args\n) {\n schema = getSchemaFromAnyOrionForm(schema) as TSchema\n\n const options = {...defaultOptions, ...passedOptions}\n const errors: {key: string; code: string}[] = []\n\n const addError = (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 {InferSchemaType} from './types/fields'\nimport {SchemaFieldType} from './types/schema'\n\nexport default async function validate<TSchema extends SchemaFieldType>(\n schema: TSchema,\n doc: InferSchemaType<TSchema>,\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 {InferSchemaType} from './types'\nimport {Schema} from './types/schema'\n\nexport default async function isValid<TSchema extends Schema>(\n schema: TSchema,\n doc: InferSchemaType<TSchema>,\n passedOptions = {},\n ...args\n) {\n const validationErrors = await getValidationErrors(schema, doc, passedOptions, ...args)\n return !validationErrors\n}\n","import getFieldValidator from './getFieldValidator'\nimport fieldTypes from '../../fieldTypes'\nimport {SchemaFieldType} from '../../types/schema'\nimport {FieldValidatorType} from '../../types/fieldValidators'\nimport {FieldType} from '../../fieldType'\n\nexport default function getFieldType(type: SchemaFieldType | FieldValidatorType | any) {\n const validatorKey = getFieldValidator(type)\n const validator = validatorKey === 'custom' ? type : fieldTypes[validatorKey]\n return validator as FieldType\n}\n","import {type} from 'rambdax'\nimport {SchemaNode} from '../types/schema'\n\nexport default function getObjectNode(schema: Partial<SchemaNode>, value: any): SchemaNode {\n if (type(schema.type) === 'Object' && type(value) === 'Object') {\n const result = schema as any\n return result\n }\n\n return null\n}\n","import getFieldType from '../getValidationErrors/getError/getFieldType'\nimport {isNil} from 'rambdax'\nimport {CurrentNodeInfo, SchemaFieldType, SchemaNode, SchemaMetadata, Schema} from '../types/schema'\nimport {FieldValidatorType} from '../types/fieldValidators'\nimport getObjectNode from './getObjectNode'\n\nexport default async function cleanType<TSchema extends Schema>(\n type: SchemaFieldType | FieldValidatorType,\n fieldSchema: Partial<SchemaNode>,\n value: any,\n info: CurrentNodeInfo<TSchema>,\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 SchemaMetadata).__clean) {\n needReClean = true\n value = await (objectTypeSchema.type as SchemaMetadata).__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 {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 {isNil} from 'rambdax'\nimport cleanType from './cleanType'\nimport {CurrentNodeInfo, SchemaNode} from '../types/schema'\nimport getObjectNode from './getObjectNode'\nimport {convertTypedSchema} from '../getValidationErrors/convertTypedSchema'\n\nconst cleanObjectFields = async ({\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 (newValue !== undefined) {\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 ({\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: any) => {\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 => value !== undefined)\n}\n\nfunction getArrayNode(\n schema: Partial<SchemaNode>,\n value: any | Array<any>,\n): SchemaNode | undefined {\n if (Array.isArray(schema.type) && !isNil(value)) {\n const result = schema as SchemaNode\n return result\n }\n\n return null\n}\n\nconst clean = async (info: CurrentNodeInfo): Promise<any> => {\n convertTypedSchema(info)\n\n const {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 (!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 {getSchemaFromAnyOrionForm} from '../models'\nimport {InferSchemaType} from '../types'\nimport {CurrentNodeInfoOptions, SchemaFieldType} 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<TSchema extends SchemaFieldType>(\n schema: TSchema,\n doc: InferSchemaType<TSchema>,\n opts: CurrentNodeInfoOptions = {},\n ...args\n): Promise<InferSchemaType<TSchema>> {\n if (!doc) return doc\n schema = getSchemaFromAnyOrionForm(schema) as TSchema\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\n const cleanedResult = await recursiveClean(params as any)\n return cleanedResult\n}\n","import {Schema, SchemaNode} from '..'\nimport {isType, isNil} from 'rambdax'\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 }\n\n if (isType('Object', 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 }\n return null\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 Errors from '../Errors'\n\nexport default function createEnum<const TValues extends readonly string[]>(\n name: string,\n values: TValues,\n): FieldType<TValues[number]> {\n return 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 (typeof value !== 'string') return Errors.NOT_A_STRING\n\n if (!values.includes(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","import {createEnum} from '..'\nimport {FieldType} from '../fieldType'\nimport {Blackbox, Schema, SchemaMetaFieldTypeSingleNonSchema, TypedSchemaOnSchema} from './schema'\n\ntype InferSchemaTypeForFieldType<T> =\n // field type with setted _tsFieldType\n T extends {__tsFieldType: infer U}\n ? U\n : // typed as strings\n T extends 'string'\n ? string\n : T extends 'date'\n ? Date\n : T extends 'integer'\n ? number\n : T extends 'number'\n ? number\n : T extends 'ID'\n ? string\n : T extends 'boolean'\n ? boolean\n : T extends 'email'\n ? string\n : T extends 'blackbox'\n ? Blackbox\n : T extends 'any'\n ? any\n : // typed as object constructors (Like String, Number, Boolean, Date)\n T extends String\n ? string\n : T extends Number\n ? number\n : T extends Boolean\n ? boolean\n : T extends Date\n ? Date\n : T extends StringConstructor\n ? string\n : T extends NumberConstructor\n ? number\n : T extends BooleanConstructor\n ? boolean\n : T extends DateConstructor\n ? Date\n : // if is array, return infer the first element recursively\n T extends Array<infer U>\n ? InferSchemaTypeForFieldType<U>[]\n : // if is object, asume it's a schema and infer the type of the object\n T extends Record<string, any>\n ? InferSchemaTypeForSchema<T>\n : T\n\ntype SchemaKeysNotOfSchemaItems = '__isFieldType' | '__GraphQLType' | '__skipChildValidation'\n\ntype NodeIsOptional<TNode> = TNode extends {optional: true} ? true : false\n\n// esto hace que haya un infinity loopp\n// type NodeIsOptional<TNode> = TNode extends {optional: true}\n// ? true\n// : TNode extends {defaultValue: any}\n// ? true\n// : false\n\ntype WithoutNotSchemaItems<T extends Record<string, any>> = T extends {\n [key in SchemaKeysNotOfSchemaItems]: any\n} & Record<string, any>\n ? Omit<T, SchemaKeysNotOfSchemaItems>\n : T\n\ntype InferSchemaTypeForSchema<TSchema extends Record<string, any>> = WithoutNotSchemaItems<\n {\n -readonly [K in keyof TSchema as NodeIsOptional<TSchema[K]> extends true\n ? never\n : K]: InferSchemaType<TSchema[K]['type']>\n } & {\n -readonly [K in keyof TSchema as NodeIsOptional<TSchema[K]> extends true\n ? K\n : never]?: InferSchemaType<TSchema[K]['type']>\n }\n>\n\n// is a record with a child item that has type in its type\ntype IsPossiblyASchema<TType> = TType extends FieldType\n ? false\n : TType extends Record<string, any>\n ? keyof {\n [K in keyof TType as 'type' extends keyof TType[K] ? K : never]: TType[K]\n } extends never\n ? false\n : true\n : false\n\ntype AClass<T = any> = abstract new (...args: any) => T\n\n/**\n * Returns the type of the schema\n */\nexport type InferSchemaType<TType> = TType extends {__isModel: true; type: infer U}\n ? InferSchemaTypeForSchema<U>\n : TType extends SchemaMetaFieldTypeSingleNonSchema\n ? InferSchemaTypeForFieldType<TType>\n : TType extends AClass<infer U>\n ? U\n : IsPossiblyASchema<TType> extends true\n ? InferSchemaTypeForSchema<TType>\n : InferSchemaTypeForFieldType<TType>\n\n/**\n * Returns the type of the schema but only if its a schema\n */\nexport type StrictInferSchemaType<TSchema extends Schema> = InferSchemaTypeForSchema<TSchema>\n/**\n * Returns the type of the schema but only if its a schema\n */\nexport type InferSchemaTypeFromTypedSchema<TTypedSchema extends TypedSchemaOnSchema> = TTypedSchema\n\nconst subSchema = {\n name: {\n type: String,\n },\n}\n\nconst schema = {\n filter: {\n type: String,\n },\n sub: {\n type: subSchema,\n },\n gender: {\n type: createEnum('gender', ['male', 'female']),\n },\n page: {\n type: 'integer',\n defaultValue: 1,\n min: 1,\n },\n limit: {\n type: 'integer',\n defaultValue: 0,\n min: 0,\n max: 200,\n },\n sortBy: {\n type: String,\n optional: true,\n },\n sortType: {\n type: String,\n allowedValues: ['asc', 'desc'],\n optional: true,\n },\n} as const\n\ntype _ = InferSchemaType<typeof schema>\n\nconst _a: _ = {\n filter: '123',\n gender: 'male',\n sub: {\n name: '123',\n },\n limit: 1,\n page: 1,\n}\n\ntype _2 = NodeIsOptional<(typeof schema)['sortType']>\n","import {InferSchemaType, SchemaFieldType} from './types'\nimport clean from './clean'\nimport validate from './validate'\n\nexport async function cleanAndValidate<TSchema extends SchemaFieldType>(\n schema: TSchema,\n doc: InferSchemaType<TSchema>,\n): Promise<InferSchemaType<TSchema>> {\n const cleaned = await clean(schema, doc)\n await validate(schema, cleaned)\n return cleaned\n}\n","// import {ModelResolver, ModelResolverResolve} from '@orion-js/resolvers'\n\nimport {Schema} from '../types'\n\n/**\n * Assigns a name to a schema for GraphQL type generation.\n *\n * This function associates a name with a schema object by setting an internal\n * `__modelName` property. This name is used when generating GraphQL types.\n *\n * @param name - The name to assign to the schema\n * @param schema - The schema object to name\n * @returns The same schema object with the internal name property added\n *\n * Note: The schema object is modified in-place, so the name will persist\n * even if you don't use the returned value.\n */\nexport function schemaWithName<TModelName extends string, TSchema extends Schema>(\n name: TModelName,\n schema: TSchema,\n): TSchema {\n // @ts-ignore Internal property not included in type definition\n schema.__modelName = name\n return schema\n}\n","import {isEmpty, pick} from 'rambdax'\nimport {Schema, SchemaNode} from './types'\n\nexport type CloneSchemaOptions<\n TSchema extends Schema,\n TExtendFields extends Schema | undefined = undefined,\n TPickFields extends (keyof TSchema)[] | undefined = undefined,\n TOmitFields extends (keyof TSchema)[] | undefined = undefined,\n> = {\n /**\n * The schema to clone\n */\n schema: TSchema\n /**\n * The name of the cloned schema\n */\n name?: string\n /**\n * The schema to extend the cloned schema with\n */\n extendSchema?: TExtendFields\n /**\n * A function to map the fields of the cloned schema.\n * Warning: This function will not be applied to the typescript types of this schema.\n */\n mapFields?: (field: TSchema[keyof TSchema], key: keyof TSchema) => SchemaNode\n /**\n * The fields to pick from the cloned schema\n */\n pickFields?: TPickFields\n /**\n * The fields to omit from the cloned schema\n */\n omitFields?: TOmitFields\n}\n\n// TExtendFields should replace TSchema if present\ntype ExtendFields<\n TSchema extends Schema,\n TExtendFields extends Schema | undefined,\n> = TExtendFields extends undefined\n ? TSchema\n : {\n [key in keyof (TSchema & TExtendFields)]: key extends keyof TExtendFields\n ? TExtendFields[key]\n : key extends keyof TSchema\n ? TSchema[key]\n : never\n }\n\ntype PickOrOmit<\n TSchema extends Schema,\n TPickFields extends (keyof TSchema)[] | undefined = undefined,\n TOmitFields extends (keyof TSchema)[] | undefined = undefined,\n> = TPickFields extends undefined\n ? TOmitFields extends undefined\n ? TSchema\n : Omit<TSchema, TOmitFields[number]>\n : Pick<TSchema, TPickFields[number]>\n\nexport type ClonedSchema<\n TSchema extends Schema,\n TExtendFields extends Schema | undefined = undefined,\n TPickFields extends (keyof TSchema)[] | undefined = undefined,\n TOmitFields extends (keyof TSchema)[] | undefined = undefined,\n> = ExtendFields<PickOrOmit<TSchema, TPickFields, TOmitFields>, TExtendFields>\n\nexport function cloneSchema<\n TSchema extends Schema,\n TExtendFields extends Schema | undefined = undefined,\n TPickFields extends (keyof TSchema)[] | undefined = undefined,\n TOmitFields extends (keyof TSchema)[] | undefined = undefined,\n>(\n options: CloneSchemaOptions<TSchema, TExtendFields, TPickFields, TOmitFields>,\n): ClonedSchema<TSchema, TExtendFields, TPickFields, TOmitFields> {\n const {schema, extendSchema, mapFields, pickFields, omitFields} = options\n\n const originalMetaKeys = Object.keys(schema).filter(key => key.startsWith('__'))\n const originalMetaFields = pick(originalMetaKeys, schema)\n\n const cloned = {...schema} as any\n\n if (pickFields?.length) {\n for (const key in cloned) {\n if (!pickFields.includes(key)) {\n delete cloned[key]\n }\n }\n }\n\n if (omitFields?.length) {\n for (const key in cloned) {\n if (omitFields.includes(key)) {\n delete cloned[key]\n }\n }\n }\n\n if (!isEmpty(extendSchema)) {\n for (const key in extendSchema) {\n cloned[key] = extendSchema[key]\n }\n }\n\n if (mapFields) {\n for (const key in cloned) {\n cloned[key] = mapFields(cloned[key], key)\n }\n }\n\n for (const key of originalMetaKeys) {\n if (originalMetaFields[key]) {\n cloned[key] = originalMetaFields[key]\n }\n }\n\n if (options.name) {\n cloned.__modelName = options.name\n }\n\n return cloned\n}\n"],"mappings":"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","names":["validate","clean","type","type","schema","type","schema","type","clone","schema","type","clone","getValidationErrors","schema","schema","getValidationErrors","schema","getValidationErrors","type","schema","type","clean","schema","value","result","defaultOptions","clean","schema","dotGet","schema","dotGetSchema_default","defaultOptions","schema","dotGetSchema_default","clean","defaultOptions","schema","getValidationErrors","schema","clean","schema","schema"]}
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/type.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/_internals/isArray.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/_internals/isInteger.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/_internals/createPath.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/pick.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/isType.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/clone.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/isEmpty.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/isNil.js","../src/ValidationError.ts","../src/fieldType.ts","../src/Errors.ts","../src/fieldTypes/array.ts","../src/fieldTypes/plainObject.ts","../src/fieldTypes/string.ts","../src/fieldTypes/date.ts","../src/fieldTypes/number.ts","../src/fieldTypes/integer.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/getError/getFieldValidator.ts","../src/models.ts","../src/getValidationErrors/getError/index.ts","../src/getValidationErrors/convertTypedSchema.ts","../src/clone.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/getObjectNode.ts","../src/clean/cleanType.ts","../src/clean/recursiveClean.ts","../src/clean/index.ts","../src/validateKey/dotGetSchema.ts","../src/dotGetSchema.ts","../src/cleanKey.ts","../src/validateKey/index.ts","../src/fieldTypes/enum.ts","../src/types/fields.ts","../src/cleanAndValidate.ts","../src/schemaWithName/index.ts","../src/cloneSchema.ts"],"sourcesContent":["export function type(input){\n if (input === null){\n return 'Null'\n } else if (input === undefined){\n return 'Undefined'\n } else if (Number.isNaN(input)){\n return 'NaN'\n }\n const typeResult = Object.prototype.toString.call(input).slice(8, -1)\n\n return typeResult === 'AsyncFunction' ? 'Promise' : typeResult\n}\n","export const { isArray } = Array\n","function _isInteger(n){\n return n << 0 === n\n}\n\nexport const isInteger = Number.isInteger || _isInteger\n\n/**\n * Check if `index` is integer even if it is a string.\n */\nexport const isIndexInteger = index => Number.isInteger(Number(index))\n","import { isInteger } from './isInteger.js'\n\nexport function createPath(path, delimiter = '.'){\n return typeof path === 'string' ?\n path.split(delimiter).map(x => isInteger(x) ? Number(x) : x) :\n path\n}\n","import { createPath } from './_internals/createPath.js'\n\nexport function pick(propsToPick, input){\n if (arguments.length === 1) return _input => pick(propsToPick, _input)\n\n if (input === null || input === undefined){\n return undefined\n }\n const keys = createPath(propsToPick, ',')\n const willReturn = {}\n let counter = 0\n\n while (counter < keys.length){\n if (keys[ counter ] in input){\n willReturn[ keys[ counter ] ] = input[ keys[ counter ] ]\n }\n counter++\n }\n\n return willReturn\n}\n","import { type } from './type.js'\n\nexport function isType(xType, x){\n if (arguments.length === 1){\n return xHolder => isType(xType, xHolder)\n }\n\n return type(x) === xType\n}\n","import { isArray } from './_internals/isArray.js'\n\nexport function clone(input){\n const out = isArray(input) ? Array(input.length) : {}\n if (input && input.getTime) return new Date(input.getTime())\n\n for (const key in input){\n const v = input[ key ]\n out[ key ] =\n typeof v === 'object' && v !== null ?\n v.getTime ?\n new Date(v.getTime()) :\n clone(v) :\n v\n }\n\n return out\n}\n","import { type } from './type.js'\n\nexport function isEmpty(input){\n const inputType = type(input)\n if ([ 'Undefined', 'NaN', 'Number', 'Null' ].includes(inputType))\n return false\n if (!input) return true\n\n if (inputType === 'Object'){\n return Object.keys(input).length === 0\n }\n\n if (inputType === 'Array'){\n return input.length === 0\n }\n\n return false\n}\n","export function isNil(x){\n return x === undefined || x === null\n}\n","import {type} from 'rambdax'\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 (type(validationErrors) !== 'Object') {\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 {CleanFunction, SchemaFieldType, SchemaNode, ValidateFunction} from './types/schema'\n\nexport interface FieldTypeOpts<TType = any> {\n name: string\n validate?: ValidateFunction<TType>\n clean?: CleanFunction<TType>\n toGraphQLType?: (GraphQL: any) => any\n meta?: any\n}\n\nexport interface FieldType<TType = any> {\n name: string\n validate: ValidateFunction\n clean: CleanFunction\n meta?: any\n toGraphQLType?: (GraphQL: any) => any\n toSerializedType?: (node: SchemaNode) => Promise<SchemaFieldType>\n __tsFieldType: TType\n __isFieldType: boolean\n}\n\nexport default function fieldType<TType>(opts: FieldTypeOpts<TType>): FieldType<TType> {\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 __tsFieldType: null,\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 Errors from '../Errors'\n\nexport default fieldType<any[]>({\n name: 'array',\n validate(value) {\n if (!Array.isArray(value)) return Errors.NOT_AN_ARRAY\n },\n clean(value, {options}) {\n if (options.autoConvert) {\n if (!Array.isArray(value)) {\n value = [value]\n }\n }\n\n return value\n },\n})\n","import fieldType from '../fieldType'\nimport {type} from 'rambdax'\nimport Errors from '../Errors'\nimport {Blackbox} from '../types'\n\nexport default fieldType<Blackbox>({\n name: 'plainObject',\n validate(value: object) {\n if (type(value) !== 'Object') return Errors.NOT_AN_OBJECT\n },\n clean(value, {type: typeObj, options}) {\n if (type(value) !== 'Object') return value\n\n if (options.filter) {\n const documentKeys = Object.keys(value)\n const schemaKeys = Object.keys(typeObj)\n const notInSchemaKeys = documentKeys.filter(key => !schemaKeys.includes(key))\n for (const key of notInSchemaKeys) {\n delete value[key]\n }\n }\n\n return value\n },\n})\n","import fieldType from '../fieldType'\nimport Errors from '../Errors'\n\nexport default fieldType<string>({\n name: 'string',\n validate(value: string, {currentSchema}) {\n if (typeof value !== 'string') return Errors.NOT_A_STRING\n\n if (Number.isFinite(currentSchema.min)) {\n if (value.length < currentSchema.min) {\n return Errors.STRING_TOO_SHORT\n }\n }\n\n if (Number.isFinite(currentSchema.max)) {\n if (value.length > currentSchema.max) {\n return Errors.STRING_TOO_LONG\n }\n }\n\n if (Array.isArray(currentSchema.allowedValues)) {\n if (!currentSchema.allowedValues.includes(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 Errors from '../Errors'\n\nexport default fieldType<Date>({\n name: 'date',\n validate(value) {\n if (!(value instanceof Date)) return Errors.NOT_A_DATE\n },\n clean(value: Date, {options}) {\n if (options.autoConvert) {\n if (typeof value === 'string') {\n const result = new Date(value)\n if (Number.isNaN(result.getTime())) {\n return value\n }\n\n value = result\n } else if (typeof value === 'number') {\n const result = new Date(value)\n if (Number.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 Errors from '../Errors'\n\nexport default fieldType<number>({\n name: 'number',\n validate(value: number, {currentSchema}) {\n if (!Number.isFinite(value)) return Errors.NOT_A_NUMBER\n\n if (Number.isFinite(currentSchema.min)) {\n if (value < currentSchema.min) {\n return Errors.NUMBER_TOO_SMALL\n }\n }\n\n if (Number.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 = Number(value)\n }\n\n return value\n },\n})\n","import fieldType from '../fieldType'\nimport Errors from '../Errors'\nimport number from './number'\n\nexport default fieldType<number>({\n name: 'integer',\n validate(value: number, info) {\n if (!Number.isInteger(value)) return Errors.NOT_AN_INTEGER\n return number.validate(value, info)\n },\n})\n","import fieldType from '../fieldType'\nimport Errors from '../Errors'\n\nexport default fieldType<string>({\n name: 'ID',\n validate(value: string) {\n if (typeof value !== 'string' && !Number.isInteger(value)) return Errors.NOT_AN_ID\n },\n clean(value: string, {options}) {\n if (typeof value !== 'string' && !Number.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 Errors from '../Errors'\n\nexport default fieldType<boolean>({\n name: 'boolean',\n validate(value) {\n if (typeof value !== 'boolean') return Errors.NOT_A_BOOLEAN\n },\n clean(value, {options}) {\n if (options.autoConvert) {\n if (typeof value === 'string') {\n const stringValue = value as string\n if (stringValue === 'true') {\n value = true\n }\n if (stringValue === '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 {isNil} from 'rambdax'\nimport Errors from '../Errors'\n\nexport default fieldType<string>({\n name: 'email',\n validate(value, {currentSchema}) {\n if ((value === '' || isNil(value)) && !currentSchema.optional) {\n return Errors.REQUIRED\n }\n\n if (value && typeof value !== 'string') 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 {type} from 'rambdax'\nimport Errors from '../Errors'\nimport {Blackbox} from '../types'\n\nexport default fieldType<Blackbox>({\n name: 'blackbox',\n validate(value) {\n if (type(value) !== 'Object') return Errors.NOT_AN_OBJECT\n },\n})\n","import fieldType from '../fieldType'\n\nexport default fieldType<any>({\n name: 'any',\n validate() {},\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 fieldTypes from '../../fieldTypes'\nimport {FieldValidatorType} from '../../types/fieldValidators'\nimport {SchemaFieldType} from '../../types'\nimport {isType} from 'rambdax'\n\nexport default function getFieldValidator(type: SchemaFieldType): FieldValidatorType {\n if (isType('Object', type)) {\n if ((type as any).__isFieldType) return 'custom'\n return 'plainObject'\n }\n if (Array.isArray(type)) return 'array'\n\n if (type === String) return 'string'\n if (typeof type === 'function' && type.name === 'Date') return 'date'\n if (type === Number) return 'number'\n if (type === Boolean) return 'boolean'\n if (type === 'enum') return 'string'\n\n if (typeof type !== 'string') {\n throw new Error(`Field type is invalid. Pass a string or a custom field type. Got ${type}`)\n }\n\n const exists = fieldTypes[type]\n\n if (!exists) {\n throw new Error(`Field type does not exist. Got ${type}`)\n }\n\n return type as FieldValidatorType\n}\n","import getFieldValidator from './getValidationErrors/getError/getFieldValidator'\nimport {Schema, SchemaFieldType, SchemaFieldTypeNonSchema, SchemaWithMetadata} from './types'\n\n// @ts-ignore polyfill for Symbol.metadata\nSymbol.metadata ??= Symbol('Symbol.metadata')\n\nexport function isSchemaLike(type: any): boolean {\n if (!type) return false\n\n if (objectHasSubObjectWithKey(type, 'type')) return true\n if (type?.[Symbol.metadata]?._getModel) return true\n if (type.getModel) return true\n if (type.getSchema) return true\n if (type.getCleanSchema) return true\n if (type.__isModel) return true\n if (type.__modelName) return true\n\n return false\n}\n\nexport function isStrictSchemaLike<TType extends Schema | SchemaFieldTypeNonSchema>(\n type: TType,\n): TType extends Schema ? true : false {\n if (isSchemaLike(type)) return true as any\n return false as any\n}\n\nexport function isSchemaOrFieldLike(type: any): boolean {\n if (Array.isArray(type)) {\n if (type.length !== 1) return false\n return isSchemaOrFieldLike(type[0])\n }\n\n if (isSchemaLike(type)) return true\n try {\n if (getFieldValidator(type)) return true\n } catch {\n return false\n }\n\n return false\n}\n\nexport function getSchemaModelName(type: any): string | null {\n if (!type) return null\n if (type.__modelName) return type.__modelName\n if (type.getModel) return type.getModel().name\n if (type.getSchema) return type.getSchema().__modelName\n return null\n}\n\nexport function getSchemaFromAnyOrionForm(type: any): SchemaFieldType {\n if (!type) return type\n\n if (type?.[Symbol.metadata]?._getModel) {\n return type?.[Symbol.metadata]?._getModel().getSchema()\n }\n if (type?.getModel) return type.getModel().getSchema()\n\n if (type.getSchema) {\n return type.getSchema()\n }\n\n // if (objectHasSubObjectWithKey(type, 'type')) return type // ya es un schema\n\n return type\n}\n\nfunction objectHasSubObjectWithKey(object: any, key: string) {\n if (!object || typeof object !== 'object') return false\n\n for (const key1 in object) {\n const value = object[key1]\n if (value && typeof value === 'object' && key in value) {\n return true\n }\n }\n\n return false\n}\n\nexport function getSchemaWithMetadataFromAnyOrionForm(type: any): SchemaWithMetadata {\n return getSchemaFromAnyOrionForm(type) as SchemaWithMetadata\n}\n","import getFieldValidator from './getFieldValidator'\nimport fieldTypes from '../../fieldTypes'\nimport Errors from '../../Errors'\nimport {CurrentNodeInfo, SchemaRecursiveNodeTypeExtras} from '../../types/schema'\nimport {FieldType} from '../../fieldType'\nimport {isNil} from 'rambdax'\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 {getSchemaFromAnyOrionForm} from '../models'\nimport {CurrentNodeInfo} from '../types/schema'\n\nconst convertOnParam = (info: CurrentNodeInfo, paramName: string) => {\n if (!info[paramName]) return\n\n const type = info[paramName].type as any\n if (!type) return\n\n info[paramName].type = getSchemaFromAnyOrionForm(type)\n}\n\nexport const convertTypedSchema = (info: CurrentNodeInfo) => {\n convertOnParam(info, 'schema')\n convertOnParam(info, 'currentSchema')\n}\n","import {isType, clone as cloneRambdax} from 'rambdax'\n\nexport function clone<T>(value: T): T {\n if (isType('Object', value)) {\n return cloneRambdax(value)\n }\n\n if (Array.isArray(value)) {\n return cloneRambdax(value)\n }\n\n return value\n}\n","import getError from './getError'\nimport Errors from '../Errors'\nimport {CurrentNodeInfo, SchemaNode, SchemaRecursiveNodeTypeExtras} from '../types/schema'\nimport {convertTypedSchema} from './convertTypedSchema'\nimport {isNil, type} from 'rambdax'\nimport {clone} from '../clone'\n\nexport default async function doValidation(params: CurrentNodeInfo) {\n convertTypedSchema(params)\n\n const {schema, doc, currentDoc, value, currentSchema, keys = [], addError, options, args} = params\n const info = {\n schema,\n doc,\n currentDoc,\n value,\n currentSchema,\n keys,\n options,\n args,\n addError,\n }\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 (type(currentSchema.type) === 'Object') {\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 } as any)\n }\n\n const documentKeys = Object.keys(value)\n const notInSchemaKeys = documentKeys.filter(key => !schemaKeys.includes(key))\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 (Array.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 {getSchemaFromAnyOrionForm} from '../models'\nimport {InferSchemaType} from '../types'\nimport {SchemaFieldType} from '../types/schema'\nimport doValidation from './doValidation'\nimport getValidationErrorsObject from './getValidationErrorsObject'\n\nconst defaultOptions = {\n omitRequired: false,\n}\n\nexport default async function getValidationErrors<TSchema extends SchemaFieldType>(\n schema: TSchema,\n doc: InferSchemaType<TSchema>,\n passedOptions = {},\n ...args\n) {\n schema = getSchemaFromAnyOrionForm(schema) as TSchema\n\n const options = {...defaultOptions, ...passedOptions}\n const errors: {key: string; code: string}[] = []\n\n const addError = (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 {InferSchemaType} from './types/fields'\nimport {SchemaFieldType} from './types/schema'\n\nexport default async function validate<TSchema extends SchemaFieldType>(\n schema: TSchema,\n doc: InferSchemaType<TSchema>,\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 {InferSchemaType} from './types'\nimport {Schema} from './types/schema'\n\nexport default async function isValid<TSchema extends Schema>(\n schema: TSchema,\n doc: InferSchemaType<TSchema>,\n passedOptions = {},\n ...args\n) {\n const validationErrors = await getValidationErrors(schema, doc, passedOptions, ...args)\n return !validationErrors\n}\n","import getFieldValidator from './getFieldValidator'\nimport fieldTypes from '../../fieldTypes'\nimport {SchemaFieldType} from '../../types/schema'\nimport {FieldValidatorType} from '../../types/fieldValidators'\nimport {FieldType} from '../../fieldType'\n\nexport default function getFieldType(type: SchemaFieldType | FieldValidatorType | any) {\n const validatorKey = getFieldValidator(type)\n const validator = validatorKey === 'custom' ? type : fieldTypes[validatorKey]\n return validator as FieldType\n}\n","import {type} from 'rambdax'\nimport {SchemaNode} from '../types/schema'\n\nexport default function getObjectNode(schema: Partial<SchemaNode>, value: any): SchemaNode {\n if (type(schema.type) === 'Object' && type(value) === 'Object') {\n const result = schema as any\n return result\n }\n\n return null\n}\n","import getFieldType from '../getValidationErrors/getError/getFieldType'\nimport {isNil} from 'rambdax'\nimport {CurrentNodeInfo, SchemaFieldType, SchemaNode, SchemaMetadata, Schema} from '../types/schema'\nimport {FieldValidatorType} from '../types/fieldValidators'\nimport getObjectNode from './getObjectNode'\n\nexport default async function cleanType<TSchema extends Schema>(\n type: SchemaFieldType | FieldValidatorType,\n fieldSchema: Partial<SchemaNode>,\n value: any,\n info: CurrentNodeInfo<TSchema>,\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 SchemaMetadata).__clean) {\n needReClean = true\n value = await (objectTypeSchema.type as SchemaMetadata).__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 {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 {isNil} from 'rambdax'\nimport cleanType from './cleanType'\nimport {CurrentNodeInfo, SchemaNode} from '../types/schema'\nimport getObjectNode from './getObjectNode'\nimport {convertTypedSchema} from '../getValidationErrors/convertTypedSchema'\n\nconst cleanObjectFields = async ({\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 (newValue !== undefined) {\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 ({\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: any) => {\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 => value !== undefined)\n}\n\nfunction getArrayNode(\n schema: Partial<SchemaNode>,\n value: any | Array<any>,\n): SchemaNode | undefined {\n if (Array.isArray(schema.type) && !isNil(value)) {\n const result = schema as SchemaNode\n return result\n }\n\n return null\n}\n\nconst clean = async (info: CurrentNodeInfo): Promise<any> => {\n convertTypedSchema(info)\n\n const {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 (!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 {getSchemaFromAnyOrionForm} from '../models'\nimport {InferSchemaType} from '../types'\nimport {CurrentNodeInfoOptions, SchemaFieldType} 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<TSchema extends SchemaFieldType>(\n schema: TSchema,\n doc: InferSchemaType<TSchema>,\n opts: CurrentNodeInfoOptions = {},\n ...args\n): Promise<InferSchemaType<TSchema>> {\n if (!doc) return doc\n schema = getSchemaFromAnyOrionForm(schema) as TSchema\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\n const cleanedResult = await recursiveClean(params as any)\n return cleanedResult\n}\n","import {Schema, SchemaNode} from '..'\nimport {isType, isNil} from 'rambdax'\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 }\n\n if (isType('Object', 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 }\n return null\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 Errors from '../Errors'\n\nexport default function createEnum<const TValues extends readonly string[]>(\n name: string,\n values: TValues,\n): FieldType<TValues[number]> {\n return 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 (typeof value !== 'string') return Errors.NOT_A_STRING\n\n if (!values.includes(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","import {createEnum} from '..'\nimport {FieldType} from '../fieldType'\nimport {Blackbox, Schema, SchemaMetaFieldTypeSingleNonSchema, TypedSchemaOnSchema} from './schema'\n\ntype InferSchemaTypeForFieldType<T> =\n // field type with setted _tsFieldType\n T extends {__tsFieldType: infer U}\n ? U\n : // typed as strings\n T extends 'string'\n ? string\n : T extends 'date'\n ? Date\n : T extends 'integer'\n ? number\n : T extends 'number'\n ? number\n : T extends 'ID'\n ? string\n : T extends 'boolean'\n ? boolean\n : T extends 'email'\n ? string\n : T extends 'blackbox'\n ? Blackbox\n : T extends 'any'\n ? any\n : // typed as object constructors (Like String, Number, Boolean, Date)\n T extends String\n ? string\n : T extends Number\n ? number\n : T extends Boolean\n ? boolean\n : T extends Date\n ? Date\n : T extends StringConstructor\n ? string\n : T extends NumberConstructor\n ? number\n : T extends BooleanConstructor\n ? boolean\n : T extends DateConstructor\n ? Date\n : // if is array, return infer the first element recursively\n T extends Array<infer U>\n ? InferSchemaTypeForFieldType<U>[]\n : // if is object, asume it's a schema and infer the type of the object\n T extends Record<string, any>\n ? InferSchemaTypeForSchema<T>\n : T\n\ntype SchemaKeysNotOfSchemaItems = '__isFieldType' | '__GraphQLType' | '__skipChildValidation'\n\ntype NodeIsOptional<TNode> = TNode extends {optional: true} ? true : false\n\n// esto hace que haya un infinity loopp\n// type NodeIsOptional<TNode> = TNode extends {optional: true}\n// ? true\n// : TNode extends {defaultValue: any}\n// ? true\n// : false\n\ntype WithoutNotSchemaItems<T extends Record<string, any>> = T extends {\n [key in SchemaKeysNotOfSchemaItems]: any\n} & Record<string, any>\n ? Omit<T, SchemaKeysNotOfSchemaItems>\n : T\n\ntype InferSchemaTypeForSchema<TSchema extends Record<string, any>> = WithoutNotSchemaItems<\n {\n -readonly [K in keyof TSchema as NodeIsOptional<TSchema[K]> extends true\n ? never\n : K]: InferSchemaType<TSchema[K]['type']>\n } & {\n -readonly [K in keyof TSchema as NodeIsOptional<TSchema[K]> extends true\n ? K\n : never]?: InferSchemaType<TSchema[K]['type']>\n }\n>\n\n// is a record with a child item that has type in its type\ntype IsPossiblyASchema<TType> = TType extends FieldType\n ? false\n : TType extends Record<string, any>\n ? keyof {\n [K in keyof TType as 'type' extends keyof TType[K] ? K : never]: TType[K]\n } extends never\n ? false\n : true\n : false\n\ntype AClass<T = any> = abstract new (...args: any) => T\n\n/**\n * Returns the type of the schema\n */\nexport type InferSchemaType<TType> = TType extends {__isModel: true; type: infer U}\n ? InferSchemaTypeForSchema<U>\n : TType extends SchemaMetaFieldTypeSingleNonSchema\n ? InferSchemaTypeForFieldType<TType>\n : TType extends AClass<infer U>\n ? U\n : IsPossiblyASchema<TType> extends true\n ? InferSchemaTypeForSchema<TType>\n : InferSchemaTypeForFieldType<TType>\n\n/**\n * Returns the type of the schema but only if its a schema\n */\nexport type StrictInferSchemaType<TSchema extends Schema> = InferSchemaTypeForSchema<TSchema>\n/**\n * Returns the type of the schema but only if its a schema\n */\nexport type InferSchemaTypeFromTypedSchema<TTypedSchema extends TypedSchemaOnSchema> = TTypedSchema\n\nconst subSchema = {\n name: {\n type: String,\n },\n}\n\nconst schema = {\n filter: {\n type: String,\n },\n sub: {\n type: subSchema,\n },\n gender: {\n type: createEnum('gender', ['male', 'female']),\n },\n page: {\n type: 'integer',\n defaultValue: 1,\n min: 1,\n },\n limit: {\n type: 'integer',\n defaultValue: 0,\n min: 0,\n max: 200,\n },\n sortBy: {\n type: String,\n optional: true,\n },\n sortType: {\n type: String,\n allowedValues: ['asc', 'desc'],\n optional: true,\n },\n} as const\n\ntype _ = InferSchemaType<typeof schema>\n\nconst _a: _ = {\n filter: '123',\n gender: 'male',\n sub: {\n name: '123',\n },\n limit: 1,\n page: 1,\n}\n\ntype _2 = NodeIsOptional<(typeof schema)['sortType']>\n","import {InferSchemaType, SchemaFieldType} from './types'\nimport clean from './clean'\nimport validate from './validate'\n\nexport async function cleanAndValidate<TSchema extends SchemaFieldType>(\n schema: TSchema,\n doc: InferSchemaType<TSchema>,\n): Promise<InferSchemaType<TSchema>> {\n const cleaned = await clean(schema, doc)\n await validate(schema, cleaned)\n return cleaned\n}\n","// import {ModelResolver, ModelResolverResolve} from '@orion-js/resolvers'\n\nimport {Schema} from '../types'\n\n/**\n * Assigns a name to a schema for GraphQL type generation.\n *\n * This function associates a name with a schema object by setting an internal\n * `__modelName` property. This name is used when generating GraphQL types.\n *\n * @param name - The name to assign to the schema\n * @param schema - The schema object to name\n * @returns The same schema object with the internal name property added\n *\n * Note: The schema object is modified in-place, so the name will persist\n * even if you don't use the returned value.\n */\nexport function schemaWithName<TModelName extends string, TSchema extends Schema>(\n name: TModelName,\n schema: TSchema,\n): TSchema {\n // @ts-ignore Internal property not included in type definition\n schema.__modelName = name\n return schema\n}\n","import {isEmpty, pick} from 'rambdax'\nimport {Schema, SchemaNode} from './types'\n\nexport type CloneSchemaOptions<\n TSchema extends Schema,\n TExtendFields extends Schema | undefined = undefined,\n TPickFields extends (keyof TSchema)[] | undefined = undefined,\n TOmitFields extends (keyof TSchema)[] | undefined = undefined,\n> = {\n /**\n * The schema to clone\n */\n schema: TSchema\n /**\n * The name of the cloned schema\n */\n name?: string\n /**\n * The schema to extend the cloned schema with\n */\n extendSchema?: TExtendFields\n /**\n * A function to map the fields of the cloned schema.\n * Warning: This function will not be applied to the typescript types of this schema.\n */\n mapFields?: (field: TSchema[keyof TSchema], key: keyof TSchema) => SchemaNode\n /**\n * The fields to pick from the cloned schema\n */\n pickFields?: TPickFields\n /**\n * The fields to omit from the cloned schema\n */\n omitFields?: TOmitFields\n}\n\n// TExtendFields should replace TSchema if present\ntype ExtendFields<\n TSchema extends Schema,\n TExtendFields extends Schema | undefined,\n> = TExtendFields extends undefined\n ? TSchema\n : {\n [key in keyof (TSchema & TExtendFields)]: key extends keyof TExtendFields\n ? TExtendFields[key]\n : key extends keyof TSchema\n ? TSchema[key]\n : never\n }\n\ntype PickOrOmit<\n TSchema extends Schema,\n TPickFields extends (keyof TSchema)[] | undefined = undefined,\n TOmitFields extends (keyof TSchema)[] | undefined = undefined,\n> = TPickFields extends undefined\n ? TOmitFields extends undefined\n ? TSchema\n : Omit<TSchema, TOmitFields[number]>\n : Pick<TSchema, TPickFields[number]>\n\nexport type ClonedSchema<\n TSchema extends Schema,\n TExtendFields extends Schema | undefined = undefined,\n TPickFields extends (keyof TSchema)[] | undefined = undefined,\n TOmitFields extends (keyof TSchema)[] | undefined = undefined,\n> = ExtendFields<PickOrOmit<TSchema, TPickFields, TOmitFields>, TExtendFields>\n\nexport function cloneSchema<\n TSchema extends Schema,\n TExtendFields extends Schema | undefined = undefined,\n TPickFields extends (keyof TSchema)[] | undefined = undefined,\n TOmitFields extends (keyof TSchema)[] | undefined = undefined,\n>(\n options: CloneSchemaOptions<TSchema, TExtendFields, TPickFields, TOmitFields>,\n): ClonedSchema<TSchema, TExtendFields, TPickFields, TOmitFields> {\n const {schema, extendSchema, mapFields, pickFields, omitFields} = options\n\n const originalMetaKeys = Object.keys(schema).filter(key => key.startsWith('__'))\n const originalMetaFields = pick(originalMetaKeys, schema)\n\n const cloned = {...schema} as any\n\n if (pickFields?.length) {\n for (const key in cloned) {\n if (!pickFields.includes(key)) {\n delete cloned[key]\n }\n }\n }\n\n if (omitFields?.length) {\n for (const key in cloned) {\n if (omitFields.includes(key)) {\n delete cloned[key]\n }\n }\n }\n\n if (!isEmpty(extendSchema)) {\n for (const key in extendSchema) {\n cloned[key] = extendSchema[key]\n }\n }\n\n if (mapFields) {\n for (const key in cloned) {\n cloned[key] = mapFields(cloned[key], key)\n }\n }\n\n for (const key of originalMetaKeys) {\n if (originalMetaFields[key]) {\n cloned[key] = originalMetaFields[key]\n }\n }\n\n if (options.name) {\n cloned.__modelName = options.name\n }\n\n return cloned\n}\n"],"mappings":"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","names":["validate","clean","type","type","schema","type","type","clone","schema","type","clone","getValidationErrors","schema","schema","getValidationErrors","schema","getValidationErrors","type","schema","type","clean","schema","value","result","defaultOptions","clean","schema","dotGet","schema","dotGetSchema_default","defaultOptions","schema","dotGetSchema_default","clean","defaultOptions","schema","getValidationErrors","schema","clean","schema","schema"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orion-js/schema",
3
- "version": "4.0.7",
3
+ "version": "4.0.9",
4
4
  "main": "./dist/index.cjs",
5
5
  "types": "./dist/index.d.ts",
6
6
  "files": [