@webiny/validation 5.38.0-beta.0 → 5.38.0-beta.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/validation",
3
- "version": "5.38.0-beta.0",
3
+ "version": "5.38.0-beta.1",
4
4
  "main": "index.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -24,8 +24,8 @@
24
24
  "@babel/preset-env": "7.22.7",
25
25
  "@babel/preset-typescript": "7.22.5",
26
26
  "@types/lodash": "4.14.191",
27
- "@webiny/cli": "5.38.0-beta.0",
28
- "@webiny/project-utils": "5.38.0-beta.0",
27
+ "@webiny/cli": "5.38.0-beta.1",
28
+ "@webiny/project-utils": "5.38.0-beta.1",
29
29
  "jest": "29.5.0",
30
30
  "rimraf": "3.0.2",
31
31
  "ttypescript": "1.5.15",
@@ -39,5 +39,5 @@
39
39
  "build": "yarn webiny run build",
40
40
  "watch": "yarn webiny run watch"
41
41
  },
42
- "gitHead": "5746389d4988626b50e2523ccfa0a9a5e398e0ed"
42
+ "gitHead": "6daf38d3ed0c029a8fea005c2b6246e5b325a09c"
43
43
  }
package/validation.js CHANGED
@@ -112,7 +112,6 @@ class Validation {
112
112
  const parsedValidateProperty = this.__parseValidateProperty(validators);
113
113
  for (const [name, params] of entries(parsedValidateProperty)) {
114
114
  const validator = this.getValidator(name);
115
- console.log("validator name", validator.validatorName);
116
115
  try {
117
116
  validator(value, params);
118
117
  } catch (e) {
package/validation.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_isString","_interopRequireDefault","require","_isEmpty","_trim","_validationError","entries","validators","Object","invalidRules","createdValidators","async","sync","Validation","constructor","_defineProperty2","default","__validators","setValidator","name","callable","validatorName","getValidator","ValidationError","validate","value","options","isString","isEmpty","Error","parsedValidateProperty","__parseValidateProperty","params","validator","e","validationError","message","throw","validateSync","console","log","create","createSync","split","parsedValidators","forEach","v","trim","vName","shift","_default","exports"],"sources":["validation.ts"],"sourcesContent":["import isString from \"lodash/isString\";\nimport isEmpty from \"lodash/isEmpty\";\nimport trim from \"lodash/trim\";\nimport ValidationError from \"./validationError\";\nimport { ParsedValidators, ValidateOptions, Validator } from \"./types\";\n\nconst entries = (validators: ParsedValidators): Array<[string, Array<string>]> => {\n return Object.entries(validators);\n};\n\nconst invalidRules = \"Validators must be specified as a string (eg. required,minLength:10,email).\";\n\ninterface CreatedValidators {\n async: Record<string, Validator>;\n sync: Record<string, Validator>;\n}\nconst createdValidators: CreatedValidators = {\n async: {},\n sync: {}\n};\n\n/**\n * Main class of Validation library.\n * Exported as a singleton instance, it offers methods for sync/async data validation and overwriting or adding new validators.\n *\n * @class Validation\n * @example\n * import { validation } from '@webiny/validation';\n *\n * // `validation` is a preconfigured instance of Validation class.\n * // From here you can either add new validators or use it as-is.\n */\nclass Validation {\n /**\n * Contains a list of all set validators.\n * @private\n */\n __validators: {\n [key: string]: Validator;\n };\n\n constructor() {\n this.__validators = {};\n }\n\n /**\n * Add new validator.\n * @param name Validator name.\n * @param callable Validator function which throws a ValidationError if validation fails.\n * @returns {Validation}\n */\n setValidator(name: string, callable: Validator): this {\n this.__validators[name] = callable;\n this.__validators[name].validatorName = name;\n return this;\n }\n\n /**\n * Get validator function by name.\n * @param name Validator name.\n * @returns {Validator} A validator function.\n */\n getValidator(name: string): Validator {\n if (!this.__validators[name]) {\n throw new ValidationError(\"Validator `\" + name + \"` does not exist!\", name);\n }\n return this.__validators[name];\n }\n\n /**\n * Asynchronously validates value.\n * @param value Value to validate.\n * @param validators A list of comma-separated validators (eg. required,number,gt:20).\n * @param [options] Validation options.\n * @returns {Promise<boolean | ValidationError>}\n */\n async validate(\n value: any,\n validators: string,\n options: ValidateOptions = {}\n ): Promise<boolean | ValidationError> {\n if (isString(validators) && isEmpty(validators)) {\n return true;\n }\n\n if (!isString(validators)) {\n throw new Error(invalidRules);\n }\n\n const parsedValidateProperty = this.__parseValidateProperty(validators);\n\n for (const [name, params] of entries(parsedValidateProperty)) {\n const validator = this.getValidator(name);\n try {\n await validator(value, params);\n } catch (e) {\n const validationError = new ValidationError(e.message, name, value);\n if (options.throw === false) {\n return validationError;\n }\n throw validationError;\n }\n }\n return true;\n }\n\n /**\n * Synchronously validates value.\n * @param value Value to validate.\n * @param validators A list of comma-separated validators (eg. required,number,gt:20).\n * @param [options] Validation options.\n * @returns {Promise<boolean | ValidationError>}\n */\n validateSync(\n value: any,\n validators: string,\n options: ValidateOptions = {}\n ): boolean | ValidationError {\n if (isString(validators) && isEmpty(validators)) {\n return true;\n }\n\n if (!isString(validators)) {\n throw new Error(invalidRules);\n }\n\n const parsedValidateProperty = this.__parseValidateProperty(validators);\n\n for (const [name, params] of entries(parsedValidateProperty)) {\n const validator = this.getValidator(name);\n console.log(\"validator name\", validator.validatorName);\n try {\n validator(value, params);\n } catch (e) {\n const validationError = new ValidationError(e.message, name, value);\n if (options.throw === false) {\n return validationError;\n }\n throw validationError;\n }\n }\n return true;\n }\n\n create(validators: string) {\n if (createdValidators.async[validators]) {\n return createdValidators.async[validators];\n }\n\n createdValidators.async[validators] = value => this.validate(value, validators);\n return createdValidators.async[validators];\n }\n\n createSync(validators: string) {\n if (createdValidators.sync[validators]) {\n return createdValidators.sync[validators];\n }\n\n createdValidators.sync[validators] = value => this.validateSync(value, validators);\n return createdValidators.sync[validators];\n }\n\n /**\n * Parses a string of validators with parameters.\n * @param validators A list of comma-separated validators (eg. required,number,gt:20).\n * @returns {ParsedValidators}\n * @private\n */\n __parseValidateProperty(validators: string): ParsedValidators {\n const validate: Array<string> = validators.split(\",\");\n\n const parsedValidators: ParsedValidators = {};\n validate.forEach((v: string) => {\n const params = trim(v).split(\":\");\n const vName = params.shift();\n if (!vName) {\n return;\n }\n parsedValidators[vName] = params;\n });\n return parsedValidators;\n }\n}\n\nexport default Validation;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_isString","_interopRequireDefault","require","_isEmpty","_trim","_validationError","entries","validators","Object","invalidRules","createdValidators","async","sync","Validation","constructor","_defineProperty2","default","__validators","setValidator","name","callable","validatorName","getValidator","ValidationError","validate","value","options","isString","isEmpty","Error","parsedValidateProperty","__parseValidateProperty","params","validator","e","validationError","message","throw","validateSync","create","createSync","split","parsedValidators","forEach","v","trim","vName","shift","_default","exports"],"sources":["validation.ts"],"sourcesContent":["import isString from \"lodash/isString\";\nimport isEmpty from \"lodash/isEmpty\";\nimport trim from \"lodash/trim\";\nimport ValidationError from \"./validationError\";\nimport { ParsedValidators, ValidateOptions, Validator } from \"./types\";\n\nconst entries = (validators: ParsedValidators): Array<[string, Array<string>]> => {\n return Object.entries(validators);\n};\n\nconst invalidRules = \"Validators must be specified as a string (eg. required,minLength:10,email).\";\n\ninterface CreatedValidators {\n async: Record<string, Validator>;\n sync: Record<string, Validator>;\n}\nconst createdValidators: CreatedValidators = {\n async: {},\n sync: {}\n};\n\n/**\n * Main class of Validation library.\n * Exported as a singleton instance, it offers methods for sync/async data validation and overwriting or adding new validators.\n *\n * @class Validation\n * @example\n * import { validation } from '@webiny/validation';\n *\n * // `validation` is a preconfigured instance of Validation class.\n * // From here you can either add new validators or use it as-is.\n */\nclass Validation {\n /**\n * Contains a list of all set validators.\n * @private\n */\n __validators: {\n [key: string]: Validator;\n };\n\n constructor() {\n this.__validators = {};\n }\n\n /**\n * Add new validator.\n * @param name Validator name.\n * @param callable Validator function which throws a ValidationError if validation fails.\n * @returns {Validation}\n */\n setValidator(name: string, callable: Validator): this {\n this.__validators[name] = callable;\n this.__validators[name].validatorName = name;\n return this;\n }\n\n /**\n * Get validator function by name.\n * @param name Validator name.\n * @returns {Validator} A validator function.\n */\n getValidator(name: string): Validator {\n if (!this.__validators[name]) {\n throw new ValidationError(\"Validator `\" + name + \"` does not exist!\", name);\n }\n return this.__validators[name];\n }\n\n /**\n * Asynchronously validates value.\n * @param value Value to validate.\n * @param validators A list of comma-separated validators (eg. required,number,gt:20).\n * @param [options] Validation options.\n * @returns {Promise<boolean | ValidationError>}\n */\n async validate(\n value: any,\n validators: string,\n options: ValidateOptions = {}\n ): Promise<boolean | ValidationError> {\n if (isString(validators) && isEmpty(validators)) {\n return true;\n }\n\n if (!isString(validators)) {\n throw new Error(invalidRules);\n }\n\n const parsedValidateProperty = this.__parseValidateProperty(validators);\n\n for (const [name, params] of entries(parsedValidateProperty)) {\n const validator = this.getValidator(name);\n try {\n await validator(value, params);\n } catch (e) {\n const validationError = new ValidationError(e.message, name, value);\n if (options.throw === false) {\n return validationError;\n }\n throw validationError;\n }\n }\n return true;\n }\n\n /**\n * Synchronously validates value.\n * @param value Value to validate.\n * @param validators A list of comma-separated validators (eg. required,number,gt:20).\n * @param [options] Validation options.\n * @returns {Promise<boolean | ValidationError>}\n */\n validateSync(\n value: any,\n validators: string,\n options: ValidateOptions = {}\n ): boolean | ValidationError {\n if (isString(validators) && isEmpty(validators)) {\n return true;\n }\n\n if (!isString(validators)) {\n throw new Error(invalidRules);\n }\n\n const parsedValidateProperty = this.__parseValidateProperty(validators);\n\n for (const [name, params] of entries(parsedValidateProperty)) {\n const validator = this.getValidator(name);\n try {\n validator(value, params);\n } catch (e) {\n const validationError = new ValidationError(e.message, name, value);\n if (options.throw === false) {\n return validationError;\n }\n throw validationError;\n }\n }\n return true;\n }\n\n create(validators: string) {\n if (createdValidators.async[validators]) {\n return createdValidators.async[validators];\n }\n\n createdValidators.async[validators] = value => this.validate(value, validators);\n return createdValidators.async[validators];\n }\n\n createSync(validators: string) {\n if (createdValidators.sync[validators]) {\n return createdValidators.sync[validators];\n }\n\n createdValidators.sync[validators] = value => this.validateSync(value, validators);\n return createdValidators.sync[validators];\n }\n\n /**\n * Parses a string of validators with parameters.\n * @param validators A list of comma-separated validators (eg. required,number,gt:20).\n * @returns {ParsedValidators}\n * @private\n */\n __parseValidateProperty(validators: string): ParsedValidators {\n const validate: Array<string> = validators.split(\",\");\n\n const parsedValidators: ParsedValidators = {};\n validate.forEach((v: string) => {\n const params = trim(v).split(\":\");\n const vName = params.shift();\n if (!vName) {\n return;\n }\n parsedValidators[vName] = params;\n });\n return parsedValidators;\n }\n}\n\nexport default Validation;\n"],"mappings":"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"}