@jysperu/schema-direccion 1.0.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/LICENSE +21 -0
- package/README.md +403 -0
- package/dist/direccion.cjs.js +1 -0
- package/dist/direccion.d.ts +193 -0
- package/dist/direccion.d.ts.map +1 -0
- package/dist/direccion.esm.js +1 -0
- package/dist/direccion.schema.json +154 -0
- package/dist/direccion.umd.js +1 -0
- package/package.json +72 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 JYS Perú
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,403 @@
|
|
|
1
|
+
# @jysperu/schema-direccion
|
|
2
|
+
|
|
3
|
+
[](https://badge.fury.io/js/@jysperu%2Fschema-direccion)
|
|
4
|
+
[](https://www.npmjs.com/package/@jysperu/schema-direccion)
|
|
5
|
+
[](https://opensource.org/licenses/MIT)
|
|
6
|
+
[](https://www.typescriptlang.org/)
|
|
7
|
+
[](https://nodejs.org/)
|
|
8
|
+
[](https://www.mongodb.com/)
|
|
9
|
+
[](https://joi.dev/)
|
|
10
|
+
[](https://bundlephobia.com/package/@jysperu/schema-direccion)
|
|
11
|
+
|
|
12
|
+
Esquemas para direcciones con soporte para **Mongoose**, **JSON Schema** y **Joi**.
|
|
13
|
+
|
|
14
|
+
## 🚀 Características
|
|
15
|
+
|
|
16
|
+
- 🏠 **Validación** de direcciones
|
|
17
|
+
- 🌍 **Soporte** para direcciones de Perú y otros países
|
|
18
|
+
- 🔧 **Desglose** automático de componentes de dirección
|
|
19
|
+
- 🏷️ **Clasificaciones** del tipo de dirección (Trabajo, Personal, etc.)
|
|
20
|
+
- ✅ **Estados** de validación y verificación
|
|
21
|
+
- 📍 **Coordenadas** GPS y ubigeo
|
|
22
|
+
- 🗺️ **División política** (departamento, provincia, distrito)
|
|
23
|
+
|
|
24
|
+
## 📦 Instalación
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npm install @jysperu/schema-direccion
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## ⚡ Inicio Rápido
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
import { MongoSchemaDireccion, JsonSchemaDireccion, JoiSchemaDireccion } from "@jysperu/schema-direccion";
|
|
34
|
+
import { IDireccion, ClasificacionDireccion } from "@jysperu/schema-direccion";
|
|
35
|
+
|
|
36
|
+
// Mongoose
|
|
37
|
+
const PersonaSchema = new Schema({
|
|
38
|
+
direcciones: [MongoSchemaDireccion],
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
// Joi Validation
|
|
42
|
+
const { error, value } = JoiSchemaDireccion.validate({
|
|
43
|
+
direccion_completa: "Av. Javier Prado Este 123, San Isidro, Lima",
|
|
44
|
+
tipo: "Personal",
|
|
45
|
+
pais: "Perú",
|
|
46
|
+
valida: true,
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
// JSON Schema
|
|
50
|
+
const validate = ajv.compile(JsonSchemaDireccion);
|
|
51
|
+
const isValid = validate(direccionData);
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## 📚 Esquemas Disponibles
|
|
55
|
+
|
|
56
|
+
### 1. 🍃 Mongoose Schema
|
|
57
|
+
|
|
58
|
+
```typescript
|
|
59
|
+
import { MongoSchemaDireccion, IDireccion } from "@jysperu/schema-direccion";
|
|
60
|
+
import { Schema, model, Document } from "mongoose";
|
|
61
|
+
|
|
62
|
+
interface IPersona extends Document {
|
|
63
|
+
nombres: string;
|
|
64
|
+
direcciones: IDireccion[];
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const PersonaSchema = new Schema<IPersona>({
|
|
68
|
+
nombres: { type: String, required: true },
|
|
69
|
+
direcciones: [MongoSchemaDireccion], // Array de direcciones
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
const PersonaModel = model<IPersona>("Persona", PersonaSchema);
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### 2. 📋 JSON Schema
|
|
76
|
+
|
|
77
|
+
```typescript
|
|
78
|
+
import { JsonSchemaDireccion } from "@jysperu/schema-direccion";
|
|
79
|
+
import Ajv from "ajv";
|
|
80
|
+
|
|
81
|
+
const ajv = new Ajv();
|
|
82
|
+
const validate = ajv.compile(JsonSchemaDireccion);
|
|
83
|
+
|
|
84
|
+
const direccion = {
|
|
85
|
+
direccion_completa: "Av. Javier Prado Este 123, San Isidro, Lima",
|
|
86
|
+
tipo: "Personal",
|
|
87
|
+
pais: "Perú",
|
|
88
|
+
departamento: "Lima",
|
|
89
|
+
provincia: "Lima",
|
|
90
|
+
distrito: "San Isidro",
|
|
91
|
+
valida: true,
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
const valid = validate(direccion);
|
|
95
|
+
if (!valid) console.log(validate.errors);
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### 3. ✅ Joi Schema
|
|
99
|
+
|
|
100
|
+
```typescript
|
|
101
|
+
import { JoiSchemaDireccion } from "@jysperu/schema-direccion";
|
|
102
|
+
|
|
103
|
+
// Validación individual
|
|
104
|
+
const { error, value } = JoiSchemaDireccion.validate({
|
|
105
|
+
direccion_completa: "Av. Arequipa 1234, Lince, Lima",
|
|
106
|
+
tipo: "Personal",
|
|
107
|
+
pais: "Perú",
|
|
108
|
+
departamento: "Lima",
|
|
109
|
+
valida: true,
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
if (error) {
|
|
113
|
+
error.details.forEach((err) => console.log(`❌ ${err.path}: ${err.message}`));
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// Para arrays de direcciones
|
|
117
|
+
import Joi from "@jysperu/joi-spanish";
|
|
118
|
+
|
|
119
|
+
const personaSchema = Joi.object({
|
|
120
|
+
nombres: Joi.string().required(),
|
|
121
|
+
direcciones: Joi.array().items(JoiSchemaDireccion).default([]),
|
|
122
|
+
});
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## 🛠️ Casos de Uso Avanzados
|
|
126
|
+
|
|
127
|
+
### Crear persona con múltiples direcciones
|
|
128
|
+
|
|
129
|
+
```typescript
|
|
130
|
+
import { MongoSchemaDireccion, IDireccion, ClasificacionDireccion } from "@jysperu/schema-direccion";
|
|
131
|
+
|
|
132
|
+
const persona = new PersonaModel({
|
|
133
|
+
nombres: "Ana García",
|
|
134
|
+
direcciones: [
|
|
135
|
+
{
|
|
136
|
+
direccion_completa: "Av. Javier Prado Este 4200, Surquillo, Lima",
|
|
137
|
+
tipo: ClasificacionDireccion.TRABAJO,
|
|
138
|
+
pais: "Perú",
|
|
139
|
+
pais_code: "PE",
|
|
140
|
+
departamento: "Lima",
|
|
141
|
+
provincia: "Lima",
|
|
142
|
+
distrito: "Surquillo",
|
|
143
|
+
via_tipo: "Avenida",
|
|
144
|
+
via_nombre: "Javier Prado Este",
|
|
145
|
+
nro: "4200",
|
|
146
|
+
valida: true,
|
|
147
|
+
verificada: true,
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
direccion_completa: "Jr. Los Olivos 123, Miraflores, Lima",
|
|
151
|
+
tipo: ClasificacionDireccion.PERSONAL,
|
|
152
|
+
pais: "Perú",
|
|
153
|
+
pais_code: "PE",
|
|
154
|
+
departamento: "Lima",
|
|
155
|
+
provincia: "Lima",
|
|
156
|
+
distrito: "Miraflores",
|
|
157
|
+
via_tipo: "Jirón",
|
|
158
|
+
via_nombre: "Los Olivos",
|
|
159
|
+
nro: "123",
|
|
160
|
+
valida: true,
|
|
161
|
+
},
|
|
162
|
+
],
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
await persona.save();
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### Operaciones con direcciones
|
|
169
|
+
|
|
170
|
+
```typescript
|
|
171
|
+
// Buscar direcciones verificadas
|
|
172
|
+
const direccionesVerificadas = persona.direcciones.filter((direccion) => direccion.verificada);
|
|
173
|
+
|
|
174
|
+
// Encontrar direcciones de trabajo
|
|
175
|
+
const direccionesDeTrabajo = persona.direcciones.filter((direccion) => direccion.tipo === ClasificacionDireccion.TRABAJO);
|
|
176
|
+
|
|
177
|
+
// Agregar nueva dirección
|
|
178
|
+
persona.direcciones.push({
|
|
179
|
+
direccion_completa: "Calle Las Flores 456, Barranco, Lima",
|
|
180
|
+
tipo: "Secundaria",
|
|
181
|
+
pais: "Perú",
|
|
182
|
+
pais_code: "PE",
|
|
183
|
+
departamento: "Lima",
|
|
184
|
+
provincia: "Lima",
|
|
185
|
+
distrito: "Barranco",
|
|
186
|
+
valida: true,
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
await persona.save();
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
## 📊 Esquema de Datos
|
|
193
|
+
|
|
194
|
+
### ✅ Campo Obligatorio (Al menos uno)
|
|
195
|
+
|
|
196
|
+
| Campo | Tipo | Validación | Descripción |
|
|
197
|
+
| -------------------- | -------- | ------------- | ----------- | ------------------------------------ |
|
|
198
|
+
| `direccion_completa` | `String` | Max 500 chars | - | Dirección completa formateada |
|
|
199
|
+
| `direccion_simple` | `String` | Max 300 chars | - | Versión simplificada de la dirección |
|
|
200
|
+
| `direccion` | `String` | Max 300 chars | - | Dirección principal o calle |
|
|
201
|
+
|
|
202
|
+
### ⚙️ Campos Opcionales
|
|
203
|
+
|
|
204
|
+
| Campo | Tipo | Validación/Enum | Defecto | Descripción |
|
|
205
|
+
| -------------- | --------- | ------------------------------------ | ------------------- | ---------------------------------- |
|
|
206
|
+
| `tipo` | `String` | Min 1 char, personalizable | "Trabajo" | Clasificación (Trabajo/Personal) |
|
|
207
|
+
| `via_tipo` | `String` | Max 20 chars, lowercase | - | Tipo de vía (calle, avenida, etc.) |
|
|
208
|
+
| `via_nombre` | `String` | Max 150 chars, lowercase | - | Nombre de la vía |
|
|
209
|
+
| `nro` | `String` | Max 10 chars | - | Número de la dirección |
|
|
210
|
+
| `pais` | `String` | Required, trim, max 100 | Nombre del país |
|
|
211
|
+
| `pais_code` | `String` | Required, trim, 2-3 chars, uppercase | Código ISO del país |
|
|
212
|
+
| `departamento` | `String` | Max 100 chars | - | Departamento o estado |
|
|
213
|
+
| `provincia` | `String` | Max 100 chars | - | Provincia o región |
|
|
214
|
+
| `distrito` | `String` | Max 100 chars | - | Distrito o municipio |
|
|
215
|
+
| `ubigeo` | `String` | 6 dígitos | - | Código ubigeo de 6 dígitos |
|
|
216
|
+
| `gps` | `String` | Formato lat,lng | - | Coordenadas GPS |
|
|
217
|
+
| `valida` | `Boolean` | true/false | false | Formato de dirección válido |
|
|
218
|
+
| `verificada` | `Boolean` | true/false | false | Dirección verificada físicamente |
|
|
219
|
+
|
|
220
|
+
### 🏷️ Clasificaciones de Direcciones
|
|
221
|
+
|
|
222
|
+
```typescript
|
|
223
|
+
enum ClasificacionDireccion {
|
|
224
|
+
TRABAJO = "Trabajo", // 🏢 Dirección laboral
|
|
225
|
+
PERSONAL = "Personal", // 👤 Dirección personal
|
|
226
|
+
}
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
## 💡 Ejemplos de Datos
|
|
230
|
+
|
|
231
|
+
### 🏠 Dirección Personal (Completa)
|
|
232
|
+
|
|
233
|
+
```typescript
|
|
234
|
+
const direccionCompleta: IDireccion = {
|
|
235
|
+
direccion_completa: "Av. Javier Prado Este 123, Dpto. 501, San Isidro, Lima",
|
|
236
|
+
tipo: "Personal",
|
|
237
|
+
pais: "Perú",
|
|
238
|
+
pais_code: "PE",
|
|
239
|
+
continente: "América del Sur",
|
|
240
|
+
direccion: "Av. Javier Prado Este 123, Dpto. 501",
|
|
241
|
+
via_tipo: "Avenida",
|
|
242
|
+
via_nombre: "Javier Prado Este",
|
|
243
|
+
nro: "123",
|
|
244
|
+
interior: "Dpto. 501",
|
|
245
|
+
departamento: "Lima",
|
|
246
|
+
provincia: "Lima",
|
|
247
|
+
distrito: "San Isidro",
|
|
248
|
+
ubigeo: "150130",
|
|
249
|
+
gps: "-12.0964,-77.0428",
|
|
250
|
+
valida: true,
|
|
251
|
+
verificada: true,
|
|
252
|
+
};
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
### 🏢 Dirección de Trabajo
|
|
256
|
+
|
|
257
|
+
```typescript
|
|
258
|
+
const direccionTrabajo: IDireccion = {
|
|
259
|
+
direccion_completa: "Av. El Sol 456, Piso 8, Oficina 802, Miraflores, Lima",
|
|
260
|
+
tipo: "Trabajo",
|
|
261
|
+
pais: "Perú",
|
|
262
|
+
pais_code: "PE",
|
|
263
|
+
direccion: "Av. El Sol 456",
|
|
264
|
+
via_tipo: "Avenida",
|
|
265
|
+
via_nombre: "El Sol",
|
|
266
|
+
nro: "456",
|
|
267
|
+
interior: "Piso 8, Oficina 802",
|
|
268
|
+
departamento: "Lima",
|
|
269
|
+
provincia: "Lima",
|
|
270
|
+
distrito: "Miraflores",
|
|
271
|
+
ubigeo: "150122",
|
|
272
|
+
valida: true,
|
|
273
|
+
verificada: false,
|
|
274
|
+
};
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
### 🏪 Dirección Comercial
|
|
278
|
+
|
|
279
|
+
```typescript
|
|
280
|
+
const direccionComercial: IDireccion = {
|
|
281
|
+
direccion_completa: "Jr. Unión 789, Local 12, Cercado de Lima, Lima",
|
|
282
|
+
tipo: "Comercial",
|
|
283
|
+
pais: "Perú",
|
|
284
|
+
pais_code: "PE",
|
|
285
|
+
direccion: "Jr. Unión 789",
|
|
286
|
+
via_tipo: "Jirón",
|
|
287
|
+
via_nombre: "Unión",
|
|
288
|
+
nro: "789",
|
|
289
|
+
interior: "Local 12",
|
|
290
|
+
departamento: "Lima",
|
|
291
|
+
provincia: "Lima",
|
|
292
|
+
distrito: "Cercado de Lima",
|
|
293
|
+
ubigeo: "150101",
|
|
294
|
+
valida: true,
|
|
295
|
+
verificada: false,
|
|
296
|
+
};
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
### 🏫 Dirección Educativa
|
|
300
|
+
|
|
301
|
+
```typescript
|
|
302
|
+
const direccionEducativa: IDireccion = {
|
|
303
|
+
direccion_completa: "Av. Universitaria 1801, San Martín de Porres, Lima",
|
|
304
|
+
tipo: "Educativo",
|
|
305
|
+
pais: "Perú",
|
|
306
|
+
pais_code: "PE",
|
|
307
|
+
direccion: "Av. Universitaria 1801",
|
|
308
|
+
via_tipo: "Avenida",
|
|
309
|
+
via_nombre: "Universitaria",
|
|
310
|
+
nro: "1801",
|
|
311
|
+
departamento: "Lima",
|
|
312
|
+
provincia: "Lima",
|
|
313
|
+
distrito: "San Martín de Porres",
|
|
314
|
+
ubigeo: "150132",
|
|
315
|
+
valida: true,
|
|
316
|
+
verificada: true,
|
|
317
|
+
};
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
## 🔧 Configuración del Esquema
|
|
321
|
+
|
|
322
|
+
```typescript
|
|
323
|
+
// Configuración Mongoose
|
|
324
|
+
{
|
|
325
|
+
strict: false, // Permite campos adicionales
|
|
326
|
+
timestamps: true, // createdAt, updatedAt automáticos
|
|
327
|
+
_id: true // Cada correo tiene su propio ID
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
// Configuración Joi
|
|
331
|
+
{
|
|
332
|
+
stripUnknown: false, // Mantiene campos extra
|
|
333
|
+
allowUnknown: true, // Permite propiedades no definidas
|
|
334
|
+
convert: true, // Conversión automática de tipos
|
|
335
|
+
abortEarly: false // Muestra todos los errores
|
|
336
|
+
}
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
## 📋 JSON Schema Standalone
|
|
340
|
+
|
|
341
|
+
El archivo `direccion.schema.json` se genera automáticamente en cada build:
|
|
342
|
+
|
|
343
|
+
```bash
|
|
344
|
+
# Usar direccion.schema.json directamente
|
|
345
|
+
curl -O https://gitlab.com/tiny.node/schema/direccion/-/raw/main/dist/direccion.schema.json
|
|
346
|
+
|
|
347
|
+
# Validar con cualquier validador JSON Schema
|
|
348
|
+
cat data.json | ajv validate -s direccion.schema.json
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
## 🧪 Testing y Validación
|
|
352
|
+
|
|
353
|
+
```typescript
|
|
354
|
+
// Test básico con Joi
|
|
355
|
+
import { JoiSchemaDireccion } from "@jysperu/schema-direccion";
|
|
356
|
+
|
|
357
|
+
const testCases = [
|
|
358
|
+
{ direccion_completa: "Av. Arequipa 123, Lima", pais: "Perú", pais_code: "PE", valid: true },
|
|
359
|
+
{ direccion_completa: "", valid: false }, // Vacío
|
|
360
|
+
{ pais: "", valid: false }, // Sin país
|
|
361
|
+
{ pais_code: "X", valid: false }, // Código inválido
|
|
362
|
+
];
|
|
363
|
+
|
|
364
|
+
testCases.forEach((test) => {
|
|
365
|
+
const result = JoiSchemaDireccion.validate(test);
|
|
366
|
+
console.log(`${test.direccion_completa || "Vacío"}: ${result.error ? "❌" : "✅"}`);
|
|
367
|
+
});
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
## 📦 Build y Distribución
|
|
371
|
+
|
|
372
|
+
```bash
|
|
373
|
+
# Construir el proyecto
|
|
374
|
+
npm run build
|
|
375
|
+
|
|
376
|
+
# Genera automáticamente:
|
|
377
|
+
# └── dist/
|
|
378
|
+
# ├── direccion.es.js # ESM
|
|
379
|
+
# ├── direccion.cjs.js # CommonJS
|
|
380
|
+
# ├── direccion.umd.js # UMD
|
|
381
|
+
# ├── *.d.ts # TypeScript definitions
|
|
382
|
+
# └── direccion.schema.json # JSON Schema
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
## 🔗 Enlaces y Recursos
|
|
386
|
+
|
|
387
|
+
- 📘 **Repositorio**: [GitLab - schema-direccion](https://gitlab.com/tiny.node/schema/direccion)
|
|
388
|
+
- 🐛 **Issues**: [Reportar problemas](https://gitlab.com/tiny.node/schema/direccion/issues)
|
|
389
|
+
- 📦 **npm**: [@jysperu/schema-direccion](https://www.npmjs.com/package/@jysperu/schema-direccion)
|
|
390
|
+
- 📚 **Documentación Joi**: [@jysperu/joi-spanish](https://www.npmjs.com/package/@jysperu/joi-spanish)
|
|
391
|
+
- 🏢 **JYS Perú**: [www.jys.pe](https://www.jys.pe)
|
|
392
|
+
|
|
393
|
+
## 📄 Licencia
|
|
394
|
+
|
|
395
|
+
**MIT License** - Consulta el archivo [LICENSE](./LICENSE) para detalles completos.
|
|
396
|
+
|
|
397
|
+
```text
|
|
398
|
+
MIT License - Copyright (c) 2025 JYS Perú
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
---
|
|
402
|
+
|
|
403
|
+
Desarrollado con ❤️ por [**JYS Perú**](https://www.jys.pe)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,"__esModule",{value:!0});var r=require("mongoose"),e=require("@jysperu/joi-spanish"),i=(e=>(e.TRABAJO="Trabajo",e.PERSONAL="Personal",e))(i||{});let t=new r.Schema({direccion_completa:{type:String,trim:!0,maxlength:[500,"La dirección completa es demasiado larga"],comment:"Dirección completa formateada para mostrar"},direccion_simple:{type:String,trim:!0,maxlength:[300,"La dirección simple es demasiado larga"],comment:"Versión simplificada de la dirección"},tipo:{type:String,default:"Trabajo",validate:{validator:function(e){return"string"==typeof e&&0<e.trim().length},message:"El tipo debe ser un texto no vacío. Valores sugeridos: "+Object.values(i).join(", ")},comment:"Tipo de dirección: trabajo, personal, comercial, etc."},pais:{type:String,default:"Perú",trim:!0,maxlength:[100,"El nombre del país es demasiado largo"]},pais_code:{type:String,default:"PE",uppercase:!0,trim:!0,minlength:[2,"El código del país debe tener al menos 2 caracteres"],maxlength:[3,"El código del país no puede tener más de 3 caracteres"]},continente:{type:String,default:"América del Sur",trim:!0,maxlength:[50,"El nombre del continente es demasiado largo"]},direccion:{type:String,trim:!0,maxlength:[300,"La dirección es demasiado larga"],comment:"Dirección principal o calle"},via_tipo:{type:String,trim:!0,maxlength:[20,"El tipo de vía es demasiado largo"],comment:"Tipo de vía: calle, avenida, jirón, etc."},via_nombre:{type:String,trim:!0,maxlength:[150,"El nombre de la vía es demasiado largo"],comment:"Nombre de la calle o avenida"},mz:{type:String,trim:!0,maxlength:[10,"La manzana es demasiado larga"],comment:"Manzana"},lt:{type:String,trim:!0,maxlength:[10,"El lote es demasiado largo"],comment:"Lote"},nro:{type:String,trim:!0,maxlength:[10,"El número es demasiado largo"],comment:"Número de la dirección"},interior:{type:String,trim:!0,maxlength:[20,"El interior es demasiado largo"],comment:"Departamento, oficina o interior"},urbanizacion:{type:String,trim:!0,maxlength:[150,"La urbanización es demasiado larga"],comment:"Urbanización, sector o zona"},referencia:{type:String,trim:!0,maxlength:[300,"La referencia es demasiado larga"],comment:"Referencia adicional para ubicar la dirección"},departamento:{type:String,trim:!0,maxlength:[100,"El departamento es demasiado largo"],comment:"Departamento o estado"},provincia:{type:String,trim:!0,maxlength:[100,"La provincia es demasiado larga"],comment:"Provincia o región"},distrito:{type:String,trim:!0,maxlength:[100,"El distrito es demasiado largo"],comment:"Distrito o municipio"},ubigeo:{type:String,trim:!0,validate:{validator:function(e){return!e||/^\d{6}$/.test(e)},message:"El ubigeo debe tener 6 dígitos"},comment:"Código ubigeo de 6 dígitos"},codigo_postal:{type:String,trim:!0,maxlength:[20,"El código postal es demasiado largo"],comment:"Código postal o ZIP"},gps:{type:String,trim:!0,validate:{validator:function(e){return!e||/^-?\d+\.?\d*,-?\d+\.?\d*$/.test(e.replace(/\s/g,""))},message:"Las coordenadas GPS deben estar en formato 'latitud,longitud'"},comment:"Coordenadas GPS en formato 'latitud,longitud'"},valida:{type:Boolean,default:!1,comment:"Indica si la dirección tiene un formato válido"},verificada:{type:Boolean,default:!1,comment:"Indica si la dirección ha sido verificada físicamente"}},{strict:!1,timestamps:!0}),n=e.object({direccion_completa:e.string().trim().max(500).messages({"string.max":"La dirección completa es demasiado larga"}),direccion_simple:e.string().trim().max(300).messages({"string.max":"La dirección simple es demasiado larga"}),tipo:e.string().trim().min(1).default("Trabajo").messages({"string.empty":"El tipo debe ser un texto no vacío","string.min":"El tipo debe ser un texto no vacío"}),pais:e.string().trim().max(100).default("Perú").messages({"string.max":"El nombre del país es demasiado largo"}),pais_code:e.string().trim().uppercase().min(2).max(3).default("PE").messages({"string.min":"El código del país debe tener al menos 2 caracteres","string.max":"El código del país no puede tener más de 3 caracteres"}),continente:e.string().trim().max(50).default("América del Sur").messages({"string.max":"El nombre del continente es demasiado largo"}),direccion:e.string().trim().max(300).messages({"string.max":"La dirección es demasiado larga"}),via_tipo:e.string().trim().max(20).messages({"string.max":"El tipo de vía es demasiado largo"}),via_nombre:e.string().trim().max(150).messages({"string.max":"El nombre de la vía es demasiado largo"}),mz:e.string().trim().max(10).messages({"string.max":"La manzana es demasiado larga"}),lt:e.string().trim().max(10).messages({"string.max":"El lote es demasiado largo"}),nro:e.string().trim().max(10).messages({"string.max":"El número es demasiado largo"}),interior:e.string().trim().max(20).messages({"string.max":"El interior es demasiado largo"}),urbanizacion:e.string().trim().max(150).messages({"string.max":"La urbanización es demasiado larga"}),referencia:e.string().trim().max(300).messages({"string.max":"La referencia es demasiado larga"}),departamento:e.string().trim().max(100).messages({"string.max":"El departamento es demasiado largo"}),provincia:e.string().trim().max(100).messages({"string.max":"La provincia es demasiado larga"}),distrito:e.string().trim().max(100).messages({"string.max":"El distrito es demasiado largo"}),ubigeo:e.string().trim().pattern(/^\d{6}$/).messages({"string.pattern.base":"El ubigeo debe tener 6 dígitos"}),codigo_postal:e.string().trim().max(20).messages({"string.max":"El código postal es demasiado largo"}),gps:e.string().trim().pattern(/^-?\d+\.?\d*,-?\d+\.?\d*$/).messages({"string.pattern.base":"Las coordenadas GPS deben estar en formato 'latitud,longitud'"}),valida:e.boolean().default(!1),verificada:e.boolean().default(!1)}).options({stripUnknown:!1,allowUnknown:!0}).or("direccion_completa","direccion_simple","direccion").messages({"object.missing":"Debe proporcionar una dirección válida"}),o={$schema:"http://json-schema.org/draft-07/schema#",type:"object",properties:{direccion_completa:{type:"string",maxLength:500,description:"Dirección completa formateada para mostrar"},direccion_simple:{type:"string",maxLength:300,description:"Versión simplificada de la dirección"},tipo:{type:"string",minLength:1,default:"Trabajo",enum:Object.values(i),description:"Tipo de dirección: trabajo, personal, comercial, etc."},pais:{type:"string",maxLength:100,default:"Perú",description:"Nombre del país"},pais_code:{type:"string",minLength:2,maxLength:3,default:"PE",pattern:"^[A-Z]{2,3}$",description:"Código ISO del país"},continente:{type:"string",maxLength:50,default:"América del Sur",description:"Nombre del continente"},direccion:{type:"string",maxLength:300,description:"Dirección principal o calle"},via_tipo:{type:"string",maxLength:20,description:"Tipo de vía: calle, avenida, jirón, etc."},via_nombre:{type:"string",maxLength:150,description:"Nombre de la calle o avenida"},mz:{type:"string",maxLength:10,description:"Manzana"},lt:{type:"string",maxLength:10,description:"Lote"},nro:{type:"string",maxLength:10,description:"Número de la dirección"},interior:{type:"string",maxLength:20,description:"Departamento, oficina o interior"},urbanizacion:{type:"string",maxLength:150,description:"Urbanización, sector o zona"},referencia:{type:"string",maxLength:300,description:"Referencia adicional para ubicar la dirección"},departamento:{type:"string",maxLength:100,description:"Departamento o estado"},provincia:{type:"string",maxLength:100,description:"Provincia o región"},distrito:{type:"string",maxLength:100,description:"Distrito o municipio"},ubigeo:{type:"string",pattern:"^\\d{6}$",description:"Código ubigeo de 6 dígitos"},codigo_postal:{type:"string",maxLength:20,description:"Código postal o ZIP"},gps:{type:"string",pattern:"^-?\\d+\\.?\\d*,-?\\d+\\.?\\d*$",description:"Coordenadas GPS en formato 'latitud,longitud'"},valida:{type:"boolean",default:!1,description:"Indica si la dirección tiene un formato válido"},verificada:{type:"boolean",default:!1,description:"Indica si la dirección ha sido verificada físicamente"}},anyOf:[{required:["direccion_completa"]},{required:["direccion_simple"]},{required:["direccion"]}],additionalProperties:!0,title:"Dirección",description:"Esquema para direcciones postales",errorMessage:{anyOf:"Debe proporcionar al menos uno de estos campos: direccion_completa, direccion_simple o direccion"}};exports.ClasificacionDireccion=i,exports.JoiSchemaDireccion=n,exports.JsonSchemaDireccion=o,exports.MongoSchemaDireccion=t,exports.default=t;
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { Schema } from 'mongoose';
|
|
2
|
+
import { default as Joi } from '@jysperu/joi-spanish';
|
|
3
|
+
export declare enum ClasificacionDireccion {
|
|
4
|
+
TRABAJO = "Trabajo",
|
|
5
|
+
PERSONAL = "Personal"
|
|
6
|
+
}
|
|
7
|
+
export interface IDireccion {
|
|
8
|
+
direccion_completa?: string;
|
|
9
|
+
direccion_simple?: string;
|
|
10
|
+
tipo?: string;
|
|
11
|
+
pais?: string;
|
|
12
|
+
pais_code?: string;
|
|
13
|
+
continente?: string;
|
|
14
|
+
direccion?: string;
|
|
15
|
+
via_tipo?: string;
|
|
16
|
+
via_nombre?: string;
|
|
17
|
+
mz?: string;
|
|
18
|
+
lt?: string;
|
|
19
|
+
nro?: string;
|
|
20
|
+
interior?: string;
|
|
21
|
+
urbanizacion?: string;
|
|
22
|
+
referencia?: string;
|
|
23
|
+
departamento?: string;
|
|
24
|
+
provincia?: string;
|
|
25
|
+
distrito?: string;
|
|
26
|
+
ubigeo?: string;
|
|
27
|
+
codigo_postal?: string;
|
|
28
|
+
gps?: string;
|
|
29
|
+
valida?: boolean;
|
|
30
|
+
verificada?: boolean;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Esquema de Mongoose para direcciones
|
|
34
|
+
*/
|
|
35
|
+
export declare const MongoSchemaDireccion: Schema<IDireccion, import('mongoose').Model<IDireccion, any, any, any, import('mongoose').Document<unknown, any, IDireccion, any, {}> & IDireccion & {
|
|
36
|
+
_id: import("mongoose").Types.ObjectId;
|
|
37
|
+
} & {
|
|
38
|
+
__v: number;
|
|
39
|
+
}, any>, {}, {}, {}, {}, import('mongoose').DefaultSchemaOptions, IDireccion, import('mongoose').Document<unknown, {}, import('mongoose').FlatRecord<IDireccion>, {}, import('mongoose').ResolveSchemaOptions<import('mongoose').DefaultSchemaOptions>> & import('mongoose').FlatRecord<IDireccion> & {
|
|
40
|
+
_id: import("mongoose").Types.ObjectId;
|
|
41
|
+
} & {
|
|
42
|
+
__v: number;
|
|
43
|
+
}>;
|
|
44
|
+
export default MongoSchemaDireccion;
|
|
45
|
+
/**
|
|
46
|
+
* Joi Schema para validación de direcciones
|
|
47
|
+
*/
|
|
48
|
+
export declare const JoiSchemaDireccion: Joi.ObjectSchema<any>;
|
|
49
|
+
/**
|
|
50
|
+
* JSON Schema para validación de direcciones
|
|
51
|
+
*/
|
|
52
|
+
export declare const JsonSchemaDireccion: {
|
|
53
|
+
readonly $schema: "http://json-schema.org/draft-07/schema#";
|
|
54
|
+
readonly type: "object";
|
|
55
|
+
readonly properties: {
|
|
56
|
+
readonly direccion_completa: {
|
|
57
|
+
readonly type: "string";
|
|
58
|
+
readonly maxLength: 500;
|
|
59
|
+
readonly description: "Dirección completa formateada para mostrar";
|
|
60
|
+
};
|
|
61
|
+
readonly direccion_simple: {
|
|
62
|
+
readonly type: "string";
|
|
63
|
+
readonly maxLength: 300;
|
|
64
|
+
readonly description: "Versión simplificada de la dirección";
|
|
65
|
+
};
|
|
66
|
+
readonly tipo: {
|
|
67
|
+
readonly type: "string";
|
|
68
|
+
readonly minLength: 1;
|
|
69
|
+
readonly default: "Trabajo";
|
|
70
|
+
readonly enum: ClasificacionDireccion[];
|
|
71
|
+
readonly description: "Tipo de dirección: trabajo, personal, comercial, etc.";
|
|
72
|
+
};
|
|
73
|
+
readonly pais: {
|
|
74
|
+
readonly type: "string";
|
|
75
|
+
readonly maxLength: 100;
|
|
76
|
+
readonly default: "Perú";
|
|
77
|
+
readonly description: "Nombre del país";
|
|
78
|
+
};
|
|
79
|
+
readonly pais_code: {
|
|
80
|
+
readonly type: "string";
|
|
81
|
+
readonly minLength: 2;
|
|
82
|
+
readonly maxLength: 3;
|
|
83
|
+
readonly default: "PE";
|
|
84
|
+
readonly pattern: "^[A-Z]{2,3}$";
|
|
85
|
+
readonly description: "Código ISO del país";
|
|
86
|
+
};
|
|
87
|
+
readonly continente: {
|
|
88
|
+
readonly type: "string";
|
|
89
|
+
readonly maxLength: 50;
|
|
90
|
+
readonly default: "América del Sur";
|
|
91
|
+
readonly description: "Nombre del continente";
|
|
92
|
+
};
|
|
93
|
+
readonly direccion: {
|
|
94
|
+
readonly type: "string";
|
|
95
|
+
readonly maxLength: 300;
|
|
96
|
+
readonly description: "Dirección principal o calle";
|
|
97
|
+
};
|
|
98
|
+
readonly via_tipo: {
|
|
99
|
+
readonly type: "string";
|
|
100
|
+
readonly maxLength: 20;
|
|
101
|
+
readonly description: "Tipo de vía: calle, avenida, jirón, etc.";
|
|
102
|
+
};
|
|
103
|
+
readonly via_nombre: {
|
|
104
|
+
readonly type: "string";
|
|
105
|
+
readonly maxLength: 150;
|
|
106
|
+
readonly description: "Nombre de la calle o avenida";
|
|
107
|
+
};
|
|
108
|
+
readonly mz: {
|
|
109
|
+
readonly type: "string";
|
|
110
|
+
readonly maxLength: 10;
|
|
111
|
+
readonly description: "Manzana";
|
|
112
|
+
};
|
|
113
|
+
readonly lt: {
|
|
114
|
+
readonly type: "string";
|
|
115
|
+
readonly maxLength: 10;
|
|
116
|
+
readonly description: "Lote";
|
|
117
|
+
};
|
|
118
|
+
readonly nro: {
|
|
119
|
+
readonly type: "string";
|
|
120
|
+
readonly maxLength: 10;
|
|
121
|
+
readonly description: "Número de la dirección";
|
|
122
|
+
};
|
|
123
|
+
readonly interior: {
|
|
124
|
+
readonly type: "string";
|
|
125
|
+
readonly maxLength: 20;
|
|
126
|
+
readonly description: "Departamento, oficina o interior";
|
|
127
|
+
};
|
|
128
|
+
readonly urbanizacion: {
|
|
129
|
+
readonly type: "string";
|
|
130
|
+
readonly maxLength: 150;
|
|
131
|
+
readonly description: "Urbanización, sector o zona";
|
|
132
|
+
};
|
|
133
|
+
readonly referencia: {
|
|
134
|
+
readonly type: "string";
|
|
135
|
+
readonly maxLength: 300;
|
|
136
|
+
readonly description: "Referencia adicional para ubicar la dirección";
|
|
137
|
+
};
|
|
138
|
+
readonly departamento: {
|
|
139
|
+
readonly type: "string";
|
|
140
|
+
readonly maxLength: 100;
|
|
141
|
+
readonly description: "Departamento o estado";
|
|
142
|
+
};
|
|
143
|
+
readonly provincia: {
|
|
144
|
+
readonly type: "string";
|
|
145
|
+
readonly maxLength: 100;
|
|
146
|
+
readonly description: "Provincia o región";
|
|
147
|
+
};
|
|
148
|
+
readonly distrito: {
|
|
149
|
+
readonly type: "string";
|
|
150
|
+
readonly maxLength: 100;
|
|
151
|
+
readonly description: "Distrito o municipio";
|
|
152
|
+
};
|
|
153
|
+
readonly ubigeo: {
|
|
154
|
+
readonly type: "string";
|
|
155
|
+
readonly pattern: "^\\d{6}$";
|
|
156
|
+
readonly description: "Código ubigeo de 6 dígitos";
|
|
157
|
+
};
|
|
158
|
+
readonly codigo_postal: {
|
|
159
|
+
readonly type: "string";
|
|
160
|
+
readonly maxLength: 20;
|
|
161
|
+
readonly description: "Código postal o ZIP";
|
|
162
|
+
};
|
|
163
|
+
readonly gps: {
|
|
164
|
+
readonly type: "string";
|
|
165
|
+
readonly pattern: "^-?\\d+\\.?\\d*,-?\\d+\\.?\\d*$";
|
|
166
|
+
readonly description: "Coordenadas GPS en formato 'latitud,longitud'";
|
|
167
|
+
};
|
|
168
|
+
readonly valida: {
|
|
169
|
+
readonly type: "boolean";
|
|
170
|
+
readonly default: false;
|
|
171
|
+
readonly description: "Indica si la dirección tiene un formato válido";
|
|
172
|
+
};
|
|
173
|
+
readonly verificada: {
|
|
174
|
+
readonly type: "boolean";
|
|
175
|
+
readonly default: false;
|
|
176
|
+
readonly description: "Indica si la dirección ha sido verificada físicamente";
|
|
177
|
+
};
|
|
178
|
+
};
|
|
179
|
+
readonly anyOf: readonly [{
|
|
180
|
+
readonly required: readonly ["direccion_completa"];
|
|
181
|
+
}, {
|
|
182
|
+
readonly required: readonly ["direccion_simple"];
|
|
183
|
+
}, {
|
|
184
|
+
readonly required: readonly ["direccion"];
|
|
185
|
+
}];
|
|
186
|
+
readonly additionalProperties: true;
|
|
187
|
+
readonly title: "Dirección";
|
|
188
|
+
readonly description: "Esquema para direcciones postales";
|
|
189
|
+
readonly errorMessage: {
|
|
190
|
+
readonly anyOf: "Debe proporcionar al menos uno de estos campos: direccion_completa, direccion_simple o direccion";
|
|
191
|
+
};
|
|
192
|
+
};
|
|
193
|
+
//# sourceMappingURL=direccion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"direccion.d.ts","sourceRoot":"","sources":["../src/direccion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,GAAG,MAAM,sBAAsB,CAAC;AAGvC,oBAAY,sBAAsB;IAChC,OAAO,YAAY;IACnB,QAAQ,aAAa;CACtB;AAGD,MAAM,WAAW,UAAU;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;EAoLhC,CAAC;AAEF,eAAe,oBAAoB,CAAC;AAEpC;;GAEG;AACH,eAAO,MAAM,kBAAkB,uBAkH3B,CAAC;AAEL;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2JtB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Schema as t}from"mongoose";import e from"@jysperu/joi-spanish";var i=(e=>(e.TRABAJO="Trabajo",e.PERSONAL="Personal",e))(i||{});let o=new t({direccion_completa:{type:String,trim:!0,maxlength:[500,"La dirección completa es demasiado larga"],comment:"Dirección completa formateada para mostrar"},direccion_simple:{type:String,trim:!0,maxlength:[300,"La dirección simple es demasiado larga"],comment:"Versión simplificada de la dirección"},tipo:{type:String,default:"Trabajo",validate:{validator:function(e){return"string"==typeof e&&0<e.trim().length},message:"El tipo debe ser un texto no vacío. Valores sugeridos: "+Object.values(i).join(", ")},comment:"Tipo de dirección: trabajo, personal, comercial, etc."},pais:{type:String,default:"Perú",trim:!0,maxlength:[100,"El nombre del país es demasiado largo"]},pais_code:{type:String,default:"PE",uppercase:!0,trim:!0,minlength:[2,"El código del país debe tener al menos 2 caracteres"],maxlength:[3,"El código del país no puede tener más de 3 caracteres"]},continente:{type:String,default:"América del Sur",trim:!0,maxlength:[50,"El nombre del continente es demasiado largo"]},direccion:{type:String,trim:!0,maxlength:[300,"La dirección es demasiado larga"],comment:"Dirección principal o calle"},via_tipo:{type:String,trim:!0,maxlength:[20,"El tipo de vía es demasiado largo"],comment:"Tipo de vía: calle, avenida, jirón, etc."},via_nombre:{type:String,trim:!0,maxlength:[150,"El nombre de la vía es demasiado largo"],comment:"Nombre de la calle o avenida"},mz:{type:String,trim:!0,maxlength:[10,"La manzana es demasiado larga"],comment:"Manzana"},lt:{type:String,trim:!0,maxlength:[10,"El lote es demasiado largo"],comment:"Lote"},nro:{type:String,trim:!0,maxlength:[10,"El número es demasiado largo"],comment:"Número de la dirección"},interior:{type:String,trim:!0,maxlength:[20,"El interior es demasiado largo"],comment:"Departamento, oficina o interior"},urbanizacion:{type:String,trim:!0,maxlength:[150,"La urbanización es demasiado larga"],comment:"Urbanización, sector o zona"},referencia:{type:String,trim:!0,maxlength:[300,"La referencia es demasiado larga"],comment:"Referencia adicional para ubicar la dirección"},departamento:{type:String,trim:!0,maxlength:[100,"El departamento es demasiado largo"],comment:"Departamento o estado"},provincia:{type:String,trim:!0,maxlength:[100,"La provincia es demasiado larga"],comment:"Provincia o región"},distrito:{type:String,trim:!0,maxlength:[100,"El distrito es demasiado largo"],comment:"Distrito o municipio"},ubigeo:{type:String,trim:!0,validate:{validator:function(e){return!e||/^\d{6}$/.test(e)},message:"El ubigeo debe tener 6 dígitos"},comment:"Código ubigeo de 6 dígitos"},codigo_postal:{type:String,trim:!0,maxlength:[20,"El código postal es demasiado largo"],comment:"Código postal o ZIP"},gps:{type:String,trim:!0,validate:{validator:function(e){return!e||/^-?\d+\.?\d*,-?\d+\.?\d*$/.test(e.replace(/\s/g,""))},message:"Las coordenadas GPS deben estar en formato 'latitud,longitud'"},comment:"Coordenadas GPS en formato 'latitud,longitud'"},valida:{type:Boolean,default:!1,comment:"Indica si la dirección tiene un formato válido"},verificada:{type:Boolean,default:!1,comment:"Indica si la dirección ha sido verificada físicamente"}},{strict:!1,timestamps:!0}),s=e.object({direccion_completa:e.string().trim().max(500).messages({"string.max":"La dirección completa es demasiado larga"}),direccion_simple:e.string().trim().max(300).messages({"string.max":"La dirección simple es demasiado larga"}),tipo:e.string().trim().min(1).default("Trabajo").messages({"string.empty":"El tipo debe ser un texto no vacío","string.min":"El tipo debe ser un texto no vacío"}),pais:e.string().trim().max(100).default("Perú").messages({"string.max":"El nombre del país es demasiado largo"}),pais_code:e.string().trim().uppercase().min(2).max(3).default("PE").messages({"string.min":"El código del país debe tener al menos 2 caracteres","string.max":"El código del país no puede tener más de 3 caracteres"}),continente:e.string().trim().max(50).default("América del Sur").messages({"string.max":"El nombre del continente es demasiado largo"}),direccion:e.string().trim().max(300).messages({"string.max":"La dirección es demasiado larga"}),via_tipo:e.string().trim().max(20).messages({"string.max":"El tipo de vía es demasiado largo"}),via_nombre:e.string().trim().max(150).messages({"string.max":"El nombre de la vía es demasiado largo"}),mz:e.string().trim().max(10).messages({"string.max":"La manzana es demasiado larga"}),lt:e.string().trim().max(10).messages({"string.max":"El lote es demasiado largo"}),nro:e.string().trim().max(10).messages({"string.max":"El número es demasiado largo"}),interior:e.string().trim().max(20).messages({"string.max":"El interior es demasiado largo"}),urbanizacion:e.string().trim().max(150).messages({"string.max":"La urbanización es demasiado larga"}),referencia:e.string().trim().max(300).messages({"string.max":"La referencia es demasiado larga"}),departamento:e.string().trim().max(100).messages({"string.max":"El departamento es demasiado largo"}),provincia:e.string().trim().max(100).messages({"string.max":"La provincia es demasiado larga"}),distrito:e.string().trim().max(100).messages({"string.max":"El distrito es demasiado largo"}),ubigeo:e.string().trim().pattern(/^\d{6}$/).messages({"string.pattern.base":"El ubigeo debe tener 6 dígitos"}),codigo_postal:e.string().trim().max(20).messages({"string.max":"El código postal es demasiado largo"}),gps:e.string().trim().pattern(/^-?\d+\.?\d*,-?\d+\.?\d*$/).messages({"string.pattern.base":"Las coordenadas GPS deben estar en formato 'latitud,longitud'"}),valida:e.boolean().default(!1),verificada:e.boolean().default(!1)}).options({stripUnknown:!1,allowUnknown:!0}).or("direccion_completa","direccion_simple","direccion").messages({"object.missing":"Debe proporcionar una dirección válida"}),m={$schema:"http://json-schema.org/draft-07/schema#",type:"object",properties:{direccion_completa:{type:"string",maxLength:500,description:"Dirección completa formateada para mostrar"},direccion_simple:{type:"string",maxLength:300,description:"Versión simplificada de la dirección"},tipo:{type:"string",minLength:1,default:"Trabajo",enum:Object.values(i),description:"Tipo de dirección: trabajo, personal, comercial, etc."},pais:{type:"string",maxLength:100,default:"Perú",description:"Nombre del país"},pais_code:{type:"string",minLength:2,maxLength:3,default:"PE",pattern:"^[A-Z]{2,3}$",description:"Código ISO del país"},continente:{type:"string",maxLength:50,default:"América del Sur",description:"Nombre del continente"},direccion:{type:"string",maxLength:300,description:"Dirección principal o calle"},via_tipo:{type:"string",maxLength:20,description:"Tipo de vía: calle, avenida, jirón, etc."},via_nombre:{type:"string",maxLength:150,description:"Nombre de la calle o avenida"},mz:{type:"string",maxLength:10,description:"Manzana"},lt:{type:"string",maxLength:10,description:"Lote"},nro:{type:"string",maxLength:10,description:"Número de la dirección"},interior:{type:"string",maxLength:20,description:"Departamento, oficina o interior"},urbanizacion:{type:"string",maxLength:150,description:"Urbanización, sector o zona"},referencia:{type:"string",maxLength:300,description:"Referencia adicional para ubicar la dirección"},departamento:{type:"string",maxLength:100,description:"Departamento o estado"},provincia:{type:"string",maxLength:100,description:"Provincia o región"},distrito:{type:"string",maxLength:100,description:"Distrito o municipio"},ubigeo:{type:"string",pattern:"^\\d{6}$",description:"Código ubigeo de 6 dígitos"},codigo_postal:{type:"string",maxLength:20,description:"Código postal o ZIP"},gps:{type:"string",pattern:"^-?\\d+\\.?\\d*,-?\\d+\\.?\\d*$",description:"Coordenadas GPS en formato 'latitud,longitud'"},valida:{type:"boolean",default:!1,description:"Indica si la dirección tiene un formato válido"},verificada:{type:"boolean",default:!1,description:"Indica si la dirección ha sido verificada físicamente"}},anyOf:[{required:["direccion_completa"]},{required:["direccion_simple"]},{required:["direccion"]}],additionalProperties:!0,title:"Dirección",description:"Esquema para direcciones postales",errorMessage:{anyOf:"Debe proporcionar al menos uno de estos campos: direccion_completa, direccion_simple o direccion"}};export{i as ClasificacionDireccion,s as JoiSchemaDireccion,m as JsonSchemaDireccion,o as MongoSchemaDireccion,o as default};
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"type": "object",
|
|
4
|
+
"properties": {
|
|
5
|
+
"direccion_completa": {
|
|
6
|
+
"type": "string",
|
|
7
|
+
"maxLength": 500,
|
|
8
|
+
"description": "Dirección completa formateada para mostrar"
|
|
9
|
+
},
|
|
10
|
+
"direccion_simple": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"maxLength": 300,
|
|
13
|
+
"description": "Versión simplificada de la dirección"
|
|
14
|
+
},
|
|
15
|
+
"tipo": {
|
|
16
|
+
"type": "string",
|
|
17
|
+
"minLength": 1,
|
|
18
|
+
"default": "Trabajo",
|
|
19
|
+
"enum": [
|
|
20
|
+
"Trabajo",
|
|
21
|
+
"Personal"
|
|
22
|
+
],
|
|
23
|
+
"description": "Tipo de dirección: trabajo, personal, comercial, etc."
|
|
24
|
+
},
|
|
25
|
+
"pais": {
|
|
26
|
+
"type": "string",
|
|
27
|
+
"maxLength": 100,
|
|
28
|
+
"default": "Perú",
|
|
29
|
+
"description": "Nombre del país"
|
|
30
|
+
},
|
|
31
|
+
"pais_code": {
|
|
32
|
+
"type": "string",
|
|
33
|
+
"minLength": 2,
|
|
34
|
+
"maxLength": 3,
|
|
35
|
+
"default": "PE",
|
|
36
|
+
"pattern": "^[A-Z]{2,3}$",
|
|
37
|
+
"description": "Código ISO del país"
|
|
38
|
+
},
|
|
39
|
+
"continente": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"maxLength": 50,
|
|
42
|
+
"default": "América del Sur",
|
|
43
|
+
"description": "Nombre del continente"
|
|
44
|
+
},
|
|
45
|
+
"direccion": {
|
|
46
|
+
"type": "string",
|
|
47
|
+
"maxLength": 300,
|
|
48
|
+
"description": "Dirección principal o calle"
|
|
49
|
+
},
|
|
50
|
+
"via_tipo": {
|
|
51
|
+
"type": "string",
|
|
52
|
+
"maxLength": 20,
|
|
53
|
+
"description": "Tipo de vía: calle, avenida, jirón, etc."
|
|
54
|
+
},
|
|
55
|
+
"via_nombre": {
|
|
56
|
+
"type": "string",
|
|
57
|
+
"maxLength": 150,
|
|
58
|
+
"description": "Nombre de la calle o avenida"
|
|
59
|
+
},
|
|
60
|
+
"mz": {
|
|
61
|
+
"type": "string",
|
|
62
|
+
"maxLength": 10,
|
|
63
|
+
"description": "Manzana"
|
|
64
|
+
},
|
|
65
|
+
"lt": {
|
|
66
|
+
"type": "string",
|
|
67
|
+
"maxLength": 10,
|
|
68
|
+
"description": "Lote"
|
|
69
|
+
},
|
|
70
|
+
"nro": {
|
|
71
|
+
"type": "string",
|
|
72
|
+
"maxLength": 10,
|
|
73
|
+
"description": "Número de la dirección"
|
|
74
|
+
},
|
|
75
|
+
"interior": {
|
|
76
|
+
"type": "string",
|
|
77
|
+
"maxLength": 20,
|
|
78
|
+
"description": "Departamento, oficina o interior"
|
|
79
|
+
},
|
|
80
|
+
"urbanizacion": {
|
|
81
|
+
"type": "string",
|
|
82
|
+
"maxLength": 150,
|
|
83
|
+
"description": "Urbanización, sector o zona"
|
|
84
|
+
},
|
|
85
|
+
"referencia": {
|
|
86
|
+
"type": "string",
|
|
87
|
+
"maxLength": 300,
|
|
88
|
+
"description": "Referencia adicional para ubicar la dirección"
|
|
89
|
+
},
|
|
90
|
+
"departamento": {
|
|
91
|
+
"type": "string",
|
|
92
|
+
"maxLength": 100,
|
|
93
|
+
"description": "Departamento o estado"
|
|
94
|
+
},
|
|
95
|
+
"provincia": {
|
|
96
|
+
"type": "string",
|
|
97
|
+
"maxLength": 100,
|
|
98
|
+
"description": "Provincia o región"
|
|
99
|
+
},
|
|
100
|
+
"distrito": {
|
|
101
|
+
"type": "string",
|
|
102
|
+
"maxLength": 100,
|
|
103
|
+
"description": "Distrito o municipio"
|
|
104
|
+
},
|
|
105
|
+
"ubigeo": {
|
|
106
|
+
"type": "string",
|
|
107
|
+
"pattern": "^\\d{6}$",
|
|
108
|
+
"description": "Código ubigeo de 6 dígitos"
|
|
109
|
+
},
|
|
110
|
+
"codigo_postal": {
|
|
111
|
+
"type": "string",
|
|
112
|
+
"maxLength": 20,
|
|
113
|
+
"description": "Código postal o ZIP"
|
|
114
|
+
},
|
|
115
|
+
"gps": {
|
|
116
|
+
"type": "string",
|
|
117
|
+
"pattern": "^-?\\d+\\.?\\d*,-?\\d+\\.?\\d*$",
|
|
118
|
+
"description": "Coordenadas GPS en formato 'latitud,longitud'"
|
|
119
|
+
},
|
|
120
|
+
"valida": {
|
|
121
|
+
"type": "boolean",
|
|
122
|
+
"default": false,
|
|
123
|
+
"description": "Indica si la dirección tiene un formato válido"
|
|
124
|
+
},
|
|
125
|
+
"verificada": {
|
|
126
|
+
"type": "boolean",
|
|
127
|
+
"default": false,
|
|
128
|
+
"description": "Indica si la dirección ha sido verificada físicamente"
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
"anyOf": [
|
|
132
|
+
{
|
|
133
|
+
"required": [
|
|
134
|
+
"direccion_completa"
|
|
135
|
+
]
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"required": [
|
|
139
|
+
"direccion_simple"
|
|
140
|
+
]
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"required": [
|
|
144
|
+
"direccion"
|
|
145
|
+
]
|
|
146
|
+
}
|
|
147
|
+
],
|
|
148
|
+
"additionalProperties": true,
|
|
149
|
+
"title": "Dirección",
|
|
150
|
+
"description": "Esquema para direcciones postales",
|
|
151
|
+
"errorMessage": {
|
|
152
|
+
"anyOf": "Debe proporcionar al menos uno de estos campos: direccion_completa, direccion_simple o direccion"
|
|
153
|
+
}
|
|
154
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
((e,i)=>{"object"==typeof exports&&typeof module<"u"?i(exports,require("mongoose"),require("@jysperu/joi-spanish")):"function"==typeof define&&define.amd?define("@jysperu/schema-direccion",["exports","mongoose","@jysperu/joi-spanish"],i):i(((e=typeof globalThis<"u"?globalThis:e||self).JCore=e.JCore||{},e.JCore.schema=e.JCore.schema||{},e.JCore.schema.direccion={}),e.mongoose,e.Joi)})(this,function(e,i,a){(t={}).TRABAJO="Trabajo",t.PERSONAL="Personal";var t,i=new i.Schema({direccion_completa:{type:String,trim:!0,maxlength:[500,"La dirección completa es demasiado larga"],comment:"Dirección completa formateada para mostrar"},direccion_simple:{type:String,trim:!0,maxlength:[300,"La dirección simple es demasiado larga"],comment:"Versión simplificada de la dirección"},tipo:{type:String,default:"Trabajo",validate:{validator:function(e){return"string"==typeof e&&0<e.trim().length},message:"El tipo debe ser un texto no vacío. Valores sugeridos: "+Object.values(t).join(", ")},comment:"Tipo de dirección: trabajo, personal, comercial, etc."},pais:{type:String,default:"Perú",trim:!0,maxlength:[100,"El nombre del país es demasiado largo"]},pais_code:{type:String,default:"PE",uppercase:!0,trim:!0,minlength:[2,"El código del país debe tener al menos 2 caracteres"],maxlength:[3,"El código del país no puede tener más de 3 caracteres"]},continente:{type:String,default:"América del Sur",trim:!0,maxlength:[50,"El nombre del continente es demasiado largo"]},direccion:{type:String,trim:!0,maxlength:[300,"La dirección es demasiado larga"],comment:"Dirección principal o calle"},via_tipo:{type:String,trim:!0,maxlength:[20,"El tipo de vía es demasiado largo"],comment:"Tipo de vía: calle, avenida, jirón, etc."},via_nombre:{type:String,trim:!0,maxlength:[150,"El nombre de la vía es demasiado largo"],comment:"Nombre de la calle o avenida"},mz:{type:String,trim:!0,maxlength:[10,"La manzana es demasiado larga"],comment:"Manzana"},lt:{type:String,trim:!0,maxlength:[10,"El lote es demasiado largo"],comment:"Lote"},nro:{type:String,trim:!0,maxlength:[10,"El número es demasiado largo"],comment:"Número de la dirección"},interior:{type:String,trim:!0,maxlength:[20,"El interior es demasiado largo"],comment:"Departamento, oficina o interior"},urbanizacion:{type:String,trim:!0,maxlength:[150,"La urbanización es demasiado larga"],comment:"Urbanización, sector o zona"},referencia:{type:String,trim:!0,maxlength:[300,"La referencia es demasiado larga"],comment:"Referencia adicional para ubicar la dirección"},departamento:{type:String,trim:!0,maxlength:[100,"El departamento es demasiado largo"],comment:"Departamento o estado"},provincia:{type:String,trim:!0,maxlength:[100,"La provincia es demasiado larga"],comment:"Provincia o región"},distrito:{type:String,trim:!0,maxlength:[100,"El distrito es demasiado largo"],comment:"Distrito o municipio"},ubigeo:{type:String,trim:!0,validate:{validator:function(e){return!e||/^\d{6}$/.test(e)},message:"El ubigeo debe tener 6 dígitos"},comment:"Código ubigeo de 6 dígitos"},codigo_postal:{type:String,trim:!0,maxlength:[20,"El código postal es demasiado largo"],comment:"Código postal o ZIP"},gps:{type:String,trim:!0,validate:{validator:function(e){return!e||/^-?\d+\.?\d*,-?\d+\.?\d*$/.test(e.replace(/\s/g,""))},message:"Las coordenadas GPS deben estar en formato 'latitud,longitud'"},comment:"Coordenadas GPS en formato 'latitud,longitud'"},valida:{type:Boolean,default:!1,comment:"Indica si la dirección tiene un formato válido"},verificada:{type:Boolean,default:!1,comment:"Indica si la dirección ha sido verificada físicamente"}},{strict:!1,timestamps:!0}),a=a.object({direccion_completa:a.string().trim().max(500).messages({"string.max":"La dirección completa es demasiado larga"}),direccion_simple:a.string().trim().max(300).messages({"string.max":"La dirección simple es demasiado larga"}),tipo:a.string().trim().min(1).default("Trabajo").messages({"string.empty":"El tipo debe ser un texto no vacío","string.min":"El tipo debe ser un texto no vacío"}),pais:a.string().trim().max(100).default("Perú").messages({"string.max":"El nombre del país es demasiado largo"}),pais_code:a.string().trim().uppercase().min(2).max(3).default("PE").messages({"string.min":"El código del país debe tener al menos 2 caracteres","string.max":"El código del país no puede tener más de 3 caracteres"}),continente:a.string().trim().max(50).default("América del Sur").messages({"string.max":"El nombre del continente es demasiado largo"}),direccion:a.string().trim().max(300).messages({"string.max":"La dirección es demasiado larga"}),via_tipo:a.string().trim().max(20).messages({"string.max":"El tipo de vía es demasiado largo"}),via_nombre:a.string().trim().max(150).messages({"string.max":"El nombre de la vía es demasiado largo"}),mz:a.string().trim().max(10).messages({"string.max":"La manzana es demasiado larga"}),lt:a.string().trim().max(10).messages({"string.max":"El lote es demasiado largo"}),nro:a.string().trim().max(10).messages({"string.max":"El número es demasiado largo"}),interior:a.string().trim().max(20).messages({"string.max":"El interior es demasiado largo"}),urbanizacion:a.string().trim().max(150).messages({"string.max":"La urbanización es demasiado larga"}),referencia:a.string().trim().max(300).messages({"string.max":"La referencia es demasiado larga"}),departamento:a.string().trim().max(100).messages({"string.max":"El departamento es demasiado largo"}),provincia:a.string().trim().max(100).messages({"string.max":"La provincia es demasiado larga"}),distrito:a.string().trim().max(100).messages({"string.max":"El distrito es demasiado largo"}),ubigeo:a.string().trim().pattern(/^\d{6}$/).messages({"string.pattern.base":"El ubigeo debe tener 6 dígitos"}),codigo_postal:a.string().trim().max(20).messages({"string.max":"El código postal es demasiado largo"}),gps:a.string().trim().pattern(/^-?\d+\.?\d*,-?\d+\.?\d*$/).messages({"string.pattern.base":"Las coordenadas GPS deben estar en formato 'latitud,longitud'"}),valida:a.boolean().default(!1),verificada:a.boolean().default(!1)}).options({stripUnknown:!1,allowUnknown:!0}).or("direccion_completa","direccion_simple","direccion").messages({"object.missing":"Debe proporcionar una dirección válida"}),r={$schema:"http://json-schema.org/draft-07/schema#",type:"object",properties:{direccion_completa:{type:"string",maxLength:500,description:"Dirección completa formateada para mostrar"},direccion_simple:{type:"string",maxLength:300,description:"Versión simplificada de la dirección"},tipo:{type:"string",minLength:1,default:"Trabajo",enum:Object.values(t),description:"Tipo de dirección: trabajo, personal, comercial, etc."},pais:{type:"string",maxLength:100,default:"Perú",description:"Nombre del país"},pais_code:{type:"string",minLength:2,maxLength:3,default:"PE",pattern:"^[A-Z]{2,3}$",description:"Código ISO del país"},continente:{type:"string",maxLength:50,default:"América del Sur",description:"Nombre del continente"},direccion:{type:"string",maxLength:300,description:"Dirección principal o calle"},via_tipo:{type:"string",maxLength:20,description:"Tipo de vía: calle, avenida, jirón, etc."},via_nombre:{type:"string",maxLength:150,description:"Nombre de la calle o avenida"},mz:{type:"string",maxLength:10,description:"Manzana"},lt:{type:"string",maxLength:10,description:"Lote"},nro:{type:"string",maxLength:10,description:"Número de la dirección"},interior:{type:"string",maxLength:20,description:"Departamento, oficina o interior"},urbanizacion:{type:"string",maxLength:150,description:"Urbanización, sector o zona"},referencia:{type:"string",maxLength:300,description:"Referencia adicional para ubicar la dirección"},departamento:{type:"string",maxLength:100,description:"Departamento o estado"},provincia:{type:"string",maxLength:100,description:"Provincia o región"},distrito:{type:"string",maxLength:100,description:"Distrito o municipio"},ubigeo:{type:"string",pattern:"^\\d{6}$",description:"Código ubigeo de 6 dígitos"},codigo_postal:{type:"string",maxLength:20,description:"Código postal o ZIP"},gps:{type:"string",pattern:"^-?\\d+\\.?\\d*,-?\\d+\\.?\\d*$",description:"Coordenadas GPS en formato 'latitud,longitud'"},valida:{type:"boolean",default:!1,description:"Indica si la dirección tiene un formato válido"},verificada:{type:"boolean",default:!1,description:"Indica si la dirección ha sido verificada físicamente"}},anyOf:[{required:["direccion_completa"]},{required:["direccion_simple"]},{required:["direccion"]}],additionalProperties:!0,title:"Dirección",description:"Esquema para direcciones postales",errorMessage:{anyOf:"Debe proporcionar al menos uno de estos campos: direccion_completa, direccion_simple o direccion"}};e.ClasificacionDireccion=t,e.JoiSchemaDireccion=a,e.JsonSchemaDireccion=r,e.MongoSchemaDireccion=i,e.default=i,Object.defineProperty(e,"__esModule",{value:!0})});
|
package/package.json
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@jysperu/schema-direccion",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Esquemas para direcciones: Mongoose, JSON Schema y Joi",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"mongoose",
|
|
7
|
+
"schema",
|
|
8
|
+
"direccion",
|
|
9
|
+
"validation",
|
|
10
|
+
"joi",
|
|
11
|
+
"json-schema",
|
|
12
|
+
"typescript",
|
|
13
|
+
"spanish"
|
|
14
|
+
],
|
|
15
|
+
"homepage": "https://gitlab.com/tiny.node/schema/direccion#readme",
|
|
16
|
+
"bugs": {
|
|
17
|
+
"url": "https://gitlab.com/tiny.node/schema/direccion/issues"
|
|
18
|
+
},
|
|
19
|
+
"type": "module",
|
|
20
|
+
"main": "./dist/direccion.umd.js",
|
|
21
|
+
"module": "./dist/direccion.esm.js",
|
|
22
|
+
"types": "./dist/direccion.d.ts",
|
|
23
|
+
"exports": {
|
|
24
|
+
".": {
|
|
25
|
+
"types": "./dist/direccion.d.ts",
|
|
26
|
+
"import": "./dist/direccion.esm.js",
|
|
27
|
+
"require": "./dist/direccion.cjs.js"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"files": [
|
|
31
|
+
"dist",
|
|
32
|
+
"README.md",
|
|
33
|
+
"LICENSE"
|
|
34
|
+
],
|
|
35
|
+
"engines": {
|
|
36
|
+
"node": ">=16.0.0"
|
|
37
|
+
},
|
|
38
|
+
"license": "MIT",
|
|
39
|
+
"author": {
|
|
40
|
+
"name": "JYS Perú",
|
|
41
|
+
"url": "https://www.jys.pe",
|
|
42
|
+
"email": "developers@jys.pe"
|
|
43
|
+
},
|
|
44
|
+
"contributors": [
|
|
45
|
+
"JYS Perú <developers@jys.pe>"
|
|
46
|
+
],
|
|
47
|
+
"repository": {
|
|
48
|
+
"type": "git",
|
|
49
|
+
"url": "git+https://gitlab.com/tiny.node/schema/direccion.git"
|
|
50
|
+
},
|
|
51
|
+
"scripts": {
|
|
52
|
+
"build": "vite build",
|
|
53
|
+
"dev": "vite build --watch",
|
|
54
|
+
"typecheck": "tsc --noEmit",
|
|
55
|
+
"lint": "tsc --noEmit && echo \"✅ TypeScript check passed\"",
|
|
56
|
+
"prepublishOnly": "npm run build",
|
|
57
|
+
"test": "echo \"⚠️ No tests specified\" && exit 0"
|
|
58
|
+
},
|
|
59
|
+
"devDependencies": {
|
|
60
|
+
"@node-minify/core": "^9.0.2",
|
|
61
|
+
"@node-minify/uglify-es": "^9.0.1",
|
|
62
|
+
"@node-minify/uglify-js": "^9.0.1",
|
|
63
|
+
"@types/node": "^24.10.1",
|
|
64
|
+
"typescript": "^5.8.3",
|
|
65
|
+
"vite": "^6.2.5",
|
|
66
|
+
"vite-plugin-dts": "^4.5.3"
|
|
67
|
+
},
|
|
68
|
+
"dependencies": {
|
|
69
|
+
"@jysperu/joi-spanish": "^17.13.4",
|
|
70
|
+
"mongoose": "^8.13.2"
|
|
71
|
+
}
|
|
72
|
+
}
|