@redocly/cli 0.0.0-snapshot.1787659732 → 0.0.0-snapshot.1788270600

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 (133) hide show
  1. package/lib/chunks/35BATN22.js +7 -0
  2. package/lib/chunks/37RBKLUU.js +14 -0
  3. package/lib/chunks/3BTIKQAQ.js +19 -0
  4. package/lib/chunks/3DIWMNOJ.js +90 -0
  5. package/lib/chunks/3JJEI7CJ.js +456 -0
  6. package/lib/chunks/46KFQMCS.js +7 -0
  7. package/lib/chunks/4PFY5RPW.js +30 -0
  8. package/lib/chunks/{D6S7GKN4.js → 5WVB7LML.js} +1 -1
  9. package/lib/chunks/6IXCU6KT.js +9 -0
  10. package/lib/chunks/{WAZP3OP5.js → 6WGJWHOP.js} +1 -1
  11. package/lib/chunks/7KLHUI3Y.js +57 -0
  12. package/lib/chunks/{34665V6U.js → A2TDXIWP.js} +1 -1
  13. package/lib/chunks/AE5USMLG.js +7 -0
  14. package/lib/chunks/AG7UA53E.js +7 -0
  15. package/lib/chunks/BEN3TY6X.js +7 -0
  16. package/lib/chunks/C464GG43.js +177 -0
  17. package/lib/chunks/C4BP2NXN.js +5400 -0
  18. package/lib/chunks/E74SGDON.js +177 -0
  19. package/lib/chunks/EOITKU64.js +22 -0
  20. package/lib/chunks/{QBCF3BIY.js → FDYPEXOY.js} +1 -1
  21. package/lib/chunks/{R4HDQ5SM.js → FTM2HU3K.js} +2 -2
  22. package/lib/chunks/HJYFWIVE.js +9 -0
  23. package/lib/chunks/IUJJ3KUS.js +42 -0
  24. package/lib/chunks/J3C5POOY.js +16 -0
  25. package/lib/chunks/K7OI5UYO.js +16 -0
  26. package/lib/chunks/L3TZNNJJ.js +13 -0
  27. package/lib/chunks/L6BZYHN2.js +20 -0
  28. package/lib/chunks/LMPUNDIR.js +7 -0
  29. package/lib/chunks/LTEJ6I5K.js +78 -0
  30. package/lib/chunks/N2C3ZU6S.js +26 -0
  31. package/lib/chunks/NB54XRRU.js +10 -0
  32. package/lib/chunks/NSIQWNYL.js +7 -0
  33. package/lib/chunks/NWMTC4AN.js +7 -0
  34. package/lib/chunks/OOMZ7D6R.js +184 -0
  35. package/lib/chunks/{TKIQOCZU.js → OZZB57U2.js} +1 -1
  36. package/lib/chunks/P5RL4YY3.js +14 -0
  37. package/lib/chunks/PFYPTG4G.js +7 -0
  38. package/lib/chunks/{VDL64T4H.js → PROUTMLE.js} +1 -1
  39. package/lib/chunks/{PW2LOSDZ.js → PUK7OBOJ.js} +1 -1
  40. package/lib/chunks/Q5PIP5PR.js +7 -0
  41. package/lib/chunks/{6CMEUUQ2.js → QJQKVSIY.js} +1 -1
  42. package/lib/chunks/{H6V74SNJ.js → QWKVXDPE.js} +1 -1
  43. package/lib/chunks/REFX2EKS.js +13 -0
  44. package/lib/chunks/RHYDJFS7.js +22 -0
  45. package/lib/chunks/S5BFMDM5.js +7 -0
  46. package/lib/chunks/S5OEJJFB.js +42 -0
  47. package/lib/chunks/SGBB4RNM.js +11 -0
  48. package/lib/chunks/SGQGFJO5.js +19 -0
  49. package/lib/chunks/SQVG3CEM.js +8 -0
  50. package/lib/chunks/{ANBA5OHN.js → SUDGTHJT.js} +1 -1
  51. package/lib/chunks/{FMKICTSK.js → SVA2MPBH.js} +1 -1
  52. package/lib/chunks/{YL33ECLE.js → TH7LPXNA.js} +1 -1
  53. package/lib/chunks/TS2TZTTS.js +18 -0
  54. package/lib/chunks/TSB6PODJ.js +13 -0
  55. package/lib/chunks/{C2YM4HLB.js → UJERG45P.js} +1 -1
  56. package/lib/chunks/UKSQ7B5H.js +2268 -0
  57. package/lib/chunks/{K7CE22EJ.js → WWFDF4VZ.js} +1 -1
  58. package/lib/chunks/{UJ5PVXXU.js → XDAABV4X.js} +1 -1
  59. package/lib/chunks/XJTWNH6U.js +67 -0
  60. package/lib/chunks/XSO3PW3X.js +20 -0
  61. package/lib/chunks/YA5DA34P.js +7 -0
  62. package/lib/chunks/Z45T6MUO.js +11 -0
  63. package/lib/chunks/ZBL4IVEW.js +11 -0
  64. package/lib/chunks/ZXA6O24J.js +7 -0
  65. package/lib/eject-assets/AGENTS.md +137 -0
  66. package/lib/eject-assets/generators/cli/docs.ts +224 -0
  67. package/lib/eject-assets/generators/cli/engine-source.ts +21 -0
  68. package/lib/eject-assets/generators/cli/index.ts +90 -0
  69. package/lib/eject-assets/generators/cli/render.ts +348 -0
  70. package/lib/eject-assets/generators/go/client.ts +57 -0
  71. package/lib/eject-assets/generators/go/descriptor.ts +41 -0
  72. package/lib/eject-assets/generators/go/index.ts +336 -0
  73. package/lib/eject-assets/generators/go/models.ts +179 -0
  74. package/lib/eject-assets/generators/go/naming.ts +49 -0
  75. package/lib/eject-assets/generators/go/operations.ts +296 -0
  76. package/lib/eject-assets/generators/go/pagination.ts +194 -0
  77. package/lib/eject-assets/generators/go/types.ts +60 -0
  78. package/lib/eject-assets/generators/mock/faker.ts +214 -0
  79. package/lib/eject-assets/generators/mock/index.ts +35 -0
  80. package/lib/eject-assets/generators/mock/render.ts +282 -0
  81. package/lib/eject-assets/generators/mock/sample.ts +316 -0
  82. package/lib/eject-assets/generators/mock/values.ts +63 -0
  83. package/lib/eject-assets/generators/php/client.ts +63 -0
  84. package/lib/eject-assets/generators/php/descriptor.ts +58 -0
  85. package/lib/eject-assets/generators/php/index.ts +237 -0
  86. package/lib/eject-assets/generators/php/models.ts +275 -0
  87. package/lib/eject-assets/generators/php/naming.ts +51 -0
  88. package/lib/eject-assets/generators/php/operations.ts +232 -0
  89. package/lib/eject-assets/generators/php/pagination.ts +133 -0
  90. package/lib/eject-assets/generators/php/types.ts +148 -0
  91. package/lib/eject-assets/generators/python/client.ts +123 -0
  92. package/lib/eject-assets/generators/python/descriptor.ts +52 -0
  93. package/lib/eject-assets/generators/python/index.ts +251 -0
  94. package/lib/eject-assets/generators/python/models.ts +242 -0
  95. package/lib/eject-assets/generators/python/naming.ts +46 -0
  96. package/lib/eject-assets/generators/python/operations.ts +147 -0
  97. package/lib/eject-assets/generators/python/pagination.ts +128 -0
  98. package/lib/eject-assets/generators/python/types.ts +54 -0
  99. package/lib/eject-assets/generators/swr/index.ts +37 -0
  100. package/lib/eject-assets/generators/swr/render.ts +78 -0
  101. package/lib/eject-assets/generators/tanstack-query/index.ts +48 -0
  102. package/lib/eject-assets/generators/tanstack-query/render.ts +346 -0
  103. package/lib/eject-assets/generators/transformers/index.ts +46 -0
  104. package/lib/eject-assets/generators/transformers/render.ts +506 -0
  105. package/lib/eject-assets/generators/typescript/banner.ts +35 -0
  106. package/lib/eject-assets/generators/typescript/client.ts +254 -0
  107. package/lib/eject-assets/generators/typescript/descriptor.ts +137 -0
  108. package/lib/eject-assets/generators/typescript/index.ts +101 -0
  109. package/lib/eject-assets/generators/typescript/inline-runtime.ts +135 -0
  110. package/lib/eject-assets/generators/typescript/operation-signature.ts +62 -0
  111. package/lib/eject-assets/generators/typescript/operation-types.ts +17 -0
  112. package/lib/eject-assets/generators/typescript/operations.ts +524 -0
  113. package/lib/eject-assets/generators/typescript/response-headers.ts +74 -0
  114. package/lib/eject-assets/generators/typescript/type-guards.ts +159 -0
  115. package/lib/eject-assets/generators/typescript/types.ts +172 -0
  116. package/lib/eject-assets/generators/zod/index.ts +32 -0
  117. package/lib/eject-assets/generators/zod/schemas.ts +456 -0
  118. package/lib/eject-assets/skills/cli-generator/SKILL.md +121 -0
  119. package/lib/eject-assets/skills/client-generators/SKILL.md +142 -0
  120. package/lib/eject-assets/skills/go-generator/SKILL.md +96 -0
  121. package/lib/eject-assets/skills/mock-generator/SKILL.md +50 -0
  122. package/lib/eject-assets/skills/php-generator/SKILL.md +112 -0
  123. package/lib/eject-assets/skills/python-generator/SKILL.md +110 -0
  124. package/lib/eject-assets/skills/swr-generator/SKILL.md +50 -0
  125. package/lib/eject-assets/skills/tanstack-query-generator/SKILL.md +55 -0
  126. package/lib/eject-assets/skills/transformers-generator/SKILL.md +47 -0
  127. package/lib/eject-assets/skills/typescript-generator/SKILL.md +95 -0
  128. package/lib/eject-assets/skills/zod-generator/SKILL.md +54 -0
  129. package/lib/index.js +256 -216
  130. package/package.json +1 -1
  131. package/lib/chunks/6XPR5CIN.js +0 -8
  132. package/lib/chunks/M24HB3SV.js +0 -187
  133. package/lib/chunks/WQJ7VN5U.js +0 -2542
