@sohcah/openapi-generator 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +1 -1
- package/dist/generators/index.d.ts.map +1 -1
- package/dist/generators/index.js +6 -2
- package/dist/generators/index.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/{src-CjChjKnL.js → src-DhXSDR6J.js} +2 -2
- package/dist/{src-CjChjKnL.js.map → src-DhXSDR6J.js.map} +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { generateToFile } from "./src-
|
|
2
|
+
import { generateToFile } from "./src-DhXSDR6J.js";
|
|
3
3
|
import "./helpers-CqzmoMek.js";
|
|
4
4
|
import { Command, Options } from "@effect/cli";
|
|
5
5
|
import { NodeContext, NodeRuntime } from "@effect/platform-node";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/generators/effect.ts","../../../src/generators/zod.ts","../../../src/generators/client.ts"],"sourcesContent":[],"mappings":";;;;;cAQa,uCACF;EADE,UAAA,EAAA,GAAA,gBAqNX,CAAA,IAAA,EAAA,KAAA,EApN+B,eAAA,CAoN/B;EAAA,cAAA,EAAA,CAAA,MAAA,cAAA,EAAA,QAAA,cAAA,EAAA,gBAAA,aAAA,CAAA;EAAA,gBApNS,EAAA,CAAA,MAAA,cAAA,EAAA,UAAA,cAAA,EAAA,gBAAA,aAAA,CAAA;EAAsB,sBAAA,EAAA,CAAA,YAAA,cAAA,EAAA,SAAA,iBAAA,EAAA,IAAA,EAAA,MAAA,EAAA,gBAAA,+DAAA;;;;;;;;UCDhB,yBAAA,SAAkC;EDAtC;EAqNX,IAAA,CAAA,EAAA,OAAA;;AApN+B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/generators/effect.ts","../../../src/generators/zod.ts","../../../src/generators/client.ts"],"sourcesContent":[],"mappings":";;;;;cAQa,uCACF;EADE,UAAA,EAAA,GAAA,gBAqNX,CAAA,IAAA,EAAA,KAAA,EApN+B,eAAA,CAoN/B;EAAA,cAAA,EAAA,CAAA,MAAA,cAAA,EAAA,QAAA,cAAA,EAAA,gBAAA,aAAA,CAAA;EAAA,gBApNS,EAAA,CAAA,MAAA,cAAA,EAAA,UAAA,cAAA,EAAA,gBAAA,aAAA,CAAA;EAAsB,sBAAA,EAAA,CAAA,YAAA,cAAA,EAAA,SAAA,iBAAA,EAAA,IAAA,EAAA,MAAA,EAAA,gBAAA,+DAAA;;;;;;;;UCDhB,yBAAA,SAAkC;EDAtC;EAqNX,IAAA,CAAA,EAAA,OAAA;;AApN+B,cCuBpB,wBDvBoB,EAAA,CAAA;EAAA,IAAA;EAAA,GAAA;AAAA,CAAA,EC0B9B,yBD1B8B,EAAA,GAAA;+CC0BL,eAAA;;;;;;;;;;;UCzBX,6BAAA;UACP;;iBAGM,+BAAA,UACL,gCACR"}
|
package/dist/generators/index.js
CHANGED
|
@@ -591,8 +591,12 @@ const createEffectSchemaGenerator = (options) => ({
|
|
|
591
591
|
//#endregion
|
|
592
592
|
//#region src/generators/zod.ts
|
|
593
593
|
var import_lib$1 = /* @__PURE__ */ __toESM(require_lib(), 1);
|
|
594
|
+
const z = import_lib$1.identifier("z");
|
|
595
|
+
function getObjectShape(expression) {
|
|
596
|
+
if (expression.type === "CallExpression" && expression.callee.type === "MemberExpression" && expression.callee.object.type === "Identifier" && expression.callee.object.name === "z" && expression.callee.property.type === "Identifier" && expression.callee.property.name === "object" && expression.arguments.length === 1 && expression.arguments[0]?.type === "ObjectExpression") return expression.arguments[0];
|
|
597
|
+
return import_lib$1.memberExpression(expression, import_lib$1.identifier("shape"));
|
|
598
|
+
}
|
|
594
599
|
const createZodSchemaGenerator = ({ mini = false,...options }) => {
|
|
595
|
-
const z = import_lib$1.identifier("z");
|
|
596
600
|
const maybeExtension = (expression, extension, args) => mini ? import_lib$1.callExpression(import_lib$1.memberExpression(z, import_lib$1.identifier(extension)), [expression, ...args]) : import_lib$1.callExpression(import_lib$1.memberExpression(expression, import_lib$1.identifier(extension)), args);
|
|
597
601
|
return {
|
|
598
602
|
...createSchemaGenerator({
|
|
@@ -614,7 +618,7 @@ const createZodSchemaGenerator = ({ mini = false,...options }) => {
|
|
|
614
618
|
record: (key, value) => import_lib$1.callExpression(import_lib$1.memberExpression(z, import_lib$1.identifier("record")), [key, value]),
|
|
615
619
|
union: (expressions) => import_lib$1.callExpression(import_lib$1.memberExpression(z, import_lib$1.identifier("union")), [import_lib$1.arrayExpression(expressions)]),
|
|
616
620
|
intersection: (expressions) => expressions.reduce((a, b) => import_lib$1.callExpression(import_lib$1.memberExpression(z, import_lib$1.identifier("intersection")), [a, b])),
|
|
617
|
-
objectExtend: (expressions) => expressions.reduce((a, b) => import_lib$1.callExpression(import_lib$1.memberExpression(mini ? z : a, import_lib$1.identifier("extend")), [...mini ? [a] : [], b])),
|
|
621
|
+
objectExtend: (expressions) => expressions.reduce((a, b) => import_lib$1.callExpression(import_lib$1.memberExpression(mini ? z : a, import_lib$1.identifier("extend")), [...mini ? [a] : [], getObjectShape(b)])),
|
|
618
622
|
enum: (expressions) => import_lib$1.callExpression(import_lib$1.memberExpression(z, import_lib$1.identifier("enum")), [import_lib$1.arrayExpression(expressions)]),
|
|
619
623
|
instanceOf: import_lib$1.memberExpression(z, import_lib$1.identifier("instanceof")),
|
|
620
624
|
boolean: import_lib$1.callExpression(import_lib$1.memberExpression(z, import_lib$1.identifier("boolean")), []),
|
|
@@ -1 +1 @@
|
|
|
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\"]","schema","result: ExpressionWithType","result","i: unknown","value: unknown","e: unknown","expression: ExpressionWithType","expression: t.Expression","typeDecoded: t.TSType","typeEncoded: t.TSType","expressions: ExpressionWithType[]","operationKey: generationHelpers.OperationKey","method: OperationObject","path: string","pathParameters: Record<string, t.Expression>","content: { [format: string]: MediaTypeObject | ReferenceObject } | 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 intersection: (expressions: t.Expression[]) => t.Expression;\n objectExtend: (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\nexport type ExpressionWithType = {\n expression: t.Expression;\n typeDecoded: t.TSType;\n typeEncoded: t.TSType;\n typeMeta: {\n readonly?: boolean;\n optional?: boolean;\n isObject?: boolean;\n isNull?: 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.schemaTypeMeta.set(schemaName, schemaExpression.typeMeta);\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: ctx.schemaTypeMeta.get(schemaName)!,\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.allOf) {\n const results = yield* Effect.forEach(\n (schema: SchemaObject | ReferenceObject) => ensureSchema(schema)\n )(schema.allOf);\n\n let result: ExpressionWithType;\n if (results.length === 1) {\n result = results[0]!;\n } else {\n result = {\n expression: options.schema[\n results.every((i) => i.typeMeta.isObject)\n ? \"objectExtend\"\n : \"intersection\"\n ](results.map((result) => result.expression)),\n typeDecoded: t.tsIntersectionType(\n results.map((result) => result.typeDecoded)\n ),\n typeEncoded: t.tsIntersectionType(\n results.map((result) => result.typeEncoded)\n ),\n typeMeta,\n };\n }\n\n // Workaround to support Swashbuckle.AspNetCore's nullable attribute on allOf objects.\n if (\"nullable\" in schema && schema.nullable) {\n result.expression = options.modifiers.nullable(result.expression);\n result.typeDecoded = t.tsUnionType([\n result.typeDecoded,\n t.tsNullKeyword(),\n ]);\n result.typeEncoded = t.tsUnionType([\n result.typeEncoded,\n t.tsNullKeyword(),\n ]);\n }\n return result;\n }\n\n if (schema.enum) {\n const unsupportedEnumValue = schema.enum.find(\n (i: unknown) =>\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: unknown) =>\n e === null ? t.nullLiteral() : getLiteral(e)\n )\n ),\n ...equivalentType(\n t.tsUnionType(\n schema.enum.map((e: unknown) =>\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 typeMeta.isObject = true;\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 ) as [string, SchemaObject | ReferenceObject][]) {\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 typeMeta.isNull = true;\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 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 (typeof schema === \"boolean\") return [];\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 let expressions: ExpressionWithType[] = [];\n for (const schema of schemas) {\n expressions.push(\n yield* applyModifiers(yield* getBaseEffectSchema(schema), schema)\n );\n }\n\n let isNullable = false;\n if (expressions.some((e) => e.typeMeta?.isNull)) {\n isNullable = true;\n expressions = expressions.filter((e) => !e.typeMeta?.isNull);\n }\n\n let result: ExpressionWithType;\n\n if (expressions.length === 1) {\n result = expressions[0]!;\n } else {\n result = {\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 if (isNullable) {\n result.expression = options.modifiers.nullable(result.expression);\n result.typeDecoded = t.tsUnionType([\n result.typeDecoded,\n t.tsNullKeyword(),\n ]);\n result.typeEncoded = t.tsUnionType([\n result.typeEncoded,\n t.tsNullKeyword(),\n ]);\n }\n\n return result;\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 | ReferenceObject } | 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 intersection: (expressions) =>\n expressions.reduce((a, b) =>\n t.callExpression(\n t.memberExpression(t.identifier(\"Schema\"), t.identifier(\"extend\")),\n [a, b]\n )\n ),\n objectExtend: (expressions) =>\n expressions.reduce((a, b) =>\n t.callExpression(\n t.memberExpression(t.identifier(\"Schema\"), t.identifier(\"extend\")),\n [a, b]\n )\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(t.identifier(\"Effect\"), t.identifier(\"promise\")),\n [t.arrowFunctionExpression([], decode, true)]\n )\n );\n encodeFn = t.arrowFunctionExpression(\n [t.identifier(\"from\"), t.identifier(\"ctx\")],\n t.callExpression(\n t.memberExpression(t.identifier(\"Effect\"), t.identifier(\"promise\")),\n [t.arrowFunctionExpression([], encode, true)]\n )\n );\n } else {\n decodeFn = t.arrowFunctionExpression(\n [t.identifier(\"from\"), t.identifier(\"ctx\")],\n decode\n );\n encodeFn = t.arrowFunctionExpression(\n [t.identifier(\"from\"), t.identifier(\"ctx\")],\n encode\n );\n }\n return t.callExpression(\n t.memberExpression(\n t.identifier(\"Schema\"),\n t.identifier(\n decodeAsync || encodeAsync ? \"transformOrFail\" : \"transform\"\n )\n ),\n [\n encoded,\n decoded,\n t.objectExpression([\n t.objectProperty(t.identifier(\"strict\"), t.booleanLiteral(true)),\n t.objectProperty(t.identifier(\"decode\"), decodeFn),\n t.objectProperty(t.identifier(\"encode\"), encodeFn),\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 intersection: (expressions) =>\n expressions.reduce((a, b) =>\n t.callExpression(\n t.memberExpression(z, t.identifier(\"intersection\")),\n [a, b]\n )\n ),\n objectExtend: (expressions) =>\n expressions.reduce((a, b) =>\n t.callExpression(\n t.memberExpression(mini ? z : a, t.identifier(\"extend\")),\n [...(mini ? [a] : []), b]\n )\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: ({\n encoded,\n decoded,\n decode,\n decodeAsync,\n encode,\n encodeAsync,\n }) =>\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 parametersWithSkipToken = t.identifier(\"parameters\");\n parametersWithSkipToken.typeAnnotation = t.tsTypeAnnotation(\n t.tsUnionType([\n parametersSchema.typeReference,\n t.tsTypeReference(\n yield* generationHelpers.ensureImport(\n \"SkipToken\",\n \"@tanstack/react-query\",\n true\n )\n ),\n ])\n );\n\n const isMutation =\n method !== \"get\" &&\n method !== \"head\" &&\n method !== \"options\" &&\n !(operation.tags as string[])?.some((i) => i.toLowerCase() === \"query\");\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.toUpperCase())\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 ? [] : [parametersWithSkipToken],\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 parametersWithSkipToken,\n ]),\n t.tsTypeReference(\n yield* generationHelpers.ensureImport(\n \"QueryKey\",\n \"@tanstack/react-query\",\n true\n )\n )\n )\n ),\n ]),\n isMutation\n ? t.objectProperty(\n t.identifier(\"mutationFn\"),\n t.arrowFunctionExpression(\n [parameters],\n t.callExpression(\n t.memberExpression(\n t.thisExpression(),\n t.identifier(operationKey.lower)\n ),\n [parameters]\n ),\n true\n )\n )\n : t.objectProperty(\n t.identifier(\"queryFn\"),\n t.conditionalExpression(\n t.binaryExpression(\n \"===\",\n parametersWithSkipToken,\n yield* generationHelpers.ensureImport(\n \"skipToken\",\n \"@tanstack/react-query\"\n )\n ),\n yield* generationHelpers.ensureImport(\n \"skipToken\",\n \"@tanstack/react-query\"\n ),\n t.arrowFunctionExpression(\n [],\n t.callExpression(\n t.memberExpression(\n t.thisExpression(),\n t.identifier(operationKey.lower)\n ),\n [parametersWithSkipToken]\n ),\n true\n )\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\"]","schema","result: ExpressionWithType","result","i: unknown","value: unknown","e: unknown","expression: ExpressionWithType","expression: t.Expression","typeDecoded: t.TSType","typeEncoded: t.TSType","expressions: ExpressionWithType[]","operationKey: generationHelpers.OperationKey","method: OperationObject","path: string","pathParameters: Record<string, t.Expression>","content: { [format: string]: MediaTypeObject | ReferenceObject } | 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 intersection: (expressions: t.Expression[]) => t.Expression;\n objectExtend: (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\nexport type ExpressionWithType = {\n expression: t.Expression;\n typeDecoded: t.TSType;\n typeEncoded: t.TSType;\n typeMeta: {\n readonly?: boolean;\n optional?: boolean;\n isObject?: boolean;\n isNull?: 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.schemaTypeMeta.set(schemaName, schemaExpression.typeMeta);\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: ctx.schemaTypeMeta.get(schemaName)!,\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.allOf) {\n const results = yield* Effect.forEach(\n (schema: SchemaObject | ReferenceObject) => ensureSchema(schema)\n )(schema.allOf);\n\n let result: ExpressionWithType;\n if (results.length === 1) {\n result = results[0]!;\n } else {\n result = {\n expression: options.schema[\n results.every((i) => i.typeMeta.isObject)\n ? \"objectExtend\"\n : \"intersection\"\n ](results.map((result) => result.expression)),\n typeDecoded: t.tsIntersectionType(\n results.map((result) => result.typeDecoded)\n ),\n typeEncoded: t.tsIntersectionType(\n results.map((result) => result.typeEncoded)\n ),\n typeMeta,\n };\n }\n\n // Workaround to support Swashbuckle.AspNetCore's nullable attribute on allOf objects.\n if (\"nullable\" in schema && schema.nullable) {\n result.expression = options.modifiers.nullable(result.expression);\n result.typeDecoded = t.tsUnionType([\n result.typeDecoded,\n t.tsNullKeyword(),\n ]);\n result.typeEncoded = t.tsUnionType([\n result.typeEncoded,\n t.tsNullKeyword(),\n ]);\n }\n return result;\n }\n\n if (schema.enum) {\n const unsupportedEnumValue = schema.enum.find(\n (i: unknown) =>\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: unknown) =>\n e === null ? t.nullLiteral() : getLiteral(e)\n )\n ),\n ...equivalentType(\n t.tsUnionType(\n schema.enum.map((e: unknown) =>\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 typeMeta.isObject = true;\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 ) as [string, SchemaObject | ReferenceObject][]) {\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 typeMeta.isNull = true;\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 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 (typeof schema === \"boolean\") return [];\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 let expressions: ExpressionWithType[] = [];\n for (const schema of schemas) {\n expressions.push(\n yield* applyModifiers(yield* getBaseEffectSchema(schema), schema)\n );\n }\n\n let isNullable = false;\n if (expressions.some((e) => e.typeMeta?.isNull)) {\n isNullable = true;\n expressions = expressions.filter((e) => !e.typeMeta?.isNull);\n }\n\n let result: ExpressionWithType;\n\n if (expressions.length === 1) {\n result = expressions[0]!;\n } else {\n result = {\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 if (isNullable) {\n result.expression = options.modifiers.nullable(result.expression);\n result.typeDecoded = t.tsUnionType([\n result.typeDecoded,\n t.tsNullKeyword(),\n ]);\n result.typeEncoded = t.tsUnionType([\n result.typeEncoded,\n t.tsNullKeyword(),\n ]);\n }\n\n return result;\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 | ReferenceObject } | 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 intersection: (expressions) =>\n expressions.reduce((a, b) =>\n t.callExpression(\n t.memberExpression(t.identifier(\"Schema\"), t.identifier(\"extend\")),\n [a, b]\n )\n ),\n objectExtend: (expressions) =>\n expressions.reduce((a, b) =>\n t.callExpression(\n t.memberExpression(t.identifier(\"Schema\"), t.identifier(\"extend\")),\n [a, b]\n )\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(t.identifier(\"Effect\"), t.identifier(\"promise\")),\n [t.arrowFunctionExpression([], decode, true)]\n )\n );\n encodeFn = t.arrowFunctionExpression(\n [t.identifier(\"from\"), t.identifier(\"ctx\")],\n t.callExpression(\n t.memberExpression(t.identifier(\"Effect\"), t.identifier(\"promise\")),\n [t.arrowFunctionExpression([], encode, true)]\n )\n );\n } else {\n decodeFn = t.arrowFunctionExpression(\n [t.identifier(\"from\"), t.identifier(\"ctx\")],\n decode\n );\n encodeFn = t.arrowFunctionExpression(\n [t.identifier(\"from\"), t.identifier(\"ctx\")],\n encode\n );\n }\n return t.callExpression(\n t.memberExpression(\n t.identifier(\"Schema\"),\n t.identifier(\n decodeAsync || encodeAsync ? \"transformOrFail\" : \"transform\"\n )\n ),\n [\n encoded,\n decoded,\n t.objectExpression([\n t.objectProperty(t.identifier(\"strict\"), t.booleanLiteral(true)),\n t.objectProperty(t.identifier(\"decode\"), decodeFn),\n t.objectProperty(t.identifier(\"encode\"), encodeFn),\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\nconst z = t.identifier(\"z\");\n\nfunction getObjectShape(expression: t.Expression) {\n // If the expression is z.object({...}), return the object argument, rather than unnecessarily using z.object(...).shape\n if (\n expression.type === \"CallExpression\" &&\n expression.callee.type === \"MemberExpression\" &&\n expression.callee.object.type === \"Identifier\" &&\n expression.callee.object.name === \"z\" &&\n expression.callee.property.type === \"Identifier\" &&\n expression.callee.property.name === \"object\" &&\n expression.arguments.length === 1 &&\n expression.arguments[0]?.type === \"ObjectExpression\"\n ) {\n return expression.arguments[0];\n }\n return t.memberExpression(expression, t.identifier(\"shape\"));\n}\n\nexport const createZodSchemaGenerator = ({\n mini = false,\n ...options\n}: ZodSchemaGeneratorOptions) => {\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 intersection: (expressions) =>\n expressions.reduce((a, b) =>\n t.callExpression(\n t.memberExpression(z, t.identifier(\"intersection\")),\n [a, b]\n )\n ),\n objectExtend: (expressions) =>\n expressions.reduce((a, b) =>\n t.callExpression(\n t.memberExpression(mini ? z : a, t.identifier(\"extend\")),\n [...(mini ? [a] : []), getObjectShape(b)]\n )\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: ({\n encoded,\n decoded,\n decode,\n decodeAsync,\n encode,\n encodeAsync,\n }) =>\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 parametersWithSkipToken = t.identifier(\"parameters\");\n parametersWithSkipToken.typeAnnotation = t.tsTypeAnnotation(\n t.tsUnionType([\n parametersSchema.typeReference,\n t.tsTypeReference(\n yield* generationHelpers.ensureImport(\n \"SkipToken\",\n \"@tanstack/react-query\",\n true\n )\n ),\n ])\n );\n\n const isMutation =\n method !== \"get\" &&\n method !== \"head\" &&\n method !== \"options\" &&\n !(operation.tags as string[])?.some((i) => i.toLowerCase() === \"query\");\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.toUpperCase())\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 ? [] : [parametersWithSkipToken],\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 parametersWithSkipToken,\n ]),\n t.tsTypeReference(\n yield* generationHelpers.ensureImport(\n \"QueryKey\",\n \"@tanstack/react-query\",\n true\n )\n )\n )\n ),\n ]),\n isMutation\n ? t.objectProperty(\n t.identifier(\"mutationFn\"),\n t.arrowFunctionExpression(\n [parameters],\n t.callExpression(\n t.memberExpression(\n t.thisExpression(),\n t.identifier(operationKey.lower)\n ),\n [parameters]\n ),\n true\n )\n )\n : t.objectProperty(\n t.identifier(\"queryFn\"),\n t.conditionalExpression(\n t.binaryExpression(\n \"===\",\n parametersWithSkipToken,\n yield* generationHelpers.ensureImport(\n \"skipToken\",\n \"@tanstack/react-query\"\n )\n ),\n yield* generationHelpers.ensureImport(\n \"skipToken\",\n \"@tanstack/react-query\"\n ),\n t.arrowFunctionExpression(\n [],\n t.callExpression(\n t.memberExpression(\n t.thisExpression(),\n t.identifier(operationKey.lower)\n ),\n [parametersWithSkipToken]\n ),\n true\n )\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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"}
|
package/dist/index.js
CHANGED
|
@@ -7376,7 +7376,7 @@ function readFiles() {
|
|
|
7376
7376
|
//#endregion
|
|
7377
7377
|
//#region package.json
|
|
7378
7378
|
var name = "@sohcah/openapi-generator";
|
|
7379
|
-
var version = "0.2.
|
|
7379
|
+
var version = "0.2.1";
|
|
7380
7380
|
var type = "module";
|
|
7381
7381
|
var license = "MIT";
|
|
7382
7382
|
var author = "Sam Hindess <mail@sohcah.dev>";
|
|
@@ -7994,4 +7994,4 @@ const generateToFile = Effect.fn(function* ({ onGenerated, output, watch,...opti
|
|
|
7994
7994
|
|
|
7995
7995
|
//#endregion
|
|
7996
7996
|
export { generate$2 as generate, generateToFile };
|
|
7997
|
-
//# sourceMappingURL=src-
|
|
7997
|
+
//# sourceMappingURL=src-DhXSDR6J.js.map
|