@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.
- package/lib/chunks/35BATN22.js +7 -0
- package/lib/chunks/37RBKLUU.js +14 -0
- package/lib/chunks/3BTIKQAQ.js +19 -0
- package/lib/chunks/3DIWMNOJ.js +90 -0
- package/lib/chunks/3JJEI7CJ.js +456 -0
- package/lib/chunks/46KFQMCS.js +7 -0
- package/lib/chunks/4PFY5RPW.js +30 -0
- package/lib/chunks/{D6S7GKN4.js → 5WVB7LML.js} +1 -1
- package/lib/chunks/6IXCU6KT.js +9 -0
- package/lib/chunks/{WAZP3OP5.js → 6WGJWHOP.js} +1 -1
- package/lib/chunks/7KLHUI3Y.js +57 -0
- package/lib/chunks/{34665V6U.js → A2TDXIWP.js} +1 -1
- package/lib/chunks/AE5USMLG.js +7 -0
- package/lib/chunks/AG7UA53E.js +7 -0
- package/lib/chunks/BEN3TY6X.js +7 -0
- package/lib/chunks/C464GG43.js +177 -0
- package/lib/chunks/C4BP2NXN.js +5400 -0
- package/lib/chunks/E74SGDON.js +177 -0
- package/lib/chunks/EOITKU64.js +22 -0
- package/lib/chunks/{QBCF3BIY.js → FDYPEXOY.js} +1 -1
- package/lib/chunks/{R4HDQ5SM.js → FTM2HU3K.js} +2 -2
- package/lib/chunks/HJYFWIVE.js +9 -0
- package/lib/chunks/IUJJ3KUS.js +42 -0
- package/lib/chunks/J3C5POOY.js +16 -0
- package/lib/chunks/K7OI5UYO.js +16 -0
- package/lib/chunks/L3TZNNJJ.js +13 -0
- package/lib/chunks/L6BZYHN2.js +20 -0
- package/lib/chunks/LMPUNDIR.js +7 -0
- package/lib/chunks/LTEJ6I5K.js +78 -0
- package/lib/chunks/N2C3ZU6S.js +26 -0
- package/lib/chunks/NB54XRRU.js +10 -0
- package/lib/chunks/NSIQWNYL.js +7 -0
- package/lib/chunks/NWMTC4AN.js +7 -0
- package/lib/chunks/OOMZ7D6R.js +184 -0
- package/lib/chunks/{TKIQOCZU.js → OZZB57U2.js} +1 -1
- package/lib/chunks/P5RL4YY3.js +14 -0
- package/lib/chunks/PFYPTG4G.js +7 -0
- package/lib/chunks/{VDL64T4H.js → PROUTMLE.js} +1 -1
- package/lib/chunks/{PW2LOSDZ.js → PUK7OBOJ.js} +1 -1
- package/lib/chunks/Q5PIP5PR.js +7 -0
- package/lib/chunks/{6CMEUUQ2.js → QJQKVSIY.js} +1 -1
- package/lib/chunks/{H6V74SNJ.js → QWKVXDPE.js} +1 -1
- package/lib/chunks/REFX2EKS.js +13 -0
- package/lib/chunks/RHYDJFS7.js +22 -0
- package/lib/chunks/S5BFMDM5.js +7 -0
- package/lib/chunks/S5OEJJFB.js +42 -0
- package/lib/chunks/SGBB4RNM.js +11 -0
- package/lib/chunks/SGQGFJO5.js +19 -0
- package/lib/chunks/SQVG3CEM.js +8 -0
- package/lib/chunks/{ANBA5OHN.js → SUDGTHJT.js} +1 -1
- package/lib/chunks/{FMKICTSK.js → SVA2MPBH.js} +1 -1
- package/lib/chunks/{YL33ECLE.js → TH7LPXNA.js} +1 -1
- package/lib/chunks/TS2TZTTS.js +18 -0
- package/lib/chunks/TSB6PODJ.js +13 -0
- package/lib/chunks/{C2YM4HLB.js → UJERG45P.js} +1 -1
- package/lib/chunks/UKSQ7B5H.js +2268 -0
- package/lib/chunks/{K7CE22EJ.js → WWFDF4VZ.js} +1 -1
- package/lib/chunks/{UJ5PVXXU.js → XDAABV4X.js} +1 -1
- package/lib/chunks/XJTWNH6U.js +67 -0
- package/lib/chunks/XSO3PW3X.js +20 -0
- package/lib/chunks/YA5DA34P.js +7 -0
- package/lib/chunks/Z45T6MUO.js +11 -0
- package/lib/chunks/ZBL4IVEW.js +11 -0
- package/lib/chunks/ZXA6O24J.js +7 -0
- package/lib/eject-assets/AGENTS.md +137 -0
- package/lib/eject-assets/generators/cli/docs.ts +224 -0
- package/lib/eject-assets/generators/cli/engine-source.ts +21 -0
- package/lib/eject-assets/generators/cli/index.ts +90 -0
- package/lib/eject-assets/generators/cli/render.ts +348 -0
- package/lib/eject-assets/generators/go/client.ts +57 -0
- package/lib/eject-assets/generators/go/descriptor.ts +41 -0
- package/lib/eject-assets/generators/go/index.ts +336 -0
- package/lib/eject-assets/generators/go/models.ts +179 -0
- package/lib/eject-assets/generators/go/naming.ts +49 -0
- package/lib/eject-assets/generators/go/operations.ts +296 -0
- package/lib/eject-assets/generators/go/pagination.ts +194 -0
- package/lib/eject-assets/generators/go/types.ts +60 -0
- package/lib/eject-assets/generators/mock/faker.ts +214 -0
- package/lib/eject-assets/generators/mock/index.ts +35 -0
- package/lib/eject-assets/generators/mock/render.ts +282 -0
- package/lib/eject-assets/generators/mock/sample.ts +316 -0
- package/lib/eject-assets/generators/mock/values.ts +63 -0
- package/lib/eject-assets/generators/php/client.ts +63 -0
- package/lib/eject-assets/generators/php/descriptor.ts +58 -0
- package/lib/eject-assets/generators/php/index.ts +237 -0
- package/lib/eject-assets/generators/php/models.ts +275 -0
- package/lib/eject-assets/generators/php/naming.ts +51 -0
- package/lib/eject-assets/generators/php/operations.ts +232 -0
- package/lib/eject-assets/generators/php/pagination.ts +133 -0
- package/lib/eject-assets/generators/php/types.ts +148 -0
- package/lib/eject-assets/generators/python/client.ts +123 -0
- package/lib/eject-assets/generators/python/descriptor.ts +52 -0
- package/lib/eject-assets/generators/python/index.ts +251 -0
- package/lib/eject-assets/generators/python/models.ts +242 -0
- package/lib/eject-assets/generators/python/naming.ts +46 -0
- package/lib/eject-assets/generators/python/operations.ts +147 -0
- package/lib/eject-assets/generators/python/pagination.ts +128 -0
- package/lib/eject-assets/generators/python/types.ts +54 -0
- package/lib/eject-assets/generators/swr/index.ts +37 -0
- package/lib/eject-assets/generators/swr/render.ts +78 -0
- package/lib/eject-assets/generators/tanstack-query/index.ts +48 -0
- package/lib/eject-assets/generators/tanstack-query/render.ts +346 -0
- package/lib/eject-assets/generators/transformers/index.ts +46 -0
- package/lib/eject-assets/generators/transformers/render.ts +506 -0
- package/lib/eject-assets/generators/typescript/banner.ts +35 -0
- package/lib/eject-assets/generators/typescript/client.ts +254 -0
- package/lib/eject-assets/generators/typescript/descriptor.ts +137 -0
- package/lib/eject-assets/generators/typescript/index.ts +101 -0
- package/lib/eject-assets/generators/typescript/inline-runtime.ts +135 -0
- package/lib/eject-assets/generators/typescript/operation-signature.ts +62 -0
- package/lib/eject-assets/generators/typescript/operation-types.ts +17 -0
- package/lib/eject-assets/generators/typescript/operations.ts +524 -0
- package/lib/eject-assets/generators/typescript/response-headers.ts +74 -0
- package/lib/eject-assets/generators/typescript/type-guards.ts +159 -0
- package/lib/eject-assets/generators/typescript/types.ts +172 -0
- package/lib/eject-assets/generators/zod/index.ts +32 -0
- package/lib/eject-assets/generators/zod/schemas.ts +456 -0
- package/lib/eject-assets/skills/cli-generator/SKILL.md +121 -0
- package/lib/eject-assets/skills/client-generators/SKILL.md +142 -0
- package/lib/eject-assets/skills/go-generator/SKILL.md +96 -0
- package/lib/eject-assets/skills/mock-generator/SKILL.md +50 -0
- package/lib/eject-assets/skills/php-generator/SKILL.md +112 -0
- package/lib/eject-assets/skills/python-generator/SKILL.md +110 -0
- package/lib/eject-assets/skills/swr-generator/SKILL.md +50 -0
- package/lib/eject-assets/skills/tanstack-query-generator/SKILL.md +55 -0
- package/lib/eject-assets/skills/transformers-generator/SKILL.md +47 -0
- package/lib/eject-assets/skills/typescript-generator/SKILL.md +95 -0
- package/lib/eject-assets/skills/zod-generator/SKILL.md +54 -0
- package/lib/index.js +256 -216
- package/package.json +1 -1
- package/lib/chunks/6XPR5CIN.js +0 -8
- package/lib/chunks/M24HB3SV.js +0 -187
- 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};
|