@orion-js/schema 4.0.0 → 4.0.1
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 +84 -46
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +10 -4
- package/dist/index.d.ts +10 -4
- package/dist/index.js +84 -46
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -503,8 +503,8 @@ function getSchemaWithMetadataFromAnyOrionForm(type2) {
|
|
|
503
503
|
|
|
504
504
|
// src/getValidationErrors/getError/index.ts
|
|
505
505
|
async function getValidationErrors(params) {
|
|
506
|
-
const { schema, doc, currentDoc, value, currentSchema, keys, options = {}, args = [] } = params;
|
|
507
|
-
const info = { schema, doc, currentDoc, keys, currentSchema, options };
|
|
506
|
+
const { schema: schema2, doc, currentDoc, value, currentSchema, keys, options = {}, args = [] } = params;
|
|
507
|
+
const info = { schema: schema2, doc, currentDoc, keys, currentSchema, options };
|
|
508
508
|
if (isNil(value)) {
|
|
509
509
|
if (!currentSchema.optional && !options.omitRequired) {
|
|
510
510
|
return Errors_default.REQUIRED;
|
|
@@ -536,11 +536,11 @@ async function getValidationErrors(params) {
|
|
|
536
536
|
|
|
537
537
|
// src/getSchemaFromTypedSchema.ts
|
|
538
538
|
Symbol.metadata ?? (Symbol.metadata = Symbol("Symbol.metadata"));
|
|
539
|
-
var getSchemaFromTypedSchema = (
|
|
540
|
-
const item =
|
|
541
|
-
if (!
|
|
542
|
-
if (!
|
|
543
|
-
return
|
|
539
|
+
var getSchemaFromTypedSchema = (schema2) => {
|
|
540
|
+
const item = schema2;
|
|
541
|
+
if (!schema2[Symbol.metadata]) return item;
|
|
542
|
+
if (!schema2[Symbol.metadata]._isTypedSchema) return item;
|
|
543
|
+
return schema2[Symbol.metadata]._getModel().getSchema();
|
|
544
544
|
};
|
|
545
545
|
|
|
546
546
|
// src/getValidationErrors/convertTypedSchema.ts
|
|
@@ -569,9 +569,9 @@ function clone2(value) {
|
|
|
569
569
|
// src/getValidationErrors/doValidation.ts
|
|
570
570
|
async function doValidation(params) {
|
|
571
571
|
convertTypedSchema(params);
|
|
572
|
-
const { schema, doc, currentDoc, value, currentSchema, keys = [], addError, options, args } = params;
|
|
572
|
+
const { schema: schema2, doc, currentDoc, value, currentSchema, keys = [], addError, options, args } = params;
|
|
573
573
|
const info = {
|
|
574
|
-
schema,
|
|
574
|
+
schema: schema2,
|
|
575
575
|
doc,
|
|
576
576
|
currentDoc,
|
|
577
577
|
value,
|
|
@@ -653,8 +653,8 @@ function getValidationErrorsObject(validationErrors) {
|
|
|
653
653
|
var defaultOptions = {
|
|
654
654
|
omitRequired: false
|
|
655
655
|
};
|
|
656
|
-
async function getValidationErrors2(
|
|
657
|
-
|
|
656
|
+
async function getValidationErrors2(schema2, doc, passedOptions = {}, ...args) {
|
|
657
|
+
schema2 = getSchemaFromAnyOrionForm(schema2);
|
|
658
658
|
const options = { ...defaultOptions, ...passedOptions };
|
|
659
659
|
const errors = [];
|
|
660
660
|
const addError = (keys, code) => {
|
|
@@ -664,11 +664,11 @@ async function getValidationErrors2(schema, doc, passedOptions = {}, ...args) {
|
|
|
664
664
|
});
|
|
665
665
|
};
|
|
666
666
|
await doValidation({
|
|
667
|
-
schema,
|
|
667
|
+
schema: schema2,
|
|
668
668
|
doc,
|
|
669
669
|
currentDoc: doc,
|
|
670
670
|
value: doc,
|
|
671
|
-
currentSchema: { type:
|
|
671
|
+
currentSchema: { type: schema2 },
|
|
672
672
|
addError,
|
|
673
673
|
options,
|
|
674
674
|
args
|
|
@@ -677,16 +677,16 @@ async function getValidationErrors2(schema, doc, passedOptions = {}, ...args) {
|
|
|
677
677
|
}
|
|
678
678
|
|
|
679
679
|
// src/validate.ts
|
|
680
|
-
async function validate(
|
|
681
|
-
const validationErrors = await getValidationErrors2(
|
|
680
|
+
async function validate(schema2, doc, passedOptions = {}, ...args) {
|
|
681
|
+
const validationErrors = await getValidationErrors2(schema2, doc, passedOptions, ...args);
|
|
682
682
|
if (validationErrors) {
|
|
683
683
|
throw new ValidationError(validationErrors);
|
|
684
684
|
}
|
|
685
685
|
}
|
|
686
686
|
|
|
687
687
|
// src/isValid.ts
|
|
688
|
-
async function isValid(
|
|
689
|
-
const validationErrors = await getValidationErrors2(
|
|
688
|
+
async function isValid(schema2, doc, passedOptions = {}, ...args) {
|
|
689
|
+
const validationErrors = await getValidationErrors2(schema2, doc, passedOptions, ...args);
|
|
690
690
|
return !validationErrors;
|
|
691
691
|
}
|
|
692
692
|
|
|
@@ -698,9 +698,9 @@ function getFieldType(type2) {
|
|
|
698
698
|
}
|
|
699
699
|
|
|
700
700
|
// src/clean/getObjectNode.ts
|
|
701
|
-
function getObjectNode(
|
|
702
|
-
if (type(
|
|
703
|
-
const result =
|
|
701
|
+
function getObjectNode(schema2, value) {
|
|
702
|
+
if (type(schema2.type) === "Object" && type(value) === "Object") {
|
|
703
|
+
const result = schema2;
|
|
704
704
|
return result;
|
|
705
705
|
}
|
|
706
706
|
return null;
|
|
@@ -744,17 +744,17 @@ async function cleanType(type2, fieldSchema, value, info, ...args) {
|
|
|
744
744
|
|
|
745
745
|
// src/clean/recursiveClean.ts
|
|
746
746
|
var cleanObjectFields = async ({
|
|
747
|
-
schema,
|
|
747
|
+
schema: schema2,
|
|
748
748
|
value,
|
|
749
749
|
...other
|
|
750
750
|
}) => {
|
|
751
|
-
const keys = Object.keys(
|
|
751
|
+
const keys = Object.keys(schema2.type).filter((key) => !key.startsWith("__"));
|
|
752
752
|
const newDoc = {};
|
|
753
753
|
for (const key of keys) {
|
|
754
754
|
try {
|
|
755
755
|
const cleanOptions = {
|
|
756
756
|
...other,
|
|
757
|
-
schema:
|
|
757
|
+
schema: schema2.type[key],
|
|
758
758
|
value: value[key],
|
|
759
759
|
currentDoc: value
|
|
760
760
|
};
|
|
@@ -769,11 +769,11 @@ var cleanObjectFields = async ({
|
|
|
769
769
|
return newDoc;
|
|
770
770
|
};
|
|
771
771
|
var cleanArrayItems = async ({
|
|
772
|
-
schema,
|
|
772
|
+
schema: schema2,
|
|
773
773
|
value,
|
|
774
774
|
...other
|
|
775
775
|
}) => {
|
|
776
|
-
const schemaType =
|
|
776
|
+
const schemaType = schema2.type[0];
|
|
777
777
|
const promises = value.map(async (item) => {
|
|
778
778
|
const newValue = await clean({
|
|
779
779
|
...other,
|
|
@@ -788,17 +788,17 @@ var cleanArrayItems = async ({
|
|
|
788
788
|
const result = await Promise.all(promises);
|
|
789
789
|
return result.filter((value2) => value2 !== void 0);
|
|
790
790
|
};
|
|
791
|
-
function getArrayNode(
|
|
792
|
-
if (Array.isArray(
|
|
793
|
-
const result =
|
|
791
|
+
function getArrayNode(schema2, value) {
|
|
792
|
+
if (Array.isArray(schema2.type) && !isNil(value)) {
|
|
793
|
+
const result = schema2;
|
|
794
794
|
return result;
|
|
795
795
|
}
|
|
796
796
|
return null;
|
|
797
797
|
}
|
|
798
798
|
var clean = async (info) => {
|
|
799
799
|
convertTypedSchema(info);
|
|
800
|
-
const { schema, args = [], value } = info;
|
|
801
|
-
const currSchema =
|
|
800
|
+
const { schema: schema2, args = [], value } = info;
|
|
801
|
+
const currSchema = schema2.type === void 0 ? { type: schema2 } : schema2;
|
|
802
802
|
const objectSchema = getObjectNode(currSchema, value);
|
|
803
803
|
if (objectSchema) {
|
|
804
804
|
const newDoc = await cleanObjectFields({
|
|
@@ -835,12 +835,12 @@ var defaultOptions2 = {
|
|
|
835
835
|
trimStrings: true,
|
|
836
836
|
removeEmptyStrings: false
|
|
837
837
|
};
|
|
838
|
-
async function clean2(
|
|
838
|
+
async function clean2(schema2, doc, opts = {}, ...args) {
|
|
839
839
|
if (!doc) return doc;
|
|
840
|
-
|
|
840
|
+
schema2 = getSchemaFromAnyOrionForm(schema2);
|
|
841
841
|
const options = { ...defaultOptions2, ...opts };
|
|
842
842
|
const params = {
|
|
843
|
-
schema: { type:
|
|
843
|
+
schema: { type: schema2 },
|
|
844
844
|
value: doc,
|
|
845
845
|
doc: options.forceDoc || doc,
|
|
846
846
|
currentDoc: doc,
|
|
@@ -869,11 +869,11 @@ var dotGet = function dotGet2(object, path) {
|
|
|
869
869
|
}
|
|
870
870
|
return null;
|
|
871
871
|
};
|
|
872
|
-
function dotGetSchema_default(
|
|
873
|
-
if (isNil(
|
|
872
|
+
function dotGetSchema_default(schema2, path) {
|
|
873
|
+
if (isNil(schema2)) {
|
|
874
874
|
throw new Error("You need to pass a schema");
|
|
875
875
|
}
|
|
876
|
-
return dotGet({ type:
|
|
876
|
+
return dotGet({ type: schema2 }, path);
|
|
877
877
|
}
|
|
878
878
|
|
|
879
879
|
// src/dotGetSchema.ts
|
|
@@ -883,9 +883,9 @@ var dotGetSchema_default2 = dotGetSchema_default;
|
|
|
883
883
|
var defaultOptions3 = {
|
|
884
884
|
filter: true
|
|
885
885
|
};
|
|
886
|
-
async function cleanKey_default(
|
|
886
|
+
async function cleanKey_default(schema2, key, value, passedOptions = {}, ...args) {
|
|
887
887
|
const options = { ...defaultOptions3, ...passedOptions };
|
|
888
|
-
const keySchema = dotGetSchema_default2(
|
|
888
|
+
const keySchema = dotGetSchema_default2(schema2, key);
|
|
889
889
|
if (!keySchema) {
|
|
890
890
|
if (options.filter) {
|
|
891
891
|
return;
|
|
@@ -901,9 +901,9 @@ async function cleanKey_default(schema, key, value, passedOptions = {}, ...args)
|
|
|
901
901
|
var defaultOptions4 = {
|
|
902
902
|
filter: false
|
|
903
903
|
};
|
|
904
|
-
async function validateKey_default(
|
|
904
|
+
async function validateKey_default(schema2, key, value, passedOptions = {}, ...args) {
|
|
905
905
|
const options = { ...defaultOptions4, ...passedOptions };
|
|
906
|
-
const keySchema = dotGetSchema_default(
|
|
906
|
+
const keySchema = dotGetSchema_default(schema2, key);
|
|
907
907
|
if (!keySchema) {
|
|
908
908
|
if (options.filter) {
|
|
909
909
|
return Errors_default.NOT_IN_SCHEMA;
|
|
@@ -966,17 +966,55 @@ function createEnum(name, values) {
|
|
|
966
966
|
});
|
|
967
967
|
}
|
|
968
968
|
|
|
969
|
+
// src/types/fields.ts
|
|
970
|
+
var subSchema = {
|
|
971
|
+
name: {
|
|
972
|
+
type: String
|
|
973
|
+
}
|
|
974
|
+
};
|
|
975
|
+
var schema = {
|
|
976
|
+
filter: {
|
|
977
|
+
type: String
|
|
978
|
+
},
|
|
979
|
+
sub: {
|
|
980
|
+
type: subSchema
|
|
981
|
+
},
|
|
982
|
+
gender: {
|
|
983
|
+
type: createEnum("gender", ["male", "female"])
|
|
984
|
+
},
|
|
985
|
+
page: {
|
|
986
|
+
type: "integer",
|
|
987
|
+
defaultValue: 1,
|
|
988
|
+
min: 1
|
|
989
|
+
},
|
|
990
|
+
limit: {
|
|
991
|
+
type: "integer",
|
|
992
|
+
defaultValue: 0,
|
|
993
|
+
min: 0,
|
|
994
|
+
max: 200
|
|
995
|
+
},
|
|
996
|
+
sortBy: {
|
|
997
|
+
type: String,
|
|
998
|
+
optional: true
|
|
999
|
+
},
|
|
1000
|
+
sortType: {
|
|
1001
|
+
type: String,
|
|
1002
|
+
allowedValues: ["asc", "desc"],
|
|
1003
|
+
optional: true
|
|
1004
|
+
}
|
|
1005
|
+
};
|
|
1006
|
+
|
|
969
1007
|
// src/cleanAndValidate.ts
|
|
970
|
-
async function cleanAndValidate(
|
|
971
|
-
const cleaned = await clean2(
|
|
972
|
-
await validate(
|
|
1008
|
+
async function cleanAndValidate(schema2, doc) {
|
|
1009
|
+
const cleaned = await clean2(schema2, doc);
|
|
1010
|
+
await validate(schema2, cleaned);
|
|
973
1011
|
return cleaned;
|
|
974
1012
|
}
|
|
975
1013
|
|
|
976
1014
|
// src/schemaWithName/index.ts
|
|
977
|
-
function schemaWithName(name,
|
|
978
|
-
|
|
979
|
-
return
|
|
1015
|
+
function schemaWithName(name, schema2) {
|
|
1016
|
+
schema2.__modelName = name;
|
|
1017
|
+
return schema2;
|
|
980
1018
|
}
|
|
981
1019
|
// Annotate the CommonJS export names for ESM import in node:
|
|
982
1020
|
0 && (module.exports = {
|
package/dist/index.cjs.map
CHANGED
|
@@ -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/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/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/cleanAndValidate.ts","../src/schemaWithName/index.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'\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","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","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, 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 __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 {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"],"mappings":"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","names":["clean","dotGetSchema_default","getValidationErrors","validate","clean","type","type","type","type","clone","type","clone","Dot","getValidationErrors","getValidationErrors","getValidationErrors","type","type","clean","value","result","defaultOptions","clean","dotGet","dotGetSchema_default","defaultOptions","dotGetSchema_default","clean","defaultOptions","getValidationErrors","clean"]}
|
|
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/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/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"],"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'\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","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","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, 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 __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\nexport type Simplifed<T> = {\n [K in keyof T]: T[K] extends object ? Simplifed<T[K]> : T[K]\n}\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>> = Simplifed<\n 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\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"],"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"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -153,15 +153,21 @@ interface FieldType<TType = any> {
|
|
|
153
153
|
type InferSchemaTypeForFieldType<T> = T extends {
|
|
154
154
|
__tsFieldType: infer U;
|
|
155
155
|
} ? U : T extends 'string' ? string : T extends 'date' ? Date : T extends 'integer' ? number : T extends 'number' ? number : T extends 'ID' ? string : T extends 'boolean' ? boolean : T extends 'email' ? string : T extends 'blackbox' ? Blackbox : T extends 'any' ? any : T extends String ? string : T extends Number ? number : T extends Boolean ? boolean : T extends Date ? Date : T extends StringConstructor ? string : T extends NumberConstructor ? number : T extends BooleanConstructor ? boolean : T extends DateConstructor ? Date : T extends Array<infer U> ? InferSchemaTypeForFieldType<U>[] : T extends Record<string, any> ? InferSchemaTypeForSchema<T> : T;
|
|
156
|
-
type SchemaKeysNotOfSchemaItems =
|
|
156
|
+
type SchemaKeysNotOfSchemaItems = '__isFieldType' | '__GraphQLType' | '__skipChildValidation';
|
|
157
157
|
type NodeIsOptional<TNode> = TNode extends {
|
|
158
158
|
optional: true;
|
|
159
159
|
} ? true : false;
|
|
160
|
-
type
|
|
160
|
+
type Simplifed<T> = {
|
|
161
|
+
[K in keyof T]: T[K] extends object ? Simplifed<T[K]> : T[K];
|
|
162
|
+
};
|
|
163
|
+
type WithoutNotSchemaItems<T extends Record<string, any>> = T extends {
|
|
164
|
+
[key in SchemaKeysNotOfSchemaItems]: any;
|
|
165
|
+
} & Record<string, any> ? Omit<T, SchemaKeysNotOfSchemaItems> : T;
|
|
166
|
+
type InferSchemaTypeForSchema<TSchema extends Record<string, any>> = Simplifed<WithoutNotSchemaItems<{
|
|
161
167
|
-readonly [K in keyof TSchema as NodeIsOptional<TSchema[K]> extends true ? never : K]: InferSchemaType<TSchema[K]['type']>;
|
|
162
168
|
} & {
|
|
163
169
|
-readonly [K in keyof TSchema as NodeIsOptional<TSchema[K]> extends true ? K : never]?: InferSchemaType<TSchema[K]['type']>;
|
|
164
|
-
}
|
|
170
|
+
}>>;
|
|
165
171
|
type IsPossiblyASchema<TType> = TType extends FieldType ? false : TType extends Record<string, any> ? keyof {
|
|
166
172
|
[K in keyof TType as 'type' extends keyof TType[K] ? K : never]: TType[K];
|
|
167
173
|
} extends never ? false : true : false;
|
|
@@ -257,4 +263,4 @@ declare function cleanAndValidate<TSchema extends SchemaFieldType>(schema: TSche
|
|
|
257
263
|
*/
|
|
258
264
|
declare function schemaWithName<TModelName extends string, TSchema extends Schema>(name: TModelName, schema: TSchema): TSchema;
|
|
259
265
|
|
|
260
|
-
export { type Blackbox, type CleanFunction, type Constructor, type ConstructorsTypesList, type CurrentNodeInfo, type CurrentNodeInfoOptions, type FieldType, type FieldTypeOpts, type FieldTypesList, type FieldValidatorType, type InferSchemaType, type InferSchemaTypeFromTypedSchema, type MergeSchemas, type Schema, type SchemaFieldType, type SchemaFieldTypeNonSchema, type SchemaInAnyOrionForm, type SchemaMetaFieldTypeSingle, type SchemaMetaFieldTypeSingleNonSchema, type SchemaMetadata, type SchemaNode, type SchemaRecursiveNodeTypeExtras, type SchemaWithMetadata, type SingleLevelSchema, type StrictInferSchemaType, type TypedSchemaOnSchema, type ValidateFunction, ValidationError, clean, cleanAndValidate, export_default$2 as cleanKey, createEnum, export_default as dotGetSchema, _default as fieldTypes, getFieldType, getSchemaFromAnyOrionForm, getSchemaModelName, getSchemaWithMetadataFromAnyOrionForm, getValidationErrors, isSchemaLike, isSchemaOrFieldLike, isStrictSchemaLike, isValid, schemaWithName, validate, export_default$1 as validateKey };
|
|
266
|
+
export { type Blackbox, type CleanFunction, type Constructor, type ConstructorsTypesList, type CurrentNodeInfo, type CurrentNodeInfoOptions, type FieldType, type FieldTypeOpts, type FieldTypesList, type FieldValidatorType, type InferSchemaType, type InferSchemaTypeFromTypedSchema, type MergeSchemas, type Schema, type SchemaFieldType, type SchemaFieldTypeNonSchema, type SchemaInAnyOrionForm, type SchemaMetaFieldTypeSingle, type SchemaMetaFieldTypeSingleNonSchema, type SchemaMetadata, type SchemaNode, type SchemaRecursiveNodeTypeExtras, type SchemaWithMetadata, type Simplifed, type SingleLevelSchema, type StrictInferSchemaType, type TypedSchemaOnSchema, type ValidateFunction, ValidationError, clean, cleanAndValidate, export_default$2 as cleanKey, createEnum, export_default as dotGetSchema, _default as fieldTypes, getFieldType, getSchemaFromAnyOrionForm, getSchemaModelName, getSchemaWithMetadataFromAnyOrionForm, getValidationErrors, isSchemaLike, isSchemaOrFieldLike, isStrictSchemaLike, isValid, schemaWithName, validate, export_default$1 as validateKey };
|
package/dist/index.d.ts
CHANGED
|
@@ -153,15 +153,21 @@ interface FieldType<TType = any> {
|
|
|
153
153
|
type InferSchemaTypeForFieldType<T> = T extends {
|
|
154
154
|
__tsFieldType: infer U;
|
|
155
155
|
} ? U : T extends 'string' ? string : T extends 'date' ? Date : T extends 'integer' ? number : T extends 'number' ? number : T extends 'ID' ? string : T extends 'boolean' ? boolean : T extends 'email' ? string : T extends 'blackbox' ? Blackbox : T extends 'any' ? any : T extends String ? string : T extends Number ? number : T extends Boolean ? boolean : T extends Date ? Date : T extends StringConstructor ? string : T extends NumberConstructor ? number : T extends BooleanConstructor ? boolean : T extends DateConstructor ? Date : T extends Array<infer U> ? InferSchemaTypeForFieldType<U>[] : T extends Record<string, any> ? InferSchemaTypeForSchema<T> : T;
|
|
156
|
-
type SchemaKeysNotOfSchemaItems =
|
|
156
|
+
type SchemaKeysNotOfSchemaItems = '__isFieldType' | '__GraphQLType' | '__skipChildValidation';
|
|
157
157
|
type NodeIsOptional<TNode> = TNode extends {
|
|
158
158
|
optional: true;
|
|
159
159
|
} ? true : false;
|
|
160
|
-
type
|
|
160
|
+
type Simplifed<T> = {
|
|
161
|
+
[K in keyof T]: T[K] extends object ? Simplifed<T[K]> : T[K];
|
|
162
|
+
};
|
|
163
|
+
type WithoutNotSchemaItems<T extends Record<string, any>> = T extends {
|
|
164
|
+
[key in SchemaKeysNotOfSchemaItems]: any;
|
|
165
|
+
} & Record<string, any> ? Omit<T, SchemaKeysNotOfSchemaItems> : T;
|
|
166
|
+
type InferSchemaTypeForSchema<TSchema extends Record<string, any>> = Simplifed<WithoutNotSchemaItems<{
|
|
161
167
|
-readonly [K in keyof TSchema as NodeIsOptional<TSchema[K]> extends true ? never : K]: InferSchemaType<TSchema[K]['type']>;
|
|
162
168
|
} & {
|
|
163
169
|
-readonly [K in keyof TSchema as NodeIsOptional<TSchema[K]> extends true ? K : never]?: InferSchemaType<TSchema[K]['type']>;
|
|
164
|
-
}
|
|
170
|
+
}>>;
|
|
165
171
|
type IsPossiblyASchema<TType> = TType extends FieldType ? false : TType extends Record<string, any> ? keyof {
|
|
166
172
|
[K in keyof TType as 'type' extends keyof TType[K] ? K : never]: TType[K];
|
|
167
173
|
} extends never ? false : true : false;
|
|
@@ -257,4 +263,4 @@ declare function cleanAndValidate<TSchema extends SchemaFieldType>(schema: TSche
|
|
|
257
263
|
*/
|
|
258
264
|
declare function schemaWithName<TModelName extends string, TSchema extends Schema>(name: TModelName, schema: TSchema): TSchema;
|
|
259
265
|
|
|
260
|
-
export { type Blackbox, type CleanFunction, type Constructor, type ConstructorsTypesList, type CurrentNodeInfo, type CurrentNodeInfoOptions, type FieldType, type FieldTypeOpts, type FieldTypesList, type FieldValidatorType, type InferSchemaType, type InferSchemaTypeFromTypedSchema, type MergeSchemas, type Schema, type SchemaFieldType, type SchemaFieldTypeNonSchema, type SchemaInAnyOrionForm, type SchemaMetaFieldTypeSingle, type SchemaMetaFieldTypeSingleNonSchema, type SchemaMetadata, type SchemaNode, type SchemaRecursiveNodeTypeExtras, type SchemaWithMetadata, type SingleLevelSchema, type StrictInferSchemaType, type TypedSchemaOnSchema, type ValidateFunction, ValidationError, clean, cleanAndValidate, export_default$2 as cleanKey, createEnum, export_default as dotGetSchema, _default as fieldTypes, getFieldType, getSchemaFromAnyOrionForm, getSchemaModelName, getSchemaWithMetadataFromAnyOrionForm, getValidationErrors, isSchemaLike, isSchemaOrFieldLike, isStrictSchemaLike, isValid, schemaWithName, validate, export_default$1 as validateKey };
|
|
266
|
+
export { type Blackbox, type CleanFunction, type Constructor, type ConstructorsTypesList, type CurrentNodeInfo, type CurrentNodeInfoOptions, type FieldType, type FieldTypeOpts, type FieldTypesList, type FieldValidatorType, type InferSchemaType, type InferSchemaTypeFromTypedSchema, type MergeSchemas, type Schema, type SchemaFieldType, type SchemaFieldTypeNonSchema, type SchemaInAnyOrionForm, type SchemaMetaFieldTypeSingle, type SchemaMetaFieldTypeSingleNonSchema, type SchemaMetadata, type SchemaNode, type SchemaRecursiveNodeTypeExtras, type SchemaWithMetadata, type Simplifed, type SingleLevelSchema, type StrictInferSchemaType, type TypedSchemaOnSchema, type ValidateFunction, ValidationError, clean, cleanAndValidate, export_default$2 as cleanKey, createEnum, export_default as dotGetSchema, _default as fieldTypes, getFieldType, getSchemaFromAnyOrionForm, getSchemaModelName, getSchemaWithMetadataFromAnyOrionForm, getValidationErrors, isSchemaLike, isSchemaOrFieldLike, isStrictSchemaLike, isValid, schemaWithName, validate, export_default$1 as validateKey };
|
package/dist/index.js
CHANGED
|
@@ -450,8 +450,8 @@ function getSchemaWithMetadataFromAnyOrionForm(type2) {
|
|
|
450
450
|
|
|
451
451
|
// src/getValidationErrors/getError/index.ts
|
|
452
452
|
async function getValidationErrors(params) {
|
|
453
|
-
const { schema, doc, currentDoc, value, currentSchema, keys, options = {}, args = [] } = params;
|
|
454
|
-
const info = { schema, doc, currentDoc, keys, currentSchema, options };
|
|
453
|
+
const { schema: schema2, doc, currentDoc, value, currentSchema, keys, options = {}, args = [] } = params;
|
|
454
|
+
const info = { schema: schema2, doc, currentDoc, keys, currentSchema, options };
|
|
455
455
|
if (isNil(value)) {
|
|
456
456
|
if (!currentSchema.optional && !options.omitRequired) {
|
|
457
457
|
return Errors_default.REQUIRED;
|
|
@@ -483,11 +483,11 @@ async function getValidationErrors(params) {
|
|
|
483
483
|
|
|
484
484
|
// src/getSchemaFromTypedSchema.ts
|
|
485
485
|
Symbol.metadata ?? (Symbol.metadata = Symbol("Symbol.metadata"));
|
|
486
|
-
var getSchemaFromTypedSchema = (
|
|
487
|
-
const item =
|
|
488
|
-
if (!
|
|
489
|
-
if (!
|
|
490
|
-
return
|
|
486
|
+
var getSchemaFromTypedSchema = (schema2) => {
|
|
487
|
+
const item = schema2;
|
|
488
|
+
if (!schema2[Symbol.metadata]) return item;
|
|
489
|
+
if (!schema2[Symbol.metadata]._isTypedSchema) return item;
|
|
490
|
+
return schema2[Symbol.metadata]._getModel().getSchema();
|
|
491
491
|
};
|
|
492
492
|
|
|
493
493
|
// src/getValidationErrors/convertTypedSchema.ts
|
|
@@ -516,9 +516,9 @@ function clone2(value) {
|
|
|
516
516
|
// src/getValidationErrors/doValidation.ts
|
|
517
517
|
async function doValidation(params) {
|
|
518
518
|
convertTypedSchema(params);
|
|
519
|
-
const { schema, doc, currentDoc, value, currentSchema, keys = [], addError, options, args } = params;
|
|
519
|
+
const { schema: schema2, doc, currentDoc, value, currentSchema, keys = [], addError, options, args } = params;
|
|
520
520
|
const info = {
|
|
521
|
-
schema,
|
|
521
|
+
schema: schema2,
|
|
522
522
|
doc,
|
|
523
523
|
currentDoc,
|
|
524
524
|
value,
|
|
@@ -600,8 +600,8 @@ function getValidationErrorsObject(validationErrors) {
|
|
|
600
600
|
var defaultOptions = {
|
|
601
601
|
omitRequired: false
|
|
602
602
|
};
|
|
603
|
-
async function getValidationErrors2(
|
|
604
|
-
|
|
603
|
+
async function getValidationErrors2(schema2, doc, passedOptions = {}, ...args) {
|
|
604
|
+
schema2 = getSchemaFromAnyOrionForm(schema2);
|
|
605
605
|
const options = { ...defaultOptions, ...passedOptions };
|
|
606
606
|
const errors = [];
|
|
607
607
|
const addError = (keys, code) => {
|
|
@@ -611,11 +611,11 @@ async function getValidationErrors2(schema, doc, passedOptions = {}, ...args) {
|
|
|
611
611
|
});
|
|
612
612
|
};
|
|
613
613
|
await doValidation({
|
|
614
|
-
schema,
|
|
614
|
+
schema: schema2,
|
|
615
615
|
doc,
|
|
616
616
|
currentDoc: doc,
|
|
617
617
|
value: doc,
|
|
618
|
-
currentSchema: { type:
|
|
618
|
+
currentSchema: { type: schema2 },
|
|
619
619
|
addError,
|
|
620
620
|
options,
|
|
621
621
|
args
|
|
@@ -624,16 +624,16 @@ async function getValidationErrors2(schema, doc, passedOptions = {}, ...args) {
|
|
|
624
624
|
}
|
|
625
625
|
|
|
626
626
|
// src/validate.ts
|
|
627
|
-
async function validate(
|
|
628
|
-
const validationErrors = await getValidationErrors2(
|
|
627
|
+
async function validate(schema2, doc, passedOptions = {}, ...args) {
|
|
628
|
+
const validationErrors = await getValidationErrors2(schema2, doc, passedOptions, ...args);
|
|
629
629
|
if (validationErrors) {
|
|
630
630
|
throw new ValidationError(validationErrors);
|
|
631
631
|
}
|
|
632
632
|
}
|
|
633
633
|
|
|
634
634
|
// src/isValid.ts
|
|
635
|
-
async function isValid(
|
|
636
|
-
const validationErrors = await getValidationErrors2(
|
|
635
|
+
async function isValid(schema2, doc, passedOptions = {}, ...args) {
|
|
636
|
+
const validationErrors = await getValidationErrors2(schema2, doc, passedOptions, ...args);
|
|
637
637
|
return !validationErrors;
|
|
638
638
|
}
|
|
639
639
|
|
|
@@ -645,9 +645,9 @@ function getFieldType(type2) {
|
|
|
645
645
|
}
|
|
646
646
|
|
|
647
647
|
// src/clean/getObjectNode.ts
|
|
648
|
-
function getObjectNode(
|
|
649
|
-
if (type(
|
|
650
|
-
const result =
|
|
648
|
+
function getObjectNode(schema2, value) {
|
|
649
|
+
if (type(schema2.type) === "Object" && type(value) === "Object") {
|
|
650
|
+
const result = schema2;
|
|
651
651
|
return result;
|
|
652
652
|
}
|
|
653
653
|
return null;
|
|
@@ -691,17 +691,17 @@ async function cleanType(type2, fieldSchema, value, info, ...args) {
|
|
|
691
691
|
|
|
692
692
|
// src/clean/recursiveClean.ts
|
|
693
693
|
var cleanObjectFields = async ({
|
|
694
|
-
schema,
|
|
694
|
+
schema: schema2,
|
|
695
695
|
value,
|
|
696
696
|
...other
|
|
697
697
|
}) => {
|
|
698
|
-
const keys = Object.keys(
|
|
698
|
+
const keys = Object.keys(schema2.type).filter((key) => !key.startsWith("__"));
|
|
699
699
|
const newDoc = {};
|
|
700
700
|
for (const key of keys) {
|
|
701
701
|
try {
|
|
702
702
|
const cleanOptions = {
|
|
703
703
|
...other,
|
|
704
|
-
schema:
|
|
704
|
+
schema: schema2.type[key],
|
|
705
705
|
value: value[key],
|
|
706
706
|
currentDoc: value
|
|
707
707
|
};
|
|
@@ -716,11 +716,11 @@ var cleanObjectFields = async ({
|
|
|
716
716
|
return newDoc;
|
|
717
717
|
};
|
|
718
718
|
var cleanArrayItems = async ({
|
|
719
|
-
schema,
|
|
719
|
+
schema: schema2,
|
|
720
720
|
value,
|
|
721
721
|
...other
|
|
722
722
|
}) => {
|
|
723
|
-
const schemaType =
|
|
723
|
+
const schemaType = schema2.type[0];
|
|
724
724
|
const promises = value.map(async (item) => {
|
|
725
725
|
const newValue = await clean({
|
|
726
726
|
...other,
|
|
@@ -735,17 +735,17 @@ var cleanArrayItems = async ({
|
|
|
735
735
|
const result = await Promise.all(promises);
|
|
736
736
|
return result.filter((value2) => value2 !== void 0);
|
|
737
737
|
};
|
|
738
|
-
function getArrayNode(
|
|
739
|
-
if (Array.isArray(
|
|
740
|
-
const result =
|
|
738
|
+
function getArrayNode(schema2, value) {
|
|
739
|
+
if (Array.isArray(schema2.type) && !isNil(value)) {
|
|
740
|
+
const result = schema2;
|
|
741
741
|
return result;
|
|
742
742
|
}
|
|
743
743
|
return null;
|
|
744
744
|
}
|
|
745
745
|
var clean = async (info) => {
|
|
746
746
|
convertTypedSchema(info);
|
|
747
|
-
const { schema, args = [], value } = info;
|
|
748
|
-
const currSchema =
|
|
747
|
+
const { schema: schema2, args = [], value } = info;
|
|
748
|
+
const currSchema = schema2.type === void 0 ? { type: schema2 } : schema2;
|
|
749
749
|
const objectSchema = getObjectNode(currSchema, value);
|
|
750
750
|
if (objectSchema) {
|
|
751
751
|
const newDoc = await cleanObjectFields({
|
|
@@ -782,12 +782,12 @@ var defaultOptions2 = {
|
|
|
782
782
|
trimStrings: true,
|
|
783
783
|
removeEmptyStrings: false
|
|
784
784
|
};
|
|
785
|
-
async function clean2(
|
|
785
|
+
async function clean2(schema2, doc, opts = {}, ...args) {
|
|
786
786
|
if (!doc) return doc;
|
|
787
|
-
|
|
787
|
+
schema2 = getSchemaFromAnyOrionForm(schema2);
|
|
788
788
|
const options = { ...defaultOptions2, ...opts };
|
|
789
789
|
const params = {
|
|
790
|
-
schema: { type:
|
|
790
|
+
schema: { type: schema2 },
|
|
791
791
|
value: doc,
|
|
792
792
|
doc: options.forceDoc || doc,
|
|
793
793
|
currentDoc: doc,
|
|
@@ -816,11 +816,11 @@ var dotGet = function dotGet2(object, path) {
|
|
|
816
816
|
}
|
|
817
817
|
return null;
|
|
818
818
|
};
|
|
819
|
-
function dotGetSchema_default(
|
|
820
|
-
if (isNil(
|
|
819
|
+
function dotGetSchema_default(schema2, path) {
|
|
820
|
+
if (isNil(schema2)) {
|
|
821
821
|
throw new Error("You need to pass a schema");
|
|
822
822
|
}
|
|
823
|
-
return dotGet({ type:
|
|
823
|
+
return dotGet({ type: schema2 }, path);
|
|
824
824
|
}
|
|
825
825
|
|
|
826
826
|
// src/dotGetSchema.ts
|
|
@@ -830,9 +830,9 @@ var dotGetSchema_default2 = dotGetSchema_default;
|
|
|
830
830
|
var defaultOptions3 = {
|
|
831
831
|
filter: true
|
|
832
832
|
};
|
|
833
|
-
async function cleanKey_default(
|
|
833
|
+
async function cleanKey_default(schema2, key, value, passedOptions = {}, ...args) {
|
|
834
834
|
const options = { ...defaultOptions3, ...passedOptions };
|
|
835
|
-
const keySchema = dotGetSchema_default2(
|
|
835
|
+
const keySchema = dotGetSchema_default2(schema2, key);
|
|
836
836
|
if (!keySchema) {
|
|
837
837
|
if (options.filter) {
|
|
838
838
|
return;
|
|
@@ -848,9 +848,9 @@ async function cleanKey_default(schema, key, value, passedOptions = {}, ...args)
|
|
|
848
848
|
var defaultOptions4 = {
|
|
849
849
|
filter: false
|
|
850
850
|
};
|
|
851
|
-
async function validateKey_default(
|
|
851
|
+
async function validateKey_default(schema2, key, value, passedOptions = {}, ...args) {
|
|
852
852
|
const options = { ...defaultOptions4, ...passedOptions };
|
|
853
|
-
const keySchema = dotGetSchema_default(
|
|
853
|
+
const keySchema = dotGetSchema_default(schema2, key);
|
|
854
854
|
if (!keySchema) {
|
|
855
855
|
if (options.filter) {
|
|
856
856
|
return Errors_default.NOT_IN_SCHEMA;
|
|
@@ -913,17 +913,55 @@ function createEnum(name, values) {
|
|
|
913
913
|
});
|
|
914
914
|
}
|
|
915
915
|
|
|
916
|
+
// src/types/fields.ts
|
|
917
|
+
var subSchema = {
|
|
918
|
+
name: {
|
|
919
|
+
type: String
|
|
920
|
+
}
|
|
921
|
+
};
|
|
922
|
+
var schema = {
|
|
923
|
+
filter: {
|
|
924
|
+
type: String
|
|
925
|
+
},
|
|
926
|
+
sub: {
|
|
927
|
+
type: subSchema
|
|
928
|
+
},
|
|
929
|
+
gender: {
|
|
930
|
+
type: createEnum("gender", ["male", "female"])
|
|
931
|
+
},
|
|
932
|
+
page: {
|
|
933
|
+
type: "integer",
|
|
934
|
+
defaultValue: 1,
|
|
935
|
+
min: 1
|
|
936
|
+
},
|
|
937
|
+
limit: {
|
|
938
|
+
type: "integer",
|
|
939
|
+
defaultValue: 0,
|
|
940
|
+
min: 0,
|
|
941
|
+
max: 200
|
|
942
|
+
},
|
|
943
|
+
sortBy: {
|
|
944
|
+
type: String,
|
|
945
|
+
optional: true
|
|
946
|
+
},
|
|
947
|
+
sortType: {
|
|
948
|
+
type: String,
|
|
949
|
+
allowedValues: ["asc", "desc"],
|
|
950
|
+
optional: true
|
|
951
|
+
}
|
|
952
|
+
};
|
|
953
|
+
|
|
916
954
|
// src/cleanAndValidate.ts
|
|
917
|
-
async function cleanAndValidate(
|
|
918
|
-
const cleaned = await clean2(
|
|
919
|
-
await validate(
|
|
955
|
+
async function cleanAndValidate(schema2, doc) {
|
|
956
|
+
const cleaned = await clean2(schema2, doc);
|
|
957
|
+
await validate(schema2, cleaned);
|
|
920
958
|
return cleaned;
|
|
921
959
|
}
|
|
922
960
|
|
|
923
961
|
// src/schemaWithName/index.ts
|
|
924
|
-
function schemaWithName(name,
|
|
925
|
-
|
|
926
|
-
return
|
|
962
|
+
function schemaWithName(name, schema2) {
|
|
963
|
+
schema2.__modelName = name;
|
|
964
|
+
return schema2;
|
|
927
965
|
}
|
|
928
966
|
export {
|
|
929
967
|
ValidationError,
|
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/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/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/cleanAndValidate.ts","../src/schemaWithName/index.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","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","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, 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 __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 {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"],"mappings":"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","names":["validate","clean","type","type","type","type","clone","type","clone","getValidationErrors","getValidationErrors","getValidationErrors","type","type","clean","value","result","defaultOptions","clean","dotGet","dotGetSchema_default","defaultOptions","dotGetSchema_default","clean","defaultOptions","getValidationErrors","clean"]}
|
|
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/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/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"],"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","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","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, 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 __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\nexport type Simplifed<T> = {\n [K in keyof T]: T[K] extends object ? Simplifed<T[K]> : T[K]\n}\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>> = Simplifed<\n 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\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"],"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"]}
|