@@ -0,0 +1,7 @@
1
+ import { createRequire as __createRequire } from 'node:module';
2
+ import { fileURLToPath as __fileURLToPath } from 'node:url';
3
+ import { dirname as __pathDirname } from 'node:path';
4
+ const require = __createRequire(import.meta.url);
5
+ var __filename = __fileURLToPath(import.meta.url);
6
+ var __dirname = __pathDirname(__filename);
7
+ import{a,b,c,d,e}from"./P5RL4YY3.js";import"./REFX2EKS.js";import"./UKSQ7B5H.js";import"./Z45T6MUO.js";import"./C4BP2NXN.js";import"./PFYPTG4G.js";import"./OOMZ7D6R.js";import"./NEWT5A6S.js";import"./HJYFWIVE.js";import"./RFWIIJFG.js";export{e as goDocs,c as goGenerator,d as goSample,a as goType,b as renderGoModels};
@@ -0,0 +1,14 @@
1
+ import { createRequire as __createRequire } from 'node:module';
2
+ import { fileURLToPath as __fileURLToPath } from 'node:url';
3
+ import { dirname as __pathDirname } from 'node:path';
4
+ const require = __createRequire(import.meta.url);
5
+ var __filename = __fileURLToPath(import.meta.url);
6
+ var __dirname = __pathDirname(__filename);
7
+ import{a as S,b as d}from"./REFX2EKS.js";import{a as C}from"./UKSQ7B5H.js";import{b as H,c as D,d as G,e as K,f as J,g as z,h as Q}from"./Z45T6MUO.js";import"./C4BP2NXN.js";import{a as j}from"./PFYPTG4G.js";import"./OOMZ7D6R.js";import"./NEWT5A6S.js";import{b as A,c as I,d as v,e as L,g as E,h as x,i as B,j as F,k as W,n as _}from"./HJYFWIVE.js";import"./RFWIIJFG.js";var c=new S,b=I.go;function V(e){if(e===void 0)return"client";if(!/^[a-z_][a-z0-9_]*$/.test(e)||b.has(e))throw new j(`goPackage "${e}" is not a valid Go package name: use lowercase letters, digits, and underscores, don't start with a digit, and avoid Go keywords.`);return e}function w(e){let t=new Set,n=[];for(let r of e.services)for(let o of r.operations){let a=d(o.name),i=2;for(;t.has(a);)a=`${d(o.name)}${i++}`;t.add(a),n.push({op:o,ident:a})}return n}function oe(e){return J(e).map(n=>n.kind==="literal"?c.string(n.value):v(n.name,{style:"camel",reserved:b})).join(" + ")}function X(e,t){let n=t.servers??[];if(n.length===0)return;let r=new Set;n.forEach((o,a)=>{let i=`${d(o.description??`server${a+1}`)}URL`;r.has(i)&&(i=`${i}${a+1}`),r.add(i);let s=o.variables.map(l=>`${v(l.name,{style:"camel",reserved:b})} string`),u=o.variables.map(l=>`${v(l.name,{style:"camel",reserved:b})} default: ${c.string(l.default)}`).join(", ");e.line(`// ${i} returns the ${c.string(o.description??o.url)} base URL${u===""?".":` (${u}).`}`),e.block(`func ${i}(${s.join(", ")}) string {`,()=>{e.line(`return ${oe(o)}`)},"}"),e.blank()})}function Y(e,t){let n=z(e,t).map(r=>r.map(o=>o.kind==="apiKey"?`{Scheme: ${c.string(o.scheme)}, Kind: "apiKey", Name: ${c.string(o.name)}, In: ${c.string(o.in)}}`:`{Scheme: ${c.string(o.scheme)}, Kind: ${c.string(o.kind)}}`));if(n.length!==0)return`[][]SecuritySpec{${n.map(r=>`{${r.join(", ")}}`).join(", ")}}`}function Z(e){return`&PaginationSpec{${[`Style: ${c.string(e.style)}`,...e.param!==void 0?[`Param: ${c.string(e.param)}`]:[],...e.nextCursor!==void 0?[`NextCursor: ${c.string(e.nextCursor)}`]:[],...e.hasMore!==void 0?[`HasMore: ${c.string(e.hasMore)}`]:[],...e.limitParam!==void 0?[`LimitParam: ${c.string(e.limitParam)}`]:[],...e.items!==void 0?[`Items: ${c.string(e.items)}`]:[]].join(", ")}}`}function g(e,t="string"){if(B(e)){let n=g(F(e),t);return n.startsWith("*")||n==="any"?n:`*${n}`}switch(e.kind){case"scalar":if(t==="Date"&&e.scalar==="string"){if(e.metadata?.format==="date-time")return"time.Time";if(e.metadata?.format==="date")return"Date"}return{string:"string",integer:"int64",number:"float64",boolean:"bool"}[e.scalar];case"array":return`[]${g(e.items,t)}`;case"record":return`map[string]${g(e.value,t)}`;case"ref":return d(e.name);case"literal":return typeof e.value=="string"?"string":typeof e.value=="boolean"?"bool":"float64";case"enum":return{string:"string",integer:"int64",number:"float64",boolean:"bool"}[e.scalar];case"omit":return d(e.base);case"union":case"null":case"object":case"intersection":case"unknown":return"any"}}function ae(e,t,n,r,o){e.doc(d(t),o),e.block(`type ${d(t)} struct {`,()=>{for(let a of n){let i=d(a.name),s=g(a.schema,r),u=`\`json:"${a.name}"\``;a.required||(!s.startsWith("*")&&!s.startsWith("[]")&&!s.startsWith("map[")&&s!=="any"&&(s=`*${s}`),u=`\`json:"${a.name},omitempty"\``),e.line(`${i} ${s} ${u}`)}},"}"),e.blank()}function N(e,t="string"){let n=new S;n.line("package client"),n.blank(),e.schemas.some(({schema:a})=>x(a,e)!==void 0)&&(n.line('import "encoding/json"'),n.blank());let o=ie(e,t);return t==="Date"&&o.includes("time.Time")&&(n.line('import "time"'),n.blank()),n.line(o),n.toString()}function ie(e,t){let n=new S;for(let{name:r,schema:o}of e.schemas){let a=W(o);if(a!==void 0){let s=a.scalar==="string"?"string":"int64";n.doc(d(r),o.description),n.line(`type ${d(r)} ${s}`),n.blank(),n.block("const (",()=>{let u=new Set;a.values.forEach(l=>{let f=A.pascal(String(l))||"Value",m="";for(let k=2;u.has(f+m);k++)m=String(k);u.add(f+m);let h=d(r)+f+m;n.line(`${h} ${d(r)} = ${c.literal(l)}`)})},")"),n.blank();continue}if(o.kind==="object"||o.kind==="intersection"){let s=E(o,e);if(s!==void 0){ae(n,r,s.properties,t,s.description??o.description);continue}}let i=x(o,e);if(i!==void 0){let s=d(r),u=i.cases.map(l=>`${l.value} -> ${d(l.schemaName)}`).join(", ");n.line(`// ${s} is a discriminated union ("${i.property}"): ${u}.`),n.line(`type ${s} = any`),n.blank(),n.line(`// Unmarshal${s} decodes into the member selected by "${i.property}".`),n.block(`func Unmarshal${s}(data []byte) (${s}, error) {`,()=>{n.block("var probe struct {",()=>{n.line(`Discriminant string \`json:"${i.property}"\``)},"}"),n.block("if err := json.Unmarshal(data, &probe); err != nil {",()=>{n.line("return nil, err")},"}"),n.line("switch probe.Discriminant {");for(let l of i.cases)n.block(`case ${c.string(l.value)}:`,()=>{n.line(`var value ${d(l.schemaName)}`),n.line("err := json.Unmarshal(data, &value)"),n.line("return value, err")});n.line("}"),n.line("var fallback any"),n.line("err := json.Unmarshal(data, &fallback)"),n.line("return fallback, err")},"}"),n.blank();continue}n.doc(d(r),o.description),n.line(`type ${d(r)} = ${g(o,t)}`),n.blank()}return n.toString()}function R(e,t){if(t==="string")return e;let n=e.startsWith("*")?`(${e})`:e;return t==="time.Time"?`${n}.Format(time.RFC3339)`:t==="Date"?`${n}.Format("2006-01-02")`:t==="int64"?`strconv.FormatInt(${e}, 10)`:t==="float64"?`strconv.FormatFloat(${e}, 'f', -1, 64)`:t==="bool"?`strconv.FormatBool(${e})`:`fmt.Sprint(${e})`}var se=["c","ctx","body","params","out","op"];function T(e,t){let n=L(e.pathParams.map(r=>r.name),{style:"camel",reserved:b,taken:se});return e.pathParams.map((r,o)=>({param:r,go:n[o],type:g(r.schema,t)}))}function le(e,t){let n=new Set;return(e.successResponseHeaders??[]).map(r=>{let o=d(r.name),a=o,i=2;for(;n.has(a);)a=`${o}${i++}`;n.add(a);let s=_(r.schema,t),u={integer:{goType:"*int64",helper:"headerInt64"},number:{goType:"*float64",helper:"headerFloat64"},boolean:{goType:"*bool",helper:"headerBool"},string:{goType:"*string",helper:"headerString"}}[s];return{field:a,name:r.name,...u}})}function U(e,t,n,r,o,a=!1){let i=T(t,r),s=t.queryParams.length>0,u=D(t),l=u===void 0?void 0:g(u,r),f=a?le(t,o):[];a&&(e.line(`// ${n}Headers carries the declared response headers of ${n}WithHeaders (nil when absent or unparsable).`),e.block(`type ${n}Headers struct {`,()=>{for(let p of f)e.line(`${p.field} ${p.goType}`)},"}"),e.blank());let m=["ctx context.Context",...i.map(({go:p,type:P})=>`${p} ${P}`),...t.requestBody?[`body ${g(t.requestBody.schema,r)}`]:[],...s?[`params *${n}Params`]:[]],h=G(t),k=a?l===void 0?`(${n}Headers, error)`:`(${l}, ${n}Headers, error)`:h!==void 0?"func(yield func(ServerSentEvent, error) bool)":l===void 0?"error":`(${l}, error)`,$=p=>a?l===void 0?`return headers, ${p}`:`return out, headers, ${p}`:l===void 0?`return ${p}`:`return out, ${p}`,M=a?`${n}WithHeaders`:n;e.doc(M,a?`Like ${n}, also returning the declared response headers.`:t.summary),e.block(`func (c *Client) ${M}(${m.join(", ")}) ${k} {`,()=>{h===void 0&&l!==void 0&&e.line(`var out ${l}`),a&&e.line(`var headers ${n}Headers`),e.line(`op := operations[${c.string(t.specName??t.name)}]`),e.line("authHeaders, query := resolveAuth(op.Security, c.config.Auth)"),s&&e.block("if params != nil {",()=>{for(let y of t.queryParams){let O=d(y.name);e.block(`if params.${O} != nil {`,()=>{if(y.schema.kind==="array"){let q=g(y.schema.items,r);e.block(`for _, item := range *params.${O} {`,()=>{e.line(`query.Add(${c.string(y.name)}, ${R("item",q)})`)},"}")}else e.line(`query.Set(${c.string(y.name)}, ${R(`*params.${O}`,g(y.schema,r))})`)},"}")}},"}");let p=i.map(({param:y,go:O,type:q})=>`${c.string(y.name)}: ${R(O,q)}`).join(", ");if(e.line(`requestURL := buildURL(c.config.ServerURL, op.Path, map[string]string{${p}})`),h!==void 0){e.block("open := func(extraHeaders map[string]string) (*http.Response, error) {",()=>{e.line("merged := map[string]string{}"),e.block("for key, value := range authHeaders {",()=>{e.line("merged[key] = value")},"}"),e.block("for key, value := range extraHeaders {",()=>{e.line("merged[key] = value")},"}"),e.line("return send(ctx, &c.config, requestSpec{OperationID: op.ID, Method: op.Method, URL: requestURL, Headers: merged, Query: query})")},"}"),e.line(`return iterSSE(open, ${h.schema!==void 0&&h.schema.kind!=="unknown"})`);return}let P=["OperationID: op.ID","Method: op.Method","URL: requestURL","Headers: authHeaders","Query: query"];if(t.requestBody&&K(t)?(e.line("contentType, reader, err := toMultipart(body)"),e.block("if err != nil {",()=>{e.line($("err"))},"}"),P.push("Body: reader"),P.push("ContentType: contentType")):t.requestBody&&(e.line("payload, err := json.Marshal(body)"),e.block("if err != nil {",()=>{e.line($("err"))},"}"),P.push("Body: bytes.NewReader(payload)"),P.push(`ContentType: ${c.string(t.requestBody.contentType)}`)),e.line(`resp, err := send(ctx, &c.config, requestSpec{${P.join(", ")}})`),e.block("if err != nil {",()=>{e.line($("err"))},"}"),e.block("if resp.StatusCode >= 400 {",()=>{e.line($("apiErrorFrom(resp, requestURL)"))},"}"),a){e.block(`if err := decodeJSON(resp, ${l===void 0?"nil":"&out"}); err != nil {`,()=>{e.line($("err"))},"}");for(let y of f)e.line(`headers.${y.field} = ${y.helper}(resp.Header, ${c.string(y.name)})`);e.line(l===void 0?"return headers, nil":"return out, headers, nil")}else l===void 0?e.line("return decodeJSON(resp, nil)"):(e.block("if err := decodeJSON(resp, &out); err != nil {",()=>{e.line("return out, err")},"}"),e.line("return out, nil"))},"}"),e.blank()}function ee(e,t,n,r,o,a){let i=T(t,r),s=t.queryParams.length>0,u=["ctx context.Context",...i.map(({go:f,type:m})=>`${f} ${m}`),...s?[`params *${n}Params`]:[]].join(", "),l=()=>{e.line(`op := operations[${c.string(t.specName??t.name)}]`),e.line("base := url.Values{}"),s&&e.block("if params != nil {",()=>{for(let f of t.queryParams){let m=d(f.name);e.block(`if params.${m} != nil {`,()=>{e.line(`base.Set(${c.string(f.name)}, ${R(`*params.${m}`,g(f.schema,r))})`)},"}")}},"}"),e.block("call := func(pageParams url.Values) (any, *http.Response, error) {",()=>{e.line("authHeaders, query := resolveAuth(op.Security, c.config.Auth)"),e.block("for key, values := range pageParams {",()=>{e.block("for _, value := range values {",()=>{e.line("query.Set(key, value)")},"}")},"}");let f=i.map(({param:m,go:h,type:k})=>`${c.string(m.name)}: ${R(h,k)}`).join(", ");e.line(`requestURL := buildURL(c.config.ServerURL, op.Path, map[string]string{${f}})`),e.line("resp, err := send(ctx, &c.config, requestSpec{OperationID: op.ID, Method: op.Method, URL: requestURL, Headers: authHeaders, Query: query})"),e.block("if err != nil {",()=>{e.line("return nil, nil, err")},"}"),e.block("if resp.StatusCode >= 400 {",()=>{e.line("return nil, resp, apiErrorFrom(resp, requestURL)")},"}"),e.line("var raw any"),e.block("if err := decodeJSON(resp, &raw); err != nil {",()=>{e.line("return nil, resp, err")},"}"),e.line("return raw, resp, nil")},"}"),e.line("pages := iterPages(call, *op.Pagination, base)")};e.line(`// ${n}Pages iterates ${n} response pages; use with \`for page, err := range\`.`),e.block(`func (c *Client) ${n}Pages(${u}) func(yield func(${o}, error) bool) {`,()=>{l(),e.block(`return func(yield func(${o}, error) bool) {`,()=>{e.block("pages(func(raw any, err error) bool {",()=>{e.line(`var page ${o}`),e.block("if err == nil {",()=>{e.line("err = reencode(raw, &page)")},"}"),e.line("return yield(page, err)")},"})")},"}")},"}"),e.blank(),e.line(`// ${n}Items iterates the items of every ${n} page.`),e.block(`func (c *Client) ${n}Items(${u}) func(yield func(${a}, error) bool) {`,()=>{l(),e.block(`return func(yield func(${a}, error) bool) {`,()=>{e.block("pages(func(raw any, err error) bool {",()=>{e.block("if err != nil {",()=>{e.line(`var zero ${a}`),e.line("return yield(zero, err)")},"}"),e.line("pageItems, _ := resolvePointer(raw, op.Pagination.Items).([]any)"),e.block("for _, item := range pageItems {",()=>{e.line(`var typed ${a}`),e.block("if err := reencode(item, &typed); err != nil {",()=>{e.line("return yield(typed, err)")},"}"),e.block("if !yield(typed, nil) {",()=>{e.line("return false")},"}")},"}"),e.line("return true")},"})")},"}")},"}"),e.blank()}function ne(e){let t=e.split(`
8
+ `),n=[],r=!1;for(let o of t)if(!o.startsWith("package ")){if(o.startsWith("import (")){r=!0;continue}if(r){o.startsWith(")")&&(r=!1);continue}o.startsWith("import ")||n.push(o)}return n.join(`
9
+ `).trim()}var te=["bytes","context","encoding/base64","encoding/json","errors","fmt","io","math/rand","mime/multipart","net/http","net/url","strconv","strings","time"];function re(e,t,n,r,o,a){e.line(ne(N(t,r))),e.blank(),X(e,t),a&&(e.line("// \u2500\u2500\u2500 Embedded runtime (@redocly/client-generator go runtime) \u2500\u2500\u2500"),e.line(ne(C)),e.blank()),e.block("type operationMeta struct {",()=>{e.line("ID string"),e.line("Method string"),e.line("Path string"),e.line("Security [][]SecuritySpec"),e.line("Pagination *PaginationSpec")},"}"),e.blank(),e.block("var operations = map[string]operationMeta{",()=>{for(let{op:i,ident:s}of w(t)){let u=i.specName??i.name,l=Y(i,t),f=o.get(s),m=[`ID: ${c.string(u)}`,`Method: ${c.string(i.method.toUpperCase())}`,`Path: ${c.string(i.path)}`,...l!==void 0?[`Security: ${l}`]:[],...f!==void 0?[`Pagination: ${Z(f)}`]:[]];e.line(`${c.string(u)}: {${m.join(", ")}},`)}},"}"),e.blank();for(let{op:i,ident:s}of w(t))i.queryParams.length!==0&&(e.block(`type ${s}Params struct {`,()=>{for(let u of i.queryParams){let l=g(u.schema,r);e.line(`${d(u.name)} ${l.startsWith("*")?l:`*${l}`}`)}},"}"),e.blank());e.doc("Client",`Client for ${t.title} (${t.version}).`),e.block("type Client struct {",()=>{e.line("config Config")},"}"),e.blank(),e.block("func New(config Config) *Client {",()=>{e.block('if config.ServerURL == "" {',()=>{e.line(`config.ServerURL = ${c.string(n.serverUrl??t.serverUrl??"")}`)},"}"),e.line("return &Client{config: config}")},"}"),e.blank();for(let{op:i,ident:s}of w(t)){U(e,i,s,r),G(i)===void 0&&(i.successResponseHeaders?.length??0)>0&&U(e,i,s,r,t,!0);let u=o.get(s);if(u===void 0)continue;let l=D(i),f=l===void 0?"any":g(l,r),m=Q(l,u.items,t);ee(e,i,s,r,f,m===void 0?"any":g(m,r))}}var ze=({model:e,output:t,banner:n,emit:r,pagination:o})=>{let a=new S,i=r.dateType??"string",s=V(r.goPackage),u=new Map;for(let{op:$,ident:M}of w(e)){let p=o?.get($.name)?.spec;p!==void 0&&u.set(M,p)}a.line(`// Code generated by @redocly/client-generator (go) from "${e.title}" ${e.version}. DO NOT EDIT.`),a.line("// Regenerate with `redocly generate-client`. Standard library only \u2014 zero dependencies."),a.line(`package ${s}`),a.blank();let l=r.runtime!=="module",f=l?te:(()=>{let $=new S;re($,e,r,i,u,!1);let M=$.toString();return te.filter(p=>new RegExp(`\\b${p.split("/").pop()}\\.`).test(M))})();a.block("import (",()=>{for(let $ of f)a.line(c.string($))},")"),a.blank(),re(a,e,r,i,u,l);let m={path:t.path.replace(/\.[^.\\/]+$/,".go"),content:a.toString()};if(l)return[m];let h=n.map($=>`// ${$}`).join(`
10
+ `),k=C.replace(/^package .*$/m,`package ${s}`);return[m,{path:m.path.replace(/[^\\/]+$/,"runtime.go"),content:`${h}
11
+ ${k.trimEnd()}
12
+ `}]};function ce(e,t){let n=t.emit.dateType??"string",r=t.emit.goPackage??"client",o=w(t.model).find(u=>u.op.name===e.name)?.ident??d(e.name),a=["ctx",...e.pathParams.map(u=>`"<${v(u.name,{style:"camel",reserved:b})}>"`),...e.requestBody?[`${g(e.requestBody.schema,n)}{ /* \u2026 */ }`]:[],...e.queryParams.length>0?["nil"]:[]],i=`client.${o}(${a.join(", ")})`,s=G(e)!==void 0?`stream := ${i}`:D(e)===void 0?`err := ${i}`:`result, err := ${i}`;return{lang:"go",label:"Go SDK",source:`client := ${r}.New(${r}.Config{})
13
+ ${s}
14
+ `}}var Qe=({model:e,output:t,emit:n,pagination:r})=>[{path:t.path.replace(/\.[^.\\/]+$/,".go.md"),content:H(e,{title:`${e.title} Go SDK reference`,frontmatter:n.docsFrontmatter===!0,language:{name:"go",label:"Go",fence:"go",requires:"The SDK needs the standard library only."},sample:o=>ce(o,{model:e,emit:n,outputPath:t.path}),paginated:new Set(r?.keys()??[])})}];export{Qe as goDocs,ze as goGenerator,ce as goSample,g as goType,N as renderGoModels};
@@ -0,0 +1,19 @@
1
+ import { createRequire as __createRequire } from 'node:module';
2
+ import { fileURLToPath as __fileURLToPath } from 'node:url';
3
+ import { dirname as __pathDirname } from 'node:path';
4
+ const require = __createRequire(import.meta.url);
5
+ var __filename = __fileURLToPath(import.meta.url);
6
+ var __dirname = __pathDirname(__filename);
7
+ import{a as j}from"./SQVG3CEM.js";import{c as F}from"./UKSQ7B5H.js";import{b as J,c as R,d as T,e as U,f as ne,g as W,h as te}from"./Z45T6MUO.js";import"./C4BP2NXN.js";import"./PFYPTG4G.js";import"./OOMZ7D6R.js";import"./NEWT5A6S.js";import{c as z,d as S,e as x,g as G,h as I,i as Q,j as X,k as Z,n as ee}from"./HJYFWIVE.js";import"./RFWIIJFG.js";var k=z.python,u=new j;function M(e){return u.typeName(e)}function E(e){let{identifier:n,renamed:o}=u.memberName(e);return{python:n,renamed:o}}function C(e){let n=e.services.flatMap(t=>t.operations),o=x(n.map(t=>t.name),{style:"snake",reserved:k});return n.map((t,a)=>({op:t,ident:o[a]}))}var L=["self","body","headers","timeout","retry","idempotency_key"];function oe(e){return u.literal(e)}function se(e){if(e!==void 0)return{style:e.style,...e.param!==void 0?{param:e.param}:{},...e.nextCursor!==void 0?{next_cursor:e.nextCursor}:{},...e.hasMore!==void 0?{has_more:e.hasMore}:{},...e.limitParam!==void 0?{limit_param:e.limitParam}:{},...e.items!==void 0?{items:e.items}:{}}}function re(e,n){let o=new Set;return`[${(e.successResponseHeaders??[]).map(a=>{let r=S(a.name,{style:"snake",reserved:k}),l=r,i=2;for(;o.has(l);)l=`${r}_${i++}`;o.add(l);let m=ee(a.schema,n);return`(${u.string(a.name)}, ${u.string(l)}, ${u.string(m)})`}).join(", ")}]`}function h(e,n="string"){if(Q(e))return`Optional[${h(X(e),n)}]`;switch(e.kind){case"scalar":if(n==="Date"&&e.scalar==="string"){if(e.metadata?.format==="date-time")return"datetime";if(e.metadata?.format==="date")return"date"}return{string:"str",integer:"int",number:"float",boolean:"bool"}[e.scalar];case"array":return`List[${h(e.items,n)}]`;case"record":return`Dict[str, ${h(e.value,n)}]`;case"ref":return M(e.name);case"literal":return`Literal[${u.literal(e.value)}]`;case"enum":return{string:"str",integer:"int",number:"float",boolean:"bool"}[e.scalar];case"union":return`Union[${e.members.map(o=>h(o,n)).join(", ")}]`;case"null":return"None";case"omit":return M(e.base);case"object":case"intersection":case"unknown":return"Any"}}function B(e,n,o,t,a,r,l,i=!1){let m=x([...n.pathParams,...n.queryParams].map(P=>P.name),{style:"snake",reserved:k,taken:L}),c=n.pathParams.map((P,v)=>({param:P,python:m[v]})),s=n.queryParams.map((P,v)=>({param:P,python:m[n.pathParams.length+v]})),p=c.map(({param:P,python:v})=>`${v}: ${h(P.schema,r)}`),f=n.requestBody?[`body: ${h(n.requestBody.schema,r)}`]:[],g=[...s.map(({param:P,python:v})=>{let w=h(P.schema,r),A=w.startsWith("Optional[")?w:`Optional[${w}]`;return`${v}: ${A} = None`}),"headers: Optional[Dict[str, str]] = None","timeout: Optional[float] = None","retry: Optional[Dict[str, Any]] = None","idempotency_key: Any = None"],y=R(n),_=T(n),N=i?`Envelope[${y===void 0?"None":h(y,r)}]`:_!==void 0?`${a?"AsyncIterator":"Iterator"}[ServerSentEvent]`:t==="result"?"Result":y===void 0?"None":h(y,r),O=a&&_===void 0?"async def":"def",d=a?"await ":"",$=a?"send_async":"send",b=["self",...p,...f,"*",...g].join(", "),D=i?`${o}_with_headers`:o;e.block(`${O} ${D}(${b}) -> ${N}:`,()=>{e.doc(i?`Like ${o}(), returning an Envelope with the declared response headers.`:n.summary),e.line(`op = _OPERATIONS["${o}"]`),e.line('auth_headers, auth_query = resolve_auth(op.get("security") or [], self._auth)'),e.line("params: Dict[str, Any] = dict(auth_query)");for(let{param:A,python:q}of s)e.block(`if ${q} is not None:`,()=>{e.line(`params[${u.string(A.name)}] = encode(${q})`)});let P=c.map(({param:A,python:q})=>`${u.string(A.name)}: ${q}`).join(", ");if(e.line(`url = build_url(self._server_url, op["path"], {${P}})`),_!==void 0){let A=_.schema!==void 0&&_.schema.kind!=="unknown"?"json":"text";e.block("def _open(extra_headers: Dict[str, str]):",()=>{e.line('return self._http.stream(op["method"], url, headers={**auth_headers, **(headers or {}), **extra_headers}, params=params, timeout=timeout)')}),e.line(`return ${a?"aiter_sse":"iter_sse"}(_open, data_kind="${A}")`);return}U(n)&&e.line("form_data, form_files = to_multipart(body)");let v=n.requestBody?U(n)?", data=form_data, files=form_files":", json_body=encode(body)":"";e.line(`response = ${d}${$}(self._http, self._config, op, url, method=op["method"], headers={**auth_headers, **(headers or {})}, params=params${v}, timeout=timeout, retry=retry, idempotency_key=idempotency_key)`);let w=y===void 0?"None":`decode(${h(y,r)}, _safe_json(response))`;i?(e.block("if not response.is_success:",()=>{e.line("raise ApiError(url, response.status_code, response.reason_phrase, _safe_json(response))")}),e.line(`return Envelope(data=${w}, headers=read_envelope_headers(response, ${re(n,l)}), response=response)`)):t==="result"?(e.block("if not response.is_success:",()=>{e.line("return Result(data=None, error=_safe_json(response), response=response)")}),e.line(`return Result(data=${w}, error=None, response=response)`)):(e.block("if not response.is_success:",()=>{e.line("raise ApiError(url, response.status_code, response.reason_phrase, _safe_json(response))")}),e.line(y===void 0?"return None":`return ${w}`))}),e.blank()}function ae(e,n,o,t,a,r){let l=R(n),i=l===void 0?"Any":h(l,r),m=x([...n.pathParams,...n.queryParams].map(d=>d.name),{style:"snake",reserved:k,taken:L}),c=n.pathParams.map((d,$)=>({param:d,python:m[$]})),s=n.queryParams.map((d,$)=>({param:d,python:m[n.pathParams.length+$]})),p=c.map(({param:d,python:$})=>`${$}: ${h(d.schema,r)}`),f=[...s.map(({param:d,python:$})=>{let b=h(d.schema,r),D=b.startsWith("Optional[")?b:`Optional[${b}]`;return`${$}: ${D} = None`}),"headers: Optional[Dict[str, str]] = None","timeout: Optional[float] = None","retry: Optional[Dict[str, Any]] = None"],g=["self",...p,"*",...f].join(", "),y=t?"AsyncIterator":"Iterator",_=t?"aiter_pages":"iter_pages",N=t?"aiter_items":"iter_items",O=()=>{e.line("base: Dict[str, Any] = {}");for(let{param:b,python:D}of s)e.block(`if ${D} is not None:`,()=>{e.line(`base[${u.string(b.name)}] = encode(${D})`)});let d=t?"async def":"def",$=t?"await ":"";e.block(`${d} _page(page_params: Dict[str, Any]) -> Tuple[Any, Any]:`,()=>{e.line('auth_headers, auth_query = resolve_auth(op.get("security") or [], self._auth)');let b=c.map(({param:D,python:P})=>`${u.string(D.name)}: ${P}`).join(", ");e.line(`url = build_url(self._server_url, op["path"], {${b}})`),e.line(`response = ${$}${t?"send_async":"send"}(self._http, self._config, op, url, method=op["method"], headers={**auth_headers, **(headers or {})}, params={**page_params, **auth_query}, timeout=timeout, retry=retry)`),e.block("if not response.is_success:",()=>{e.line("raise ApiError(url, response.status_code, response.reason_phrase, _safe_json(response))")}),e.line("return _safe_json(response), response")})};t?(e.block(`async def ${o}_pages(${g}) -> ${y}[${i}]:`,()=>{e.line(`op = _OPERATIONS["${o}"]`),O(),e.block(`async for page in ${_}(_page, op["pagination"], base):`,()=>{e.line(i==="Any"?"yield page":`yield decode(${i}, page)`)})}),e.blank(),e.block(`async def ${o}_items(${g}) -> ${y}[${a}]:`,()=>{e.line(`op = _OPERATIONS["${o}"]`),O(),e.block(`async for item in ${N}(_page, op["pagination"], base):`,()=>{e.line(a==="Any"?"yield item":`yield decode(${a}, item)`)})})):(e.block(`def ${o}_pages(${g}) -> ${y}[${i}]:`,()=>{e.line(`op = _OPERATIONS["${o}"]`),O(),e.line(i==="Any"?`return ${_}(_page, op["pagination"], base)`:`return (decode(${i}, page) for page in ${_}(_page, op["pagination"], base))`)}),e.blank(),e.block(`def ${o}_items(${g}) -> ${y}[${a}]:`,()=>{e.line(`op = _OPERATIONS["${o}"]`),O(),e.line(a==="Any"?`return ${N}(_page, op["pagination"], base)`:`return (decode(${a}, item) for item in ${N}(_page, op["pagination"], base))`)})),e.blank()}function ce(e){return ne(e).map(o=>o.kind==="literal"?u.string(o.value):E(o.name).python).join(" + ")}function ie(e,n){let o=n.servers??[];if(o.length===0)return;let t=new Set;e.block("class Servers:",()=>{e.line('"""The declared servers; variables default to the values from the description."""'),e.blank(),o.forEach((a,r)=>{let l=S(a.description??`server${r+1}`,{style:"snake",reserved:k});t.has(l)&&(l=`${l}_${r+1}`),t.add(l);let i=a.variables.map(m=>`${E(m.name).python}: str = ${u.string(m.default)}`);r>0&&e.blank(),e.line("@staticmethod"),e.block(`def ${l}(${i.join(", ")}) -> str:`,()=>{e.line(`return ${ce(a)}`)})})}),e.blank()}function H(e,n,o,t,a,r,l){let i=t?"AsyncClient":"Client",m=t?"httpx.AsyncClient":"httpx.Client";e.block(`class ${i}:`,()=>{e.doc(`${t?"Async ":""}client for ${n.title} (${n.version}).`),e.block(`def __init__(self, server_url: str = ${u.string(r)}, *, auth: Optional[Dict[str, Any]] = None, headers: Optional[Dict[str, str]] = None, timeout: Optional[float] = None, retry: Optional[Dict[str, Any]] = None, middleware: Optional[List[Any]] = None, idempotency_key: Any = None, http_client: Optional[${m}] = None) -> None:`,()=>{e.line("self._server_url = server_url"),e.line("self._auth = auth or {}"),e.line("self._config: Dict[str, Any] = {"),e.indent(()=>{e.line('"headers": headers or {},'),e.line('"timeout": timeout,'),e.line('"retry": retry or {},'),e.line('"middleware": middleware or [],'),e.line('"idempotency_key": idempotency_key,')}),e.line("}"),e.line(`self._http = http_client or ${m}()`)}),e.blank();for(let{op:c,ident:s}of C(n)){B(e,c,s,o,t,l),T(c)===void 0&&(c.successResponseHeaders?.length??0)>0&&B(e,c,s,o,t,l,n,!0);let p=a.get(s);if(p!==void 0){let f=R(c),g=te(f,typeof p.items=="string"?p.items:void 0,n);ae(e,c,s,t,g===void 0?"Any":h(g,l),l)}}}),e.blank()}function K(e){let n=new Map,o=new Set,t=[];for(let{name:r,schema:l}of e.schemas){let i=I(l,e);if(!(i===void 0||!i.cases.every(c=>G(c.schema,e)?.properties.some(s=>s.name===i.property)===!0))){for(let c of i.cases){let s=n.get(c.schemaName);if(s!==void 0&&s.value!==c.value){o.add(c.schemaName);continue}n.set(c.schemaName,{property:i.property,value:c.value})}t.push({name:r,property:i.property,members:i.cases.map(c=>c.schemaName)})}}let a=new Map;for(let r of t)r.members.some(l=>o.has(l))||a.set(r.name,E(r.property).python);for(let r of o)n.delete(r);return{pins:n,unions:a}}function pe(e,n,o,t,a,r,l){let i=a==="pydantic";i||e.line("@dataclass");let m=i?`class ${M(n)}(BaseModel):`:`class ${M(n)}:`;e.block(m,()=>{e.doc(r),i&&(e.line("model_config = ConfigDict(populate_by_name=True)"),e.blank());let c=[...o.filter(p=>p.required),...o.filter(p=>!p.required)],s=[];c.length===0&&e.line("pass");for(let p of c){let{python:f,renamed:g}=E(p.name);g&&!i&&s.push([f,p.name]);let y=g&&i?`alias=${u.string(p.name)}`:void 0,_=l?.property===p.name?`Literal[${u.literal(l.value)}]`:h(p.schema,t);if(p.required){let N=y===void 0?"":` = Field(${y})`;e.line(`${f}: ${_}${N}`)}else{let N=_.startsWith("Optional[")?_:`Optional[${_}]`,O=y===void 0?"None":`Field(default=None, ${y})`;e.line(`${f}: ${N} = ${O}`)}}if(s.length>0){e.blank(),e.line("# Python field name -> wire (JSON) name, for (de)serialization.");let p=s.map(([f,g])=>`"${f}": ${u.string(g)}`).join(", ");e.line(`_field_map: ClassVar[Dict[str, str]] = {${p}}`)}}),e.blank(),e.blank()}function Y(e,n="string",o="dataclass"){let t=new j,{pins:a,unions:r}=o==="pydantic"?K(e):{pins:new Map,unions:new Map};t.line("from __future__ import annotations"),t.blank(),o==="dataclass"&&t.line("from dataclasses import dataclass"),t.line("from enum import Enum");let l=["Any","AsyncIterator","Dict","Iterator","List","Literal","Optional","Tuple","Union"];o==="dataclass"&&l.splice(2,0,"ClassVar"),r.size>0&&l.unshift("Annotated"),t.line(`from typing import ${l.join(", ")}`),o==="pydantic"&&t.line("from pydantic import BaseModel, ConfigDict, Field"),n==="Date"&&t.line("from datetime import date, datetime"),t.blank(),t.blank();let i=[];for(let{name:m,schema:c}of e.schemas){let s=Z(c);if(s!==void 0){let p=s.scalar==="string"?"str, Enum":"int, Enum";t.block(`class ${M(m)}(${p}):`,()=>{t.doc(c.description),s.values.forEach((f,g)=>{t.line(`${s.memberNames[g]} = ${u.literal(f)}`)})}),t.blank(),t.blank();continue}if(c.kind==="object"||c.kind==="intersection"){let p=G(c,e);if(p!==void 0){pe(t,m,p.properties,n,o,p.description??c.description,a.get(m));continue}}i.push(()=>{let p=I(c,e);if(p!==void 0){let y=p.cases.map(_=>`${_.value} -> ${M(_.schemaName)}`).join(", ");t.line(`# Discriminated by "${p.property}": ${y}`)}let f=r.get(m),g=f===void 0?h(c,n):`Annotated[${h(c,n)}, Field(discriminator=${u.string(f)})]`;t.line(`${M(m)} = ${g}`),t.blank()})}for(let m of i)m();return t.toString()}function le(e,n){let o=[];for(let{name:t,schema:a}of e.schemas){if(n.has(t))continue;let r=I(a,e);if(r===void 0)continue;let l=r.cases.map(i=>`${u.string(i.value)}: ${M(i.schemaName)}`).join(", ");o.push(`DISCRIMINATORS[${M(t)}] = (${u.string(r.property)}, {${l}})`)}return o}var Ve={type:"object",properties:{models:{enum:["dataclass","pydantic"],default:"dataclass",description:"Model style: standard-library dataclasses (default, httpx is the only dependency), or pydantic BaseModel classes (adds pydantic)."}},additionalProperties:!1};function V(e){let n=e.lastIndexOf("/")>=0?"/":"\\",o=e.lastIndexOf(n),t=o>=0?e.slice(0,o+1):"",a=(o>=0?e.slice(o+1):e).replace(/\.[^.]+$/,"");return`${t}${S(a,{style:"snake",reserved:k})}.py`}var ze=({model:e,output:n,banner:o,emit:t,options:a,pagination:r})=>{let l=t.errorMode??"throw",i=t.dateType??"string",m=a?.models??"dataclass",c=m==="pydantic"?K(e):void 0,s=new j;if(s.line(`# Generated by @redocly/client-generator (python) from "${e.title}" ${e.version}.`),s.line("# Do not edit by hand \u2014 regenerate with `redocly generate-client`."),s.line(m==="pydantic"?"# Requires Python >= 3.9, httpx, and pydantic: pip install httpx pydantic":"# Requires Python >= 3.9 and httpx: pip install httpx"),s.blank(),s.line(Y(e,i,m).trimEnd()),s.blank(),s.blank(),ie(s,e),t.runtime==="module"){s.line("# \u2500\u2500\u2500 Runtime (real modules beside this file, written by the same run) \u2500\u2500\u2500");for(let d of Object.keys(F))s.line(`from ${d.replace(/\.py$/,"")} import *`);s.blank(),s.blank()}else{s.line("# \u2500\u2500\u2500 Embedded runtime (@redocly/client-generator python runtime) \u2500\u2500\u2500");for(let d of Object.values(F)){let $=d.split(`
8
+ `).filter(b=>!b.startsWith("from __future__")&&!b.startsWith("from ._")).join(`
9
+ `).trim();s.line($),s.blank()}s.blank()}let p=le(e,new Set(c?.unions.keys()));if(p.length>0){s.line("# Discriminated unions dispatch by their property inside decode().");for(let d of p)s.line(d);s.blank()}s.block("def _safe_json(response: httpx.Response) -> Any:",()=>{s.block("try:",()=>{s.line("return response.json()")}),s.block("except Exception:",()=>{s.line("return None")})}),s.blank();let f=new Map;for(let{op:d,ident:$}of C(e))f.set($,se(r?.get(d.name)?.spec));s.line("_OPERATIONS = {"),s.indent(()=>{for(let{op:d,ident:$}of C(e)){let b={id:d.specName??d.name,method:d.method.toUpperCase(),path:d.path,...W(d,e).length>0?{security:W(d,e)}:{},...f.get($)!==void 0?{pagination:f.get($)}:{}};s.line(`"${$}": ${oe(b)},`)}}),s.line("}"),s.blank(),s.blank();let g=t.serverUrl??e.serverUrl??"";H(s,e,l,!1,f,g,i),H(s,e,l,!0,f,g,i);let y={path:V(n.path),content:s.toString()};if(t.runtime!=="module")return[y];let _=o.map(d=>`# ${d}`).join(`
10
+ `),N=V(n.path).replace(/[^\\/]+$/,""),O=Object.entries(F).map(([d,$])=>({path:`${N}${d}`,content:`${_}
11
+
12
+ ${$.split(`
13
+ `).map(b=>b.startsWith("from ._")?b.replace("from ._","from _"):b).join(`
14
+ `).trim()}
15
+ `}));return[y,...O]};function de(e,n){let o=V(n.outputPath).replace(/^.*[\\/]/,"").replace(/\.py$/,""),t=C(n.model).find(r=>r.op.name===e.name)?.ident??S(e.name,{style:"snake",reserved:k}),a=[...e.pathParams.map(r=>{let l=S(r.name,{style:"snake",reserved:k});return`${l}="<${l}>"`}),...e.queryParams.filter(r=>r.required).map(r=>`${S(r.name,{style:"snake",reserved:k})}=...`),...e.requestBody?["body=..."]:[]];return{lang:"python",label:"Python SDK",source:`from ${o} import Client
16
+
17
+ client = Client()
18
+ result = client.${t}(${a.join(", ")})
19
+ `}}var Je=({model:e,output:n,emit:o,pagination:t})=>[{path:n.path.replace(/\.[^.\\/]+$/,".python.md"),content:J(e,{title:`${e.title} Python SDK reference`,frontmatter:o.docsFrontmatter===!0,language:{name:"python",label:"Python",fence:"python",requires:"The SDK needs `httpx`."},sample:a=>de(a,{model:e,emit:o,outputPath:n.path}),paginated:new Set(t?.keys()??[])})}];export{Je as pythonDocs,ze as pythonGenerator,Ve as pythonOptions,de as pythonSample,h as pythonType,Y as renderPythonModels};
@@ -0,0 +1,90 @@
1
+ import { createRequire as __createRequire } from 'node:module';
2
+ import { fileURLToPath as __fileURLToPath } from 'node:url';
3
+ import { dirname as __pathDirname } from 'node:path';
4
+ const require = __createRequire(import.meta.url);
5
+ var __filename = __fileURLToPath(import.meta.url);
6
+ var __dirname = __pathDirname(__filename);
7
+ import{b as D,g as L}from"./Z45T6MUO.js";import{a as h,c as F,d as J,e as U}from"./C4BP2NXN.js";import{a as _,d as G,e as x,f as R,h as K,i as O,j as Q,k as b,l as V,m as z}from"./NB54XRRU.js";import{n as H}from"./HJYFWIVE.js";import{join as Se}from"node:path";var q="// Generated by @redocly/client-generator \u2014 do not edit by hand.\n// Source: OpenAPI description. Re-run `redocly generate-client` to update.";function N(e){return e.filter(t=>t.length>0).join(`
8
+
9
+ `)+`
10
+ `}function v(e){let t=["/**",` * ${O(`${e.title} (v${e.version})`)}`];if(e.description)for(let n of z(O(e.description)))t.push(` * ${n}`.replace(/ +$/,""));return t.push(" */"),t.join(`
11
+ `)}function P(e){return e.contentType==="multipart/form-data"&&e.schema.kind==="object"}function k(e){let t=new Map(e.pathParams.map(r=>[r.name,r])),n=[];for(let r of e.path.matchAll(/\{([^{}]+)\}/g)){let s=t.get(r[1]);s!==void 0&&n.push(s)}return n}function W(e){let t=k(e),n=e.queryParams.length>0,r=!!e.requestBody,s=e.headerParams.length>0,o=e.cookieParams.length>0;return{hasQuery:n,hasBody:r,hasHeaders:s,hasCookies:o,hasInputs:t.length>0||n||r||s||o,varsRequired:t.length>0||e.queryParams.some(i=>i.required)||(e.requestBody?.required??!1)||e.headerParams.some(i=>i.required)||e.cookieParams.some(i=>i.required),variablesTypeName:`${b(e.name)}Variables`}}var Te=" ";function Pe(e,t=[]){let n=H(e,{schemas:t});return n==="integer"?"number":n}function X(e,t=[]){let n=Y(e,t);if(n.length!==0)return n.map(r=>({name:r.name,key:r.key,type:r.type}))}function C(e,t=[],n=""){let r=n+Te,s=Y(e,t).map(o=>`${r}${o.key}${o.required===!0?"":"?"}: ${o.type};`);return s.length===0?"{}":`{
12
+ ${s.join(`
13
+ `)}
14
+ ${n}}`}function Y(e,t){let n=new Set;return(e??[]).map(r=>({...r,key:R(V(r.name),n),type:Pe(r.schema,t)}))}var ee=" ";function g(e,t,n){let r=Q(e,t);return r===void 0?[]:[`${n}/**`,...O(r).split(`
15
+ `).map(s=>`${n} * ${s}`.replace(/ +$/,"")),`${n} */`]}function Z(e){return typeof e=="string"?JSON.stringify(e):String(e)}function ke(e,t,n){switch(e){case"string":return t?.format==="binary"?"Blob":n==="Date"&&(t?.format==="date-time"||t?.format==="date")?"Date":"string";case"number":case"integer":return"number";case"boolean":return"boolean"}}function E(e){return e.kind==="union"||e.kind==="intersection"||e.kind==="enum"&&e.values.length>1}function l(e,t="string",n=""){switch(e.kind){case"scalar":return ke(e.scalar,e.metadata,t);case"ref":return e.name;case"literal":return Z(e.value);case"enum":return e.values.map(Z).join(" | ");case"null":return"null";case"unknown":return"unknown";case"array":{let r=l(e.items,t,n);return E(e.items)?`(${r})[]`:`${r}[]`}case"record":return`Record<string, ${l(e.value,t,n)}>`;case"object":{if(e.properties.length===0)return"{}";let r=n+ee;return`{
16
+ ${e.properties.flatMap(o=>je(o,t,r)).join(`
17
+ `)}
18
+ ${n}}`}case"union":return e.members.map(r=>{let s=l(r,t,n);return E(r)?`(${s})`:s}).join(" | ");case"intersection":return e.members.map(r=>{let s=l(r,t,n);return E(r)?`(${s})`:s}).join(" & ");case"omit":return`Omit<${e.base}, ${e.keys.map(r=>JSON.stringify(r)).join(" | ")}>`}}function je(e,t,n){let r=x(e.name),s=e.readOnly?"readonly ":"",o=e.required?"":"?",i=l(e.schema,t,n);return[...g(e.description,e.schema.metadata,n),`${n}${s}${r}${o}: ${i};`]}function xe(e){let t=e.schema;return t.kind!=="enum"||t.scalar!=="string"?[]:t.values.every(n=>typeof n=="string"&&_(n))?[`export const ${e.name} = {`,...t.values.map((n,r)=>`${ee}${n}: ${JSON.stringify(n)}${r===t.values.length-1?"":","}`),"} as const;"]:[]}function te(e,t="string"){let n=[];for(let r of e){let s=[...g(r.schema.description??r.description,r.schema.metadata,""),`export type ${r.name} = ${l(r.schema,t)};`];n.push(s.join(`
19
+ `));let o=xe(r);o.length>0&&n.push(o.join(`
20
+ `))}return n.join(`
21
+
22
+ `)}var S=" ";function w(e,t,n=""){if(P(e))return l(e.schema,t,n);switch(e.contentType){case"multipart/form-data":return"FormData";case"application/x-www-form-urlencoded":return"URLSearchParams";case"application/octet-stream":return"Blob | ArrayBuffer";default:return l(e.schema,t,n)}}function $(e,t,n=""){let r=n+S,s=e.flatMap(o=>[...g(o.description,o.schema.metadata,r),`${r}${x(o.name)}${o.required?"":"?"}: ${l(o.schema,t,r)};`]);return s.length===0?"{}":`{
23
+ ${s.join(`
24
+ `)}
25
+ ${n}}`}function B(e,t,n=""){if(e.length===0)return{type:"void",kind:"void"};let r=e.find(a=>a.contentType.toLowerCase().includes("json"));if(r)return{type:l(r.schema,t,n),kind:"json"};let s=[],o=new Set,i=!1,c=!1;for(let a of e){let u;a.contentType.startsWith("image/")||a.contentType==="application/octet-stream"?(u="Blob",i=!0):a.contentType.startsWith("text/")?(u="string",c=!0):u=l(a.schema,t,n),!o.has(u)&&(o.add(u),s.push(u))}return{type:s.join(" | "),kind:i?"blob":c?"text":"json"}}function ne(e,t,n=""){let r=new Set,s=[];for(let o of e){let i=l(o.schema,t,n);r.has(i)||(r.add(i),s.push(i))}return s}function Oe(e,t,n=""){let r=e.sse?.eventSchema;return r?l(r,t,n):"string"}function j(e,t,n,r,s,o){let i=s.has(t)?n():t;return`${o}${e}${r?"":"?"}: ${i};`}function qe(e,t){let n=new Set,r=e;for(;r.kind==="ref";){let{name:s}=r;if(n.has(s))return;n.add(s);let o=t?.find(i=>i.name===s);if(o===void 0)return;r=o.schema}return r}function re(e,t){let n=qe(e,t);if(n?.kind==="object")return n.properties.map(s=>s.name);if(n?.kind!=="intersection")return;let r=new Set;for(let s of n.members){let o=re(s,t);if(o===void 0)return;for(let i of o)r.add(i)}return[...r]}function A(e,t){let n=[...k(e),...e.queryParams,...e.headerParams,...e.cookieParams],r=(e.requestBody?.required??!1)&&e.requestBody!==void 0?re(e.requestBody.schema,t):void 0,s=r!==void 0,o=new Map;for(let c of n)o.set(c.name,(o.get(c.name)??0)+1);e.requestBody&&!s&&o.set("body",(o.get("body")??0)+1);for(let c of r??[])o.set(c,(o.get(c)??0)+1);let i=[...o].filter(([,c])=>c>1).map(([c])=>c);return i.length>0?{collisions:i}:{mergeBody:s}}function Re(e,t,n){return e.flatMap(r=>[...g(r.description,r.schema.metadata,n),`${n}${x(r.name)}${r.required?"":"?"}: ${l(r.schema,t.dateType,n)};`])}function se(e,t,n,r=""){let{dateType:s,schemaNames:o}=n,i=r+S,c=n.argsStyle==="flat"?A(e,n.schemas):void 0;if(c!==void 0&&"mergeBody"in c)return Ne(e,t,n,c.mergeBody,r);let a=[],u=k(e);return u.length>0&&a.push(j("path",`${t}Path`,()=>$(u,s,i),!0,o,i)),e.queryParams.length>0&&a.push(j("query",`${t}Query`,()=>$(e.queryParams,s,i),e.queryParams.some(m=>m.required),o,i)),e.requestBody&&a.push(j("body",`${t}Body`,()=>w(e.requestBody,s,i),e.requestBody.required,o,i)),e.headerParams.length>0&&a.push(j("headers",`${t}Headers`,()=>$(e.headerParams,s,i),e.headerParams.some(m=>m.required),o,i)),e.cookieParams.length>0&&a.push(j("cookies",`${t}Cookies`,()=>$(e.cookieParams,s,i),e.cookieParams.some(m=>m.required),o,i)),a.length===0?"{}":`{
26
+ ${a.join(`
27
+ `)}
28
+ ${r}}`}function Ne(e,t,n,r,s){let o=s+S,i=Re([...k(e),...e.queryParams,...e.headerParams,...e.cookieParams],n,o);e.requestBody&&!r&&i.push(j("body",`${t}Body`,()=>w(e.requestBody,n.dateType,o),e.requestBody.required,n.schemaNames,o));let c=n.schemaNames.has(`${t}Body`)?w(e.requestBody,n.dateType,s):`${t}Body`,a=i.length===0?"{}":`{
29
+ ${i.join(`
30
+ `)}
31
+ ${s}}`;return r?i.length===0?c:`${a} & ${c}`:a}function M(e,t,n){let r=`${b(e.name)}Result`;return t.schemaNames.has(r)?B(e.successResponses,t.dateType,n).type:r}function ve(e,t,n){let r=ne(e.errorResponses,t.dateType,n);if(r.length===0)return"unknown";let s=`${b(e.name)}Error`;return t.schemaNames.has(s)?r.join(" | "):s}function oe(e,t,n){let r=h(e.services);if(r.length===0)return"";let s=r.flatMap(o=>{let i=t.get(o.name),c=b(o.name),a=S+S,u=se(o,c,n,a),m=o.sse!==void 0,p=m?Oe(o,n.dateType,a):n.errorMode==="result"?`Result<${M(o,n,a)}, ${ve(o,n,a)}>`:M(o,n,a),f=[`${a}args: ${u};`,`${a}result: ${p};`];n.errorMode==="result"&&!m&&f.push(`${a}mode: "result";`);let y=o.successResponseHeaders;y&&y.length>0&&f.push(`${a}headers: ${C(y,n.schemas,a)};`);let d=n.pagination?.get(o.name);return d&&(f.push(`${a}item: ${l(d.itemSchema,n.dateType,a)};`),n.errorMode==="result"&&f.push(`${a}page: ${M(o,n,a)};`)),m&&f.push(`${a}kind: "sse";`),[`${S}${i}: {`,...f,`${S}};`]});return[...g("Per-operation `args`/`result` shapes (plus `kind: 'sse'` for event streams) \u2014 the\ntype-level companion of `OPERATIONS` that gives `createClient<Ops>` its typed methods.",void 0,""),"export type Ops = {",...s,"};"].join(`
32
+ `)}function ie(e,t){let{dateType:n,schemaNames:r}=t,s=b(e.name),o=e.sse!==void 0,{hasInputs:i}=W(e),c=[];if(!o){let m=`${s}Result`;if(r.has(m)||c.push(`export type ${m} = ${B(e.successResponses,n).type};`),t.errorMode==="result"){let p=ne(e.errorResponses,n),f=`${s}Error`;p.length>0&&!r.has(f)&&c.push(`export type ${f} = ${p.join(" | ")};`)}}let a=k(e);a.length>0&&!r.has(`${s}Path`)&&c.push(`export type ${s}Path = ${$(a,n)};`),e.queryParams.length>0&&!r.has(`${s}Query`)&&c.push(`export type ${s}Query = ${$(e.queryParams,n)};`),e.requestBody&&!r.has(`${s}Body`)&&c.push(`export type ${s}Body = ${w(e.requestBody,n)};`),e.headerParams.length>0&&!r.has(`${s}Headers`)&&c.push(`export type ${s}Headers = ${$(e.headerParams,n)};`);let u=e.successResponseHeaders;return u&&u.length>0&&!r.has(`${s}ResponseHeaders`)&&c.push(`export type ${s}ResponseHeaders = ${C(u,t.schemas)};`),e.cookieParams.length>0&&!r.has(`${s}Cookies`)&&c.push(`export type ${s}Cookies = ${$(e.cookieParams,n)};`),i&&!r.has(`${s}Variables`)&&c.push(`export type ${s}Variables = ${se(e,s,t)};`),c.join(`
33
+
34
+ `)}function ae(e,t){let n=new Set,r=s=>{switch(s.kind){case"ref":n.add(s.name);return;case"omit":n.add(s.base);return;case"array":r(s.items);return;case"record":r(s.value);return;case"object":for(let o of s.properties)r(o.schema);return;case"union":case"intersection":for(let o of s.members)r(o);return;default:return}};for(let s of h(e.services)){for(let i of[...s.pathParams,...s.queryParams,...s.headerParams,...s.cookieParams])r(i.schema);s.requestBody&&r(s.requestBody.schema);for(let i of s.successResponses)r(i.schema),i.itemSchema&&r(i.itemSchema);if(t.errorMode==="result")for(let i of s.errorResponses)r(i.schema);let o=t.pagination?.get(s.name);o&&r(o.itemSchema)}return[...n].filter(s=>t.schemaNames.has(s)).sort()}function I(e){let t=new Set(U),n=new Map;for(let r of h(e.services))n.set(r.name,R(r.name,t));return n}function we(e,t,n,r,s=[],o="grouped"){let i=[...e.pathParams,...e.queryParams,...e.headerParams,...e.cookieParams].map(p=>({name:p.name,in:p.in,...p.style!==void 0?{style:p.style}:{},...p.explode!==void 0?{explode:p.explode}:{},...p.allowReserved!==void 0?{allowReserved:p.allowReserved}:{}})),c=L(e,{securitySchemes:t}),u=e.sse!==void 0?"sse":B(e.successResponses,n).kind,m=X(e.successResponseHeaders,s);return{id:e.specName??e.name,method:e.method.toUpperCase(),path:e.path,...e.tags.length>0?{tags:e.tags}:{},...i.length>0?{params:i}:{},...e.requestBody?{body:{contentType:e.requestBody.contentType,...P(e.requestBody)?{multipart:!0}:{}}}:{},...u!=="json"?{responseKind:u}:{},...e.sse===void 0?{}:{sseDataKind:e.sse.dataKind},...c.length>0?{security:c}:{},...m===void 0?{}:{responseHeaders:m},...r?.has(e.name)?{pagination:r.get(e.name).spec}:{},...o==="flat"&&"collisions"in A(e,s)?{argsStyle:"grouped"}:{}}}function ce(e,t,n,r,s="grouped"){let o=h(e.services);if(o.length===0)return"";let i=o.map((a,u)=>{let m=K(we(a,e.securitySchemes,n,r,e.schemas,s));return` ${t.get(a.name)}: ${m}${u===o.length-1?"":","}`}),c=[[...g(`The wire-shape descriptor for every operation, keyed by operationId \u2014 the data the
35
+ runtime routes requests by. Also minification-safe static metadata (method, path,
36
+ tags) for cache keys, tracing span names, and request logging.`,void 0,""),"export const OPERATIONS = {",...i,"} as const satisfies Record<string, OperationDescriptor>;"].join(`
37
+ `),'export type OperationId = (typeof OPERATIONS)[keyof typeof OPERATIONS]["id"];','export type OperationPath = (typeof OPERATIONS)[keyof typeof OPERATIONS]["path"];'];return o.some(a=>a.tags.length>0)&&c.push(`export type OperationTag = Extract<(typeof OPERATIONS)[keyof typeof OPERATIONS], {
38
+ tags: readonly string[];
39
+ }>["tags"][number];`),c.join(`
40
+
41
+ `)}var Be="// \u2500\u2500\u2500 Embedded runtime (@redocly/client-generator, assembled per this API's needs) \u2500\u2500\u2500";function ue(e){let t=["types.ts","errors.ts","url.ts","parse.ts","retry.ts"];return e.multipart&&t.push("multipart.ts"),e.auth&&t.push("auth.ts"),e.setup&&t.push("setup.ts"),e.paginate&&t.push("paginate.ts"),t.push("send.ts"),e.sse&&t.push("sse.ts"),t.push("create-client.ts"),t}function me(e){return[Be,...ue(e).map(t=>J[t]),fe(e)].join(`
42
+
43
+ `)}function pe(e,t="js"){let n=[...ue(e).map(r=>({name:r,content:F[r]})),{name:"factory.ts",content:Ie(e)}];return t==="js"?n:n.map(({name:r,content:s})=>({name:r,content:s.replace(/(from '\.\/[a-z-]+)\.js'/g,"$1.ts'")}))}function Ie(e){let t=["import { createClientCore } from './create-client.js';",...e.multipart?["import { toFormData } from './multipart.js';"]:[],...e.auth?["import { resolveAuth } from './auth.js';"]:[],...e.paginate?["import { items, itemsByLink, pages, pagesByLink } from './paginate.js';"]:[],...e.sse?["import { sse } from './sse.js';"]:[],`import type {
44
+ Client,
45
+ ClientConfig,
46
+ OperationContext,
47
+ OperationDescriptor,
48
+ OpsShape,
49
+ } from './types.js';`],n=["export { ApiError, TimeoutError } from './errors.js';","export { defaultRetryOn } from './retry.js';",...e.setup?["export { mergeSetup } from './setup.js';"]:[],"export type * from './types.js';"];return[t.join(`
50
+ `),fe(e),n.join(`
51
+ `)].join(`
52
+
53
+ `)}function fe(e){let t=[...e.multipart?["serializeMultipart: toFormData"]:[],...e.auth?["resolveAuth"]:[],...e.sse?["sse"]:[],...e.paginate?["paginate: { pages, items, pagesByLink, itemsByLink }"]:[]];return`/**
54
+ * The client factory: \`createClientCore\` wired with the capabilities this API needs.
55
+ * Exported so apps can build additional instances (per-tenant, per-environment) over
56
+ * the same \`OPERATIONS\`/\`Ops\`. The trailing string params carry the wiring's literal
57
+ * unions (\`OperationId\`/\`OperationPath\`/\`OperationTag\`) into \`ctx.operation\`.
58
+ */
59
+ export function createClient<
60
+ Ops extends OpsShape,
61
+ Id extends string = string,
62
+ Path extends string = string,
63
+ Tag extends string = string,
64
+ >(
65
+ operations: Record<string, OperationDescriptor>,
66
+ config?: ClientConfig<OperationContext<Id, Path, Tag>>
67
+ ): Client<Ops, OperationContext<Id, Path, Tag>> {
68
+ return createClientCore<Ops, Id, Path, Tag>(operations, config, ${t.length>0?`{ ${t.join(", ")} }`:"{}"});
69
+ }`}function le(e){let t=new Map(e.map(s=>[s.name,s.schema])),n=[],r=new Set;for(let s of e)for(let o of Ce(s)){let i=o.union.discriminator??Ee(o.union,t);if(!i)continue;let c=new Map;for(let a of i.mapping){if(!t.has(a.schemaName))continue;let u=c.get(a.schemaName);u?u.push(a.value):c.set(a.schemaName,[a.value])}for(let[a,u]of c){let m=`is${a}`;if(r.has(m))continue;r.add(m);let p=`(value as Record<string, unknown>)[${JSON.stringify(i.propertyName)}]`,f=u.length===1?`${p} === ${JSON.stringify(u[0])}`:`([${u.map(y=>JSON.stringify(y)).join(", ")}] as readonly unknown[]).includes(${p})`;n.push(["/**",` * Narrow a \`${o.label}\` to \`${a}\` via its \`${i.propertyName}\` discriminant.`," */",`export function ${m}(value: ${o.label}): value is ${a} {`,` return ${f};`,"}"].join(`
70
+ `))}}return n.join(`
71
+
72
+ `)}function Ce(e){let t=[],n=e.schema;if(n.kind==="union"){t.push({union:n,label:e.name});for(let r of n.members)T(r,t)}else T(n,t);return t}function T(e,t){switch(e.kind){case"union":{let n=e.members.map(r=>r.kind==="ref"?r.name:void 0);n.every(r=>r!==void 0)&&t.push({union:e,label:n.join(" | ")});for(let r of e.members)T(r,t);break}case"array":T(e.items,t);break;case"record":T(e.value,t);break;case"object":for(let n of e.properties)T(n.schema,t);break;case"intersection":for(let n of e.members)T(n,t);break}}function Ee(e,t){let n=[];for(let s of e.members){if(s.kind!=="ref"||!t.get(s.name))return;n.push(s.name)}if(n.length<2)return;let r=n.map(s=>Me(t.get(s)));for(let s of Object.keys(r[0])){if(!r.every(i=>s in i))continue;let o=r.map(i=>i[s]);if(o.every(i=>typeof i=="string")&&new Set(o).size===o.length)return{propertyName:s,mapping:n.map((i,c)=>({value:o[c],schemaName:i}))}}}function Me(e){let t={},n=r=>{if(r.kind==="object")for(let s of r.properties)s.schema.kind==="literal"&&(t[s.name]=s.schema.value);else if(r.kind==="intersection")for(let s of r.members)n(s)};return n(e),t}function he(e,t={}){return be(e,t).entry}function ye(e,t){let n=h(e.services);return{multipart:n.some(r=>r.requestBody&&P(r.requestBody)),auth:e.securitySchemes.length>0||n.some(r=>r.security.length>0),sse:n.some(r=>r.sse!==void 0),setup:!!t.setup,paginate:(t.pagination??new Map).size>0}}function ge(e,t){return t.runtime!=="module"?[]:pe(ye(e,t),t.importExt??"js").map(({name:n,content:r})=>({name:n,content:`${q}
73
+
74
+ ${r.trim()}
75
+ `}))}function Ae(e,t,n){let r=e.importExt??"js",s=["OperationDescriptor",...e.setup?["ClientConfig","Middleware"]:[],...t.errorMode==="result"&&n?["Result"]:[]].sort();return[`import { createClient${e.setup?", mergeSetup":""} } from './runtime/factory.${r}';`,`import type { ${s.join(", ")} } from './runtime/types.${r}';`,`export * from './runtime/factory.${r}';`].join(`
76
+ `)}function $e(e,t,n){return be(e,t,n)}function be(e,t,n){let r=h(e.services),s=I(e),o=t.pagination??new Map,i={argsStyle:t.argsStyle??"grouped",errorMode:t.errorMode??"throw",dateType:t.dateType??"string",schemaNames:new Set(e.schemas.map(d=>d.name)),schemas:e.schemas,pagination:o},c=r.length>0?[oe(e,s,i),ce(e,s,i.dateType,o,i.argsStyle)]:["export type Ops = Record<string, never>;","export const OPERATIONS = {} as const satisfies Record<string, OperationDescriptor>;"],a=t.runtime==="module"?Ae(t,i,r.length>0):me(ye(e,t)),u=[te(e.schemas,i.dateType),le(e.schemas)].filter(d=>d.length>0).join(`
77
+
78
+ `),m=[...r.map(d=>ie(d,i)),...c].filter(d=>d.length>0).join(`
79
+
80
+ `),p=He(r,s),f=t.runtime==="module";if(n===void 0)return{entry:N([q,v(e),...f?[a]:[],[u,m].filter(d=>d.length>0).join(`
81
+
82
+ `),...f?[]:[a],de(t,i,e),p])};let y=u.length>0;return{entry:N([q,v(e),...f?[a]:[],y?De(e,i,`./${n}.schemas.${t.importExt??"js"}`):"",m,...f?[]:[a],de(t,i,e),p]),schemas:y?N([q,v(e),u]):void 0}}function De(e,t,n){let r=ae(e,t);return`${r.length>0?`import type { ${r.join(", ")} } from '${n}';
83
+ `:""}export * from '${n}';`}function de(e,t,n){let r=e.serverUrl??n.serverUrl,s=[...r!==void 0?[`serverUrl: ${G(r)}`]:[],...t.errorMode==="result"?['errorMode: "result"']:[],...t.argsStyle==="flat"?['argsStyle: "flat"']:[],'clientHeader: "redocly-client-generator"'],o=s.length>0?`{ ${s.join(", ")} }`:"{}",i=e.setup?`mergeSetup({ config: ${o} }, mergeSetup(__redoclySetup, {}))`:o,c=h(n.services),a=c.some(p=>p.tags.length>0),m=`export const client = createClient${c.length>0?`<Ops, OperationId, OperationPath, ${a?"OperationTag":"string"}>`:"<Ops>"}(OPERATIONS, ${i});`;return e.setup?`// \u2500\u2500\u2500 Baked-in setup (--setup) \u2500\u2500\u2500
84
+ const __redoclySetup: { config?: ClientConfig; middleware?: Middleware[] } = ${e.setup};
85
+ `+m:m}function He(e,t){let n=["export const { configure, use } = client;"];if(e.length===0)return n.join(`
86
+ `);let r=e.map(s=>t.get(s.name)).join(", ");return n.push(`export const { ${r} } = client;`),n.join(`
87
+ `)}var Rt=({model:e,output:t,outputMode:n,emit:r})=>{let s=ge(e,r).map(({name:o,content:i})=>({path:Se(t.dir,"runtime",o),content:i}));if(n==="split"){let{dir:o,stem:i}=t,{entry:c,schemas:a}=$e(e,r,i);return[...a===void 0?[]:[{path:Se(o,`${i}.schemas.ts`),content:a}],{path:t.path,content:c},...s]}return[{path:t.path,content:he(e,r)},...s]},Nt=({model:e,output:t,emit:n,pagination:r})=>[{path:t.path.replace(/\.[^.\\/]+$/,".typescript.md"),content:D(e,{title:`${e.title} TypeScript client reference`,frontmatter:n.docsFrontmatter===!0,language:{name:"typescript",label:"TypeScript",fence:"typescript",requires:"The client has no dependencies."},sample:s=>Le(s,{model:e,emit:n,outputPath:t.path}),paginated:new Set(r?.keys()??[])})}];function Le(e,t){let n=I(t.model).get(e.name)??e.name,s=`./${t.outputPath.replace(/^.*[\\/]/,"").replace(/\.[^.]+$/,"")}.${t.emit.importExt??"js"}`,o=e.queryParams.filter(p=>p.required),i=t.emit.argsStyle==="flat",c=e.pathParams.map(p=>`${p.name}: '<${p.name}>'`),a=o.map(p=>`${p.name}: /* \u2026 */`),u=i?[...c,...a,...e.requestBody?["/* body properties */"]:[]]:[...c.length>0?[`path: { ${c.join(", ")} }`]:[],...a.length>0?[`query: { ${a.join(", ")} }`]:[],...e.requestBody?["body: { /* \u2026 */ }"]:[]],m=u.length>0?[`{ ${u.join(", ")} }`]:[];return{lang:"typescript",label:"TypeScript SDK",source:`import { ${n} } from '${s}';
88
+
89
+ const result = await ${n}(${m.join(", ")});
90
+ `}}export{W as a,g as b,l as c,Rt as d,Nt as e,Le as f};