UNPKG

manifest

Version:

The backend for AI code editors

172 lines (171 loc) 7.41 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 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; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.OpenApiService = void 0; const common_1 = require("@nestjs/common"); const open_api_crud_service_1 = require("./open-api-crud.service"); const manifest_service_1 = require("../../manifest/services/manifest.service"); const open_api_manifest_service_1 = require("./open-api-manifest.service"); const open_api_auth_service_1 = require("./open-api-auth.service"); const open_api_endpoint_service_1 = require("./open-api.endpoint.service"); let OpenApiService = class OpenApiService { constructor(manifestService, openApiCrudService, openApiManifestService, openApiAuthService, openApiEndpointService) { this.manifestService = manifestService; this.openApiCrudService = openApiCrudService; this.openApiManifestService = openApiManifestService; this.openApiAuthService = openApiAuthService; this.openApiEndpointService = openApiEndpointService; } generateOpenApiObject() { const appManifest = this.manifestService.getAppManifest(); return { openapi: '3.1.0', info: { title: appManifest.name, version: appManifest.version }, paths: { ...this.openApiCrudService.generateEntityPaths(Object.values(appManifest.entities)), ...this.openApiManifestService.generateManifestPaths(appManifest), ...this.openApiAuthService.generateAuthPaths(appManifest), ...this.openApiEndpointService.generateEndpointPaths(appManifest.endpoints) }, components: { schemas: { Paginator: { type: 'object', properties: { data: { type: 'array', items: { type: 'object' } }, currentPage: { type: 'integer' }, lastPage: { type: 'integer' }, from: { type: 'integer' }, to: { type: 'integer' }, total: { type: 'integer' }, perPage: { type: 'integer' } } }, SelectOption: { type: 'object', properties: { id: { type: 'number' }, label: { type: 'string' } } }, AppManifest: { type: 'object', properties: { name: { type: 'string' }, entities: { type: 'object', additionalProperties: { $ref: '#/components/schemas/EntityManifest' } } } }, EntityManifest: { type: 'object', properties: { className: { type: 'string' }, nameSingular: { type: 'string' }, namePlural: { type: 'string' }, slug: { type: 'string' }, mainProp: { type: 'string' }, seedCount: { type: 'number' }, belongsTo: { type: 'array', items: { $ref: '#/components/schemas/RelationshipManifest' } }, properties: { type: 'array', items: { $ref: '#/components/schemas/PropertyManifest' } } } }, RelationshipManifest: { type: 'object', properties: { name: { type: 'string' }, entity: { type: 'string' }, eager: { type: 'boolean' } } }, PropertyManifest: { type: 'object', properties: { name: { type: 'string' }, type: { type: 'string' } } } }, securitySchemes: this.openApiAuthService.getSecuritySchemes(appManifest) } }; } }; exports.OpenApiService = OpenApiService; exports.OpenApiService = OpenApiService = __decorate([ (0, common_1.Injectable)(), __metadata("design:paramtypes", [manifest_service_1.ManifestService, open_api_crud_service_1.OpenApiCrudService, open_api_manifest_service_1.OpenApiManifestService, open_api_auth_service_1.OpenApiAuthService, open_api_endpoint_service_1.OpenApiEndpointService]) ], OpenApiService);