@manticore-labs/nest 0.1.2 → 0.1.4

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.
Files changed (72) hide show
  1. package/.idea/workspace.xml +2 -2
  2. package/build/main/index.d.ts +8 -0
  3. package/build/main/index.js +11 -1
  4. package/build/main/lib/modulos-configuracion/base-datos/base-datos.helper.d.ts +3 -3
  5. package/build/main/lib/modulos-configuracion/base-datos/base-datos.helper.js +8 -7
  6. package/build/main/lib/modulos-configuracion/base-datos/base-datos.service.js +5 -5
  7. package/build/main/lib/modulos-configuracion/mlab-swagger/constantes/constantes.d.ts +2 -0
  8. package/build/main/lib/modulos-configuracion/mlab-swagger/constantes/constantes.js +6 -0
  9. package/build/main/lib/modulos-configuracion/mlab-swagger/constantes/esquemas-genericos.d.ts +43 -0
  10. package/build/main/lib/modulos-configuracion/mlab-swagger/constantes/esquemas-genericos.js +59 -0
  11. package/build/main/lib/modulos-configuracion/mlab-swagger/decoradores/atributos/arreglo.d.ts +2 -0
  12. package/build/main/lib/modulos-configuracion/mlab-swagger/decoradores/atributos/arreglo.js +9 -0
  13. package/build/main/lib/modulos-configuracion/mlab-swagger/decoradores/atributos/booleano.d.ts +2 -0
  14. package/build/main/lib/modulos-configuracion/mlab-swagger/decoradores/atributos/booleano.js +9 -0
  15. package/build/main/lib/modulos-configuracion/mlab-swagger/decoradores/atributos/caracter.d.ts +2 -0
  16. package/build/main/lib/modulos-configuracion/mlab-swagger/decoradores/atributos/caracter.js +9 -0
  17. package/build/main/lib/modulos-configuracion/mlab-swagger/decoradores/atributos/decimal.d.ts +2 -0
  18. package/build/main/lib/modulos-configuracion/mlab-swagger/decoradores/atributos/decimal.js +9 -0
  19. package/build/main/lib/modulos-configuracion/mlab-swagger/decoradores/atributos/delegador/delegador-decorador.d.ts +2 -0
  20. package/build/main/lib/modulos-configuracion/mlab-swagger/decoradores/atributos/delegador/delegador-decorador.js +19 -0
  21. package/build/main/lib/modulos-configuracion/mlab-swagger/decoradores/atributos/entero.d.ts +2 -0
  22. package/build/main/lib/modulos-configuracion/mlab-swagger/decoradores/atributos/entero.js +9 -0
  23. package/build/main/lib/modulos-configuracion/mlab-swagger/decoradores/atributos/objeto.d.ts +2 -0
  24. package/build/main/lib/modulos-configuracion/mlab-swagger/decoradores/atributos/objeto.js +9 -0
  25. package/build/main/lib/modulos-configuracion/mlab-swagger/interfaces/plantilla.interface.d.ts +65 -0
  26. package/build/main/lib/modulos-configuracion/mlab-swagger/interfaces/plantilla.interface.js +3 -0
  27. package/build/main/lib/modulos-configuracion/mlab-swagger/mlab-swagger-core.module.d.ts +4 -0
  28. package/build/main/lib/modulos-configuracion/mlab-swagger/mlab-swagger-core.module.js +40 -0
  29. package/build/main/lib/modulos-configuracion/mlab-swagger/mlab-swagger-helper.d.ts +13 -0
  30. package/build/main/lib/modulos-configuracion/mlab-swagger/mlab-swagger-helper.js +86 -0
  31. package/build/main/lib/modulos-configuracion/mlab-swagger/mlab-swagger.module.d.ts +7 -0
  32. package/build/main/lib/modulos-configuracion/mlab-swagger/mlab-swagger.module.js +33 -0
  33. package/build/main/lib/modulos-configuracion/mlab-swagger/mlab-swagger.service.d.ts +5 -0
  34. package/build/main/lib/modulos-configuracion/mlab-swagger/mlab-swagger.service.js +71 -0
  35. package/build/main/lib/modulos-configuracion/mlab-swagger/mlab-swagger.store.d.ts +11 -0
  36. package/build/main/lib/modulos-configuracion/mlab-swagger/mlab-swagger.store.js +48 -0
  37. package/build/module/index.d.ts +8 -0
  38. package/build/module/index.js +11 -1
  39. package/build/module/lib/modulos-configuracion/base-datos/base-datos.helper.d.ts +3 -3
  40. package/build/module/lib/modulos-configuracion/base-datos/base-datos.helper.js +8 -7
  41. package/build/module/lib/modulos-configuracion/base-datos/base-datos.service.js +5 -5
  42. package/build/module/lib/modulos-configuracion/mlab-swagger/constantes/constantes.d.ts +2 -0
  43. package/build/module/lib/modulos-configuracion/mlab-swagger/constantes/constantes.js +3 -0
  44. package/build/module/lib/modulos-configuracion/mlab-swagger/constantes/esquemas-genericos.d.ts +43 -0
  45. package/build/module/lib/modulos-configuracion/mlab-swagger/constantes/esquemas-genericos.js +56 -0
  46. package/build/module/lib/modulos-configuracion/mlab-swagger/decoradores/atributos/arreglo.d.ts +2 -0
  47. package/build/module/lib/modulos-configuracion/mlab-swagger/decoradores/atributos/arreglo.js +5 -0
  48. package/build/module/lib/modulos-configuracion/mlab-swagger/decoradores/atributos/booleano.d.ts +2 -0
  49. package/build/module/lib/modulos-configuracion/mlab-swagger/decoradores/atributos/booleano.js +5 -0
  50. package/build/module/lib/modulos-configuracion/mlab-swagger/decoradores/atributos/caracter.d.ts +2 -0
  51. package/build/module/lib/modulos-configuracion/mlab-swagger/decoradores/atributos/caracter.js +5 -0
  52. package/build/module/lib/modulos-configuracion/mlab-swagger/decoradores/atributos/decimal.d.ts +2 -0
  53. package/build/module/lib/modulos-configuracion/mlab-swagger/decoradores/atributos/decimal.js +5 -0
  54. package/build/module/lib/modulos-configuracion/mlab-swagger/decoradores/atributos/delegador/delegador-decorador.d.ts +2 -0
  55. package/build/module/lib/modulos-configuracion/mlab-swagger/decoradores/atributos/delegador/delegador-decorador.js +18 -0
  56. package/build/module/lib/modulos-configuracion/mlab-swagger/decoradores/atributos/entero.d.ts +2 -0
  57. package/build/module/lib/modulos-configuracion/mlab-swagger/decoradores/atributos/entero.js +5 -0
  58. package/build/module/lib/modulos-configuracion/mlab-swagger/decoradores/atributos/objeto.d.ts +2 -0
  59. package/build/module/lib/modulos-configuracion/mlab-swagger/decoradores/atributos/objeto.js +5 -0
  60. package/build/module/lib/modulos-configuracion/mlab-swagger/interfaces/plantilla.interface.d.ts +65 -0
  61. package/build/module/lib/modulos-configuracion/mlab-swagger/interfaces/plantilla.interface.js +1 -0
  62. package/build/module/lib/modulos-configuracion/mlab-swagger/mlab-swagger-core.module.d.ts +4 -0
  63. package/build/module/lib/modulos-configuracion/mlab-swagger/mlab-swagger-core.module.js +37 -0
  64. package/build/module/lib/modulos-configuracion/mlab-swagger/mlab-swagger-helper.d.ts +13 -0
  65. package/build/module/lib/modulos-configuracion/mlab-swagger/mlab-swagger-helper.js +126 -0
  66. package/build/module/lib/modulos-configuracion/mlab-swagger/mlab-swagger.module.d.ts +7 -0
  67. package/build/module/lib/modulos-configuracion/mlab-swagger/mlab-swagger.module.js +33 -0
  68. package/build/module/lib/modulos-configuracion/mlab-swagger/mlab-swagger.service.d.ts +5 -0
  69. package/build/module/lib/modulos-configuracion/mlab-swagger/mlab-swagger.service.js +86 -0
  70. package/build/module/lib/modulos-configuracion/mlab-swagger/mlab-swagger.store.d.ts +11 -0
  71. package/build/module/lib/modulos-configuracion/mlab-swagger/mlab-swagger.store.js +46 -0
  72. package/package.json +1 -1
