@orion-js/schema 4.0.0-next.7 → 4.0.0
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 +135 -115
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +52 -43
- package/dist/index.d.ts +52 -43
- package/dist/index.js +133 -115
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -80,15 +80,6 @@ var ValidationError = class _ValidationError extends Error {
|
|
|
80
80
|
};
|
|
81
81
|
};
|
|
82
82
|
|
|
83
|
-
// src/getSchemaFromTypedSchema.ts
|
|
84
|
-
Symbol.metadata ?? (Symbol.metadata = Symbol("Symbol.metadata"));
|
|
85
|
-
var getSchemaFromTypedSchema = (schema) => {
|
|
86
|
-
const item = schema;
|
|
87
|
-
if (!schema[Symbol.metadata]) return item;
|
|
88
|
-
if (!schema[Symbol.metadata]._isTypedSchema) return item;
|
|
89
|
-
return schema[Symbol.metadata]._getModel().getSchema();
|
|
90
|
-
};
|
|
91
|
-
|
|
92
83
|
// src/fieldType.ts
|
|
93
84
|
function fieldType(opts) {
|
|
94
85
|
const { name, validate: validate2, clean: clean3, ...otherFields } = opts;
|
|
@@ -387,11 +378,76 @@ function getFieldValidator(type2) {
|
|
|
387
378
|
}
|
|
388
379
|
const exists = fieldTypes_default[type2];
|
|
389
380
|
if (!exists) {
|
|
390
|
-
throw new Error(
|
|
381
|
+
throw new Error(`Field type does not exist. Got ${type2}`);
|
|
391
382
|
}
|
|
392
383
|
return type2;
|
|
393
384
|
}
|
|
394
385
|
|
|
386
|
+
// src/models.ts
|
|
387
|
+
Symbol.metadata ?? (Symbol.metadata = Symbol("Symbol.metadata"));
|
|
388
|
+
function isSchemaLike(type2) {
|
|
389
|
+
var _a;
|
|
390
|
+
if (!type2) return false;
|
|
391
|
+
if (objectHasSubObjectWithKey(type2, "type")) return true;
|
|
392
|
+
if ((_a = type2 == null ? void 0 : type2[Symbol.metadata]) == null ? void 0 : _a._getModel) return true;
|
|
393
|
+
if (type2.getModel) return true;
|
|
394
|
+
if (type2.getSchema) return true;
|
|
395
|
+
if (type2.getCleanSchema) return true;
|
|
396
|
+
if (type2.__isModel) return true;
|
|
397
|
+
if (type2.__modelName) return true;
|
|
398
|
+
return false;
|
|
399
|
+
}
|
|
400
|
+
function isStrictSchemaLike(type2) {
|
|
401
|
+
if (isSchemaLike(type2)) return true;
|
|
402
|
+
return false;
|
|
403
|
+
}
|
|
404
|
+
function isSchemaOrFieldLike(type2) {
|
|
405
|
+
if (Array.isArray(type2)) {
|
|
406
|
+
if (type2.length !== 1) return false;
|
|
407
|
+
return isSchemaOrFieldLike(type2[0]);
|
|
408
|
+
}
|
|
409
|
+
if (isSchemaLike(type2)) return true;
|
|
410
|
+
try {
|
|
411
|
+
if (getFieldValidator(type2)) return true;
|
|
412
|
+
} catch {
|
|
413
|
+
return false;
|
|
414
|
+
}
|
|
415
|
+
return false;
|
|
416
|
+
}
|
|
417
|
+
function getSchemaModelName(type2) {
|
|
418
|
+
if (!type2) return null;
|
|
419
|
+
if (type2.__modelName) return type2.__modelName;
|
|
420
|
+
if (type2.getModel) return type2.getModel().name;
|
|
421
|
+
if (type2.getSchema) return type2.getSchema().__modelName;
|
|
422
|
+
return null;
|
|
423
|
+
}
|
|
424
|
+
function getSchemaFromAnyOrionForm(type2) {
|
|
425
|
+
var _a, _b;
|
|
426
|
+
if (!type2) return type2;
|
|
427
|
+
if ((_a = type2 == null ? void 0 : type2[Symbol.metadata]) == null ? void 0 : _a._getModel) {
|
|
428
|
+
return (_b = type2 == null ? void 0 : type2[Symbol.metadata]) == null ? void 0 : _b._getModel().getSchema();
|
|
429
|
+
}
|
|
430
|
+
if (type2 == null ? void 0 : type2.getModel) return type2.getModel().getSchema();
|
|
431
|
+
if (type2.getSchema) {
|
|
432
|
+
return type2.getSchema();
|
|
433
|
+
}
|
|
434
|
+
if (objectHasSubObjectWithKey(type2, "type")) return type2;
|
|
435
|
+
return type2;
|
|
436
|
+
}
|
|
437
|
+
function objectHasSubObjectWithKey(object, key) {
|
|
438
|
+
if (!object || typeof object !== "object") return false;
|
|
439
|
+
for (const key1 in object) {
|
|
440
|
+
const value = object[key1];
|
|
441
|
+
if (value && typeof value === "object" && key in value) {
|
|
442
|
+
return true;
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
return false;
|
|
446
|
+
}
|
|
447
|
+
function getSchemaWithMetadataFromAnyOrionForm(type2) {
|
|
448
|
+
return getSchemaFromAnyOrionForm(type2);
|
|
449
|
+
}
|
|
450
|
+
|
|
395
451
|
// src/getValidationErrors/getError/index.ts
|
|
396
452
|
async function getValidationErrors(params) {
|
|
397
453
|
const { schema, doc, currentDoc, value, currentSchema, keys, options = {}, args = [] } = params;
|
|
@@ -425,6 +481,15 @@ async function getValidationErrors(params) {
|
|
|
425
481
|
return null;
|
|
426
482
|
}
|
|
427
483
|
|
|
484
|
+
// src/getSchemaFromTypedSchema.ts
|
|
485
|
+
Symbol.metadata ?? (Symbol.metadata = Symbol("Symbol.metadata"));
|
|
486
|
+
var getSchemaFromTypedSchema = (schema) => {
|
|
487
|
+
const item = schema;
|
|
488
|
+
if (!schema[Symbol.metadata]) return item;
|
|
489
|
+
if (!schema[Symbol.metadata]._isTypedSchema) return item;
|
|
490
|
+
return schema[Symbol.metadata]._getModel().getSchema();
|
|
491
|
+
};
|
|
492
|
+
|
|
428
493
|
// src/getValidationErrors/convertTypedSchema.ts
|
|
429
494
|
var convertOnParam = (info, paramName) => {
|
|
430
495
|
if (!info[paramName]) return;
|
|
@@ -452,7 +517,17 @@ function clone2(value) {
|
|
|
452
517
|
async function doValidation(params) {
|
|
453
518
|
convertTypedSchema(params);
|
|
454
519
|
const { schema, doc, currentDoc, value, currentSchema, keys = [], addError, options, args } = params;
|
|
455
|
-
const info = {
|
|
520
|
+
const info = {
|
|
521
|
+
schema,
|
|
522
|
+
doc,
|
|
523
|
+
currentDoc,
|
|
524
|
+
value,
|
|
525
|
+
currentSchema,
|
|
526
|
+
keys,
|
|
527
|
+
options,
|
|
528
|
+
args,
|
|
529
|
+
addError
|
|
530
|
+
};
|
|
456
531
|
const error = await getValidationErrors(info);
|
|
457
532
|
if (error) {
|
|
458
533
|
addError(keys, error);
|
|
@@ -526,7 +601,7 @@ var defaultOptions = {
|
|
|
526
601
|
omitRequired: false
|
|
527
602
|
};
|
|
528
603
|
async function getValidationErrors2(schema, doc, passedOptions = {}, ...args) {
|
|
529
|
-
schema =
|
|
604
|
+
schema = getSchemaFromAnyOrionForm(schema);
|
|
530
605
|
const options = { ...defaultOptions, ...passedOptions };
|
|
531
606
|
const errors = [];
|
|
532
607
|
const addError = (keys, code) => {
|
|
@@ -709,7 +784,7 @@ var defaultOptions2 = {
|
|
|
709
784
|
};
|
|
710
785
|
async function clean2(schema, doc, opts = {}, ...args) {
|
|
711
786
|
if (!doc) return doc;
|
|
712
|
-
schema =
|
|
787
|
+
schema = getSchemaFromAnyOrionForm(schema);
|
|
713
788
|
const options = { ...defaultOptions2, ...opts };
|
|
714
789
|
const params = {
|
|
715
790
|
schema: { type: schema },
|
|
@@ -797,111 +872,52 @@ async function validateKey_default(schema, key, value, passedOptions = {}, ...ar
|
|
|
797
872
|
|
|
798
873
|
// src/fieldTypes/enum.ts
|
|
799
874
|
function createEnum(name, values) {
|
|
800
|
-
return {
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
}
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
if (!values.includes(value)) {
|
|
822
|
-
return Errors_default.NOT_AN_ALLOWED_VALUE;
|
|
823
|
-
}
|
|
824
|
-
if (value === "" && !currentSchema.optional) {
|
|
825
|
-
return Errors_default.REQUIRED;
|
|
826
|
-
}
|
|
827
|
-
},
|
|
828
|
-
clean(value, { options: { autoConvert, trimStrings, removeEmptyStrings } }) {
|
|
829
|
-
if (autoConvert) {
|
|
830
|
-
value = String(value);
|
|
831
|
-
}
|
|
832
|
-
if (trimStrings) {
|
|
833
|
-
value = value.trim();
|
|
834
|
-
}
|
|
835
|
-
if (removeEmptyStrings && value === "") {
|
|
836
|
-
return void 0;
|
|
837
|
-
}
|
|
838
|
-
return value;
|
|
875
|
+
return fieldType({
|
|
876
|
+
name: "enum",
|
|
877
|
+
meta: {
|
|
878
|
+
enumName: name,
|
|
879
|
+
enumValues: values
|
|
880
|
+
},
|
|
881
|
+
toGraphQLType: (GraphQL) => {
|
|
882
|
+
global.GraphQLEnums = global.GraphQLEnums || {};
|
|
883
|
+
global.GraphQLEnums[name] = global.GraphQLEnums[name] || new GraphQL.GraphQLEnumType({
|
|
884
|
+
name,
|
|
885
|
+
values: values.reduce((result, value) => {
|
|
886
|
+
result[value] = { value };
|
|
887
|
+
return result;
|
|
888
|
+
}, {})
|
|
889
|
+
});
|
|
890
|
+
return global.GraphQLEnums[name];
|
|
891
|
+
},
|
|
892
|
+
validate(value, { currentSchema }) {
|
|
893
|
+
if (typeof value !== "string") return Errors_default.NOT_A_STRING;
|
|
894
|
+
if (!values.includes(value)) {
|
|
895
|
+
return Errors_default.NOT_AN_ALLOWED_VALUE;
|
|
839
896
|
}
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
}
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
if (type2.__modelName) return true;
|
|
856
|
-
return false;
|
|
857
|
-
}
|
|
858
|
-
function isSchemaOrFieldLike(type2) {
|
|
859
|
-
if (Array.isArray(type2)) {
|
|
860
|
-
if (type2.length !== 1) return false;
|
|
861
|
-
return isSchemaOrFieldLike(type2[0]);
|
|
862
|
-
}
|
|
863
|
-
if (isSchemaLike(type2)) return true;
|
|
864
|
-
try {
|
|
865
|
-
if (getFieldValidator(type2)) return true;
|
|
866
|
-
} catch {
|
|
867
|
-
return false;
|
|
868
|
-
}
|
|
869
|
-
return false;
|
|
870
|
-
}
|
|
871
|
-
function getSchemaModelName(type2) {
|
|
872
|
-
if (!type2) return null;
|
|
873
|
-
if (type2.__modelName) return type2.__modelName;
|
|
874
|
-
if (type2.getModel) return type2.getModel().name;
|
|
875
|
-
if (type2.getSchema) return type2.getSchema().__modelName;
|
|
876
|
-
return null;
|
|
877
|
-
}
|
|
878
|
-
function getSchemaFromAnyOrionForm(type2) {
|
|
879
|
-
var _a, _b;
|
|
880
|
-
if ((_a = type2 == null ? void 0 : type2[Symbol.metadata]) == null ? void 0 : _a._getModel) {
|
|
881
|
-
return (_b = type2 == null ? void 0 : type2[Symbol.metadata]) == null ? void 0 : _b._getModel().getSchema();
|
|
882
|
-
}
|
|
883
|
-
if (type2 == null ? void 0 : type2.getModel) return type2.getModel().getSchema();
|
|
884
|
-
if (type2.getSchema) {
|
|
885
|
-
return type2.getSchema();
|
|
886
|
-
}
|
|
887
|
-
if (type2.getSchema) {
|
|
888
|
-
return type2.getSchema();
|
|
889
|
-
}
|
|
890
|
-
if (objectHasSubObjectWithKey(type2, "type")) return type2;
|
|
891
|
-
return null;
|
|
892
|
-
}
|
|
893
|
-
function objectHasSubObjectWithKey(object, key) {
|
|
894
|
-
if (!object || typeof object !== "object") return false;
|
|
895
|
-
for (const key1 in object) {
|
|
896
|
-
const value = object[key1];
|
|
897
|
-
if (value && typeof value === "object" && key in value) {
|
|
898
|
-
return true;
|
|
897
|
+
if (value === "" && !currentSchema.optional) {
|
|
898
|
+
return Errors_default.REQUIRED;
|
|
899
|
+
}
|
|
900
|
+
},
|
|
901
|
+
clean(value, { options: { autoConvert, trimStrings, removeEmptyStrings } }) {
|
|
902
|
+
if (autoConvert) {
|
|
903
|
+
value = String(value);
|
|
904
|
+
}
|
|
905
|
+
if (trimStrings) {
|
|
906
|
+
value = value.trim();
|
|
907
|
+
}
|
|
908
|
+
if (removeEmptyStrings && value === "") {
|
|
909
|
+
return void 0;
|
|
910
|
+
}
|
|
911
|
+
return value;
|
|
899
912
|
}
|
|
900
|
-
}
|
|
901
|
-
return false;
|
|
913
|
+
});
|
|
902
914
|
}
|
|
903
|
-
|
|
904
|
-
|
|
915
|
+
|
|
916
|
+
// src/cleanAndValidate.ts
|
|
917
|
+
async function cleanAndValidate(schema, doc) {
|
|
918
|
+
const cleaned = await clean2(schema, doc);
|
|
919
|
+
await validate(schema, cleaned);
|
|
920
|
+
return cleaned;
|
|
905
921
|
}
|
|
906
922
|
|
|
907
923
|
// src/schemaWithName/index.ts
|
|
@@ -912,6 +928,7 @@ function schemaWithName(name, schema) {
|
|
|
912
928
|
export {
|
|
913
929
|
ValidationError,
|
|
914
930
|
clean2 as clean,
|
|
931
|
+
cleanAndValidate,
|
|
915
932
|
cleanKey_default as cleanKey,
|
|
916
933
|
createEnum,
|
|
917
934
|
dotGetSchema_default2 as dotGetSchema,
|
|
@@ -923,6 +940,7 @@ export {
|
|
|
923
940
|
getValidationErrors2 as getValidationErrors,
|
|
924
941
|
isSchemaLike,
|
|
925
942
|
isSchemaOrFieldLike,
|
|
943
|
+
isStrictSchemaLike,
|
|
926
944
|
isValid,
|
|
927
945
|
schemaWithName,
|
|
928
946
|
validate,
|
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/getSchemaFromTypedSchema.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/getValidationErrors/getError/index.ts","../src/getValidationErrors/convertTypedSchema.ts","../src/clone.ts","../src/getValidationErrors/doValidation.ts","../src/getValidationErrors/getValidationErrorsObject.ts","../src/getValidationErrors/index.ts","../src/validate.ts","../src/isValid.ts","../src/getValidationErrors/getError/getFieldType.ts","../src/clean/getObjectNode.ts","../src/clean/cleanType.ts","../src/clean/recursiveClean.ts","../src/clean/index.ts","../src/validateKey/dotGetSchema.ts","../src/dotGetSchema.ts","../src/cleanKey.ts","../src/validateKey/index.ts","../src/fieldTypes/enum.ts","../src/models.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 {Schema} 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): 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 {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')\n }\n\n return type as FieldValidatorType\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 {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 = {schema, doc, currentDoc, value, currentSchema, keys, options, args, addError}\n\n const error = await getError(info)\n if (error) {\n addError(keys, error)\n return\n }\n\n if (isNil(value)) return\n\n /**\n * Deep validation\n */\n if (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 })\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 {getSchemaFromTypedSchema} from '../getSchemaFromTypedSchema'\nimport {Schema} from '../types/schema'\nimport doValidation from './doValidation'\nimport getValidationErrorsObject from './getValidationErrorsObject'\n\nconst defaultOptions = {\n omitRequired: false,\n}\n\nexport default async function getValidationErrors(\n schema: Schema | Function,\n doc: any,\n passedOptions = {},\n ...args\n) {\n schema = getSchemaFromTypedSchema(schema)\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 {Schema} from './types/schema'\n\nexport default async function validate<TSchema extends Schema = Schema>(\n schema: TSchema | Function,\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 {Schema} from './types/schema'\n\nexport default async function isValid(schema: Schema, doc: any, passedOptions = {}, ...args) {\n const validationErrors = await getValidationErrors(schema, doc, passedOptions, ...args)\n return !validationErrors\n}\n","import getFieldValidator from './getFieldValidator'\nimport fieldTypes from '../../fieldTypes'\nimport {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 | void {\n if (type(schema.type) === 'Object' && type(value) === 'Object') {\n const result = schema as SchemaNode\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} from '../types/schema'\nimport {FieldValidatorType} from '../types/fieldValidators'\nimport getObjectNode from './getObjectNode'\n\nexport default async function cleanType(\n type: SchemaFieldType | FieldValidatorType,\n fieldSchema: Partial<SchemaNode>,\n value: any,\n info: CurrentNodeInfo,\n ...args: any[]\n): Promise<any> {\n info.type = fieldSchema.type\n if (!info.type) {\n throw new Error('Cleaning field with no type')\n }\n\n const {clean: rootFieldClean} = await getFieldType(type)\n\n if (rootFieldClean && !isNil(value)) {\n value = await rootFieldClean(value, info, ...args)\n }\n\n let needReClean = false\n\n const objectTypeSchema = getObjectNode(fieldSchema, value)\n if (objectTypeSchema && (objectTypeSchema.type as 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 {getSchemaFromTypedSchema} from '../getSchemaFromTypedSchema'\nimport {InferSchemaType} from '../types'\nimport {CurrentNodeInfoOptions, Schema} from '../types/schema'\nimport recursiveClean from './recursiveClean'\n\nconst defaultOptions = {\n autoConvert: true,\n filter: true,\n trimStrings: true,\n removeEmptyStrings: false,\n}\n\nexport default async function clean<TSchema extends Schema = Schema>(\n schema: TSchema | Function,\n doc: InferSchemaType<TSchema>,\n opts: CurrentNodeInfoOptions = {},\n ...args\n): Promise<InferSchemaType<TSchema>> {\n if (!doc) return doc\n schema = getSchemaFromTypedSchema(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)\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]> & {type: TValues[number]} {\n return {\n type: values[0],\n ...fieldType({\n name: 'enum',\n meta: {\n enumName: name,\n enumValues: values,\n },\n toGraphQLType: GraphQL => {\n global.GraphQLEnums = global.GraphQLEnums || {}\n\n global.GraphQLEnums[name] =\n global.GraphQLEnums[name] ||\n new GraphQL.GraphQLEnumType({\n name,\n values: values.reduce((result, value) => {\n result[value] = {value}\n return result\n }, {}),\n })\n\n return global.GraphQLEnums[name]\n },\n validate(value: string, {currentSchema}) {\n if (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}\n","import getFieldValidator from './getValidationErrors/getError/getFieldValidator'\nimport {Schema, 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 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): Schema {\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 (type.getSchema) {\n return type.getSchema()\n }\n\n if (objectHasSubObjectWithKey(type, 'type')) return type // ya es un schema\n\n return null\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 {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","clone","type","clone","getValidationErrors","getValidationErrors","getValidationErrors","type","type","clean","value","result","defaultOptions","clean","dotGet","dotGetSchema_default","defaultOptions","dotGetSchema_default","clean","defaultOptions","getValidationErrors","type"]}
|
|
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"]}
|