@runware/sdk-js 1.1.48 → 1.1.49

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.
Files changed (46) hide show
  1. package/dist/index.cjs +1 -1
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.d.cts +45 -3
  4. package/dist/index.d.ts +45 -3
  5. package/dist/index.js +1 -1
  6. package/dist/index.js.map +1 -1
  7. package/package.json +1 -1
  8. package/readme.md +13 -6
  9. package/dist/esm/Runware/Runware-base.d.ts +0 -70
  10. package/dist/esm/Runware/Runware-base.js +0 -1002
  11. package/dist/esm/Runware/Runware-client.d.ts +0 -5
  12. package/dist/esm/Runware/Runware-client.js +0 -28
  13. package/dist/esm/Runware/Runware-server.d.ts +0 -15
  14. package/dist/esm/Runware/Runware-server.js +0 -145
  15. package/dist/esm/Runware/Runware.d.ts +0 -4
  16. package/dist/esm/Runware/Runware.js +0 -13
  17. package/dist/esm/Runware/async-retry.d.ts +0 -5
  18. package/dist/esm/Runware/async-retry.js +0 -30
  19. package/dist/esm/Runware/index.d.ts +0 -4
  20. package/dist/esm/Runware/index.js +0 -20
  21. package/dist/esm/Runware/reconnect.d.ts +0 -11
  22. package/dist/esm/Runware/reconnect.js +0 -175
  23. package/dist/esm/Runware/types.d.ts +0 -644
  24. package/dist/esm/Runware/types.js +0 -156
  25. package/dist/esm/Runware/utils.d.ts +0 -57
  26. package/dist/esm/Runware/utils.js +0 -262
  27. package/dist/esm/tests/Runware/enhance-prompt.test.d.ts +0 -1
  28. package/dist/esm/tests/Runware/enhance-prompt.test.js +0 -58
  29. package/dist/esm/tests/Runware/remove-image-background.test.d.ts +0 -1
  30. package/dist/esm/tests/Runware/remove-image-background.test.js +0 -37
  31. package/dist/esm/tests/Runware/request-image-to-text.test.d.ts +0 -1
  32. package/dist/esm/tests/Runware/request-image-to-text.test.js +0 -37
  33. package/dist/esm/tests/Runware/request-images.test.d.ts +0 -1
  34. package/dist/esm/tests/Runware/request-images.test.js +0 -84
  35. package/dist/esm/tests/Runware/runware-server.test.d.ts +0 -1
  36. package/dist/esm/tests/Runware/runware-server.test.js +0 -26
  37. package/dist/esm/tests/Runware/upload-image.test.d.ts +0 -1
  38. package/dist/esm/tests/Runware/upload-image.test.js +0 -28
  39. package/dist/esm/tests/Runware/upscale-gan.test.d.ts +0 -1
  40. package/dist/esm/tests/Runware/upscale-gan.test.js +0 -41
  41. package/dist/esm/tests/mockServer.d.ts +0 -12
  42. package/dist/esm/tests/mockServer.js +0 -38
  43. package/dist/esm/tests/script.d.ts +0 -8
  44. package/dist/esm/tests/script.js +0 -570
  45. package/dist/esm/tests/test-utils.d.ts +0 -40
  46. package/dist/esm/tests/test-utils.js +0 -45
package/dist/index.d.cts CHANGED
@@ -21,7 +21,8 @@ declare enum ETaskType {
21
21
  PROMPT_ENHANCE = "promptEnhance",
22
22
  AUTHENTICATION = "authentication",
23
23
  MODEL_UPLOAD = "modelUpload",
24
- MODEL_SEARCH = "modelSearch"
24
+ MODEL_SEARCH = "modelSearch",
25
+ VECTORIZE = "vectorize"
25
26
  }
