@redocly/cli 0.0.0-snapshot.1792596215 → 0.0.0-snapshot.1792668545

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.
Files changed (136) hide show
  1. package/THIRD_PARTY_NOTICES +1 -1
  2. package/lib/chunks/{6HEQP3PW.js → 2BEC6JZF.js} +1 -1
  3. package/lib/chunks/{5GKVJOUT.js → 2TS7TKLJ.js} +1 -1
  4. package/lib/chunks/{24QTYID6.js → 3M4I4RF5.js} +1 -1
  5. package/lib/chunks/{ZKZHTFU6.js → 3NMOCTX3.js} +1 -1
  6. package/lib/chunks/{FGWBSIKV.js → 3OIM6L5I.js} +13 -13
  7. package/lib/chunks/{YIQIGLUP.js → 4N4SOWNI.js} +1 -1
  8. package/lib/chunks/{24QWJ2XJ.js → 4OPAFHK3.js} +1 -1
  9. package/lib/chunks/{V7GXMJQX.js → 4YZMWHFZ.js} +55 -55
  10. package/lib/chunks/{K67UUNDS.js → 55RGD2R5.js} +1 -1
  11. package/lib/chunks/{N52M2Y3E.js → 55SOSU5Q.js} +1 -1
  12. package/lib/chunks/{QCQZ7VLF.js → 5E7BK4TX.js} +1 -1
  13. package/lib/chunks/{Z4H2RDOC.js → 5VURBI3M.js} +1 -1
  14. package/lib/chunks/{XJU2PXK5.js → 764NQBHQ.js} +1 -1
  15. package/lib/chunks/{GUO7BJKG.js → 7XYDSVIY.js} +1 -1
  16. package/lib/chunks/{JVFCBLZN.js → A6KGBL3N.js} +1 -1
  17. package/lib/chunks/A7GSAEEX.js +199 -0
  18. package/lib/chunks/{T6H6K77D.js → A7MSUMWO.js} +1 -1
  19. package/lib/chunks/{RQ2HZ67Y.js → AT7HZJNK.js} +1 -1
  20. package/lib/chunks/{A66UNXT4.js → CGSD7K6F.js} +1 -1
  21. package/lib/chunks/{CBDJM4MW.js → CPGIDBYI.js} +1 -1
  22. package/lib/chunks/{XSIC5IHS.js → E3B6BHM3.js} +1 -1
  23. package/lib/chunks/{Z3IXRWDM.js → FJCA2RKB.js} +1 -1
  24. package/lib/chunks/{FVWYZLBA.js → G2LRTVYX.js} +1 -1
  25. package/lib/chunks/GAJ6EKBY.js +34 -0
  26. package/lib/chunks/{5CCQ2ZNQ.js → GHOTGDKC.js} +1 -1
  27. package/lib/chunks/{C6R7SYCU.js → GJLQK75Q.js} +1 -1
  28. package/lib/chunks/{2UTBQZM6.js → HAXO2HAY.js} +1 -1
  29. package/lib/chunks/{XBNBUWMQ.js → HO65YF44.js} +1 -1
  30. package/lib/chunks/{JI5Q6ZGW.js → HZWBQ5X2.js} +1 -1
  31. package/lib/chunks/{C3VHRVO3.js → IGW6OMPQ.js} +1 -1
  32. package/lib/chunks/{TANJSXZN.js → IN2HI2RR.js} +1 -1
  33. package/lib/chunks/{KQFCWF6O.js → IT5HS4O6.js} +2 -2
  34. package/lib/chunks/{KXG5QGHY.js → J4JXYV6D.js} +1 -1
  35. package/lib/chunks/{ICBTK7FG.js → KPJQNTZ3.js} +1 -1
  36. package/lib/chunks/KXL2RBIR.js +12 -0
  37. package/lib/chunks/{PN25333Y.js → KYNWA75L.js} +1 -1
  38. package/lib/chunks/{UN4ZY27R.js → L2BATM7M.js} +1 -1
  39. package/lib/chunks/{KTAY3NUH.js → LLJTDVWX.js} +1 -1
  40. package/lib/chunks/LRRSU5UY.js +7 -0
  41. package/lib/chunks/{UZVM7JZB.js → MMFTF7E5.js} +1 -1
  42. package/lib/chunks/{Y5IUJKAQ.js → MNBKIEMZ.js} +1 -1
  43. package/lib/chunks/{ZKZIFBFR.js → MYVYQ6NG.js} +1 -1
  44. package/lib/chunks/{NHIO3YJ4.js → NAOB4HLH.js} +1 -1
  45. package/lib/chunks/{6RTITFQA.js → NEWT5A6S.js} +1 -1
  46. package/lib/chunks/{5UQJLLPY.js → NFLXGRQQ.js} +1 -1
  47. package/lib/chunks/{ISJSQJYC.js → NQXCTWGA.js} +1 -1
  48. package/lib/chunks/{I6PWN5ZC.js → NW6ICGJQ.js} +1 -1
  49. package/lib/chunks/{SSYYAWPF.js → NXGHUZ5Q.js} +1 -1
  50. package/lib/chunks/{HACS5KPF.js → ORDNN74I.js} +1 -1
  51. package/lib/chunks/{HCYVNHY6.js → P37LFEGZ.js} +1 -1
  52. package/lib/chunks/{7B4OPN4L.js → PSXVUJZM.js} +1 -1
  53. package/lib/chunks/{HJFZIAZ5.js → QJLY6JB4.js} +1 -1
  54. package/lib/chunks/{Y3JKHBSQ.js → QZQVSDLN.js} +1 -1
  55. package/lib/chunks/{WYJUI3L6.js → RDKZXSDY.js} +1 -1
  56. package/lib/chunks/{XAPB4PIJ.js → RGW5AEJZ.js} +1 -1
  57. package/lib/chunks/RSQ3JLJS.js +9 -0
  58. package/lib/chunks/{X7DQLAKD.js → S3LDGEL4.js} +1 -1
  59. package/lib/chunks/{R2CGQB4V.js → SDJSWREQ.js} +1 -1
  60. package/lib/chunks/{TUDVKRSA.js → SGCUDUHP.js} +1 -1
  61. package/lib/chunks/{MGN3YRSB.js → SGRUTAKH.js} +1 -1
  62. package/lib/chunks/{ZJRAJA4I.js → T6ZSC7T2.js} +2 -2
  63. package/lib/chunks/{4PR4XFH4.js → TOMEEMQR.js} +1 -1
  64. package/lib/chunks/{VBYRHIKM.js → UBGWKEEA.js} +1 -1
  65. package/lib/chunks/{77UBFDKX.js → UQE7DXYL.js} +1 -1
  66. package/lib/chunks/{2X2KHSF3.js → UYZXI3NO.js} +1 -1
  67. package/lib/chunks/{MD5PNPPQ.js → VOMZ2OLE.js} +1 -1
  68. package/lib/chunks/{ELCAIC6I.js → WKARZCQY.js} +1 -1
  69. package/lib/chunks/{4PLT5MZN.js → WR7K7X6E.js} +1 -1
  70. package/lib/chunks/{YW4ZDRH3.js → WUJFW4D7.js} +1 -1
  71. package/lib/chunks/{Y3Z2SZTR.js → YICDVMCK.js} +1 -1
  72. package/lib/chunks/{5SZSJOU3.js → YMEKQZGH.js} +2 -2
  73. package/lib/chunks/{CMSHX4Z4.js → YSGHQX5G.js} +1 -1
  74. package/lib/chunks/{4WRVGXJB.js → ZWSBBZUL.js} +1 -1
  75. package/lib/eject-assets/generators/cli/docs.ts +1 -1
  76. package/lib/eject-assets/generators/cli/engine-source.ts +1 -1
  77. package/lib/eject-assets/generators/cli/index.ts +2 -2
  78. package/lib/eject-assets/generators/cli/render.ts +1 -1
  79. package/lib/eject-assets/generators/go/client.ts +1 -1
  80. package/lib/eject-assets/generators/go/descriptor.ts +1 -1
  81. package/lib/eject-assets/generators/go/index.ts +2 -2
  82. package/lib/eject-assets/generators/go/models.ts +1 -1
  83. package/lib/eject-assets/generators/go/naming.ts +1 -1
  84. package/lib/eject-assets/generators/go/operations.ts +1 -1
  85. package/lib/eject-assets/generators/go/pagination.ts +1 -1
  86. package/lib/eject-assets/generators/go/types.ts +1 -1
  87. package/lib/eject-assets/generators/mock/faker.ts +1 -1
  88. package/lib/eject-assets/generators/mock/index.ts +2 -2
  89. package/lib/eject-assets/generators/mock/render.ts +1 -1
  90. package/lib/eject-assets/generators/mock/sample.ts +1 -1
  91. package/lib/eject-assets/generators/mock/values.ts +1 -1
  92. package/lib/eject-assets/generators/php/client.ts +1 -1
  93. package/lib/eject-assets/generators/php/descriptor.ts +1 -1
  94. package/lib/eject-assets/generators/php/index.ts +2 -2
  95. package/lib/eject-assets/generators/php/models.ts +1 -1
  96. package/lib/eject-assets/generators/php/naming.ts +1 -1
  97. package/lib/eject-assets/generators/php/operations.ts +1 -1
  98. package/lib/eject-assets/generators/php/pagination.ts +1 -1
  99. package/lib/eject-assets/generators/php/types.ts +1 -1
  100. package/lib/eject-assets/generators/python/client.ts +1 -1
  101. package/lib/eject-assets/generators/python/descriptor.ts +1 -1
  102. package/lib/eject-assets/generators/python/index.ts +2 -2
  103. package/lib/eject-assets/generators/python/models.ts +1 -1
  104. package/lib/eject-assets/generators/python/naming.ts +1 -1
  105. package/lib/eject-assets/generators/python/operations.ts +1 -1
  106. package/lib/eject-assets/generators/python/pagination.ts +1 -1
  107. package/lib/eject-assets/generators/python/types.ts +1 -1
  108. package/lib/eject-assets/generators/swr/index.ts +2 -2
  109. package/lib/eject-assets/generators/swr/render.ts +1 -1
  110. package/lib/eject-assets/generators/tanstack-query/index.ts +2 -2
  111. package/lib/eject-assets/generators/tanstack-query/render.ts +1 -1
  112. package/lib/eject-assets/generators/transformers/index.ts +2 -2
  113. package/lib/eject-assets/generators/transformers/render.ts +1 -1
  114. package/lib/eject-assets/generators/typescript/banner.ts +1 -1
  115. package/lib/eject-assets/generators/typescript/client.ts +1 -1
  116. package/lib/eject-assets/generators/typescript/descriptor.ts +1 -1
  117. package/lib/eject-assets/generators/typescript/index.ts +2 -2
  118. package/lib/eject-assets/generators/typescript/inline-runtime.ts +1 -1
  119. package/lib/eject-assets/generators/typescript/operation-signature.ts +1 -1
  120. package/lib/eject-assets/generators/typescript/operation-types.ts +1 -1
  121. package/lib/eject-assets/generators/typescript/operations.ts +1 -1
  122. package/lib/eject-assets/generators/typescript/response-headers.ts +1 -1
  123. package/lib/eject-assets/generators/typescript/type-guards.ts +1 -1
  124. package/lib/eject-assets/generators/typescript/types.ts +1 -1
  125. package/lib/eject-assets/generators/zod/index.ts +2 -2
  126. package/lib/eject-assets/generators/zod/schemas.ts +1 -1
  127. package/lib/index.js +91 -91
  128. package/lib/skills/redocly-cli/SKILL.md +4 -4
  129. package/package.json +1 -1
  130. package/lib/chunks/4PTNG4EI.js +0 -7
  131. package/lib/chunks/76ZIRP4G.js +0 -34
  132. package/lib/chunks/ARHKID6J.js +0 -57
  133. package/lib/chunks/BJ6Z66KZ.js +0 -7
  134. package/lib/chunks/CUKEOWKK.js +0 -199
  135. package/lib/chunks/IB4JHIWR.js +0 -11
  136. package/lib/chunks/UQMBKWPD.js +0 -9
@@ -693,7 +693,6 @@ Packages:
693
693
  eventsource@3.0.7 — Copyright (c) EventSource GitHub organisation
694
694
  fast-deep-equal@3.1.3 — Copyright (c) 2017 Evgeny Poberezkin
695
695
  fast-safe-stringify@2.1.1 — Copyright (c) 2016 David Mark Clements
696
- fastest-levenshtein@1.0.16 — Copyright (c) 2020 Kasper Unn Weihe
697
696
  fault@2.0.1
698
697
  foreach@2.0.6 — Copyright (c) 2013 Manuel Stofer
699
698
  get-east-asian-width@1.7.0
@@ -702,6 +701,7 @@ Packages:
702
701
  has-flag@4.0.0
703
702
  https-proxy-agent@7.0.6 — Copyright (c) 2013 Nathan Rajlich <nathan@tootallnate.net>
704
703
  is-buffer@2.0.5 — Copyright (c) Feross Aboukhadijeh
704
+ js-levenshtein@1.1.6 — Copyright (c) 2017 Gustaf Andersson
705
705
  js-tokens@4.0.0 — Copyright (c) 2014, 2015, 2016, 2017, 2018 Simon Lydell
706
706
  js-yaml@4.3.2 — Copyright (C) 2011-2015 by Vitaly Puzrin
707
707
  js-yaml@5.4.3 — Copyright (C) 2011-2015 by Vitaly Puzrin
@@ -4,4 +4,4 @@ import { dirname as __pathDirname } from 'node:path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  var __filename = __fileURLToPath(import.meta.url);
6
6
  var __dirname = __pathDirname(__filename);
7
- import{a as p,b as q,c as r,d as s,e as t,f as u,g as v,h as w,i as x,j as y,k as z,l as A,m as D,n as E,o as F,p as H,q as I}from"./2UTBQZM6.js";import{a as B,e as C,g as G}from"./5SZSJOU3.js";import{a}from"./WZXA5XPB.js";import"./CUKEOWKK.js";import"./6RTITFQA.js";import{a as b,b as c,c as d,d as e,e as f,f as g,g as h,h as i,i as j,j as k,k as l,l as m,m as n,n as o}from"./UW4UC7ZI.js";import"./RFWIIJFG.js";export{z as AUTHORING_HELPER_NAMES,G as GENERATOR_VERSION,a as NotSupportedError,b as Printer,d as RESERVED_WORDS,C as WIRING_NAMES,B as allOperations,c as casing,E as constantCase,A as defineClientSetup,H as defineGenerator,g as deref,i as discriminatorCases,m as docText,l as enumValues,h as flattenAllOf,I as generateClient,D as groupSlug,o as headerCoerceType,e as identifierFor,u as isBinaryContentType,s as isMultipartBody,j as isNullable,t as isUntypedMultipartBody,q as jsonSuccessSchema,F as mergeConfig,x as paginationItemSchema,p as paginationRuleFor,y as renderReferencePage,n as resolveSchemaPointer,n as schemaAtPointer,w as securityRequirements,v as serverUrlParts,r as sseResponse,f as uniqueIdentifiers,k as unwrapNullable};
7
+ import{a as p,b as q,c as r,d as s,e as t,f as u,g as v,h as w,i as x,j as y,k as z,l as A,m as D,n as E,o as F,p as H,q as I}from"./HAXO2HAY.js";import{a as B,e as C,g as G}from"./YMEKQZGH.js";import{a}from"./WZXA5XPB.js";import"./A7GSAEEX.js";import"./NEWT5A6S.js";import{a as b,b as c,c as d,d as e,e as f,f as g,g as h,h as i,i as j,j as k,k as l,l as m,m as n,n as o}from"./UW4UC7ZI.js";import"./RFWIIJFG.js";export{z as AUTHORING_HELPER_NAMES,G as GENERATOR_VERSION,a as NotSupportedError,b as Printer,d as RESERVED_WORDS,C as WIRING_NAMES,B as allOperations,c as casing,E as constantCase,A as defineClientSetup,H as defineGenerator,g as deref,i as discriminatorCases,m as docText,l as enumValues,h as flattenAllOf,I as generateClient,D as groupSlug,o as headerCoerceType,e as identifierFor,u as isBinaryContentType,s as isMultipartBody,j as isNullable,t as isUntypedMultipartBody,q as jsonSuccessSchema,F as mergeConfig,x as paginationItemSchema,p as paginationRuleFor,y as renderReferencePage,n as resolveSchemaPointer,n as schemaAtPointer,w as securityRequirements,v as serverUrlParts,r as sseResponse,f as uniqueIdentifiers,k as unwrapNullable};
@@ -4,5 +4,5 @@ import { dirname as __pathDirname } from 'node:path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  var __filename = __fileURLToPath(import.meta.url);
6
6
  var __dirname = __pathDirname(__filename);
