{"version":3,"sources":["../../src/open-api/spec.ts","../../src/open-api/utils.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\nimport type { OpenAPIV3 } from \"openapi-types\";\nimport { z } from \"zod\";\nimport zodToJsonSchema from \"zod-to-json-schema\";\nimport type { createOpenApiServerActionRouter } from \"./router\";\nimport type { OpenApiContentType } from \"./utils\";\nimport {\n\tgetPathParameters,\n\tinstanceofZodTypeCoercible,\n\tinstanceofZodTypeLikeString,\n\tinstanceofZodTypeLikeVoid,\n\tinstanceofZodTypeObject,\n\tinstanceofZodTypeOptional,\n\tunwrapZodType,\n\tzodSupportsCoerce,\n} from \"./utils\";\n\n// Constants\nconst securitySchemes = {\n\tAuthorization: {\n\t\ttype: \"http\",\n\t\tscheme: \"bearer\",\n\t},\n};\n\n// Helper functions\nconst zodSchemaToOpenApiSchemaObject = (zodSchema: z.ZodType): OpenAPIV3.SchemaObject => {\n\treturn zodToJsonSchema(zodSchema, {\n\t\ttarget: \"openApi3\",\n\t\t$refStrategy: \"none\",\n\t}) as OpenAPIV3.SchemaObject;\n};\n\nconst instanceofZodType = (type: any): type is z.ZodTypeAny => {\n\treturn !!type?._def?.typeName;\n};\n\ntype OpenApiInfo = {\n\ttitle: string;\n\tdescription: string;\n\tversion: string;\n\turls: string[];\n};\n\n// Main function\nexport async function generateOpenApiInfo(\n\trouter: ReturnType<typeof createOpenApiServerActionRouter>,\n\t{ title, description, version, urls }: OpenApiInfo\n) {\n\tconst routes = router.getRoutes();\n\tconst paths: Record<string, any> = {};\n\n\tfor (const route in routes) {\n\t\tconst routeConfig = routes[route];\n\t\tif (!routeConfig) continue;\n\n\t\tpaths[route] = {};\n\n\t\t// Handle GET, POST, PUT, DELETE methods\n\t\tconst methods = [\"GET\", \"POST\", \"PUT\", \"DELETE\"] as const;\n\t\tfor (const method of methods) {\n\t\t\tif (routeConfig[method]) {\n\t\t\t\tpaths[route][method.toLowerCase()] = await generateMethodSpec(method, route, routeConfig[method]);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\topenapi: \"3.0.1\",\n\t\tinfo: {\n\t\t\ttitle,\n\t\t\tversion,\n\t\t\tdescription,\n\t\t},\n\t\tservers: urls.map((url) => ({ url })),\n\t\tcomponents: {\n\t\t\tsecuritySchemes,\n\t\t\tresponses: { error: errorResponseObject },\n\t\t},\n\t\tpaths,\n\t};\n}\n\n// Helper functions for generating method specifications\nasync function generateMethodSpec(method: \"GET\" | \"POST\" | \"PUT\" | \"DELETE\", route: string, config: any) {\n\tconst schemas = await config.client.schemas();\n\tconst pathParams = getPathParameters(route);\n\n\tconst baseSpec = {\n\t\toperationId: route.replace(/\\./g, \"-\"),\n\t\tsummary: schemas.metadata?.name || \"Name Metadata missing\",\n\t\tdescription: schemas.metadata?.description || \"Description Metadata missing\",\n\t\tsecurity: Object.keys(securitySchemes).map((name) => ({ [name]: [] })),\n\t\ttags: schemas.metadata?.tags || [],\n\t\tresponses: getResponsesObject(schemas.outputSchema),\n\t};\n\n\tif (method === \"GET\") {\n\t\treturn {\n\t\t\t...baseSpec,\n\t\t\tparameters: getParameterObjects(schemas.inputSchema, pathParams, \"all\"),\n\t\t};\n\t} else if (method === \"POST\" || method === \"PUT\") {\n\t\treturn {\n\t\t\t...baseSpec,\n\t\t\trequestBody: getRequestBodyObject(schemas.inputSchema, pathParams, [\"application/json\"]),\n\t\t\tparameters:\n\t\t\t\tmethod === \"POST\"\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"a\",\n\t\t\t\t\t\t\t\tin: \"path\",\n\t\t\t\t\t\t\t\trequired: true,\n\t\t\t\t\t\t\t\tschema: zodSchemaToOpenApiSchemaObject(z.string()),\n\t\t\t\t\t\t\t\tdescription: \"test\",\n\t\t\t\t\t\t\t\texample: \"test\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t]\n\t\t\t\t\t: undefined,\n\t\t};\n\t} else {\n\t\treturn baseSpec;\n\t}\n}\n\nconst errorResponseObject: OpenAPIV3.ResponseObject = {\n\tdescription: \"Error response\",\n\tcontent: {\n\t\t\"application/json\": {\n\t\t\tschema: zodSchemaToOpenApiSchemaObject(\n\t\t\t\tz.object({\n\t\t\t\t\tmessage: z.string(),\n\t\t\t\t\tcode: z.string(),\n\t\t\t\t})\n\t\t\t),\n\t\t},\n\t},\n};\n\nconst getRequestBodyObject = (\n\tschema: unknown,\n\tpathParameters: string[],\n\tcontentTypes: OpenApiContentType[]\n): OpenAPIV3.RequestBodyObject | undefined => {\n\tif (!instanceofZodType(schema)) {\n\t\tthrow new Error(\"Input parser expects a Zod validator (request body)\");\n\t}\n\n\tconst isRequired = !schema.isOptional();\n\tconst unwrappedSchema = unwrapZodType(schema, true);\n\n\tif (pathParameters.length === 0 && instanceofZodTypeLikeVoid(unwrappedSchema)) {\n\t\treturn undefined;\n\t}\n\n\t// if all keys are path parameters\n\tif (pathParameters.length > 0 && Object.keys(unwrappedSchema).length === 0) {\n\t\treturn undefined;\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\tconst openApiSchemaObject = zodSchemaToOpenApiSchemaObject(unwrappedSchema);\n\tconst content: OpenAPIV3.RequestBodyObject[\"content\"] = {};\n\tfor (const contentType of contentTypes) {\n\t\tcontent[contentType] = {\n\t\t\tschema: openApiSchemaObject,\n\t\t};\n\t}\n\n\treturn {\n\t\trequired: isRequired,\n\t\tcontent,\n\t};\n};\n\nconst getResponsesObject = (\n\tschema: unknown,\n\texample?: Record<string, any>,\n\theaders?: Record<string, OpenAPIV3.HeaderObject | OpenAPIV3.ReferenceObject>\n): OpenAPIV3.ResponsesObject => {\n\tif (schema !== undefined && !instanceofZodType(schema)) {\n\t\tthrow new Error(\"Output parser must be a ZodObject\");\n\t}\n\n\tconst successResponseObject: OpenAPIV3.ResponseObject = {\n\t\tdescription: \"Successful response\",\n\t\theaders: headers,\n\t\tcontent: {\n\t\t\t\"application/json\": {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\t\tschema: zodSchemaToOpenApiSchemaObject(schema || z.unknown()),\n\t\t\t\texample,\n\t\t\t},\n\t\t},\n\t};\n\n\treturn {\n\t\t200: successResponseObject,\n\t\t500: {\n\t\t\t$ref: \"#/components/responses/error\",\n\t\t},\n\t};\n};\n\nconst getParameterObjects = (\n\tschema: unknown,\n\tpathParameters: string[],\n\tinType: \"all\" | \"path\" | \"query\"\n): OpenAPIV3.ParameterObject[] | undefined => {\n\tif (!instanceofZodType(schema)) {\n\t\tthrow new Error(\"Input parser expects a Zod validator\");\n\t}\n\n\tconst isRequired = !schema.isOptional();\n\tconst unwrappedSchema = unwrapZodType(schema, true);\n\n\tif (pathParameters.length === 0 && instanceofZodTypeLikeVoid(unwrappedSchema)) {\n\t\treturn undefined;\n\t}\n\n\tif (!instanceofZodTypeObject(unwrappedSchema)) {\n\t\tthrow new Error(\"Input parser must be a ZodObject\");\n\t}\n\n\tconst shape = unwrappedSchema.shape;\n\tconst shapeKeys = Object.keys(shape);\n\n\tfor (const pathParameter of pathParameters) {\n\t\tif (!shapeKeys.includes(pathParameter)) {\n\t\t\tthrow new Error(`Input parser expects key from path: \"${pathParameter}\"`);\n\t\t}\n\t}\n\n\treturn shapeKeys\n\t\t.filter((shapeKey) => {\n\t\t\tconst isPathParameter = pathParameters.includes(shapeKey);\n\t\t\tif (inType === \"path\") {\n\t\t\t\treturn isPathParameter;\n\t\t\t} else if (inType === \"query\") {\n\t\t\t\treturn !isPathParameter;\n\t\t\t}\n\t\t\treturn true;\n\t\t})\n\t\t.map((shapeKey) => {\n\t\t\tlet shapeSchema = shape[shapeKey]!;\n\t\t\tconst isShapeRequired = !shapeSchema.isOptional();\n\t\t\tconst isPathParameter = pathParameters.includes(shapeKey);\n\n\t\t\tif (!instanceofZodTypeLikeString(shapeSchema)) {\n\t\t\t\tif (zodSupportsCoerce) {\n\t\t\t\t\tif (!instanceofZodTypeCoercible(shapeSchema)) {\n\t\t\t\t\t\tthrow new Error(`Input parser key: \"${shapeKey}\" must be ZodString`);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(`Input parser key: \"${shapeKey}\" must be ZodString`);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (instanceofZodTypeOptional(shapeSchema)) {\n\t\t\t\tif (isPathParameter) {\n\t\t\t\t\tthrow new Error(`Path parameter: \"${shapeKey}\" must not be optional`);\n\t\t\t\t}\n\t\t\t\tshapeSchema = shapeSchema.unwrap();\n\t\t\t}\n\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t\tconst { description, ...openApiSchemaObject } = zodSchemaToOpenApiSchemaObject(shapeSchema);\n\n\t\t\treturn {\n\t\t\t\tname: shapeKey,\n\t\t\t\tin: isPathParameter ? \"path\" : \"query\",\n\t\t\t\trequired: isPathParameter || (isRequired && isShapeRequired),\n\t\t\t\tschema: openApiSchemaObject,\n\t\t\t\tdescription: description,\n\t\t\t\t// example: example?.[shapeKey]\n\t\t\t};\n\t\t});\n};\n","/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { z } from \"zod\";\n\nexport const acceptsRequestBody = (method: string) => {\n\tif (method === \"GET\" || method === \"DELETE\") {\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nexport const normalizePath = (path: string) => {\n\treturn `/${path.replace(/^\\/|\\/$/g, \"\")}`;\n};\n\nexport const getPathParameters = (path: string) => {\n\treturn Array.from(path.matchAll(/\\{(.+?)\\}/g)).map(([_, key]) => key!);\n};\n\nexport const preparePathForMatching = (path: string) => {\n\treturn path.replace(/\\{/g, \":\").replace(/\\}/g, \"\");\n};\n\nexport const getPathRegExp = (path: string) => {\n\tconst groupedExp = path.replace(/\\{(.+?)\\}/g, (_, key: string) => `(?<${key}>[^/]+)`);\n\treturn new RegExp(`^${groupedExp}$`, \"i\");\n};\n\nconst FORM_DATA_CONTENT_TYPE = \"application/x-www-form-urlencoded\";\nconst MULTI_PART_CONTENT_TYPE = \"multipart/form-data\";\nconst JSON_CONTENT_TYPE = \"application/json\";\nconst TEXT_PLAIN = \"text/plain\";\n\nexport type OpenApiContentType =\n\t| typeof FORM_DATA_CONTENT_TYPE\n\t| typeof JSON_CONTENT_TYPE\n\t| typeof MULTI_PART_CONTENT_TYPE\n\t| typeof TEXT_PLAIN\n\t| (string & {});\n\nexport const instanceofZodTypeObject = (type: z.ZodTypeAny): type is z.ZodObject<z.ZodRawShape> => {\n\treturn instanceofZodTypeKind(type, z.ZodFirstPartyTypeKind.ZodObject);\n};\n\nexport const instanceofZodTypeKind = <Z extends z.ZodFirstPartyTypeKind>(\n\ttype: z.ZodTypeAny,\n\tzodTypeKind: Z\n): type is InstanceType<(typeof z)[Z]> => {\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\treturn type?._def?.typeName === zodTypeKind;\n};\n\nexport const unwrapZodType = (type: z.ZodTypeAny, unwrapPreprocess: boolean): z.ZodTypeAny => {\n\tif (instanceofZodTypeKind(type, z.ZodFirstPartyTypeKind.ZodOptional)) {\n\t\treturn unwrapZodType(type.unwrap(), unwrapPreprocess);\n\t}\n\tif (instanceofZodTypeKind(type, z.ZodFirstPartyTypeKind.ZodDefault)) {\n\t\treturn unwrapZodType(type.removeDefault(), unwrapPreprocess);\n\t}\n\tif (instanceofZodTypeKind(type, z.ZodFirstPartyTypeKind.ZodLazy)) {\n\t\treturn unwrapZodType(type._def.getter(), unwrapPreprocess);\n\t}\n\tif (instanceofZodTypeKind(type, z.ZodFirstPartyTypeKind.ZodEffects)) {\n\t\tif (type._def.effect.type === \"refinement\") {\n\t\t\treturn unwrapZodType(type._def.schema, unwrapPreprocess);\n\t\t}\n\t\tif (type._def.effect.type === \"transform\") {\n\t\t\treturn unwrapZodType(type._def.schema, unwrapPreprocess);\n\t\t}\n\t\tif (unwrapPreprocess && type._def.effect.type === \"preprocess\") {\n\t\t\treturn unwrapZodType(type._def.schema, unwrapPreprocess);\n\t\t}\n\t}\n\n\treturn type;\n};\n\nexport type ZodTypeLikeVoid = z.ZodVoid | z.ZodUndefined | z.ZodNever;\n\nexport const instanceofZodTypeLikeVoid = (type: z.ZodTypeAny): type is ZodTypeLikeVoid => {\n\treturn (\n\t\tinstanceofZodTypeKind(type, z.ZodFirstPartyTypeKind.ZodVoid) ||\n\t\tinstanceofZodTypeKind(type, z.ZodFirstPartyTypeKind.ZodUndefined) ||\n\t\tinstanceofZodTypeKind(type, z.ZodFirstPartyTypeKind.ZodNever)\n\t);\n};\n\ntype NativeEnumType = {\n\t[k: string]: string | number;\n\t[nu: number]: string;\n};\n\nexport type ZodTypeLikeString =\n\t| z.ZodString\n\t| z.ZodOptional<ZodTypeLikeString>\n\t| z.ZodDefault<ZodTypeLikeString>\n\t| z.ZodEffects<ZodTypeLikeString, unknown, unknown>\n\t| z.ZodUnion<[ZodTypeLikeString, ...ZodTypeLikeString[]]>\n\t| z.ZodIntersection<ZodTypeLikeString, ZodTypeLikeString>\n\t| z.ZodLazy<ZodTypeLikeString>\n\t| z.ZodLiteral<string>\n\t| z.ZodEnum<[string, ...string[]]>\n\t| z.ZodNativeEnum<NativeEnumType>;\n\nexport const instanceofZodTypeLikeString = (_type: z.ZodTypeAny): _type is ZodTypeLikeString => {\n\tconst type = unwrapZodType(_type, false);\n\n\tif (instanceofZodTypeKind(type, z.ZodFirstPartyTypeKind.ZodEffects)) {\n\t\tif (type._def.effect.type === \"preprocess\") {\n\t\t\treturn true;\n\t\t}\n\t}\n\tif (instanceofZodTypeKind(type, z.ZodFirstPartyTypeKind.ZodUnion)) {\n\t\treturn !type._def.options.some((option) => !instanceofZodTypeLikeString(option));\n\t}\n\tif (instanceofZodTypeKind(type, z.ZodFirstPartyTypeKind.ZodIntersection)) {\n\t\treturn instanceofZodTypeLikeString(type._def.left) && instanceofZodTypeLikeString(type._def.right);\n\t}\n\tif (instanceofZodTypeKind(type, z.ZodFirstPartyTypeKind.ZodLiteral)) {\n\t\treturn typeof type._def.value === \"string\";\n\t}\n\tif (instanceofZodTypeKind(type, z.ZodFirstPartyTypeKind.ZodEnum)) {\n\t\treturn true;\n\t}\n\tif (instanceofZodTypeKind(type, z.ZodFirstPartyTypeKind.ZodNativeEnum)) {\n\t\treturn !Object.values(type._def.values).some((value) => typeof value === \"number\");\n\t}\n\treturn instanceofZodTypeKind(type, z.ZodFirstPartyTypeKind.ZodString);\n};\n\nexport const zodSupportsCoerce = \"coerce\" in z;\n\nexport type ZodTypeCoercible = z.ZodNumber | z.ZodBoolean | z.ZodBigInt | z.ZodDate;\n\nexport const instanceofZodTypeCoercible = (_type: z.ZodTypeAny): _type is ZodTypeCoercible => {\n\tconst type = unwrapZodType(_type, false);\n\treturn (\n\t\tinstanceofZodTypeKind(type, z.ZodFirstPartyTypeKind.ZodNumber) ||\n\t\tinstanceofZodTypeKind(type, z.ZodFirstPartyTypeKind.ZodBoolean) ||\n\t\tinstanceofZodTypeKind(type, z.ZodFirstPartyTypeKind.ZodBigInt) ||\n\t\tinstanceofZodTypeKind(type, z.ZodFirstPartyTypeKind.ZodDate)\n\t);\n};\n\nexport const instanceofZodTypeOptional = (type: z.ZodTypeAny): type is z.ZodOptional<z.ZodTypeAny> => {\n\treturn instanceofZodTypeKind(type, z.ZodFirstPartyTypeKind.ZodOptional);\n};\n"],"mappings":"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","names":["z","z"]}