recoder-code
Version:
Complete AI-powered development platform with ML model training, plugin registry, real-time collaboration, monitoring, infrastructure automation, and enterprise deployment capabilities
68 lines • 2.68 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.OpenApiContext = void 0;
class OpenApiContext {
constructor(spec, ignorePaths, ignoreUndocumented = false, useRequestUrl = false) {
this.expressRouteMap = {};
this.openApiRouteMap = {};
this.routes = [];
this.apiDoc = spec.apiDoc;
this.basePaths = spec.basePaths;
this.routes = spec.routes;
this.ignorePaths = ignorePaths;
this.ignoreUndocumented = ignoreUndocumented;
this.buildRouteMaps(spec.routes);
this.useRequestUrl = useRequestUrl;
this.serial = spec.serial;
}
isManagedRoute(path) {
for (const bp of this.basePaths) {
if (path.startsWith(bp) && !this.shouldIgnoreRoute(path)) {
return true;
}
}
return false;
}
shouldIgnoreRoute(path) {
var _a;
return typeof this.ignorePaths === 'function' ? this.ignorePaths(path) : (_a = this.ignorePaths) === null || _a === void 0 ? void 0 : _a.test(path);
}
routePair(route) {
const methods = this.methods(route);
if (methods) {
return {
expressRoute: methods._expressRoute,
openApiRoute: methods._openApiRoute,
};
}
return null;
}
methods(route) {
const expressRouteMethods = this.expressRouteMap[route];
if (expressRouteMethods)
return expressRouteMethods;
const openApiRouteMethods = this.openApiRouteMap[route];
return openApiRouteMethods;
}
// side-effecting builds express/openapi route maps
buildRouteMaps(routes) {
for (const route of routes) {
const { basePath, expressRoute, openApiRoute, method } = route;
const routeMethods = this.expressRouteMap[expressRoute];
const pathKey = openApiRoute.substring(basePath.length);
const schema = this.apiDoc.paths[pathKey][method.toLowerCase()];
if (routeMethods) {
routeMethods[route.method] = schema;
}
else {
const { basePath, openApiRoute, expressRoute } = route;
const routeMethod = { [route.method]: schema };
const routeDetails = Object.assign({ basePath, _openApiRoute: openApiRoute, _expressRoute: expressRoute }, routeMethod);
this.expressRouteMap[route.expressRoute] = routeDetails;
this.openApiRouteMap[route.openApiRoute] = routeDetails;
}
}
}
}
exports.OpenApiContext = OpenApiContext;
//# sourceMappingURL=openapi.context.js.map