UNPKG

@autobe/agent

Version:

AI backend server code generator

96 lines (95 loc) 3.51 kB
import { CamelCasePattern, PascalCasePattern } from "@autobe/interface"; import { IAutoBePreliminaryComplete } from "../../common/structures/IAutoBePreliminaryComplete"; import { IAutoBePreliminaryGetDatabaseSchemas } from "../../common/structures/IAutoBePreliminaryGetDatabaseSchemas"; /** * Generates authentication components (provider, decorator, payload) for an * actor type. */ export interface IAutoBeRealizeAuthorizationWriteApplication { /** * Process authentication generation task. * * @param next Preliminary data request, write submission, or completion * confirmation */ process(next: IAutoBeRealizeAuthorizationWriteApplication.IProps): void; } export declare namespace IAutoBeRealizeAuthorizationWriteApplication { interface IProps { /** * Think before you act. * * For preliminary requests: what database schemas are missing and why? * * For write: what authentication components you're submitting. * * For complete: why you consider the last write final. */ thinking: string; /** * Action to perform. Exhausted preliminary types are removed from the * union, physically preventing repeated calls. */ request: IWrite | IAutoBePreliminaryGetDatabaseSchemas | IAutoBePreliminaryComplete; } /** * Request to generate authentication components (provider, decorator, * payload). */ interface IWrite { /** Type discriminator for write submission. */ type: "write"; /** * Authentication Provider function (JWT verification, role validation, DB * queries). */ provider: IAutoBeRealizeAuthorizationWriteApplication.IProvider; /** * Authentication Decorator (NestJS parameter decorator injecting * authenticated user data). */ decorator: IAutoBeRealizeAuthorizationWriteApplication.IDecorator; /** * Authentication Payload Type (TypeScript type for authenticated user data * in Controller methods). */ payload: IAutoBeRealizeAuthorizationWriteApplication.IPayloadType; } interface IProvider { /** * Provider function name in {role}Authorize format (e.g., adminAuthorize). * MUST use camelCase. */ name: string & CamelCasePattern; /** * Complete TypeScript code. MUST include: jwtAuthorize call, role type * check, MyGlobal.prisma.{tableName} query, * ForbiddenException/UnauthorizedException handling. */ content: string; } interface IDecorator { /** * Decorator name in {Actor}Auth format (e.g., AdminAuth, UserAuth). MUST * use PascalCase. */ name: string & PascalCasePattern; /** * Complete TypeScript code. MUST include: SwaggerCustomizer integration, * createParamDecorator calling Provider, Singleton pattern via tstl. */ content: string; } interface IPayloadType { /** * Payload type name in {Actor}Payload format (e.g., AdminPayload, * UserPayload). MUST use PascalCase. */ name: string & PascalCasePattern; /** * Complete TypeScript code. MUST include: id field with UUID validation, * type field as role discriminator, typia tags. */ content: string; } }