import type { Standard } from "#Source/validation/index.ts" import type { AnyApiSchema, ApiSchema } from "./api-schema.ts" export type ApiType = Target extends ApiSchema< infer Path, infer Method, infer InputQuerySchema, infer InputBodySchema, infer OutputErrorSchema, infer OutputSuccessSchema > ? { path: Path method: Method inputQuery: Standard.Schema.InferOutput inputBody: Standard.Schema.InferOutput outputError: Standard.Schema.InferOutput outputSuccess: Standard.Schema.InferOutput } : never export const apiType = (apiSchema: Target): ApiType => { return apiSchema as unknown as ApiType } export type ApiTypesInTuple = { [Index in keyof Target]: ApiType } export const apiTypesInTuple = ( apiSchemas: Target, ): ApiTypesInTuple => { return apiSchemas.map((apiSchema) => apiType(apiSchema)) as unknown as ApiTypesInTuple } export type ApiTypesInUnion = ApiType export const apiTypesInUnion = ( apiSchemas: Target, ): ApiTypesInUnion => { return apiSchemas.map((apiSchema) => apiType(apiSchema)) as unknown as ApiTypesInUnion }