@manticore-labs/nest 0.0.116 → 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 +55 -45
- 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 +4 -3
- 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 +3 -3
- 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
|
@@ -5,10 +5,14 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
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;
|
|
6
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
7
|
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
8
11
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
13
|
};
|
|
11
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.PrincipalAuth0Service = void 0;
|
|
12
16
|
const common_1 = require("@nestjs/common");
|
|
13
17
|
const auth0_1 = require("auth0");
|
|
14
18
|
const buscar_registro_1 = require("../funciones-util/buscar-registro");
|
|
@@ -597,7 +601,8 @@ let PrincipalAuth0Service = class PrincipalAuth0Service {
|
|
|
597
601
|
}
|
|
598
602
|
};
|
|
599
603
|
PrincipalAuth0Service = __decorate([
|
|
600
|
-
common_1.Injectable()
|
|
604
|
+
common_1.Injectable(),
|
|
605
|
+
__metadata("design:paramtypes", [Object, Object, Object, Object, String, String, Boolean])
|
|
601
606
|
], PrincipalAuth0Service);
|
|
602
607
|
exports.PrincipalAuth0Service = PrincipalAuth0Service;
|
|
603
608
|
function obtenerPrimerOrder(order) {
|
|
@@ -640,4 +645,4 @@ function elaborarUserMetadataAActualizar(user_metadata, user_metadataAActualizar
|
|
|
640
645
|
});
|
|
641
646
|
return user_metadataClonado;
|
|
642
647
|
}
|
|
643
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aDAuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvYXV0aDAvYXV0aDAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBLDJDQUE0QztBQUU1QyxpQ0FBdUQ7QUFHdkQsdUVBQTBFO0FBQzFFLGdGQUEwRTtBQUMxRSxrREFBeUI7QUFHekIsTUFBTSxLQUFLLEdBQVEsZUFBSSxDQUFDO0FBQ3hCLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGdCQUFnQixDQUFDO0FBRzNELElBQXNCLHFCQUFxQixHQUEzQztJQUlFLFlBQTZCLFlBQXlCLEVBQzFCLG9CQUEwQixFQUMxQixlQUFxQixFQUNwQixxQkFBMkIsRUFDM0IsZ0JBQXdCLElBQUksRUFDNUIsT0FBZSxlQUFlLEVBQzlCLFFBQWlCLElBQUk7UUFOckIsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDMUIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFNO1FBQzFCLG9CQUFlLEdBQWYsZUFBZSxDQUFNO1FBQ3BCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBTTtRQUMzQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixTQUFJLEdBQUosSUFBSSxDQUEwQjtRQUM5QixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNoRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQztZQUMzQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sWUFBWTtZQUMvQyxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRTtZQUMxQyxZQUFZLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRTtZQUMzQyxLQUFLLEVBQUUsMkRBQTJEO1NBQ25FLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLDRC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
|
|
648
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aDAuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvYXV0aDAvYXV0aDAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBNEM7QUFFNUMsaUNBQXVEO0FBR3ZELHVFQUEwRTtBQUMxRSxnRkFBMEU7QUFDMUUsa0RBQXlCO0FBR3pCLE1BQU0sS0FBSyxHQUFRLGVBQUksQ0FBQztBQUN4QixNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQztBQUczRCxJQUFzQixxQkFBcUIsR0FBM0MsTUFBc0IscUJBQXFCO0lBSXpDLFlBQTZCLFlBQXlCLEVBQzFCLG9CQUEwQixFQUMxQixlQUFxQixFQUNwQixxQkFBMkIsRUFDM0IsZ0JBQXdCLElBQUksRUFDNUIsT0FBZSxlQUFlLEVBQzlCLFFBQWlCLElBQUk7UUFOckIsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDMUIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFNO1FBQzFCLG9CQUFlLEdBQWYsZUFBZSxDQUFNO1FBQ3BCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBTTtRQUMzQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixTQUFJLEdBQUosSUFBSSxDQUEwQjtRQUM5QixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNoRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQztZQUMzQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sWUFBWTtZQUMvQyxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRTtZQUMxQyxZQUFZLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRTtZQUMzQyxLQUFLLEVBQUUsMkRBQTJEO1NBQ25FLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxv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
|
|
@@ -5,22 +5,29 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
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;
|
|
6
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
7
|
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
8
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.CrearUsuarioDto = void 0;
|
|
9
13
|
const class_validator_1 = require("class-validator");
|
|
10
14
|
class CrearUsuarioDto {
|
|
11
15
|
}
|
|
12
16
|
__decorate([
|
|
13
17
|
class_validator_1.IsNotEmpty(),
|
|
14
|
-
class_validator_1.IsString()
|
|
18
|
+
class_validator_1.IsString(),
|
|
19
|
+
__metadata("design:type", String)
|
|
15
20
|
], CrearUsuarioDto.prototype, "name", void 0);
|
|
16
21
|
__decorate([
|
|
17
22
|
class_validator_1.IsNotEmpty(),
|
|
18
|
-
class_validator_1.IsString()
|
|
23
|
+
class_validator_1.IsString(),
|
|
24
|
+
__metadata("design:type", String)
|
|
19
25
|
], CrearUsuarioDto.prototype, "username", void 0);
|
|
20
26
|
__decorate([
|
|
21
27
|
class_validator_1.IsNotEmpty(),
|
|
22
28
|
class_validator_1.IsString(),
|
|
23
|
-
class_validator_1.IsEmail()
|
|
29
|
+
class_validator_1.IsEmail(),
|
|
30
|
+
__metadata("design:type", String)
|
|
24
31
|
], CrearUsuarioDto.prototype, "email", void 0);
|
|
25
32
|
exports.CrearUsuarioDto = CrearUsuarioDto;
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXItdXN1YXJpby1kdG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2F1dGgwL2NyZWFyLXVzdWFyaW8tZHRvL2NyZWFyLXVzdWFyaW8tZHRvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLHFEQUFnRTtBQUVoRSxNQUFhLGVBQWU7Q0FjM0I7QUFWQztJQUZDLDRCQUFVLEVBQUU7SUFDWiwwQkFBUSxFQUFFOzs2Q0FDRTtBQUliO0lBRkMsNEJBQVUsRUFBRTtJQUNaLDBCQUFRLEVBQUU7O2lEQUNNO0FBS2pCO0lBSEMsNEJBQVUsRUFBRTtJQUNaLDBCQUFRLEVBQUU7SUFDVix5QkFBTyxFQUFFOzs4Q0FDSTtBQWJoQiwwQ0FjQyJ9
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.checkJwt = void 0;
|
|
3
4
|
const jwt = require('express-jwt');
|
|
4
5
|
function checkJwt(options) {
|
|
5
6
|
return jwt(options);
|
|
6
7
|
}
|
|
7
8
|
exports.checkJwt = checkJwt;
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stand0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9hdXRoMC9zZWd1cmlkYWQtand0LW1vdmlsZXMvY2hlY2stand0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUVuQyxTQUFnQixRQUFRLENBQUMsT0FBZ0I7SUFDdkMsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdEIsQ0FBQztBQUZELDRCQUVDIn0=
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.tienetokenValidoSeguridadWeb = void 0;
|
|
3
4
|
const check_jwt_1 = require("./check-jwt");
|
|
4
5
|
function tienetokenValidoSeguridadWeb(opciones, web) {
|
|
5
6
|
return new Promise((resolve) => {
|
|
@@ -19,4 +20,4 @@ function tienetokenValidoSeguridadWeb(opciones, web) {
|
|
|
19
20
|
});
|
|
20
21
|
}
|
|
21
22
|
exports.tienetokenValidoSeguridadWeb = tienetokenValidoSeguridadWeb;
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGllbmUtdG9rZW4tdmFsaWRvLXNlZ3VyaWRhZC13ZWIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2F1dGgwL3NlZ3VyaWRhZC1qd3QtbW92aWxlcy90aWVuZS10b2tlbi12YWxpZG8tc2VndXJpZGFkLXdlYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBdUM7QUFFdkMsU0FBZ0IsNEJBQTRCLENBQzFDLFFBQVEsRUFDUixHQUdDO0lBQ0QsT0FBTyxJQUFJLE9BQU8sQ0FDaEIsQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUNWLE1BQU0sYUFBYSxHQUFHLG9CQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekMsYUFBYSxDQUNYLEdBQUcsQ0FBQyxPQUFPLEVBQ1gsR0FBRyxDQUFDLFFBQVEsRUFDWixDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ2QsSUFBSSxXQUFXLEVBQUU7Z0JBQ2YsT0FBTyxDQUFDO29CQUNOLEtBQUssRUFBRSxXQUFXO2lCQUNuQixDQUFDLENBQUM7YUFDSjtpQkFBTTtnQkFDTCxPQUFPLENBQUM7b0JBQ04sS0FBSyxFQUFFLEtBQUs7aUJBQ2IsQ0FBQyxDQUFDO2FBQ0o7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FDRixDQUFDO0FBQ0osQ0FBQztBQXpCRCxvRUF5QkMifQ==
|
|
@@ -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,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OPCIONES_HEADER_DEFECTO = exports.OPCIONES_QUERY_POR_DEFECTO = exports.BODY_METADATA_DEFECTO = exports.NOMBRE_METODOS_CRUD_API = void 0;
|
|
4
|
+
exports.NOMBRE_METODOS_CRUD_API = {
|
|
5
|
+
create: 'create',
|
|
6
|
+
update: 'update',
|
|
7
|
+
delete: 'delete',
|
|
8
|
+
findOne: 'findOne',
|
|
9
|
+
findAll: 'findAll'
|
|
10
|
+
};
|
|
11
|
+
exports.BODY_METADATA_DEFECTO = {
|
|
12
|
+
type: String,
|
|
13
|
+
required: true,
|
|
14
|
+
};
|
|
15
|
+
exports.OPCIONES_QUERY_POR_DEFECTO = {
|
|
16
|
+
name: '',
|
|
17
|
+
required: true
|
|
18
|
+
};
|
|
19
|
+
exports.OPCIONES_HEADER_DEFECTO = {
|
|
20
|
+
name: '',
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGVjb3JhZG9yZXMvbWxhYi1zd2FnZ2VyL2NvbnN0YW50ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR2EsUUFBQSx1QkFBdUIsR0FBZTtJQUNqRCxNQUFNLEVBQUUsUUFBUTtJQUNoQixNQUFNLEVBQUUsUUFBUTtJQUNoQixNQUFNLEVBQUUsUUFBUTtJQUNoQixPQUFPLEVBQUUsU0FBUztJQUNsQixPQUFPLEVBQUUsU0FBUztDQUNuQixDQUFBO0FBRVksUUFBQSxxQkFBcUIsR0FBb0I7SUFDcEQsSUFBSSxFQUFFLE1BQU07SUFDWixRQUFRLEVBQUUsSUFBSTtDQUNmLENBQUM7QUFFVyxRQUFBLDBCQUEwQixHQUFvQjtJQUN6RCxJQUFJLEVBQUUsRUFBRTtJQUNSLFFBQVEsRUFBRSxJQUFJO0NBQ2YsQ0FBQztBQUVXLFFBQUEsdUJBQXVCLEdBQThCO0lBQ2hFLElBQUksRUFBRSxFQUFFO0NBQ1QsQ0FBQyJ9
|
|
@@ -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,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SwagerDelegator = void 0;
|
|
4
|
+
const swagger_helpers_1 = require("../helpers/swagger-helpers");
|
|
5
|
+
// Clase donde sus metodos son estaticos y retornar la accion
|
|
6
|
+
// que delegara la construccion o modificacion de la metadata de la clase
|
|
7
|
+
class SwagerDelegator {
|
|
8
|
+
static delegateApiResponseCB(methodName, target) {
|
|
9
|
+
return (configObject) => {
|
|
10
|
+
swagger_helpers_1.SwaggerHelper.construirApiResponse(configObject, methodName, target);
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
static delegateApiHeaderCB(methodName, target) {
|
|
14
|
+
return (configObject) => {
|
|
15
|
+
swagger_helpers_1.SwaggerHelper.buildApiHeaders(configObject, methodName, target);
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.SwagerDelegator = SwagerDelegator;
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZWdhZG9yZXMtc3dhZ2dlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGVjb3JhZG9yZXMvbWxhYi1zd2FnZ2VyL2RlbGVnYWRvcmVzL2RlbGVnYWRvcmVzLXN3YWdnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBS0EsZ0VBQTJEO0FBRzNELDZEQUE2RDtBQUM3RCx5RUFBeUU7QUFFekUsTUFBYSxlQUFlO0lBQzFCLE1BQU0sQ0FBQyxxQkFBcUIsQ0FDMUIsVUFBc0IsRUFDdEIsTUFBaUI7UUFFakIsT0FBTyxDQUFDLFlBQWdDLEVBQUUsRUFBRTtZQUMxQywrQkFBYSxDQUFDLG9CQUFvQixDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdkUsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxtQkFBbUIsQ0FDeEIsVUFBc0IsRUFDdEIsTUFBaUI7UUFFakIsT0FBTyxDQUFDLFlBQThCLEVBQUUsRUFBRTtZQUN4QywrQkFBYSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2xFLENBQUMsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQWxCRCwwQ0FrQkMifQ==
|
|
@@ -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,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SwaggerHelper = void 0;
|
|
4
|
+
const constants_1 = require("@nestjs/swagger/dist/constants");
|
|
5
|
+
const constantes_1 = require("../constantes");
|
|
6
|
+
const lodash_1 = require("lodash");
|
|
7
|
+
const swagger_params_helper_1 = require("./swagger-params-helper");
|
|
8
|
+
class SwaggerHelper {
|
|
9
|
+
static construirApiBody(configuracion, nombreMetodo, target) {
|
|
10
|
+
const params = swagger_params_helper_1.SwaggerParamsHelper.generarParametrosApiBody(configuracion.apiBody);
|
|
11
|
+
const metadataValue = Reflect.getMetadata(constants_1.DECORATORS.API_PARAMETERS, target.prototype[nombreMetodo]) || [];
|
|
12
|
+
Reflect.defineMetadata(constants_1.DECORATORS.API_PARAMETERS, [
|
|
13
|
+
...metadataValue,
|
|
14
|
+
Object.assign(Object.assign({}, constantes_1.BODY_METADATA_DEFECTO), lodash_1.pickBy(params, lodash_1.negate(lodash_1.isUndefined)))
|
|
15
|
+
], target.prototype[nombreMetodo]);
|
|
16
|
+
}
|
|
17
|
+
static construirApiQuery(configuracion, nombreMetodo, target) {
|
|
18
|
+
const params = swagger_params_helper_1.SwaggerParamsHelper.generarParametrosApiQuery(configuracion.apiQuery);
|
|
19
|
+
const metadataValue = Reflect.getMetadata(constants_1.DECORATORS.API_PARAMETERS, target.prototype[nombreMetodo]) || [];
|
|
20
|
+
Reflect.defineMetadata(constants_1.DECORATORS.API_PARAMETERS, [
|
|
21
|
+
...metadataValue,
|
|
22
|
+
Object.assign(Object.assign({}, constantes_1.OPCIONES_QUERY_POR_DEFECTO), lodash_1.pickBy(params, lodash_1.negate(lodash_1.isUndefined)))
|
|
23
|
+
], target.prototype[nombreMetodo]);
|
|
24
|
+
}
|
|
25
|
+
static construirApiResponse(configuracion, nombreMetodo, target) {
|
|
26
|
+
const params = swagger_params_helper_1.SwaggerParamsHelper.generarParametrosApiResponse(configuracion);
|
|
27
|
+
const metadataValue = Reflect.getMetadata(constants_1.DECORATORS.API_RESPONSE, target.prototype[nombreMetodo]) || {};
|
|
28
|
+
Reflect.defineMetadata(constants_1.DECORATORS.API_RESPONSE, Object.assign(Object.assign({}, metadataValue), params), target.prototype[nombreMetodo]);
|
|
29
|
+
}
|
|
30
|
+
static buildApiHeaders(configuracion, nombreMetodo, target) {
|
|
31
|
+
const params = swagger_params_helper_1.SwaggerParamsHelper.generarParametrosApiHeaders(configuracion);
|
|
32
|
+
const metadataValue = Reflect.getMetadata(constants_1.DECORATORS.API_PARAMETERS, target.prototype[nombreMetodo]) || [];
|
|
33
|
+
Reflect.defineMetadata(constants_1.DECORATORS.API_PARAMETERS, [
|
|
34
|
+
...metadataValue,
|
|
35
|
+
Object.assign(Object.assign({}, constantes_1.OPCIONES_HEADER_DEFECTO), lodash_1.pickBy(params, lodash_1.negate(lodash_1.isUndefined)))
|
|
36
|
+
], target.prototype[nombreMetodo]);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.SwaggerHelper = SwaggerHelper;
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dhZ2dlci1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9kZWNvcmFkb3Jlcy9tbGFiLXN3YWdnZXIvaGVscGVycy9zd2FnZ2VyLWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsOERBQTREO0FBQzVELDhDQUEyRztBQUUzRyxtQ0FBbUQ7QUFDbkQsbUVBQThEO0FBRTlELE1BQWEsYUFBYTtJQUN4QixNQUFNLENBQUMsZ0JBQWdCLENBQ3JCLGFBQTZDLEVBQzdDLFlBQXdCLEVBQ3hCLE1BQWlCO1FBRWpCLE1BQU0sTUFBTSxHQUFHLDJDQUFtQixDQUFDLHdCQUF3QixDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuRixNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUN2QyxzQkFBVSxDQUFDLGNBQWMsRUFDekIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FDL0IsSUFBSSxFQUFFLENBQUM7UUFDUixPQUFPLENBQUMsY0FBYyxDQUNwQixzQkFBVSxDQUFDLGNBQWMsRUFDekI7WUFDRSxHQUFHLGFBQWE7NENBRVgsa0NBQXFCLEdBQ3JCLGVBQU0sQ0FBQyxNQUFNLEVBQUUsZUFBTSxDQUFDLG9CQUFXLENBQUMsQ0FBQztTQUV6QyxFQUNELE1BQU0sQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQy9CLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLGlCQUFpQixDQUN0QixhQUF5QixFQUN6QixZQUF3QixFQUN4QixNQUFpQjtRQUVqQixNQUFNLE1BQU0sR0FBRywyQ0FBbUIsQ0FBQyx5QkFBeUIsQ0FBQyxhQUFhLENBQUMsUUFBMkIsQ0FBQyxDQUFDO1FBQ3hHLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQ3ZDLHNCQUFVLENBQUMsY0FBYyxFQUN6QixNQUFNLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hDLE9BQU8sQ0FBQyxjQUFjLENBQ3BCLHNCQUFVLENBQUMsY0FBYyxFQUN6QjtZQUNFLEdBQUcsYUFBYTs0Q0FFWCx1Q0FBMEIsR0FDMUIsZUFBTSxDQUFDLE1BQU0sRUFBRSxlQUFNLENBQUMsb0JBQVcsQ0FBQyxDQUFDO1NBRXpDLEVBQ0QsTUFBTSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FDL0IsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsb0JBQW9CLENBQ3pCLGFBQWlDLEVBQ2pDLFlBQXdCLEVBQ3hCLE1BQWlCO1FBRWpCLE1BQU0sTUFBTSxHQUFHLDJDQUFtQixDQUFDLDRCQUE0QixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQy9FLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQ3ZDLHNCQUFVLENBQUMsWUFBWSxFQUN2QixNQUFNLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hDLE9BQU8sQ0FBQyxjQUFjLENBQ3BCLHNCQUFVLENBQUMsWUFBWSxrQ0FFbEIsYUFBYSxHQUNiLE1BQU0sR0FFWCxNQUFNLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUMvQixDQUFDO0lBQ0osQ0FBQztJQUNELE1BQU0sQ0FBQyxlQUFlLENBQ3BCLGFBQStCLEVBQy9CLFlBQXdCLEVBQ3hCLE1BQWlCO1FBRWpCLE1BQU0sTUFBTSxHQUFHLDJDQUFtQixDQUFDLDJCQUEyQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzlFLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQ3ZDLHNCQUFVLENBQUMsY0FBYyxFQUN6QixNQUFNLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hDLE9BQU8sQ0FBQyxjQUFjLENBQ3BCLHNCQUFVLENBQUMsY0FBYyxFQUN6QjtZQUNFLEdBQUcsYUFBYTs0Q0FFWCxvQ0FBdUIsR0FDdkIsZUFBTSxDQUFDLE1BQU0sRUFBRSxlQUFNLENBQUMsb0JBQVcsQ0FBQyxDQUFDO1NBRXpDLEVBQ0QsTUFBTSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FDL0IsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXJGRCxzQ0FxRkMifQ==
|
|
@@ -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,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SwaggerParamsHelper = void 0;
|
|
4
|
+
const constantes_1 = require("../constantes");
|
|
5
|
+
const lodash_1 = require("lodash");
|
|
6
|
+
const enum_utils_1 = require("@nestjs/swagger/dist/utils/enum.utils");
|
|
7
|
+
const helpers_1 = require("@nestjs/swagger/dist/decorators/helpers");
|
|
8
|
+
const delegadores_swagger_1 = require("../delegadores/delegadores-swagger");
|
|
9
|
+
// Existen palabras en ingles dentro de la logica da cada metodo, estan asi
|
|
10
|
+
// dado que son parte de la estructura interna de las librerias del swagger.
|
|
11
|
+
class SwaggerParamsHelper {
|
|
12
|
+
// Los parametros de se generar en cada metodo seran utilizados para modificar
|
|
13
|
+
// la metadata de cada metodo de la clase
|
|
14
|
+
static generarParametrosApiHeaders(opciones) {
|
|
15
|
+
const parametros = {
|
|
16
|
+
name: lodash_1.isNil(opciones.name) ? constantes_1.OPCIONES_HEADER_DEFECTO.name : opciones.name,
|
|
17
|
+
in: 'header',
|
|
18
|
+
description: opciones.description,
|
|
19
|
+
required: opciones.required,
|
|
20
|
+
schema: {
|
|
21
|
+
type: 'string'
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
if (opciones.enum) {
|
|
25
|
+
const enumValues = enum_utils_1.getEnumValues(opciones.enum);
|
|
26
|
+
parametros.schema = {
|
|
27
|
+
enum: enumValues,
|
|
28
|
+
type: enum_utils_1.getEnumType(enumValues)
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
return parametros;
|
|
32
|
+
}
|
|
33
|
+
static generarParametrosApiResponse(opciones) {
|
|
34
|
+
const [type, isArray] = helpers_1.getTypeIsArrayTuple(opciones.type, opciones.isArray);
|
|
35
|
+
opciones.type = type;
|
|
36
|
+
opciones.isArray = isArray;
|
|
37
|
+
opciones.description = opciones.description ? opciones.description : '';
|
|
38
|
+
return { [opciones.status]: lodash_1.omit(opciones, 'status') };
|
|
39
|
+
}
|
|
40
|
+
static generarParametrosApiBody(options) {
|
|
41
|
+
const [type, isArray] = helpers_1.getTypeIsArrayTuple(options.type, options.isArray);
|
|
42
|
+
const param = Object.assign(Object.assign({ in: 'body' }, lodash_1.omit(options, 'enum')), { type,
|
|
43
|
+
isArray });
|
|
44
|
+
if (enum_utils_1.isEnumArray(options)) {
|
|
45
|
+
enum_utils_1.addEnumArraySchema(param, options);
|
|
46
|
+
}
|
|
47
|
+
else if (enum_utils_1.isEnumDefined(options)) {
|
|
48
|
+
enum_utils_1.addEnumSchema(param, options);
|
|
49
|
+
}
|
|
50
|
+
return param;
|
|
51
|
+
}
|
|
52
|
+
static generarParametrosApiQuery(options) {
|
|
53
|
+
const apiQueryMetadata = options;
|
|
54
|
+
const [type, isArray] = helpers_1.getTypeIsArrayTuple(apiQueryMetadata.type, apiQueryMetadata.isArray);
|
|
55
|
+
const name = constantes_1.OPCIONES_QUERY_POR_DEFECTO.name;
|
|
56
|
+
const param = Object.assign(Object.assign({
|
|
57
|
+
// @ts-ignore
|
|
58
|
+
name: lodash_1.isNil(options.name) ? name : options.name, in: 'query' }, lodash_1.omit(options, 'enum')), { type,
|
|
59
|
+
isArray });
|
|
60
|
+
if (enum_utils_1.isEnumArray(options)) {
|
|
61
|
+
enum_utils_1.addEnumArraySchema(param, options);
|
|
62
|
+
}
|
|
63
|
+
else if (enum_utils_1.isEnumDefined(options)) {
|
|
64
|
+
enum_utils_1.addEnumSchema(param, options);
|
|
65
|
+
}
|
|
66
|
+
return param;
|
|
67
|
+
}
|
|
68
|
+
// Este metodo es de ayuda para generar lo parametros API-HEADERS
|
|
69
|
+
static establecerApiHeaders(responsesConfigList, target, methodName) {
|
|
70
|
+
if (responsesConfigList && responsesConfigList.length > 0) {
|
|
71
|
+
responsesConfigList.forEach(delegadores_swagger_1.SwagerDelegator.delegateApiHeaderCB(methodName, target));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
static establecerApiResponses(responsesConfigList, target, methodName) {
|
|
75
|
+
if (responsesConfigList && responsesConfigList.length > 0) {
|
|
76
|
+
responsesConfigList.forEach(delegadores_swagger_1.SwagerDelegator.delegateApiResponseCB(methodName, target));
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
static establecerHeadersResponses(options, methodName, target) {
|
|
80
|
+
if (options.responses && options.responses.length > 0) {
|
|
81
|
+
SwaggerParamsHelper.establecerApiResponses(options.responses, target, methodName);
|
|
82
|
+
}
|
|
83
|
+
if (options.headers && options.headers.length > 0) {
|
|
84
|
+
SwaggerParamsHelper.establecerApiHeaders(options.headers, target, methodName);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
exports.SwaggerParamsHelper = SwaggerParamsHelper;
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dhZ2dlci1wYXJhbXMtaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9kZWNvcmFkb3Jlcy9tbGFiLXN3YWdnZXIvaGVscGVycy9zd2FnZ2VyLXBhcmFtcy1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBUUEsOENBQW9GO0FBQ3BGLG1DQUFtQztBQUNuQyxzRUFNK0M7QUFDL0MscUVBQThFO0FBRTlFLDRFQUFxRTtBQUVyRSwyRUFBMkU7QUFDM0UsNEVBQTRFO0FBRTVFLE1BQWEsbUJBQW1CO0lBQzlCLDhFQUE4RTtJQUM5RSx5Q0FBeUM7SUFDekMsTUFBTSxDQUFDLDJCQUEyQixDQUNoQyxRQUEwQjtRQUUxQixNQUFNLFVBQVUsR0FBdUQ7WUFDckUsSUFBSSxFQUFFLGNBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLG9DQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUk7WUFDekUsRUFBRSxFQUFFLFFBQVE7WUFDWixXQUFXLEVBQUUsUUFBUSxDQUFDLFdBQVc7WUFDakMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRO1lBQzNCLE1BQU0sRUFBRTtnQkFDTixJQUFJLEVBQUUsUUFBUTthQUNmO1NBQ0YsQ0FBQztRQUVGLElBQUksUUFBUSxDQUFDLElBQUksRUFBRTtZQUNqQixNQUFNLFVBQVUsR0FBRywwQkFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoRCxVQUFVLENBQUMsTUFBTSxHQUFHO2dCQUNsQixJQUFJLEVBQUUsVUFBVTtnQkFDaEIsSUFBSSxFQUFFLHdCQUFXLENBQUMsVUFBVSxDQUFDO2FBQzlCLENBQUM7U0FDSDtRQUNELE9BQU8sVUFBVSxDQUFDO0lBRXBCLENBQUM7SUFDRCxNQUFNLENBQUMsNEJBQTRCLENBQ2pDLFFBQTRCO1FBRTVCLE1BQU0sQ0FBQyxJQUFJLEVBQUUs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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,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGVjb3JhZG9yZXMvbWxhYi1zd2FnZ2VyL2ludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MlabSwagger = void 0;
|
|
4
|
+
const swagger_helpers_1 = require("./helpers/swagger-helpers");
|
|
5
|
+
const swagger_params_helper_1 = require("./helpers/swagger-params-helper");
|
|
6
|
+
const constantes_1 = require("./constantes");
|
|
7
|
+
/*
|
|
8
|
+
Decorador MlabSwagger para generar la auto-documentacion de la API-REST de
|
|
9
|
+
Manticore-Labs
|
|
10
|
+
*/
|
|
11
|
+
/*
|
|
12
|
+
La claseObjectivo es la referencia a la clase de la cual se va a modificar
|
|
13
|
+
la metadata de sus metodos. La clase deberia implementar la interfaz
|
|
14
|
+
"MetodosCrudInterface" o por lo menos implementar uno de los metodos de la
|
|
15
|
+
misma.
|
|
16
|
+
*/
|
|
17
|
+
function MlabSwagger(configuracion) {
|
|
18
|
+
return (claseObjetivo) => {
|
|
19
|
+
const createOneOptions = configuracion.create;
|
|
20
|
+
const updateOneOptions = configuracion.update;
|
|
21
|
+
const findAllOptions = configuracion.findAll;
|
|
22
|
+
const deleteOneOptions = configuracion.delete;
|
|
23
|
+
const findOneByIdOptions = configuracion.findOne;
|
|
24
|
+
// Siempre se pasara la referencia a la claseObjetivo
|
|
25
|
+
if (createOneOptions) {
|
|
26
|
+
swagger_helpers_1.SwaggerHelper.construirApiBody(createOneOptions, constantes_1.NOMBRE_METODOS_CRUD_API.create, claseObjetivo);
|
|
27
|
+
swagger_params_helper_1.SwaggerParamsHelper.establecerHeadersResponses(createOneOptions, constantes_1.NOMBRE_METODOS_CRUD_API.create, claseObjetivo);
|
|
28
|
+
}
|
|
29
|
+
if (updateOneOptions) {
|
|
30
|
+
swagger_helpers_1.SwaggerHelper.construirApiBody(updateOneOptions, constantes_1.NOMBRE_METODOS_CRUD_API.update, claseObjetivo);
|
|
31
|
+
swagger_params_helper_1.SwaggerParamsHelper.establecerHeadersResponses(updateOneOptions, constantes_1.NOMBRE_METODOS_CRUD_API.update, claseObjetivo);
|
|
32
|
+
}
|
|
33
|
+
if (findAllOptions) {
|
|
34
|
+
if (findAllOptions.apiQuery) {
|
|
35
|
+
swagger_helpers_1.SwaggerHelper.construirApiQuery(findAllOptions, constantes_1.NOMBRE_METODOS_CRUD_API.findAll, claseObjetivo);
|
|
36
|
+
}
|
|
37
|
+
swagger_params_helper_1.SwaggerParamsHelper.establecerHeadersResponses(findAllOptions, constantes_1.NOMBRE_METODOS_CRUD_API.findAll, claseObjetivo);
|
|
38
|
+
}
|
|
39
|
+
if (deleteOneOptions) {
|
|
40
|
+
swagger_params_helper_1.SwaggerParamsHelper.establecerHeadersResponses(deleteOneOptions, constantes_1.NOMBRE_METODOS_CRUD_API.delete, claseObjetivo);
|
|
41
|
+
}
|
|
42
|
+
if (findOneByIdOptions) {
|
|
43
|
+
swagger_params_helper_1.SwaggerParamsHelper.establecerHeadersResponses(findOneByIdOptions, constantes_1.NOMBRE_METODOS_CRUD_API.findOne, claseObjetivo);
|
|
44
|
+
}
|
|
45
|
+
return claseObjetivo;
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
exports.MlabSwagger = MlabSwagger;
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWxhYi1zd2FnZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9kZWNvcmFkb3Jlcy9tbGFiLXN3YWdnZXIvbWxhYi1zd2FnZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLCtEQUEwRDtBQUMxRCwyRUFBc0U7QUFDdEUsNkNBQXVEO0FBRXZEOzs7R0FHRztBQUdIOzs7OztFQUtFO0FBRUYsU0FBZ0IsV0FBVyxDQUN6QixhQUF3QztJQUd4QyxPQUFPLENBQUMsYUFBa0IsRUFBRSxFQUFFO1FBQzVCLE1BQU0sZ0JBQWdCLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQztRQUM5QyxNQUFNLGdCQUFnQixHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUM7UUFDOUMsTUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQztRQUM3QyxNQUFNLGdCQUFnQixHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUM7UUFDOUMsTUFBTSxrQkFBa0IsR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDO1FBQ2pELHFEQUFxRDtRQUNyRCxJQUFJLGdCQUFnQixFQUFFO1lBQ3BCLCtCQUFhLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLEVBQUUsb0NBQXVCLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQ2hHLDJDQUFtQixDQUFDLDBCQUEwQixDQUFDLGdCQUFnQixFQUFFLG9DQUF1QixDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQztTQUNqSDtRQUNELElBQUksZ0JBQWdCLEVBQUU7WUFDcEIsK0JBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsRUFBRSxvQ0FBdUIsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDaEcsMkNBQW1CLENBQUMsMEJBQTBCLENBQUMsZ0JBQWdCLEVBQUUsb0NBQXVCLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1NBQ2pIO1FBQ0QsSUFBSSxjQUFjLEVBQUU7WUFDbEIsSUFBSSxjQUFjLENBQUMsUUFBUSxFQUFFO2dCQUMzQiwrQkFBYSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsRUFBRSxvQ0FBdUIsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUM7YUFDakc7WUFDRCwyQ0FBbUIsQ0FBQywwQkFBMEIsQ0FBQyxjQUFjLEVBQUUsb0NBQXVCLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1NBQ2hIO1FBQ0QsSUFBSSxnQkFBZ0IsRUFBRTtZQUNwQiwyQ0FBbUIsQ0FBQywwQkFBMEIsQ0FBQyxnQkFBZ0IsRUFBRSxvQ0FBdUIsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7U0FDakg7UUFDRCxJQUFJLGtCQUFrQixFQUFFO1lBQ3RCLDJDQUFtQixDQUFDLDBCQUEwQixDQUFDLGtCQUFrQixFQUFFLG9DQUF1QixDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQztTQUNwSDtRQUNELE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUMsQ0FBQztBQUNKLENBQUM7QUFqQ0Qsa0NBaUNDIn0=
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.definirDocumentacionSwagger = void 0;
|
|
4
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
5
|
+
const generar_documentos_swagger_1 = require("./generar-documentos-swagger");
|
|
6
|
+
function definirDocumentacionSwagger(app, modulosSwagger) {
|
|
7
|
+
const documentosPredefinidos = generar_documentos_swagger_1._generarDocumentosSwagger(modulosSwagger);
|
|
8
|
+
for (const documentoSetUp of documentosPredefinidos) {
|
|
9
|
+
const documentoDefinido = swagger_1.SwaggerModule.createDocument(app, documentoSetUp.documentoPredifinido, documentoSetUp.opciones);
|
|
10
|
+
swagger_1.SwaggerModule.setup(documentoSetUp.path, app, documentoDefinido);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.definirDocumentacionSwagger = definirDocumentacionSwagger;
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5pci1kb2N1bWVudGFjaW9uLXN3YWdnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2RlY29yYWRvcmVzL21sYWItc3dhZ2dlci91dGlscy9kZWZpbmlyLWRvY3VtZW50YWNpb24tc3dhZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSw2Q0FBZ0Q7QUFDaEQsNkVBQXlFO0FBRXpFLFNBQWdCLDJCQUEyQixDQUN6QyxHQUFRLEVBQ1IsY0FBd0M7SUFFeEMsTUFBTSxzQkFBc0IsR0FBRyxzREFBeUIsQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUN4RSxLQUFLLE1BQU0sY0FBYyxJQUFJLHNCQUFzQixFQUFDO1FBQ2xELE1BQU0saUJBQWlCLEdBQUcsdUJBQWEsQ0FBQyxjQUFjLENBQ3BELEdBQUcsRUFDSCxjQUFjLENBQUMsb0JBQW9CLEVBQ25DLGNBQWMsQ0FBQyxRQUFRLENBQ3hCLENBQUM7UUFDRix1QkFBYSxDQUFDLEtBQUssQ0FDakIsY0FBYyxDQUFDLElBQUksRUFDbkIsR0FBRyxFQUNILGlCQUFpQixDQUNsQixDQUFDO0tBQ0g7QUFDSCxDQUFDO0FBakJELGtFQWlCQyJ9
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports._generarDocumentosSwagger = void 0;
|
|
4
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
5
|
+
function _generarDocumentosSwagger(modulosSwagger) {
|
|
6
|
+
return modulosSwagger
|
|
7
|
+
.map((moduloSwagger) => {
|
|
8
|
+
const documento = new swagger_1.DocumentBuilder()
|
|
9
|
+
.setTitle(moduloSwagger.titulo)
|
|
10
|
+
.setDescription(moduloSwagger.descripcion)
|
|
11
|
+
.setVersion(moduloSwagger.version)
|
|
12
|
+
.addTag(moduloSwagger.etiqueta)
|
|
13
|
+
.build();
|
|
14
|
+
const tienePath = !!moduloSwagger.path;
|
|
15
|
+
let path = moduloSwagger.path;
|
|
16
|
+
if (!tienePath) {
|
|
17
|
+
path = moduloSwagger.titulo.toLowerCase();
|
|
18
|
+
}
|
|
19
|
+
return {
|
|
20
|
+
path,
|
|
21
|
+
documentoPredifinido: documento,
|
|
22
|
+
};
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
exports._generarDocumentosSwagger = _generarDocumentosSwagger;
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhci1kb2N1bWVudG9zLXN3YWdnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2RlY29yYWRvcmVzL21sYWItc3dhZ2dlci91dGlscy9nZW5lcmFyLWRvY3VtZW50b3Mtc3dhZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSw2Q0FBa0Q7QUFFbEQsU0FBZ0IseUJBQXlCLENBQ3ZDLGNBQXdDO0lBRXhDLE9BQU8sY0FBYztTQUNsQixHQUFHLENBQ0YsQ0FBQyxhQUFxQyxFQUFFLEVBQUU7UUFDeEMsTUFBTSxTQUFTLEdBQWdDLElBQUkseUJBQWUsRUFBRTthQUNqRSxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQzthQUM5QixjQUFjLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQzthQUN6QyxVQUFVLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQzthQUNqQyxNQUFNLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQzthQUM5QixLQUFLLEVBQUUsQ0FBQztRQUNYLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1FBQ3ZDLElBQUksSUFBSSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUM7UUFDOUIsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNkLElBQUksR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQzNDO1FBQ0QsT0FBTztZQUNMLElBQUk7WUFDSixvQkFBb0IsRUFBRSxTQUFTO1NBQ2hDLENBQUM7SUFDSixDQUFDLENBQ0YsQ0FBQztBQUNOLENBQUM7QUF2QkQsOERBdUJDIn0=
|