@runware/sdk-js 1.1.45-beta.4 → 1.1.45-beta.6

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.d.cts CHANGED
@@ -565,6 +565,7 @@ type TAudioInference = {
565
565
  deliveryMethod?: IDeliveryType;
566
566
  uploadEndpoint?: string;
567
567
  includeCost?: boolean;
568
+ onPartialResponse?: (images: IImage[], error?: IError) => void;
568
569
  audioSettings?: {
569
570
  sampleRate?: number;
570
571
  bitrate?: number;
@@ -636,7 +637,7 @@ type TImageUploadResponse = {
636
637
  imageUUID: number;
637
638
  imageURL: string;
638
639
  };
639
- type TAudioInferenceResponse = {
640
+ type IAudioResult = {
640
641
  taskType: string;
641
642
  taskUUID: string;
642
643
  audioUUID: string;
@@ -704,7 +705,7 @@ declare class RunwareBase {
704
705
  protected send: (msg: Object) => void;
705
706
  private destroy;
706
707
  private uploadImage;
707
- private listenToImages;
708
+ private listenToResponse;
708
709
  private listenToUpload;
709
710
  private globalListener;
710
711
  requestImages({ outputType, outputFormat, uploadEndpoint, checkNSFW, positivePrompt, negativePrompt, seedImage, maskImage, strength, height, width, model, steps, scheduler, seed, CFGScale, clipSkip, usePromptWeighting, promptWeighting, numberResults, onPartialImages, includeCost, customTaskUUID, retry, refiner, maskMargin, outputQuality, controlNet, lora, embeddings, ipAdapters, providerSettings, outpaint, acceleratorOptions, advancedFeatures, referenceImages, includeGenerationTime, includePayload, ...rest }: IRequestImage, moreOptions?: Record<string, any>): Promise<ITextToImage[] | undefined>;
@@ -720,7 +721,7 @@ declare class RunwareBase {
720
721
  modelSearch: (payload: TModelSearch) => Promise<TModelSearchResponse>;
721
722
  imageMasking: (payload: TImageMasking) => Promise<TImageMaskingResponse>;
722
723
  imageUpload: (payload: TImageUpload) => Promise<TImageUploadResponse>;
723
- audioInference: (payload: TAudioInference) => Promise<TAudioInferenceResponse | TAudioInferenceResponse[]>;
724
+ audioInference: (payload: TAudioInference) => Promise<IAudioResult | IAudioResult[]>;
724
725
  protected baseSingleRequest: <T>({ payload, debugKey, isMultiple, }: {
725
726
  payload: Record<string, any>;
726
727
  debugKey: string;
@@ -760,4 +761,4 @@ declare class RunwareServer extends RunwareBase {
760
761
 
761
762
  declare let Runware: typeof RunwareClient | typeof RunwareServer;
762
763
 
763
- export { EControlMode, EModelArchitecture, EModelConditioning, EModelFormat, EModelType, EOpenPosePreProcessor, EPhotoMakerEnum, EPreProcessor, EPreProcessorGroup, ETaskType, Environment, type GetWithPromiseAsyncCallBackType, type GetWithPromiseCallBackType, type IAddModelResponse, type IAdditionalResponsePayload, type IAsyncResults, type IBflProviderSettings, type IControlNet, type IControlNetGeneral, type IControlNetImage, type IControlNetPreprocess, type IControlNetWithUUID, type IDeliveryType, type IEmbedding, type IEnhancedPrompt, type IError, type IErrorResponse, type IImage, type IImageToText, type IOutpaint, type IOutputFormat, type IOutputType, type IPromptEnhancer, type IProviderSettings, type IRefiner, type IRemoveImage, type IRemoveImageBackground, type IRequestImage, type IRequestImageToText, type IRequestVideo, type ITextToImage, type IUpscaleGan, type IVideoOutputFormat, type IVideoToImage, type IipAdapter, type ListenerType, type ProviderSettings, type ReconnectingWebsocketProps, type RequireAtLeastOne, type RequireOnlyOne, Runware, type RunwareBaseType, RunwareClient, RunwareServer, SdkType, type TAcceleratorOptions, type TAddModel, type TAddModelBaseType, type TAddModelCheckPoint, type TAddModelControlNet, type TAddModelLora, type TAudioInference, type TAudioInferenceResponse, type TImageMasking, type TImageMaskingResponse, type TImageUpload, type TImageUploadResponse, type TModel, type TModelSearch, type TModelSearchResponse, type TPhotoMaker, type TPhotoMakerResponse, type TPromptWeighting, type TServerError, type UploadImageType };
764
+ export { EControlMode, EModelArchitecture, EModelConditioning, EModelFormat, EModelType, EOpenPosePreProcessor, EPhotoMakerEnum, EPreProcessor, EPreProcessorGroup, ETaskType, Environment, type GetWithPromiseAsyncCallBackType, type GetWithPromiseCallBackType, type IAddModelResponse, type IAdditionalResponsePayload, type IAsyncResults, type IAudioResult, type IBflProviderSettings, type IControlNet, type IControlNetGeneral, type IControlNetImage, type IControlNetPreprocess, type IControlNetWithUUID, type IDeliveryType, type IEmbedding, type IEnhancedPrompt, type IError, type IErrorResponse, type IImage, type IImageToText, type IOutpaint, type IOutputFormat, type IOutputType, type IPromptEnhancer, type IProviderSettings, type IRefiner, type IRemoveImage, type IRemoveImageBackground, type IRequestImage, type IRequestImageToText, type IRequestVideo, type ITextToImage, type IUpscaleGan, type IVideoOutputFormat, type IVideoToImage, type IipAdapter, type ListenerType, type ProviderSettings, type ReconnectingWebsocketProps, type RequireAtLeastOne, type RequireOnlyOne, Runware, type RunwareBaseType, RunwareClient, RunwareServer, SdkType, type TAcceleratorOptions, type TAddModel, type TAddModelBaseType, type TAddModelCheckPoint, type TAddModelControlNet, type TAddModelLora, type TAudioInference, type TImageMasking, type TImageMaskingResponse, type TImageUpload, type TImageUploadResponse, type TModel, type TModelSearch, type TModelSearchResponse, type TPhotoMaker, type TPhotoMakerResponse, type TPromptWeighting, type TServerError, type UploadImageType };
package/dist/index.d.ts CHANGED
@@ -565,6 +565,7 @@ type TAudioInference = {
565
565
  deliveryMethod?: IDeliveryType;
566
566
  uploadEndpoint?: string;
567
567
  includeCost?: boolean;
568
+ onPartialResponse?: (images: IImage[], error?: IError) => void;
568
569
  audioSettings?: {
569
570
  sampleRate?: number;
570
571
  bitrate?: number;
@@ -636,7 +637,7 @@ type TImageUploadResponse = {
636
637
  imageUUID: number;
637
638
  imageURL: string;
638
639
  };
639
- type TAudioInferenceResponse = {
640
+ type IAudioResult = {
640
641
  taskType: string;
641
642
  taskUUID: string;
642
643
  audioUUID: string;
@@ -704,7 +705,7 @@ declare class RunwareBase {
704
705
  protected send: (msg: Object) => void;
705
706
  private destroy;
706
707
  private uploadImage;
707
- private listenToImages;
708
+ private listenToResponse;
708
709
  private listenToUpload;
709
710
  private globalListener;
710
711
  requestImages({ outputType, outputFormat, uploadEndpoint, checkNSFW, positivePrompt, negativePrompt, seedImage, maskImage, strength, height, width, model, steps, scheduler, seed, CFGScale, clipSkip, usePromptWeighting, promptWeighting, numberResults, onPartialImages, includeCost, customTaskUUID, retry, refiner, maskMargin, outputQuality, controlNet, lora, embeddings, ipAdapters, providerSettings, outpaint, acceleratorOptions, advancedFeatures, referenceImages, includeGenerationTime, includePayload, ...rest }: IRequestImage, moreOptions?: Record<string, any>): Promise<ITextToImage[] | undefined>;
@@ -720,7 +721,7 @@ declare class RunwareBase {
720
721
  modelSearch: (payload: TModelSearch) => Promise<TModelSearchResponse>;
721
722
  imageMasking: (payload: TImageMasking) => Promise<TImageMaskingResponse>;
722
723
  imageUpload: (payload: TImageUpload) => Promise<TImageUploadResponse>;
723
- audioInference: (payload: TAudioInference) => Promise<TAudioInferenceResponse | TAudioInferenceResponse[]>;
724
+ audioInference: (payload: TAudioInference) => Promise<IAudioResult | IAudioResult[]>;
724
725
  protected baseSingleRequest: <T>({ payload, debugKey, isMultiple, }: {
725
726
  payload: Record<string, any>;
726
727
  debugKey: string;
@@ -760,4 +761,4 @@ declare class RunwareServer extends RunwareBase {
760
761
 
761
762
  declare let Runware: typeof RunwareClient | typeof RunwareServer;
762
763
 
763
- export { EControlMode, EModelArchitecture, EModelConditioning, EModelFormat, EModelType, EOpenPosePreProcessor, EPhotoMakerEnum, EPreProcessor, EPreProcessorGroup, ETaskType, Environment, type GetWithPromiseAsyncCallBackType, type GetWithPromiseCallBackType, type IAddModelResponse, type IAdditionalResponsePayload, type IAsyncResults, type IBflProviderSettings, type IControlNet, type IControlNetGeneral, type IControlNetImage, type IControlNetPreprocess, type IControlNetWithUUID, type IDeliveryType, type IEmbedding, type IEnhancedPrompt, type IError, type IErrorResponse, type IImage, type IImageToText, type IOutpaint, type IOutputFormat, type IOutputType, type IPromptEnhancer, type IProviderSettings, type IRefiner, type IRemoveImage, type IRemoveImageBackground, type IRequestImage, type IRequestImageToText, type IRequestVideo, type ITextToImage, type IUpscaleGan, type IVideoOutputFormat, type IVideoToImage, type IipAdapter, type ListenerType, type ProviderSettings, type ReconnectingWebsocketProps, type RequireAtLeastOne, type RequireOnlyOne, Runware, type RunwareBaseType, RunwareClient, RunwareServer, SdkType, type TAcceleratorOptions, type TAddModel, type TAddModelBaseType, type TAddModelCheckPoint, type TAddModelControlNet, type TAddModelLora, type TAudioInference, type TAudioInferenceResponse, type TImageMasking, type TImageMaskingResponse, type TImageUpload, type TImageUploadResponse, type TModel, type TModelSearch, type TModelSearchResponse, type TPhotoMaker, type TPhotoMakerResponse, type TPromptWeighting, type TServerError, type UploadImageType };
764
+ export { EControlMode, EModelArchitecture, EModelConditioning, EModelFormat, EModelType, EOpenPosePreProcessor, EPhotoMakerEnum, EPreProcessor, EPreProcessorGroup, ETaskType, Environment, type GetWithPromiseAsyncCallBackType, type GetWithPromiseCallBackType, type IAddModelResponse, type IAdditionalResponsePayload, type IAsyncResults, type IAudioResult, type IBflProviderSettings, type IControlNet, type IControlNetGeneral, type IControlNetImage, type IControlNetPreprocess, type IControlNetWithUUID, type IDeliveryType, type IEmbedding, type IEnhancedPrompt, type IError, type IErrorResponse, type IImage, type IImageToText, type IOutpaint, type IOutputFormat, type IOutputType, type IPromptEnhancer, type IProviderSettings, type IRefiner, type IRemoveImage, type IRemoveImageBackground, type IRequestImage, type IRequestImageToText, type IRequestVideo, type ITextToImage, type IUpscaleGan, type IVideoOutputFormat, type IVideoToImage, type IipAdapter, type ListenerType, type ProviderSettings, type ReconnectingWebsocketProps, type RequireAtLeastOne, type RequireOnlyOne, Runware, type RunwareBaseType, RunwareClient, RunwareServer, SdkType, type TAcceleratorOptions, type TAddModel, type TAddModelBaseType, type TAddModelCheckPoint, type TAddModelControlNet, type TAddModelLora, type TAudioInference, type TImageMasking, type TImageMaskingResponse, type TImageUpload, type TImageUploadResponse, type TModel, type TModelSearch, type TModelSearchResponse, type TPhotoMaker, type TPhotoMakerResponse, type TPromptWeighting, type TServerError, type UploadImageType };
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- var Ge=Object.create;var ue=Object.defineProperty;var Be=Object.getOwnPropertyDescriptor;var qe=Object.getOwnPropertyNames;var Ve=Object.getPrototypeOf,He=Object.prototype.hasOwnProperty;var Qe=(l,e)=>()=>(e||l((e={exports:{}}).exports,e),e.exports);var je=(l,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of qe(e))!He.call(l,s)&&s!==t&&ue(l,s,{get:()=>e[s],enumerable:!(n=Be(e,s))||n.enumerable});return l};var Je=(l,e,t)=>(t=l!=null?Ge(Ve(l)):{},je(e||!l||!l.__esModule?ue(t,"default",{value:l,enumerable:!0}):t,l));var ve=Qe((cn,xe)=>{"use strict";var ke=l=>l&&l.CLOSING===2,rt=()=>typeof WebSocket<"u"&&ke(WebSocket),at=()=>({constructor:rt()?WebSocket:null,maxReconnectionDelay:1e4,minReconnectionDelay:1500,reconnectionDelayGrowFactor:1.3,connectionTimeout:4e3,maxRetries:1/0,debug:!1}),ot=(l,e,t)=>{Object.defineProperty(e,t,{get:()=>l[t],set:n=>{l[t]=n},enumerable:!0,configurable:!0})},_e=l=>l.minReconnectionDelay+Math.random()*l.minReconnectionDelay,it=(l,e)=>{let t=e*l.reconnectionDelayGrowFactor;return t>l.maxReconnectionDelay?l.maxReconnectionDelay:t},lt=["onopen","onclose","onmessage","onerror"],ut=(l,e,t)=>{Object.keys(t).forEach(n=>{t[n].forEach(([s,r])=>{l.addEventListener(n,s,r)})}),e&&lt.forEach(n=>{l[n]=e[n]})},De=function(l,e,t={}){let n,s,r=0,i=0,u=!0,a={};if(!(this instanceof De))throw new TypeError("Failed to construct 'ReconnectingWebSocket': Please use the 'new' operator");let d=at();if(Object.keys(d).filter(y=>t.hasOwnProperty(y)).forEach(y=>d[y]=t[y]),!ke(d.constructor))throw new TypeError("Invalid WebSocket constructor. Set `options.constructor`");let g=d.debug?(...y)=>console.log("RWS:",...y):()=>{},p=(y,c)=>setTimeout(()=>{let h=new Error(c);h.code=y,Array.isArray(a.error)&&a.error.forEach(([I])=>I(h)),n.onerror&&n.onerror(h)},0),o=()=>{if(g("close"),i++,g("retries count:",i),i>d.maxRetries){p("EHOSTDOWN","Too many failed connection attempts");return}r?r=it(d,r):r=_e(d),g("reconnectDelay:",r),u&&setTimeout(m,r)},m=()=>{g("connect");let y=n;n=new d.constructor(l,e),s=setTimeout(()=>{g("timeout"),n.close(),p("ETIMEDOUT","Connection timeout")},d.connectionTimeout),g("bypass properties");for(let c in n)["addEventListener","removeEventListener","close","send"].indexOf(c)<0&&ot(n,this,c);n.addEventListener("open",()=>{clearTimeout(s),g("open"),r=_e(d),g("reconnectDelay:",r),i=0}),n.addEventListener("close",o),ut(n,y,a)};g("init"),m(),this.close=(y=1e3,c="",{keepClosed:h=!1,fastClose:I=!0,delay:R=0}={})=>{if(R&&(r=R),u=!h,n.close(y,c),I){let T={code:y,reason:c,wasClean:!0};o(),Array.isArray(a.close)&&a.close.forEach(([_,b])=>{_(T),n.removeEventListener("close",_,b)}),n.onclose&&(n.onclose(T),n.onclose=null)}},this.send=y=>{n.send(y)},this.addEventListener=(y,c,h)=>{Array.isArray(a[y])?a[y].some(([I])=>I===c)||a[y].push([c,h]):a[y]=[[c,h]],n.addEventListener(y,c,h)},this.removeEventListener=(y,c,h)=>{Array.isArray(a[y])&&(a[y]=a[y].filter(([I])=>I!==c)),n.removeEventListener(y,c,h)}};xe.exports=De});var ce=(n=>(n.PRODUCTION="PRODUCTION",n.DEVELOPMENT="DEVELOPMENT",n.TEST="TEST",n))(ce||{}),J=(t=>(t.CLIENT="CLIENT",t.SERVER="SERVER",t))(J||{}),$=(c=>(c.IMAGE_INFERENCE="imageInference",c.IMAGE_UPLOAD="imageUpload",c.IMAGE_UPSCALE="imageUpscale",c.IMAGE_BACKGROUND_REMOVAL="imageBackgroundRemoval",c.VIDEO_INFERENCE="videoInference",c.GET_RESPONSE="getResponse",c.PHOTO_MAKER="photoMaker",c.IMAGE_CAPTION="imageCaption",c.IMAGE_CONTROL_NET_PRE_PROCESS="imageControlNetPreProcess",c.IMAGE_MASKING="imageMasking",c.PROMPT_ENHANCE="promptEnhance",c.AUTHENTICATION="authentication",c.MODEL_UPLOAD="modelUpload",c.MODEL_SEARCH="modelSearch",c.AUDIO_INFERENCE="audioInference",c))($||{}),de=(n=>(n.BALANCED="balanced",n.PROMPT="prompt",n.CONTROL_NET="controlnet",n))(de||{}),pe=(o=>(o.canny="canny",o.depth="depth",o.mlsd="mlsd",o.normalbae="normalbae",o.openpose="openpose",o.tile="tile",o.seg="seg",o.lineart="lineart",o.lineart_anime="lineart_anime",o.shuffle="shuffle",o.scribble="scribble",o.softedge="softedge",o))(pe||{}),ge=(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))(ge||{}),$e=(r=>(r.openpose="openpose",r.openpose_face="openpose_face",r.openpose_faceonly="openpose_faceonly",r.openpose_full="openpose_full",r.openpose_hand="openpose_hand",r))($e||{}),ze=(t=>(t.safetensors="safetensors",t.pickletensor="pickletensor",t))(ze||{}),Ye=(m=>(m.flux1d="flux1d",m.flux1s="flux1s",m.pony="pony",m.sdhyper="sdhyper",m.sd1x="sd1x",m.sd1xlcm="sd1xlcm",m.sd3="sd3",m.sdxl="sdxl",m.sdxllcm="sdxllcm",m.sdxldistilled="sdxldistilled",m.sdxlhyper="sdxlhyper",m.sdxllightning="sdxllightning",m.sdxlturbo="sdxlturbo",m))(Ye||{}),Ze=(n=>(n.base="base",n.inpainting="inpainting",n.pix2pix="pix2pix",n))(Ze||{}),Xe=(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))(Xe||{}),et=(p=>(p.NoStyle="No style",p.Cinematic="Cinematic",p.DisneyCharacter="Disney Character",p.DigitalArt="Digital Art",p.Photographic="Photographic",p.FantasyArt="Fantasy art",p.Neonpunk="Neonpunk",p.Enhance="Enhance",p.ComicBook="Comic book",p.Lowpoly="Lowpoly",p.LineArt="Line art",p))(et||{});import{v4 as tt,validate as nt}from"uuid";var K=6e4,P=1e3,me=100,z={PRODUCTION:"wss://ws-api.runware.ai/v1",TEST:"ws://localhost:8080"},ye=(l,e)=>{if(l==null)return;let t=l.indexOf(e);t!==-1&&l.splice(t,1)},S=(l,{debugKey:e="debugKey",timeoutDuration:t=K,shouldThrowError:n=!0,pollingInterval:s=me})=>(t=t<P?P:t,new Promise((r,i)=>{let u=setTimeout(()=>{a&&(clearInterval(a),n&&i(`Response could not be received from server for ${e}`)),clearTimeout(u)},t),a=setInterval(async()=>{l({resolve:r,reject:i,intervalId:a})&&(clearInterval(a),clearTimeout(u))},s)})),Ie=l=>new Promise(e=>{let t=new FileReader;t.readAsDataURL(l),t.onload=function(){e(t.result)}}),k=()=>tt(),Y=l=>nt(l);var he=({key:l,data:e,useZero:t=!0,shouldReturnString:n=!1})=>l.split(/\.|\[/).map(i=>i.replace(/\]$/,"")).reduce((i,u)=>{let a=t?0:void 0,d=i?.[u];if(!d)return a;if(Array.isArray(d)&&/^\d+$/.test(u)){let g=parseInt(u,10);return g>=0&&g<d.length?i[u]=d[g]:i[u]??a}else return i[u]??a},e||{})??{},be=(l,e=1e3)=>new Promise(t=>setTimeout(t,l*e));var fe=(l,e)=>l.filter(t=>t.key!==e.key);var U=({key:l,value:e})=>e||e===0||e===!1?{[l]:e}:{},st=(l,e)=>Math.floor(Math.random()*(e-l+1))+l,Te=()=>st(1,Number.MAX_SAFE_INTEGER),Ue=(l,{debugKey:e="debugKey",timeoutDuration:t=K,shouldThrowError:n=!0,pollingInterval:s=me})=>(t=t<P?P:t,new Promise((r,i)=>{let u=setTimeout(()=>{a&&(clearInterval(a),n&&i(`Response could not be received from server for ${e}`)),clearTimeout(u)},t),a=setInterval(async()=>{try{await l({resolve:r,reject:i,intervalId:a})&&(clearInterval(a),clearTimeout(u))}catch(d){clearInterval(a),clearTimeout(u),i(d)}},s)})),Re=l=>typeof l=="string"&&(l.startsWith("http:")||l.startsWith("https:"));var D=async(l,e={})=>{let{delayInSeconds:t=1,callback:n}=e,s=e.maxRetries??1;for(;s;)try{return await l()}catch(r){if(n?.(),r?.error)throw r;if(s--,s>0)await be(t),await D(l,{...e,maxRetries:s});else throw r}};var w=class{constructor({apiKey:e,url:t=z.PRODUCTION,shouldReconnect:n=!0,globalMaxRetries:s=2,timeoutDuration:r=K}){this._listeners=[];this._globalMessages={};this._globalImages=[];this.ensureConnectionUUID=null;this.isWebsocketReadyState=()=>this._ws?.readyState===1;this.isInvalidAPIKey=()=>this._connectionError?.error?.code==="invalidApiKey";this.send=e=>{this._ws.send(JSON.stringify([e]))};this.uploadImage=async e=>{try{return await D(async()=>{let t=k();if(typeof e=="string"&&Y(e))return{imageURL:e,imageUUID:e,taskUUID:t,taskType:"imageUpload"};let n=typeof e=="string"?e:await Ie(e);return{imageURL:n,imageUUID:n,taskUUID:t,taskType:"imageUpload"}})}catch(t){throw t}};this.controlNetPreProcess=async({inputImage:e,preProcessorType:t,height:n,width:s,outputType:r,outputFormat:i,highThresholdCanny:u,lowThresholdCanny:a,includeHandsAndFaceOpenPose:d,includeCost:g,outputQuality:p,customTaskUUID:o,retry:m,includeGenerationTime:y,includePayload:c})=>{let h=m||this._globalMaxRetries,I,R=Date.now();try{return await D(async()=>{await this.ensureConnection();let T=await this.uploadImage(e);if(!T?.imageUUID)return null;let _=o||k(),b={inputImage:T.imageUUID,taskType:"imageControlNetPreProcess",taskUUID:_,preProcessorType:t,...U({key:"height",value:n}),...U({key:"width",value:s}),...U({key:"outputType",value:r}),...U({key:"outputFormat",value:i}),...U({key:"includeCost",value:g}),...U({key:"highThresholdCanny",value:u}),...U({key:"lowThresholdCanny",value:a}),...U({key:"includeHandsAndFaceOpenPose",value:d}),...p?{outputQuality:p}:{}};this.send({...b}),I=this.globalListener({taskUUID:_});let O=await S(({resolve:G,reject:B})=>{let v=this.getSingleMessage({taskUUID:_});if(v){if(v?.error)return B(v),!0;if(v)return G(v),!0}},{debugKey:"unprocessed-image",timeoutDuration:this._timeoutDuration});return I.destroy(),this.insertAdditionalResponse({response:O,payload:c?b:void 0,startTime:y?R:void 0}),O},{maxRetries:h,callback:()=>{I?.destroy()}})}catch(T){throw T}};this.requestImageToText=async({inputImage:e,includeCost:t,customTaskUUID:n,retry:s,includePayload:r,includeGenerationTime:i,inputImages:u,...a})=>{let d=s||this._globalMaxRetries,g,p=Date.now();try{return await D(async()=>{await this.ensureConnection();let o=e?await this.uploadImage(e):null,m=u?.length?await Promise.all(u.map(I=>this.uploadImage(I))):null,y=n||k(),c={taskUUID:y,taskType:"imageCaption",...o?.imageUUID?{inputImage:o.imageUUID}:{},...m?.length?{inputImages:m.map(I=>I?.imageUUID).filter(Boolean)}:{},...U({key:"includeCost",value:t}),...a};this.send(c),g=this.globalListener({taskUUID:y});let h=await S(({resolve:I,reject:R})=>{let T=this.getSingleMessage({taskUUID:y});if(T){if(T?.error)return R(T),!0;if(T)return delete this._globalMessages[y],I(T),!0}},{debugKey:"remove-image-background",timeoutDuration:this._timeoutDuration});return g.destroy(),this.insertAdditionalResponse({response:h,payload:r?c:void 0,startTime:i?p:void 0}),h},{maxRetries:d,callback:()=>{g?.destroy()}})}catch(o){throw o}};this.removeImageBackground=async e=>this.baseSingleRequest({payload:{...e,taskType:"imageBackgroundRemoval"},debugKey:"remove-image-background"});this.videoInference=async e=>{let{skipResponse:t,inputAudios:n,...s}=e;try{if(n?.length){for(let d of n)if(!Re(d)&&!Y(d))throw new Error(`Invalid audio source: "${d}". Only public URLs or media UUIDs are supported for audio.`)}let r=await this.baseSingleRequest({payload:{...s,...n?.length?{inputAudios:n}:{},deliveryMethod:"async",taskType:"videoInference"},debugKey:"video-inference"});if(t)return r;let i=r?.taskUUID,u=e?.numberResults??1,a=new Map;return await Ue(async({resolve:d,reject:g})=>{try{let p=await this.getResponse({taskUUID:i});for(let m of p||[])m.videoUUID&&a.set(m.videoUUID,m);return a.size===u?(d(Array.from(a.values())),!0):!1}catch(p){return g(p),!0}},{debugKey:"async-response",pollingInterval:2*1e3,timeoutDuration:10*60*1e3}),Array.from(a.values())}catch(r){throw r}};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({inputImage:e,upscaleFactor:t,outputType:n,outputFormat:s,includeCost:r,outputQuality:i,customTaskUUID:u,retry:a,includeGenerationTime:d,includePayload:g,...p})=>{let o=a||this._globalMaxRetries,m,y=Date.now();try{return await D(async()=>{await this.ensureConnection();let c;c=await this.uploadImage(e);let h=u||k(),I={taskUUID:h,inputImage:c?.imageUUID,taskType:"imageUpscale",upscaleFactor:t,...U({key:"includeCost",value:r}),...n?{outputType:n}:{},...i?{outputQuality:i}:{},...s?{outputFormat:s}:{},...p};this.send(I),m=this.globalListener({taskUUID:h});let R=await S(({resolve:T,reject:_})=>{let b=this.getSingleMessage({taskUUID:h});if(b){if(b?.error)return _(b),!0;if(b)return delete this._globalMessages[h],T(b),!0}},{debugKey:"upscale-gan",timeoutDuration:this._timeoutDuration});return m.destroy(),this.insertAdditionalResponse({response:R,payload:g?I:void 0,startTime:d?y:void 0}),R},{maxRetries:o,callback:()=>{m?.destroy()}})}catch(c){throw c}};this.enhancePrompt=async({prompt:e,promptMaxLength:t=380,promptVersions:n=1,includeCost:s,customTaskUUID:r,retry:i,includeGenerationTime:u,includePayload:a})=>{let d=i||this._globalMaxRetries,g,p=Date.now();try{return await D(async()=>{await this.ensureConnection();let o=r||k(),m={prompt:e,taskUUID:o,promptMaxLength:t,promptVersions:n,...U({key:"includeCost",value:s}),taskType:"promptEnhance"};this.send(m),g=this.globalListener({taskUUID:o});let y=await S(({resolve:c,reject:h})=>{let I=this._globalMessages[o];if(I?.error)return h(I),!0;if(I?.length>=n)return delete this._globalMessages[o],c(I),!0},{debugKey:"enhance-prompt",timeoutDuration:this._timeoutDuration});return g.destroy(),this.insertAdditionalResponse({response:y,payload:a?m:void 0,startTime:u?p:void 0}),y},{maxRetries:d,callback:()=>{g?.destroy()}})}catch(o){throw o}};this.modelUpload=async e=>{let{onUploadStream:t,retry:n,customTaskUUID:s,...r}=e,i=n||this._globalMaxRetries,u;try{return await D(async()=>{await this.ensureConnection();let a=s||k();this.send({...r,taskUUID:a,taskType:"modelUpload"});let d,g;return u=this.listenToUpload({taskUUID:a,onUploadStream:(o,m)=>{t?.(o,m),o?.status==="ready"?d=o:m&&(g=m)}}),await S(({resolve:o,reject:m})=>{if(d)return o(d),!0;if(g)return m(g),!1},{shouldThrowError:!1,timeoutDuration:60*60*1e3})},{maxRetries:i,callback:()=>{u?.destroy()}})}catch(a){throw a}};this.photoMaker=async(e,t)=>{let{onPartialImages:n,retry:s,customTaskUUID:r,numberResults:i,includeGenerationTime:u,includePayload:a,...d}=e,g=s||this._globalMaxRetries,p,o=[],m=0,y=Date.now();try{return await D(async()=>{await this.ensureConnection(),m++;let c=this._globalImages.filter(_=>o.includes(_.taskUUID)),h=r||k();o.push(h);let I=i-c.length,R={...d,...d.seed?{seed:d.seed}:{seed:Te()},...t??{},taskUUID:h,taskType:"photoMaker",numberResults:i};this.send({...R,numberResults:I}),p=this.listenToImages({onPartialImages:n,taskUUID:h,groupKey:"REQUEST_IMAGES",requestPayload:a?R:void 0,startTime:u?y:void 0});let T=await this.getSimilarImages({taskUUID:o,numberResults:i,lis:p});return p.destroy(),T},{maxRetries:g,callback:()=>{p?.destroy()}})}catch(c){if(c.taskUUID)throw c;if(m>=g)return this.handleIncompleteImages({taskUUIDs:o,error:c})}};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.audioInference=async e=>{let{skipResponse:t,deliveryMethod:n="sync",...s}=e;try{return await(n==="sync"?this.baseSyncRequest:this.baseSingleRequest)({payload:{...s,numberResults:s.numberResults||1,taskType:"audioInference",deliveryMethod:n},debugKey:"audio-inference"})}catch(r){throw r}};this.baseSingleRequest=async({payload:e,debugKey:t,isMultiple:n})=>{let{retry:s,customTaskUUID:r,includePayload:i,includeGenerationTime:u,...a}=e,d=s||this._globalMaxRetries,g,p=Date.now();try{return await D(async()=>{await this.ensureConnection();let o=r||k(),m={...a,taskUUID:o};this.send(m),g=this.globalListener({taskUUID:o});let y=await S(({resolve:c,reject:h})=>{let I=n?this.getMultipleMessages({taskUUID:o}):this.getSingleMessage({taskUUID:o});if(I){if(I?.error)return h(I),!0;if(I)return delete this._globalMessages[o],c(I),!0}},{debugKey:t,timeoutDuration:this._timeoutDuration});return this.insertAdditionalResponse({response:y,payload:i?m:void 0,startTime:u?p:void 0}),g.destroy(),y},{maxRetries:d,callback:()=>{g?.destroy()}})}catch(o){throw o}};this.baseSyncRequest=async({payload:e,debugKey:t})=>{let{retry:n,customTaskUUID:s,includePayload:r,numberResults:i=1,onPartialRequest:u,includeGenerationTime:a,...d}=e,g=n||this._globalMaxRetries,p,o=[],m=0,y=Date.now();try{return await D(async()=>{await this.ensureConnection(),m++;let c=this._globalImages.filter(_=>o.includes(_.taskUUID)),h=s||k();o.push(h);let I=i-c.length,R={...d,taskUUID:h,numberResults:I};this.send(R),p=this.listenToImages({onPartialImages:u,taskUUID:h,groupKey:"REQUEST_AUDIO",requestPayload:r?R:void 0,startTime:a?y:void 0});let T=await this.getSimilarImages({taskUUID:o,numberResults:i,lis:p,debugKey:t});return p.destroy(),T},{maxRetries:g,callback:()=>{p?.destroy()}})}catch(c){throw c}};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 s=e;s.additionalResponse={},t&&(e.additionalResponse.payload=t),n&&(e.additionalResponse.generationTime=Date.now()-n)};this.disconnect=async()=>{this._shouldReconnect=!1,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=s,this._timeoutDuration=r}static async initialize(e){try{let t=new this(e);return await t.ensureConnection(),t}catch(t){throw t}}addListener({lis:e,groupKey:t,taskUUID:n}){let s=u=>{let a=Array.isArray(u?.data)?u.data:[u.data],d=u?.[0]?.errors?u?.[0]?.errors:Array.isArray(u?.errors)?u.errors:[u.errors],g=a.filter(o=>(o?.taskUUID||o?.taskType)===n);if(d.filter(o=>(o?.taskUUID||o?.taskType)===n).length){e({error:{...d[0]??{}}});return}if(g.length){e({[n]:a});return}},r={key:n||k(),listener:s,groupKey:t};return this._listeners.push(r),{destroy:()=>{this._listeners=fe(this._listeners,r)}}}connect(){this._ws.onopen=e=>{this._connectionSessionUUID?this.send({taskType:"authentication",apiKey:this._apiKey,connectionSessionUUID:this._connectionSessionUUID}):this.send({apiKey:this._apiKey,taskType:"authentication"}),this.addListener({taskUUID:"authentication",lis:t=>{if(t?.error){this._connectionError=t;return}this._connectionSessionUUID=t?.authentication?.[0]?.connectionSessionUUID,this._connectionError=void 0}})},this._ws.onmessage=e=>{let t=JSON.parse(e.data);for(let n of this._listeners)if(n?.listener?.(t))return},this._ws.onclose=e=>{this.isInvalidAPIKey()}}destroy(e){ye(this._listeners,e)}listenToImages({onPartialImages:e,taskUUID:t,groupKey:n,requestPayload:s,startTime:r}){return this.addListener({taskUUID:t,lis:i=>{let u=i?.[t]?.filter(a=>a.taskUUID===t);i.error?(e?.(u,i?.error&&i),this._globalError=i):(u=u.map(a=>(this.insertAdditionalResponse({response:a,payload:s||void 0,startTime:r||void 0}),{...a})),e?.(u,i?.error&&i),this._sdkType==="CLIENT"?this._globalImages=[...this._globalImages,...(i?.[t]??[]).map(a=>(this.insertAdditionalResponse({response:a,payload:s||void 0,startTime:r||void 0}),{...a}))]:this._globalImages=[...this._globalImages,...u])},groupKey:n})}listenToUpload({onUploadStream:e,taskUUID:t}){return this.addListener({taskUUID:t,lis:n=>{let s=n?.error,r=n?.[t]?.[0],i=r?.taskUUID===t?r:null;(i||s)&&e?.(i||void 0,s)}})}globalListener({taskUUID:e}){return this.addListener({taskUUID:e,lis:t=>{if(t.error){this._globalMessages[e]=t;return}let n=he({key:e,data:t,useZero:!1});Array.isArray(n)?n.forEach(s=>{this._globalMessages[s.taskUUID]=[...this._globalMessages[s.taskUUID]??[],s]}):this._globalMessages[n.taskUUID]=n}})}async requestImages({outputType:e,outputFormat:t,uploadEndpoint:n,checkNSFW:s,positivePrompt:r,negativePrompt:i,seedImage:u,maskImage:a,strength:d,height:g,width:p,model:o,steps:m,scheduler:y,seed:c,CFGScale:h,clipSkip:I,usePromptWeighting:R,promptWeighting:T,numberResults:_=1,onPartialImages:b,includeCost:O,customTaskUUID:G,retry:B,refiner:v,maskMargin:we,outputQuality:f,controlNet:q,lora:Z,embeddings:X,ipAdapters:ee,providerSettings:te,outpaint:ne,acceleratorOptions:se,advancedFeatures:re,referenceImages:ae,includeGenerationTime:Ce,includePayload:Ee,...Oe},Me){let C,oe,M=[],ie=0,le=B||this._globalMaxRetries;try{await this.ensureConnection();let A=null,V=null,H=[];if(u){let x=await this.uploadImage(u);if(!x)return[];A=x.imageUUID}if(a){let x=await this.uploadImage(a);if(!x)return[];V=x.imageUUID}if(q?.length)for(let x=0;x<q.length;x++){let E=q[x],{endStep:Q,startStep:N,weight:j,guideImage:L,controlMode:Le,startStepPercentage:Pe,endStepPercentage:Ke,model:We}=E,Fe=L?await this.uploadImage(L):null;H.push({guideImage:Fe?.imageUUID,model:We,endStep:Q,startStep:N,weight:j,...U({key:"startStepPercentage",value:Pe}),...U({key:"endStepPercentage",value:Ke}),controlMode:Le||"controlnet"})}oe={taskType:"imageInference",model:o,positivePrompt:r,...i?{negativePrompt:i}:{},...g?{height:g}:{},...p?{width:p}:{},numberResults:_,...e?{outputType:e}:{},...t?{outputFormat:t}:{},...n?{uploadEndpoint:n}:{},...U({key:"checkNSFW",value:s}),...U({key:"strength",value:d}),...U({key:"CFGScale",value:h}),...U({key:"clipSkip",value:I}),...U({key:"maskMargin",value:we}),...U({key:"usePromptWeighting",value:R}),...U({key:"steps",value:m}),...T?{promptWeighting:T}:{},...c?{seed:c}:{},...y?{scheduler:y}:{},...v?{refiner:v}:{},...ne?{outpaint:ne}:{},...U({key:"includeCost",value:O}),...A?{seedImage:A}:{},...V?{maskImage:V}:{},...f?{outputQuality:f}:{},...H.length?{controlNet:H}:{},...Z?.length?{lora:Z}:{},...X?.length?{embeddings:X}:{},...ee?.length?{ipAdapters:ee}:{},...te?{providerSettings:te}:{},...se?{acceleratorOptions:se}:{},...re?{advancedFeatures:re}:{},...ae?.length?{referenceImages:ae}:{},...Oe,...Me??{}};let Ne=Date.now();return await D(async()=>{ie++,C?.destroy();let x=this._globalImages.filter(L=>M.includes(L.taskUUID)),E=G||k();M.push(E);let Q=_-x.length,N={...oe,taskUUID:E,numberResults:Q};this.send(N),C=this.listenToImages({onPartialImages:b,taskUUID:E,groupKey:"REQUEST_IMAGES",requestPayload:Ee?N:void 0,startTime:Ce?Ne:void 0});let j=await this.getSimilarImages({taskUUID:M,numberResults:_,lis:C});return C.destroy(),j},{maxRetries:le,callback:()=>{C?.destroy()}})}catch(A){if(ie>=le)return this.handleIncompleteImages({taskUUIDs:M,error:A});throw A}}async ensureConnection(){if(this.connected()||this._url===z.TEST)return;let t=2e3,n=200;try{if(this.isInvalidAPIKey())throw this._connectionError;return new Promise((s,r)=>{let i=0,u=30,a=k(),d,g,p=()=>{this.ensureConnectionUUID=null,clearInterval(d),clearInterval(g)};this._sdkType==="SERVER"&&(d=setInterval(async()=>{try{let o=this.connected(),m=!1;(!this.ensureConnectionUUID||a===this.ensureConnectionUUID)&&(this.ensureConnectionUUID||(this.ensureConnectionUUID=a),m=!0);let y=i%10===0&&m;o?(p(),s(!0)):i>=u?(p(),r(new Error("Retry timed out"))):(y&&this.connect(),i++)}catch(o){p(),r(o)}},t)),g=setInterval(async()=>{if(this.connected()){p(),s(!0);return}if(this.isInvalidAPIKey()){p(),r(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 getSimilarImages({taskUUID:e,numberResults:t,shouldThrowError:n,lis:s,debugKey:r="getting-images"}){return await S(({resolve:i,reject:u,intervalId:a})=>{let d=Array.isArray(e)?e:[e],g=this._globalImages.filter(p=>d.includes(p.taskUUID));if(this._globalError){let p=this._globalError;return this._globalError=void 0,clearInterval(a),u?.(p),!0}else if(g.length>=t)return clearInterval(a),this._globalImages=this._globalImages.filter(p=>!d.includes(p.taskUUID)),i([...g].slice(0,t)),!0},{debugKey:r,shouldThrowError:n,timeoutDuration:this._timeoutDuration})}handleIncompleteImages({taskUUIDs:e,error:t}){let n=this._globalImages.filter(s=>e.includes(s.taskUUID));if(n.length>1)return this._globalImages=this._globalImages.filter(s=>!e.includes(s.taskUUID)),n;throw t}};var Se=Je(ve(),1),W=class extends w{constructor(e){let{shouldReconnect:t,...n}=e;super(n),this._ws=new Se.default(this._url),this.connect()}};import ct from"ws";var F=class extends w{constructor(t){super(t);this._instantiated=!1;this._listeners=[];this._reconnectingIntervalId=null;this.send=t=>{this._ws.send(JSON.stringify([t]))};this.resetConnection=()=>{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(){this._url&&(this.resetConnection(),this._ws=new ct(this._url,{perMessageDeflate:!1}),this._ws.on("error",()=>{}),this._ws.on("close",()=>{this.handleClose()}),this._ws.on("open",()=>{this._reconnectingIntervalId&&clearInterval(this._reconnectingIntervalId),this._connectionSessionUUID&&this.isWebsocketReadyState()?this.send({taskType:"authentication",apiKey:this._apiKey,connectionSessionUUID:this._connectionSessionUUID}):this.isWebsocketReadyState()&&this.send({apiKey:this._apiKey,taskType:"authentication"}),this.addListener({taskUUID:"authentication",lis:t=>{if(t?.error){this._connectionError=t;return}this._connectionSessionUUID=t?.authentication?.[0]?.connectionSessionUUID,this._connectionError=void 0}})}),this._ws.on("message",(t,n)=>{let s=n?t:t?.toString();if(!s)return;let r=JSON.parse(s);this._listeners.forEach(i=>{i.listener(r)})}))}handleClose(){this.isInvalidAPIKey()||(this._reconnectingIntervalId&&clearInterval(this._reconnectingIntervalId),this._shouldReconnect&&setTimeout(()=>this.connect(),1e3))}heartBeat(){clearTimeout(this._pingTimeout),this._pingTimeout=setTimeout(()=>{this.isWebsocketReadyState()&&this.send({ping:!0})},5e3)}};var Ae;typeof window>"u"?Ae=F:Ae=W;export{de as EControlMode,Ye as EModelArchitecture,Xe as EModelConditioning,ze as EModelFormat,Ze as EModelType,$e as EOpenPosePreProcessor,et as EPhotoMakerEnum,ge as EPreProcessor,pe as EPreProcessorGroup,$ as ETaskType,ce as Environment,Ae as Runware,W as RunwareClient,F as RunwareServer,J as SdkType};
1
+ var Ge=Object.create;var ue=Object.defineProperty;var Be=Object.getOwnPropertyDescriptor;var qe=Object.getOwnPropertyNames;var Ve=Object.getPrototypeOf,He=Object.prototype.hasOwnProperty;var Qe=(l,e)=>()=>(e||l((e={exports:{}}).exports,e),e.exports);var je=(l,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of qe(e))!He.call(l,s)&&s!==t&&ue(l,s,{get:()=>e[s],enumerable:!(n=Be(e,s))||n.enumerable});return l};var Je=(l,e,t)=>(t=l!=null?Ge(Ve(l)):{},je(e||!l||!l.__esModule?ue(t,"default",{value:l,enumerable:!0}):t,l));var ve=Qe((cn,xe)=>{"use strict";var ke=l=>l&&l.CLOSING===2,rt=()=>typeof WebSocket<"u"&&ke(WebSocket),at=()=>({constructor:rt()?WebSocket:null,maxReconnectionDelay:1e4,minReconnectionDelay:1500,reconnectionDelayGrowFactor:1.3,connectionTimeout:4e3,maxRetries:1/0,debug:!1}),ot=(l,e,t)=>{Object.defineProperty(e,t,{get:()=>l[t],set:n=>{l[t]=n},enumerable:!0,configurable:!0})},_e=l=>l.minReconnectionDelay+Math.random()*l.minReconnectionDelay,it=(l,e)=>{let t=e*l.reconnectionDelayGrowFactor;return t>l.maxReconnectionDelay?l.maxReconnectionDelay:t},lt=["onopen","onclose","onmessage","onerror"],ut=(l,e,t)=>{Object.keys(t).forEach(n=>{t[n].forEach(([s,r])=>{l.addEventListener(n,s,r)})}),e&&lt.forEach(n=>{l[n]=e[n]})},De=function(l,e,t={}){let n,s,r=0,i=0,u=!0,a={};if(!(this instanceof De))throw new TypeError("Failed to construct 'ReconnectingWebSocket': Please use the 'new' operator");let d=at();if(Object.keys(d).filter(y=>t.hasOwnProperty(y)).forEach(y=>d[y]=t[y]),!ke(d.constructor))throw new TypeError("Invalid WebSocket constructor. Set `options.constructor`");let g=d.debug?(...y)=>console.log("RWS:",...y):()=>{},p=(y,c)=>setTimeout(()=>{let h=new Error(c);h.code=y,Array.isArray(a.error)&&a.error.forEach(([I])=>I(h)),n.onerror&&n.onerror(h)},0),o=()=>{if(g("close"),i++,g("retries count:",i),i>d.maxRetries){p("EHOSTDOWN","Too many failed connection attempts");return}r?r=it(d,r):r=_e(d),g("reconnectDelay:",r),u&&setTimeout(m,r)},m=()=>{g("connect");let y=n;n=new d.constructor(l,e),s=setTimeout(()=>{g("timeout"),n.close(),p("ETIMEDOUT","Connection timeout")},d.connectionTimeout),g("bypass properties");for(let c in n)["addEventListener","removeEventListener","close","send"].indexOf(c)<0&&ot(n,this,c);n.addEventListener("open",()=>{clearTimeout(s),g("open"),r=_e(d),g("reconnectDelay:",r),i=0}),n.addEventListener("close",o),ut(n,y,a)};g("init"),m(),this.close=(y=1e3,c="",{keepClosed:h=!1,fastClose:I=!0,delay:R=0}={})=>{if(R&&(r=R),u=!h,n.close(y,c),I){let U={code:y,reason:c,wasClean:!0};o(),Array.isArray(a.close)&&a.close.forEach(([_,b])=>{_(U),n.removeEventListener("close",_,b)}),n.onclose&&(n.onclose(U),n.onclose=null)}},this.send=y=>{n.send(y)},this.addEventListener=(y,c,h)=>{Array.isArray(a[y])?a[y].some(([I])=>I===c)||a[y].push([c,h]):a[y]=[[c,h]],n.addEventListener(y,c,h)},this.removeEventListener=(y,c,h)=>{Array.isArray(a[y])&&(a[y]=a[y].filter(([I])=>I!==c)),n.removeEventListener(y,c,h)}};xe.exports=De});var ce=(n=>(n.PRODUCTION="PRODUCTION",n.DEVELOPMENT="DEVELOPMENT",n.TEST="TEST",n))(ce||{}),J=(t=>(t.CLIENT="CLIENT",t.SERVER="SERVER",t))(J||{}),$=(c=>(c.IMAGE_INFERENCE="imageInference",c.IMAGE_UPLOAD="imageUpload",c.IMAGE_UPSCALE="imageUpscale",c.IMAGE_BACKGROUND_REMOVAL="imageBackgroundRemoval",c.VIDEO_INFERENCE="videoInference",c.GET_RESPONSE="getResponse",c.PHOTO_MAKER="photoMaker",c.IMAGE_CAPTION="imageCaption",c.IMAGE_CONTROL_NET_PRE_PROCESS="imageControlNetPreProcess",c.IMAGE_MASKING="imageMasking",c.PROMPT_ENHANCE="promptEnhance",c.AUTHENTICATION="authentication",c.MODEL_UPLOAD="modelUpload",c.MODEL_SEARCH="modelSearch",c.AUDIO_INFERENCE="audioInference",c))($||{}),de=(n=>(n.BALANCED="balanced",n.PROMPT="prompt",n.CONTROL_NET="controlnet",n))(de||{}),pe=(o=>(o.canny="canny",o.depth="depth",o.mlsd="mlsd",o.normalbae="normalbae",o.openpose="openpose",o.tile="tile",o.seg="seg",o.lineart="lineart",o.lineart_anime="lineart_anime",o.shuffle="shuffle",o.scribble="scribble",o.softedge="softedge",o))(pe||{}),ge=(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))(ge||{}),$e=(r=>(r.openpose="openpose",r.openpose_face="openpose_face",r.openpose_faceonly="openpose_faceonly",r.openpose_full="openpose_full",r.openpose_hand="openpose_hand",r))($e||{}),ze=(t=>(t.safetensors="safetensors",t.pickletensor="pickletensor",t))(ze||{}),Ye=(m=>(m.flux1d="flux1d",m.flux1s="flux1s",m.pony="pony",m.sdhyper="sdhyper",m.sd1x="sd1x",m.sd1xlcm="sd1xlcm",m.sd3="sd3",m.sdxl="sdxl",m.sdxllcm="sdxllcm",m.sdxldistilled="sdxldistilled",m.sdxlhyper="sdxlhyper",m.sdxllightning="sdxllightning",m.sdxlturbo="sdxlturbo",m))(Ye||{}),Ze=(n=>(n.base="base",n.inpainting="inpainting",n.pix2pix="pix2pix",n))(Ze||{}),Xe=(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))(Xe||{}),et=(p=>(p.NoStyle="No style",p.Cinematic="Cinematic",p.DisneyCharacter="Disney Character",p.DigitalArt="Digital Art",p.Photographic="Photographic",p.FantasyArt="Fantasy art",p.Neonpunk="Neonpunk",p.Enhance="Enhance",p.ComicBook="Comic book",p.Lowpoly="Lowpoly",p.LineArt="Line art",p))(et||{});import{v4 as tt,validate as nt}from"uuid";var K=6e4,P=1e3,me=100,z={PRODUCTION:"wss://ws-api.runware.ai/v1",TEST:"ws://localhost:8080"},ye=(l,e)=>{if(l==null)return;let t=l.indexOf(e);t!==-1&&l.splice(t,1)},S=(l,{debugKey:e="debugKey",timeoutDuration:t=K,shouldThrowError:n=!0,pollingInterval:s=me})=>(t=t<P?P:t,new Promise((r,i)=>{let u=setTimeout(()=>{a&&(clearInterval(a),n&&i(`Response could not be received from server for ${e}`)),clearTimeout(u)},t),a=setInterval(async()=>{l({resolve:r,reject:i,intervalId:a})&&(clearInterval(a),clearTimeout(u))},s)})),Ie=l=>new Promise(e=>{let t=new FileReader;t.readAsDataURL(l),t.onload=function(){e(t.result)}}),k=()=>tt(),Y=l=>nt(l);var he=({key:l,data:e,useZero:t=!0,shouldReturnString:n=!1})=>l.split(/\.|\[/).map(i=>i.replace(/\]$/,"")).reduce((i,u)=>{let a=t?0:void 0,d=i?.[u];if(!d)return a;if(Array.isArray(d)&&/^\d+$/.test(u)){let g=parseInt(u,10);return g>=0&&g<d.length?i[u]=d[g]:i[u]??a}else return i[u]??a},e||{})??{},be=(l,e=1e3)=>new Promise(t=>setTimeout(t,l*e));var fe=(l,e)=>l.filter(t=>t.key!==e.key);var T=({key:l,value:e})=>e||e===0||e===!1?{[l]:e}:{},st=(l,e)=>Math.floor(Math.random()*(e-l+1))+l,Ue=()=>st(1,Number.MAX_SAFE_INTEGER),Te=(l,{debugKey:e="debugKey",timeoutDuration:t=K,shouldThrowError:n=!0,pollingInterval:s=me})=>(t=t<P?P:t,new Promise((r,i)=>{let u=setTimeout(()=>{a&&(clearInterval(a),n&&i(`Response could not be received from server for ${e}`)),clearTimeout(u)},t),a=setInterval(async()=>{try{await l({resolve:r,reject:i,intervalId:a})&&(clearInterval(a),clearTimeout(u))}catch(d){clearInterval(a),clearTimeout(u),i(d)}},s)})),Re=l=>typeof l=="string"&&(l.startsWith("http:")||l.startsWith("https:"));var D=async(l,e={})=>{let{delayInSeconds:t=1,callback:n}=e,s=e.maxRetries??1;for(;s;)try{return await l()}catch(r){if(n?.(),r?.error)throw r;if(s--,s>0)await be(t),await D(l,{...e,maxRetries:s});else throw r}};var w=class{constructor({apiKey:e,url:t=z.PRODUCTION,shouldReconnect:n=!0,globalMaxRetries:s=2,timeoutDuration:r=K}){this._listeners=[];this._globalMessages={};this._globalImages=[];this.ensureConnectionUUID=null;this.isWebsocketReadyState=()=>this._ws?.readyState===1;this.isInvalidAPIKey=()=>this._connectionError?.error?.code==="invalidApiKey";this.send=e=>{this._ws.send(JSON.stringify([e]))};this.uploadImage=async e=>{try{return await D(async()=>{let t=k();if(typeof e=="string"&&Y(e))return{imageURL:e,imageUUID:e,taskUUID:t,taskType:"imageUpload"};let n=typeof e=="string"?e:await Ie(e);return{imageURL:n,imageUUID:n,taskUUID:t,taskType:"imageUpload"}})}catch(t){throw t}};this.controlNetPreProcess=async({inputImage:e,preProcessorType:t,height:n,width:s,outputType:r,outputFormat:i,highThresholdCanny:u,lowThresholdCanny:a,includeHandsAndFaceOpenPose:d,includeCost:g,outputQuality:p,customTaskUUID:o,retry:m,includeGenerationTime:y,includePayload:c})=>{let h=m||this._globalMaxRetries,I,R=Date.now();try{return await D(async()=>{await this.ensureConnection();let U=await this.uploadImage(e);if(!U?.imageUUID)return null;let _=o||k(),b={inputImage:U.imageUUID,taskType:"imageControlNetPreProcess",taskUUID:_,preProcessorType:t,...T({key:"height",value:n}),...T({key:"width",value:s}),...T({key:"outputType",value:r}),...T({key:"outputFormat",value:i}),...T({key:"includeCost",value:g}),...T({key:"highThresholdCanny",value:u}),...T({key:"lowThresholdCanny",value:a}),...T({key:"includeHandsAndFaceOpenPose",value:d}),...p?{outputQuality:p}:{}};this.send({...b}),I=this.globalListener({taskUUID:_});let O=await S(({resolve:G,reject:B})=>{let v=this.getSingleMessage({taskUUID:_});if(v){if(v?.error)return B(v),!0;if(v)return G(v),!0}},{debugKey:"unprocessed-image",timeoutDuration:this._timeoutDuration});return I.destroy(),this.insertAdditionalResponse({response:O,payload:c?b:void 0,startTime:y?R:void 0}),O},{maxRetries:h,callback:()=>{I?.destroy()}})}catch(U){throw U}};this.requestImageToText=async({inputImage:e,includeCost:t,customTaskUUID:n,retry:s,includePayload:r,includeGenerationTime:i,inputImages:u,...a})=>{let d=s||this._globalMaxRetries,g,p=Date.now();try{return await D(async()=>{await this.ensureConnection();let o=e?await this.uploadImage(e):null,m=u?.length?await Promise.all(u.map(I=>this.uploadImage(I))):null,y=n||k(),c={taskUUID:y,taskType:"imageCaption",...o?.imageUUID?{inputImage:o.imageUUID}:{},...m?.length?{inputImages:m.map(I=>I?.imageUUID).filter(Boolean)}:{},...T({key:"includeCost",value:t}),...a};this.send(c),g=this.globalListener({taskUUID:y});let h=await S(({resolve:I,reject:R})=>{let U=this.getSingleMessage({taskUUID:y});if(U){if(U?.error)return R(U),!0;if(U)return delete this._globalMessages[y],I(U),!0}},{debugKey:"remove-image-background",timeoutDuration:this._timeoutDuration});return g.destroy(),this.insertAdditionalResponse({response:h,payload:r?c:void 0,startTime:i?p:void 0}),h},{maxRetries:d,callback:()=>{g?.destroy()}})}catch(o){throw o}};this.removeImageBackground=async e=>this.baseSingleRequest({payload:{...e,taskType:"imageBackgroundRemoval"},debugKey:"remove-image-background"});this.videoInference=async e=>{let{skipResponse:t,inputAudios:n,...s}=e;try{if(n?.length){for(let d of n)if(!Re(d)&&!Y(d))throw new Error(`Invalid audio source: "${d}". Only public URLs or media UUIDs are supported for audio.`)}let r=await this.baseSingleRequest({payload:{...s,...n?.length?{inputAudios:n}:{},deliveryMethod:"async",taskType:"videoInference"},debugKey:"video-inference"});if(t)return r;let i=r?.taskUUID,u=e?.numberResults??1,a=new Map;return await Te(async({resolve:d,reject:g})=>{try{let p=await this.getResponse({taskUUID:i});for(let m of p||[])m.videoUUID&&a.set(m.videoUUID,m);return a.size===u?(d(Array.from(a.values())),!0):!1}catch(p){return g(p),!0}},{debugKey:"async-response",pollingInterval:2*1e3,timeoutDuration:10*60*1e3}),Array.from(a.values())}catch(r){throw r}};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({inputImage:e,upscaleFactor:t,outputType:n,outputFormat:s,includeCost:r,outputQuality:i,customTaskUUID:u,retry:a,includeGenerationTime:d,includePayload:g,...p})=>{let o=a||this._globalMaxRetries,m,y=Date.now();try{return await D(async()=>{await this.ensureConnection();let c;c=await this.uploadImage(e);let h=u||k(),I={taskUUID:h,inputImage:c?.imageUUID,taskType:"imageUpscale",upscaleFactor:t,...T({key:"includeCost",value:r}),...n?{outputType:n}:{},...i?{outputQuality:i}:{},...s?{outputFormat:s}:{},...p};this.send(I),m=this.globalListener({taskUUID:h});let R=await S(({resolve:U,reject:_})=>{let b=this.getSingleMessage({taskUUID:h});if(b){if(b?.error)return _(b),!0;if(b)return delete this._globalMessages[h],U(b),!0}},{debugKey:"upscale-gan",timeoutDuration:this._timeoutDuration});return m.destroy(),this.insertAdditionalResponse({response:R,payload:g?I:void 0,startTime:d?y:void 0}),R},{maxRetries:o,callback:()=>{m?.destroy()}})}catch(c){throw c}};this.enhancePrompt=async({prompt:e,promptMaxLength:t=380,promptVersions:n=1,includeCost:s,customTaskUUID:r,retry:i,includeGenerationTime:u,includePayload:a})=>{let d=i||this._globalMaxRetries,g,p=Date.now();try{return await D(async()=>{await this.ensureConnection();let o=r||k(),m={prompt:e,taskUUID:o,promptMaxLength:t,promptVersions:n,...T({key:"includeCost",value:s}),taskType:"promptEnhance"};this.send(m),g=this.globalListener({taskUUID:o});let y=await S(({resolve:c,reject:h})=>{let I=this._globalMessages[o];if(I?.error)return h(I),!0;if(I?.length>=n)return delete this._globalMessages[o],c(I),!0},{debugKey:"enhance-prompt",timeoutDuration:this._timeoutDuration});return g.destroy(),this.insertAdditionalResponse({response:y,payload:a?m:void 0,startTime:u?p:void 0}),y},{maxRetries:d,callback:()=>{g?.destroy()}})}catch(o){throw o}};this.modelUpload=async e=>{let{onUploadStream:t,retry:n,customTaskUUID:s,...r}=e,i=n||this._globalMaxRetries,u;try{return await D(async()=>{await this.ensureConnection();let a=s||k();this.send({...r,taskUUID:a,taskType:"modelUpload"});let d,g;return u=this.listenToUpload({taskUUID:a,onUploadStream:(o,m)=>{t?.(o,m),o?.status==="ready"?d=o:m&&(g=m)}}),await S(({resolve:o,reject:m})=>{if(d)return o(d),!0;if(g)return m(g),!1},{shouldThrowError:!1,timeoutDuration:60*60*1e3})},{maxRetries:i,callback:()=>{u?.destroy()}})}catch(a){throw a}};this.photoMaker=async(e,t)=>{let{onPartialImages:n,retry:s,customTaskUUID:r,numberResults:i,includeGenerationTime:u,includePayload:a,...d}=e,g=s||this._globalMaxRetries,p,o=[],m=0,y=Date.now();try{return await D(async()=>{await this.ensureConnection(),m++;let c=this._globalImages.filter(_=>o.includes(_.taskUUID)),h=r||k();o.push(h);let I=i-c.length,R={...d,...d.seed?{seed:d.seed}:{seed:Ue()},...t??{},taskUUID:h,taskType:"photoMaker",numberResults:i};this.send({...R,numberResults:I}),p=this.listenToResponse({onPartialImages:n,taskUUID:h,groupKey:"REQUEST_IMAGES",requestPayload:a?R:void 0,startTime:u?y:void 0});let U=await this.getSimilarImages({taskUUID:o,numberResults:i,lis:p});return p.destroy(),U},{maxRetries:g,callback:()=>{p?.destroy()}})}catch(c){if(c.taskUUID)throw c;if(m>=g)return this.handleIncompleteImages({taskUUIDs:o,error:c})}};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.audioInference=async e=>{let{skipResponse:t,deliveryMethod:n="sync",...s}=e;try{return await(n==="sync"?this.baseSyncRequest:this.baseSingleRequest)({payload:{...s,numberResults:s.numberResults||1,taskType:"audioInference",deliveryMethod:n},debugKey:"audio-inference"})}catch(r){throw r}};this.baseSingleRequest=async({payload:e,debugKey:t,isMultiple:n})=>{let{retry:s,customTaskUUID:r,includePayload:i,includeGenerationTime:u,...a}=e,d=s||this._globalMaxRetries,g,p=Date.now();try{return await D(async()=>{await this.ensureConnection();let o=r||k(),m={...a,taskUUID:o};this.send(m),g=this.globalListener({taskUUID:o});let y=await S(({resolve:c,reject:h})=>{let I=n?this.getMultipleMessages({taskUUID:o}):this.getSingleMessage({taskUUID:o});if(I){if(I?.error)return h(I),!0;if(I)return delete this._globalMessages[o],c(I),!0}},{debugKey:t,timeoutDuration:this._timeoutDuration});return this.insertAdditionalResponse({response:y,payload:i?m:void 0,startTime:u?p:void 0}),g.destroy(),y},{maxRetries:d,callback:()=>{g?.destroy()}})}catch(o){throw o}};this.baseSyncRequest=async({payload:e,debugKey:t})=>{let{retry:n,customTaskUUID:s,includePayload:r,numberResults:i=1,onPartialResponse:u,includeGenerationTime:a,...d}=e,g=n||this._globalMaxRetries,p,o=[],m=0,y=Date.now();try{return await D(async()=>{await this.ensureConnection(),m++;let c=this._globalImages.filter(_=>o.includes(_.taskUUID)),h=s||k();o.push(h);let I=i-c.length,R={...d,taskUUID:h,numberResults:I};this.send(R),p=this.listenToResponse({onPartialImages:u,taskUUID:h,groupKey:"REQUEST_AUDIO",requestPayload:r?R:void 0,startTime:a?y:void 0});let U=await this.getSimilarImages({taskUUID:o,numberResults:i,lis:p,debugKey:t});return p.destroy(),U},{maxRetries:g,callback:()=>{p?.destroy()}})}catch(c){throw c}};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 s=e;s.additionalResponse={},t&&(e.additionalResponse.payload=t),n&&(e.additionalResponse.generationTime=Date.now()-n)};this.disconnect=async()=>{this._shouldReconnect=!1,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=s,this._timeoutDuration=r}static async initialize(e){try{let t=new this(e);return await t.ensureConnection(),t}catch(t){throw t}}addListener({lis:e,groupKey:t,taskUUID:n}){let s=u=>{let a=Array.isArray(u?.data)?u.data:[u.data],d=u?.[0]?.errors?u?.[0]?.errors:Array.isArray(u?.errors)?u.errors:[u.errors],g=a.filter(o=>(o?.taskUUID||o?.taskType)===n);if(d.filter(o=>(o?.taskUUID||o?.taskType)===n).length){e({error:{...d[0]??{}}});return}if(g.length){e({[n]:a});return}},r={key:n||k(),listener:s,groupKey:t};return this._listeners.push(r),{destroy:()=>{this._listeners=fe(this._listeners,r)}}}connect(){this._ws.onopen=e=>{this._connectionSessionUUID?this.send({taskType:"authentication",apiKey:this._apiKey,connectionSessionUUID:this._connectionSessionUUID}):this.send({apiKey:this._apiKey,taskType:"authentication"}),this.addListener({taskUUID:"authentication",lis:t=>{if(t?.error){this._connectionError=t;return}this._connectionSessionUUID=t?.authentication?.[0]?.connectionSessionUUID,this._connectionError=void 0}})},this._ws.onmessage=e=>{let t=JSON.parse(e.data);for(let n of this._listeners)if(n?.listener?.(t))return},this._ws.onclose=e=>{this.isInvalidAPIKey()}}destroy(e){ye(this._listeners,e)}listenToResponse({onPartialImages:e,taskUUID:t,groupKey:n,requestPayload:s,startTime:r}){return this.addListener({taskUUID:t,lis:i=>{let u=i?.[t]?.filter(a=>a.taskUUID===t);i.error?(e?.(u,i?.error&&i),this._globalError=i):(u=u.map(a=>(this.insertAdditionalResponse({response:a,payload:s||void 0,startTime:r||void 0}),{...a})),e?.(u,i?.error&&i),this._sdkType==="CLIENT"?this._globalImages=[...this._globalImages,...(i?.[t]??[]).map(a=>(this.insertAdditionalResponse({response:a,payload:s||void 0,startTime:r||void 0}),{...a}))]:this._globalImages=[...this._globalImages,...u])},groupKey:n})}listenToUpload({onUploadStream:e,taskUUID:t}){return this.addListener({taskUUID:t,lis:n=>{let s=n?.error,r=n?.[t]?.[0],i=r?.taskUUID===t?r:null;(i||s)&&e?.(i||void 0,s)}})}globalListener({taskUUID:e}){return this.addListener({taskUUID:e,lis:t=>{if(t.error){this._globalMessages[e]=t;return}let n=he({key:e,data:t,useZero:!1});Array.isArray(n)?n.forEach(s=>{this._globalMessages[s.taskUUID]=[...this._globalMessages[s.taskUUID]??[],s]}):this._globalMessages[n.taskUUID]=n}})}async requestImages({outputType:e,outputFormat:t,uploadEndpoint:n,checkNSFW:s,positivePrompt:r,negativePrompt:i,seedImage:u,maskImage:a,strength:d,height:g,width:p,model:o,steps:m,scheduler:y,seed:c,CFGScale:h,clipSkip:I,usePromptWeighting:R,promptWeighting:U,numberResults:_=1,onPartialImages:b,includeCost:O,customTaskUUID:G,retry:B,refiner:v,maskMargin:we,outputQuality:f,controlNet:q,lora:Z,embeddings:X,ipAdapters:ee,providerSettings:te,outpaint:ne,acceleratorOptions:se,advancedFeatures:re,referenceImages:ae,includeGenerationTime:Ce,includePayload:Ee,...Oe},Me){let C,oe,M=[],ie=0,le=B||this._globalMaxRetries;try{await this.ensureConnection();let A=null,V=null,H=[];if(u){let x=await this.uploadImage(u);if(!x)return[];A=x.imageUUID}if(a){let x=await this.uploadImage(a);if(!x)return[];V=x.imageUUID}if(q?.length)for(let x=0;x<q.length;x++){let E=q[x],{endStep:Q,startStep:N,weight:j,guideImage:L,controlMode:Le,startStepPercentage:Pe,endStepPercentage:Ke,model:We}=E,Fe=L?await this.uploadImage(L):null;H.push({guideImage:Fe?.imageUUID,model:We,endStep:Q,startStep:N,weight:j,...T({key:"startStepPercentage",value:Pe}),...T({key:"endStepPercentage",value:Ke}),controlMode:Le||"controlnet"})}oe={taskType:"imageInference",model:o,positivePrompt:r,...i?{negativePrompt:i}:{},...g?{height:g}:{},...p?{width:p}:{},numberResults:_,...e?{outputType:e}:{},...t?{outputFormat:t}:{},...n?{uploadEndpoint:n}:{},...T({key:"checkNSFW",value:s}),...T({key:"strength",value:d}),...T({key:"CFGScale",value:h}),...T({key:"clipSkip",value:I}),...T({key:"maskMargin",value:we}),...T({key:"usePromptWeighting",value:R}),...T({key:"steps",value:m}),...U?{promptWeighting:U}:{},...c?{seed:c}:{},...y?{scheduler:y}:{},...v?{refiner:v}:{},...ne?{outpaint:ne}:{},...T({key:"includeCost",value:O}),...A?{seedImage:A}:{},...V?{maskImage:V}:{},...f?{outputQuality:f}:{},...H.length?{controlNet:H}:{},...Z?.length?{lora:Z}:{},...X?.length?{embeddings:X}:{},...ee?.length?{ipAdapters:ee}:{},...te?{providerSettings:te}:{},...se?{acceleratorOptions:se}:{},...re?{advancedFeatures:re}:{},...ae?.length?{referenceImages:ae}:{},...Oe,...Me??{}};let Ne=Date.now();return await D(async()=>{ie++,C?.destroy();let x=this._globalImages.filter(L=>M.includes(L.taskUUID)),E=G||k();M.push(E);let Q=_-x.length,N={...oe,taskUUID:E,numberResults:Q};this.send(N),C=this.listenToResponse({onPartialImages:b,taskUUID:E,groupKey:"REQUEST_IMAGES",requestPayload:Ee?N:void 0,startTime:Ce?Ne:void 0});let j=await this.getSimilarImages({taskUUID:M,numberResults:_,lis:C});return C.destroy(),j},{maxRetries:le,callback:()=>{C?.destroy()}})}catch(A){if(ie>=le)return this.handleIncompleteImages({taskUUIDs:M,error:A});throw A}}async ensureConnection(){if(this.connected()||this._url===z.TEST)return;let t=2e3,n=200;try{if(this.isInvalidAPIKey())throw this._connectionError;return new Promise((s,r)=>{let i=0,u=30,a=k(),d,g,p=()=>{this.ensureConnectionUUID=null,clearInterval(d),clearInterval(g)};this._sdkType==="SERVER"&&(d=setInterval(async()=>{try{let o=this.connected(),m=!1;(!this.ensureConnectionUUID||a===this.ensureConnectionUUID)&&(this.ensureConnectionUUID||(this.ensureConnectionUUID=a),m=!0);let y=i%10===0&&m;o?(p(),s(!0)):i>=u?(p(),r(new Error("Retry timed out"))):(y&&this.connect(),i++)}catch(o){p(),r(o)}},t)),g=setInterval(async()=>{if(this.connected()){p(),s(!0);return}if(this.isInvalidAPIKey()){p(),r(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 getSimilarImages({taskUUID:e,numberResults:t,shouldThrowError:n,lis:s,debugKey:r="getting-images"}){return await S(({resolve:i,reject:u,intervalId:a})=>{let d=Array.isArray(e)?e:[e],g=this._globalImages.filter(p=>d.includes(p.taskUUID));if(this._globalError){let p=this._globalError;return this._globalError=void 0,clearInterval(a),u?.(p),!0}else if(g.length>=t)return clearInterval(a),this._globalImages=this._globalImages.filter(p=>!d.includes(p.taskUUID)),i([...g].slice(0,t)),!0},{debugKey:r,shouldThrowError:n,timeoutDuration:this._timeoutDuration})}handleIncompleteImages({taskUUIDs:e,error:t}){let n=this._globalImages.filter(s=>e.includes(s.taskUUID));if(n.length>1)return this._globalImages=this._globalImages.filter(s=>!e.includes(s.taskUUID)),n;throw t}};var Se=Je(ve(),1),W=class extends w{constructor(e){let{shouldReconnect:t,...n}=e;super(n),this._ws=new Se.default(this._url),this.connect()}};import ct from"ws";var F=class extends w{constructor(t){super(t);this._instantiated=!1;this._listeners=[];this._reconnectingIntervalId=null;this.send=t=>{this._ws.send(JSON.stringify([t]))};this.resetConnection=()=>{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(){this._url&&(this.resetConnection(),this._ws=new ct(this._url,{perMessageDeflate:!1}),this._ws.on("error",()=>{}),this._ws.on("close",()=>{this.handleClose()}),this._ws.on("open",()=>{this._reconnectingIntervalId&&clearInterval(this._reconnectingIntervalId),this._connectionSessionUUID&&this.isWebsocketReadyState()?this.send({taskType:"authentication",apiKey:this._apiKey,connectionSessionUUID:this._connectionSessionUUID}):this.isWebsocketReadyState()&&this.send({apiKey:this._apiKey,taskType:"authentication"}),this.addListener({taskUUID:"authentication",lis:t=>{if(t?.error){this._connectionError=t;return}this._connectionSessionUUID=t?.authentication?.[0]?.connectionSessionUUID,this._connectionError=void 0}})}),this._ws.on("message",(t,n)=>{let s=n?t:t?.toString();if(!s)return;let r=JSON.parse(s);this._listeners.forEach(i=>{i.listener(r)})}))}handleClose(){this.isInvalidAPIKey()||(this._reconnectingIntervalId&&clearInterval(this._reconnectingIntervalId),this._shouldReconnect&&setTimeout(()=>this.connect(),1e3))}heartBeat(){clearTimeout(this._pingTimeout),this._pingTimeout=setTimeout(()=>{this.isWebsocketReadyState()&&this.send({ping:!0})},5e3)}};var Ae;typeof window>"u"?Ae=F:Ae=W;export{de as EControlMode,Ye as EModelArchitecture,Xe as EModelConditioning,ze as EModelFormat,Ze as EModelType,$e as EOpenPosePreProcessor,et as EPhotoMakerEnum,ge as EPreProcessor,pe as EPreProcessorGroup,$ as ETaskType,ce as Environment,Ae as Runware,W as RunwareClient,F as RunwareServer,J as SdkType};
2
2
  //# sourceMappingURL=index.js.map