schema-dsl 1.2.5 → 2.0.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/CHANGELOG.md +130 -238
- package/LICENSE +21 -21
- package/README.md +628 -2486
- package/dist/DslBuilder-BIgQOAXp.d.ts +343 -0
- package/dist/DslBuilder-CjHTucNQ.d.cts +343 -0
- package/dist/Validator-CllRdrY0.d.ts +192 -0
- package/dist/Validator-D6okG9tr.d.cts +192 -0
- package/dist/index.cjs +6640 -0
- package/dist/index.d.cts +1151 -0
- package/dist/index.d.ts +1151 -0
- package/dist/index.js +6574 -0
- package/dist/plugin-CIKtTMtS.d.cts +246 -0
- package/dist/plugin-CIKtTMtS.d.ts +246 -0
- package/dist/plugins/custom-format.cjs +3818 -0
- package/dist/plugins/custom-format.d.cts +12 -0
- package/dist/plugins/custom-format.d.ts +12 -0
- package/dist/plugins/custom-format.js +3788 -0
- package/dist/plugins/custom-type-example.cjs +3811 -0
- package/dist/plugins/custom-type-example.d.cts +8 -0
- package/dist/plugins/custom-type-example.d.ts +8 -0
- package/dist/plugins/custom-type-example.js +3781 -0
- package/dist/plugins/custom-validator.cjs +144 -0
- package/dist/plugins/custom-validator.d.cts +10 -0
- package/dist/plugins/custom-validator.d.ts +10 -0
- package/dist/plugins/custom-validator.js +119 -0
- package/docs/FEATURE-INDEX.md +553 -519
- package/docs/add-custom-locale.md +496 -483
- package/docs/add-keyword.md +24 -0
- package/docs/api-reference.md +1047 -805
- package/docs/api.md +13 -0
- package/docs/best-practices-project-structure.md +417 -408
- package/docs/best-practices.md +712 -672
- package/docs/cache-manager.md +344 -336
- package/docs/compile.md +45 -0
- package/docs/conditional-api.md +1307 -1278
- package/docs/custom-extensions-guide.md +339 -411
- package/docs/design-philosophy.md +606 -601
- package/docs/doc-index.md +324 -0
- package/docs/dsl-syntax.md +714 -664
- package/docs/dynamic-locale.md +608 -598
- package/docs/enum.md +482 -475
- package/docs/error-handling.md +1975 -1966
- package/docs/export-guide.md +501 -462
- package/docs/export-limitations.md +567 -551
- package/docs/faq.md +596 -577
- package/docs/frontend-i18n-guide.md +307 -293
- package/docs/i18n-user-guide.md +487 -474
- package/docs/i18n.md +476 -457
- package/docs/index.md +48 -0
- package/docs/json-schema-basics.md +40 -0
- package/docs/label-vs-description.md +271 -262
- package/docs/markdown-exporter.md +406 -397
- package/docs/mongodb-exporter.md +302 -295
- package/docs/multi-language.md +26 -0
- package/docs/multi-type-support.md +322 -329
- package/docs/mysql-exporter.md +280 -273
- package/docs/number-operators.md +449 -442
- package/docs/optional-marker-guide.md +326 -321
- package/docs/performance-guide.md +49 -0
- package/docs/plugin-system.md +381 -542
- package/docs/plugin-type-registration.md +34 -0
- package/docs/postgresql-exporter.md +311 -304
- package/docs/public/favicon.svg +5 -0
- package/docs/quick-start.md +435 -761
- package/docs/runtime-locale-support.md +532 -521
- package/docs/schema-helper.md +345 -340
- package/docs/schema-utils-advanced-issues.md +23 -0
- package/docs/schema-utils-best-practices.md +20 -0
- package/docs/schema-utils-chaining.md +150 -143
- package/docs/schema-utils.md +524 -490
- package/docs/security-checklist.md +20 -0
- package/docs/string-extensions.md +488 -480
- package/docs/troubleshooting.md +486 -471
- package/docs/type-converter.md +310 -319
- package/docs/type-reference.md +242 -219
- package/docs/typescript-guide.md +584 -573
- package/docs/union-type-guide.md +157 -147
- package/docs/union-types.md +284 -277
- package/docs/validate-async.md +491 -480
- package/docs/validate-batch.md +49 -0
- package/docs/validate-dsl-object-support.md +578 -573
- package/docs/validate.md +506 -486
- package/docs/validation-guide.md +502 -484
- package/docs/validator.md +39 -0
- package/package.json +131 -73
- package/plugins/custom-format.cjs +8 -0
- package/plugins/custom-type-example.cjs +8 -0
- package/plugins/custom-validator.cjs +8 -0
- package/src/adapters/DslAdapter.ts +111 -0
- package/src/adapters/index.ts +1 -0
- package/src/config/constants.ts +83 -0
- package/src/config/index.ts +2 -0
- package/src/config/patterns.ts +77 -0
- package/src/core/CacheManager.ts +169 -0
- package/src/core/ConditionalBuilder.ts +382 -0
- package/src/core/ConditionalRuntime.ts +28 -0
- package/src/core/ConditionalValidator.ts +255 -0
- package/src/core/DslBuilder.ts +687 -0
- package/src/core/ErrorCodes.ts +38 -0
- package/src/core/ErrorFormatter.ts +271 -0
- package/src/core/JSONSchemaCore.ts +65 -0
- package/src/core/Locale.ts +187 -0
- package/src/core/MessageTemplate.ts +42 -0
- package/src/core/ObjectDslBuilder.ts +64 -0
- package/src/core/PluginManager.ts +326 -0
- package/src/core/StringExtensions.ts +140 -0
- package/src/core/TemplateEngine.ts +44 -0
- package/src/core/Validator.ts +448 -0
- package/src/errors/I18nError.ts +159 -0
- package/src/errors/ValidationError.ts +105 -0
- package/src/exporters/BaseExporter.ts +60 -0
- package/src/exporters/MarkdownExporter.ts +305 -0
- package/src/exporters/MongoDBExporter.ts +126 -0
- package/src/exporters/MySQLExporter.ts +156 -0
- package/src/exporters/PostgreSQLExporter.ts +222 -0
- package/src/exporters/index.ts +18 -0
- package/src/index.ts +651 -0
- package/{lib/locales/en-US.js → src/locales/en-US.ts} +160 -176
- package/{lib/locales/es-ES.js → src/locales/es-ES.ts} +160 -113
- package/{lib/locales/fr-FR.js → src/locales/fr-FR.ts} +160 -113
- package/src/locales/index.ts +103 -0
- package/{lib/locales/ja-JP.js → src/locales/ja-JP.ts} +160 -118
- package/src/locales/types.ts +156 -0
- package/{lib/locales/zh-CN.js → src/locales/zh-CN.ts} +160 -177
- package/src/parser/ConstraintParser.ts +101 -0
- package/src/parser/DslParser.ts +470 -0
- package/src/parser/SchemaCompiler.ts +66 -0
- package/src/parser/TypeRegistry.ts +250 -0
- package/src/parser/index.ts +6 -0
- package/src/plugins/custom-format.ts +124 -0
- package/src/plugins/custom-type-example.ts +106 -0
- package/src/plugins/custom-validator.ts +138 -0
- package/src/types/conditional.ts +28 -0
- package/src/types/config.ts +59 -0
- package/src/types/dsl.ts +131 -0
- package/src/types/error.ts +60 -0
- package/src/types/index.ts +17 -0
- package/src/types/infer.ts +128 -0
- package/src/types/plugin.ts +58 -0
- package/src/types/safe-regex.d.ts +9 -0
- package/src/types/schema.ts +66 -0
- package/src/types/validate.ts +71 -0
- package/src/utils/SchemaHelper.ts +196 -0
- package/src/utils/SchemaUtils.ts +365 -0
- package/src/utils/TypeConverter.ts +215 -0
- package/src/utils/index.ts +10 -0
- package/src/validators/CustomKeywords.ts +477 -0
- package/.eslintignore +0 -11
- package/.eslintrc.json +0 -27
- package/CONTRIBUTING.md +0 -368
- package/STATUS.md +0 -491
- package/changelogs/v1.0.0.md +0 -328
- package/changelogs/v1.0.9.md +0 -367
- package/changelogs/v1.1.0.md +0 -389
- package/changelogs/v1.1.1.md +0 -308
- package/changelogs/v1.1.2.md +0 -183
- package/changelogs/v1.1.3.md +0 -161
- package/changelogs/v1.1.4.md +0 -432
- package/changelogs/v1.1.5.md +0 -493
- package/changelogs/v1.1.6.md +0 -211
- package/changelogs/v1.1.8.md +0 -376
- package/changelogs/v1.2.3.md +0 -124
- package/docs/INDEX.md +0 -252
- package/docs/issues-resolved-summary.md +0 -196
- package/docs/performance-benchmark-report.md +0 -179
- package/docs/performance-quick-reference.md +0 -123
- package/docs/user-questions-answered.md +0 -353
- package/docs/validation-rules-v1.0.2.md +0 -1608
- package/examples/README.md +0 -81
- package/examples/array-dsl-example.js +0 -227
- package/examples/conditional-example.js +0 -288
- package/examples/conditional-non-object.js +0 -129
- package/examples/conditional-validate-example.js +0 -321
- package/examples/custom-extension.js +0 -85
- package/examples/dsl-match-example.js +0 -74
- package/examples/dsl-style.js +0 -118
- package/examples/dynamic-locale-configuration.js +0 -348
- package/examples/dynamic-locale-example.js +0 -287
- package/examples/enum.examples.js +0 -324
- package/examples/export-demo.js +0 -130
- package/examples/express-integration.js +0 -376
- package/examples/i18n-error-handling-complete.js +0 -381
- package/examples/i18n-error-handling-quickstart.md +0 -0
- package/examples/i18n-error.examples.js +0 -181
- package/examples/i18n-full-demo.js +0 -301
- package/examples/i18n-memory-safety.examples.js +0 -268
- package/examples/markdown-export.js +0 -71
- package/examples/middleware-usage.js +0 -93
- package/examples/new-features-comparison.js +0 -315
- package/examples/password-reset/README.md +0 -153
- package/examples/password-reset/schema.js +0 -26
- package/examples/password-reset/test.js +0 -101
- package/examples/plugin-system.examples.js +0 -205
- package/examples/schema-utils-chaining.examples.js +0 -250
- package/examples/simple-example.js +0 -122
- package/examples/slug.examples.js +0 -179
- package/examples/string-extensions.js +0 -297
- package/examples/union-type-example.js +0 -127
- package/examples/union-types-example.js +0 -77
- package/examples/user-registration/README.md +0 -156
- package/examples/user-registration/routes.js +0 -92
- package/examples/user-registration/schema.js +0 -150
- package/examples/user-registration/server.js +0 -74
- package/index.d.ts +0 -3658
- package/index.js +0 -475
- package/index.mjs +0 -60
- package/lib/adapters/DslAdapter.js +0 -995
- package/lib/adapters/index.js +0 -20
- package/lib/config/constants.js +0 -286
- package/lib/config/patterns/common.js +0 -47
- package/lib/config/patterns/creditCard.js +0 -9
- package/lib/config/patterns/idCard.js +0 -9
- package/lib/config/patterns/index.js +0 -9
- package/lib/config/patterns/licensePlate.js +0 -4
- package/lib/config/patterns/passport.js +0 -4
- package/lib/config/patterns/phone.js +0 -9
- package/lib/config/patterns/postalCode.js +0 -5
- package/lib/core/CacheManager.js +0 -376
- package/lib/core/ConditionalBuilder.js +0 -503
- package/lib/core/DslBuilder.js +0 -1589
- package/lib/core/ErrorCodes.js +0 -233
- package/lib/core/ErrorFormatter.js +0 -445
- package/lib/core/JSONSchemaCore.js +0 -347
- package/lib/core/Locale.js +0 -130
- package/lib/core/MessageTemplate.js +0 -98
- package/lib/core/PluginManager.js +0 -448
- package/lib/core/StringExtensions.js +0 -240
- package/lib/core/Validator.js +0 -654
- package/lib/errors/I18nError.js +0 -328
- package/lib/errors/ValidationError.js +0 -191
- package/lib/exporters/MarkdownExporter.js +0 -420
- package/lib/exporters/MongoDBExporter.js +0 -162
- package/lib/exporters/MySQLExporter.js +0 -212
- package/lib/exporters/PostgreSQLExporter.js +0 -289
- package/lib/exporters/index.js +0 -24
- package/lib/locales/index.js +0 -8
- package/lib/utils/LRUCache.js +0 -174
- package/lib/utils/SchemaHelper.js +0 -240
- package/lib/utils/SchemaUtils.js +0 -445
- package/lib/utils/TypeConverter.js +0 -245
- package/lib/utils/index.js +0 -13
- package/lib/validators/CustomKeywords.js +0 -616
- package/lib/validators/index.js +0 -11
|
@@ -1,113 +1,160 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
'
|
|
19
|
-
'
|
|
20
|
-
'
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
'
|
|
24
|
-
'
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
'
|
|
28
|
-
'
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
'
|
|
33
|
-
'
|
|
34
|
-
'
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
'
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
'
|
|
47
|
-
|
|
48
|
-
'
|
|
49
|
-
|
|
50
|
-
//
|
|
51
|
-
'
|
|
52
|
-
'
|
|
53
|
-
'
|
|
54
|
-
'
|
|
55
|
-
'
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
'
|
|
59
|
-
'
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
'
|
|
64
|
-
'
|
|
65
|
-
'
|
|
66
|
-
'
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
'
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
'
|
|
73
|
-
'
|
|
74
|
-
'
|
|
75
|
-
'
|
|
76
|
-
'
|
|
77
|
-
'
|
|
78
|
-
'
|
|
79
|
-
'
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
'
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
'
|
|
86
|
-
'
|
|
87
|
-
|
|
88
|
-
'
|
|
89
|
-
'
|
|
90
|
-
'
|
|
91
|
-
'
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
'
|
|
96
|
-
'
|
|
97
|
-
'
|
|
98
|
-
'
|
|
99
|
-
'
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
'
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
'
|
|
112
|
-
}
|
|
113
|
-
|
|
1
|
+
import type { LocaleMessages } from './types.js'
|
|
2
|
+
|
|
3
|
+
const esES: LocaleMessages = {
|
|
4
|
+
// Generic
|
|
5
|
+
required: '{{#label}} es obligatorio',
|
|
6
|
+
type: '{{#label}} debe ser de tipo {{#expected}}, pero se obtuvo {{#actual}}',
|
|
7
|
+
min: 'La longitud de {{#label}} debe ser al menos {{#limit}}',
|
|
8
|
+
max: 'La longitud de {{#label}} debe ser como máximo {{#limit}}',
|
|
9
|
+
length: 'La longitud de {{#label}} debe ser exactamente {{#expected}}',
|
|
10
|
+
pattern: 'El formato de {{#label}} no es válido',
|
|
11
|
+
enum: '{{#label}} debe ser uno de: {{#allowed}}',
|
|
12
|
+
custom: 'Validación fallida para {{#label}}: {{#message}}',
|
|
13
|
+
circular: 'Referencia circular detectada en {{#label}}',
|
|
14
|
+
'max-depth': 'Profundidad máxima de recursión ({{#depth}}) excedida en {{#label}}',
|
|
15
|
+
exception: 'Excepción de validación en {{#label}}: {{#message}}',
|
|
16
|
+
|
|
17
|
+
// Conditional (v2 additions)
|
|
18
|
+
'conditional.underAge': 'Los menores de edad no pueden registrarse',
|
|
19
|
+
'conditional.blocked': 'La cuenta ha sido bloqueada',
|
|
20
|
+
'conditional.notAllowed': 'El registro no está permitido',
|
|
21
|
+
|
|
22
|
+
// I18nError — generic (v2 additions)
|
|
23
|
+
'error.notFound': '{{#resource}} no encontrado',
|
|
24
|
+
'error.forbidden': 'Acceso a {{#resource}} está prohibido',
|
|
25
|
+
'error.unauthorized': 'No autorizado, por favor inicie sesión',
|
|
26
|
+
'error.invalid': '{{#field}} no es válido',
|
|
27
|
+
'error.duplicate': '{{#resource}} ya existe',
|
|
28
|
+
'error.conflict': 'Conflicto de operación: {{#reason}}',
|
|
29
|
+
|
|
30
|
+
// Account (v2 additions)
|
|
31
|
+
'account.notFound': { code: 'ACCOUNT_NOT_FOUND', message: 'Cuenta no encontrada' },
|
|
32
|
+
'account.inactive': 'La cuenta está inactiva',
|
|
33
|
+
'account.banned': 'La cuenta ha sido suspendida',
|
|
34
|
+
'account.insufficientBalance': {
|
|
35
|
+
code: 'INSUFFICIENT_BALANCE',
|
|
36
|
+
message: 'Saldo insuficiente, actual: {{#balance}}, requerido: {{#required}}',
|
|
37
|
+
},
|
|
38
|
+
'account.insufficientCredits': 'Créditos insuficientes, actual: {{#credits}}, requerido: {{#required}}',
|
|
39
|
+
|
|
40
|
+
// User (v2 additions)
|
|
41
|
+
'user.notFound': 'Usuario no encontrado',
|
|
42
|
+
'user.notVerified': 'El usuario no está verificado',
|
|
43
|
+
'user.noPermission': 'Sin permisos de administrador',
|
|
44
|
+
|
|
45
|
+
// Order (v2 additions)
|
|
46
|
+
'order.notPaid': { code: 'ORDER_NOT_PAID', message: 'Pedido no pagado' },
|
|
47
|
+
'order.paymentMissing': 'Falta información de pago',
|
|
48
|
+
'order.addressMissing': 'Falta la dirección de envío',
|
|
49
|
+
|
|
50
|
+
// Format
|
|
51
|
+
'format.email': '{{#label}} debe ser una dirección de correo electrónico válida',
|
|
52
|
+
'format.url': '{{#label}} debe ser una URL válida',
|
|
53
|
+
'format.uuid': '{{#label}} debe ser un UUID válido',
|
|
54
|
+
'format.date': '{{#label}} debe ser una fecha válida (YYYY-MM-DD)',
|
|
55
|
+
'format.datetime': '{{#label}} debe ser una fecha y hora válida (ISO 8601)',
|
|
56
|
+
'format.time': '{{#label}} debe ser una hora válida (HH:mm:ss)',
|
|
57
|
+
'format.ipv4': '{{#label}} debe ser una dirección IPv4 válida',
|
|
58
|
+
'format.ipv6': '{{#label}} debe ser una dirección IPv6 válida',
|
|
59
|
+
'format.binary': '{{#label}} debe ser una cadena base64 válida',
|
|
60
|
+
|
|
61
|
+
// String
|
|
62
|
+
'string.hostname': '{{#label}} debe ser un nombre de host válido',
|
|
63
|
+
'string.pattern': 'El formato de {{#label}} no coincide con el patrón requerido',
|
|
64
|
+
'string.enum': '{{#label}} debe ser uno de: {{#valids}}',
|
|
65
|
+
'string.length': 'La longitud de {{#label}} debe ser exactamente {{#limit}} caracteres',
|
|
66
|
+
'string.alphanum': '{{#label}} solo puede contener caracteres alfanuméricos',
|
|
67
|
+
'string.trim': '{{#label}} no debe tener espacios al principio ni al final',
|
|
68
|
+
'string.lowercase': '{{#label}} debe estar en minúsculas',
|
|
69
|
+
'string.uppercase': '{{#label}} debe estar en mayúsculas',
|
|
70
|
+
|
|
71
|
+
// Number
|
|
72
|
+
'number.base': '{{#label}} debe ser un número',
|
|
73
|
+
'number.min': '{{#label}} debe ser mayor o igual a {{#limit}}',
|
|
74
|
+
'number.max': '{{#label}} debe ser menor o igual a {{#limit}}',
|
|
75
|
+
'number.integer': '{{#label}} debe ser un número entero',
|
|
76
|
+
'number.positive': '{{#label}} debe ser un número positivo',
|
|
77
|
+
'number.negative': '{{#label}} debe ser un número negativo',
|
|
78
|
+
'number.precision': '{{#label}} debe tener como máximo {{#limit}} decimales',
|
|
79
|
+
'number.port': '{{#label}} debe ser un número de puerto válido (1-65535)',
|
|
80
|
+
|
|
81
|
+
// Boolean
|
|
82
|
+
'boolean.base': '{{#label}} debe ser un booleano',
|
|
83
|
+
|
|
84
|
+
// Object
|
|
85
|
+
'object.base': '{{#label}} debe ser un objeto',
|
|
86
|
+
'object.min': '{{#label}} debe tener al menos {{#limit}} propiedades',
|
|
87
|
+
'object.max': '{{#label}} debe tener como máximo {{#limit}} propiedades',
|
|
88
|
+
'object.unknown': '{{#label}} contiene una propiedad desconocida: {{#key}}',
|
|
89
|
+
'object.missing': 'A {{#label}} le faltan propiedades requeridas',
|
|
90
|
+
'object.schema': '{{#label}} contiene propiedades adicionales',
|
|
91
|
+
'additionalProperties': '{{#label}} NO debe tener propiedades adicionales: {{#key}}',
|
|
92
|
+
|
|
93
|
+
// Array
|
|
94
|
+
'array.base': '{{#label}} debe ser un array',
|
|
95
|
+
'array.min': '{{#label}} debe tener al menos {{#limit}} elementos',
|
|
96
|
+
'array.max': '{{#label}} debe tener como máximo {{#limit}} elementos',
|
|
97
|
+
'array.length': '{{#label}} debe tener exactamente {{#limit}} elementos',
|
|
98
|
+
'array.unique': '{{#label}} no debe contener elementos duplicados',
|
|
99
|
+
'array.sparse': '{{#label}} no debe ser un array disperso',
|
|
100
|
+
'array.includesRequired': '{{#label}} debe incluir los elementos requeridos',
|
|
101
|
+
|
|
102
|
+
// Date
|
|
103
|
+
'date.base': '{{#label}} debe ser una fecha válida',
|
|
104
|
+
'date.min': '{{#label}} no debe ser anterior a {{#limit}}',
|
|
105
|
+
'date.max': '{{#label}} no debe ser posterior a {{#limit}}',
|
|
106
|
+
'date.format': 'El formato de fecha de {{#label}} no es válido',
|
|
107
|
+
'date.greater': '{{#label}} debe ser posterior a {{#limit}}',
|
|
108
|
+
'date.less': '{{#label}} debe ser anterior a {{#limit}}',
|
|
109
|
+
|
|
110
|
+
// Any
|
|
111
|
+
'any.required': '{{#label}} es obligatorio',
|
|
112
|
+
'any.invalid': '{{#label}} contiene un valor no válido',
|
|
113
|
+
'any.only': '{{#label}} debe coincidir con {{#valids}}',
|
|
114
|
+
'any.unknown': 'El campo {{#key}} no está permitido',
|
|
115
|
+
|
|
116
|
+
// Patterns
|
|
117
|
+
'pattern.phone': 'Número de teléfono no válido',
|
|
118
|
+
'pattern.phone.international': 'Número de teléfono internacional no válido',
|
|
119
|
+
'pattern.idCard': 'Número de tarjeta de identificación no válido',
|
|
120
|
+
'pattern.creditCard': 'Número de tarjeta de crédito no válido',
|
|
121
|
+
'pattern.creditCard.visa': 'Número de tarjeta Visa no válido',
|
|
122
|
+
'pattern.creditCard.mastercard': 'Número de Mastercard no válido',
|
|
123
|
+
'pattern.creditCard.amex': 'Número de tarjeta American Express no válido',
|
|
124
|
+
'pattern.creditCard.discover': 'Número de tarjeta Discover no válido',
|
|
125
|
+
'pattern.creditCard.jcb': 'Número de tarjeta JCB no válido',
|
|
126
|
+
'pattern.creditCard.unionpay': 'Número de tarjeta UnionPay no válido',
|
|
127
|
+
'pattern.licensePlate': 'Número de matrícula no válido',
|
|
128
|
+
'pattern.postalCode': 'Código postal no válido',
|
|
129
|
+
'pattern.passport': 'Número de pasaporte no válido',
|
|
130
|
+
'pattern.objectId': 'ObjectId no válido',
|
|
131
|
+
'pattern.hexColor': 'Color hexadecimal no válido',
|
|
132
|
+
'pattern.macAddress': 'Dirección MAC no válida',
|
|
133
|
+
'pattern.cron': 'Expresión Cron no válida',
|
|
134
|
+
'pattern.slug': 'El slug de URL solo puede contener letras minúsculas, números y guiones',
|
|
135
|
+
'pattern.domain': '{{#label}} debe ser un nombre de dominio válido',
|
|
136
|
+
'pattern.ip': '{{#label}} debe ser una dirección IP válida',
|
|
137
|
+
'pattern.base64': '{{#label}} debe ser una cadena Base64 válida',
|
|
138
|
+
'pattern.jwt': '{{#label}} debe ser un token JWT válido',
|
|
139
|
+
'pattern.json': '{{#label}} debe ser una cadena JSON válida',
|
|
140
|
+
'pattern.username': 'El nombre de usuario debe comenzar con una letra y contener solo letras, números y guiones bajos',
|
|
141
|
+
'pattern.password.weak': 'La contraseña debe tener al menos 6 caracteres',
|
|
142
|
+
'pattern.password.medium': 'La contraseña debe tener al menos 8 caracteres y contener letras y números',
|
|
143
|
+
'pattern.password.strong': 'La contraseña debe tener al menos 8 caracteres y contener letras mayúsculas, minúsculas y números',
|
|
144
|
+
'pattern.password.veryStrong': 'La contraseña debe tener al menos 10 caracteres y contener letras mayúsculas, minúsculas, números y caracteres especiales',
|
|
145
|
+
'pattern.emailOrPhone': 'Debe ser un correo electrónico o número de teléfono',
|
|
146
|
+
'pattern.usernameOrEmail': 'Debe ser un nombre de usuario o correo electrónico',
|
|
147
|
+
'pattern.httpOrHttps': 'Debe ser una URL que comience con http o https',
|
|
148
|
+
|
|
149
|
+
// oneOf
|
|
150
|
+
oneOf: '{{#label}} debe coincidir con uno de los siguientes tipos',
|
|
151
|
+
'oneOf.invalid': 'El valor de {{#label}} no coincide con ningún tipo permitido',
|
|
152
|
+
|
|
153
|
+
// Error fallback
|
|
154
|
+
UNKNOWN_ERROR: 'Error de validación desconocido',
|
|
155
|
+
CUSTOM_VALIDATION_FAILED: 'Validación fallida',
|
|
156
|
+
ASYNC_VALIDATION_NOT_SUPPORTED: 'La validación asíncrona no es compatible en validate() síncrono',
|
|
157
|
+
VALIDATE_MUST_BE_FUNCTION: 'validate debe ser una función',
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
export default esES
|
|
@@ -1,113 +1,160 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
'
|
|
19
|
-
'
|
|
20
|
-
'
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
'
|
|
24
|
-
'
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
'
|
|
28
|
-
'
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
'
|
|
33
|
-
'
|
|
34
|
-
'
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
'
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
'
|
|
47
|
-
|
|
48
|
-
'
|
|
49
|
-
|
|
50
|
-
//
|
|
51
|
-
'
|
|
52
|
-
'
|
|
53
|
-
'
|
|
54
|
-
'
|
|
55
|
-
'
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
'
|
|
59
|
-
'
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
'
|
|
64
|
-
'
|
|
65
|
-
'
|
|
66
|
-
'
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
'
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
'
|
|
73
|
-
'
|
|
74
|
-
'
|
|
75
|
-
'
|
|
76
|
-
'
|
|
77
|
-
'
|
|
78
|
-
'
|
|
79
|
-
'
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
'
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
'
|
|
86
|
-
'
|
|
87
|
-
|
|
88
|
-
'
|
|
89
|
-
'
|
|
90
|
-
'
|
|
91
|
-
'
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
'
|
|
96
|
-
'
|
|
97
|
-
'
|
|
98
|
-
'
|
|
99
|
-
'
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
'
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
'
|
|
112
|
-
}
|
|
113
|
-
|
|
1
|
+
import type { LocaleMessages } from './types.js'
|
|
2
|
+
|
|
3
|
+
const frFR: LocaleMessages = {
|
|
4
|
+
// Generic
|
|
5
|
+
required: '{{#label}} est requis',
|
|
6
|
+
type: "{{#label}} doit être de type {{#expected}}, mais {{#actual}} a été reçu",
|
|
7
|
+
min: "La longueur de {{#label}} doit être d'au moins {{#limit}}",
|
|
8
|
+
max: "La longueur de {{#label}} doit être d'au plus {{#limit}}",
|
|
9
|
+
length: 'La longueur de {{#label}} doit être exactement {{#expected}}',
|
|
10
|
+
pattern: "Le format de {{#label}} n'est pas valide",
|
|
11
|
+
enum: '{{#label}} doit être l\'un de : {{#allowed}}',
|
|
12
|
+
custom: 'Validation échouée pour {{#label}} : {{#message}}',
|
|
13
|
+
circular: 'Référence circulaire détectée dans {{#label}}',
|
|
14
|
+
'max-depth': 'Profondeur maximale de récursion ({{#depth}}) dépassée dans {{#label}}',
|
|
15
|
+
exception: 'Exception de validation dans {{#label}} : {{#message}}',
|
|
16
|
+
|
|
17
|
+
// Conditional (v2 additions)
|
|
18
|
+
'conditional.underAge': 'Les mineurs ne peuvent pas s\'inscrire',
|
|
19
|
+
'conditional.blocked': 'Le compte a été bloqué',
|
|
20
|
+
'conditional.notAllowed': 'L\'inscription n\'est pas autorisée',
|
|
21
|
+
|
|
22
|
+
// I18nError — generic (v2 additions)
|
|
23
|
+
'error.notFound': '{{#resource}} introuvable',
|
|
24
|
+
'error.forbidden': 'Accès à {{#resource}} interdit',
|
|
25
|
+
'error.unauthorized': 'Non autorisé, veuillez vous connecter',
|
|
26
|
+
'error.invalid': '{{#field}} n\'est pas valide',
|
|
27
|
+
'error.duplicate': '{{#resource}} existe déjà',
|
|
28
|
+
'error.conflict': 'Conflit d\'opération : {{#reason}}',
|
|
29
|
+
|
|
30
|
+
// Account (v2 additions)
|
|
31
|
+
'account.notFound': { code: 'ACCOUNT_NOT_FOUND', message: 'Compte introuvable' },
|
|
32
|
+
'account.inactive': 'Le compte est inactif',
|
|
33
|
+
'account.banned': 'Le compte a été banni',
|
|
34
|
+
'account.insufficientBalance': {
|
|
35
|
+
code: 'INSUFFICIENT_BALANCE',
|
|
36
|
+
message: 'Solde insuffisant, actuel : {{#balance}}, requis : {{#required}}',
|
|
37
|
+
},
|
|
38
|
+
'account.insufficientCredits': 'Crédits insuffisants, actuels : {{#credits}}, requis : {{#required}}',
|
|
39
|
+
|
|
40
|
+
// User (v2 additions)
|
|
41
|
+
'user.notFound': 'Utilisateur introuvable',
|
|
42
|
+
'user.notVerified': "L'utilisateur n'est pas vérifié",
|
|
43
|
+
'user.noPermission': 'Pas de permission d\'administrateur',
|
|
44
|
+
|
|
45
|
+
// Order (v2 additions)
|
|
46
|
+
'order.notPaid': { code: 'ORDER_NOT_PAID', message: 'Commande non payée' },
|
|
47
|
+
'order.paymentMissing': 'Informations de paiement manquantes',
|
|
48
|
+
'order.addressMissing': 'Adresse de livraison manquante',
|
|
49
|
+
|
|
50
|
+
// Format
|
|
51
|
+
'format.email': '{{#label}} doit être une adresse e-mail valide',
|
|
52
|
+
'format.url': '{{#label}} doit être une URL valide',
|
|
53
|
+
'format.uuid': '{{#label}} doit être un UUID valide',
|
|
54
|
+
'format.date': '{{#label}} doit être une date valide (YYYY-MM-DD)',
|
|
55
|
+
'format.datetime': '{{#label}} doit être une date et heure valide (ISO 8601)',
|
|
56
|
+
'format.time': '{{#label}} doit être une heure valide (HH:mm:ss)',
|
|
57
|
+
'format.ipv4': '{{#label}} doit être une adresse IPv4 valide',
|
|
58
|
+
'format.ipv6': '{{#label}} doit être une adresse IPv6 valide',
|
|
59
|
+
'format.binary': '{{#label}} doit être une chaîne base64 valide',
|
|
60
|
+
|
|
61
|
+
// String
|
|
62
|
+
'string.hostname': "{{#label}} doit être un nom d'hôte valide",
|
|
63
|
+
'string.pattern': 'Le format de {{#label}} ne correspond pas au modèle requis',
|
|
64
|
+
'string.enum': '{{#label}} doit être l\'un de : {{#valids}}',
|
|
65
|
+
'string.length': 'La longueur de {{#label}} doit être exactement {{#limit}} caractères',
|
|
66
|
+
'string.alphanum': '{{#label}} ne doit contenir que des caractères alphanumériques',
|
|
67
|
+
'string.trim': '{{#label}} ne doit pas avoir d\'espaces en début ou en fin',
|
|
68
|
+
'string.lowercase': '{{#label}} doit être en minuscules',
|
|
69
|
+
'string.uppercase': '{{#label}} doit être en majuscules',
|
|
70
|
+
|
|
71
|
+
// Number
|
|
72
|
+
'number.base': '{{#label}} doit être un nombre',
|
|
73
|
+
'number.min': '{{#label}} doit être supérieur ou égal à {{#limit}}',
|
|
74
|
+
'number.max': '{{#label}} doit être inférieur ou égal à {{#limit}}',
|
|
75
|
+
'number.integer': '{{#label}} doit être un nombre entier',
|
|
76
|
+
'number.positive': '{{#label}} doit être un nombre positif',
|
|
77
|
+
'number.negative': '{{#label}} doit être un nombre négatif',
|
|
78
|
+
'number.precision': '{{#label}} doit avoir au plus {{#limit}} décimales',
|
|
79
|
+
'number.port': '{{#label}} doit être un numéro de port valide (1-65535)',
|
|
80
|
+
|
|
81
|
+
// Boolean
|
|
82
|
+
'boolean.base': '{{#label}} doit être un booléen',
|
|
83
|
+
|
|
84
|
+
// Object
|
|
85
|
+
'object.base': '{{#label}} doit être un objet',
|
|
86
|
+
'object.min': '{{#label}} doit avoir au moins {{#limit}} propriétés',
|
|
87
|
+
'object.max': '{{#label}} doit avoir au plus {{#limit}} propriétés',
|
|
88
|
+
'object.unknown': '{{#label}} contient une propriété inconnue : {{#key}}',
|
|
89
|
+
'object.missing': '{{#label}} est manquant les propriétés requises',
|
|
90
|
+
'object.schema': '{{#label}} contient des propriétés supplémentaires',
|
|
91
|
+
'additionalProperties': '{{#label}} NE doit PAS avoir de propriétés supplémentaires : {{#key}}',
|
|
92
|
+
|
|
93
|
+
// Array
|
|
94
|
+
'array.base': '{{#label}} doit être un tableau',
|
|
95
|
+
'array.min': '{{#label}} doit avoir au moins {{#limit}} éléments',
|
|
96
|
+
'array.max': '{{#label}} doit avoir au plus {{#limit}} éléments',
|
|
97
|
+
'array.length': '{{#label}} doit avoir exactement {{#limit}} éléments',
|
|
98
|
+
'array.unique': '{{#label}} ne doit pas contenir d\'éléments en double',
|
|
99
|
+
'array.sparse': '{{#label}} ne doit pas être un tableau clairsemé',
|
|
100
|
+
'array.includesRequired': '{{#label}} doit inclure les éléments requis',
|
|
101
|
+
|
|
102
|
+
// Date
|
|
103
|
+
'date.base': '{{#label}} doit être une date valide',
|
|
104
|
+
'date.min': '{{#label}} ne doit pas être antérieur à {{#limit}}',
|
|
105
|
+
'date.max': '{{#label}} ne doit pas être postérieur à {{#limit}}',
|
|
106
|
+
'date.format': "Le format de date de {{#label}} n'est pas valide",
|
|
107
|
+
'date.greater': '{{#label}} doit être après {{#limit}}',
|
|
108
|
+
'date.less': '{{#label}} doit être avant {{#limit}}',
|
|
109
|
+
|
|
110
|
+
// Any
|
|
111
|
+
'any.required': '{{#label}} est requis',
|
|
112
|
+
'any.invalid': '{{#label}} contient une valeur non valide',
|
|
113
|
+
'any.only': '{{#label}} doit correspondre à {{#valids}}',
|
|
114
|
+
'any.unknown': 'Le champ {{#key}} n\'est pas autorisé',
|
|
115
|
+
|
|
116
|
+
// Patterns
|
|
117
|
+
'pattern.phone': 'Numéro de téléphone non valide',
|
|
118
|
+
'pattern.phone.international': 'Numéro de téléphone international non valide',
|
|
119
|
+
'pattern.idCard': "Numéro de carte d'identité non valide",
|
|
120
|
+
'pattern.creditCard': 'Numéro de carte de crédit non valide',
|
|
121
|
+
'pattern.creditCard.visa': 'Numéro de carte Visa non valide',
|
|
122
|
+
'pattern.creditCard.mastercard': 'Numéro Mastercard non valide',
|
|
123
|
+
'pattern.creditCard.amex': 'Numéro de carte American Express non valide',
|
|
124
|
+
'pattern.creditCard.discover': 'Numéro de carte Discover non valide',
|
|
125
|
+
'pattern.creditCard.jcb': 'Numéro de carte JCB non valide',
|
|
126
|
+
'pattern.creditCard.unionpay': 'Numéro de carte UnionPay non valide',
|
|
127
|
+
"pattern.licensePlate": "Numéro de plaque d'immatriculation non valide",
|
|
128
|
+
'pattern.postalCode': 'Code postal non valide',
|
|
129
|
+
'pattern.passport': 'Numéro de passeport non valide',
|
|
130
|
+
'pattern.objectId': 'ObjectId non valide',
|
|
131
|
+
'pattern.hexColor': 'Couleur hexadécimale non valide',
|
|
132
|
+
'pattern.macAddress': 'Adresse MAC non valide',
|
|
133
|
+
'pattern.cron': 'Expression Cron non valide',
|
|
134
|
+
"pattern.slug": "Le slug d'URL ne peut contenir que des lettres minuscules, des chiffres et des tirets",
|
|
135
|
+
'pattern.domain': '{{#label}} doit être un nom de domaine valide',
|
|
136
|
+
'pattern.ip': '{{#label}} doit être une adresse IP valide',
|
|
137
|
+
'pattern.base64': '{{#label}} doit être une chaîne Base64 valide',
|
|
138
|
+
'pattern.jwt': '{{#label}} doit être un token JWT valide',
|
|
139
|
+
'pattern.json': '{{#label}} doit être une chaîne JSON valide',
|
|
140
|
+
"pattern.username": "Le nom d'utilisateur doit commencer par une lettre et contenir uniquement des lettres, des chiffres et des tirets bas",
|
|
141
|
+
'pattern.password.weak': 'Le mot de passe doit contenir au moins 6 caractères',
|
|
142
|
+
'pattern.password.medium': 'Le mot de passe doit contenir au moins 8 caractères et inclure des lettres et des chiffres',
|
|
143
|
+
'pattern.password.strong': 'Le mot de passe doit contenir au moins 8 caractères et inclure des lettres majuscules, minuscules et des chiffres',
|
|
144
|
+
'pattern.password.veryStrong': 'Le mot de passe doit contenir au moins 10 caractères et inclure des lettres majuscules, minuscules, des chiffres et des caractères spéciaux',
|
|
145
|
+
'pattern.emailOrPhone': 'Doit être un e-mail ou un numéro de téléphone',
|
|
146
|
+
'pattern.usernameOrEmail': "Doit être un nom d'utilisateur ou un e-mail",
|
|
147
|
+
'pattern.httpOrHttps': 'Doit être une URL commençant par http ou https',
|
|
148
|
+
|
|
149
|
+
// oneOf
|
|
150
|
+
oneOf: "{{#label}} doit correspondre à l'un des types suivants",
|
|
151
|
+
'oneOf.invalid': '{{#label}} ne correspond à aucun type autorisé',
|
|
152
|
+
|
|
153
|
+
// Error fallback
|
|
154
|
+
UNKNOWN_ERROR: 'Erreur de validation inconnue',
|
|
155
|
+
CUSTOM_VALIDATION_FAILED: 'Validation échouée',
|
|
156
|
+
ASYNC_VALIDATION_NOT_SUPPORTED: 'La validation asynchrone n\'est pas prise en charge dans validate() synchrone',
|
|
157
|
+
VALIDATE_MUST_BE_FUNCTION: 'validate doit être une fonction',
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
export default frFR
|