UNPKG

@autobe/agent

Version:

AI backend server code generator

91 lines 3.96 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getTestArtifacts = getTestArtifacts; exports.getTestScenarioArtifacts = getTestScenarioArtifacts; const utils_1 = require("@typia/utils"); function getTestArtifacts(ctx, props) { return __awaiter(this, void 0, void 0, function* () { var _a; const compiler = yield ctx.compiler(); const document = filterDocument(ctx.state().interface.document, { endpoint: props.endpoint, dependencies: (_a = props.dependencies) !== null && _a !== void 0 ? _a : [], }); const entries = Object.entries(yield compiler.interface.write(document, [])); const filter = (prefix, exclude) => { const result = entries.filter(([key]) => key.startsWith(prefix) === true); return Object.fromEntries(exclude ? result.filter(([key]) => key.startsWith(exclude) === false) : result); }; return { document, sdk: filter("src/api", "src/api/structures"), dto: filter("src/api/structures"), e2e: filter("test/features"), }; }); } function getTestScenarioArtifacts(ctx, scenario) { return __awaiter(this, void 0, void 0, function* () { const compiler = yield ctx.compiler(); const document = filterDocument(ctx.state().interface.document, { endpoint: scenario.endpoint, dependencies: scenario.dependencies.map((dp) => dp.endpoint), }); const entries = Object.entries(yield compiler.interface.write(document, [])); const filter = (prefix, exclude) => { const result = entries.filter(([key]) => key.startsWith(prefix) === true); return Object.fromEntries(exclude ? result.filter(([key]) => key.startsWith(exclude) === false) : result); }; return { document, sdk: filter("src/api", "src/api/structures"), dto: filter("src/api/structures"), e2e: filter("test/features"), }; }); } function filterDocument(document, props) { const operations = document.operations.filter((op) => (props.endpoint.method === op.method && props.endpoint.path === op.path) || props.dependencies.some((dp) => dp.method === op.method && dp.path === op.path)); const components = { authorizations: document.components.authorizations, schemas: {}, }; const visit = (typeName) => { utils_1.OpenApiTypeChecker.visit({ components: document.components, schema: { $ref: `#/components/schemas/${typeName}` }, closure: (s) => { if (utils_1.OpenApiTypeChecker.isReference(s)) { const key = s.$ref.split("/").pop(); components.schemas[key] = document.components.schemas[key]; } }, }); }; for (const op of operations) { if (op.requestBody) visit(op.requestBody.typeName); if (op.responseBody) visit(op.responseBody.typeName); } return { operations, components, }; } //# sourceMappingURL=getTestArtifacts.js.map