@autobe/agent
Version:
AI backend server code generator
36 lines • 1.49 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getPrerequisites = void 0;
const utils_1 = require("@autobe/utils");
const tstl_1 = require("tstl");
const getPrerequisites = (props) => {
const visited = new Set();
const result = new tstl_1.HashMap(utils_1.AutoBeOpenApiEndpointComparator.hashCode, utils_1.AutoBeOpenApiEndpointComparator.equals);
const traverse = (endpoint) => {
const key = `${endpoint.method}:${endpoint.path}`;
// prevent circular structure: skip visited endpoint
if (visited.has(key))
return;
visited.add(key);
const operation = props.document.operations.find((op) => op.method === endpoint.method && op.path === endpoint.path);
if (operation === undefined)
return;
// add current operation's prerequisites
for (const prerequisite of operation.prerequisites) {
// check if already in result to avoid duplicates
const exists = result.has(prerequisite.endpoint);
if (!exists) {
result.set(prerequisite.endpoint, [prerequisite]);
}
// recursively traverse prerequisite's prerequisites
traverse(prerequisite.endpoint);
}
};
traverse(props.endpoint);
return result
.toJSON()
.map((it) => it.second)
.flat();
};
exports.getPrerequisites = getPrerequisites;
//# sourceMappingURL=getPrerequisites.js.map