@jysperu/schema-correo 1.0.0 → 1.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/README.md CHANGED
@@ -28,7 +28,7 @@ npm install @jysperu/schema-correo
28
28
  ## ⚡ Inicio Rápido
29
29
 
30
30
  ```typescript
31
- import { MongoSchemaCorreo, JsonSchemaCorreo, JoiSchemaCorreo } from "@jysperu/schema-correo";
31
+ import { MongoSchemaCorreo, JsonSchemaCorreo, JoiSchemaCorreo, parseCorreo } from "@jysperu/schema-correo";
32
32
  import { ICorreo, ClasificacionCorreo } from "@jysperu/schema-correo";
33
33
 
34
34
  // Mongoose
@@ -46,6 +46,10 @@ const { error, value } = JoiSchemaCorreo.validate({
46
46
  // JSON Schema
47
47
  const validate = ajv.compile(JsonSchemaCorreo);
48
48
  const isValid = validate(correoData);
49
+
50
+ // Función utilitaria para parsear correos
51
+ const correoParseado = parseCorreo("usuario@dominio.com", { tipo: "Personal" });
52
+ // Resultado: { correo: "usuario@dominio.com", usuario: "usuario", dominio: "dominio.com", tipo: "Personal" }
49
53
  ```
50
54
 
51
55
  ## 📚 Esquemas Disponibles