26
27
  type RunwareBaseType = {
27
28
  apiKey: string;
@@ -226,6 +227,7 @@ interface IRemoveImageBackground extends IRequestImageToText {
226
227
  outputQuality?: number;
227
228
  retry?: number;
228
229
  }
230
+ type InputsValue = string | Record<string, unknown>;
229
231
  interface IRequestVideo extends IRequestImageToText {
230
232
  outputType?: IOutputType;
231
233
  outputFormat?: IVideoOutputFormat;
@@ -233,7 +235,7 @@ interface IRequestVideo extends IRequestImageToText {
233
235
  uploadEndpoint?: string;
234
236
  checkNSFW?: boolean;
235
237
  includeCost?: boolean;
236
- positivePrompt: string;
238
+ positivePrompt?: string;
237
239
  negativePrompt?: string;
238
240
  model: string;
239
241
  steps?: number;
@@ -245,6 +247,22 @@ interface IRequestVideo extends IRequestImageToText {
245
247
  height?: number;
246
248
  numberResults?: number;
247
249
  inputAudios?: string[];
250
+ referenceVideos?: string[];
251
+ inputs?: {
252
+ image?: InputsValue;
253
+ images?: InputsValue[];
254
+ audio?: InputsValue;
255
+ audios?: InputsValue[];
256
+ mask?: InputsValue[];
257
+ reference?: InputsValue;
258
+ references?: InputsValue[];
259
+ } & {
260
+ [key: string]: unknown;
261
+ };
262
+ speech?: {
263
+ voice: string;
264
+ text: string;
265
+ };
248
266
  skipResponse?: boolean;
249
267
  customTaskUUID?: string;
250
268
  retry?: number;
@@ -572,6 +590,23 @@ type TImageMasking = {
572
590
  customTaskUUID?: string;
573
591
  retry?: number;
574
592
  };
593
+ type TVectorize = {
594
+ model: string;
595
+ outputFormat?: string;
596
+ outputType?: string;
597
+ includeCost?: boolean;
598
+ inputs: {
599
+ image: string;
600
+ };
601
+ customTaskUUID?: string;
602
+ retry?: number;
603
+ };
604
+ type TVectorizeResponse = {
605
+ taskType: string;
606
+ taskUUID: string;
607
+ cost: number;
608
+ imageURL: string;
609
+ };
575
610
  type TImageUpload = {
576
611
  image: string;
577
612
  customTaskUUID?: string;
@@ -642,13 +677,20 @@ declare class RunwareBase {
642
677
  private listenToUpload;
643
678
  private globalListener;
644
679
  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>;
680
+ imageInference(params: IRequestImage, moreOptions?: Record<string, any>): Promise<ITextToImage[] | undefined>;
645
681
  controlNetPreProcess: ({ inputImage, preProcessorType, height, width, outputType, outputFormat, highThresholdCanny, lowThresholdCanny, includeHandsAndFaceOpenPose, includeCost, outputQuality, customTaskUUID, retry, includeGenerationTime, includePayload, }: IControlNetPreprocess) => Promise<IControlNetImage | null>;
682
+ controlNetPreprocess: (params: IControlNetPreprocess) => Promise<IControlNetImage | null>;
646
683
  requestImageToText: ({ inputImage, includeCost, customTaskUUID, retry, includePayload, includeGenerationTime, }: IRequestImageToText) => Promise<IImageToText>;
684
+ caption: (params: IRequestImageToText) => Promise<IImageToText>;
647
685
  removeImageBackground: (payload: IRemoveImageBackground) => Promise<IRemoveImage>;
686
+ removeBackground: (payload: IRemoveImageBackground) => Promise<IRemoveImage>;
687
+ vectorize: (payload: TVectorize) => Promise<TVectorizeResponse>;
648
688
  videoInference: (payload: IRequestVideo) => Promise<IVideoToImage[] | IVideoToImage>;
649
689
  getResponse: (payload: IAsyncResults) => Promise<IVideoToImage[]>;
650
690
  upscaleGan: ({ inputImage, upscaleFactor, outputType, outputFormat, includeCost, outputQuality, customTaskUUID, retry, includeGenerationTime, includePayload, }: IUpscaleGan) => Promise<IImage>;
691
+ upscale: (params: IUpscaleGan) => Promise<IImage>;
651
692
  enhancePrompt: ({ prompt, promptMaxLength, promptVersions, includeCost, customTaskUUID, retry, includeGenerationTime, includePayload, }: IPromptEnhancer) => Promise<IEnhancedPrompt[]>;
693
+ promptEnhance: (params: IPromptEnhancer) => Promise<IEnhancedPrompt[]>;
652
694
  modelUpload: (payload: TAddModel) => Promise<any>;
653
695
  photoMaker: (payload: TPhotoMaker, moreOptions?: Record<string, any>) => Promise<TPhotoMakerResponse[] | undefined>;
654
696
  modelSearch: (payload: TModelSearch) => Promise<TModelSearchResponse>;
@@ -689,4 +731,4 @@ declare class RunwareServer extends RunwareBase {
689
731
 
690
732
  declare let Runware: typeof RunwareClient | typeof RunwareServer;
691
733
 
692
- 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 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 TImageMasking, type TImageMaskingResponse, type TImageUpload, type TImageUploadResponse, type TModel, type TModelSearch, type TModelSearchResponse, type TPhotoMaker, type TPhotoMakerResponse, type TPromptWeighting, type TServerError, type UploadImageType };
734
+ 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 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 TImageMasking, type TImageMaskingResponse, type TImageUpload, type TImageUploadResponse, type TModel, type TModelSearch, type TModelSearchResponse, type TPhotoMaker, type TPhotoMakerResponse, type TPromptWeighting, type TServerError, type TVectorize, type TVectorizeResponse, type UploadImageType };
package/dist/index.d.ts CHANGED
@@ -21,7 +21,8 @@ declare enum ETaskType {
21
21
  PROMPT_ENHANCE = "promptEnhance",
22
22
  AUTHENTICATION = "authentication",
23
23
  MODEL_UPLOAD = "modelUpload",
24
- MODEL_SEARCH = "modelSearch"
24
+ MODEL_SEARCH = "modelSearch",
25
+ VECTORIZE = "vectorize"
25
26
  }
26
27
  type RunwareBaseType = {
27
28
  apiKey: string;
@@ -226,6 +227,7 @@ interface IRemoveImageBackground extends IRequestImageToText {
226
227
  outputQuality?: number;
227
228
  retry?: number;
228
229
  }
230
+ type InputsValue = string | Record<string, unknown>;
229
231
  interface IRequestVideo extends IRequestImageToText {
230
232
  outputType?: IOutputType;
231
233
  outputFormat?: IVideoOutputFormat;
@@ -233,7 +235,7 @@ interface IRequestVideo extends IRequestImageToText {
233
235
  uploadEndpoint?: string;
234
236
  checkNSFW?: boolean;
235
237
  includeCost?: boolean;
236
- positivePrompt: string;
238
+ positivePrompt?: string;
237
239
  negativePrompt?: string;
238
240
  model: string;
239
241
  steps?: number;
@@ -245,6 +247,22 @@ interface IRequestVideo extends IRequestImageToText {
245
247
  height?: number;
246
248
  numberResults?: number;
247
249
  inputAudios?: string[];
250
+ referenceVideos?: string[];
251
+ inputs?: {
252
+ image?: InputsValue;
253
+ images?: InputsValue[];
254
+ audio?: InputsValue;
255
+ audios?: InputsValue[];
256
+ mask?: InputsValue[];
257
+ reference?: InputsValue;
258
+ references?: InputsValue[];
259
+ } & {
260
+ [key: string]: unknown;
261
+ };
262
+ speech?: {
263
+ voice: string;
264
+ text: string;
265
+ };
248
266
  skipResponse?: boolean;
249
267
  customTaskUUID?: string;
250
268
  retry?: number;
@@ -572,6 +590,23 @@ type TImageMasking = {
572
590
  customTaskUUID?: string;
573
591
  retry?: number;
574
592
  };
593
+ type TVectorize = {
594
+ model: string;
595
+ outputFormat?: string;
596
+ outputType?: string;
597
+ includeCost?: boolean;
598
+ inputs: {
599
+ image: string;
600
+ };
601
+ customTaskUUID?: string;
602
+ retry?: number;
603
+ };
604
+ type TVectorizeResponse = {
605
+ taskType: string;
606
+ taskUUID: string;
607
+ cost: number;
608
+ imageURL: string;
609
+ };
575
610
  type TImageUpload = {
576
611
  image: string;
577
612
  customTaskUUID?: string;
@@ -642,13 +677,20 @@ declare class RunwareBase {
642
677
  private listenToUpload;
643
678
  private globalListener;
644
679
  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>;
680
+ imageInference(params: IRequestImage, moreOptions?: Record<string, any>): Promise<ITextToImage[] | undefined>;
645
681
  controlNetPreProcess: ({ inputImage, preProcessorType, height, width, outputType, outputFormat, highThresholdCanny, lowThresholdCanny, includeHandsAndFaceOpenPose, includeCost, outputQuality, customTaskUUID, retry, includeGenerationTime, includePayload, }: IControlNetPreprocess) => Promise<IControlNetImage | null>;
682
+ controlNetPreprocess: (params: IControlNetPreprocess) => Promise<IControlNetImage | null>;
646
683
  requestImageToText: ({ inputImage, includeCost, customTaskUUID, retry, includePayload, includeGenerationTime, }: IRequestImageToText) => Promise<IImageToText>;
684
+ caption: (params: IRequestImageToText) => Promise<IImageToText>;
647
685
  removeImageBackground: (payload: IRemoveImageBackground) => Promise<IRemoveImage>;
686
+ removeBackground: (payload: IRemoveImageBackground) => Promise<IRemoveImage>;
687
+ vectorize: (payload: TVectorize) => Promise<TVectorizeResponse>;
648
688
  videoInference: (payload: IRequestVideo) => Promise<IVideoToImage[] | IVideoToImage>;
649
689
  getResponse: (payload: IAsyncResults) => Promise<IVideoToImage[]>;
650
690
  upscaleGan: ({ inputImage, upscaleFactor, outputType, outputFormat, includeCost, outputQuality, customTaskUUID, retry, includeGenerationTime, includePayload, }: IUpscaleGan) => Promise<IImage>;
691
+ upscale: (params: IUpscaleGan) => Promise<IImage>;
651
692
  enhancePrompt: ({ prompt, promptMaxLength, promptVersions, includeCost, customTaskUUID, retry, includeGenerationTime, includePayload, }: IPromptEnhancer) => Promise<IEnhancedPrompt[]>;
693
+ promptEnhance: (params: IPromptEnhancer) => Promise<IEnhancedPrompt[]>;
652
694
  modelUpload: (payload: TAddModel) => Promise<any>;
653
695
  photoMaker: (payload: TPhotoMaker, moreOptions?: Record<string, any>) => Promise<TPhotoMakerResponse[] | undefined>;
654
696
  modelSearch: (payload: TModelSearch) => Promise<TModelSearchResponse>;
@@ -689,4 +731,4 @@ declare class RunwareServer extends RunwareBase {
689
731
 
690
732
  declare let Runware: typeof RunwareClient | typeof RunwareServer;
691
733
 
692
- 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 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 TImageMasking, type TImageMaskingResponse, type TImageUpload, type TImageUploadResponse, type TModel, type TModelSearch, type TModelSearchResponse, type TPhotoMaker, type TPhotoMakerResponse, type TPromptWeighting, type TServerError, type UploadImageType };
734
+ 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 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 TImageMasking, type TImageMaskingResponse, type TImageUpload, type TImageUploadResponse, type TModel, type TModelSearch, type TModelSearchResponse, type TPhotoMaker, type TPhotoMakerResponse, type TPromptWeighting, type TServerError, type TVectorize, type TVectorizeResponse, 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 je=(i,t)=>()=>(t||i((t={exports:{}}).exports,t),t.exports);var Qe=(i,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of qe(t))!He.call(i,r)&&r!==e&&ue(i,r,{get:()=>t[r],enumerable:!(n=Be(t,r))||n.enumerable});return i};var Je=(i,t,e)=>(e=i!=null?Ge(Ve(i)):{},Qe(t||!i||!i.__esModule?ue(e,"default",{value:i,enumerable:!0}):e,i));var ve=je((ln,xe)=>{"use strict";var ke=i=>i&&i.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=(i,t,e)=>{Object.defineProperty(t,e,{get:()=>i[e],set:n=>{i[e]=n},enumerable:!0,configurable:!0})},Re=i=>i.minReconnectionDelay+Math.random()*i.minReconnectionDelay,it=(i,t)=>{let e=t*i.reconnectionDelayGrowFactor;return e>i.maxReconnectionDelay?i.maxReconnectionDelay:e},lt=["onopen","onclose","onmessage","onerror"],ut=(i,t,e)=>{Object.keys(e).forEach(n=>{e[n].forEach(([r,a])=>{i.addEventListener(n,r,a)})}),t&&lt.forEach(n=>{i[n]=t[n]})},De=function(i,t,e={}){let n,r,a=0,u=0,c=!0,s={};if(!(this instanceof De))throw new TypeError("Failed to construct 'ReconnectingWebSocket': Please use the 'new' operator");let d=at();if(Object.keys(d).filter(l=>e.hasOwnProperty(l)).forEach(l=>d[l]=e[l]),!ke(d.constructor))throw new TypeError("Invalid WebSocket constructor. Set `options.constructor`");let p=d.debug?(...l)=>console.log("RWS:",...l):()=>{},g=(l,y)=>setTimeout(()=>{let I=new Error(y);I.code=l,Array.isArray(s.error)&&s.error.forEach(([f])=>f(I)),n.onerror&&n.onerror(I)},0),o=()=>{if(p("close"),u++,p("retries count:",u),u>d.maxRetries){g("EHOSTDOWN","Too many failed connection attempts");return}a?a=it(d,a):a=Re(d),p("reconnectDelay:",a),c&&setTimeout(m,a)},m=()=>{p("connect");let l=n;n=new d.constructor(i,t),r=setTimeout(()=>{p("timeout"),n.close(),g("ETIMEDOUT","Connection timeout")},d.connectionTimeout),p("bypass properties");for(let y in n)["addEventListener","removeEventListener","close","send"].indexOf(y)<0&&ot(n,this,y);n.addEventListener("open",()=>{clearTimeout(r),p("open"),a=Re(d),p("reconnectDelay:",a),u=0}),n.addEventListener("close",o),ut(n,l,s)};p("init"),m(),this.close=(l=1e3,y="",{keepClosed:I=!1,fastClose:f=!0,delay:k=0}={})=>{if(k&&(a=k),c=!I,n.close(l,y),f){let _={code:l,reason:y,wasClean:!0};o(),Array.isArray(s.close)&&s.close.forEach(([U,b])=>{U(_),n.removeEventListener("close",U,b)}),n.onclose&&(n.onclose(_),n.onclose=null)}},this.send=l=>{n.send(l)},this.addEventListener=(l,y,I)=>{Array.isArray(s[l])?s[l].some(([f])=>f===y)||s[l].push([y,I]):s[l]=[[y,I]],n.addEventListener(l,y,I)},this.removeEventListener=(l,y,I)=>{Array.isArray(s[l])&&(s[l]=s[l].filter(([f])=>f!==y)),n.removeEventListener(l,y,I)}};xe.exports=De});var ce=(n=>(n.PRODUCTION="PRODUCTION",n.DEVELOPMENT="DEVELOPMENT",n.TEST="TEST",n))(ce||{}),J=(e=>(e.CLIENT="CLIENT",e.SERVER="SERVER",e))(J||{}),$=(l=>(l.IMAGE_INFERENCE="imageInference",l.IMAGE_UPLOAD="imageUpload",l.IMAGE_UPSCALE="imageUpscale",l.IMAGE_BACKGROUND_REMOVAL="imageBackgroundRemoval",l.VIDEO_INFERENCE="videoInference",l.GET_RESPONSE="getResponse",l.PHOTO_MAKER="photoMaker",l.IMAGE_CAPTION="imageCaption",l.IMAGE_CONTROL_NET_PRE_PROCESS="imageControlNetPreProcess",l.IMAGE_MASKING="imageMasking",l.PROMPT_ENHANCE="promptEnhance",l.AUTHENTICATION="authentication",l.MODEL_UPLOAD="modelUpload",l.MODEL_SEARCH="modelSearch",l))($||{}),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=(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))(ge||{}),$e=(a=>(a.openpose="openpose",a.openpose_face="openpose_face",a.openpose_faceonly="openpose_faceonly",a.openpose_full="openpose_full",a.openpose_hand="openpose_hand",a))($e||{}),ze=(e=>(e.safetensors="safetensors",e.pickletensor="pickletensor",e))(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=(g=>(g.NoStyle="No style",g.Cinematic="Cinematic",g.DisneyCharacter="Disney Character",g.DigitalArt="Digital Art",g.Photographic="Photographic",g.FantasyArt="Fantasy art",g.Neonpunk="Neonpunk",g.Enhance="Enhance",g.ComicBook="Comic book",g.Lowpoly="Lowpoly",g.LineArt="Line art",g))(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=(i,t)=>{if(i==null)return;let e=i.indexOf(t);e!==-1&&i.splice(e,1)},S=(i,{debugKey:t="debugKey",timeoutDuration:e=K,shouldThrowError:n=!0,pollingInterval:r=me})=>(e=e<P?P:e,new Promise((a,u)=>{let c=setTimeout(()=>{s&&(clearInterval(s),n&&u(`Response could not be received from server for ${t}`)),clearTimeout(c)},e),s=setInterval(async()=>{i({resolve:a,reject:u,intervalId:s})&&(clearInterval(s),clearTimeout(c))},r)})),Ie=i=>new Promise(t=>{let e=new FileReader;e.readAsDataURL(i),e.onload=function(){t(e.result)}}),R=()=>tt(),Y=i=>nt(i);var he=({key:i,data:t,useZero:e=!0,shouldReturnString:n=!1})=>i.split(/\.|\[/).map(u=>u.replace(/\]$/,"")).reduce((u,c)=>{let s=e?0:void 0,d=u?.[c];if(!d)return s;if(Array.isArray(d)&&/^\d+$/.test(c)){let p=parseInt(c,10);return p>=0&&p<d.length?u[c]=d[p]:u[c]??s}else return u[c]??s},t||{})??{},fe=(i,t=1e3)=>new Promise(e=>setTimeout(e,i*t));var be=(i,t)=>i.filter(e=>e.key!==t.key);var T=({key:i,value:t})=>t||t===0||t===!1?{[i]:t}:{},st=(i,t)=>Math.floor(Math.random()*(t-i+1))+i,Te=()=>st(1,Number.MAX_SAFE_INTEGER),Ue=(i,{debugKey:t="debugKey",timeoutDuration:e=K,shouldThrowError:n=!0,pollingInterval:r=me})=>(e=e<P?P:e,new Promise((a,u)=>{let c=setTimeout(()=>{s&&(clearInterval(s),n&&u(`Response could not be received from server for ${t}`)),clearTimeout(c)},e),s=setInterval(async()=>{try{await i({resolve:a,reject:u,intervalId:s})&&(clearInterval(s),clearTimeout(c))}catch(d){clearInterval(s),clearTimeout(c),u(d)}},r)})),_e=i=>typeof i=="string"&&(i.startsWith("http:")||i.startsWith("https:"));var x=async(i,t={})=>{let{delayInSeconds:e=1,callback:n}=t,r=t.maxRetries??1;for(;r;)try{return await i()}catch(a){if(n?.(),a?.error)throw a;if(r--,r>0)await fe(e),await x(i,{...t,maxRetries:r});else throw a}};var A=class{constructor({apiKey:t,url:e=z.PRODUCTION,shouldReconnect:n=!0,globalMaxRetries:r=2,timeoutDuration:a=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=t=>{this._ws.send(JSON.stringify([t]))};this.uploadImage=async t=>{try{return await x(async()=>{let e=R();if(typeof t=="string"&&Y(t))return{imageURL:t,imageUUID:t,taskUUID:e,taskType:"imageUpload"};let n=typeof t=="string"?t:await Ie(t);return{imageURL:n,imageUUID:n,taskUUID:e,taskType:"imageUpload"}})}catch(e){throw e}};this.controlNetPreProcess=async({inputImage:t,preProcessorType:e,height:n,width:r,outputType:a,outputFormat:u,highThresholdCanny:c,lowThresholdCanny:s,includeHandsAndFaceOpenPose:d,includeCost:p,outputQuality:g,customTaskUUID:o,retry:m,includeGenerationTime:l,includePayload:y})=>{let I=m||this._globalMaxRetries,f,k=Date.now();try{return await x(async()=>{await this.ensureConnection();let _=await this.uploadImage(t);if(!_?.imageUUID)return null;let U=o||R(),b={inputImage:_.imageUUID,taskType:"imageControlNetPreProcess",taskUUID:U,preProcessorType:e,...T({key:"height",value:n}),...T({key:"width",value:r}),...T({key:"outputType",value:a}),...T({key:"outputFormat",value:u}),...T({key:"includeCost",value:p}),...T({key:"highThresholdCanny",value:c}),...T({key:"lowThresholdCanny",value:s}),...T({key:"includeHandsAndFaceOpenPose",value:d}),...g?{outputQuality:g}:{}};this.send({...b}),f=this.globalListener({taskUUID:U});let O=await S(({resolve:G,reject:B})=>{let v=this.getSingleMessage({taskUUID:U});if(v){if(v?.error)return B(v),!0;if(v)return G(v),!0}},{debugKey:"unprocessed-image",timeoutDuration:this._timeoutDuration});return f.destroy(),this.insertAdditionalResponse({response:O,payload:y?b:void 0,startTime:l?k:void 0}),O},{maxRetries:I,callback:()=>{f?.destroy()}})}catch(_){throw _}};this.requestImageToText=async({inputImage:t,includeCost:e,customTaskUUID:n,retry:r,includePayload:a,includeGenerationTime:u})=>{let c=r||this._globalMaxRetries,s,d=Date.now();try{return await x(async()=>{await this.ensureConnection();let p=t?await this.uploadImage(t):null,g=n||R(),o={taskUUID:g,taskType:"imageCaption",inputImage:p?.imageUUID,...T({key:"includeCost",value:e})};this.send(o),s=this.globalListener({taskUUID:g});let m=await S(({resolve:l,reject:y})=>{let I=this.getSingleMessage({taskUUID:g});if(I){if(I?.error)return y(I),!0;if(I)return delete this._globalMessages[g],l(I),!0}},{debugKey:"remove-image-background",timeoutDuration:this._timeoutDuration});return s.destroy(),this.insertAdditionalResponse({response:m,payload:a?o:void 0,startTime:u?d:void 0}),m},{maxRetries:c,callback:()=>{s?.destroy()}})}catch(p){throw p}};this.removeImageBackground=async t=>this.baseSingleRequest({payload:{...t,taskType:"imageBackgroundRemoval"},debugKey:"remove-image-background"});this.videoInference=async t=>{let{skipResponse:e,inputAudios:n,...r}=t;try{if(n?.length){for(let d of n)if(!_e(d)&&!Y(d))throw new Error(`Invalid audio source: "${d}". Only public URLs or media UUIDs are supported for audio.`)}let a=await this.baseSingleRequest({payload:{...r,...n?.length?{inputAudios:n}:{},deliveryMethod:"async",taskType:"videoInference"},debugKey:"video-inference"});if(e)return a;let u=a?.taskUUID,c=t?.numberResults??1,s=new Map;return await Ue(async({resolve:d,reject:p})=>{try{let g=await this.getResponse({taskUUID:u});for(let m of g||[])m.videoUUID&&s.set(m.videoUUID,m);return s.size===c?(d(Array.from(s.values())),!0):!1}catch(g){return p(g),!0}},{debugKey:"async-response",pollingInterval:2*1e3,timeoutDuration:10*60*1e3}),Array.from(s.values())}catch(a){throw a}};this.getResponse=async t=>{let e=t.taskUUID;return this.baseSingleRequest({payload:{...t,customTaskUUID:e,taskType:"getResponse"},isMultiple:!0,debugKey:"async-results"})};this.upscaleGan=async({inputImage:t,upscaleFactor:e,outputType:n,outputFormat:r,includeCost:a,outputQuality:u,customTaskUUID:c,retry:s,includeGenerationTime:d,includePayload:p})=>{let g=s||this._globalMaxRetries,o,m=Date.now();try{return await x(async()=>{await this.ensureConnection();let l;l=await this.uploadImage(t);let y=c||R(),I={taskUUID:y,inputImage:l?.imageUUID,taskType:"imageUpscale",upscaleFactor:e,...T({key:"includeCost",value:a}),...n?{outputType:n}:{},...u?{outputQuality:u}:{},...r?{outputFormat:r}:{}};this.send(I),o=this.globalListener({taskUUID:y});let f=await S(({resolve:k,reject:_})=>{let U=this.getSingleMessage({taskUUID:y});if(U){if(U?.error)return _(U),!0;if(U)return delete this._globalMessages[y],k(U),!0}},{debugKey:"upscale-gan",timeoutDuration:this._timeoutDuration});return o.destroy(),this.insertAdditionalResponse({response:f,payload:p?I:void 0,startTime:d?m:void 0}),f},{maxRetries:g,callback:()=>{o?.destroy()}})}catch(l){throw l}};this.enhancePrompt=async({prompt:t,promptMaxLength:e=380,promptVersions:n=1,includeCost:r,customTaskUUID:a,retry:u,includeGenerationTime:c,includePayload:s})=>{let d=u||this._globalMaxRetries,p,g=Date.now();try{return await x(async()=>{await this.ensureConnection();let o=a||R(),m={prompt:t,taskUUID:o,promptMaxLength:e,promptVersions:n,...T({key:"includeCost",value:r}),taskType:"promptEnhance"};this.send(m),p=this.globalListener({taskUUID:o});let l=await S(({resolve:y,reject:I})=>{let f=this._globalMessages[o];if(f?.error)return I(f),!0;if(f?.length>=n)return delete this._globalMessages[o],y(f),!0},{debugKey:"enhance-prompt",timeoutDuration:this._timeoutDuration});return p.destroy(),this.insertAdditionalResponse({response:l,payload:s?m:void 0,startTime:c?g:void 0}),l},{maxRetries:d,callback:()=>{p?.destroy()}})}catch(o){throw o}};this.modelUpload=async t=>{let{onUploadStream:e,retry:n,customTaskUUID:r,...a}=t,u=n||this._globalMaxRetries,c;try{return await x(async()=>{await this.ensureConnection();let s=r||R();this.send({...a,taskUUID:s,taskType:"modelUpload"});let d,p;return c=this.listenToUpload({taskUUID:s,onUploadStream:(o,m)=>{e?.(o,m),o?.status==="ready"?d=o:m&&(p=m)}}),await S(({resolve:o,reject:m})=>{if(d)return o(d),!0;if(p)return m(p),!1},{shouldThrowError:!1,timeoutDuration:60*60*1e3})},{maxRetries:u,callback:()=>{c?.destroy()}})}catch(s){throw s}};this.photoMaker=async(t,e)=>{let{onPartialImages:n,retry:r,customTaskUUID:a,numberResults:u,includeGenerationTime:c,includePayload:s,...d}=t,p=r||this._globalMaxRetries,g,o=[],m=0,l=Date.now();try{return await x(async()=>{await this.ensureConnection(),m++;let y=this._globalImages.filter(U=>o.includes(U.taskUUID)),I=a||R();o.push(I);let f=u-y.length,k={...d,...d.seed?{seed:d.seed}:{seed:Te()},...e??{},taskUUID:I,taskType:"photoMaker",numberResults:u};this.send({...k,numberResults:f}),g=this.listenToImages({onPartialImages:n,taskUUID:I,groupKey:"REQUEST_IMAGES",requestPayload:s?k:void 0,startTime:c?l:void 0});let _=await this.getSimilarImages({taskUUID:o,numberResults:u,lis:g});return g.destroy(),_},{maxRetries:p,callback:()=>{g?.destroy()}})}catch(y){if(y.taskUUID)throw y;if(m>=p)return this.handleIncompleteImages({taskUUIDs:o,error:y})}};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.imageUpload=async t=>this.baseSingleRequest({payload:{...t,taskType:"imageUpload"},debugKey:"image-upload"});this.baseSingleRequest=async({payload:t,debugKey:e,isMultiple:n})=>{let{retry:r,customTaskUUID:a,includePayload:u,includeGenerationTime:c,...s}=t,d=r||this._globalMaxRetries,p,g=Date.now();try{return await x(async()=>{await this.ensureConnection();let o=a||R(),m={...s,taskUUID:o};this.send(m),p=this.globalListener({taskUUID:o});let l=await S(({resolve:y,reject:I})=>{let f=n?this.getMultipleMessages({taskUUID:o}):this.getSingleMessage({taskUUID:o});if(f){if(f?.error)return I(f),!0;if(f)return delete this._globalMessages[o],y(f),!0}},{debugKey:e,timeoutDuration:this._timeoutDuration});return this.insertAdditionalResponse({response:l,payload:u?m:void 0,startTime:c?g:void 0}),p.destroy(),l},{maxRetries:d,callback:()=>{p?.destroy()}})}catch(o){throw o}};this.getSingleMessage=({taskUUID:t})=>{let e=this._globalMessages[t]?.[0],n=this._globalMessages[t];return!e&&!n?null:n?.error?n:e};this.getMultipleMessages=({taskUUID:t})=>{let e=this._globalMessages[t]?.[0],n=this._globalMessages[t];return!e&&!n?null:n};this.insertAdditionalResponse=({response:t,payload:e,startTime:n})=>{if(!e&&!n)return;let r=t;r.additionalResponse={},e&&(t.additionalResponse.payload=e),n&&(t.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=t,this._url=e,this._sdkType="CLIENT",this._shouldReconnect=n,this._globalMaxRetries=r,this._timeoutDuration=a}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 r=c=>{let s=Array.isArray(c?.data)?c.data:[c.data],d=c?.[0]?.errors?c?.[0]?.errors:Array.isArray(c?.errors)?c.errors:[c.errors],p=s.filter(o=>(o?.taskUUID||o?.taskType)===n);if(d.filter(o=>(o?.taskUUID||o?.taskType)===n).length){t({error:{...d[0]??{}}});return}if(p.length){t({[n]:s});return}},a={key:n||R(),listener:r,groupKey:e};return this._listeners.push(a),{destroy:()=>{this._listeners=be(this._listeners,a)}}}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){ye(this._listeners,t)}listenToImages({onPartialImages:t,taskUUID:e,groupKey:n,requestPayload:r,startTime:a}){return this.addListener({taskUUID:e,lis:u=>{let c=u?.[e]?.filter(s=>s.taskUUID===e);u.error?(t?.(c,u?.error&&u),this._globalError=u):(c=c.map(s=>(this.insertAdditionalResponse({response:s,payload:r||void 0,startTime:a||void 0}),{...s})),t?.(c,u?.error&&u),this._sdkType==="CLIENT"?this._globalImages=[...this._globalImages,...(u?.[e]??[]).map(s=>(this.insertAdditionalResponse({response:s,payload:r||void 0,startTime:a||void 0}),{...s}))]:this._globalImages=[...this._globalImages,...c])},groupKey:n})}listenToUpload({onUploadStream:t,taskUUID:e}){return this.addListener({taskUUID:e,lis:n=>{let r=n?.error,a=n?.[e]?.[0],u=a?.taskUUID===e?a:null;(u||r)&&t?.(u||void 0,r)}})}globalListener({taskUUID:t}){return this.addListener({taskUUID:t,lis:e=>{if(e.error){this._globalMessages[t]=e;return}let n=he({key:t,data:e,useZero:!1});Array.isArray(n)?n.forEach(r=>{this._globalMessages[r.taskUUID]=[...this._globalMessages[r.taskUUID]??[],r]}):this._globalMessages[n.taskUUID]=n}})}async requestImages({outputType:t,outputFormat:e,uploadEndpoint:n,checkNSFW:r,positivePrompt:a,negativePrompt:u,seedImage:c,maskImage:s,strength:d,height:p,width:g,model:o,steps:m,scheduler:l,seed:y,CFGScale:I,clipSkip:f,usePromptWeighting:k,promptWeighting:_,numberResults:U=1,onPartialImages:b,includeCost:O,customTaskUUID:G,retry:B,refiner:v,maskMargin:Ae,outputQuality:h,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 w=null,V=null,H=[];if(c){let D=await this.uploadImage(c);if(!D)return[];w=D.imageUUID}if(s){let D=await this.uploadImage(s);if(!D)return[];V=D.imageUUID}if(q?.length)for(let D=0;D<q.length;D++){let E=q[D],{endStep:j,startStep:N,weight:Q,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:j,startStep:N,weight:Q,...T({key:"startStepPercentage",value:Pe}),...T({key:"endStepPercentage",value:Ke}),controlMode:Le||"controlnet"})}oe={taskType:"imageInference",model:o,positivePrompt:a,...u?{negativePrompt:u}:{},...p?{height:p}:{},...g?{width:g}:{},numberResults:U,...t?{outputType:t}:{},...e?{outputFormat:e}:{},...n?{uploadEndpoint:n}:{},...T({key:"checkNSFW",value:r}),...T({key:"strength",value:d}),...T({key:"CFGScale",value:I}),...T({key:"clipSkip",value:f}),...T({key:"maskMargin",value:Ae}),...T({key:"usePromptWeighting",value:k}),...T({key:"steps",value:m}),..._?{promptWeighting:_}:{},...y?{seed:y}:{},...l?{scheduler:l}:{},...v?{refiner:v}:{},...ne?{outpaint:ne}:{},...T({key:"includeCost",value:O}),...w?{seedImage:w}:{},...V?{maskImage:V}:{},...h?{outputQuality:h}:{},...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 x(async()=>{ie++,C?.destroy();let D=this._globalImages.filter(L=>M.includes(L.taskUUID)),E=G||R();M.push(E);let j=U-D.length,N={...oe,taskUUID:E,numberResults:j};this.send(N),C=this.listenToImages({onPartialImages:b,taskUUID:E,groupKey:"REQUEST_IMAGES",requestPayload:Ee?N:void 0,startTime:Ce?Ne:void 0});let Q=await this.getSimilarImages({taskUUID:M,numberResults:U,lis:C});return C.destroy(),Q},{maxRetries:le,callback:()=>{C?.destroy()}})}catch(w){if(ie>=le)return this.handleIncompleteImages({taskUUIDs:M,error:w});throw w}}async ensureConnection(){if(this.connected()||this._url===z.TEST)return;let e=2e3,n=200;try{if(this.isInvalidAPIKey())throw this._connectionError;return new Promise((r,a)=>{let u=0,c=30,s=R(),d,p,g=()=>{this.ensureConnectionUUID=null,clearInterval(d),clearInterval(p)};this._sdkType==="SERVER"&&(d=setInterval(async()=>{try{let o=this.connected(),m=!1;(!this.ensureConnectionUUID||s===this.ensureConnectionUUID)&&(this.ensureConnectionUUID||(this.ensureConnectionUUID=s),m=!0);let l=u%10===0&&m;o?(g(),r(!0)):u>=c?(g(),a(new Error("Retry timed out"))):(l&&this.connect(),u++)}catch(o){g(),a(o)}},e)),p=setInterval(async()=>{if(this.connected()){g(),r(!0);return}if(this.isInvalidAPIKey()){g(),a(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:r}){return await S(({resolve:a,reject:u,intervalId:c})=>{let s=Array.isArray(t)?t:[t],d=this._globalImages.filter(p=>s.includes(p.taskUUID));if(this._globalError){let p=this._globalError;return this._globalError=void 0,clearInterval(c),u?.(p),!0}else if(d.length>=e)return clearInterval(c),this._globalImages=this._globalImages.filter(p=>!s.includes(p.taskUUID)),a([...d].slice(0,e)),!0},{debugKey:"getting images",shouldThrowError:n,timeoutDuration:this._timeoutDuration})}handleIncompleteImages({taskUUIDs:t,error:e}){let n=this._globalImages.filter(r=>t.includes(r.taskUUID));if(n.length>1)return this._globalImages=this._globalImages.filter(r=>!t.includes(r.taskUUID)),n;throw e}};var Se=Je(ve(),1),W=class extends A{constructor(t){let{shouldReconnect:e,...n}=t;super(n),this._ws=new Se.default(this._url),this.connect()}};import ct from"ws";var F=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 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: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 r=n?e:e?.toString();if(!r)return;let a=JSON.parse(r);this._listeners.forEach(u=>{u.listener(a)})}))}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 we;typeof window>"u"?we=F:we=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,we as Runware,W as RunwareClient,F as RunwareServer,J as SdkType};
1
+ var Fe=Object.create;var le=Object.defineProperty;var Ge=Object.getOwnPropertyDescriptor;var Be=Object.getOwnPropertyNames;var Ve=Object.getPrototypeOf,qe=Object.prototype.hasOwnProperty;var He=(l,e)=>()=>(e||l((e={exports:{}}).exports,e),e.exports);var ze=(l,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Be(e))!qe.call(l,s)&&s!==t&&le(l,s,{get:()=>e[s],enumerable:!(n=Ge(e,s))||n.enumerable});return l};var je=(l,e,t)=>(t=l!=null?Fe(Ve(l)):{},ze(e||!l||!l.__esModule?le(t,"default",{value:l,enumerable:!0}):t,l));var De=He((cn,xe)=>{"use strict";var _e=l=>l&&l.CLOSING===2,st=()=>typeof WebSocket<"u"&&_e(WebSocket),rt=()=>({constructor:st()?WebSocket:null,maxReconnectionDelay:1e4,minReconnectionDelay:1500,reconnectionDelayGrowFactor:1.3,connectionTimeout:4e3,maxRetries:1/0,debug:!1}),at=(l,e,t)=>{Object.defineProperty(e,t,{get:()=>l[t],set:n=>{l[t]=n},enumerable:!0,configurable:!0})},Re=l=>l.minReconnectionDelay+Math.random()*l.minReconnectionDelay,ot=(l,e)=>{let t=e*l.reconnectionDelayGrowFactor;return t>l.maxReconnectionDelay?l.maxReconnectionDelay:t},it=["onopen","onclose","onmessage","onerror"],lt=(l,e,t)=>{Object.keys(t).forEach(n=>{t[n].forEach(([s,o])=>{l.addEventListener(n,s,o)})}),e&&it.forEach(n=>{l[n]=e[n]})},ke=function(l,e,t={}){let n,s,o=0,i=0,u=!0,r={};if(!(this instanceof ke))throw new TypeError("Failed to construct 'ReconnectingWebSocket': Please use the 'new' operator");let c=rt();if(Object.keys(c).filter(g=>t.hasOwnProperty(g)).forEach(g=>c[g]=t[g]),!_e(c.constructor))throw new TypeError("Invalid WebSocket constructor. Set `options.constructor`");let p=c.debug?(...g)=>console.log("RWS:",...g):()=>{},m=(g,d)=>setTimeout(()=>{let I=new Error(d);I.code=g,Array.isArray(r.error)&&r.error.forEach(([f])=>f(I)),n.onerror&&n.onerror(I)},0),a=()=>{if(p("close"),i++,p("retries count:",i),i>c.maxRetries){m("EHOSTDOWN","Too many failed connection attempts");return}o?o=ot(c,o):o=Re(c),p("reconnectDelay:",o),u&&setTimeout(y,o)},y=()=>{p("connect");let g=n;n=new c.constructor(l,e),s=setTimeout(()=>{p("timeout"),n.close(),m("ETIMEDOUT","Connection timeout")},c.connectionTimeout),p("bypass properties");for(let d in n)["addEventListener","removeEventListener","close","send"].indexOf(d)<0&&at(n,this,d);n.addEventListener("open",()=>{clearTimeout(s),p("open"),o=Re(c),p("reconnectDelay:",o),i=0}),n.addEventListener("close",a),lt(n,g,r)};p("init"),y(),this.close=(g=1e3,d="",{keepClosed:I=!1,fastClose:f=!0,delay:k=0}={})=>{if(k&&(o=k),u=!I,n.close(g,d),f){let R={code:g,reason:d,wasClean:!0};a(),Array.isArray(r.close)&&r.close.forEach(([U,b])=>{U(R),n.removeEventListener("close",U,b)}),n.onclose&&(n.onclose(R),n.onclose=null)}},this.send=g=>{n.send(g)},this.addEventListener=(g,d,I)=>{Array.isArray(r[g])?r[g].some(([f])=>f===d)||r[g].push([d,I]):r[g]=[[d,I]],n.addEventListener(g,d,I)},this.removeEventListener=(g,d,I)=>{Array.isArray(r[g])&&(r[g]=r[g].filter(([f])=>f!==d)),n.removeEventListener(g,d,I)}};xe.exports=ke});var ue=(n=>(n.PRODUCTION="PRODUCTION",n.DEVELOPMENT="DEVELOPMENT",n.TEST="TEST",n))(ue||{}),Q=(t=>(t.CLIENT="CLIENT",t.SERVER="SERVER",t))(Q||{}),J=(d=>(d.IMAGE_INFERENCE="imageInference",d.IMAGE_UPLOAD="imageUpload",d.IMAGE_UPSCALE="imageUpscale",d.IMAGE_BACKGROUND_REMOVAL="imageBackgroundRemoval",d.VIDEO_INFERENCE="videoInference",d.GET_RESPONSE="getResponse",d.PHOTO_MAKER="photoMaker",d.IMAGE_CAPTION="imageCaption",d.IMAGE_CONTROL_NET_PRE_PROCESS="imageControlNetPreProcess",d.IMAGE_MASKING="imageMasking",d.PROMPT_ENHANCE="promptEnhance",d.AUTHENTICATION="authentication",d.MODEL_UPLOAD="modelUpload",d.MODEL_SEARCH="modelSearch",d.VECTORIZE="vectorize",d))(J||{}),ce=(n=>(n.BALANCED="balanced",n.PROMPT="prompt",n.CONTROL_NET="controlnet",n))(ce||{}),de=(a=>(a.canny="canny",a.depth="depth",a.mlsd="mlsd",a.normalbae="normalbae",a.openpose="openpose",a.tile="tile",a.seg="seg",a.lineart="lineart",a.lineart_anime="lineart_anime",a.shuffle="shuffle",a.scribble="scribble",a.softedge="softedge",a))(de||{}),pe=(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))(pe||{}),Qe=(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))(Qe||{}),Je=(t=>(t.safetensors="safetensors",t.pickletensor="pickletensor",t))(Je||{}),Ze=(y=>(y.flux1d="flux1d",y.flux1s="flux1s",y.pony="pony",y.sdhyper="sdhyper",y.sd1x="sd1x",y.sd1xlcm="sd1xlcm",y.sd3="sd3",y.sdxl="sdxl",y.sdxllcm="sdxllcm",y.sdxldistilled="sdxldistilled",y.sdxlhyper="sdxlhyper",y.sdxllightning="sdxllightning",y.sdxlturbo="sdxlturbo",y))(Ze||{}),Ye=(n=>(n.base="base",n.inpainting="inpainting",n.pix2pix="pix2pix",n))(Ye||{}),$e=(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))($e||{}),Xe=(m=>(m.NoStyle="No style",m.Cinematic="Cinematic",m.DisneyCharacter="Disney Character",m.DigitalArt="Digital Art",m.Photographic="Photographic",m.FantasyArt="Fantasy art",m.Neonpunk="Neonpunk",m.Enhance="Enhance",m.ComicBook="Comic book",m.Lowpoly="Lowpoly",m.LineArt="Line art",m))(Xe||{});import{v4 as et,validate as tt}from"uuid";var K=6e4,P=1e3,ge=100,Z={PRODUCTION:"wss://ws-api.runware.ai/v1",TEST:"ws://localhost:8080"},me=(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=ge})=>(t=t<P?P:t,new Promise((o,i)=>{let u=setTimeout(()=>{r&&(clearInterval(r),n&&i(`Response could not be received from server for ${e}`)),clearTimeout(u)},t),r=setInterval(async()=>{l({resolve:o,reject:i,intervalId:r})&&(clearInterval(r),clearTimeout(u))},s)})),ye=l=>new Promise(e=>{let t=new FileReader;t.readAsDataURL(l),t.onload=function(){e(t.result)}}),_=()=>et(),Ie=l=>tt(l);var he=({key:l,data:e,useZero:t=!0,shouldReturnString:n=!1})=>l.split(/\.|\[/).map(i=>i.replace(/\]$/,"")).reduce((i,u)=>{let r=t?0:void 0,c=i?.[u];if(!c)return r;if(Array.isArray(c)&&/^\d+$/.test(u)){let p=parseInt(u,10);return p>=0&&p<c.length?i[u]=c[p]:i[u]??r}else return i[u]??r},e||{})??{},fe=(l,e=1e3)=>new Promise(t=>setTimeout(t,l*e));var be=(l,e)=>l.filter(t=>t.key!==e.key);var T=({key:l,value:e})=>e||e===0||e===!1?{[l]:e}:{},nt=(l,e)=>Math.floor(Math.random()*(e-l+1))+l,Te=()=>nt(1,Number.MAX_SAFE_INTEGER),Ue=(l,{debugKey:e="debugKey",timeoutDuration:t=K,shouldThrowError:n=!0,pollingInterval:s=ge})=>(t=t<P?P:t,new Promise((o,i)=>{let u=setTimeout(()=>{r&&(clearInterval(r),n&&i(`Response could not be received from server for ${e}`)),clearTimeout(u)},t),r=setInterval(async()=>{try{await l({resolve:o,reject:i,intervalId:r})&&(clearInterval(r),clearTimeout(u))}catch(c){clearInterval(r),clearTimeout(u),i(c)}},s)}));var D=async(l,e={})=>{let{delayInSeconds:t=1,callback:n}=e,s=e.maxRetries??1;for(;s;)try{return await l()}catch(o){if(n?.(),o?.error)throw o;if(s--,s>0)await fe(t),await D(l,{...e,maxRetries:s});else throw o}};var A=class{constructor({apiKey:e,url:t=Z.PRODUCTION,shouldReconnect:n=!0,globalMaxRetries:s=2,timeoutDuration:o=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=_();if(typeof e=="string"&&Ie(e))return{imageURL:e,imageUUID:e,taskUUID:t,taskType:"imageUpload"};let n=typeof e=="string"?e:await ye(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:o,outputFormat:i,highThresholdCanny:u,lowThresholdCanny:r,includeHandsAndFaceOpenPose:c,includeCost:p,outputQuality:m,customTaskUUID:a,retry:y,includeGenerationTime:g,includePayload:d})=>{let I=y||this._globalMaxRetries,f,k=Date.now();try{return await D(async()=>{await this.ensureConnection();let R=await this.uploadImage(e);if(!R?.imageUUID)return null;let U=a||_(),b={inputImage:R.imageUUID,taskType:"imageControlNetPreProcess",taskUUID:U,preProcessorType:t,...T({key:"height",value:n}),...T({key:"width",value:s}),...T({key:"outputType",value:o}),...T({key:"outputFormat",value:i}),...T({key:"includeCost",value:p}),...T({key:"highThresholdCanny",value:u}),...T({key:"lowThresholdCanny",value:r}),...T({key:"includeHandsAndFaceOpenPose",value:c}),...m?{outputQuality:m}:{}};this.send({...b}),f=this.globalListener({taskUUID:U});let O=await S(({resolve:G,reject:B})=>{let v=this.getSingleMessage({taskUUID:U});if(v){if(v?.error)return B(v),!0;if(v)return G(v),!0}},{debugKey:"unprocessed-image",timeoutDuration:this._timeoutDuration});return f.destroy(),this.insertAdditionalResponse({response:O,payload:d?b:void 0,startTime:g?k:void 0}),O},{maxRetries:I,callback:()=>{f?.destroy()}})}catch(R){throw R}};this.controlNetPreprocess=async e=>this.controlNetPreProcess(e);this.requestImageToText=async({inputImage:e,includeCost:t,customTaskUUID:n,retry:s,includePayload:o,includeGenerationTime:i})=>{let u=s||this._globalMaxRetries,r,c=Date.now();try{return await D(async()=>{await this.ensureConnection();let p=e?await this.uploadImage(e):null,m=n||_(),a={taskUUID:m,taskType:"imageCaption",inputImage:p?.imageUUID,...T({key:"includeCost",value:t})};this.send(a),r=this.globalListener({taskUUID:m});let y=await S(({resolve:g,reject:d})=>{let I=this.getSingleMessage({taskUUID:m});if(I){if(I?.error)return d(I),!0;if(I)return delete this._globalMessages[m],g(I),!0}},{debugKey:"remove-image-background",timeoutDuration:this._timeoutDuration});return r.destroy(),this.insertAdditionalResponse({response:y,payload:o?a:void 0,startTime:i?c:void 0}),y},{maxRetries:u,callback:()=>{r?.destroy()}})}catch(p){throw p}};this.caption=async e=>this.requestImageToText(e);this.removeImageBackground=async e=>this.baseSingleRequest({payload:{...e,taskType:"imageBackgroundRemoval"},debugKey:"remove-image-background"});this.removeBackground=async e=>this.removeImageBackground(e);this.vectorize=async e=>this.baseSingleRequest({payload:{...e,taskType:"vectorize"},debugKey:"vectorize"});this.videoInference=async e=>{let{skipResponse:t,inputAudios:n,referenceVideos:s,...o}=e;try{let i=await this.baseSingleRequest({payload:{...o,...n?.length&&{inputAudios:n},...s?.length&&{referenceVideos:s},deliveryMethod:"async",taskType:"videoInference"},debugKey:"video-inference"});if(t)return i;let u=i?.taskUUID,r=e?.numberResults??1,c=new Map;return await Ue(async({resolve:p,reject:m})=>{try{let a=await this.getResponse({taskUUID:u});for(let g of a||[])g.videoUUID&&c.set(g.videoUUID,g);return c.size===r?(p(Array.from(c.values())),!0):!1}catch(a){return m(a),!0}},{debugKey:"async-response",pollingInterval:2*1e3,timeoutDuration:10*60*1e3}),Array.from(c.values())}catch(i){throw i}};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:o,outputQuality:i,customTaskUUID:u,retry:r,includeGenerationTime:c,includePayload:p})=>{let m=r||this._globalMaxRetries,a,y=Date.now();try{return await D(async()=>{await this.ensureConnection();let g;g=await this.uploadImage(e);let d=u||_(),I={taskUUID:d,inputImage:g?.imageUUID,taskType:"imageUpscale",upscaleFactor:t,...T({key:"includeCost",value:o}),...n?{outputType:n}:{},...i?{outputQuality:i}:{},...s?{outputFormat:s}:{}};this.send(I),a=this.globalListener({taskUUID:d});let f=await S(({resolve:k,reject:R})=>{let U=this.getSingleMessage({taskUUID:d});if(U){if(U?.error)return R(U),!0;if(U)return delete this._globalMessages[d],k(U),!0}},{debugKey:"upscale-gan",timeoutDuration:this._timeoutDuration});return a.destroy(),this.insertAdditionalResponse({response:f,payload:p?I:void 0,startTime:c?y:void 0}),f},{maxRetries:m,callback:()=>{a?.destroy()}})}catch(g){throw g}};this.upscale=async e=>this.upscaleGan(e);this.enhancePrompt=async({prompt:e,promptMaxLength:t=380,promptVersions:n=1,includeCost:s,customTaskUUID:o,retry:i,includeGenerationTime:u,includePayload:r})=>{let c=i||this._globalMaxRetries,p,m=Date.now();try{return await D(async()=>{await this.ensureConnection();let a=o||_(),y={prompt:e,taskUUID:a,promptMaxLength:t,promptVersions:n,...T({key:"includeCost",value:s}),taskType:"promptEnhance"};this.send(y),p=this.globalListener({taskUUID:a});let g=await S(({resolve:d,reject:I})=>{let f=this._globalMessages[a];if(f?.error)return I(f),!0;if(f?.length>=n)return delete this._globalMessages[a],d(f),!0},{debugKey:"enhance-prompt",timeoutDuration:this._timeoutDuration});return p.destroy(),this.insertAdditionalResponse({response:g,payload:r?y:void 0,startTime:u?m:void 0}),g},{maxRetries:c,callback:()=>{p?.destroy()}})}catch(a){throw a}};this.promptEnhance=async e=>this.enhancePrompt(e);this.modelUpload=async e=>{let{onUploadStream:t,retry:n,customTaskUUID:s,...o}=e,i=n||this._globalMaxRetries,u;try{return await D(async()=>{await this.ensureConnection();let r=s||_();this.send({...o,taskUUID:r,taskType:"modelUpload"});let c,p;return u=this.listenToUpload({taskUUID:r,onUploadStream:(a,y)=>{t?.(a,y),a?.status==="ready"?c=a:y&&(p=y)}}),await S(({resolve:a,reject:y})=>{if(c)return a(c),!0;if(p)return y(p),!1},{shouldThrowError:!1,timeoutDuration:60*60*1e3})},{maxRetries:i,callback:()=>{u?.destroy()}})}catch(r){throw r}};this.photoMaker=async(e,t)=>{let{onPartialImages:n,retry:s,customTaskUUID:o,numberResults:i,includeGenerationTime:u,includePayload:r,...c}=e,p=s||this._globalMaxRetries,m,a=[],y=0,g=Date.now();try{return await D(async()=>{await this.ensureConnection(),y++;let d=this._globalImages.filter(U=>a.includes(U.taskUUID)),I=o||_();a.push(I);let f=i-d.length,k={...c,...c.seed?{seed:c.seed}:{seed:Te()},...t??{},taskUUID:I,taskType:"photoMaker",numberResults:i};this.send({...k,numberResults:f}),m=this.listenToImages({onPartialImages:n,taskUUID:I,groupKey:"REQUEST_IMAGES",requestPayload:r?k:void 0,startTime:u?g:void 0});let R=await this.getSimilarImages({taskUUID:a,numberResults:i,lis:m});return m.destroy(),R},{maxRetries:p,callback:()=>{m?.destroy()}})}catch(d){if(d.taskUUID)throw d;if(y>=p)return this.handleIncompleteImages({taskUUIDs:a,error:d})}};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.baseSingleRequest=async({payload:e,debugKey:t,isMultiple:n})=>{let{retry:s,customTaskUUID:o,includePayload:i,includeGenerationTime:u,...r}=e,c=s||this._globalMaxRetries,p,m=Date.now();try{return await D(async()=>{await this.ensureConnection();let a=o||_(),y={...r,taskUUID:a};this.send(y),p=this.globalListener({taskUUID:a});let g=await S(({resolve:d,reject:I})=>{let f=n?this.getMultipleMessages({taskUUID:a}):this.getSingleMessage({taskUUID:a});if(f){if(f?.error)return I(f),!0;if(f)return delete this._globalMessages[a],d(f),!0}},{debugKey:t,timeoutDuration:this._timeoutDuration});return this.insertAdditionalResponse({response:g,payload:i?y:void 0,startTime:u?m:void 0}),p.destroy(),g},{maxRetries:c,callback:()=>{p?.destroy()}})}catch(a){throw a}};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=o}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 r=Array.isArray(u?.data)?u.data:[u.data],c=u?.[0]?.errors?u?.[0]?.errors:Array.isArray(u?.errors)?u.errors:[u.errors],p=r.filter(a=>(a?.taskUUID||a?.taskType)===n);if(c.filter(a=>(a?.taskUUID||a?.taskType)===n).length){e({error:{...c[0]??{}}});return}if(p.length){e({[n]:r});return}},o={key:n||_(),listener:s,groupKey:t};return this._listeners.push(o),{destroy:()=>{this._listeners=be(this._listeners,o)}}}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){me(this._listeners,e)}listenToImages({onPartialImages:e,taskUUID:t,groupKey:n,requestPayload:s,startTime:o}){return this.addListener({taskUUID:t,lis:i=>{let u=i?.[t]?.filter(r=>r.taskUUID===t);i.error?(e?.(u,i?.error&&i),this._globalError=i):(u=u.map(r=>(this.insertAdditionalResponse({response:r,payload:s||void 0,startTime:o||void 0}),{...r})),e?.(u,i?.error&&i),this._sdkType==="CLIENT"?this._globalImages=[...this._globalImages,...(i?.[t]??[]).map(r=>(this.insertAdditionalResponse({response:r,payload:s||void 0,startTime:o||void 0}),{...r}))]:this._globalImages=[...this._globalImages,...u])},groupKey:n})}listenToUpload({onUploadStream:e,taskUUID:t}){return this.addListener({taskUUID:t,lis:n=>{let s=n?.error,o=n?.[t]?.[0],i=o?.taskUUID===t?o: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:o,negativePrompt:i,seedImage:u,maskImage:r,strength:c,height:p,width:m,model:a,steps:y,scheduler:g,seed:d,CFGScale:I,clipSkip:f,usePromptWeighting:k,promptWeighting:R,numberResults:U=1,onPartialImages:b,includeCost:O,customTaskUUID:G,retry:B,refiner:v,maskMargin:we,outputQuality:h,controlNet:V,lora:Y,embeddings:$,ipAdapters:X,providerSettings:ee,outpaint:te,acceleratorOptions:ne,advancedFeatures:se,referenceImages:re,includeGenerationTime:Ae,includePayload:Ce,...Ee},Oe){let C,ae,N=[],oe=0,ie=B||this._globalMaxRetries;try{await this.ensureConnection();let w=null,q=null,H=[];if(u){let x=await this.uploadImage(u);if(!x)return[];w=x.imageUUID}if(r){let x=await this.uploadImage(r);if(!x)return[];q=x.imageUUID}if(V?.length)for(let x=0;x<V.length;x++){let E=V[x],{endStep:z,startStep:M,weight:j,guideImage:L,controlMode:Me,startStepPercentage:Le,endStepPercentage:Pe,model:Ke}=E,We=L?await this.uploadImage(L):null;H.push({guideImage:We?.imageUUID,model:Ke,endStep:z,startStep:M,weight:j,...T({key:"startStepPercentage",value:Le}),...T({key:"endStepPercentage",value:Pe}),controlMode:Me||"controlnet"})}ae={taskType:"imageInference",model:a,positivePrompt:o,...i?{negativePrompt:i}:{},...p?{height:p}:{},...m?{width:m}:{},numberResults:U,...e?{outputType:e}:{},...t?{outputFormat:t}:{},...n?{uploadEndpoint:n}:{},...T({key:"checkNSFW",value:s}),...T({key:"strength",value:c}),...T({key:"CFGScale",value:I}),...T({key:"clipSkip",value:f}),...T({key:"maskMargin",value:we}),...T({key:"usePromptWeighting",value:k}),...T({key:"steps",value:y}),...R?{promptWeighting:R}:{},...d?{seed:d}:{},...g?{scheduler:g}:{},...v?{refiner:v}:{},...te?{outpaint:te}:{},...T({key:"includeCost",value:O}),...w?{seedImage:w}:{},...q?{maskImage:q}:{},...h?{outputQuality:h}:{},...H.length?{controlNet:H}:{},...Y?.length?{lora:Y}:{},...$?.length?{embeddings:$}:{},...X?.length?{ipAdapters:X}:{},...ee?{providerSettings:ee}:{},...ne?{acceleratorOptions:ne}:{},...se?{advancedFeatures:se}:{},...re?.length?{referenceImages:re}:{},...Ee,...Oe??{}};let Ne=Date.now();return await D(async()=>{oe++,C?.destroy();let x=this._globalImages.filter(L=>N.includes(L.taskUUID)),E=G||_();N.push(E);let z=U-x.length,M={...ae,taskUUID:E,numberResults:z};this.send(M),C=this.listenToImages({onPartialImages:b,taskUUID:E,groupKey:"REQUEST_IMAGES",requestPayload:Ce?M:void 0,startTime:Ae?Ne:void 0});let j=await this.getSimilarImages({taskUUID:N,numberResults:U,lis:C});return C.destroy(),j},{maxRetries:ie,callback:()=>{C?.destroy()}})}catch(w){if(oe>=ie)return this.handleIncompleteImages({taskUUIDs:N,error:w});throw w}}async imageInference(e,t){return this.requestImages(e,t)}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,o)=>{let i=0,u=30,r=_(),c,p,m=()=>{this.ensureConnectionUUID=null,clearInterval(c),clearInterval(p)};this._sdkType==="SERVER"&&(c=setInterval(async()=>{try{let a=this.connected(),y=!1;(!this.ensureConnectionUUID||r===this.ensureConnectionUUID)&&(this.ensureConnectionUUID||(this.ensureConnectionUUID=r),y=!0);let g=i%10===0&&y;a?(m(),s(!0)):i>=u?(m(),o(new Error("Retry timed out"))):(g&&this.connect(),i++)}catch(a){m(),o(a)}},t)),p=setInterval(async()=>{if(this.connected()){m(),s(!0);return}if(this.isInvalidAPIKey()){m(),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:e,numberResults:t,shouldThrowError:n,lis:s}){return await S(({resolve:o,reject:i,intervalId:u})=>{let r=Array.isArray(e)?e:[e],c=this._globalImages.filter(p=>r.includes(p.taskUUID));if(this._globalError){let p=this._globalError;return this._globalError=void 0,clearInterval(u),i?.(p),!0}else if(c.length>=t)return clearInterval(u),this._globalImages=this._globalImages.filter(p=>!r.includes(p.taskUUID)),o([...c].slice(0,t)),!0},{debugKey:"getting images",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 ve=je(De(),1),W=class extends A{constructor(e){let{shouldReconnect:t,...n}=e;super(n),this._ws=new ve.default(this._url),this.connect()}};import ut from"ws";var F=class extends A{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 ut(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 o=JSON.parse(s);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 Se;typeof window>"u"?Se=F:Se=W;export{ce as EControlMode,Ze as EModelArchitecture,$e as EModelConditioning,Je as EModelFormat,Ye as EModelType,Qe as EOpenPosePreProcessor,Xe as EPhotoMakerEnum,pe as EPreProcessor,de as EPreProcessorGroup,J as ETaskType,ue as Environment,Se as Runware,W as RunwareClient,F as RunwareServer,Q as SdkType};
2
2
  //# sourceMappingURL=index.js.map