@runware/sdk-js 1.1.35-beta.2 → 1.1.35

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.ts CHANGED
@@ -124,26 +124,15 @@ interface IRequestImage {
124
124
  usePromptWeighting?: boolean;
125
125
  promptWeighting?: TPromptWeighting;
126
126
  numberResults?: number;
127
+ controlNet?: IControlNet[];
128
+ lora?: ILora[];
127
129
  includeCost?: boolean;
128
130
  customTaskUUID?: string;
129
131
  outputQuality?: number;
130
- controlNet?: IControlNet[];
131
- lora?: ILora[];
132
- embeddings?: IEmbedding[];
133
- ipAdapters?: IipAdapters[];
134
132
  onPartialImages?: (images: IImage[], error?: IError) => void;
135
133
  retry?: number;
136
134
  refiner?: IRefiner;
137
135
  }
138
- interface IEmbedding {
139
- model: string;
140
- weight: number;
141
- }
142
- interface IipAdapters {
143
- model: string;
144
- weight: number;
145
- guideImage: string;
146
- }
147
136
  interface IRefiner {
148
137
  model: string;
149
138
  startStep?: number;
@@ -499,15 +488,6 @@ type TImageMaskingResponse = {
499
488
  maskImageURL: string;
500
489
  cost: number;
501
490
  };
502
- type TServerError = {
503
- error: {
504
- code: string;
505
- message: string;
506
- parameter: string;
507
- type: string;
508
- taskType: string;
509
- };
510
- };
511
491
 
512
492
  declare class RunwareBase {
513
493
  _ws: ReconnectingWebsocketProps | any;
@@ -518,7 +498,7 @@ declare class RunwareBase {
518
498
  _globalImages: IImage[];
519
499
  _globalError: IError | undefined;
520
500
  _connectionSessionUUID: string | undefined;
521
- _connectionError: TServerError | undefined;
501
+ _invalidAPIkey: string | undefined;
522
502
  _sdkType: SdkType;
523
503
  _shouldReconnect: boolean;
524
504
  _globalMaxRetries: number;
@@ -527,7 +507,6 @@ declare class RunwareBase {
527
507
  constructor({ apiKey, url, shouldReconnect, globalMaxRetries, timeoutDuration, }: RunwareBaseType);
528
508
  static initialize(props: RunwareBaseType): Promise<RunwareBase>;
529
509
  protected isWebsocketReadyState: () => boolean;
530
- protected isInvalidAPIKey: () => boolean;
531
510
  protected addListener({ lis, groupKey, taskUUID, }: {
532
511
  lis: (v: any) => any;
533
512
  groupKey?: string;
@@ -542,7 +521,7 @@ declare class RunwareBase {
542
521
  private listenToImages;
543
522
  private listenToUpload;
544
523
  private globalListener;
545
- 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, }: IRequestImage, moreOptions?: Record<string, any>): Promise<ITextToImage[] | undefined>;
524
+ requestImages({ outputType, outputFormat, uploadEndpoint, checkNSFW, positivePrompt, negativePrompt, seedImage, maskImage, strength, height, width, model, steps, scheduler, seed, CFGScale, clipSkip, usePromptWeighting, promptWeighting, numberResults, controlNet, lora, onPartialImages, includeCost, customTaskUUID, retry, refiner, maskMargin, outputQuality, }: IRequestImage, moreOptions?: Record<string, any>): Promise<ITextToImage[] | undefined>;
546
525
  controlNetPreProcess: ({ inputImage, preProcessorType, height, width, outputType, outputFormat, highThresholdCanny, lowThresholdCanny, includeHandsAndFaceOpenPose, includeCost, outputQuality, customTaskUUID, retry, }: IControlNetPreprocess) => Promise<IControlNetImage | null>;
547
526
  requestImageToText: ({ inputImage, includeCost, customTaskUUID, retry, }: IRequestImageToText) => Promise<IImageToText>;
548
527
  removeImageBackground: ({ inputImage, outputType, outputFormat, rgba, postProcessMask, returnOnlyMask, alphaMatting, alphaMattingForegroundThreshold, alphaMattingBackgroundThreshold, alphaMattingErodeSize, outputQuality, includeCost, customTaskUUID, retry, }: IRemoveImageBackground) => Promise<IRemoveImage>;
@@ -584,4 +563,4 @@ declare class RunwareServer extends RunwareBase {
584
563
 
585
564
  declare let Runware: typeof RunwareClient | typeof RunwareServer;
586
565
 
587
- export { EControlMode, EModelArchitecture, EModelConditioning, EModelFormat, EModelType, EOpenPosePreProcessor, EPhotoMakerEnum, EPreProcessor, EPreProcessorGroup, ETaskType, Environment, type GetWithPromiseCallBackType, type IAddModelResponse, type IControlNet, type IControlNetGeneral, type IControlNetImage, type IControlNetPreprocess, type IControlNetWithUUID, type IEmbedding, type IEnhancedPrompt, type IError, type IErrorResponse, type IImage, type IImageToText, type IOutputFormat, type IOutputType, type IPromptEnhancer, type IRefiner, type IRemoveImage, type IRemoveImageBackground, type IRequestImage, type IRequestImageToText, type ITextToImage, type IUpscaleGan, type IipAdapters, type ListenerType, type ReconnectingWebsocketProps, type RequireAtLeastOne, type RequireOnlyOne, Runware, type RunwareBaseType, RunwareClient, RunwareServer, SdkType, type TAddModel, type TAddModelBaseType, type TAddModelCheckPoint, type TAddModelControlNet, type TAddModelLora, type TImageMasking, type TImageMaskingResponse, type TModel, type TModelSearch, type TModelSearchResponse, type TPhotoMaker, type TPhotoMakerResponse, type TPromptWeighting, type TServerError, type UploadImageType };
566
+ export { EControlMode, EModelArchitecture, EModelConditioning, EModelFormat, EModelType, EOpenPosePreProcessor, EPhotoMakerEnum, EPreProcessor, EPreProcessorGroup, ETaskType, Environment, type GetWithPromiseCallBackType, type IAddModelResponse, type IControlNet, type IControlNetGeneral, type IControlNetImage, type IControlNetPreprocess, type IControlNetWithUUID, type IEnhancedPrompt, type IError, type IErrorResponse, type IImage, type IImageToText, type IOutputFormat, type IOutputType, type IPromptEnhancer, type IRefiner, type IRemoveImage, type IRemoveImageBackground, type IRequestImage, type IRequestImageToText, type ITextToImage, type IUpscaleGan, type ListenerType, type ReconnectingWebsocketProps, type RequireAtLeastOne, type RequireOnlyOne, Runware, type RunwareBaseType, RunwareClient, RunwareServer, SdkType, type TAddModel, type TAddModelBaseType, type TAddModelCheckPoint, type TAddModelControlNet, type TAddModelLora, type TImageMasking, type TImageMaskingResponse, type TModel, type TModelSearch, type TModelSearchResponse, type TPhotoMaker, type TPhotoMakerResponse, type TPromptWeighting, type UploadImageType };
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- var we=Object.create;var te=Object.defineProperty;var Ae=Object.getOwnPropertyDescriptor;var Ce=Object.getOwnPropertyNames;var Me=Object.getPrototypeOf,Ee=Object.prototype.hasOwnProperty;var Ne=(c,t)=>()=>(t||c((t={exports:{}}).exports,t),t.exports);var Oe=(c,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of Ce(t))!Ee.call(c,a)&&a!==e&&te(c,a,{get:()=>t[a],enumerable:!(n=Ae(t,a))||n.enumerable});return c};var Le=(c,t,e)=>(e=c!=null?we(Me(c)):{},Oe(t||!c||!c.__esModule?te(e,"default",{value:c,enumerable:!0}):e,c));var he=Ne((Ht,Ie)=>{"use strict";var me=c=>c&&c.CLOSING===2,Qe=()=>typeof WebSocket<"u"&&me(WebSocket),Je=()=>({constructor:Qe()?WebSocket:null,maxReconnectionDelay:1e4,minReconnectionDelay:1500,reconnectionDelayGrowFactor:1.3,connectionTimeout:4e3,maxRetries:1/0,debug:!1}),ze=(c,t,e)=>{Object.defineProperty(t,e,{get:()=>c[e],set:n=>{c[e]=n},enumerable:!0,configurable:!0})},pe=c=>c.minReconnectionDelay+Math.random()*c.minReconnectionDelay,Ye=(c,t)=>{let e=t*c.reconnectionDelayGrowFactor;return e>c.maxReconnectionDelay?c.maxReconnectionDelay:e},Ze=["onopen","onclose","onmessage","onerror"],$e=(c,t,e)=>{Object.keys(e).forEach(n=>{e[n].forEach(([a,o])=>{c.addEventListener(n,a,o)})}),t&&Ze.forEach(n=>{c[n]=t[n]})},ye=function(c,t,e={}){let n,a,o=0,i=0,l=!0,s={};if(!(this instanceof ye))throw new TypeError("Failed to construct 'ReconnectingWebSocket': Please use the 'new' operator");let u=Je();if(Object.keys(u).filter(m=>e.hasOwnProperty(m)).forEach(m=>u[m]=e[m]),!me(u.constructor))throw new TypeError("Invalid WebSocket constructor. Set `options.constructor`");let g=u.debug?(...m)=>console.log("RWS:",...m):()=>{},d=(m,f)=>setTimeout(()=>{let b=new Error(f);b.code=m,Array.isArray(s.error)&&s.error.forEach(([T])=>T(b)),n.onerror&&n.onerror(b)},0),r=()=>{if(g("close"),i++,g("retries count:",i),i>u.maxRetries){d("EHOSTDOWN","Too many failed connection attempts");return}o?o=Ye(u,o):o=pe(u),g("reconnectDelay:",o),l&&setTimeout(p,o)},p=()=>{g("connect");let m=n;n=new u.constructor(c,t),a=setTimeout(()=>{g("timeout"),n.close(),d("ETIMEDOUT","Connection timeout")},u.connectionTimeout),g("bypass properties");for(let f in n)["addEventListener","removeEventListener","close","send"].indexOf(f)<0&&ze(n,this,f);n.addEventListener("open",()=>{clearTimeout(a),g("open"),o=pe(u),g("reconnectDelay:",o),i=0}),n.addEventListener("close",r),$e(n,m,s)};g("init"),p(),this.close=(m=1e3,f="",{keepClosed:b=!1,fastClose:T=!0,delay:k=0}={})=>{if(k&&(o=k),l=!b,n.close(m,f),T){let D={code:m,reason:f,wasClean:!0};r(),Array.isArray(s.close)&&s.close.forEach(([x,y])=>{x(D),n.removeEventListener("close",x,y)}),n.onclose&&(n.onclose(D),n.onclose=null)}},this.send=m=>{n.send(m)},this.addEventListener=(m,f,b)=>{Array.isArray(s[m])?s[m].some(([T])=>T===f)||s[m].push([f,b]):s[m]=[[f,b]],n.addEventListener(m,f,b)},this.removeEventListener=(m,f,b)=>{Array.isArray(s[m])&&(s[m]=s[m].filter(([T])=>T!==f)),n.removeEventListener(m,f,b)}};Ie.exports=ye});var ne=(n=>(n.PRODUCTION="PRODUCTION",n.DEVELOPMENT="DEVELOPMENT",n.TEST="TEST",n))(ne||{}),q=(e=>(e.CLIENT="CLIENT",e.SERVER="SERVER",e))(q||{}),H=(r=>(r.IMAGE_INFERENCE="imageInference",r.IMAGE_UPLOAD="imageUpload",r.IMAGE_UPSCALE="imageUpscale",r.IMAGE_BACKGROUND_REMOVAL="imageBackgroundRemoval",r.IMAGE_CAPTION="imageCaption",r.IMAGE_CONTROL_NET_PRE_PROCESS="imageControlNetPreProcess",r.PROMPT_ENHANCE="promptEnhance",r.AUTHENTICATION="authentication",r.MODEL_UPLOAD="modelUpload",r.PHOTO_MAKER="photoMaker",r.MODEL_SEARCH="modelSearch",r.IMAGE_MASKING="imageMasking",r))(H||{}),re=(n=>(n.BALANCED="balanced",n.PROMPT="prompt",n.CONTROL_NET="controlnet",n))(re||{}),se=(r=>(r.canny="canny",r.depth="depth",r.mlsd="mlsd",r.normalbae="normalbae",r.openpose="openpose",r.tile="tile",r.seg="seg",r.lineart="lineart",r.lineart_anime="lineart_anime",r.shuffle="shuffle",r.scribble="scribble",r.softedge="softedge",r))(se||{}),ae=(h=>(h.canny="canny",h.depth_leres="depth_leres",h.depth_midas="depth_midas",h.depth_zoe="depth_zoe",h.inpaint_global_harmonious="inpaint_global_harmonious",h.lineart_anime="lineart_anime",h.lineart_coarse="lineart_coarse",h.lineart_realistic="lineart_realistic",h.lineart_standard="lineart_standard",h.mlsd="mlsd",h.normal_bae="normal_bae",h.scribble_hed="scribble_hed",h.scribble_pidinet="scribble_pidinet",h.seg_ofade20k="seg_ofade20k",h.seg_ofcoco="seg_ofcoco",h.seg_ufade20k="seg_ufade20k",h.shuffle="shuffle",h.softedge_hed="softedge_hed",h.softedge_hedsafe="softedge_hedsafe",h.softedge_pidinet="softedge_pidinet",h.softedge_pidisafe="softedge_pidisafe",h.tile_gaussian="tile_gaussian",h.openpose="openpose",h.openpose_face="openpose_face",h.openpose_faceonly="openpose_faceonly",h.openpose_full="openpose_full",h.openpose_hand="openpose_hand",h))(ae||{}),Ke=(o=>(o.openpose="openpose",o.openpose_face="openpose_face",o.openpose_faceonly="openpose_faceonly",o.openpose_full="openpose_full",o.openpose_hand="openpose_hand",o))(Ke||{}),We=(e=>(e.safetensors="safetensors",e.pickletensor="pickletensor",e))(We||{}),Fe=(p=>(p.flux1d="flux1d",p.flux1s="flux1s",p.pony="pony",p.sdhyper="sdhyper",p.sd1x="sd1x",p.sd1xlcm="sd1xlcm",p.sd3="sd3",p.sdxl="sdxl",p.sdxllcm="sdxllcm",p.sdxldistilled="sdxldistilled",p.sdxlhyper="sdxlhyper",p.sdxllightning="sdxllightning",p.sdxlturbo="sdxlturbo",p))(Fe||{}),Pe=(n=>(n.base="base",n.inpainting="inpainting",n.pix2pix="pix2pix",n))(Pe||{}),Ge=(y=>(y.canny="canny",y.depth="depth",y.qrcode="qrcode",y.hed="hed",y.scrible="scrible",y.openpose="openpose",y.seg="segmentation",y.openmlsd="openmlsd",y.softedge="softedge",y.normal="normal bae",y.shuffle="shuffle",y.pix2pix="pix2pix",y.inpaint="inpaint",y.lineart="line art",y.sketch="sketch",y.inpaintdepth="inpaint depth",y.tile="tile",y.outfit="outfit",y.blur="blur",y.gray="gray",y.lowquality="low quality",y))(Ge||{}),Be=(d=>(d.NoStyle="No style",d.Cinematic="Cinematic",d.DisneyCharacter="Disney Character",d.DigitalArt="Digital Art",d.Photographic="Photographic",d.FantasyArt="Fantasy art",d.Neonpunk="Neonpunk",d.Enhance="Enhance",d.ComicBook="Comic book",d.Lowpoly="Lowpoly",d.LineArt="Line art",d))(Be||{});import{v4 as qe,validate as He}from"uuid";var V=6e4,oe=1e3,Ve=100,j={PRODUCTION:"wss://ws-api.runware.ai/v1",TEST:"ws://localhost:8080"},ie=(c,t)=>{if(c==null)return;let e=c.indexOf(t);e!==-1&&c.splice(e,1)},v=(c,{debugKey:t="debugKey",timeoutDuration:e=V,shouldThrowError:n=!0})=>(e=e<oe?oe:e,new Promise((a,o)=>{let i=setTimeout(()=>{l&&(clearInterval(l),n&&o(`Response could not be received from server for ${t}`)),clearTimeout(i)},e),l=setInterval(async()=>{c({resolve:a,reject:o,intervalId:l})&&(clearInterval(l),clearTimeout(i))},Ve)})),le=c=>new Promise(t=>{let e=new FileReader;e.readAsDataURL(c),e.onload=function(){t(e.result)}}),U=()=>qe(),ce=c=>He(c);var ue=({key:c,data:t,useZero:e=!0,shouldReturnString:n=!1})=>c.split(/\.|\[/).map(i=>i.replace(/\]$/,"")).reduce((i,l)=>{let s=e?0:void 0,u=i?.[l];if(!u)return s;if(Array.isArray(u)&&/^\d+$/.test(l)){let g=parseInt(l,10);return g>=0&&g<u.length?i[l]=u[g]:i[l]??s}else return i[l]??s},t||{})??{},ge=(c,t=1e3)=>new Promise(e=>setTimeout(e,c*t));var de=(c,t)=>c.filter(e=>e.key!==t.key);var I=({key:c,value:t})=>t||t===0||t===!1?{[c]:t}:{},je=(c,t)=>Math.floor(Math.random()*(t-c+1))+c,Q=()=>je(1,Number.MAX_SAFE_INTEGER);var _=async(c,t={})=>{let{delayInSeconds:e=1,callback:n}=t,a=t.maxRetries??1;for(;a;)try{return await c()}catch(o){if(n?.(),a--,a>0)await ge(e),await _(c,{...t,maxRetries:a});else throw o}};var A=class{constructor({apiKey:t,url:e=j.PRODUCTION,shouldReconnect:n=!0,globalMaxRetries:a=2,timeoutDuration:o=V}){this._listeners=[];this._globalMessages={};this._globalImages=[];this.ensureConnectionUUID=null;this.isWebsocketReadyState=()=>this._ws?.readyState===1;this.isInvalidAPIKey=()=>this._connectionError?.error?.code==="invalidApiKey";this.send=t=>{this._ws.send(JSON.stringify([t]))};this.uploadImage=async t=>{try{return await _(async()=>{let e=U();if(typeof t=="string"&&ce(t))return{imageURL:t,imageUUID:t,taskUUID:e,taskType:"imageUpload"};let n=typeof t=="string"?t:await le(t);return{imageURL:n,imageUUID:n,taskUUID:e,taskType:"imageUpload"}})}catch(e){throw e}};this.controlNetPreProcess=async({inputImage:t,preProcessorType:e,height:n,width:a,outputType:o,outputFormat:i,highThresholdCanny:l,lowThresholdCanny:s,includeHandsAndFaceOpenPose:u,includeCost:g,outputQuality:d,customTaskUUID:r,retry:p})=>{let m=p||this._globalMaxRetries,f;try{return await _(async()=>{await this.ensureConnection();let b=await this.uploadImage(t);if(!b?.imageUUID)return null;let T=r||U();this.send({inputImage:b.imageUUID,taskType:"imageControlNetPreProcess",taskUUID:T,preProcessorType:e,...I({key:"height",value:n}),...I({key:"width",value:a}),...I({key:"outputType",value:o}),...I({key:"outputFormat",value:i}),...I({key:"includeCost",value:g}),...I({key:"highThresholdCanny",value:l}),...I({key:"lowThresholdCanny",value:s}),...I({key:"includeHandsAndFaceOpenPose",value:u}),...d?{outputQuality:d}:{}}),f=this.globalListener({taskUUID:T});let k=await v(({resolve:D,reject:x})=>{let y=this.getSingleMessage({taskUUID:T});if(y){if(y?.error)return x(y),!0;if(y)return D(y),!0}},{debugKey:"unprocessed-image",timeoutDuration:this._timeoutDuration});return f.destroy(),k},{maxRetries:m,callback:()=>{f?.destroy()}})}catch(b){throw b}};this.requestImageToText=async({inputImage:t,includeCost:e,customTaskUUID:n,retry:a})=>{let o=a||this._globalMaxRetries,i;try{return await _(async()=>{await this.ensureConnection();let l=t?await this.uploadImage(t):null,s=n||U();this.send({taskUUID:s,taskType:"imageCaption",inputImage:l?.imageUUID,...I({key:"includeCost",value:e})}),i=this.globalListener({taskUUID:s});let u=await v(({resolve:g,reject:d})=>{let r=this.getSingleMessage({taskUUID:s});if(r){if(r?.error)return d(r),!0;if(r)return delete this._globalMessages[s],g(r),!0}},{debugKey:"remove-image-background",timeoutDuration:this._timeoutDuration});return i.destroy(),u},{maxRetries:o,callback:()=>{i?.destroy()}})}catch(l){throw l}};this.removeImageBackground=async({inputImage:t,outputType:e,outputFormat:n,rgba:a,postProcessMask:o,returnOnlyMask:i,alphaMatting:l,alphaMattingForegroundThreshold:s,alphaMattingBackgroundThreshold:u,alphaMattingErodeSize:g,outputQuality:d,includeCost:r,customTaskUUID:p,retry:m})=>{let f=m||this._globalMaxRetries,b;try{return await _(async()=>{await this.ensureConnection();let T=t?await this.uploadImage(t):null,k=p||U();this.send({taskType:"imageBackgroundRemoval",taskUUID:k,inputImage:T?.imageUUID,...I({key:"rgba",value:a}),...I({key:"postProcessMask",value:o}),...I({key:"returnOnlyMask",value:i}),...I({key:"alphaMatting",value:l}),...I({key:"includeCost",value:r}),...I({key:"alphaMattingForegroundThreshold",value:s}),...I({key:"alphaMattingBackgroundThreshold",value:u}),...I({key:"alphaMattingErodeSize",value:g}),...I({key:"outputType",value:e}),...I({key:"outputFormat",value:n}),...d?{outputQuality:d}:{}}),b=this.globalListener({taskUUID:k});let D=await v(({resolve:x,reject:y})=>{let S=this.getSingleMessage({taskUUID:k});if(S){if(S?.error)return y(S),!0;if(S)return delete this._globalMessages[k],x(S),!0}},{debugKey:"remove-image-background",timeoutDuration:this._timeoutDuration});return b.destroy(),D},{maxRetries:f,callback:()=>{b?.destroy()}})}catch(T){throw T}};this.upscaleGan=async({inputImage:t,upscaleFactor:e,outputType:n,outputFormat:a,includeCost:o,outputQuality:i,customTaskUUID:l,retry:s})=>{let u=s||this._globalMaxRetries,g;try{return await _(async()=>{await this.ensureConnection();let d;d=await this.uploadImage(t);let r=l||U();this.send({taskUUID:r,inputImage:d?.imageUUID,taskType:"imageUpscale",upscaleFactor:e,...I({key:"includeCost",value:o}),...n?{outputType:n}:{},...i?{outputQuality:i}:{},...a?{outputFormat:a}:{}}),g=this.globalListener({taskUUID:r});let p=await v(({resolve:m,reject:f})=>{let b=this.getSingleMessage({taskUUID:r});if(b){if(b?.error)return f(b),!0;if(b)return delete this._globalMessages[r],m(b),!0}},{debugKey:"upscale-gan",timeoutDuration:this._timeoutDuration});return g.destroy(),p},{maxRetries:u,callback:()=>{g?.destroy()}})}catch(d){throw d}};this.enhancePrompt=async({prompt:t,promptMaxLength:e=380,promptVersions:n=1,includeCost:a,customTaskUUID:o,retry:i})=>{let l=i||this._globalMaxRetries,s;try{return await _(async()=>{await this.ensureConnection();let u=o||U();this.send({prompt:t,taskUUID:u,promptMaxLength:e,promptVersions:n,...I({key:"includeCost",value:a}),taskType:"promptEnhance"}),s=this.globalListener({taskUUID:u});let g=await v(({resolve:d,reject:r})=>{let p=this._globalMessages[u];if(p?.error)return r(p),!0;if(p?.length>=n)return delete this._globalMessages[u],d(p),!0},{debugKey:"enhance-prompt",timeoutDuration:this._timeoutDuration});return s.destroy(),g},{maxRetries:l,callback:()=>{s?.destroy()}})}catch(u){throw u}};this.modelUpload=async t=>{let{onUploadStream:e,retry:n,customTaskUUID:a,...o}=t,i=n||this._globalMaxRetries,l;try{return await _(async()=>{await this.ensureConnection();let s=a||U();this.send({...o,taskUUID:s,taskType:"modelUpload"});let u,g;return l=this.listenToUpload({taskUUID:s,onUploadStream:(r,p)=>{e?.(r,p),r?.status==="ready"?u=r:p&&(g=p)}}),await v(({resolve:r,reject:p})=>{if(u)return r(u),!0;if(g)return p(g),!1},{shouldThrowError:!1,timeoutDuration:60*60*1e3})},{maxRetries:i,callback:()=>{l?.destroy()}})}catch(s){throw s}};this.photoMaker=async t=>{let{onPartialImages:e,retry:n,customTaskUUID:a,numberResults:o,...i}=t,l=n||this._globalMaxRetries,s,u=[],g=0;try{return await _(async()=>{await this.ensureConnection(),g++;let d=this._globalImages.filter(f=>u.includes(f.taskUUID)),r=a||U();u.push(r);let p=o-d.length;this.send({...i,...i.seed?{seed:i.seed}:{seed:Q()},numberResults:p,taskUUID:r,taskType:"photoMaker"}),s=this.listenToImages({onPartialImages:e,taskUUID:r,groupKey:"REQUEST_IMAGES",positivePrompt:i.positivePrompt});let m=await this.getSimilarImages({taskUUID:u,numberResults:o,lis:s});return s.destroy(),m},{maxRetries:l,callback:()=>{s?.destroy()}})}catch(d){if(d.taskUUID)throw d;if(g>=l)return this.handleIncompleteImages({taskUUIDs:u,error:d})}};this.modelSearch=async t=>this.baseSingleRequest({payload:{...t,taskType:"modelSearch"},debugKey:"model-search"});this.imageMasking=async t=>this.baseSingleRequest({payload:{...t,taskType:"imageMasking"},debugKey:"image-masking"});this.baseSingleRequest=async({payload:t,debugKey:e})=>{let{retry:n,customTaskUUID:a,...o}=t,i=n||this._globalMaxRetries,l;try{return await _(async()=>{await this.ensureConnection();let s=a||U();this.send({...o,taskUUID:s}),l=this.globalListener({taskUUID:s});let u=await v(({resolve:g,reject:d})=>{let r=this.getSingleMessage({taskUUID:s});if(r){if(r?.error)return d(r),!0;if(r)return delete this._globalMessages[s],g(r),!0}},{debugKey:e,timeoutDuration:this._timeoutDuration});return l.destroy(),u},{maxRetries:i,callback:()=>{l?.destroy()}})}catch(s){throw s}};this.getSingleMessage=({taskUUID:t})=>{let e=this._globalMessages[t]?.[0],n=this._globalMessages[t];return!e&&!n?null:n?.error?n:e};this.disconnect=async()=>{this._shouldReconnect=!1,this._ws?.terminate?.(),this._ws?.close?.()};this.connected=()=>this.isWebsocketReadyState()&&!!this._connectionSessionUUID;this._apiKey=t,this._url=e,this._sdkType="CLIENT",this._shouldReconnect=n,this._globalMaxRetries=a,this._timeoutDuration=o}static async initialize(t){try{let e=new this(t);return await e.ensureConnection(),e}catch(e){throw e}}addListener({lis:t,groupKey:e,taskUUID:n}){let a=l=>{let s=Array.isArray(l?.data)?l.data:[l.data],u=l?.[0]?.errors?l?.[0]?.errors:Array.isArray(l?.errors)?l.errors:[l.errors],g=s.filter(r=>(r?.taskUUID||r?.taskType)===n);if(u.filter(r=>(r?.taskUUID||r?.taskType)===n).length){t({error:{...u[0]??{}}});return}if(g.length){t({[n]:s});return}},o={key:n||U(),listener:a,groupKey:e};return this._listeners.push(o),{destroy:()=>{this._listeners=de(this._listeners,o)}}}connect(){this._ws.onopen=t=>{this._connectionSessionUUID?this.send({taskType:"authentication",apiKey:this._apiKey,connectionSessionUUID:this._connectionSessionUUID}):this.send({apiKey:this._apiKey,taskType:"authentication"}),this.addListener({taskUUID:"authentication",lis:e=>{if(e?.error){this._connectionError=e;return}this._connectionSessionUUID=e?.authentication?.[0]?.connectionSessionUUID,this._connectionError=void 0}})},this._ws.onmessage=t=>{let e=JSON.parse(t.data);for(let n of this._listeners)if(n?.listener?.(e))return},this._ws.onclose=t=>{this.isInvalidAPIKey()}}destroy(t){ie(this._listeners,t)}listenToImages({onPartialImages:t,taskUUID:e,groupKey:n,positivePrompt:a,negativePrompt:o}){return this.addListener({taskUUID:e,lis:i=>{let l=i?.[e]?.filter(s=>s.taskUUID===e);i.error?(t?.(l,i?.error&&i),this._globalError=i):(l=l.map(s=>({...s,positivePrompt:a,negativePrompt:o})),t?.(l,i?.error&&i),this._sdkType==="CLIENT"?this._globalImages=[...this._globalImages,...(i?.[e]??[]).map(s=>({...s,positivePrompt:a,negativePrompt:o}))]:this._globalImages=[...this._globalImages,...l])},groupKey:n})}listenToUpload({onUploadStream:t,taskUUID:e}){return this.addListener({taskUUID:e,lis:n=>{let a=n?.error,o=n?.[e]?.[0],i=o?.taskUUID===e?o:null;(i||a)&&t?.(i||void 0,a)}})}globalListener({taskUUID:t}){return this.addListener({taskUUID:t,lis:e=>{if(e.error){this._globalMessages[t]=e;return}let n=ue({key:t,data:e,useZero:!1});Array.isArray(n)?n.forEach(a=>{this._globalMessages[a.taskUUID]=[...this._globalMessages[a.taskUUID]??[],a]}):this._globalMessages[n.taskUUID]=n}})}async requestImages({outputType:t,outputFormat:e,uploadEndpoint:n,checkNSFW:a,positivePrompt:o,negativePrompt:i,seedImage:l,maskImage:s,strength:u,height:g,width:d,model:r,steps:p,scheduler:m,seed:f,CFGScale:b,clipSkip:T,usePromptWeighting:k,promptWeighting:D,numberResults:x=1,onPartialImages:y,includeCost:S,customTaskUUID:Te,retry:Ue,refiner:J,maskMargin:_e,outputQuality:h,controlNet:K,lora:z,embeddings:Y,ipAdapters:Z},ke){let C,$,E=[],X=0,ee=Ue||this._globalMaxRetries;try{await this.ensureConnection();let w=null,W=null,F=[];if(l){let R=await this.uploadImage(l);if(!R)return[];w=R.imageUUID}if(s){let R=await this.uploadImage(s);if(!R)return[];W=R.imageUUID}if(K?.length)for(let R=0;R<K.length;R++){let M=K[R],{endStep:P,startStep:G,weight:B,guideImage:N,controlMode:Re,startStepPercentage:xe,endStepPercentage:De,model:ve}=M,Se=N?await this.uploadImage(N):null;F.push({guideImage:Se?.imageUUID,model:ve,endStep:P,startStep:G,weight:B,...I({key:"startStepPercentage",value:xe}),...I({key:"endStepPercentage",value:De}),controlMode:Re||"controlnet"})}return $={taskType:"imageInference",model:r,positivePrompt:o,...i?{negativePrompt:i}:{},...g?{height:g}:{},...d?{width:d}:{},numberResults:x,...t?{outputType:t}:{},...e?{outputFormat:e}:{},...n?{uploadEndpoint:n}:{},...I({key:"checkNSFW",value:a}),...I({key:"strength",value:u}),...I({key:"CFGScale",value:b}),...I({key:"clipSkip",value:T}),...I({key:"maskMargin",value:_e}),...I({key:"usePromptWeighting",value:k}),...I({key:"steps",value:p}),...D?{promptWeighting:D}:{},...f?{seed:f}:{seed:Q()},...m?{scheduler:m}:{},...J?{refiner:J}:{},...I({key:"includeCost",value:S}),...w?{seedImage:w}:{},...W?{maskImage:W}:{},...h?{outputQuality:h}:{},...F.length?{controlNet:F}:{},...z?.length?{lora:z}:{},...Y?.length?{embeddings:Y}:{},...Z?.length?{ipAdapters:Z}:{},...ke??{}},await _(async()=>{X++,C?.destroy();let R=this._globalImages.filter(N=>E.includes(N.taskUUID)),M=Te||U();E.push(M);let P=x-R.length,G={...$,taskUUID:M,numberResults:P};this.send(G),C=this.listenToImages({onPartialImages:y,taskUUID:M,groupKey:"REQUEST_IMAGES",positivePrompt:o,negativePrompt:i});let B=await this.getSimilarImages({taskUUID:E,numberResults:x,lis:C});return C.destroy(),B},{maxRetries:ee,callback:()=>{C?.destroy()}})}catch(w){if(X>=ee)return this.handleIncompleteImages({taskUUIDs:E,error:w});throw w}}async ensureConnection(){if(this.connected()||this._url===j.TEST)return;let e=2e3,n=200;try{if(this.isInvalidAPIKey())throw this._connectionError;return new Promise((a,o)=>{let i=0,l=30,s=U(),u,g,d=()=>{this.ensureConnectionUUID=null,clearInterval(u),clearInterval(g)};this._sdkType==="SERVER"&&(u=setInterval(async()=>{try{let r=this.connected(),p=!1;(!this.ensureConnectionUUID||s===this.ensureConnectionUUID)&&(this.ensureConnectionUUID||(this.ensureConnectionUUID=s),p=!0);let m=i%10===0&&p;r?(d(),a(!0)):i>=l?(d(),o(new Error("Retry timed out"))):(m&&this.connect(),i++)}catch(r){d(),o(r)}},e)),g=setInterval(async()=>{if(this.connected()){d(),a(!0);return}if(this.isInvalidAPIKey()){d(),o(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:t,numberResults:e,shouldThrowError:n,lis:a}){return await v(({resolve:o,reject:i,intervalId:l})=>{let s=Array.isArray(t)?t:[t],u=this._globalImages.filter(g=>s.includes(g.taskUUID));if(this._globalError){let g=this._globalError;return this._globalError=void 0,clearInterval(l),i?.(g),!0}else if(u.length>=e)return clearInterval(l),this._globalImages=this._globalImages.filter(g=>!s.includes(g.taskUUID)),o([...u].slice(0,e)),!0},{debugKey:"getting images",shouldThrowError:n,timeoutDuration:this._timeoutDuration})}handleIncompleteImages({taskUUIDs:t,error:e}){let n=this._globalImages.filter(a=>t.includes(a.taskUUID));if(n.length>1)return this._globalImages=this._globalImages.filter(a=>!t.includes(a.taskUUID)),n;throw e}};var fe=Le(he(),1),O=class extends A{constructor(t){let{shouldReconnect:e,...n}=t;super(n),this._ws=new fe.default(this._url),this.connect()}};import Xe from"ws";var L=class extends A{constructor(e){super(e);this._instantiated=!1;this._listeners=[];this._reconnectingIntervalId=null;this.send=e=>{this._ws.send(JSON.stringify([e]))};this.resetConnection=()=>{this._ws&&(this._listeners.forEach(e=>{e?.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 Xe(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:e=>{if(e?.error){this._connectionError=e;return}this._connectionSessionUUID=e?.authentication?.[0]?.connectionSessionUUID,this._connectionError=void 0}})}),this._ws.on("message",(e,n)=>{let a=n?e:e?.toString();if(!a)return;let o=JSON.parse(a);this._listeners.forEach(i=>{i.listener(o)})}))}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 be;typeof window>"u"?be=L:be=O;export{re as EControlMode,Fe as EModelArchitecture,Ge as EModelConditioning,We as EModelFormat,Pe as EModelType,Ke as EOpenPosePreProcessor,Be as EPhotoMakerEnum,ae as EPreProcessor,se as EPreProcessorGroup,H as ETaskType,ne as Environment,be as Runware,O as RunwareClient,L as RunwareServer,q as SdkType};
1
+ var ve=Object.create;var Z=Object.defineProperty;var Se=Object.getOwnPropertyDescriptor;var we=Object.getOwnPropertyNames;var Ae=Object.getPrototypeOf,Ce=Object.prototype.hasOwnProperty;var Me=(c,t)=>()=>(t||c((t={exports:{}}).exports,t),t.exports);var Ne=(c,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of we(t))!Ce.call(c,a)&&a!==e&&Z(c,a,{get:()=>t[a],enumerable:!(n=Se(t,a))||n.enumerable});return c};var Oe=(c,t,e)=>(e=c!=null?ve(Ae(c)):{},Ne(t||!c||!c.__esModule?Z(e,"default",{value:c,enumerable:!0}):e,c));var pe=Me((Gt,de)=>{"use strict";var ue=c=>c&&c.CLOSING===2,Ve=()=>typeof WebSocket<"u"&&ue(WebSocket),je=()=>({constructor:Ve()?WebSocket:null,maxReconnectionDelay:1e4,minReconnectionDelay:1500,reconnectionDelayGrowFactor:1.3,connectionTimeout:4e3,maxRetries:1/0,debug:!1}),Qe=(c,t,e)=>{Object.defineProperty(t,e,{get:()=>c[e],set:n=>{c[e]=n},enumerable:!0,configurable:!0})},ce=c=>c.minReconnectionDelay+Math.random()*c.minReconnectionDelay,Je=(c,t)=>{let e=t*c.reconnectionDelayGrowFactor;return e>c.maxReconnectionDelay?c.maxReconnectionDelay:e},ze=["onopen","onclose","onmessage","onerror"],Ye=(c,t,e)=>{Object.keys(e).forEach(n=>{e[n].forEach(([a,o])=>{c.addEventListener(n,a,o)})}),t&&ze.forEach(n=>{c[n]=t[n]})},ge=function(c,t,e={}){let n,a,o=0,i=0,l=!0,r={};if(!(this instanceof ge))throw new TypeError("Failed to construct 'ReconnectingWebSocket': Please use the 'new' operator");let u=je();if(Object.keys(u).filter(m=>e.hasOwnProperty(m)).forEach(m=>u[m]=e[m]),!ue(u.constructor))throw new TypeError("Invalid WebSocket constructor. Set `options.constructor`");let g=u.debug?(...m)=>console.log("RWS:",...m):()=>{},d=(m,f)=>setTimeout(()=>{let b=new Error(f);b.code=m,Array.isArray(r.error)&&r.error.forEach(([U])=>U(b)),n.onerror&&n.onerror(b)},0),s=()=>{if(g("close"),i++,g("retries count:",i),i>u.maxRetries){d("EHOSTDOWN","Too many failed connection attempts");return}o?o=Je(u,o):o=ce(u),g("reconnectDelay:",o),l&&setTimeout(p,o)},p=()=>{g("connect");let m=n;n=new u.constructor(c,t),a=setTimeout(()=>{g("timeout"),n.close(),d("ETIMEDOUT","Connection timeout")},u.connectionTimeout),g("bypass properties");for(let f in n)["addEventListener","removeEventListener","close","send"].indexOf(f)<0&&Qe(n,this,f);n.addEventListener("open",()=>{clearTimeout(a),g("open"),o=ce(u),g("reconnectDelay:",o),i=0}),n.addEventListener("close",s),Ye(n,m,r)};g("init"),p(),this.close=(m=1e3,f="",{keepClosed:b=!1,fastClose:U=!0,delay:k=0}={})=>{if(k&&(o=k),l=!b,n.close(m,f),U){let x={code:m,reason:f,wasClean:!0};s(),Array.isArray(r.close)&&r.close.forEach(([D,y])=>{D(x),n.removeEventListener("close",D,y)}),n.onclose&&(n.onclose(x),n.onclose=null)}},this.send=m=>{n.send(m)},this.addEventListener=(m,f,b)=>{Array.isArray(r[m])?r[m].some(([U])=>U===f)||r[m].push([f,b]):r[m]=[[f,b]],n.addEventListener(m,f,b)},this.removeEventListener=(m,f,b)=>{Array.isArray(r[m])&&(r[m]=r[m].filter(([U])=>U!==f)),n.removeEventListener(m,f,b)}};de.exports=ge});var $=(n=>(n.PRODUCTION="PRODUCTION",n.DEVELOPMENT="DEVELOPMENT",n.TEST="TEST",n))($||{}),B=(e=>(e.CLIENT="CLIENT",e.SERVER="SERVER",e))(B||{}),q=(s=>(s.IMAGE_INFERENCE="imageInference",s.IMAGE_UPLOAD="imageUpload",s.IMAGE_UPSCALE="imageUpscale",s.IMAGE_BACKGROUND_REMOVAL="imageBackgroundRemoval",s.IMAGE_CAPTION="imageCaption",s.IMAGE_CONTROL_NET_PRE_PROCESS="imageControlNetPreProcess",s.PROMPT_ENHANCE="promptEnhance",s.AUTHENTICATION="authentication",s.MODEL_UPLOAD="modelUpload",s.PHOTO_MAKER="photoMaker",s.MODEL_SEARCH="modelSearch",s.IMAGE_MASKING="imageMasking",s))(q||{}),X=(n=>(n.BALANCED="balanced",n.PROMPT="prompt",n.CONTROL_NET="controlnet",n))(X||{}),ee=(s=>(s.canny="canny",s.depth="depth",s.mlsd="mlsd",s.normalbae="normalbae",s.openpose="openpose",s.tile="tile",s.seg="seg",s.lineart="lineart",s.lineart_anime="lineart_anime",s.shuffle="shuffle",s.scribble="scribble",s.softedge="softedge",s))(ee||{}),te=(h=>(h.canny="canny",h.depth_leres="depth_leres",h.depth_midas="depth_midas",h.depth_zoe="depth_zoe",h.inpaint_global_harmonious="inpaint_global_harmonious",h.lineart_anime="lineart_anime",h.lineart_coarse="lineart_coarse",h.lineart_realistic="lineart_realistic",h.lineart_standard="lineart_standard",h.mlsd="mlsd",h.normal_bae="normal_bae",h.scribble_hed="scribble_hed",h.scribble_pidinet="scribble_pidinet",h.seg_ofade20k="seg_ofade20k",h.seg_ofcoco="seg_ofcoco",h.seg_ufade20k="seg_ufade20k",h.shuffle="shuffle",h.softedge_hed="softedge_hed",h.softedge_hedsafe="softedge_hedsafe",h.softedge_pidinet="softedge_pidinet",h.softedge_pidisafe="softedge_pidisafe",h.tile_gaussian="tile_gaussian",h.openpose="openpose",h.openpose_face="openpose_face",h.openpose_faceonly="openpose_faceonly",h.openpose_full="openpose_full",h.openpose_hand="openpose_hand",h))(te||{}),Le=(o=>(o.openpose="openpose",o.openpose_face="openpose_face",o.openpose_faceonly="openpose_faceonly",o.openpose_full="openpose_full",o.openpose_hand="openpose_hand",o))(Le||{}),Ee=(e=>(e.safetensors="safetensors",e.pickletensor="pickletensor",e))(Ee||{}),Ke=(p=>(p.flux1d="flux1d",p.flux1s="flux1s",p.pony="pony",p.sdhyper="sdhyper",p.sd1x="sd1x",p.sd1xlcm="sd1xlcm",p.sd3="sd3",p.sdxl="sdxl",p.sdxllcm="sdxllcm",p.sdxldistilled="sdxldistilled",p.sdxlhyper="sdxlhyper",p.sdxllightning="sdxllightning",p.sdxlturbo="sdxlturbo",p))(Ke||{}),We=(n=>(n.base="base",n.inpainting="inpainting",n.pix2pix="pix2pix",n))(We||{}),Pe=(y=>(y.canny="canny",y.depth="depth",y.qrcode="qrcode",y.hed="hed",y.scrible="scrible",y.openpose="openpose",y.seg="segmentation",y.openmlsd="openmlsd",y.softedge="softedge",y.normal="normal bae",y.shuffle="shuffle",y.pix2pix="pix2pix",y.inpaint="inpaint",y.lineart="line art",y.sketch="sketch",y.inpaintdepth="inpaint depth",y.tile="tile",y.outfit="outfit",y.blur="blur",y.gray="gray",y.lowquality="low quality",y))(Pe||{}),Fe=(d=>(d.NoStyle="No style",d.Cinematic="Cinematic",d.DisneyCharacter="Disney Character",d.DigitalArt="Digital Art",d.Photographic="Photographic",d.FantasyArt="Fantasy art",d.Neonpunk="Neonpunk",d.Enhance="Enhance",d.ComicBook="Comic book",d.Lowpoly="Lowpoly",d.LineArt="Line art",d))(Fe||{});import{v4 as Ge,validate as Be}from"uuid";var H=6e4,ne=1e3,qe=100,V={PRODUCTION:"wss://ws-api.runware.ai/v1",TEST:"ws://localhost:8080"},se=(c,t)=>{if(c==null)return;let e=c.indexOf(t);e!==-1&&c.splice(e,1)},v=(c,{debugKey:t="debugKey",timeoutDuration:e=H,shouldThrowError:n=!0})=>(e=e<ne?ne:e,new Promise((a,o)=>{let i=setTimeout(()=>{l&&(clearInterval(l),n&&o(`Response could not be received from server for ${t}`)),clearTimeout(i)},e),l=setInterval(async()=>{c({resolve:a,reject:o,intervalId:l})&&(clearInterval(l),clearTimeout(i))},qe)})),re=c=>new Promise(t=>{let e=new FileReader;e.readAsDataURL(c),e.onload=function(){t(e.result)}}),T=()=>Ge(),ae=c=>Be(c);var oe=({key:c,data:t,useZero:e=!0,shouldReturnString:n=!1})=>c.split(/\.|\[/).map(i=>i.replace(/\]$/,"")).reduce((i,l)=>{let r=e?0:void 0,u=i?.[l];if(!u)return r;if(Array.isArray(u)&&/^\d+$/.test(l)){let g=parseInt(l,10);return g>=0&&g<u.length?i[l]=u[g]:i[l]??r}else return i[l]??r},t||{})??{},ie=(c,t=1e3)=>new Promise(e=>setTimeout(e,c*t));var le=(c,t)=>c.filter(e=>e.key!==t.key);var I=({key:c,value:t})=>t||t===0||t===!1?{[c]:t}:{},He=(c,t)=>Math.floor(Math.random()*(t-c+1))+c,j=()=>He(1,Number.MAX_SAFE_INTEGER);var _=async(c,t={})=>{let{delayInSeconds:e=1,callback:n}=t,a=t.maxRetries??1;for(;a;)try{return await c()}catch(o){if(n?.(),a--,a>0)await ie(e),await _(c,{...t,maxRetries:a});else throw o}};var A=class{constructor({apiKey:t,url:e=V.PRODUCTION,shouldReconnect:n=!0,globalMaxRetries:a=2,timeoutDuration:o=H}){this._listeners=[];this._globalMessages={};this._globalImages=[];this.ensureConnectionUUID=null;this.isWebsocketReadyState=()=>this._ws?.readyState===1;this.send=t=>{this._ws.send(JSON.stringify([t]))};this.uploadImage=async t=>{try{return await _(async()=>{let e=T();if(typeof t=="string"&&ae(t))return{imageURL:t,imageUUID:t,taskUUID:e,taskType:"imageUpload"};let n=typeof t=="string"?t:await re(t);return{imageURL:n,imageUUID:n,taskUUID:e,taskType:"imageUpload"}})}catch(e){throw e}};this.controlNetPreProcess=async({inputImage:t,preProcessorType:e,height:n,width:a,outputType:o,outputFormat:i,highThresholdCanny:l,lowThresholdCanny:r,includeHandsAndFaceOpenPose:u,includeCost:g,outputQuality:d,customTaskUUID:s,retry:p})=>{let m=p||this._globalMaxRetries,f;try{return await _(async()=>{await this.ensureConnection();let b=await this.uploadImage(t);if(!b?.imageUUID)return null;let U=s||T();this.send({inputImage:b.imageUUID,taskType:"imageControlNetPreProcess",taskUUID:U,preProcessorType:e,...I({key:"height",value:n}),...I({key:"width",value:a}),...I({key:"outputType",value:o}),...I({key:"outputFormat",value:i}),...I({key:"includeCost",value:g}),...I({key:"highThresholdCanny",value:l}),...I({key:"lowThresholdCanny",value:r}),...I({key:"includeHandsAndFaceOpenPose",value:u}),...d?{outputQuality:d}:{}}),f=this.globalListener({taskUUID:U});let k=await v(({resolve:x,reject:D})=>{let y=this.getSingleMessage({taskUUID:U});if(y){if(y?.error)return D(y),!0;if(y)return x(y),!0}},{debugKey:"unprocessed-image",timeoutDuration:this._timeoutDuration});return f.destroy(),k},{maxRetries:m,callback:()=>{f?.destroy()}})}catch(b){throw b}};this.requestImageToText=async({inputImage:t,includeCost:e,customTaskUUID:n,retry:a})=>{let o=a||this._globalMaxRetries,i;try{return await _(async()=>{await this.ensureConnection();let l=t?await this.uploadImage(t):null,r=n||T();this.send({taskUUID:r,taskType:"imageCaption",inputImage:l?.imageUUID,...I({key:"includeCost",value:e})}),i=this.globalListener({taskUUID:r});let u=await v(({resolve:g,reject:d})=>{let s=this.getSingleMessage({taskUUID:r});if(s){if(s?.error)return d(s),!0;if(s)return delete this._globalMessages[r],g(s),!0}},{debugKey:"remove-image-background",timeoutDuration:this._timeoutDuration});return i.destroy(),u},{maxRetries:o,callback:()=>{i?.destroy()}})}catch(l){throw l}};this.removeImageBackground=async({inputImage:t,outputType:e,outputFormat:n,rgba:a,postProcessMask:o,returnOnlyMask:i,alphaMatting:l,alphaMattingForegroundThreshold:r,alphaMattingBackgroundThreshold:u,alphaMattingErodeSize:g,outputQuality:d,includeCost:s,customTaskUUID:p,retry:m})=>{let f=m||this._globalMaxRetries,b;try{return await _(async()=>{await this.ensureConnection();let U=t?await this.uploadImage(t):null,k=p||T();this.send({taskType:"imageBackgroundRemoval",taskUUID:k,inputImage:U?.imageUUID,...I({key:"rgba",value:a}),...I({key:"postProcessMask",value:o}),...I({key:"returnOnlyMask",value:i}),...I({key:"alphaMatting",value:l}),...I({key:"includeCost",value:s}),...I({key:"alphaMattingForegroundThreshold",value:r}),...I({key:"alphaMattingBackgroundThreshold",value:u}),...I({key:"alphaMattingErodeSize",value:g}),...I({key:"outputType",value:e}),...I({key:"outputFormat",value:n}),...d?{outputQuality:d}:{}}),b=this.globalListener({taskUUID:k});let x=await v(({resolve:D,reject:y})=>{let S=this.getSingleMessage({taskUUID:k});if(S){if(S?.error)return y(S),!0;if(S)return delete this._globalMessages[k],D(S),!0}},{debugKey:"remove-image-background",timeoutDuration:this._timeoutDuration});return b.destroy(),x},{maxRetries:f,callback:()=>{b?.destroy()}})}catch(U){throw U}};this.upscaleGan=async({inputImage:t,upscaleFactor:e,outputType:n,outputFormat:a,includeCost:o,outputQuality:i,customTaskUUID:l,retry:r})=>{let u=r||this._globalMaxRetries,g;try{return await _(async()=>{await this.ensureConnection();let d;d=await this.uploadImage(t);let s=l||T();this.send({taskUUID:s,inputImage:d?.imageUUID,taskType:"imageUpscale",upscaleFactor:e,...I({key:"includeCost",value:o}),...n?{outputType:n}:{},...i?{outputQuality:i}:{},...a?{outputFormat:a}:{}}),g=this.globalListener({taskUUID:s});let p=await v(({resolve:m,reject:f})=>{let b=this.getSingleMessage({taskUUID:s});if(b){if(b?.error)return f(b),!0;if(b)return delete this._globalMessages[s],m(b),!0}},{debugKey:"upscale-gan",timeoutDuration:this._timeoutDuration});return g.destroy(),p},{maxRetries:u,callback:()=>{g?.destroy()}})}catch(d){throw d}};this.enhancePrompt=async({prompt:t,promptMaxLength:e=380,promptVersions:n=1,includeCost:a,customTaskUUID:o,retry:i})=>{let l=i||this._globalMaxRetries,r;try{return await _(async()=>{await this.ensureConnection();let u=o||T();this.send({prompt:t,taskUUID:u,promptMaxLength:e,promptVersions:n,...I({key:"includeCost",value:a}),taskType:"promptEnhance"}),r=this.globalListener({taskUUID:u});let g=await v(({resolve:d,reject:s})=>{let p=this._globalMessages[u];if(p?.error)return s(p),!0;if(p?.length>=n)return delete this._globalMessages[u],d(p),!0},{debugKey:"enhance-prompt",timeoutDuration:this._timeoutDuration});return r.destroy(),g},{maxRetries:l,callback:()=>{r?.destroy()}})}catch(u){throw u}};this.modelUpload=async t=>{let{onUploadStream:e,retry:n,customTaskUUID:a,...o}=t,i=n||this._globalMaxRetries,l;try{return await _(async()=>{await this.ensureConnection();let r=a||T();this.send({...o,taskUUID:r,taskType:"modelUpload"});let u,g;return l=this.listenToUpload({taskUUID:r,onUploadStream:(s,p)=>{e?.(s,p),s?.status==="ready"?u=s:p&&(g=p)}}),await v(({resolve:s,reject:p})=>{if(u)return s(u),!0;if(g)return p(g),!1},{shouldThrowError:!1,timeoutDuration:60*60*1e3})},{maxRetries:i,callback:()=>{l?.destroy()}})}catch(r){throw r}};this.photoMaker=async t=>{let{onPartialImages:e,retry:n,customTaskUUID:a,numberResults:o,...i}=t,l=n||this._globalMaxRetries,r,u=[],g=0;try{return await _(async()=>{await this.ensureConnection(),g++;let d=this._globalImages.filter(f=>u.includes(f.taskUUID)),s=a||T();u.push(s);let p=o-d.length;this.send({...i,...i.seed?{seed:i.seed}:{seed:j()},numberResults:p,taskUUID:s,taskType:"photoMaker"}),r=this.listenToImages({onPartialImages:e,taskUUID:s,groupKey:"REQUEST_IMAGES",positivePrompt:i.positivePrompt});let m=await this.getSimilarImages({taskUUID:u,numberResults:o,lis:r});return r.destroy(),m},{maxRetries:l,callback:()=>{r?.destroy()}})}catch(d){if(d.taskUUID)throw d;if(g>=l)return this.handleIncompleteImages({taskUUIDs:u,error:d})}};this.modelSearch=async t=>this.baseSingleRequest({payload:{...t,taskType:"modelSearch"},debugKey:"model-search"});this.imageMasking=async t=>this.baseSingleRequest({payload:{...t,taskType:"imageMasking"},debugKey:"image-masking"});this.baseSingleRequest=async({payload:t,debugKey:e})=>{let{retry:n,customTaskUUID:a,...o}=t,i=n||this._globalMaxRetries,l;try{return await _(async()=>{await this.ensureConnection();let r=a||T();this.send({...o,taskUUID:r}),l=this.globalListener({taskUUID:r});let u=await v(({resolve:g,reject:d})=>{let s=this.getSingleMessage({taskUUID:r});if(s){if(s?.error)return d(s),!0;if(s)return delete this._globalMessages[r],g(s),!0}},{debugKey:e,timeoutDuration:this._timeoutDuration});return l.destroy(),u},{maxRetries:i,callback:()=>{l?.destroy()}})}catch(r){throw r}};this.getSingleMessage=({taskUUID:t})=>{let e=this._globalMessages[t]?.[0],n=this._globalMessages[t];return!e&&!n?null:n?.error?n:e};this.disconnect=async()=>{this._shouldReconnect=!1,this._ws?.terminate?.(),this._ws?.close?.()};this.connected=()=>this.isWebsocketReadyState()&&!!this._connectionSessionUUID;this._apiKey=t,this._url=e,this._sdkType="CLIENT",this._shouldReconnect=n,this._globalMaxRetries=a,this._timeoutDuration=o}static async initialize(t){try{let e=new this(t);return await e.ensureConnection(),e}catch(e){throw e}}addListener({lis:t,groupKey:e,taskUUID:n}){let a=l=>{let r=Array.isArray(l?.data)?l.data:[l.data],u=l?.[0]?.errors?l?.[0]?.errors:Array.isArray(l?.errors)?l.errors:[l.errors],g=r.filter(s=>(s?.taskUUID||s?.taskType)===n);if(u.filter(s=>(s?.taskUUID||s?.taskType)===n).length){t({error:{...u[0]??{}}});return}if(g.length){t({[n]:r});return}},o={key:n||T(),listener:a,groupKey:e};return this._listeners.push(o),{destroy:()=>{this._listeners=le(this._listeners,o)}}}connect(){this._ws.onopen=t=>{this._connectionSessionUUID?this.send({taskType:"authentication",apiKey:this._apiKey,connectionSessionUUID:this._connectionSessionUUID}):this.send({apiKey:this._apiKey,taskType:"authentication"}),this.addListener({taskUUID:"authentication",lis:e=>{if(e?.error){this._invalidAPIkey=e;return}this._connectionSessionUUID=e?.authentication?.[0]?.connectionSessionUUID,this._invalidAPIkey=void 0}})},this._ws.onmessage=t=>{let e=JSON.parse(t.data);for(let n of this._listeners)if(n?.listener?.(e))return},this._ws.onclose=t=>{this._invalidAPIkey}}destroy(t){se(this._listeners,t)}listenToImages({onPartialImages:t,taskUUID:e,groupKey:n,positivePrompt:a,negativePrompt:o}){return this.addListener({taskUUID:e,lis:i=>{let l=i?.[e]?.filter(r=>r.taskUUID===e);i.error?(t?.(l,i?.error&&i),this._globalError=i):(l=l.map(r=>({...r,positivePrompt:a,negativePrompt:o})),t?.(l,i?.error&&i),this._sdkType==="CLIENT"?this._globalImages=[...this._globalImages,...(i?.[e]??[]).map(r=>({...r,positivePrompt:a,negativePrompt:o}))]:this._globalImages=[...this._globalImages,...l])},groupKey:n})}listenToUpload({onUploadStream:t,taskUUID:e}){return this.addListener({taskUUID:e,lis:n=>{let a=n?.error,o=n?.[e]?.[0],i=o?.taskUUID===e?o:null;(i||a)&&t?.(i||void 0,a)}})}globalListener({taskUUID:t}){return this.addListener({taskUUID:t,lis:e=>{if(e.error){this._globalMessages[t]=e;return}let n=oe({key:t,data:e,useZero:!1});Array.isArray(n)?n.forEach(a=>{this._globalMessages[a.taskUUID]=[...this._globalMessages[a.taskUUID]??[],a]}):this._globalMessages[n.taskUUID]=n}})}async requestImages({outputType:t,outputFormat:e,uploadEndpoint:n,checkNSFW:a,positivePrompt:o,negativePrompt:i,seedImage:l,maskImage:r,strength:u,height:g,width:d,model:s,steps:p,scheduler:m,seed:f,CFGScale:b,clipSkip:U,usePromptWeighting:k,promptWeighting:x,numberResults:D=1,controlNet:y,lora:S,onPartialImages:Ie,includeCost:he,customTaskUUID:fe,retry:be,refiner:h,maskMargin:Ue,outputQuality:Q},Te){let C,J,N=[],z=0,Y=be||this._globalMaxRetries;try{await this.ensureConnection();let w=null,K=null,W=[];if(l){let R=await this.uploadImage(l);if(!R)return[];w=R.imageUUID}if(r){let R=await this.uploadImage(r);if(!R)return[];K=R.imageUUID}if(y?.length)for(let R=0;R<y.length;R++){let M=y[R],{endStep:P,startStep:F,weight:G,guideImage:O,controlMode:_e,startStepPercentage:ke,endStepPercentage:Re,model:De}=M,xe=O?await this.uploadImage(O):null;W.push({guideImage:xe?.imageUUID,model:De,endStep:P,startStep:F,weight:G,...I({key:"startStepPercentage",value:ke}),...I({key:"endStepPercentage",value:Re}),controlMode:_e||"controlnet"})}return J={taskType:"imageInference",model:s,positivePrompt:o,...i?{negativePrompt:i}:{},...g?{height:g}:{},...d?{width:d}:{},numberResults:D,...S?.length?{lora:S}:{},...t?{outputType:t}:{},...e?{outputFormat:e}:{},...n?{uploadEndpoint:n}:{},...I({key:"checkNSFW",value:a}),...I({key:"strength",value:u}),...I({key:"CFGScale",value:b}),...I({key:"clipSkip",value:U}),...I({key:"maskMargin",value:Ue}),...I({key:"usePromptWeighting",value:k}),...I({key:"steps",value:p}),...x?{promptWeighting:x}:{},...W.length?{controlNet:W}:{},...f?{seed:f}:{seed:j()},...m?{scheduler:m}:{},...h?{refiner:h}:{},...I({key:"includeCost",value:he}),...w?{seedImage:w}:{},...K?{maskImage:K}:{},...Q?{outputQuality:Q}:{},...Te??{}},await _(async()=>{z++,C?.destroy();let R=this._globalImages.filter(O=>N.includes(O.taskUUID)),M=fe||T();N.push(M);let P=D-R.length,F={...J,taskUUID:M,numberResults:P};this.send(F),C=this.listenToImages({onPartialImages:Ie,taskUUID:M,groupKey:"REQUEST_IMAGES",positivePrompt:o,negativePrompt:i});let G=await this.getSimilarImages({taskUUID:N,numberResults:D,lis:C});return C.destroy(),G},{maxRetries:Y,callback:()=>{C?.destroy()}})}catch(w){if(z>=Y)return this.handleIncompleteImages({taskUUIDs:N,error:w});throw w}}async ensureConnection(){if(this.connected()||this._url===V.TEST)return;let e=2e3,n=200;try{if(this._invalidAPIkey)throw this._invalidAPIkey;return new Promise((a,o)=>{let i=0,l=30,r=T(),u,g,d=()=>{this.ensureConnectionUUID=null,clearInterval(u),clearInterval(g)};this._sdkType==="SERVER"&&(u=setInterval(async()=>{try{let s=this.connected(),p=!1;(!this.ensureConnectionUUID||r===this.ensureConnectionUUID)&&(this.ensureConnectionUUID||(this.ensureConnectionUUID=r),p=!0);let m=i%10===0&&p;s?(d(),a(!0)):i>=l?(d(),o(new Error("Retry timed out"))):(m&&this.connect(),i++)}catch(s){d(),o(s)}},e)),g=setInterval(async()=>{if(this.connected()){d(),a(!0);return}if(this._invalidAPIkey){d(),o(this._invalidAPIkey);return}},n)})}catch{throw this.ensureConnectionUUID=null,this._invalidAPIkey??"Could not connect to server. Ensure your API key is correct"}}async getSimilarImages({taskUUID:t,numberResults:e,shouldThrowError:n,lis:a}){return await v(({resolve:o,reject:i,intervalId:l})=>{let r=Array.isArray(t)?t:[t],u=this._globalImages.filter(g=>r.includes(g.taskUUID));if(this._globalError){let g=this._globalError;return this._globalError=void 0,clearInterval(l),i?.(g),!0}else if(u.length>=e)return clearInterval(l),this._globalImages=this._globalImages.filter(g=>!r.includes(g.taskUUID)),o([...u].slice(0,e)),!0},{debugKey:"getting images",shouldThrowError:n,timeoutDuration:this._timeoutDuration})}handleIncompleteImages({taskUUIDs:t,error:e}){let n=this._globalImages.filter(a=>t.includes(a.taskUUID));if(n.length>1)return this._globalImages=this._globalImages.filter(a=>!t.includes(a.taskUUID)),n;throw e}};var me=Oe(pe(),1),L=class extends A{constructor(t){let{shouldReconnect:e,...n}=t;super(n),this._ws=new me.default(this._url),this.connect()}};import Ze from"ws";var E=class extends A{constructor(e){super(e);this._instantiated=!1;this._listeners=[];this._reconnectingIntervalId=null;this.send=e=>{this._ws.send(JSON.stringify([e]))};this.resetConnection=()=>{this._ws&&(this._listeners.forEach(e=>{e?.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 Ze(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:e=>{if(e?.error){this._invalidAPIkey=e;return}this._connectionSessionUUID=e?.authentication?.[0]?.connectionSessionUUID,this._invalidAPIkey=void 0}})}),this._ws.on("message",(e,n)=>{let a=n?e:e?.toString();if(!a)return;let o=JSON.parse(a);this._listeners.forEach(i=>{i.listener(o)})}))}handleClose(){this._invalidAPIkey||(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 ye;typeof window>"u"?ye=E:ye=L;export{X as EControlMode,Ke as EModelArchitecture,Pe as EModelConditioning,Ee as EModelFormat,We as EModelType,Le as EOpenPosePreProcessor,Fe as EPhotoMakerEnum,te as EPreProcessor,ee as EPreProcessorGroup,q as ETaskType,$ as Environment,ye as Runware,L as RunwareClient,E as RunwareServer,B as SdkType};
2
2
  //# sourceMappingURL=index.js.map