@@ -169,6 +173,42 @@ persona.correos.push({
169
173
  await persona.save();
170
174
  ```
171
175
 
176
+ ### Usar la función parseCorreo
177
+
178
+ ```typescript
179
+ import { parseCorreo } from "@jysperu/schema-correo";
180
+
181
+ // Uso básico - extrae automáticamente usuario y dominio
182
+ const correo1 = parseCorreo("usuario@ejemplo.com");
183
+ console.log(correo1);
184
+ // { correo: "usuario@ejemplo.com", usuario: "usuario", dominio: "ejemplo.com" }
185
+
186
+ // Con configuración adicional
187
+ const correo2 = parseCorreo("Ana.Garcia@empresa.com", {
188
+ tipo: "Trabajo",
189
+ nombre: "Ana García",
190
+ valido: true
191
+ });
192
+ console.log(correo2);
193
+ // {
194
+ // correo: "Ana.Garcia@empresa.com",
195
+ // usuario: "ana.garcia",
196
+ // dominio: "empresa.com",
197
+ // tipo: "Trabajo",
198
+ // nombre: "Ana García",
199
+ // valido: true
200
+ // }
201
+
202
+ // Crear múltiples correos parseados
203
+ const correos = [
204
+ "juan@personal.com",
205
+ "maria@trabajo.es",
206
+ "admin@sistema.org"
207
+ ].map(email => parseCorreo(email, { valido: true }));
208
+
209
+ console.log(correos);
210
+ ```
211
+
172
212
  ## 📊 Esquema de Datos
173
213
 
174
214
  ### ✅ Campo Obligatorio
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0});var t=require("mongoose"),o=require("@jysperu/joi-spanish"),r=(e=>(e.TRABAJO="Trabajo",e.PERSONAL="Personal",e))(r||{});let a=new t.Schema({correo:{type:String,required:[!0,"El correo electrónico es obligatorio"],trim:!0,lowercase:!0,validate:{validator:function(e){return/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(e)},message:"El formato del correo electrónico es inválido"}},tipo:{type:String,default:"Personal",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(r).join(", ")}},nombre:{type:String,trim:!0,maxlength:[100,"El nombre es demasiado largo"],comment:"Nombre de la persona asociada al correo"},usuario:{type:String,trim:!0,lowercase:!0,maxlength:[64,"El usuario es demasiado largo"]},dominio:{type:String,trim:!0,lowercase:!0,maxlength:[255,"El dominio es demasiado largo"]},valido:{type:Boolean,default:!1},verificado:{type:Boolean,default:!1}},{strict:!1,timestamps:!0}),i=o.object({correo:o.string().email({minDomainSegments:2}).trim().lowercase().required().messages({"string.email":"El formato del correo electrónico es inválido","any.required":"El correo electrónico es obligatorio","string.empty":"El correo no puede estar vacío"}),tipo:o.string().trim().min(1).default("Personal").messages({"string.empty":"El tipo no puede estar vacío","string.min":"El tipo debe tener al menos 1 caracter"}),nombre:o.string().trim().max(100).optional().messages({"string.max":"El nombre no puede exceder 100 caracteres"}),usuario:o.string().trim().lowercase().max(64).optional().messages({"string.max":"El usuario no puede exceder 64 caracteres"}),dominio:o.string().trim().lowercase().max(255).optional().messages({"string.max":"El dominio no puede exceder 255 caracteres"}),valido:o.boolean().default(!1),verificado:o.boolean().default(!1)}).options({stripUnknown:!1,allowUnknown:!0}),n={$schema:"http://json-schema.org/draft-07/schema#",type:"object",properties:{correo:{type:"string",format:"email",pattern:"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$",minLength:5,maxLength:320,description:"Dirección de correo electrónico válida"},tipo:{type:"string",minLength:1,maxLength:50,default:"Personal",enum:Object.values(r),description:"Tipo de correo electrónico"},nombre:{type:"string",minLength:1,maxLength:100,description:"Nombre de la persona asociada al correo",examples:["Juan Pérez","María García"]},usuario:{type:"string",minLength:1,maxLength:64,pattern:"^[a-zA-Z0-9._%+-]+$",description:"Parte del usuario del correo electrónico (antes del @)",examples:["usuario","juan.perez"]},dominio:{type:"string",minLength:4,maxLength:255,pattern:"^[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$",description:"Dominio del correo electrónico (después del @)",examples:["ejemplo.com","domain.org"]},valido:{type:"boolean",default:!1,description:"Indica si el formato del correo es válido"},verificado:{type:"boolean",default:!1,description:"Indica si el correo ha sido verificado"}},required:["correo"],additionalProperties:!0,title:"Correo Electrónico",description:"Esquema para correos electrónicos"};exports.ClasificacionCorreo=r,exports.JoiSchemaCorreo=i,exports.JsonSchemaCorreo=n,exports.MongoSchemaCorreo=a,exports.default=a;
1
+ Object.defineProperty(exports,"__esModule",{value:!0});var s=require("mongoose"),o=require("@jysperu/joi-spanish"),r=(e=>(e.TRABAJO="Trabajo",e.PERSONAL="Personal",e))(r||{});let a=new s.Schema({correo:{type:String,required:[!0,"El correo electrónico es obligatorio"],trim:!0,lowercase:!0,validate:{validator:function(e){return/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(e)},message:"El formato del correo electrónico es inválido"}},tipo:{type:String,default:"Personal",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(r).join(", ")}},nombre:{type:String,trim:!0,maxlength:[100,"El nombre es demasiado largo"],comment:"Nombre de la persona asociada al correo"},usuario:{type:String,trim:!0,lowercase:!0,maxlength:[64,"El usuario es demasiado largo"]},dominio:{type:String,trim:!0,lowercase:!0,maxlength:[255,"El dominio es demasiado largo"]},valido:{type:Boolean,default:!1},verificado:{type:Boolean,default:!1}},{strict:!1,timestamps:!0}),l=o.object({correo:o.string().email({minDomainSegments:2}).trim().lowercase().required().messages({"string.email":"El formato del correo electrónico es inválido","any.required":"El correo electrónico es obligatorio","string.empty":"El correo no puede estar vacío"}),tipo:o.string().trim().min(1).default("Personal").messages({"string.empty":"El tipo no puede estar vacío","string.min":"El tipo debe tener al menos 1 caracter"}),nombre:o.string().trim().max(100).optional().messages({"string.max":"El nombre no puede exceder 100 caracteres"}),usuario:o.string().trim().lowercase().max(64).optional().messages({"string.max":"El usuario no puede exceder 64 caracteres"}),dominio:o.string().trim().lowercase().max(255).optional().messages({"string.max":"El dominio no puede exceder 255 caracteres"}),valido:o.boolean().default(!1),verificado:o.boolean().default(!1)}).options({stripUnknown:!1,allowUnknown:!0}),c={$schema:"http://json-schema.org/draft-07/schema#",type:"object",properties:{correo:{type:"string",format:"email",pattern:"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$",minLength:5,maxLength:320,description:"Dirección de correo electrónico válida"},tipo:{type:"string",minLength:1,maxLength:50,default:"Personal",enum:Object.values(r),description:"Tipo de correo electrónico"},nombre:{type:"string",minLength:1,maxLength:100,description:"Nombre de la persona asociada al correo",examples:["Juan Pérez","María García"]},usuario:{type:"string",minLength:1,maxLength:64,pattern:"^[a-zA-Z0-9._%+-]+$",description:"Parte del usuario del correo electrónico (antes del @)",examples:["usuario","juan.perez"]},dominio:{type:"string",minLength:4,maxLength:255,pattern:"^[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$",description:"Dominio del correo electrónico (después del @)",examples:["ejemplo.com","domain.org"]},valido:{type:"boolean",default:!1,description:"Indica si el formato del correo es válido"},verificado:{type:"boolean",default:!1,description:"Indica si el correo ha sido verificado"}},required:["correo"],additionalProperties:!0,title:"Correo Electrónico",description:"Esquema para correos electrónicos"};function m(e,o={}){var[r,a]=e.split("@");return{...o,correo:e,usuario:r.toLowerCase(),dominio:a.toLowerCase()}}exports.ClasificacionCorreo=r,exports.JoiSchemaCorreo=l,exports.JsonSchemaCorreo=c,exports.MongoSchemaCorreo=a,exports.default=a,exports.parseCorreo=m;
package/dist/correo.d.ts CHANGED
@@ -92,4 +92,11 @@ export declare const JsonSchemaCorreo: {
92
92
  readonly title: "Correo Electrónico";
93
93
  readonly description: "Esquema para correos electrónicos";
94
94
  };
95
+ /**
96
+ * Función para crear un objeto ICorreo a partir de una cadena de correo electrónico
97
+ * @param correo - La dirección de correo electrónico completa
98
+ * @param config - Configuración adicional para el objeto ICorreo
99
+ * @returns Objeto ICorreo con las propiedades desglosadas
100
+ */
101
+ export declare function parseCorreo(correo: string, config?: any): ICorreo;
95
102
  //# sourceMappingURL=correo.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"correo.d.ts","sourceRoot":"","sources":["../src/correo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,GAAG,MAAM,sBAAsB,CAAC;AAGvC,oBAAY,mBAAmB;IAC7B,OAAO,YAAY;IACnB,QAAQ,aAAa;CACtB;AAGD,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;EA+D7B,CAAC;AAEF,eAAe,iBAAiB,CAAC;AAEjC;;GAEG;AACH,eAAO,MAAM,eAAe,uBAqC1B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0DnB,CAAC"}
1
+ {"version":3,"file":"correo.d.ts","sourceRoot":"","sources":["../src/correo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,GAAG,MAAM,sBAAsB,CAAC;AAGvC,oBAAY,mBAAmB;IAC7B,OAAO,YAAY;IACnB,QAAQ,aAAa;CACtB;AAGD,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;EA+D7B,CAAC;AAEF,eAAe,iBAAiB,CAAC;AAEjC;;GAEG;AACH,eAAO,MAAM,eAAe,uBAqC1B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0DnB,CAAC;AAEX;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,GAAQ,GAAG,OAAO,CASrE"}
@@ -1 +1 @@
1
- import{Schema as a}from"mongoose";import o from"@jysperu/joi-spanish";var r=(e=>(e.TRABAJO="Trabajo",e.PERSONAL="Personal",e))(r||{});let n=new a({correo:{type:String,required:[!0,"El correo electrónico es obligatorio"],trim:!0,lowercase:!0,validate:{validator:function(e){return/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(e)},message:"El formato del correo electrónico es inválido"}},tipo:{type:String,default:"Personal",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(r).join(", ")}},nombre:{type:String,trim:!0,maxlength:[100,"El nombre es demasiado largo"],comment:"Nombre de la persona asociada al correo"},usuario:{type:String,trim:!0,lowercase:!0,maxlength:[64,"El usuario es demasiado largo"]},dominio:{type:String,trim:!0,lowercase:!0,maxlength:[255,"El dominio es demasiado largo"]},valido:{type:Boolean,default:!1},verificado:{type:Boolean,default:!1}},{strict:!1,timestamps:!0}),s=o.object({correo:o.string().email({minDomainSegments:2}).trim().lowercase().required().messages({"string.email":"El formato del correo electrónico es inválido","any.required":"El correo electrónico es obligatorio","string.empty":"El correo no puede estar vacío"}),tipo:o.string().trim().min(1).default("Personal").messages({"string.empty":"El tipo no puede estar vacío","string.min":"El tipo debe tener al menos 1 caracter"}),nombre:o.string().trim().max(100).optional().messages({"string.max":"El nombre no puede exceder 100 caracteres"}),usuario:o.string().trim().lowercase().max(64).optional().messages({"string.max":"El usuario no puede exceder 64 caracteres"}),dominio:o.string().trim().lowercase().max(255).optional().messages({"string.max":"El dominio no puede exceder 255 caracteres"}),valido:o.boolean().default(!1),verificado:o.boolean().default(!1)}).options({stripUnknown:!1,allowUnknown:!0}),l={$schema:"http://json-schema.org/draft-07/schema#",type:"object",properties:{correo:{type:"string",format:"email",pattern:"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$",minLength:5,maxLength:320,description:"Dirección de correo electrónico válida"},tipo:{type:"string",minLength:1,maxLength:50,default:"Personal",enum:Object.values(r),description:"Tipo de correo electrónico"},nombre:{type:"string",minLength:1,maxLength:100,description:"Nombre de la persona asociada al correo",examples:["Juan Pérez","María García"]},usuario:{type:"string",minLength:1,maxLength:64,pattern:"^[a-zA-Z0-9._%+-]+$",description:"Parte del usuario del correo electrónico (antes del @)",examples:["usuario","juan.perez"]},dominio:{type:"string",minLength:4,maxLength:255,pattern:"^[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$",description:"Dominio del correo electrónico (después del @)",examples:["ejemplo.com","domain.org"]},valido:{type:"boolean",default:!1,description:"Indica si el formato del correo es válido"},verificado:{type:"boolean",default:!1,description:"Indica si el correo ha sido verificado"}},required:["correo"],additionalProperties:!0,title:"Correo Electrónico",description:"Esquema para correos electrónicos"};export{r as ClasificacionCorreo,s as JoiSchemaCorreo,l as JsonSchemaCorreo,n as MongoSchemaCorreo,n as default};
1
+ import{Schema as n}from"mongoose";import o from"@jysperu/joi-spanish";var r=(e=>(e.TRABAJO="Trabajo",e.PERSONAL="Personal",e))(r||{});let c=new n({correo:{type:String,required:[!0,"El correo electrónico es obligatorio"],trim:!0,lowercase:!0,validate:{validator:function(e){return/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(e)},message:"El formato del correo electrónico es inválido"}},tipo:{type:String,default:"Personal",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(r).join(", ")}},nombre:{type:String,trim:!0,maxlength:[100,"El nombre es demasiado largo"],comment:"Nombre de la persona asociada al correo"},usuario:{type:String,trim:!0,lowercase:!0,maxlength:[64,"El usuario es demasiado largo"]},dominio:{type:String,trim:!0,lowercase:!0,maxlength:[255,"El dominio es demasiado largo"]},valido:{type:Boolean,default:!1},verificado:{type:Boolean,default:!1}},{strict:!1,timestamps:!0}),m=o.object({correo:o.string().email({minDomainSegments:2}).trim().lowercase().required().messages({"string.email":"El formato del correo electrónico es inválido","any.required":"El correo electrónico es obligatorio","string.empty":"El correo no puede estar vacío"}),tipo:o.string().trim().min(1).default("Personal").messages({"string.empty":"El tipo no puede estar vacío","string.min":"El tipo debe tener al menos 1 caracter"}),nombre:o.string().trim().max(100).optional().messages({"string.max":"El nombre no puede exceder 100 caracteres"}),usuario:o.string().trim().lowercase().max(64).optional().messages({"string.max":"El usuario no puede exceder 64 caracteres"}),dominio:o.string().trim().lowercase().max(255).optional().messages({"string.max":"El dominio no puede exceder 255 caracteres"}),valido:o.boolean().default(!1),verificado:o.boolean().default(!1)}).options({stripUnknown:!1,allowUnknown:!0}),d={$schema:"http://json-schema.org/draft-07/schema#",type:"object",properties:{correo:{type:"string",format:"email",pattern:"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$",minLength:5,maxLength:320,description:"Dirección de correo electrónico válida"},tipo:{type:"string",minLength:1,maxLength:50,default:"Personal",enum:Object.values(r),description:"Tipo de correo electrónico"},nombre:{type:"string",minLength:1,maxLength:100,description:"Nombre de la persona asociada al correo",examples:["Juan Pérez","María García"]},usuario:{type:"string",minLength:1,maxLength:64,pattern:"^[a-zA-Z0-9._%+-]+$",description:"Parte del usuario del correo electrónico (antes del @)",examples:["usuario","juan.perez"]},dominio:{type:"string",minLength:4,maxLength:255,pattern:"^[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$",description:"Dominio del correo electrónico (después del @)",examples:["ejemplo.com","domain.org"]},valido:{type:"boolean",default:!1,description:"Indica si el formato del correo es válido"},verificado:{type:"boolean",default:!1,description:"Indica si el correo ha sido verificado"}},required:["correo"],additionalProperties:!0,title:"Correo Electrónico",description:"Esquema para correos electrónicos"};function p(e,o={}){var[r,a]=e.split("@");return{...o,correo:e,usuario:r.toLowerCase(),dominio:a.toLowerCase()}}export{r as ClasificacionCorreo,m as JoiSchemaCorreo,d as JsonSchemaCorreo,c as MongoSchemaCorreo,c as default,p as parseCorreo};
@@ -1 +1 @@
1
- ((e,o)=>{"object"==typeof exports&&typeof module<"u"?o(exports,require("mongoose"),require("@jysperu/joi-spanish")):"function"==typeof define&&define.amd?define("@jysperu/schema-correo",["exports","mongoose","@jysperu/joi-spanish"],o):o(((e=typeof globalThis<"u"?globalThis:e||self).JCore=e.JCore||{},e.JCore.schema=e.JCore.schema||{},e.JCore.schema.correo={}),e.mongoose,e.Joi)})(this,function(e,o,r){(a={}).TRABAJO="Trabajo",a.PERSONAL="Personal";var a,o=new o.Schema({correo:{type:String,required:[!0,"El correo electrónico es obligatorio"],trim:!0,lowercase:!0,validate:{validator:function(e){return/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(e)},message:"El formato del correo electrónico es inválido"}},tipo:{type:String,default:"Personal",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(a).join(", ")}},nombre:{type:String,trim:!0,maxlength:[100,"El nombre es demasiado largo"],comment:"Nombre de la persona asociada al correo"},usuario:{type:String,trim:!0,lowercase:!0,maxlength:[64,"El usuario es demasiado largo"]},dominio:{type:String,trim:!0,lowercase:!0,maxlength:[255,"El dominio es demasiado largo"]},valido:{type:Boolean,default:!1},verificado:{type:Boolean,default:!1}},{strict:!1,timestamps:!0}),r=r.object({correo:r.string().email({minDomainSegments:2}).trim().lowercase().required().messages({"string.email":"El formato del correo electrónico es inválido","any.required":"El correo electrónico es obligatorio","string.empty":"El correo no puede estar vacío"}),tipo:r.string().trim().min(1).default("Personal").messages({"string.empty":"El tipo no puede estar vacío","string.min":"El tipo debe tener al menos 1 caracter"}),nombre:r.string().trim().max(100).optional().messages({"string.max":"El nombre no puede exceder 100 caracteres"}),usuario:r.string().trim().lowercase().max(64).optional().messages({"string.max":"El usuario no puede exceder 64 caracteres"}),dominio:r.string().trim().lowercase().max(255).optional().messages({"string.max":"El dominio no puede exceder 255 caracteres"}),valido:r.boolean().default(!1),verificado:r.boolean().default(!1)}).options({stripUnknown:!1,allowUnknown:!0}),i={$schema:"http://json-schema.org/draft-07/schema#",type:"object",properties:{correo:{type:"string",format:"email",pattern:"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$",minLength:5,maxLength:320,description:"Dirección de correo electrónico válida"},tipo:{type:"string",minLength:1,maxLength:50,default:"Personal",enum:Object.values(a),description:"Tipo de correo electrónico"},nombre:{type:"string",minLength:1,maxLength:100,description:"Nombre de la persona asociada al correo",examples:["Juan Pérez","María García"]},usuario:{type:"string",minLength:1,maxLength:64,pattern:"^[a-zA-Z0-9._%+-]+$",description:"Parte del usuario del correo electrónico (antes del @)",examples:["usuario","juan.perez"]},dominio:{type:"string",minLength:4,maxLength:255,pattern:"^[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$",description:"Dominio del correo electrónico (después del @)",examples:["ejemplo.com","domain.org"]},valido:{type:"boolean",default:!1,description:"Indica si el formato del correo es válido"},verificado:{type:"boolean",default:!1,description:"Indica si el correo ha sido verificado"}},required:["correo"],additionalProperties:!0,title:"Correo Electrónico",description:"Esquema para correos electrónicos"};e.ClasificacionCorreo=a,e.JoiSchemaCorreo=r,e.JsonSchemaCorreo=i,e.MongoSchemaCorreo=o,e.default=o,Object.defineProperty(e,"__esModule",{value:!0})});
1
+ ((e,o)=>{"object"==typeof exports&&typeof module<"u"?o(exports,require("mongoose"),require("@jysperu/joi-spanish")):"function"==typeof define&&define.amd?define("@jysperu/schema-correo",["exports","mongoose","@jysperu/joi-spanish"],o):o(((e=typeof globalThis<"u"?globalThis:e||self).JCore=e.JCore||{},e.JCore.schema=e.JCore.schema||{},e.JCore.schema.correo={}),e.mongoose,e.Joi)})(this,function(e,o,r){(a={}).TRABAJO="Trabajo",a.PERSONAL="Personal";var a,o=new o.Schema({correo:{type:String,required:[!0,"El correo electrónico es obligatorio"],trim:!0,lowercase:!0,validate:{validator:function(e){return/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(e)},message:"El formato del correo electrónico es inválido"}},tipo:{type:String,default:"Personal",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(a).join(", ")}},nombre:{type:String,trim:!0,maxlength:[100,"El nombre es demasiado largo"],comment:"Nombre de la persona asociada al correo"},usuario:{type:String,trim:!0,lowercase:!0,maxlength:[64,"El usuario es demasiado largo"]},dominio:{type:String,trim:!0,lowercase:!0,maxlength:[255,"El dominio es demasiado largo"]},valido:{type:Boolean,default:!1},verificado:{type:Boolean,default:!1}},{strict:!1,timestamps:!0}),r=r.object({correo:r.string().email({minDomainSegments:2}).trim().lowercase().required().messages({"string.email":"El formato del correo electrónico es inválido","any.required":"El correo electrónico es obligatorio","string.empty":"El correo no puede estar vacío"}),tipo:r.string().trim().min(1).default("Personal").messages({"string.empty":"El tipo no puede estar vacío","string.min":"El tipo debe tener al menos 1 caracter"}),nombre:r.string().trim().max(100).optional().messages({"string.max":"El nombre no puede exceder 100 caracteres"}),usuario:r.string().trim().lowercase().max(64).optional().messages({"string.max":"El usuario no puede exceder 64 caracteres"}),dominio:r.string().trim().lowercase().max(255).optional().messages({"string.max":"El dominio no puede exceder 255 caracteres"}),valido:r.boolean().default(!1),verificado:r.boolean().default(!1)}).options({stripUnknown:!1,allowUnknown:!0}),i={$schema:"http://json-schema.org/draft-07/schema#",type:"object",properties:{correo:{type:"string",format:"email",pattern:"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$",minLength:5,maxLength:320,description:"Dirección de correo electrónico válida"},tipo:{type:"string",minLength:1,maxLength:50,default:"Personal",enum:Object.values(a),description:"Tipo de correo electrónico"},nombre:{type:"string",minLength:1,maxLength:100,description:"Nombre de la persona asociada al correo",examples:["Juan Pérez","María García"]},usuario:{type:"string",minLength:1,maxLength:64,pattern:"^[a-zA-Z0-9._%+-]+$",description:"Parte del usuario del correo electrónico (antes del @)",examples:["usuario","juan.perez"]},dominio:{type:"string",minLength:4,maxLength:255,pattern:"^[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$",description:"Dominio del correo electrónico (después del @)",examples:["ejemplo.com","domain.org"]},valido:{type:"boolean",default:!1,description:"Indica si el formato del correo es válido"},verificado:{type:"boolean",default:!1,description:"Indica si el correo ha sido verificado"}},required:["correo"],additionalProperties:!0,title:"Correo Electrónico",description:"Esquema para correos electrónicos"};e.ClasificacionCorreo=a,e.JoiSchemaCorreo=r,e.JsonSchemaCorreo=i,e.MongoSchemaCorreo=o,e.default=o,e.parseCorreo=function(e,o={}){var[r,a]=e.split("@");return{...o,correo:e,usuario:r.toLowerCase(),dominio:a.toLowerCase()}},Object.defineProperty(e,"__esModule",{value:!0})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jysperu/schema-correo",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "Esquemas para correos electrónicos: Mongoose, JSON Schema y Joi",
5
5
  "keywords": [
6
6
  "mongoose",