@runware/sdk-js 1.2.9 → 1.2.10-beta.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/dist/index.cjs +2 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/readme.md +4 -0
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
var ze=Object.create;var he=Object.defineProperty;var Ye=Object.getOwnPropertyDescriptor;var Xe=Object.getOwnPropertyNames;var Je=Object.getPrototypeOf,Ze=Object.prototype.hasOwnProperty;var et=(a,e)=>()=>(e||a((e={exports:{}}).exports,e),e.exports);var tt=(a,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Xe(e))!Ze.call(a,o)&&o!==t&&he(a,o,{get:()=>e[o],enumerable:!(n=Ye(e,o))||n.enumerable});return a};var nt=(a,e,t)=>(t=a!=null?ze(Je(a)):{},tt(e||!a||!a.__esModule?he(t,"default",{value:a,enumerable:!0}):t,a));var Pe=et((Kn,Me)=>{"use strict";var Oe=a=>a&&a.CLOSING===2,bt=()=>typeof WebSocket<"u"&&Oe(WebSocket),Tt=()=>({constructor:bt()?WebSocket:null,maxReconnectionDelay:1e4,minReconnectionDelay:1500,reconnectionDelayGrowFactor:1.3,connectionTimeout:4e3,maxRetries:1/0,debug:!1}),Ut=(a,e,t)=>{Object.defineProperty(e,t,{get:()=>a[t],set:n=>{a[t]=n},enumerable:!0,configurable:!0})},Le=a=>a.minReconnectionDelay+Math.random()*a.minReconnectionDelay,ft=(a,e)=>{let t=e*a.reconnectionDelayGrowFactor;return t>a.maxReconnectionDelay?a.maxReconnectionDelay:t},Rt=["onopen","onclose","onmessage","onerror"],kt=(a,e,t)=>{Object.keys(t).forEach(n=>{t[n].forEach(([o,s])=>{a.addEventListener(n,o,s)})}),e&&Rt.forEach(n=>{a[n]=e[n]})},Ne=function(a,e,t={}){let n,o,s=0,r=0,i=!0,l={};if(!(this instanceof Ne))throw new TypeError("Failed to construct 'ReconnectingWebSocket': Please use the 'new' operator");let g=Tt();if(Object.keys(g).filter(p=>t.hasOwnProperty(p)).forEach(p=>g[p]=t[p]),!Oe(g.constructor))throw new TypeError("Invalid WebSocket constructor. Set `options.constructor`");let c=g.debug?(...p)=>console.log("RWS:",...p):()=>{},m=(p,I)=>setTimeout(()=>{let T=new Error(I);T.code=p,Array.isArray(l.error)&&l.error.forEach(([U])=>U(T)),n.onerror&&n.onerror(T)},0),d=()=>{if(c("close"),r++,c("retries count:",r),r>g.maxRetries){m("EHOSTDOWN","Too many failed connection attempts");return}s?s=ft(g,s):s=Le(g),c("reconnectDelay:",s),i&&setTimeout(u,s)},u=()=>{c("connect");let p=n;n=new g.constructor(a,e),o=setTimeout(()=>{c("timeout"),n.close(),m("ETIMEDOUT","Connection timeout")},g.connectionTimeout),c("bypass properties");for(let I in n)["addEventListener","removeEventListener","close","send"].indexOf(I)<0&&Ut(n,this,I);n.addEventListener("open",()=>{clearTimeout(o),c("open"),s=Le(g),c("reconnectDelay:",s),r=0}),n.addEventListener("close",d),kt(n,p,l)};c("init"),u(),this.close=(p=1e3,I="",{keepClosed:T=!1,fastClose:U=!0,delay:R=0}={})=>{if(R&&(s=R),i=!T,n.close(p,I),U){let _={code:p,reason:I,wasClean:!0};d(),Array.isArray(l.close)&&l.close.forEach(([h,b])=>{h(_),n.removeEventListener("close",h,b)}),n.onclose&&(n.onclose(_),n.onclose=null)}},this.send=p=>{n.send(p)},this.addEventListener=(p,I,T)=>{Array.isArray(l[p])?l[p].some(([U])=>U===I)||l[p].push([I,T]):l[p]=[[I,T]],n.addEventListener(p,I,T)},this.removeEventListener=(p,I,T)=>{Array.isArray(l[p])&&(l[p]=l[p].filter(([U])=>U!==I)),n.removeEventListener(p,I,T)}};Me.exports=Ne});var ye=(n=>(n.PRODUCTION="PRODUCTION",n.DEVELOPMENT="DEVELOPMENT",n.TEST="TEST",n))(ye||{}),Z=(t=>(t.CLIENT="CLIENT",t.SERVER="SERVER",t))(Z||{}),ee=(h=>(h.IMAGE_INFERENCE="imageInference",h.IMAGE_UPLOAD="imageUpload",h.UPSCALE="upscale",h.REMOVE_BACKGROUND="removeBackground",h.VIDEO_INFERENCE="videoInference",h.CAPTION="caption",h.AUDIO_INFERENCE="audioInference",h.THREE_D_INFERENCE="3dInference",h.GET_RESPONSE="getResponse",h.PHOTO_MAKER="photoMaker",h.IMAGE_CONTROL_NET_PRE_PROCESS="imageControlNetPreProcess",h.IMAGE_MASKING="imageMasking",h.PROMPT_ENHANCE="promptEnhance",h.AUTHENTICATION="authentication",h.MODEL_UPLOAD="modelUpload",h.MODEL_SEARCH="modelSearch",h.MEDIA_STORAGE="mediaStorage",h.VECTORIZE="vectorize",h.TEXT_INFERENCE="textInference",h.GET_TASK_DETAILS="getTaskDetails",h))(ee||{}),be=(n=>(n.BALANCED="balanced",n.PROMPT="prompt",n.CONTROL_NET="controlnet",n))(be||{}),Te=(d=>(d.canny="canny",d.depth="depth",d.mlsd="mlsd",d.normalbae="normalbae",d.openpose="openpose",d.tile="tile",d.seg="seg",d.lineart="lineart",d.lineart_anime="lineart_anime",d.shuffle="shuffle",d.scribble="scribble",d.softedge="softedge",d))(Te||{}),Ue=(f=>(f.canny="canny",f.depth_leres="depth_leres",f.depth_midas="depth_midas",f.depth_zoe="depth_zoe",f.inpaint_global_harmonious="inpaint_global_harmonious",f.lineart_anime="lineart_anime",f.lineart_coarse="lineart_coarse",f.lineart_realistic="lineart_realistic",f.lineart_standard="lineart_standard",f.mlsd="mlsd",f.normal_bae="normal_bae",f.scribble_hed="scribble_hed",f.scribble_pidinet="scribble_pidinet",f.seg_ofade20k="seg_ofade20k",f.seg_ofcoco="seg_ofcoco",f.seg_ufade20k="seg_ufade20k",f.shuffle="shuffle",f.softedge_hed="softedge_hed",f.softedge_hedsafe="softedge_hedsafe",f.softedge_pidinet="softedge_pidinet",f.softedge_pidisafe="softedge_pidisafe",f.tile_gaussian="tile_gaussian",f.openpose="openpose",f.openpose_face="openpose_face",f.openpose_faceonly="openpose_faceonly",f.openpose_full="openpose_full",f.openpose_hand="openpose_hand",f))(Ue||{}),st=(s=>(s.openpose="openpose",s.openpose_face="openpose_face",s.openpose_faceonly="openpose_faceonly",s.openpose_full="openpose_full",s.openpose_hand="openpose_hand",s))(st||{}),rt=(t=>(t.safetensors="safetensors",t.pickletensor="pickletensor",t))(rt||{}),ot=(u=>(u.flux1d="flux1d",u.flux1s="flux1s",u.pony="pony",u.sdhyper="sdhyper",u.sd1x="sd1x",u.sd1xlcm="sd1xlcm",u.sd3="sd3",u.sdxl="sdxl",u.sdxllcm="sdxllcm",u.sdxldistilled="sdxldistilled",u.sdxlhyper="sdxlhyper",u.sdxllightning="sdxllightning",u.sdxlturbo="sdxlturbo",u))(ot||{}),it=(n=>(n.base="base",n.inpainting="inpainting",n.pix2pix="pix2pix",n))(it||{}),at=(b=>(b.canny="canny",b.depth="depth",b.qrcode="qrcode",b.hed="hed",b.scrible="scrible",b.openpose="openpose",b.seg="segmentation",b.openmlsd="openmlsd",b.softedge="softedge",b.normal="normal bae",b.shuffle="shuffle",b.pix2pix="pix2pix",b.inpaint="inpaint",b.lineart="line art",b.sketch="sketch",b.inpaintdepth="inpaint depth",b.tile="tile",b.outfit="outfit",b.blur="blur",b.gray="gray",b.lowquality="low quality",b))(at||{}),lt=(m=>(m.NoStyle="No style",m.Cinematic="Cinematic",m.DisneyCharacter="Disney Character",m.DigitalArt="Digital Art",m.Photographic="Photographic",m.FantasyArt="Fantasy art",m.Neonpunk="Neonpunk",m.Enhance="Enhance",m.ComicBook="Comic book",m.Lowpoly="Lowpoly",m.LineArt="Line art",m))(lt||{});import{v4 as ct,validate as gt}from"uuid";var fe={name:"@runware/sdk-js",version:"1.2.9",description:"The SDK is used to run image inference with the Runware API, powered by the RunWare inference platform. It can be used to generate imaged with text-to-image and image-to-image. It also allows the use of an existing gallery of models or selecting any model or LoRA from the CivitAI gallery. The API also supports upscaling, background removal, inpainting and outpainting, and a series of other ControlNet models.",main:"dist/index.js",module:"dist/index.js",types:"dist/index.d.ts",type:"module",exports:{".":{types:"./dist/index.d.ts",require:"./dist/index.cjs",import:"./dist/index.js"}},files:["dist/"],scripts:{build:"tsup",lint:"tsc",pkg:"npx pkgfiles","dev:test":"vitest --reporter verbose",test:"vitest run --reporter verbose","test:single":"vitest run --reporter verbose tests/Runware/upscale-gan.test.ts",debug:"tsx tests/script.ts","beta:tag":"npm publish --tag beta"},keywords:["runware","sdk","ai"],author:"",license:"ISC",devDependencies:{"@types/uuid":"^9.0.6","@types/ws":"^8.5.8",dotenv:"^16.4.5","mock-socket":"^9.3.1",tsup:"^8.3.5",typescript:"^5.2.2",vitest:"^0.34.6"},dependencies:{uuid:"^9.0.1",ws:"^8.18.0"},optionalDependencies:{bufferutil:"^4.0.8"},directories:{test:"tests"}};var V=fe.version;function G(a){let e=a.includes("?")?"&":"?";return`${a}${e}sdk=js&version=${V}`}var B=6e4,K=1e3,Re=100,te={PRODUCTION:"wss://ws-api.runware.ai/v1",TEST:"ws://localhost:8080"},ke=(a,e)=>{if(a==null)return;let t=a.indexOf(e);t!==-1&&a.splice(t,1)},L=(a,{debugKey:e="debugKey",timeoutDuration:t=B,shouldThrowError:n=!0,pollingInterval:o=Re})=>(t=t<K?K:t,new Promise((s,r)=>{let i=setTimeout(()=>{l&&clearInterval(l),clearTimeout(i),n?r(`Response could not be received from server for ${e}`):s(void 0)},t),l=setInterval(async()=>{try{a({resolve:s,reject:r,intervalId:l})&&(clearInterval(l),clearTimeout(i))}catch(g){clearInterval(l),clearTimeout(i),r(g)}},o)})),_e=a=>new Promise(e=>{let t=new FileReader;t.readAsDataURL(a),t.onload=function(){e(t.result)}}),D=()=>ct(),De=a=>gt(a);var ve=({key:a,data:e,useZero:t=!0,shouldReturnString:n=!1})=>a.split(/\.|\[/).map(r=>r.replace(/\]$/,"")).reduce((r,i)=>{let l=t?0:void 0,g=r?.[i];if(!g)return l;if(Array.isArray(g)&&/^\d+$/.test(i)){let c=parseInt(i,10);return c>=0&&c<g.length?r[i]=g[c]:r[i]??l}else return r[i]??l},e||{})??{},xe=(a,e=1e3)=>new Promise(t=>setTimeout(t,a*e));var Se=(a,e)=>a.filter(t=>t.key!==e.key);var k=({key:a,value:e})=>e||e===0||e===!1?{[a]:e}:{},dt=(a,e)=>Math.floor(Math.random()*(e-a+1))+a,Ee=()=>dt(1,Number.MAX_SAFE_INTEGER),we=(a,{debugKey:e="debugKey",timeoutDuration:t=B,shouldThrowError:n=!0,pollingInterval:o=Re})=>(t=t<K?K:t,new Promise((s,r)=>{let i=setTimeout(()=>{l&&(clearInterval(l),n&&r(`Response could not be received from server for ${e}`)),clearTimeout(i)},t),l=setInterval(async()=>{try{await a({resolve:s,reject:r,intervalId:l})&&(clearInterval(l),clearTimeout(i))}catch(g){clearInterval(l),clearTimeout(i),r(g)}},o)}));var x=async(a,e={})=>{let{delayInSeconds:t=1,callback:n,logger:o}=e,s=e.maxRetries??1,r=s;if(s<=0)return await a();for(;s;)try{let i=await a();return s<r&&o?.retrySuccess(r-s+1),i}catch(i){if(i?.error)throw o?.retrySkippedApiError(i.error?.code||"unknown"),i;if(n?.(),s--,s>0)return o?.retryAttempt(r-s,r,t*1e3),await xe(t),await x(a,{...e,maxRetries:s});throw o?.retryExhausted(r),i}};var y={reset:"\x1B[0m",bold:"\x1B[1m",dim:"\x1B[2m",black:"\x1B[30m",white:"\x1B[37m",gray:"\x1B[90m",green:"\x1B[92m",yellow:"\x1B[93m",blue:"\x1B[94m",magenta:"\x1B[95m",cyan:"\x1B[96m",red:"\x1B[91m",bgGreen:"\x1B[42m",bgYellow:"\x1B[43m",bgBlue:"\x1B[44m",bgMagenta:"\x1B[45m",bgCyan:"\x1B[46m",bgRed:"\x1B[41m",bgWhite:"\x1B[47m"},Ae=(c=>(c.CONNECTION="CONNECTION",c.AUTH="AUTH",c.HEARTBEAT="HEARTBEAT",c.SEND="SEND",c.RECEIVE="RECEIVE",c.RETRY="RETRY",c.REQUEST="REQUEST",c.ERROR="ERROR",c.WARN="WARN",c.INFO="INFO",c))(Ae||{}),Ce={CONNECTION:{bg:y.bgBlue,fg:y.blue,icon:"\u{1F50C}"},AUTH:{bg:y.bgGreen,fg:y.green,icon:"\u{1F511}"},HEARTBEAT:{bg:y.bgMagenta,fg:y.magenta,icon:"\u{1F493}"},SEND:{bg:y.bgCyan,fg:y.cyan,icon:"\u{1F4E4}"},RECEIVE:{bg:y.bgCyan,fg:y.cyan,icon:"\u{1F4E5}"},RETRY:{bg:y.bgYellow,fg:y.yellow,icon:"\u{1F504}"},REQUEST:{bg:y.bgBlue,fg:y.blue,icon:"\u{1F4E1}"},ERROR:{bg:y.bgRed,fg:y.red,icon:"\u274C"},WARN:{bg:y.bgYellow,fg:y.yellow,icon:"\u26A0\uFE0F"},INFO:{bg:y.bgWhite,fg:y.gray,icon:"\u2139\uFE0F"}},pt=`${y.bold}${y.magenta}[RUNWARE]${y.reset}`;function mt(){return`${y.dim}${new Date().toISOString()}${y.reset}`}function It(a){return`${Ce[a].bg}${y.bold}${y.black} ${a} ${y.reset}`}function ht(a){if(a==null)return"";if(typeof a=="string")return`${y.dim}${a}${y.reset}`;try{let e=JSON.stringify(a,null,2);return`${y.dim}${e}${y.reset}`}catch{return`${y.dim}[unserializable]${y.reset}`}}var P=class{constructor(e=!1){this.enabled=e}log(e,t,n){if(!this.enabled)return;let o=Ce[e],s=["",`${pt} ${It(e)} ${o.icon} ${o.fg}${y.bold}${t}${y.reset}`,` ${mt()}`];n!==void 0&&s.push(` ${ht(n)}`),s.push(""),e==="ERROR"?console.error(s.join(`
|
|
1
|
+
var ze=Object.create;var he=Object.defineProperty;var Ye=Object.getOwnPropertyDescriptor;var Xe=Object.getOwnPropertyNames;var Je=Object.getPrototypeOf,Ze=Object.prototype.hasOwnProperty;var et=(a,e)=>()=>(e||a((e={exports:{}}).exports,e),e.exports);var tt=(a,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Xe(e))!Ze.call(a,o)&&o!==t&&he(a,o,{get:()=>e[o],enumerable:!(n=Ye(e,o))||n.enumerable});return a};var nt=(a,e,t)=>(t=a!=null?ze(Je(a)):{},tt(e||!a||!a.__esModule?he(t,"default",{value:a,enumerable:!0}):t,a));var Pe=et((Kn,Me)=>{"use strict";var Oe=a=>a&&a.CLOSING===2,bt=()=>typeof WebSocket<"u"&&Oe(WebSocket),Tt=()=>({constructor:bt()?WebSocket:null,maxReconnectionDelay:1e4,minReconnectionDelay:1500,reconnectionDelayGrowFactor:1.3,connectionTimeout:4e3,maxRetries:1/0,debug:!1}),Ut=(a,e,t)=>{Object.defineProperty(e,t,{get:()=>a[t],set:n=>{a[t]=n},enumerable:!0,configurable:!0})},Le=a=>a.minReconnectionDelay+Math.random()*a.minReconnectionDelay,ft=(a,e)=>{let t=e*a.reconnectionDelayGrowFactor;return t>a.maxReconnectionDelay?a.maxReconnectionDelay:t},Rt=["onopen","onclose","onmessage","onerror"],kt=(a,e,t)=>{Object.keys(t).forEach(n=>{t[n].forEach(([o,s])=>{a.addEventListener(n,o,s)})}),e&&Rt.forEach(n=>{a[n]=e[n]})},Ne=function(a,e,t={}){let n,o,s=0,r=0,i=!0,l={};if(!(this instanceof Ne))throw new TypeError("Failed to construct 'ReconnectingWebSocket': Please use the 'new' operator");let g=Tt();if(Object.keys(g).filter(p=>t.hasOwnProperty(p)).forEach(p=>g[p]=t[p]),!Oe(g.constructor))throw new TypeError("Invalid WebSocket constructor. Set `options.constructor`");let c=g.debug?(...p)=>console.log("RWS:",...p):()=>{},m=(p,I)=>setTimeout(()=>{let T=new Error(I);T.code=p,Array.isArray(l.error)&&l.error.forEach(([U])=>U(T)),n.onerror&&n.onerror(T)},0),d=()=>{if(c("close"),r++,c("retries count:",r),r>g.maxRetries){m("EHOSTDOWN","Too many failed connection attempts");return}s?s=ft(g,s):s=Le(g),c("reconnectDelay:",s),i&&setTimeout(u,s)},u=()=>{c("connect");let p=n;n=new g.constructor(a,e),o=setTimeout(()=>{c("timeout"),n.close(),m("ETIMEDOUT","Connection timeout")},g.connectionTimeout),c("bypass properties");for(let I in n)["addEventListener","removeEventListener","close","send"].indexOf(I)<0&&Ut(n,this,I);n.addEventListener("open",()=>{clearTimeout(o),c("open"),s=Le(g),c("reconnectDelay:",s),r=0}),n.addEventListener("close",d),kt(n,p,l)};c("init"),u(),this.close=(p=1e3,I="",{keepClosed:T=!1,fastClose:U=!0,delay:R=0}={})=>{if(R&&(s=R),i=!T,n.close(p,I),U){let _={code:p,reason:I,wasClean:!0};d(),Array.isArray(l.close)&&l.close.forEach(([h,b])=>{h(_),n.removeEventListener("close",h,b)}),n.onclose&&(n.onclose(_),n.onclose=null)}},this.send=p=>{n.send(p)},this.addEventListener=(p,I,T)=>{Array.isArray(l[p])?l[p].some(([U])=>U===I)||l[p].push([I,T]):l[p]=[[I,T]],n.addEventListener(p,I,T)},this.removeEventListener=(p,I,T)=>{Array.isArray(l[p])&&(l[p]=l[p].filter(([U])=>U!==I)),n.removeEventListener(p,I,T)}};Me.exports=Ne});var ye=(n=>(n.PRODUCTION="PRODUCTION",n.DEVELOPMENT="DEVELOPMENT",n.TEST="TEST",n))(ye||{}),Z=(t=>(t.CLIENT="CLIENT",t.SERVER="SERVER",t))(Z||{}),ee=(h=>(h.IMAGE_INFERENCE="imageInference",h.IMAGE_UPLOAD="imageUpload",h.UPSCALE="upscale",h.REMOVE_BACKGROUND="removeBackground",h.VIDEO_INFERENCE="videoInference",h.CAPTION="caption",h.AUDIO_INFERENCE="audioInference",h.THREE_D_INFERENCE="3dInference",h.GET_RESPONSE="getResponse",h.PHOTO_MAKER="photoMaker",h.IMAGE_CONTROL_NET_PRE_PROCESS="imageControlNetPreProcess",h.IMAGE_MASKING="imageMasking",h.PROMPT_ENHANCE="promptEnhance",h.AUTHENTICATION="authentication",h.MODEL_UPLOAD="modelUpload",h.MODEL_SEARCH="modelSearch",h.MEDIA_STORAGE="mediaStorage",h.VECTORIZE="vectorize",h.TEXT_INFERENCE="textInference",h.GET_TASK_DETAILS="getTaskDetails",h))(ee||{}),be=(n=>(n.BALANCED="balanced",n.PROMPT="prompt",n.CONTROL_NET="controlnet",n))(be||{}),Te=(d=>(d.canny="canny",d.depth="depth",d.mlsd="mlsd",d.normalbae="normalbae",d.openpose="openpose",d.tile="tile",d.seg="seg",d.lineart="lineart",d.lineart_anime="lineart_anime",d.shuffle="shuffle",d.scribble="scribble",d.softedge="softedge",d))(Te||{}),Ue=(f=>(f.canny="canny",f.depth_leres="depth_leres",f.depth_midas="depth_midas",f.depth_zoe="depth_zoe",f.inpaint_global_harmonious="inpaint_global_harmonious",f.lineart_anime="lineart_anime",f.lineart_coarse="lineart_coarse",f.lineart_realistic="lineart_realistic",f.lineart_standard="lineart_standard",f.mlsd="mlsd",f.normal_bae="normal_bae",f.scribble_hed="scribble_hed",f.scribble_pidinet="scribble_pidinet",f.seg_ofade20k="seg_ofade20k",f.seg_ofcoco="seg_ofcoco",f.seg_ufade20k="seg_ufade20k",f.shuffle="shuffle",f.softedge_hed="softedge_hed",f.softedge_hedsafe="softedge_hedsafe",f.softedge_pidinet="softedge_pidinet",f.softedge_pidisafe="softedge_pidisafe",f.tile_gaussian="tile_gaussian",f.openpose="openpose",f.openpose_face="openpose_face",f.openpose_faceonly="openpose_faceonly",f.openpose_full="openpose_full",f.openpose_hand="openpose_hand",f))(Ue||{}),st=(s=>(s.openpose="openpose",s.openpose_face="openpose_face",s.openpose_faceonly="openpose_faceonly",s.openpose_full="openpose_full",s.openpose_hand="openpose_hand",s))(st||{}),rt=(t=>(t.safetensors="safetensors",t.pickletensor="pickletensor",t))(rt||{}),ot=(u=>(u.flux1d="flux1d",u.flux1s="flux1s",u.pony="pony",u.sdhyper="sdhyper",u.sd1x="sd1x",u.sd1xlcm="sd1xlcm",u.sd3="sd3",u.sdxl="sdxl",u.sdxllcm="sdxllcm",u.sdxldistilled="sdxldistilled",u.sdxlhyper="sdxlhyper",u.sdxllightning="sdxllightning",u.sdxlturbo="sdxlturbo",u))(ot||{}),it=(n=>(n.base="base",n.inpainting="inpainting",n.pix2pix="pix2pix",n))(it||{}),at=(b=>(b.canny="canny",b.depth="depth",b.qrcode="qrcode",b.hed="hed",b.scrible="scrible",b.openpose="openpose",b.seg="segmentation",b.openmlsd="openmlsd",b.softedge="softedge",b.normal="normal bae",b.shuffle="shuffle",b.pix2pix="pix2pix",b.inpaint="inpaint",b.lineart="line art",b.sketch="sketch",b.inpaintdepth="inpaint depth",b.tile="tile",b.outfit="outfit",b.blur="blur",b.gray="gray",b.lowquality="low quality",b))(at||{}),lt=(m=>(m.NoStyle="No style",m.Cinematic="Cinematic",m.DisneyCharacter="Disney Character",m.DigitalArt="Digital Art",m.Photographic="Photographic",m.FantasyArt="Fantasy art",m.Neonpunk="Neonpunk",m.Enhance="Enhance",m.ComicBook="Comic book",m.Lowpoly="Lowpoly",m.LineArt="Line art",m))(lt||{});import{v4 as ct,validate as gt}from"uuid";var fe={name:"@runware/sdk-js",version:"1.2.10-beta.0",description:"The SDK is used to run image inference with the Runware API, powered by the RunWare inference platform. It can be used to generate imaged with text-to-image and image-to-image. It also allows the use of an existing gallery of models or selecting any model or LoRA from the CivitAI gallery. The API also supports upscaling, background removal, inpainting and outpainting, and a series of other ControlNet models.",main:"dist/index.js",module:"dist/index.js",types:"dist/index.d.ts",type:"module",exports:{".":{types:"./dist/index.d.ts",require:"./dist/index.cjs",import:"./dist/index.js"}},files:["dist/"],scripts:{build:"tsup",lint:"tsc",pkg:"npx pkgfiles","dev:test":"vitest --reporter verbose",test:"vitest run --reporter verbose","test:single":"vitest run --reporter verbose tests/Runware/upscale-gan.test.ts",debug:"tsx tests/script.ts","beta:tag":"npm publish --tag beta"},keywords:["runware","sdk","ai"],author:"",license:"ISC",devDependencies:{"@types/uuid":"^9.0.6","@types/ws":"^8.5.8",dotenv:"^16.4.5","mock-socket":"^9.3.1",tsup:"^8.3.5",typescript:"^5.2.2",vitest:"^0.34.6"},dependencies:{uuid:"^9.0.1",ws:"^8.18.0"},optionalDependencies:{bufferutil:"^4.0.8"},directories:{test:"tests"}};var V=fe.version;function G(a){let e=a.includes("?")?"&":"?";return`${a}${e}sdk=js&version=${V}`}var B=6e4,K=1e3,Re=100,te={PRODUCTION:"wss://ws-api.runware.ai/v1",TEST:"ws://localhost:8080"},ke=(a,e)=>{if(a==null)return;let t=a.indexOf(e);t!==-1&&a.splice(t,1)},L=(a,{debugKey:e="debugKey",timeoutDuration:t=B,shouldThrowError:n=!0,pollingInterval:o=Re})=>(t=t<K?K:t,new Promise((s,r)=>{let i=setTimeout(()=>{l&&clearInterval(l),clearTimeout(i),n?r(`Response could not be received from server for ${e}`):s(void 0)},t),l=setInterval(async()=>{try{a({resolve:s,reject:r,intervalId:l})&&(clearInterval(l),clearTimeout(i))}catch(g){clearInterval(l),clearTimeout(i),r(g)}},o)})),_e=a=>new Promise(e=>{let t=new FileReader;t.readAsDataURL(a),t.onload=function(){e(t.result)}}),D=()=>ct(),De=a=>gt(a);var ve=({key:a,data:e,useZero:t=!0,shouldReturnString:n=!1})=>a.split(/\.|\[/).map(r=>r.replace(/\]$/,"")).reduce((r,i)=>{let l=t?0:void 0,g=r?.[i];if(!g)return l;if(Array.isArray(g)&&/^\d+$/.test(i)){let c=parseInt(i,10);return c>=0&&c<g.length?r[i]=g[c]:r[i]??l}else return r[i]??l},e||{})??{},xe=(a,e=1e3)=>new Promise(t=>setTimeout(t,a*e));var Se=(a,e)=>a.filter(t=>t.key!==e.key);var k=({key:a,value:e})=>e||e===0||e===!1?{[a]:e}:{},dt=(a,e)=>Math.floor(Math.random()*(e-a+1))+a,Ee=()=>dt(1,Number.MAX_SAFE_INTEGER),we=(a,{debugKey:e="debugKey",timeoutDuration:t=B,shouldThrowError:n=!0,pollingInterval:o=Re})=>(t=t<K?K:t,new Promise((s,r)=>{let i=setTimeout(()=>{l&&(clearInterval(l),n&&r(`Response could not be received from server for ${e}`)),clearTimeout(i)},t),l=setInterval(async()=>{try{await a({resolve:s,reject:r,intervalId:l})&&(clearInterval(l),clearTimeout(i))}catch(g){clearInterval(l),clearTimeout(i),r(g)}},o)}));var x=async(a,e={})=>{let{delayInSeconds:t=1,callback:n,logger:o}=e,s=e.maxRetries??1,r=s;if(s<=0)return await a();for(;s;)try{let i=await a();return s<r&&o?.retrySuccess(r-s+1),i}catch(i){if(i?.error)throw o?.retrySkippedApiError(i.error?.code||"unknown"),i;if(n?.(),s--,s>0)return o?.retryAttempt(r-s,r,t*1e3),await xe(t),await x(a,{...e,maxRetries:s});throw o?.retryExhausted(r),i}};var y={reset:"\x1B[0m",bold:"\x1B[1m",dim:"\x1B[2m",black:"\x1B[30m",white:"\x1B[37m",gray:"\x1B[90m",green:"\x1B[92m",yellow:"\x1B[93m",blue:"\x1B[94m",magenta:"\x1B[95m",cyan:"\x1B[96m",red:"\x1B[91m",bgGreen:"\x1B[42m",bgYellow:"\x1B[43m",bgBlue:"\x1B[44m",bgMagenta:"\x1B[45m",bgCyan:"\x1B[46m",bgRed:"\x1B[41m",bgWhite:"\x1B[47m"},Ae=(c=>(c.CONNECTION="CONNECTION",c.AUTH="AUTH",c.HEARTBEAT="HEARTBEAT",c.SEND="SEND",c.RECEIVE="RECEIVE",c.RETRY="RETRY",c.REQUEST="REQUEST",c.ERROR="ERROR",c.WARN="WARN",c.INFO="INFO",c))(Ae||{}),Ce={CONNECTION:{bg:y.bgBlue,fg:y.blue,icon:"\u{1F50C}"},AUTH:{bg:y.bgGreen,fg:y.green,icon:"\u{1F511}"},HEARTBEAT:{bg:y.bgMagenta,fg:y.magenta,icon:"\u{1F493}"},SEND:{bg:y.bgCyan,fg:y.cyan,icon:"\u{1F4E4}"},RECEIVE:{bg:y.bgCyan,fg:y.cyan,icon:"\u{1F4E5}"},RETRY:{bg:y.bgYellow,fg:y.yellow,icon:"\u{1F504}"},REQUEST:{bg:y.bgBlue,fg:y.blue,icon:"\u{1F4E1}"},ERROR:{bg:y.bgRed,fg:y.red,icon:"\u274C"},WARN:{bg:y.bgYellow,fg:y.yellow,icon:"\u26A0\uFE0F"},INFO:{bg:y.bgWhite,fg:y.gray,icon:"\u2139\uFE0F"}},pt=`${y.bold}${y.magenta}[RUNWARE]${y.reset}`;function mt(){return`${y.dim}${new Date().toISOString()}${y.reset}`}function It(a){return`${Ce[a].bg}${y.bold}${y.black} ${a} ${y.reset}`}function ht(a){if(a==null)return"";if(typeof a=="string")return`${y.dim}${a}${y.reset}`;try{let e=JSON.stringify(a,null,2);return`${y.dim}${e}${y.reset}`}catch{return`${y.dim}[unserializable]${y.reset}`}}var P=class{constructor(e=!1){this.enabled=e}log(e,t,n){if(!this.enabled)return;let o=Ce[e],s=["",`${pt} ${It(e)} ${o.icon} ${o.fg}${y.bold}${t}${y.reset}`,` ${mt()}`];n!==void 0&&s.push(` ${ht(n)}`),s.push(""),e==="ERROR"?console.error(s.join(`
|
|
2
2
|
`)):e==="WARN"?console.warn(s.join(`
|
|
3
3
|
`)):console.log(s.join(`
|
|
4
|
-
`))}connecting(e){this.log("CONNECTION","Connecting to WebSocket",{url:e})}connected(e){this.log("CONNECTION","WebSocket connection established",{connectionSessionUUID:e})}reconnecting(e){this.log("CONNECTION",`Reconnecting... attempt #${e}`)}reconnectScheduled(e){this.log("CONNECTION",`Reconnect scheduled in ${e}ms`)}disconnected(e){this.log("CONNECTION",`WebSocket disconnected${e?`: ${e}`:""}`)}connectionClosed(e){this.log("CONNECTION","WebSocket closed",{code:e})}connectionError(e){this.log("ERROR","WebSocket error",e)}ensureConnectionStart(){this.log("CONNECTION","Connection lost \u2014 waiting for reconnection...")}ensureConnectionSuccess(){this.log("CONNECTION","Reconnection successful")}ensureConnectionTimeout(){this.log("ERROR","Reconnection timed out after max retries")}authenticating(e){this.log("AUTH",e?"Re-authenticating with existing session":"Authenticating with API key")}authenticated(e){this.log("AUTH","Authentication successful",{connectionSessionUUID:e})}authError(e){this.log("ERROR","Authentication failed",e)}heartbeatStarted(e){this.log("HEARTBEAT",`Heartbeat started \u2014 ping every ${e/1e3}s, 3 missed pongs before close`)}heartbeatPingSent(){this.log("HEARTBEAT","Ping sent")}heartbeatPongReceived(){this.log("HEARTBEAT","Pong received \u2014 connection alive")}heartbeatPongMissed(e,t){this.log("WARN",`Pong missed (${e}/${t}) \u2014 ${e>=t?"connection dead, terminating":"will retry next cycle"}`)}heartbeatStopped(){this.log("HEARTBEAT","Heartbeat stopped")}messageSent(e,t){this.log("SEND","Message sent",{taskType:e,...t?{taskUUID:t}:{}})}messageReceived(e,t){this.log("RECEIVE","Message received",{...e?{taskType:e}:{},...t?{taskUUID:t}:{}})}sendReconnecting(){this.log("WARN","Send failed \u2014 WebSocket not ready, attempting reconnection before retry")}sendFailed(e){this.log("ERROR",`Send failed \u2014 ${e}`)}requestStart(e,t){this.log("REQUEST","Request started",{taskType:e,taskUUID:t})}requestComplete(e,t,n){this.log("REQUEST",`Request complete in ${n}ms`,{taskType:e,taskUUID:t})}requestTimeout(e,t){this.log("ERROR",`Request timed out after ${t}ms`,{taskUUID:e})}requestError(e,t){this.log("ERROR","Request failed",{taskUUID:e,error:t?.message||t?.error||t})}retryAttempt(e,t,n){this.log("RETRY",`Retry ${e}/${t} \u2014 waiting ${n}ms before next attempt`)}retrySuccess(e){this.log("RETRY",`Retry succeeded on attempt #${e}`)}retryExhausted(e){this.log("ERROR",`All ${e} retries exhausted \u2014 giving up`)}retrySkippedApiError(e){this.log("ERROR","API error \u2014 skipping retry (not retryable)",{code:e})}info(e,t){this.log("INFO",e,t)}warn(e,t){this.log("WARN",e,t)}error(e,t){this.log("ERROR",e,t)}},yt=new P(!1);function ne(a){return a?new P(!0):yt}var O=class{constructor({apiKey:e,url:t=te.PRODUCTION,shouldReconnect:n=!0,globalMaxRetries:o=2,timeoutDuration:s=B,heartbeatInterval:r=45e3,enableLogging:i=!1}){this._listeners=[];this._globalMessages={};this._globalImages=[];this._globalErrors=[];this._heartbeatIntervalId=null;this._pongTimeoutId=null;this._missedPongCount=0;this._maxMissedPongs=3;this.ensureConnectionUUID=null;this.isWebsocketReadyState=()=>this._ws?.readyState===1;this.isInvalidAPIKey=()=>this._connectionError?.error?.code==="invalidApiKey";this.send=async e=>{if(!this.isWebsocketReadyState()){if(this._logger.sendReconnecting(),this._ws)try{typeof this._ws.terminate=="function"?this._ws.terminate():this._ws.close()}catch{}this._connectionSessionUUID=void 0,await this.ensureConnection()}let t=e?.taskType,n=e?.taskUUID;this._logger.messageSent(t,n),this._ws.send(JSON.stringify([e]))};this.uploadImage=async e=>{try{return await x(async()=>{let t=D();if(typeof e=="string"&&De(e))return{imageURL:e,imageUUID:e,taskUUID:t,taskType:"imageUpload"};let n=typeof e=="string"?e:await _e(e);return{imageURL:n,imageUUID:n,taskUUID:t,taskType:"imageUpload"}})}catch(t){throw t}};this.controlNetPreProcess=async({inputImage:e,preProcessorType:t,height:n,width:o,outputType:s,outputFormat:r,highThresholdCanny:i,lowThresholdCanny:l,includeHandsAndFaceOpenPose:g,includeCost:c,outputQuality:m,customTaskUUID:d,taskUUID:u,retry:p,includeGenerationTime:I,includePayload:T})=>{let U=p||this._globalMaxRetries,R,_=Date.now();try{return await x(async()=>{await this.ensureConnection();let h=await this.uploadImage(e);if(!h?.imageUUID)return null;let b=u||d||D(),w={inputImage:h.imageUUID,taskType:"imageControlNetPreProcess",taskUUID:b,preProcessorType:t,...k({key:"height",value:n}),...k({key:"width",value:o}),...k({key:"outputType",value:s}),...k({key:"outputFormat",value:r}),...k({key:"includeCost",value:c}),...k({key:"highThresholdCanny",value:i}),...k({key:"lowThresholdCanny",value:l}),...k({key:"includeHandsAndFaceOpenPose",value:g}),...m?{outputQuality:m}:{}};await this.send({...w}),R=this.globalListener({taskUUID:b});let A=await L(({resolve:S,reject:Q})=>{let E=this.getSingleMessage({taskUUID:b});if(E){if(E?.error)return Q(E),!0;if(E)return S(E),!0}},{debugKey:"unprocessed-image",timeoutDuration:this._timeoutDuration});return R.destroy(),this.insertAdditionalResponse({response:A,payload:T?w:void 0,startTime:I?_:void 0}),A},{maxRetries:U,callback:()=>{R?.destroy()}})}catch(h){throw h}};this.controlNetPreprocess=async e=>this.controlNetPreProcess(e);this.requestImageToText=async({inputImage:e,inputs:t,includeCost:n,customTaskUUID:o,taskUUID:s,retry:r,includePayload:i,includeGenerationTime:l,deliveryMethod:g,skipResponse:c,model:m})=>{try{let d;e&&(d=await this.uploadImage(e));let p={taskUUID:s||o||D(),taskType:"caption",model:m,inputImage:d?.imageUUID,inputs:t,...k({key:"includeCost",value:n}),retry:r,includePayload:i,includeGenerationTime:l},I=await this.baseSingleRequest({payload:{...p,taskType:"caption"},debugKey:"caption"});if(c)return I;if(g==="async"){let T=I?.taskUUID;return(await this.pollForAsyncResults({taskUUID:T}))[0]}return I}catch(d){throw d}};this.caption=async e=>this.requestImageToText(e);this.removeImageBackground=async e=>{let{skipResponse:t,...n}=e;try{let o=n.deliveryMethod,s=await this.baseSingleRequest({payload:{...n,taskType:"removeBackground"},debugKey:"remove-background"});if(t)return s;if(o==="async"){let r=s?.taskUUID;return(await this.pollForAsyncResults({taskUUID:r}))[0]}return s}catch(o){throw o}};this.removeBackground=async e=>this.removeImageBackground(e);this.vectorize=async e=>this.baseSingleRequest({payload:{...e,taskType:"vectorize"},debugKey:"vectorize"});this.getTaskDetails=async e=>this.baseSingleRequest({payload:{...e,taskType:"getTaskDetails"},debugKey:"get-task-details"});this.videoInference=async e=>{let{skipResponse:t,inputAudios:n,referenceVideos:o,...s}=e;try{let r=await this.baseSingleRequest({payload:{...s,...n?.length&&{inputAudios:n},...o?.length&&{referenceVideos:o},deliveryMethod:"async",taskType:"videoInference"},debugKey:"video-inference"});if(t)return r;let i=r?.taskUUID;return this.pollForAsyncResults({taskUUID:i,numberResults:e?.numberResults})}catch(r){throw r}};this.audioInference=async e=>{let{skipResponse:t,deliveryMethod:n="sync",...o}=e;try{let r=await(n==="sync"?this.baseSyncRequest:this.baseSingleRequest)({payload:{...o,numberResults:o.numberResults||1,taskType:"audioInference",deliveryMethod:n},groupKey:"REQUEST_AUDIO",debugKey:"audio-inference",skipResponse:t});if(t)return r;let i=r?.taskUUID;return n==="async"?this.pollForAsyncResults({taskUUID:i,numberResults:e?.numberResults}):r}catch(s){throw s}};this.threeDInference=async e=>{let{skipResponse:t,deliveryMethod:n="sync",...o}=e;try{let r=await(n==="sync"?this.baseSyncRequest:this.baseSingleRequest)({payload:{...o,numberResults:o.numberResults||1,taskType:"3dInference",deliveryMethod:n},groupKey:"REQUEST_IMAGES",debugKey:"three-d-inference",skipResponse:t});if(t)return r;let i=r?.taskUUID;return n==="async"?this.pollForAsyncResults({taskUUID:i,numberResults:e?.numberResults}):r}catch(s){throw s}};this.textInference=async e=>{let{skipResponse:t,deliveryMethod:n="sync",...o}=e;try{let r=await(n==="sync"?this.baseSyncRequest:this.baseSingleRequest)({payload:{...o,numberResults:o.numberResults||1,taskType:"textInference",deliveryMethod:n},groupKey:"REQUEST_TEXT",debugKey:"text-inference",skipResponse:t});if(t)return r;let i=r?.taskUUID;return n==="async"?this.pollForAsyncResults({taskUUID:i,numberResults:e?.numberResults}):r}catch(s){throw s}};this.getResponse=async e=>{let t=e.taskUUID;return this.baseSingleRequest({payload:{...e,customTaskUUID:t,taskType:"getResponse"},isMultiple:!0,debugKey:"async-results"})};this.upscaleGan=async e=>{let{inputImage:t,skipResponse:n,deliveryMethod:o="sync",...s}=e;try{let r;t&&(r=await this.uploadImage(t));let i=await this.baseSingleRequest({payload:{...s,...r?.imageUUID?{inputImage:r.imageUUID}:{},taskType:"upscale",deliveryMethod:o},debugKey:"upscale"});if(n)return i;if(o==="async"){let l=i?.taskUUID;return(await this.pollForAsyncResults({taskUUID:l}))[0]}return i}catch(r){throw r}};this.upscale=async e=>this.upscaleGan(e);this.enhancePrompt=async({prompt:e,promptMaxLength:t=380,promptVersions:n=1,includeCost:o,customTaskUUID:s,taskUUID:r,retry:i,includeGenerationTime:l,includePayload:g})=>{let c=i||this._globalMaxRetries,m,d=Date.now();try{return await x(async()=>{await this.ensureConnection();let u=r||s||D(),p={prompt:e,taskUUID:u,promptMaxLength:t,promptVersions:n,...k({key:"includeCost",value:o}),taskType:"promptEnhance"};await this.send(p),m=this.globalListener({taskUUID:u});let I=await L(({resolve:T,reject:U})=>{let R=this._globalMessages[u];if(R?.error)return U(R),!0;if(R?.length>=n)return delete this._globalMessages[u],T(R),!0},{debugKey:"enhance-prompt",timeoutDuration:this._timeoutDuration});return m.destroy(),this.insertAdditionalResponse({response:I,payload:g?p:void 0,startTime:l?d:void 0}),I},{maxRetries:c,callback:()=>{m?.destroy()}})}catch(u){throw u}};this.promptEnhance=async e=>this.enhancePrompt(e);this.modelUpload=async e=>{let{onUploadStream:t,retry:n,customTaskUUID:o,taskUUID:s,...r}=e,i=n||this._globalMaxRetries,l;try{return await x(async()=>{await this.ensureConnection();let g=s||o||D();await this.send({...r,taskUUID:g,taskType:"modelUpload"});let c,m;l=this.listenToUpload({taskUUID:g,onUploadStream:(u,p)=>{t?.(u,p),u?.status==="ready"?c=u:p&&(m=p)}});let d=await L(({resolve:u,reject:p})=>{if(c)return u(c),!0;if(m)return p(m),!0},{shouldThrowError:!1,timeoutDuration:60*60*1e3});return l?.destroy(),d},{maxRetries:i,callback:()=>{l?.destroy()}})}catch(g){throw g}};this.photoMaker=async(e,t)=>{let{onPartialImages:n,retry:o,customTaskUUID:s,taskUUID:r,numberResults:i,includeGenerationTime:l,includePayload:g,...c}=e,m=o||this._globalMaxRetries,d,u=[],p=0,I=Date.now();try{return await x(async()=>{await this.ensureConnection(),p++;let T=this._globalImages.filter(b=>u.includes(b.taskUUID)),U=r||s||D();u.push(U);let R=i-T.length,_={...c,...c.seed?{seed:c.seed}:{seed:Ee()},...t??{},taskUUID:U,taskType:"photoMaker",numberResults:i};await this.send({..._,numberResults:R}),d=this.listenToResponse({onPartialImages:n,taskUUID:U,groupKey:"REQUEST_IMAGES",requestPayload:g?_:void 0,startTime:l?I:void 0});let h=await this.getResponseWithSimilarTaskUUID({taskUUID:u,numberResults:i,lis:d});return d.destroy(),h},{maxRetries:m,callback:()=>{d?.destroy()}})}catch(T){if(T.taskUUID)throw T;if(p>=m)return this.handleIncompleteImages({taskUUIDs:u,error:T})}};this.modelSearch=async e=>this.baseSingleRequest({payload:{...e,taskType:"modelSearch"},debugKey:"model-search"});this.imageMasking=async e=>this.baseSingleRequest({payload:{...e,taskType:"imageMasking"},debugKey:"image-masking"});this.imageUpload=async e=>this.baseSingleRequest({payload:{...e,taskType:"imageUpload"},debugKey:"image-upload"});this.mediaStorage=async e=>this.baseSingleRequest({payload:{...e,operation:e.operation||"upload",taskType:"mediaStorage"},debugKey:"media-storage"});this.baseSingleRequest=async({payload:e,debugKey:t,isMultiple:n})=>{let{retry:o,customTaskUUID:s,taskUUID:r,includePayload:i,includeGenerationTime:l,...g}=e,c=o||this._globalMaxRetries,m,d=Date.now();try{return await x(async()=>{await this.ensureConnection();let u=r||s||D(),p={...g,taskUUID:u};this._logger.requestStart(t,u),await this.send(p),m=this.globalListener({taskUUID:u});let I=await L(({resolve:T,reject:U})=>{let R=n?this.getMultipleMessages({taskUUID:u}):this.getSingleMessage({taskUUID:u});if(R){if(R?.error)return this._logger.requestError(u,R),U(R),!0;if(R)return delete this._globalMessages[u],this._logger.requestComplete(t,u,Date.now()-d),T(R),!0}},{debugKey:t,timeoutDuration:this._timeoutDuration});return this.insertAdditionalResponse({response:I,payload:i?p:void 0,startTime:l?d:void 0}),m.destroy(),I},{maxRetries:c,callback:()=>{m?.destroy()},logger:this._logger})}catch(u){throw u}};this.baseSyncRequest=async({payload:e,groupKey:t,skipResponse:n=!1})=>{let{retry:o,customTaskUUID:s,includePayload:r,numberResults:i=1,onPartialResponse:l,includeGenerationTime:g,...c}=e,m=o||this._globalMaxRetries,d,u=[],p=0,I=Date.now();try{return await x(async()=>{await this.ensureConnection(),p++;let T=this._globalImages.filter(b=>u.includes(b.taskUUID)),U=s||D();u.push(U);let R=i-T.length,_={...c,taskUUID:U,numberResults:R};if(this._logger.requestStart(c.taskType||t,U),await this.send(_),n)return this._logger.info("Async mode (skipResponse) \u2014 waiting for server acknowledgement",{taskUUID:U}),new Promise((b,w)=>{let A=this.addListener({taskUUID:U,groupKey:t,lis:S=>{A.destroy(),S.error?(this._logger.requestError(U,S.error),w(S.error)):(this._logger.requestComplete(c.taskType||t,U,Date.now()-I),b(S[U]))}})});d=this.listenToResponse({onPartialImages:l,taskUUID:U,groupKey:t,requestPayload:r?_:void 0,startTime:g?I:void 0});let h=await this.getResponseWithSimilarTaskUUID({taskUUID:u,numberResults:i,lis:d});return this._logger.requestComplete(c.taskType||t,U,Date.now()-I),d.destroy(),h},{maxRetries:m,callback:()=>{d?.destroy()},logger:this._logger})}catch(T){throw T}};this.getSingleMessage=({taskUUID:e})=>{let t=this._globalMessages[e]?.[0],n=this._globalMessages[e];return!t&&!n?null:n?.error?n:t};this.getMultipleMessages=({taskUUID:e})=>{let t=this._globalMessages[e]?.[0],n=this._globalMessages[e];return!t&&!n?null:n};this.insertAdditionalResponse=({response:e,payload:t,startTime:n})=>{if(!t&&!n)return;let o=e;o.additionalResponse={},t&&(e.additionalResponse.payload=t),n&&(e.additionalResponse.generationTime=Date.now()-n)};this.disconnect=async()=>{this._logger.disconnected("user initiated"),this._shouldReconnect=!1,this._connectionSessionUUID=void 0,this.stopHeartbeat(),this._ws?.terminate?.(),this._ws?.close?.()};this.connected=()=>this.isWebsocketReadyState()&&!!this._connectionSessionUUID;this._apiKey=e,this._url=t,this._sdkType="CLIENT",this._shouldReconnect=n,this._globalMaxRetries=o,this._timeoutDuration=s,this._heartbeatInterval=Math.max(1e4,Math.min(12e4,r)),this._logger=ne(i)}getUniqueUUID(e){return e.mediaUUID||e.audioUUID||e.imageUUID||e.videoUUID||e.outputs?.files?.map(t=>t.uuid).join("-")||e.text}async pollForAsyncResults({taskUUID:e,numberResults:t=1}){let n=new Map;return await we(async({resolve:o,reject:s})=>{try{let r=await this.getResponse({taskUUID:e});for(let l of r||[])if(l.status==="success"){let g=this.getUniqueUUID(l);g&&n.set(g,l)}return n.size===t?(o(Array.from(n.values())),!0):!1}catch(r){return s(r),!0}},{debugKey:"async-response",pollingInterval:2*1e3,timeoutDuration:10*60*1e3}),Array.from(n.values())}static async initialize(e){try{let t=new this(e);return await t.ensureConnection(),t}catch(t){throw t}}startHeartbeat(){this.stopHeartbeat(),this._logger.heartbeatStarted(this._heartbeatInterval),this._heartbeatIntervalId=setInterval(()=>{if(!this.isWebsocketReadyState()){this.stopHeartbeat();return}try{this._ws.send(JSON.stringify([{taskType:"ping",ping:!0}])),this._logger.heartbeatPingSent()}catch{this.stopHeartbeat();return}this._pongTimeoutId&&(clearTimeout(this._pongTimeoutId),this._pongTimeoutId=null),this._pongTimeoutId=setTimeout(()=>{this._missedPongCount++,this._logger.heartbeatPongMissed(this._missedPongCount,this._maxMissedPongs),this._missedPongCount>=this._maxMissedPongs&&this._ws&&(typeof this._ws.terminate=="function"?this._ws.terminate():this._ws.close())},1e4)},this._heartbeatInterval)}stopHeartbeat(){this._heartbeatIntervalId&&(clearInterval(this._heartbeatIntervalId),this._heartbeatIntervalId=null,this._logger.heartbeatStopped()),this._pongTimeoutId&&(clearTimeout(this._pongTimeoutId),this._pongTimeoutId=null),this._missedPongCount=0}handlePongMessage(e){let t=Array.isArray(e?.data)?e.data:[];for(let n of t)if(n?.taskType==="ping"&&n?.pong===!0)return this._missedPongCount=0,this._pongTimeoutId&&(clearTimeout(this._pongTimeoutId),this._pongTimeoutId=null),this._logger.heartbeatPongReceived(),!0;return!1}addListener({lis:e,groupKey:t,taskUUID:n}){let o=i=>{let l=Array.isArray(i?.data)?i.data:[i.data],g=i?.[0]?.errors?i?.[0]?.errors:Array.isArray(i?.errors)?i.errors:[i.errors],c=l.filter(d=>(d?.taskUUID||d?.taskType)===n);if(g.filter(d=>(d?.taskUUID||d?.taskType)===n).length){e({error:{...g[0]??{}}});return}if(c.length){e({[n]:l});return}},s={key:n||D(),listener:o,groupKey:t};return this._listeners.push(s),{destroy:()=>{this._listeners=Se(this._listeners,s)}}}connect(){this._logger.connecting(this._url||"unknown"),this._ws.onopen=async e=>{this._logger.authenticating(!!this._connectionSessionUUID);try{this._connectionSessionUUID?await this.send({taskType:"authentication",apiKey:this._apiKey,connectionSessionUUID:this._connectionSessionUUID}):await this.send({apiKey:this._apiKey,taskType:"authentication"})}catch(n){this._logger.error("Failed to send auth message",n);return}let t=this.addListener({taskUUID:"authentication",lis:n=>{if(n?.error){this._connectionError=n,this._logger.authError(n),t?.destroy?.();return}this._connectionSessionUUID=n?.authentication?.[0]?.connectionSessionUUID,this._connectionError=void 0,this._logger.authenticated(this._connectionSessionUUID||""),t?.destroy?.(),this.startHeartbeat()}})},this._ws.onmessage=e=>{let t;try{t=JSON.parse(e.data)}catch(n){this._logger.error("Failed to parse WebSocket message",n);return}if(!this.handlePongMessage(t)){for(let n of this._listeners)if(n?.listener?.(t))return}},this._ws.onclose=e=>{this._logger.connectionClosed(e?.code),this._connectionSessionUUID=void 0,this.stopHeartbeat(),this.isInvalidAPIKey()},this._ws.onerror=e=>{this._logger.connectionError(e?.message||e)}}destroy(e){ke(this._listeners,e)}listenToResponse({onPartialImages:e,taskUUID:t,groupKey:n,requestPayload:o,startTime:s}){return this.addListener({taskUUID:t,lis:r=>{let i=r?.[t]?.filter(l=>l.taskUUID===t);r.error?(e?.(i,r?.error&&r),this._globalErrors.push(r)):(i=i.map(l=>(this.insertAdditionalResponse({response:l,payload:o||void 0,startTime:s||void 0}),{...l})),e?.(i,r?.error&&r),this._sdkType==="CLIENT"?this._globalImages=[...this._globalImages,...(r?.[t]??[]).map(l=>(this.insertAdditionalResponse({response:l,payload:o||void 0,startTime:s||void 0}),{...l}))]:this._globalImages=[...this._globalImages,...i])},groupKey:n})}listenToUpload({onUploadStream:e,taskUUID:t}){return this.addListener({taskUUID:t,lis:n=>{let o=n?.error,s=n?.[t]?.[0],r=s?.taskUUID===t?s:null;(r||o)&&e?.(r||void 0,o)}})}globalListener({taskUUID:e}){return this.addListener({taskUUID:e,lis:t=>{if(t.error){this._globalMessages[e]=t;return}let n=ve({key:e,data:t,useZero:!1});Array.isArray(n)?n.forEach(o=>{this._globalMessages[o.taskUUID]=[...this._globalMessages[o.taskUUID]??[],o]}):this._globalMessages[n.taskUUID]=n}})}async requestImages({outputType:e,outputFormat:t,uploadEndpoint:n,checkNSFW:o,positivePrompt:s,negativePrompt:r,seedImage:i,maskImage:l,strength:g,height:c,width:m,model:d,steps:u,scheduler:p,seed:I,CFGScale:T,clipSkip:U,usePromptWeighting:R,promptWeighting:_,numberResults:h=1,onPartialImages:b,includeCost:w,customTaskUUID:A,taskUUID:S,retry:Q,refiner:E,maskMargin:f,outputQuality:se,controlNet:j,lora:re,embeddings:oe,ipAdapters:ie,providerSettings:ae,outpaint:le,acceleratorOptions:ue,advancedFeatures:ce,referenceImages:ge,includeGenerationTime:We,includePayload:Ke,...de},Ve){let N,pe,q=[],me=0,Ie=Q||this._globalMaxRetries;try{await this.ensureConnection();let C=null,z=null,Y=[];if(i){let v=await this.uploadImage(i);if(!v)return[];C=v.imageUUID}if(l){let v=await this.uploadImage(l);if(!v)return[];z=v.imageUUID}if(j?.length)for(let v=0;v<j.length;v++){let M=j[v],{endStep:X,startStep:F,weight:J,guideImage:W,controlMode:Be,startStepPercentage:$e,endStepPercentage:He,model:Qe}=M,je=W?await this.uploadImage(W):null;Y.push({guideImage:je?.imageUUID,model:Qe,endStep:X,startStep:F,weight:J,...k({key:"startStepPercentage",value:$e}),...k({key:"endStepPercentage",value:He}),controlMode:Be||"controlnet"})}pe={taskType:"imageInference",model:d,positivePrompt:s,...r?{negativePrompt:r}:{},...c?{height:c}:{},...m?{width:m}:{},numberResults:h,...e?{outputType:e}:{},...t?{outputFormat:t}:{},...n?{uploadEndpoint:n}:{},...k({key:"checkNSFW",value:o}),...k({key:"strength",value:g}),...k({key:"CFGScale",value:T}),...k({key:"clipSkip",value:U}),...k({key:"maskMargin",value:f}),...k({key:"usePromptWeighting",value:R}),...k({key:"steps",value:u}),..._?{promptWeighting:_}:{},...I?{seed:I}:{},...p?{scheduler:p}:{},...E?{refiner:E}:{},...le?{outpaint:le}:{},...k({key:"includeCost",value:w}),...C?{seedImage:C}:{},...z?{maskImage:z}:{},...se?{outputQuality:se}:{},...Y.length?{controlNet:Y}:{},...re?.length?{lora:re}:{},...oe?.length?{embeddings:oe}:{},...ie?.length?{ipAdapters:ie}:{},...ae?{providerSettings:ae}:{},...ue?{acceleratorOptions:ue}:{},...ce?{advancedFeatures:ce}:{},...ge?.length?{referenceImages:ge}:{},...de,...Ve??{}};let Ge=Date.now();return await x(async()=>{me++,N?.destroy();let v=this._globalImages.filter(W=>q.includes(W.taskUUID)),M=S||A||D();q.push(M);let X=h-v.length,F={...pe,taskUUID:M,numberResults:X};await this.send(F),N=this.listenToResponse({onPartialImages:b,taskUUID:M,groupKey:"REQUEST_IMAGES",requestPayload:Ke?F:void 0,startTime:We?Ge:void 0});let J=await this.getResponseWithSimilarTaskUUID({taskUUID:q,numberResults:h,lis:N,deliveryMethod:de.deliveryMethod});return N.destroy(),J},{maxRetries:Ie,callback:()=>{N?.destroy()}})}catch(C){if(me>=Ie)return this.handleIncompleteImages({taskUUIDs:q,error:C});throw C}}async imageInference(e,t){return this.requestImages(e,t)}async ensureConnection(){if(this.connected()||this._url===te.TEST)return;this._logger.ensureConnectionStart();let t=2e3,n=200;try{if(this.isInvalidAPIKey())throw this._connectionError;return new Promise((o,s)=>{let r=0,i=30,l=D(),g,c,m=()=>{this.ensureConnectionUUID=null,clearInterval(g),clearInterval(c)};this._sdkType==="SERVER"&&(g=setInterval(async()=>{try{let d=this.connected(),u=!1;(!this.ensureConnectionUUID||l===this.ensureConnectionUUID)&&(this.ensureConnectionUUID||(this.ensureConnectionUUID=l),u=!0);let p=r%10===0&&u;d?(m(),this._logger.ensureConnectionSuccess(),o(!0)):r>=i?(m(),this._logger.ensureConnectionTimeout(),s(new Error("Retry timed out"))):(p&&(this._logger.reconnecting(r+1),this.connect()),r++)}catch(d){m(),s(d)}},t)),c=setInterval(async()=>{if(this.connected()){m(),this._logger.ensureConnectionSuccess(),o(!0);return}if(this.isInvalidAPIKey()){m(),this._logger.error("Connection failed \u2014 invalid API key"),s(this._connectionError);return}},n)})}catch{throw this.ensureConnectionUUID=null,this._connectionError=void 0,this._connectionError??"Could not connect to server. Ensure your API key is correct"}}async getResponseWithSimilarTaskUUID({taskUUID:e,numberResults:t,shouldThrowError:n,lis:o,deliveryMethod:s}){return await L(({resolve:r,reject:i,intervalId:l})=>{let g=Array.isArray(e)?e:[e],c=this._globalImages.filter(u=>g.includes(u.taskUUID)),m=s==="async"&&c.length>0,d=this._globalErrors.filter(u=>g.includes(u.error.taskUUID));if(d.length>0){let u=d[0];return this._globalErrors=this._globalErrors.filter(p=>!g.includes(p.error.taskUUID)),clearInterval(l),i?.(u),!0}else if(c.length>=t||m)return clearInterval(l),this._globalImages=this._globalImages.filter(u=>!g.includes(u.taskUUID)),r([...c].slice(0,t)),!0},{debugKey:"getting images",shouldThrowError:n,timeoutDuration:this._timeoutDuration})}handleIncompleteImages({taskUUIDs:e,error:t}){let n=this._globalImages.filter(o=>e.includes(o.taskUUID));if(n.length>1)return this._globalImages=this._globalImages.filter(o=>!e.includes(o.taskUUID)),n;throw t}};var qe=nt(Pe(),1);var $=class extends O{constructor(e){let{shouldReconnect:t,...n}=e;super(n);let o=G(this._url||"");this._ws=new qe.default(o),this.connect()}};import _t from"ws";var H=class extends O{constructor(t){super(t);this._instantiated=!1;this._listeners=[];this._reconnectingIntervalId=null;this._connecting=!1;this.send=async t=>{if(!this.isWebsocketReadyState()){if(this._logger.sendReconnecting(),this._ws)try{typeof this._ws.terminate=="function"?this._ws.terminate():this._ws.close()}catch{}this._connectionSessionUUID=void 0,await this.ensureConnection()}let n=t?.taskType,o=t?.taskUUID;this._logger.messageSent(n,o),this._ws.send(JSON.stringify([t]))};this.resetConnection=()=>{this.stopHeartbeat(),this._ws&&(this._listeners.forEach(t=>{t?.destroy?.()}),this._ws.removeAllListeners(),this._ws.readyState===1&&(this._ws.terminate(),this._ws.close()),this._ws=null,this._listeners=[])};this._sdkType="SERVER",this.connect()}async connect(){if(this._url&&!this._connecting){this._connecting=!0,this.resetConnection();try{let t=G(this._url);this._logger.connecting(t),this._ws=new _t(t,{perMessageDeflate:!1,headers:{"X-SDK-Name":"js","X-SDK-Version":V}})}catch(t){this._connecting=!1,this._logger.connectionError(t);return}this._ws.on("error",t=>{this._connecting=!1,this._logger.connectionError(t?.message||t)}),this._ws.on("close",()=>{this.handleClose()}),this._ws.on("open",async()=>{this._reconnectingIntervalId&&clearInterval(this._reconnectingIntervalId),this._logger.authenticating(!!this._connectionSessionUUID);try{this._connectionSessionUUID&&this.isWebsocketReadyState()?await this.send({taskType:"authentication",apiKey:this._apiKey,connectionSessionUUID:this._connectionSessionUUID}):this.isWebsocketReadyState()&&await this.send({apiKey:this._apiKey,taskType:"authentication"})}catch(n){this._connecting=!1,this._logger.error("Failed to send auth message",n);return}let t=this.addListener({taskUUID:"authentication",lis:n=>{if(this._connecting=!1,n?.error){this._connectionError=n,this._logger.authError(n),t?.destroy?.();return}this._connectionSessionUUID=n?.authentication?.[0]?.connectionSessionUUID,this._connectionError=void 0,this._logger.authenticated(this._connectionSessionUUID||""),t?.destroy?.(),this.startHeartbeat()}})}),this._ws.on("message",(t,n)=>{let o=n?t:t?.toString();if(!o)return;let s;try{s=JSON.parse(o)}catch(r){this._logger.error("Failed to parse WebSocket message",r);return}this.handlePongMessage(s)||this._listeners.forEach(r=>{r.listener(s)})})}}handleClose(){this._connecting=!1,this._logger.connectionClosed(),this._connectionSessionUUID=void 0,this.stopHeartbeat(),!this.isInvalidAPIKey()&&(this._reconnectingIntervalId&&clearInterval(this._reconnectingIntervalId),this._shouldReconnect&&(this._logger.reconnectScheduled(1e3),setTimeout(()=>this.connect(),1e3)))}};var Fe;typeof window>"u"?Fe=H:Fe=$;export{be as EControlMode,ot as EModelArchitecture,at as EModelConditioning,rt as EModelFormat,it as EModelType,st as EOpenPosePreProcessor,lt as EPhotoMakerEnum,Ue as EPreProcessor,Te as EPreProcessorGroup,ee as ETaskType,ye as Environment,Ae as LogLevel,Fe as Runware,$ as RunwareClient,P as RunwareLogger,H as RunwareServer,V as SDK_VERSION,Z as SdkType,ne as createLogger};
|
|
4
|
+
`))}connecting(e){this.log("CONNECTION","Connecting to WebSocket",{url:e})}connected(e){this.log("CONNECTION","WebSocket connection established",{connectionSessionUUID:e})}reconnecting(e){this.log("CONNECTION",`Reconnecting... attempt #${e}`)}reconnectScheduled(e){this.log("CONNECTION",`Reconnect scheduled in ${e}ms`)}disconnected(e){this.log("CONNECTION",`WebSocket disconnected${e?`: ${e}`:""}`)}connectionClosed(e){this.log("CONNECTION","WebSocket closed",{code:e})}connectionError(e){this.log("ERROR","WebSocket error",e)}ensureConnectionStart(){this.log("CONNECTION","Connection lost \u2014 waiting for reconnection...")}ensureConnectionSuccess(){this.log("CONNECTION","Reconnection successful")}ensureConnectionTimeout(){this.log("ERROR","Reconnection timed out after max retries")}authenticating(e){this.log("AUTH",e?"Re-authenticating with existing session":"Authenticating with API key")}authenticated(e){this.log("AUTH","Authentication successful",{connectionSessionUUID:e})}authError(e){this.log("ERROR","Authentication failed",e)}heartbeatStarted(e){this.log("HEARTBEAT",`Heartbeat started \u2014 ping every ${e/1e3}s, 3 missed pongs before close`)}heartbeatPingSent(){this.log("HEARTBEAT","Ping sent")}heartbeatPongReceived(){this.log("HEARTBEAT","Pong received \u2014 connection alive")}heartbeatPongMissed(e,t){this.log("WARN",`Pong missed (${e}/${t}) \u2014 ${e>=t?"connection dead, terminating":"will retry next cycle"}`)}heartbeatStopped(){this.log("HEARTBEAT","Heartbeat stopped")}messageSent(e,t){this.log("SEND","Message sent",{taskType:e,...t?{taskUUID:t}:{}})}messageReceived(e,t){this.log("RECEIVE","Message received",{...e?{taskType:e}:{},...t?{taskUUID:t}:{}})}sendReconnecting(){this.log("WARN","Send failed \u2014 WebSocket not ready, attempting reconnection before retry")}sendFailed(e){this.log("ERROR",`Send failed \u2014 ${e}`)}requestStart(e,t){this.log("REQUEST","Request started",{taskType:e,taskUUID:t})}requestComplete(e,t,n){this.log("REQUEST",`Request complete in ${n}ms`,{taskType:e,taskUUID:t})}requestTimeout(e,t){this.log("ERROR",`Request timed out after ${t}ms`,{taskUUID:e})}requestError(e,t){this.log("ERROR","Request failed",{taskUUID:e,error:t?.message||t?.error||t})}retryAttempt(e,t,n){this.log("RETRY",`Retry ${e}/${t} \u2014 waiting ${n}ms before next attempt`)}retrySuccess(e){this.log("RETRY",`Retry succeeded on attempt #${e}`)}retryExhausted(e){this.log("ERROR",`All ${e} retries exhausted \u2014 giving up`)}retrySkippedApiError(e){this.log("ERROR","API error \u2014 skipping retry (not retryable)",{code:e})}info(e,t){this.log("INFO",e,t)}warn(e,t){this.log("WARN",e,t)}error(e,t){this.log("ERROR",e,t)}},yt=new P(!1);function ne(a){return a?new P(!0):yt}var O=class{constructor({apiKey:e,url:t=te.PRODUCTION,shouldReconnect:n=!0,globalMaxRetries:o=2,timeoutDuration:s=B,heartbeatInterval:r=45e3,enableLogging:i=!1}){this._listeners=[];this._globalMessages={};this._globalImages=[];this._globalErrors=[];this._heartbeatIntervalId=null;this._pongTimeoutId=null;this._missedPongCount=0;this._maxMissedPongs=3;this.ensureConnectionUUID=null;this.isWebsocketReadyState=()=>this._ws?.readyState===1;this.isInvalidAPIKey=()=>this._connectionError?.error?.code==="invalidApiKey";this.send=async e=>{if(!this.isWebsocketReadyState()){if(this._logger.sendReconnecting(),this._ws)try{typeof this._ws.terminate=="function"?this._ws.terminate():this._ws.close()}catch{}this._connectionSessionUUID=void 0,await this.ensureConnection()}let t=e?.taskType,n=e?.taskUUID;this._logger.messageSent(t,n),this._ws.send(JSON.stringify([e]))};this.uploadImage=async e=>{try{return await x(async()=>{let t=D();if(typeof e=="string"&&De(e))return{imageURL:e,imageUUID:e,taskUUID:t,taskType:"imageUpload"};let n=typeof e=="string"?e:await _e(e);return{imageURL:n,imageUUID:n,taskUUID:t,taskType:"imageUpload"}})}catch(t){throw t}};this.controlNetPreProcess=async({inputImage:e,preProcessorType:t,height:n,width:o,outputType:s,outputFormat:r,highThresholdCanny:i,lowThresholdCanny:l,includeHandsAndFaceOpenPose:g,includeCost:c,outputQuality:m,customTaskUUID:d,taskUUID:u,retry:p,includeGenerationTime:I,includePayload:T})=>{let U=p||this._globalMaxRetries,R,_=Date.now();try{return await x(async()=>{await this.ensureConnection();let h=await this.uploadImage(e);if(!h?.imageUUID)return null;let b=u||d||D(),w={inputImage:h.imageUUID,taskType:"imageControlNetPreProcess",taskUUID:b,preProcessorType:t,...k({key:"height",value:n}),...k({key:"width",value:o}),...k({key:"outputType",value:s}),...k({key:"outputFormat",value:r}),...k({key:"includeCost",value:c}),...k({key:"highThresholdCanny",value:i}),...k({key:"lowThresholdCanny",value:l}),...k({key:"includeHandsAndFaceOpenPose",value:g}),...m?{outputQuality:m}:{}};await this.send({...w}),R=this.globalListener({taskUUID:b});let A=await L(({resolve:S,reject:Q})=>{let E=this.getSingleMessage({taskUUID:b});if(E){if(E?.error)return Q(E),!0;if(E)return S(E),!0}},{debugKey:"unprocessed-image",timeoutDuration:this._timeoutDuration});return R.destroy(),this.insertAdditionalResponse({response:A,payload:T?w:void 0,startTime:I?_:void 0}),A},{maxRetries:U,callback:()=>{R?.destroy()}})}catch(h){throw h}};this.controlNetPreprocess=async e=>this.controlNetPreProcess(e);this.requestImageToText=async({inputImage:e,inputs:t,includeCost:n,customTaskUUID:o,taskUUID:s,retry:r,includePayload:i,includeGenerationTime:l,deliveryMethod:g,skipResponse:c,model:m})=>{try{let d;e&&(d=await this.uploadImage(e));let p={taskUUID:s||o||D(),taskType:"caption",model:m,inputImage:d?.imageUUID,inputs:t,...k({key:"includeCost",value:n}),retry:r,includePayload:i,includeGenerationTime:l},I=await this.baseSingleRequest({payload:{...p,taskType:"caption"},debugKey:"caption"});if(c)return I;if(g==="async"){let T=I?.taskUUID;return(await this.pollForAsyncResults({taskUUID:T}))[0]}return I}catch(d){throw d}};this.caption=async e=>this.requestImageToText(e);this.removeImageBackground=async e=>{let{skipResponse:t,...n}=e;try{let o=n.deliveryMethod,s=await this.baseSingleRequest({payload:{...n,taskType:"removeBackground"},debugKey:"remove-background"});if(t)return s;if(o==="async"){let r=s?.taskUUID;return(await this.pollForAsyncResults({taskUUID:r}))[0]}return s}catch(o){throw o}};this.removeBackground=async e=>this.removeImageBackground(e);this.vectorize=async e=>this.baseSingleRequest({payload:{...e,taskType:"vectorize"},debugKey:"vectorize"});this.getTaskDetails=async e=>this.baseSingleRequest({payload:{...e,taskType:"getTaskDetails"},debugKey:"get-task-details"});this.videoInference=async e=>{let{skipResponse:t,inputAudios:n,referenceVideos:o,...s}=e;try{let r=await this.baseSingleRequest({payload:{...s,...n?.length&&{inputAudios:n},...o?.length&&{referenceVideos:o},deliveryMethod:"async",taskType:"videoInference"},debugKey:"video-inference"});if(t)return r;let i=r?.taskUUID;return this.pollForAsyncResults({taskUUID:i,numberResults:e?.numberResults})}catch(r){throw r}};this.audioInference=async e=>{let{skipResponse:t,deliveryMethod:n="sync",...o}=e;try{let r=await(n==="sync"?this.baseSyncRequest:this.baseSingleRequest)({payload:{...o,numberResults:o.numberResults||1,taskType:"audioInference",deliveryMethod:n},groupKey:"REQUEST_AUDIO",debugKey:"audio-inference",skipResponse:t});if(t)return r;let i=r?.taskUUID;return n==="async"?this.pollForAsyncResults({taskUUID:i,numberResults:e?.numberResults}):r}catch(s){throw s}};this.threeDInference=async e=>{let{skipResponse:t,deliveryMethod:n="sync",...o}=e;try{let r=await(n==="sync"?this.baseSyncRequest:this.baseSingleRequest)({payload:{...o,numberResults:o.numberResults||1,taskType:"3dInference",deliveryMethod:n},groupKey:"REQUEST_IMAGES",debugKey:"three-d-inference",skipResponse:t});if(t)return r;let i=r?.taskUUID;return n==="async"?this.pollForAsyncResults({taskUUID:i,numberResults:e?.numberResults}):r}catch(s){throw s}};this.textInference=async e=>{let{skipResponse:t,deliveryMethod:n="sync",...o}=e;try{let r=await(n==="sync"?this.baseSyncRequest:this.baseSingleRequest)({payload:{...o,numberResults:o.numberResults||1,taskType:"textInference",deliveryMethod:n},groupKey:"REQUEST_TEXT",debugKey:"text-inference",skipResponse:t});if(t)return r;let i=r?.taskUUID;return n==="async"?this.pollForAsyncResults({taskUUID:i,numberResults:e?.numberResults}):r}catch(s){throw s}};this.getResponse=async e=>{let t=e.taskUUID;return this.baseSingleRequest({payload:{...e,customTaskUUID:t,taskType:"getResponse"},isMultiple:!0,debugKey:"async-results"})};this.upscaleGan=async e=>{let{inputImage:t,skipResponse:n,deliveryMethod:o="sync",...s}=e;try{let r;t&&(r=await this.uploadImage(t));let i=await this.baseSingleRequest({payload:{...s,...r?.imageUUID?{inputImage:r.imageUUID}:{},taskType:"upscale",deliveryMethod:o},debugKey:"upscale"});if(n)return i;if(o==="async"){let l=i?.taskUUID;return(await this.pollForAsyncResults({taskUUID:l}))[0]}return i}catch(r){throw r}};this.upscale=async e=>this.upscaleGan(e);this.enhancePrompt=async({prompt:e,promptMaxLength:t=380,promptVersions:n=1,includeCost:o,customTaskUUID:s,taskUUID:r,retry:i,includeGenerationTime:l,includePayload:g})=>{let c=i||this._globalMaxRetries,m,d=Date.now();try{return await x(async()=>{await this.ensureConnection();let u=r||s||D(),p={prompt:e,taskUUID:u,promptMaxLength:t,promptVersions:n,...k({key:"includeCost",value:o}),taskType:"promptEnhance"};await this.send(p),m=this.globalListener({taskUUID:u});let I=await L(({resolve:T,reject:U})=>{let R=this._globalMessages[u];if(R?.error)return U(R),!0;if(R?.length>=n)return delete this._globalMessages[u],T(R),!0},{debugKey:"enhance-prompt",timeoutDuration:this._timeoutDuration});return m.destroy(),this.insertAdditionalResponse({response:I,payload:g?p:void 0,startTime:l?d:void 0}),I},{maxRetries:c,callback:()=>{m?.destroy()}})}catch(u){throw u}};this.promptEnhance=async e=>this.enhancePrompt(e);this.modelUpload=async e=>{let{onUploadStream:t,retry:n,customTaskUUID:o,taskUUID:s,...r}=e,i=n||this._globalMaxRetries,l;try{return await x(async()=>{await this.ensureConnection();let g=s||o||D();await this.send({...r,taskUUID:g,taskType:"modelUpload"});let c,m;l=this.listenToUpload({taskUUID:g,onUploadStream:(u,p)=>{t?.(u,p),u?.status==="ready"?c=u:p&&(m=p)}});let d=await L(({resolve:u,reject:p})=>{if(c)return u(c),!0;if(m)return p(m),!0},{shouldThrowError:!1,timeoutDuration:60*60*1e3});return l?.destroy(),d},{maxRetries:i,callback:()=>{l?.destroy()}})}catch(g){throw g}};this.photoMaker=async(e,t)=>{let{onPartialImages:n,retry:o,customTaskUUID:s,taskUUID:r,numberResults:i,includeGenerationTime:l,includePayload:g,...c}=e,m=o||this._globalMaxRetries,d,u=[],p=0,I=Date.now();try{return await x(async()=>{await this.ensureConnection(),p++;let T=this._globalImages.filter(b=>u.includes(b.taskUUID)),U=r||s||D();u.push(U);let R=i-T.length,_={...c,...c.seed?{seed:c.seed}:{seed:Ee()},...t??{},taskUUID:U,taskType:"photoMaker",numberResults:i};await this.send({..._,numberResults:R}),d=this.listenToResponse({onPartialImages:n,taskUUID:U,groupKey:"REQUEST_IMAGES",requestPayload:g?_:void 0,startTime:l?I:void 0});let h=await this.getResponseWithSimilarTaskUUID({taskUUID:u,numberResults:i,lis:d});return d.destroy(),h},{maxRetries:m,callback:()=>{d?.destroy()}})}catch(T){if(T.taskUUID)throw T;if(p>=m)return this.handleIncompleteImages({taskUUIDs:u,error:T})}};this.modelSearch=async e=>this.baseSingleRequest({payload:{...e,taskType:"modelSearch"},debugKey:"model-search"});this.imageMasking=async e=>this.baseSingleRequest({payload:{...e,taskType:"imageMasking"},debugKey:"image-masking"});this.imageUpload=async e=>this.baseSingleRequest({payload:{...e,taskType:"imageUpload"},debugKey:"image-upload"});this.mediaStorage=async e=>this.baseSingleRequest({payload:{...e,operation:e.operation||"upload",taskType:"mediaStorage"},debugKey:"media-storage"});this.baseSingleRequest=async({payload:e,debugKey:t,isMultiple:n})=>{let{retry:o,customTaskUUID:s,taskUUID:r,includePayload:i,includeGenerationTime:l,...g}=e,c=o||this._globalMaxRetries,m,d=Date.now();try{return await x(async()=>{await this.ensureConnection();let u=r||s||D(),p={...g,taskUUID:u};this._logger.requestStart(t,u),await this.send(p),m=this.globalListener({taskUUID:u});let I=await L(({resolve:T,reject:U})=>{let R=n?this.getMultipleMessages({taskUUID:u}):this.getSingleMessage({taskUUID:u});if(R){if(R?.error)return this._logger.requestError(u,R),U(R),!0;if(R)return delete this._globalMessages[u],this._logger.requestComplete(t,u,Date.now()-d),T(R),!0}},{debugKey:t,timeoutDuration:this._timeoutDuration});return this.insertAdditionalResponse({response:I,payload:i?p:void 0,startTime:l?d:void 0}),m.destroy(),I},{maxRetries:c,callback:()=>{m?.destroy()},logger:this._logger})}catch(u){throw u}};this.baseSyncRequest=async({payload:e,groupKey:t,skipResponse:n=!1})=>{let{retry:o,customTaskUUID:s,includePayload:r,numberResults:i=1,onPartialResponse:l,includeGenerationTime:g,...c}=e,m=o||this._globalMaxRetries,d,u=[],p=0,I=Date.now();try{return await x(async()=>{await this.ensureConnection(),p++;let T=this._globalImages.filter(b=>u.includes(b.taskUUID)),U=s||D();u.push(U);let R=i-T.length,_={...c,taskUUID:U,numberResults:R};if(this._logger.requestStart(c.taskType||t,U),await this.send(_),n)return this._logger.info("Async mode (skipResponse) \u2014 waiting for server acknowledgement",{taskUUID:U}),new Promise((b,w)=>{let A=this.addListener({taskUUID:U,groupKey:t,lis:S=>{A.destroy(),S.error?(this._logger.requestError(U,S.error),w(S.error)):(this._logger.requestComplete(c.taskType||t,U,Date.now()-I),b(S[U]))}})});d=this.listenToResponse({onPartialImages:l,taskUUID:U,groupKey:t,requestPayload:r?_:void 0,startTime:g?I:void 0});let h=await this.getResponseWithSimilarTaskUUID({taskUUID:u,numberResults:i,lis:d});return this._logger.requestComplete(c.taskType||t,U,Date.now()-I),d.destroy(),h},{maxRetries:m,callback:()=>{d?.destroy()},logger:this._logger})}catch(T){throw T}};this.getSingleMessage=({taskUUID:e})=>{let t=this._globalMessages[e]?.[0],n=this._globalMessages[e];return!t&&!n?null:n?.error?n:t};this.getMultipleMessages=({taskUUID:e})=>{let t=this._globalMessages[e]?.[0],n=this._globalMessages[e];return!t&&!n?null:n};this.insertAdditionalResponse=({response:e,payload:t,startTime:n})=>{if(!t&&!n)return;let o=e;o.additionalResponse={},t&&(e.additionalResponse.payload=t),n&&(e.additionalResponse.generationTime=Date.now()-n)};this.disconnect=async()=>{this._logger.disconnected("user initiated"),this._shouldReconnect=!1,this._connectionSessionUUID=void 0,this.stopHeartbeat(),this._ws?.terminate?.(),this._ws?.close?.(1e3,"",{keepClosed:!0})};this.connected=()=>this.isWebsocketReadyState()&&!!this._connectionSessionUUID;this._apiKey=e,this._url=t,this._sdkType="CLIENT",this._shouldReconnect=n,this._globalMaxRetries=o,this._timeoutDuration=s,this._heartbeatInterval=Math.max(1e4,Math.min(12e4,r)),this._logger=ne(i)}getUniqueUUID(e){return e.mediaUUID||e.audioUUID||e.imageUUID||e.videoUUID||e.outputs?.files?.map(t=>t.uuid).join("-")||e.text}async pollForAsyncResults({taskUUID:e,numberResults:t=1}){let n=new Map;return await we(async({resolve:o,reject:s})=>{try{let r=await this.getResponse({taskUUID:e});for(let l of r||[])if(l.status==="success"){let g=this.getUniqueUUID(l);g&&n.set(g,l)}return n.size===t?(o(Array.from(n.values())),!0):!1}catch(r){return s(r),!0}},{debugKey:"async-response",pollingInterval:2*1e3,timeoutDuration:10*60*1e3}),Array.from(n.values())}static async initialize(e){try{let t=new this(e);return await t.ensureConnection(),t}catch(t){throw t}}startHeartbeat(){this.stopHeartbeat(),this._logger.heartbeatStarted(this._heartbeatInterval),this._heartbeatIntervalId=setInterval(()=>{if(!this.isWebsocketReadyState()){this.stopHeartbeat();return}try{this._ws.send(JSON.stringify([{taskType:"ping",ping:!0}])),this._logger.heartbeatPingSent()}catch{this.stopHeartbeat();return}this._pongTimeoutId&&(clearTimeout(this._pongTimeoutId),this._pongTimeoutId=null),this._pongTimeoutId=setTimeout(()=>{this._missedPongCount++,this._logger.heartbeatPongMissed(this._missedPongCount,this._maxMissedPongs),this._missedPongCount>=this._maxMissedPongs&&this._ws&&(typeof this._ws.terminate=="function"?this._ws.terminate():this._ws.close())},1e4)},this._heartbeatInterval)}stopHeartbeat(){this._heartbeatIntervalId&&(clearInterval(this._heartbeatIntervalId),this._heartbeatIntervalId=null,this._logger.heartbeatStopped()),this._pongTimeoutId&&(clearTimeout(this._pongTimeoutId),this._pongTimeoutId=null),this._missedPongCount=0}handlePongMessage(e){let t=Array.isArray(e?.data)?e.data:[];for(let n of t)if(n?.taskType==="ping"&&n?.pong===!0)return this._missedPongCount=0,this._pongTimeoutId&&(clearTimeout(this._pongTimeoutId),this._pongTimeoutId=null),this._logger.heartbeatPongReceived(),!0;return!1}addListener({lis:e,groupKey:t,taskUUID:n}){let o=i=>{let l=Array.isArray(i?.data)?i.data:[i.data],g=i?.[0]?.errors?i?.[0]?.errors:Array.isArray(i?.errors)?i.errors:[i.errors],c=l.filter(d=>(d?.taskUUID||d?.taskType)===n);if(g.filter(d=>(d?.taskUUID||d?.taskType)===n).length){e({error:{...g[0]??{}}});return}if(c.length){e({[n]:l});return}},s={key:n||D(),listener:o,groupKey:t};return this._listeners.push(s),{destroy:()=>{this._listeners=Se(this._listeners,s)}}}connect(){this._logger.connecting(this._url||"unknown"),this._ws.onopen=async e=>{this._logger.authenticating(!!this._connectionSessionUUID);try{this._connectionSessionUUID?await this.send({taskType:"authentication",apiKey:this._apiKey,connectionSessionUUID:this._connectionSessionUUID}):await this.send({apiKey:this._apiKey,taskType:"authentication"})}catch(n){this._logger.error("Failed to send auth message",n);return}let t=this.addListener({taskUUID:"authentication",lis:n=>{if(n?.error){this._connectionError=n,this._logger.authError(n),t?.destroy?.();return}this._connectionSessionUUID=n?.authentication?.[0]?.connectionSessionUUID,this._connectionError=void 0,this._logger.authenticated(this._connectionSessionUUID||""),t?.destroy?.(),this.startHeartbeat()}})},this._ws.onmessage=e=>{let t;try{t=JSON.parse(e.data)}catch(n){this._logger.error("Failed to parse WebSocket message",n);return}if(!this.handlePongMessage(t)){for(let n of this._listeners)if(n?.listener?.(t))return}},this._ws.onclose=e=>{this._logger.connectionClosed(e?.code),this._connectionSessionUUID=void 0,this.stopHeartbeat(),this.isInvalidAPIKey()},this._ws.onerror=e=>{this._logger.connectionError(e?.message||e)}}destroy(e){ke(this._listeners,e)}listenToResponse({onPartialImages:e,taskUUID:t,groupKey:n,requestPayload:o,startTime:s}){return this.addListener({taskUUID:t,lis:r=>{let i=r?.[t]?.filter(l=>l.taskUUID===t);r.error?(e?.(i,r?.error&&r),this._globalErrors.push(r)):(i=i.map(l=>(this.insertAdditionalResponse({response:l,payload:o||void 0,startTime:s||void 0}),{...l})),e?.(i,r?.error&&r),this._sdkType==="CLIENT"?this._globalImages=[...this._globalImages,...(r?.[t]??[]).map(l=>(this.insertAdditionalResponse({response:l,payload:o||void 0,startTime:s||void 0}),{...l}))]:this._globalImages=[...this._globalImages,...i])},groupKey:n})}listenToUpload({onUploadStream:e,taskUUID:t}){return this.addListener({taskUUID:t,lis:n=>{let o=n?.error,s=n?.[t]?.[0],r=s?.taskUUID===t?s:null;(r||o)&&e?.(r||void 0,o)}})}globalListener({taskUUID:e}){return this.addListener({taskUUID:e,lis:t=>{if(t.error){this._globalMessages[e]=t;return}let n=ve({key:e,data:t,useZero:!1});Array.isArray(n)?n.forEach(o=>{this._globalMessages[o.taskUUID]=[...this._globalMessages[o.taskUUID]??[],o]}):this._globalMessages[n.taskUUID]=n}})}async requestImages({outputType:e,outputFormat:t,uploadEndpoint:n,checkNSFW:o,positivePrompt:s,negativePrompt:r,seedImage:i,maskImage:l,strength:g,height:c,width:m,model:d,steps:u,scheduler:p,seed:I,CFGScale:T,clipSkip:U,usePromptWeighting:R,promptWeighting:_,numberResults:h=1,onPartialImages:b,includeCost:w,customTaskUUID:A,taskUUID:S,retry:Q,refiner:E,maskMargin:f,outputQuality:se,controlNet:j,lora:re,embeddings:oe,ipAdapters:ie,providerSettings:ae,outpaint:le,acceleratorOptions:ue,advancedFeatures:ce,referenceImages:ge,includeGenerationTime:We,includePayload:Ke,...de},Ve){let N,pe,q=[],me=0,Ie=Q||this._globalMaxRetries;try{await this.ensureConnection();let C=null,z=null,Y=[];if(i){let v=await this.uploadImage(i);if(!v)return[];C=v.imageUUID}if(l){let v=await this.uploadImage(l);if(!v)return[];z=v.imageUUID}if(j?.length)for(let v=0;v<j.length;v++){let M=j[v],{endStep:X,startStep:F,weight:J,guideImage:W,controlMode:Be,startStepPercentage:$e,endStepPercentage:He,model:Qe}=M,je=W?await this.uploadImage(W):null;Y.push({guideImage:je?.imageUUID,model:Qe,endStep:X,startStep:F,weight:J,...k({key:"startStepPercentage",value:$e}),...k({key:"endStepPercentage",value:He}),controlMode:Be||"controlnet"})}pe={taskType:"imageInference",model:d,positivePrompt:s,...r?{negativePrompt:r}:{},...c?{height:c}:{},...m?{width:m}:{},numberResults:h,...e?{outputType:e}:{},...t?{outputFormat:t}:{},...n?{uploadEndpoint:n}:{},...k({key:"checkNSFW",value:o}),...k({key:"strength",value:g}),...k({key:"CFGScale",value:T}),...k({key:"clipSkip",value:U}),...k({key:"maskMargin",value:f}),...k({key:"usePromptWeighting",value:R}),...k({key:"steps",value:u}),..._?{promptWeighting:_}:{},...I?{seed:I}:{},...p?{scheduler:p}:{},...E?{refiner:E}:{},...le?{outpaint:le}:{},...k({key:"includeCost",value:w}),...C?{seedImage:C}:{},...z?{maskImage:z}:{},...se?{outputQuality:se}:{},...Y.length?{controlNet:Y}:{},...re?.length?{lora:re}:{},...oe?.length?{embeddings:oe}:{},...ie?.length?{ipAdapters:ie}:{},...ae?{providerSettings:ae}:{},...ue?{acceleratorOptions:ue}:{},...ce?{advancedFeatures:ce}:{},...ge?.length?{referenceImages:ge}:{},...de,...Ve??{}};let Ge=Date.now();return await x(async()=>{me++,N?.destroy();let v=this._globalImages.filter(W=>q.includes(W.taskUUID)),M=S||A||D();q.push(M);let X=h-v.length,F={...pe,taskUUID:M,numberResults:X};await this.send(F),N=this.listenToResponse({onPartialImages:b,taskUUID:M,groupKey:"REQUEST_IMAGES",requestPayload:Ke?F:void 0,startTime:We?Ge:void 0});let J=await this.getResponseWithSimilarTaskUUID({taskUUID:q,numberResults:h,lis:N,deliveryMethod:de.deliveryMethod});return N.destroy(),J},{maxRetries:Ie,callback:()=>{N?.destroy()}})}catch(C){if(me>=Ie)return this.handleIncompleteImages({taskUUIDs:q,error:C});throw C}}async imageInference(e,t){return this.requestImages(e,t)}async ensureConnection(){if(this.connected()||this._url===te.TEST)return;this._logger.ensureConnectionStart();let t=2e3,n=200;try{if(this.isInvalidAPIKey())throw this._connectionError;return new Promise((o,s)=>{let r=0,i=30,l=D(),g,c,m=()=>{this.ensureConnectionUUID=null,clearInterval(g),clearInterval(c)};this._sdkType==="SERVER"&&(g=setInterval(async()=>{try{let d=this.connected(),u=!1;(!this.ensureConnectionUUID||l===this.ensureConnectionUUID)&&(this.ensureConnectionUUID||(this.ensureConnectionUUID=l),u=!0);let p=r%10===0&&u;d?(m(),this._logger.ensureConnectionSuccess(),o(!0)):r>=i?(m(),this._logger.ensureConnectionTimeout(),s(new Error("Retry timed out"))):(p&&(this._logger.reconnecting(r+1),this.connect()),r++)}catch(d){m(),s(d)}},t)),c=setInterval(async()=>{if(this.connected()){m(),this._logger.ensureConnectionSuccess(),o(!0);return}if(this.isInvalidAPIKey()){m(),this._logger.error("Connection failed \u2014 invalid API key"),s(this._connectionError);return}},n)})}catch{throw this.ensureConnectionUUID=null,this._connectionError=void 0,this._connectionError??"Could not connect to server. Ensure your API key is correct"}}async getResponseWithSimilarTaskUUID({taskUUID:e,numberResults:t,shouldThrowError:n,lis:o,deliveryMethod:s}){return await L(({resolve:r,reject:i,intervalId:l})=>{let g=Array.isArray(e)?e:[e],c=this._globalImages.filter(u=>g.includes(u.taskUUID)),m=s==="async"&&c.length>0,d=this._globalErrors.filter(u=>g.includes(u.error.taskUUID));if(d.length>0){let u=d[0];return this._globalErrors=this._globalErrors.filter(p=>!g.includes(p.error.taskUUID)),clearInterval(l),i?.(u),!0}else if(c.length>=t||m)return clearInterval(l),this._globalImages=this._globalImages.filter(u=>!g.includes(u.taskUUID)),r([...c].slice(0,t)),!0},{debugKey:"getting images",shouldThrowError:n,timeoutDuration:this._timeoutDuration})}handleIncompleteImages({taskUUIDs:e,error:t}){let n=this._globalImages.filter(o=>e.includes(o.taskUUID));if(n.length>1)return this._globalImages=this._globalImages.filter(o=>!e.includes(o.taskUUID)),n;throw t}};var qe=nt(Pe(),1);var $=class extends O{constructor(e){let{shouldReconnect:t,...n}=e;super(n);let o=G(this._url||"");this._ws=new qe.default(o),this.connect()}};import _t from"ws";var H=class extends O{constructor(t){super(t);this._instantiated=!1;this._listeners=[];this._reconnectingIntervalId=null;this._connecting=!1;this.send=async t=>{if(!this.isWebsocketReadyState()){if(this._logger.sendReconnecting(),this._ws)try{typeof this._ws.terminate=="function"?this._ws.terminate():this._ws.close()}catch{}this._connectionSessionUUID=void 0,await this.ensureConnection()}let n=t?.taskType,o=t?.taskUUID;this._logger.messageSent(n,o),this._ws.send(JSON.stringify([t]))};this.resetConnection=()=>{this.stopHeartbeat(),this._ws&&(this._listeners.forEach(t=>{t?.destroy?.()}),this._ws.removeAllListeners(),this._ws.readyState===1&&(this._ws.terminate(),this._ws.close()),this._ws=null,this._listeners=[])};this._sdkType="SERVER",this.connect()}async connect(){if(this._url&&!this._connecting){this._connecting=!0,this.resetConnection();try{let t=G(this._url);this._logger.connecting(t),this._ws=new _t(t,{perMessageDeflate:!1,headers:{"X-SDK-Name":"js","X-SDK-Version":V}})}catch(t){this._connecting=!1,this._logger.connectionError(t);return}this._ws.on("error",t=>{this._connecting=!1,this._logger.connectionError(t?.message||t)}),this._ws.on("close",()=>{this.handleClose()}),this._ws.on("open",async()=>{this._reconnectingIntervalId&&clearInterval(this._reconnectingIntervalId),this._logger.authenticating(!!this._connectionSessionUUID);try{this._connectionSessionUUID&&this.isWebsocketReadyState()?await this.send({taskType:"authentication",apiKey:this._apiKey,connectionSessionUUID:this._connectionSessionUUID}):this.isWebsocketReadyState()&&await this.send({apiKey:this._apiKey,taskType:"authentication"})}catch(n){this._connecting=!1,this._logger.error("Failed to send auth message",n);return}let t=this.addListener({taskUUID:"authentication",lis:n=>{if(this._connecting=!1,n?.error){this._connectionError=n,this._logger.authError(n),t?.destroy?.();return}this._connectionSessionUUID=n?.authentication?.[0]?.connectionSessionUUID,this._connectionError=void 0,this._logger.authenticated(this._connectionSessionUUID||""),t?.destroy?.(),this.startHeartbeat()}})}),this._ws.on("message",(t,n)=>{let o=n?t:t?.toString();if(!o)return;let s;try{s=JSON.parse(o)}catch(r){this._logger.error("Failed to parse WebSocket message",r);return}this.handlePongMessage(s)||this._listeners.forEach(r=>{r.listener(s)})})}}handleClose(){this._connecting=!1,this._logger.connectionClosed(),this._connectionSessionUUID=void 0,this.stopHeartbeat(),!this.isInvalidAPIKey()&&(this._reconnectingIntervalId&&clearInterval(this._reconnectingIntervalId),this._shouldReconnect&&(this._logger.reconnectScheduled(1e3),setTimeout(()=>this.connect(),1e3)))}};var Fe;typeof window>"u"?Fe=H:Fe=$;export{be as EControlMode,ot as EModelArchitecture,at as EModelConditioning,rt as EModelFormat,it as EModelType,st as EOpenPosePreProcessor,lt as EPhotoMakerEnum,Ue as EPreProcessor,Te as EPreProcessorGroup,ee as ETaskType,ye as Environment,Ae as LogLevel,Fe as Runware,$ as RunwareClient,P as RunwareLogger,H as RunwareServer,V as SDK_VERSION,Z as SdkType,ne as createLogger};
|
|
5
5
|
//# sourceMappingURL=index.js.map
|