@manticore-labs/nest 0.0.117 → 0.1.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/.idea/workspace.xml +58 -41
- package/build/main/index.d.ts +2 -0
- package/build/main/index.js +65 -29
- package/build/main/lib/auth0/actualizar-usuario-cuenta-dto/actualizar-usuario-cuenta-dto.js +11 -4
- package/build/main/lib/auth0/actualizar-usuario-dto/actualizar-usuario-dto.js +11 -4
- package/build/main/lib/auth0/auth0.controller.js +51 -13
- package/build/main/lib/auth0/auth0.service.d.ts +1 -1
- package/build/main/lib/auth0/auth0.service.js +7 -2
- package/build/main/lib/auth0/crear-usuario-dto/crear-usuario-dto.js +11 -4
- package/build/main/lib/auth0/seguridad-jwt-moviles/check-jwt.js +2 -1
- package/build/main/lib/auth0/seguridad-jwt-moviles/tiene-token-valido-seguridad-web.js +2 -1
- package/build/main/lib/decoradores/mlab-swagger/constantes.d.ts +6 -0
- package/build/main/lib/decoradores/mlab-swagger/constantes.js +22 -0
- package/build/main/lib/decoradores/mlab-swagger/delegadores/delegadores-swagger.d.ts +5 -0
- package/build/main/lib/decoradores/mlab-swagger/delegadores/delegadores-swagger.js +20 -0
- package/build/main/lib/decoradores/mlab-swagger/helpers/swagger-helpers.d.ts +8 -0
- package/build/main/lib/decoradores/mlab-swagger/helpers/swagger-helpers.js +40 -0
- package/build/main/lib/decoradores/mlab-swagger/helpers/swagger-params-helper.d.ts +13 -0
- package/build/main/lib/decoradores/mlab-swagger/helpers/swagger-params-helper.js +89 -0
- package/build/main/lib/decoradores/mlab-swagger/interfaces.d.ts +58 -0
- package/build/main/lib/decoradores/mlab-swagger/interfaces.js +3 -0
- package/build/main/lib/decoradores/mlab-swagger/mlab-swagger.d.ts +2 -0
- package/build/main/lib/decoradores/mlab-swagger/mlab-swagger.js +49 -0
- package/build/main/lib/decoradores/mlab-swagger/utils/definir-documentacion-swagger.d.ts +2 -0
- package/build/main/lib/decoradores/mlab-swagger/utils/definir-documentacion-swagger.js +14 -0
- package/build/main/lib/decoradores/mlab-swagger/utils/generar-documentos-swagger.d.ts +2 -0
- package/build/main/lib/decoradores/mlab-swagger/utils/generar-documentos-swagger.js +26 -0
- package/build/main/lib/decoradores/mlab-swagger/utils/modulo-swagger.interface.d.ts +14 -0
- package/build/main/lib/decoradores/mlab-swagger/utils/modulo-swagger.interface.js +3 -0
- package/build/main/lib/expresiones-regulares/letras-espacios-tildes-enie.js +2 -1
- package/build/main/lib/funciones-util/buscar-registro.js +3 -2
- package/build/main/lib/funciones-util/buscar-un-registro-por-id.js +2 -1
- package/build/main/lib/funciones-util/buscar-where-or.js +2 -1
- package/build/main/lib/funciones-util/contar-registros.js +2 -1
- package/build/main/lib/funciones-util/crear-un-registro.js +2 -1
- package/build/main/lib/funciones-util/editar-un-registro.js +2 -1
- package/build/main/lib/funciones-util/eliminar-uno.js +2 -1
- package/build/main/lib/funciones-util/funciones-busqueda/generar-campos-con-condiciones.js +3 -2
- package/build/main/lib/funciones-util/funciones-busqueda/generar-joins.js +2 -1
- package/build/main/lib/funciones-util/funciones-busqueda/obtener-objeto-where-y-relations.js +2 -1
- package/build/main/lib/funciones-util/funciones-busqueda/verificar-campo.js +2 -1
- package/build/main/lib/funciones-util/funciones-edicion-varias-tablas/editar-campos.js +2 -1
- package/build/main/lib/funciones-util/funciones-edicion-varias-tablas/editar-varias-tablas.js +2 -1
- package/build/main/lib/funciones-util/misc/eliminar-nulos-recursivamente.js +2 -1
- package/build/main/lib/funciones-util/typeorm/valor-esta-dentro-del-arreglo.js +2 -1
- package/build/main/lib/google-cloud/google-cloud-storage.service.js +7 -2
- package/build/main/lib/interfaces-util/campos-a-buscar.js +2 -1
- package/build/main/lib/menu/entities/menu-entity.js +31 -12
- package/build/main/lib/one-signal/one-signal.controller.js +35 -9
- package/build/main/lib/one-signal/one-signal.service.js +7 -2
- package/build/main/lib/politicas/revisar-si-tiene-nombre-permiso.js +2 -1
- package/build/main/lib/politicas/revisar-si-tiene-rol.js +2 -1
- package/build/main/lib/principal.controller.d.ts +2 -1
- package/build/main/lib/principal.controller.js +33 -8
- package/build/main/lib/principal.dto.js +11 -4
- package/build/main/lib/principal.entity.js +19 -6
- package/build/main/lib/principal.find-many-options.js +25 -11
- package/build/main/lib/principal.find-many-where-or.js +13 -5
- package/build/main/lib/principal.gateway.js +37 -9
- package/build/main/lib/principal.id.js +7 -2
- package/build/main/lib/principal.resolver.js +33 -8
- package/build/main/lib/principal.service.d.ts +2 -2
- package/build/main/lib/principal.service.js +9 -4
- package/build/main/lib/seguridad/aplicar-politicas-de-seguridad.js +2 -1
- package/build/main/lib/seguridad/funciones/convertir-arreglo-en-arreglo-de-observables.js +2 -1
- package/build/main/lib/seguridad/funciones/index.js +7 -6
- package/build/main/lib/seguridad/funciones/obtener-reflector-seguridad.js +2 -1
- package/build/main/lib/seguridad/funciones/obtener-request.js +2 -1
- package/build/main/lib/seguridad/funciones/obtener-response.js +2 -1
- package/build/main/lib/seguridad/funciones/tiene-acceso-permitido.js +2 -1
- package/build/main/lib/seguridad/seguridad.decorator.d.ts +1 -1
- package/build/main/lib/seguridad/seguridad.decorator.js +3 -2
- package/build/module/index.d.ts +2 -0
- package/build/module/index.js +30 -1
- package/build/module/lib/auth0/actualizar-usuario-cuenta-dto/actualizar-usuario-cuenta-dto.js +10 -4
- package/build/module/lib/auth0/actualizar-usuario-dto/actualizar-usuario-dto.js +10 -4
- package/build/module/lib/auth0/auth0.controller.js +50 -13
- package/build/module/lib/auth0/auth0.service.d.ts +1 -1
- package/build/module/lib/auth0/auth0.service.js +6 -2
- package/build/module/lib/auth0/crear-usuario-dto/crear-usuario-dto.js +10 -4
- package/build/module/lib/auth0/seguridad-jwt-moviles/check-jwt.js +1 -1
- package/build/module/lib/auth0/seguridad-jwt-moviles/tiene-token-valido-seguridad-web.js +1 -1
- package/build/module/lib/decoradores/mlab-swagger/constantes.d.ts +6 -0
- package/build/module/lib/decoradores/mlab-swagger/constantes.js +19 -0
- package/build/module/lib/decoradores/mlab-swagger/delegadores/delegadores-swagger.d.ts +5 -0
- package/build/module/lib/decoradores/mlab-swagger/delegadores/delegadores-swagger.js +16 -0
- package/build/module/lib/decoradores/mlab-swagger/helpers/swagger-helpers.d.ts +8 -0
- package/build/module/lib/decoradores/mlab-swagger/helpers/swagger-helpers.js +48 -0
- package/build/module/lib/decoradores/mlab-swagger/helpers/swagger-params-helper.d.ts +13 -0
- package/build/module/lib/decoradores/mlab-swagger/helpers/swagger-params-helper.js +93 -0
- package/build/module/lib/decoradores/mlab-swagger/interfaces.d.ts +58 -0
- package/build/module/lib/decoradores/mlab-swagger/interfaces.js +1 -0
- package/build/module/lib/decoradores/mlab-swagger/mlab-swagger.d.ts +2 -0
- package/build/module/lib/decoradores/mlab-swagger/mlab-swagger.js +45 -0
- package/build/module/lib/decoradores/mlab-swagger/utils/definir-documentacion-swagger.d.ts +2 -0
- package/build/module/lib/decoradores/mlab-swagger/utils/definir-documentacion-swagger.js +10 -0
- package/build/module/lib/decoradores/mlab-swagger/utils/generar-documentos-swagger.d.ts +2 -0
- package/build/module/lib/decoradores/mlab-swagger/utils/generar-documentos-swagger.js +22 -0
- package/build/module/lib/decoradores/mlab-swagger/utils/modulo-swagger.interface.d.ts +14 -0
- package/build/module/lib/decoradores/mlab-swagger/utils/modulo-swagger.interface.js +1 -0
- package/build/module/lib/funciones-util/buscar-registro.js +1 -1
- package/build/module/lib/funciones-util/buscar-un-registro-por-id.js +1 -1
- package/build/module/lib/funciones-util/buscar-where-or.js +1 -1
- package/build/module/lib/funciones-util/contar-registros.js +1 -1
- package/build/module/lib/funciones-util/crear-un-registro.js +1 -1
- package/build/module/lib/funciones-util/editar-un-registro.js +1 -1
- package/build/module/lib/funciones-util/eliminar-uno.js +1 -1
- package/build/module/lib/funciones-util/funciones-busqueda/generar-campos-con-condiciones.js +1 -1
- package/build/module/lib/funciones-util/funciones-busqueda/generar-joins.js +1 -1
- package/build/module/lib/funciones-util/funciones-busqueda/obtener-objeto-where-y-relations.js +1 -1
- package/build/module/lib/funciones-util/funciones-busqueda/verificar-campo.js +1 -1
- package/build/module/lib/funciones-util/funciones-edicion-varias-tablas/editar-campos.js +1 -1
- package/build/module/lib/funciones-util/funciones-edicion-varias-tablas/editar-varias-tablas.js +1 -1
- package/build/module/lib/funciones-util/misc/eliminar-nulos-recursivamente.js +1 -1
- package/build/module/lib/funciones-util/typeorm/valor-esta-dentro-del-arreglo.js +1 -1
- package/build/module/lib/google-cloud/google-cloud-storage.service.js +6 -2
- package/build/module/lib/interfaces-util/campos-a-buscar.js +1 -1
- package/build/module/lib/menu/entities/menu-entity.js +30 -12
- package/build/module/lib/one-signal/one-signal.controller.js +34 -9
- package/build/module/lib/one-signal/one-signal.service.js +7 -3
- package/build/module/lib/politicas/revisar-si-tiene-nombre-permiso.js +1 -1
- package/build/module/lib/politicas/revisar-si-tiene-rol.js +1 -1
- package/build/module/lib/principal.controller.d.ts +2 -1
- package/build/module/lib/principal.controller.js +32 -8
- package/build/module/lib/principal.dto.js +10 -4
- package/build/module/lib/principal.entity.js +18 -6
- package/build/module/lib/principal.find-many-options.js +24 -11
- package/build/module/lib/principal.find-many-where-or.js +12 -5
- package/build/module/lib/principal.gateway.js +37 -10
- package/build/module/lib/principal.id.js +6 -2
- package/build/module/lib/principal.resolver.js +32 -8
- package/build/module/lib/principal.service.d.ts +2 -2
- package/build/module/lib/principal.service.js +7 -3
- package/build/module/lib/seguridad/aplicar-politicas-de-seguridad.js +1 -1
- package/build/module/lib/seguridad/funciones/convertir-arreglo-en-arreglo-de-observables.js +1 -1
- package/build/module/lib/seguridad/funciones/obtener-reflector-seguridad.js +1 -1
- package/build/module/lib/seguridad/funciones/obtener-request.js +1 -1
- package/build/module/lib/seguridad/funciones/obtener-response.js +1 -1
- package/build/module/lib/seguridad/funciones/tiene-acceso-permitido.js +1 -1
- package/build/module/lib/seguridad/seguridad.decorator.d.ts +1 -1
- package/build/module/lib/seguridad/seguridad.decorator.js +3 -3
- package/package.json +14 -9
|
@@ -4,6 +4,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
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
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
7
10
|
import { Injectable } from '@nestjs/common';
|
|
8
11
|
import { AuthenticationClient } from 'auth0';
|
|
9
12
|
import { buscarVariosRegistros } from '../funciones-util/buscar-registro';
|
|
@@ -596,7 +599,8 @@ let PrincipalAuth0Service = class PrincipalAuth0Service {
|
|
|
596
599
|
}
|
|
597
600
|
};
|
|
598
601
|
PrincipalAuth0Service = __decorate([
|
|
599
|
-
Injectable()
|
|
602
|
+
Injectable(),
|
|
603
|
+
__metadata("design:paramtypes", [Object, Object, Object, Object, String, String, Boolean])
|
|
600
604
|
], PrincipalAuth0Service);
|
|
601
605
|
export { PrincipalAuth0Service };
|
|
602
606
|
function obtenerPrimerOrder(order) {
|
|
@@ -639,4 +643,4 @@ function elaborarUserMetadataAActualizar(user_metadata, user_metadataAActualizar
|
|
|
639
643
|
});
|
|
640
644
|
return user_metadataClonado;
|
|
641
645
|
}
|
|
642
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aDAuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvYXV0aDAvYXV0aDAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUMsT0FBTyxFQUFZLG9CQUFvQixFQUFFLE1BQU0sT0FBTyxDQUFDO0FBR3ZELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzFFLE9BQU8sSUFBSSxNQUFNLE9BQU8sQ0FBQztBQUd6QixNQUFNLEtBQUssR0FBUSxJQUFJLENBQUM7QUFDeEIsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsZ0JBQWdCLENBQUM7QUFHM0QsSUFBc0IscUJBQXFCLEdBQTNDO0lBSUUsWUFBNkIsWUFBeUIsRUFDMUIsb0JBQTBCLEVBQzFCLGVBQXFCLEVBQ3BCLHFCQUEyQixFQUMzQixnQkFBd0IsSUFBSSxFQUM1QixPQUFlLGVBQWUsRUFDOUIsUUFBaUIsSUFBSTtRQU5yQixpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUMxQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQU07UUFDMUIsb0JBQWUsR0FBZixlQUFlLENBQU07UUFDcEIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFNO1FBQzNCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLFNBQUksR0FBSixJQUFJLENBQTBCO1FBQzlCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ2hELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLGdCQUFnQixDQUFDO1lBQzNDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxZQUFZO1lBQy9DLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENB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
|
|
646
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aDAuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvYXV0aDAvYXV0aDAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUMsT0FBTyxFQUFZLG9CQUFvQixFQUFFLE1BQU0sT0FBTyxDQUFDO0FBR3ZELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzFFLE9BQU8sSUFBSSxNQUFNLE9BQU8sQ0FBQztBQUd6QixNQUFNLEtBQUssR0FBUSxJQUFJLENBQUM7QUFDeEIsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsZ0JBQWdCLENBQUM7QUFHM0QsSUFBc0IscUJBQXFCLEdBQTNDLE1BQXNCLHFCQUFxQjtJQUl6QyxZQUE2QixZQUF5QixFQUMxQixvQkFBMEIsRUFDMUIsZUFBcUIsRUFDcEIscUJBQTJCLEVBQzNCLGdCQUF3QixJQUFJLEVBQzVCLE9BQWUsZUFBZSxFQUM5QixRQUFpQixJQUFJO1FBTnJCLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBQzFCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBTTtRQUMxQixvQkFBZSxHQUFmLGVBQWUsQ0FBTTtRQUNwQiwwQkFBcUIsR0FBckIscUJBQXFCLENBQU07UUFDM0Isa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsU0FBSSxHQUFKLElBQUksQ0FBMEI7UUFDOUIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDaEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksZ0JBQWdCLENBQUM7WUFDM0MsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLFlBQVk7WUFDL0MsUUFBUSxFQUFFLEdBQUcs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
|
|
@@ -4,20 +4,26 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
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
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
7
10
|
import { IsEmail, IsNotEmpty, IsString } from 'class-validator';
|
|
8
11
|
export class CrearUsuarioDto {
|
|
9
12
|
}
|
|
10
13
|
__decorate([
|
|
11
14
|
IsNotEmpty(),
|
|
12
|
-
IsString()
|
|
15
|
+
IsString(),
|
|
16
|
+
__metadata("design:type", String)
|
|
13
17
|
], CrearUsuarioDto.prototype, "name", void 0);
|
|
14
18
|
__decorate([
|
|
15
19
|
IsNotEmpty(),
|
|
16
|
-
IsString()
|
|
20
|
+
IsString(),
|
|
21
|
+
__metadata("design:type", String)
|
|
17
22
|
], CrearUsuarioDto.prototype, "username", void 0);
|
|
18
23
|
__decorate([
|
|
19
24
|
IsNotEmpty(),
|
|
20
25
|
IsString(),
|
|
21
|
-
IsEmail()
|
|
26
|
+
IsEmail(),
|
|
27
|
+
__metadata("design:type", String)
|
|
22
28
|
], CrearUsuarioDto.prototype, "email", void 0);
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXItdXN1YXJpby1kdG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2F1dGgwL2NyZWFyLXVzdWFyaW8tZHRvL2NyZWFyLXVzdWFyaW8tZHRvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWhFLE1BQU0sT0FBTyxlQUFlO0NBYzNCO0FBVkM7SUFGQyxVQUFVLEVBQUU7SUFDWixRQUFRLEVBQUU7OzZDQUNFO0FBSWI7SUFGQyxVQUFVLEVBQUU7SUFDWixRQUFRLEVBQUU7O2lEQUNNO0FBS2pCO0lBSEMsVUFBVSxFQUFFO0lBQ1osUUFBUSxFQUFFO0lBQ1YsT0FBTyxFQUFFOzs4Q0FDSSJ9
|
|
@@ -2,4 +2,4 @@ const jwt = require('express-jwt');
|
|
|
2
2
|
export function checkJwt(options) {
|
|
3
3
|
return jwt(options);
|
|
4
4
|
}
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stand0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9hdXRoMC9zZWd1cmlkYWQtand0LW1vdmlsZXMvY2hlY2stand0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUVuQyxNQUFNLFVBQVUsUUFBUSxDQUFDLE9BQWdCO0lBQ3ZDLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3RCLENBQUMifQ==
|
|
@@ -16,4 +16,4 @@ export function tienetokenValidoSeguridadWeb(opciones, web) {
|
|
|
16
16
|
});
|
|
17
17
|
});
|
|
18
18
|
}
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGllbmUtdG9rZW4tdmFsaWRvLXNlZ3VyaWRhZC13ZWIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2F1dGgwL3NlZ3VyaWRhZC1qd3QtbW92aWxlcy90aWVuZS10b2tlbi12YWxpZG8tc2VndXJpZGFkLXdlYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXZDLE1BQU0sVUFBVSw0QkFBNEIsQ0FDMUMsUUFBUSxFQUNSLEdBR0M7SUFDRCxPQUFPLElBQUksT0FBTyxDQUNoQixDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ1YsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pDLGFBQWEsQ0FDWCxHQUFHLENBQUMsT0FBTyxFQUNYLEdBQUcsQ0FBQyxRQUFRLEVBQ1osQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUNkLElBQUksV0FBVyxFQUFFO2dCQUNmLE9BQU8sQ0FBQztvQkFDTixLQUFLLEVBQUUsV0FBVztpQkFDbkIsQ0FBQyxDQUFDO2FBQ0o7aUJBQU07Z0JBQ0wsT0FBTyxDQUFDO29CQUNOLEtBQUssRUFBRSxLQUFLO2lCQUNiLENBQUMsQ0FBQzthQUNKO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQ0YsQ0FBQztBQUNKLENBQUMifQ==
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ApiBodyMetadata, MetodosApi } from './interfaces';
|
|
2
|
+
import { ApiHeaderOptions, ApiQueryOptions } from '@nestjs/swagger';
|
|
3
|
+
export declare const NOMBRE_METODOS_CRUD_API: MetodosApi;
|
|
4
|
+
export declare const BODY_METADATA_DEFECTO: ApiBodyMetadata;
|
|
5
|
+
export declare const OPCIONES_QUERY_POR_DEFECTO: ApiQueryOptions;
|
|
6
|
+
export declare const OPCIONES_HEADER_DEFECTO: Partial<ApiHeaderOptions>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export const NOMBRE_METODOS_CRUD_API = {
|
|
2
|
+
create: 'create',
|
|
3
|
+
update: 'update',
|
|
4
|
+
delete: 'delete',
|
|
5
|
+
findOne: 'findOne',
|
|
6
|
+
findAll: 'findAll'
|
|
7
|
+
};
|
|
8
|
+
export const BODY_METADATA_DEFECTO = {
|
|
9
|
+
type: String,
|
|
10
|
+
required: true,
|
|
11
|
+
};
|
|
12
|
+
export const OPCIONES_QUERY_POR_DEFECTO = {
|
|
13
|
+
name: '',
|
|
14
|
+
required: true
|
|
15
|
+
};
|
|
16
|
+
export const OPCIONES_HEADER_DEFECTO = {
|
|
17
|
+
name: '',
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGVjb3JhZG9yZXMvbWxhYi1zd2FnZ2VyL2NvbnN0YW50ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQWU7SUFDakQsTUFBTSxFQUFFLFFBQVE7SUFDaEIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsT0FBTyxFQUFFLFNBQVM7Q0FDbkIsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFvQjtJQUNwRCxJQUFJLEVBQUUsTUFBTTtJQUNaLFFBQVEsRUFBRSxJQUFJO0NBQ2YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFvQjtJQUN6RCxJQUFJLEVBQUUsRUFBRTtJQUNSLFFBQVEsRUFBRSxJQUFJO0NBQ2YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUE4QjtJQUNoRSxJQUFJLEVBQUUsRUFBRTtDQUNULENBQUMifQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { EstrategiaHeaderOptions, EstrategiaResponseOptions, MetodoCrud, Prototype } from '../interfaces';
|
|
2
|
+
export declare class SwagerDelegator {
|
|
3
|
+
static delegateApiResponseCB(methodName: MetodoCrud, target: Prototype): EstrategiaResponseOptions;
|
|
4
|
+
static delegateApiHeaderCB(methodName: MetodoCrud, target: Prototype): EstrategiaHeaderOptions;
|
|
5
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { SwaggerHelper } from '../helpers/swagger-helpers';
|
|
2
|
+
// Clase donde sus metodos son estaticos y retornar la accion
|
|
3
|
+
// que delegara la construccion o modificacion de la metadata de la clase
|
|
4
|
+
export class SwagerDelegator {
|
|
5
|
+
static delegateApiResponseCB(methodName, target) {
|
|
6
|
+
return (configObject) => {
|
|
7
|
+
SwaggerHelper.construirApiResponse(configObject, methodName, target);
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
static delegateApiHeaderCB(methodName, target) {
|
|
11
|
+
return (configObject) => {
|
|
12
|
+
SwaggerHelper.buildApiHeaders(configObject, methodName, target);
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZWdhZG9yZXMtc3dhZ2dlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGVjb3JhZG9yZXMvbWxhYi1zd2FnZ2VyL2RlbGVnYWRvcmVzL2RlbGVnYWRvcmVzLXN3YWdnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRzNELDZEQUE2RDtBQUM3RCx5RUFBeUU7QUFFekUsTUFBTSxPQUFPLGVBQWU7SUFDMUIsTUFBTSxDQUFDLHFCQUFxQixDQUMxQixVQUFzQixFQUN0QixNQUFpQjtRQUVqQixPQUFPLENBQUMsWUFBZ0MsRUFBRSxFQUFFO1lBQzFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZFLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsbUJBQW1CLENBQ3hCLFVBQXNCLEVBQ3RCLE1BQWlCO1FBRWpCLE9BQU8sQ0FBQyxZQUE4QixFQUFFLEVBQUU7WUFDeEMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2xFLENBQUMsQ0FBQztJQUNKLENBQUM7Q0FDRiJ9
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { BaseConfig, CreateUpdateOneConfigInterface, MetodoCrud, Prototype } from '../interfaces';
|
|
2
|
+
import { ApiHeaderOptions, ApiResponseOptions } from '@nestjs/swagger';
|
|
3
|
+
export declare class SwaggerHelper {
|
|
4
|
+
static construirApiBody(configuracion: CreateUpdateOneConfigInterface, nombreMetodo: MetodoCrud, target: Prototype): void;
|
|
5
|
+
static construirApiQuery(configuracion: BaseConfig, nombreMetodo: MetodoCrud, target: Prototype): void;
|
|
6
|
+
static construirApiResponse(configuracion: ApiResponseOptions, nombreMetodo: MetodoCrud, target: Prototype): void;
|
|
7
|
+
static buildApiHeaders(configuracion: ApiHeaderOptions, nombreMetodo: MetodoCrud, target: Prototype): void;
|
|
8
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { DECORATORS } from '@nestjs/swagger/dist/constants';
|
|
2
|
+
import { BODY_METADATA_DEFECTO, OPCIONES_HEADER_DEFECTO, OPCIONES_QUERY_POR_DEFECTO } from '../constantes';
|
|
3
|
+
import { isUndefined, negate, pickBy } from 'lodash';
|
|
4
|
+
import { SwaggerParamsHelper } from './swagger-params-helper';
|
|
5
|
+
export class SwaggerHelper {
|
|
6
|
+
static construirApiBody(configuracion, nombreMetodo, target) {
|
|
7
|
+
const params = SwaggerParamsHelper.generarParametrosApiBody(configuracion.apiBody);
|
|
8
|
+
const metadataValue = Reflect.getMetadata(DECORATORS.API_PARAMETERS, target.prototype[nombreMetodo]) || [];
|
|
9
|
+
Reflect.defineMetadata(DECORATORS.API_PARAMETERS, [
|
|
10
|
+
...metadataValue,
|
|
11
|
+
{
|
|
12
|
+
...BODY_METADATA_DEFECTO,
|
|
13
|
+
...pickBy(params, negate(isUndefined))
|
|
14
|
+
}
|
|
15
|
+
], target.prototype[nombreMetodo]);
|
|
16
|
+
}
|
|
17
|
+
static construirApiQuery(configuracion, nombreMetodo, target) {
|
|
18
|
+
const params = SwaggerParamsHelper.generarParametrosApiQuery(configuracion.apiQuery);
|
|
19
|
+
const metadataValue = Reflect.getMetadata(DECORATORS.API_PARAMETERS, target.prototype[nombreMetodo]) || [];
|
|
20
|
+
Reflect.defineMetadata(DECORATORS.API_PARAMETERS, [
|
|
21
|
+
...metadataValue,
|
|
22
|
+
{
|
|
23
|
+
...OPCIONES_QUERY_POR_DEFECTO,
|
|
24
|
+
...pickBy(params, negate(isUndefined))
|
|
25
|
+
}
|
|
26
|
+
], target.prototype[nombreMetodo]);
|
|
27
|
+
}
|
|
28
|
+
static construirApiResponse(configuracion, nombreMetodo, target) {
|
|
29
|
+
const params = SwaggerParamsHelper.generarParametrosApiResponse(configuracion);
|
|
30
|
+
const metadataValue = Reflect.getMetadata(DECORATORS.API_RESPONSE, target.prototype[nombreMetodo]) || {};
|
|
31
|
+
Reflect.defineMetadata(DECORATORS.API_RESPONSE, {
|
|
32
|
+
...metadataValue,
|
|
33
|
+
...params
|
|
34
|
+
}, target.prototype[nombreMetodo]);
|
|
35
|
+
}
|
|
36
|
+
static buildApiHeaders(configuracion, nombreMetodo, target) {
|
|
37
|
+
const params = SwaggerParamsHelper.generarParametrosApiHeaders(configuracion);
|
|
38
|
+
const metadataValue = Reflect.getMetadata(DECORATORS.API_PARAMETERS, target.prototype[nombreMetodo]) || [];
|
|
39
|
+
Reflect.defineMetadata(DECORATORS.API_PARAMETERS, [
|
|
40
|
+
...metadataValue,
|
|
41
|
+
{
|
|
42
|
+
...OPCIONES_HEADER_DEFECTO,
|
|
43
|
+
...pickBy(params, negate(isUndefined))
|
|
44
|
+
}
|
|
45
|
+
], target.prototype[nombreMetodo]);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dhZ2dlci1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9kZWNvcmFkb3Jlcy9tbGFiLXN3YWdnZXIvaGVscGVycy9zd2FnZ2VyLWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSx1QkFBdUIsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzRyxPQUFPLEVBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUQsTUFBTSxPQUFPLGFBQWE7SUFDeEIsTUFBTSxDQUFDLGdCQUFnQixDQUNyQixhQUE2QyxFQUM3QyxZQUF3QixFQUN4QixNQUFpQjtRQUVqQixNQUFNLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkYsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FDdkMsVUFBVSxDQUFDLGNBQWMsRUFDekIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FDL0IsSUFBSSxFQUFFLENBQUM7UUFDUixPQUFPLENBQUMsY0FBYyxDQUNwQixVQUFVLENBQUMsY0FBYyxFQUN6QjtZQUNFLEdBQUcsYUFBYTtZQUNoQjtnQkFDRSxHQUFHLHFCQUFxQjtnQkFDeEIsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUN2QztTQUNGLEVBQ0QsTUFBTSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FDL0IsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsaUJBQWlCLENBQ3RCLGFBQXlCLEVBQ3pCLFlBQXdCLEVBQ3hCLE1BQWlCO1FBRWpCLE1BQU0sTUFBTSxHQUFHLG1CQUFtQixDQUFDLHlCQUF5QixDQUFDLGFBQWEsQ0FBQyxRQUEyQixDQUFDLENBQUM7UUFDeEcsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FDdkMsVUFBVSxDQUFDLGNBQWMsRUFDekIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN4QyxPQUFPLENBQUMsY0FBYyxDQUNwQixVQUFVLENBQUMsY0FBYyxFQUN6QjtZQUNFLEdBQUcsYUFBYTtZQUNoQjtnQkFDRSxHQUFHLDBCQUEwQjtnQkFDN0IsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUN2QztTQUNGLEVBQ0QsTUFBTSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FDL0IsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsb0JBQW9CLENBQ3pCLGFBQWlDLEVBQ2pDLFlBQXdCLEVBQ3hCLE1BQWlCO1FBRWpCLE1BQU0sTUFBTSxHQUFHLG1CQUFtQixDQUFDLDRCQUE0QixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQy9FLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQ3ZDLFVBQVUsQ0FBQyxZQUFZLEVBQ3ZCLE1BQU0sQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEMsT0FBTyxDQUFDLGNBQWMsQ0FDcEIsVUFBVSxDQUFDLFlBQVksRUFDdkI7WUFDRSxHQUFHLGFBQWE7WUFDaEIsR0FBRyxNQUFNO1NBQ1YsRUFDRCxNQUFNLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUMvQixDQUFDO0lBQ0osQ0FBQztJQUNELE1BQU0sQ0FBQyxlQUFlLENBQ3BCLGFBQStCLEVBQy9CLFlBQXdCLEVBQ3hCLE1BQWlCO1FBRWpCLE1BQU0sTUFBTSxHQUFHLG1CQUFtQixDQUFDLDJCQUEyQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzlFLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQ3ZDLFVBQVUsQ0FBQyxjQUFjLEVBQ3pCLE1BQU0sQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEMsT0FBTyxDQUFDLGNBQWMsQ0FDcEIsVUFBVSxDQUFDLGNBQWMsRUFDekI7WUFDRSxHQUFHLGFBQWE7WUFDaEI7Z0JBQ0UsR0FBRyx1QkFBdUI7Z0JBQzFCLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDdkM7U0FDRixFQUNELE1BQU0sQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQy9CLENBQUM7SUFDSixDQUFDO0NBQ0YifQ==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ApiBodyOptions, ApiHeaderOptions, ApiQueryOptions, ApiResponseOptions } from '@nestjs/swagger';
|
|
2
|
+
import { ApiBodyMetadata, ApiQueryMetadata, BaseConfig, MetodoCrud, Prototype } from '../interfaces';
|
|
3
|
+
export declare class SwaggerParamsHelper {
|
|
4
|
+
static generarParametrosApiHeaders(opciones: ApiHeaderOptions): any;
|
|
5
|
+
static generarParametrosApiResponse(opciones: ApiResponseOptions): {
|
|
6
|
+
[x: number]: Pick<ApiResponseOptions, "content" | "description" | "headers" | "links">;
|
|
7
|
+
};
|
|
8
|
+
static generarParametrosApiBody(options: ApiBodyOptions): ApiBodyMetadata & Record<string, any>;
|
|
9
|
+
static generarParametrosApiQuery(options: ApiQueryOptions): ApiQueryMetadata & Record<string, any>;
|
|
10
|
+
static establecerApiHeaders(responsesConfigList: ApiHeaderOptions[] | undefined, target: Prototype, methodName: MetodoCrud): void;
|
|
11
|
+
static establecerApiResponses(responsesConfigList: ApiResponseOptions[] | undefined, target: Prototype, methodName: MetodoCrud): void;
|
|
12
|
+
static establecerHeadersResponses(options: BaseConfig, methodName: MetodoCrud, target: any): void;
|
|
13
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { OPCIONES_HEADER_DEFECTO, OPCIONES_QUERY_POR_DEFECTO } from '../constantes';
|
|
2
|
+
import { isNil, omit } from 'lodash';
|
|
3
|
+
import { addEnumArraySchema, addEnumSchema, getEnumType, getEnumValues, isEnumArray, isEnumDefined } from '@nestjs/swagger/dist/utils/enum.utils';
|
|
4
|
+
import { getTypeIsArrayTuple } from '@nestjs/swagger/dist/decorators/helpers';
|
|
5
|
+
import { SwagerDelegator } from '../delegadores/delegadores-swagger';
|
|
6
|
+
// Existen palabras en ingles dentro de la logica da cada metodo, estan asi
|
|
7
|
+
// dado que son parte de la estructura interna de las librerias del swagger.
|
|
8
|
+
export class SwaggerParamsHelper {
|
|
9
|
+
// Los parametros de se generar en cada metodo seran utilizados para modificar
|
|
10
|
+
// la metadata de cada metodo de la clase
|
|
11
|
+
static generarParametrosApiHeaders(opciones) {
|
|
12
|
+
const parametros = {
|
|
13
|
+
name: isNil(opciones.name) ? OPCIONES_HEADER_DEFECTO.name : opciones.name,
|
|
14
|
+
in: 'header',
|
|
15
|
+
description: opciones.description,
|
|
16
|
+
required: opciones.required,
|
|
17
|
+
schema: {
|
|
18
|
+
type: 'string'
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
if (opciones.enum) {
|
|
22
|
+
const enumValues = getEnumValues(opciones.enum);
|
|
23
|
+
parametros.schema = {
|
|
24
|
+
enum: enumValues,
|
|
25
|
+
type: getEnumType(enumValues)
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
return parametros;
|
|
29
|
+
}
|
|
30
|
+
static generarParametrosApiResponse(opciones) {
|
|
31
|
+
const [type, isArray] = getTypeIsArrayTuple(opciones.type, opciones.isArray);
|
|
32
|
+
opciones.type = type;
|
|
33
|
+
opciones.isArray = isArray;
|
|
34
|
+
opciones.description = opciones.description ? opciones.description : '';
|
|
35
|
+
return { [opciones.status]: omit(opciones, 'status') };
|
|
36
|
+
}
|
|
37
|
+
static generarParametrosApiBody(options) {
|
|
38
|
+
const [type, isArray] = getTypeIsArrayTuple(options.type, options.isArray);
|
|
39
|
+
const param = {
|
|
40
|
+
in: 'body',
|
|
41
|
+
...omit(options, 'enum'),
|
|
42
|
+
type,
|
|
43
|
+
isArray
|
|
44
|
+
};
|
|
45
|
+
if (isEnumArray(options)) {
|
|
46
|
+
addEnumArraySchema(param, options);
|
|
47
|
+
}
|
|
48
|
+
else if (isEnumDefined(options)) {
|
|
49
|
+
addEnumSchema(param, options);
|
|
50
|
+
}
|
|
51
|
+
return param;
|
|
52
|
+
}
|
|
53
|
+
static generarParametrosApiQuery(options) {
|
|
54
|
+
const apiQueryMetadata = options;
|
|
55
|
+
const [type, isArray] = getTypeIsArrayTuple(apiQueryMetadata.type, apiQueryMetadata.isArray);
|
|
56
|
+
const name = OPCIONES_QUERY_POR_DEFECTO.name;
|
|
57
|
+
const param = {
|
|
58
|
+
// @ts-ignore
|
|
59
|
+
name: isNil(options.name) ? name : options.name,
|
|
60
|
+
in: 'query',
|
|
61
|
+
...omit(options, 'enum'),
|
|
62
|
+
type,
|
|
63
|
+
isArray
|
|
64
|
+
};
|
|
65
|
+
if (isEnumArray(options)) {
|
|
66
|
+
addEnumArraySchema(param, options);
|
|
67
|
+
}
|
|
68
|
+
else if (isEnumDefined(options)) {
|
|
69
|
+
addEnumSchema(param, options);
|
|
70
|
+
}
|
|
71
|
+
return param;
|
|
72
|
+
}
|
|
73
|
+
// Este metodo es de ayuda para generar lo parametros API-HEADERS
|
|
74
|
+
static establecerApiHeaders(responsesConfigList, target, methodName) {
|
|
75
|
+
if (responsesConfigList && responsesConfigList.length > 0) {
|
|
76
|
+
responsesConfigList.forEach(SwagerDelegator.delegateApiHeaderCB(methodName, target));
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
static establecerApiResponses(responsesConfigList, target, methodName) {
|
|
80
|
+
if (responsesConfigList && responsesConfigList.length > 0) {
|
|
81
|
+
responsesConfigList.forEach(SwagerDelegator.delegateApiResponseCB(methodName, target));
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
static establecerHeadersResponses(options, methodName, target) {
|
|
85
|
+
if (options.responses && options.responses.length > 0) {
|
|
86
|
+
SwaggerParamsHelper.establecerApiResponses(options.responses, target, methodName);
|
|
87
|
+
}
|
|
88
|
+
if (options.headers && options.headers.length > 0) {
|
|
89
|
+
SwaggerParamsHelper.establecerApiHeaders(options.headers, target, methodName);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dhZ2dlci1wYXJhbXMtaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9kZWNvcmFkb3Jlcy9tbGFiLXN3YWdnZXIvaGVscGVycy9zd2FnZ2VyLXBhcmFtcy1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLDBCQUEwQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBQyxLQUFLLEVBQUUsSUFBSSxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ25DLE9BQU8sRUFDTCxrQkFBa0IsRUFBRSxhQUFhLEVBQ2pDLFdBQVcsRUFDWCxhQUFhLEVBQ2IsV0FBVyxFQUNYLGFBQWEsRUFDZCxNQUFNLHVDQUF1QyxDQUFDO0FBQy9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVyRSwyRUFBMkU7QUFDM0UsNEVBQTRFO0FBRTVFLE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsOEVBQThFO0lBQzlFLHlDQUF5QztJQUN6QyxNQUFNLENBQUMsMkJBQTJCLENBQ2hDLFFBQTBCO1FBRTFCLE1BQU0sVUFBVSxHQUF1RDtZQUNyRSxJQUFJLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSTtZQUN6RSxFQUFFLEVBQUUsUUFBUTtZQUNaLFdBQVcsRUFBRSxRQUFRLENBQUMsV0FBVztZQUNqQyxRQUFRLEVBQUUsUUFBUSxDQUFDLFFBQVE7WUFDM0IsTUFBTSxFQUFFO2dCQUNOLElBQUksRUFBRSxRQUFRO2FBQ2Y7U0FDRixDQUFDO1FBRUYsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFO1lBQ2pCLE1BQU0sVUFBVSxHQUFHLGFB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
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Type } from '@nestjs/common';
|
|
2
|
+
import { ParameterObject, RequestBodyObject } from '@nestjs/swagger/dist/interfaces/open-api-spec.interface';
|
|
3
|
+
import { SwaggerEnumType } from '@nestjs/swagger/dist/types/swagger-enum.type';
|
|
4
|
+
import { ApiBodyOptions, ApiHeaderOptions, ApiQueryOptions, ApiResponseOptions } from '@nestjs/swagger';
|
|
5
|
+
export interface OperacionesCrud {
|
|
6
|
+
create?: any;
|
|
7
|
+
update?: any;
|
|
8
|
+
delete?: any;
|
|
9
|
+
findOne?: any;
|
|
10
|
+
findAll?: any;
|
|
11
|
+
}
|
|
12
|
+
export interface MetodosCrudInterface extends OperacionesCrud {
|
|
13
|
+
create: (criterioBusqueda: any, req: any, res: any, ...args: any[]) => any;
|
|
14
|
+
update: (id: any, registroAActualizar: any, req: any, res: any, ...args: any[]) => any;
|
|
15
|
+
delete: (nuevoRegistro: any, req: any, res: any, ...args: any[]) => any;
|
|
16
|
+
findOne: (id: any, req: any, res: any, ...args: any[]) => any;
|
|
17
|
+
findAll: (criterioBusqueda: any, req: any, res: any, ...args: any[]) => any;
|
|
18
|
+
}
|
|
19
|
+
export declare type MetodoCrud = keyof MetodosCrudInterface;
|
|
20
|
+
export interface CrudApiDocConfigInterface extends OperacionesCrud {
|
|
21
|
+
create?: CreateUpdateOneConfigInterface;
|
|
22
|
+
update?: CreateUpdateOneConfigInterface;
|
|
23
|
+
findAll?: BaseConfig;
|
|
24
|
+
delete?: BaseConfig;
|
|
25
|
+
findOne?: BaseConfig;
|
|
26
|
+
}
|
|
27
|
+
export interface BaseConfig {
|
|
28
|
+
headers?: ApiHeaderOptions[];
|
|
29
|
+
responses?: ApiResponseOptions[];
|
|
30
|
+
apiQuery?: ApiQueryOptions;
|
|
31
|
+
}
|
|
32
|
+
export interface CreateUpdateOneConfigInterface extends BaseConfig {
|
|
33
|
+
apiBody: ApiBodyOptions;
|
|
34
|
+
}
|
|
35
|
+
export declare type RequestBodyOptions = Omit<RequestBodyObject, 'content'>;
|
|
36
|
+
export declare type MetodosApi = {
|
|
37
|
+
[k in MetodoCrud]: MetodoCrud;
|
|
38
|
+
};
|
|
39
|
+
export declare type EstrategiaResponseOptions = (cg: ApiResponseOptions) => void;
|
|
40
|
+
export declare type EstrategiaHeaderOptions = (cg: ApiHeaderOptions) => void;
|
|
41
|
+
export interface ApiBodyMetadata extends RequestBodyOptions {
|
|
42
|
+
type?: Type<unknown> | Function | [Function] | string;
|
|
43
|
+
isArray?: boolean;
|
|
44
|
+
enum?: SwaggerEnumType;
|
|
45
|
+
}
|
|
46
|
+
export declare type Prototype = {
|
|
47
|
+
[x: string]: object;
|
|
48
|
+
prototype: {
|
|
49
|
+
[x: string]: object;
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
export declare type ParameterOptions = Omit<ParameterObject, 'in' | 'schema'>;
|
|
53
|
+
export interface ApiQueryMetadata extends ParameterOptions {
|
|
54
|
+
type?: Type<unknown> | Function | [Function] | string;
|
|
55
|
+
isArray?: boolean;
|
|
56
|
+
enum?: SwaggerEnumType;
|
|
57
|
+
enumName?: string;
|
|
58
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGVjb3JhZG9yZXMvbWxhYi1zd2FnZ2VyL2ludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { SwaggerHelper } from './helpers/swagger-helpers';
|
|
2
|
+
import { SwaggerParamsHelper } from './helpers/swagger-params-helper';
|
|
3
|
+
import { NOMBRE_METODOS_CRUD_API } from './constantes';
|
|
4
|
+
/*
|
|
5
|
+
Decorador MlabSwagger para generar la auto-documentacion de la API-REST de
|
|
6
|
+
Manticore-Labs
|
|
7
|
+
*/
|
|
8
|
+
/*
|
|
9
|
+
La claseObjectivo es la referencia a la clase de la cual se va a modificar
|
|
10
|
+
la metadata de sus metodos. La clase deberia implementar la interfaz
|
|
11
|
+
"MetodosCrudInterface" o por lo menos implementar uno de los metodos de la
|
|
12
|
+
misma.
|
|
13
|
+
*/
|
|
14
|
+
export function MlabSwagger(configuracion) {
|
|
15
|
+
return (claseObjetivo) => {
|
|
16
|
+
const createOneOptions = configuracion.create;
|
|
17
|
+
const updateOneOptions = configuracion.update;
|
|
18
|
+
const findAllOptions = configuracion.findAll;
|
|
19
|
+
const deleteOneOptions = configuracion.delete;
|
|
20
|
+
const findOneByIdOptions = configuracion.findOne;
|
|
21
|
+
// Siempre se pasara la referencia a la claseObjetivo
|
|
22
|
+
if (createOneOptions) {
|
|
23
|
+
SwaggerHelper.construirApiBody(createOneOptions, NOMBRE_METODOS_CRUD_API.create, claseObjetivo);
|
|
24
|
+
SwaggerParamsHelper.establecerHeadersResponses(createOneOptions, NOMBRE_METODOS_CRUD_API.create, claseObjetivo);
|
|
25
|
+
}
|
|
26
|
+
if (updateOneOptions) {
|
|
27
|
+
SwaggerHelper.construirApiBody(updateOneOptions, NOMBRE_METODOS_CRUD_API.update, claseObjetivo);
|
|
28
|
+
SwaggerParamsHelper.establecerHeadersResponses(updateOneOptions, NOMBRE_METODOS_CRUD_API.update, claseObjetivo);
|
|
29
|
+
}
|
|
30
|
+
if (findAllOptions) {
|
|
31
|
+
if (findAllOptions.apiQuery) {
|
|
32
|
+
SwaggerHelper.construirApiQuery(findAllOptions, NOMBRE_METODOS_CRUD_API.findAll, claseObjetivo);
|
|
33
|
+
}
|
|
34
|
+
SwaggerParamsHelper.establecerHeadersResponses(findAllOptions, NOMBRE_METODOS_CRUD_API.findAll, claseObjetivo);
|
|
35
|
+
}
|
|
36
|
+
if (deleteOneOptions) {
|
|
37
|
+
SwaggerParamsHelper.establecerHeadersResponses(deleteOneOptions, NOMBRE_METODOS_CRUD_API.delete, claseObjetivo);
|
|
38
|
+
}
|
|
39
|
+
if (findOneByIdOptions) {
|
|
40
|
+
SwaggerParamsHelper.establecerHeadersResponses(findOneByIdOptions, NOMBRE_METODOS_CRUD_API.findOne, claseObjetivo);
|
|
41
|
+
}
|
|
42
|
+
return claseObjetivo;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWxhYi1zd2FnZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9kZWNvcmFkb3Jlcy9tbGFiLXN3YWdnZXIvbWxhYi1zd2FnZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFdkQ7OztHQUdHO0FBR0g7Ozs7O0VBS0U7QUFFRixNQUFNLFVBQVUsV0FBVyxDQUN6QixhQUF3QztJQUd4QyxPQUFPLENBQUMsYUFBa0IsRUFBRSxFQUFFO1FBQzVCLE1BQU0sZ0JBQWdCLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQztRQUM5QyxNQUFNLGdCQUFnQixHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUM7UUFDOUMsTUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQztRQUM3QyxNQUFNLGdCQUFnQixHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUM7UUFDOUMsTUFBTSxrQkFBa0IsR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDO1FBQ2pELHFEQUFxRDtRQUNyRCxJQUFJLGdCQUFnQixFQUFFO1lBQ3BCLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDaEcsbUJBQW1CLENBQUMsMEJBQTBCLENBQUMsZ0JBQWdCLEVBQUUsdUJBQXVCLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1NBQ2pIO1FBQ0QsSUFBSSxnQkFBZ0IsRUFBRTtZQUNwQixhQUFhLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLEVBQUUsdUJBQXVCLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQ2hHLG1CQUFtQixDQUFDLDBCQUEwQixDQUFDLGdCQUFnQixFQUFFLHVCQUF1QixDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQztTQUNqSDtRQUNELElBQUksY0FBYyxFQUFFO1lBQ2xCLElBQUksY0FBYyxDQUFDLFFBQVEsRUFBRTtnQkFDM0IsYUFBYSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsRUFBRSx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUM7YUFDakc7WUFDRCxtQkFBbUIsQ0FBQywwQkFBMEIsQ0FBQyxjQUFjLEVBQUUsdUJBQXVCLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1NBQ2hIO1FBQ0QsSUFBSSxnQkFBZ0IsRUFBRTtZQUNwQixtQkFBbUIsQ0FBQywwQkFBMEIsQ0FBQyxnQkFBZ0IsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7U0FDakg7UUFDRCxJQUFJLGtCQUFrQixFQUFFO1lBQ3RCLG1CQUFtQixDQUFDLDBCQUEwQixDQUFDLGtCQUFrQixFQUFFLHVCQUF1QixDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQztTQUNwSDtRQUNELE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUMsQ0FBQztBQUNKLENBQUMifQ==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { SwaggerModule } from '@nestjs/swagger';
|
|
2
|
+
import { _generarDocumentosSwagger } from './generar-documentos-swagger';
|
|
3
|
+
export function definirDocumentacionSwagger(app, modulosSwagger) {
|
|
4
|
+
const documentosPredefinidos = _generarDocumentosSwagger(modulosSwagger);
|
|
5
|
+
for (const documentoSetUp of documentosPredefinidos) {
|
|
6
|
+
const documentoDefinido = SwaggerModule.createDocument(app, documentoSetUp.documentoPredifinido, documentoSetUp.opciones);
|
|
7
|
+
SwaggerModule.setup(documentoSetUp.path, app, documentoDefinido);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5pci1kb2N1bWVudGFjaW9uLXN3YWdnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2RlY29yYWRvcmVzL21sYWItc3dhZ2dlci91dGlscy9kZWZpbmlyLWRvY3VtZW50YWNpb24tc3dhZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFekUsTUFBTSxVQUFVLDJCQUEyQixDQUN6QyxHQUFRLEVBQ1IsY0FBd0M7SUFFeEMsTUFBTSxzQkFBc0IsR0FBRyx5QkFBeUIsQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUN4RSxLQUFLLE1BQU0sY0FBYyxJQUFJLHNCQUFzQixFQUFDO1FBQ2xELE1BQU0saUJBQWlCLEdBQUcsYUFBYSxDQUFDLGNBQWMsQ0FDcEQsR0FBRyxFQUNILGNBQWMsQ0FBQyxvQkFBb0IsRUFDbkMsY0FBYyxDQUFDLFFBQVEsQ0FDeEIsQ0FBQztRQUNGLGFBQWEsQ0FBQyxLQUFLLENBQ2pCLGNBQWMsQ0FBQyxJQUFJLEVBQ25CLEdBQUcsRUFDSCxpQkFBaUIsQ0FDbEIsQ0FBQztLQUNIO0FBQ0gsQ0FBQyJ9
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { DocumentBuilder } from '@nestjs/swagger';
|
|
2
|
+
export function _generarDocumentosSwagger(modulosSwagger) {
|
|
3
|
+
return modulosSwagger
|
|
4
|
+
.map((moduloSwagger) => {
|
|
5
|
+
const documento = new DocumentBuilder()
|
|
6
|
+
.setTitle(moduloSwagger.titulo)
|
|
7
|
+
.setDescription(moduloSwagger.descripcion)
|
|
8
|
+
.setVersion(moduloSwagger.version)
|
|
9
|
+
.addTag(moduloSwagger.etiqueta)
|
|
10
|
+
.build();
|
|
11
|
+
const tienePath = !!moduloSwagger.path;
|
|
12
|
+
let path = moduloSwagger.path;
|
|
13
|
+
if (!tienePath) {
|
|
14
|
+
path = moduloSwagger.titulo.toLowerCase();
|
|
15
|
+
}
|
|
16
|
+
return {
|
|
17
|
+
path,
|
|
18
|
+
documentoPredifinido: documento,
|
|
19
|
+
};
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhci1kb2N1bWVudG9zLXN3YWdnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2RlY29yYWRvcmVzL21sYWItc3dhZ2dlci91dGlscy9nZW5lcmFyLWRvY3VtZW50b3Mtc3dhZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFbEQsTUFBTSxVQUFVLHlCQUF5QixDQUN2QyxjQUF3QztJQUV4QyxPQUFPLGNBQWM7U0FDbEIsR0FBRyxDQUNGLENBQUMsYUFBcUMsRUFBRSxFQUFFO1FBQ3hDLE1BQU0sU0FBUyxHQUFnQyxJQUFJLGVBQWUsRUFBRTthQUNqRSxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQzthQUM5QixjQUFjLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQzthQUN6QyxVQUFVLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQzthQUNqQyxNQUFNLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQzthQUM5QixLQUFLLEVBQUUsQ0FBQztRQUNYLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1FBQ3ZDLElBQUksSUFBSSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUM7UUFDOUIsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNkLElBQUksR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQzNDO1FBQ0QsT0FBTztZQUNMLElBQUk7WUFDSixvQkFBb0IsRUFBRSxTQUFTO1NBQ2hDLENBQUM7SUFDSixDQUFDLENBQ0YsQ0FBQztBQUNOLENBQUMifQ==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { OpenAPIObject, SwaggerDocumentOptions } from '@nestjs/swagger/dist/interfaces';
|
|
2
|
+
export interface ModuloSwaggerInterface {
|
|
3
|
+
titulo: string;
|
|
4
|
+
descripcion: string;
|
|
5
|
+
version: string;
|
|
6
|
+
etiqueta: string;
|
|
7
|
+
path?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare type DocumentoPredefinidoSwagger = Omit<OpenAPIObject, 'components' | 'paths'>;
|
|
10
|
+
export interface DocumentoSetupSwagger {
|
|
11
|
+
documentoPredifinido: DocumentoPredefinidoSwagger;
|
|
12
|
+
path: string;
|
|
13
|
+
opciones?: SwaggerDocumentOptions;
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxvLXN3YWdnZXIuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9kZWNvcmFkb3Jlcy9tbGFiLXN3YWdnZXIvdXRpbHMvbW9kdWxvLXN3YWdnZXIuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
|