@uploadista/client-core 0.1.2 → 0.1.3-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +157 -111
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +6 -6
- package/src/client/create-uploadista-client.ts +44 -6
- package/src/managers/flow-manager.ts +100 -9
- package/src/services/abort-controller-service.ts +106 -0
- package/src/upload/flow-upload.ts +25 -0
- package/src/upload/single-upload.ts +11 -0
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/types/buffered-chunk.ts","../src/chunk-buffer.ts","../src/services/abort-controller-service.ts","../src/services/http-client.ts","../src/logger.ts","../src/services/platform-service.ts","../src/auth/types.ts","../src/auth/direct-auth.ts","../src/auth/no-auth.ts","../src/auth/uploadista-cloud-auth.ts","../src/auth/auth-http-client.ts","../src/network-monitor.ts","../src/services/checksum-service.ts","../src/services/file-reader-service.ts","../src/services/fingerprint-service.ts","../src/services/id-generation-service.ts","../src/services/websocket-service.ts","../src/smart-chunker.ts","../src/services/storage-service.ts","../src/types/previous-upload.ts","../src/storage/client-storage.ts","../src/types/flow-upload-config.ts","../src/client/uploadista-api.ts","../src/error.ts","../src/services/service-container.ts","../src/types/upload-response.ts","../src/upload/chunk-upload.ts","../src/types/chunk-metrics.ts","../src/types/performance-insights.ts","../src/types/upload-session-metrics.ts","../src/upload/upload-metrics.ts","../src/upload/single-upload.ts","../src/upload/upload-manager.ts","../src/upload/upload-strategy.ts","../src/client/uploadista-websocket-manager.ts","../src/client/create-uploadista-client.ts","../src/managers/event-subscription-manager.ts","../src/types/flow-upload-options.ts","../src/managers/flow-manager.ts","../src/types/upload-options.ts","../src/managers/upload-manager.ts","../src/storage/in-memory-storage-service.ts","../src/types/flow-inputs.ts","../src/types/flow-result.ts","../src/types/flow-upload-item.ts","../src/types/multi-flow-upload-options.ts","../src/types/multi-flow-upload-state.ts","../src/types/upload-metrics.ts","../src/types/upload-result.ts"],"sourcesContent":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/types/buffered-chunk.ts","../src/chunk-buffer.ts","../src/services/abort-controller-service.ts","../src/services/http-client.ts","../src/logger.ts","../src/services/platform-service.ts","../src/auth/types.ts","../src/auth/direct-auth.ts","../src/auth/no-auth.ts","../src/auth/uploadista-cloud-auth.ts","../src/auth/auth-http-client.ts","../src/network-monitor.ts","../src/services/checksum-service.ts","../src/services/file-reader-service.ts","../src/services/fingerprint-service.ts","../src/services/id-generation-service.ts","../src/services/websocket-service.ts","../src/smart-chunker.ts","../src/services/storage-service.ts","../src/types/previous-upload.ts","../src/storage/client-storage.ts","../src/types/flow-upload-config.ts","../src/client/uploadista-api.ts","../src/error.ts","../src/services/service-container.ts","../src/types/upload-response.ts","../src/upload/chunk-upload.ts","../src/types/chunk-metrics.ts","../src/types/performance-insights.ts","../src/types/upload-session-metrics.ts","../src/upload/upload-metrics.ts","../src/upload/single-upload.ts","../src/upload/upload-manager.ts","../src/upload/upload-strategy.ts","../src/client/uploadista-websocket-manager.ts","../src/client/create-uploadista-client.ts","../src/managers/event-subscription-manager.ts","../src/types/flow-upload-options.ts","../src/managers/flow-manager.ts","../src/types/upload-options.ts","../src/managers/upload-manager.ts","../src/storage/in-memory-storage-service.ts","../src/types/flow-inputs.ts","../src/types/flow-result.ts","../src/types/flow-upload-item.ts","../src/types/multi-flow-upload-options.ts","../src/types/multi-flow-upload-state.ts","../src/types/upload-metrics.ts","../src/types/upload-result.ts"],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Base64 as e}from"js-base64";import{UploadStrategyNegotiator as t}from"@uploadista/core/upload";import{webSocketMessageSchema as n}from"@uploadista/core/types";import{EventType as r}from"@uploadista/core/flow";import i from"zod";var a=class{constructor(e){this.buffer=[],this.currentSize=0,this.lastAddTime=0,this.config={minThreshold:e.minThreshold,maxBufferSize:e.maxBufferSize??e.minThreshold*2,timeoutMs:e.timeoutMs??3e4}}add(e){return this.buffer.push(e),this.currentSize+=e.length,this.lastAddTime=Date.now(),this.shouldFlush()?this.flush():null}flush(){if(this.buffer.length===0)return null;let e=new Uint8Array(this.currentSize),t=0;for(let n of this.buffer)e.set(n,t),t+=n.length;let n={data:e,size:this.currentSize,timestamp:this.lastAddTime};return this.reset(),n}shouldFlush(){if(this.currentSize>=this.config.minThreshold||this.currentSize>=this.config.maxBufferSize)return!0;let e=Date.now()-this.lastAddTime;return this.buffer.length>0&&e>this.config.timeoutMs}getBufferInfo(){return{size:this.currentSize,chunkCount:this.buffer.length,isReadyToFlush:this.shouldFlush(),timeSinceLastAdd:Date.now()-this.lastAddTime}}hasPendingData(){return this.buffer.length>0}reset(){this.buffer=[],this.currentSize=0,this.lastAddTime=0}getMinThreshold(){return this.config.minThreshold}},o=class{constructor(e,t){this.httpClient=e,this.authManager=t}async request(e,t={}){try{let n=await this.attachAuthCredentials(t.headers||{},e);return await this.httpClient.request(e,{...t,headers:n,credentials:this.authManager.getType()===`no-auth`||this.authManager.getType()===`uploadista-cloud`?`omit`:t.credentials??`include`})}catch(e){throw e instanceof Error&&e.message.includes(`auth`),e}}async attachAuthCredentials(e,t){if(`attachCredentials`in this.authManager)return await this.authManager.attachCredentials(e);if(`attachToken`in this.authManager){let n=this.extractJobIdFromUrl(t);return await this.authManager.attachToken(e,n)}return e}extractJobIdFromUrl(e){let t=e.match(/\/api\/upload\/([^/?]+)/);if(t)return t[1];let n=e.match(/\/api\/flow\/([^/?]+)/);if(n)return n[1];let r=e.match(/\/api\/jobs\/([^/?]+)/);if(r)return r[1]}getMetrics(){return this.httpClient.getMetrics()}getDetailedMetrics(){return this.httpClient.getDetailedMetrics()}reset(){this.httpClient.reset()}async close(){await this.httpClient.close()}async warmupConnections(e){await this.httpClient.warmupConnections(e)}getAuthManager(){return this.authManager}},s=class{constructor(e){this.type=e}getType(){return this.type}},c=class extends s{constructor(e,t,n){super(`direct`),this.config=e,this.platformService=t,this.logger=n}async attachCredentials(e={}){try{if(!this.config.getCredentials)return e;let t=await Promise.resolve(this.config.getCredentials());if(!t||typeof t!=`object`)throw Error(`getCredentials() must return an object with headers and/or cookies`);let n={...e};return t.headers&&(this.validateHeaders(t.headers),Object.assign(n,t.headers)),t.cookies&&this.attachCookies(n,t.cookies),n}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to attach auth credentials: ${t}`)}}validateHeaders(e){if(typeof e!=`object`||!e)throw Error(`headers must be an object`);for(let[t,n]of Object.entries(e))if(typeof t!=`string`||typeof n!=`string`)throw Error(`Invalid header: key and value must be strings (got ${t}: ${typeof n})`)}attachCookies(e,t){if(this.platformService.isBrowser())this.logger.warn(`DirectAuth: Cookies are automatically handled by the browser. Ensure your server has proper CORS configuration with credentials support.`);else{let n=Object.entries(t).map(([e,t])=>`${e}=${t}`).join(`; `);n&&(e.Cookie=n)}}},l=class extends s{constructor(){super(`no-auth`)}async attachCredentials(e={}){return e}clearToken(e){}clearAllTokens(){}},u=class extends s{constructor(e,t){super(`uploadista-cloud`),this.config=e,this.httpClient=t,this.tokenCache=new Map,this.globalToken=null}async fetchToken(){try{let e=await this.httpClient.request(`${this.config.authServerUrl}/${this.config.clientId}`,{method:`GET`,headers:{"Content-Type":`application/json`}});if(!e.ok){let t=await e.text(),n=`Auth server returned ${e.status}`;try{let e=JSON.parse(t);n=e.error||e.message||n}catch{n=t||e.statusText||n}throw Error(n)}let t=await e.json();if(!t.token||typeof t.token!=`string`)throw Error(`Auth server response missing 'token' field or token is not a string`);return t}catch(e){throw e instanceof Error?Error(`Failed to fetch auth token: ${e.message}`):Error(`Failed to fetch auth token: ${String(e)}`)}}async getOrFetchToken(e){if(e){let t=this.tokenCache.get(e);if(t&&!this.isTokenExpired(t))return t.token}if(!e&&this.globalToken&&!this.isTokenExpired(this.globalToken))return this.globalToken.token;let t=await this.fetchToken(),n=t.expiresIn?Date.now()+t.expiresIn*1e3:void 0,r={token:t.token,expiresAt:n};return e?this.tokenCache.set(e,r):this.globalToken=r,t.token}isTokenExpired(e){return e.expiresAt?Date.now()>e.expiresAt-60*1e3:!1}async attachToken(e={},t){try{let n=await this.getOrFetchToken(t);return{...e,Authorization:`Bearer ${n}`}}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to attach auth token: ${t}`)}}clearToken(e){this.tokenCache.delete(e)}clearAllTokens(){this.tokenCache.clear(),this.globalToken=null}getCacheStats(){return{cachedJobCount:this.tokenCache.size,hasGlobalToken:this.globalToken!==null}}};const d=()=>{};function f(e,t=d){return{log:n=>{e&&t(n)},warn:n=>{e&&t(n)},error:n=>{e&&t(n)}}}var p=class{constructor(e){this.capabilities=e}getCapabilities(){return this.capabilities}validateUploadStrategy(e){switch(e){case`parallel`:return this.capabilities.supportsParallelUploads;case`single`:return!0;default:return!1}}};const m={supportsParallelUploads:!0,supportsConcatenation:!0,supportsDeferredLength:!0,supportsResumableUploads:!0,supportsTransactionalUploads:!1,maxConcurrentUploads:6,minChunkSize:64*1024,maxChunkSize:100*1024*1024,maxParts:1e4,optimalChunkSize:8*1024*1024,requiresOrderedChunks:!1};var h=class{constructor(e={}){this.samples=[],this.config={maxSamples:e.maxSamples??100,smoothingFactor:e.smoothingFactor??.1,minSamplesForCondition:e.minSamplesForCondition??5,slowThreshold:e.slowThreshold??50*1024,fastThreshold:e.fastThreshold??5*1024*1024,unstableThreshold:e.unstableThreshold??.5},this._currentMetrics=this.createEmptyMetrics()}addSample(e){this.samples.push(e),this.samples.length>this.config.maxSamples&&(this.samples=this.samples.slice(-this.config.maxSamples)),this.updateMetrics()}recordUpload(e,t,n,r){this.addSample({size:e,duration:t,success:n,timestamp:Date.now(),latency:r})}getCurrentMetrics(){return{...this._currentMetrics}}getNetworkCondition(){if(this.samples.length<this.config.minSamplesForCondition)return{type:`unknown`,confidence:0};let e=this.getRecentSuccessfulSamples();if(e.length<this.config.minSamplesForCondition)return{type:`unknown`,confidence:.3};let t=e.map(e=>e.size/(e.duration/1e3)),n=t.reduce((e,t)=>e+t,0)/t.length,r=t.reduce((e,t)=>e+(t-n)**2,0)/t.length,i=Math.sqrt(r)/n,a=Math.min(1,this.samples.length/(this.config.minSamplesForCondition*2));return i>this.config.unstableThreshold?{type:`unstable`,confidence:a}:n<this.config.slowThreshold?{type:`slow`,confidence:a}:n>this.config.fastThreshold?{type:`fast`,confidence:a}:{type:`slow`,confidence:a*.7}}getOptimalThroughput(){let e=this.getRecentSuccessfulSamples(10);if(e.length===0)return 0;let t=0,n=0;return e.forEach((e,r)=>{let i=r+1,a=e.size/(e.duration/1e3);n+=a*i,t+=i}),t>0?n/t:0}reset(){this.samples=[],this._currentMetrics=this.createEmptyMetrics()}getRecentSuccessfulSamples(e){let t=this.samples.filter(e=>e.success);return e?t.slice(-e):t}updateMetrics(){let e=this.samples.filter(e=>e.success),t=this.samples.length,n=e.length;if(t===0){this._currentMetrics=this.createEmptyMetrics();return}let r=e.reduce((e,t)=>e+t.size,0),i=e.reduce((e,t)=>e+t.duration,0),a=i>0?r/(i/1e3):0,o=n/t,s=1-o,c=this.samples.filter(e=>e.latency!==void 0);this._currentMetrics={averageSpeed:a,latency:c.length>0?c.reduce((e,t)=>e+(t.latency||0),0)/c.length:0,successRate:o,errorRate:s,totalRequests:t,totalBytes:r,totalTime:i}}createEmptyMetrics(){return{averageSpeed:0,latency:0,successRate:0,errorRate:0,totalRequests:0,totalBytes:0,totalTime:0}}};const g={conservative:{name:`conservative`,minChunkSize:64*1024,maxChunkSize:2*1024*1024,initialChunkSize:256*1024,adaptationRate:.1},balanced:{name:`balanced`,minChunkSize:128*1024,maxChunkSize:8*1024*1024,initialChunkSize:512*1024,adaptationRate:.2},aggressive:{name:`aggressive`,minChunkSize:256*1024,maxChunkSize:32*1024*1024,initialChunkSize:1024*1024,adaptationRate:.3}},_={conservative:{name:`s3-conservative`,minChunkSize:5*1024*1024,maxChunkSize:64*1024*1024,initialChunkSize:8*1024*1024,adaptationRate:.1},balanced:{name:`s3-balanced`,minChunkSize:5*1024*1024,maxChunkSize:128*1024*1024,initialChunkSize:16*1024*1024,adaptationRate:.2},aggressive:{name:`s3-aggressive`,minChunkSize:5*1024*1024,maxChunkSize:256*1024*1024,initialChunkSize:32*1024*1024,adaptationRate:.3}};var v=class{constructor(e,t={}){this.lastDecision=null,this.consecutiveFailures=0,this.consecutiveSuccesses=0,this.connectionMetrics=null,this.networkMonitor=e,this.config={enabled:t.enabled??!0,fallbackChunkSize:t.fallbackChunkSize??1024*1024,minChunkSize:t.minChunkSize??64*1024,maxChunkSize:t.maxChunkSize??32*1024*1024,initialChunkSize:t.initialChunkSize??512*1024,targetUtilization:t.targetUtilization??.85,adaptationRate:t.adaptationRate??.2,conservativeMode:t.conservativeMode??!1,connectionPoolingAware:t.connectionPoolingAware??!0,datastoreConstraints:t.datastoreConstraints},this.currentChunkSize=this.getEffectiveInitialChunkSize()}getEffectiveInitialChunkSize(){return this.config.datastoreConstraints?Math.max(this.config.initialChunkSize,this.config.datastoreConstraints.optimalChunkSize):this.config.initialChunkSize}applyDatastoreConstraints(e){return this.config.datastoreConstraints?Math.max(this.config.datastoreConstraints.minChunkSize,Math.min(this.config.datastoreConstraints.maxChunkSize,e)):e}getNextChunkSize(e){if(!this.config.enabled)return{size:this.config.fallbackChunkSize,strategy:`fixed`,reason:`Smart chunking disabled`,networkCondition:{type:`unknown`,confidence:0}};let t=this.networkMonitor.getNetworkCondition(),n=this.currentChunkSize,r=`adaptive`,i=``;if(t.type===`unknown`)n=this.config.initialChunkSize,r=`initial`,i=`Insufficient network data`;else{let e=this.selectStrategy(t);n=this.calculateOptimalChunkSize(t,e),r=e.name,i=`Network condition: ${t.type} (confidence: ${Math.round(t.confidence*100)}%)`}return e&&e<n&&(n=e,i+=`, limited by remaining bytes (${e})`),n=this.applyDatastoreConstraints(n),n=Math.max(this.config.minChunkSize,Math.min(this.config.maxChunkSize,n)),this.currentChunkSize=n,this.lastDecision={size:n,strategy:r,reason:i,networkCondition:t},this.lastDecision}recordChunkResult(e,t,n){this.networkMonitor.recordUpload(e,t,n),n?(this.consecutiveSuccesses++,this.consecutiveFailures=0):(this.consecutiveFailures++,this.consecutiveSuccesses=0),this.adaptChunkSize(n,t,e)}getCurrentChunkSize(){return this.currentChunkSize}getLastDecision(){return this.lastDecision}reset(){this.currentChunkSize=this.config.initialChunkSize,this.consecutiveFailures=0,this.consecutiveSuccesses=0,this.lastDecision=null,this.connectionMetrics=null}updateConnectionMetrics(e){this.connectionMetrics=e}getConnectionPoolingInsights(){if(!this.connectionMetrics||!this.config.connectionPoolingAware)return{isOptimized:!1,reuseRate:0,recommendedMinChunkSize:this.config.minChunkSize,connectionOverhead:0};let e=this.connectionMetrics.reuseRate,t=this.connectionMetrics.averageConnectionTime,n=(1-e)*t,r=Math.max(this.config.minChunkSize,Math.floor(n*1e4));return{isOptimized:e>.7,reuseRate:e,recommendedMinChunkSize:r,connectionOverhead:n}}selectStrategy(e){let t={name:`fallback`,minChunkSize:128*1024,maxChunkSize:4*1024*1024,initialChunkSize:512*1024,adaptationRate:.2},n=this.config.datastoreConstraints?.minChunkSize===5*1024*1024?_:g;if(this.config.conservativeMode)return n.conservative??t;let r;switch(e.type){case`fast`:r=e.confidence>.7?n.aggressive??t:n.balanced??t;break;case`slow`:r=n.conservative??t;break;case`unstable`:r=n.conservative??t;break;default:r=n.balanced??t}return this.config.connectionPoolingAware&&this.connectionMetrics?this.optimizeStrategyForConnectionPooling(r):r}optimizeStrategyForConnectionPooling(e){if(!this.connectionMetrics)return e;let t=this.getConnectionPoolingInsights(),n=t.reuseRate;return n>.8?{...e,name:`${e.name}-pooled-aggressive`,minChunkSize:Math.max(e.minChunkSize*.5,32*1024),adaptationRate:Math.min(e.adaptationRate*1.3,.5)}:n>.5?{...e,name:`${e.name}-pooled-moderate`,minChunkSize:Math.max(e.minChunkSize*.75,64*1024),adaptationRate:Math.min(e.adaptationRate*1.1,.4)}:{...e,name:`${e.name}-pooled-conservative`,minChunkSize:Math.max(e.minChunkSize*1.5,t.recommendedMinChunkSize),adaptationRate:e.adaptationRate*.8}}calculateOptimalChunkSize(e,t){let n=this.currentChunkSize,r=this.networkMonitor.getOptimalThroughput();if(r>0){let i=r*this.getTargetChunkDuration(e)*this.config.targetUtilization,a=t.adaptationRate;n=this.currentChunkSize*(1-a)+i*a}if(n=Math.max(t.minChunkSize,Math.min(t.maxChunkSize,n)),this.consecutiveFailures>0){let e=Math.min(.5,this.consecutiveFailures*.2);n*=1-e}else if(this.consecutiveSuccesses>2){let e=Math.min(.3,this.consecutiveSuccesses*.05);n*=1+e}return Math.round(n)}getTargetChunkDuration(e){switch(e.type){case`fast`:return 3;case`slow`:return 5;case`unstable`:return 2;default:return 3}}adaptChunkSize(e,t,n){if(!e){this.currentChunkSize=Math.max(this.config.minChunkSize,this.currentChunkSize*.8);return}let r=n/(t/1e3),i=this.networkMonitor.getCurrentMetrics();if(i.averageSpeed>0){let e=r/i.averageSpeed;e<this.config.targetUtilization*.8?this.currentChunkSize=Math.min(this.config.maxChunkSize,this.currentChunkSize*1.1):e>this.config.targetUtilization*1.2&&(this.currentChunkSize=Math.max(this.config.minChunkSize,this.currentChunkSize*.95))}}},y=class extends Error{constructor({name:e,message:t,cause:n,status:r}){super(),this.name=e,this.cause=n,this.message=t,this.status=r}isNetworkError(){return this.name===`NETWORK_ERROR`||this.name===`NETWORK_UNEXPECTED_RESPONSE`}};function b(t){return Object.entries(t).map(([t,n])=>`${t} ${e.encode(String(n))}`).join(`,`)}function x(e,t){return e>=t&&e<t+100}function S(e,{uploadLengthDeferred:t,uploadSize:n}){if(t)return null;if(n!=null)return n;let r=e;if(r==null)throw new y({name:`UPLOAD_SIZE_NOT_SPECIFIED`,message:"cannot automatically derive upload's size from input. Specify it manually using the `uploadSize` option or use the `uploadLengthDeferred` option"});return r}function C(e,t,n){if(t<=1)return[{startByte:0,endByte:e,segmentIndex:0}];let r=[];if(n){let t=0,i=0;for(;t<e;){let a=Math.min(t+n,e);r.push({startByte:t,endByte:a,segmentIndex:i}),t=a,i++}}else{let n=Math.ceil(e/t);for(let i=0;i<t;i++){let t=i*n,a=Math.min(t+n,e);t<e&&r.push({startByte:t,endByte:a,segmentIndex:i})}}return r}async function w({uploadId:e,source:t,offset:n,uploadLengthDeferred:r,abortController:i,onProgress:a,smartChunker:o,uploadistaApi:s,logger:c}){let l=n??0,u=t.size?t.size-l:void 0,d=o.getNextChunkSize(u),f=l+d.size;t.size&&(f===1/0||f>t.size)&&!r&&(f=t.size);let{value:p,size:m,done:h}=await t.slice(l,f),g=m??0,_=Date.now();r&&h&&(t.size=n+g);let v=n+g;if(!r&&h&&v!==t.size)throw new y({name:`WRONG_UPLOAD_SIZE`,message:`upload was configured with a size of ${m} bytes, but the source is done after ${v} bytes`});let b=await s.uploadChunk(e,p,{onProgress:(t,n)=>{a?.(e,t,n)},abortController:i}),x=Date.now()-_,S=b.status>=200&&b.status<300;return o.recordChunkResult(g,x,S),c.log(`Chunk upload ${S?`succeeded`:`failed`}: ${g} bytes in ${x}ms (${d.strategy} strategy)`),b}function T(e,t,n,r,i){return r==null||n>=r.length||!t.isNetworkError()?!1:i?i(t,n):E(e,t)}function E(e,t){let n=t.status??0;return(!x(n,400)||n===409||n===423)&&e.isOnline()}async function D({source:e,flowConfig:t,uploadistaApi:n,logger:r,platformService:i,openWebSocket:a,closeWebSocket:o,...s}){let{flowId:c,storageId:l}=t,{flow:u}=await n.getFlow(c),d=u.nodes.find(e=>e.type===`input`);if(!d){let e=new y({name:`FLOW_INCOMPATIBLE`,message:`Flow ${c} does not have a streaming input node. The flow must contain a node with type "input" to support flow uploads.`});throw s.onError?.(e),e}let f=d.id,p={originalName:e.name??`unknown`,mimeType:e.type??`application/octet-stream`,size:e.size??0,...t.metadata};r.log(`Starting flow upload for flow ${c}, node ${f}`);let{status:m,job:h}=await n.runFlow(c,l,{[f]:{operation:`init`,storageId:l,metadata:p}}),g=h.id;if(!x(m,200)||!g){let e=new y({name:`FLOW_INIT_FAILED`,message:`Failed to initialize flow upload`});throw s.onError?.(e),e}s.onJobStart?.(g),r.log(`Flow job ${g} created, opening WebSocket`),a(g),r.log(`Waiting for upload ID from node`);let _=0,v=await n.getJobStatus(g);for(;v.status!==`paused`&&_<60;)await new Promise(e=>i.setTimeout(e,500)),v=await n.getJobStatus(g),_++;if(v.status!==`paused`){let e=new y({name:`FLOW_TIMEOUT`,message:`Flow did not pause after init (status: ${v.status})`});throw s.onError?.(e),e}let b=v.tasks.find(e=>e.nodeId===f)?.result;if(!b?.id){let e=new y({name:`FLOW_NO_UPLOAD_ID`,message:`Flow did not return upload ID after init`});throw s.onError?.(e),e}return r.log(`Upload ID received: ${b.id}`),s.onStart?.({uploadId:b.id,size:e.size??null}),{jobId:g,uploadFile:b,inputNodeId:f}}async function O({jobId:e,uploadFile:t,inputNodeId:n,offset:r,source:i,retryAttempt:a=0,abortController:o,retryDelays:s,smartChunker:c,uploadistaApi:l,logger:u,smartChunking:d,metrics:f,platformService:p,onRetry:m,...h}){let g=r,_=r;try{let g=i.size?i.size-r:void 0,v=c.getNextChunkSize(g).size,b=Math.min(r+v,i.size??0),x=await i.slice(r,b);if(!x||!x.value)throw new y({name:`NETWORK_ERROR`,message:`Failed to read chunk from file`});let S=x.value,C=Date.now(),w=await l.uploadChunk(t.id,S,{abortController:o}),T=Date.now()-C;if(!w.upload)throw new y({name:`UPLOAD_CHUNK_FAILED`,message:`Upload chunk response missing upload data`});if(_=w.upload.offset,h.onProgress?.(t.id,_,i.size??0),h.onChunkComplete?.(_-r,r,i.size??0),d?.enabled!==!1){let e=Math.floor(r/v);f.recordChunk({chunkIndex:e,size:v,duration:T,speed:v/(T/1e3),success:!0,retryCount:a,networkCondition:c.getLastDecision()?.networkCondition?.type,chunkingStrategy:c.getLastDecision()?.strategy});let t=l.getConnectionMetrics();c.updateConnectionMetrics(t)}if(_>=(i.size??0)){if(i&&i.close(),d?.enabled!==!1){let e=f.endSession();e&&u.log(`Flow upload completed: ${e.totalSize} bytes in ${e.totalDuration}ms, avg speed: ${Math.round(e.averageSpeed/1024)}KB/s`)}u.log(`Finalizing flow upload for job ${e}`);try{await l.resumeFlow(e,n,{operation:`finalize`,uploadId:t.id},{contentType:`application/json`})}catch(t){let n=new y({name:`FLOW_FINALIZE_FAILED`,message:`Failed to finalize flow upload for job ${e}`,cause:t});throw h.onError?.(n),n}return}await O({jobId:e,uploadFile:t,inputNodeId:n,offset:_,source:i,platformService:p,retryDelays:s,smartChunker:c,uploadistaApi:l,logger:u,smartChunking:d,metrics:f,onRetry:m,abortController:o,...h})}catch(v){if(s!=null)if(r!=null&&_>g&&(a=0),T(p,v instanceof y?v:new y({name:`NETWORK_ERROR`,message:`Network error during flow upload`,cause:v}),a,s,h.onShouldRetry)){let _=s[a];g=r;let v=p.setTimeout(async()=>{await O({jobId:e,uploadFile:t,inputNodeId:n,offset:r,source:i,retryAttempt:a+1,retryDelays:s,smartChunker:c,uploadistaApi:l,logger:u,smartChunking:d,metrics:f,platformService:p,onRetry:m,abortController:o,...h})},_);m?.(v)}else throw new y({name:`UPLOAD_CHUNK_FAILED`,message:`Failed to upload chunk for job ${e} at offset ${r}`,cause:v})}}async function k(e){let{nodeId:t,jobId:n,source:r,storageId:i,metadata:a={},uploadistaApi:o,logger:s,platformService:c,callbacks:l}=e,u={originalName:r.name??`unknown`,mimeType:r.type??`application/octet-stream`,size:r.size??0,...a};s.log(`Initializing input node ${t} for job ${n}`),await o.resumeFlow(n,t,{operation:`init`,storageId:i,metadata:u},{contentType:`application/json`}),s.log(`Waiting for upload ID from node ${t}`);let d=0,f=await o.getJobStatus(n);for(;d<60;){let e=f.tasks.find(e=>e.nodeId===t);if(e?.status===`paused`&&e.result&&e.result.id){let n=e.result;return s.log(`Upload ID received for node ${t}: ${n.id}`),l?.onStart?.({uploadId:n.id,size:r.size??null}),{uploadFile:n,nodeId:t}}if(e?.status===`failed`){let e=new y({name:`FLOW_INIT_FAILED`,message:`Input node ${t} failed during initialization`});throw l?.onError?.(e),e}await new Promise(e=>c.setTimeout(e,500)),f=await o.getJobStatus(n),d++}let p=new y({name:`FLOW_TIMEOUT`,message:`Input node ${t} did not return upload ID after init`});throw l?.onError?.(p),p}async function A(e){let{nodeId:t,uploadFile:n,source:r,offset:i=0,abortController:a,retryDelays:o,smartChunker:s,uploadistaApi:c,logger:l,smartChunking:u,metrics:d,platformService:f,onRetry:p,callbacks:m}=e,h=e.retryAttempt??0,g=i,_=i;try{let o=r.size?r.size-i:void 0,f=s.getNextChunkSize(o).size,p=Math.min(i+f,r.size??0),g=await r.slice(i,p);if(!g||!g.value)throw new y({name:`NETWORK_ERROR`,message:`Failed to read chunk from file for node ${t}`});let v=g.value,b=Date.now(),x=await c.uploadChunk(n.id,v,{abortController:a}),S=Date.now()-b;if(!x.upload)throw new y({name:`UPLOAD_CHUNK_FAILED`,message:`Upload chunk response missing upload data for node ${t}`});if(_=x.upload.offset,m?.onProgress?.(n.id,_,r.size??0),m?.onChunkComplete?.(_-i,i,r.size??0),u?.enabled!==!1){let e=Math.floor(i/f);d.recordChunk({chunkIndex:e,size:f,duration:S,speed:f/(S/1e3),success:!0,retryCount:h,networkCondition:s.getLastDecision()?.networkCondition?.type,chunkingStrategy:s.getLastDecision()?.strategy});let t=c.getConnectionMetrics();s.updateConnectionMetrics(t)}if(_>=(r.size??0)){if(r.close(),u?.enabled!==!1){let e=d.endSession();e&&l.log(`Upload completed for node ${t}: ${e.totalSize} bytes in ${e.totalDuration}ms, avg speed: ${Math.round(e.averageSpeed/1024)}KB/s`)}return}await A({...e,offset:_,retryAttempt:0})}catch(n){if(o!=null)if(_>g&&(h=0),T(f,n instanceof y?n:new y({name:`NETWORK_ERROR`,message:`Network error during upload for node ${t}`,cause:n}),h,o,m?.onShouldRetry)){let t=o[h];g=i;let n=f.setTimeout(async()=>{await A({...e,offset:i,retryAttempt:h+1})},t);p?.(n)}else throw new y({name:`UPLOAD_CHUNK_FAILED`,message:`Failed to upload chunk for node ${t} at offset ${i}`,cause:n});else throw n}}async function j(e){let{nodeId:t,jobId:n,uploadId:r,uploadistaApi:i,logger:a,callbacks:o}=e;a.log(`Finalizing input node ${t} for job ${n}`);try{await i.resumeFlow(n,t,{operation:`finalize`,uploadId:r},{contentType:`application/json`}),a.log(`Input node ${t} finalized successfully`)}catch(e){let r=new y({name:`FLOW_FINALIZE_FAILED`,message:`Failed to finalize input node ${t} for job ${n}`,cause:e});throw o?.onError?.(r),r}}async function ee(e,t){return e.findUploadsByFingerprint(t)}function te(e){return{uploadId:e.uploadId??null,parallelUploadUrls:e.parallelUploadUrls,clientStorageKey:e.clientStorageKey}}async function M({clientStorage:e,fingerprint:t,size:n,metadata:r,clientStorageKey:i,storeFingerprintForResuming:a,generateId:o}){if(!a||!t||i!=null)return;let s={size:n,metadata:r,creationTime:new Date().toString(),clientStorageKey:t};return await e.addUpload(t,s,{generateId:o})}async function N(e,t){t&&await e.removeUpload(t)}async function P({uploadId:e,offset:t,source:n,uploadLengthDeferred:r,retryAttempt:i=0,abortController:a,retryDelays:o,smartChunker:s,uploadistaApi:c,logger:l,smartChunking:u,metrics:d,platformService:f,onRetry:p,...m}){let h=t,g=t;try{let h=await w({uploadId:e,source:n,offset:t,uploadLengthDeferred:r,onProgress:m.onProgress,abortController:a,smartChunker:s,uploadistaApi:c,logger:l});if(!x(h.status,200)||h.upload==null)throw new y({name:`NETWORK_UNEXPECTED_RESPONSE`,message:`Unexpected response while uploading chunk`});if(g=h.upload.offset,m.onProgress?.(e,g,h.upload.size??0),m.onChunkComplete?.(g-t,t,h.upload?.size??0),u?.enabled!==!1){let e=Math.floor(t/(g-t||1)),n=g-t,r=Date.now()-(Date.now()-100),a=s.getLastDecision();d.recordChunk({chunkIndex:e,size:n,duration:r,speed:n/(r/1e3),success:!0,retryCount:i,networkCondition:a?.networkCondition?.type,chunkingStrategy:a?.strategy});let o=c.getConnectionMetrics();s.updateConnectionMetrics(o)}if(g>=(n.size??0)){if(n&&n.close(),u?.enabled!==!1){let e=d.endSession();e&&l.log(`Upload completed: ${e.totalSize} bytes in ${e.totalDuration}ms, avg speed: ${Math.round(e.averageSpeed/1024)}KB/s`)}m.onSuccess?.(h.upload);return}await P({uploadId:e,offset:g,source:n,uploadLengthDeferred:r,retryDelays:o,smartChunker:s,platformService:f,uploadistaApi:c,logger:l,smartChunking:u,metrics:d,onRetry:p,abortController:a,...m})}catch(_){if(o!=null)if(t!=null&&g>h&&(i=0),T(f,_ instanceof y?_:new y({name:`NETWORK_ERROR`,message:`Network error`,cause:_}),i,o,m.onShouldRetry)){let g=o[i];h=t;let _=f.setTimeout(async()=>{await P({uploadId:e,offset:t,source:n,retryAttempt:i+1,uploadLengthDeferred:r,retryDelays:o,smartChunker:s,platformService:f,uploadistaApi:c,logger:l,smartChunking:u,metrics:d,onRetry:p,abortController:a,...m})},g);p?.(_)}else throw new y({name:`UPLOAD_CHUNK_FAILED`,message:`failed to upload chunk for ${e} at offset ${t}`,cause:_})}}async function F({fingerprint:e,storageId:t,source:n,uploadLengthDeferred:r,metadata:i,uploadistaApi:a,logger:o,checksumService:s,clientStorage:c,generateId:l,storeFingerprintForResuming:u,openWebSocket:d,closeWebSocket:f,computeChecksum:p=!0,checksumAlgorithm:m=`sha256`,platformService:h,...g}){if(!r&&n.size==null){let e=new y({name:`UPLOAD_SIZE_NOT_SPECIFIED`,message:`expected size to be set`});throw g.onError?.(e),e}let _;if(p&&h.isFileLike(n.input))try{o.log(`Computing file checksum...`),_=await s.computeChecksum(new Uint8Array(n.input)),o.log(`Checksum computed: ${_}`)}catch(e){o.log(`Warning: Failed to compute checksum: ${e instanceof Error?e.message:`Unknown error`}`)}let v={uploadLengthDeferred:r,storageId:t,size:n.size??0,metadata:i?b(i):void 0,fileName:n.name??void 0,type:n.type??``,lastModified:n.lastModified??void 0,checksum:_,checksumAlgorithm:_?m:void 0},{upload:S,status:C}=await a.createUpload(v);if(!x(C,200)||S==null){let e=new y({name:`NETWORK_UNEXPECTED_RESPONSE`,message:`Unexpected response while creating upload`});throw g.onError?.(e),e}if(o.log(`Created upload ${S.id}`),d(S.id),S.size===0){g.onSuccess?.(S),n&&n.close(),f(S.id);return}let w=await M({clientStorage:c,fingerprint:e,size:S.size??0,metadata:S.metadata??{},clientStorageKey:null,storeFingerprintForResuming:u,generateId:l});return g.onStart?.({uploadId:S.id,size:S.size??null}),{uploadIdStorageKey:w,uploadId:S.id,offset:S.offset}}async function I({uploadId:e,storageId:t,uploadIdStorageKey:n,fingerprint:r,source:i,uploadLengthDeferred:a,uploadistaApi:o,logger:s,platformService:c,checksumService:l,clientStorage:u,generateId:d,storeFingerprintForResuming:f,openWebSocket:p,...m}){let h=await o.getUpload(e),g=h.status;if(!x(g,200)){if(g===423){let e=new y({name:`UPLOAD_LOCKED`,message:`upload is currently locked; retry later`});throw m.onError?.(e),e}return x(g,400)&&await N(u,n),await F({platformService:c,fingerprint:r,storageId:t,source:i,uploadLengthDeferred:a,metadata:{},uploadistaApi:o,logger:s,checksumService:l,clientStorage:u,generateId:d,storeFingerprintForResuming:f,openWebSocket:p,closeWebSocket:()=>{},...m})}let _=h.upload;if(_==null){let e=new y({name:`NETWORK_UNEXPECTED_RESPONSE`,message:`Unexpected response while resuming upload`});throw m.onError?.(e),e}if(await M({clientStorage:u,fingerprint:r,size:_.size??0,metadata:_.metadata??{},clientStorageKey:n,storeFingerprintForResuming:f,generateId:d}),_.offset!==_.size)return p(_.id),{uploadId:e,uploadIdStorageKey:n,offset:_.offset}}async function ne({source:e,uploadId:t,uploadIdStorageKey:n,storageId:r,fingerprint:i,platformService:a,uploadLengthDeferred:o,uploadistaApi:s,checksumService:c,logger:l,clientStorage:u,generateId:d,storeFingerprintForResuming:f,openWebSocket:p,closeWebSocket:m,...h}){return t!=null&&n!=null?(l.log(`Resuming upload from previous id: ${t}`),await I({uploadId:t,uploadIdStorageKey:n,storageId:r,fingerprint:i,source:e,checksumService:c,uploadLengthDeferred:o,uploadistaApi:s,logger:l,platformService:a,clientStorage:u,generateId:d,storeFingerprintForResuming:f,openWebSocket:p,...h})):(l.log(`Creating a new upload`),await F({fingerprint:i,storageId:r,source:e,uploadLengthDeferred:o,metadata:{},uploadistaApi:s,logger:l,checksumService:c,platformService:a,clientStorage:u,generateId:d,storeFingerprintForResuming:f,openWebSocket:p,closeWebSocket:m,...h}))}async function re({source:e,storageId:t,fingerprint:n,uploadLengthDeferred:r,parallelUploads:i,parallelChunkSize:a,retryDelays:o,smartChunker:s,uploadistaApi:c,logger:l,checksumService:u,smartChunking:d,metrics:f,clientStorage:p,generateId:m,storeFingerprintForResuming:h,openWebSocket:g,closeWebSocket:_,terminate:v,abortControllerFactory:b,platformService:x,...S}){if(!e.size||e.size===0){S.onError?.(new y({name:`UPLOAD_SIZE_NOT_SPECIFIED`,message:`Parallel upload requires a known file size`}));return}let w=C(e.size,i,a);l.log(`Starting parallel upload with ${w.length} segments`);let T={segments:[],totalProgress:0,completed:!1,failed:!1},E=new Map,D=new Map,O=()=>{let e=Array.from(D.values()).reduce((e,t)=>e+t,0),t=Array.from(E.values()).reduce((e,t)=>e+t,0);T.totalProgress=e>0?t/e:0,S.onProgress&&e>0&&S.onProgress(`parallel-upload`,t,e)};try{let i=await Promise.all(w.map(async i=>{let a={...e,size:i.endByte-i.startByte,async slice(t,n){let r=i.startByte+(t??0),a=Math.min(i.startByte+(n??i.endByte-i.startByte),i.endByte);return await e.slice(r,a)}},o=await F({fingerprint:`${n}-segment-${i.segmentIndex}`,storageId:t,source:a,uploadLengthDeferred:r,platformService:x,metadata:{parallelUpload:`true`,segmentIndex:i.segmentIndex.toString(),totalSegments:w.length.toString(),parentFingerprint:n},checksumService:u,uploadistaApi:c,logger:l,clientStorage:p,generateId:m,storeFingerprintForResuming:h,openWebSocket:g,closeWebSocket:_,onSuccess:()=>{},onError:e=>l.log(`Segment ${i.segmentIndex} creation error: ${e}`),onStart:e=>{D.set(i.segmentIndex,e.size??0),O()}});if(!o)throw new y({name:`PARALLEL_SEGMENT_CREATION_FAILED`,message:`Failed to create upload segment ${i.segmentIndex}`});return{segment:{uploadId:o.uploadId,uploadIdStorageKey:o.uploadIdStorageKey,segmentIndex:i.segmentIndex,startByte:i.startByte,endByte:i.endByte,offset:o.offset,abortController:b.create(),retryTimeout:null},source:a}}));T.segments=i.map(e=>e.segment),S.onStart?.({uploadId:`parallel-${T.segments.map(e=>e.uploadId).join(`,`)}`,size:e.size});let a=i.map(async({segment:e,source:t})=>{try{await P({uploadId:e.uploadId,offset:e.offset,source:t,uploadLengthDeferred:r,abortController:e.abortController,retryDelays:o,smartChunker:s,uploadistaApi:c,platformService:x,logger:l,smartChunking:d,metrics:f,onProgress:(t,n,r)=>{E.set(e.segmentIndex,n),r&&D.set(e.segmentIndex,r),O()},onChunkComplete:(e,t,n)=>{S.onChunkComplete&&S.onChunkComplete(e,t,n)},onSuccess:t=>{l.log(`Segment ${e.segmentIndex} completed successfully`),E.set(e.segmentIndex,D.get(e.segmentIndex)??0),O()},onShouldRetry:(t,n)=>(l.log(`Segment ${e.segmentIndex} retry attempt ${n}: ${t}`),n<(o?.length??0)),onRetry:t=>{e.retryTimeout=t},onError:t=>{throw l.log(`Segment ${e.segmentIndex} failed: ${t}`),t}})}catch(t){throw l.log(`Segment ${e.segmentIndex} upload failed: ${t}`),new y({name:`PARALLEL_SEGMENT_UPLOAD_FAILED`,message:`Segment ${e.segmentIndex} upload failed`,cause:t})}});if(await Promise.all(a),T.completed=!0,l.log(`All parallel upload segments completed successfully`),S.onSuccess){let r={id:`parallel-${T.segments.map(e=>e.uploadId).join(`,`)}`,offset:e.size,size:e.size,storage:{id:t,type:`parallel-upload`},metadata:{parallelUpload:`true`,totalSegments:w.length.toString(),fingerprint:n}};S.onSuccess(r)}for(let e of i)e.source.close?.();return{parallelState:T,abort:async()=>{await L(T,l,v,_,x)}}}catch(e){throw T.failed=!0,T.error=e,await L(T,l,v,_,x),S.onError?.(e),e}}async function L(e,t,n,r,i){t.log(`Aborting parallel upload...`);for(let a of e.segments){a.abortController.abort(),a.retryTimeout&&=(i.clearTimeout(a.retryTimeout),null);try{await n(a.uploadId)}catch(e){t.log(`Failed to terminate segment ${a.segmentIndex}: ${e}`)}r(a.uploadId)}e.completed=!1,e.failed=!0,t.log(`Parallel upload aborted`)}async function R(e,t){return new Promise(n=>e.setTimeout(n,t))}async function z(e,t,n,r,i=0){try{if((await t.deleteUpload(e)).status===204)return;throw new y({name:`NETWORK_UNEXPECTED_RESPONSE`,message:`Unexpected response while terminating upload`})}catch(a){if(!T(n,a,i,r))throw a;return await R(n,r?.[i]??0),await z(e,t,n,r,i+1)}}async function B({uploadId:e,uploadIdStorageKey:t,retryTimeout:n,shouldTerminate:r,abortController:i,uploadistaApi:a,platformService:o,retryDelays:s,clientStorage:c}){if(i.abort(),n!=null&&o.clearTimeout(n),!(!r||e==null)&&(await z(e,a,o,s),t!=null))return N(c,t)}var V=class{constructor(e={}){this.chunkHistory=[],this.currentSession={},this.sessionStartTime=0,this.config={maxChunkHistory:e.maxChunkHistory??1e3,enableDetailedMetrics:e.enableDetailedMetrics??!0,performanceThresholds:{slowSpeed:100*1024,fastSpeed:5*1024*1024,highRetryRate:.2,...e.performanceThresholds}}}startSession(e,t,n){this.sessionStartTime=Date.now(),this.currentSession={uploadId:e,totalSize:t,chunksCompleted:0,chunksTotal:Math.ceil(t/(1024*1024)),totalDuration:0,totalRetries:0,adaptiveChunkingEnabled:n,startTime:this.sessionStartTime},this.chunkHistory=[]}recordChunk(e){let t={...e,timestamp:Date.now()};this.chunkHistory.push(t),this.chunkHistory.length>this.config.maxChunkHistory&&(this.chunkHistory=this.chunkHistory.slice(-this.config.maxChunkHistory)),this.currentSession&&t.success&&(this.currentSession.chunksCompleted=(this.currentSession.chunksCompleted||0)+1,this.currentSession.totalDuration=(this.currentSession.totalDuration||0)+t.duration,this.currentSession.totalRetries=(this.currentSession.totalRetries||0)+t.retryCount)}endSession(){if(!this.currentSession.uploadId)return null;let e=Date.now(),t=e-this.sessionStartTime,n=this.chunkHistory.filter(e=>e.success);if(n.length===0)return null;let r=n.map(e=>e.speed),i=r.reduce((e,t)=>e+t,0)/r.length,a=Math.max(...r),o=Math.min(...r),s=n.length/this.chunkHistory.length,c={uploadId:this.currentSession.uploadId||``,totalSize:this.currentSession.totalSize||0,totalDuration:t,chunksCompleted:n.length,chunksTotal:this.chunkHistory.length,averageSpeed:i,peakSpeed:a,minSpeed:o,totalRetries:this.currentSession.totalRetries||0,successRate:s,adaptiveChunkingEnabled:this.currentSession.adaptiveChunkingEnabled||!1,startTime:this.currentSession.startTime||0,endTime:e};return this.currentSession={},c}getCurrentSessionMetrics(){return{...this.currentSession}}getChunkHistory(e){let t=this.chunkHistory.slice();return e?t.slice(-e):t}getPerformanceInsights(){if(this.chunkHistory.length<5)return{overallEfficiency:0,chunkingEffectiveness:0,networkStability:0,recommendations:[`Insufficient data for analysis`],optimalChunkSizeRange:{min:256*1024,max:2*1024*1024}};let e=this.chunkHistory.filter(e=>e.success),t=e.map(e=>e.speed),n=t.length>0?t.reduce((e,t)=>e+t,0)/t.length:0,r=this.calculateVariance(t),i=Math.sqrt(r)/n,a=e.length/this.chunkHistory.length,o=Math.min(1,n/this.config.performanceThresholds.fastSpeed)*.7+a*.3,s=Math.max(0,1-Math.min(1,i));return{overallEfficiency:o,chunkingEffectiveness:this.calculateChunkingEffectiveness(e),networkStability:s,recommendations:this.generateRecommendations(n,a,i),optimalChunkSizeRange:this.calculateOptimalChunkSizeRange(e)}}exportMetrics(){return{session:this.getCurrentSessionMetrics(),chunks:this.getChunkHistory(),insights:this.getPerformanceInsights()}}reset(){this.chunkHistory=[],this.currentSession={},this.sessionStartTime=0}calculateVariance(e){if(e.length===0)return 0;let t=e.reduce((e,t)=>e+t,0)/e.length;return e.map(e=>(e-t)**2).reduce((e,t)=>e+t,0)/e.length}calculateChunkingEffectiveness(e){if(e.length<3)return .5;let t=this.groupChunksBySize(e);if(Object.keys(t).length<2)return .5;let n=Object.values(t).map(e=>{let t=e.map(e=>e.speed),n=t.reduce((e,t)=>e+t,0)/t.length,r=this.calculateVariance(t);return Math.sqrt(r)/n}),r=n.reduce((e,t)=>e+t,0)/n.length;return Math.max(0,1-Math.min(1,r))}groupChunksBySize(e){let t={};return e.forEach(e=>{let n;n=e.size<128*1024?`64KB`:e.size<256*1024?`128KB`:e.size<512*1024?`256KB`:e.size<1024*1024?`512KB`:e.size<2*1024*1024?`1MB`:e.size<4*1024*1024?`2MB`:e.size<8*1024*1024?`4MB`:`8MB+`,t[n]||(t[n]=[]);let r=t[n];r&&r.push(e)}),t}generateRecommendations(e,t,n){let r=[];return e<this.config.performanceThresholds.slowSpeed&&r.push(`Consider using smaller chunk sizes for better performance on slow connections`),e>this.config.performanceThresholds.fastSpeed&&r.push(`Network is fast - larger chunk sizes may improve efficiency`),t<.9&&r.push(`High failure rate detected - consider more conservative chunking strategy`),n>.5&&r.push(`Network appears unstable - smaller, more frequent chunks may be more reliable`),n<.2&&e>this.config.performanceThresholds.slowSpeed&&r.push(`Stable network detected - larger chunks may improve efficiency`),r.length===0&&r.push(`Performance appears optimal with current configuration`),r}calculateOptimalChunkSizeRange(e){if(e.length<5)return{min:256*1024,max:2*1024*1024};let t=e.slice().sort((e,t)=>t.speed-e.speed).slice(0,Math.ceil(e.length*.3)).map(e=>e.size),n=Math.min(...t),r=Math.max(...t);return{min:Math.max(64*1024,n),max:Math.min(32*1024*1024,r)}}};function H(e){return new t(e.getCapabilities(),t=>e.validateUploadStrategy(t))}function ie({capabilities:e,fileSize:t,chunkSize:n,parallelUploads:r,uploadLengthDeferred:i,strategyConfig:a,logger:o}){if(a?.enableCapabilityNegotiation!==!1){let i=H(new p(e)),s={fileSize:t||0,preferredStrategy:a?.preferredStrategy===`auto`?void 0:a?.preferredStrategy,preferredChunkSize:n,parallelUploads:r,minChunkSizeForParallel:a?.minFileSizeForParallel||10*1024*1024},c=i.negotiateStrategy(s);o.log(`Upload strategy negotiated: ${c.strategy}`);for(let e of c.reasoning)o.log(` - ${e}`);for(let e of c.warnings)o.log(` Warning: ${e}`);return a?.onStrategySelected?.({chosen:c.strategy,chunkSize:c.chunkSize,parallelUploads:c.parallelUploads,reasoning:c.reasoning,warnings:c.warnings}),c}else{let e=r>1&&t&&t>(a?.minFileSizeForParallel||10*1024*1024)&&!i;return{strategy:e?`parallel`:`single`,chunkSize:n,parallelUploads:e?r:1,reasoning:[`Legacy strategy selection: ${e?`parallel`:`single`}`],warnings:[]}}}function U(e,t=m,n){let r=[],i=[],a=H(new p(t)).validateConfiguration({fileSize:0,preferredStrategy:e.uploadStrategy?.preferredStrategy===`auto`?void 0:e.uploadStrategy?.preferredStrategy,preferredChunkSize:e.chunkSize,parallelUploads:e.parallelUploads});if(a.valid||r.push(...a.errors),e.parallelUploads&&e.parallelUploads<1&&r.push(`parallelUploads must be at least 1`),e.chunkSize&&e.chunkSize<1024&&i.push(`Chunk size below 1KB may impact performance`),e.uploadStrategy?.preferredStrategy===`parallel`&&!e.parallelUploads&&i.push(`Parallel strategy requested but parallelUploads not configured`),r.length>0){n.log(`Configuration validation errors:`);for(let e of r)n.log(` Error: ${e}`)}if(i.length>0){n.log(`Configuration validation warnings:`);for(let e of i)n.log(` Warning: ${e}`)}return{valid:r.length===0,errors:r,warnings:i}}function ae(e,t){let n=U(e,m,t);if(!n.valid){let e=`Upload client configuration validation failed: ${n.errors.join(`, `)}`;throw t.log(e),new y({name:`UPLOAD_SIZE_NOT_SPECIFIED`,message:e})}}const W=/^https?:\/\/.+/i;function oe(e){return G(e)?`file`:typeof e==`string`&&W.test(e)?`url`:`data`}function G(e){if(typeof e!=`object`||!e)return!1;if(typeof globalThis<`u`&&(globalThis.File&&e instanceof globalThis.File||globalThis.Blob&&e instanceof globalThis.Blob))return!0;let t=e;return(`name`in t||`type`in t||`size`in t)&&(typeof t.size==`number`||t.size===void 0)}const K=(e,t)=>e&&{FILE_NOT_FOUND:`UPLOAD_NOT_FOUND`,UPLOAD_ID_NOT_FOUND:`UPLOAD_NOT_FOUND`,FLOW_JOB_NOT_FOUND:`JOB_NOT_FOUND`,FLOW_NODE_ERROR:`FLOW_RUN_FAILED`,FLOW_STRUCTURE_ERROR:`FLOW_RUN_FAILED`,FLOW_CYCLE_ERROR:`FLOW_RUN_FAILED`,FLOW_INPUT_VALIDATION_ERROR:`FLOW_RUN_FAILED`,FLOW_OUTPUT_VALIDATION_ERROR:`FLOW_RUN_FAILED`,VALIDATION_ERROR:`CREATE_UPLOAD_FAILED`,DATASTORE_NOT_FOUND:`FLOW_RUN_FAILED`}[e]||t;function se(e,t,{httpClient:n,logger:r,authManager:i,webSocketFactory:a}){let s=i?new o(n,i):n,c=`${e}/${t}/api/upload`,l=`${e}/${t}/api/flow`,u=`${e}/${t}/api/jobs`,d=e.replace(`http`,`ws`),f=`${d}/uploadista/ws/upload`,p=`${d}/uploadista/ws/flow`,h=async(e,t)=>{if(r?.log(`Getting auth token for WebSocket (jobId: ${t})`),`attachToken`in e){r?.log(`Detected UploadistaCloudAuthManager, calling attachToken`);let n=(await e.attachToken({},t)).Authorization;if(n?.startsWith(`Bearer `))return r?.log(`Successfully extracted Bearer token from UploadistaCloudAuthManager`),n.substring(7);r?.log(`No valid Authorization header from UploadistaCloudAuthManager: ${n}`)}if(`attachCredentials`in e){r?.log(`Detected DirectAuthManager, calling attachCredentials`);let t=(await e.attachCredentials({})).Authorization;if(t)return r?.log(`Successfully extracted Authorization header from DirectAuthManager`),t.startsWith(`Bearer `)?t.substring(7):t;r?.log(`No Authorization header from DirectAuthManager`)}return r?.log(`No auth token could be extracted from auth manager`),null};return{getUpload:async e=>{let t=await s.request(`${c}/${e}`);if(!t.ok){let n=await t.json().catch(()=>({})),r=K(n.code,`UPLOAD_NOT_FOUND`),i=n.error||n.message||`Upload ${e} not found`;throw new y({name:r,message:n.code?`${i} (${n.code})`:i,status:t.status})}let n=await t.json();return{status:t.status,upload:n}},deleteUpload:async e=>{let t=await s.request(`${c}/${e}`,{method:`DELETE`});if(!t.ok){let n=await t.json().catch(()=>({})),r=K(n.code,`DELETE_UPLOAD_FAILED`),i=n.error||n.message||`Failed to delete upload ${e}`;throw new y({name:r,message:n.code?`${i} (${n.code})`:i,status:t.status})}return{status:t.status}},createUpload:async e=>{r?.log(`createUpload ${JSON.stringify(e)}`);let t=await s.request(c,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});if(!t.ok){let e=await t.json().catch(()=>({})),n=K(e.code,`CREATE_UPLOAD_FAILED`),r=e.error||e.message||`Failed to create upload`;throw new y({name:n,message:e.code?`${r} (${e.code})`:r,status:t.status})}let n=await t.json();return r?.log(JSON.stringify(n)),{status:t.status,upload:n}},uploadChunk:async(e,t,{abortController:n})=>{try{let r=await s.request(`${c}/${e}`,{method:`PATCH`,headers:{"Content-Type":`application/octet-stream`},body:t,signal:n?.signal});if(!r.ok){let e=await r.json().catch(()=>({}));throw new y({name:`NETWORK_ERROR`,message:e.error||e.message||`Unknown network error`,status:r.status})}let i=await r.json();return{status:r.status,upload:i}}catch(e){throw e instanceof y?e:new y({name:`NETWORK_ERROR`,message:`Network error`,cause:e})}},getFlow:async e=>{let t=await s.request(`${l}/${e}`);if(!t.ok){let n=await t.json().catch(()=>({})),r=K(n.code,`FLOW_NOT_FOUND`),i=n.error||n.message||`Flow ${e} not found`;throw new y({name:r,message:n.code?`${i} (${n.code})`:i,status:t.status})}let n=await t.json();return r?.log(`getFlow: ${e}`),{status:t.status,flow:n}},runFlow:async(e,t,n)=>{r?.log(`runFlow: ${e} with storage: ${t}`);let i=await s.request(`${l}/${e}/${t}`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({inputs:n})});if(!i.ok){let t=await i.json().catch(()=>({})),n=K(t.code,`FLOW_RUN_FAILED`),r=t.error||t.message||`Failed to run flow ${e}`;throw new y({name:n,message:t.code?`${r} (${t.code})`:r,status:i.status})}let a=await i.json();return r?.log(`runFlow response: ${JSON.stringify(a)}`),{status:i.status,job:a}},resumeFlow:async(e,t,n,r)=>{let i=r?.contentType||`application/json`,a;a=i===`application/octet-stream`?n:JSON.stringify({newData:n});let o=await s.request(`${u}/${e}/resume/${t}`,{method:`PATCH`,headers:{"Content-Type":i},body:a});if(!o.ok){let t=await o.json().catch(()=>({})),n=K(t.code,`FLOW_RESUMED_FAILED`),r=t.error||t.message||`Failed to resume flow for job ${e}`;throw new y({name:n,message:t.code?`${r} (${t.code})`:r,status:o.status})}return await o.json()},pauseFlow:async e=>{let t=await s.request(`${u}/${e}/pause`,{method:`POST`});if(!t.ok){let n=await t.json().catch(()=>({})),r=K(n.code,`FLOW_PAUSE_FAILED`),i=n.error||n.message||`Failed to pause flow for job ${e}`;throw new y({name:r,message:n.code?`${i} (${n.code})`:i,status:t.status})}let n=await t.json();return r?.log(`Flow paused: ${e}, status: ${n.status}`),n},cancelFlow:async e=>{let t=await s.request(`${u}/${e}/cancel`,{method:`POST`});if(!t.ok){let n=await t.json().catch(()=>({})),r=K(n.code,`FLOW_CANCEL_FAILED`),i=n.error||n.message||`Failed to cancel flow for job ${e}`;throw new y({name:r,message:n.code?`${i} (${n.code})`:i,status:t.status})}let n=await t.json();return r?.log(`Flow cancelled: ${e}, status: ${n.status}`),n},getJobStatus:async e=>{let t=await s.request(`${u}/${e}/status`);if(!t.ok){let n=await t.json().catch(()=>({})),r=K(n.code,`JOB_NOT_FOUND`),i=n.error||n.message||`Job ${e} not found`;throw new y({name:r,message:n.code?`${i} (${n.code})`:i,status:t.status})}return await t.json()},openUploadWebSocket:async e=>{let t=`${f}/${e}`;if(i)try{let n=await h(i,e);n?(t+=`?token=${encodeURIComponent(n)}`,r?.log(`WebSocket token attached for upload: ${e}`)):r?.log(`No token for upload WebSocket (using cookie-based auth): ${e}`)}catch(t){let n=t instanceof Error?t.message:String(t);r?.log(`Error getting auth token for upload WebSocket: ${n}`),r?.log(`Proceeding with cookie-based authentication for upload WebSocket: ${e}`)}let n=a.create(t);return n.onopen=()=>{r?.log(`Upload WebSocket connection opened for: ${e}`)},n.onclose=()=>{r?.log(`Upload WebSocket connection closed for: ${e}`)},n.onerror=t=>{r?.log(`Upload WebSocket error for ${e}: ${t}`)},n},openFlowWebSocket:async e=>{let t=`${p}/${e}`;if(i)try{let n=await h(i,e);n?(t+=`?token=${encodeURIComponent(n)}`,r?.log(`WebSocket token attached for flow job: ${e}`)):r?.log(`No token for flow WebSocket (using cookie-based auth): ${e}`)}catch(t){let n=t instanceof Error?t.message:String(t);r?.log(`Error getting auth token for flow WebSocket: ${n}`),r?.log(`Proceeding with cookie-based authentication for flow WebSocket: ${e}`)}let n=a.create(t);return n.onopen=()=>{r?.log(`Flow WebSocket connection opened for job: ${e}`)},n.onclose=()=>{r?.log(`Flow WebSocket connection closed for job: ${e}`)},n.onerror=t=>{r?.log(`Flow WebSocket error for job ${e}: ${t}`)},n},closeWebSocket:e=>{e.close()},getConnectionMetrics:()=>s.getMetrics(),getDetailedConnectionMetrics:()=>s.getDetailedMetrics(),warmupConnections:async e=>s.warmupConnections(e),getCapabilities:async e=>{let t=`${c}/capabilities?storageId=${encodeURIComponent(e)}`;try{let e=await s.request(t,{method:`GET`,headers:{"Content-Type":`application/json`}});return e.ok?(await e.json()).capabilities:(r?.log(`Failed to fetch capabilities: ${e.status} ${e.statusText}`),m)}catch(e){return r?.log(`Failed to fetch server capabilities, using defaults: ${e}`),m}}}}var ce=class{constructor(e,t,n){this.uploadistaApi=e,this.logger=t,this.onEvent=n,this.uploadWebsockets=new Map,this.flowWebsockets=new Map}async openUploadWebSocket(e){this.closeUploadWebSocket(e);let t=await this.uploadistaApi.openUploadWebSocket(e);return this.uploadWebsockets.set(e,t),t.onmessage=e=>{try{let t=n.safeParse(JSON.parse(e.data));t.success?t.data.type===`upload_event`&&this.onEvent?.(t.data.payload):this.logger.error(`Error parsing upload event: ${t.error.message}`)}catch(e){this.logger.error(`Error parsing upload event: ${e}`)}},t.onerror=t=>{this.logger.error(`Upload WebSocket error for ${e}: ${t}`)},t.onclose=t=>{this.logger.log(`Upload WebSocket closed for ${e}, \n code: ${t.code}, reason: ${t.reason}`),this.uploadWebsockets.delete(e)},t}async openFlowWebSocket(e){this.closeFlowWebSocket(e);let t=await this.uploadistaApi.openFlowWebSocket(e);return this.flowWebsockets.set(e,t),t.onmessage=t=>{try{let n=JSON.parse(t.data);switch(n.type){case`connection`:this.logger.log(`Flow WebSocket connected for job: ${n.id}`);break;case`subscribed`:this.logger.log(`Flow WebSocket subscribed for job: ${n.payload.jobId}`);break;case`error`:this.logger.error(`Flow WebSocket error: ${n.message} for job ${e} with code ${n.code}`);break;case`pong`:this.logger.log(`Flow WebSocket pong received for job: ${e}`);break;case`flow_event`:this.onEvent?.(n.payload);break;default:this.logger.warn(`Unknown flow WebSocket message type: ${n.type}`)}}catch(e){this.logger.error(`Error parsing flow WebSocket message:${e}`)}},t.onerror=t=>{this.logger.error(`Flow WebSocket error for job ${e}: ${t}`)},t.onclose=t=>{this.logger.log(`Flow WebSocket closed for job ${e}, \n code: ${t.code}, reason: ${t.reason}`),this.flowWebsockets.delete(e)},t}async openWebSocket(e){return e.startsWith(`upload-`)||e.includes(`upload`)?await this.openUploadWebSocket(e):await this.openFlowWebSocket(e)}closeUploadWebSocket(e){let t=this.uploadWebsockets.get(e);t&&(this.uploadistaApi.closeWebSocket(t),this.uploadWebsockets.delete(e))}closeFlowWebSocket(e){let t=this.flowWebsockets.get(e);t&&(this.uploadistaApi.closeWebSocket(t),this.flowWebsockets.delete(e))}closeWebSocket(e){this.closeUploadWebSocket(e),this.closeFlowWebSocket(e)}closeAll(){for(let[e,t]of this.uploadWebsockets.entries())this.uploadistaApi.closeWebSocket(t),this.uploadWebsockets.delete(e);for(let[e,t]of this.flowWebsockets.entries())this.uploadistaApi.closeWebSocket(t),this.flowWebsockets.delete(e)}sendPing(e){let t=this.flowWebsockets.get(e);return t&&t.readyState===t.OPEN?(t.send(JSON.stringify({type:`ping`,timestamp:new Date().toISOString()})),!0):!1}getUploadWebSocket(e){return this.uploadWebsockets.get(e)}getFlowWebSocket(e){return this.flowWebsockets.get(e)}isUploadConnected(e){let t=this.uploadWebsockets.get(e);return t?.readyState===t?.OPEN}isFlowConnected(e){let t=this.flowWebsockets.get(e);return t?.readyState===t?.OPEN}isConnected(e){return this.isUploadConnected(e)||this.isFlowConnected(e)}getConnectionCount(){return this.uploadWebsockets.size+this.flowWebsockets.size}getConnectionCountByType(){return{upload:this.uploadWebsockets.size,flow:this.flowWebsockets.size,total:this.uploadWebsockets.size+this.flowWebsockets.size}}};const q={maxConnectionsPerHost:8,connectionTimeout:2e4,keepAliveTimeout:9e4,enableHttp2:!0,retryOnConnectionError:!0};function J({baseUrl:e,uploadistaBasePath:t=`uploadista`,storageId:n,retryDelays:r=[1e3,3e3,5e3],chunkSize:i,parallelUploads:a=1,parallelChunkSize:o,uploadStrategy:s,smartChunking:d,networkMonitoring:p,uploadMetrics:g,checksumService:_,onEvent:y,generateId:b,httpClient:x,logger:C=f(!0),fileReader:w,fingerprintService:T,clientStorage:E,storeFingerprintForResuming:M=!0,webSocketFactory:N,abortControllerFactory:F,platformService:I,auth:L}){let R=e.replace(/\/$/,``),H=L?L.mode===`direct`?new c(L,I,C):new u(L,x):new l;L&&C.log(`Authentication enabled in ${L.mode} mode${L.mode===`uploadista-cloud`?` (server: ${L.authServerUrl})`:``}`);let W=se(R,t,{logger:C,httpClient:x,authManager:H,webSocketFactory:N}),G=new h(p),K=new V(g),q=null,J=async()=>q||(q=await W.getCapabilities(n),q),Y,X=async()=>{if(Y)return Y;let e=await J(),t=e.minChunkSize&&e.maxChunkSize&&e.optimalChunkSize?{minChunkSize:e.minChunkSize,maxChunkSize:e.maxChunkSize,optimalChunkSize:e.optimalChunkSize,requiresOrderedChunks:e.requiresOrderedChunks}:void 0;return Y=new v(G,{enabled:!0,...d,fallbackChunkSize:i,datastoreConstraints:t}),C.log(`Smart chunker initialized with datastore constraints: ${JSON.stringify(t)}`),Y},Z=new ce(W,C,y);return ae({baseUrl:R,storageId:n,chunkSize:i,parallelUploads:a,parallelChunkSize:o,uploadStrategy:s},C),{upload:async(e,{uploadLengthDeferred:c=!1,uploadSize:l,onProgress:u,onChunkComplete:f,onSuccess:p,onShouldRetry:m,onError:h}={})=>{let g=null,v=null,y=await T.computeFingerprint(e,`${R}/${t}/api/upload`);if(C.log(`fingerprint: ${y}`),!y)throw Error(`unable calculate fingerprint for this input file`);let x=await ee(E,y);if(x.length>0&&x[0]!=null){let e=te(x[0]);v=e.clientStorageKey,g=e.uploadId}let D=await w.openFile(e,i),O=S(D.size,{uploadLengthDeferred:c,uploadSize:l});D.size=O;let k=await X();d?.enabled!==!1&&K.startSession(y,O||0,!0);let A=ie({capabilities:await J(),fileSize:O,chunkSize:i,parallelUploads:a,uploadLengthDeferred:c,strategyConfig:s,logger:C});if(A.strategy===`parallel`){C.log(`Using parallel upload with ${A.parallelUploads} streams`);let e=await re({checksumService:_,source:D,storageId:n,fingerprint:y,uploadLengthDeferred:c,parallelUploads:A.parallelUploads,parallelChunkSize:o,retryDelays:r,smartChunker:k,uploadistaApi:W,logger:C,smartChunking:d,metrics:K,clientStorage:E,generateId:b,storeFingerprintForResuming:M,abortControllerFactory:F,platformService:I,openWebSocket:e=>(Z.openUploadWebSocket(e),null),closeWebSocket:e=>Z.closeUploadWebSocket(e),terminate:e=>z(e,W,I,r),onProgress:u,onChunkComplete:f,onSuccess:p,onError:h});if(e)return{abort:async()=>{await e.abort()}};C.log(`Parallel upload failed, falling back to single upload`)}let j=await ne({source:D,storageId:n,uploadId:g,platformService:I,uploadIdStorageKey:v,checksumService:_,fingerprint:y,uploadLengthDeferred:c,uploadistaApi:W,logger:C,clientStorage:E,generateId:b,storeFingerprintForResuming:M,openWebSocket:e=>(Z.openUploadWebSocket(e),null),closeWebSocket:e=>Z.closeUploadWebSocket(e),onProgress:u,onChunkComplete:f,onSuccess:p,onError:h});if(j){let e=F.create(),{uploadId:t,uploadIdStorageKey:n,offset:i}=j,a=null;return P({platformService:I,uploadId:t,offset:i,source:D,uploadLengthDeferred:c,retryDelays:r,smartChunker:k,uploadistaApi:W,logger:C,smartChunking:d,metrics:K,abortController:e,onProgress:u,onChunkComplete:f,onSuccess:p,onShouldRetry:m,onRetry:e=>{a=e},onError:h}),{abort:()=>{B({platformService:I,uploadId:t,uploadIdStorageKey:n,retryTimeout:a,shouldTerminate:!0,abortController:e,uploadistaApi:W,retryDelays:r,clientStorage:E})}}}return{abort:()=>{}}},uploadWithFlow:async(e,n,{onProgress:a,onChunkComplete:o,onSuccess:s,onShouldRetry:c,onJobStart:l,onError:u}={})=>{let f=await w.openFile(e,i),p=await X();if(d?.enabled!==!1){let n=await T.computeFingerprint(e,`${R}/${t}/api/flow`);K.startSession(n||`unknown`,f.size||0,!0)}let m=await D({source:f,flowConfig:n,uploadistaApi:W,logger:C,platformService:I,openWebSocket:e=>Z.openFlowWebSocket(e),closeWebSocket:e=>Z.closeWebSocket(e),onProgress:a,onChunkComplete:o,onSuccess:s,onJobStart:l,onError:u});if(!m)return{abort:async()=>{},pause:async()=>{},jobId:``};let{jobId:h,uploadFile:g,inputNodeId:_}=m,v=F.create();await Z.openUploadWebSocket(g.id);let y=null;return O({jobId:h,uploadFile:g,inputNodeId:_,offset:g.offset,source:f,retryDelays:r,smartChunker:p,uploadistaApi:W,logger:C,smartChunking:d,metrics:K,platformService:I,abortController:v,onProgress:a,onChunkComplete:o,onSuccess:s,onShouldRetry:c,onRetry:e=>{y=e},onError:u}),{abort:async()=>{try{await W.cancelFlow(h),C.log(`Flow cancelled on server: ${h}`)}catch(e){C.log(`Failed to cancel flow on server: ${e}`)}v.abort(),y&&I.clearTimeout(y),Z.closeWebSocket(h),Z.closeUploadWebSocket(g.id)},pause:async()=>{await W.pauseFlow(h)},jobId:h}},multiInputFlowUpload:async(e,t,{onProgress:a,onChunkComplete:o,onShouldRetry:s,onJobStart:c,onError:l,onInputProgress:u,onInputComplete:f,onInputError:p}={})=>{let{job:m}=await W.runFlow(t.flowId,t.storageId||n,{}),h=m.id;C.log(`Multi-input flow started: ${h}`),c?.(h),await Z.openFlowWebSocket(h);let g=new Map,_=new Map,v=[];try{let c=Object.entries(e).map(async([e,r])=>{let a=oe(r);if(a===`file`){let o=r,s=await w.openFile(o,i);return{nodeId:e,uploadFile:(await k({nodeId:e,jobId:h,source:s,storageId:t.storageId||n,metadata:{},uploadistaApi:W,logger:C,platformService:I,callbacks:{onStart:({uploadId:t})=>{_.set(e,t),Z.openUploadWebSocket(t)},onError:l}})).uploadFile,source:s,inputType:a}}else if(a===`url`)return await W.resumeFlow(h,e,{operation:`url`,url:r,storageId:t.storageId||n},{contentType:`application/json`}),{nodeId:e,uploadFile:null,source:null,inputType:a};else return await W.resumeFlow(h,e,r,{contentType:`application/json`}),{nodeId:e,uploadFile:null,source:null,inputType:a}}),m=await Promise.all(c),y=await X(),b=m.filter(e=>e.inputType===`file`&&e.uploadFile&&e.source).map(async({nodeId:e,uploadFile:t,source:n})=>{let i=F.create();g.set(e,i);let c=new V({enableDetailedMetrics:d?.enabled!==!1});if(!t||!n)throw Error(`Missing uploadFile or source for node ${e}`);try{await A({nodeId:e,jobId:h,uploadFile:t,source:n,offset:t.offset,retryAttempt:0,abortController:i,retryDelays:r,smartChunker:y,uploadistaApi:W,logger:C,smartChunking:d,metrics:c,platformService:I,onRetry:e=>{v.push(e)},callbacks:{onProgress:(t,n,r)=>{a?.(t,n,r);let i=r?Math.round(n/r*100):0;u?.(e,i,n,r)},onChunkComplete:o,onShouldRetry:s}}),await j({nodeId:e,jobId:h,uploadId:t.id,uploadistaApi:W,logger:C,callbacks:{onError:l}}),f?.(e)}catch(t){let n=t instanceof Error?t:Error(String(t));throw p?.(e,n),n}});await Promise.all(b),C.log(`All inputs uploaded for job: ${h}`)}catch(e){let t=e instanceof Error?e:Error(String(e));throw C.log(`Multi-input flow upload failed: ${t.message}`),l?.(t),t}return{abort:async()=>{try{await W.cancelFlow(h),C.log(`Flow cancelled on server: ${h}`)}catch(e){C.log(`Failed to cancel flow on server: ${e}`)}for(let e of g.values())e.abort();for(let e of v)I.clearTimeout(e);Z.closeWebSocket(h);for(let e of _.values())Z.closeUploadWebSocket(e)},pause:async()=>{await W.pauseFlow(h)},jobId:h}},abort:e=>B(e),getFlow:async e=>{let{status:t,flow:n}=await W.getFlow(e);return{status:t,flow:n}},runFlow:async({flowId:e,inputs:t,storageId:r})=>{let{status:i,job:a}=await W.runFlow(e,r||n,t);return{status:i,job:a}},resumeFlow:async({jobId:e,nodeId:t,newData:n,contentType:r})=>W.resumeFlow(e,t,n,{contentType:r}),pauseFlow:async e=>W.pauseFlow(e),cancelFlow:async e=>W.cancelFlow(e),findInputNode:async e=>{let{flow:t}=await W.getFlow(e),n=t.nodes.filter(e=>e.type===`input`).map(e=>({id:e.id,type:e.type,name:e.name}));return{inputNodes:n,single:n.length===1}},executeFlowWithInputs:async(e,t,r)=>{let{status:i,job:a}=await W.runFlow(e,r?.storageId||n,t);return a?.id&&r?.onJobStart&&r.onJobStart(a.id),{status:i,job:a}},getJobStatus:async e=>W.getJobStatus(e),openUploadWebSocket:e=>Z.openUploadWebSocket(e),openFlowWebSocket:e=>Z.openFlowWebSocket(e),openWebSocket:e=>Z.openWebSocket(e),closeWebSocket:e=>Z.closeWebSocket(e),closeAllWebSockets:()=>Z.closeAll(),sendPing:e=>Z.sendPing(e),isWebSocketConnected:e=>Z.isConnected(e),getWebSocketConnectionCount:()=>Z.getConnectionCount(),getWebSocketConnectionCountByType:()=>Z.getConnectionCountByType(),getNetworkMetrics:()=>G.getCurrentMetrics(),getNetworkCondition:()=>G.getNetworkCondition(),getChunkingInsights:()=>K.getPerformanceInsights(),exportMetrics:()=>K.exportMetrics(),getConnectionMetrics:()=>W.getConnectionMetrics(),getDetailedConnectionMetrics:()=>W.getDetailedConnectionMetrics(),warmupConnections:e=>W.warmupConnections(e),getConnectionPoolingInsights:async()=>(await X()).getConnectionPoolingInsights(),resetMetrics:async()=>{G.reset(),(await X()).reset(),K.reset()},validateConfiguration:e=>U(e,m,C),validateConfigurationAsync:async e=>{let t=[],n=[],r=await W.getCapabilities(e.storageId),i=U(e,r,C);return t.push(...i.errors),n.push(...i.warnings),{valid:t.length===0,errors:t,warnings:n,capabilities:r}},getCapabilities:J}}var Y=class{constructor(e){this.eventSource=e,this.subscriptions=[]}subscribe(e,t){let n=n=>{this.shouldHandleEvent(n,t)&&e(n)},r=this.eventSource.subscribe(n),i={unsubscribe:r,handler:n,filter:t};return this.subscriptions.push(i),()=>{let e=this.subscriptions.indexOf(i);e!==-1&&this.subscriptions.splice(e,1),r()}}shouldHandleEvent(e,t){if(!t)return!0;if(t.eventType&&e.type!==t.eventType)return!1;if(t.uploadId!==void 0){let n=e.data?.id;if(t.uploadId===null){if(n!==void 0)return!1}else if(n!==t.uploadId)return!1}return t.customFilter?t.customFilter(e):!0}getSubscriptionCount(){return this.subscriptions.length}hasSubscriptions(){return this.subscriptions.length>0}cleanup(){for(let e of this.subscriptions)e.unsubscribe();this.subscriptions=[]}updateUploadIdFilter(e){for(let t of this.subscriptions)t.filter&&t.filter.uploadId!==void 0&&(t.filter.uploadId=e)}};const X={status:`idle`,progress:0,bytesUploaded:0,totalBytes:null,error:null,jobId:null,flowStarted:!1,currentNodeName:null,currentNodeType:null,flowOutputs:null};var Z=class{constructor(e,t,n,r){this.flowUploadFn=e,this.callbacks=t,this.options=n,this.multiInputUploadFn=r,this.abortController=null,this.inputStates=new Map,this.currentSingleInputNodeId=null,this.state={...X}}getState(){return{...this.state}}isUploading(){return this.state.status===`uploading`||this.state.status===`processing`}isUploadingFile(){return this.state.status===`uploading`}isProcessing(){return this.state.status===`processing`}getJobId(){return this.state.jobId}updateState(e){this.state={...this.state,...e},this.callbacks.onStateChange(this.state)}handleFlowEvent(e){if(e.eventType===r.FlowStart&&!this.state.jobId){this.updateState({jobId:e.jobId,flowStarted:!0,status:`processing`});return}if(!(!this.state.jobId||e.jobId!==this.state.jobId))switch(e.eventType){case r.FlowStart:this.updateState({flowStarted:!0,status:`processing`});break;case r.NodeStart:this.updateState({status:`processing`,currentNodeName:e.nodeName,currentNodeType:e.nodeType});break;case r.NodePause:this.updateState({status:`uploading`,currentNodeName:e.nodeName});break;case r.NodeResume:this.updateState({status:`processing`,currentNodeName:e.nodeName,currentNodeType:e.nodeType});break;case r.NodeEnd:this.updateState({status:this.state.status===`uploading`?`processing`:this.state.status,currentNodeName:null,currentNodeType:null});break;case r.FlowEnd:{let t=e.outputs||null;t&&this.callbacks.onFlowComplete&&this.callbacks.onFlowComplete(t),t&&t.length>0&&this.callbacks.onSuccess&&this.callbacks.onSuccess(t),this.updateState({status:`success`,currentNodeName:null,currentNodeType:null,flowOutputs:t}),this.abortController=null;break}case r.FlowError:{let t=Error(e.error);this.updateState({status:`error`,error:t}),this.callbacks.onError?.(t),this.abortController=null;break}case r.NodeError:{let t=Error(e.error);this.updateState({status:`error`,error:t}),this.callbacks.onError?.(t),this.abortController=null;break}case r.FlowCancel:this.updateState({status:`aborted`}),this.callbacks.onAbort?.(),this.abortController=null;break}}handleUploadProgress(e,t,n){let r=n&&n>0?Math.round(t/n*100):0;if(this.updateState({bytesUploaded:t,totalBytes:n,progress:r}),this.currentSingleInputNodeId){let e=this.inputStates.get(this.currentSingleInputNodeId);e&&(e.status=`uploading`,e.progress=r,e.bytesUploaded=t,e.totalBytes=n)}this.callbacks.onProgress?.(e,t,n)}async upload(e){let t=null;e&&typeof e==`object`&&`size`in e&&typeof e.size==`number`&&(t=e.size),this.updateState({status:`uploading`,progress:0,bytesUploaded:0,totalBytes:t,error:null,jobId:null,flowStarted:!1,currentNodeName:null,currentNodeType:null,flowOutputs:null});try{let t={onJobStart:e=>{this.updateState({jobId:e}),this.options?.onJobStart?.(e)},onProgress:(e,t,n)=>{this.handleUploadProgress(e,t,n),this.options?.onProgress?.(e,t,n)},onChunkComplete:(e,t,n)=>{this.callbacks.onChunkComplete?.(e,t,n),this.options?.onChunkComplete?.(e,t,n)},onSuccess:e=>{if(this.updateState({progress:100}),this.currentSingleInputNodeId){let e=this.inputStates.get(this.currentSingleInputNodeId);e&&(e.status=`complete`,e.progress=100),this.currentSingleInputNodeId=null}},onError:e=>{if(this.updateState({status:`error`,error:e}),this.currentSingleInputNodeId){let t=this.inputStates.get(this.currentSingleInputNodeId);t&&(t.status=`error`,t.error=e),this.currentSingleInputNodeId=null}this.callbacks.onError?.(e),this.options?.onError?.(e),this.abortController=null},onAbort:()=>{if(this.updateState({status:`aborted`}),this.currentSingleInputNodeId){let e=this.inputStates.get(this.currentSingleInputNodeId);e&&(e.status=`error`,e.error=Error(`Upload aborted`)),this.currentSingleInputNodeId=null}this.callbacks.onAbort?.(),this.options?.onAbort?.(),this.abortController=null},onShouldRetry:this.options?.onShouldRetry};this.abortController=await this.flowUploadFn(e,this.options.flowConfig,t)}catch(e){let t=e instanceof Error?e:Error(String(e));if(this.updateState({status:`error`,error:t}),this.currentSingleInputNodeId){let e=this.inputStates.get(this.currentSingleInputNodeId);e&&(e.status=`error`,e.error=t),this.currentSingleInputNodeId=null}this.callbacks.onError?.(t),this.options?.onError?.(t),this.abortController=null}}abort(){this.abortController&&this.abortController.abort()}pause(){this.abortController&&this.abortController.pause()}reset(){this.abortController&&=(this.abortController.abort(),null);for(let e of this.inputStates.values())e.abortController&&e.abortController.abort();this.inputStates.clear(),this.currentSingleInputNodeId=null,this.state={...X},this.callbacks.onStateChange(this.state)}aggregateProgress(){if(this.inputStates.size===0)return;let e=Array.from(this.inputStates.values()),t=e.reduce((e,t)=>e+t.progress,0),n=Math.round(t/e.length),r=e.reduce((e,t)=>e+(t.totalBytes||0),0),i=e.reduce((e,t)=>e+t.bytesUploaded,0);this.updateState({progress:n,bytesUploaded:i,totalBytes:r>0?r:null})}async executeFlow(e){let t=Object.entries(e);if(t.length===0)throw Error(`No inputs provided to executeFlow`);this.inputStates.clear();for(let[t,n]of Object.entries(e)){let e=oe(n);this.inputStates.set(t,{nodeId:t,type:e,status:`pending`,progress:0,bytesUploaded:0,totalBytes:e===`file`&&n&&typeof n==`object`&&`size`in n&&typeof n.size==`number`?n.size:null,error:null,abortController:null})}if(t.length===1){let e=t[0];if(!e)throw Error(`No inputs provided to executeFlow`);let[n,r]=e;this.currentSingleInputNodeId=n,await this.upload(r);return}if(!this.multiInputUploadFn)throw Error(`Multi-input flows require multiInputUploadFn to be provided in FlowManager constructor. Platform packages should implement MultiInputFlowUploadFunction.`);this.updateState({status:`uploading`,progress:0,bytesUploaded:0,totalBytes:null,error:null,jobId:null,flowStarted:!1,currentNodeName:null,currentNodeType:null,flowOutputs:null});try{let t={onJobStart:e=>{this.updateState({jobId:e}),this.options?.onJobStart?.(e)},onProgress:(e,t,n)=>{this.options?.onProgress?.(e,t,n)},onSuccess:e=>{this.updateState({progress:100})},onError:e=>{this.updateState({status:`error`,error:e}),this.callbacks.onError?.(e),this.options?.onError?.(e),this.abortController=null},onAbort:()=>{this.updateState({status:`aborted`}),this.callbacks.onAbort?.(),this.options?.onAbort?.(),this.abortController=null},onShouldRetry:this.options?.onShouldRetry};this.abortController=await this.multiInputUploadFn(e,this.options.flowConfig,t,{onInputProgress:(e,t,n,r)=>{let i=this.inputStates.get(e);i&&(i.status=`uploading`,i.progress=t,i.bytesUploaded=n,i.totalBytes=r),this.aggregateProgress()},onInputComplete:e=>{let t=this.inputStates.get(e);t&&(t.status=`complete`,t.progress=100),this.aggregateProgress()},onInputError:(e,t)=>{let n=this.inputStates.get(e);n&&(n.status=`error`,n.error=t)}})}catch(e){let t=e instanceof Error?e:Error(String(e));this.updateState({status:`error`,error:t}),this.callbacks.onError?.(t),this.options?.onError?.(t),this.abortController=null}}getInputStates(){return this.inputStates}cleanup(){this.abortController&&=(this.abortController.abort(),null);for(let e of this.inputStates.values())e.abortController&&e.abortController.abort();this.inputStates.clear(),this.currentSingleInputNodeId=null}};const le={status:`idle`,progress:0,bytesUploaded:0,totalBytes:null,error:null,result:null};var ue=class{constructor(e,t,n){this.uploadFn=e,this.callbacks=t,this.options=n,this.abortController=null,this.lastInput=null,this.uploadId=null,this.state={...le}}getState(){return{...this.state}}isUploading(){return this.state.status===`uploading`}canRetry(){return(this.state.status===`error`||this.state.status===`aborted`)&&this.lastInput!==null}updateState(e){this.state={...this.state,...e},this.callbacks.onStateChange(this.state)}async upload(e){let t=null;e&&typeof e==`object`&&`size`in e&&typeof e.size==`number`&&(t=e.size),this.updateState({status:`uploading`,progress:0,bytesUploaded:0,totalBytes:t,error:null,result:null}),this.lastInput=e;try{let t={...this.options,onProgress:(e,t,n)=>{this.uploadId||=e;let r=n?Math.round(t/n*100):0;this.updateState({progress:r,bytesUploaded:t,totalBytes:n}),this.callbacks.onProgress?.(e,t,n),this.options?.onProgress?.(e,t,n)},onChunkComplete:(e,t,n)=>{this.callbacks.onChunkComplete?.(e,t,n),this.options?.onChunkComplete?.(e,t,n)},onSuccess:e=>{this.updateState({status:`success`,result:e,progress:100,bytesUploaded:e.size||0,totalBytes:e.size||null}),this.callbacks.onSuccess?.(e),this.options?.onSuccess?.(e),this.abortController=null},onError:e=>{this.updateState({status:`error`,error:e}),this.callbacks.onError?.(e),this.options?.onError?.(e),this.abortController=null},onAbort:()=>{this.updateState({status:`aborted`}),this.callbacks.onAbort?.(),this.options?.onAbort?.(),this.abortController=null},onShouldRetry:this.options?.onShouldRetry};this.abortController=await this.uploadFn(e,t)}catch(e){let t=e instanceof Error?e:Error(String(e));this.updateState({status:`error`,error:t}),this.callbacks.onError?.(t),this.options?.onError?.(t),this.abortController=null}}abort(){this.abortController&&this.abortController.abort()}reset(){this.abortController&&=(this.abortController.abort(),null),this.state={...le},this.lastInput=null,this.uploadId=null,this.callbacks.onStateChange(this.state)}retry(){this.canRetry()&&this.lastInput!==null&&this.upload(this.lastInput)}cleanup(){this.abortController&&=(this.abortController.abort(),null),this.uploadId=null}};const Q=i.lazy(()=>i.union([i.string(),i.number(),i.boolean(),i.null(),i.array(Q),i.record(i.string(),Q)])),$=i.object({size:i.number().nullable(),metadata:i.record(i.string(),Q),creationTime:i.string(),uploadId:i.string().optional(),parallelUploadUrls:i.array(i.string()).optional(),clientStorageKey:i.string()});function de(e){return{findAllUploads:async()=>{let t=await e.find(`uploadista::`);return Object.values(t).map(e=>$.parse(JSON.parse(e)))},findUploadsByFingerprint:async t=>{let n=await e.find(`uploadista::${t}`);return Object.values(n).map(e=>$.parse(JSON.parse(e)))},removeUpload:t=>e.removeItem(t),addUpload:async(t,n,{generateId:r})=>{let i=`uploadista::${t}::${r.generate()}`;return await e.setItem(i,JSON.stringify(n)),i}}}function fe(){let e=new Map;return{async getItem(t){return e.get(t)??null},async setItem(t,n){e.set(t,n)},async removeItem(t){e.delete(t)},async findAll(){return Object.fromEntries(e.entries())},async find(t){return Object.fromEntries(Array.from(e.entries()).filter(([e])=>e.startsWith(t)))}}}export{a as ChunkBuffer,Y as EventSubscriptionManager,Z as FlowManager,h as NetworkMonitor,ue as UploadManager,y as UploadistaError,ce as UploadistaWebSocketManager,de as createClientStorage,fe as createInMemoryStorageService,f as createLogger,se as createUploadistaApi,J as createUploadistaClient,q as defaultConnectionPoolingConfig,$ as previousUploadSchema,R as wait};
|
|
1
|
+
import{Base64 as e}from"js-base64";import{UploadStrategyNegotiator as t}from"@uploadista/core/upload";import{webSocketMessageSchema as n}from"@uploadista/core/types";import{EventType as r}from"@uploadista/core/flow";import i from"zod";var a=class{constructor(e){this.buffer=[],this.currentSize=0,this.lastAddTime=0,this.config={minThreshold:e.minThreshold,maxBufferSize:e.maxBufferSize??e.minThreshold*2,timeoutMs:e.timeoutMs??3e4}}add(e){return this.buffer.push(e),this.currentSize+=e.length,this.lastAddTime=Date.now(),this.shouldFlush()?this.flush():null}flush(){if(this.buffer.length===0)return null;let e=new Uint8Array(this.currentSize),t=0;for(let n of this.buffer)e.set(n,t),t+=n.length;let n={data:e,size:this.currentSize,timestamp:this.lastAddTime};return this.reset(),n}shouldFlush(){if(this.currentSize>=this.config.minThreshold||this.currentSize>=this.config.maxBufferSize)return!0;let e=Date.now()-this.lastAddTime;return this.buffer.length>0&&e>this.config.timeoutMs}getBufferInfo(){return{size:this.currentSize,chunkCount:this.buffer.length,isReadyToFlush:this.shouldFlush(),timeSinceLastAdd:Date.now()-this.lastAddTime}}hasPendingData(){return this.buffer.length>0}reset(){this.buffer=[],this.currentSize=0,this.lastAddTime=0}getMinThreshold(){return this.config.minThreshold}},o=class{constructor(e,t){this.httpClient=e,this.authManager=t}async request(e,t={}){try{let n=await this.attachAuthCredentials(t.headers||{},e);return await this.httpClient.request(e,{...t,headers:n,credentials:this.authManager.getType()===`no-auth`||this.authManager.getType()===`uploadista-cloud`?`omit`:t.credentials??`include`})}catch(e){throw e instanceof Error&&e.message.includes(`auth`),e}}async attachAuthCredentials(e,t){if(`attachCredentials`in this.authManager)return await this.authManager.attachCredentials(e);if(`attachToken`in this.authManager){let n=this.extractJobIdFromUrl(t);return await this.authManager.attachToken(e,n)}return e}extractJobIdFromUrl(e){let t=e.match(/\/api\/upload\/([^/?]+)/);if(t)return t[1];let n=e.match(/\/api\/flow\/([^/?]+)/);if(n)return n[1];let r=e.match(/\/api\/jobs\/([^/?]+)/);if(r)return r[1]}getMetrics(){return this.httpClient.getMetrics()}getDetailedMetrics(){return this.httpClient.getDetailedMetrics()}reset(){this.httpClient.reset()}async close(){await this.httpClient.close()}async warmupConnections(e){await this.httpClient.warmupConnections(e)}getAuthManager(){return this.authManager}},s=class{constructor(e){this.type=e}getType(){return this.type}},c=class extends s{constructor(e,t,n){super(`direct`),this.config=e,this.platformService=t,this.logger=n}async attachCredentials(e={}){try{if(!this.config.getCredentials)return e;let t=await Promise.resolve(this.config.getCredentials());if(!t||typeof t!=`object`)throw Error(`getCredentials() must return an object with headers and/or cookies`);let n={...e};return t.headers&&(this.validateHeaders(t.headers),Object.assign(n,t.headers)),t.cookies&&this.attachCookies(n,t.cookies),n}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to attach auth credentials: ${t}`)}}validateHeaders(e){if(typeof e!=`object`||!e)throw Error(`headers must be an object`);for(let[t,n]of Object.entries(e))if(typeof t!=`string`||typeof n!=`string`)throw Error(`Invalid header: key and value must be strings (got ${t}: ${typeof n})`)}attachCookies(e,t){if(this.platformService.isBrowser())this.logger.warn(`DirectAuth: Cookies are automatically handled by the browser. Ensure your server has proper CORS configuration with credentials support.`);else{let n=Object.entries(t).map(([e,t])=>`${e}=${t}`).join(`; `);n&&(e.Cookie=n)}}},l=class extends s{constructor(){super(`no-auth`)}async attachCredentials(e={}){return e}clearToken(e){}clearAllTokens(){}},u=class extends s{constructor(e,t){super(`uploadista-cloud`),this.config=e,this.httpClient=t,this.tokenCache=new Map,this.globalToken=null}async fetchToken(){try{let e=await this.httpClient.request(`${this.config.authServerUrl}/${this.config.clientId}`,{method:`GET`,headers:{"Content-Type":`application/json`}});if(!e.ok){let t=await e.text(),n=`Auth server returned ${e.status}`;try{let e=JSON.parse(t);n=e.error||e.message||n}catch{n=t||e.statusText||n}throw Error(n)}let t=await e.json();if(!t.token||typeof t.token!=`string`)throw Error(`Auth server response missing 'token' field or token is not a string`);return t}catch(e){throw e instanceof Error?Error(`Failed to fetch auth token: ${e.message}`):Error(`Failed to fetch auth token: ${String(e)}`)}}async getOrFetchToken(e){if(e){let t=this.tokenCache.get(e);if(t&&!this.isTokenExpired(t))return t.token}if(!e&&this.globalToken&&!this.isTokenExpired(this.globalToken))return this.globalToken.token;let t=await this.fetchToken(),n=t.expiresIn?Date.now()+t.expiresIn*1e3:void 0,r={token:t.token,expiresAt:n};return e?this.tokenCache.set(e,r):this.globalToken=r,t.token}isTokenExpired(e){return e.expiresAt?Date.now()>e.expiresAt-60*1e3:!1}async attachToken(e={},t){try{let n=await this.getOrFetchToken(t);return{...e,Authorization:`Bearer ${n}`}}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to attach auth token: ${t}`)}}clearToken(e){this.tokenCache.delete(e)}clearAllTokens(){this.tokenCache.clear(),this.globalToken=null}getCacheStats(){return{cachedJobCount:this.tokenCache.size,hasGlobalToken:this.globalToken!==null}}};const d=()=>{};function f(e,t=d){return{log:n=>{e&&t(n)},warn:n=>{e&&t(n)},error:n=>{e&&t(n)}}}var p=class{constructor(e){this.capabilities=e}getCapabilities(){return this.capabilities}validateUploadStrategy(e){switch(e){case`parallel`:return this.capabilities.supportsParallelUploads;case`single`:return!0;default:return!1}}};const m={supportsParallelUploads:!0,supportsConcatenation:!0,supportsDeferredLength:!0,supportsResumableUploads:!0,supportsTransactionalUploads:!1,maxConcurrentUploads:6,minChunkSize:64*1024,maxChunkSize:100*1024*1024,maxParts:1e4,optimalChunkSize:8*1024*1024,requiresOrderedChunks:!1};var h=class{constructor(e={}){this.samples=[],this.config={maxSamples:e.maxSamples??100,smoothingFactor:e.smoothingFactor??.1,minSamplesForCondition:e.minSamplesForCondition??5,slowThreshold:e.slowThreshold??50*1024,fastThreshold:e.fastThreshold??5*1024*1024,unstableThreshold:e.unstableThreshold??.5},this._currentMetrics=this.createEmptyMetrics()}addSample(e){this.samples.push(e),this.samples.length>this.config.maxSamples&&(this.samples=this.samples.slice(-this.config.maxSamples)),this.updateMetrics()}recordUpload(e,t,n,r){this.addSample({size:e,duration:t,success:n,timestamp:Date.now(),latency:r})}getCurrentMetrics(){return{...this._currentMetrics}}getNetworkCondition(){if(this.samples.length<this.config.minSamplesForCondition)return{type:`unknown`,confidence:0};let e=this.getRecentSuccessfulSamples();if(e.length<this.config.minSamplesForCondition)return{type:`unknown`,confidence:.3};let t=e.map(e=>e.size/(e.duration/1e3)),n=t.reduce((e,t)=>e+t,0)/t.length,r=t.reduce((e,t)=>e+(t-n)**2,0)/t.length,i=Math.sqrt(r)/n,a=Math.min(1,this.samples.length/(this.config.minSamplesForCondition*2));return i>this.config.unstableThreshold?{type:`unstable`,confidence:a}:n<this.config.slowThreshold?{type:`slow`,confidence:a}:n>this.config.fastThreshold?{type:`fast`,confidence:a}:{type:`slow`,confidence:a*.7}}getOptimalThroughput(){let e=this.getRecentSuccessfulSamples(10);if(e.length===0)return 0;let t=0,n=0;return e.forEach((e,r)=>{let i=r+1,a=e.size/(e.duration/1e3);n+=a*i,t+=i}),t>0?n/t:0}reset(){this.samples=[],this._currentMetrics=this.createEmptyMetrics()}getRecentSuccessfulSamples(e){let t=this.samples.filter(e=>e.success);return e?t.slice(-e):t}updateMetrics(){let e=this.samples.filter(e=>e.success),t=this.samples.length,n=e.length;if(t===0){this._currentMetrics=this.createEmptyMetrics();return}let r=e.reduce((e,t)=>e+t.size,0),i=e.reduce((e,t)=>e+t.duration,0),a=i>0?r/(i/1e3):0,o=n/t,s=1-o,c=this.samples.filter(e=>e.latency!==void 0);this._currentMetrics={averageSpeed:a,latency:c.length>0?c.reduce((e,t)=>e+(t.latency||0),0)/c.length:0,successRate:o,errorRate:s,totalRequests:t,totalBytes:r,totalTime:i}}createEmptyMetrics(){return{averageSpeed:0,latency:0,successRate:0,errorRate:0,totalRequests:0,totalBytes:0,totalTime:0}}},g=class{constructor(e){this._isPaused=!1,this._resumeResolvers=[],this._innerController=e}get signal(){return this._innerController.signal}get isPaused(){return this._isPaused}abort(e){for(let e of this._resumeResolvers)e();this._resumeResolvers=[],this._innerController.abort(e)}pause(){this._isPaused=!0}resume(){this._isPaused=!1;for(let e of this._resumeResolvers)e();this._resumeResolvers=[]}waitForResume(){return!this._isPaused||this._innerController.signal.aborted?Promise.resolve():new Promise(e=>{this._resumeResolvers.push(e)})}};async function _(e){e.isPaused&&e.waitForResume&&await e.waitForResume()}const v={conservative:{name:`conservative`,minChunkSize:64*1024,maxChunkSize:2*1024*1024,initialChunkSize:256*1024,adaptationRate:.1},balanced:{name:`balanced`,minChunkSize:128*1024,maxChunkSize:8*1024*1024,initialChunkSize:512*1024,adaptationRate:.2},aggressive:{name:`aggressive`,minChunkSize:256*1024,maxChunkSize:32*1024*1024,initialChunkSize:1024*1024,adaptationRate:.3}},y={conservative:{name:`s3-conservative`,minChunkSize:5*1024*1024,maxChunkSize:64*1024*1024,initialChunkSize:8*1024*1024,adaptationRate:.1},balanced:{name:`s3-balanced`,minChunkSize:5*1024*1024,maxChunkSize:128*1024*1024,initialChunkSize:16*1024*1024,adaptationRate:.2},aggressive:{name:`s3-aggressive`,minChunkSize:5*1024*1024,maxChunkSize:256*1024*1024,initialChunkSize:32*1024*1024,adaptationRate:.3}};var b=class{constructor(e,t={}){this.lastDecision=null,this.consecutiveFailures=0,this.consecutiveSuccesses=0,this.connectionMetrics=null,this.networkMonitor=e,this.config={enabled:t.enabled??!0,fallbackChunkSize:t.fallbackChunkSize??1024*1024,minChunkSize:t.minChunkSize??64*1024,maxChunkSize:t.maxChunkSize??32*1024*1024,initialChunkSize:t.initialChunkSize??512*1024,targetUtilization:t.targetUtilization??.85,adaptationRate:t.adaptationRate??.2,conservativeMode:t.conservativeMode??!1,connectionPoolingAware:t.connectionPoolingAware??!0,datastoreConstraints:t.datastoreConstraints},this.currentChunkSize=this.getEffectiveInitialChunkSize()}getEffectiveInitialChunkSize(){return this.config.datastoreConstraints?Math.max(this.config.initialChunkSize,this.config.datastoreConstraints.optimalChunkSize):this.config.initialChunkSize}applyDatastoreConstraints(e){return this.config.datastoreConstraints?Math.max(this.config.datastoreConstraints.minChunkSize,Math.min(this.config.datastoreConstraints.maxChunkSize,e)):e}getNextChunkSize(e){if(!this.config.enabled)return{size:this.config.fallbackChunkSize,strategy:`fixed`,reason:`Smart chunking disabled`,networkCondition:{type:`unknown`,confidence:0}};let t=this.networkMonitor.getNetworkCondition(),n=this.currentChunkSize,r=`adaptive`,i=``;if(t.type===`unknown`)n=this.config.initialChunkSize,r=`initial`,i=`Insufficient network data`;else{let e=this.selectStrategy(t);n=this.calculateOptimalChunkSize(t,e),r=e.name,i=`Network condition: ${t.type} (confidence: ${Math.round(t.confidence*100)}%)`}return e&&e<n&&(n=e,i+=`, limited by remaining bytes (${e})`),n=this.applyDatastoreConstraints(n),n=Math.max(this.config.minChunkSize,Math.min(this.config.maxChunkSize,n)),this.currentChunkSize=n,this.lastDecision={size:n,strategy:r,reason:i,networkCondition:t},this.lastDecision}recordChunkResult(e,t,n){this.networkMonitor.recordUpload(e,t,n),n?(this.consecutiveSuccesses++,this.consecutiveFailures=0):(this.consecutiveFailures++,this.consecutiveSuccesses=0),this.adaptChunkSize(n,t,e)}getCurrentChunkSize(){return this.currentChunkSize}getLastDecision(){return this.lastDecision}reset(){this.currentChunkSize=this.config.initialChunkSize,this.consecutiveFailures=0,this.consecutiveSuccesses=0,this.lastDecision=null,this.connectionMetrics=null}updateConnectionMetrics(e){this.connectionMetrics=e}getConnectionPoolingInsights(){if(!this.connectionMetrics||!this.config.connectionPoolingAware)return{isOptimized:!1,reuseRate:0,recommendedMinChunkSize:this.config.minChunkSize,connectionOverhead:0};let e=this.connectionMetrics.reuseRate,t=this.connectionMetrics.averageConnectionTime,n=(1-e)*t,r=Math.max(this.config.minChunkSize,Math.floor(n*1e4));return{isOptimized:e>.7,reuseRate:e,recommendedMinChunkSize:r,connectionOverhead:n}}selectStrategy(e){let t={name:`fallback`,minChunkSize:128*1024,maxChunkSize:4*1024*1024,initialChunkSize:512*1024,adaptationRate:.2},n=this.config.datastoreConstraints?.minChunkSize===5*1024*1024?y:v;if(this.config.conservativeMode)return n.conservative??t;let r;switch(e.type){case`fast`:r=e.confidence>.7?n.aggressive??t:n.balanced??t;break;case`slow`:r=n.conservative??t;break;case`unstable`:r=n.conservative??t;break;default:r=n.balanced??t}return this.config.connectionPoolingAware&&this.connectionMetrics?this.optimizeStrategyForConnectionPooling(r):r}optimizeStrategyForConnectionPooling(e){if(!this.connectionMetrics)return e;let t=this.getConnectionPoolingInsights(),n=t.reuseRate;return n>.8?{...e,name:`${e.name}-pooled-aggressive`,minChunkSize:Math.max(e.minChunkSize*.5,32*1024),adaptationRate:Math.min(e.adaptationRate*1.3,.5)}:n>.5?{...e,name:`${e.name}-pooled-moderate`,minChunkSize:Math.max(e.minChunkSize*.75,64*1024),adaptationRate:Math.min(e.adaptationRate*1.1,.4)}:{...e,name:`${e.name}-pooled-conservative`,minChunkSize:Math.max(e.minChunkSize*1.5,t.recommendedMinChunkSize),adaptationRate:e.adaptationRate*.8}}calculateOptimalChunkSize(e,t){let n=this.currentChunkSize,r=this.networkMonitor.getOptimalThroughput();if(r>0){let i=r*this.getTargetChunkDuration(e)*this.config.targetUtilization,a=t.adaptationRate;n=this.currentChunkSize*(1-a)+i*a}if(n=Math.max(t.minChunkSize,Math.min(t.maxChunkSize,n)),this.consecutiveFailures>0){let e=Math.min(.5,this.consecutiveFailures*.2);n*=1-e}else if(this.consecutiveSuccesses>2){let e=Math.min(.3,this.consecutiveSuccesses*.05);n*=1+e}return Math.round(n)}getTargetChunkDuration(e){switch(e.type){case`fast`:return 3;case`slow`:return 5;case`unstable`:return 2;default:return 3}}adaptChunkSize(e,t,n){if(!e){this.currentChunkSize=Math.max(this.config.minChunkSize,this.currentChunkSize*.8);return}let r=n/(t/1e3),i=this.networkMonitor.getCurrentMetrics();if(i.averageSpeed>0){let e=r/i.averageSpeed;e<this.config.targetUtilization*.8?this.currentChunkSize=Math.min(this.config.maxChunkSize,this.currentChunkSize*1.1):e>this.config.targetUtilization*1.2&&(this.currentChunkSize=Math.max(this.config.minChunkSize,this.currentChunkSize*.95))}}},x=class extends Error{constructor({name:e,message:t,cause:n,status:r}){super(),this.name=e,this.cause=n,this.message=t,this.status=r}isNetworkError(){return this.name===`NETWORK_ERROR`||this.name===`NETWORK_UNEXPECTED_RESPONSE`}};function S(t){return Object.entries(t).map(([t,n])=>`${t} ${e.encode(String(n))}`).join(`,`)}function C(e,t){return e>=t&&e<t+100}function w(e,{uploadLengthDeferred:t,uploadSize:n}){if(t)return null;if(n!=null)return n;let r=e;if(r==null)throw new x({name:`UPLOAD_SIZE_NOT_SPECIFIED`,message:"cannot automatically derive upload's size from input. Specify it manually using the `uploadSize` option or use the `uploadLengthDeferred` option"});return r}function T(e,t,n){if(t<=1)return[{startByte:0,endByte:e,segmentIndex:0}];let r=[];if(n){let t=0,i=0;for(;t<e;){let a=Math.min(t+n,e);r.push({startByte:t,endByte:a,segmentIndex:i}),t=a,i++}}else{let n=Math.ceil(e/t);for(let i=0;i<t;i++){let t=i*n,a=Math.min(t+n,e);t<e&&r.push({startByte:t,endByte:a,segmentIndex:i})}}return r}async function E({uploadId:e,source:t,offset:n,uploadLengthDeferred:r,abortController:i,onProgress:a,smartChunker:o,uploadistaApi:s,logger:c}){let l=n??0,u=t.size?t.size-l:void 0,d=o.getNextChunkSize(u),f=l+d.size;t.size&&(f===1/0||f>t.size)&&!r&&(f=t.size);let{value:p,size:m,done:h}=await t.slice(l,f),g=m??0,_=Date.now();r&&h&&(t.size=n+g);let v=n+g;if(!r&&h&&v!==t.size)throw new x({name:`WRONG_UPLOAD_SIZE`,message:`upload was configured with a size of ${m} bytes, but the source is done after ${v} bytes`});let y=await s.uploadChunk(e,p,{onProgress:(t,n)=>{a?.(e,t,n)},abortController:i}),b=Date.now()-_,S=y.status>=200&&y.status<300;return o.recordChunkResult(g,b,S),c.log(`Chunk upload ${S?`succeeded`:`failed`}: ${g} bytes in ${b}ms (${d.strategy} strategy)`),y}function D(e,t,n,r,i){return r==null||n>=r.length||!t.isNetworkError()?!1:i?i(t,n):O(e,t)}function O(e,t){let n=t.status??0;return(!C(n,400)||n===409||n===423)&&e.isOnline()}async function k({source:e,flowConfig:t,uploadistaApi:n,logger:r,platformService:i,openWebSocket:a,closeWebSocket:o,...s}){let{flowId:c,storageId:l}=t,{flow:u}=await n.getFlow(c),d=u.nodes.find(e=>e.type===`input`);if(!d){let e=new x({name:`FLOW_INCOMPATIBLE`,message:`Flow ${c} does not have a streaming input node. The flow must contain a node with type "input" to support flow uploads.`});throw s.onError?.(e),e}let f=d.id,p={originalName:e.name??`unknown`,mimeType:e.type??`application/octet-stream`,size:e.size??0,...t.metadata};r.log(`Starting flow upload for flow ${c}, node ${f}`);let{status:m,job:h}=await n.runFlow(c,l,{[f]:{operation:`init`,storageId:l,metadata:p}}),g=h.id;if(!C(m,200)||!g){let e=new x({name:`FLOW_INIT_FAILED`,message:`Failed to initialize flow upload`});throw s.onError?.(e),e}s.onJobStart?.(g),r.log(`Flow job ${g} created, opening WebSocket`),a(g),r.log(`Waiting for upload ID from node`);let _=0,v=await n.getJobStatus(g);for(;v.status!==`paused`&&_<60;)await new Promise(e=>i.setTimeout(e,500)),v=await n.getJobStatus(g),_++;if(v.status!==`paused`){let e=new x({name:`FLOW_TIMEOUT`,message:`Flow did not pause after init (status: ${v.status})`});throw s.onError?.(e),e}let y=v.tasks.find(e=>e.nodeId===f)?.result;if(!y?.id){let e=new x({name:`FLOW_NO_UPLOAD_ID`,message:`Flow did not return upload ID after init`});throw s.onError?.(e),e}return r.log(`Upload ID received: ${y.id}`),s.onStart?.({uploadId:y.id,size:e.size??null}),{jobId:g,uploadFile:y,inputNodeId:f}}async function A({jobId:e,uploadFile:t,inputNodeId:n,offset:r,source:i,retryAttempt:a=0,abortController:o,retryDelays:s,smartChunker:c,uploadistaApi:l,logger:u,smartChunking:d,metrics:f,platformService:p,onRetry:m,...h}){let g=r,v=r;try{if(await _(o),o.signal.aborted){h.onAbort?.();return}let g=i.size?i.size-r:void 0,y=c.getNextChunkSize(g).size,b=Math.min(r+y,i.size??0),S=await i.slice(r,b);if(!S||!S.value)throw new x({name:`NETWORK_ERROR`,message:`Failed to read chunk from file`});let C=S.value,w=Date.now(),T=await l.uploadChunk(t.id,C,{abortController:o}),E=Date.now()-w;if(!T.upload)throw new x({name:`UPLOAD_CHUNK_FAILED`,message:`Upload chunk response missing upload data`});if(v=T.upload.offset,h.onProgress?.(t.id,v,i.size??0),h.onChunkComplete?.(v-r,r,i.size??0),d?.enabled!==!1){let e=Math.floor(r/y);f.recordChunk({chunkIndex:e,size:y,duration:E,speed:y/(E/1e3),success:!0,retryCount:a,networkCondition:c.getLastDecision()?.networkCondition?.type,chunkingStrategy:c.getLastDecision()?.strategy});let t=l.getConnectionMetrics();c.updateConnectionMetrics(t)}if(v>=(i.size??0)){if(i&&i.close(),d?.enabled!==!1){let e=f.endSession();e&&u.log(`Flow upload completed: ${e.totalSize} bytes in ${e.totalDuration}ms, avg speed: ${Math.round(e.averageSpeed/1024)}KB/s`)}u.log(`Finalizing flow upload for job ${e}`);try{await l.resumeFlow(e,n,{operation:`finalize`,uploadId:t.id},{contentType:`application/json`})}catch(t){let n=new x({name:`FLOW_FINALIZE_FAILED`,message:`Failed to finalize flow upload for job ${e}`,cause:t});throw h.onError?.(n),n}return}await A({jobId:e,uploadFile:t,inputNodeId:n,offset:v,source:i,platformService:p,retryDelays:s,smartChunker:c,uploadistaApi:l,logger:u,smartChunking:d,metrics:f,onRetry:m,abortController:o,...h})}catch(_){if(o.signal.aborted||_ instanceof Error&&(_.name===`AbortError`||_.code===20||_.message?.includes(`abort`))){u.log(`Flow upload aborted for job ${e}`),h.onAbort?.();return}if(s!=null)if(r!=null&&v>g&&(a=0),D(p,_ instanceof x?_:new x({name:`NETWORK_ERROR`,message:`Network error during flow upload`,cause:_}),a,s,h.onShouldRetry)){let _=s[a];g=r;let v=p.setTimeout(async()=>{await A({jobId:e,uploadFile:t,inputNodeId:n,offset:r,source:i,retryAttempt:a+1,retryDelays:s,smartChunker:c,uploadistaApi:l,logger:u,smartChunking:d,metrics:f,platformService:p,onRetry:m,abortController:o,...h})},_);m?.(v)}else throw new x({name:`UPLOAD_CHUNK_FAILED`,message:`Failed to upload chunk for job ${e} at offset ${r}`,cause:_})}}async function j(e){let{nodeId:t,jobId:n,source:r,storageId:i,metadata:a={},uploadistaApi:o,logger:s,platformService:c,callbacks:l}=e,u={originalName:r.name??`unknown`,mimeType:r.type??`application/octet-stream`,size:r.size??0,...a};s.log(`Initializing input node ${t} for job ${n}`),await o.resumeFlow(n,t,{operation:`init`,storageId:i,metadata:u},{contentType:`application/json`}),s.log(`Waiting for upload ID from node ${t}`);let d=0,f=await o.getJobStatus(n);for(;d<60;){let e=f.tasks.find(e=>e.nodeId===t);if(e?.status===`paused`&&e.result&&e.result.id){let n=e.result;return s.log(`Upload ID received for node ${t}: ${n.id}`),l?.onStart?.({uploadId:n.id,size:r.size??null}),{uploadFile:n,nodeId:t}}if(e?.status===`failed`){let e=new x({name:`FLOW_INIT_FAILED`,message:`Input node ${t} failed during initialization`});throw l?.onError?.(e),e}await new Promise(e=>c.setTimeout(e,500)),f=await o.getJobStatus(n),d++}let p=new x({name:`FLOW_TIMEOUT`,message:`Input node ${t} did not return upload ID after init`});throw l?.onError?.(p),p}async function M(e){let{nodeId:t,uploadFile:n,source:r,offset:i=0,abortController:a,retryDelays:o,smartChunker:s,uploadistaApi:c,logger:l,smartChunking:u,metrics:d,platformService:f,onRetry:p,callbacks:m}=e,h=e.retryAttempt??0,g=i,_=i;try{let o=r.size?r.size-i:void 0,f=s.getNextChunkSize(o).size,p=Math.min(i+f,r.size??0),g=await r.slice(i,p);if(!g||!g.value)throw new x({name:`NETWORK_ERROR`,message:`Failed to read chunk from file for node ${t}`});let v=g.value,y=Date.now(),b=await c.uploadChunk(n.id,v,{abortController:a}),S=Date.now()-y;if(!b.upload)throw new x({name:`UPLOAD_CHUNK_FAILED`,message:`Upload chunk response missing upload data for node ${t}`});if(_=b.upload.offset,m?.onProgress?.(n.id,_,r.size??0),m?.onChunkComplete?.(_-i,i,r.size??0),u?.enabled!==!1){let e=Math.floor(i/f);d.recordChunk({chunkIndex:e,size:f,duration:S,speed:f/(S/1e3),success:!0,retryCount:h,networkCondition:s.getLastDecision()?.networkCondition?.type,chunkingStrategy:s.getLastDecision()?.strategy});let t=c.getConnectionMetrics();s.updateConnectionMetrics(t)}if(_>=(r.size??0)){if(r.close(),u?.enabled!==!1){let e=d.endSession();e&&l.log(`Upload completed for node ${t}: ${e.totalSize} bytes in ${e.totalDuration}ms, avg speed: ${Math.round(e.averageSpeed/1024)}KB/s`)}return}await M({...e,offset:_,retryAttempt:0})}catch(n){if(o!=null)if(_>g&&(h=0),D(f,n instanceof x?n:new x({name:`NETWORK_ERROR`,message:`Network error during upload for node ${t}`,cause:n}),h,o,m?.onShouldRetry)){let t=o[h];g=i;let n=f.setTimeout(async()=>{await M({...e,offset:i,retryAttempt:h+1})},t);p?.(n)}else throw new x({name:`UPLOAD_CHUNK_FAILED`,message:`Failed to upload chunk for node ${t} at offset ${i}`,cause:n});else throw n}}async function ee(e){let{nodeId:t,jobId:n,uploadId:r,uploadistaApi:i,logger:a,callbacks:o}=e;a.log(`Finalizing input node ${t} for job ${n}`);try{await i.resumeFlow(n,t,{operation:`finalize`,uploadId:r},{contentType:`application/json`}),a.log(`Input node ${t} finalized successfully`)}catch(e){let r=new x({name:`FLOW_FINALIZE_FAILED`,message:`Failed to finalize input node ${t} for job ${n}`,cause:e});throw o?.onError?.(r),r}}async function te(e,t){return e.findUploadsByFingerprint(t)}function ne(e){return{uploadId:e.uploadId??null,parallelUploadUrls:e.parallelUploadUrls,clientStorageKey:e.clientStorageKey}}async function N({clientStorage:e,fingerprint:t,size:n,metadata:r,clientStorageKey:i,storeFingerprintForResuming:a,generateId:o}){if(!a||!t||i!=null)return;let s={size:n,metadata:r,creationTime:new Date().toString(),clientStorageKey:t};return await e.addUpload(t,s,{generateId:o})}async function P(e,t){t&&await e.removeUpload(t)}async function F({uploadId:e,offset:t,source:n,uploadLengthDeferred:r,retryAttempt:i=0,abortController:a,retryDelays:o,smartChunker:s,uploadistaApi:c,logger:l,smartChunking:u,metrics:d,platformService:f,onRetry:p,...m}){let h=t,g=t;try{if(await _(a),a.signal.aborted)return;let h=await E({uploadId:e,source:n,offset:t,uploadLengthDeferred:r,onProgress:m.onProgress,abortController:a,smartChunker:s,uploadistaApi:c,logger:l});if(!C(h.status,200)||h.upload==null)throw new x({name:`NETWORK_UNEXPECTED_RESPONSE`,message:`Unexpected response while uploading chunk`});if(g=h.upload.offset,m.onProgress?.(e,g,h.upload.size??0),m.onChunkComplete?.(g-t,t,h.upload?.size??0),u?.enabled!==!1){let e=Math.floor(t/(g-t||1)),n=g-t,r=Date.now()-(Date.now()-100),a=s.getLastDecision();d.recordChunk({chunkIndex:e,size:n,duration:r,speed:n/(r/1e3),success:!0,retryCount:i,networkCondition:a?.networkCondition?.type,chunkingStrategy:a?.strategy});let o=c.getConnectionMetrics();s.updateConnectionMetrics(o)}if(g>=(n.size??0)){if(n&&n.close(),u?.enabled!==!1){let e=d.endSession();e&&l.log(`Upload completed: ${e.totalSize} bytes in ${e.totalDuration}ms, avg speed: ${Math.round(e.averageSpeed/1024)}KB/s`)}m.onSuccess?.(h.upload);return}await F({uploadId:e,offset:g,source:n,uploadLengthDeferred:r,retryDelays:o,smartChunker:s,platformService:f,uploadistaApi:c,logger:l,smartChunking:u,metrics:d,onRetry:p,abortController:a,...m})}catch(_){if(o!=null)if(t!=null&&g>h&&(i=0),D(f,_ instanceof x?_:new x({name:`NETWORK_ERROR`,message:`Network error`,cause:_}),i,o,m.onShouldRetry)){let g=o[i];h=t;let _=f.setTimeout(async()=>{await F({uploadId:e,offset:t,source:n,retryAttempt:i+1,uploadLengthDeferred:r,retryDelays:o,smartChunker:s,platformService:f,uploadistaApi:c,logger:l,smartChunking:u,metrics:d,onRetry:p,abortController:a,...m})},g);p?.(_)}else throw new x({name:`UPLOAD_CHUNK_FAILED`,message:`failed to upload chunk for ${e} at offset ${t}`,cause:_})}}async function I({fingerprint:e,storageId:t,source:n,uploadLengthDeferred:r,metadata:i,uploadistaApi:a,logger:o,checksumService:s,clientStorage:c,generateId:l,storeFingerprintForResuming:u,openWebSocket:d,closeWebSocket:f,computeChecksum:p=!0,checksumAlgorithm:m=`sha256`,platformService:h,...g}){if(!r&&n.size==null){let e=new x({name:`UPLOAD_SIZE_NOT_SPECIFIED`,message:`expected size to be set`});throw g.onError?.(e),e}let _;if(p&&h.isFileLike(n.input))try{o.log(`Computing file checksum...`),_=await s.computeChecksum(new Uint8Array(n.input)),o.log(`Checksum computed: ${_}`)}catch(e){o.log(`Warning: Failed to compute checksum: ${e instanceof Error?e.message:`Unknown error`}`)}let v={uploadLengthDeferred:r,storageId:t,size:n.size??0,metadata:i?S(i):void 0,fileName:n.name??void 0,type:n.type??``,lastModified:n.lastModified??void 0,checksum:_,checksumAlgorithm:_?m:void 0},{upload:y,status:b}=await a.createUpload(v);if(!C(b,200)||y==null){let e=new x({name:`NETWORK_UNEXPECTED_RESPONSE`,message:`Unexpected response while creating upload`});throw g.onError?.(e),e}if(o.log(`Created upload ${y.id}`),d(y.id),y.size===0){g.onSuccess?.(y),n&&n.close(),f(y.id);return}let w=await N({clientStorage:c,fingerprint:e,size:y.size??0,metadata:y.metadata??{},clientStorageKey:null,storeFingerprintForResuming:u,generateId:l});return g.onStart?.({uploadId:y.id,size:y.size??null}),{uploadIdStorageKey:w,uploadId:y.id,offset:y.offset}}async function L({uploadId:e,storageId:t,uploadIdStorageKey:n,fingerprint:r,source:i,uploadLengthDeferred:a,uploadistaApi:o,logger:s,platformService:c,checksumService:l,clientStorage:u,generateId:d,storeFingerprintForResuming:f,openWebSocket:p,...m}){let h=await o.getUpload(e),g=h.status;if(!C(g,200)){if(g===423){let e=new x({name:`UPLOAD_LOCKED`,message:`upload is currently locked; retry later`});throw m.onError?.(e),e}return C(g,400)&&await P(u,n),await I({platformService:c,fingerprint:r,storageId:t,source:i,uploadLengthDeferred:a,metadata:{},uploadistaApi:o,logger:s,checksumService:l,clientStorage:u,generateId:d,storeFingerprintForResuming:f,openWebSocket:p,closeWebSocket:()=>{},...m})}let _=h.upload;if(_==null){let e=new x({name:`NETWORK_UNEXPECTED_RESPONSE`,message:`Unexpected response while resuming upload`});throw m.onError?.(e),e}if(await N({clientStorage:u,fingerprint:r,size:_.size??0,metadata:_.metadata??{},clientStorageKey:n,storeFingerprintForResuming:f,generateId:d}),_.offset!==_.size)return p(_.id),{uploadId:e,uploadIdStorageKey:n,offset:_.offset}}async function re({source:e,uploadId:t,uploadIdStorageKey:n,storageId:r,fingerprint:i,platformService:a,uploadLengthDeferred:o,uploadistaApi:s,checksumService:c,logger:l,clientStorage:u,generateId:d,storeFingerprintForResuming:f,openWebSocket:p,closeWebSocket:m,...h}){return t!=null&&n!=null?(l.log(`Resuming upload from previous id: ${t}`),await L({uploadId:t,uploadIdStorageKey:n,storageId:r,fingerprint:i,source:e,checksumService:c,uploadLengthDeferred:o,uploadistaApi:s,logger:l,platformService:a,clientStorage:u,generateId:d,storeFingerprintForResuming:f,openWebSocket:p,...h})):(l.log(`Creating a new upload`),await I({fingerprint:i,storageId:r,source:e,uploadLengthDeferred:o,metadata:{},uploadistaApi:s,logger:l,checksumService:c,platformService:a,clientStorage:u,generateId:d,storeFingerprintForResuming:f,openWebSocket:p,closeWebSocket:m,...h}))}async function ie({source:e,storageId:t,fingerprint:n,uploadLengthDeferred:r,parallelUploads:i,parallelChunkSize:a,retryDelays:o,smartChunker:s,uploadistaApi:c,logger:l,checksumService:u,smartChunking:d,metrics:f,clientStorage:p,generateId:m,storeFingerprintForResuming:h,openWebSocket:g,closeWebSocket:_,terminate:v,abortControllerFactory:y,platformService:b,...S}){if(!e.size||e.size===0){S.onError?.(new x({name:`UPLOAD_SIZE_NOT_SPECIFIED`,message:`Parallel upload requires a known file size`}));return}let C=T(e.size,i,a);l.log(`Starting parallel upload with ${C.length} segments`);let w={segments:[],totalProgress:0,completed:!1,failed:!1},E=new Map,D=new Map,O=()=>{let e=Array.from(D.values()).reduce((e,t)=>e+t,0),t=Array.from(E.values()).reduce((e,t)=>e+t,0);w.totalProgress=e>0?t/e:0,S.onProgress&&e>0&&S.onProgress(`parallel-upload`,t,e)};try{let i=await Promise.all(C.map(async i=>{let a={...e,size:i.endByte-i.startByte,async slice(t,n){let r=i.startByte+(t??0),a=Math.min(i.startByte+(n??i.endByte-i.startByte),i.endByte);return await e.slice(r,a)}},o=await I({fingerprint:`${n}-segment-${i.segmentIndex}`,storageId:t,source:a,uploadLengthDeferred:r,platformService:b,metadata:{parallelUpload:`true`,segmentIndex:i.segmentIndex.toString(),totalSegments:C.length.toString(),parentFingerprint:n},checksumService:u,uploadistaApi:c,logger:l,clientStorage:p,generateId:m,storeFingerprintForResuming:h,openWebSocket:g,closeWebSocket:_,onSuccess:()=>{},onError:e=>l.log(`Segment ${i.segmentIndex} creation error: ${e}`),onStart:e=>{D.set(i.segmentIndex,e.size??0),O()}});if(!o)throw new x({name:`PARALLEL_SEGMENT_CREATION_FAILED`,message:`Failed to create upload segment ${i.segmentIndex}`});return{segment:{uploadId:o.uploadId,uploadIdStorageKey:o.uploadIdStorageKey,segmentIndex:i.segmentIndex,startByte:i.startByte,endByte:i.endByte,offset:o.offset,abortController:y.create(),retryTimeout:null},source:a}}));w.segments=i.map(e=>e.segment),S.onStart?.({uploadId:`parallel-${w.segments.map(e=>e.uploadId).join(`,`)}`,size:e.size});let a=i.map(async({segment:e,source:t})=>{try{await F({uploadId:e.uploadId,offset:e.offset,source:t,uploadLengthDeferred:r,abortController:e.abortController,retryDelays:o,smartChunker:s,uploadistaApi:c,platformService:b,logger:l,smartChunking:d,metrics:f,onProgress:(t,n,r)=>{E.set(e.segmentIndex,n),r&&D.set(e.segmentIndex,r),O()},onChunkComplete:(e,t,n)=>{S.onChunkComplete&&S.onChunkComplete(e,t,n)},onSuccess:t=>{l.log(`Segment ${e.segmentIndex} completed successfully`),E.set(e.segmentIndex,D.get(e.segmentIndex)??0),O()},onShouldRetry:(t,n)=>(l.log(`Segment ${e.segmentIndex} retry attempt ${n}: ${t}`),n<(o?.length??0)),onRetry:t=>{e.retryTimeout=t},onError:t=>{throw l.log(`Segment ${e.segmentIndex} failed: ${t}`),t}})}catch(t){throw l.log(`Segment ${e.segmentIndex} upload failed: ${t}`),new x({name:`PARALLEL_SEGMENT_UPLOAD_FAILED`,message:`Segment ${e.segmentIndex} upload failed`,cause:t})}});if(await Promise.all(a),w.completed=!0,l.log(`All parallel upload segments completed successfully`),S.onSuccess){let r={id:`parallel-${w.segments.map(e=>e.uploadId).join(`,`)}`,offset:e.size,size:e.size,storage:{id:t,type:`parallel-upload`},metadata:{parallelUpload:`true`,totalSegments:C.length.toString(),fingerprint:n}};S.onSuccess(r)}for(let e of i)e.source.close?.();return{parallelState:w,abort:async()=>{await R(w,l,v,_,b)}}}catch(e){throw w.failed=!0,w.error=e,await R(w,l,v,_,b),S.onError?.(e),e}}async function R(e,t,n,r,i){t.log(`Aborting parallel upload...`);for(let a of e.segments){a.abortController.abort(),a.retryTimeout&&=(i.clearTimeout(a.retryTimeout),null);try{await n(a.uploadId)}catch(e){t.log(`Failed to terminate segment ${a.segmentIndex}: ${e}`)}r(a.uploadId)}e.completed=!1,e.failed=!0,t.log(`Parallel upload aborted`)}async function z(e,t){return new Promise(n=>e.setTimeout(n,t))}async function B(e,t,n,r,i=0){try{if((await t.deleteUpload(e)).status===204)return;throw new x({name:`NETWORK_UNEXPECTED_RESPONSE`,message:`Unexpected response while terminating upload`})}catch(a){if(!D(n,a,i,r))throw a;return await z(n,r?.[i]??0),await B(e,t,n,r,i+1)}}async function V({uploadId:e,uploadIdStorageKey:t,retryTimeout:n,shouldTerminate:r,abortController:i,uploadistaApi:a,platformService:o,retryDelays:s,clientStorage:c}){if(i.abort(),n!=null&&o.clearTimeout(n),!(!r||e==null)&&(await B(e,a,o,s),t!=null))return P(c,t)}var H=class{constructor(e={}){this.chunkHistory=[],this.currentSession={},this.sessionStartTime=0,this.config={maxChunkHistory:e.maxChunkHistory??1e3,enableDetailedMetrics:e.enableDetailedMetrics??!0,performanceThresholds:{slowSpeed:100*1024,fastSpeed:5*1024*1024,highRetryRate:.2,...e.performanceThresholds}}}startSession(e,t,n){this.sessionStartTime=Date.now(),this.currentSession={uploadId:e,totalSize:t,chunksCompleted:0,chunksTotal:Math.ceil(t/(1024*1024)),totalDuration:0,totalRetries:0,adaptiveChunkingEnabled:n,startTime:this.sessionStartTime},this.chunkHistory=[]}recordChunk(e){let t={...e,timestamp:Date.now()};this.chunkHistory.push(t),this.chunkHistory.length>this.config.maxChunkHistory&&(this.chunkHistory=this.chunkHistory.slice(-this.config.maxChunkHistory)),this.currentSession&&t.success&&(this.currentSession.chunksCompleted=(this.currentSession.chunksCompleted||0)+1,this.currentSession.totalDuration=(this.currentSession.totalDuration||0)+t.duration,this.currentSession.totalRetries=(this.currentSession.totalRetries||0)+t.retryCount)}endSession(){if(!this.currentSession.uploadId)return null;let e=Date.now(),t=e-this.sessionStartTime,n=this.chunkHistory.filter(e=>e.success);if(n.length===0)return null;let r=n.map(e=>e.speed),i=r.reduce((e,t)=>e+t,0)/r.length,a=Math.max(...r),o=Math.min(...r),s=n.length/this.chunkHistory.length,c={uploadId:this.currentSession.uploadId||``,totalSize:this.currentSession.totalSize||0,totalDuration:t,chunksCompleted:n.length,chunksTotal:this.chunkHistory.length,averageSpeed:i,peakSpeed:a,minSpeed:o,totalRetries:this.currentSession.totalRetries||0,successRate:s,adaptiveChunkingEnabled:this.currentSession.adaptiveChunkingEnabled||!1,startTime:this.currentSession.startTime||0,endTime:e};return this.currentSession={},c}getCurrentSessionMetrics(){return{...this.currentSession}}getChunkHistory(e){let t=this.chunkHistory.slice();return e?t.slice(-e):t}getPerformanceInsights(){if(this.chunkHistory.length<5)return{overallEfficiency:0,chunkingEffectiveness:0,networkStability:0,recommendations:[`Insufficient data for analysis`],optimalChunkSizeRange:{min:256*1024,max:2*1024*1024}};let e=this.chunkHistory.filter(e=>e.success),t=e.map(e=>e.speed),n=t.length>0?t.reduce((e,t)=>e+t,0)/t.length:0,r=this.calculateVariance(t),i=Math.sqrt(r)/n,a=e.length/this.chunkHistory.length,o=Math.min(1,n/this.config.performanceThresholds.fastSpeed)*.7+a*.3,s=Math.max(0,1-Math.min(1,i));return{overallEfficiency:o,chunkingEffectiveness:this.calculateChunkingEffectiveness(e),networkStability:s,recommendations:this.generateRecommendations(n,a,i),optimalChunkSizeRange:this.calculateOptimalChunkSizeRange(e)}}exportMetrics(){return{session:this.getCurrentSessionMetrics(),chunks:this.getChunkHistory(),insights:this.getPerformanceInsights()}}reset(){this.chunkHistory=[],this.currentSession={},this.sessionStartTime=0}calculateVariance(e){if(e.length===0)return 0;let t=e.reduce((e,t)=>e+t,0)/e.length;return e.map(e=>(e-t)**2).reduce((e,t)=>e+t,0)/e.length}calculateChunkingEffectiveness(e){if(e.length<3)return .5;let t=this.groupChunksBySize(e);if(Object.keys(t).length<2)return .5;let n=Object.values(t).map(e=>{let t=e.map(e=>e.speed),n=t.reduce((e,t)=>e+t,0)/t.length,r=this.calculateVariance(t);return Math.sqrt(r)/n}),r=n.reduce((e,t)=>e+t,0)/n.length;return Math.max(0,1-Math.min(1,r))}groupChunksBySize(e){let t={};return e.forEach(e=>{let n;n=e.size<128*1024?`64KB`:e.size<256*1024?`128KB`:e.size<512*1024?`256KB`:e.size<1024*1024?`512KB`:e.size<2*1024*1024?`1MB`:e.size<4*1024*1024?`2MB`:e.size<8*1024*1024?`4MB`:`8MB+`,t[n]||(t[n]=[]);let r=t[n];r&&r.push(e)}),t}generateRecommendations(e,t,n){let r=[];return e<this.config.performanceThresholds.slowSpeed&&r.push(`Consider using smaller chunk sizes for better performance on slow connections`),e>this.config.performanceThresholds.fastSpeed&&r.push(`Network is fast - larger chunk sizes may improve efficiency`),t<.9&&r.push(`High failure rate detected - consider more conservative chunking strategy`),n>.5&&r.push(`Network appears unstable - smaller, more frequent chunks may be more reliable`),n<.2&&e>this.config.performanceThresholds.slowSpeed&&r.push(`Stable network detected - larger chunks may improve efficiency`),r.length===0&&r.push(`Performance appears optimal with current configuration`),r}calculateOptimalChunkSizeRange(e){if(e.length<5)return{min:256*1024,max:2*1024*1024};let t=e.slice().sort((e,t)=>t.speed-e.speed).slice(0,Math.ceil(e.length*.3)).map(e=>e.size),n=Math.min(...t),r=Math.max(...t);return{min:Math.max(64*1024,n),max:Math.min(32*1024*1024,r)}}};function U(e){return new t(e.getCapabilities(),t=>e.validateUploadStrategy(t))}function ae({capabilities:e,fileSize:t,chunkSize:n,parallelUploads:r,uploadLengthDeferred:i,strategyConfig:a,logger:o}){if(a?.enableCapabilityNegotiation!==!1){let i=U(new p(e)),s={fileSize:t||0,preferredStrategy:a?.preferredStrategy===`auto`?void 0:a?.preferredStrategy,preferredChunkSize:n,parallelUploads:r,minChunkSizeForParallel:a?.minFileSizeForParallel||10*1024*1024},c=i.negotiateStrategy(s);o.log(`Upload strategy negotiated: ${c.strategy}`);for(let e of c.reasoning)o.log(` - ${e}`);for(let e of c.warnings)o.log(` Warning: ${e}`);return a?.onStrategySelected?.({chosen:c.strategy,chunkSize:c.chunkSize,parallelUploads:c.parallelUploads,reasoning:c.reasoning,warnings:c.warnings}),c}else{let e=r>1&&t&&t>(a?.minFileSizeForParallel||10*1024*1024)&&!i;return{strategy:e?`parallel`:`single`,chunkSize:n,parallelUploads:e?r:1,reasoning:[`Legacy strategy selection: ${e?`parallel`:`single`}`],warnings:[]}}}function W(e,t=m,n){let r=[],i=[],a=U(new p(t)).validateConfiguration({fileSize:0,preferredStrategy:e.uploadStrategy?.preferredStrategy===`auto`?void 0:e.uploadStrategy?.preferredStrategy,preferredChunkSize:e.chunkSize,parallelUploads:e.parallelUploads});if(a.valid||r.push(...a.errors),e.parallelUploads&&e.parallelUploads<1&&r.push(`parallelUploads must be at least 1`),e.chunkSize&&e.chunkSize<1024&&i.push(`Chunk size below 1KB may impact performance`),e.uploadStrategy?.preferredStrategy===`parallel`&&!e.parallelUploads&&i.push(`Parallel strategy requested but parallelUploads not configured`),r.length>0){n.log(`Configuration validation errors:`);for(let e of r)n.log(` Error: ${e}`)}if(i.length>0){n.log(`Configuration validation warnings:`);for(let e of i)n.log(` Warning: ${e}`)}return{valid:r.length===0,errors:r,warnings:i}}function oe(e,t){let n=W(e,m,t);if(!n.valid){let e=`Upload client configuration validation failed: ${n.errors.join(`, `)}`;throw t.log(e),new x({name:`UPLOAD_SIZE_NOT_SPECIFIED`,message:e})}}const G=/^https?:\/\/.+/i;function se(e){return K(e)?`file`:typeof e==`string`&&G.test(e)?`url`:`data`}function K(e){if(typeof e!=`object`||!e)return!1;if(typeof globalThis<`u`&&(globalThis.File&&e instanceof globalThis.File||globalThis.Blob&&e instanceof globalThis.Blob))return!0;let t=e;return(`name`in t||`type`in t||`size`in t)&&(typeof t.size==`number`||t.size===void 0)}const q=(e,t)=>e&&{FILE_NOT_FOUND:`UPLOAD_NOT_FOUND`,UPLOAD_ID_NOT_FOUND:`UPLOAD_NOT_FOUND`,FLOW_JOB_NOT_FOUND:`JOB_NOT_FOUND`,FLOW_NODE_ERROR:`FLOW_RUN_FAILED`,FLOW_STRUCTURE_ERROR:`FLOW_RUN_FAILED`,FLOW_CYCLE_ERROR:`FLOW_RUN_FAILED`,FLOW_INPUT_VALIDATION_ERROR:`FLOW_RUN_FAILED`,FLOW_OUTPUT_VALIDATION_ERROR:`FLOW_RUN_FAILED`,VALIDATION_ERROR:`CREATE_UPLOAD_FAILED`,DATASTORE_NOT_FOUND:`FLOW_RUN_FAILED`}[e]||t;function ce(e,t,{httpClient:n,logger:r,authManager:i,webSocketFactory:a}){let s=i?new o(n,i):n,c=`${e}/${t}/api/upload`,l=`${e}/${t}/api/flow`,u=`${e}/${t}/api/jobs`,d=e.replace(`http`,`ws`),f=`${d}/uploadista/ws/upload`,p=`${d}/uploadista/ws/flow`,h=async(e,t)=>{if(r?.log(`Getting auth token for WebSocket (jobId: ${t})`),`attachToken`in e){r?.log(`Detected UploadistaCloudAuthManager, calling attachToken`);let n=(await e.attachToken({},t)).Authorization;if(n?.startsWith(`Bearer `))return r?.log(`Successfully extracted Bearer token from UploadistaCloudAuthManager`),n.substring(7);r?.log(`No valid Authorization header from UploadistaCloudAuthManager: ${n}`)}if(`attachCredentials`in e){r?.log(`Detected DirectAuthManager, calling attachCredentials`);let t=(await e.attachCredentials({})).Authorization;if(t)return r?.log(`Successfully extracted Authorization header from DirectAuthManager`),t.startsWith(`Bearer `)?t.substring(7):t;r?.log(`No Authorization header from DirectAuthManager`)}return r?.log(`No auth token could be extracted from auth manager`),null};return{getUpload:async e=>{let t=await s.request(`${c}/${e}`);if(!t.ok){let n=await t.json().catch(()=>({})),r=q(n.code,`UPLOAD_NOT_FOUND`),i=n.error||n.message||`Upload ${e} not found`;throw new x({name:r,message:n.code?`${i} (${n.code})`:i,status:t.status})}let n=await t.json();return{status:t.status,upload:n}},deleteUpload:async e=>{let t=await s.request(`${c}/${e}`,{method:`DELETE`});if(!t.ok){let n=await t.json().catch(()=>({})),r=q(n.code,`DELETE_UPLOAD_FAILED`),i=n.error||n.message||`Failed to delete upload ${e}`;throw new x({name:r,message:n.code?`${i} (${n.code})`:i,status:t.status})}return{status:t.status}},createUpload:async e=>{r?.log(`createUpload ${JSON.stringify(e)}`);let t=await s.request(c,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});if(!t.ok){let e=await t.json().catch(()=>({})),n=q(e.code,`CREATE_UPLOAD_FAILED`),r=e.error||e.message||`Failed to create upload`;throw new x({name:n,message:e.code?`${r} (${e.code})`:r,status:t.status})}let n=await t.json();return r?.log(JSON.stringify(n)),{status:t.status,upload:n}},uploadChunk:async(e,t,{abortController:n})=>{try{let r=await s.request(`${c}/${e}`,{method:`PATCH`,headers:{"Content-Type":`application/octet-stream`},body:t,signal:n?.signal});if(!r.ok){let e=await r.json().catch(()=>({}));throw new x({name:`NETWORK_ERROR`,message:e.error||e.message||`Unknown network error`,status:r.status})}let i=await r.json();return{status:r.status,upload:i}}catch(e){throw e instanceof x?e:new x({name:`NETWORK_ERROR`,message:`Network error`,cause:e})}},getFlow:async e=>{let t=await s.request(`${l}/${e}`);if(!t.ok){let n=await t.json().catch(()=>({})),r=q(n.code,`FLOW_NOT_FOUND`),i=n.error||n.message||`Flow ${e} not found`;throw new x({name:r,message:n.code?`${i} (${n.code})`:i,status:t.status})}let n=await t.json();return r?.log(`getFlow: ${e}`),{status:t.status,flow:n}},runFlow:async(e,t,n)=>{r?.log(`runFlow: ${e} with storage: ${t}`);let i=await s.request(`${l}/${e}/${t}`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({inputs:n})});if(!i.ok){let t=await i.json().catch(()=>({})),n=q(t.code,`FLOW_RUN_FAILED`),r=t.error||t.message||`Failed to run flow ${e}`;throw new x({name:n,message:t.code?`${r} (${t.code})`:r,status:i.status})}let a=await i.json();return r?.log(`runFlow response: ${JSON.stringify(a)}`),{status:i.status,job:a}},resumeFlow:async(e,t,n,r)=>{let i=r?.contentType||`application/json`,a;a=i===`application/octet-stream`?n:JSON.stringify({newData:n});let o=await s.request(`${u}/${e}/resume/${t}`,{method:`PATCH`,headers:{"Content-Type":i},body:a});if(!o.ok){let t=await o.json().catch(()=>({})),n=q(t.code,`FLOW_RESUMED_FAILED`),r=t.error||t.message||`Failed to resume flow for job ${e}`;throw new x({name:n,message:t.code?`${r} (${t.code})`:r,status:o.status})}return await o.json()},pauseFlow:async e=>{let t=await s.request(`${u}/${e}/pause`,{method:`POST`});if(!t.ok){let n=await t.json().catch(()=>({})),r=q(n.code,`FLOW_PAUSE_FAILED`),i=n.error||n.message||`Failed to pause flow for job ${e}`;throw new x({name:r,message:n.code?`${i} (${n.code})`:i,status:t.status})}let n=await t.json();return r?.log(`Flow paused: ${e}, status: ${n.status}`),n},cancelFlow:async e=>{let t=await s.request(`${u}/${e}/cancel`,{method:`POST`});if(!t.ok){let n=await t.json().catch(()=>({})),r=q(n.code,`FLOW_CANCEL_FAILED`),i=n.error||n.message||`Failed to cancel flow for job ${e}`;throw new x({name:r,message:n.code?`${i} (${n.code})`:i,status:t.status})}let n=await t.json();return r?.log(`Flow cancelled: ${e}, status: ${n.status}`),n},getJobStatus:async e=>{let t=await s.request(`${u}/${e}/status`);if(!t.ok){let n=await t.json().catch(()=>({})),r=q(n.code,`JOB_NOT_FOUND`),i=n.error||n.message||`Job ${e} not found`;throw new x({name:r,message:n.code?`${i} (${n.code})`:i,status:t.status})}return await t.json()},openUploadWebSocket:async e=>{let t=`${f}/${e}`;if(i)try{let n=await h(i,e);n?(t+=`?token=${encodeURIComponent(n)}`,r?.log(`WebSocket token attached for upload: ${e}`)):r?.log(`No token for upload WebSocket (using cookie-based auth): ${e}`)}catch(t){let n=t instanceof Error?t.message:String(t);r?.log(`Error getting auth token for upload WebSocket: ${n}`),r?.log(`Proceeding with cookie-based authentication for upload WebSocket: ${e}`)}let n=a.create(t);return n.onopen=()=>{r?.log(`Upload WebSocket connection opened for: ${e}`)},n.onclose=()=>{r?.log(`Upload WebSocket connection closed for: ${e}`)},n.onerror=t=>{r?.log(`Upload WebSocket error for ${e}: ${t}`)},n},openFlowWebSocket:async e=>{let t=`${p}/${e}`;if(i)try{let n=await h(i,e);n?(t+=`?token=${encodeURIComponent(n)}`,r?.log(`WebSocket token attached for flow job: ${e}`)):r?.log(`No token for flow WebSocket (using cookie-based auth): ${e}`)}catch(t){let n=t instanceof Error?t.message:String(t);r?.log(`Error getting auth token for flow WebSocket: ${n}`),r?.log(`Proceeding with cookie-based authentication for flow WebSocket: ${e}`)}let n=a.create(t);return n.onopen=()=>{r?.log(`Flow WebSocket connection opened for job: ${e}`)},n.onclose=()=>{r?.log(`Flow WebSocket connection closed for job: ${e}`)},n.onerror=t=>{r?.log(`Flow WebSocket error for job ${e}: ${t}`)},n},closeWebSocket:e=>{e.close()},getConnectionMetrics:()=>s.getMetrics(),getDetailedConnectionMetrics:()=>s.getDetailedMetrics(),warmupConnections:async e=>s.warmupConnections(e),getCapabilities:async e=>{let t=`${c}/capabilities?storageId=${encodeURIComponent(e)}`;try{let e=await s.request(t,{method:`GET`,headers:{"Content-Type":`application/json`}});return e.ok?(await e.json()).capabilities:(r?.log(`Failed to fetch capabilities: ${e.status} ${e.statusText}`),m)}catch(e){return r?.log(`Failed to fetch server capabilities, using defaults: ${e}`),m}}}}var le=class{constructor(e,t,n){this.uploadistaApi=e,this.logger=t,this.onEvent=n,this.uploadWebsockets=new Map,this.flowWebsockets=new Map}async openUploadWebSocket(e){this.closeUploadWebSocket(e);let t=await this.uploadistaApi.openUploadWebSocket(e);return this.uploadWebsockets.set(e,t),t.onmessage=e=>{try{let t=n.safeParse(JSON.parse(e.data));t.success?t.data.type===`upload_event`&&this.onEvent?.(t.data.payload):this.logger.error(`Error parsing upload event: ${t.error.message}`)}catch(e){this.logger.error(`Error parsing upload event: ${e}`)}},t.onerror=t=>{this.logger.error(`Upload WebSocket error for ${e}: ${t}`)},t.onclose=t=>{this.logger.log(`Upload WebSocket closed for ${e}, \n code: ${t.code}, reason: ${t.reason}`),this.uploadWebsockets.delete(e)},t}async openFlowWebSocket(e){this.closeFlowWebSocket(e);let t=await this.uploadistaApi.openFlowWebSocket(e);return this.flowWebsockets.set(e,t),t.onmessage=t=>{try{let n=JSON.parse(t.data);switch(n.type){case`connection`:this.logger.log(`Flow WebSocket connected for job: ${n.id}`);break;case`subscribed`:this.logger.log(`Flow WebSocket subscribed for job: ${n.payload.jobId}`);break;case`error`:this.logger.error(`Flow WebSocket error: ${n.message} for job ${e} with code ${n.code}`);break;case`pong`:this.logger.log(`Flow WebSocket pong received for job: ${e}`);break;case`flow_event`:this.onEvent?.(n.payload);break;default:this.logger.warn(`Unknown flow WebSocket message type: ${n.type}`)}}catch(e){this.logger.error(`Error parsing flow WebSocket message:${e}`)}},t.onerror=t=>{this.logger.error(`Flow WebSocket error for job ${e}: ${t}`)},t.onclose=t=>{this.logger.log(`Flow WebSocket closed for job ${e}, \n code: ${t.code}, reason: ${t.reason}`),this.flowWebsockets.delete(e)},t}async openWebSocket(e){return e.startsWith(`upload-`)||e.includes(`upload`)?await this.openUploadWebSocket(e):await this.openFlowWebSocket(e)}closeUploadWebSocket(e){let t=this.uploadWebsockets.get(e);t&&(this.uploadistaApi.closeWebSocket(t),this.uploadWebsockets.delete(e))}closeFlowWebSocket(e){let t=this.flowWebsockets.get(e);t&&(this.uploadistaApi.closeWebSocket(t),this.flowWebsockets.delete(e))}closeWebSocket(e){this.closeUploadWebSocket(e),this.closeFlowWebSocket(e)}closeAll(){for(let[e,t]of this.uploadWebsockets.entries())this.uploadistaApi.closeWebSocket(t),this.uploadWebsockets.delete(e);for(let[e,t]of this.flowWebsockets.entries())this.uploadistaApi.closeWebSocket(t),this.flowWebsockets.delete(e)}sendPing(e){let t=this.flowWebsockets.get(e);return t&&t.readyState===t.OPEN?(t.send(JSON.stringify({type:`ping`,timestamp:new Date().toISOString()})),!0):!1}getUploadWebSocket(e){return this.uploadWebsockets.get(e)}getFlowWebSocket(e){return this.flowWebsockets.get(e)}isUploadConnected(e){let t=this.uploadWebsockets.get(e);return t?.readyState===t?.OPEN}isFlowConnected(e){let t=this.flowWebsockets.get(e);return t?.readyState===t?.OPEN}isConnected(e){return this.isUploadConnected(e)||this.isFlowConnected(e)}getConnectionCount(){return this.uploadWebsockets.size+this.flowWebsockets.size}getConnectionCountByType(){return{upload:this.uploadWebsockets.size,flow:this.flowWebsockets.size,total:this.uploadWebsockets.size+this.flowWebsockets.size}}};const J={maxConnectionsPerHost:8,connectionTimeout:2e4,keepAliveTimeout:9e4,enableHttp2:!0,retryOnConnectionError:!0};function Y({baseUrl:e,uploadistaBasePath:t=`uploadista`,storageId:n,retryDelays:r=[1e3,3e3,5e3],chunkSize:i,parallelUploads:a=1,parallelChunkSize:o,uploadStrategy:s,smartChunking:d,networkMonitoring:p,uploadMetrics:_,checksumService:v,onEvent:y,generateId:x,httpClient:S,logger:C=f(!0),fileReader:T,fingerprintService:E,clientStorage:D,storeFingerprintForResuming:O=!0,webSocketFactory:N,abortControllerFactory:P,platformService:I,auth:L}){let R=e.replace(/\/$/,``),z=L?L.mode===`direct`?new c(L,I,C):new u(L,S):new l;L&&C.log(`Authentication enabled in ${L.mode} mode${L.mode===`uploadista-cloud`?` (server: ${L.authServerUrl})`:``}`);let U=ce(R,t,{logger:C,httpClient:S,authManager:z,webSocketFactory:N}),G=new h(p),K=new H(_),q=null,J=async()=>q||(q=await U.getCapabilities(n),q),Y,X=async()=>{if(Y)return Y;let e=await J(),t=e.minChunkSize&&e.maxChunkSize&&e.optimalChunkSize?{minChunkSize:e.minChunkSize,maxChunkSize:e.maxChunkSize,optimalChunkSize:e.optimalChunkSize,requiresOrderedChunks:e.requiresOrderedChunks}:void 0;return Y=new b(G,{enabled:!0,...d,fallbackChunkSize:i,datastoreConstraints:t}),C.log(`Smart chunker initialized with datastore constraints: ${JSON.stringify(t)}`),Y},Z=new le(U,C,y);return oe({baseUrl:R,storageId:n,chunkSize:i,parallelUploads:a,parallelChunkSize:o,uploadStrategy:s},C),{upload:async(e,{uploadLengthDeferred:c=!1,uploadSize:l,onProgress:u,onChunkComplete:f,onSuccess:p,onShouldRetry:m,onError:h}={})=>{let g=null,_=null,y=await E.computeFingerprint(e,`${R}/${t}/api/upload`);if(C.log(`fingerprint: ${y}`),!y)throw Error(`unable calculate fingerprint for this input file`);let b=await te(D,y);if(b.length>0&&b[0]!=null){let e=ne(b[0]);_=e.clientStorageKey,g=e.uploadId}let S=await T.openFile(e,i),k=w(S.size,{uploadLengthDeferred:c,uploadSize:l});S.size=k;let A=await X();d?.enabled!==!1&&K.startSession(y,k||0,!0);let j=ae({capabilities:await J(),fileSize:k,chunkSize:i,parallelUploads:a,uploadLengthDeferred:c,strategyConfig:s,logger:C});if(j.strategy===`parallel`){C.log(`Using parallel upload with ${j.parallelUploads} streams`);let e=await ie({checksumService:v,source:S,storageId:n,fingerprint:y,uploadLengthDeferred:c,parallelUploads:j.parallelUploads,parallelChunkSize:o,retryDelays:r,smartChunker:A,uploadistaApi:U,logger:C,smartChunking:d,metrics:K,clientStorage:D,generateId:x,storeFingerprintForResuming:O,abortControllerFactory:P,platformService:I,openWebSocket:e=>(Z.openUploadWebSocket(e),null),closeWebSocket:e=>Z.closeUploadWebSocket(e),terminate:e=>B(e,U,I,r),onProgress:u,onChunkComplete:f,onSuccess:p,onError:h});if(e)return{abort:async()=>{await e.abort()}};C.log(`Parallel upload failed, falling back to single upload`)}let M=await re({source:S,storageId:n,uploadId:g,platformService:I,uploadIdStorageKey:_,checksumService:v,fingerprint:y,uploadLengthDeferred:c,uploadistaApi:U,logger:C,clientStorage:D,generateId:x,storeFingerprintForResuming:O,openWebSocket:e=>(Z.openUploadWebSocket(e),null),closeWebSocket:e=>Z.closeUploadWebSocket(e),onProgress:u,onChunkComplete:f,onSuccess:p,onError:h});if(M){let e=P.create(),{uploadId:t,uploadIdStorageKey:n,offset:i}=M,a=null;return F({platformService:I,uploadId:t,offset:i,source:S,uploadLengthDeferred:c,retryDelays:r,smartChunker:A,uploadistaApi:U,logger:C,smartChunking:d,metrics:K,abortController:e,onProgress:u,onChunkComplete:f,onSuccess:p,onShouldRetry:m,onRetry:e=>{a=e},onError:h}),{abort:()=>{V({platformService:I,uploadId:t,uploadIdStorageKey:n,retryTimeout:a,shouldTerminate:!0,abortController:e,uploadistaApi:U,retryDelays:r,clientStorage:D})}}}return{abort:()=>{}}},uploadWithFlow:async(e,n,{onProgress:a,onChunkComplete:o,onSuccess:s,onShouldRetry:c,onJobStart:l,onError:u,onAbort:f}={})=>{let p=await T.openFile(e,i),m=await X();if(d?.enabled!==!1){let n=await E.computeFingerprint(e,`${R}/${t}/api/flow`);K.startSession(n||`unknown`,p.size||0,!0)}let h=await k({source:p,flowConfig:n,uploadistaApi:U,logger:C,platformService:I,openWebSocket:e=>Z.openFlowWebSocket(e),closeWebSocket:e=>Z.closeWebSocket(e),onProgress:a,onChunkComplete:o,onSuccess:s,onJobStart:l,onError:u});if(!h)return{abort:async()=>{},pause:async()=>{},resume:async()=>{},jobId:``};let{jobId:_,uploadFile:v,inputNodeId:y}=h,b=new g(P.create());await Z.openUploadWebSocket(v.id);let x=null;return A({jobId:_,uploadFile:v,inputNodeId:y,offset:v.offset,source:p,retryDelays:r,smartChunker:m,uploadistaApi:U,logger:C,smartChunking:d,metrics:K,platformService:I,abortController:b,onProgress:a,onChunkComplete:o,onSuccess:s,onShouldRetry:c,onAbort:f,onRetry:e=>{x=e},onError:u}),{abort:async()=>{try{await U.cancelFlow(_),C.log(`Flow cancelled on server: ${_}`)}catch(e){C.log(`Failed to cancel flow on server: ${e}`)}b.abort(),x&&I.clearTimeout(x),Z.closeWebSocket(_),Z.closeUploadWebSocket(v.id)},pause:async()=>{b.pause()},resume:async()=>{b.resume()},jobId:_}},multiInputFlowUpload:async(e,t,{onProgress:a,onChunkComplete:o,onShouldRetry:s,onJobStart:c,onError:l,onInputProgress:u,onInputComplete:f,onInputError:p}={})=>{let{job:m}=await U.runFlow(t.flowId,t.storageId||n,{}),h=m.id;C.log(`Multi-input flow started: ${h}`),c?.(h),await Z.openFlowWebSocket(h);let _=new Map,v=new Map,y=[];try{let c=Object.entries(e).map(async([e,r])=>{let a=se(r);if(a===`file`){let o=r,s=await T.openFile(o,i);return{nodeId:e,uploadFile:(await j({nodeId:e,jobId:h,source:s,storageId:t.storageId||n,metadata:{},uploadistaApi:U,logger:C,platformService:I,callbacks:{onStart:({uploadId:t})=>{v.set(e,t),Z.openUploadWebSocket(t)},onError:l}})).uploadFile,source:s,inputType:a}}else if(a===`url`)return await U.resumeFlow(h,e,{operation:`url`,url:r,storageId:t.storageId||n},{contentType:`application/json`}),{nodeId:e,uploadFile:null,source:null,inputType:a};else return await U.resumeFlow(h,e,r,{contentType:`application/json`}),{nodeId:e,uploadFile:null,source:null,inputType:a}}),m=await Promise.all(c),b=await X(),x=m.filter(e=>e.inputType===`file`&&e.uploadFile&&e.source).map(async({nodeId:e,uploadFile:t,source:n})=>{let i=new g(P.create());_.set(e,i);let c=new H({enableDetailedMetrics:d?.enabled!==!1});if(!t||!n)throw Error(`Missing uploadFile or source for node ${e}`);try{await M({nodeId:e,jobId:h,uploadFile:t,source:n,offset:t.offset,retryAttempt:0,abortController:i,retryDelays:r,smartChunker:b,uploadistaApi:U,logger:C,smartChunking:d,metrics:c,platformService:I,onRetry:e=>{y.push(e)},callbacks:{onProgress:(t,n,r)=>{a?.(t,n,r);let i=r?Math.round(n/r*100):0;u?.(e,i,n,r)},onChunkComplete:o,onShouldRetry:s}}),await ee({nodeId:e,jobId:h,uploadId:t.id,uploadistaApi:U,logger:C,callbacks:{onError:l}}),f?.(e)}catch(t){let n=t instanceof Error?t:Error(String(t));throw p?.(e,n),n}});await Promise.all(x),C.log(`All inputs uploaded for job: ${h}`)}catch(e){let t=e instanceof Error?e:Error(String(e));throw C.log(`Multi-input flow upload failed: ${t.message}`),l?.(t),t}return{abort:async()=>{try{await U.cancelFlow(h),C.log(`Flow cancelled on server: ${h}`)}catch(e){C.log(`Failed to cancel flow on server: ${e}`)}for(let e of _.values())e.abort();for(let e of y)I.clearTimeout(e);Z.closeWebSocket(h);for(let e of v.values())Z.closeUploadWebSocket(e)},pause:async()=>{for(let e of _.values())`pause`in e&&typeof e.pause==`function`&&e.pause()},resume:async()=>{for(let e of _.values())`resume`in e&&typeof e.resume==`function`&&e.resume()},jobId:h}},abort:e=>V(e),getFlow:async e=>{let{status:t,flow:n}=await U.getFlow(e);return{status:t,flow:n}},runFlow:async({flowId:e,inputs:t,storageId:r})=>{let{status:i,job:a}=await U.runFlow(e,r||n,t);return{status:i,job:a}},resumeFlow:async({jobId:e,nodeId:t,newData:n,contentType:r})=>U.resumeFlow(e,t,n,{contentType:r}),pauseFlow:async e=>U.pauseFlow(e),cancelFlow:async e=>U.cancelFlow(e),findInputNode:async e=>{let{flow:t}=await U.getFlow(e),n=t.nodes.filter(e=>e.type===`input`).map(e=>({id:e.id,type:e.type,name:e.name}));return{inputNodes:n,single:n.length===1}},executeFlowWithInputs:async(e,t,r)=>{let{status:i,job:a}=await U.runFlow(e,r?.storageId||n,t);return a?.id&&r?.onJobStart&&r.onJobStart(a.id),{status:i,job:a}},getJobStatus:async e=>U.getJobStatus(e),openUploadWebSocket:e=>Z.openUploadWebSocket(e),openFlowWebSocket:e=>Z.openFlowWebSocket(e),openWebSocket:e=>Z.openWebSocket(e),closeWebSocket:e=>Z.closeWebSocket(e),closeAllWebSockets:()=>Z.closeAll(),sendPing:e=>Z.sendPing(e),isWebSocketConnected:e=>Z.isConnected(e),getWebSocketConnectionCount:()=>Z.getConnectionCount(),getWebSocketConnectionCountByType:()=>Z.getConnectionCountByType(),getNetworkMetrics:()=>G.getCurrentMetrics(),getNetworkCondition:()=>G.getNetworkCondition(),getChunkingInsights:()=>K.getPerformanceInsights(),exportMetrics:()=>K.exportMetrics(),getConnectionMetrics:()=>U.getConnectionMetrics(),getDetailedConnectionMetrics:()=>U.getDetailedConnectionMetrics(),warmupConnections:e=>U.warmupConnections(e),getConnectionPoolingInsights:async()=>(await X()).getConnectionPoolingInsights(),resetMetrics:async()=>{G.reset(),(await X()).reset(),K.reset()},validateConfiguration:e=>W(e,m,C),validateConfigurationAsync:async e=>{let t=[],n=[],r=await U.getCapabilities(e.storageId),i=W(e,r,C);return t.push(...i.errors),n.push(...i.warnings),{valid:t.length===0,errors:t,warnings:n,capabilities:r}},getCapabilities:J}}var X=class{constructor(e){this.eventSource=e,this.subscriptions=[]}subscribe(e,t){let n=n=>{this.shouldHandleEvent(n,t)&&e(n)},r=this.eventSource.subscribe(n),i={unsubscribe:r,handler:n,filter:t};return this.subscriptions.push(i),()=>{let e=this.subscriptions.indexOf(i);e!==-1&&this.subscriptions.splice(e,1),r()}}shouldHandleEvent(e,t){if(!t)return!0;if(t.eventType&&e.type!==t.eventType)return!1;if(t.uploadId!==void 0){let n=e.data?.id;if(t.uploadId===null){if(n!==void 0)return!1}else if(n!==t.uploadId)return!1}return t.customFilter?t.customFilter(e):!0}getSubscriptionCount(){return this.subscriptions.length}hasSubscriptions(){return this.subscriptions.length>0}cleanup(){for(let e of this.subscriptions)e.unsubscribe();this.subscriptions=[]}updateUploadIdFilter(e){for(let t of this.subscriptions)t.filter&&t.filter.uploadId!==void 0&&(t.filter.uploadId=e)}};const Z={status:`idle`,progress:0,bytesUploaded:0,totalBytes:null,error:null,jobId:null,flowStarted:!1,currentNodeName:null,currentNodeType:null,flowOutputs:null,pausedAtNodeId:null};var ue=class{constructor(e,t,n,r){this.flowUploadFn=e,this.callbacks=t,this.options=n,this.multiInputUploadFn=r,this.abortController=null,this.inputStates=new Map,this.currentSingleInputNodeId=null,this.state={...Z}}getState(){return{...this.state}}isUploading(){return this.state.status===`uploading`||this.state.status===`processing`}isUploadingFile(){return this.state.status===`uploading`}isProcessing(){return this.state.status===`processing`}isPaused(){return this.state.status===`paused`}getJobId(){return this.state.jobId}getPausedAtNodeId(){return this.state.pausedAtNodeId}updateState(e){this.state={...this.state,...e},this.callbacks.onStateChange(this.state)}handleFlowEvent(e){if(e.eventType===r.FlowStart&&!this.state.jobId){this.updateState({jobId:e.jobId,flowStarted:!0,status:`processing`});return}if(!(!this.state.jobId||e.jobId!==this.state.jobId))switch(e.eventType){case r.FlowStart:this.updateState({flowStarted:!0,status:`processing`});break;case r.NodeStart:this.updateState({status:`processing`,currentNodeName:e.nodeName,currentNodeType:e.nodeType});break;case r.NodePause:this.updateState({status:`uploading`,currentNodeName:e.nodeName});break;case r.NodeResume:this.updateState({status:`processing`,currentNodeName:e.nodeName,currentNodeType:e.nodeType});break;case r.NodeEnd:this.updateState({status:this.state.status===`uploading`?`processing`:this.state.status,currentNodeName:null,currentNodeType:null});break;case r.FlowEnd:{let t=e.outputs||null;t&&this.callbacks.onFlowComplete&&this.callbacks.onFlowComplete(t),t&&t.length>0&&this.callbacks.onSuccess&&this.callbacks.onSuccess(t),this.updateState({status:`success`,currentNodeName:null,currentNodeType:null,flowOutputs:t}),this.abortController=null;break}case r.FlowError:{let t=Error(e.error);this.updateState({status:`error`,error:t}),this.callbacks.onError?.(t),this.abortController=null;break}case r.NodeError:{let t=Error(e.error);this.updateState({status:`error`,error:t}),this.callbacks.onError?.(t),this.abortController=null;break}case r.FlowCancel:this.updateState({status:`aborted`}),this.callbacks.onAbort?.(),this.abortController=null;break;case r.FlowPause:this.updateState({status:`paused`,pausedAtNodeId:e.pausedAt??null}),this.callbacks.onPause?.();break}}handleUploadProgress(e,t,n){let r=n&&n>0?Math.round(t/n*100):0;if(this.updateState({bytesUploaded:t,totalBytes:n,progress:r}),this.currentSingleInputNodeId){let e=this.inputStates.get(this.currentSingleInputNodeId);e&&(e.status=`uploading`,e.progress=r,e.bytesUploaded=t,e.totalBytes=n)}this.callbacks.onProgress?.(e,t,n)}async upload(e){let t=null;e&&typeof e==`object`&&`size`in e&&typeof e.size==`number`&&(t=e.size),this.updateState({status:`uploading`,progress:0,bytesUploaded:0,totalBytes:t,error:null,jobId:null,flowStarted:!1,currentNodeName:null,currentNodeType:null,flowOutputs:null});try{let t={onJobStart:e=>{this.updateState({jobId:e}),this.options?.onJobStart?.(e)},onProgress:(e,t,n)=>{this.handleUploadProgress(e,t,n),this.options?.onProgress?.(e,t,n)},onChunkComplete:(e,t,n)=>{this.callbacks.onChunkComplete?.(e,t,n),this.options?.onChunkComplete?.(e,t,n)},onSuccess:e=>{if(this.updateState({progress:100}),this.currentSingleInputNodeId){let e=this.inputStates.get(this.currentSingleInputNodeId);e&&(e.status=`complete`,e.progress=100),this.currentSingleInputNodeId=null}},onError:e=>{if(this.updateState({status:`error`,error:e}),this.currentSingleInputNodeId){let t=this.inputStates.get(this.currentSingleInputNodeId);t&&(t.status=`error`,t.error=e),this.currentSingleInputNodeId=null}this.callbacks.onError?.(e),this.options?.onError?.(e),this.abortController=null},onAbort:()=>{if(this.updateState({status:`aborted`}),this.currentSingleInputNodeId){let e=this.inputStates.get(this.currentSingleInputNodeId);e&&(e.status=`error`,e.error=Error(`Upload aborted`)),this.currentSingleInputNodeId=null}this.callbacks.onAbort?.(),this.options?.onAbort?.(),this.abortController=null},onShouldRetry:this.options?.onShouldRetry};this.abortController=await this.flowUploadFn(e,this.options.flowConfig,t)}catch(e){let t=e instanceof Error?e:Error(String(e));if(this.updateState({status:`error`,error:t}),this.currentSingleInputNodeId){let e=this.inputStates.get(this.currentSingleInputNodeId);e&&(e.status=`error`,e.error=t),this.currentSingleInputNodeId=null}this.callbacks.onError?.(t),this.options?.onError?.(t),this.abortController=null}}async abort(){this.abortController&&await this.abortController.abort()}async pause(){if(!(this.state.status!==`uploading`&&this.state.status!==`processing`)){if(this.abortController?.pause)try{await this.abortController.pause()}catch{}this.updateState({status:`paused`,pausedAtNodeId:this.state.currentNodeName??null})}}async resume(){if(this.state.status!==`paused`)return;let e=this.state.flowStarted?`processing`:`uploading`;if(this.abortController?.resume)try{await this.abortController.resume()}catch{}this.updateState({status:e,pausedAtNodeId:null})}reset(){this.abortController&&=(this.abortController.abort(),null);for(let e of this.inputStates.values())e.abortController&&e.abortController.abort();this.inputStates.clear(),this.currentSingleInputNodeId=null,this.state={...Z},this.callbacks.onStateChange(this.state)}aggregateProgress(){if(this.inputStates.size===0)return;let e=Array.from(this.inputStates.values()),t=e.reduce((e,t)=>e+t.progress,0),n=Math.round(t/e.length),r=e.reduce((e,t)=>e+(t.totalBytes||0),0),i=e.reduce((e,t)=>e+t.bytesUploaded,0);this.updateState({progress:n,bytesUploaded:i,totalBytes:r>0?r:null})}async executeFlow(e){let t=Object.entries(e);if(t.length===0)throw Error(`No inputs provided to executeFlow`);this.inputStates.clear();for(let[t,n]of Object.entries(e)){let e=se(n);this.inputStates.set(t,{nodeId:t,type:e,status:`pending`,progress:0,bytesUploaded:0,totalBytes:e===`file`&&n&&typeof n==`object`&&`size`in n&&typeof n.size==`number`?n.size:null,error:null,abortController:null})}if(t.length===1){let e=t[0];if(!e)throw Error(`No inputs provided to executeFlow`);let[n,r]=e;this.currentSingleInputNodeId=n,await this.upload(r);return}if(!this.multiInputUploadFn)throw Error(`Multi-input flows require multiInputUploadFn to be provided in FlowManager constructor. Platform packages should implement MultiInputFlowUploadFunction.`);this.updateState({status:`uploading`,progress:0,bytesUploaded:0,totalBytes:null,error:null,jobId:null,flowStarted:!1,currentNodeName:null,currentNodeType:null,flowOutputs:null});try{let t={onJobStart:e=>{this.updateState({jobId:e}),this.options?.onJobStart?.(e)},onProgress:(e,t,n)=>{this.options?.onProgress?.(e,t,n)},onSuccess:e=>{this.updateState({progress:100})},onError:e=>{this.updateState({status:`error`,error:e}),this.callbacks.onError?.(e),this.options?.onError?.(e),this.abortController=null},onAbort:()=>{this.updateState({status:`aborted`}),this.callbacks.onAbort?.(),this.options?.onAbort?.(),this.abortController=null},onShouldRetry:this.options?.onShouldRetry};this.abortController=await this.multiInputUploadFn(e,this.options.flowConfig,t,{onInputProgress:(e,t,n,r)=>{let i=this.inputStates.get(e);i&&(i.status=`uploading`,i.progress=t,i.bytesUploaded=n,i.totalBytes=r),this.aggregateProgress()},onInputComplete:e=>{let t=this.inputStates.get(e);t&&(t.status=`complete`,t.progress=100),this.aggregateProgress()},onInputError:(e,t)=>{let n=this.inputStates.get(e);n&&(n.status=`error`,n.error=t)}})}catch(e){let t=e instanceof Error?e:Error(String(e));this.updateState({status:`error`,error:t}),this.callbacks.onError?.(t),this.options?.onError?.(t),this.abortController=null}}getInputStates(){return this.inputStates}cleanup(){this.abortController&&=(this.abortController.abort(),null);for(let e of this.inputStates.values())e.abortController&&e.abortController.abort();this.inputStates.clear(),this.currentSingleInputNodeId=null}};const de={status:`idle`,progress:0,bytesUploaded:0,totalBytes:null,error:null,result:null};var fe=class{constructor(e,t,n){this.uploadFn=e,this.callbacks=t,this.options=n,this.abortController=null,this.lastInput=null,this.uploadId=null,this.state={...de}}getState(){return{...this.state}}isUploading(){return this.state.status===`uploading`}canRetry(){return(this.state.status===`error`||this.state.status===`aborted`)&&this.lastInput!==null}updateState(e){this.state={...this.state,...e},this.callbacks.onStateChange(this.state)}async upload(e){let t=null;e&&typeof e==`object`&&`size`in e&&typeof e.size==`number`&&(t=e.size),this.updateState({status:`uploading`,progress:0,bytesUploaded:0,totalBytes:t,error:null,result:null}),this.lastInput=e;try{let t={...this.options,onProgress:(e,t,n)=>{this.uploadId||=e;let r=n?Math.round(t/n*100):0;this.updateState({progress:r,bytesUploaded:t,totalBytes:n}),this.callbacks.onProgress?.(e,t,n),this.options?.onProgress?.(e,t,n)},onChunkComplete:(e,t,n)=>{this.callbacks.onChunkComplete?.(e,t,n),this.options?.onChunkComplete?.(e,t,n)},onSuccess:e=>{this.updateState({status:`success`,result:e,progress:100,bytesUploaded:e.size||0,totalBytes:e.size||null}),this.callbacks.onSuccess?.(e),this.options?.onSuccess?.(e),this.abortController=null},onError:e=>{this.updateState({status:`error`,error:e}),this.callbacks.onError?.(e),this.options?.onError?.(e),this.abortController=null},onAbort:()=>{this.updateState({status:`aborted`}),this.callbacks.onAbort?.(),this.options?.onAbort?.(),this.abortController=null},onShouldRetry:this.options?.onShouldRetry};this.abortController=await this.uploadFn(e,t)}catch(e){let t=e instanceof Error?e:Error(String(e));this.updateState({status:`error`,error:t}),this.callbacks.onError?.(t),this.options?.onError?.(t),this.abortController=null}}abort(){this.abortController&&this.abortController.abort()}reset(){this.abortController&&=(this.abortController.abort(),null),this.state={...de},this.lastInput=null,this.uploadId=null,this.callbacks.onStateChange(this.state)}retry(){this.canRetry()&&this.lastInput!==null&&this.upload(this.lastInput)}cleanup(){this.abortController&&=(this.abortController.abort(),null),this.uploadId=null}};const Q=i.lazy(()=>i.union([i.string(),i.number(),i.boolean(),i.null(),i.array(Q),i.record(i.string(),Q)])),$=i.object({size:i.number().nullable(),metadata:i.record(i.string(),Q),creationTime:i.string(),uploadId:i.string().optional(),parallelUploadUrls:i.array(i.string()).optional(),clientStorageKey:i.string()});function pe(e){return{findAllUploads:async()=>{let t=await e.find(`uploadista::`);return Object.values(t).map(e=>$.parse(JSON.parse(e)))},findUploadsByFingerprint:async t=>{let n=await e.find(`uploadista::${t}`);return Object.values(n).map(e=>$.parse(JSON.parse(e)))},removeUpload:t=>e.removeItem(t),addUpload:async(t,n,{generateId:r})=>{let i=`uploadista::${t}::${r.generate()}`;return await e.setItem(i,JSON.stringify(n)),i}}}function me(){let e=new Map;return{async getItem(t){return e.get(t)??null},async setItem(t,n){e.set(t,n)},async removeItem(t){e.delete(t)},async findAll(){return Object.fromEntries(e.entries())},async find(t){return Object.fromEntries(Array.from(e.entries()).filter(([e])=>e.startsWith(t)))}}}export{a as ChunkBuffer,X as EventSubscriptionManager,ue as FlowManager,h as NetworkMonitor,g as PausableAbortController,fe as UploadManager,x as UploadistaError,le as UploadistaWebSocketManager,pe as createClientStorage,me as createInMemoryStorageService,f as createLogger,ce as createUploadistaApi,Y as createUploadistaClient,J as defaultConnectionPoolingConfig,$ as previousUploadSchema,z as wait,_ as waitForResumeIfPaused};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|