@@ -0,0 +1,5 @@
1
+ import { delegarDecorador } from './delegador/delegador-decorador';
2
+ export function PropiedadCaracteres(config) {
3
+ return delegarDecorador('string', config);
4
+ }
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyYWN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL21vZHVsb3MtY29uZmlndXJhY2lvbi9tbGFiLXN3YWdnZXIvZGVjb3JhZG9yZXMvYXRyaWJ1dG9zL2NhcmFjdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBRWpFLE1BQU0sVUFBVSxtQkFBbUIsQ0FDL0IsTUFBd0I7SUFFeEIsT0FBTyxnQkFBZ0IsQ0FDbkIsUUFBUSxFQUNSLE1BQU0sQ0FDVCxDQUFDO0FBQ04sQ0FBQyJ9
@@ -0,0 +1,2 @@
1
+ import { EsquemaNumerico } from '../../interfaces/plantilla.interface';
2
+ export declare function PropiedadDecimal(config: EsquemaNumerico): (target: any, nombrePropiedad: string | symbol) => void;
@@ -0,0 +1,5 @@
1
+ import { delegarDecorador } from './delegador/delegador-decorador';
2
+ export function PropiedadDecimal(config) {
3
+ return delegarDecorador('number', config);
4
+ }
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjaW1hbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvbW9kdWxvcy1jb25maWd1cmFjaW9uL21sYWItc3dhZ2dlci9kZWNvcmFkb3Jlcy9hdHJpYnV0b3MvZGVjaW1hbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUVqRSxNQUFNLFVBQVUsZ0JBQWdCLENBQzVCLE1BQXVCO0lBRXZCLE9BQU8sZ0JBQWdCLENBQ25CLFFBQVEsRUFDUixNQUFNLENBQ1QsQ0FBQztBQUNOLENBQUMifQ==
@@ -0,0 +1,2 @@
1
+ import { Esquema, Tipo } from '../../../../../..';
2
+ export declare function delegarDecorador<T extends Esquema>(nombreTipo: Tipo, config: T): (target: any, nombrePropiedad: string | symbol) => void;
@@ -0,0 +1,18 @@
1
+ import { MlabSwaggerStore } from '../../../mlab-swagger.store';
2
+ import { API_BODY_METADATA } from '../../../constantes/constantes';
3
+ export function delegarDecorador(nombreTipo, config) {
4
+ return (target, nombrePropiedad) => {
5
+ const nombreEsquema = target.constructor.name;
6
+ config.tipo = nombreTipo;
7
+ config.propietario = nombreEsquema;
8
+ const parametroParaAgregar = {};
9
+ parametroParaAgregar[nombrePropiedad] = config;
10
+ const parametrosAnteriores = Reflect.getMetadata(API_BODY_METADATA, target);
11
+ Reflect.defineMetadata(API_BODY_METADATA, {
12
+ ...parametrosAnteriores,
13
+ ...parametroParaAgregar,
14
+ }, target);
15
+ MlabSwaggerStore.agregarMetadatos(target);
16
+ };
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZWdhZG9yLWRlY29yYWRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvbW9kdWxvcy1jb25maWd1cmFjaW9uL21sYWItc3dhZ2dlci9kZWNvcmFkb3Jlcy9hdHJpYnV0b3MvZGVsZWdhZG9yL2RlbGVnYWRvci1kZWNvcmFkb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFFakUsTUFBTSxVQUFVLGdCQUFnQixDQUM1QixVQUFnQixFQUNoQixNQUFTO0lBRVQsT0FBTyxDQUFDLE1BQVcsRUFBRSxlQUFnQyxFQUFFLEVBQUU7UUFDckQsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDOUMsTUFBTSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7UUFDekIsTUFBTSxDQUFDLFdBQVcsR0FBRyxhQUFhLENBQUM7UUFDbkMsTUFBTSxvQkFBb0IsR0FBRyxFQUFFLENBQUM7UUFDaEMsb0JBQW9CLENBQUMsZUFBZSxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBQy9DLE1BQU0sb0JBQW9CLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM1RSxPQUFPLENBQUMsY0FBYyxDQUNsQixpQkFBaUIsRUFDakI7WUFDSSxHQUFHLG9CQUFvQjtZQUN2QixHQUFHLG9CQUFvQjtTQUMxQixFQUNELE1BQU0sQ0FDVCxDQUFDO1FBQ0YsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQyJ9
@@ -0,0 +1,2 @@
1
+ import { EsquemaNumerico } from '../../interfaces/plantilla.interface';
2
+ export declare function PropiedadEntero(config: EsquemaNumerico): (target: any, nombrePropiedad: string | symbol) => void;
@@ -0,0 +1,5 @@
1
+ import { delegarDecorador } from './delegador/delegador-decorador';
2
+ export function PropiedadEntero(config) {
3
+ return delegarDecorador('integer', config);
4
+ }
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50ZXJvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9tb2R1bG9zLWNvbmZpZ3VyYWNpb24vbWxhYi1zd2FnZ2VyL2RlY29yYWRvcmVzL2F0cmlidXRvcy9lbnRlcm8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFFakUsTUFBTSxVQUFVLGVBQWUsQ0FDM0IsTUFBdUI7SUFFdkIsT0FBTyxnQkFBZ0IsQ0FDbkIsU0FBUyxFQUNULE1BQU0sQ0FDVCxDQUFDO0FBQ04sQ0FBQyJ9
@@ -0,0 +1,2 @@
1
+ import { EsquemaObjeto } from '../../interfaces/plantilla.interface';
2
+ export declare function PropiedadObjeto(config: EsquemaObjeto): (target: any, nombrePropiedad: string | symbol) => void;
@@ -0,0 +1,5 @@
1
+ import { delegarDecorador } from './delegador/delegador-decorador';
2
+ export function PropiedadObjeto(config) {
3
+ return delegarDecorador('object', config);
4
+ }
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZXRvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9tb2R1bG9zLWNvbmZpZ3VyYWNpb24vbWxhYi1zd2FnZ2VyL2RlY29yYWRvcmVzL2F0cmlidXRvcy9vYmpldG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFFakUsTUFBTSxVQUFVLGVBQWUsQ0FDM0IsTUFBcUI7SUFFckIsT0FBTyxnQkFBZ0IsQ0FDbkIsUUFBUSxFQUNSLE1BQU0sQ0FDVCxDQUFDO0FBQ04sQ0FBQyJ9
@@ -0,0 +1,65 @@
1
+ import { ReferenceObject, ResponsesObject, SecuritySchemeObject } from '@nestjs/swagger/dist/interfaces/open-api-spec.interface';
2
+ import { PrincipalDto } from '../../../principal.dto';
3
+ export declare type Tipo = ('string' | 'number' | 'object' | 'array' | 'integer' | 'boolean') & string;
4
+ export interface Esquema {
5
+ tipo?: Tipo | Tipo[];
6
+ ejemplo?: any;
7
+ propietario?: string;
8
+ requerido?: boolean;
9
+ }
10
+ export interface EsquemaNumerico extends Esquema {
11
+ multipleOf?: number;
12
+ minimum?: number;
13
+ maximum?: number;
14
+ exclusiveMinimum?: boolean;
15
+ exclusiveMaximum?: boolean;
16
+ }
17
+ export interface EsquemaCarateres extends Esquema {
18
+ minLength?: number;
19
+ maxLength?: number;
20
+ pattern?: string;
21
+ }
22
+ export interface EsquemaArray extends Esquema {
23
+ minItems?: number;
24
+ maxItems?: number;
25
+ }
26
+ export interface EsquemaObjeto extends Esquema {
27
+ anidado: string | typeof PrincipalDto | Function;
28
+ }
29
+ export interface MetodosCrud {
30
+ crearUno: EsquemaMetodoCrud;
31
+ actualizarUno?: EsquemaMetodoCrud;
32
+ buscarUno?: EsquemaMetodoCrud;
33
+ borrarUno?: EsquemaMetodoCrud;
34
+ buscarTodos?: EsquemaMetodoCrud;
35
+ }
36
+ export interface RespuestaInterface {
37
+ ok?: ResponsesObject;
38
+ noPermisos?: any;
39
+ parametrosInvalidos?: any;
40
+ errorServidor?: any;
41
+ }
42
+ export interface EsquemaMetodoCrud {
43
+ descripcion?: string;
44
+ respuestas?: ResponsesObject;
45
+ cabeceras?: any[];
46
+ }
47
+ export interface MetaEsquema {
48
+ nombre: string;
49
+ definicion: Record<string, Esquema>;
50
+ camposRequeridos?: string[];
51
+ }
52
+ export interface PlantillaInterface {
53
+ path: string;
54
+ titulo: string;
55
+ version: string;
56
+ metodosCrud: MetodosCrud;
57
+ esquemas: {
58
+ crear: string | typeof PrincipalDto;
59
+ editar: string | typeof PrincipalDto;
60
+ };
61
+ esquemaSeguridad?: Record<string, SecuritySchemeObject | ReferenceObject>;
62
+ protegerRutas?: boolean;
63
+ modulo: any;
64
+ }
65
+ export declare type PrePlantilla = Omit<PlantillaInterface, 'modulo'>;
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhbnRpbGxhLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvbW9kdWxvcy1jb25maWd1cmFjaW9uL21sYWItc3dhZ2dlci9pbnRlcmZhY2VzL3BsYW50aWxsYS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -0,0 +1,4 @@
1
+ import { DynamicModule } from '@nestjs/common';
2
+ export declare class MlabSwaggerCoreModule {
3
+ static forRoot(raiz?: string): DynamicModule;
4
+ }
@@ -0,0 +1,37 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var MlabSwaggerCoreModule_1;
8
+ import { Global, Module } from '@nestjs/common';
9
+ import { MlabSwaggerService } from './mlab-swagger.service';
10
+ import { MlabSwaggerStore } from './mlab-swagger.store';
11
+ let MlabSwaggerCoreModule = MlabSwaggerCoreModule_1 = class MlabSwaggerCoreModule {
12
+ static forRoot(raiz = 'api') {
13
+ MlabSwaggerStore.pathRaiz = raiz;
14
+ return {
15
+ module: MlabSwaggerCoreModule_1,
16
+ providers: [
17
+ MlabSwaggerService,
18
+ ],
19
+ exports: [
20
+ MlabSwaggerService,
21
+ ],
22
+ };
23
+ }
24
+ };
25
+ MlabSwaggerCoreModule = MlabSwaggerCoreModule_1 = __decorate([
26
+ Global(),
27
+ Module({
28
+ providers: [
29
+ MlabSwaggerService,
30
+ ],
31
+ exports: [
32
+ MlabSwaggerService,
33
+ ],
34
+ })
35
+ ], MlabSwaggerCoreModule);
36
+ export { MlabSwaggerCoreModule };
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWxhYi1zd2FnZ2VyLWNvcmUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9tb2R1bG9zLWNvbmZpZ3VyYWNpb24vbWxhYi1zd2FnZ2VyL21sYWItc3dhZ2dlci1jb3JlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsT0FBTyxFQUFnQixNQUFNLEVBQUUsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0QsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFhdEQsSUFBYSxxQkFBcUIsNkJBQWxDLE1BQWEscUJBQXFCO0lBQzlCLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBZSxLQUFLO1FBQy9CLGdCQUFnQixDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDakMsT0FBTztZQUNILE1BQU0sRUFBRSx1QkFBcUI7WUFDN0IsU0FBUyxFQUFFO2dCQUNQLGtCQUFrQjthQUNyQjtZQUNELE9BQU8sRUFBRTtnQkFDTCxrQkFBa0I7YUFDckI7U0FDSixDQUFDO0lBQ04sQ0FBQztDQUNKLENBQUE7QUFiWSxxQkFBcUI7SUFYakMsTUFBTSxFQUFFO0lBQ1IsTUFBTSxDQUNIO1FBQ0ksU0FBUyxFQUFFO1lBQ1Asa0JBQWtCO1NBQ3JCO1FBQ0QsT0FBTyxFQUFFO1lBQ0wsa0JBQWtCO1NBQ3JCO0tBQ0osQ0FDSjtHQUNZLHFCQUFxQixDQWFqQztTQWJZLHFCQUFxQiJ9
@@ -0,0 +1,13 @@
1
+ import { MetaEsquema } from './interfaces/plantilla.interface';
2
+ import { OperationObject, PathItemObject, ReferenceObject, SchemaObject } from '@nestjs/swagger/dist/interfaces/open-api-spec.interface';
3
+ export declare class MlabSwaggerHelper {
4
+ static empaquetarEsquema(metaEsquema: MetaEsquema): Record<string, SchemaObject | ReferenceObject>;
5
+ static generarMetodoPostPutPatch(descripcion: string, esquemaEditar: Record<string, SchemaObject | ReferenceObject>, nombreEsquema: string): OperationObject;
6
+ static generarPathConId(metodoEditarUno: OperationObject, titulo: string, seguridad?: boolean): Record<string, PathItemObject>;
7
+ static generarPathSinId(metodoCrearUno: OperationObject, titulo: string, seguridad?: boolean): Record<string, PathItemObject>;
8
+ static generarTags(titulo: string): {
9
+ tags: {
10
+ description: string;
11
+ }[];
12
+ };
13
+ }
@@ -0,0 +1,126 @@
1
+ import { pickBy } from 'lodash';
2
+ import { ESQUEMA_PATH, ESQUEMA_QUERY, RESPUESTAS_HTTP, SEGURIDAD_PATH_GENERICA } from './constantes/esquemas-genericos';
3
+ import { MlabSwaggerStore } from './mlab-swagger.store';
4
+ export class MlabSwaggerHelper {
5
+ // Empaquetar esquemas
6
+ static empaquetarEsquema(metaEsquema) {
7
+ const esquema = metaEsquema.definicion;
8
+ const atributos = Object.keys(esquema);
9
+ const esquemaTransformadoInicial = {};
10
+ const propieades = atributos.reduce((acumulador, atributo) => {
11
+ const definicionTipo = esquema[atributo];
12
+ const esquemaDefinido = esquema[atributo];
13
+ const esObjeto = definicionTipo.tipo === 'object';
14
+ if (esObjeto) {
15
+ const esquemaObjeto = definicionTipo;
16
+ const referenciaEsquema = esquemaObjeto.anidado;
17
+ const nombreEsquema = typeof referenciaEsquema === 'string' ? referenciaEsquema : referenciaEsquema.name;
18
+ const esquemaAnidado = MlabSwaggerStore.obtenerEsquema(nombreEsquema);
19
+ acumulador[atributo] = {
20
+ ...MlabSwaggerHelper.empaquetarEsquema(esquemaAnidado)[nombreEsquema],
21
+ };
22
+ }
23
+ else {
24
+ acumulador[atributo] = {
25
+ type: definicionTipo.tipo.toString(),
26
+ maxLength: esquemaDefinido.maxLength,
27
+ minLength: esquemaDefinido.minLength,
28
+ maximum: esquemaDefinido.maximum,
29
+ minimum: esquemaDefinido.minimum,
30
+ exclusiveMaximum: esquemaDefinido.exclusiveMaximum,
31
+ exclusiveMinimum: esquemaDefinido.exclusiveMinimum,
32
+ minItems: esquemaDefinido.minItems,
33
+ maxItems: esquemaDefinido.maxItems,
34
+ pattern: esquemaDefinido.pattern,
35
+ };
36
+ acumulador[atributo] = pickBy(acumulador[atributo], v => v !== undefined);
37
+ }
38
+ return acumulador;
39
+ }, {});
40
+ esquemaTransformadoInicial[`${metaEsquema.nombre}`] = {
41
+ type: 'object',
42
+ properties: {
43
+ ...propieades,
44
+ },
45
+ required: metaEsquema.camposRequeridos,
46
+ };
47
+ esquemaTransformadoInicial[`${metaEsquema.nombre}`] = pickBy(esquemaTransformadoInicial[`${metaEsquema.nombre}`], v => v !== undefined);
48
+ return esquemaTransformadoInicial;
49
+ }
50
+ static generarMetodoPostPutPatch(descripcion, esquemaEditar, nombreEsquema) {
51
+ return {
52
+ description: descripcion,
53
+ requestBody: {
54
+ content: {
55
+ 'application/json': {
56
+ schema: {
57
+ ...esquemaEditar[`${nombreEsquema}`],
58
+ },
59
+ },
60
+ },
61
+ },
62
+ responses: {
63
+ ...RESPUESTAS_HTTP,
64
+ },
65
+ };
66
+ }
67
+ static generarPathConId(metodoEditarUno, titulo, seguridad = false) {
68
+ return {
69
+ get: {
70
+ ...ESQUEMA_PATH,
71
+ ...pickBy(SEGURIDAD_PATH_GENERICA, _ => seguridad),
72
+ responses: {
73
+ ...RESPUESTAS_HTTP,
74
+ },
75
+ ...MlabSwaggerHelper.generarTags(titulo),
76
+ },
77
+ put: {
78
+ ...metodoEditarUno,
79
+ ...ESQUEMA_PATH,
80
+ ...pickBy(SEGURIDAD_PATH_GENERICA, _ => seguridad),
81
+ responses: {
82
+ ...RESPUESTAS_HTTP,
83
+ },
84
+ ...MlabSwaggerHelper.generarTags(titulo),
85
+ },
86
+ delete: {
87
+ ...ESQUEMA_PATH,
88
+ ...pickBy(SEGURIDAD_PATH_GENERICA, _ => seguridad),
89
+ responses: {
90
+ ...RESPUESTAS_HTTP,
91
+ },
92
+ ...MlabSwaggerHelper.generarTags(titulo),
93
+ },
94
+ };
95
+ }
96
+ static generarPathSinId(metodoCrearUno, titulo, seguridad = false) {
97
+ return {
98
+ get: {
99
+ ...ESQUEMA_QUERY,
100
+ ...pickBy(SEGURIDAD_PATH_GENERICA, _ => seguridad),
101
+ responses: {
102
+ ...RESPUESTAS_HTTP,
103
+ },
104
+ ...MlabSwaggerHelper.generarTags(titulo),
105
+ },
106
+ post: {
107
+ ...metodoCrearUno,
108
+ ...pickBy(SEGURIDAD_PATH_GENERICA, _ => seguridad),
109
+ responses: {
110
+ ...RESPUESTAS_HTTP,
111
+ },
112
+ ...MlabSwaggerHelper.generarTags(titulo),
113
+ },
114
+ };
115
+ }
116
+ static generarTags(titulo) {
117
+ return {
118
+ tags: [
119
+ {
120
+ description: `CRUD de "${titulo.toLowerCase()}"`,
121
+ },
122
+ ],
123
+ };
124
+ }
125
+ }
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWxhYi1zd2FnZ2VyLWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvbW9kdWxvcy1jb25maWd1cmFjaW9uL21sYWItc3dhZ2dlci9tbGFiLXN3YWdnZXItaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFDOUIsT0FBTyxFQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLHVCQUF1QixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDdEgsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFdEQsTUFBTSxPQUFPLGlCQUFpQjtJQUMxQixzQkFBc0I7SUFDdEIsTUFBTSxDQUFDLGlCQUFpQixDQUFDLFdBQXdCO1FBQzdDLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUM7UUFDdkMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QyxNQUFNLDBCQUEwQixHQUFHLEVBQUUsQ0FBQztRQUN0QyxNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUMvQixDQUFDLFVBQW1FLEVBQUUsUUFBZ0IsRUFBRSxFQUFFO1lBQ3RGLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN6QyxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUEyQixDQUFDO1lBQ3BFLE1BQU0sUUFBUSxHQUFHLGNBQWMsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDO1lBQ2xELElBQUksUUFBUSxFQUFFO2dCQUNWLE1BQU0sYUFBYSxHQUFJLGNBQWdDLENBQUM7Z0JBQ3hELE1BQU0saUJBQWlCLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQztnQkFDaEQsTUFBTSxhQUFhLEdBQUcsT0FBTyxpQkFBaUIsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7Z0JBQ3pHLE1BQU0sY0FBYyxHQUFHLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDdEUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHO29CQUNuQixHQUFHLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxDQUFDLGFBQWEsQ0FBQztpQkFDeEUsQ0FBQzthQUNMO2lCQUFNO2dCQUNILFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRztvQkFDbkIsSUFBSSxFQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO29CQUNwQyxTQUFTLEVBQUUsZUFBZSxDQUFDLFNBQVM7b0JBQ3BDLFNBQVMsRUFBRSxlQUFlLENBQUMsU0FBUztvQkFDcEMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxPQUFPO29CQUNoQyxPQUFPLEVBQUUsZUFBZSxDQUFDLE9BQU87b0JBQ2hDLGdCQUFnQixFQUFFLGVBQWUsQ0FBQyxnQkFBZ0I7b0JBQ2xELGdCQUFnQixFQUFFLGVBQWUsQ0FBQyxnQkFBZ0I7b0JBQ2xELFFBQVEsRUFBRSxlQUFlLENBQUMsUUFBUTtvQkFDbEMsUUFBUSxFQUFFLGVBQWUsQ0FBQyxRQUFRO29CQUNsQyxPQUFPLEVBQUUsZUFBZSxDQUFDLE9BQU87aUJBQ25DLENBQUM7Z0JBQ0YsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUM7YUFDN0U7WUFDRCxPQUFPLFVBQVUsQ0FBQztRQUN0QixDQUFDLEVBQUUsRUFBRSxDQUNSLENBQUM7UUFDRiwwQkFBMEIsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHO1lBQ2xELElBQUksRUFBRSxRQUFRO1lBQ2QsVUFBVSxFQUFFO2dCQUNSLEdBQUcsVUFBVTthQUNoQjtZQUNELFFBQVEsRUFBRSxXQUFXLENBQUMsZ0JBQWdCO1NBQ3pDLENBQUM7UUFDRiwwQkFBMEIsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDO1FBQ3hJLE9BQU8sMEJBQTBCLENBQUM7SUFDdEMsQ0FBQztJQUVELE1BQU0sQ0FBQyx5QkFBeUIsQ0FDNUIsV0FBbUIsRUFBRSxhQUE2RCxFQUFFLGFBQXFCO1FBRXpHLE9BQU87WUFDSCxXQUFXLEVBQUUsV0FBVztZQUN4QixXQUFXLEVBQUU7Z0JBQ1QsT0FBTyxFQUFFO29CQUNMLGtCQUFrQixFQUFFO3dCQUNoQixNQUFNLEVBQUU7NEJBQ0osR0FBRyxhQUFhLENBQUMsR0FBRyxhQUFhLEVBQUUsQ0FBQzt5QkFDdkM7cUJBQ0o7aUJBQ0o7YUFDSjtZQUNELFNBQVMsRUFBRTtnQkFDUCxHQUFHLGVBQWU7YUFDckI7U0FDSixDQUFDO0lBQ04sQ0FBQztJQUVELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFnQyxFQUFFLE1BQWMsRUFBRSxZQUFxQixLQUFLO1FBQ2hHLE9BQU87WUFDSCxHQUFHLEVBQUU7Z0JBQ0QsR0FBRyxZQUFZO2dCQUNmLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDO2dCQUNsRCxTQUFTLEVBQUU7b0JBQ1AsR0FBRyxlQUFlO2lCQUNyQjtnQkFDRCxHQUFHLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7YUFDM0M7WUFDRCxHQUFHLEVBQUU7Z0JBQ0QsR0FBRyxlQUFlO2dCQUNsQixHQUFHLFlBQVk7Z0JBQ2YsR0FBRyxNQUFNLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7Z0JBQ2xELFNBQVMsRUFBRTtvQkFDUCxHQUFHLGVBQWU7aUJBQ3JCO2dCQUNELEdBQUcsaUJBQWlCLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQzthQUMzQztZQUNELE1BQU0sRUFBRTtnQkFDSixHQUFHLFlBQVk7Z0JBQ2YsR0FBRyxNQUFNLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7Z0JBQ2xELFNBQVMsRUFBRTtvQkFDUCxHQUFHLGVBQWU7aUJBQ3JCO2dCQUNELEdBQUcsaUJBQWlCLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQzthQUMzQztTQUM4QixDQUFDO0lBQ3hDLENBQUM7SUFFRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsY0FBK0IsRUFBRSxNQUFjLEVBQUUsWUFBcUIsS0FBSztRQUMvRixPQUFPO1lBQ0gsR0FBRyxFQUFFO2dCQUNELEdBQUcsYUFBYTtnQkFDaEIsR0FBRyxNQUFNLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7Z0JBQ2xELFNBQVMsRUFBRTtvQkFDUCxHQUFHLGVBQWU7aUJBQ3JCO2dCQUNELEdBQUcsaUJBQWlCLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQzthQUMzQztZQUNELElBQUksRUFBRTtnQkFDRixHQUFHLGNBQWM7Z0JBQ2pCLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDO2dCQUNsRCxTQUFTLEVBQUU7b0JBQ1AsR0FBRyxlQUFlO2lCQUNyQjtnQkFDRCxHQUFHLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7YUFDM0M7U0FDOEIsQ0FBQztJQUN4QyxDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFjO1FBQzdCLE9BQU87WUFDSCxJQUFJLEVBQUU7Z0JBQ0Y7b0JBQ0ksV0FBVyxFQUFFLFlBQVksTUFBTSxDQUFDLFdBQVcsRUFBRSxHQUFHO2lCQUNuRDthQUNKO1NBQ0osQ0FBQztJQUNOLENBQUM7Q0FDSiJ9
@@ -0,0 +1,7 @@
1
+ import { DynamicModule, INestApplication } from '@nestjs/common';
2
+ import { PrePlantilla } from './interfaces/plantilla.interface';
3
+ export declare class MlabSwaggerModule {
4
+ static registrar(moduloRef: any, opciones: PrePlantilla): typeof MlabSwaggerModule;
5
+ static porRaiz(pathRaiz?: string): DynamicModule;
6
+ static setup(app: INestApplication): void;
7
+ }
@@ -0,0 +1,33 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var MlabSwaggerModule_1;
8
+ import { Global, Module } from '@nestjs/common';
9
+ import { MlabSwaggerStore } from './mlab-swagger.store';
10
+ import { MlabSwaggerCoreModule } from './mlab-swagger-core.module';
11
+ import { MlabSwaggerService } from './mlab-swagger.service';
12
+ let MlabSwaggerModule = MlabSwaggerModule_1 = class MlabSwaggerModule {
13
+ static registrar(moduloRef, opciones) {
14
+ const opcionesCompletas = {
15
+ modulo: moduloRef,
16
+ ...opciones,
17
+ };
18
+ MlabSwaggerStore.agregarEsquemas(opcionesCompletas);
19
+ return MlabSwaggerModule_1;
20
+ }
21
+ static porRaiz(pathRaiz = 'api') {
22
+ return MlabSwaggerCoreModule.forRoot(pathRaiz);
23
+ }
24
+ static setup(app) {
25
+ MlabSwaggerService.construirAPI(app);
26
+ }
27
+ };
28
+ MlabSwaggerModule = MlabSwaggerModule_1 = __decorate([
29
+ Global(),
30
+ Module({})
31
+ ], MlabSwaggerModule);
32
+ export { MlabSwaggerModule };
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWxhYi1zd2FnZ2VyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvbW9kdWxvcy1jb25maWd1cmFjaW9uL21sYWItc3dhZ2dlci9tbGFiLXN3YWdnZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxPQUFPLEVBQWdCLE1BQU0sRUFBb0IsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFakUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFNMUQsSUFBYSxpQkFBaUIseUJBQTlCLE1BQWEsaUJBQWlCO0lBQzFCLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBYyxFQUFFLFFBQXNCO1FBQ25ELE1BQU0saUJBQWlCLEdBQXVCO1lBQzFDLE1BQU0sRUFBRSxTQUFTO1lBQ2pCLEdBQUcsUUFBUTtTQUNkLENBQUM7UUFDRixnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNwRCxPQUFPLG1CQUFpQixDQUFDO0lBQzdCLENBQUM7SUFFRCxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQW1CLEtBQUs7UUFDbkMsT0FBTyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBcUI7UUFDOUIsa0JBQWtCLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7Q0FDSixDQUFBO0FBakJZLGlCQUFpQjtJQUo3QixNQUFNLEVBQUU7SUFDUixNQUFNLENBQ0gsRUFBRSxDQUNMO0dBQ1ksaUJBQWlCLENBaUI3QjtTQWpCWSxpQkFBaUIifQ==
@@ -0,0 +1,5 @@
1
+ import { INestApplication } from '@nestjs/common';
2
+ export declare class MlabSwaggerService {
3
+ static construirAPI(app: INestApplication): void;
4
+ private static generarDocumentacion;
5
+ }
@@ -0,0 +1,86 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var MlabSwaggerService_1;
8
+ import { Injectable } from '@nestjs/common';
9
+ import { MlabSwaggerStore } from './mlab-swagger.store';
10
+ import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger';
11
+ import { MlabSwaggerHelper } from './mlab-swagger-helper';
12
+ import { ESQUEMA_SEGURIDAD_GENERICO, } from './constantes/esquemas-genericos';
13
+ import { isUndefined, negate, pickBy } from 'lodash';
14
+ let MlabSwaggerService = MlabSwaggerService_1 = class MlabSwaggerService {
15
+ static construirAPI(app) {
16
+ for (const esquema of MlabSwaggerStore.obtenerEsquemas) {
17
+ // logica para crear documentacion
18
+ const documento = MlabSwaggerService_1.generarDocumentacion(esquema);
19
+ const optionsGenericas = new DocumentBuilder()
20
+ .setTitle(esquema.titulo)
21
+ .build();
22
+ const documentoGenerico = SwaggerModule.createDocument(app, optionsGenericas, {
23
+ include: [esquema.modulo],
24
+ });
25
+ documentoGenerico.paths = {
26
+ ...documentoGenerico.paths,
27
+ ...documento.paths,
28
+ };
29
+ documentoGenerico.security = {
30
+ ...documentoGenerico.security,
31
+ ...documento.security,
32
+ };
33
+ documentoGenerico.components.schemas = {
34
+ ...documentoGenerico.components.schemas,
35
+ ...documento.components.schemas,
36
+ };
37
+ SwaggerModule.setup(`${MlabSwaggerStore.pathRaiz}${esquema.path}`, app, documentoGenerico, { explorer: true });
38
+ }
39
+ }
40
+ static generarDocumentacion(plantilla) {
41
+ const esquemaSeguridad = {
42
+ securitySchemes: {
43
+ ...ESQUEMA_SEGURIDAD_GENERICO,
44
+ ...pickBy(plantilla.esquemaSeguridad, negate(isUndefined)),
45
+ },
46
+ };
47
+ const documentoPlantillaBase = {
48
+ openapi: '3.0.0',
49
+ paths: {},
50
+ info: {
51
+ title: `${plantilla.titulo}`,
52
+ version: `${plantilla.version}`,
53
+ },
54
+ components: {
55
+ ...pickBy(esquemaSeguridad, _ => plantilla.protegerRutas),
56
+ schemas: {},
57
+ },
58
+ };
59
+ const nombreEsquemaCrear = typeof plantilla.esquemas.crear === 'string' ? plantilla.esquemas.crear : plantilla.esquemas.crear.name;
60
+ const nombreEsquemaEditar = typeof plantilla.esquemas.editar === 'string' ? plantilla.esquemas.editar : plantilla.esquemas.editar.name;
61
+ // Se obtienen los meta esquemas almacenados en el store por los decoradores
62
+ const metaEsquemaCrear = MlabSwaggerStore.obtenerEsquema(nombreEsquemaCrear);
63
+ const metaEsquemaEditar = MlabSwaggerStore.obtenerEsquema(nombreEsquemaEditar);
64
+ const esquemaCrear = MlabSwaggerHelper
65
+ .empaquetarEsquema(metaEsquemaCrear);
66
+ const esquemaEditar = MlabSwaggerHelper
67
+ .empaquetarEsquema(metaEsquemaEditar);
68
+ const metodoCrearUno = MlabSwaggerHelper.generarMetodoPostPutPatch(plantilla.metodosCrud.crearUno.descripcion, esquemaCrear, metaEsquemaCrear.nombre);
69
+ const metodoEditarUno = MlabSwaggerHelper.generarMetodoPostPutPatch(plantilla.metodosCrud.actualizarUno.descripcion, esquemaEditar, metaEsquemaEditar.nombre);
70
+ documentoPlantillaBase.paths[`${plantilla.path}`] = MlabSwaggerHelper
71
+ .generarPathSinId(metodoCrearUno, plantilla.titulo, plantilla.protegerRutas);
72
+ documentoPlantillaBase.paths[`${plantilla.path}/{id}`] = MlabSwaggerHelper
73
+ .generarPathConId(metodoEditarUno, plantilla.titulo, plantilla.protegerRutas);
74
+ documentoPlantillaBase.components.schemas = {
75
+ ...esquemaCrear,
76
+ ...esquemaEditar,
77
+ };
78
+ // console.log(JSON.stringify(documentoPlantillaBase));
79
+ return documentoPlantillaBase;
80
+ }
81
+ };
82
+ MlabSwaggerService = MlabSwaggerService_1 = __decorate([
83
+ Injectable()
84
+ ], MlabSwaggerService);
85
+ export { MlabSwaggerService };
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWxhYi1zd2FnZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL21vZHVsb3MtY29uZmlndXJhY2lvbi9tbGFiLXN3YWdnZXIvbWxhYi1zd2FnZ2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLE9BQU8sRUFBbUIsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFDLGVBQWUsRUFBaUIsYUFBYSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFOUUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUNILDBCQUEwQixHQUM3QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUduRCxJQUFhLGtCQUFrQiwwQkFBL0IsTUFBYSxrQkFBa0I7SUFFM0IsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFxQjtRQUNyQyxLQUFLLE1BQU0sT0FBTyxJQUFJLGdCQUFnQixDQUFDLGVBQWUsRUFBRTtZQUNwRCxrQ0FBa0M7WUFDbEMsTUFBTSxTQUFTLEdBQUcsb0JBQWtCLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbkUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGVBQWUsRUFBRTtpQkFDekMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7aUJBQ3hCLEtBQUssRUFBRSxDQUFDO1lBQ2IsTUFBTSxpQkFBaUIsR0FBRyxhQUFhLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDMUUsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQzthQUM1QixDQUFDLENBQUM7WUFDSCxpQkFB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
@@ -0,0 +1,11 @@
1
+ import { MetaEsquema, PlantillaInterface } from './interfaces/plantilla.interface';
2
+ export declare class MlabSwaggerStore {
3
+ private static readonly esquemas;
4
+ static pathRaiz: string;
5
+ static metadatos: any[];
6
+ static propiedadesBrutas: any[];
7
+ static agregarMetadatos(target: any): void;
8
+ static agregarEsquemas(esquema: PlantillaInterface): void;
9
+ static get obtenerEsquemas(): PlantillaInterface[];
10
+ static obtenerEsquema(nombreEsquema: string): MetaEsquema;
11
+ }
@@ -0,0 +1,46 @@
1
+ import { API_BODY_METADATA } from './constantes/constantes';
2
+ export class MlabSwaggerStore {
3
+ static agregarMetadatos(target) {
4
+ const nombreClase = target.constructor.name;
5
+ const nombresClases = MlabSwaggerStore.metadatos.map(t => t.constructor.name);
6
+ const yaFueAgregado = nombresClases.some(nombre => nombre === nombreClase);
7
+ if (!yaFueAgregado) {
8
+ MlabSwaggerStore.metadatos.push(target);
9
+ }
10
+ }
11
+ static agregarEsquemas(esquema) {
12
+ this.esquemas.push(esquema);
13
+ }
14
+ static get obtenerEsquemas() {
15
+ return this.esquemas;
16
+ }
17
+ static obtenerEsquema(nombreEsquema) {
18
+ const propiedadesBrutas = MlabSwaggerStore.metadatos.map((target) => {
19
+ return Reflect.getMetadata(API_BODY_METADATA, target);
20
+ });
21
+ const preEsquemas = propiedadesBrutas.filter((preEsquema) => {
22
+ const llave = Object.keys(preEsquema)[0];
23
+ const esquema = preEsquema[llave];
24
+ return esquema.propietario === nombreEsquema;
25
+ });
26
+ const esquemaEntidad = preEsquemas[0];
27
+ const campos = Object.keys(esquemaEntidad);
28
+ const requeridos = campos.filter((campo) => {
29
+ return esquemaEntidad[campo].requerido;
30
+ });
31
+ return {
32
+ nombre: nombreEsquema,
33
+ definicion: {
34
+ ...preEsquemas[0],
35
+ },
36
+ camposRequeridos: [
37
+ ...requeridos,
38
+ ],
39
+ };
40
+ }
41
+ }
42
+ MlabSwaggerStore.esquemas = [];
43
+ MlabSwaggerStore.pathRaiz = 'api';
44
+ MlabSwaggerStore.metadatos = [];
45
+ MlabSwaggerStore.propiedadesBrutas = [];
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWxhYi1zd2FnZ2VyLnN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9tb2R1bG9zLWNvbmZpZ3VyYWNpb24vbWxhYi1zd2FnZ2VyL21sYWItc3dhZ2dlci5zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUUxRCxNQUFNLE9BQU8sZ0JBQWdCO0lBT3pCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNO1FBQzFCLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQzVDLE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlFLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEtBQUssV0FBVyxDQUFDLENBQUM7UUFDM0UsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNoQixnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzNDO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsT0FBMkI7UUFDOUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELE1BQU0sS0FBSyxlQUFlO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxhQUFxQjtRQUN2QyxNQUFNLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQ3BELENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDUCxPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDMUQsQ0FBQyxDQUNKLENBQUM7UUFDRixNQUFNLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQ3hDLENBQUMsVUFBbUMsRUFBRSxFQUFFO1lBQ3BDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekMsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xDLE9BQU8sT0FBTyxDQUFDLFdBQVcsS0FBSyxhQUFhLENBQUM7UUFDakQsQ0FBQyxDQUNKLENBQUM7UUFDRixNQUFNLGNBQWMsR0FBWSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMzQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUM1QixDQUFDLEtBQWEsRUFBRSxFQUFFO1lBQ2QsT0FBTyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQzNDLENBQUMsQ0FDSixDQUFDO1FBQ0YsT0FBTztZQUNILE1BQU0sRUFBRSxhQUFhO1lBQ3JCLFVBQVUsRUFBRTtnQkFDUixHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUM7YUFDcEI7WUFDRCxnQkFBZ0IsRUFBRTtnQkFDZCxHQUFHLFVBQVU7YUFDaEI7U0FDSixDQUFDO0lBQ04sQ0FBQzs7QUFwRHVCLHlCQUFRLEdBQXlCLEVBQUUsQ0FBQztBQUNyRCx5QkFBUSxHQUFXLEtBQUssQ0FBQztBQUV6QiwwQkFBUyxHQUFVLEVBQUUsQ0FBQztBQUN0QixrQ0FBaUIsR0FBVSxFQUFFLENBQUMifQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@manticore-labs/nest",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "Manticore labs nestjs classes",
5
5
  "main": "build/main/index.js",
6
6
  "typings": "build/main/index.d.ts",