{"version":3,"sources":["/home/runner/work/kubb/kubb/packages/swagger-ts/dist/chunk-R24SILB2.cjs","../src/plugin.ts","../src/OperationGenerator.tsx","../src/components/OasType.tsx","../src/components/OperationSchema.tsx","../src/SchemaGenerator.tsx","../src/components/Schema.tsx","../src/parser/index.ts","../src/index.ts"],"names":["Template","transformers","jsxs","jsx"],"mappings":"AAAA;ACAA,wEAAiB;AAEjB,kCAAyD;AACzD,mHAAsC;AACtC,yCAA+B;AAC/B,6CAA8B;ADC9B;AACA;AEPA;AACA,yDAAoB;AACpB,oCAAgC;AFShC;AACA;AGZA;AACA,+CAAuB;AAiBnB,qDAAA;AAFJ,SAAS,QAAA,CAAS,EAAE,IAAA,EAAM,QAAA,EAAU,IAAI,CAAA,EAA6B;AACnE,EAAA,uBACE,8BAAA,oBAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,CAAA,aAAA,EAAgB,IAAI,CAAA,GAAA,EAAM,IAAA,CAAK,SAAA,CAAU,GAAA,EAAK,KAAA,CAAA,EAAW,CAAC,CAAC,CAAA,SAAA,CAAA;AAAA,oBAC5D,6BAAA,IAAC,EAAA,CAAA,CAAG,CAAA;AAAA,oBACJ,6BAAA,WAAC,EAAA,EAAK,IAAA,EAAM,QAAA,EAAU,MAAA,EAAM,IAAA,EACzB,QAAA,EAAA,CAAA,aAAA,EAAgB,IAAI,CAAA,CAAA,EAAA,CACvB;AAAA,EAAA,EAAA,CACF,CAAA;AAEJ;AAEA,IAAM,iBAAA,EAAmB,EAAE,OAAA,EAAS,SAAS,CAAA;AAWtC,SAAS,OAAA,CAAQ,EAAE,IAAA,EAAM,QAAA,EAAU,QAAA,EAAAA,UAAAA,EAAW,gBAAA,CAAiB,QAAQ,CAAA,EAAqB;AACjG,EAAA,MAAM,IAAA,EAAM,2BAAA,CAAO;AAEnB,EAAA,uBAAO,6BAAA,SAACA,EAAA,EAAS,IAAA,EAAY,QAAA,EAAoB,GAAA,EAAK,GAAA,CAAI,IAAA,CAAK,CAAA;AACjE;AAWA,OAAA,CAAQ,KAAA,EAAO,QAAA,CAAU,EAAE,IAAA,EAAM,QAAA,EAAU,UAAA,EAAY,iBAAiB,CAAA,EAAyB;AAC/F,EAAA,MAAM;AAAA,IACJ,aAAA;AAAA,IACA,MAAA,EAAQ,EAAE,GAAA,EAAK,UAAU;AAAA,EAC3B,EAAA,EAAI,2BAAA,CAAiB;AACrB,EAAA,MAAM,KAAA,EAAO,aAAA,CAAc,OAAA,CAAQ,EAAE,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,UAAU,CAAC,CAAA;AAEtE,EAAA,MAAMA,UAAAA,EAAW,SAAA,CAAU,OAAA;AAE3B,EAAA,uBACE,6BAAA,aAAC,EAAA,EAAO,QAAA,EAAS,YAAA,EACf,QAAA,kBAAA,8BAAA,WAAC,EAAA,EAAe,QAAA,EAAU,IAAA,CAAK,QAAA,EAAU,IAAA,EAAM,IAAA,CAAK,IAAA,EAAM,IAAA,EAAM,IAAA,CAAK,IAAA,EACnE,QAAA,EAAA;AAAA,oBAAA,6BAAA,WAAC,CAAK,MAAA,EAAL,EAAY,IAAA,EAAM,CAAC,OAAO,CAAA,EAAG,IAAA,EAAK,sBAAA,EAAuB,UAAA,EAAU,KAAA,CAAC,CAAA;AAAA,oBACrE,6BAAA,WAAC,CAAK,MAAA,EAAL,EACC,QAAA,kBAAA,6BAAA,OAAC,EAAA,EAAQ,QAAA,EAAUA,SAAAA,EAAU,IAAA,EAAY,SAAA,CAAoB,EAAA,CAC/D;AAAA,EAAA,EAAA,CACF,EAAA,CACF,CAAA;AAEJ,CAAA;AAEA,OAAA,CAAQ,UAAA,EAAY,gBAAA;AHlCpB;AACA;AI1CA;AACA,2CAAsB;AACtB,uMAAyB;AACzB;AACA;AACA;AJ4CA;AACA;AKjDA;AAEA;AACA;ALkDA;AACA;AMvDA;AACA;AAEA;AACA;AACA;AACA;AACA;ANwDA;AACA;AOhEA;AACA;AACA;AAKO,IAAM,kBAAA,EAAoB;AAAA,EAC/B,GAAA,EAAK,CAAA,EAAA,GAAc,OAAA,CAAA,gBAAA,CAAiB,GAAA;AAAA,EACpC,OAAA,EAAS,CAAA,EAAA,GAAc,OAAA,CAAA,gBAAA,CAAiB,OAAA;AAAA,EACxC,MAAA,EAAQ,CAAA,EAAA,GAAc,OAAA,CAAA,gBAAA,CAAiB,MAAA;AAAA,EACvC,OAAA,EAAS,CAAA,EAAA,GAAc,OAAA,CAAA,gBAAA,CAAiB,MAAA;AAAA,EACxC,MAAA,EAAQ,CAAC,KAAA,EAAA,GAA6B;AACpC,IAAA,GAAA,CAAI,CAAC,MAAA,GAAS,CAAC,KAAA,CAAM,MAAA,EAAQ;AAC3B,MAAA,OAAe,OAAA,CAAA,gBAAA,CAAiB,MAAA;AAAA,IAClC;AAEA,IAAA,OAAe,OAAA,CAAA,qBAAA,CAAsB,KAAK,CAAA;AAAA,EAC5C,CAAA;AAAA,EACA,MAAA,EAAQ,CAAA,EAAA,GAAc,OAAA,CAAA,gBAAA,CAAiB,MAAA;AAAA,EACvC,OAAA,EAAS,CAAA,EAAA,GAAc,OAAA,CAAA,gBAAA,CAAiB,OAAA;AAAA,EACxC,SAAA,EAAW,CAAA,EAAA,GAAc,OAAA,CAAA,gBAAA,CAAiB,SAAA;AAAA,EAC1C,QAAA,EAAU,KAAA,CAAA;AAAA,EACV,IAAA,EAAM,CAAA,EAAA,GAAc,OAAA,CAAA,gBAAA,CAAiB,IAAA;AAAA,EACrC,OAAA,EAAS,KAAA,CAAA;AAAA,EACT,KAAA,EAAO,CAAC,KAAA,EAAA,GAA0B;AAChC,IAAA,GAAA,CAAI,CAAC,KAAA,EAAO;AACV,MAAA,OAAO,KAAA,CAAA;AAAA,IACT;AAEA,IAAA,OAAe,OAAA,CAAA,sBAAA,CAAuB,EAAE,MAAM,CAAC,CAAA;AAAA,EACjD,CAAA;AAAA,EACA,KAAA,EAAO,CAAC,KAAA,EAAA,GAA0B;AAChC,IAAA,GAAA,CAAI,CAAC,KAAA,EAAO;AACV,MAAA,OAAO,KAAA,CAAA;AAAA,IACT;AAEA,IAAA,OAAe,OAAA,CAAA,mBAAA,CAAoB,KAAK,CAAA;AAAA,EAC1C,CAAA;AAAA,EACA,IAAA,EAAM,CAAC,IAAA,EAAA,GAAkB;AACvB,IAAA,GAAA,CAAI,CAAC,IAAA,EAAM;AACT,MAAA,OAAO,KAAA,CAAA;AAAA,IACT;AAEA,IAAA,OAAe,OAAA,CAAA,uBAAA,CAAwB,IAAA,EAAM,KAAA,CAAS,CAAA;AAAA,EACxD,CAAA;AAAA,EACA,KAAA,EAAO,CAAC,KAAA,EAAA,GAA0B;AAChC,IAAA,GAAA,CAAI,CAAC,KAAA,EAAO;AACV,MAAA,OAAO,KAAA,CAAA;AAAA,IACT;AAEA,IAAA,OAAe,OAAA,CAAA,sBAAA,CAAuB;AAAA,MACpC,eAAA,EAAiB,IAAA;AAAA,MACjB;AAAA,IACF,CAAC,CAAA;AAAA,EACH,CAAA;AAAA,EACA,KAAA,EAAO,CAAC,IAAA,EAAkC,MAAA,EAAA,GAA6C;AACrF,IAAA,GAAA,CAAI,CAAC,IAAA,EAAM;AACT,MAAA,OAAO,KAAA,CAAA;AAAA,IACT;AAEA,IAAA,GAAA,CAAI,OAAA,IAAW,SAAA,EAAW;AACxB,MAAA,GAAA,CAAI,KAAA,IAAS,IAAA,EAAM;AACjB,QAAA,OAAe,OAAA,CAAA,qBAAA,CAA8B,OAAA,CAAA,UAAA,CAAW,CAAC,CAAA;AAAA,MAC3D;AAEA,MAAA,OAAe,OAAA,CAAA,qBAAA,CAA8B,OAAA,CAAA,WAAA,CAAY,CAAC,CAAA;AAAA,IAC5D;AAEA,IAAA,GAAA,CAAI,OAAA,IAAW,SAAA,GAAY,OAAO,KAAA,IAAS,QAAA,EAAU;AACnD,MAAA,OAAe,OAAA,CAAA,qBAAA,CAA8B,OAAA,CAAA,oBAAA,CAAqB,IAAI,CAAC,CAAA;AAAA,IACzE;AAEA,IAAA,OAAe,OAAA,CAAA,qBAAA,CAA8B,OAAA,CAAA,mBAAA,CAAoB,IAAA,CAAK,QAAA,CAAS,CAAC,CAAC,CAAA;AAAA,EACnF,CAAA;AAAA,EACA,QAAA,EAAU,CAAA,EAAA,GAAc,OAAA,CAAA,gBAAA,CAAiB,MAAA;AAAA,EACzC,IAAA,EAAM,CAAC,KAAA,EAA0B,QAAA,EAAA,GAC/B,KAAA,IAAS,SAAA,EAAmB,OAAA,CAAA,gBAAA,CAAiB,OAAA,EAAiB,OAAA,CAAA,uBAAA,CAAgC,OAAA,CAAA,gBAAA,CAAiB,MAAM,CAAC,CAAA;AAAA,EACxH,IAAA,EAAM,CAAC,KAAA,EAA0B,QAAA,EAAA,GAC/B,KAAA,IAAS,SAAA,EAAmB,OAAA,CAAA,gBAAA,CAAiB,OAAA,EAAiB,OAAA,CAAA,uBAAA,CAAgC,OAAA,CAAA,gBAAA,CAAiB,MAAM,CAAC,CAAA;AAAA,EACxH,IAAA,EAAM,KAAA,CAAA;AAAA,EACN,GAAA,EAAK,KAAA,CAAA;AAAA,EACL,MAAA,EAAQ,KAAA,CAAA;AAAA,EACR,OAAA,EAAS,KAAA,CAAA;AAAA,EACT,GAAA,EAAK,CAAC,KAAA,EAAA,GAA0B;AAC9B,IAAA,GAAA,CAAI,CAAC,KAAA,EAAO;AACV,MAAA,OAAO,KAAA,CAAA;AAAA,IACT;AAEA,IAAA,OAAe,OAAA,CAAA,6BAAA,CAA8B;AAAA,MAC3C,eAAA,EAAiB,IAAA;AAAA,MACjB;AAAA,IACF,CAAC,CAAA;AAAA,EACH,CAAA;AAAA,EACA,QAAA,EAAU,KAAA,CAAA;AAAA,EACV,GAAA,EAAK,KAAA,CAAA;AAAA,EACL,GAAA,EAAK,KAAA,CAAA;AAAA,EACL,QAAA,EAAU,KAAA,CAAA;AAAA,EACV,OAAA,EAAS,KAAA,CAAA;AAAA,EACT,KAAA,EAAO,KAAA,CAAA;AAAA,EACP,SAAA,EAAW,KAAA,CAAA;AAAA,EACX,QAAA,EAAU,KAAA,CAAA;AAAA,EACV,QAAA,EAAU,KAAA,CAAA;AAAA,EACV,KAAA,EAAO,KAAA,CAAA;AAAA,EACP,QAAA,EAAU,KAAA,CAAA;AAAA,EACV,SAAA,EAAW,KAAA,CAAA;AAAA,EACX,GAAA,EAAK,CAAC,YAAA,EAAA,GAA0B;AAC9B,IAAA,GAAA,CAAI,CAAC,YAAA,EAAc;AACjB,MAAA,OAAO,KAAA,CAAA;AAAA,IACT;AAEA,IAAA,OAAe,OAAA,CAAA,uBAAA,CAAwB,YAAA,EAAc,KAAA,CAAS,CAAA;AAAA,EAChE,CAAA;AAAA,EACA,IAAA,EAAM,CAAA,EAAA,GAAc,OAAA,CAAA,uBAAA,CAAwB,MAAA,EAAQ,CAAC,CAAC,CAAA;AAAA,EACtD,UAAA,EAAY,KAAA,CAAA;AAAA,EACZ,OAAA,EAAS,KAAA,CAAA;AAAA,EACT,MAAA,EAAQ,KAAA,CAAA;AAAA,EACR,QAAA,EAAU,KAAA,CAAA;AAAA,EACV,IAAA,EAAM,KAAA;AACR,CAAA;AAmBO,SAAS,KAAA,CAAM,MAAA,EAA4B,OAAA,EAAiB,OAAA,EAAoD;AACrH,EAAA,MAAM,MAAA,EAAQ,iBAAA,CAAkB,OAAA,CAAQ,OAAyC,CAAA;AAEjF,EAAA,GAAA,CAAI,CAAC,KAAA,EAAO;AACV,IAAA,OAAO,KAAA,CAAA;AAAA,EACT;AAEA,EAAA,GAAA,CAAI,kCAAA,OAAU,EAAS,yBAAA,CAAe,KAAK,CAAA,EAAG;AAC5C,IAAA,OAAO,iBAAA,CAAkB,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,GAAA,CAAI,CAAC,MAAA,EAAA,GAAW,KAAA,CAAM,OAAA,EAAS,MAAA,EAAQ,OAAO,CAAC,CAAA,CAAE,MAAA,CAAO,OAAO,CAAkB,CAAA;AAAA,EAC/H;AAEA,EAAA,GAAA,CAAI,kCAAA,OAAU,EAAS,yBAAA,CAAe,GAAG,CAAA,EAAG;AAC1C,IAAA,OAAO,iBAAA,CAAkB,GAAA,CAAI,OAAA,CAAQ,IAAA,CAAK,GAAA,CAAI,CAAC,MAAA,EAAA,GAAW,KAAA,CAAM,OAAA,EAAS,MAAA,EAAQ,OAAO,CAAC,CAAA,CAAE,MAAA,CAAO,OAAO,CAAkB,CAAA;AAAA,EAC7H;AAEA,EAAA,GAAA,CAAI,kCAAA,OAAU,EAAS,yBAAA,CAAe,KAAK,CAAA,EAAG;AAC5C,IAAA,OAAO,iBAAA,CAAkB,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,CAAC,MAAA,EAAA,GAAW,KAAA,CAAM,OAAA,EAAS,MAAA,EAAQ,OAAO,CAAC,CAAA,CAAE,MAAA,CAAO,OAAO,CAAkB,CAAA;AAAA,EACrI;AAEA,EAAA,GAAA,CAAI,kCAAA,OAAU,EAAS,yBAAA,CAAe,IAAI,CAAA,EAAG;AAC3C,IAAA,OAAO,iBAAA,CAAkB,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,QAAQ,CAAA;AAAA,EACrD;AAEA,EAAA,GAAA,CAAI,kCAAA,OAAU,EAAS,yBAAA,CAAe,GAAG,CAAA,EAAG;AAC1C,IAAA,OAAO,iBAAA,CAAkB,GAAA,CAAI,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAA;AAAA,EAChD;AAEA,EAAA,GAAA,CAAI,kCAAA,OAAU,EAAS,yBAAA,CAAe,IAAI,CAAA,EAAG;AAC3C,IAAA,OAAO,KAAA,CAAM,CAAA;AAAA,EACf;AAEA,EAAA,GAAA,CAAI,kCAAA,OAAU,EAAS,yBAAA,CAAe,KAAK,CAAA,EAAG;AAC5C,IAAA,OAAO,iBAAA,CAAkB,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,CAAC,MAAA,EAAA,GAAW,KAAA,CAAM,OAAA,EAAS,MAAA,EAAQ,OAAO,CAAC,CAAA,CAAE,MAAA,CAAO,OAAO,CAAkB,CAAA;AAAA,EACrI;AAEA,EAAA,GAAA,CAAI,kCAAA,OAAU,EAAS,yBAAA,CAAe,KAAK,CAAA,EAAG;AAC5C,IAAA,OAAO,iBAAA,CAAkB,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,IAAA,EAAM,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA;AAAA,EACvE;AAEA,EAAA,GAAA,CAAI,kCAAA,OAAU,EAAS,yBAAA,CAAe,MAAM,CAAA,EAAG;AAC7C,IAAA,MAAM,WAAA,EAAa,MAAA,CAAO,OAAA,iBAAQ,OAAA,mBAAQ,IAAA,6BAAM,aAAA,GAAc,CAAC,CAAC,CAAA,CAC7D,MAAA,CAAO,CAAC,IAAA,EAAA,GAAS;AAChB,MAAA,MAAM,QAAA,EAAU,IAAA,CAAK,CAAC,CAAA;AACtB,MAAA,OAAO,QAAA,GAAW,OAAO,OAAA,CAAQ,IAAA,IAAQ,UAAA;AAAA,IAC3C,CAAC,CAAA,CACA,GAAA,CAAI,CAAC,CAAC,IAAA,EAAM,OAAO,CAAA,EAAA,GAAM;AACxB,MAAA,MAAM,WAAA,EAAa,OAAA,CAAQ,IAAA,CAAK,CAAC,MAAA,EAAA,GAAW,MAAA,CAAO,QAAA,IAAY,yBAAA,CAAe,IAAI,CAAA;AAClF,MAAA,MAAM,WAAA,kBAAa,UAAA,6BAAY,OAAA,GAAQ,IAAA;AAGvC,MAAA,GAAA,iBAAI,OAAA,qBAAQ,MAAA,4BAAA,CAAS,UAAU,GAAA,EAAG;AAChC,QAAA,uBAAO,OAAA,qBAAQ,MAAA,4BAAA,CAAS,UAAU,GAAA;AAAA,MACpC;AAEA,MAAA,MAAM,UAAA,EAAY,OAAA,CAAQ,IAAA,CAAK,CAAC,MAAA,EAAA,GAAW,MAAA,CAAO,QAAA,IAAY,yBAAA,CAAe,OAAO,CAAA;AACpF,MAAA,MAAM,WAAA,EAAa,OAAA,CAAQ,IAAA,CAAK,CAAC,MAAA,EAAA,GAAW,MAAA,CAAO,QAAA,IAAY,yBAAA,CAAe,QAAQ,CAAA;AACtF,MAAA,MAAM,WAAA,EAAa,OAAA,CAAQ,IAAA,CAAK,CAAC,MAAA,EAAA,GAAW,MAAA,CAAO,QAAA,IAAY,yBAAA,CAAe,QAAQ,CAAA;AACtF,MAAA,MAAM,WAAA,EAAa,OAAA,CAAQ,IAAA,CAAK,CAAC,MAAA,EAAA,GAAW,MAAA,CAAO,QAAA,IAAY,yBAAA,CAAe,QAAQ,CAAA;AACtF,MAAA,MAAM,eAAA,EAAiB,OAAA,CAAQ,IAAA,CAAK,CAAC,MAAA,EAAA,GAAW,MAAA,CAAO,QAAA,IAAY,yBAAA,CAAe,QAAQ,CAAA;AAC1F,MAAA,MAAM,iBAAA,EAAmB,OAAA,CAAQ,IAAA,CAAK,CAAC,MAAA,EAAA,GAAW,MAAA,CAAO,QAAA,IAAY,yBAAA,CAAe,UAAU,CAAA;AAC9F,MAAA,MAAM,cAAA,EAAgB,OAAA,CAAQ,IAAA,CAAK,CAAC,MAAA,EAAA,GAAW,MAAA,CAAO,QAAA,IAAY,yBAAA,CAAe,OAAO,CAAA;AACxF,MAAA,MAAM,cAAA,EAAgB,OAAA,CAAQ,IAAA,CAAK,CAAC,MAAA,EAAA,GAAW,MAAA,CAAO,QAAA,IAAY,yBAAA,CAAe,OAAO,CAAA;AACxF,MAAA,MAAM,aAAA,EAAe,OAAA,CAAQ,IAAA,CAAK,CAAC,MAAA,EAAA,GAAW,MAAA,CAAO,QAAA,IAAY,yBAAA,CAAe,MAAM,CAAA;AAEtF,MAAA,IAAI,KAAA,EAAO,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,EAAA,GAAW,KAAA,CAAM,OAAA,EAAS,MAAA,EAAQ,OAAO,CAAC,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,CAAC,CAAA;AAErF,MAAA,GAAA,CAAI,UAAA,EAAY;AACd,QAAA,KAAA,EAAe,OAAA,CAAA,sBAAA,CAAuB;AAAA,UACpC,KAAA,EAAO,CAAC,IAAA,EAAc,OAAA,CAAA,gBAAA,CAAiB,IAAI;AAAA,QAC7C,CAAC,CAAA;AAAA,MACH;AAEA,MAAA,GAAA,CAAI,UAAA,GAAa,CAAC,WAAA,EAAa,2BAA2B,CAAA,CAAE,QAAA,CAAS,OAAA,CAAQ,YAAsB,CAAA,EAAG;AACpG,QAAA,KAAA,EAAe,OAAA,CAAA,sBAAA,CAAuB;AAAA,UACpC,KAAA,EAAO,CAAC,IAAA,EAAc,OAAA,CAAA,gBAAA,CAAiB,SAAS;AAAA,QAClD,CAAC,CAAA;AAAA,MACH;AAEA,MAAA,GAAA,CAAI,WAAA,GAAc,CAAC,WAAA,EAAa,2BAA2B,CAAA,CAAE,QAAA,CAAS,OAAA,CAAQ,YAAsB,CAAA,EAAG;AACrG,QAAA,KAAA,EAAe,OAAA,CAAA,sBAAA,CAAuB;AAAA,UACpC,KAAA,EAAO,CAAC,IAAA,EAAc,OAAA,CAAA,gBAAA,CAAiB,SAAS;AAAA,QAClD,CAAC,CAAA;AAAA,MACH;AAEA,MAAA,MAAM,kBAAA,EAA4B,OAAA,CAAA,uBAAA,CAAwB;AAAA,QACxD,aAAA,EAAe,WAAA,GAAc,UAAA,EAAY,CAAC,eAAA,EAAiB,2BAA2B,CAAA,CAAE,QAAA,CAAS,OAAA,CAAQ,YAAsB,EAAA,EAAI,KAAA;AAAA,QACnI,IAAA,EAAM,UAAA;AAAA,QACN,IAAA;AAAA,QACA,QAAA,EAAU;AAAA,MACZ,CAAC,CAAA;AAED,MAAA,OAAe,OAAA,CAAA,iBAAA,CAAkB;AAAA,QAC/B,IAAA,EAAM,iBAAA;AAAA,QACN,QAAA,EAAU;AAAA,UACR,eAAA,EAAiB,CAAA,aAAA,EAAgB,sBAAA,CAAa,cAAA,CAAe,cAAA,CAAe,IAAI,CAAC,CAAA,EAAA;AAC9C,UAAA;AACgB,UAAA;AACA,UAAA;AAEvB,0BAAA;AAEd,QAAA;AACjB,MAAA;AACF,IAAA;AAGS,IAAA;AAGH,MAAA;AAGL,IAAA;AAEiF,IAAA;AACvF,EAAA;AAEiD,EAAA;AACb,IAAA;AACpC,EAAA;AAE6C,EAAA;AACI,IAAA;AACjD,EAAA;AAE6C,EAAA;AACI,IAAA;AACjD,EAAA;AAE0C,EAAA;AAC3B,IAAA;AACf,EAAA;AAEO,EAAA;AACT;APJ4F;AACA;AM3IpF;AAhHwC;AACV,EAAA;AACH,EAAA;AAC3B,EAAA;AACJ,IAAA;AACQ,IAAA;AACoC,MAAA;AAC5C,IAAA;AACmB,EAAA;AAG0B,EAAA;AAC7C,IAAA;AACwB,IAAA;AAClB,IAAA;AACP,EAAA;AAE0C,EAAA;AACzC,IAAA;AACwB,IAAA;AAClB,IAAA;AACP,EAAA;AAEyB,EAAA;AACK,EAAA;AAEb,EAAA;AACT,IAAA;AACT,EAAA;AAE6E,EAAA;AACE,EAAA;AACA,EAAA;AAID,EAAA;AAI9D,EAAA;AACwB,IAAA;AACO,MAAA;AAC5C,IAAA;AACH,EAAA;AAE8F,EAAA;AACtD,IAAA;AACY,MAAA;AACjD,IAAA;AACH,EAAA;AAE+F,EAAA;AACvD,IAAA;AACY,MAAA;AACjD,IAAA;AACH,EAAA;AAEgD,EAAA;AACV,IAAA;AAC9B,IAAA;AAE4B,IAAA;AACtB,MAAA;AACN,MAAA;AACa,MAAA;AAEf,IAAA;AACL,EAAA;AAEuE,EAAA;AACvD,EAAA;AACf,IAAA;AAAmD,IAAA;AACtC,MAAA;AACwB,QAAA;AACkB,UAAA;AACvB,UAAA;AAEgCC,UAAAA;AAEpD,UAAA;AACP,QAAA;AACH,MAAA;AACD,IAAA;AACH,EAAA;AAEM,EAAA;AACsB,IAAA;AACxB,MAAA;AACiF,MAAA;AAClF,IAAA;AACH,EAAA;AAE2B,EAAA;AAEX,IAAA;AACqH,MAAA;AACjI,IAAA;AACJ,EAAA;AAE6C,EAAA;AAC/C;AAIkD;AACL,EAAA;AACd,EAAA;AAGgC,EAAA;AAM/D;AN6N4F;AACA;AK9UhF;AAd0E;AACiC,EAAA;AACzD,IAAA;AAElC,IAAA;AACA,MAAA;AACvB,IAAA;AAEuC,IAAA;AAEnC,IAAA;AAED,sBAAA;AAMJ,IAAA;AAEY,IAAA;AACd,EAAA;AACF;ALqV4F;AACA;AIjQnF;AAhGoB;AAC3B,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AAC0G;AACzD,EAAA;AAE3B,EAAA;AACyB,IAAA;AACpB,MAAA;AACC,MAAA;AAClB,MAAA;AACP,IAAA;AACiF,IAAA;AACpF,EAAA;AAEqB,EAAA;AAC0B,IAAA;AACrB,MAAA;AACE,MAAA;AAClB,MAAA;AACP,IAAA;AACgF,IAAA;AACnF,EAAA;AAEwB,EAAA;AACuB,IAAA;AAClB,MAAA;AACD,MAAA;AAClB,MAAA;AACP,IAAA;AACmF,IAAA;AACtF,EAAA;AAEyB,EAAA;AACsB,IAAA;AACjB,MAAA;AACF,MAAA;AAClB,MAAA;AACP,IAAA;AACoF,IAAA;AACvF,EAAA;AAE0B,EAAA;AACqB,IAAA;AAChB,MAAA;AACH,MAAA;AAClB,MAAA;AACP,IAAA;AACqF,IAAA;AACxF,EAAA;AAEoB,EAAA;AACoC,IAAA;AACf,MAAA;AACU,QAAA;AAC/B,UAAA;AACY,UAAA;AAClB,UAAA;AACP,QAAA;AAE4E,QAAA;AAC9E,MAAA;AACF,IAAA;AACH,EAAA;AAEyD,EAAA;AACI,IAAA;AAC7C,IAAA;AAEI,MAAA;AACe,QAAA;AAChB,QAAA;AACF,UAAA;AACT,QAAA;AAEuC,QAAA;AACJ,UAAA;AACjC,UAAA;AACD,QAAA;AAEY,MAAA;AACnB,IAAA;AACoC,IAAA;AACrC,EAAA;AAEyB,EAAA;AAC5B;AAO+E;AACZ,EAAA;AACnE;AAI2D;AACa,EAAA;AACnD,EAAA;AAC0C,EAAA;AAC9B,EAAA;AAED,EAAA;AACM,EAAA;AACmB,EAAA;AACD,EAAA;AACpD,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACyB,IAAA;AAC1B,EAAA;AACqF,EAAA;AAEqB,EAAA;AAC5D,IAAA;AAIxC,IAAA;AAAwD,MAAA;AAEtD,sBAAA;AAEL,IAAA;AAEJ,EAAA;AAIIC,EAAAA;AACoB,IAAA;AAEqC,oBAAA;AAE3D,EAAA;AAEJ;AJkU4F;AACA;AE7cvD;AAXoD;AACnB,EAAA;AAChB,IAAA;AAE1B,IAAA;AACA,MAAA;AACvB,IAAA;AAEI,IAAA;AAEDC,sBAAAA;AAIJ,IAAA;AAEY,IAAA;AACd,EAAA;AAE6G,EAAA;AACzD,IAAA;AAE1B,IAAA;AACA,MAAA;AACvB,IAAA;AACI,IAAA;AAED,sBAAA;AAMJ,IAAA;AAEY,IAAA;AACd,EAAA;AACF;AF2c4F;AACA;AC9ehE;AAEgC;AACpD,EAAA;AACqB,IAAA;AACzB,IAAA;AACW,IAAA;AACX,IAAA;AACY,IAAA;AACD,IAAA;AACE,IAAA;AACF,IAAA;AACG,IAAA;AACC,IAAA;AACC,IAAA;AACN,IAAA;AACA,IAAA;AACR,EAAA;AAC0D,EAAA;AAEvD,EAAA;AACC,IAAA;AACG,IAAA;AACS,MAAA;AAChBF,MAAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AAAA;AAEgB,MAAA;AAChB,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACmB,IAAA;AACsB,IAAA;AAC4B,MAAA;AACS,MAAA;AAErD,MAAA;AAKgB,QAAA;AACvC,MAAA;AAE2C,MAAA;AACR,QAAA;AAEoC,QAAA;AACvE,MAAA;AAE+C,MAAA;AACjD,IAAA;AACwB,IAAA;AAC2C,MAAA;AAEvD,MAAA;AAC2C,QAAA;AACrD,MAAA;AAEO,MAAA;AACT,IAAA;AAC8B,IAAA;AACU,MAAA;AACpC,QAAA;AACF,MAAA;AAE6D,MAAA;AAC/D,IAAA;AACmB,IAAA;AAC2H,MAAA;AAEjG,MAAA;AACwB,MAAA;AACH,MAAA;AAEC,MAAA;AAC/D,QAAA;AACoB,QAAA;AACP,QAAA;AACkB,QAAA;AACtB,QAAA;AACT,QAAA;AACA,QAAA;AACe,QAAA;AAChB,MAAA;AAE+C,MAAA;AACf,MAAA;AAEsC,MAAA;AACrE,QAAA;AACoB,QAAA;AACP,QAAA;AACkB,QAAA;AAC/B,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACD,MAAA;AAEqD,MAAA;AAClB,MAAA;AACtC,IAAA;AACiB,IAAA;AACyB,MAAA;AACtC,QAAA;AACF,MAAA;AAEmE,MAAA;AAEjC,MAAA;AAChC,QAAA;AACA,QAAA;AACmC,QAAA;AACtB,QAAA;AACd,MAAA;AACH,IAAA;AACF,EAAA;AACD;AD4d2F;AACA;AQ9lBhE;AAIA;AAEb;AR4lB6E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/kubb/kubb/packages/swagger-ts/dist/chunk-R24SILB2.cjs","sourcesContent":[null,"import path from 'node:path'\n\nimport { FileManager, PluginManager, createPlugin } from '@kubb/core'\nimport { camelCase, pascalCase } from '@kubb/core/transformers'\nimport { renderTemplate } from '@kubb/core/utils'\nimport { pluginOasName } from '@kubb/plugin-oas'\n\nimport { OperationGenerator } from './OperationGenerator.tsx'\nimport { SchemaGenerator } from './SchemaGenerator.tsx'\n\nimport type { Plugin } from '@kubb/core'\nimport type { PluginOas as SwaggerPluginOptions } from '@kubb/plugin-oas'\nimport type { PluginTs } from './types.ts'\n\nexport const pluginTsName = 'plugin-ts' satisfies PluginTs['name']\n\nexport const pluginTs = createPlugin<PluginTs>((options) => {\n  const {\n    output = { path: 'types' },\n    group,\n    exclude = [],\n    include,\n    override = [],\n    enumType = 'asConst',\n    enumSuffix = '',\n    dateType = 'string',\n    unknownType = 'any',\n    optionalType = 'questionToken',\n    transformers = {},\n    oasType = false,\n    mapper = {},\n  } = options\n  const template = group?.output ? group.output : `${output.path}/{{tag}}Controller`\n\n  return {\n    name: pluginTsName,\n    options: {\n      extName: output.extName,\n      transformers,\n      dateType,\n      optionalType,\n      oasType,\n      enumType,\n      enumSuffix,\n      // keep the used enumnames between SchemaGenerator and OperationGenerator per plugin(pluginKey)\n      usedEnumNames: {},\n      unknownType,\n      override,\n      mapper,\n    },\n    pre: [pluginOasName],\n    resolvePath(baseName, pathMode, options) {\n      const root = path.resolve(this.config.root, this.config.output.path)\n      const mode = pathMode ?? FileManager.getMode(path.resolve(root, output.path))\n\n      if (mode === 'single') {\n        /**\n         * when output is a file then we will always append to the same file(output file), see fileManager.addOrAppend\n         * Other plugins then need to call addOrAppend instead of just add from the fileManager class\n         */\n        return path.resolve(root, output.path)\n      }\n\n      if (options?.tag && group?.type === 'tag') {\n        const tag = camelCase(options.tag)\n\n        return path.resolve(root, renderTemplate(template, { tag }), baseName)\n      }\n\n      return path.resolve(root, output.path, baseName)\n    },\n    resolveName(name, type) {\n      const resolvedName = pascalCase(name, { isFile: type === 'file' })\n\n      if (type) {\n        return transformers?.name?.(resolvedName, type) || resolvedName\n      }\n\n      return resolvedName\n    },\n    async writeFile(path, source) {\n      if (!path.endsWith('.ts') || !source) {\n        return\n      }\n\n      return this.fileManager.write(path, source, { sanity: false })\n    },\n    async buildStart() {\n      const [swaggerPlugin]: [Plugin<SwaggerPluginOptions>] = PluginManager.getDependedPlugins<SwaggerPluginOptions>(this.plugins, [pluginOasName])\n\n      const oas = await swaggerPlugin.api.getOas()\n      const root = path.resolve(this.config.root, this.config.output.path)\n      const mode = FileManager.getMode(path.resolve(root, output.path))\n\n      const schemaGenerator = new SchemaGenerator(this.plugin.options, {\n        oas,\n        pluginManager: this.pluginManager,\n        plugin: this.plugin,\n        contentType: swaggerPlugin.api.contentType,\n        include: undefined,\n        override,\n        mode,\n        output: output.path,\n      })\n\n      const schemaFiles = await schemaGenerator.build()\n      await this.addFile(...schemaFiles)\n\n      const operationGenerator = new OperationGenerator(this.plugin.options, {\n        oas,\n        pluginManager: this.pluginManager,\n        plugin: this.plugin,\n        contentType: swaggerPlugin.api.contentType,\n        exclude,\n        include,\n        override,\n        mode,\n      })\n\n      const operationFiles = await operationGenerator.build()\n      await this.addFile(...operationFiles)\n    },\n    async buildEnd() {\n      if (this.config.output.write === false) {\n        return\n      }\n\n      const root = path.resolve(this.config.root, this.config.output.path)\n\n      await this.fileManager.addIndexes({\n        root,\n        output,\n        meta: { pluginKey: this.plugin.key },\n        logger: this.logger,\n      })\n    },\n  }\n})\n","import { OperationGenerator as Generator } from '@kubb/plugin-oas'\nimport { Oas } from '@kubb/plugin-oas/components'\nimport { App, createRoot } from '@kubb/react'\n\nimport { OasType } from './components/OasType.tsx'\nimport { OperationSchema } from './components/OperationSchema.tsx'\n\nimport type { Operation } from '@kubb/oas'\nimport type { OperationMethodResult } from '@kubb/plugin-oas'\nimport type { FileMeta, PluginTs } from './types.ts'\n\nexport class OperationGenerator extends Generator<PluginTs['resolvedOptions'], PluginTs> {\n  async all(operations: Operation[]): OperationMethodResult<FileMeta> {\n    const { oas, pluginManager, plugin, mode } = this.context\n\n    const root = createRoot({\n      logger: pluginManager.logger,\n    })\n\n    root.render(\n      <App pluginManager={pluginManager} plugin={plugin} mode={mode}>\n        <Oas oas={oas} operations={operations} generator={this}>\n          {plugin.options.oasType && <OasType.File name=\"oas\" typeName=\"Oas\" />}\n        </Oas>\n      </App>,\n    )\n\n    return root.files\n  }\n\n  async operation(operation: Operation, options: PluginTs['resolvedOptions']): OperationMethodResult<FileMeta> {\n    const { oas, pluginManager, plugin, mode } = this.context\n\n    const root = createRoot({\n      logger: pluginManager.logger,\n    })\n    root.render(\n      <App pluginManager={pluginManager} plugin={{ ...plugin, options }} mode={mode}>\n        <Oas oas={oas} operations={[operation]} generator={this}>\n          <Oas.Operation operation={operation}>\n            <OperationSchema.File />\n          </Oas.Operation>\n        </Oas>\n      </App>,\n    )\n\n    return root.files\n  }\n}\n","import { Parser, File, Type, useApp } from '@kubb/react'\nimport { useOas } from '@kubb/plugin-oas/hooks'\n\nimport type { OasTypes } from '@kubb/oas'\nimport type { ReactNode } from 'react'\nimport type { FileMeta, PluginTs } from '../types.ts'\n\ntype TemplateProps = {\n  /**\n   * Name of the function\n   */\n  name: string\n  typeName: string\n  api: OasTypes.OASDocument\n}\n\nfunction Template({ name, typeName, api }: TemplateProps): ReactNode {\n  return (\n    <>\n      {`export const ${name} = ${JSON.stringify(api, undefined, 2)} as const`}\n      <br />\n      <Type name={typeName} export>\n        {`Infer<typeof ${name}>`}\n      </Type>\n    </>\n  )\n}\n\nconst defaultTemplates = { default: Template } as const\n\ntype Props = {\n  name: string\n  typeName: string\n  /**\n   * This will make it possible to override the default behaviour.\n   */\n  Template?: React.ComponentType<React.ComponentProps<typeof Template>>\n}\n\nexport function OasType({ name, typeName, Template = defaultTemplates.default }: Props): ReactNode {\n  const oas = useOas()\n\n  return <Template name={name} typeName={typeName} api={oas.api} />\n}\n\ntype FileProps = {\n  name: string\n  typeName: string\n  /**\n   * This will make it possible to override the default behaviour.\n   */\n  templates?: typeof defaultTemplates\n}\n\nOasType.File = function ({ name, typeName, templates = defaultTemplates }: FileProps): ReactNode {\n  const {\n    pluginManager,\n    plugin: { key: pluginKey },\n  } = useApp<PluginTs>()\n  const file = pluginManager.getFile({ name, extName: '.ts', pluginKey })\n\n  const Template = templates.default\n\n  return (\n    <Parser language=\"typescript\">\n      <File<FileMeta> baseName={file.baseName} path={file.path} meta={file.meta}>\n        <File.Import name={['Infer']} path=\"@kubb/swagger-ts/oas\" isTypeOnly />\n        <File.Source>\n          <OasType Template={Template} name={name} typeName={typeName} />\n        </File.Source>\n      </File>\n    </Parser>\n  )\n}\n\nOasType.templates = defaultTemplates\n","import transformers from '@kubb/core/transformers'\nimport { print } from '@kubb/parser-ts'\nimport * as factory from '@kubb/parser-ts/factory'\nimport { Oas } from '@kubb/plugin-oas/components'\nimport { useOas, useOperation, useOperationManager } from '@kubb/plugin-oas/hooks'\nimport { File, Parser, useApp } from '@kubb/react'\n\nimport { SchemaGenerator } from '../SchemaGenerator.tsx'\n\nimport type { PluginManager } from '@kubb/core'\nimport type { Operation } from '@kubb/oas'\nimport type { ts } from '@kubb/parser-ts'\nimport type { OperationSchema as OperationSchemaType } from '@kubb/plugin-oas'\nimport type { OperationSchemas } from '@kubb/plugin-oas'\nimport { pluginTsName } from '@kubb/swagger-ts'\nimport type { ReactNode } from 'react'\nimport type { FileMeta, PluginTs } from '../types.ts'\nimport { Schema } from './Schema.tsx'\n\nfunction printCombinedSchema({\n  name,\n  operation,\n  schemas,\n  pluginManager,\n}: { name: string; operation: Operation; schemas: OperationSchemas; pluginManager: PluginManager }): string {\n  const properties: Record<string, ts.TypeNode> = {}\n\n  if (schemas.response) {\n    const identifier = pluginManager.resolveName({\n      name: schemas.response.name,\n      pluginKey: [pluginTsName],\n      type: 'function',\n    })\n    properties['response'] = factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined)\n  }\n\n  if (schemas.request) {\n    const identifier = pluginManager.resolveName({\n      name: schemas.request.name,\n      pluginKey: [pluginTsName],\n      type: 'function',\n    })\n    properties['request'] = factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined)\n  }\n\n  if (schemas.pathParams) {\n    const identifier = pluginManager.resolveName({\n      name: schemas.pathParams.name,\n      pluginKey: [pluginTsName],\n      type: 'function',\n    })\n    properties['pathParams'] = factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined)\n  }\n\n  if (schemas.queryParams) {\n    const identifier = pluginManager.resolveName({\n      name: schemas.queryParams.name,\n      pluginKey: [pluginTsName],\n      type: 'function',\n    })\n    properties['queryParams'] = factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined)\n  }\n\n  if (schemas.headerParams) {\n    const identifier = pluginManager.resolveName({\n      name: schemas.headerParams.name,\n      pluginKey: [pluginTsName],\n      type: 'function',\n    })\n    properties['headerParams'] = factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined)\n  }\n\n  if (schemas.errors) {\n    properties['errors'] = factory.createUnionDeclaration({\n      nodes: schemas.errors.map((error) => {\n        const identifier = pluginManager.resolveName({\n          name: error.name,\n          pluginKey: [pluginTsName],\n          type: 'function',\n        })\n\n        return factory.createTypeReferenceNode(factory.createIdentifier(identifier), undefined)\n      }),\n    })!\n  }\n\n  const namespaceNode = factory.createTypeAliasDeclaration({\n    name: operation.method === 'get' ? `${name}Query` : `${name}Mutation`,\n    type: factory.createTypeLiteralNode(\n      Object.keys(properties)\n        .map((key) => {\n          const type = properties[key]\n          if (!type) {\n            return undefined\n          }\n\n          return factory.createPropertySignature({\n            name: transformers.pascalCase(key),\n            type,\n          })\n        })\n        .filter(Boolean),\n    ),\n    modifiers: [factory.modifiers.export],\n  })\n\n  return print(namespaceNode)\n}\n\ntype Props = {\n  description?: string\n  keysToOmit?: string[]\n}\n\nexport function OperationSchema({ keysToOmit, description }: Props): ReactNode {\n  return <Schema keysToOmit={keysToOmit} description={description} />\n}\n\ntype FileProps = {}\n\nOperationSchema.File = function ({}: FileProps): ReactNode {\n  const { pluginManager, plugin, mode, fileManager } = useApp<PluginTs>()\n  const oas = useOas()\n  const { getSchemas, getFile, getName } = useOperationManager()\n  const operation = useOperation()\n\n  const file = getFile(operation)\n  const schemas = getSchemas(operation)\n  const factoryName = getName(operation, { type: 'type' })\n  const generator = new SchemaGenerator(plugin.options, {\n    oas,\n    plugin,\n    pluginManager,\n    mode,\n    override: plugin.options.override,\n  })\n  const items = [schemas.pathParams, schemas.queryParams, schemas.headerParams, schemas.statusCodes, schemas.request, schemas.response].flat().filter(Boolean)\n\n  const mapItem = ({ name, schema, description, keysToOmit, ...options }: OperationSchemaType, i: number) => {\n    const tree = generator.parse({ schema, name })\n\n    return (\n      <Oas.Schema key={i} name={name} value={schema} tree={tree}>\n        {mode === 'split' && <Oas.Schema.Imports extName={plugin.options.extName} isTypeOnly />}\n        <File.Source>\n          <OperationSchema description={description} keysToOmit={keysToOmit} />\n        </File.Source>\n      </Oas.Schema>\n    )\n  }\n\n  return (\n    <Parser language=\"typescript\">\n      <File<FileMeta> baseName={file.baseName} path={file.path} meta={file.meta}>\n        {items.map(mapItem)}\n\n        <File.Source>{printCombinedSchema({ name: factoryName, operation, schemas, pluginManager })}</File.Source>\n      </File>\n    </Parser>\n  )\n}\n","import type { SchemaObject } from '@kubb/oas'\nimport { SchemaGenerator as Generator } from '@kubb/plugin-oas'\nimport type { SchemaMethodResult } from '@kubb/plugin-oas'\nimport { Oas } from '@kubb/plugin-oas/components'\nimport { App, createRoot } from '@kubb/react'\nimport { Schema } from './components/Schema.tsx'\nimport type { FileMeta, PluginTs } from './types.ts'\n\nexport class SchemaGenerator extends Generator<PluginTs['resolvedOptions'], PluginTs> {\n  async schema(name: string, schema: SchemaObject, options: PluginTs['resolvedOptions']): SchemaMethodResult<FileMeta> {\n    const { oas, pluginManager, plugin, mode, output } = this.context\n\n    const root = createRoot({\n      logger: pluginManager.logger,\n    })\n\n    const tree = this.parse({ schema, name })\n\n    root.render(\n      <App pluginManager={pluginManager} plugin={{ ...plugin, options }} mode={mode}>\n        <Oas oas={oas}>\n          <Oas.Schema name={name} value={schema} tree={tree}>\n            <Schema.File />\n          </Oas.Schema>\n        </Oas>\n      </App>,\n    )\n\n    return root.files\n  }\n}\n","import { Oas } from '@kubb/plugin-oas/components'\nimport { File, useApp } from '@kubb/react'\n\nimport transformers from '@kubb/core/transformers'\nimport { print, type ts } from '@kubb/parser-ts'\nimport * as factory from '@kubb/parser-ts/factory'\nimport { SchemaGenerator, schemaKeywords } from '@kubb/plugin-oas'\nimport { useSchema } from '@kubb/plugin-oas/hooks'\nimport type { ReactNode } from 'react'\nimport { parse, typeKeywordMapper } from '../parser/index.ts'\nimport { pluginTsName } from '../plugin.ts'\nimport type { PluginTs } from '../types.ts'\n\ntype Props = {\n  description?: string\n  keysToOmit?: string[]\n}\n\nexport function Schema(props: Props): ReactNode {\n  const { keysToOmit, description } = props\n  const { tree, name } = useSchema()\n  const {\n    pluginManager,\n    plugin: {\n      options: { mapper, enumType, optionalType },\n    },\n  } = useApp<PluginTs>()\n\n  // all checks are also inside this.schema(React)\n  const resolvedName = pluginManager.resolveName({\n    name,\n    pluginKey: [pluginTsName],\n    type: 'function',\n  })\n\n  const typeName = pluginManager.resolveName({\n    name,\n    pluginKey: [pluginTsName],\n    type: 'type',\n  })\n\n  const nodes: ts.Node[] = []\n  const extraNodes: ts.Node[] = []\n\n  if (!tree.length) {\n    return ''\n  }\n\n  const isNullish = tree.some((item) => item.keyword === schemaKeywords.nullish)\n  const isNullable = tree.some((item) => item.keyword === schemaKeywords.nullable)\n  const isOptional = tree.some((item) => item.keyword === schemaKeywords.optional)\n\n  let type =\n    (tree\n      .map((schema) => parse(undefined, schema, { name: resolvedName, typeName, description, keysToOmit, optionalType, enumType, mapper }))\n      .filter(Boolean)\n      .at(0) as ts.TypeNode) || typeKeywordMapper.undefined()\n\n  if (isNullable) {\n    type = factory.createUnionDeclaration({\n      nodes: [type, factory.keywordTypeNodes.null],\n    }) as ts.TypeNode\n  }\n\n  if (isNullish && ['undefined', 'questionTokenAndUndefined'].includes(optionalType as string)) {\n    type = factory.createUnionDeclaration({\n      nodes: [type, factory.keywordTypeNodes.undefined],\n    }) as ts.TypeNode\n  }\n\n  if (isOptional && ['undefined', 'questionTokenAndUndefined'].includes(optionalType as string)) {\n    type = factory.createUnionDeclaration({\n      nodes: [type, factory.keywordTypeNodes.undefined],\n    }) as ts.TypeNode\n  }\n\n  const node = factory.createTypeAliasDeclaration({\n    modifiers: [factory.modifiers.export],\n    name: resolvedName,\n    type: keysToOmit?.length\n      ? factory.createOmitDeclaration({\n          keys: keysToOmit,\n          type,\n          nonNullable: true,\n        })\n      : type,\n  })\n\n  const enumSchemas = SchemaGenerator.deepSearch(tree, schemaKeywords.enum)\n  if (enumSchemas) {\n    ;[...new Set(enumSchemas)].forEach((enumSchema) => {\n      extraNodes.push(\n        ...factory.createEnumDeclaration({\n          name: transformers.camelCase(enumSchema.args.name),\n          typeName: enumSchema.args.typeName,\n          enums: enumSchema.args.items\n            .map((item) => (item.value === undefined ? undefined : [transformers.trimQuotes(item.name?.toString()), item.value]))\n            .filter(Boolean) as unknown as [string, string][],\n          type: enumType,\n        }),\n      )\n    })\n  }\n\n  nodes.push(\n    factory.appendJSDocToNode({\n      node,\n      comments: [description ? `@description ${transformers.jsStringEscape(description)}` : undefined].filter(Boolean),\n    }),\n  )\n\n  const filterdNodes = nodes.filter(\n    (node: ts.Node) =>\n      !extraNodes.some(\n        (extraNode: ts.Node) => (extraNode as ts.TypeAliasDeclaration)?.name?.escapedText === (node as ts.TypeAliasDeclaration)?.name?.escapedText,\n      ),\n  )\n\n  return print([...extraNodes, ...filterdNodes])\n}\n\ntype FileProps = {}\n\nSchema.File = function ({}: FileProps): ReactNode {\n  const { pluginManager } = useApp<PluginTs>()\n  const { schema } = useSchema()\n\n  return (\n    <Oas.Schema.File output={pluginManager.config.output.path} isTypeOnly>\n      <File.Source>\n        <Schema description={schema?.description} />\n      </File.Source>\n    </Oas.Schema.File>\n  )\n}\n","import transformers from '@kubb/core/transformers'\nimport * as factory from '@kubb/parser-ts/factory'\nimport { isKeyword, schemaKeywords } from '@kubb/plugin-oas'\n\nimport type { Schema, SchemaKeywordMapper, SchemaMapper } from '@kubb/plugin-oas'\nimport type ts from 'typescript'\n\nexport const typeKeywordMapper = {\n  any: () => factory.keywordTypeNodes.any,\n  unknown: () => factory.keywordTypeNodes.unknown,\n  number: () => factory.keywordTypeNodes.number,\n  integer: () => factory.keywordTypeNodes.number,\n  object: (nodes?: ts.TypeElement[]) => {\n    if (!nodes || !nodes.length) {\n      return factory.keywordTypeNodes.object\n    }\n\n    return factory.createTypeLiteralNode(nodes)\n  },\n  string: () => factory.keywordTypeNodes.string,\n  boolean: () => factory.keywordTypeNodes.boolean,\n  undefined: () => factory.keywordTypeNodes.undefined,\n  nullable: undefined,\n  null: () => factory.keywordTypeNodes.null,\n  nullish: undefined,\n  array: (nodes?: ts.TypeNode[]) => {\n    if (!nodes) {\n      return undefined\n    }\n\n    return factory.createArrayDeclaration({ nodes })\n  },\n  tuple: (nodes?: ts.TypeNode[]) => {\n    if (!nodes) {\n      return undefined\n    }\n\n    return factory.createTupleTypeNode(nodes)\n  },\n  enum: (name?: string) => {\n    if (!name) {\n      return undefined\n    }\n\n    return factory.createTypeReferenceNode(name, undefined)\n  },\n  union: (nodes?: ts.TypeNode[]) => {\n    if (!nodes) {\n      return undefined\n    }\n\n    return factory.createUnionDeclaration({\n      withParentheses: true,\n      nodes,\n    })\n  },\n  const: (name?: string | number | boolean, format?: 'string' | 'number' | 'boolean') => {\n    if (!name) {\n      return undefined\n    }\n\n    if (format === 'boolean') {\n      if (name === true) {\n        return factory.createLiteralTypeNode(factory.createTrue())\n      }\n\n      return factory.createLiteralTypeNode(factory.createFalse())\n    }\n\n    if (format === 'number' && typeof name === 'number') {\n      return factory.createLiteralTypeNode(factory.createNumericLiteral(name))\n    }\n\n    return factory.createLiteralTypeNode(factory.createStringLiteral(name.toString()))\n  },\n  datetime: () => factory.keywordTypeNodes.string,\n  date: (type: 'date' | 'string' = 'string') =>\n    type === 'string' ? factory.keywordTypeNodes.string : factory.createTypeReferenceNode(factory.createIdentifier('Date')),\n  time: (type: 'date' | 'string' = 'string') =>\n    type === 'string' ? factory.keywordTypeNodes.string : factory.createTypeReferenceNode(factory.createIdentifier('Date')),\n  uuid: undefined,\n  url: undefined,\n  strict: undefined,\n  default: undefined,\n  and: (nodes?: ts.TypeNode[]) => {\n    if (!nodes) {\n      return undefined\n    }\n\n    return factory.createIntersectionDeclaration({\n      withParentheses: true,\n      nodes,\n    })\n  },\n  describe: undefined,\n  min: undefined,\n  max: undefined,\n  optional: undefined,\n  matches: undefined,\n  email: undefined,\n  firstName: undefined,\n  lastName: undefined,\n  password: undefined,\n  phone: undefined,\n  readOnly: undefined,\n  writeOnly: undefined,\n  ref: (propertyName?: string) => {\n    if (!propertyName) {\n      return undefined\n    }\n\n    return factory.createTypeReferenceNode(propertyName, undefined)\n  },\n  blob: () => factory.createTypeReferenceNode('Blob', []),\n  deprecated: undefined,\n  example: undefined,\n  schema: undefined,\n  catchall: undefined,\n  name: undefined,\n} satisfies SchemaMapper<ts.Node | null | undefined>\n\ntype ParserOptions = {\n  name: string\n  typeName?: string\n  description?: string\n  /**\n   * @default `'questionToken'`\n   */\n  optionalType: 'questionToken' | 'undefined' | 'questionTokenAndUndefined'\n  /**\n   * @default `'asConst'`\n   * asPascalConst is deprecated\n   */\n  enumType: 'enum' | 'asConst' | 'asPascalConst' | 'constEnum' | 'literal'\n  keysToOmit?: string[]\n  mapper?: Record<string, ts.PropertySignature>\n}\n\nexport function parse(parent: Schema | undefined, current: Schema, options: ParserOptions): ts.Node | null | undefined {\n  const value = typeKeywordMapper[current.keyword as keyof typeof typeKeywordMapper]\n\n  if (!value) {\n    return undefined\n  }\n\n  if (isKeyword(current, schemaKeywords.union)) {\n    return typeKeywordMapper.union(current.args.map((schema) => parse(current, schema, options)).filter(Boolean) as ts.TypeNode[])\n  }\n\n  if (isKeyword(current, schemaKeywords.and)) {\n    return typeKeywordMapper.and(current.args.map((schema) => parse(current, schema, options)).filter(Boolean) as ts.TypeNode[])\n  }\n\n  if (isKeyword(current, schemaKeywords.array)) {\n    return typeKeywordMapper.array(current.args.items.map((schema) => parse(current, schema, options)).filter(Boolean) as ts.TypeNode[])\n  }\n\n  if (isKeyword(current, schemaKeywords.enum)) {\n    return typeKeywordMapper.enum(current.args.typeName)\n  }\n\n  if (isKeyword(current, schemaKeywords.ref)) {\n    return typeKeywordMapper.ref(current.args.name)\n  }\n\n  if (isKeyword(current, schemaKeywords.blob)) {\n    return value()\n  }\n\n  if (isKeyword(current, schemaKeywords.tuple)) {\n    return typeKeywordMapper.tuple(current.args.items.map((schema) => parse(current, schema, options)).filter(Boolean) as ts.TypeNode[])\n  }\n\n  if (isKeyword(current, schemaKeywords.const)) {\n    return typeKeywordMapper.const(current.args.name, current.args.format)\n  }\n\n  if (isKeyword(current, schemaKeywords.object)) {\n    const properties = Object.entries(current.args?.properties || {})\n      .filter((item) => {\n        const schemas = item[1]\n        return schemas && typeof schemas.map === 'function'\n      })\n      .map(([name, schemas]) => {\n        const nameSchema = schemas.find((schema) => schema.keyword === schemaKeywords.name) as SchemaKeywordMapper['name']\n        const mappedName = nameSchema?.args || name\n\n        // custom mapper(pluginOptions)\n        if (options.mapper?.[mappedName]) {\n          return options.mapper?.[mappedName]\n        }\n\n        const isNullish = schemas.some((schema) => schema.keyword === schemaKeywords.nullish)\n        const isNullable = schemas.some((schema) => schema.keyword === schemaKeywords.nullable)\n        const isOptional = schemas.some((schema) => schema.keyword === schemaKeywords.optional)\n        const isReadonly = schemas.some((schema) => schema.keyword === schemaKeywords.readOnly)\n        const describeSchema = schemas.find((schema) => schema.keyword === schemaKeywords.describe) as SchemaKeywordMapper['describe'] | undefined\n        const deprecatedSchema = schemas.find((schema) => schema.keyword === schemaKeywords.deprecated) as SchemaKeywordMapper['deprecated'] | undefined\n        const defaultSchema = schemas.find((schema) => schema.keyword === schemaKeywords.default) as SchemaKeywordMapper['default'] | undefined\n        const exampleSchema = schemas.find((schema) => schema.keyword === schemaKeywords.example) as SchemaKeywordMapper['example'] | undefined\n        const schemaSchema = schemas.find((schema) => schema.keyword === schemaKeywords.schema) as SchemaKeywordMapper['schema'] | undefined\n\n        let type = schemas.map((schema) => parse(current, schema, options)).filter(Boolean)[0] as ts.TypeNode\n\n        if (isNullable) {\n          type = factory.createUnionDeclaration({\n            nodes: [type, factory.keywordTypeNodes.null],\n          }) as ts.TypeNode\n        }\n\n        if (isNullish && ['undefined', 'questionTokenAndUndefined'].includes(options.optionalType as string)) {\n          type = factory.createUnionDeclaration({\n            nodes: [type, factory.keywordTypeNodes.undefined],\n          }) as ts.TypeNode\n        }\n\n        if (isOptional && ['undefined', 'questionTokenAndUndefined'].includes(options.optionalType as string)) {\n          type = factory.createUnionDeclaration({\n            nodes: [type, factory.keywordTypeNodes.undefined],\n          }) as ts.TypeNode\n        }\n\n        const propertySignature = factory.createPropertySignature({\n          questionToken: isOptional || isNullish ? ['questionToken', 'questionTokenAndUndefined'].includes(options.optionalType as string) : false,\n          name: mappedName,\n          type,\n          readOnly: isReadonly,\n        })\n\n        return factory.appendJSDocToNode({\n          node: propertySignature,\n          comments: [\n            describeSchema ? `@description ${transformers.jsStringEscape(describeSchema.args)}` : undefined,\n            deprecatedSchema ? '@deprecated' : undefined,\n            defaultSchema ? `@default ${defaultSchema.args}` : undefined,\n            exampleSchema ? `@example ${exampleSchema.args}` : undefined,\n            schemaSchema?.args?.type || schemaSchema?.args?.format\n              ? [`@type ${schemaSchema?.args?.type || 'unknown'}${!isOptional ? '' : ' | undefined'}`, schemaSchema?.args?.format].filter(Boolean).join(', ')\n              : undefined,\n          ].filter(Boolean),\n        })\n      })\n\n    const additionalProperties = current.args?.additionalProperties?.length\n      ? factory.createIndexSignature(\n          current.args.additionalProperties\n            .map((schema) => parse(current, schema, options))\n            .filter(Boolean)\n            .at(0) as ts.TypeNode,\n        )\n      : undefined\n\n    return typeKeywordMapper.object([...properties, additionalProperties].filter(Boolean))\n  }\n\n  if (isKeyword(current, schemaKeywords.datetime)) {\n    return typeKeywordMapper.datetime()\n  }\n\n  if (isKeyword(current, schemaKeywords.date)) {\n    return typeKeywordMapper.date(current.args.type)\n  }\n\n  if (isKeyword(current, schemaKeywords.time)) {\n    return typeKeywordMapper.time(current.args.type)\n  }\n\n  if (current.keyword in typeKeywordMapper) {\n    return value()\n  }\n\n  return undefined\n}\n","import { pluginTs } from './plugin.ts'\n\nexport { pluginTs, pluginTsName } from './plugin.ts'\nexport type { PluginTs } from './types.ts'\n\n/**\n * @deprecated Use `import { pluginTs } from '@kubb/swagger-ts'` instead\n */\nconst definePluginDefault = pluginTs\n/**\n * @deprecated Use `import { pluginTs } from '@kubb/swagger-ts'` instead\n */\nexport const definePlugin = pluginTs\n\nexport default definePluginDefault\n"]}