@redocly/cli 2.46.1 → 2.47.0
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/{UJCMWVNQ.js → 34J2ZJDK.js} +1 -1
- package/lib/chunks/{BBD3XTYV.js → 5NR4DJW4.js} +1 -1
- package/lib/chunks/{S4YMP7WS.js → 5PXRDPHV.js} +1 -1
- package/lib/chunks/B6HS7CVY.js +184 -0
- package/lib/chunks/{LM4ILYQB.js → KEUH3PST.js} +1 -1
- package/lib/chunks/{6HJS3QTE.js → PIJLRHNN.js} +1 -1
- package/lib/chunks/{XQ3FQDLA.js → QL4V2A4A.js} +1 -1
- package/lib/chunks/{7KOLBOQ5.js → QRD3XQNU.js} +1 -1
- package/lib/chunks/{EGP3MDOE.js → QVV2EKMT.js} +1 -1
- package/lib/chunks/{WWAK47VB.js → REBHK2JR.js} +1 -1
- package/lib/chunks/{QGADGBO2.js → RIFZSMUA.js} +1 -1
- package/lib/chunks/{S4PYKAM6.js → S4MX7JPH.js} +1 -1
- package/lib/chunks/{7DHIX3GL.js → SL6AH3N2.js} +1 -1
- package/lib/chunks/{GWXW4B2G.js → SN2EC2ZR.js} +1 -1
- package/lib/chunks/{7XBUQR4I.js → TEQA5OM7.js} +1 -1
- package/lib/chunks/{GCKQFE6S.js → TO2KJ36N.js} +1 -1
- package/lib/chunks/{ES5AJGDA.js → W2NJCZOS.js} +1 -1
- package/lib/chunks/{KOGLVETP.js → Y5HLCNL5.js} +1 -1
- package/lib/chunks/{LLREHKJO.js → YQW463Z7.js} +1 -1
- package/lib/index.js +18 -11
- package/package.json +1 -1
- package/lib/chunks/CN6PFMVJ.js +0 -184
|
@@ -4,7 +4,7 @@ import { dirname as __pathDirname } from 'node:path';
|
|
|
4
4
|
const require = __createRequire(import.meta.url);
|
|
5
5
|
var __filename = __fileURLToPath(import.meta.url);
|
|
6
6
|
var __dirname = __pathDirname(__filename);
|
|
7
|
-
import{a as G}from"./
|
|
7
|
+
import{a as G}from"./TO2KJ36N.js";import{c as I,d as N,e as fe,h as q,j as _,k as ue,v as D,w as B}from"./YQW463Z7.js";import{a as ce,c as pe}from"./RIFZSMUA.js";import{b as ae}from"./QRD3XQNU.js";import{B as oe,C as P,O as y,c as b,ca as se,ia as ie,l as $}from"./B6HS7CVY.js";import"./NEWT5A6S.js";import"./RFWIIJFG.js";import{mkdir as Bt,writeFile as zt}from"node:fs/promises";import Ht from"node:path";import*as Ce from"node:process";var Ve=/^[a-zA-Z][a-zA-Z0-9]*(?:[_\-.][a-zA-Z0-9]+)*$/,Fe=/^[0-9a-f-]{8,}$/i,Ye=[["uuid",/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i],["date-time",/^\d{4}-\d{2}-\d{2}[Tt]\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:[Zz]|[+-]\d{2}:\d{2})$/],["date",/^\d{4}-\d{2}-\d{2}$/],["email",/^[^\s@]+@[^\s@]+\.[^\s@]+$/],["uri",/^https?:\/\/\S+$/],["ipv4",/^(?:(?:25[0-5]|2[0-4]\d|1?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|1?\d?\d)$/]],J=new WeakMap;function z(e){return{formats:Ye.filter(([,t])=>t.test(e)).map(([t])=>t),values:[e],count:1,overflow:!1}}function C(e,t){if(!e)return t;if(!t)return e;let r={formats:e.formats.filter(n=>t.formats.includes(n)),values:[],count:e.count+t.count,overflow:e.overflow||t.overflow};if(!r.overflow){let n=[...e.values];for(let o of t.values)n.includes(o)||n.push(o);n.length>10?r.overflow=!0:r.values=n}return r}function H(e,t){J.set(e,t)}function L(e){return J.get(e)}function U(e,t){let r=J.get(e);r&&J.set(t,r)}function Ke(e){return e.length<=30&&!Fe.test(e)&&Ve.test(e)}function W(e,t){return e.formats.length>0?{format:e.formats[0]}:t&&!e.overflow&&e.count>=4&&e.values.length>0&&e.values.length<=5&&e.values.length*2<=e.count&&e.values.every(Ke)?{enum:[...e.values].sort()}:{}}function R(e){let t=J.get(e);if(t){let r=typeof e.type=="string"?[e.type]:e.type??[];r.includes("string")&&Object.assign(e,W(t,r.length===1))}for(let r of Object.values(e.properties??{}))R(r);e.additionalProperties&&R(e.additionalProperties),e.items&&R(e.items);for(let r of e.oneOf??[])R(r)}function me(e){for(let t of Object.values(e.paths))for(let r of Object.values(t)){for(let n of Object.values(r.requestBody?.content??{}))R(n.schema);for(let n of Object.values(r.responses))for(let o of Object.values(n.content??{}))R(o.schema)}for(let t of Object.values(e.components?.schemas??{}))R(t);return e}var be=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,F=/^\d+$/,We=/^[0-9a-hjkmnp-tv-z]{26}$/i,Xe=/^[a-z][a-z0-9]*_(?=[0-9a-z]*\d)[0-9a-z]{10,}$/i,Ze=/^[a-z](?=[a-z0-9]*\d)[a-z0-9]{23,24}$/,Z=new Set(ce),Qe=new Set(["get","head"]),de="application/x-www-form-urlencoded",le="multipart/form-data";function et(e){return e?F.test(e)||be.test(e)||We.test(e)||Xe.test(e)||Ze.test(e)?!0:/^[0-9a-f]{16,}$/i.test(e):!1}function Q(e){let t=e.split("/"),r=[],n=new Set;return{template:t.map((s,a)=>{if(!et(s))return s;let i=t[a-1],c=i?`${$(i,1)}Id`:"id",p=1;for(;n.has(c);)p+=1,c=i?`${$(i,1)}Id${p}`:`id${p}`;return n.add(c),r.push({name:c,value:s}),`{${c}}`}).join("/")||"/",params:r}}function A(e){if(e===null)return{type:"null"};if(Array.isArray(e)){if(e.length===0)return{type:"array"};let t=e.slice(0,20).map(A);return{type:"array",items:x(t)}}switch(typeof e){case"string":{let t={type:"string"};return H(t,z(e)),t}case"boolean":return{type:"boolean"};case"number":return Number.isInteger(e)?{type:"integer"}:{type:"number"};case"object":{let t=Object.entries(e);if(t.length>0&&(t.every(([a])=>F.test(a))||t.every(([a])=>be.test(a))))return{type:"object",additionalProperties:x(t.map(([,a])=>A(a)))};let r={},n=[];for(let[s,a]of t)r[s]=A(a),n.push(s);let o={type:"object",properties:r};return n.length>0&&(o.required=n),o}default:return{}}}function x(e){if(e.length===0)return{};let[t,...r]=e,n=t;for(let o of r)n=V(n,o);return n}function he(e){return Object.keys(e).length===0}function k(e){return e.additionalProperties?"map":e.type==="object"?"object":e.type==="array"?"array":"scalar"}function X(e){return e.oneOf?e.oneOf.flatMap(X):Array.isArray(e.type)?e.type.map(t=>{if(t==="object"){let n={type:"object"};return e.properties&&(n.properties=e.properties),e.required&&(n.required=e.required),e.additionalProperties&&(n.additionalProperties=e.additionalProperties),n}if(t==="array")return e.items?{type:"array",items:e.items}:{type:"array"};let r={type:t};return t==="string"&&U(e,r),r}):[e]}var tt=.5,rt=3;function we(e,t){let r=Object.keys(e.properties??{}),n=Object.keys(t.properties??{});if(r.length===0||n.length===0)return 1;let o=new Set(n),s=r.filter(a=>o.has(a)).length;return s/(r.length+n.length-s)}function nt(e,t){let r=k(e);if(r!==k(t))return!1;switch(r){case"scalar":return e.type===t.type||e.type==="integer"&&t.type==="number"||e.type==="number"&&t.type==="integer";case"object":return we(e,t)>=tt;default:return!0}}function ve(e,t){switch(k(e)){case"scalar":{if(e.type!==t.type)return{type:"number"};if(e.type==="string"){let r=C(L(e),L(t));if(r){let n={type:"string"};return H(n,r),n}}return e}case"map":return{type:"object",additionalProperties:V(e.additionalProperties??{},t.additionalProperties??{})};case"object":{let r={...e.properties??{}};for(let[a,i]of Object.entries(t.properties??{}))r[a]=r[a]?V(r[a],i):i;let n=new Set(t.required??[]),o=(e.required??[]).filter(a=>n.has(a)),s={type:"object",properties:r};return o.length>0&&(s.required=o),s}case"array":{if(!e.items||!t.items){let r=e.items??t.items;return r?{type:"array",items:r}:{type:"array"}}return{type:"array",items:V(e.items,t.items)}}}}function ot(e){let t=[...e],r=()=>t.filter(n=>k(n)==="object").length;for(;r()>rt;){let n=-1,o=-1,s=-1;for(let a=0;a<t.length;a++)if(k(t[a])==="object")for(let i=a+1;i<t.length;i++){if(k(t[i])!=="object")continue;let c=we(t[a],t[i]);c>s&&(s=c,n=a,o=i)}t[n]=ve(t[n],t[o]),t.splice(o,1)}return t}var st=["boolean","integer","number","string","null"];function it(e){if(e.length===1)return e[0];let t=[],r=new Set,n;for(let i of e)k(i)==="scalar"&&typeof i.type=="string"?(r.add(i.type),i.type==="string"&&(n=C(n,L(i)))):t.push(i);let o=st.filter(i=>r.has(i)),s=i=>{let c={type:i};return(typeof i=="string"?i==="string":i.includes("string"))&&n&&H(c,n),c};if(t.length===0)return o.length===1?s(o[0]):s(o);if(t.length===1&&o.length===1&&o[0]==="null"&&typeof t[0].type=="string")return{...t[0],type:[t[0].type,"null"]};let a=[...t];return o.length===1?a.push(s(o[0])):o.length>1&&a.push(s(o)),{oneOf:a}}function V(e,t){if(he(e)||he(t))return{};let r=X(e);for(let n of X(t)){let o=r.findIndex(s=>nt(s,n));o===-1?r.push(n):r[o]=ve(r[o],n)}return it(ot(r))}function at(e){if(!e)return;let t=e.trim();if(!(!t.startsWith("{")&&!t.startsWith("[")))try{return JSON.parse(t)}catch{return}}function ct(e,t){let r=t?.match(/boundary="?([^";,]+)"?/i)?.[1];if(!r)return;let n={};for(let o of e.split(`--${r}`)){let s=o.match(/^\r?\n([\s\S]*?)\r?\n\r?\n([\s\S]*)\r?\n$/);if(!s)continue;let[,a,i]=s,c=a.match(/\bname="([^"]*)"/i)?.[1];c!==void 0&&(n[c]=/\bfilename="/i.test(a)?{type:"string",format:"binary"}:A(i))}if(Object.keys(n).length!==0)return{type:"object",properties:n,required:Object.keys(n)}}function ge(e){let t=_(e.contentType);if(e.bodyJson!==void 0)return{mime:ue(t)?t:"application/json",schema:A(e.bodyJson)};if(t===de&&e.bodyText){let n={};for(let[o,s]of new URLSearchParams(e.bodyText))n[o]=s;return Object.keys(n).length===0?void 0:{mime:de,schema:A(n)}}if(t===le&&e.bodyText){let n=ct(e.bodyText,e.contentType);return n?{mime:le,schema:n}:void 0}let r=at(e.bodyText);if(r!==void 0)return{mime:"application/json",schema:A(r)}}function ye(e,t,r){let n=e.get(t);e.set(t,n?x([n,r]):r)}async function Oe(e){let t=await N(e.trafficPath);if(t.length===0)throw new Error("No traffic files found in the provided traffic path.");let r=D(e.server),n=new Map,o=new Set,s=0,a=c=>{let p=c.request.method.toLowerCase();if(!Z.has(p))return;let f=c.request.path||"/";if(r){let u=B(c.request,r);if(u===void 0)return;f=u}else c.request.host&&!fe(c.request.host)&&o.add(`${c.request.protocol}//${c.request.host}`);let{template:l,params:m}=Q(q(f)),w=`${p} ${l}`,d=n.get(w);d||(d={method:p,template:l,pathParams:new Map,queryParams:new Map,requestBodies:new Map,responses:new Map},n.set(w,d));for(let{name:u,value:h}of m){let g=d.pathParams.get(u);d.pathParams.set(u,{numeric:(g?.numeric??!0)&&F.test(h),observations:C(g?.observations,z(h))})}for(let u of new Set(c.request.query.keys())){let h=c.request.query.getAll(u),g=d.queryParams.get(u),v=h.length>0&&h.every(O=>F.test(O)),S=g?.observations;for(let O of h)S=C(S,z(O));d.queryParams.set(u,{numeric:(g?.numeric??!0)&&v,observations:S})}if(!Qe.has(p)){let u=ge(c.request);u&&ye(d.requestBodies,u.mime,u.schema)}if(c.response&&c.response.status>=100){let u=String(c.response.status),h=d.responses.get(u);h||(h={bodies:new Map},d.responses.set(u,h)),h.statusText??=c.response.statusText||void 0;let g=ge(c.response);g&&ye(h.bodies,g.mime,g.schema)}};for(let c of t){let p=await G(c,e.format);if(!p){y.warn(`Skipping traffic file with unrecognized format: ${c}
|
|
8
8
|
`);continue}s+=1;for await(let f of p.parse(c))a(f)}if(s===0)throw new Error("No supported traffic files found to generate an OpenAPI description from.");if(n.size===0)throw new Error(r?`No HTTP exchanges in the traffic matched the server "${r}".`:"No HTTP exchanges were observed in the traffic. Cannot generate an OpenAPI description.");let i=r?[r]:Array.from(o).sort();return pt(n,e.title??"Generated API",i)}function $e(e){return Object.values(e.paths).reduce((t,r)=>t+Object.keys(r).length,0)}function Se(e,t){if(e.numeric)return{type:"integer"};let r={type:"string"};return e.observations&&Object.assign(r,W(e.observations,t)),r}function pt(e,t,r){let n={};for(let o of e.values()){let s=n[o.template]??={},a=[...Array.from(o.pathParams).map(([c,p])=>({name:c,in:"path",required:!0,schema:Se(p,!1)})),...Array.from(o.queryParams).map(([c,p])=>({name:c,in:"query",required:!1,schema:Se(p,!0)}))],i={operationId:ft(o.method,o.template),responses:{}};if(a.length>0&&(i.parameters=a),o.requestBodies.size>0){let c={};for(let[p,f]of o.requestBodies)c[p]={schema:f};i.requestBody={content:c}}if(o.responses.size===0)i.responses.default={description:"Observed response"};else for(let[c,p]of o.responses){let f={description:p.statusText||"Observed response"};if(p.bodies.size>0){let l={};for(let[m,w]of p.bodies)l[m]={schema:w};f.content=l}i.responses[c]=f}s[o.method]=i}return{openapi:"3.2.0",info:{title:t,version:"1.0.0"},...r.length>0?{servers:r.map(o=>({url:o}))}:{},paths:n}}function ft(e,t){let r=t.split("/").filter(Boolean).map(n=>n.replace(/[{}]/g,"")).join("-");return`${e}-${r||"root"}`}function Y(e,t){return`${e.toUpperCase()} ${t}`}function Pe(e,t){let r;if(e.bodyJson!==void 0)try{r=JSON.stringify(e.bodyJson)}catch{r=void 0}if(r??=e.bodyText,!r)return;let n=r.trim();if(n)return n.length>t?`${n.slice(0,t)}\u2026[truncated]`:n}function Te(e){if(!e)return"";let t=e.bodyJson;return t===void 0?e.bodyText?_(e.contentType)||"text":"":t===null?"null":Array.isArray(t)?`array<${t.length>0?Ee(t[0]):""}>`:Ee(t)}function Ee(e){return b(e)?Object.keys(e).sort().join(","):e===null?"null":typeof e}async function Re(e){let t=e.perGroup??2,r=e.perOperation??4,n=e.maxBodyChars??2e3,o=D(e.server),s=await N(e.trafficPath),a=new Map;for(let c of s){let p=await G(c,e.format);if(p)for await(let f of p.parse(c)){let l=f.request.method.toUpperCase();if(!Z.has(l.toLowerCase()))continue;let m=f.request.path||"/";if(o){let ne=B(f.request,o);if(ne===void 0)continue;m=ne}let w=q(m),{template:d}=Q(w),u=f.response&&f.response.status>=100?f.response:void 0,h=u?.status,g=`${Te(f.request)}\u2192${Te(u)}`,v=a.get(Y(l,d));v||(v=new Map,a.set(Y(l,d),v));let S=`${h??""} ${g}`,O=v.get(S);O||(O=[],v.set(S,O)),!(O.length>=t)&&O.push({method:l,path:w,query:f.request.query.toString(),status:h,requestContentType:f.request.contentType,requestBody:Pe(f.request,n),responseContentType:u?.contentType,responseBody:u?Pe(u,n):void 0})}}let i=new Map;for(let[c,p]of a){let f=[];for(let l=0;l<t&&f.length<r;l++)for(let m of p.values()){if(f.length>=r)break;m[l]&&f.push(m[l])}i.set(c,f)}return i}var ut=`You are an expert API designer. You are given one operation from an OpenAPI 3.2 description that was inferred mechanically from recorded HTTP traffic, the component schemas it references, and a sample of the real recorded HTTP exchanges for that operation. The inferred description is only a hypothesis: types are coarse, every observed property is marked required, and descriptions are missing. Alternative body shapes observed in the traffic appear as "oneOf" variants or type unions. Common string formats (uuid, date-time, date, email, uri, ipv4) and small closed enums are detected conservatively from the observed values.
|
|
9
9
|
|
|
10
10
|
Refine the operation into the most accurate OpenAPI 3.2 definition you can justify from the evidence, while staying conservative:
|
|
@@ -5,4 +5,4 @@ const require = __createRequire(import.meta.url);
|
|
|
5
5
|
var __filename = __fileURLToPath(import.meta.url);
|
|
6
6
|
var __dirname = __pathDirname(__filename);
|
|
7
7
|
import{a as fe}from"./WZXA5XPB.js";import"./RFWIIJFG.js";function ce(e){return e}async function V(e){return typeof e=="function"?await e():e}function le(e){let t="";for(let n of new TextEncoder().encode(e))t+=String.fromCharCode(n);return btoa(t)}function pe(e,t){return e.kind==="apiKey"?t.auth?.apiKey?.[e.scheme]!==void 0:e.kind==="bearer"?t.auth?.bearer!==void 0:t.auth?.basic!==void 0}async function Q(e,t){let n=e.find(d=>d.every(a=>pe(a,t)))??e[0]??[],o={},r={},s=[];for(let d of n)if(d.kind==="apiKey"){let a=t.auth?.apiKey?.[d.scheme];if(a===void 0)continue;let c=await V(a);d.in==="header"?o[d.name]=c:d.in==="query"?r[d.name]=c:s.push(`${d.name}=${encodeURIComponent(c)}`)}else if(d.kind==="bearer"){let a=t.auth?.bearer;a!==void 0&&(o.Authorization=`Bearer ${await V(a)}`)}else{let a=t.auth?.basic;a!==void 0&&(o.Authorization=`Basic ${le(`${a.username}:${a.password}`)}`)}return s.length>0&&(o.Cookie=s.join("; ")),{headers:o,query:r}}var S=class extends Error{url;status;statusText;body;constructor(t,n,o,r){super(`Request failed with status ${n}`),this.name="ApiError",this.url=t,this.status=n,this.statusText=o,this.body=r}},O=class extends Error{operationId;timeout;attempt;constructor(t,n,o){super(`Request "${t}" timed out after ${n} ms (attempt ${o})`),this.name="TimeoutError",this.operationId=t,this.timeout=n,this.attempt=o}};function j(e){let t=e.reason;return t instanceof Error?t:new DOMException("The operation was aborted.","AbortError")}async function P(e,t){if(t==="void"){if(e.status===204||e.status===205||e.status===304||!(e.headers.get("content-type")??"").toLowerCase().includes("json"))return;let s=await e.text().catch(()=>"");if(s==="")return;try{return JSON.parse(s)}catch{return}}if(e.status===204)return;if(t==="stream")return e.body;if(t==="blob")return e.blob();if(t==="arrayBuffer")return e.arrayBuffer();if(t==="formData")return e.formData();if(t==="text")return e.text();if(t==="json")return e.json();let n=(e.headers.get("content-type")??"").toLowerCase();if(n.includes("json"))return e.json();if(n.startsWith("text/"))return e.text();let o=await e.blob();return o.size>0?o:void 0}async function k(e){return(e.headers.get("content-type")??"").toLowerCase().includes("json")?e.json().catch(()=>{}):e.text().catch(()=>{})}var me=new Set(["GET","HEAD","PUT","DELETE","OPTIONS"]),ye=new Set([408,429,500,502,503,504]);function U(e){return me.has(e.request.method.toUpperCase())||"Idempotency-Key"in e.request.headers||"idempotency-key"in e.request.headers?e.response===void 0||ye.has(e.response.status):!1}function z(e,t,n){if(n){let s=Number(n);if(!Number.isNaN(s))return s*1e3;let d=Date.parse(n);if(!Number.isNaN(d))return Math.max(0,d-Date.now())}let o=e.retryDelay??1e3,r=e.retryStrategy==="fixed"?o:o*Math.pow(2,t-1);return e.jitter===!1?r:Math.random()*r}function $(e,t){return new Promise((n,o)=>{if(t?.aborted){o(j(t));return}let r=()=>{clearTimeout(s),o(j(t))},s=setTimeout(()=>{t&&t.removeEventListener("abort",r),n()},e);t&&t.addEventListener("abort",r,{once:!0})})}function D(e){if(e===void 0)return{};if(e instanceof Headers){let t={};return e.forEach((n,o)=>{t[o]=n}),t}return Array.isArray(e)?Object.fromEntries(e):e}function _(e){return[...e.onRequest||e.onResponse||e.onError?[{onRequest:e.onRequest,onResponse:e.onResponse,onError:e.onError}]:[],...e.middleware??[]]}async function I(e,t,n,o,r,s,d,a="application/json"){let{retry:c,timeout:f,idempotencyKey:u,...i}=o,l={...e.retry,...c},p=f??e.timeout,m=u??e.idempotencyKey,E=typeof e.headers=="function"?await e.headers():e.headers,A={Accept:a,...E,...D(i.headers)},B=(i.method??"GET").toUpperCase();m!==void 0&&m!==!1&&(B==="POST"||B==="PATCH")&&!("Idempotency-Key"in A)&&!("idempotency-key"in A)&&(A["Idempotency-Key"]=typeof m=="string"?m:typeof m=="function"?m():crypto.randomUUID()),typeof e.clientHeader=="string"&&typeof document>"u"&&!("X-Redocly-Client"in A)&&!("x-redocly-client"in A)&&(A["X-Redocly-Client"]=e.clientHeader);let y={url:n,method:i.method??"GET",headers:A,body:r,operation:t},T=_(e);for(let h of T)h.onRequest&&await h.onRequest(y);let R;if(y.body!==void 0){let h=y.body,w=h instanceof Blob||h instanceof ArrayBuffer||ArrayBuffer.isView(h),g=typeof FormData<"u"&&h instanceof FormData,L=h instanceof URLSearchParams;if(g||L||w||typeof h=="string")R=h;else if(s?.multipart===!0){if(!d.serializeMultipart)throw new Error("Multipart capability not wired: cannot serialize the request body");R=d.serializeMultipart(h)}else R=JSON.stringify(h),!("Content-Type"in y.headers)&&!("content-type"in y.headers)&&(y.headers["Content-Type"]=s?.contentType??"application/json")}let q=e.fetch??fetch,v=1+(l.retries??0),C=l.retryOn??U,x=i.signal??void 0,b=0;for(;;){if(b++,x?.aborted)throw j(x);let h=p?x?AbortSignal.any([x,AbortSignal.timeout(p)]):AbortSignal.timeout(p):x,w;try{w=await q(y.url,{...i,signal:h,method:y.method,headers:y.headers,body:R})}catch(g){if(b<v&&!x?.aborted&&await C({attempt:b,request:y,error:g})){await $(z(l,b,null),x);continue}throw p&&!x?.aborted&&g instanceof DOMException&&g.name==="TimeoutError"?new O(t.id,p,b):g}for(let g=T.length-1;g>=0;g--){let L=T[g].onResponse;if(L){let H=await L(w,y);H&&H!==w&&(await w.body?.cancel().catch(()=>{}),w=H)}}if(!w.ok&&b<v&&!x?.aborted&&await C({attempt:b,request:y,response:w})){let g=w.headers.get("retry-after");await w.body?.cancel().catch(()=>{}),await $(z(l,b,g),x);continue}return{response:w,context:y}}}function M(e){return encodeURIComponent(e).replace(/%(3A|2F|3F|23|5B|5D|40|21|24|26|27|28|29|2A|2B|2C|3B|3D)/g,t=>decodeURIComponent(t))}function X(e,t){return e.replace(/\{([^{}]+)\}/g,(n,o)=>{let r=t[o];if(r===void 0)throw new Error(`Missing path parameter "${o}"`);return encodeURIComponent(String(r))})}function Y(e,t,n,o){let r=e.length;for(;r>0&&e.charCodeAt(r-1)===47;)r--;let s=e.slice(0,r)+t;if(!n)return s;let d=new URLSearchParams,a=[];for(let[f,u]of Object.entries(n)){if(u==null)continue;let i=o?.[f];if(!i){if(Array.isArray(u))for(let l of u)l!=null&&d.append(f,String(l));else if(Object(u)===u)for(let[l,p]of Object.entries(u))p!=null&&d.append(`${f}[${l}]`,String(p));else d.append(f,String(u));continue}if(Array.isArray(u)){let l=u.filter(p=>p!=null).map(String);if(i.style==="form"&&i.explode)for(let p of l)i.allowReserved?a.push(`${f}=${M(p)}`):d.append(f,p);else{let p=i.style==="pipeDelimited"?"|":i.style==="spaceDelimited"?"%20":",",m=i.allowReserved?M:encodeURIComponent;a.push(`${encodeURIComponent(f)}=${l.map(m).join(p)}`)}}else if(Object(u)===u)for(let[l,p]of Object.entries(u))p!=null&&(i.allowReserved?a.push(`${f}[${l}]=${M(String(p))}`):d.append(`${f}[${l}]`,String(p)));else i.allowReserved?a.push(`${f}=${M(String(u))}`):d.append(f,String(u))}let c=[d.toString(),...a].filter(Boolean).join("&");return c?`${s}?${c}`:s}function te(e){return e==="text"?"text/*":e==="blob"||e==="arrayBuffer"||e==="stream"||e==="formData"?"*/*":"application/json"}function re(e){return e.responseKind==="void"||e.responseKind==="blob"||e.responseKind==="text"?e.responseKind:"auto"}function he(e,t){let n={},o=new Set;for(let r of e.params??[])r.in==="path"&&(o.add(r.name),n[r.name]=t[r.name]);for(let r of Object.keys(t))if(!(r==="params"||r==="body"||r==="headers"||r==="cookies")&&!o.has(r))throw new TypeError(`Unknown argument "${r}" for operation "${e.id}". Query parameters go under params: { \u2026 } and the request body under body; valid keys are params, body, headers, cookies`+(o.size>0?`, and the path parameters (${[...o].join(", ")}).`:"."));return{path:n,query:t.params,body:t.body,headers:t.headers,cookies:t.cookies}}function we(e){let t;for(let n of e.params??[])n.in!=="query"||!(n.style!==void 0&&n.style!=="form"||n.explode===!1||n.allowReserved===!0)||(t??={},t[n.name]={style:n.style??"form",explode:n.explode??!0,allowReserved:n.allowReserved});return t}function be(e){let t={};for(let[n,o]of Object.entries(e??{}))o!=null&&(t[n]=String(o));return t}async function J(e,t,n,o,r){let{path:s,query:d,body:a,headers:c,cookies:f}=he(t,n),u=t.security?.length&&r.resolveAuth?await r.resolveAuth(t.security,e):{headers:{},query:{}},i=Object.entries(f??{}).filter(([,E])=>E!=null).map(([E,A])=>`${E}=${encodeURIComponent(String(A))}`);i.length>0&&(u.headers.Cookie=[u.headers.Cookie,...i].filter(Boolean).join("; "));let l={...d,...u.query},p=Y(e.serverUrl??"",X(t.path,s),Object.keys(l).length>0?l:void 0,we(t)),m={...o,method:t.method.toUpperCase(),headers:{...u.headers,...be(c),...D(o.headers)}};return{url:p,init:m,body:a}}function xe(e,t){if(e!==null){if(t==="number"){if(e.trim()==="")return;let n=Number(e);return Number.isFinite(n)?n:void 0}if(t==="boolean"){let n=e.trim().toLowerCase();return n==="true"?!0:n==="false"?!1:void 0}return e}}function ge(e,t){let n={};for(let o of t??[]){let r=xe(e.headers.get(o.name),o.type);r!==void 0&&(n[o.key]=r)}return n}async function Ee(e,t,n,o,r){let s=await J(e,t,n,o,r),d={id:t.id,path:t.path,tags:[...t.tags??[]]},{parseAs:a,envelope:c,...f}=s.init,u=a??re(t),{response:i,context:l}=await I(e,d,s.url,f,s.body,t.body,r,te(u));if(e.errorMode==="result")return i.ok?{data:await P(i,u),error:void 0,response:i}:{data:void 0,error:await k(i),response:i};if(!i.ok){let m=new S(l.url,i.status,i.statusText,await k(i));for(let E of _(e))E.onError&&(m=await E.onError(m,l));throw m}let p=await P(i,u);return c===!0?{data:p,headers:ge(i,t.responseHeaders),response:i}:p}function F(e,t){if(!e.paginate)throw new Error(`Pagination capability not wired: cannot iterate operation "${t.id}"`);return e.paginate}function Z(e,t){let n=(o,r)=>{if(!r||r.envelope===void 0)return e(o,r);let{envelope:s,...d}=r;return e(o,d)};return t.errorMode!=="result"?n:async(o,r)=>{let s=await n(o,r);if(!s.response.ok){let{response:d}=s;throw new S(d.url,d.status,d.statusText,s.error)}return s.data}}function ee(e,t,n){return async(o={},r={})=>{let s=await J(e,t,o,r,n),{parseAs:d,envelope:a,...c}=s.init,f=d??re(t),u={id:t.id,path:t.path,tags:[...t.tags??[]]},{response:i}=await I(e,u,s.url,c,s.body,t.body,n,te(f));if(!i.ok)throw new S(s.url,i.status,i.statusText,await k(i));return{page:await P(i,f),linkHeader:i.headers.get("link"),url:i.url===""?s.url:i.url}}}function ne(e,t={},n={}){let o=t,r={...o,middleware:[...o.middleware??[]]},s={};for(let[d,a]of Object.entries(e))if(a.responseKind==="sse"){let c=(f={},u={})=>{if(!n.sse)throw new Error(`SSE capability not wired: cannot stream operation "${a.id}"`);let i=n.sse;return(async function*(){let l={id:a.id,path:a.path,tags:[...a.tags??[]]};yield*i(r,l,async()=>{let m=await J(r,a,f,u,n);return{url:m.url,init:m.init,body:m.body}},a.sseDataKind??"text")})()};Object.defineProperty(c,"name",{value:d}),Object.defineProperty(c,"operationId",{value:a.id}),s[d]=c}else{let c=(u={},i={})=>Ee(r,a,u,i,n);Object.defineProperty(c,"name",{value:d}),Object.defineProperty(c,"operationId",{value:a.id});let f=a.pagination;s[d]=f===void 0?c:f.style==="link"?Object.assign(c,{pages:(u,i)=>F(n,a).pagesByLink(ee(r,a,n),u,i),items:(u,i)=>F(n,a).itemsByLink(ee(r,a,n),f,u,i)}):Object.assign(c,{pages:(u,i)=>F(n,a).pages(Z(c,r),f,u,i),items:(u,i)=>F(n,a).items(Z(c,r),f,u,i)})}return s.configure=d=>{let{errorMode:a,auth:c,...f}=d;Object.assign(r,f),c&&(r.auth={...r.auth,...c,...c.apiKey?{apiKey:{...r.auth?.apiKey,...c.apiKey}}:{}})},s.use=(...d)=>{r.middleware=[...r.middleware??[],...d]},s.auth={bearer(d){r.auth={...r.auth,bearer:d}},basic(d,a){r.auth={...r.auth,basic:{username:d,password:a}}},apiKey(d,a){r.auth={...r.auth,apiKey:{...r.auth?.apiKey,[d]:a}}}},s}function oe(e){let t=new FormData,n=(o,r)=>{r!=null&&(r instanceof Blob||typeof r=="string"?t.append(o,r):r instanceof Date?t.append(o,r.toISOString()):Object(r)===r?t.append(o,JSON.stringify(r)):t.append(o,String(r)))};for(let[o,r]of Object.entries(e))if(Array.isArray(r))for(let s of r)n(o,s);else n(o,r);return t}function N(e,t){if(t==="")return e;if(!t.startsWith("/"))return;let n=e;for(let o of t.slice(1).split("/")){let r=o.replaceAll("~1","/").replaceAll("~0","~");if(Array.isArray(n)){if(!/^(0|[1-9]\d*)$/.test(r))return;n=n[Number(r)]}else if(Object(n)===n&&r in n)n=n[r];else return}return n}async function*G(e,t,n={},o){if(t.style==="cursor"){let r=n.params?.[t.param];for(;;){let s={...n.params};r!==void 0&&(s[t.param]=r);let d=await e({...n,params:s},o);if(yield d,t.hasMore!==void 0&&N(d,t.hasMore)===!1)return;let a=N(d,t.nextCursor);if(a==null||a==="")return;if(typeof a!="string"&&typeof a!="number")throw new Error(`Pagination cursor at ${t.nextCursor} is not a string or number`);if(a===r)throw new Error("Pagination did not advance: operation returned the same cursor twice");r=a}}else{if(t.style==="link")throw new Error("link-style pagination iterates via pagesByLink");{let r=n.params?.[t.param],s=t.style==="page"?1:0,a=r==null||r===""||Number.isNaN(Number(r))?s:Number(r),c;for(;;){let f=await e({...n,params:{...n.params,[t.param]:a}},o),u=N(f,t.items),i=Array.isArray(u)?JSON.stringify(u):void 0;if(i!==void 0&&i===c)throw new Error("Pagination did not advance: the operation returned the same page twice");if(yield f,!Array.isArray(u)||u.length===0)return;c=i,a+=t.style==="page"?1:u.length}}}}async function*ie(e,t,n,o){for await(let r of G(e,t,n,o)){let s=N(r,t.items);Array.isArray(s)&&(yield*s)}}function ve(e){if(e!==null)for(let t of e.split(/,\s*(?=<)/)){let n=/^\s*<([^>]*)>(.*)$/.exec(t);if(!n)continue;let o=/;\s*rel\s*=\s*"?([^";]+)"?/i.exec(n[2]);if(o&&o[1].split(/\s+/).includes("next"))return n[1]}}async function*W(e,t={},n){let o=t.params,r;for(;;){let{page:s,linkHeader:d,url:a}=await e({...t,params:o},n);yield s;let c=ve(d);if(c===void 0)return;let f=new URL(a,"http://relative.invalid"),u=new URL(c,f).toString();if(u===r||u===f.toString())throw new Error('Pagination did not advance: the Link rel="next" target repeats');r=u;let i={};for(let[l,p]of new URL(u).searchParams){let m=i[l];m===void 0?i[l]=p:Array.isArray(m)?m.push(p):i[l]=[m,p]}o={...t.params,...i}}}async function*ae(e,t,n,o){for await(let r of W(e,n,o)){let s=N(r,t.items);Array.isArray(s)&&(yield*s)}}var Se=/(?:\r\n|\r|\n){2}/,K=class extends Error{};async function*de(e,t,n,o="text"){let r,s,d=0;for(;;){let{url:a,init:c,body:f}=await n(),{reconnect:u=!0,reconnectDelay:i,...l}=c,p=l.signal??void 0;if(p?.aborted)return;let m={Accept:"text/event-stream",...D(l.headers)},E=r===void 0?m:{...m,"Last-Event-ID":r};try{let{response:y}=await I(e,t,a,{...l,method:l.method??"GET",headers:E,timeout:0},f,void 0,{});if(!y.ok){let C=await k(y);throw new S(a,y.status,y.statusText,C)}d=0;let T=y.body;if(!T)return;let R=T.getReader(),q=new TextDecoder,v="";try{for(;;){let{done:C,value:x}=await R.read();v+=C?q.decode():q.decode(x,{stream:!0});let b;for(;(b=Se.exec(v))!==null;){let h=v.slice(0,b.index);v=v.slice(b.index+b[0].length);let w=se(h,o);w&&(w.id!==void 0&&(r=w.id),w.retry!==void 0&&(s=w.retry),yield w)}if(C){let h=v.length>0?se(v,o):void 0;h&&(h.id!==void 0&&(r=h.id),h.retry!==void 0&&(s=h.retry),yield h);return}if(v.length>1048576)throw new K("SSE frame exceeded 1048576 characters without a delimiter")}}finally{await R.cancel().catch(()=>{})}}catch(y){if(p?.aborted)return;if(y instanceof S||y instanceof K||!u)throw y}d++;let B=Math.min((s??i??1e3)*Math.pow(2,d-1),3e4);try{await $(Math.random()*B,p)}catch{return}}}function se(e,t){let n,o=[],r,s,d=!1;for(let f of e.split(/\r\n|\n|\r/)){if(f===""||f.startsWith(":"))continue;let u=f.indexOf(":"),i=u===-1?f:f.slice(0,u),l=u===-1?"":f.slice(u+1);l.startsWith(" ")&&(l=l.slice(1)),d=!0,i==="event"?n=l:i==="data"?o.push(l):i==="id"?r=l:i==="retry"&&/^\d+$/.test(l)&&(s=Number(l))}if(!d)return;let a=o.join(`
|
|
8
|
-
`),c=a;if(t==="json"&&a!=="")try{c=JSON.parse(a)}catch(f){throw new K(`Failed to parse SSE event data as JSON: ${f instanceof Error?f.message:String(f)}`)}return{event:n,data:c,id:r,retry:s}}function ue(e,t={}){return{...e?.config,...t,middleware:[...e?.middleware??[],...t.middleware??[]]}}function Ae(e,t){return ne(e,t,{serializeMultipart:oe,resolveAuth:Q,sse:de,paginate:{pages:G,items:ie,pagesByLink:W,itemsByLink:ae}})}function Re(e,t){let n={...e};for(let[o,r]of Object.entries(t))r!==void 0&&(n[o]=r);return n}function it(e){return e}async function st(e){return(await import("./
|
|
8
|
+
`),c=a;if(t==="json"&&a!=="")try{c=JSON.parse(a)}catch(f){throw new K(`Failed to parse SSE event data as JSON: ${f instanceof Error?f.message:String(f)}`)}return{event:n,data:c,id:r,retry:s}}function ue(e,t={}){return{...e?.config,...t,middleware:[...e?.middleware??[],...t.middleware??[]]}}function Ae(e,t){return ne(e,t,{serializeMultipart:oe,resolveAuth:Q,sse:de,paginate:{pages:G,items:ie,pagesByLink:W,itemsByLink:ae}})}function Re(e,t){let n={...e};for(let[o,r]of Object.entries(t))r!==void 0&&(n[o]=r);return n}function it(e){return e}async function st(e){return(await import("./Y5HLCNL5.js")).generateClient(e)}export{S as ApiError,fe as NotSupportedError,O as TimeoutError,Ae as createClient,U as defaultRetryOn,ce as defineClientSetup,it as defineGenerator,st as generateClient,Re as mergeConfig,ue as mergeSetup};
|