unleash-server
Version:
Unleash is an enterprise ready feature toggles service. It provides different strategies for handling feature toggles.
55 lines • 2.04 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.OpenApiService = void 0;
const express_openapi_1 = __importDefault(require("@unleash/express-openapi"));
const openapi_1 = require("../openapi");
const validate_1 = require("../openapi/validate");
class OpenApiService {
constructor(config) {
this.config = config;
this.logger = config.getLogger('openapi-service.ts');
this.api = (0, express_openapi_1.default)(this.docsPath(), (0, openapi_1.createOpenApiSchema)(config.server), { coerce: true });
}
validPath(op) {
return this.api.validPath(op);
}
useDocs(app) {
app.use(this.api);
app.use(this.docsPath(), this.api.swaggerui);
}
docsPath() {
const { baseUriPath = '' } = this.config.server ?? {};
return `${baseUriPath}/docs/openapi`;
}
registerCustomSchemas(schemas) {
Object.entries(schemas).forEach(([name, schema]) => {
this.api.schema(name, (0, openapi_1.removeJsonSchemaProps)(schema));
});
}
useErrorHandler(app) {
app.use((err, req, res, next) => {
if (err && err.status && err.validationErrors) {
res.status(err.status).json({
error: err.message,
validation: err.validationErrors,
});
}
else {
next(err);
}
});
}
respondWithValidation(status, res, schema, data, headers = {}) {
const errors = (0, validate_1.validateSchema)(schema, data);
if (errors) {
this.logger.debug('Invalid response:', errors);
}
Object.entries(headers).forEach(([header, value]) => res.header(header, value));
res.status(status).json(data);
}
}
exports.OpenApiService = OpenApiService;
//# sourceMappingURL=openapi-service.js.map