7
- import{h as l}from"./Y3Z2SZTR.js";import"./GKXY6U4S.js";import{la as p,ra as i}from"./CUKEOWKK.js";import"./6RTITFQA.js";import"./RFWIIJFG.js";import{spawn as C}from"node:child_process";import{existsSync as x}from"node:fs";import*as s from"node:path";var P=/[\\/](_npx|dlx)[\\/]/;function a(r,t,e){return`${r}/api/orgs/${encodeURIComponent(t)}/projects/${encodeURIComponent(e)}/git`}function m(r,t){let e=`credential.${r}/.helper`,o=!P.test(process.argv[1]??"")&&j("redocly")?"redocly":`npx --yes @redocly/cli@${t}`;return[`${e}=`,`${e}=!REDOCLY_SUPPRESS_UPDATE_NOTICE=true ${o} project git-credentials`]}async function d(r){return new Promise((t,e)=>{let n=C("git",r,{stdio:"inherit",env:{...process.env,GIT_TERMINAL_PROMPT:"0"}});n.on("error",o=>e(E(o))),n.on("close",o=>t(o??1))})}function j(r){let t=process.platform==="win32"?[".cmd",".exe"]:[""];return(process.env.PATH??"").split(s.delimiter).some(e=>e&&t.some(n=>x(s.join(e,r+n))))}function E(r){return r.code==="ENOENT"?new i("git is not installed or not on PATH."):r}async function U({argv:r,config:t,version:e}){let[n,o,...g]=r.project.split("/");if(!n||!o||g.length>0)throw new i(`Specify the project as \`<organization>/<project>\`, for example \`acme/developer-portal\`. Got: \`${r.project}\`.`);let c=l(t,r.residency),f=a(c,n,o),u=m(c,e);if(p.info(`Cloning ${n}/${o} from ${c}
7
+ import{h as l}from"./YICDVMCK.js";import"./GKXY6U4S.js";import{ia as p,oa as i}from"./A7GSAEEX.js";import"./NEWT5A6S.js";import"./RFWIIJFG.js";import{spawn as C}from"node:child_process";import{existsSync as x}from"node:fs";import*as s from"node:path";var P=/[\\/](_npx|dlx)[\\/]/;function a(r,t,e){return`${r}/api/orgs/${encodeURIComponent(t)}/projects/${encodeURIComponent(e)}/git`}function m(r,t){let e=`credential.${r}/.helper`,o=!P.test(process.argv[1]??"")&&j("redocly")?"redocly":`npx --yes @redocly/cli@${t}`;return[`${e}=`,`${e}=!REDOCLY_SUPPRESS_UPDATE_NOTICE=true ${o} project git-credentials`]}async function d(r){return new Promise((t,e)=>{let n=C("git",r,{stdio:"inherit",env:{...process.env,GIT_TERMINAL_PROMPT:"0"}});n.on("error",o=>e(E(o))),n.on("close",o=>t(o??1))})}function j(r){let t=process.platform==="win32"?[".cmd",".exe"]:[""];return(process.env.PATH??"").split(s.delimiter).some(e=>e&&t.some(n=>x(s.join(e,r+n))))}function E(r){return r.code==="ENOENT"?new i("git is not installed or not on PATH."):r}async function U({argv:r,config:t,version:e}){let[n,o,...g]=r.project.split("/");if(!n||!o||g.length>0)throw new i(`Specify the project as \`<organization>/<project>\`, for example \`acme/developer-portal\`. Got: \`${r.project}\`.`);let c=l(t,r.residency),f=a(c,n,o),u=m(c,e);if(p.info(`Cloning ${n}/${o} from ${c}
8
8
  `),await d(["clone",...u.flatMap(y=>["--config",y]),f,r.directory??o])!==0)throw new i("git clone failed.")}export{U as handleProjectClone};
@@ -4,7 +4,7 @@ import { dirname as __pathDirname } from 'node:path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  var __filename = __fileURLToPath(import.meta.url);
6
6
  var __dirname = __pathDirname(__filename);
7
- import{R as D,S as h,T as O,X as C,ca as S,d as E,da as j,e as x,ea as P,f as $,fa as f,ja as b,l,la as o,ra as a,v as u}from"./CUKEOWKK.js";var y=["json","yaml","yml"];import*as i from"node:fs";import{basename as k,dirname as d,extname as g,join as T,resolve as m,relative as R}from"node:path";import*as c from"node:process";import{performance as F}from"perf_hooks";async function te(e,n){let r=!x(e)&&$(n.resolvedConfig.apis)?G(n):await W(e,n),p=r.filter(({path:s})=>!z(s));if(x(p)){for(let{path:s}of p)o.warn(`
7
+ import{$ as S,O as D,P as h,Q as O,U as C,aa as j,ba as P,ca as f,d as E,e as x,f as $,ga as b,ia as o,l,oa as a,u}from"./A7GSAEEX.js";var y=["json","yaml","yml"];import*as i from"node:fs";import{basename as k,dirname as d,extname as g,join as T,resolve as m,relative as R}from"node:path";import*as c from"node:process";import{performance as F}from"perf_hooks";async function te(e,n){let r=!x(e)&&$(n.resolvedConfig.apis)?G(n):await W(e,n),p=r.filter(({path:s})=>!z(s));if(x(p)){for(let{path:s}of p)o.warn(`
8
8
  ${q(s)} ${S(`does not exist or is invalid.
9
9
 
10
10
  `)}`);throw new a("Please provide a valid path.")}if(r.length===0)throw new a("No APIs were provided. Specify an API via the command argument or define one in your config.");return r}function w(e){return e.configPath?d(e.configPath):c.cwd()}function z(e){if(!e.trim())throw new a("Path cannot be empty.");return i.existsSync(e)||u(e)?e:void 0}function G(e){return Object.entries(e.resolvedConfig.apis||{}).map(([n,{root:t,output:r}])=>({path:u(t)?t:m(w(e),t),alias:n,output:r&&m(w(e),r)}))}function N(e,n){let t=w(e),r=e.resolvedConfig.apis?.[n];return r?{path:u(r.root)?r.root:m(t,r.root),alias:n,output:r.output&&m(t,r.output)}:{path:n,alias:Object.entries(e.resolvedConfig.apis||{}).find(([p,s])=>m(t,s.root)===m(n))?.[0]??void 0}}async function W(e,n){let{hasMagic:t,glob:r}=await import("./SJHPKWSD.js");return(await Promise.all(e.map(async p=>t(p)&&!u(p)?(await r(p,{cwd:w(n)})).map(I=>N(n,I)):N(n,p)))).flat()}function L(e){return c.env.NODE_ENV==="test"?"<test>ms":`${Math.ceil(F.now()-e)}ms`}function oe(e,n,t){let r=L(n);o.info(b(`
@@ -4,5 +4,5 @@ import { dirname as __pathDirname } from 'node:path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  var __filename = __fileURLToPath(import.meta.url);
6
6
  var __dirname = __pathDirname(__filename);
7
- import{u as o}from"./24QTYID6.js";import{ea as t}from"./CUKEOWKK.js";var r=" ",a=" ";function g(i){let p=Math.max(...i.map(n=>o(n).length)),e=p+a.length*2,c=r+t("\u2551"+" ".repeat(e)+"\u2551");return["",r+t("\u2554"+"\u2550".repeat(e)+"\u2557"),c,...i.map(n=>{let h=" ".repeat(p-o(n).length);return`${r}${t("\u2551")}${a}${n}${h}${a}${t("\u2551")}`}),c,r+t("\u255A"+"\u2550".repeat(e)+"\u255D"),"",""].join(`
7
+ import{u as o}from"./3M4I4RF5.js";import{ba as t}from"./A7GSAEEX.js";var r=" ",a=" ";function g(i){let p=Math.max(...i.map(n=>o(n).length)),e=p+a.length*2,c=r+t("\u2551"+" ".repeat(e)+"\u2551");return["",r+t("\u2554"+"\u2550".repeat(e)+"\u2557"),c,...i.map(n=>{let h=" ".repeat(p-o(n).length);return`${r}${t("\u2551")}${a}${n}${h}${a}${t("\u2551")}`}),c,r+t("\u255A"+"\u2550".repeat(e)+"\u255D"),"",""].join(`
8
8
  `)}export{g as a};
@@ -4,16 +4,16 @@ import { dirname as __pathDirname } from 'node:path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  var __filename = __fileURLToPath(import.meta.url);
6
6
  var __dirname = __pathDirname(__filename);
7
- import{a as ee,b as te,f as ne,g as E,h as re}from"./5SZSJOU3.js";import{a as y}from"./WZXA5XPB.js";import{Da as Z,S as W,Y as V,c as x,la as b,na as Q,r as v,s as H,ua as Y,v as J,wa as T}from"./CUKEOWKK.js";import{b as A,c as G,k as D}from"./LD5MEXEL.js";import{mkdir as ct,readFile as ut,writeFile as dt}from"node:fs/promises";import{dirname as ke,parse as ft,resolve as R,sep as pt}from"node:path";function M(e){return{requires:["typescript"],errorModes:["throw"],load:()=>import("./JI5Q6ZGW.js").then(t=>({run:t.tanstackQueryGenerator(e)}))}}var U={outputMode:"it always emits one self-contained file",runtime:"the runtime is always embedded in the generated file",argsStyle:"inputs follow the target language's own idiom",importExt:"the generated file has no relative imports"},I={typescript:{load:()=>import("./4WRVGXJB.js").then(e=>({run:e.typescriptGenerator,sample:e.typescriptSample,docs:e.typescriptDocs}))},zod:{load:()=>import("./XBNBUWMQ.js").then(e=>({run:e.zodGenerator}))},transformers:{requires:["typescript"],dateTypes:["Date"],load:()=>import("./IULINGO6.js").then(e=>({run:e.transformersGenerator}))},"tanstack-query":M("react"),"tanstack-query-vue":M("vue"),"tanstack-query-svelte":M("svelte"),"tanstack-query-solid":M("solid"),swr:{requires:["typescript"],errorModes:["throw"],load:()=>import("./ELCAIC6I.js").then(e=>({run:e.swrGenerator}))},mock:{requires:["typescript"],load:()=>import("./KXG5QGHY.js").then(e=>({run:e.mockGenerator}))},cli:{requires:["typescript","zod"],errorModes:["throw"],load:()=>import("./I6PWN5ZC.js").then(e=>({run:e.cliGenerator,sample:e.cliSample,docs:e.cliDocs}))},python:{notApplicable:U,load:()=>import("./HACS5KPF.js").then(e=>({run:e.pythonGenerator,sample:e.pythonSample,docs:e.pythonDocs,options:e.pythonOptions}))},go:{errorModes:["throw"],notApplicable:U,load:()=>import("./QCQZ7VLF.js").then(e=>({run:e.goGenerator,sample:e.goSample,docs:e.goDocs}))},php:{errorModes:["throw"],notApplicable:U,load:()=>import("./XAPB4PIJ.js").then(e=>({run:e.phpGenerator,sample:e.phpSample,docs:e.phpDocs}))}};function oe(e,t,n,r){let s=new Set(e);t.goPackage!==void 0&&!s.has("go")&&b.warn(`generate-client: goPackage is ignored \u2014 it declares the Go package clause, and no selected generator uses it (add --generator go).
8
- `),t.telemetry==="on"&&!s.has("typescript")&&b.warn(`generate-client: telemetry is ignored \u2014 the typescript generator writes the telemetry module, and it is not selected (add --generator typescript).
9
- `);let o=t.errorMode??"throw",i=t.dateType??"string";for(let a of e){let c=n.get(a);if(!c)throw new y(`Unknown generator: ${a}`);for(let d of c.requires??[])if(!s.has(d)){let f=[...new Set([d,...e])].map(m=>`--generator ${m}`).join(" ");throw new y(`The "${a}" generator requires the "${d}" generator. Add it, e.g. ${f}.`)}if(c.errorModes&&!c.errorModes.includes(o))throw new y(`The "${a}" generator does not support --error-mode "${o}" (supported: ${c.errorModes.join(", ")}).`);if(c.dateTypes&&!c.dateTypes.includes(i))throw new y(`The "${a}" generator requires --date-type ${c.dateTypes.join(" or ")} (got "${i}") so the runtime values match the generated types.`);let u={...t,outputMode:r};for(let[d,f]of Object.entries(c.notApplicable??{}))u[d]!==void 0&&b.warn(`generate-client: the "${a}" generator ignores ${d} \u2014 ${f}.
10
- `)}}function se(e,t,n){let r=new Map;for(let s of e){let o=t.get(s)?.options,i=n?.[s];if(o===void 0){i!==void 0&&b.warn(`generate-client: the "${s}" generator declares no options, so client.options.${s} is ignored.
11
- `),r.set(s,{});continue}r.set(s,ve(s,o,i))}return r}function ve(e,t,n){if(n!==void 0&&!x(n))throw new y(`The "${e}" generator's options must be a map of option names to values.`);let r=n??{},s=Object.keys(t.properties);if(t.additionalProperties!==!0){for(let i of Object.keys(r))if(!s.includes(i))throw new y(`The "${e}" generator got an unknown option "${i}". Declared options: ${s.join(", ")||"(none)"}.`)}for(let i of t.required??[])if(r[i]===void 0)throw new y(`The "${e}" generator requires the "${i}" option.`);let o={...r};for(let[i,a]of Object.entries(t.properties)){if(o[i]===void 0){a.default!==void 0&&(o[i]=a.default);continue}let c=Se(a,o[i]);if(c!==void 0)throw new y(`The "${e}" generator's "${i}" ${c}.`)}return o}function Se(e,t){if("enum"in e)return e.enum.includes(t)?void 0:`must be one of: ${e.enum.join(", ")}`;if(e.type==="array"){let n=e.items.type;return Array.isArray(t)&&t.every(r=>typeof r===n)?void 0:`must be an array of ${n}`}return typeof t===e.type?void 0:`must be a ${e.type}`}import{isAbsolute as xe,resolve as qe}from"node:path";import{pathToFileURL as Pe}from"node:url";var Oe=function(e,t){return typeof e=="string"&&/^\.\.?\//.test(e)?e.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i,function(n,r,s,o,i){return r?t?".jsx":".js":s&&(!o||!i)?n:s+o+"."+i.toLowerCase()+"js"}):e};async function ae(e,t={}){let n=new Map;for(let a of t.customGenerators??[])ce(n,a);let r=[];for(let a of e)r.push(await ie(a,n,t.configDir));let s=[],o=new Set,i=async a=>{if(!(s.includes(a)||o.has(a))){o.add(a);for(let c of n.get(a).requires??[])(n.has(c)||c in I)&&await i(await ie(c,n,t.configDir));o.delete(a),s.push(a)}};for(let a of r)await i(a);return{selected:s,registry:n}}async function ie(e,t,n){if(t.has(e))return e;let r=I[e];if(r!==void 0){let{load:o,...i}=r;return t.set(e,{...i,...await o()}),e}if(e==="sdk")throw new y('The "sdk" generator is now named "typescript". Update the `generators` list or the --generator flag.');let s=await je(e,n??process.cwd());return ce(t,s),s.name}function ce(e,t){if(!x(t)||typeof t.name!="string"||t.name===""||typeof t.run!="function")throw new y("Invalid custom generator: expected an object with a non-empty string `name` and a `run` function (build one with `defineGenerator`).");if(e.has(t.name))throw new y(`Generator name "${t.name}" collides with an existing generator. Rename the custom generator.`);if(t.requiresGenerator!==void 0){let n=re(E,t.requiresGenerator);if(n===void 0)throw new y(`Generator "${t.name}" declares requiresGenerator "${t.requiresGenerator}", which is not a range we read. Use ^1.2.0, ~1.2.0, >=1.2.0, or an exact version.`);if(!n)throw new y(`Generator "${t.name}" needs @redocly/client-generator ${t.requiresGenerator}; this CLI ships ${E}. Upgrade @redocly/cli if the generator is newer, or update the generator \u2014 \`redocly eject-generator <name> --update\` for an ejected file, or upgrade its package.`)}t.name in I&&b.warn(`generate-client: custom generator "${t.name}" takes over the built-in generator of the same name.
12
- `),e.set(t.name,{run:t.run,sample:t.sample,docs:t.docs,notApplicable:t.notApplicable,options:t.options,requires:t.requires,errorModes:t.errorModes,dateTypes:t.dateTypes})}async function je(e,t){if(J(e))throw new y(`Remote generator modules are not supported \u2014 use a local path or a package name. Got: ${e}`);let n=e.startsWith(".")||xe(e),r=n?Pe(qe(t,e)).href:e;if(n&&e.endsWith(".ts")&&!process.features.typescript)throw new y(`Generator "${e}" is TypeScript, which this Node cannot run directly \u2014 use Node 22.18, 23.6, or newer.`);let s;try{s=await import(Oe(r))}catch(i){throw new y(`Could not load generator "${e}": ${i.message}`)}let o=s.default??s.generator;if(o===void 0)throw new y(`Generator module "${e}" must export a generator (a default export or a \`generator\` export built with \`defineGenerator\`).`);return o}function fe(e){let t=new Set,n=new Set,r=new Map;for(let l of e.securitySchemes){let h=C(l.key,t,n);h!==l.key&&(r.set(l.key,h),L("security scheme",l.key,h,de(l.key,t)),l.key=h)}let s=new Set(ne()),o=new Set(s),i=new Set,a=new Map;for(let l of e.schemas){let h=C(l.name,o,i);h!==l.name&&(a.set(l.name,h),L("schema",l.name,h,de(l.name,s)),l.name=h)}let c=l=>a.get(l)??ue(l),u=l=>r.get(l)??ue(l);for(let l of e.schemas)$(l.schema,c);let d=new Set(o),f=new Set,m=new Set;for(let l of e.services)for(let h of l.operations){let p=m.has(h.name);m.add(h.name);let g=h.name,P=C(h.name,d,f);if(P!==h.name){let j=p?{kind:"duplicate-operation-id"}:s.has(g)?{kind:"reserved"}:o.has(g)?{kind:"schema-collision"}:{kind:"unusable"};L("operation",g,P,j),h.specName=h.name,h.name=P}Ne(h,c),h.security=h.security.map(j=>j.map(u))}}function C(e,t,n){let r=G(e),s=r,o=2;for(;t.has(s)||n.has(D(s));)s=`${r}_${o++}`;return t.add(s),n.add(D(s)),s}function pe(e){for(let t of e.schemas)if(!A(t.name))throw B("schema",t.name);for(let t of e.securitySchemes)if(!A(t.key))throw B("security scheme",t.key);for(let t of e.services)for(let n of t.operations)if(!A(n.name))throw B("operation",n.name)}function B(e,t){return new Error(`Internal error: ${e} name ${JSON.stringify(t)} is not a safe identifier after sanitization.`)}function ue(e){return G(e)}function L(e,t,n,r){let s=JSON.stringify(t),o=JSON.stringify(n),i=r.kind==="duplicate-operation-id"?`two operations share the operationId ${s}; the second is emitted as ${o} \u2014 give each operation a unique operationId to control its method name`:r.kind==="schema-collision"?`${e} ${s} collides with the schema of the same name, so it is emitted as ${o} \u2014 rename the operation or the schema in the description to control its name`:r.kind==="reserved"?`${e} ${s} is a name a generated client already declares, so it is emitted as ${o} \u2014 the reserved set spans every target language, so one schema keeps one name across the SDKs you generate`:`${e} ${s} is not a usable identifier, so it is emitted as ${o}`;b.warn(`generate-client: ${i}.
13
- `)}function de(e,t){return t.has(e)?{kind:"reserved"}:{kind:"unusable"}}function $(e,t){switch(e.kind){case"ref":e.name=t(e.name);break;case"omit":e.base=t(e.base);break;case"array":$(e.items,t);break;case"record":$(e.value,t);break;case"object":for(let n of e.properties)$(n.schema,t);break;case"union":for(let n of e.members)$(n,t);if(e.discriminator)for(let n of e.discriminator.mapping)n.schemaName=t(n.schemaName);break;case"intersection":for(let n of e.members)$(n,t);break}}function Ne(e,t){for(let n of e.pathParams)$(n.schema,t);for(let n of e.queryParams)$(n.schema,t);for(let n of e.headerParams)$(n.schema,t);for(let n of e.cookieParams)$(n.schema,t);e.requestBody&&$(e.requestBody.schema,t);for(let n of[...e.successResponses,...e.errorResponses])$(n.schema,t),n.itemSchema&&$(n.itemSchema,t)}var Ae=["get","post","put","delete","patch","head","options"];function me(e,t){if(!t.startsWith("#/"))throw new y(`External $ref not supported: ${t}`);let n=t.slice(2).split("/").map(s=>s.replace(/~1/g,"/").replace(/~0/g,"~")),r=e;for(let s of n){if(!x(r)&&!Array.isArray(r))throw new y(`Cannot resolve $ref: ${t}`);r=r[s]}if(r===void 0)throw new y(`Cannot resolve $ref: ${t}`);return r}function S(e,t){return v(t)?me(e,t.$ref):t}function N(e){let t=e.lastIndexOf("/");return t>=0?e.slice(t+1):e}function Me(e){let t=e,n={};return typeof t.minimum=="number"&&(n.minimum=t.minimum),typeof t.maximum=="number"&&(n.maximum=t.maximum),typeof t.exclusiveMinimum=="number"?n.exclusiveMinimum=t.exclusiveMinimum:t.exclusiveMinimum===!0&&typeof t.minimum=="number"&&(n.exclusiveMinimum=t.minimum,delete n.minimum),typeof t.exclusiveMaximum=="number"?n.exclusiveMaximum=t.exclusiveMaximum:t.exclusiveMaximum===!0&&typeof t.maximum=="number"&&(n.exclusiveMaximum=t.maximum,delete n.maximum),typeof t.minLength=="number"&&(n.minLength=t.minLength),typeof t.maxLength=="number"&&(n.maxLength=t.maxLength),typeof t.pattern=="string"&&(n.pattern=t.pattern),typeof t.minItems=="number"&&(n.minItems=t.minItems),typeof t.maxItems=="number"&&(n.maxItems=t.maxItems),t.uniqueItems===!0&&(n.uniqueItems=!0),typeof t.format=="string"&&(n.format=t.format),t.deprecated===!0&&(n.deprecated=!0),t.example!==void 0?n.example=t.example:Array.isArray(t.examples)&&t.examples.length>0&&(n.example=t.examples[0]),t.default!==void 0&&(n.default=t.default),Object.keys(n).length>0?n:void 0}function Ie(e,t){let n=e.discriminator;if(!n||typeof n.propertyName!="string")return;let r=[];if(n.mapping)for(let[s,o]of Object.entries(n.mapping))r.push({value:s,schemaName:N(o)});else for(let s of t)if(v(s)){let o=N(s.$ref);r.push({value:o,schemaName:o})}if(r.length!==0)return{propertyName:n.propertyName,mapping:r}}function k(e,t){return t?{...e,metadata:t}:e}function z(e,t){return e?t?{...e,...t}:e:t}function Re(e){return e?e.url.replace(/\{([^{}]+)\}/g,(t,n)=>e.variables?.[n]?.default??t):""}function he(e){let t=e.info?.title??"Api",n=e.info?.version??"0.0.0",r=e.info?.description,s=Re(e.servers?.[0]),o=(e.servers??[]).map(d=>({url:d.url,description:d.description,variables:Object.entries(d.variables??{}).map(([f,m])=>({name:f,default:m.default,description:m.description}))})),i=Be(e),a=Ue(e),c=Le(e,a),u={title:t,version:n,description:r,serverUrl:s,servers:o,services:c,schemas:i,securitySchemes:a};return fe(u),Te(c,i),pe(u),u}function Te(e,t){let n=new Map(t.map(r=>[r.name,r.schema]));for(let r of e)for(let s of r.operations)s.requestBody&&(s.requestBody.schema=Ge(s.requestBody.schema,n))}function Ee(e){let t=e.filter(n=>n.kind!=="unknown");return t.length>0?t:[{kind:"unknown"}]}function Ge(e,t){if(e.kind==="ref"){let n=De(e,t,new Set);return n.length>0?{kind:"omit",base:e.name,keys:n}:e}if(e.kind==="object"){let n=e.properties.filter(r=>!r.readOnly);return n.length===e.properties.length?e:{...e,properties:n}}return e}function De(e,t,n){let r=[],s=o=>{if(o.kind==="ref"){if(n.has(o.name))return;n.add(o.name);let i=t.get(o.name);i&&s(i)}else if(o.kind==="object")for(let i of o.properties)i.readOnly&&!r.includes(i.name)&&r.push(i.name);else if(o.kind==="intersection")for(let i of o.members)s(i)};return s(e),r}function Ue(e){let t=e.components?.securitySchemes;if(!t)return[];let n=[];for(let[r,s]of Object.entries(t)){let o=S(e,s),i=o.type;i==="oauth2"||i==="openIdConnect"?n.push({kind:"bearer",key:r}):i==="http"&&(o.scheme??"").toLowerCase()==="bearer"?n.push({kind:"bearer",key:r}):i==="http"&&(o.scheme??"").toLowerCase()==="basic"?n.push({kind:"basic",key:r}):i==="apiKey"&&o.in==="header"&&typeof o.name=="string"?n.push({kind:"apiKeyHeader",key:r,headerName:o.name}):i==="apiKey"&&o.in==="query"&&typeof o.name=="string"?n.push({kind:"apiKeyQuery",key:r,paramName:o.name}):i==="apiKey"&&o.in==="cookie"&&typeof o.name=="string"&&(b.warn(`generate-client: security scheme "${r}" sends its credential in the Cookie header, which browsers ignore \u2014 cookie auth works only in server-side clients.
14
- `),n.push({kind:"apiKeyCookie",key:r,cookieName:o.name}))}return n}function Ce(e,t,n){let r=e.security??t.security;if(!r)return[];let s=[];for(let o of r){let i=Object.keys(o);i.length!==0&&i.every(a=>n.has(a))&&s.push([...new Set(i)])}return s}function Be(e){let t=e.components?.schemas;return t?Object.entries(t).map(([n,r])=>{if(v(r)){let o=me(e,r.$ref);return{name:n,schema:q(o,`components.schemas.${n}`,e),description:o.description}}let s=q(r,`components.schemas.${n}`,e);return{name:n,schema:s,description:r.description}}):[]}function Le(e,t){let n=new Set(t.map(i=>i.key)),r=[],s=new Set;for(let[i,a]of Object.entries(e.paths??{})){if(!a)continue;let c=S(e,a),u=(c.parameters??[]).map(d=>ye(S(e,d),`paths.${i}.parameters`,e));for(let d of Ae){let f=c[d];f&&(r.push({method:d,path:i,operation:f,pathLevelParams:u}),f.operationId&&s.add(f.operationId))}}return[{name:"Default",operations:r.map(i=>{let a=i.operation.operationId??_e(ze(i.method,i.path),s);return Fe(i.method,i.path,i.operation,a,i.pathLevelParams,e,n)})}]}function ze(e,t){let n=t.split("/").filter(Boolean).map(r=>Ke(r.replace(/[{}]/g,"")));return`${e}${n.join("")}`}function Ke(e){return e.split(/[^A-Za-z0-9]+/).filter(Boolean).map(t=>t[0].toUpperCase()+t.slice(1)).join("")}function _e(e,t){let n=e,r=2;for(;t.has(n);)n=`${e}${r++}`;return t.add(n),n}function Fe(e,t,n,r,s,o,i){let a=(n.parameters??[]).map(w=>ye(S(o,w),`paths.${t}.${e}.parameters`,o)),c=new Set,u=[];for(let w of a)c.add(`${w.in}:${w.name}`),u.push(w);for(let w of s)c.has(`${w.in}:${w.name}`)||u.push(w);let d=u.filter(w=>w.in==="path"),f=u.filter(w=>w.in==="query"),m=u.filter(w=>w.in==="header"),l=u.filter(w=>w.in==="cookie"),h=n.requestBody?He(S(o,n.requestBody),`${e} ${t}`,o):void 0,{successResponses:p,successResponseHeaders:g}=Je(n,t,o),P=Ve(n,t,o),j=Ce(n,o,i),F=n["x-redoclyPagination"],X=Xe(p);return{name:r,method:e,path:t,summary:n.summary,description:n.description,pathParams:d,queryParams:f,headerParams:m,cookieParams:l,requestBody:h,successResponses:p,...g===void 0?{}:{successResponseHeaders:g},errorResponses:P,security:j,tags:Array.isArray(n.tags)?n.tags.filter(w=>typeof w=="string"):[],...F!==void 0?{paginationExtension:F}:{},...X===void 0?{}:{sse:X}}}function Xe(e){let t=e.find(s=>s.contentType.split(";")[0].trim().toLowerCase()==="text/event-stream");if(t===void 0)return;let n=t.itemSchema&&t.itemSchema.kind!=="unknown"?t.itemSchema:t.schema.kind!=="unknown"?t.schema:void 0;if(n===void 0)return{dataKind:"text"};let r=n.kind==="object"||n.kind==="ref"||n.kind==="array"||n.kind==="record"||n.kind==="union"||n.kind==="intersection";return{eventSchema:n,dataKind:r?"json":"text"}}function ye(e,t,n){if(!e.in)throw new y(`Parameter ${e.name} at ${t} is missing "in"`);if(!["path","query","header","cookie"].includes(e.in))throw new y(`Unsupported parameter location "${e.in}" for ${e.name} at ${t}`);let r=O(e.schema,`${t}.${e.name}`,n);e.deprecated===!0&&(r={...r,metadata:z(r.metadata,{deprecated:!0})});let s={name:e.name,in:e.in,schema:r,required:!!e.required,description:e.description};if(s.in==="query"){let o=e;(o.style==="form"||o.style==="spaceDelimited"||o.style==="pipeDelimited"||o.style==="deepObject")&&(s.style=o.style),typeof o.explode=="boolean"&&(s.explode=o.explode),typeof o.allowReserved=="boolean"&&(s.allowReserved=o.allowReserved)}return s}function He(e,t,n){let r=e.content??{},s=r["application/json"]??r["application/merge-patch+json"]??r["application/x-www-form-urlencoded"]??r["multipart/form-data"]??Object.values(r)[0];if(!s)return;let o=Object.keys(r).find(a=>r[a]===s),i=O(s.schema,`${t}.requestBody`,n);return{contentType:o,schema:i,required:!!e.required,description:e.description}}function Je(e,t,n){let r=e.responses??{},s=Object.keys(r).filter(m=>/^2\d\d$/.test(m));s.length===0&&(r["2XX"]?s.push("2XX"):r.default&&s.push("default"));let o=s[0];if(!o)return{successResponses:[]};let i=r[o];if(!i)return{successResponses:[]};let a=S(n,i),c=We(a.headers,`paths.${t}.response.${o}`,n),u=a.content;if(!u)return{successResponses:[],...c===void 0?{}:{successResponseHeaders:c}};let d=o==="default"||o==="2XX"?o:Number(o),f=[];for(let[m,l]of Object.entries(u)){let h=O(l.schema,`paths.${t}.response.${o}.${m}`,n),p=l.itemSchema,g=p!==void 0?O(p,`paths.${t}.response.${o}.${m}.itemSchema`,n):void 0;f.push({contentType:m,schema:h,status:d,...g===void 0?{}:{itemSchema:g}})}return{successResponses:f,...c===void 0?{}:{successResponseHeaders:c}}}function We(e,t,n){if(!e)return;let r=[];for(let[s,o]of Object.entries(e)){let i=S(n,o),a={name:s.toLowerCase(),schema:O(i.schema===void 0?void 0:S(n,i.schema),`${t}.headers.${s}`,n)};i.required===!0&&(a.required=!0),r.push(a)}return r.length>0?r:void 0}function Ve(e,t,n){let r=e.responses??{},s=Object.keys(r).filter(a=>/^([45]\d\d|4XX|5XX)$/.test(a));Object.keys(r).some(a=>/^(2\d\d|2XX)$/.test(a))&&r.default&&s.push("default");let i=[];for(let a of s){let c=r[a];if(!c)continue;let d=S(n,c).content;if(!d)continue;let f=a==="default"||a==="4XX"||a==="5XX"?a:Number(a);for(let[m,l]of Object.entries(d)){let h=O(l.schema,`paths.${t}.response.${a}.${m}`,n);i.push({contentType:m,schema:h,status:f})}}return i}function O(e,t,n){return e===void 0||typeof e=="boolean"?{kind:"unknown"}:v(e)?{kind:"ref",name:N(e.$ref)}:q(e,t,n)}function q(e,t,n){let r=Me(e),s=e.oneOf??e.anyOf;if(s){let a=s.map((d,f)=>v(d)?{kind:"ref",name:N(d.$ref)}:q(d,`${t}.[${f}]`,n)),c=Ee(a);if(c.length===1&&c.length<a.length){let d=c[0];return{...d,description:d.description??e.description,metadata:z(r,d.metadata)}}let u=Ie(e,s);return k({kind:"union",members:c,discriminator:u,description:e.description},r)}if(e.allOf){let a=e.allOf.map((u,d)=>v(u)?{kind:"ref",name:N(u.$ref)}:q(u,`${t}.allOf[${d}]`,n)),c=le(e,t,n);if(c.length>0&&a.unshift({kind:"object",properties:c}),a.length===1){let u=a[0];return{...u,description:u.description??e.description,metadata:z(r,u.metadata)}}return k({kind:"intersection",members:a,description:e.description},r)}let o=e.type;if(Array.isArray(o)){let a=o.filter(d=>d!=="null"),c=o.includes("null"),u=a.map(d=>{let f={...e,type:d};if(Array.isArray(f.enum)){let m=f.enum.filter(l=>l!==null);f.enum=m.length>0?m:void 0}return q(f,t,n)});return c&&u.push({kind:"null"}),u.length===1?u[0]:k({kind:"union",members:u,description:e.description},r)}if(e.nullable)return{kind:"union",members:[q({...e,nullable:void 0},t,n),{kind:"null"}],description:e.description};if(e.const!==void 0){let a=e.const;if(typeof a!="string"&&typeof a!="number"&&typeof a!="boolean")throw new y(`Unsupported const value at ${t}: ${JSON.stringify(a)}`);return k({kind:"literal",value:a,description:e.description},r)}if(e.enum){let a=e.enum,c=a.filter(m=>m!==null),u=c.length!==a.length;if(c.length===0)return k({kind:"null",description:e.description},r);let d=Qe(c,t),f=d==="boolean"?{kind:"scalar",scalar:"boolean",description:e.description}:{kind:"enum",values:c,scalar:d,description:e.description};return k(u?{kind:"union",members:[f,{kind:"null"}],description:e.description}:f,r)}let i=o;if(i==="null")return k({kind:"null",description:e.description},r);if(i==="array"){let a=e.items,c=O(a,`${t}.items`,n);return k({kind:"array",items:c,description:e.description},r)}if(i==="object"||e.properties||e.additionalProperties){let a=le(e,t,n),c=e.additionalProperties;if(a.length===0&&c!==!1){let u=O(c,`${t}.additionalProperties`,n);return k({kind:"record",value:u,description:e.description},r)}return k({kind:"object",properties:a,description:e.description},r)}return k(i==="string"||i==="number"||i==="integer"||i==="boolean"?{kind:"scalar",scalar:i,description:e.description}:{kind:"unknown",description:e.description},r)}function Qe(e,t){let n=!1,r=!1,s=!1;for(let o of e)if(typeof o=="string")n=!0;else if(typeof o=="number")r=!0;else if(typeof o=="boolean")s=!0;else throw new y(`Unsupported enum value type at ${t}: ${JSON.stringify(o)}`);return n&&!r&&!s?"string":r&&!n&&!s?"number":s&&!n&&!r?"boolean":"string"}function Ye(e){return!(e.openapi??"").startsWith("3.0")}function le(e,t,n){let r=e.properties??{},s=new Set(e.required??[]),o=Ye(n);return Object.entries(r).map(([i,a])=>{let c=a.readOnly===!0;c&&v(a)&&!o&&b.warn(`generate-client: "${i}" declares readOnly beside a $ref, which OpenAPI ${n.openapi} ignores \u2014 the property stays in request bodies. Inline the schema, wrap the $ref in allOf, or move the description to OpenAPI 3.1.
15
- `);let u=c&&(o||!v(a));return{name:i,schema:O(a,`${t}.${i}`,n),required:s.has(i),description:a.description,...u?{readOnly:!0}:{}}})}function ge(e){let t=K(e),n={...t};delete n.swagger,delete n.host,delete n.basePath,delete n.schemes,delete n.definitions,delete n.securityDefinitions,delete n.consumes,delete n.produces,delete n.parameters,delete n.responses,n.openapi="3.0.3";let r=Ze(t);return r&&(n.servers=r),n.components=et(t),n.paths=ot(t.paths??{},t.consumes??void 0,t.produces??void 0),n}function Ze(e){let t=e.host,n=e.basePath??"",r=(e.schemes??["https"])[0]??"https";if(t)return[{url:`${r}://${t}${n}`}]}function et(e){let t={};e.definitions&&(t.schemas=e.definitions),e.parameters&&(t.parameters=Object.fromEntries(Object.entries(e.parameters).map(([r,s])=>[r,_(s)]))),e.responses&&(t.responses=be(e.responses,void 0));let n=e.securityDefinitions;if(n){let r={};for(let[s,o]of Object.entries(n))r[s]=tt(o);t.securitySchemes=r}return t}function tt(e){switch(e.type){case"basic":return{type:"http",scheme:"basic"};case"apiKey":return{type:"apiKey",name:e.name,in:e.in};case"oauth2":{let t=e.flow==="accessCode"?"authorizationCode":e.flow==="application"?"clientCredentials":e.flow,n={scopes:e.scopes??{}};return e.authorizationUrl&&(n.authorizationUrl=e.authorizationUrl),e.tokenUrl&&(n.tokenUrl=e.tokenUrl),{type:"oauth2",flows:{[t]:n}}}default:return e}}function K(e){if(Array.isArray(e))return e.map(K);if(x(e)){let t={};for(let[n,r]of Object.entries(e))n==="$ref"&&typeof r=="string"?t.$ref=r.replace("#/definitions/","#/components/schemas/").replace("#/parameters/","#/components/parameters/").replace("#/responses/","#/components/responses/"):t[n]=K(r);return t}return e}var nt="application/json",rt="application/json",we=new Set(["name","in","required","description","deprecated","allowEmptyValue","collectionFormat"]);function ot(e,t,n){let r={};for(let[s,o]of Object.entries(e)){let i=o,a={};for(let[c,u]of Object.entries(i)){if(c==="parameters"&&Array.isArray(u)){a.parameters=u.map(_);continue}if(!st(c)){a[c]=u;continue}a[c]=it(u,t,n)}r[s]=a}return r}function st(e){return["get","put","post","delete","options","head","patch"].includes(e.toLowerCase())}function it(e,t,n){let r=e.consumes??t,s=e.produces??n,o=e.parameters??[],i=o.find(f=>f.in==="body"),a=o.filter(f=>f.in==="formData"),c=o.filter(f=>f.in!=="body"&&f.in!=="formData").map(_),u={...e,parameters:c};delete u.consumes,delete u.produces;let d=r?.[0]??nt;if(i)u.requestBody={required:!!i.required,content:{[d]:{schema:i.schema}}};else if(a.length>0){let f={},m=[];for(let p of a)f[p.name]=at(p),p.required&&m.push(p.name);let l={type:"object",properties:f};m.length>0&&(l.required=m);let h=r?.find(p=>p==="multipart/form-data")??r?.[0]??"application/x-www-form-urlencoded";u.requestBody={required:m.length>0,content:{[h]:{schema:l}}}}return e.responses&&(u.responses=be(e.responses,s)),u}function _(e){if(e.$ref!==void 0||e.in==="body"||e.in==="formData")return e;let t={},n={};for(let[r,s]of Object.entries(e))we.has(r)?t[r]=s:n[r]=s;if(t.schema=n,delete t.collectionFormat,e.in==="query"&&n.type==="array"){let r=e.collectionFormat??"csv";r!=="multi"&&(t.style=r==="ssv"?"spaceDelimited":r==="pipes"?"pipeDelimited":"form",t.explode=!1)}return t}function at(e){let t={};for(let[n,r]of Object.entries(e))we.has(n)||(t[n]=r);return t}function be(e,t){let n=t?.[0]??rt,r={};for(let[s,o]of Object.entries(e)){let i=o;if(i.schema===void 0){r[s]=i;continue}let{schema:a,...c}=i;r[s]={...c,content:{[n]:{schema:a}}}}return r}async function $e(e,t){let n=t??await T({}),r=await Y({ref:e,config:n}),s=await T({rules:{struct:"error"}}),o=await Z({externalRefResolver:new V,document:r.bundle,config:s}),i=[...r.problems,...o].filter(c=>c.severity==="error");if(i.length>0){let c=i.map(u=>`- ${u.message} (at ${u.location?.[0]?.pointer??e})`).join(`
16
- `);throw new Error(`The API description has ${i.length} error(s):
17
- ${c}`)}let a=r.bundle.parsed;return{document:a,version:Q(a)}}var lt=["Generated by @redocly/client-generator \u2014 do not edit by hand.","Source: OpenAPI description. Re-run `redocly generate-client` to update."];function mt(e,t){let n=[],r=new Set,s=R(ke(t.outputPath)),{dir:o,name:i,ext:a}=ft(t.outputPath),c={path:t.outputPath,dir:o,stem:i,ext:a},u=lt,d=!1;for(let f of t.generators){let m=t.registry.get(f),l={model:e,output:c,banner:u,outputMode:t.outputMode,emit:t.emit,pagination:t.pagination,selected:t.generators,options:t.generatorOptions?.get(f)??{}},h;try{t.emit.docs===!0&&m.docs!==void 0?(h=[...m.run(l),...m.docs(l)],d=!0):h=m.run(l)}catch(p){let g=p instanceof Error?p.message:String(p);throw new Error(`Generator "${f}" failed: ${g}`)}if(!Array.isArray(h)||h.some(p=>typeof p?.path!="string"||p.path===""||typeof p.content!="string"))throw new Error(`Generator "${f}" failed: run() must return an array of { path, content } files.`);for(let p of h){let g=R(s,p.path);if(g!==s&&!g.startsWith(s+pt))throw new Error(`Generator "${f}" failed: file path escapes the output directory: ${p.path}`);if(r.has(g))throw new Error(`Generator conflict: ${p.path} already emitted by an earlier generator`);r.add(g),n.push({path:g,content:p.content})}}return t.emit.docs===!0&&!d&&b.warn(`generate-client: docs is on, but no selected generator writes documentation (${t.generators.join(", ")}).
18
- `),n}function ht(e){for(let t of e.services)for(let n of t.operations){let r=new Set,s=new Set;for(let o of[...n.pathParams,...n.queryParams,...n.headerParams,...n.cookieParams])r.has(o.name)&&s.add(o.name),r.add(o.name);s.size!==0&&b.warn(`generate-client: operation "${n.specName??n.name}" uses ${[...s].map(o=>`"${o}"`).join(", ")} in more than one parameter location. Every SDK sends both, and the SDKs whose methods take one argument per parameter give the later one a suffixed name \u2014 rename it in the description to choose the name yourself.
19
- `)}}function yt(e,t,n,r,s,o,i){let a=[],c=new Set;for(let u of ee(t.services)){let d=gt(e,u.path,u.method);if(c.has(d))continue;c.add(d);let f=r.map(m=>s.get(m)?.sample?.(u,{model:t,emit:n,outputPath:o,pagination:i})).filter(m=>m!==void 0);f.length>0&&a.push({target:d,update:{"x-codeSamples":f}})}if(a.length!==0)return W({overlay:"1.0.0",info:{title:`Code samples for ${t.title}`,version:t.version},actions:a})}function gt(e,t,n){let r=i=>`['${i.replaceAll("\\","\\\\").replaceAll("'","\\'")}']`,s=e.paths?.[t];return`${v(s)&&s.$ref.startsWith("#/")?"$"+s.$ref.slice(2).split("/").map(H).map(r).join(""):`$.paths${r(t)}`}.${n}`}async function nn(e){if(e.output.split(/[\\/]/).some(p=>p==="undefined"||p==="null"))throw new Error(`output path "${e.output}" contains a literal "undefined" or "null" segment \u2014 this looks like an interpolation bug in the caller`);if(e.setup&&/^[a-z][a-z0-9+.-]+:/i.test(e.setup))throw new y(`setup must be a local file path \u2014 remote setup modules are not supported (got: ${e.setup})`);let t=R(e.output),{document:n,version:r}=await $e(e.api,e.config),s=r==="oas2"?ge(n):n,o=he(s);ht(o);let i;if(e.setup){let{bakeSetup:p}=await import("./CQMMUWIJ.js"),g=R(e.configDir??process.cwd(),e.setup);i=p(await ut(g,"utf-8"))}let a=e.generators?.length?e.generators:["typescript"],{selected:c,registry:u}=await ae(a,{customGenerators:e.customGenerators,configDir:e.configDir}),d=te(o,e.pagination),f={serverUrl:e.serverUrl,argsStyle:e.argsStyle,errorMode:e.errorMode,dateType:e.dateType,mockData:e.mockData,mockSeed:e.mockSeed,queryKeyPrefix:e.queryKeyPrefix,telemetry:e.telemetry,setup:i,runtime:e.runtime,importExt:e.importExt,goPackage:e.goPackage,pagination:d,docs:e.docs,docsFrontmatter:e.docsFrontmatter};oe(c,f,u,e.outputMode);let m=se(c,u,e.options),l=mt(o,{outputPath:t,outputMode:e.outputMode??"single",emit:f,pagination:d,generators:c,generatorOptions:m,registry:u});if(e.codeSamples===!0){let p=yt(n,o,f,c,u,t,d);p!==void 0&&l.push({path:t.replace(/\.[^.]+$/,".code-samples.yaml"),content:p})}let h=[];for(let p of l)await ct(ke(p.path),{recursive:!0}),await dt(p.path,p.content,"utf-8"),h.push({path:p.path,bytes:Buffer.byteLength(p.content,"utf-8")});return{outputPath:t,bytes:h.reduce((p,g)=>p+g.bytes,0),files:h}}export{I as a,oe as b,mt as c,nn as d};
7
+ import{a as ee,b as te,f as ne,g as E,h as re}from"./YMEKQZGH.js";import{a as y}from"./WZXA5XPB.js";import{Aa as Z,P as W,V,c as x,ia as b,ka as Q,r as S,ra as Y,s as H,ta as T,u as J}from"./A7GSAEEX.js";import{b as A,c as G,k as D}from"./LD5MEXEL.js";import{mkdir as ct,readFile as ut,writeFile as dt}from"node:fs/promises";import{dirname as ke,parse as ft,resolve as R,sep as pt}from"node:path";function M(e){return{requires:["typescript"],errorModes:["throw"],load:()=>import("./HZWBQ5X2.js").then(t=>({run:t.tanstackQueryGenerator(e)}))}}var U={outputMode:"it always emits one self-contained file",runtime:"the runtime is always embedded in the generated file",argsStyle:"inputs follow the target language's own idiom",importExt:"the generated file has no relative imports"},I={typescript:{load:()=>import("./ZWSBBZUL.js").then(e=>({run:e.typescriptGenerator,sample:e.typescriptSample,docs:e.typescriptDocs}))},zod:{load:()=>import("./HO65YF44.js").then(e=>({run:e.zodGenerator}))},transformers:{requires:["typescript"],dateTypes:["Date"],load:()=>import("./IULINGO6.js").then(e=>({run:e.transformersGenerator}))},"tanstack-query":M("react"),"tanstack-query-vue":M("vue"),"tanstack-query-svelte":M("svelte"),"tanstack-query-solid":M("solid"),swr:{requires:["typescript"],errorModes:["throw"],load:()=>import("./WKARZCQY.js").then(e=>({run:e.swrGenerator}))},mock:{requires:["typescript"],load:()=>import("./J4JXYV6D.js").then(e=>({run:e.mockGenerator}))},cli:{requires:["typescript","zod"],errorModes:["throw"],load:()=>import("./NW6ICGJQ.js").then(e=>({run:e.cliGenerator,sample:e.cliSample,docs:e.cliDocs}))},python:{notApplicable:U,load:()=>import("./ORDNN74I.js").then(e=>({run:e.pythonGenerator,sample:e.pythonSample,docs:e.pythonDocs,options:e.pythonOptions}))},go:{errorModes:["throw"],notApplicable:U,load:()=>import("./5E7BK4TX.js").then(e=>({run:e.goGenerator,sample:e.goSample,docs:e.goDocs}))},php:{errorModes:["throw"],notApplicable:U,load:()=>import("./RGW5AEJZ.js").then(e=>({run:e.phpGenerator,sample:e.phpSample,docs:e.phpDocs}))}};function oe(e,t,n,r){let o=new Set(e);t.goPackage!==void 0&&!o.has("go")&&b.warn(`generate-client: goPackage is ignored \u2014 it declares the Go package clause, and no selected generator uses it (add --generator go).
8
+ `),t.telemetry==="on"&&!o.has("typescript")&&b.warn(`generate-client: telemetry is ignored \u2014 the typescript generator writes the telemetry module, and it is not selected (add --generator typescript).
9
+ `);let s=t.errorMode??"throw",i=t.dateType??"string";for(let a of e){let c=n.get(a);if(!c)throw new y(`Unknown generator: ${a}`);for(let d of c.requires??[])if(!o.has(d)){let f=[...new Set([d,...e])].map(m=>`--generator ${m}`).join(" ");throw new y(`The "${a}" generator requires the "${d}" generator. Add it, e.g. ${f}.`)}if(c.errorModes&&!c.errorModes.includes(s))throw new y(`The "${a}" generator does not support --error-mode "${s}" (supported: ${c.errorModes.join(", ")}).`);if(c.dateTypes&&!c.dateTypes.includes(i))throw new y(`The "${a}" generator requires --date-type ${c.dateTypes.join(" or ")} (got "${i}") so the runtime values match the generated types.`);let u={...t,outputMode:r};for(let[d,f]of Object.entries(c.notApplicable??{}))u[d]!==void 0&&b.warn(`generate-client: the "${a}" generator ignores ${d} \u2014 ${f}.
10
+ `)}}function se(e,t,n){let r=new Map;for(let o of e){let s=t.get(o)?.options,i=n?.[o];if(s===void 0){i!==void 0&&b.warn(`generate-client: the "${o}" generator declares no options, so client.options.${o} is ignored.
11
+ `),r.set(o,{});continue}r.set(o,Se(o,s,i))}return r}function Se(e,t,n){if(n!==void 0&&!x(n))throw new y(`The "${e}" generator's options must be a map of option names to values.`);let r=n??{},o=Object.keys(t.properties);if(t.additionalProperties!==!0){for(let i of Object.keys(r))if(!o.includes(i))throw new y(`The "${e}" generator got an unknown option "${i}". Declared options: ${o.join(", ")||"(none)"}.`)}for(let i of t.required??[])if(r[i]===void 0)throw new y(`The "${e}" generator requires the "${i}" option.`);let s={...r};for(let[i,a]of Object.entries(t.properties)){if(s[i]===void 0){a.default!==void 0&&(s[i]=a.default);continue}let c=ve(a,s[i]);if(c!==void 0)throw new y(`The "${e}" generator's "${i}" ${c}.`)}return s}function ve(e,t){if("enum"in e)return e.enum.includes(t)?void 0:`must be one of: ${e.enum.join(", ")}`;if(e.type==="array"){let n=e.items.type;return Array.isArray(t)&&t.every(r=>typeof r===n)?void 0:`must be an array of ${n}`}return typeof t===e.type?void 0:`must be a ${e.type}`}import{isAbsolute as xe,resolve as qe}from"node:path";import{pathToFileURL as Pe}from"node:url";var Oe=function(e,t){return typeof e=="string"&&/^\.\.?\//.test(e)?e.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i,function(n,r,o,s,i){return r?t?".jsx":".js":o&&(!s||!i)?n:o+s+"."+i.toLowerCase()+"js"}):e};async function ae(e,t={}){let n=new Map;for(let a of t.customGenerators??[])ce(n,a);let r=[];for(let a of e)r.push(await ie(a,n,t.configDir));let o=[],s=new Set,i=async a=>{if(!(o.includes(a)||s.has(a))){s.add(a);for(let c of n.get(a).requires??[])(n.has(c)||c in I)&&await i(await ie(c,n,t.configDir));s.delete(a),o.push(a)}};for(let a of r)await i(a);return{selected:o,registry:n}}async function ie(e,t,n){if(t.has(e))return e;let r=I[e];if(r!==void 0){let{load:s,...i}=r;return t.set(e,{...i,...await s()}),e}if(e==="sdk")throw new y('The "sdk" generator is now named "typescript". Update the `generators` list or the --generator flag.');let o=await je(e,n??process.cwd());return ce(t,o),o.name}function ce(e,t){if(!x(t)||typeof t.name!="string"||t.name===""||typeof t.run!="function")throw new y("Invalid custom generator: expected an object with a non-empty string `name` and a `run` function (build one with `defineGenerator`).");if(e.has(t.name))throw new y(`Generator name "${t.name}" collides with an existing generator. Rename the custom generator.`);if(t.requiresGenerator!==void 0){let n=re(E,t.requiresGenerator);if(n===void 0)throw new y(`Generator "${t.name}" declares requiresGenerator "${t.requiresGenerator}", which is not a range we read. Use ^1.2.0, ~1.2.0, >=1.2.0, or an exact version.`);if(!n)throw new y(`Generator "${t.name}" needs @redocly/client-generator ${t.requiresGenerator}; this CLI ships ${E}. Upgrade @redocly/cli if the generator is newer, or update the generator \u2014 \`redocly eject-generator <name> --update\` for an ejected file, or upgrade its package.`)}t.name in I&&b.warn(`generate-client: custom generator "${t.name}" takes over the built-in generator of the same name.
12
+ `),e.set(t.name,{run:t.run,sample:t.sample,docs:t.docs,notApplicable:t.notApplicable,options:t.options,requires:t.requires,errorModes:t.errorModes,dateTypes:t.dateTypes})}async function je(e,t){if(J(e))throw new y(`Remote generator modules are not supported \u2014 use a local path or a package name. Got: ${e}`);let n=e.startsWith(".")||xe(e),r=n?Pe(qe(t,e)).href:e;if(n&&e.endsWith(".ts")&&!process.features.typescript)throw new y(`Generator "${e}" is TypeScript, which this Node cannot run directly \u2014 use Node 22.18, 23.6, or newer.`);let o;try{o=await import(Oe(r))}catch(i){throw new y(`Could not load generator "${e}": ${i.message}`)}let s=o.default??o.generator;if(s===void 0)throw new y(`Generator module "${e}" must export a generator (a default export or a \`generator\` export built with \`defineGenerator\`).`);return s}function fe(e){let t=new Set,n=new Set,r=new Map;for(let l of e.securitySchemes){let h=C(l.key,t,n);h!==l.key&&(r.set(l.key,h),L("security scheme",l.key,h,de(l.key,t)),l.key=h)}let o=new Set(ne()),s=new Set(o),i=new Set,a=new Map;for(let l of e.schemas){let h=C(l.name,s,i);h!==l.name&&(a.set(l.name,h),L("schema",l.name,h,de(l.name,o)),l.name=h)}let c=l=>a.get(l)??ue(l),u=l=>r.get(l)??ue(l);for(let l of e.schemas)$(l.schema,c);let d=new Set(s),f=new Set,m=new Set;for(let l of e.services)for(let h of l.operations){let p=m.has(h.name);m.add(h.name);let g=h.name,P=C(h.name,d,f);if(P!==h.name){let j=p?{kind:"duplicate-operation-id"}:o.has(g)?{kind:"reserved"}:s.has(g)?{kind:"schema-collision"}:{kind:"unusable"};L("operation",g,P,j),h.specName=h.name,h.name=P}Ne(h,c),h.security=h.security.map(j=>j.map(u))}}function C(e,t,n){let r=G(e),o=r,s=2;for(;t.has(o)||n.has(D(o));)o=`${r}_${s++}`;return t.add(o),n.add(D(o)),o}function pe(e){for(let t of e.schemas)if(!A(t.name))throw B("schema",t.name);for(let t of e.securitySchemes)if(!A(t.key))throw B("security scheme",t.key);for(let t of e.services)for(let n of t.operations)if(!A(n.name))throw B("operation",n.name)}function B(e,t){return new Error(`Internal error: ${e} name ${JSON.stringify(t)} is not a safe identifier after sanitization.`)}function ue(e){return G(e)}function L(e,t,n,r){let o=JSON.stringify(t),s=JSON.stringify(n),i=r.kind==="duplicate-operation-id"?`two operations share the operationId ${o}; the second is emitted as ${s} \u2014 give each operation a unique operationId to control its method name`:r.kind==="schema-collision"?`${e} ${o} collides with the schema of the same name, so it is emitted as ${s} \u2014 rename the operation or the schema in the description to control its name`:r.kind==="reserved"?`${e} ${o} is a name a generated client already declares, so it is emitted as ${s} \u2014 the reserved set spans every target language, so one schema keeps one name across the SDKs you generate`:`${e} ${o} is not a usable identifier, so it is emitted as ${s}`;b.warn(`generate-client: ${i}.
13
+ `)}function de(e,t){return t.has(e)?{kind:"reserved"}:{kind:"unusable"}}function $(e,t){switch(e.kind){case"ref":e.name=t(e.name);break;case"omit":e.base=t(e.base);break;case"array":$(e.items,t);break;case"record":$(e.value,t);break;case"object":for(let n of e.properties)$(n.schema,t);break;case"union":for(let n of e.members)$(n,t);if(e.discriminator)for(let n of e.discriminator.mapping)n.schemaName=t(n.schemaName);break;case"intersection":for(let n of e.members)$(n,t);break}}function Ne(e,t){for(let n of e.pathParams)$(n.schema,t);for(let n of e.queryParams)$(n.schema,t);for(let n of e.headerParams)$(n.schema,t);for(let n of e.cookieParams)$(n.schema,t);e.requestBody&&$(e.requestBody.schema,t);for(let n of[...e.successResponses,...e.errorResponses])$(n.schema,t),n.itemSchema&&$(n.itemSchema,t)}var Ae=["get","post","put","delete","patch","head","options"];function me(e,t){if(!t.startsWith("#/"))throw new y(`External $ref not supported: ${t}`);let n=t.slice(2).split("/").map(o=>o.replace(/~1/g,"/").replace(/~0/g,"~")),r=e;for(let o of n){if(!x(r)&&!Array.isArray(r))throw new y(`Cannot resolve $ref: ${t}`);r=r[o]}if(r===void 0)throw new y(`Cannot resolve $ref: ${t}`);return r}function v(e,t){return S(t)?me(e,t.$ref):t}function N(e){let t=e.lastIndexOf("/");return t>=0?e.slice(t+1):e}function Me(e){let t=e,n={};return typeof t.minimum=="number"&&(n.minimum=t.minimum),typeof t.maximum=="number"&&(n.maximum=t.maximum),typeof t.exclusiveMinimum=="number"?n.exclusiveMinimum=t.exclusiveMinimum:t.exclusiveMinimum===!0&&typeof t.minimum=="number"&&(n.exclusiveMinimum=t.minimum,delete n.minimum),typeof t.exclusiveMaximum=="number"?n.exclusiveMaximum=t.exclusiveMaximum:t.exclusiveMaximum===!0&&typeof t.maximum=="number"&&(n.exclusiveMaximum=t.maximum,delete n.maximum),typeof t.minLength=="number"&&(n.minLength=t.minLength),typeof t.maxLength=="number"&&(n.maxLength=t.maxLength),typeof t.pattern=="string"&&(n.pattern=t.pattern),typeof t.minItems=="number"&&(n.minItems=t.minItems),typeof t.maxItems=="number"&&(n.maxItems=t.maxItems),t.uniqueItems===!0&&(n.uniqueItems=!0),typeof t.format=="string"&&(n.format=t.format),t.deprecated===!0&&(n.deprecated=!0),t.example!==void 0?n.example=t.example:Array.isArray(t.examples)&&t.examples.length>0&&(n.example=t.examples[0]),t.default!==void 0&&(n.default=t.default),Object.keys(n).length>0?n:void 0}function Ie(e,t){let n=e.discriminator;if(!n||typeof n.propertyName!="string")return;let r=[];if(n.mapping)for(let[o,s]of Object.entries(n.mapping))r.push({value:o,schemaName:N(s)});else for(let o of t)if(S(o)){let s=N(o.$ref);r.push({value:s,schemaName:s})}if(r.length!==0)return{propertyName:n.propertyName,mapping:r}}function k(e,t){return t?{...e,metadata:t}:e}function z(e,t){return e?t?{...e,...t}:e:t}function Re(e){return e?e.url.replace(/\{([^{}]+)\}/g,(t,n)=>e.variables?.[n]?.default??t):""}function he(e){let t=e.info?.title??"Api",n=e.info?.version??"0.0.0",r=e.info?.description,o=Re(e.servers?.[0]),s=(e.servers??[]).map(d=>({url:d.url,description:d.description,variables:Object.entries(d.variables??{}).map(([f,m])=>({name:f,default:m.default,description:m.description}))})),i=Be(e),a=Ue(e),c=Le(e,a),u={title:t,version:n,description:r,serverUrl:o,servers:s,services:c,schemas:i,securitySchemes:a};return fe(u),Te(c,i),pe(u),u}function Te(e,t){let n=new Map(t.map(r=>[r.name,r.schema]));for(let r of e)for(let o of r.operations)o.requestBody&&(o.requestBody.schema=Ge(o.requestBody.schema,n))}function Ee(e){let t=e.filter(n=>n.kind!=="unknown");return t.length>0?t:[{kind:"unknown"}]}function Ge(e,t){if(e.kind==="ref"){let n=De(e,t,new Set);return n.length>0?{kind:"omit",base:e.name,keys:n}:e}if(e.kind==="object"){let n=e.properties.filter(r=>!r.readOnly);return n.length===e.properties.length?e:{...e,properties:n}}return e}function De(e,t,n){let r=[],o=s=>{if(s.kind==="ref"){if(n.has(s.name))return;n.add(s.name);let i=t.get(s.name);i&&o(i)}else if(s.kind==="object")for(let i of s.properties)i.readOnly&&!r.includes(i.name)&&r.push(i.name);else if(s.kind==="intersection")for(let i of s.members)o(i)};return o(e),r}function Ue(e){let t=e.components?.securitySchemes;if(!t)return[];let n=[];for(let[r,o]of Object.entries(t)){let s=v(e,o),i=s.type;i==="oauth2"||i==="openIdConnect"?n.push({kind:"bearer",key:r}):i==="http"&&(s.scheme??"").toLowerCase()==="bearer"?n.push({kind:"bearer",key:r}):i==="http"&&(s.scheme??"").toLowerCase()==="basic"?n.push({kind:"basic",key:r}):i==="apiKey"&&s.in==="header"&&typeof s.name=="string"?n.push({kind:"apiKeyHeader",key:r,headerName:s.name}):i==="apiKey"&&s.in==="query"&&typeof s.name=="string"?n.push({kind:"apiKeyQuery",key:r,paramName:s.name}):i==="apiKey"&&s.in==="cookie"&&typeof s.name=="string"&&(b.warn(`generate-client: security scheme "${r}" sends its credential in the Cookie header, which browsers ignore \u2014 cookie auth works only in server-side clients.
14
+ `),n.push({kind:"apiKeyCookie",key:r,cookieName:s.name}))}return n}function Ce(e,t,n){let r=e.security??t.security;if(!r)return[];let o=[];for(let s of r){let i=Object.keys(s);i.length!==0&&i.every(a=>n.has(a))&&o.push([...new Set(i)])}return o}function Be(e){let t=e.components?.schemas;return t?Object.entries(t).map(([n,r])=>{if(S(r)){let s=me(e,r.$ref);return{name:n,schema:q(s,`components.schemas.${n}`,e),description:s.description}}let o=q(r,`components.schemas.${n}`,e);return{name:n,schema:o,description:r.description}}):[]}function Le(e,t){let n=new Set(t.map(i=>i.key)),r=[],o=new Set;for(let[i,a]of Object.entries(e.paths??{})){if(!a)continue;let c=v(e,a),u=(c.parameters??[]).map(d=>ye(v(e,d),`paths.${i}.parameters`,e));for(let d of Ae){let f=c[d];f&&(r.push({method:d,path:i,operation:f,pathLevelParams:u}),f.operationId&&o.add(f.operationId))}}return[{name:"Default",operations:r.map(i=>{let a=i.operation.operationId??_e(ze(i.method,i.path),o);return Fe(i.method,i.path,i.operation,a,i.pathLevelParams,e,n)})}]}function ze(e,t){let n=t.split("/").filter(Boolean).map(r=>Ke(r.replace(/[{}]/g,"")));return`${e}${n.join("")}`}function Ke(e){return e.split(/[^A-Za-z0-9]+/).filter(Boolean).map(t=>t[0].toUpperCase()+t.slice(1)).join("")}function _e(e,t){let n=e,r=2;for(;t.has(n);)n=`${e}${r++}`;return t.add(n),n}function Fe(e,t,n,r,o,s,i){let a=(n.parameters??[]).map(w=>ye(v(s,w),`paths.${t}.${e}.parameters`,s)),c=new Set,u=[];for(let w of a)c.add(`${w.in}:${w.name}`),u.push(w);for(let w of o)c.has(`${w.in}:${w.name}`)||u.push(w);let d=u.filter(w=>w.in==="path"),f=u.filter(w=>w.in==="query"),m=u.filter(w=>w.in==="header"),l=u.filter(w=>w.in==="cookie"),h=n.requestBody?He(v(s,n.requestBody),`${e} ${t}`,s):void 0,{successResponses:p,successResponseHeaders:g}=Je(n,t,s),P=Ve(n,t,s),j=Ce(n,s,i),F=n["x-redoclyPagination"],X=Xe(p);return{name:r,method:e,path:t,summary:n.summary,description:n.description,pathParams:d,queryParams:f,headerParams:m,cookieParams:l,requestBody:h,successResponses:p,...g===void 0?{}:{successResponseHeaders:g},errorResponses:P,security:j,tags:Array.isArray(n.tags)?n.tags.filter(w=>typeof w=="string"):[],...F!==void 0?{paginationExtension:F}:{},...X===void 0?{}:{sse:X}}}function Xe(e){let t=e.find(o=>o.contentType.split(";")[0].trim().toLowerCase()==="text/event-stream");if(t===void 0)return;let n=t.itemSchema&&t.itemSchema.kind!=="unknown"?t.itemSchema:t.schema.kind!=="unknown"?t.schema:void 0;if(n===void 0)return{dataKind:"text"};let r=n.kind==="object"||n.kind==="ref"||n.kind==="array"||n.kind==="record"||n.kind==="union"||n.kind==="intersection";return{eventSchema:n,dataKind:r?"json":"text"}}function ye(e,t,n){if(!e.in)throw new y(`Parameter ${e.name} at ${t} is missing "in"`);if(!["path","query","header","cookie"].includes(e.in))throw new y(`Unsupported parameter location "${e.in}" for ${e.name} at ${t}`);let r=O(e.schema,`${t}.${e.name}`,n);e.deprecated===!0&&(r={...r,metadata:z(r.metadata,{deprecated:!0})});let o={name:e.name,in:e.in,schema:r,required:!!e.required,description:e.description};if(o.in==="query"){let s=e;(s.style==="form"||s.style==="spaceDelimited"||s.style==="pipeDelimited"||s.style==="deepObject")&&(o.style=s.style),typeof s.explode=="boolean"&&(o.explode=s.explode),typeof s.allowReserved=="boolean"&&(o.allowReserved=s.allowReserved)}return o}function He(e,t,n){let r=e.content??{},o=r["application/json"]??r["application/merge-patch+json"]??r["application/x-www-form-urlencoded"]??r["multipart/form-data"]??Object.values(r)[0];if(!o)return;let s=Object.keys(r).find(a=>r[a]===o),i=O(o.schema,`${t}.requestBody`,n);return{contentType:s,schema:i,required:!!e.required,description:e.description}}function Je(e,t,n){let r=e.responses??{},o=Object.keys(r).filter(m=>/^2\d\d$/.test(m));o.length===0&&(r["2XX"]?o.push("2XX"):r.default&&o.push("default"));let s=o[0];if(!s)return{successResponses:[]};let i=r[s];if(!i)return{successResponses:[]};let a=v(n,i),c=We(a.headers,`paths.${t}.response.${s}`,n),u=a.content;if(!u)return{successResponses:[],...c===void 0?{}:{successResponseHeaders:c}};let d=s==="default"||s==="2XX"?s:Number(s),f=[];for(let[m,l]of Object.entries(u)){let h=O(l.schema,`paths.${t}.response.${s}.${m}`,n),p=l.itemSchema,g=p!==void 0?O(p,`paths.${t}.response.${s}.${m}.itemSchema`,n):void 0;f.push({contentType:m,schema:h,status:d,...g===void 0?{}:{itemSchema:g}})}return{successResponses:f,...c===void 0?{}:{successResponseHeaders:c}}}function We(e,t,n){if(!e)return;let r=[];for(let[o,s]of Object.entries(e)){let i=v(n,s),a={name:o.toLowerCase(),schema:O(i.schema===void 0?void 0:v(n,i.schema),`${t}.headers.${o}`,n)};i.required===!0&&(a.required=!0),r.push(a)}return r.length>0?r:void 0}function Ve(e,t,n){let r=e.responses??{},o=Object.keys(r).filter(a=>/^([45]\d\d|4XX|5XX)$/.test(a));Object.keys(r).some(a=>/^(2\d\d|2XX)$/.test(a))&&r.default&&o.push("default");let i=[];for(let a of o){let c=r[a];if(!c)continue;let d=v(n,c).content;if(!d)continue;let f=a==="default"||a==="4XX"||a==="5XX"?a:Number(a);for(let[m,l]of Object.entries(d)){let h=O(l.schema,`paths.${t}.response.${a}.${m}`,n);i.push({contentType:m,schema:h,status:f})}}return i}function O(e,t,n){return e===void 0||typeof e=="boolean"?{kind:"unknown"}:S(e)?{kind:"ref",name:N(e.$ref)}:q(e,t,n)}function q(e,t,n){let r=Me(e),o=e.oneOf??e.anyOf;if(o){let a=o.map((d,f)=>S(d)?{kind:"ref",name:N(d.$ref)}:q(d,`${t}.[${f}]`,n)),c=Ee(a);if(c.length===1&&c.length<a.length){let d=c[0];return{...d,description:d.description??e.description,metadata:z(r,d.metadata)}}let u=Ie(e,o);return k({kind:"union",members:c,discriminator:u,description:e.description},r)}if(e.allOf){let a=e.allOf.map((u,d)=>S(u)?{kind:"ref",name:N(u.$ref)}:q(u,`${t}.allOf[${d}]`,n)),c=le(e,t,n);if(c.length>0&&a.unshift({kind:"object",properties:c}),a.length===1){let u=a[0];return{...u,description:u.description??e.description,metadata:z(r,u.metadata)}}return k({kind:"intersection",members:a,description:e.description},r)}let s=e.type;if(Array.isArray(s)){let a=s.filter(d=>d!=="null"),c=s.includes("null"),u=a.map(d=>{let f={...e,type:d};if(Array.isArray(f.enum)){let m=f.enum.filter(l=>l!==null);f.enum=m.length>0?m:void 0}return q(f,t,n)});return c&&u.push({kind:"null"}),u.length===1?u[0]:k({kind:"union",members:u,description:e.description},r)}if(e.nullable)return{kind:"union",members:[q({...e,nullable:void 0},t,n),{kind:"null"}],description:e.description};if(e.const!==void 0){let a=e.const;if(typeof a!="string"&&typeof a!="number"&&typeof a!="boolean")throw new y(`Unsupported const value at ${t}: ${JSON.stringify(a)}`);return k({kind:"literal",value:a,description:e.description},r)}if(e.enum){let a=e.enum,c=a.filter(m=>m!==null),u=c.length!==a.length;if(c.length===0)return k({kind:"null",description:e.description},r);let d=Qe(c,t),f=d==="boolean"?{kind:"scalar",scalar:"boolean",description:e.description}:{kind:"enum",values:c,scalar:d,description:e.description};return k(u?{kind:"union",members:[f,{kind:"null"}],description:e.description}:f,r)}let i=s;if(i==="null")return k({kind:"null",description:e.description},r);if(i==="array"){let a=e.items,c=O(a,`${t}.items`,n);return k({kind:"array",items:c,description:e.description},r)}if(i==="object"||e.properties||e.additionalProperties){let a=le(e,t,n),c=e.additionalProperties;if(a.length===0&&c!==!1){let u=O(c,`${t}.additionalProperties`,n);return k({kind:"record",value:u,description:e.description},r)}return k({kind:"object",properties:a,description:e.description},r)}return k(i==="string"||i==="number"||i==="integer"||i==="boolean"?{kind:"scalar",scalar:i,description:e.description}:{kind:"unknown",description:e.description},r)}function Qe(e,t){let n=!1,r=!1,o=!1;for(let s of e)if(typeof s=="string")n=!0;else if(typeof s=="number")r=!0;else if(typeof s=="boolean")o=!0;else throw new y(`Unsupported enum value type at ${t}: ${JSON.stringify(s)}`);return n&&!r&&!o?"string":r&&!n&&!o?"number":o&&!n&&!r?"boolean":"string"}function Ye(e){return!(e.openapi??"").startsWith("3.0")}function le(e,t,n){let r=e.properties??{},o=new Set(e.required??[]),s=Ye(n);return Object.entries(r).map(([i,a])=>{let c=a.readOnly===!0;c&&S(a)&&!s&&b.warn(`generate-client: "${i}" declares readOnly beside a $ref, which OpenAPI ${n.openapi} ignores \u2014 the property stays in request bodies. Inline the schema, wrap the $ref in allOf, or move the description to OpenAPI 3.1.
15
+ `);let u=c&&(s||!S(a));return{name:i,schema:O(a,`${t}.${i}`,n),required:o.has(i),description:a.description,...u?{readOnly:!0}:{}}})}function ge(e){let t=K(e),n={...t};delete n.swagger,delete n.host,delete n.basePath,delete n.schemes,delete n.definitions,delete n.securityDefinitions,delete n.consumes,delete n.produces,delete n.parameters,delete n.responses,n.openapi="3.0.3";let r=Ze(t);return r&&(n.servers=r),n.components=et(t),n.paths=ot(t.paths??{},t.consumes??void 0,t.produces??void 0),n}function Ze(e){let t=e.host,n=e.basePath??"",r=(e.schemes??["https"])[0]??"https";if(t)return[{url:`${r}://${t}${n}`}]}function et(e){let t={};e.definitions&&(t.schemas=e.definitions),e.parameters&&(t.parameters=Object.fromEntries(Object.entries(e.parameters).map(([r,o])=>[r,_(o)]))),e.responses&&(t.responses=be(e.responses,void 0));let n=e.securityDefinitions;if(n){let r={};for(let[o,s]of Object.entries(n))r[o]=tt(s);t.securitySchemes=r}return t}function tt(e){switch(e.type){case"basic":return{type:"http",scheme:"basic"};case"apiKey":return{type:"apiKey",name:e.name,in:e.in};case"oauth2":{let t=e.flow==="accessCode"?"authorizationCode":e.flow==="application"?"clientCredentials":e.flow,n={scopes:e.scopes??{}};return e.authorizationUrl&&(n.authorizationUrl=e.authorizationUrl),e.tokenUrl&&(n.tokenUrl=e.tokenUrl),{type:"oauth2",flows:{[t]:n}}}default:return e}}function K(e){if(Array.isArray(e))return e.map(K);if(x(e)){let t={};for(let[n,r]of Object.entries(e))n==="$ref"&&typeof r=="string"?t.$ref=r.replace("#/definitions/","#/components/schemas/").replace("#/parameters/","#/components/parameters/").replace("#/responses/","#/components/responses/"):t[n]=K(r);return t}return e}var nt="application/json",rt="application/json",we=new Set(["name","in","required","description","deprecated","allowEmptyValue","collectionFormat"]);function ot(e,t,n){let r={};for(let[o,s]of Object.entries(e)){let i=s,a={};for(let[c,u]of Object.entries(i)){if(c==="parameters"&&Array.isArray(u)){a.parameters=u.map(_);continue}if(!st(c)){a[c]=u;continue}a[c]=it(u,t,n)}r[o]=a}return r}function st(e){return["get","put","post","delete","options","head","patch"].includes(e.toLowerCase())}function it(e,t,n){let r=e.consumes??t,o=e.produces??n,s=e.parameters??[],i=s.find(f=>f.in==="body"),a=s.filter(f=>f.in==="formData"),c=s.filter(f=>f.in!=="body"&&f.in!=="formData").map(_),u={...e,parameters:c};delete u.consumes,delete u.produces;let d=r?.[0]??nt;if(i)u.requestBody={required:!!i.required,content:{[d]:{schema:i.schema}}};else if(a.length>0){let f={},m=[];for(let p of a)f[p.name]=at(p),p.required&&m.push(p.name);let l={type:"object",properties:f};m.length>0&&(l.required=m);let h=r?.find(p=>p==="multipart/form-data")??r?.[0]??"application/x-www-form-urlencoded";u.requestBody={required:m.length>0,content:{[h]:{schema:l}}}}return e.responses&&(u.responses=be(e.responses,o)),u}function _(e){if(e.$ref!==void 0||e.in==="body"||e.in==="formData")return e;let t={},n={};for(let[r,o]of Object.entries(e))we.has(r)?t[r]=o:n[r]=o;if(t.schema=n,delete t.collectionFormat,e.in==="query"&&n.type==="array"){let r=e.collectionFormat??"csv";r!=="multi"&&(t.style=r==="ssv"?"spaceDelimited":r==="pipes"?"pipeDelimited":"form",t.explode=!1)}return t}function at(e){let t={};for(let[n,r]of Object.entries(e))we.has(n)||(t[n]=r);return t}function be(e,t){let n=t?.[0]??rt,r={};for(let[o,s]of Object.entries(e)){let i=s;if(i.schema===void 0){r[o]=i;continue}let{schema:a,...c}=i;r[o]={...c,content:{[n]:{schema:a}}}}return r}async function $e(e,t,n){let r=t??await T({}),o=await Y({ref:e,config:r,collectSpecData:n}),s=await T({rules:{struct:"error"}}),i=await Z({externalRefResolver:new V,document:o.bundle,config:s}),a=[...o.problems,...i].filter(u=>u.severity==="error");if(a.length>0){let u=a.map(d=>`- ${d.message} (at ${d.location?.[0]?.pointer??e})`).join(`
16
+ `);throw new Error(`The API description has ${a.length} error(s):
17
+ ${u}`)}let c=o.bundle.parsed;return{document:c,version:Q(c)}}var lt=["Generated by @redocly/client-generator \u2014 do not edit by hand.","Source: OpenAPI description. Re-run `redocly generate-client` to update."];function mt(e,t){let n=[],r=new Set,o=R(ke(t.outputPath)),{dir:s,name:i,ext:a}=ft(t.outputPath),c={path:t.outputPath,dir:s,stem:i,ext:a},u=lt,d=!1;for(let f of t.generators){let m=t.registry.get(f),l={model:e,output:c,banner:u,outputMode:t.outputMode,emit:t.emit,pagination:t.pagination,selected:t.generators,options:t.generatorOptions?.get(f)??{}},h;try{t.emit.docs===!0&&m.docs!==void 0?(h=[...m.run(l),...m.docs(l)],d=!0):h=m.run(l)}catch(p){let g=p instanceof Error?p.message:String(p);throw new Error(`Generator "${f}" failed: ${g}`)}if(!Array.isArray(h)||h.some(p=>typeof p?.path!="string"||p.path===""||typeof p.content!="string"))throw new Error(`Generator "${f}" failed: run() must return an array of { path, content } files.`);for(let p of h){let g=R(o,p.path);if(g!==o&&!g.startsWith(o+pt))throw new Error(`Generator "${f}" failed: file path escapes the output directory: ${p.path}`);if(r.has(g))throw new Error(`Generator conflict: ${p.path} already emitted by an earlier generator`);r.add(g),n.push({path:g,content:p.content})}}return t.emit.docs===!0&&!d&&b.warn(`generate-client: docs is on, but no selected generator writes documentation (${t.generators.join(", ")}).
18
+ `),n}function ht(e){for(let t of e.services)for(let n of t.operations){let r=new Set,o=new Set;for(let s of[...n.pathParams,...n.queryParams,...n.headerParams,...n.cookieParams])r.has(s.name)&&o.add(s.name),r.add(s.name);o.size!==0&&b.warn(`generate-client: operation "${n.specName??n.name}" uses ${[...o].map(s=>`"${s}"`).join(", ")} in more than one parameter location. Every SDK sends both, and the SDKs whose methods take one argument per parameter give the later one a suffixed name \u2014 rename it in the description to choose the name yourself.
19
+ `)}}function yt(e,t,n,r,o,s,i){let a=[],c=new Set;for(let u of ee(t.services)){let d=gt(e,u.path,u.method);if(c.has(d))continue;c.add(d);let f=r.map(m=>o.get(m)?.sample?.(u,{model:t,emit:n,outputPath:s,pagination:i})).filter(m=>m!==void 0);f.length>0&&a.push({target:d,update:{"x-codeSamples":f}})}if(a.length!==0)return W({overlay:"1.0.0",info:{title:`Code samples for ${t.title}`,version:t.version},actions:a})}function gt(e,t,n){let r=i=>`['${i.replaceAll("\\","\\\\").replaceAll("'","\\'")}']`,o=e.paths?.[t];return`${S(o)&&o.$ref.startsWith("#/")?"$"+o.$ref.slice(2).split("/").map(H).map(r).join(""):`$.paths${r(t)}`}.${n}`}async function nn(e){if(e.output.split(/[\\/]/).some(p=>p==="undefined"||p==="null"))throw new Error(`output path "${e.output}" contains a literal "undefined" or "null" segment \u2014 this looks like an interpolation bug in the caller`);if(e.setup&&/^[a-z][a-z0-9+.-]+:/i.test(e.setup))throw new y(`setup must be a local file path \u2014 remote setup modules are not supported (got: ${e.setup})`);let t=R(e.output),{document:n,version:r}=await $e(e.api,e.config,e.collectSpecData),o=r==="oas2"?ge(n):n,s=he(o);ht(s);let i;if(e.setup){let{bakeSetup:p}=await import("./CQMMUWIJ.js"),g=R(e.configDir??process.cwd(),e.setup);i=p(await ut(g,"utf-8"))}let a=e.generators?.length?e.generators:["typescript"],{selected:c,registry:u}=await ae(a,{customGenerators:e.customGenerators,configDir:e.configDir}),d=te(s,e.pagination),f={serverUrl:e.serverUrl,argsStyle:e.argsStyle,errorMode:e.errorMode,dateType:e.dateType,mockData:e.mockData,mockSeed:e.mockSeed,queryKeyPrefix:e.queryKeyPrefix,telemetry:e.telemetry,setup:i,runtime:e.runtime,importExt:e.importExt,goPackage:e.goPackage,pagination:d,docs:e.docs,docsFrontmatter:e.docsFrontmatter};oe(c,f,u,e.outputMode);let m=se(c,u,e.options),l=mt(s,{outputPath:t,outputMode:e.outputMode??"single",emit:f,pagination:d,generators:c,generatorOptions:m,registry:u});if(e.codeSamples===!0){let p=yt(n,s,f,c,u,t,d);p!==void 0&&l.push({path:t.replace(/\.[^.]+$/,".code-samples.yaml"),content:p})}let h=[];for(let p of l)await ct(ke(p.path),{recursive:!0}),await dt(p.path,p.content,"utf-8"),h.push({path:p.path,bytes:Buffer.byteLength(p.content,"utf-8")});return{outputPath:t,bytes:h.reduce((p,g)=>p+g.bytes,0),files:h}}export{I as a,oe as b,mt as c,nn as d};
@@ -4,7 +4,7 @@ import { dirname as __pathDirname } from 'node:path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  var __filename = __fileURLToPath(import.meta.url);
6
6
  var __dirname = __pathDirname(__filename);
7
- import{b as W}from"./HAOBCQWB.js";import{b as E,c as I,d as L,e as F,f as ne,g as te,h as re,i as ie,j as se}from"./2UTBQZM6.js";import{a as X,c as R,d as p,e as S,f as N,g as T,h as B,i as Z,j,k as D,l as O,n as ee}from"./UW4UC7ZI.js";var U=R.php,w=class extends X{constructor(){super(" ")}typeName(n){return p(n,{style:"pascal",reserved:U})}memberName(n){return p(n,{style:"camel",reserved:U})}identifier(n){return p(n,{style:"camel",reserved:U})}identifiers(n,s){return S(n,{style:"camel",reserved:U,taken:s})}string(n){return`'${n.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`}literal(n){return n==null?"null":typeof n=="boolean"||typeof n=="number"?String(n):typeof n=="string"?this.string(n):Array.isArray(n)?`[${n.map(i=>this.literal(i)).join(", ")}]`:`[${Object.entries(n).map(([i,r])=>`${this.string(i)} => ${this.literal(r)}`).join(", ")}]`}comment(n){for(let s of O(n))this.line(s===""?"//":`// ${s}`);return this}doc(n,s,i=[]){let r=O(s);if(r.length===0&&i.length===0)return this;let t=r.length===0?n:`${n} \u2014 ${r.join(" ")}`;if(i.length===0)return this.line(`/** ${t} */`);this.line("/**"),this.line(` * ${t}`),this.line(" *");for(let a of i)this.line(` * ${a}`);return this.line(" */")}};var h=R.php,G=new w;function g(e){return G.typeName(e)}function k(e){return G.memberName(e)}function o(e){return G.string(e)}function ae(e){return p(e.name,{style:"camel",reserved:h})}function K(e){let n=e.services.flatMap(i=>i.operations),s=S(n.map(i=>i.name),{style:"camel",reserved:h});return new Map(n.map((i,r)=>[i.name,s[r]]))}function he(e){return te(e).map(s=>s.kind==="literal"?o(s.value):`$${k(s.name)}`).join(" . ")}function oe(e,n){let s=n.servers??[];if(s.length===0)return;let i=new Set;e.line("/** The declared servers; variables default to the values from the description. */"),e.line("final class Servers"),e.block("{",()=>{s.forEach((r,t)=>{let a=p(r.description??`server${t+1}`,{style:"camel",reserved:h});i.has(a)&&(a=`${a}${t+1}`),i.add(a);let c=r.variables.map(l=>`string $${k(l.name)} = ${o(l.default)}`);t>0&&e.blank(),e.line(`public static function ${a}(${c.join(", ")}): string`),e.block("{",()=>{e.line(`return ${he(r)};`)},"}")})},"}"),e.blank()}function ce(e,n){let s=re(e,n).map(i=>`[${i.map(t=>t.kind==="apiKey"?`['kind' => 'apiKey', 'scheme' => ${o(t.scheme)}, 'name' => ${o(t.name)}, 'in' => ${o(t.in)}]`:`['kind' => ${o(t.kind)}, 'scheme' => ${o(t.scheme)}]`).join(", ")}]`);if(s.length!==0)return`[${s.join(", ")}]`}function le(e){return`[${[`'style' => ${o(e.style)}`,...e.param!==void 0?[`'param' => ${o(e.param)}`]:[],...e.nextCursor!==void 0?[`'nextCursor' => ${o(e.nextCursor)}`]:[],...e.hasMore!==void 0?[`'hasMore' => ${o(e.hasMore)}`]:[],...e.nextLink!==void 0?[`'nextLink' => ${o(e.nextLink)}`]:[],...e.limitParam!==void 0?[`'limitParam' => ${o(e.limitParam)}`]:[],...e.items!==void 0?[`'items' => ${o(e.items)}`]:[]].join(", ")}]`}function ue(e,n){let s=new Set;return`[${(e.successResponseHeaders??[]).map(r=>{let t=p(r.name,{style:"camel",reserved:h}),a=2;for(;s.has(t);)t=`${p(r.name,{style:"camel",reserved:h})}_${a++}`;s.add(t);let c=ee(r.schema,n);return`[${o(r.name)}, ${o(t)}, ${o(c)}]`}).join(", ")}]`}function _(e,n){let s=n.schemas.find(t=>t.name===e);if(s===void 0)return"other";let i=s.schema,r=D(i);return r!==void 0&&(r.scalar==="string"||r.scalar==="integer")?"enum":(i.kind==="object"||i.kind==="intersection")&&T(i,n)!==void 0?"class":"other"}function m(e,n,s="string"){if(Z(e)){let i=m(j(e),n,s);return A(i)}switch(e.kind){case"scalar":return s==="Date"&&e.scalar==="string"&&J(e)?"\\DateTimeImmutable":{string:"string",integer:"int",number:"float",boolean:"bool"}[e.scalar];case"array":case"record":return"array";case"ref":{let i=_(e.name,n);if(i==="class"||i==="enum")return g(e.name);let r=N(e,n);return r===void 0?"mixed":m(r,n,s)}case"enum":return{string:"string",integer:"int",number:"float",boolean:"bool"}[e.scalar];case"literal":return typeof e.value=="string"?"string":typeof e.value=="boolean"?"bool":"float";case"omit":return g(e.base);case"union":return ye(e.members,n,s);case"null":case"object":case"intersection":case"unknown":return"mixed"}}function J(e){let n=e.metadata?.format;return n==="date"||n==="date-time"}function A(e){return e==="mixed"||e.startsWith("?")||e.endsWith("|null")?e:e.includes("|")?`${e}|null`:`?${e}`}function ye(e,n,s){let i=[];for(let r of e){if(r.kind==="null")continue;let t=m(r,n,s);if(t==="mixed")return"mixed";let a=t.startsWith("?")?t.slice(1):t;i.includes(a)||i.push(a),t.startsWith("?")&&!i.includes("null")&&i.push("null")}return i.length===0?"mixed":i.join("|")}function V(e,n,s){if(e===void 0)return;let i=j(e);if(i.kind==="ref"){let t=N(i,n);return _(i.name,n)==="other"?V(t,n,s):void 0}if(i.kind!=="array")return;let r=m(i.items,n,s);return r==="mixed"?void 0:r}function $e(e,n){let s=n.schemas.find(i=>i.name===e);return s!==void 0&&B(s.schema,n)!==void 0}function P(e,n,s,i){let r=j(e);if(i==="Date"&&r.kind==="scalar"&&r.scalar==="string"&&J(r))return`new \\DateTimeImmutable(${n})`;if(r.kind==="omit")return P({kind:"ref",name:r.base},n,s,i);if(r.kind==="ref"){let t=_(r.name,s);if(t==="class")return`${g(r.name)}::fromArray(${n})`;if(t==="enum")return`${g(r.name)}::from(${n})`;if($e(r.name,s))return`unmarshal${g(r.name)}(${n})`;let a=N(r,s);return a===void 0?void 0:P(a,n,s,i)}if(r.kind==="array"){let t=P(r.items,"$item",s,i);return t===void 0?void 0:`array_map(static fn ($item) => ${t}, ${n})`}if(r.kind==="record"){let t=P(r.value,"$item",s,i);return t===void 0?void 0:`array_map(static fn ($item) => ${t}, ${n})`}}function x(e,n,s,i="string"){let r=j(e);if(i==="Date"&&r.kind==="scalar"&&r.scalar==="string"){if(r.metadata?.format==="date")return`${n}->format('Y-m-d')`;if(r.metadata?.format==="date-time")return`${n}->format(\\DateTimeInterface::ATOM)`}if(r.kind==="omit")return x({kind:"ref",name:r.base},n,s,i);if(r.kind==="ref"){let t=_(r.name,s);if(t==="class")return`${n}->toArray()`;if(t==="enum")return`${n}->value`;if($e(r.name,s))return`is_object(${n}) ? ${n}->toArray() : ${n}`;let a=N(r,s);return a===void 0?void 0:x(a,n,s,i)}if(r.kind==="array"||r.kind==="record"){let t=r.kind==="array"?r.items:r.value,a=x(t,"$item",s,i);return a===void 0?void 0:`array_map(static fn ($item) => ${a}, ${n})`}}function ge(e,n,s,i,r,t){let a=[...s.filter(c=>c.required),...s.filter(c=>!c.required)];e.doc(g(n),t),e.line(`final class ${g(n)}`),e.block("{",()=>{e.block("public function __construct(",()=>{for(let c of a){let l=m(c.schema,i,r);if(c.required)e.line(`public ${l} $${k(c.name)},`);else{let u=A(l);e.line(`public ${u} $${k(c.name)} = null,`)}}},") {"),e.line("}"),e.blank(),e.line("public static function fromArray(array $data): self"),e.block("{",()=>{e.block("return new self(",()=>{for(let c of a){let l=`$data[${o(c.name)}]`,u=P(c.schema,l,i,r),d=k(c.name);c.required?e.line(`${d}: ${u??l},`):u===void 0?e.line(`${d}: ${l} ?? null,`):e.line(`${d}: isset(${l}) ? ${u} : null,`)}},");")},"}"),e.blank(),e.line("public function toArray(): array"),e.block("{",()=>{e.line("$data = [];");for(let c of a){let l=`$this->${k(c.name)}`,u=x(c.schema,l,i,r)??l;c.required?e.line(`$data[${o(c.name)}] = ${u};`):e.block(`if (${l} !== null) {`,()=>{e.line(`$data[${o(c.name)}] = ${u};`)},"}")}e.line("return $data;")},"}")},"}"),e.blank()}function z(e,n="string"){let s=new w;for(let{name:i,schema:r}of e.schemas){let t=D(r);if(t!==void 0&&(t.scalar==="string"||t.scalar==="integer")){let c=t.scalar==="string"?"string":"int";s.doc(g(i),r.description),s.line(`enum ${g(i)}: ${c}`),s.block("{",()=>{let l=S(t.values.map(u=>String(u)),{style:"pascal",reserved:h});t.values.forEach((u,d)=>{let y=typeof u=="string"?o(u):String(u);s.line(`case ${l[d]} = ${y};`)})},"}"),s.blank();continue}if(r.kind==="object"||r.kind==="intersection"){let c=T(r,e);if(c!==void 0){ge(s,i,c.properties,e,n,c.description??r.description);continue}}let a=B(r,e);if(a!==void 0){let c=g(i),l=a.cases.map(u=>`${u.value} -> ${g(u.schemaName)}`).join(", ");s.line(`/** ${c} is a discriminated union (${o(a.property)}): ${l}. */`),s.line(`function unmarshal${c}(array $data): mixed`),s.block("{",()=>{s.block(`return match ($data[${o(a.property)}] ?? null) {`,()=>{for(let u of a.cases){let d={kind:"ref",name:u.schemaName},y=P(d,"$data",e,n)??"$data";s.line(`${o(u.value)} => ${y},`)}s.line("default => $data,")},"};")},"}"),s.blank();continue}}return s.toString()}var de=new Set(["post","put","patch"]),be=["body","headers","idempotencyKey"];function fe(e){return F(e)||e.requestBody!==void 0&&ne(e.requestBody.contentType)}function Q(e,n,s,i){let r=S([...e.pathParams,...e.queryParams].map(l=>l.name),{style:"camel",reserved:h,taken:be}),t=e.pathParams.map((l,u)=>({php:r[u],wire:l.name,type:m(l.schema,n,i)})),a=e.queryParams.map((l,u)=>{let d=r[e.pathParams.length+u];return{php:d,wire:l.name,type:m(l.schema,n,i),value:x(l.schema,`$${d}`,n,i)??`$${d}`}}),c=[...t.map(({php:l,type:u})=>`${u} $${l}`),...s&&e.requestBody?[`${fe(e)?"mixed":L(e)?"array":m(e.requestBody.schema,n,i)} $body`]:[],...a.map(({php:l,type:u})=>`${A(u)} $${l} = null`),"?array $headers = null",...s&&de.has(e.method.toLowerCase())?["?string $idempotencyKey = null"]:[]];return{pathArgs:t,queryArgs:a,signature:c}}function ke(e,n,s){e.line(`$op = self::OPERATIONS[${o(n.specName??n.name)}];`),e.line("[$authHeaders, $query, $cookies] = resolveAuth($op['security'] ?? [], $this->config->auth);");for(let{php:r,wire:t,value:a}of s.queryArgs)e.block(`if ($${r} !== null) {`,()=>{e.line(`$query[${o(t)}] = ${a};`)},"}");let i=s.pathArgs.map(({php:r,wire:t})=>`${o(t)} => $${r}`).join(", ");e.line(`$url = buildUrl($this->config->serverUrl, $op['path'], [${i}]);`),e.line("$requestHeaders = array_merge($authHeaders, $headers ?? []);"),e.block("if ($cookies !== []) {",()=>{e.line("$requestHeaders['Cookie'] = implode('; ', $cookies);")},"}")}function Y(e,n,s,i,r,t=!1){let a=Q(n,i,!0,r),c=I(n),l=E(n),u=c===void 0&&l===void 0&&n.successResponses.some(b=>b.contentType!==""),d=t?"Envelope":c!==void 0?"\\Generator":l!==void 0?m(l,i,r):u?"string":"void",y=t?`${s}WithHeaders`:s,H=t?void 0:V(l,i,r);e.doc(y,t?`Like ${s}(), returning an Envelope with the declared response headers.`:n.summary??`${n.method.toUpperCase()} ${n.path}`,H===void 0?[]:[`@return ${H}[]`]),e.line(`public function ${y}(${a.signature.join(", ")}): ${d}`),e.block("{",()=>{if(ke(e,n,a),c!==void 0){let f=c.schema!==void 0&&c.schema.kind!=="unknown";e.line("$url = appendQuery($url, $query);"),e.block("$open = function (array $extraHeaders) use ($url, $requestHeaders): \\CurlHandle {",()=>{e.line("$handle = curl_init($url);"),e.line("$lines = [];"),e.block("foreach (array_merge($requestHeaders, $extraHeaders) as $name => $value) {",()=>{e.line("$lines[] = $name . ': ' . $value;")},"}"),e.line("curl_setopt($handle, CURLOPT_HTTPHEADER, $lines);"),e.line("return $handle;")},"};"),e.line(`yield from iterSse($open, ${f?"true":"false"});`);return}let b=["'operationId' => $op['id']","'method' => $op['method']","'url' => $url","'headers' => $requestHeaders","'query' => $query"];if(F(n))e.line("[$contentType, $encoded] = multipartBody($body);"),b.push("'body' => $encoded","'contentType' => $contentType");else if(n.requestBody&&fe(n))b.push("'body' => binaryBody($body)",`'contentType' => ${o(n.requestBody.contentType)}`);else if(n.requestBody&&L(n))e.line("[$contentType, $encoded] = toMultipart($body);"),b.push("'body' => $encoded","'contentType' => $contentType");else if(n.requestBody){let f=x(n.requestBody.schema,"$body",i,r)??"$body";e.line(`$payload = json_encode(${f});`),b.push("'body' => $payload",`'contentType' => ${o(n.requestBody.contentType)}`)}de.has(n.method.toLowerCase())&&n.requestBody&&b.push("'idempotencyKey' => $idempotencyKey"),e.line(`$response = send($this->config, [${b.join(", ")}]);`),e.block("if ($response['status'] >= 400) {",()=>{e.line("throw apiErrorFrom($response);")},"}");let $=u?"$response['body']":(l===void 0?void 0:P(l,"decodeJson($response)",i,r))??"decodeJson($response)";if(t){e.line(`$data = ${$};`),e.line(`return new Envelope(data: $data, headers: readEnvelopeHeaders($response, ${ue(n,i)}), status: $response['status']);`);return}if(u){e.line("return $response['body'];");return}if(d==="void"){e.line("decodeJson($response);");return}e.line(`return ${$};`)},"}"),e.blank()}function me(e,n,s,i,r,t,a,c,l){let u=Q(n,i,!1,r),d=s,y=()=>{e.line(`$op = self::OPERATIONS[${o(n.specName??n.name)}];`),e.line("$base = [];");for(let{php:f,wire:q,value:v}of u.queryArgs)e.block(`if ($${f} !== null) {`,()=>{e.line(`$base[${o(q)}] = ${v};`)},"}");let $=u.pathArgs.map(({php:f,wire:q})=>`${o(q)} => $${f}`).join(", ");e.block("$call = function (array $params) use ($op, $headers): array {",()=>{e.line("[$authHeaders, $authQuery, $cookies] = resolveAuth($op['security'] ?? [], $this->config->auth);"),e.line(`$url = buildUrl($this->config->serverUrl, $op['path'], [${$}]);`),e.line("$requestHeaders = array_merge($authHeaders, $headers ?? []);"),e.block("if ($cookies !== []) {",()=>{e.line("$requestHeaders['Cookie'] = implode('; ', $cookies);")},"}"),e.line("$response = send($this->config, ['operationId' => $op['id'], 'method' => $op['method'], 'url' => $url, 'headers' => $requestHeaders, 'query' => array_merge($params, $authQuery)]);"),e.block("if ($response['status'] >= 400) {",()=>{e.line("throw apiErrorFrom($response);")},"}"),e.line("return [decodeJson($response), $response];")},"};")},H=m(E(n)??{kind:"unknown"},i,r),b=H==="mixed"?"mixed":H;e.line("/**"),e.line(` * ${d} response pages, following the pagination rule automatically.`),e.line(" *"),e.line(` * @return \\Generator<int, ${b}>`),e.line(" */"),e.line(`public function ${d}Pages(${u.signature.join(", ")}): \\Generator`),e.block("{",()=>{y(),e.block("foreach (iterPages($call, $op['pagination'], $base) as $page) {",()=>{e.line(`yield ${t??"$page"};`)},"}")},"}"),e.blank(),e.line("/**"),e.line(` * The items of every ${d} page.`),e.line(" *"),e.line(` * @return \\Generator<int, ${l}>`),e.line(" */"),e.line(`public function ${d}Items(${u.signature.join(", ")}): \\Generator`),e.block("{",()=>{y(),e.block("foreach (iterPages($call, $op['pagination'], $base) as $page) {",()=>{e.line(`$items = resolvePointer($page, ${o(c??"")});`),e.block("foreach (is_array($items) ? $items : [] as $item) {",()=>{e.line(`yield ${a??"$item"};`)},"}")},"}")},"}"),e.blank()}function Pe(e){let n=e.split(`
7
+ import{b as W}from"./HAOBCQWB.js";import{b as E,c as I,d as L,e as F,f as ne,g as te,h as re,i as ie,j as se}from"./HAXO2HAY.js";import{a as X,c as R,d as p,e as S,f as N,g as T,h as B,i as Z,j,k as D,l as O,n as ee}from"./UW4UC7ZI.js";var U=R.php,w=class extends X{constructor(){super(" ")}typeName(n){return p(n,{style:"pascal",reserved:U})}memberName(n){return p(n,{style:"camel",reserved:U})}identifier(n){return p(n,{style:"camel",reserved:U})}identifiers(n,s){return S(n,{style:"camel",reserved:U,taken:s})}string(n){return`'${n.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`}literal(n){return n==null?"null":typeof n=="boolean"||typeof n=="number"?String(n):typeof n=="string"?this.string(n):Array.isArray(n)?`[${n.map(i=>this.literal(i)).join(", ")}]`:`[${Object.entries(n).map(([i,r])=>`${this.string(i)} => ${this.literal(r)}`).join(", ")}]`}comment(n){for(let s of O(n))this.line(s===""?"//":`// ${s}`);return this}doc(n,s,i=[]){let r=O(s);if(r.length===0&&i.length===0)return this;let t=r.length===0?n:`${n} \u2014 ${r.join(" ")}`;if(i.length===0)return this.line(`/** ${t} */`);this.line("/**"),this.line(` * ${t}`),this.line(" *");for(let a of i)this.line(` * ${a}`);return this.line(" */")}};var h=R.php,G=new w;function g(e){return G.typeName(e)}function k(e){return G.memberName(e)}function o(e){return G.string(e)}function ae(e){return p(e.name,{style:"camel",reserved:h})}function K(e){let n=e.services.flatMap(i=>i.operations),s=S(n.map(i=>i.name),{style:"camel",reserved:h});return new Map(n.map((i,r)=>[i.name,s[r]]))}function he(e){return te(e).map(s=>s.kind==="literal"?o(s.value):`$${k(s.name)}`).join(" . ")}function oe(e,n){let s=n.servers??[];if(s.length===0)return;let i=new Set;e.line("/** The declared servers; variables default to the values from the description. */"),e.line("final class Servers"),e.block("{",()=>{s.forEach((r,t)=>{let a=p(r.description??`server${t+1}`,{style:"camel",reserved:h});i.has(a)&&(a=`${a}${t+1}`),i.add(a);let c=r.variables.map(l=>`string $${k(l.name)} = ${o(l.default)}`);t>0&&e.blank(),e.line(`public static function ${a}(${c.join(", ")}): string`),e.block("{",()=>{e.line(`return ${he(r)};`)},"}")})},"}"),e.blank()}function ce(e,n){let s=re(e,n).map(i=>`[${i.map(t=>t.kind==="apiKey"?`['kind' => 'apiKey', 'scheme' => ${o(t.scheme)}, 'name' => ${o(t.name)}, 'in' => ${o(t.in)}]`:`['kind' => ${o(t.kind)}, 'scheme' => ${o(t.scheme)}]`).join(", ")}]`);if(s.length!==0)return`[${s.join(", ")}]`}function le(e){return`[${[`'style' => ${o(e.style)}`,...e.param!==void 0?[`'param' => ${o(e.param)}`]:[],...e.nextCursor!==void 0?[`'nextCursor' => ${o(e.nextCursor)}`]:[],...e.hasMore!==void 0?[`'hasMore' => ${o(e.hasMore)}`]:[],...e.nextLink!==void 0?[`'nextLink' => ${o(e.nextLink)}`]:[],...e.limitParam!==void 0?[`'limitParam' => ${o(e.limitParam)}`]:[],...e.items!==void 0?[`'items' => ${o(e.items)}`]:[]].join(", ")}]`}function ue(e,n){let s=new Set;return`[${(e.successResponseHeaders??[]).map(r=>{let t=p(r.name,{style:"camel",reserved:h}),a=2;for(;s.has(t);)t=`${p(r.name,{style:"camel",reserved:h})}_${a++}`;s.add(t);let c=ee(r.schema,n);return`[${o(r.name)}, ${o(t)}, ${o(c)}]`}).join(", ")}]`}function _(e,n){let s=n.schemas.find(t=>t.name===e);if(s===void 0)return"other";let i=s.schema,r=D(i);return r!==void 0&&(r.scalar==="string"||r.scalar==="integer")?"enum":(i.kind==="object"||i.kind==="intersection")&&T(i,n)!==void 0?"class":"other"}function m(e,n,s="string"){if(Z(e)){let i=m(j(e),n,s);return A(i)}switch(e.kind){case"scalar":return s==="Date"&&e.scalar==="string"&&J(e)?"\\DateTimeImmutable":{string:"string",integer:"int",number:"float",boolean:"bool"}[e.scalar];case"array":case"record":return"array";case"ref":{let i=_(e.name,n);if(i==="class"||i==="enum")return g(e.name);let r=N(e,n);return r===void 0?"mixed":m(r,n,s)}case"enum":return{string:"string",integer:"int",number:"float",boolean:"bool"}[e.scalar];case"literal":return typeof e.value=="string"?"string":typeof e.value=="boolean"?"bool":"float";case"omit":return g(e.base);case"union":return ye(e.members,n,s);case"null":case"object":case"intersection":case"unknown":return"mixed"}}function J(e){let n=e.metadata?.format;return n==="date"||n==="date-time"}function A(e){return e==="mixed"||e.startsWith("?")||e.endsWith("|null")?e:e.includes("|")?`${e}|null`:`?${e}`}function ye(e,n,s){let i=[];for(let r of e){if(r.kind==="null")continue;let t=m(r,n,s);if(t==="mixed")return"mixed";let a=t.startsWith("?")?t.slice(1):t;i.includes(a)||i.push(a),t.startsWith("?")&&!i.includes("null")&&i.push("null")}return i.length===0?"mixed":i.join("|")}function V(e,n,s){if(e===void 0)return;let i=j(e);if(i.kind==="ref"){let t=N(i,n);return _(i.name,n)==="other"?V(t,n,s):void 0}if(i.kind!=="array")return;let r=m(i.items,n,s);return r==="mixed"?void 0:r}function $e(e,n){let s=n.schemas.find(i=>i.name===e);return s!==void 0&&B(s.schema,n)!==void 0}function P(e,n,s,i){let r=j(e);if(i==="Date"&&r.kind==="scalar"&&r.scalar==="string"&&J(r))return`new \\DateTimeImmutable(${n})`;if(r.kind==="omit")return P({kind:"ref",name:r.base},n,s,i);if(r.kind==="ref"){let t=_(r.name,s);if(t==="class")return`${g(r.name)}::fromArray(${n})`;if(t==="enum")return`${g(r.name)}::from(${n})`;if($e(r.name,s))return`unmarshal${g(r.name)}(${n})`;let a=N(r,s);return a===void 0?void 0:P(a,n,s,i)}if(r.kind==="array"){let t=P(r.items,"$item",s,i);return t===void 0?void 0:`array_map(static fn ($item) => ${t}, ${n})`}if(r.kind==="record"){let t=P(r.value,"$item",s,i);return t===void 0?void 0:`array_map(static fn ($item) => ${t}, ${n})`}}function x(e,n,s,i="string"){let r=j(e);if(i==="Date"&&r.kind==="scalar"&&r.scalar==="string"){if(r.metadata?.format==="date")return`${n}->format('Y-m-d')`;if(r.metadata?.format==="date-time")return`${n}->format(\\DateTimeInterface::ATOM)`}if(r.kind==="omit")return x({kind:"ref",name:r.base},n,s,i);if(r.kind==="ref"){let t=_(r.name,s);if(t==="class")return`${n}->toArray()`;if(t==="enum")return`${n}->value`;if($e(r.name,s))return`is_object(${n}) ? ${n}->toArray() : ${n}`;let a=N(r,s);return a===void 0?void 0:x(a,n,s,i)}if(r.kind==="array"||r.kind==="record"){let t=r.kind==="array"?r.items:r.value,a=x(t,"$item",s,i);return a===void 0?void 0:`array_map(static fn ($item) => ${a}, ${n})`}}function ge(e,n,s,i,r,t){let a=[...s.filter(c=>c.required),...s.filter(c=>!c.required)];e.doc(g(n),t),e.line(`final class ${g(n)}`),e.block("{",()=>{e.block("public function __construct(",()=>{for(let c of a){let l=m(c.schema,i,r);if(c.required)e.line(`public ${l} $${k(c.name)},`);else{let u=A(l);e.line(`public ${u} $${k(c.name)} = null,`)}}},") {"),e.line("}"),e.blank(),e.line("public static function fromArray(array $data): self"),e.block("{",()=>{e.block("return new self(",()=>{for(let c of a){let l=`$data[${o(c.name)}]`,u=P(c.schema,l,i,r),d=k(c.name);c.required?e.line(`${d}: ${u??l},`):u===void 0?e.line(`${d}: ${l} ?? null,`):e.line(`${d}: isset(${l}) ? ${u} : null,`)}},");")},"}"),e.blank(),e.line("public function toArray(): array"),e.block("{",()=>{e.line("$data = [];");for(let c of a){let l=`$this->${k(c.name)}`,u=x(c.schema,l,i,r)??l;c.required?e.line(`$data[${o(c.name)}] = ${u};`):e.block(`if (${l} !== null) {`,()=>{e.line(`$data[${o(c.name)}] = ${u};`)},"}")}e.line("return $data;")},"}")},"}"),e.blank()}function z(e,n="string"){let s=new w;for(let{name:i,schema:r}of e.schemas){let t=D(r);if(t!==void 0&&(t.scalar==="string"||t.scalar==="integer")){let c=t.scalar==="string"?"string":"int";s.doc(g(i),r.description),s.line(`enum ${g(i)}: ${c}`),s.block("{",()=>{let l=S(t.values.map(u=>String(u)),{style:"pascal",reserved:h});t.values.forEach((u,d)=>{let y=typeof u=="string"?o(u):String(u);s.line(`case ${l[d]} = ${y};`)})},"}"),s.blank();continue}if(r.kind==="object"||r.kind==="intersection"){let c=T(r,e);if(c!==void 0){ge(s,i,c.properties,e,n,c.description??r.description);continue}}let a=B(r,e);if(a!==void 0){let c=g(i),l=a.cases.map(u=>`${u.value} -> ${g(u.schemaName)}`).join(", ");s.line(`/** ${c} is a discriminated union (${o(a.property)}): ${l}. */`),s.line(`function unmarshal${c}(array $data): mixed`),s.block("{",()=>{s.block(`return match ($data[${o(a.property)}] ?? null) {`,()=>{for(let u of a.cases){let d={kind:"ref",name:u.schemaName},y=P(d,"$data",e,n)??"$data";s.line(`${o(u.value)} => ${y},`)}s.line("default => $data,")},"};")},"}"),s.blank();continue}}return s.toString()}var de=new Set(["post","put","patch"]),be=["body","headers","idempotencyKey"];function fe(e){return F(e)||e.requestBody!==void 0&&ne(e.requestBody.contentType)}function Q(e,n,s,i){let r=S([...e.pathParams,...e.queryParams].map(l=>l.name),{style:"camel",reserved:h,taken:be}),t=e.pathParams.map((l,u)=>({php:r[u],wire:l.name,type:m(l.schema,n,i)})),a=e.queryParams.map((l,u)=>{let d=r[e.pathParams.length+u];return{php:d,wire:l.name,type:m(l.schema,n,i),value:x(l.schema,`$${d}`,n,i)??`$${d}`}}),c=[...t.map(({php:l,type:u})=>`${u} $${l}`),...s&&e.requestBody?[`${fe(e)?"mixed":L(e)?"array":m(e.requestBody.schema,n,i)} $body`]:[],...a.map(({php:l,type:u})=>`${A(u)} $${l} = null`),"?array $headers = null",...s&&de.has(e.method.toLowerCase())?["?string $idempotencyKey = null"]:[]];return{pathArgs:t,queryArgs:a,signature:c}}function ke(e,n,s){e.line(`$op = self::OPERATIONS[${o(n.specName??n.name)}];`),e.line("[$authHeaders, $query, $cookies] = resolveAuth($op['security'] ?? [], $this->config->auth);");for(let{php:r,wire:t,value:a}of s.queryArgs)e.block(`if ($${r} !== null) {`,()=>{e.line(`$query[${o(t)}] = ${a};`)},"}");let i=s.pathArgs.map(({php:r,wire:t})=>`${o(t)} => $${r}`).join(", ");e.line(`$url = buildUrl($this->config->serverUrl, $op['path'], [${i}]);`),e.line("$requestHeaders = array_merge($authHeaders, $headers ?? []);"),e.block("if ($cookies !== []) {",()=>{e.line("$requestHeaders['Cookie'] = implode('; ', $cookies);")},"}")}function Y(e,n,s,i,r,t=!1){let a=Q(n,i,!0,r),c=I(n),l=E(n),u=c===void 0&&l===void 0&&n.successResponses.some(b=>b.contentType!==""),d=t?"Envelope":c!==void 0?"\\Generator":l!==void 0?m(l,i,r):u?"string":"void",y=t?`${s}WithHeaders`:s,H=t?void 0:V(l,i,r);e.doc(y,t?`Like ${s}(), returning an Envelope with the declared response headers.`:n.summary??`${n.method.toUpperCase()} ${n.path}`,H===void 0?[]:[`@return ${H}[]`]),e.line(`public function ${y}(${a.signature.join(", ")}): ${d}`),e.block("{",()=>{if(ke(e,n,a),c!==void 0){let f=c.schema!==void 0&&c.schema.kind!=="unknown";e.line("$url = appendQuery($url, $query);"),e.block("$open = function (array $extraHeaders) use ($url, $requestHeaders): \\CurlHandle {",()=>{e.line("$handle = curl_init($url);"),e.line("$lines = [];"),e.block("foreach (array_merge($requestHeaders, $extraHeaders) as $name => $value) {",()=>{e.line("$lines[] = $name . ': ' . $value;")},"}"),e.line("curl_setopt($handle, CURLOPT_HTTPHEADER, $lines);"),e.line("return $handle;")},"};"),e.line(`yield from iterSse($open, ${f?"true":"false"});`);return}let b=["'operationId' => $op['id']","'method' => $op['method']","'url' => $url","'headers' => $requestHeaders","'query' => $query"];if(F(n))e.line("[$contentType, $encoded] = multipartBody($body);"),b.push("'body' => $encoded","'contentType' => $contentType");else if(n.requestBody&&fe(n))b.push("'body' => binaryBody($body)",`'contentType' => ${o(n.requestBody.contentType)}`);else if(n.requestBody&&L(n))e.line("[$contentType, $encoded] = toMultipart($body);"),b.push("'body' => $encoded","'contentType' => $contentType");else if(n.requestBody){let f=x(n.requestBody.schema,"$body",i,r)??"$body";e.line(`$payload = json_encode(${f});`),b.push("'body' => $payload",`'contentType' => ${o(n.requestBody.contentType)}`)}de.has(n.method.toLowerCase())&&n.requestBody&&b.push("'idempotencyKey' => $idempotencyKey"),e.line(`$response = send($this->config, [${b.join(", ")}]);`),e.block("if ($response['status'] >= 400) {",()=>{e.line("throw apiErrorFrom($response);")},"}");let $=u?"$response['body']":(l===void 0?void 0:P(l,"decodeJson($response)",i,r))??"decodeJson($response)";if(t){e.line(`$data = ${$};`),e.line(`return new Envelope(data: $data, headers: readEnvelopeHeaders($response, ${ue(n,i)}), status: $response['status']);`);return}if(u){e.line("return $response['body'];");return}if(d==="void"){e.line("decodeJson($response);");return}e.line(`return ${$};`)},"}"),e.blank()}function me(e,n,s,i,r,t,a,c,l){let u=Q(n,i,!1,r),d=s,y=()=>{e.line(`$op = self::OPERATIONS[${o(n.specName??n.name)}];`),e.line("$base = [];");for(let{php:f,wire:q,value:v}of u.queryArgs)e.block(`if ($${f} !== null) {`,()=>{e.line(`$base[${o(q)}] = ${v};`)},"}");let $=u.pathArgs.map(({php:f,wire:q})=>`${o(q)} => $${f}`).join(", ");e.block("$call = function (array $params) use ($op, $headers): array {",()=>{e.line("[$authHeaders, $authQuery, $cookies] = resolveAuth($op['security'] ?? [], $this->config->auth);"),e.line(`$url = buildUrl($this->config->serverUrl, $op['path'], [${$}]);`),e.line("$requestHeaders = array_merge($authHeaders, $headers ?? []);"),e.block("if ($cookies !== []) {",()=>{e.line("$requestHeaders['Cookie'] = implode('; ', $cookies);")},"}"),e.line("$response = send($this->config, ['operationId' => $op['id'], 'method' => $op['method'], 'url' => $url, 'headers' => $requestHeaders, 'query' => array_merge($params, $authQuery)]);"),e.block("if ($response['status'] >= 400) {",()=>{e.line("throw apiErrorFrom($response);")},"}"),e.line("return [decodeJson($response), $response];")},"};")},H=m(E(n)??{kind:"unknown"},i,r),b=H==="mixed"?"mixed":H;e.line("/**"),e.line(` * ${d} response pages, following the pagination rule automatically.`),e.line(" *"),e.line(` * @return \\Generator<int, ${b}>`),e.line(" */"),e.line(`public function ${d}Pages(${u.signature.join(", ")}): \\Generator`),e.block("{",()=>{y(),e.block("foreach (iterPages($call, $op['pagination'], $base) as $page) {",()=>{e.line(`yield ${t??"$page"};`)},"}")},"}"),e.blank(),e.line("/**"),e.line(` * The items of every ${d} page.`),e.line(" *"),e.line(` * @return \\Generator<int, ${l}>`),e.line(" */"),e.line(`public function ${d}Items(${u.signature.join(", ")}): \\Generator`),e.block("{",()=>{y(),e.block("foreach (iterPages($call, $op['pagination'], $base) as $page) {",()=>{e.line(`$items = resolvePointer($page, ${o(c??"")});`),e.block("foreach (is_array($items) ? $items : [] as $item) {",()=>{e.line(`yield ${a??"$item"};`)},"}")},"}")},"}"),e.blank()}function Pe(e){let n=e.split(`
8
8
  `),s=0;for(let i=0;i<n.length;i++)if(n[i].trim().startsWith("namespace ")){s=i+1;break}return n.slice(s).join(`
9
9
  `).trim()}var dn=({model:e,output:n,banner:s,emit:i,pagination:r})=>{let t=new w,a=i.dateType??"string",c=p(e.title,{style:"pascal",reserved:h});t.line("<?php"),t.blank(),t.line(`// Code generated by @redocly/client-generator (php) from ${o(e.title)} ${e.version}. DO NOT EDIT.`),t.line("// Regenerate with `redocly generate-client`. PHP >= 8.1, curl extension \u2014 zero Composer dependencies."),t.blank(),t.line("declare(strict_types=1);"),t.blank(),t.line(`namespace ${c};`),t.blank(),t.line(z(e,a)),oe(t,e),i.runtime==="module"?(t.line("// \u2500\u2500\u2500 Runtime (a real file beside this one, written by the same run) \u2500\u2500\u2500"),t.line("require_once __DIR__ . '/runtime.php';"),t.blank()):(t.line("// \u2500\u2500\u2500 Embedded runtime (@redocly/client-generator php runtime) \u2500\u2500\u2500"),t.line(Pe(W)),t.blank());let l=e.services.flatMap($=>$.operations),u=K(e),d=new Map;for(let $ of l){let f=r?.get($.name)?.spec;f!==void 0&&d.set($.name,f)}t.doc("Client",`Client for ${e.title} (${e.version}).`),t.line("class Client"),t.block("{",()=>{t.block("public const OPERATIONS = [",()=>{for(let $ of l){let f=$.specName??$.name,q=ce($,e),v=d.get($.name),M=[`'id' => ${o(f)}`,`'method' => ${o($.method.toUpperCase())}`,`'path' => ${o($.path)}`,...q!==void 0?[`'security' => ${q}`]:[],...v!==void 0?[`'pagination' => ${le(v)}`]:[]];t.line(`${o(f)} => [${M.join(", ")}],`)}},"];"),t.blank(),t.line("public function __construct(private Config $config)"),t.block("{",()=>{t.block("if ($this->config->serverUrl === '') {",()=>{t.line(`$this->config->serverUrl = ${o(i.serverUrl??e.serverUrl??"")};`)},"}")},"}"),t.blank();for(let $ of l){let f=u.get($.name);Y(t,$,f,e,a),I($)===void 0&&($.successResponseHeaders?.length??0)>0&&Y(t,$,f,e,a,!0);let q=d.get($.name);if(q===void 0)continue;let v=E($),M=v===void 0?void 0:P(v,"$page",e,a),C=ie(v,q.items,e),pe=C===void 0?void 0:P(C,"$item",e,a);me(t,$,f,e,a,M,pe,q.items,C===void 0?"mixed":m(C,e,a))}},"}");let y={path:n.path.replace(/\.[^.\\/]+$/,".php"),content:t.toString()};if(i.runtime!=="module")return[y];let H=s.map($=>`// ${$}`).join(`
10
10
  `),b=W.replace(/^namespace .*$/m,`namespace ${c};`).replace(/^<\?php\n/,`<?php