{"version":3,"file":"index.cjs","sources":["../src/index.ts"],"sourcesContent":["import * as cg from \"./tscodegen\";\nimport ApiGenerator from \"./generate\";\nimport ts from \"typescript\";\nimport SwaggerParser from \"@apidevtools/swagger-parser\";\nimport converter from \"swagger2openapi\";\nimport { OpenAPI, OpenAPIV3 } from \"openapi-types\";\n\nexport { cg };\n\nexport const optsArgumentStyles = [\"positional\", \"object\"];\nexport type Opts = {\n  include?: string[];\n  exclude?: string[];\n  optimistic?: boolean;\n  unionUndefined?: boolean;\n  useEnumType?: boolean;\n  mergeReadWriteOnly?: boolean;\n  useUnknown?: boolean;\n  argumentStyle?: (typeof optsArgumentStyles)[number];\n};\n\nexport function generateAst(\n  doc: OpenAPIV3.Document,\n  opts: Opts,\n  isConverted: boolean,\n) {\n  return new ApiGenerator(doc, opts, isConverted).generateApi();\n}\n\nexport function printAst(ast: ts.SourceFile) {\n  return cg.printFile(ast);\n}\n\nexport async function generateSource(\n  spec: string,\n  opts: Opts = {},\n): Promise<string> {\n  const { doc, isConverted } = await parseSpec(spec);\n  const ast = generateAst(doc, opts, isConverted);\n  const { title, version } = doc.info;\n  const preamble = [\"$&\", title, version].filter(Boolean).join(\"\\n * \");\n  const src = printAst(ast);\n  return src.replace(/^\\/\\*\\*/, preamble);\n}\n\nfunction isOpenApiV3(doc: OpenAPI.Document): doc is OpenAPIV3.Document {\n  return \"openapi\" in doc && doc.openapi.startsWith(\"3\");\n}\n\nexport async function parseSpec(spec: string) {\n  const doc = await SwaggerParser.bundle(spec);\n  if (isOpenApiV3(doc)) {\n    return {\n      doc,\n      isConverted: false,\n    };\n  } else {\n    const converted = await converter.convertObj(doc, {});\n    return {\n      doc: converted.openapi as OpenAPIV3.Document,\n      isConverted: true,\n    };\n  }\n}\n"],"names":["optsArgumentStyles","generateAst","doc","opts","isConverted","ApiGenerator","printAst","ast","cg.printFile","generateSource","_0","__async","spec","parseSpec","title","version","preamble","isOpenApiV3","SwaggerParser","converter"],"mappings":"+YASaA,EAAqB,CAAC,aAAc,QAAQ,EAYzC,SAAAC,EACdC,EACAC,EACAC,EACA,CACA,OAAO,IAAIC,EAAa,aAAAH,EAAKC,EAAMC,CAAW,EAAE,YAAY,CAC9D,CAEO,SAASE,EAASC,EAAoB,CACpC,OAAAC,EAAAA,UAAaD,CAAG,CACzB,CAEA,SAAsBE,EACpBC,EAEiB,QAAAC,EAAA,yBAFjBC,EACAT,EAAa,GACI,CACjB,KAAM,CAAE,IAAAD,EAAK,YAAAE,CAAgB,EAAA,MAAMS,EAAUD,CAAI,EAC3CL,EAAMN,EAAYC,EAAKC,EAAMC,CAAW,EACxC,CAAE,MAAAU,EAAO,QAAAC,CAAQ,EAAIb,EAAI,KACzBc,EAAW,CAAC,KAAMF,EAAOC,CAAO,EAAE,OAAO,OAAO,EAAE,KAAK;AAAA,IAAO,EAE7D,OADKT,EAASC,CAAG,EACb,QAAQ,UAAWS,CAAQ,CACxC,GAEA,SAASC,EAAYf,EAAkD,CACrE,MAAO,YAAaA,GAAOA,EAAI,QAAQ,WAAW,GAAG,CACvD,CAEA,SAAsBW,EAAUD,EAAc,QAAAD,EAAA,sBAC5C,MAAMT,EAAM,MAAMgB,EAAc,OAAON,CAAI,EACvC,OAAAK,EAAYf,CAAG,EACV,CACL,IAAAA,EACA,YAAa,EACf,EAGO,CACL,KAFgB,MAAMiB,EAAU,WAAWjB,EAAK,CAAA,CAAE,GAEnC,QACf,YAAa,EACf,CAEJ"}