@colisweb/rescript-toolkit 5.12.0 → 5.13.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/locale/fr.json CHANGED
@@ -24,6 +24,11 @@
24
24
  "defaultMessage": "Format requis : 14 chiffres",
25
25
  "message": "Format requis : 14 chiffres"
26
26
  },
27
+ {
28
+ "id": "_1a17bbef",
29
+ "defaultMessage": "Le mot de passe doit contenir au moins 10 caractères, avoir au moins 1 minuscule, 1 majuscule et un chiffre.",
30
+ "message": "Le mot de passe doit contenir au moins 10 caractères, avoir au moins 1 minuscule, 1 majuscule et un chiffre."
31
+ },
27
32
  {
28
33
  "id": "_242e1892",
29
34
  "defaultMessage": "Cette valeur ne peut être supérieure à {value}.",
@@ -64,6 +69,11 @@
64
69
  "defaultMessage": "Samedi",
65
70
  "message": "Samedi"
66
71
  },
72
+ {
73
+ "id": "_4c9b77dc",
74
+ "defaultMessage": "Le mot de passe ne peut pas contenir l'identifiant.",
75
+ "message": "Le mot de passe ne peut pas contenir l'identifiant."
76
+ },
67
77
  {
68
78
  "id": "_4df46058",
69
79
  "defaultMessage": "Semaine {number}",
@@ -124,6 +134,11 @@
124
134
  "defaultMessage": "Ce mois",
125
135
  "message": "Ce mois"
126
136
  },
137
+ {
138
+ "id": "_7fca1009",
139
+ "defaultMessage": "Veuillez ne pas utiliser votre idenfiant comme mot de passe",
140
+ "message": "Veuillez ne pas utiliser votre idenfiant comme mot de passe"
141
+ },
127
142
  {
128
143
  "id": "_8f8eb0df",
129
144
  "defaultMessage": "Vendredi",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@colisweb/rescript-toolkit",
3
- "version": "5.12.0",
3
+ "version": "5.13.0",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "clean": "rescript clean",
@@ -28,6 +28,7 @@ module Make = (Lenses: Lenses) => {
28
28
  type rec t =
29
29
  | Email({field: Lenses.field<string>, error: option<string>}): t
30
30
  | Phone({field: Lenses.field<string>, error: option<string>}): t
31
+ | Password({field: Lenses.field<string>, error: option<string>}): t
31
32
  | NoValidation({field: Lenses.field<'a>}): t
32
33
  | StringNonEmpty({field: Lenses.field<string>, error: option<string>}): t
33
34
  | StringRegExp({field: Lenses.field<string>, matches: string, error: option<string>}): t
@@ -83,6 +84,7 @@ module Make = (Lenses: Lenses) => {
83
84
 
84
85
  let email = (~error=?, field) => [Email({field, error})]
85
86
  let phone = (~error=?, field) => [Phone({field, error})]
87
+ let password = (~error=?, field) => [Phone({field, error})]
86
88
 
87
89
  let nonEmpty = (~error=?, field) => [StringNonEmpty({field, error})]
88
90
 
@@ -216,6 +218,19 @@ module Make = (Lenses: Lenses) => {
216
218
  }
217
219
  },
218
220
  )
221
+ | Validation.Password({field, error}) => {
222
+ let value = Lenses.get(values, field)
223
+
224
+ (
225
+ Field(field),
226
+ switch value {
227
+ | "" => Error(i18n.stringNonEmpty(~value=""))
228
+ | password if !Js.Re.test_(%re("/(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{10,}/"), password) =>
229
+ Error(error->Option.getWithDefault(i18n.passwordTooShort))
230
+ | _ => Valid
231
+ },
232
+ )
233
+ }
219
234
  | Validation.NoValidation({field}) => (Field(field), Valid)
220
235
  | Validation.StringNonEmpty({field, error}) =>
221
236
  let value = Lenses.get(values, field)
@@ -314,6 +329,7 @@ module Make = (Lenses: Lenses) => {
314
329
  | Validation.FloatMin({field}) => Field(field) == fieldName
315
330
  | Validation.FloatMax({field}) => Field(field) == fieldName
316
331
  | Validation.Email({field}) => Field(field) == fieldName
332
+ | Validation.Password({field}) => Field(field) == fieldName
317
333
  | Validation.NoValidation({field}) => Field(field) == fieldName
318
334
  | Validation.StringNonEmpty({field}) => Field(field) == fieldName
319
335
  | Validation.StringRegExp({field}) => Field(field) == fieldName
@@ -334,6 +350,7 @@ module Make = (Lenses: Lenses) => {
334
350
  | Validation.False({field}) => Field(field) == fieldName
335
351
  | Validation.Phone({field}) => Field(field) == fieldName
336
352
  | Validation.True({field}) => Field(field) == fieldName
353
+ | Validation.Password({field}) => Field(field) == fieldName
337
354
  | Validation.IntMin({field}) => Field(field) == fieldName
338
355
  | Validation.IntMax({field}) => Field(field) == fieldName
339
356
  | Validation.FloatMin({field}) => Field(field) == fieldName
@@ -11,6 +11,7 @@ type t = {
11
11
  stringMin: (~value: string, ~min: int) => string,
12
12
  stringMax: (~value: string, ~max: int) => string,
13
13
  phone: string,
14
+ passwordTooShort: string,
14
15
  }
15
16
 
16
17
  let default = {
@@ -33,4 +34,5 @@ let default = {
33
34
  stringMax: (~value as _value, ~max) =>
34
35
  `Le champ doit avoir au maximum ${max->Int.toString} caractères.`,
35
36
  phone: "Format du numéro invalide. Ex : +33612345678",
37
+ passwordTooShort: "Le mot de passe doit contenir au moins 10 caractères, avoir au moins 1 minuscule, 1 majuscule et un chiffre.",
36
38
  }
@@ -112,6 +112,7 @@ module Make = (Config: Config) => {
112
112
  | Validation.FloatMax({field}) => (Field(field), Pristine)
113
113
  | Validation.Email({field}) => (Field(field), Pristine)
114
114
  | Validation.Phone({field}) => (Field(field), Pristine)
115
+ | Validation.Password({field}) => (Field(field), Pristine)
115
116
  | Validation.NoValidation({field}) => (Field(field), Pristine)
116
117
  | Validation.StringNonEmpty({field}) => (Field(field), Pristine)
117
118
  | Validation.StringRegExp({field}) => (Field(field), Pristine)