@sohcah/openapi-generator 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["type: t.TSType","options: DefaultSchemaGeneratorOptions","t","schema: SchemaObject | ReferenceObject","typeMeta: ExpressionWithType[\"typeMeta\"]","expression: ExpressionWithType","expression: t.Expression","typeDecoded: t.TSType","typeEncoded: t.TSType","schema","expressions: ExpressionWithType[]","operationKey: generationHelpers.OperationKey","method: OperationObject","schema: SchemaObject","_path: string","_method: \"get\" | \"post\" | \"put\" | \"delete\"","operation: OperationObject","options: SchemaGeneratorOptions","t","pattern: string","key: t.Expression","value: t.Expression","schema: t.Expression","t","expression: t.Expression","extension: string","args: t.Expression[]","pattern: string","key: t.Expression","value: t.Expression","schema: t.Expression","options: OpenApiClientGeneratorOptions","t"],"sources":["../../src/generators/schema.ts","../../src/generators/effect.ts","../../src/generators/zod.ts","../../src/generators/client.ts"],"sourcesContent":["import * as t from \"@babel/types\";\nimport type {\n OperationObject,\n ReferenceObject,\n SchemaObject,\n} from \"../types.js\";\nimport { Effect } from \"effect\";\nimport { DocumentContext } from \"../context.js\";\nimport * as generationHelpers from \"./helpers.js\";\nimport type { YieldWrap } from \"effect/Utils\";\nimport type { ImportReference, OpenApiSchemaGenerator } from \"./types.js\";\nimport { NotImplementedError } from \"../errors.js\";\n\nexport interface SchemaGeneratorOptions {\n /** @default null */\n custom?: (schema: SchemaObject) => ImportReference | null;\n\n /** @default false */\n experimental_includeTypes?: boolean;\n\n /** @default true */\n includeSchemas?: boolean;\n\n /** @default false */\n includeOperations?: boolean;\n\n /** @default \"unknown\" */\n deprecationHandling?: \"unknown\" | \"optional\";\n}\n\nexport interface DefaultSchemaGeneratorOptions extends SchemaGeneratorOptions {\n modifiers: {\n lazy: (expression: t.Expression) => t.Expression;\n optional: (expression: t.Expression) => t.Expression;\n regex: (expression: t.Expression, pattern: string) => t.Expression;\n immutable: (expression: t.Expression) => t.Expression;\n mutable: (expression: t.Expression) => t.Expression;\n nullable: (expression: t.Expression) => t.Expression;\n };\n types: {\n schema: t.TSQualifiedName;\n typeDecoded: t.TSQualifiedName;\n typeEncoded: t.TSQualifiedName;\n };\n schema: {\n record: (key: t.Expression, value: t.Expression) => t.Expression;\n union: (expressions: t.Expression[]) => t.Expression;\n enum: (expressions: t.Expression[]) => t.Expression;\n instanceOf: t.Expression;\n boolean: t.Expression;\n string: t.Expression;\n number: t.Expression;\n integer: t.Expression;\n array: t.Expression;\n object: t.Expression;\n null: t.Expression;\n unknown: t.Expression;\n };\n transformer: (options: {\n encoded: t.Expression;\n decoded: t.Expression;\n decode: t.Expression | t.BlockStatement;\n encode: t.Expression | t.BlockStatement;\n }) => t.Expression;\n transformerCatch: (expression: t.Expression) => t.BlockStatement;\n builtins: {\n parseJson?: (expression: t.Expression) => t.Expression;\n };\n methods: {\n encode: (schema: t.Expression, value: t.Expression) => t.Expression;\n decode: (schema: t.Expression, value: t.Expression) => t.Expression;\n parse: (schema: t.Expression, value: t.Expression) => t.Expression;\n };\n supportsImmutability: boolean;\n}\n\ntype ExpressionWithType = {\n expression: t.Expression;\n typeDecoded: t.TSType;\n typeEncoded: t.TSType;\n typeMeta: {\n readonly?: boolean;\n optional?: boolean;\n };\n};\n\nconst equivalentType = (type: t.TSType) => ({\n typeDecoded: type,\n typeEncoded: type,\n});\n\nfunction defaultParseJson(\n options: DefaultSchemaGeneratorOptions\n): (expression: t.Expression) => t.Expression {\n return (expression) =>\n options.transformer({\n encoded: options.schema.string,\n decoded: expression,\n decode: t.blockStatement([\n t.tryStatement(\n t.blockStatement([\n t.returnStatement(\n t.callExpression(\n t.memberExpression(t.identifier(\"JSON\"), t.identifier(\"parse\")),\n [t.identifier(\"from\")]\n )\n ),\n ]),\n t.catchClause(\n Object.assign(t.identifier(\"error\"), {\n typeAnnotation: t.tsTypeAnnotation(t.tsUnknownKeyword()),\n }),\n options.transformerCatch(t.identifier(\"error\"))\n )\n ),\n ]),\n encode: t.callExpression(\n t.memberExpression(t.identifier(\"JSON\"), t.identifier(\"stringify\")),\n [t.identifier(\"from\")]\n ),\n });\n}\n\nexport function createSchemaGenerator(\n options: DefaultSchemaGeneratorOptions\n): OpenApiSchemaGenerator {\n const ensureStandardParametersSchema = Effect.fn(function* () {\n const ctx = yield* DocumentContext;\n if (!ctx.schemas.has(\"ParametersSchema\")) {\n ctx.schemas.set(\"ParametersSchema\", [\n t.exportNamedDeclaration(\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(\n t.identifier(\"ParametersSchema\"),\n t.callExpression(options.schema.object, [\n t.objectExpression([\n t.objectProperty(\n t.identifier(\"query\"),\n options.modifiers.optional(\n t.callExpression(options.schema.instanceOf, [\n t.identifier(\"URLSearchParams\"),\n ])\n )\n ),\n t.objectProperty(\n t.identifier(\"headers\"),\n options.modifiers.optional(\n t.callExpression(options.schema.instanceOf, [\n t.identifier(\"Headers\"),\n ])\n )\n ),\n t.objectProperty(\n t.identifier(\"path\"),\n options.modifiers.optional(\n options.schema.record(\n options.schema.string,\n options.schema.string\n )\n )\n ),\n t.objectProperty(\n t.identifier(\"body\"),\n options.modifiers.optional(\n options.schema.union([\n options.schema.string,\n t.callExpression(options.schema.instanceOf, [\n t.identifier(\"Blob\"),\n ]),\n ])\n )\n ),\n ]),\n ])\n ),\n ])\n ),\n ]);\n }\n\n return t.identifier(\"ParametersSchema\");\n });\n\n const getBaseEffectSchema = Effect.fn(function* (\n schema: SchemaObject | ReferenceObject\n ) {\n const ctx = yield* DocumentContext;\n\n const typeMeta: ExpressionWithType[\"typeMeta\"] = {};\n\n if (\"$ref\" in schema) {\n const ref = schema.$ref;\n if (!ref.startsWith(\"#/components/schemas/\"))\n return yield* new NotImplementedError({\n message: `$ref ${ref}`,\n });\n const schemaName = ref.slice(\"#/components/schemas/\".length);\n const schemaKey = yield* generationHelpers.getKey(schemaName);\n\n const resolvedSchema = ctx.document.components?.schemas?.[schemaName];\n if (!resolvedSchema) {\n return yield* new NotImplementedError({\n message: `Missing $ref ${ref}`,\n });\n }\n\n if (ctx.processingSchemas.has(schemaName)) {\n const fn = t.arrowFunctionExpression([], t.identifier(schemaKey.upper));\n if (ctx.processingSchemaTypes.has(schemaName)) {\n return {\n expression: t.nullLiteral(),\n typeDecoded: t.tsTypeReference(\n options.types.typeDecoded,\n t.tsTypeParameterInstantiation([\n t.tsTypeQuery(t.identifier(schemaKey.upper)),\n ])\n ),\n typeEncoded: t.tsTypeReference(\n options.types.typeEncoded,\n t.tsTypeParameterInstantiation([\n t.tsTypeQuery(t.identifier(schemaKey.upper)),\n ])\n ),\n typeMeta,\n };\n }\n ctx.processingSchemaTypes.add(schemaName);\n const typeSchema = yield* ensureSchema(resolvedSchema);\n fn.returnType = t.tsTypeAnnotation(\n t.tsTypeReference(\n options.types.schema,\n t.tsTypeParameterInstantiation([\n typeSchema.typeDecoded,\n typeSchema.typeEncoded,\n ])\n )\n );\n ctx.processingSchemaTypes.delete(schemaName);\n return {\n expression: options.modifiers.lazy(fn),\n typeDecoded: t.tsTypeReference(\n options.types.typeDecoded,\n t.tsTypeParameterInstantiation([\n t.tsTypeQuery(t.identifier(schemaKey.upper)),\n ])\n ),\n typeEncoded: t.tsTypeReference(\n options.types.typeEncoded,\n t.tsTypeParameterInstantiation([\n t.tsTypeQuery(t.identifier(schemaKey.upper)),\n ])\n ),\n typeMeta,\n };\n }\n\n if (!ctx.schemas.has(schemaName)) {\n ctx.processingSchemas.add(schemaName);\n\n const schemaExpression = yield* ensureSchema(resolvedSchema);\n\n const schemaKeyIdentifier = t.identifier(schemaKey.upper);\n if (options.experimental_includeTypes) {\n schemaKeyIdentifier.typeAnnotation = t.tsTypeAnnotation(\n t.tsTypeReference(\n options.types.schema,\n t.tsTypeParameterInstantiation([\n schemaExpression.typeDecoded,\n schemaExpression.typeEncoded,\n ])\n )\n );\n }\n\n ctx.schemas.set(schemaName, [\n t.exportNamedDeclaration(\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(\n schemaKeyIdentifier,\n schemaExpression.expression\n ),\n ])\n ),\n\n t.exportNamedDeclaration(\n t.tsTypeAliasDeclaration(\n t.identifier(schemaKey.upper),\n null,\n t.tsTypeReference(\n options.types.typeDecoded,\n t.tsTypeParameterInstantiation([\n t.tsTypeQuery(t.identifier(schemaKey.upper)),\n ])\n )\n )\n ),\n ]);\n ctx.processingSchemas.delete(schemaName);\n }\n\n return {\n expression: t.identifier(schemaKey.upper),\n typeDecoded: t.tsTypeReference(\n options.types.typeDecoded,\n t.tsTypeParameterInstantiation([\n t.tsTypeQuery(t.identifier(schemaKey.upper)),\n ])\n ),\n typeEncoded: t.tsTypeReference(\n options.types.typeEncoded,\n t.tsTypeParameterInstantiation([\n t.tsTypeQuery(t.identifier(schemaKey.upper)),\n ])\n ),\n typeMeta,\n };\n }\n\n if (schema.deprecated) {\n if (options.deprecationHandling === \"optional\") {\n typeMeta.optional = true;\n } else {\n return {\n expression: options.modifiers.optional(options.schema.unknown),\n ...equivalentType(t.tsUnionType([t.tsUnknownKeyword(), t.tsUndefinedKeyword()])),\n typeMeta,\n };\n }\n }\n\n const customResult = options.custom?.(schema);\n\n if (customResult) {\n const identifier = yield* generationHelpers.ensureImport(\n customResult.name,\n customResult.from\n );\n const returnType = t.tsTypeReference(\n t.identifier(\"ReturnType\"),\n t.tsTypeParameterInstantiation([t.tsTypeQuery(identifier)])\n );\n return {\n expression: t.callExpression(identifier, []),\n typeDecoded: t.tsTypeReference(\n options.types.typeDecoded,\n t.tsTypeParameterInstantiation([returnType])\n ),\n typeEncoded: t.tsTypeReference(\n options.types.typeEncoded,\n t.tsTypeParameterInstantiation([returnType])\n ),\n typeMeta,\n };\n }\n\n if (schema.enum) {\n const unsupportedEnumValue = schema.enum.find(\n (i) => typeof i !== \"string\"\n );\n if (unsupportedEnumValue !== undefined) {\n return yield* new NotImplementedError({\n message: `Unsupported 'enum' value: ${JSON.stringify(unsupportedEnumValue)}`,\n });\n }\n return {\n expression: options.schema.enum(\n schema.enum.map((e) => t.stringLiteral(e as string))\n ),\n ...equivalentType(\n t.tsUnionType(\n schema.enum.map((e) =>\n t.tsLiteralType(t.stringLiteral(e as string))\n )\n )\n ),\n typeMeta,\n };\n }\n\n switch (schema.type) {\n case \"boolean\": {\n return {\n expression: options.schema.boolean,\n ...equivalentType(t.tsBooleanKeyword()),\n typeMeta,\n };\n }\n case \"string\": {\n let expression: ExpressionWithType = {\n expression: options.schema.string,\n ...equivalentType(t.tsStringKeyword()),\n typeMeta,\n };\n if (schema.pattern) {\n expression.expression = options.modifiers.regex(\n expression.expression,\n schema.pattern\n );\n }\n return expression;\n }\n case \"number\": {\n return {\n expression: options.schema.number,\n ...equivalentType(t.tsNumberKeyword()),\n typeMeta,\n };\n }\n case \"integer\": {\n return {\n expression: options.schema.integer,\n ...equivalentType(t.tsNumberKeyword()),\n typeMeta,\n };\n }\n case \"object\": {\n const object = t.objectExpression([]);\n const objectTypeDecoded = t.tsTypeLiteral([]);\n const objectTypeEncoded = t.tsTypeLiteral([]);\n for (const [propertyKey, property] of Object.entries(\n schema.properties ?? {}\n )) {\n let propertySchema = yield* ensureSchema(property);\n const decodedMember = t.tsPropertySignature(\n t.identifier(propertyKey),\n t.tsTypeAnnotation(propertySchema.typeDecoded)\n );\n const encodedMember = t.tsPropertySignature(\n t.identifier(propertyKey),\n t.tsTypeAnnotation(propertySchema.typeEncoded)\n );\n decodedMember.readonly = !!propertySchema.typeMeta?.readonly;\n encodedMember.readonly = !!propertySchema.typeMeta?.readonly;\n if (propertySchema.typeMeta?.optional || !schema.required?.includes(propertyKey)) {\n propertySchema.expression = options.modifiers.optional(\n propertySchema.expression\n );\n decodedMember.optional = true;\n encodedMember.optional = true;\n }\n const objectProperty = t.objectProperty(\n t.identifier(propertyKey),\n propertySchema.expression\n );\n if (property.description) {\n t.addComment(\n objectProperty,\n \"leading\",\n `* ${property.description}`\n );\n }\n object.properties.push(objectProperty);\n objectTypeDecoded.members.push(decodedMember);\n objectTypeEncoded.members.push(encodedMember);\n }\n return {\n expression: t.callExpression(options.schema.object, [object]),\n typeDecoded: objectTypeDecoded,\n typeEncoded: objectTypeEncoded,\n typeMeta,\n };\n }\n case \"array\": {\n const itemsSchema = yield* ensureSchema(schema.items);\n let expression: t.Expression = t.callExpression(options.schema.array, [\n itemsSchema.expression,\n ]);\n let typeDecoded: t.TSType = t.tsArrayType(itemsSchema.typeDecoded);\n let typeEncoded: t.TSType = t.tsArrayType(itemsSchema.typeEncoded);\n if (options.supportsImmutability) {\n if (itemsSchema.typeMeta?.readonly) {\n expression = options.modifiers.immutable(expression);\n typeDecoded = t.tsTypeOperator(typeDecoded, \"readonly\");\n typeEncoded = t.tsTypeOperator(typeEncoded, \"readonly\");\n } else {\n expression = options.modifiers.mutable(expression);\n }\n }\n return {\n expression,\n typeDecoded,\n typeEncoded,\n typeMeta,\n };\n }\n case \"null\": {\n return {\n expression: options.schema.null,\n ...equivalentType(t.tsNullKeyword()),\n typeMeta,\n };\n }\n case undefined: {\n return {\n expression: options.schema.unknown,\n ...equivalentType(t.tsUnknownKeyword()),\n typeMeta,\n };\n }\n default: {\n console.info(schema);\n return yield* new NotImplementedError({\n message: `type ${schema.type}`,\n });\n }\n }\n });\n\n const applyModifiers = Effect.fn(function* (\n expression: ExpressionWithType,\n schema: SchemaObject | ReferenceObject\n ) {\n if (\"$ref\" in schema) return expression;\n\n const modified = { ...expression };\n\n // OpenAPI v3.0 support\n if (\"nullable\" in schema && schema.nullable) {\n modified.expression = options.modifiers.nullable(modified.expression);\n modified.typeDecoded = t.tsUnionType([\n modified.typeDecoded,\n t.tsNullKeyword(),\n ]);\n modified.typeEncoded = t.tsUnionType([\n modified.typeEncoded,\n t.tsNullKeyword(),\n ]);\n }\n\n if (options.supportsImmutability) {\n if (schema.readOnly) {\n modified.expression = options.modifiers.immutable(modified.expression);\n modified.typeMeta ??= {};\n modified.typeMeta.readonly = true;\n } else {\n modified.expression = options.modifiers.mutable(modified.expression);\n }\n }\n\n return modified;\n });\n\n const ensureSchema = Effect.fn(function* (\n schema: SchemaObject | ReferenceObject\n ): Generator<\n YieldWrap<\n Effect.Effect<ExpressionWithType, NotImplementedError, DocumentContext>\n >,\n ExpressionWithType,\n never\n > {\n let schemas = [schema]\n .flatMap<SchemaObject | ReferenceObject>((schema) => {\n if (\"$ref\" in schema) return [schema];\n if (schema.oneOf) {\n return schema.oneOf;\n }\n return [schema];\n })\n .flatMap<SchemaObject | ReferenceObject>((schema) => {\n if (\"$ref\" in schema) return [schema];\n if (Array.isArray(schema.type)) {\n return schema.type.map(\n (type) =>\n ({\n ...schema,\n type,\n }) as SchemaObject\n );\n }\n return [schema];\n });\n\n const expressions: ExpressionWithType[] = [];\n for (const schema of schemas) {\n expressions.push(\n yield* applyModifiers(yield* getBaseEffectSchema(schema), schema)\n );\n }\n\n if (expressions.length !== 1) {\n return {\n expression: options.schema.union(expressions.map((e) => e.expression)),\n typeDecoded: t.tsUnionType(expressions.map((e) => e.typeDecoded)),\n typeEncoded: t.tsUnionType(expressions.map((e) => e.typeEncoded)),\n typeMeta: {},\n };\n }\n\n return expressions[0]!;\n });\n\n const ensureParametersSchema = Effect.fn(function* (\n operationKey: generationHelpers.OperationKey,\n method: OperationObject\n ) {\n const ctx = yield* DocumentContext;\n const identifier = t.identifier(`${operationKey.upper}_Parameters`);\n const object = t.objectExpression([]);\n\n const queryArray = t.arrayExpression([]);\n const pathObject = t.objectExpression([]);\n const headerArray = t.arrayExpression([]);\n let hasBody = false;\n\n for (const parameter of method.parameters ?? []) {\n if (\"$ref\" in parameter) {\n return yield* new NotImplementedError({\n message: \"$ref in parameter\",\n });\n }\n if (!parameter.schema) {\n return yield* new NotImplementedError({\n message: \"parameter without schema\",\n });\n }\n let expression = (yield* ensureSchema(parameter.schema)).expression;\n if (!parameter.required) {\n expression = options.modifiers.optional(expression);\n }\n const objectProperty = t.objectProperty(\n t.identifier(parameter.name),\n expression\n );\n if (parameter.description) {\n t.addComment(objectProperty, \"leading\", `* ${parameter.description}`);\n }\n object.properties.push(objectProperty);\n if (parameter.in === \"query\") {\n const param = t.memberExpression(\n t.identifier(\"from\"),\n t.identifier(parameter.name)\n );\n if (\"type\" in parameter.schema && parameter.schema.type === \"array\") {\n queryArray.elements.push(\n t.spreadElement(\n t.logicalExpression(\n \"??\",\n Object.assign(\n t.optionalCallExpression(\n t.optionalMemberExpression(param, t.identifier(\"map\"), false, true),\n [\n t.arrowFunctionExpression(\n [t.identifier(\"value\")],\n t.arrayExpression([\n t.stringLiteral(parameter.name),\n t.callExpression(t.identifier(\"String\"), [\n t.identifier(\"value\"),\n ]),\n ])\n ),\n ],\n false,\n ),\n {\n typeParameters: t.tsTypeParameterInstantiation([\n t.tsTypeReference(t.identifier(\"[string, string]\")),\n ]),\n }\n ),\n t.arrayExpression([])\n ),\n )\n );\n } else {\n queryArray.elements.push(\n t.arrayExpression([\n t.stringLiteral(parameter.name),\n t.callExpression(t.identifier(\"String\"), [param]),\n ])\n );\n }\n } else if (parameter.in === \"path\") {\n pathObject.properties.push(\n t.objectProperty(\n t.identifier(parameter.name),\n t.callExpression(t.identifier(\"String\"), [\n t.memberExpression(\n t.identifier(\"from\"),\n t.identifier(parameter.name)\n ),\n ])\n )\n );\n } else if (parameter.in === \"header\") {\n headerArray.elements.push(\n t.arrayExpression([\n t.stringLiteral(parameter.name),\n t.callExpression(t.identifier(\"String\"), [\n t.memberExpression(\n t.identifier(\"from\"),\n t.identifier(parameter.name)\n ),\n ]),\n ])\n );\n } else {\n return yield* new NotImplementedError({\n message: `parameter in ${parameter.in}`,\n });\n }\n }\n\n body: if (method.requestBody) {\n if (\"$ref\" in method.requestBody) {\n return yield* new NotImplementedError({\n message: \"$ref in requestBody\",\n });\n }\n // console.info(method.requestBody);\n for (const contentKey in method.requestBody.content) {\n hasBody = true;\n const schema = method.requestBody.content[contentKey]?.schema;\n if (!!schema && contentKey === \"application/json\") {\n object.properties.push(\n t.objectProperty(\n t.identifier(\"data\"),\n (options.builtins.parseJson ?? defaultParseJson(options))(\n (yield* ensureSchema(schema)).expression\n )\n )\n );\n break body;\n } else if (contentKey === \"application/octet-stream\") {\n object.properties.push(\n t.objectProperty(\n t.identifier(\"data\"),\n t.callExpression(options.schema.instanceOf, [\n t.identifier(\"Blob\"),\n ])\n )\n );\n break body;\n }\n }\n return yield* new NotImplementedError({\n message: `No supported requestBody type (${Object.keys(\n method.requestBody.content\n ).join(\", \")})`,\n });\n }\n\n const decodedSchema = t.callExpression(options.schema.object, [object]);\n\n const transform = options.transformer({\n encoded: yield* ensureStandardParametersSchema(),\n decoded: decodedSchema,\n decode: t.blockStatement([\n t.throwStatement(\n t.newExpression(t.identifier(\"Error\"), [\n t.stringLiteral(\"Not implemented\"),\n ])\n ),\n ]),\n encode: t.objectExpression([\n ...(queryArray.elements.length\n ? [\n t.objectProperty(\n t.identifier(\"query\"),\n t.newExpression(t.identifier(\"URLSearchParams\"), [queryArray])\n ),\n ]\n : []),\n ...(pathObject.properties.length\n ? [t.objectProperty(t.identifier(\"path\"), pathObject)]\n : []),\n ...(headerArray.elements.length\n ? [\n t.objectProperty(\n t.identifier(\"header\"),\n t.newExpression(t.identifier(\"Headers\"), [headerArray])\n ),\n ]\n : []),\n ...(hasBody\n ? [\n t.objectProperty(\n t.identifier(\"body\"),\n t.memberExpression(t.identifier(\"from\"), t.identifier(\"data\"))\n ),\n ]\n : []),\n ]),\n });\n\n ctx.schemas.set(identifier.name, [\n t.exportNamedDeclaration(\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(identifier, transform),\n ])\n ),\n ]);\n\n return {\n expression: identifier,\n typeReference: t.tsTypeReference(\n options.types.typeDecoded,\n t.tsTypeParameterInstantiation([t.tsTypeQuery(identifier)])\n ),\n };\n });\n\n const ensureResponseSchema = Effect.fn(function* (\n operationKey: generationHelpers.OperationKey,\n method: OperationObject\n ) {\n const ctx = yield* DocumentContext;\n\n if (!method.responses?.[\"200\"]) return null;\n\n if (\"$ref\" in method.responses[\"200\"])\n return yield* new NotImplementedError({\n message: \"$ref in response\",\n });\n\n if (!method.responses[\"200\"].content) return null;\n\n if (!method.responses[\"200\"].content[\"application/json\"]?.schema)\n return yield* new NotImplementedError({\n message: `response without 'application/json' content schema in ${operationKey.upper}`,\n });\n\n const schema = method.responses[\"200\"].content[\"application/json\"].schema;\n\n const identifier = t.identifier(`${operationKey.upper}_Response`);\n\n const decodedSchema = (yield* ensureSchema(schema)).expression;\n\n const transform = (options.builtins.parseJson ?? defaultParseJson(options))(\n decodedSchema\n );\n\n ctx.schemas.set(identifier.name, [\n t.exportNamedDeclaration(\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(identifier, transform),\n ])\n ),\n ]);\n\n return {\n expression: identifier,\n typeReference: t.tsTypeReference(\n options.types.typeDecoded,\n t.tsTypeParameterInstantiation([t.tsTypeQuery(identifier)])\n ),\n };\n });\n\n const processSchema = Effect.fn(function* (schema: SchemaObject) {\n if (options.includeSchemas ?? true) {\n yield* ensureSchema(schema);\n }\n });\n const processOperation = Effect.fn(function* (\n operationKey: generationHelpers.OperationKey,\n _path: string,\n _method: \"get\" | \"post\" | \"put\" | \"delete\",\n operation: OperationObject\n ) {\n if (options.includeOperations) {\n yield* ensureParametersSchema(operationKey, operation);\n yield* ensureResponseSchema(operationKey, operation);\n }\n });\n return {\n processSchema,\n processOperation,\n ensureParametersSchema,\n ensureResponseSchema,\n get schemaType() {\n return options.types.schema;\n },\n };\n}\n","import * as t from \"@babel/types\";\nimport {\n createSchemaGenerator,\n type SchemaGeneratorOptions,\n} from \"./schema.js\";\nimport { Effect } from \"effect\";\nimport * as generationHelpers from \"./helpers.js\";\n\nexport const createEffectSchemaGenerator = (\n options: SchemaGeneratorOptions\n) => ({\n ...createSchemaGenerator({\n ...options,\n modifiers: {\n lazy: (expression) =>\n t.callExpression(\n t.memberExpression(t.identifier(\"Schema\"), t.identifier(\"suspend\")),\n [expression]\n ),\n optional: (expression) =>\n t.callExpression(t.memberExpression(expression, t.identifier(\"pipe\")), [\n t.memberExpression(t.identifier(\"Schema\"), t.identifier(\"optional\")),\n ]),\n regex: (expression, pattern: string) =>\n t.callExpression(t.memberExpression(expression, t.identifier(\"pipe\")), [\n t.callExpression(\n t.memberExpression(t.identifier(\"Schema\"), t.identifier(\"pattern\")),\n [t.regExpLiteral(pattern)]\n ),\n ]),\n immutable: (expression) => expression,\n mutable: (expression) =>\n t.callExpression(t.memberExpression(expression, t.identifier(\"pipe\")), [\n t.memberExpression(t.identifier(\"Schema\"), t.identifier(\"mutable\")),\n ]),\n nullable: (expression) =>\n t.callExpression(t.memberExpression(expression, t.identifier(\"pipe\")), [\n t.memberExpression(t.identifier(\"Schema\"), t.identifier(\"NullOr\")),\n ]),\n },\n types: {\n schema: t.tsQualifiedName(t.identifier(\"Schema\"), t.identifier(\"Schema\")),\n typeDecoded: t.tsQualifiedName(\n t.tsQualifiedName(t.identifier(\"Schema\"), t.identifier(\"Schema\")),\n t.identifier(\"Type\")\n ),\n typeEncoded: t.tsQualifiedName(\n t.tsQualifiedName(t.identifier(\"Schema\"), t.identifier(\"Schema\")),\n t.identifier(\"Encoded\")\n ),\n },\n schema: {\n record: (key: t.Expression, value: t.Expression) =>\n t.callExpression(\n t.memberExpression(t.identifier(\"Schema\"), t.identifier(\"Record\")),\n [\n t.objectExpression([\n t.objectProperty(t.identifier(\"key\"), key),\n t.objectProperty(t.identifier(\"value\"), value),\n ]),\n ]\n ),\n union: (expressions) =>\n t.callExpression(\n t.memberExpression(t.identifier(\"Schema\"), t.identifier(\"Union\")),\n expressions\n ),\n enum: (expressions) =>\n t.callExpression(\n t.memberExpression(t.identifier(\"Schema\"), t.identifier(\"Literal\")),\n expressions\n ),\n instanceOf: t.memberExpression(\n t.identifier(\"Schema\"),\n t.identifier(\"instanceOf\")\n ),\n boolean: t.memberExpression(\n t.identifier(\"Schema\"),\n t.identifier(\"Boolean\")\n ),\n string: t.memberExpression(\n t.identifier(\"Schema\"),\n t.identifier(\"String\")\n ),\n number: t.memberExpression(\n t.identifier(\"Schema\"),\n t.identifier(\"Number\")\n ),\n integer: t.callExpression(\n t.memberExpression(\n t.memberExpression(t.identifier(\"Schema\"), t.identifier(\"Number\")),\n t.identifier(\"pipe\")\n ),\n [\n t.callExpression(\n t.memberExpression(t.identifier(\"Schema\"), t.identifier(\"int\")),\n []\n ),\n ]\n ),\n array: t.memberExpression(t.identifier(\"Schema\"), t.identifier(\"Array\")),\n object: t.memberExpression(\n t.identifier(\"Schema\"),\n t.identifier(\"Struct\")\n ),\n null: t.memberExpression(t.identifier(\"Schema\"), t.identifier(\"Null\")),\n unknown: t.memberExpression(\n t.identifier(\"Schema\"),\n t.identifier(\"Unknown\")\n ),\n },\n transformer: ({ encoded, decoded, decode, encode }) =>\n t.callExpression(\n t.memberExpression(t.identifier(\"Schema\"), t.identifier(\"transform\")),\n [\n encoded,\n decoded,\n t.objectExpression([\n t.objectProperty(t.identifier(\"strict\"), t.booleanLiteral(true)),\n t.objectProperty(\n t.identifier(\"decode\"),\n t.arrowFunctionExpression(\n [t.identifier(\"from\"), t.identifier(\"ctx\")],\n decode\n )\n ),\n t.objectProperty(\n t.identifier(\"encode\"),\n t.arrowFunctionExpression(\n [t.identifier(\"from\"), t.identifier(\"ctx\")],\n encode\n )\n ),\n ]),\n ]\n ),\n transformerCatch: (expression) =>\n t.blockStatement([t.throwStatement(expression)]),\n builtins: {\n parseJson: (expression) =>\n t.callExpression(\n t.memberExpression(t.identifier(\"Schema\"), t.identifier(\"parseJson\")),\n [expression]\n ),\n },\n methods: {\n encode: (schema: t.Expression, value: t.Expression) =>\n t.callExpression(\n t.callExpression(\n t.memberExpression(\n t.identifier(\"Schema\"),\n t.identifier(\"encodeSync\")\n ),\n [schema]\n ),\n [value]\n ),\n decode: (schema: t.Expression, value: t.Expression) =>\n t.callExpression(\n t.callExpression(\n t.memberExpression(\n t.identifier(\"Schema\"),\n t.identifier(\"decodeSync\")\n ),\n [schema]\n ),\n [value]\n ),\n parse: (schema: t.Expression, value: t.Expression) =>\n t.callExpression(\n t.callExpression(\n t.memberExpression(t.identifier(\"Schema\"), t.identifier(\"decodeUnknownSync\")),\n [schema]\n ),\n [value]\n ),\n },\n supportsImmutability: true,\n }),\n initialize: Effect.fn(function* () {\n yield* generationHelpers.ensureNamespaceImport(\"Schema\", \"effect/Schema\");\n }),\n});\n","import * as t from \"@babel/types\";\nimport {\n createSchemaGenerator,\n type SchemaGeneratorOptions,\n} from \"./schema.js\";\nimport { Effect } from \"effect\";\nimport * as generationHelpers from \"./helpers.js\";\n\nexport interface ZodSchemaGeneratorOptions extends SchemaGeneratorOptions {\n /** @default false */\n mini?: boolean;\n}\n\nexport const createZodSchemaGenerator = ({\n mini = false,\n ...options\n}: ZodSchemaGeneratorOptions) => {\n const z = t.identifier(\"z\");\n\n const maybeExtension = (\n expression: t.Expression,\n extension: string,\n args: t.Expression[]\n ) =>\n mini\n ? t.callExpression(t.memberExpression(z, t.identifier(extension)), [\n expression,\n ...args,\n ])\n : t.callExpression(\n t.memberExpression(expression, t.identifier(extension)),\n args\n );\n\n return {\n ...createSchemaGenerator({\n ...options,\n modifiers: {\n lazy: (expression) =>\n t.callExpression(t.memberExpression(z, t.identifier(\"lazy\")), [\n expression,\n ]),\n optional: (expression) => maybeExtension(expression, \"optional\", []),\n regex: (expression, pattern: string) =>\n maybeExtension(expression, \"regex\", [t.regExpLiteral(pattern)]),\n immutable: (expression) => expression,\n mutable: (expression) => expression,\n nullable: (expression) => maybeExtension(expression, \"nullable\", []),\n },\n types: {\n schema: t.tsQualifiedName(\n z,\n t.identifier(mini ? \"ZodMiniType\" : \"Schema\")\n ),\n typeDecoded: t.tsQualifiedName(z, t.identifier(\"output\")),\n typeEncoded: t.tsQualifiedName(z, t.identifier(\"input\")),\n },\n schema: {\n record: (key: t.Expression, value: t.Expression) =>\n t.callExpression(t.memberExpression(z, t.identifier(\"record\")), [\n key,\n value,\n ]),\n union: (expressions) =>\n t.callExpression(t.memberExpression(z, t.identifier(\"union\")), [\n t.arrayExpression(expressions),\n ]),\n enum: (expressions) =>\n t.callExpression(t.memberExpression(z, t.identifier(\"enum\")), [\n t.arrayExpression(expressions),\n ]),\n instanceOf: t.memberExpression(z, t.identifier(\"instanceof\")),\n boolean: t.callExpression(\n t.memberExpression(z, t.identifier(\"boolean\")),\n []\n ),\n string: t.callExpression(\n t.memberExpression(z, t.identifier(\"string\")),\n []\n ),\n number: t.callExpression(\n t.memberExpression(z, t.identifier(\"number\")),\n []\n ),\n integer: t.callExpression(\n t.memberExpression(z, t.identifier(\"int\")),\n []\n ),\n array: t.memberExpression(z, t.identifier(\"array\")),\n object: t.memberExpression(z, t.identifier(\"object\")),\n null: t.callExpression(t.memberExpression(z, t.identifier(\"null\")), []),\n unknown: t.callExpression(\n t.memberExpression(z, t.identifier(\"unknown\")),\n []\n ),\n },\n transformer: ({ encoded, decoded, decode, encode }) =>\n t.callExpression(t.memberExpression(z, t.identifier(\"codec\")), [\n encoded,\n decoded,\n t.objectExpression([\n t.objectProperty(\n t.identifier(\"decode\"),\n t.arrowFunctionExpression(\n [t.identifier(\"from\"), t.identifier(\"ctx\")],\n decode\n )\n ),\n t.objectProperty(\n t.identifier(\"encode\"),\n t.arrowFunctionExpression(\n [t.identifier(\"from\"), t.identifier(\"ctx\")],\n encode\n )\n ),\n ]),\n ]),\n transformerCatch: (expression) =>\n t.blockStatement([\n t.expressionStatement(\n t.callExpression(\n t.memberExpression(\n t.memberExpression(t.identifier(\"ctx\"), t.identifier(\"issues\")),\n t.identifier(\"push\")\n ),\n [\n t.objectExpression([\n t.objectProperty(\n t.identifier(\"code\"),\n t.stringLiteral(\"custom\")\n ),\n t.objectProperty(t.identifier(\"input\"), t.identifier(\"from\")),\n t.objectProperty(\n t.identifier(\"message\"),\n t.memberExpression(\n t.tsAsExpression(\n expression,\n t.tsTypeReference(t.identifier(\"Error\"))\n ),\n t.identifier(\"message\")\n )\n ),\n ]),\n ]\n )\n ),\n t.returnStatement(\n t.memberExpression(t.identifier(\"z\"), t.identifier(\"NEVER\"))\n ),\n ]),\n builtins: {},\n methods: {\n encode: (schema: t.Expression, value: t.Expression) =>\n t.callExpression(\n t.memberExpression(t.identifier(\"z\"), t.identifier(\"encode\")),\n [schema, value]\n ),\n decode: (schema: t.Expression, value: t.Expression) =>\n t.callExpression(\n t.memberExpression(t.identifier(\"z\"), t.identifier(\"decode\")),\n [schema, value]\n ),\n parse: (schema: t.Expression, value: t.Expression) =>\n t.callExpression(\n t.memberExpression(t.identifier(\"z\"), t.identifier(\"parse\")),\n [schema, value]\n ),\n },\n supportsImmutability: false,\n }),\n initialize: Effect.fn(function* () {\n yield* generationHelpers.ensureImport(\"z\", mini ? \"zod/mini\" : \"zod\");\n }),\n };\n};\n","import * as generationHelpers from \"./helpers.js\";\nimport type {\n ImportReference,\n OpenApiClientGenerator,\n OpenApiSchemaGenerator,\n} from \"./types.js\";\nimport { Effect } from \"effect\";\nimport * as t from \"@babel/types\";\nimport { DocumentContext } from \"../context.js\";\n\nexport interface OpenApiClientGeneratorOptions {\n schema: OpenApiSchemaGenerator;\n /**\n * If provided, responses from the\n */\n responseGeneric?: ImportReference;\n}\n\nexport function createReactQueryClientGenerator(\n options: OpenApiClientGeneratorOptions\n): OpenApiClientGenerator {\n const ensureApi = Effect.fn(function* () {\n const ctx = yield* DocumentContext;\n if (!ctx.schemas.has(\"Api\")) {\n const makeRequest = t.identifier(\"makeRequest\");\n const makeRequestOptions = t.identifier(\"options\");\n makeRequestOptions.typeAnnotation = t.tsTypeAnnotation(\n t.tsTypeLiteral([\n t.tsPropertySignature(\n t.identifier(\"method\"),\n t.tsTypeAnnotation(t.tsStringKeyword())\n ),\n t.tsPropertySignature(\n t.identifier(\"path\"),\n t.tsTypeAnnotation(t.tsStringKeyword())\n ),\n t.tsPropertySignature(\n t.identifier(\"parametersSchema\"),\n t.tsTypeAnnotation(\n t.tsTypeReference(\n options.schema.schemaType,\n t.tsTypeParameterInstantiation([\n t.tsTypeReference(t.identifier(\"TParams\")),\n t.tsTypeLiteral([\n Object.assign(\n t.tsPropertySignature(\n t.identifier(\"query\"),\n t.tsTypeAnnotation(\n t.tsTypeReference(t.identifier(\"URLSearchParams\"))\n )\n ),\n { optional: true }\n ),\n Object.assign(\n t.tsPropertySignature(\n t.identifier(\"body\"),\n t.tsTypeAnnotation(\n t.tsUnionType([\n t.tsStringKeyword(),\n t.tsTypeReference(t.identifier(\"Blob\")),\n ])\n )\n ),\n { optional: true }\n ),\n Object.assign(\n t.tsPropertySignature(\n t.identifier(\"headers\"),\n t.tsTypeAnnotation(\n t.tsTypeReference(t.identifier(\"Headers\"))\n )\n ),\n { optional: true }\n ),\n Object.assign(\n t.tsPropertySignature(\n t.identifier(\"path\"),\n t.tsTypeAnnotation(\n t.tsTypeReference(\n t.identifier(\"Record<string, string>\")\n )\n )\n ),\n { optional: true }\n ),\n ]),\n ])\n )\n )\n ),\n t.tsPropertySignature(\n t.identifier(\"parameters\"),\n t.tsTypeAnnotation(t.tsTypeReference(t.identifier(\"TParams\")))\n ),\n Object.assign(\n t.tsPropertySignature(\n t.identifier(\"responseSchema\"),\n t.tsTypeAnnotation(\n t.tsTypeReference(\n options.schema.schemaType,\n t.tsTypeParameterInstantiation([\n t.tsTypeReference(t.identifier(\"TResponse\")),\n t.tsStringKeyword(),\n ])\n )\n )\n ),\n { optional: true }\n ),\n ])\n );\n makeRequest.typeAnnotation = t.tsTypeAnnotation(\n t.tsFunctionType(\n t.tsTypeParameterDeclaration([\n t.tsTypeParameter(null, null, \"TParams\"),\n t.tsTypeParameter(null, null, \"TResponse\"),\n ]),\n [makeRequestOptions],\n t.tsTypeAnnotation(\n t.tsTypeReference(\n t.identifier(\n options.responseGeneric\n ? `Promise<${(yield* generationHelpers.ensureImport(options.responseGeneric.name, options.responseGeneric.from)).name}<TResponse>>`\n : \"Promise<TResponse>\"\n )\n )\n )\n )\n );\n ctx.schemas.set(\"Api\", [\n t.exportNamedDeclaration(\n t.classDeclaration(\n t.identifier(\"Api\"),\n null,\n t.classBody([\n t.classPrivateProperty(t.privateName(makeRequest)),\n t.classMethod(\n \"constructor\",\n t.identifier(\"constructor\"),\n [makeRequest],\n t.blockStatement([\n t.expressionStatement(\n t.assignmentExpression(\n \"=\",\n t.memberExpression(\n t.thisExpression(),\n t.privateName(makeRequest)\n ),\n makeRequest\n )\n ),\n ])\n ),\n ])\n )\n ),\n ]);\n }\n return (\n (ctx.schemas.get(\"Api\")![0] as t.ExportNamedDeclaration)\n .declaration as t.ClassDeclaration\n ).body as t.ClassBody;\n });\n return {\n initialize: Effect.fn(function* () {\n yield* ensureApi();\n if (options.schema.initialize) {\n yield* options.schema.initialize();\n }\n }),\n processOperation: Effect.fn(\n function* (operationKey, path, method, operation) {\n const ctx = yield* DocumentContext;\n\n const parametersSchema = yield* options.schema.ensureParametersSchema(\n operationKey,\n operation\n );\n\n const responseSchema = yield* options.schema.ensureResponseSchema(\n operationKey,\n operation\n );\n\n const parameters = t.identifier(\"parameters\");\n parameters.typeAnnotation = t.tsTypeAnnotation(\n parametersSchema.typeReference\n );\n\n const isMutation = method !== \"get\";\n\n const fnBody = t.awaitExpression(\n t.callExpression(\n t.memberExpression(\n t.thisExpression(),\n t.privateName(t.identifier(\"makeRequest\"))\n ),\n [\n t.objectExpression([\n t.objectProperty(\n t.identifier(\"method\"),\n t.stringLiteral(method)\n ),\n t.objectProperty(t.identifier(\"path\"), t.stringLiteral(path)),\n t.objectProperty(\n t.identifier(\"parametersSchema\"),\n parametersSchema.expression,\n false,\n true\n ),\n t.objectProperty(t.identifier(\"parameters\"), parameters),\n ...(responseSchema\n ? [\n t.objectProperty(\n t.identifier(\"responseSchema\"),\n responseSchema.expression\n ),\n ]\n : []),\n ]),\n ]\n )\n );\n\n const doMethod = t.classMethod(\n \"method\",\n t.identifier(operationKey.lower),\n [parameters],\n t.blockStatement([t.returnStatement(fnBody)]),\n false,\n false,\n false,\n true\n );\n const queryMethod = t.classMethod(\n \"method\",\n t.identifier(\n operationKey.lower + (isMutation ? \"Mutation\" : \"Query\")\n ),\n isMutation ? [] : [parameters],\n t.blockStatement([\n t.returnStatement(\n t.callExpression(\n yield* generationHelpers.ensureImport(\n isMutation ? \"mutationOptions\" : \"queryOptions\",\n \"@tanstack/react-query\"\n ),\n [\n t.objectExpression([\n ...(isMutation\n ? []\n : [\n t.objectProperty(\n t.identifier(\"queryKey\"),\n t.arrayExpression([\n t.stringLiteral(operationKey.upper),\n parameters,\n ])\n ),\n ]),\n t.objectProperty(\n t.identifier(isMutation ? \"mutationFn\" : \"queryFn\"),\n t.arrowFunctionExpression(\n isMutation ? [parameters] : [],\n t.callExpression(\n t.memberExpression(\n t.thisExpression(),\n t.identifier(operationKey.lower)\n ),\n [parameters]\n ),\n true\n )\n ),\n ]),\n ]\n )\n ),\n ])\n );\n\n const commentLines = [];\n if (operation.summary) commentLines.push(`### ${operation.summary}`);\n if (operation.description)\n commentLines.push(`${operation.description}`);\n if (commentLines.length) {\n t.addComment(\n queryMethod,\n \"leading\",\n `*\\n${commentLines.join(\"\\n\")}\\n*`\n );\n t.addComment(doMethod, \"leading\", `*\\n${commentLines.join(\"\\n\")}\\n*`);\n }\n\n const api = yield* ensureApi();\n api.body.push(doMethod);\n api.body.push(queryMethod);\n }\n ),\n };\n}\n"],"mappings":"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"}