@uploadista/client-core 1.0.0-beta.3 → 1.0.0

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 CHANGED
@@ -2,7 +2,6 @@ import { UploadStrategyNegotiator } from "@uploadista/core/upload";
2
2
  import { DataStoreCapabilities, InputFile, JsonValue, UploadEvent, UploadFile } from "@uploadista/core/types";
3
3
  import { FlowData, FlowEvent, FlowJob, TypedOutput } from "@uploadista/core/flow";
4
4
  import z from "zod";
5
- import * as _uploadista_core0 from "@uploadista/core";
6
5
  import { UploadFile as UploadFile$1 } from "@uploadista/core";
7
6
 
8
7
  //#region src/types/buffered-chunk.d.ts
@@ -2623,7 +2622,7 @@ declare function createUploadistaClient<UploadInput>({
2623
2622
  abort: (params: Parameters<typeof abort>[0]) => Promise<void>;
2624
2623
  getFlow: (flowId: string) => Promise<{
2625
2624
  status: number;
2626
- flow: _uploadista_core0.FlowData;
2625
+ flow: import("@uploadista/core").FlowData;
2627
2626
  }>;
2628
2627
  runFlow: ({
2629
2628
  flowId,
@@ -2635,7 +2634,7 @@ declare function createUploadistaClient<UploadInput>({
2635
2634
  storageId?: string;
2636
2635
  }) => Promise<{
2637
2636
  status: number;
2638
- job: _uploadista_core0.FlowJob;
2637
+ job: import("@uploadista/core").FlowJob;
2639
2638
  }>;
2640
2639
  resumeFlow: ({
2641
2640
  jobId,
@@ -2647,9 +2646,9 @@ declare function createUploadistaClient<UploadInput>({
2647
2646
  nodeId: string;
2648
2647
  newData: unknown;
2649
2648
  contentType?: "application/json" | "application/octet-stream";
2650
- }) => Promise<_uploadista_core0.FlowJob>;
2651
- pauseFlow: (jobId: string) => Promise<_uploadista_core0.FlowJob>;
2652
- cancelFlow: (jobId: string) => Promise<_uploadista_core0.FlowJob>;
2649
+ }) => Promise<import("@uploadista/core").FlowJob>;
2650
+ pauseFlow: (jobId: string) => Promise<import("@uploadista/core").FlowJob>;
2651
+ cancelFlow: (jobId: string) => Promise<import("@uploadista/core").FlowJob>;
2653
2652
  /**
2654
2653
  * Find input nodes in a flow.
2655
2654
  *
@@ -2675,7 +2674,7 @@ declare function createUploadistaClient<UploadInput>({
2675
2674
  findInputNode: (flowId: string) => Promise<{
2676
2675
  inputNodes: {
2677
2676
  id: string;
2678
- type: _uploadista_core0.NodeType;
2677
+ type: import("@uploadista/core").NodeType;
2679
2678
  name: string;
2680
2679
  }[];
2681
2680
  single: boolean;
@@ -2717,9 +2716,9 @@ declare function createUploadistaClient<UploadInput>({
2717
2716
  onJobStart?: (jobId: string) => void;
2718
2717
  }) => Promise<{
2719
2718
  status: number;
2720
- job: _uploadista_core0.FlowJob;
2719
+ job: import("@uploadista/core").FlowJob;
2721
2720
  }>;
2722
- getJobStatus: (jobId: string) => Promise<_uploadista_core0.FlowJob>;
2721
+ getJobStatus: (jobId: string) => Promise<import("@uploadista/core").FlowJob>;
2723
2722
  openUploadWebSocket: (uploadId: string) => Promise<WebSocketLike>;
2724
2723
  openFlowWebSocket: (jobId: string) => Promise<WebSocketLike>;
2725
2724
  openWebSocket: (id: string) => Promise<WebSocketLike>;
@@ -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"],"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}}},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};
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),l=c.length>0?c.reduce((e,t)=>e+(t.latency||0),0)/c.length:0;this._currentMetrics={averageSpeed:a,latency:l,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},n={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)}};this.abortController=await this.multiInputUploadFn(e,this.options.flowConfig,t,n)}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