@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.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -26
- package/dist/index.d.ts +5 -26
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/readme.md +0 -7
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
|
-
|
|
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,
|
|
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
|
|
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
|