silentium-validation 0.0.4 → 0.0.5

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/CHANGELOG.md CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ### [0.0.5](https://github.com/silentium-lab/silentium-validation/compare/v0.0.4...v0.0.5) (2026-01-31)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * versions and doc urls ([a6074f6](https://github.com/silentium-lab/silentium-validation/commit/a6074f6990850d8c1e4e3a51b96e1ab04dcc3330))
11
+
5
12
  ### [0.0.4](https://github.com/silentium-lab/silentium-validation/compare/v0.0.3...v0.0.4) (2025-12-05)
6
13
 
7
14
 
@@ -1 +1 @@
1
- {"version":3,"file":"silentium_validation.cjs","sources":["../src/models/Validated.ts","../src/models/ValidationErrors.ts","../src/models/ValidationErrorsHappened.ts","../src/models/ValidationErrorsSummary.ts","../src/models/ValidationErrorsTouched.ts","../src/models/ValidationItems.ts","../src/rules.ts"],"sourcesContent":["import { ValidationErrorType } from \"@/types\";\n\n/**\n * Check if there are any errors in the errors object\n * Returns a boolean type\n */\nexport function Validated(errors: ValidationErrorType) {\n return !Object.values(errors).some(\n (errorValues: any) => errorValues.length > 0,\n );\n}\n","import {\n ActualMessage,\n All,\n Applied,\n DestroyContainer,\n MaybeMessage,\n Message,\n MessageType,\n} from \"silentium\";\nimport { ValidationErrorType, ValidationItem } from \"@/types\";\n\n/**\n * Accepts a set of items that need to be validated\n * and when rules produce values, returns the overall set\n * of errors for the given configuration\n */\nexport function ValidationErrors(\n form: MaybeMessage<ValidationItem[]>,\n): MessageType<ValidationErrorType> {\n const $form = ActualMessage(form);\n return Message((resolve, reject) => {\n const formDc = DestroyContainer();\n $form.then((form) => {\n formDc.destroy();\n const entries = form.map((i) => {\n return All(\n i.key,\n Applied(\n All(\n ...i.rules.map((rule) => {\n return formDc.add(rule(i.value));\n }),\n ),\n (items) => items.filter(ExcludeTrue).map(ErrorFormat),\n ) as MessageType<string[]>,\n );\n });\n Applied(All(...entries), (e: any) => Object.fromEntries(e))\n .catch(reject)\n .then(resolve);\n });\n });\n}\n\nfunction ErrorFormat(v: boolean | string) {\n return v === false ? \"Error!\" : v;\n}\n\nfunction ExcludeTrue(v: boolean | string) {\n return v !== true;\n}\n","import { ValidationErrorType } from \"@/types\";\n\n/**\n * Show only the errors that exist, fields without errors are not shown\n */\nexport function ValidationErrorsHappened(base: ValidationErrorType) {\n return Object.fromEntries(\n Object.entries(base).filter((entry) => entry[1].length > 0),\n );\n}\n","import { ValidationErrorType } from \"@/types\";\n\n/**\n * Overall array of all errors\n */\nexport function ValidationErrorsSummary(errors: ValidationErrorType) {\n return Object.values(errors).flat();\n}\n","import { All, Applied, Chainable, MessageType } from \"silentium\";\nimport { ValidationErrorType } from \"@/types\";\nimport { Dirty, MergeAccumulation } from \"silentium-components\";\n\n/**\n * Validation errors are only those that correspond to changed form fields\n */\nexport function ValidationErrorsTouched(\n $form: MessageType<Record<string, unknown>>,\n $errors: MessageType<ValidationErrorType>,\n) {\n const dirtyForm = Dirty($form);\n Chainable(dirtyForm).chain($form);\n const touchedForm = MergeAccumulation(dirtyForm);\n const errorsTouched = All(Applied(touchedForm, Object.keys), $errors);\n return Applied(errorsTouched, ([touched, errors]) => {\n return Object.fromEntries(\n Object.entries(errors).filter((entry) => touched.includes(entry[0])),\n );\n });\n}\n","import { ConstructorType } from \"silentium\";\nimport { ValidationRule } from \"@/types\";\n\nexport type FormType = Record<string, unknown>;\nexport type FormRulesType = Record<\n string,\n ConstructorType<any, ValidationRule>[]\n>;\n\n/**\n * Get a set of all validation rules\n * for each form field\n */\nexport function ValidationItems(form: FormType, rules: FormRulesType) {\n return Object.keys(form)\n .map((key) => {\n return {\n key,\n value: form[key],\n rules: rules[key],\n };\n })\n .filter((item) => !!item.rules);\n}\n","/**\n * Validation rule, what requires truthy value\n */\nexport const Required = (v: unknown) => !!v || \"Field required\";\n\n/**\n * Validation rule what requires integer value\n */\nexport const Integer = (v: unknown) => Number.isInteger(v) || \"Must be integer\";\n"],"names":["ActualMessage","Message","DestroyContainer","form","All","Applied","Dirty","Chainable","MergeAccumulation"],"mappings":"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"}
1
+ {"version":3,"file":"silentium_validation.cjs","sources":["../src/models/Validated.ts","../src/models/ValidationErrors.ts","../src/models/ValidationErrorsHappened.ts","../src/models/ValidationErrorsSummary.ts","../src/models/ValidationErrorsTouched.ts","../src/models/ValidationItems.ts","../src/rules.ts"],"sourcesContent":["import { ValidationErrorType } from \"@/types\";\n\n/**\n * Check if there are any errors in the errors object\n * Returns a boolean type\n *\n * @url https://silentium.pw/article/validated/view\n */\nexport function Validated(errors: ValidationErrorType) {\n return !Object.values(errors).some(\n (errorValues: any) => errorValues.length > 0,\n );\n}\n","import {\n ActualMessage,\n All,\n Applied,\n DestroyContainer,\n MaybeMessage,\n Message,\n MessageType,\n} from \"silentium\";\nimport { ValidationErrorType, ValidationItem } from \"@/types\";\n\n/**\n * Accepts a set of items that need to be validated\n * and when rules produce values, returns the overall set\n * of errors for the given configuration\n *\n * @url https://silentium.pw/article/validation-errors/view\n */\nexport function ValidationErrors(\n form: MaybeMessage<ValidationItem[]>,\n): MessageType<ValidationErrorType> {\n const $form = ActualMessage(form);\n return Message((resolve, reject) => {\n const formDc = DestroyContainer();\n $form.then((form) => {\n formDc.destroy();\n const entries = form.map((i) => {\n return All(\n i.key,\n Applied(\n All(\n ...i.rules.map((rule) => {\n return formDc.add(rule(i.value));\n }),\n ),\n (items) => items.filter(ExcludeTrue).map(ErrorFormat),\n ) as MessageType<string[]>,\n );\n });\n Applied(All(...entries), (e: any) => Object.fromEntries(e))\n .catch(reject)\n .then(resolve);\n });\n });\n}\n\nfunction ErrorFormat(v: boolean | string) {\n return v === false ? \"Error!\" : v;\n}\n\nfunction ExcludeTrue(v: boolean | string) {\n return v !== true;\n}\n","import { ValidationErrorType } from \"@/types\";\n\n/**\n * Show only the errors that exist, fields without errors are not shown\n *\n * @url https://silentium.pw/article/validation-errors-happened/view\n */\nexport function ValidationErrorsHappened(base: ValidationErrorType) {\n return Object.fromEntries(\n Object.entries(base).filter((entry) => entry[1].length > 0),\n );\n}\n","import { ValidationErrorType } from \"@/types\";\n\n/**\n * Overall array of all errors\n *\n * @url https://silentium.pw/article/validation-errors-summary/view\n */\nexport function ValidationErrorsSummary(errors: ValidationErrorType) {\n return Object.values(errors).flat();\n}\n","import { All, Applied, Chainable, MessageType } from \"silentium\";\nimport { ValidationErrorType } from \"@/types\";\nimport { Dirty, MergeAccumulation } from \"silentium-components\";\n\n/**\n * Validation errors are only those that correspond to changed form fields\n *\n * @url https://silentium.pw/article/validation-errors-touched/view\n */\nexport function ValidationErrorsTouched(\n $form: MessageType<Record<string, unknown>>,\n $errors: MessageType<ValidationErrorType>,\n) {\n const dirtyForm = Dirty($form);\n Chainable(dirtyForm).chain($form);\n const touchedForm = MergeAccumulation(dirtyForm);\n const errorsTouched = All(Applied(touchedForm, Object.keys), $errors);\n return Applied(errorsTouched, ([touched, errors]) => {\n return Object.fromEntries(\n Object.entries(errors).filter((entry) => touched.includes(entry[0])),\n );\n });\n}\n","import { ConstructorType } from \"silentium\";\nimport { ValidationRule } from \"@/types\";\n\nexport type FormType = Record<string, unknown>;\nexport type FormRulesType = Record<\n string,\n ConstructorType<any, ValidationRule>[]\n>;\n\n/**\n * Get a set of all validation rules\n * for each form field\n *\n * @url https://silentium.pw/article/validation-items/view\n */\nexport function ValidationItems(form: FormType, rules: FormRulesType) {\n return Object.keys(form)\n .map((key) => {\n return {\n key,\n value: form[key],\n rules: rules[key],\n };\n })\n .filter((item) => !!item.rules);\n}\n","/**\n * Validation rule, what requires truthy value\n */\nexport const Required = (v: unknown) => !!v || \"Field required\";\n\n/**\n * Validation rule what requires integer value\n */\nexport const Integer = (v: unknown) => Number.isInteger(v) || \"Must be integer\";\n"],"names":["ActualMessage","Message","DestroyContainer","form","All","Applied","Dirty","Chainable","MergeAccumulation"],"mappings":"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"}
@@ -12,6 +12,8 @@ interface ValidationItem {
12
12
  /**
13
13
  * Check if there are any errors in the errors object
14
14
  * Returns a boolean type
15
+ *
16
+ * @url https://silentium.pw/article/validated/view
15
17
  */
16
18
  declare function Validated(errors: ValidationErrorType): boolean;
17
19
 
@@ -19,11 +21,15 @@ declare function Validated(errors: ValidationErrorType): boolean;
19
21
  * Accepts a set of items that need to be validated
20
22
  * and when rules produce values, returns the overall set
21
23
  * of errors for the given configuration
24
+ *
25
+ * @url https://silentium.pw/article/validation-errors/view
22
26
  */
23
27
  declare function ValidationErrors(form: MaybeMessage<ValidationItem[]>): MessageType<ValidationErrorType>;
24
28
 
25
29
  /**
26
30
  * Show only the errors that exist, fields without errors are not shown
31
+ *
32
+ * @url https://silentium.pw/article/validation-errors-happened/view
27
33
  */
28
34
  declare function ValidationErrorsHappened(base: ValidationErrorType): {
29
35
  [k: string]: string[];
@@ -31,11 +37,15 @@ declare function ValidationErrorsHappened(base: ValidationErrorType): {
31
37
 
32
38
  /**
33
39
  * Overall array of all errors
40
+ *
41
+ * @url https://silentium.pw/article/validation-errors-summary/view
34
42
  */
35
43
  declare function ValidationErrorsSummary(errors: ValidationErrorType): string[];
36
44
 
37
45
  /**
38
46
  * Validation errors are only those that correspond to changed form fields
47
+ *
48
+ * @url https://silentium.pw/article/validation-errors-touched/view
39
49
  */
40
50
  declare function ValidationErrorsTouched($form: MessageType<Record<string, unknown>>, $errors: MessageType<ValidationErrorType>): silentium.MessageRx<{
41
51
  [k: string]: string[];
@@ -46,6 +56,8 @@ type FormRulesType = Record<string, ConstructorType<any, ValidationRule>[]>;
46
56
  /**
47
57
  * Get a set of all validation rules
48
58
  * for each form field
59
+ *
60
+ * @url https://silentium.pw/article/validation-items/view
49
61
  */
50
62
  declare function ValidationItems(form: FormType, rules: FormRulesType): {
51
63
  key: string;
@@ -1 +1 @@
1
- {"version":3,"file":"silentium_validation.js","sources":["../src/models/Validated.ts","../src/models/ValidationErrors.ts","../src/models/ValidationErrorsHappened.ts","../src/models/ValidationErrorsSummary.ts","../src/models/ValidationErrorsTouched.ts","../src/models/ValidationItems.ts","../src/rules.ts"],"sourcesContent":["import { ValidationErrorType } from \"@/types\";\n\n/**\n * Check if there are any errors in the errors object\n * Returns a boolean type\n */\nexport function Validated(errors: ValidationErrorType) {\n return !Object.values(errors).some(\n (errorValues: any) => errorValues.length > 0,\n );\n}\n","import {\n ActualMessage,\n All,\n Applied,\n DestroyContainer,\n MaybeMessage,\n Message,\n MessageType,\n} from \"silentium\";\nimport { ValidationErrorType, ValidationItem } from \"@/types\";\n\n/**\n * Accepts a set of items that need to be validated\n * and when rules produce values, returns the overall set\n * of errors for the given configuration\n */\nexport function ValidationErrors(\n form: MaybeMessage<ValidationItem[]>,\n): MessageType<ValidationErrorType> {\n const $form = ActualMessage(form);\n return Message((resolve, reject) => {\n const formDc = DestroyContainer();\n $form.then((form) => {\n formDc.destroy();\n const entries = form.map((i) => {\n return All(\n i.key,\n Applied(\n All(\n ...i.rules.map((rule) => {\n return formDc.add(rule(i.value));\n }),\n ),\n (items) => items.filter(ExcludeTrue).map(ErrorFormat),\n ) as MessageType<string[]>,\n );\n });\n Applied(All(...entries), (e: any) => Object.fromEntries(e))\n .catch(reject)\n .then(resolve);\n });\n });\n}\n\nfunction ErrorFormat(v: boolean | string) {\n return v === false ? \"Error!\" : v;\n}\n\nfunction ExcludeTrue(v: boolean | string) {\n return v !== true;\n}\n","import { ValidationErrorType } from \"@/types\";\n\n/**\n * Show only the errors that exist, fields without errors are not shown\n */\nexport function ValidationErrorsHappened(base: ValidationErrorType) {\n return Object.fromEntries(\n Object.entries(base).filter((entry) => entry[1].length > 0),\n );\n}\n","import { ValidationErrorType } from \"@/types\";\n\n/**\n * Overall array of all errors\n */\nexport function ValidationErrorsSummary(errors: ValidationErrorType) {\n return Object.values(errors).flat();\n}\n","import { All, Applied, Chainable, MessageType } from \"silentium\";\nimport { ValidationErrorType } from \"@/types\";\nimport { Dirty, MergeAccumulation } from \"silentium-components\";\n\n/**\n * Validation errors are only those that correspond to changed form fields\n */\nexport function ValidationErrorsTouched(\n $form: MessageType<Record<string, unknown>>,\n $errors: MessageType<ValidationErrorType>,\n) {\n const dirtyForm = Dirty($form);\n Chainable(dirtyForm).chain($form);\n const touchedForm = MergeAccumulation(dirtyForm);\n const errorsTouched = All(Applied(touchedForm, Object.keys), $errors);\n return Applied(errorsTouched, ([touched, errors]) => {\n return Object.fromEntries(\n Object.entries(errors).filter((entry) => touched.includes(entry[0])),\n );\n });\n}\n","import { ConstructorType } from \"silentium\";\nimport { ValidationRule } from \"@/types\";\n\nexport type FormType = Record<string, unknown>;\nexport type FormRulesType = Record<\n string,\n ConstructorType<any, ValidationRule>[]\n>;\n\n/**\n * Get a set of all validation rules\n * for each form field\n */\nexport function ValidationItems(form: FormType, rules: FormRulesType) {\n return Object.keys(form)\n .map((key) => {\n return {\n key,\n value: form[key],\n rules: rules[key],\n };\n })\n .filter((item) => !!item.rules);\n}\n","/**\n * Validation rule, what requires truthy value\n */\nexport const Required = (v: unknown) => !!v || \"Field required\";\n\n/**\n * Validation rule what requires integer value\n */\nexport const Integer = (v: unknown) => Number.isInteger(v) || \"Must be integer\";\n"],"names":["form"],"mappings":"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"}
1
+ {"version":3,"file":"silentium_validation.js","sources":["../src/models/Validated.ts","../src/models/ValidationErrors.ts","../src/models/ValidationErrorsHappened.ts","../src/models/ValidationErrorsSummary.ts","../src/models/ValidationErrorsTouched.ts","../src/models/ValidationItems.ts","../src/rules.ts"],"sourcesContent":["import { ValidationErrorType } from \"@/types\";\n\n/**\n * Check if there are any errors in the errors object\n * Returns a boolean type\n *\n * @url https://silentium.pw/article/validated/view\n */\nexport function Validated(errors: ValidationErrorType) {\n return !Object.values(errors).some(\n (errorValues: any) => errorValues.length > 0,\n );\n}\n","import {\n ActualMessage,\n All,\n Applied,\n DestroyContainer,\n MaybeMessage,\n Message,\n MessageType,\n} from \"silentium\";\nimport { ValidationErrorType, ValidationItem } from \"@/types\";\n\n/**\n * Accepts a set of items that need to be validated\n * and when rules produce values, returns the overall set\n * of errors for the given configuration\n *\n * @url https://silentium.pw/article/validation-errors/view\n */\nexport function ValidationErrors(\n form: MaybeMessage<ValidationItem[]>,\n): MessageType<ValidationErrorType> {\n const $form = ActualMessage(form);\n return Message((resolve, reject) => {\n const formDc = DestroyContainer();\n $form.then((form) => {\n formDc.destroy();\n const entries = form.map((i) => {\n return All(\n i.key,\n Applied(\n All(\n ...i.rules.map((rule) => {\n return formDc.add(rule(i.value));\n }),\n ),\n (items) => items.filter(ExcludeTrue).map(ErrorFormat),\n ) as MessageType<string[]>,\n );\n });\n Applied(All(...entries), (e: any) => Object.fromEntries(e))\n .catch(reject)\n .then(resolve);\n });\n });\n}\n\nfunction ErrorFormat(v: boolean | string) {\n return v === false ? \"Error!\" : v;\n}\n\nfunction ExcludeTrue(v: boolean | string) {\n return v !== true;\n}\n","import { ValidationErrorType } from \"@/types\";\n\n/**\n * Show only the errors that exist, fields without errors are not shown\n *\n * @url https://silentium.pw/article/validation-errors-happened/view\n */\nexport function ValidationErrorsHappened(base: ValidationErrorType) {\n return Object.fromEntries(\n Object.entries(base).filter((entry) => entry[1].length > 0),\n );\n}\n","import { ValidationErrorType } from \"@/types\";\n\n/**\n * Overall array of all errors\n *\n * @url https://silentium.pw/article/validation-errors-summary/view\n */\nexport function ValidationErrorsSummary(errors: ValidationErrorType) {\n return Object.values(errors).flat();\n}\n","import { All, Applied, Chainable, MessageType } from \"silentium\";\nimport { ValidationErrorType } from \"@/types\";\nimport { Dirty, MergeAccumulation } from \"silentium-components\";\n\n/**\n * Validation errors are only those that correspond to changed form fields\n *\n * @url https://silentium.pw/article/validation-errors-touched/view\n */\nexport function ValidationErrorsTouched(\n $form: MessageType<Record<string, unknown>>,\n $errors: MessageType<ValidationErrorType>,\n) {\n const dirtyForm = Dirty($form);\n Chainable(dirtyForm).chain($form);\n const touchedForm = MergeAccumulation(dirtyForm);\n const errorsTouched = All(Applied(touchedForm, Object.keys), $errors);\n return Applied(errorsTouched, ([touched, errors]) => {\n return Object.fromEntries(\n Object.entries(errors).filter((entry) => touched.includes(entry[0])),\n );\n });\n}\n","import { ConstructorType } from \"silentium\";\nimport { ValidationRule } from \"@/types\";\n\nexport type FormType = Record<string, unknown>;\nexport type FormRulesType = Record<\n string,\n ConstructorType<any, ValidationRule>[]\n>;\n\n/**\n * Get a set of all validation rules\n * for each form field\n *\n * @url https://silentium.pw/article/validation-items/view\n */\nexport function ValidationItems(form: FormType, rules: FormRulesType) {\n return Object.keys(form)\n .map((key) => {\n return {\n key,\n value: form[key],\n rules: rules[key],\n };\n })\n .filter((item) => !!item.rules);\n}\n","/**\n * Validation rule, what requires truthy value\n */\nexport const Required = (v: unknown) => !!v || \"Field required\";\n\n/**\n * Validation rule what requires integer value\n */\nexport const Integer = (v: unknown) => Number.isInteger(v) || \"Must be integer\";\n"],"names":["form"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"silentium_validation.min.mjs","sources":["../src/models/Validated.ts","../src/models/ValidationErrors.ts","../src/models/ValidationErrorsHappened.ts","../src/models/ValidationErrorsSummary.ts","../src/models/ValidationErrorsTouched.ts","../src/models/ValidationItems.ts","../src/rules.ts"],"sourcesContent":["import { ValidationErrorType } from \"@/types\";\n\n/**\n * Check if there are any errors in the errors object\n * Returns a boolean type\n */\nexport function Validated(errors: ValidationErrorType) {\n return !Object.values(errors).some(\n (errorValues: any) => errorValues.length > 0,\n );\n}\n","import {\n ActualMessage,\n All,\n Applied,\n DestroyContainer,\n MaybeMessage,\n Message,\n MessageType,\n} from \"silentium\";\nimport { ValidationErrorType, ValidationItem } from \"@/types\";\n\n/**\n * Accepts a set of items that need to be validated\n * and when rules produce values, returns the overall set\n * of errors for the given configuration\n */\nexport function ValidationErrors(\n form: MaybeMessage<ValidationItem[]>,\n): MessageType<ValidationErrorType> {\n const $form = ActualMessage(form);\n return Message((resolve, reject) => {\n const formDc = DestroyContainer();\n $form.then((form) => {\n formDc.destroy();\n const entries = form.map((i) => {\n return All(\n i.key,\n Applied(\n All(\n ...i.rules.map((rule) => {\n return formDc.add(rule(i.value));\n }),\n ),\n (items) => items.filter(ExcludeTrue).map(ErrorFormat),\n ) as MessageType<string[]>,\n );\n });\n Applied(All(...entries), (e: any) => Object.fromEntries(e))\n .catch(reject)\n .then(resolve);\n });\n });\n}\n\nfunction ErrorFormat(v: boolean | string) {\n return v === false ? \"Error!\" : v;\n}\n\nfunction ExcludeTrue(v: boolean | string) {\n return v !== true;\n}\n","import { ValidationErrorType } from \"@/types\";\n\n/**\n * Show only the errors that exist, fields without errors are not shown\n */\nexport function ValidationErrorsHappened(base: ValidationErrorType) {\n return Object.fromEntries(\n Object.entries(base).filter((entry) => entry[1].length > 0),\n );\n}\n","import { ValidationErrorType } from \"@/types\";\n\n/**\n * Overall array of all errors\n */\nexport function ValidationErrorsSummary(errors: ValidationErrorType) {\n return Object.values(errors).flat();\n}\n","import { All, Applied, Chainable, MessageType } from \"silentium\";\nimport { ValidationErrorType } from \"@/types\";\nimport { Dirty, MergeAccumulation } from \"silentium-components\";\n\n/**\n * Validation errors are only those that correspond to changed form fields\n */\nexport function ValidationErrorsTouched(\n $form: MessageType<Record<string, unknown>>,\n $errors: MessageType<ValidationErrorType>,\n) {\n const dirtyForm = Dirty($form);\n Chainable(dirtyForm).chain($form);\n const touchedForm = MergeAccumulation(dirtyForm);\n const errorsTouched = All(Applied(touchedForm, Object.keys), $errors);\n return Applied(errorsTouched, ([touched, errors]) => {\n return Object.fromEntries(\n Object.entries(errors).filter((entry) => touched.includes(entry[0])),\n );\n });\n}\n","import { ConstructorType } from \"silentium\";\nimport { ValidationRule } from \"@/types\";\n\nexport type FormType = Record<string, unknown>;\nexport type FormRulesType = Record<\n string,\n ConstructorType<any, ValidationRule>[]\n>;\n\n/**\n * Get a set of all validation rules\n * for each form field\n */\nexport function ValidationItems(form: FormType, rules: FormRulesType) {\n return Object.keys(form)\n .map((key) => {\n return {\n key,\n value: form[key],\n rules: rules[key],\n };\n })\n .filter((item) => !!item.rules);\n}\n","/**\n * Validation rule, what requires truthy value\n */\nexport const Required = (v: unknown) => !!v || \"Field required\";\n\n/**\n * Validation rule what requires integer value\n */\nexport const Integer = (v: unknown) => Number.isInteger(v) || \"Must be integer\";\n"],"names":["Validated","errors","Object","values","some","errorValues","length","ValidationErrors","form","$form","ActualMessage","Message","resolve","reject","formDc","DestroyContainer","then","destroy","entries","map","i","All","key","Applied","rules","rule","add","value","items","filter","ExcludeTrue","ErrorFormat","e","fromEntries","catch","v","ValidationErrorsHappened","base","entry","ValidationErrorsSummary","flat","ValidationErrorsTouched","$errors","dirtyForm","Dirty","Chainable","chain","touchedForm","MergeAccumulation","errorsTouched","keys","touched","includes","ValidationItems","item","Required","Integer","Number","isInteger"],"mappings":"sLAMO,SAASA,EAAUC,GACxB,OAAQC,OAAOC,OAAOF,GAAQG,KAC3BC,GAAqBA,EAAYC,OAAS,EAE/C,CCMO,SAASC,EACdC,GAEA,MAAMC,EAAQC,EAAcF,GAC5B,OAAOG,EAAQ,CAACC,EAASC,KACvB,MAAMC,EAASC,IACfN,EAAMO,KAAMR,IACVM,EAAOG,UACP,MAAMC,EAAUV,EAAKW,IAAKC,GACjBC,EACLD,EAAEE,IACFC,EACEF,KACKD,EAAEI,MAAML,IAAKM,GACPX,EAAOY,IAAID,EAAKL,EAAEO,UAG5BC,GAAUA,EAAMC,OAAOC,GAAaX,IAAIY,MAI/CR,EAAQF,KAAOH,GAAWc,GAAW9B,OAAO+B,YAAYD,IACrDE,MAAMrB,GACNG,KAAKJ,MAGd,CAEA,SAASmB,EAAYI,GACnB,OAAa,IAANA,EAAc,SAAWA,CAClC,CAEA,SAASL,EAAYK,GACnB,OAAa,IAANA,CACT,CC7CO,SAASC,EAAyBC,GACvC,OAAOnC,OAAO+B,YACZ/B,OAAOgB,QAAQmB,GAAMR,OAAQS,GAAUA,EAAM,GAAGhC,OAAS,GAE7D,CCJO,SAASiC,EAAwBtC,GACtC,OAAOC,OAAOC,OAAOF,GAAQuC,MAC/B,CCAO,SAASC,EACdhC,EACAiC,GAEA,MAAMC,EAAYC,EAAMnC,GACxBoC,EAAUF,GAAWG,MAAMrC,GAC3B,MAAMsC,EAAcC,EAAkBL,GAChCM,EAAgB5B,EAAIE,EAAQwB,EAAa7C,OAAOgD,MAAOR,GAC7D,OAAOnB,EAAQ0B,EAAe,EAAEE,EAASlD,KAChCC,OAAO+B,YACZ/B,OAAOgB,QAAQjB,GAAQ4B,OAAQS,GAAUa,EAAQC,SAASd,EAAM,MAGtE,CCPO,SAASe,EAAgB7C,EAAgBgB,GAC9C,OAAOtB,OAAOgD,KAAK1C,GAChBW,IAAKG,IACG,CACLA,MACAK,MAAOnB,EAAKc,GACZE,MAAOA,EAAMF,MAGhBO,OAAQyB,KAAWA,EAAK9B,MAC7B,CCpBO,MAAM+B,EAAYpB,KAAiBA,GAAK,iBAKlCqB,EAAWrB,GAAesB,OAAOC,UAAUvB,IAAM"}
1
+ {"version":3,"file":"silentium_validation.min.mjs","sources":["../src/models/Validated.ts","../src/models/ValidationErrors.ts","../src/models/ValidationErrorsHappened.ts","../src/models/ValidationErrorsSummary.ts","../src/models/ValidationErrorsTouched.ts","../src/models/ValidationItems.ts","../src/rules.ts"],"sourcesContent":["import { ValidationErrorType } from \"@/types\";\n\n/**\n * Check if there are any errors in the errors object\n * Returns a boolean type\n *\n * @url https://silentium.pw/article/validated/view\n */\nexport function Validated(errors: ValidationErrorType) {\n return !Object.values(errors).some(\n (errorValues: any) => errorValues.length > 0,\n );\n}\n","import {\n ActualMessage,\n All,\n Applied,\n DestroyContainer,\n MaybeMessage,\n Message,\n MessageType,\n} from \"silentium\";\nimport { ValidationErrorType, ValidationItem } from \"@/types\";\n\n/**\n * Accepts a set of items that need to be validated\n * and when rules produce values, returns the overall set\n * of errors for the given configuration\n *\n * @url https://silentium.pw/article/validation-errors/view\n */\nexport function ValidationErrors(\n form: MaybeMessage<ValidationItem[]>,\n): MessageType<ValidationErrorType> {\n const $form = ActualMessage(form);\n return Message((resolve, reject) => {\n const formDc = DestroyContainer();\n $form.then((form) => {\n formDc.destroy();\n const entries = form.map((i) => {\n return All(\n i.key,\n Applied(\n All(\n ...i.rules.map((rule) => {\n return formDc.add(rule(i.value));\n }),\n ),\n (items) => items.filter(ExcludeTrue).map(ErrorFormat),\n ) as MessageType<string[]>,\n );\n });\n Applied(All(...entries), (e: any) => Object.fromEntries(e))\n .catch(reject)\n .then(resolve);\n });\n });\n}\n\nfunction ErrorFormat(v: boolean | string) {\n return v === false ? \"Error!\" : v;\n}\n\nfunction ExcludeTrue(v: boolean | string) {\n return v !== true;\n}\n","import { ValidationErrorType } from \"@/types\";\n\n/**\n * Show only the errors that exist, fields without errors are not shown\n *\n * @url https://silentium.pw/article/validation-errors-happened/view\n */\nexport function ValidationErrorsHappened(base: ValidationErrorType) {\n return Object.fromEntries(\n Object.entries(base).filter((entry) => entry[1].length > 0),\n );\n}\n","import { ValidationErrorType } from \"@/types\";\n\n/**\n * Overall array of all errors\n *\n * @url https://silentium.pw/article/validation-errors-summary/view\n */\nexport function ValidationErrorsSummary(errors: ValidationErrorType) {\n return Object.values(errors).flat();\n}\n","import { All, Applied, Chainable, MessageType } from \"silentium\";\nimport { ValidationErrorType } from \"@/types\";\nimport { Dirty, MergeAccumulation } from \"silentium-components\";\n\n/**\n * Validation errors are only those that correspond to changed form fields\n *\n * @url https://silentium.pw/article/validation-errors-touched/view\n */\nexport function ValidationErrorsTouched(\n $form: MessageType<Record<string, unknown>>,\n $errors: MessageType<ValidationErrorType>,\n) {\n const dirtyForm = Dirty($form);\n Chainable(dirtyForm).chain($form);\n const touchedForm = MergeAccumulation(dirtyForm);\n const errorsTouched = All(Applied(touchedForm, Object.keys), $errors);\n return Applied(errorsTouched, ([touched, errors]) => {\n return Object.fromEntries(\n Object.entries(errors).filter((entry) => touched.includes(entry[0])),\n );\n });\n}\n","import { ConstructorType } from \"silentium\";\nimport { ValidationRule } from \"@/types\";\n\nexport type FormType = Record<string, unknown>;\nexport type FormRulesType = Record<\n string,\n ConstructorType<any, ValidationRule>[]\n>;\n\n/**\n * Get a set of all validation rules\n * for each form field\n *\n * @url https://silentium.pw/article/validation-items/view\n */\nexport function ValidationItems(form: FormType, rules: FormRulesType) {\n return Object.keys(form)\n .map((key) => {\n return {\n key,\n value: form[key],\n rules: rules[key],\n };\n })\n .filter((item) => !!item.rules);\n}\n","/**\n * Validation rule, what requires truthy value\n */\nexport const Required = (v: unknown) => !!v || \"Field required\";\n\n/**\n * Validation rule what requires integer value\n */\nexport const Integer = (v: unknown) => Number.isInteger(v) || \"Must be integer\";\n"],"names":["Validated","errors","Object","values","some","errorValues","length","ValidationErrors","form","$form","ActualMessage","Message","resolve","reject","formDc","DestroyContainer","then","destroy","entries","map","i","All","key","Applied","rules","rule","add","value","items","filter","ExcludeTrue","ErrorFormat","e","fromEntries","catch","v","ValidationErrorsHappened","base","entry","ValidationErrorsSummary","flat","ValidationErrorsTouched","$errors","dirtyForm","Dirty","Chainable","chain","touchedForm","MergeAccumulation","errorsTouched","keys","touched","includes","ValidationItems","item","Required","Integer","Number","isInteger"],"mappings":"sLAQO,SAASA,EAAUC,GACxB,OAAQC,OAAOC,OAAOF,GAAQG,KAC3BC,GAAqBA,EAAYC,OAAS,EAE/C,CCMO,SAASC,EACdC,GAEA,MAAMC,EAAQC,EAAcF,GAC5B,OAAOG,EAAQ,CAACC,EAASC,KACvB,MAAMC,EAASC,IACfN,EAAMO,KAAMR,IACVM,EAAOG,UACP,MAAMC,EAAUV,EAAKW,IAAKC,GACjBC,EACLD,EAAEE,IACFC,EACEF,KACKD,EAAEI,MAAML,IAAKM,GACPX,EAAOY,IAAID,EAAKL,EAAEO,UAG5BC,GAAUA,EAAMC,OAAOC,GAAaX,IAAIY,MAI/CR,EAAQF,KAAOH,GAAWc,GAAW9B,OAAO+B,YAAYD,IACrDE,MAAMrB,GACNG,KAAKJ,MAGd,CAEA,SAASmB,EAAYI,GACnB,OAAa,IAANA,EAAc,SAAWA,CAClC,CAEA,SAASL,EAAYK,GACnB,OAAa,IAANA,CACT,CC7CO,SAASC,EAAyBC,GACvC,OAAOnC,OAAO+B,YACZ/B,OAAOgB,QAAQmB,GAAMR,OAAQS,GAAUA,EAAM,GAAGhC,OAAS,GAE7D,CCJO,SAASiC,EAAwBtC,GACtC,OAAOC,OAAOC,OAAOF,GAAQuC,MAC/B,CCAO,SAASC,EACdhC,EACAiC,GAEA,MAAMC,EAAYC,EAAMnC,GACxBoC,EAAUF,GAAWG,MAAMrC,GAC3B,MAAMsC,EAAcC,EAAkBL,GAChCM,EAAgB5B,EAAIE,EAAQwB,EAAa7C,OAAOgD,MAAOR,GAC7D,OAAOnB,EAAQ0B,EAAe,EAAEE,EAASlD,KAChCC,OAAO+B,YACZ/B,OAAOgB,QAAQjB,GAAQ4B,OAAQS,GAAUa,EAAQC,SAASd,EAAM,MAGtE,CCPO,SAASe,EAAgB7C,EAAgBgB,GAC9C,OAAOtB,OAAOgD,KAAK1C,GAChBW,IAAKG,IACG,CACLA,MACAK,MAAOnB,EAAKc,GACZE,MAAOA,EAAMF,MAGhBO,OAAQyB,KAAWA,EAAK9B,MAC7B,CCtBO,MAAM+B,EAAYpB,KAAiBA,GAAK,iBAKlCqB,EAAWrB,GAAesB,OAAOC,UAAUvB,IAAM"}
@@ -1 +1 @@
1
- {"version":3,"file":"silentium_validation.mjs","sources":["../src/models/Validated.ts","../src/models/ValidationErrors.ts","../src/models/ValidationErrorsHappened.ts","../src/models/ValidationErrorsSummary.ts","../src/models/ValidationErrorsTouched.ts","../src/models/ValidationItems.ts","../src/rules.ts"],"sourcesContent":["import { ValidationErrorType } from \"@/types\";\n\n/**\n * Check if there are any errors in the errors object\n * Returns a boolean type\n */\nexport function Validated(errors: ValidationErrorType) {\n return !Object.values(errors).some(\n (errorValues: any) => errorValues.length > 0,\n );\n}\n","import {\n ActualMessage,\n All,\n Applied,\n DestroyContainer,\n MaybeMessage,\n Message,\n MessageType,\n} from \"silentium\";\nimport { ValidationErrorType, ValidationItem } from \"@/types\";\n\n/**\n * Accepts a set of items that need to be validated\n * and when rules produce values, returns the overall set\n * of errors for the given configuration\n */\nexport function ValidationErrors(\n form: MaybeMessage<ValidationItem[]>,\n): MessageType<ValidationErrorType> {\n const $form = ActualMessage(form);\n return Message((resolve, reject) => {\n const formDc = DestroyContainer();\n $form.then((form) => {\n formDc.destroy();\n const entries = form.map((i) => {\n return All(\n i.key,\n Applied(\n All(\n ...i.rules.map((rule) => {\n return formDc.add(rule(i.value));\n }),\n ),\n (items) => items.filter(ExcludeTrue).map(ErrorFormat),\n ) as MessageType<string[]>,\n );\n });\n Applied(All(...entries), (e: any) => Object.fromEntries(e))\n .catch(reject)\n .then(resolve);\n });\n });\n}\n\nfunction ErrorFormat(v: boolean | string) {\n return v === false ? \"Error!\" : v;\n}\n\nfunction ExcludeTrue(v: boolean | string) {\n return v !== true;\n}\n","import { ValidationErrorType } from \"@/types\";\n\n/**\n * Show only the errors that exist, fields without errors are not shown\n */\nexport function ValidationErrorsHappened(base: ValidationErrorType) {\n return Object.fromEntries(\n Object.entries(base).filter((entry) => entry[1].length > 0),\n );\n}\n","import { ValidationErrorType } from \"@/types\";\n\n/**\n * Overall array of all errors\n */\nexport function ValidationErrorsSummary(errors: ValidationErrorType) {\n return Object.values(errors).flat();\n}\n","import { All, Applied, Chainable, MessageType } from \"silentium\";\nimport { ValidationErrorType } from \"@/types\";\nimport { Dirty, MergeAccumulation } from \"silentium-components\";\n\n/**\n * Validation errors are only those that correspond to changed form fields\n */\nexport function ValidationErrorsTouched(\n $form: MessageType<Record<string, unknown>>,\n $errors: MessageType<ValidationErrorType>,\n) {\n const dirtyForm = Dirty($form);\n Chainable(dirtyForm).chain($form);\n const touchedForm = MergeAccumulation(dirtyForm);\n const errorsTouched = All(Applied(touchedForm, Object.keys), $errors);\n return Applied(errorsTouched, ([touched, errors]) => {\n return Object.fromEntries(\n Object.entries(errors).filter((entry) => touched.includes(entry[0])),\n );\n });\n}\n","import { ConstructorType } from \"silentium\";\nimport { ValidationRule } from \"@/types\";\n\nexport type FormType = Record<string, unknown>;\nexport type FormRulesType = Record<\n string,\n ConstructorType<any, ValidationRule>[]\n>;\n\n/**\n * Get a set of all validation rules\n * for each form field\n */\nexport function ValidationItems(form: FormType, rules: FormRulesType) {\n return Object.keys(form)\n .map((key) => {\n return {\n key,\n value: form[key],\n rules: rules[key],\n };\n })\n .filter((item) => !!item.rules);\n}\n","/**\n * Validation rule, what requires truthy value\n */\nexport const Required = (v: unknown) => !!v || \"Field required\";\n\n/**\n * Validation rule what requires integer value\n */\nexport const Integer = (v: unknown) => Number.isInteger(v) || \"Must be integer\";\n"],"names":["form"],"mappings":";;;AAMO,SAAS,UAAU,MAAA,EAA6B;AACrD,EAAA,OAAO,CAAC,MAAA,CAAO,MAAA,CAAO,MAAM,CAAA,CAAE,IAAA;AAAA,IAC5B,CAAC,WAAA,KAAqB,WAAA,CAAY,MAAA,GAAS;AAAA,GAC7C;AACF;;ACMO,SAAS,iBACd,IAAA,EACkC;AAClC,EAAA,MAAM,KAAA,GAAQ,cAAc,IAAI,CAAA;AAChC,EAAA,OAAO,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAA,KAAW;AAClC,IAAA,MAAM,SAAS,gBAAA,EAAiB;AAChC,IAAA,KAAA,CAAM,IAAA,CAAK,CAACA,KAAAA,KAAS;AACnB,MAAA,MAAA,CAAO,OAAA,EAAQ;AACf,MAAA,MAAM,OAAA,GAAUA,KAAAA,CAAK,GAAA,CAAI,CAAC,CAAA,KAAM;AAC9B,QAAA,OAAO,GAAA;AAAA,UACL,CAAA,CAAE,GAAA;AAAA,UACF,OAAA;AAAA,YACE,GAAA;AAAA,cACE,GAAG,CAAA,CAAE,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AACvB,gBAAA,OAAO,MAAA,CAAO,GAAA,CAAI,IAAA,CAAK,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,cACjC,CAAC;AAAA,aACH;AAAA,YACA,CAAC,KAAA,KAAU,KAAA,CAAM,OAAO,WAAW,CAAA,CAAE,IAAI,WAAW;AAAA;AACtD,SACF;AAAA,MACF,CAAC,CAAA;AACD,MAAA,OAAA,CAAQ,GAAA,CAAI,GAAG,OAAO,CAAA,EAAG,CAAC,CAAA,KAAW,MAAA,CAAO,WAAA,CAAY,CAAC,CAAC,CAAA,CACvD,KAAA,CAAM,MAAM,CAAA,CACZ,KAAK,OAAO,CAAA;AAAA,IACjB,CAAC,CAAA;AAAA,EACH,CAAC,CAAA;AACH;AAEA,SAAS,YAAY,CAAA,EAAqB;AACxC,EAAA,OAAO,CAAA,KAAM,QAAQ,QAAA,GAAW,CAAA;AAClC;AAEA,SAAS,YAAY,CAAA,EAAqB;AACxC,EAAA,OAAO,CAAA,KAAM,IAAA;AACf;;AC7CO,SAAS,yBAAyB,IAAA,EAA2B;AAClE,EAAA,OAAO,MAAA,CAAO,WAAA;AAAA,IACZ,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA,CAAE,MAAA,CAAO,CAAC,KAAA,KAAU,KAAA,CAAM,CAAC,CAAA,CAAE,MAAA,GAAS,CAAC;AAAA,GAC5D;AACF;;ACJO,SAAS,wBAAwB,MAAA,EAA6B;AACnE,EAAA,OAAO,MAAA,CAAO,MAAA,CAAO,MAAM,CAAA,CAAE,IAAA,EAAK;AACpC;;ACAO,SAAS,uBAAA,CACd,OACA,OAAA,EACA;AACA,EAAA,MAAM,SAAA,GAAY,MAAM,KAAK,CAAA;AAC7B,EAAA,SAAA,CAAU,SAAS,CAAA,CAAE,KAAA,CAAM,KAAK,CAAA;AAChC,EAAA,MAAM,WAAA,GAAc,kBAAkB,SAAS,CAAA;AAC/C,EAAA,MAAM,gBAAgB,GAAA,CAAI,OAAA,CAAQ,aAAa,MAAA,CAAO,IAAI,GAAG,OAAO,CAAA;AACpE,EAAA,OAAO,QAAQ,aAAA,EAAe,CAAC,CAAC,OAAA,EAAS,MAAM,CAAA,KAAM;AACnD,IAAA,OAAO,MAAA,CAAO,WAAA;AAAA,MACZ,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,CAAE,MAAA,CAAO,CAAC,KAAA,KAAU,OAAA,CAAQ,QAAA,CAAS,KAAA,CAAM,CAAC,CAAC,CAAC;AAAA,KACrE;AAAA,EACF,CAAC,CAAA;AACH;;ACPO,SAAS,eAAA,CAAgB,MAAgB,KAAA,EAAsB;AACpE,EAAA,OAAO,OAAO,IAAA,CAAK,IAAI,CAAA,CACpB,GAAA,CAAI,CAAC,GAAA,KAAQ;AACZ,IAAA,OAAO;AAAA,MACL,GAAA;AAAA,MACA,KAAA,EAAO,KAAK,GAAG,CAAA;AAAA,MACf,KAAA,EAAO,MAAM,GAAG;AAAA,KAClB;AAAA,EACF,CAAC,EACA,MAAA,CAAO,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK,CAAA;AAClC;;ACpBO,MAAM,QAAA,GAAW,CAAC,CAAA,KAAe,CAAC,CAAC,CAAA,IAAK;AAKxC,MAAM,UAAU,CAAC,CAAA,KAAe,MAAA,CAAO,SAAA,CAAU,CAAC,CAAA,IAAK;;;;"}
1
+ {"version":3,"file":"silentium_validation.mjs","sources":["../src/models/Validated.ts","../src/models/ValidationErrors.ts","../src/models/ValidationErrorsHappened.ts","../src/models/ValidationErrorsSummary.ts","../src/models/ValidationErrorsTouched.ts","../src/models/ValidationItems.ts","../src/rules.ts"],"sourcesContent":["import { ValidationErrorType } from \"@/types\";\n\n/**\n * Check if there are any errors in the errors object\n * Returns a boolean type\n *\n * @url https://silentium.pw/article/validated/view\n */\nexport function Validated(errors: ValidationErrorType) {\n return !Object.values(errors).some(\n (errorValues: any) => errorValues.length > 0,\n );\n}\n","import {\n ActualMessage,\n All,\n Applied,\n DestroyContainer,\n MaybeMessage,\n Message,\n MessageType,\n} from \"silentium\";\nimport { ValidationErrorType, ValidationItem } from \"@/types\";\n\n/**\n * Accepts a set of items that need to be validated\n * and when rules produce values, returns the overall set\n * of errors for the given configuration\n *\n * @url https://silentium.pw/article/validation-errors/view\n */\nexport function ValidationErrors(\n form: MaybeMessage<ValidationItem[]>,\n): MessageType<ValidationErrorType> {\n const $form = ActualMessage(form);\n return Message((resolve, reject) => {\n const formDc = DestroyContainer();\n $form.then((form) => {\n formDc.destroy();\n const entries = form.map((i) => {\n return All(\n i.key,\n Applied(\n All(\n ...i.rules.map((rule) => {\n return formDc.add(rule(i.value));\n }),\n ),\n (items) => items.filter(ExcludeTrue).map(ErrorFormat),\n ) as MessageType<string[]>,\n );\n });\n Applied(All(...entries), (e: any) => Object.fromEntries(e))\n .catch(reject)\n .then(resolve);\n });\n });\n}\n\nfunction ErrorFormat(v: boolean | string) {\n return v === false ? \"Error!\" : v;\n}\n\nfunction ExcludeTrue(v: boolean | string) {\n return v !== true;\n}\n","import { ValidationErrorType } from \"@/types\";\n\n/**\n * Show only the errors that exist, fields without errors are not shown\n *\n * @url https://silentium.pw/article/validation-errors-happened/view\n */\nexport function ValidationErrorsHappened(base: ValidationErrorType) {\n return Object.fromEntries(\n Object.entries(base).filter((entry) => entry[1].length > 0),\n );\n}\n","import { ValidationErrorType } from \"@/types\";\n\n/**\n * Overall array of all errors\n *\n * @url https://silentium.pw/article/validation-errors-summary/view\n */\nexport function ValidationErrorsSummary(errors: ValidationErrorType) {\n return Object.values(errors).flat();\n}\n","import { All, Applied, Chainable, MessageType } from \"silentium\";\nimport { ValidationErrorType } from \"@/types\";\nimport { Dirty, MergeAccumulation } from \"silentium-components\";\n\n/**\n * Validation errors are only those that correspond to changed form fields\n *\n * @url https://silentium.pw/article/validation-errors-touched/view\n */\nexport function ValidationErrorsTouched(\n $form: MessageType<Record<string, unknown>>,\n $errors: MessageType<ValidationErrorType>,\n) {\n const dirtyForm = Dirty($form);\n Chainable(dirtyForm).chain($form);\n const touchedForm = MergeAccumulation(dirtyForm);\n const errorsTouched = All(Applied(touchedForm, Object.keys), $errors);\n return Applied(errorsTouched, ([touched, errors]) => {\n return Object.fromEntries(\n Object.entries(errors).filter((entry) => touched.includes(entry[0])),\n );\n });\n}\n","import { ConstructorType } from \"silentium\";\nimport { ValidationRule } from \"@/types\";\n\nexport type FormType = Record<string, unknown>;\nexport type FormRulesType = Record<\n string,\n ConstructorType<any, ValidationRule>[]\n>;\n\n/**\n * Get a set of all validation rules\n * for each form field\n *\n * @url https://silentium.pw/article/validation-items/view\n */\nexport function ValidationItems(form: FormType, rules: FormRulesType) {\n return Object.keys(form)\n .map((key) => {\n return {\n key,\n value: form[key],\n rules: rules[key],\n };\n })\n .filter((item) => !!item.rules);\n}\n","/**\n * Validation rule, what requires truthy value\n */\nexport const Required = (v: unknown) => !!v || \"Field required\";\n\n/**\n * Validation rule what requires integer value\n */\nexport const Integer = (v: unknown) => Number.isInteger(v) || \"Must be integer\";\n"],"names":["form"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "silentium-validation",
3
- "version": "0.0.4",
3
+ "version": "0.0.5",
4
4
  "description": "Validation library based on silentium",
5
5
  "license": "MIT",
6
6
  "author": "Silentium Lab",
@@ -47,8 +47,8 @@
47
47
  "vitest": "^4.0.14"
48
48
  },
49
49
  "dependencies": {
50
- "silentium": "^0.0.169",
51
- "silentium-components": "^0.0.94"
50
+ "silentium": "^0.0.205",
51
+ "silentium-components": "^0.0.111"
52
52
  },
53
53
  "config": {
54
54
  "commitizen": {
@@ -3,6 +3,8 @@ import { ValidationErrorType } from "@/types";
3
3
  /**
4
4
  * Check if there are any errors in the errors object
5
5
  * Returns a boolean type
6
+ *
7
+ * @url https://silentium.pw/article/validated/view
6
8
  */
7
9
  export function Validated(errors: ValidationErrorType) {
8
10
  return !Object.values(errors).some(
@@ -13,6 +13,8 @@ import { ValidationErrorType, ValidationItem } from "@/types";
13
13
  * Accepts a set of items that need to be validated
14
14
  * and when rules produce values, returns the overall set
15
15
  * of errors for the given configuration
16
+ *
17
+ * @url https://silentium.pw/article/validation-errors/view
16
18
  */
17
19
  export function ValidationErrors(
18
20
  form: MaybeMessage<ValidationItem[]>,
@@ -2,6 +2,8 @@ import { ValidationErrorType } from "@/types";
2
2
 
3
3
  /**
4
4
  * Show only the errors that exist, fields without errors are not shown
5
+ *
6
+ * @url https://silentium.pw/article/validation-errors-happened/view
5
7
  */
6
8
  export function ValidationErrorsHappened(base: ValidationErrorType) {
7
9
  return Object.fromEntries(
@@ -2,6 +2,8 @@ import { ValidationErrorType } from "@/types";
2
2
 
3
3
  /**
4
4
  * Overall array of all errors
5
+ *
6
+ * @url https://silentium.pw/article/validation-errors-summary/view
5
7
  */
6
8
  export function ValidationErrorsSummary(errors: ValidationErrorType) {
7
9
  return Object.values(errors).flat();
@@ -4,6 +4,8 @@ import { Dirty, MergeAccumulation } from "silentium-components";
4
4
 
5
5
  /**
6
6
  * Validation errors are only those that correspond to changed form fields
7
+ *
8
+ * @url https://silentium.pw/article/validation-errors-touched/view
7
9
  */
8
10
  export function ValidationErrorsTouched(
9
11
  $form: MessageType<Record<string, unknown>>,
@@ -10,6 +10,8 @@ export type FormRulesType = Record<
10
10
  /**
11
11
  * Get a set of all validation rules
12
12
  * for each form field
13
+ *
14
+ * @url https://silentium.pw/article/validation-items/view
13
15
  */
14
16
  export function ValidationItems(form: FormType, rules: FormRulesType) {
15
17
  return Object.keys(form)