@colisweb/rescript-toolkit 5.13.0 → 5.14.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@colisweb/rescript-toolkit",
3
- "version": "5.13.0",
3
+ "version": "5.14.0",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "clean": "rescript clean",
@@ -29,6 +29,7 @@ module Make = (Lenses: Lenses) => {
29
29
  | Email({field: Lenses.field<string>, error: option<string>}): t
30
30
  | Phone({field: Lenses.field<string>, error: option<string>}): t
31
31
  | Password({field: Lenses.field<string>, error: option<string>}): t
32
+ | OptionalPassword({field: Lenses.field<string>, error: option<string>}): t
32
33
  | NoValidation({field: Lenses.field<'a>}): t
33
34
  | StringNonEmpty({field: Lenses.field<string>, error: option<string>}): t
34
35
  | StringRegExp({field: Lenses.field<string>, matches: string, error: option<string>}): t
@@ -84,7 +85,8 @@ module Make = (Lenses: Lenses) => {
84
85
 
85
86
  let email = (~error=?, field) => [Email({field, error})]
86
87
  let phone = (~error=?, field) => [Phone({field, error})]
87
- let password = (~error=?, field) => [Phone({field, error})]
88
+ let password = (~error=?, field) => [Password({field, error})]
89
+ let optionalPassword = (~error=?, field) => [OptionalPassword({field, error})]
88
90
 
89
91
  let nonEmpty = (~error=?, field) => [StringNonEmpty({field, error})]
90
92
 
@@ -231,6 +233,19 @@ module Make = (Lenses: Lenses) => {
231
233
  },
232
234
  )
233
235
  }
236
+ | Validation.OptionalPassword({field, error}) => {
237
+ let value = Lenses.get(values, field)
238
+
239
+ (
240
+ Field(field),
241
+ switch value {
242
+ | "" => Valid
243
+ | password if !Js.Re.test_(%re("/(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{10,}/"), password) =>
244
+ Error(error->Option.getWithDefault(i18n.passwordTooShort))
245
+ | _ => Valid
246
+ },
247
+ )
248
+ }
234
249
  | Validation.NoValidation({field}) => (Field(field), Valid)
235
250
  | Validation.StringNonEmpty({field, error}) =>
236
251
  let value = Lenses.get(values, field)
@@ -330,6 +345,7 @@ module Make = (Lenses: Lenses) => {
330
345
  | Validation.FloatMax({field}) => Field(field) == fieldName
331
346
  | Validation.Email({field}) => Field(field) == fieldName
332
347
  | Validation.Password({field}) => Field(field) == fieldName
348
+ | Validation.OptionalPassword({field}) => Field(field) == fieldName
333
349
  | Validation.NoValidation({field}) => Field(field) == fieldName
334
350
  | Validation.StringNonEmpty({field}) => Field(field) == fieldName
335
351
  | Validation.StringRegExp({field}) => Field(field) == fieldName
@@ -351,6 +367,7 @@ module Make = (Lenses: Lenses) => {
351
367
  | Validation.Phone({field}) => Field(field) == fieldName
352
368
  | Validation.True({field}) => Field(field) == fieldName
353
369
  | Validation.Password({field}) => Field(field) == fieldName
370
+ | Validation.OptionalPassword({field}) => Field(field) == fieldName
354
371
  | Validation.IntMin({field}) => Field(field) == fieldName
355
372
  | Validation.IntMax({field}) => Field(field) == fieldName
356
373
  | Validation.FloatMin({field}) => Field(field) == fieldName
@@ -113,6 +113,7 @@ module Make = (Config: Config) => {
113
113
  | Validation.Email({field}) => (Field(field), Pristine)
114
114
  | Validation.Phone({field}) => (Field(field), Pristine)
115
115
  | Validation.Password({field}) => (Field(field), Pristine)
116
+ | Validation.OptionalPassword({field}) => (Field(field), Pristine)
116
117
  | Validation.NoValidation({field}) => (Field(field), Pristine)
117
118
  | Validation.StringNonEmpty({field}) => (Field(field), Pristine)
118
119
  | Validation.StringRegExp({field}) => (Field(field), Pristine)