@sohcah/openapi-generator 0.0.3 → 0.1.0
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.
- package/dist/cli.js +2 -2
- package/dist/config.d.ts +2 -2
- package/dist/generators/index.d.ts +12 -12
- package/dist/generators/index.d.ts.map +1 -1
- package/dist/generators/index.js +281 -93
- package/dist/generators/index.js.map +1 -1
- package/dist/{helpers-0HehGkaU.js → helpers-CUZHcCFJ.js} +5 -3
- package/dist/{helpers-0HehGkaU.js.map → helpers-CUZHcCFJ.js.map} +1 -1
- package/dist/{index-IbWqUJNI.d.ts → index-BOme2BJ_.d.ts} +2 -2
- package/dist/{index-IbWqUJNI.d.ts.map → index-BOme2BJ_.d.ts.map} +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/{src-BlhnnMdZ.js → src-Ce5HNZs1.js} +6 -4
- package/dist/src-Ce5HNZs1.js.map +1 -0
- package/dist/{types-Ced1bVkh.d.ts → types-DjImZ4S-.d.ts} +7 -4
- package/dist/types-DjImZ4S-.d.ts.map +1 -0
- package/package.json +4 -4
- package/dist/src-BlhnnMdZ.js.map +0 -1
- package/dist/types-Ced1bVkh.d.ts.map +0 -1
|
@@ -1 +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: generationHelpers.HttpMethod","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: generationHelpers.HttpMethod,\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\" && method !== \"head\" && method !== \"options\";\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.tsAsExpression(\n t.arrayExpression([\n t.stringLiteral(operationKey.upper),\n parameters,\n ]),\n t.tsTypeReference(\n yield* generationHelpers.ensureImport(\n \"QueryKey\",\n \"@tanstack/react-query\",\n true\n )\n )\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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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["options: DefaultSchemaGeneratorOptions","schema: SchemaObject","decoded: t.Expression","t","expression: t.Expression","schema: SchemaObject | ReferenceObject","t","options: DefaultSchemaGeneratorOptions","schema: SchemaObject","decoded: t.Expression","properties: Record<string, SchemaObject | ReferenceObject>","path: string","pathParameters: Record<string, t.Expression>","queryParameter: t.Expression | null","quasis: t.TemplateElement[]","expressions: t.Expression[]","t","options: DefaultSchemaGeneratorOptions","schema: SchemaObject","decoded: t.Expression","t","options: DefaultSchemaGeneratorOptions","t","type: t.TSType","schema: SchemaObject | ReferenceObject","value: string","t","object: t.Expression","property: string","options: DefaultSchemaGeneratorOptions","typeMeta: ExpressionWithType[\"typeMeta\"]","value: unknown","expression: ExpressionWithType","expression: t.Expression","typeDecoded: t.TSType","typeEncoded: t.TSType","schema","expressions: ExpressionWithType[]","operationKey: generationHelpers.OperationKey","method: OperationObject","path: string","pathParameters: Record<string, t.Expression>","content: { [format: string]: MediaTypeObject } | undefined","transform: t.Expression","response: ResponseObject","schema: SchemaObject","_method: generationHelpers.HttpMethod","operation: OperationObject","schema: t.Expression","response: t.Expression","options: SchemaGeneratorOptions","t","pattern: string","key: t.Expression","value: t.Expression","decodeFn: t.Expression | undefined","encodeFn: t.Expression | undefined","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/requestFormats/json.ts","../../src/generators/requestFormats/formData.ts","../../src/generators/generatePathExpression.ts","../../src/generators/responseFormats/json.ts","../../src/generators/responseFormats/blob.ts","../../src/generators/schema.ts","../../src/generators/effect.ts","../../src/generators/zod.ts","../../src/generators/client.ts"],"sourcesContent":["import { Effect } from \"effect\";\nimport type { SchemaObject } from \"../../types.js\";\nimport type { DefaultSchemaGeneratorOptions } from \"../schema.js\";\nimport * as t from \"@babel/types\";\nimport { notImplementedStatement } from \"../helpers.js\";\n\nexport const generateJsonRequestCodec = Effect.fn(function* (\n options: DefaultSchemaGeneratorOptions,\n schema: SchemaObject,\n decoded: t.Expression\n) {\n return options.transformer({\n encoded: options.schema.string,\n decoded,\n decode: notImplementedStatement,\n encode: t.callExpression(\n t.memberExpression(t.identifier(\"JSON\"), t.identifier(\"stringify\")),\n [t.identifier(\"from\")]\n ),\n });\n});\n","import type { ReferenceObject, SchemaObject } from \"../../types.js\";\nimport {\n resolveSchema,\n type DefaultSchemaGeneratorOptions,\n} from \"../schema.js\";\nimport * as t from \"@babel/types\";\nimport { Effect } from \"effect\";\nimport { notImplementedStatement } from \"../helpers.js\";\n\nconst maybeStringify = Effect.fn(function* (\n expression: t.Expression,\n schema: SchemaObject | ReferenceObject\n) {\n const resolved = yield* resolveSchema(schema);\n if (resolved.type === \"object\" || resolved.type === \"array\") {\n return t.callExpression(\n t.memberExpression(t.identifier(\"JSON\"), t.identifier(\"stringify\")),\n [expression]\n );\n }\n if (resolved.type === \"string\") {\n return expression;\n }\n return t.callExpression(t.identifier(\"String\"), [expression]);\n});\n\nexport const generateFormDataRequestCodec = Effect.fn(function* (\n options: DefaultSchemaGeneratorOptions,\n schema: SchemaObject,\n decoded: t.Expression\n) {\n const encode = t.blockStatement([\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(\n t.identifier(\"formData\"),\n t.newExpression(t.identifier(\"FormData\"), [])\n ),\n ]),\n ]);\n const properties: Record<string, SchemaObject | ReferenceObject> =\n schema.properties ?? {};\n for (const [propertyKey, rawProperty] of Object.entries(properties)) {\n const property = yield* resolveSchema(rawProperty);\n\n const propertyExpression = t.memberExpression(\n t.identifier(\"from\"),\n t.stringLiteral(propertyKey),\n true\n );\n\n if (property.type === \"array\") {\n encode.body.push(\n t.forOfStatement(\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(t.identifier(\"propertyValue\")),\n ]),\n propertyExpression,\n t.blockStatement([\n t.expressionStatement(\n t.callExpression(\n t.memberExpression(\n t.identifier(\"formData\"),\n t.identifier(\"append\")\n ),\n [\n t.stringLiteral(propertyKey),\n yield* maybeStringify(\n t.identifier(\"propertyValue\"),\n property.items\n ),\n ]\n )\n ),\n ])\n )\n );\n continue;\n }\n\n encode.body.push(\n t.expressionStatement(\n t.callExpression(\n t.memberExpression(t.identifier(\"formData\"), t.identifier(\"append\")),\n [\n t.stringLiteral(propertyKey),\n yield* maybeStringify(propertyExpression, property),\n ]\n )\n )\n );\n }\n\n encode.body.push(t.returnStatement(t.identifier(\"formData\")));\n\n return options.transformer({\n encoded: t.callExpression(options.schema.instanceOf, [\n t.identifier(\"FormData\"),\n ]),\n decoded,\n decode: notImplementedStatement,\n encode,\n });\n});\n","import * as t from \"@babel/types\";\nimport escapeRegex from \"regex-escape\";\n\nexport function generatePathExpression(\n path: string,\n pathParameters: Record<string, t.Expression>,\n queryParameter: t.Expression | null\n): t.TemplateLiteral {\n let modifiedPath = path;\n if (queryParameter) {\n modifiedPath += \"?\";\n }\n\n const split = modifiedPath.split(\n new RegExp(\n `\\\\{(${Object.keys(pathParameters)\n .map((i) => escapeRegex(i))\n .join(\"|\")})\\\\}`,\n \"g\"\n )\n );\n\n const quasis: t.TemplateElement[] = [];\n const expressions: t.Expression[] = [];\n\n for (const [i, part] of split.entries()) {\n if (i % 2 === 0) {\n quasis.push(t.templateElement({ raw: part, cooked: part }, false));\n } else {\n const paramExpression = pathParameters[part];\n if (!paramExpression) {\n throw new Error(`Path parameter ${part} not found`);\n }\n expressions.push(paramExpression);\n }\n }\n\n if (queryParameter) {\n expressions.push(queryParameter);\n quasis.push(t.templateElement({ raw: \"\", cooked: \"\" }, false));\n }\n\n return t.templateLiteral(quasis, expressions);\n}\n","import { Effect } from \"effect\";\nimport type { SchemaObject } from \"../../types.js\";\nimport type { DefaultSchemaGeneratorOptions } from \"../schema.js\";\nimport * as t from \"@babel/types\";\nimport { notImplementedStatement } from \"../helpers.js\";\n\nexport const generateJsonResponseCodec = Effect.fn(function* (\n options: DefaultSchemaGeneratorOptions,\n schema: SchemaObject,\n decoded: t.Expression\n) {\n return options.transformer({\n encoded: t.callExpression(options.schema.instanceOf, [\n t.identifier(\"Response\"),\n ]),\n decoded,\n decode: t.blockStatement([\n t.tryStatement(\n t.blockStatement([\n t.returnStatement(\n t.tsAsExpression(\n t.awaitExpression(\n t.callExpression(\n t.memberExpression(\n t.identifier(\"from\"),\n t.identifier(\"json\")\n ),\n []\n )\n ),\n t.tsAnyKeyword()\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 decodeAsync: true,\n encode: notImplementedStatement,\n });\n});\n","import { Effect } from \"effect\";\nimport type { DefaultSchemaGeneratorOptions } from \"../schema.js\";\nimport * as t from \"@babel/types\";\nimport { notImplementedStatement } from \"../helpers.js\";\n\nexport const generateBlobResponseCodec = Effect.fn(function* (\n options: DefaultSchemaGeneratorOptions\n) {\n return options.transformer({\n encoded: t.callExpression(options.schema.instanceOf, [\n t.identifier(\"Response\"),\n ]),\n decoded: t.callExpression(options.schema.instanceOf, [\n t.identifier(\"Blob\"),\n ]),\n decode: t.blockStatement([\n t.tryStatement(\n t.blockStatement([\n t.returnStatement(\n t.tsAsExpression(\n t.awaitExpression(\n t.callExpression(\n t.memberExpression(\n t.identifier(\"from\"),\n t.identifier(\"blob\")\n ),\n []\n )\n ),\n t.tsAnyKeyword()\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 decodeAsync: true,\n encode: notImplementedStatement,\n });\n});\n","import * as t from \"@babel/types\";\nimport type {\n MediaTypeObject,\n OperationObject,\n ReferenceObject,\n ResponseObject,\n SchemaObject,\n} from \"../types.js\";\nimport { Context, Effect } from \"effect\";\nimport { DocumentContext, type DocumentContextData } 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\";\nimport { generateJsonRequestCodec } from \"./requestFormats/json.js\";\nimport { generateFormDataRequestCodec } from \"./requestFormats/formData.js\";\nimport { generatePathExpression } from \"./generatePathExpression.js\";\nimport { generateJsonResponseCodec } from \"./responseFormats/json.js\";\nimport { generateBlobResponseCodec } from \"./responseFormats/blob.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 decodeAsync?: boolean;\n encode: t.Expression | t.BlockStatement;\n encodeAsync?: boolean;\n }) => t.Expression;\n transformerCatch: (expression: t.Expression) => t.BlockStatement;\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\nexport const resolveSchema = Effect.fn(function* (\n schema: SchemaObject | ReferenceObject\n): Generator<\n | YieldWrap<Effect.Effect<SchemaObject, NotImplementedError, DocumentContext>>\n | YieldWrap<Context.Tag<DocumentContext, DocumentContextData>>,\n SchemaObject,\n never\n> {\n const ctx = yield* DocumentContext;\n let resolvedSchema = schema;\n for (let i = 0; i < 10; i++) {\n if (!(\"$ref\" in resolvedSchema))\n return resolvedSchema satisfies SchemaObject as SchemaObject;\n const ref = resolvedSchema.$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\n const nextSchema = ctx.document.components?.schemas?.[schemaName];\n if (!nextSchema) {\n return yield* new NotImplementedError({\n message: `Missing $ref ${ref}`,\n });\n }\n resolvedSchema = nextSchema;\n }\n return yield* new NotImplementedError({\n message: `Too many $ref in schema`,\n });\n});\n\nconst stringLiteralOrIdentifier = (value: string) => {\n if (value.match(/^[a-zA-Z_][a-zA-Z0-9_]*$/)) {\n return t.identifier(value);\n }\n return t.stringLiteral(value);\n};\n\nconst memberExpressionWithStringProperty = (\n object: t.Expression,\n property: string\n) => {\n if (property.match(/^[a-zA-Z_][a-zA-Z0-9_]*$/)) {\n return t.memberExpression(object, t.identifier(property));\n }\n return t.memberExpression(object, t.stringLiteral(property), true);\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(t.identifier(\"path\"), options.schema.string),\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(\"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 t.callExpression(options.schema.instanceOf, [\n t.identifier(\"FormData\"),\n ]),\n t.callExpression(options.schema.instanceOf, [\n t.identifier(\"URLSearchParams\"),\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(\n t.tsUnionType([t.tsUnknownKeyword(), t.tsUndefinedKeyword()])\n ),\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) =>\n typeof i !== \"string\" &&\n typeof i !== \"number\" &&\n typeof i !== \"boolean\" &&\n i !== null\n );\n if (unsupportedEnumValue !== undefined) {\n return yield* new NotImplementedError({\n message: `Unsupported 'enum' value: ${JSON.stringify(unsupportedEnumValue)}`,\n });\n }\n const getLiteral = (value: unknown) => {\n if (typeof value === \"number\") {\n return t.numericLiteral(value);\n }\n if (typeof value === \"boolean\") {\n return t.booleanLiteral(value);\n }\n return t.stringLiteral(value as string);\n };\n return {\n expression: options.schema.enum(\n schema.enum.map((e) => (e === null ? t.nullLiteral() : getLiteral(e)))\n ),\n ...equivalentType(\n t.tsUnionType(\n schema.enum.map((e) =>\n e === null ? t.tsNullKeyword() : t.tsLiteralType(getLiteral(e))\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 if (schema.format === \"binary\") {\n return {\n expression: t.callExpression(options.schema.instanceOf, [\n t.identifier(\"Blob\"),\n ]),\n ...equivalentType(t.tsTypeReference(t.identifier(\"Blob\"))),\n typeMeta,\n };\n }\n\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 (\n propertySchema.typeMeta?.optional ||\n !schema.required?.includes(propertyKey)\n ) {\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 stringLiteralOrIdentifier(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 path: string\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 pathParameters: Record<string, t.Expression> = {};\n const headerArray = t.arrayExpression([]);\n let hasBody = false;\n\n for (let parameter of method.parameters ?? []) {\n if (\"$ref\" in parameter) {\n const newParameter =\n ctx.document.components?.parameters?.[\n parameter.$ref.slice(\"#/components/parameters/\".length)\n ];\n if (newParameter) {\n parameter = newParameter;\n } else {\n return yield* new NotImplementedError({\n message: \"Unresolved $ref in parameter\",\n });\n }\n if (\"$ref\" in parameter) {\n return yield* new NotImplementedError({\n message: \"$ref in parameter\",\n });\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 stringLiteralOrIdentifier(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 = memberExpressionWithStringProperty(\n t.identifier(\"from\"),\n parameter.name\n );\n // TODO: Share formData request format logic\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(\n param,\n t.identifier(\"map\"),\n false,\n true\n ),\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.tsTupleType([t.tsStringKeyword(), t.tsStringKeyword()]),\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 pathParameters[parameter.name] = memberExpressionWithStringProperty(\n t.identifier(\"from\"),\n parameter.name\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 memberExpressionWithStringProperty(\n t.identifier(\"from\"),\n parameter.name\n ),\n ]),\n ])\n );\n } else {\n return yield* new NotImplementedError({\n message: `parameter in ${parameter.in}`,\n });\n }\n }\n\n const body = yield* requestBodySchema(operationKey, method);\n if (body) {\n hasBody = true;\n object.properties.push(t.objectProperty(t.identifier(\"data\"), body.data));\n headerArray.elements.push(...body.headers);\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 t.objectProperty(\n t.identifier(\"path\"),\n generatePathExpression(\n path,\n pathParameters,\n queryArray.elements.length\n ? t.newExpression(t.identifier(\"URLSearchParams\"), [queryArray])\n : null\n )\n ),\n ...(headerArray.elements.length\n ? [\n t.objectProperty(\n t.identifier(\"headers\"),\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 requestBodySchema = Effect.fn(function* (\n operationKey: generationHelpers.OperationKey,\n method: OperationObject\n ) {\n if (!method.requestBody) {\n return null;\n }\n\n if (\"$ref\" in method.requestBody) {\n return yield* new NotImplementedError({\n message: \"$ref in requestBody\",\n });\n }\n\n let hasBody = false;\n\n for (const contentType in method.requestBody.content) {\n hasBody = true;\n const schema = method.requestBody.content[contentType]?.schema;\n if (contentType === \"application/json\") {\n if (!schema) continue;\n return {\n headers: [\n t.arrayExpression([\n t.stringLiteral(\"Content-Type\"),\n t.stringLiteral(\"application/json\"),\n ]),\n ],\n data: yield* generateJsonRequestCodec(\n options,\n yield* resolveSchema(schema),\n (yield* ensureSchema(schema)).expression\n ),\n };\n } else if (contentType === \"multipart/form-data\") {\n if (!schema) continue;\n return {\n headers: [],\n data: yield* generateFormDataRequestCodec(\n options,\n yield* resolveSchema(schema),\n (yield* ensureSchema(schema)).expression\n ),\n };\n } else {\n if (\n schema &&\n (\"$ref\" in schema ||\n (schema.type !== \"string\" && schema.format !== \"binary\"))\n ) {\n continue;\n }\n return {\n headers: [\n t.arrayExpression([\n t.stringLiteral(\"Content-Type\"),\n t.stringLiteral(contentType),\n ]),\n ],\n data: t.callExpression(options.schema.instanceOf, [\n t.identifier(\"Blob\"),\n ]),\n };\n }\n }\n\n if (!hasBody) {\n return null;\n }\n\n return yield* new NotImplementedError({\n message: `No supported requestBody type (${Object.keys(\n method.requestBody.content\n ).join(\", \")}) in ${operationKey.upper}`,\n });\n });\n\n const responseSchema = Effect.fn(function* (\n content: { [format: string]: MediaTypeObject } | undefined\n ) {\n if (content) {\n for (const [format, formatContent] of Object.entries(content)) {\n if (format === \"application/json\") {\n if (!formatContent.schema) {\n continue;\n }\n\n const schema = formatContent.schema;\n\n const decodedSchema = (yield* ensureSchema(schema)).expression;\n\n return yield* generateJsonResponseCodec(\n options,\n yield* resolveSchema(schema),\n decodedSchema\n );\n }\n }\n }\n\n return yield* generateBlobResponseCodec(options);\n });\n\n const ensureResponseSchema = Effect.fn(function* (\n operationKey: generationHelpers.OperationKey,\n method: OperationObject\n ) {\n const ctx = yield* DocumentContext;\n\n let transform: t.Expression;\n\n if (!method.responses?.[\"200\"]) {\n transform = yield* responseSchema(undefined);\n } else {\n let response: ResponseObject;\n\n if (\"$ref\" in method.responses[\"200\"]) {\n const ref = method.responses[\"200\"].$ref;\n if (!ref.startsWith(\"#/components/responses/\"))\n return yield* new NotImplementedError({\n message: `$ref ${ref} in response in ${operationKey.upper}`,\n });\n const responseName = ref.slice(\"#/components/responses/\".length);\n const newResponse = ctx.document.components?.responses?.[responseName];\n if (!newResponse)\n return yield* new NotImplementedError({\n message: `Missing $ref ${ref} in response in ${operationKey.upper}`,\n });\n\n if (\"$ref\" in newResponse)\n return yield* new NotImplementedError({\n message: `$ref in $ref in response in ${operationKey.upper}`,\n });\n\n response = newResponse;\n } else {\n response = method.responses[\"200\"];\n }\n\n transform = yield* responseSchema(response.content);\n }\n\n const identifier = t.identifier(`${operationKey.upper}_Response`);\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\n const processOperation = Effect.fn(function* (\n operationKey: generationHelpers.OperationKey,\n path: string,\n _method: generationHelpers.HttpMethod,\n operation: OperationObject\n ) {\n if (options.includeOperations) {\n yield* ensureParametersSchema(operationKey, operation, path);\n yield* ensureResponseSchema(operationKey, operation);\n }\n });\n const decodeResponse = Effect.fn(function* (\n schema: t.Expression,\n response: t.Expression\n ) {\n return options.methods.decode(schema, response);\n });\n const encodeParameters = Effect.fn(function* (\n schema: t.Expression,\n response: t.Expression\n ) {\n return options.methods.encode(schema, response);\n });\n return {\n processSchema,\n processOperation,\n ensureParametersSchema,\n ensureResponseSchema,\n decodeResponse,\n encodeParameters,\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: ({\n encoded,\n decoded,\n decode,\n decodeAsync,\n encode,\n encodeAsync,\n }) => {\n let decodeFn: t.Expression | undefined;\n let encodeFn: t.Expression | undefined;\n if (decodeAsync || encodeAsync) {\n decodeFn = t.arrowFunctionExpression(\n [t.identifier(\"from\"), t.identifier(\"ctx\")],\n t.callExpression(\n t.memberExpression(\n t.identifier(\"Effect\"),\n t.identifier(\"promise\")\n ),\n [t.arrowFunctionExpression([], decode, true)]\n )\n );\n encodeFn = t.arrowFunctionExpression(\n [t.identifier(\"from\"), t.identifier(\"ctx\")],\n t.callExpression(\n t.memberExpression(\n t.identifier(\"Effect\"),\n t.identifier(\"promise\")\n ),\n [t.arrowFunctionExpression([], encode, true)]\n )\n );\n } else {\n decodeFn = t.arrowFunctionExpression([t.identifier(\"from\"), t.identifier(\"ctx\")], decode);\n encodeFn = t.arrowFunctionExpression([t.identifier(\"from\"), t.identifier(\"ctx\")], encode);\n }\n return t.callExpression(\n t.memberExpression(t.identifier(\"Schema\"), t.identifier(decodeAsync || encodeAsync ? \"transformOrFail\" : \"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 decodeFn\n ),\n t.objectProperty(\n t.identifier(\"encode\"),\n encodeFn\n ),\n ]),\n ]\n );\n },\n transformerCatch: (expression) =>\n t.blockStatement([t.throwStatement(expression)]),\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(\"encodePromise\")\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(\"decodePromise\")\n ),\n [schema]\n ),\n [value]\n ),\n parse: (schema: t.Expression, value: t.Expression) =>\n t.callExpression(\n t.callExpression(\n t.memberExpression(\n t.identifier(\"Schema\"),\n t.identifier(\"decodeUnknownPromise\")\n ),\n [schema]\n ),\n [value]\n ),\n },\n supportsImmutability: true,\n }),\n initialize: Effect.fn(function* () {\n yield* generationHelpers.ensureNamespaceImport(\"Schema\", \"effect/Schema\");\n yield* generationHelpers.ensureImport(\"Effect\", \"effect\");\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, decodeAsync, encode, encodeAsync }) =>\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 decodeAsync\n )\n ),\n t.objectProperty(\n t.identifier(\"encode\"),\n t.arrowFunctionExpression(\n [t.identifier(\"from\"), t.identifier(\"ctx\")],\n encode,\n encodeAsync\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 methods: {\n encode: (schema: t.Expression, value: t.Expression) =>\n t.callExpression(\n t.memberExpression(t.identifier(\"z\"), t.identifier(\"encodeAsync\")),\n [schema, value]\n ),\n decode: (schema: t.Expression, value: t.Expression) =>\n t.callExpression(\n t.memberExpression(t.identifier(\"z\"), t.identifier(\"decodeAsync\")),\n [schema, value]\n ),\n parse: (schema: t.Expression, value: t.Expression) =>\n t.callExpression(\n t.memberExpression(t.identifier(\"z\"), t.identifier(\"parseAsync\")),\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\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 fetch = t.identifier(\"fetch\");\n const fetchPath = t.identifier(\"path\");\n fetchPath.typeAnnotation = t.tsTypeAnnotation(t.tsStringKeyword());\n const fetchOptions = t.identifier(\"options\");\n fetchOptions.typeAnnotation = t.tsTypeAnnotation(\n t.tsTypeLiteral([\n t.tsPropertySignature(\n t.identifier(\"method\"),\n t.tsTypeAnnotation(t.tsStringKeyword())\n ),\n Object.assign(\n t.tsPropertySignature(\n t.identifier(\"headers\"),\n t.tsTypeAnnotation(t.tsTypeReference(t.identifier(\"Headers\")))\n ),\n { optional: true }\n ),\n Object.assign(\n t.tsPropertySignature(\n t.identifier(\"body\"),\n t.tsTypeAnnotation(\n t.tsUnionType([\n t.tsTypeReference(t.identifier(\"string\")),\n t.tsTypeReference(t.identifier(\"Blob\")),\n t.tsTypeReference(t.identifier(\"FormData\")),\n t.tsTypeReference(t.identifier(\"URLSearchParams\")),\n ])\n )\n ),\n { optional: true }\n ),\n ])\n );\n fetch.typeAnnotation = t.tsTypeAnnotation(\n t.tsFunctionType(\n null,\n [fetchPath, fetchOptions],\n t.tsTypeAnnotation(\n t.tsTypeReference(\n t.identifier(\"Promise\"),\n t.tsTypeParameterInstantiation([\n t.tsTypeReference(t.identifier(\"Response\")),\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(fetch)),\n t.classMethod(\n \"constructor\",\n t.identifier(\"constructor\"),\n [fetch],\n t.blockStatement([\n t.expressionStatement(\n t.assignmentExpression(\n \"=\",\n t.memberExpression(\n t.thisExpression(),\n t.privateName(fetch)\n ),\n fetch\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 parametersSchema = yield* options.schema.ensureParametersSchema(\n operationKey,\n operation,\n path\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 =\n method !== \"get\" && method !== \"head\" && method !== \"options\";\n\n const fetchCall = t.awaitExpression(\n t.callExpression(\n t.memberExpression(\n t.thisExpression(),\n t.privateName(t.identifier(\"fetch\"))\n ),\n [\n t.memberExpression(t.identifier(\"params\"), t.identifier(\"path\")),\n t.objectExpression([\n t.objectProperty(\n t.identifier(\"method\"),\n t.stringLiteral(method)\n ),\n t.objectProperty(\n t.identifier(\"headers\"),\n t.memberExpression(\n t.identifier(\"params\"),\n t.identifier(\"headers\")\n )\n ),\n t.objectProperty(\n t.identifier(\"body\"),\n t.memberExpression(\n t.identifier(\"params\"),\n t.identifier(\"body\")\n )\n ),\n ]),\n ]\n )\n );\n\n const doMethod = t.classMethod(\n \"method\",\n t.identifier(operationKey.lower),\n [parameters],\n t.blockStatement([\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(\n t.identifier(\"params\"),\n t.awaitExpression(\n yield* options.schema.encodeParameters(\n parametersSchema.expression,\n t.identifier(\"parameters\")\n )\n )\n ),\n ]),\n t.variableDeclaration(\"const\", [\n t.variableDeclarator(t.identifier(\"response\"), fetchCall),\n ]),\n t.returnStatement(\n t.awaitExpression(\n yield* options.schema.decodeResponse(\n responseSchema.expression,\n t.identifier(\"response\")\n )\n )\n ),\n ]),\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.tsAsExpression(\n t.arrayExpression([\n t.stringLiteral(operationKey.upper),\n parameters,\n ]),\n t.tsTypeReference(\n yield* generationHelpers.ensureImport(\n \"QueryKey\",\n \"@tanstack/react-query\",\n true\n )\n )\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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"}
|
|
@@ -14107,7 +14107,8 @@ __export(helpers_exports, {
|
|
|
14107
14107
|
ensureImport: () => ensureImport,
|
|
14108
14108
|
ensureNamespaceImport: () => ensureNamespaceImport,
|
|
14109
14109
|
getKey: () => getKey,
|
|
14110
|
-
httpMethods: () => httpMethods
|
|
14110
|
+
httpMethods: () => httpMethods,
|
|
14111
|
+
notImplementedStatement: () => notImplementedStatement
|
|
14111
14112
|
});
|
|
14112
14113
|
var import_lib = /* @__PURE__ */ __toESM(require_lib(), 1);
|
|
14113
14114
|
const ensureImport = Effect.fn(function* (name, from, typeOnly = false) {
|
|
@@ -14154,7 +14155,8 @@ const httpMethods = [
|
|
|
14154
14155
|
"patch",
|
|
14155
14156
|
"trace"
|
|
14156
14157
|
];
|
|
14158
|
+
const notImplementedStatement = import_lib.blockStatement([import_lib.throwStatement(import_lib.newExpression(import_lib.identifier("Error"), [import_lib.stringLiteral("Not implemented")]))]);
|
|
14157
14159
|
|
|
14158
14160
|
//#endregion
|
|
14159
|
-
export { DocumentContext, NotImplementedError, ensureImport, ensureNamespaceImport, getKey, helpers_exports, httpMethods, require_lib };
|
|
14160
|
-
//# sourceMappingURL=helpers-
|
|
14161
|
+
export { DocumentContext, NotImplementedError, ensureImport, ensureNamespaceImport, getKey, helpers_exports, httpMethods, notImplementedStatement, require_lib };
|
|
14162
|
+
//# sourceMappingURL=helpers-CUZHcCFJ.js.map
|