@webiny/validation 6.0.0-alpha.0 → 6.0.0-alpha.2

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": "6.0.0-alpha.0",
3
+ "version": "6.0.0-alpha.2",
4
4
  "main": "index.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -19,7 +19,7 @@
19
19
  },
20
20
  "devDependencies": {
21
21
  "@types/lodash": "4.17.13",
22
- "@webiny/project-utils": "6.0.0-alpha.0",
22
+ "@webiny/project-utils": "6.0.0-alpha.2",
23
23
  "jest": "29.7.0",
24
24
  "rimraf": "6.0.1",
25
25
  "typescript": "5.3.3"
@@ -32,5 +32,5 @@
32
32
  "build": "node ../cli/bin.js run build",
33
33
  "watch": "node ../cli/bin.js run watch"
34
34
  },
35
- "gitHead": "a5b28fed7a242d8f56712197a8ea83aa6d2ed101"
35
+ "gitHead": "7c9e8fbfd62a57ece5f880dbad6c864636b0355e"
36
36
  }
package/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import ValidationError from "./validationError";
1
+ import type ValidationError from "./validationError";
2
2
  type ValidatorResult = boolean | ValidationError | void | Promise<boolean | ValidationError | void>;
3
3
  /**
4
4
  * @typedef Validator
package/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import ValidationError from \"~/validationError\";\n\ntype ValidatorResult = boolean | ValidationError | void | Promise<boolean | ValidationError | void>;\n/**\n * @typedef Validator\n * @name Validator\n * @description This type defines the validator function.\n * @param {any} value This is the value being validated.\n * @param {Array<string>} parameters (Optional) This represents an array validator parameters.\n * @throws {ValidationError}\n */\nexport interface Validator {\n (value: any, params?: string[]): ValidatorResult;\n validatorName?: string;\n}\n\n/**\n * @typedef ValidateOptions\n * @name ValidateOptions\n * @description This is an object containing validation options.\n * @property {boolean} throw Should validation throw on failure? Default: true.\n */\nexport interface ValidateOptions {\n throw?: boolean;\n}\n\n/**\n * @private\n * @typedef ParsedValidators\n * @name ParsedValidators\n * @description An object containing validators with parameters: `{ [string]: Array<string> }`.\n */\nexport interface ParsedValidators {\n [key: string]: Array<string>;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type ValidationError from \"~/validationError\";\n\ntype ValidatorResult = boolean | ValidationError | void | Promise<boolean | ValidationError | void>;\n/**\n * @typedef Validator\n * @name Validator\n * @description This type defines the validator function.\n * @param {any} value This is the value being validated.\n * @param {Array<string>} parameters (Optional) This represents an array validator parameters.\n * @throws {ValidationError}\n */\nexport interface Validator {\n (value: any, params?: string[]): ValidatorResult;\n validatorName?: string;\n}\n\n/**\n * @typedef ValidateOptions\n * @name ValidateOptions\n * @description This is an object containing validation options.\n * @property {boolean} throw Should validation throw on failure? Default: true.\n */\nexport interface ValidateOptions {\n throw?: boolean;\n}\n\n/**\n * @private\n * @typedef ParsedValidators\n * @name ParsedValidators\n * @description An object containing validators with parameters: `{ [string]: Array<string> }`.\n */\nexport interface ParsedValidators {\n [key: string]: Array<string>;\n}\n"],"mappings":"","ignoreList":[]}
package/validation.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import ValidationError from "./validationError";
2
- import { ParsedValidators, ValidateOptions, Validator } from "./types";
2
+ import type { ParsedValidators, ValidateOptions, Validator } from "./types";
3
3
  /**
4
4
  * Main class of Validation library.
5
5
  * Exported as a singleton instance, it offers methods for sync/async data validation and overwriting or adding new validators.
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","__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","default"],"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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","ignoreList":[]}
1
+ {"version":3,"names":["_isString","_interopRequireDefault","require","_isEmpty","_trim","_validationError","entries","validators","Object","invalidRules","createdValidators","async","sync","Validation","constructor","__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","default"],"sources":["validation.ts"],"sourcesContent":["import isString from \"lodash/isString\";\nimport isEmpty from \"lodash/isEmpty\";\nimport trim from \"lodash/trim\";\nimport ValidationError from \"./validationError\";\nimport type { 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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","ignoreList":[]}