@uploadista/server 0.2.0 → 1.0.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./auth/index.cjs`);let t=require(`effect`),n=require(`@uploadista/core/flow`),r=require(`@uploadista/core/types`),i=require(`@uploadista/core/utils`),a=require(`@uploadista/event-broadcaster-memory`),o=require(`@uploadista/event-emitter-websocket`),s=require(`@uploadista/observability`),c=require(`@uploadista/core/upload`),l=require(`@uploadista/core/errors`);var u=class extends t.Context.Tag(`AuthCacheService`)(){};const d=(e={})=>{let n=e.maxSize??1e4,r=e.ttl??36e5,i=new Map,a=()=>{let e=Date.now();for(let[t,n]of i.entries())e-n.timestamp>r&&i.delete(t)},o=()=>{if(i.size<=n)return;let e=null,t=1/0;for(let[n,r]of i.entries())r.timestamp<t&&(t=r.timestamp,e=n);e&&i.delete(e)};return t.Layer.succeed(u,{set:(e,n)=>t.Effect.sync(()=>{i.size%100==0&&a(),i.set(e,{authContext:n,timestamp:Date.now()}),o()}),get:e=>t.Effect.sync(()=>{let t=i.get(e);return t?Date.now()-t.timestamp>r?(i.delete(e),null):t.authContext:null}),delete:e=>t.Effect.sync(()=>{i.delete(e)}),clear:()=>t.Effect.sync(()=>{i.clear()}),size:()=>t.Effect.sync(()=>i.size)})},f=t.Layer.succeed(u,{set:()=>t.Effect.void,get:()=>t.Effect.succeed(null),delete:()=>t.Effect.void,clear:()=>t.Effect.void,size:()=>t.Effect.succeed(0)}),p=e=>e.split(`/`).filter(Boolean),m=e=>{let t=p(e);return t[t.length-1]},h=(e,t)=>e.includes(`${t}/api/`),g=(e,t)=>e.replace(`${t}/api/`,``).split(`/`).filter(Boolean),_=e=>{let t=500,n=`UNKNOWN_ERROR`,r=`Internal server error`,i;if(typeof e==`object`&&e){let a=e;if(`code`in a&&typeof a.code==`string`&&(n=a.code),`message`in a&&typeof a.message==`string`?r=a.message:`body`in a&&typeof a.body==`string`&&(r=a.body),`details`in a&&(i=a.details),`status`in a&&typeof a.status==`number`)t=a.status;else if(`code`in a)switch(a.code){case`FILE_NOT_FOUND`:case`FLOW_JOB_NOT_FOUND`:case`UPLOAD_ID_NOT_FOUND`:t=404;break;case`FLOW_JOB_ERROR`:case`VALIDATION_ERROR`:case`INVALID_METADATA`:case`INVALID_LENGTH`:case`ABORTED`:case`INVALID_TERMINATION`:t=400;break;case`INVALID_OFFSET`:t=409;break;case`ERR_SIZE_EXCEEDED`:case`ERR_MAX_SIZE_EXCEEDED`:t=413;break;case`FILE_NO_LONGER_EXISTS`:t=410;break;case`MISSING_OFFSET`:case`INVALID_CONTENT_TYPE`:t=403;break;default:t=500}`message`in a&&a.message===`Invalid JSON body`&&(t=400,n=`VALIDATION_ERROR`)}let a={status:t,code:n,message:r};return i!==void 0&&(a.details=i),a},v=e=>e[e.length-2],ee=e=>({jobId:e[e.length-3],nodeId:e[e.length-1]}),te=e=>({storageId:e.pop(),flowId:e.pop()}),y=({kvStore:e,eventEmitter:n,dataStore:i,bufferedDataStore:a,generateId:o})=>{let s=t.Layer.provide(r.uploadFileKvStore,e),l=t.Layer.provide(i,s),u=a?t.Layer.provide(a,s):t.Layer.empty,d=t.Layer.provide(r.uploadEventEmitter,n),f=t.Layer.mergeAll(l,s,d,...o?[o]:[],u);return t.Layer.provide(c.uploadEngine,f)},b=({kvStore:e,eventEmitter:i,flowProvider:a,uploadEngine:o})=>{let s=t.Layer.provide(r.flowJobKvStore,e),c=t.Layer.provide(r.flowEventEmitter,i),l=t.Layer.mergeAll(a,c,s,o);return t.Layer.provide(n.flowEngine,l)};var x=class extends Error{constructor(e,t=500,n=`INTERNAL_ERROR`){super(e),this.statusCode=t,this.errorCode=n,this.name=`AdapterError`}},S=class extends x{constructor(e){super(e,400,`VALIDATION_ERROR`),this.name=`ValidationError`}},C=class extends x{constructor(e){super(`${e} not found`,404,`NOT_FOUND`),this.name=`NotFoundError`}},w=class extends x{constructor(e){super(e,400,`BAD_REQUEST`),this.name=`BadRequestError`}};const ne=e=>({error:e.message,code:e.errorCode,timestamp:new Date().toISOString()}),re=e=>{let t={error:e.body,code:e.code,timestamp:new Date().toISOString()};return e.details!==void 0&&(t.details=e.details),t},T=(e=`Internal server error`)=>({error:e,code:`INTERNAL_ERROR`,timestamp:new Date().toISOString()});var E=class extends x{requiredPermission;constructor(e,t){super(t??`Permission denied: ${e} required`,403,`PERMISSION_DENIED`),this.name=`AuthorizationError`,this.requiredPermission=e}},D=class extends x{constructor(e=`Authentication required`){super(e,401,`AUTHENTICATION_REQUIRED`),this.name=`AuthenticationRequiredError`}},O=class extends x{constructor(e=`Access denied: resource belongs to another organization`){super(e,403,`ORGANIZATION_MISMATCH`),this.name=`OrganizationMismatchError`}},k=class extends x{constructor(e=`Quota exceeded`,t=`QUOTA_EXCEEDED`){super(e,402,t),this.name=`QuotaExceededError`}};const A=e=>({error:e.message,code:e.errorCode,requiredPermission:e.requiredPermission,timestamp:new Date().toISOString()}),j={ALL:`engine:*`,HEALTH:`engine:health`,READINESS:`engine:readiness`,METRICS:`engine:metrics`,DLQ:`engine:dlq`,DLQ_READ:`engine:dlq:read`,DLQ_WRITE:`engine:dlq:write`},M={ALL:`flow:*`,EXECUTE:`flow:execute`,CANCEL:`flow:cancel`,STATUS:`flow:status`},N={ALL:`upload:*`,CREATE:`upload:create`,READ:`upload:read`,CANCEL:`upload:cancel`},P={ENGINE:j,FLOW:M,UPLOAD:N},F={ADMIN:[j.ALL],ORGANIZATION_OWNER:[M.ALL,N.ALL],ORGANIZATION_MEMBER:[M.ALL,N.ALL],API_KEY:[M.EXECUTE,N.CREATE]},I={[j.DLQ]:[j.DLQ_READ,j.DLQ_WRITE]},L=(e,t)=>{if(e===t)return!0;if(e.endsWith(`:*`)){let n=e.slice(0,-1);if(t.startsWith(n))return!0}return!!I[e]?.includes(t)},R=(e,t)=>e.some(e=>L(e,t)),z=(e,t)=>t.some(t=>R(e,t)),B=(e,t)=>t.every(t=>R(e,t)),ie=e=>{let t=[e],n=I[e];return n&&t.push(...n),t};var V=class extends t.Context.Tag(`AuthContextService`)(){};const H=(e,n)=>{let r=e?.permissions??[],i=n?.bypassAuth??!1;return t.Layer.succeed(V,{getClientId:()=>t.Effect.succeed(e?.clientId??null),getMetadata:()=>t.Effect.succeed(e?.metadata??{}),hasPermission:e=>i?t.Effect.succeed(!0):t.Effect.succeed(R(r,e)),hasAnyPermission:e=>i?t.Effect.succeed(!0):t.Effect.succeed(z(r,e)),requirePermission:n=>t.Effect.gen(function*(){if(i){yield*t.Effect.logDebug(`[Auth] Bypass mode: permission '${n}' auto-granted`);return}if(!e)return yield*t.Effect.logDebug(`[Auth] Permission check failed: authentication required for '${n}'`),yield*t.Effect.fail(new D);if(!R(r,n))return yield*t.Effect.logDebug(`[Auth] Permission denied: '${n}' for client '${e.clientId}'`),yield*t.Effect.fail(new E(n));yield*t.Effect.logDebug(`[Auth] Permission granted: '${n}' for client '${e.clientId}'`)}),requireAuthentication:()=>e?t.Effect.succeed(e):t.Effect.fail(new D),getPermissions:()=>t.Effect.succeed(r),getAuthContext:()=>t.Effect.succeed(e)})},ae=H(null),U=()=>({action:`continue`}),oe=(e,t)=>({action:`abort`,reason:e,code:t}),W=5e3;var G=class extends t.Context.Tag(`UsageHookService`)(){};const K=e=>{let n=e?.hooks,r=e?.timeout??W;return t.Layer.succeed(G,{onUploadStart:e=>n?.onUploadStart?n.onUploadStart(e).pipe(t.Effect.timeout(r),t.Effect.map(e=>e??U()),t.Effect.catchAll(e=>t.Effect.gen(function*(){return yield*t.Effect.logWarning(`onUploadStart hook failed: ${e}. Proceeding with upload.`),U()}))):t.Effect.succeed(U()),onUploadComplete:e=>n?.onUploadComplete?n.onUploadComplete(e).pipe(t.Effect.timeout(r),t.Effect.asVoid,t.Effect.catchAll(e=>t.Effect.logWarning(`onUploadComplete hook failed: ${e}. Upload already completed.`))):t.Effect.void,onFlowStart:e=>n?.onFlowStart?n.onFlowStart(e).pipe(t.Effect.timeout(r),t.Effect.map(e=>e??U()),t.Effect.catchAll(e=>t.Effect.gen(function*(){return yield*t.Effect.logWarning(`onFlowStart hook failed: ${e}. Proceeding with flow.`),U()}))):t.Effect.succeed(U()),onFlowComplete:e=>n?.onFlowComplete?n.onFlowComplete(e).pipe(t.Effect.timeout(r),t.Effect.asVoid,t.Effect.catchAll(e=>t.Effect.logWarning(`onFlowComplete hook failed: ${e}. Flow already completed.`))):t.Effect.void})},se=K(),ce=e=>t.Effect.gen(function*(){yield*(yield*V).requirePermission(P.ENGINE.DLQ_READ);let t=yield*(yield*n.DeadLetterQueueService).list(e.options);return{type:`dlq-list`,status:200,headers:{"Content-Type":`application/json`},body:t}}),le=e=>t.Effect.gen(function*(){yield*(yield*V).requirePermission(P.ENGINE.DLQ_READ);let t=yield*(yield*n.DeadLetterQueueService).get(e.itemId);return{type:`dlq-get`,status:200,headers:{"Content-Type":`application/json`},body:t}}),ue=e=>t.Effect.gen(function*(){return yield*(yield*V).requirePermission(P.ENGINE.DLQ_WRITE),yield*(yield*n.DeadLetterQueueService).markRetrying(e.itemId),{type:`dlq-retry`,status:200,headers:{"Content-Type":`application/json`},body:{success:!0}}}),de=e=>t.Effect.gen(function*(){yield*(yield*V).requirePermission(P.ENGINE.DLQ_WRITE);let r=yield*n.DeadLetterQueueService,{items:i}=yield*r.list({status:e.options?.status,flowId:e.options?.flowId}),a=0,o=0;for(let e of i)(yield*t.Effect.either(r.markRetrying(e.id)))._tag===`Right`?a++:o++;return{type:`dlq-retry-all`,status:200,headers:{"Content-Type":`application/json`},body:{retried:i.length,succeeded:a,failed:o}}}),fe=e=>t.Effect.gen(function*(){return yield*(yield*V).requirePermission(P.ENGINE.DLQ_WRITE),yield*(yield*n.DeadLetterQueueService).delete(e.itemId),{type:`dlq-delete`,status:200,headers:{"Content-Type":`application/json`},body:{success:!0}}}),pe=e=>t.Effect.gen(function*(){yield*(yield*V).requirePermission(P.ENGINE.DLQ_WRITE);let t=yield*(yield*n.DeadLetterQueueService).markResolved(e.itemId);return{type:`dlq-resolve`,status:200,headers:{"Content-Type":`application/json`},body:t}}),me=e=>t.Effect.gen(function*(){yield*(yield*V).requirePermission(P.ENGINE.DLQ_WRITE);let t=yield*(yield*n.DeadLetterQueueService).cleanup(e.options);return{type:`dlq-cleanup`,status:200,headers:{"Content-Type":`application/json`},body:t}}),he=e=>t.Effect.gen(function*(){yield*(yield*V).requirePermission(P.ENGINE.DLQ_READ);let e=yield*(yield*n.DeadLetterQueueService).getStats();return{type:`dlq-stats`,status:200,headers:{"Content-Type":`application/json`},body:e}}),ge=({flowId:e})=>t.Effect.gen(function*(){let r=yield*n.FlowEngine,i=yield*V,a=yield*i.getClientId();return yield*i.requirePermission(P.FLOW.STATUS),a&&(yield*t.Effect.logInfo(`[Flow] Getting flow data: ${e}, client: ${a}`)),{status:200,body:yield*r.getFlowData(e,a)}}),_e=({flowId:e,storageId:r,inputs:i})=>t.Effect.gen(function*(){let a=yield*n.FlowEngine,o=yield*V,s=yield*u,c=yield*G,l=yield*o.getClientId();if(yield*o.requirePermission(P.FLOW.EXECUTE),l?(yield*t.Effect.logInfo(`[Flow] Executing flow: ${e}, storage: ${r}, client: ${l}`),yield*t.Effect.logInfo(JSON.stringify(i,null,2))):(yield*t.Effect.logInfo(`[Flow] Executing flow: ${e}, storage: ${r}`),yield*t.Effect.logInfo(`[Flow] Inputs: ${JSON.stringify(i,null,2)}`)),l){let n=yield*c.onFlowStart({clientId:l,operation:`flow`,metadata:{flowId:e}});if(n.action===`abort`)return yield*t.Effect.fail(new k(n.reason,n.code??`SUBSCRIPTION_REQUIRED`))}yield*t.Effect.logInfo(`[Flow] Calling flowServer.runFlow...`);let d=yield*a.runFlow({flowId:e,storageId:r,clientId:l,inputs:i}).pipe(t.Effect.tap(()=>t.Effect.logInfo(`[Flow] runFlow completed successfully`)),t.Effect.tapError(e=>t.Effect.logError(`[Flow] runFlow failed with error: ${e}`))),f=yield*o.getAuthContext();return f&&(yield*s.set(d.id,f)),yield*t.Effect.logInfo(`[Flow] Flow started with jobId: ${d.id}`),{status:200,body:d}}),ve=({jobId:e})=>t.Effect.gen(function*(){let r=yield*n.FlowEngine,i=yield*V,a=yield*u,o=yield*i.getClientId();if(yield*i.requirePermission(P.FLOW.STATUS),!e)throw Error(`No job id`);o&&(yield*t.Effect.logInfo(`[Flow] Getting job status: ${e}, client: ${o}`));let s=yield*r.getJobStatus(e);return(s.status===`completed`||s.status===`failed`)&&(yield*a.delete(e),o&&(yield*t.Effect.logInfo(`[Flow] Flow ${s.status}, cleared auth cache: ${e}`))),{status:200,body:s}}),ye=({jobId:e,nodeId:r,newData:i})=>t.Effect.gen(function*(){let a=yield*n.FlowEngine,o=yield*V,s=yield*u;yield*o.requirePermission(P.FLOW.EXECUTE);let c=yield*o.getClientId();if(c||=(yield*s.get(e))?.clientId??null,c&&(yield*t.Effect.logInfo(`[Flow] Continuing flow: jobId=${e}, nodeId=${r}, client: ${c}`)),i===void 0)throw Error(`Missing newData`);let l=yield*a.resumeFlow({jobId:e,nodeId:r,newData:i,clientId:c});return(l.status===`completed`||l.status===`failed`)&&(yield*s.delete(e),c&&(yield*t.Effect.logInfo(`[Flow] Flow ${l.status}, cleared auth cache: ${e}`))),{status:200,body:l}}),be=({jobId:e})=>t.Effect.gen(function*(){let r=yield*n.FlowEngine,i=yield*V,a=yield*u;yield*i.requirePermission(P.FLOW.CANCEL);let o=yield*i.getClientId();o||=(yield*a.get(e))?.clientId??null,o&&(yield*t.Effect.logInfo(`[Flow] Pausing flow: jobId=${e}, client: ${o}`));let s=yield*r.pauseFlow(e,o);return o&&(yield*t.Effect.logInfo(`[Flow] Flow paused: ${e}, status: ${s.status}`)),{status:200,body:s}}),xe=({jobId:e})=>t.Effect.gen(function*(){let r=yield*n.FlowEngine,i=yield*V,a=yield*u,o=yield*G;if(yield*i.requirePermission(P.FLOW.CANCEL),!e)throw Error(`No job id`);let s=yield*i.getClientId();s||=(yield*a.get(e))?.clientId??null,s&&(yield*t.Effect.logInfo(`[Flow] Cancelling flow: jobId=${e}, client: ${s}`));let c=yield*r.cancelFlow(e,s);return yield*a.delete(e),s&&(yield*t.Effect.logInfo(`[Flow] Flow cancelled, cleared auth cache: ${e}`),yield*t.Effect.forkDaemon(o.onFlowComplete({clientId:s,operation:`flow`,metadata:{jobId:e,status:`cancelled`}}))),{status:200,body:c}}),Se=Date.now();function q(){return Date.now()-Se}function J(){return new Date().toISOString()}function Ce(e){return{status:`healthy`,timestamp:J(),version:e?.version,uptime:q()}}function Y(e){let t=[];if(e.storage&&t.push(e.storage.status),e.kvStore&&t.push(e.kvStore.status),t.includes(`unhealthy`))return`unhealthy`;let n=[...t];return e.eventBroadcaster&&n.push(e.eventBroadcaster.status),e.circuitBreaker&&n.push(e.circuitBreaker.status),e.deadLetterQueue&&n.push(e.deadLetterQueue.status),n.includes(`degraded`)?`degraded`:`healthy`}function X(e){let n=Date.now();return t.Effect.succeed({status:`healthy`,latency:Date.now()-n,message:`Storage backend configured`,lastCheck:J()})}function we(e){let n=Date.now();return t.Effect.succeed({status:`healthy`,latency:Date.now()-n,message:`KV store configured`,lastCheck:J()})}function Z(e){let n=Date.now();return t.Effect.succeed({status:`healthy`,latency:Date.now()-n,message:`Event broadcaster configured`,lastCheck:J()})}function Te(){return t.Effect.gen(function*(){let e=yield*t.Effect.serviceOption(r.CircuitBreakerStoreService);if(t.Option.isNone(e))return;let n=e.value,i=yield*t.Effect.either(n.getAllStats());if(i._tag===`Left`)return{status:`degraded`,openCircuits:0,totalCircuits:0};let a=i.right,o=Array.from(a.values()),s=o.filter(e=>e.state===`open`).length,c=o.length,l=`healthy`;return s>0&&(l=`degraded`),{status:l,openCircuits:s,totalCircuits:c,circuits:o.map(e=>({nodeType:e.nodeType,state:e.state,failureCount:e.failureCount,timeSinceLastStateChange:e.timeSinceLastStateChange}))}})}function Ee(){return t.Effect.gen(function*(){let e=yield*n.DeadLetterQueueService.optional;if(t.Option.isNone(e))return;let r=e.value,i=yield*t.Effect.either(r.getStats());if(i._tag===`Left`)return{status:`degraded`,pendingItems:0,exhaustedItems:0};let a=i.right,o=`healthy`;return a.byStatus.exhausted>0&&(o=`degraded`),{status:o,pendingItems:a.byStatus.pending,exhaustedItems:a.byStatus.exhausted,oldestItem:a.oldestItem?.toISOString()}})}function De(e={}){let n={...r.DEFAULT_HEALTH_CHECK_CONFIG,...e};return t.Effect.gen(function*(){let t={};return n.checkStorage&&(t.storage=yield*X(n)),n.checkKvStore&&(t.kvStore=yield*we(n)),n.checkEventBroadcaster&&(t.eventBroadcaster=yield*Z(n)),{status:Y(t),timestamp:J(),version:e.version,uptime:q(),components:t}})}function Oe(e={}){let n={...r.DEFAULT_HEALTH_CHECK_CONFIG,...e};return t.Effect.gen(function*(){let t={};n.checkStorage&&(t.storage=yield*X(n)),n.checkKvStore&&(t.kvStore=yield*we(n)),n.checkEventBroadcaster&&(t.eventBroadcaster=yield*Z(n));let r=yield*Te();r&&(t.circuitBreaker=r);let i=yield*Ee();return i&&(t.deadLetterQueue=i),{status:Y(t),timestamp:J(),version:e.version,uptime:q(),components:t}})}const ke=(e,n)=>t.Effect.sync(()=>{let t=Ce(n);return(0,r.getHealthResponseFormat)(e.acceptHeader)===`text`?{type:`health`,status:200,headers:{"Content-Type":`text/plain`},body:(0,r.formatHealthAsText)(t.status)}:{type:`health`,status:200,headers:{"Content-Type":`application/json`},body:t}}),Ae=(e,n)=>t.Effect.gen(function*(){yield*(yield*V).requirePermission(P.ENGINE.READINESS);let t=yield*De(n),i=(0,r.getHealthResponseFormat)(e.acceptHeader),a=t.status===`unhealthy`?503:200;return i===`text`?{type:`health-ready`,status:a,headers:{"Content-Type":`text/plain`},body:(0,r.formatHealthAsText)(t.status)}:{type:`health-ready`,status:a,headers:{"Content-Type":`application/json`},body:t}}),je=(e,n)=>t.Effect.gen(function*(){yield*(yield*V).requirePermission(P.ENGINE.READINESS);let t=yield*Oe(n);return(0,r.getHealthResponseFormat)(e.acceptHeader)===`text`?{type:`health-components`,status:200,headers:{"Content-Type":`text/plain`},body:(0,r.formatHealthAsText)(t.status)}:{type:`health-components`,status:200,headers:{"Content-Type":`application/json`},body:t}}),Me=e=>t.Effect.gen(function*(){let n=yield*c.UploadEngine,a=yield*V,o=yield*u,s=yield*G,l=yield*a.getClientId();yield*a.requirePermission(P.UPLOAD.CREATE),l&&(yield*t.Effect.logInfo(`[Upload] Creating upload for client: ${l}`));let d=yield*t.Effect.sync(()=>r.inputFileSchema.safeParse(e.data));if(!d.success)return yield*t.Effect.fail(new S(`Invalid input file schema`));if(d.data.checksumAlgorithm&&!(0,i.isSupportedAlgorithm)(d.data.checksumAlgorithm))return yield*t.Effect.fail(new S(`Unsupported checksum algorithm: ${d.data.checksumAlgorithm}. Supported algorithms: sha256`));if(l){let e=yield*s.onUploadStart({clientId:l,operation:`upload`,metadata:{fileSize:d.data.size,mimeType:d.data.type,fileName:d.data.fileName}});if(e.action===`abort`)return yield*t.Effect.fail(new k(e.reason,e.code??`QUOTA_EXCEEDED`))}let f=yield*n.createUpload(d.data,l),p=yield*a.getAuthContext();return p&&(yield*o.set(f.id,p)),l&&(yield*t.Effect.logInfo(`[Upload] Upload created: ${f.id} for client: ${l}`)),{status:200,body:f}}),Ne=({storageId:e})=>t.Effect.gen(function*(){let t=yield*c.UploadEngine,n=yield*V,r=yield*n.getClientId();return yield*n.requirePermission(P.UPLOAD.READ),{status:200,body:{storageId:e,capabilities:yield*t.getCapabilities(e,r),timestamp:new Date().toISOString()}}}),Pe=({uploadId:e})=>t.Effect.gen(function*(){let t=yield*c.UploadEngine;return yield*(yield*V).requirePermission(P.UPLOAD.READ),{status:200,body:yield*t.getUpload(e)}}),Fe=e=>t.Effect.gen(function*(){let n=yield*c.UploadEngine,r=yield*V,i=yield*u,a=yield*s.MetricsService,o=yield*G,{uploadId:l,data:d}=e;yield*r.requirePermission(P.UPLOAD.CREATE);let f=yield*r.getClientId(),p=yield*r.getMetadata();if(!f){let e=yield*i.get(l);f=e?.clientId??null,p=e?.metadata??{}}f&&(yield*t.Effect.logInfo(`[Upload] Uploading chunk for upload: ${l}, client: ${f}`));let m=Date.now(),h=yield*n.uploadChunk(l,f,d);if(h.size&&h.offset>=h.size)if(yield*i.delete(l),f&&(yield*t.Effect.logInfo(`[Upload] Upload completed, cleared auth cache: ${l}`)),f&&h.size){yield*t.Effect.logInfo(`[Upload] Recording metrics for org: ${f}, size: ${h.size}`),yield*t.Effect.forkDaemon(a.recordUpload(f,h.size,p));let e=Date.now()-m;yield*t.Effect.forkDaemon(o.onUploadComplete({clientId:f,operation:`upload`,metadata:{uploadId:l,fileSize:h.size,duration:e,storageId:h.storage?.id,url:h.url,fileName:h.metadata?.fileName,flowContext:h.flow?{flowId:h.flow.flowId,jobId:h.flow.jobId}:void 0}}))}else yield*t.Effect.logWarning(`[Upload] Cannot record metrics - missing organizationId or size`);return f&&(yield*t.Effect.logInfo(`[Upload] Chunk uploaded for upload: ${l}, client: ${f}`)),{status:200,body:h}}),Ie=(e,n)=>t.Effect.gen(function*(){switch(e.type){case`create-upload`:return yield*Me(e);case`get-capabilities`:return yield*Ne(e);case`get-upload`:return yield*Pe(e);case`upload-chunk`:return yield*Fe(e);case`get-flow`:return yield*ge(e);case`run-flow`:return yield*_e(e);case`job-status`:return yield*ve(e);case`resume-flow`:return yield*ye(e);case`pause-flow`:return yield*be(e);case`cancel-flow`:return yield*xe(e);case`dlq-list`:return yield*ce(e);case`dlq-get`:return yield*le(e);case`dlq-retry`:return yield*ue(e);case`dlq-retry-all`:return yield*de(e);case`dlq-delete`:return yield*fe(e);case`dlq-resolve`:return yield*pe(e);case`dlq-cleanup`:return yield*me(e);case`dlq-stats`:return yield*he(e);case`health`:return yield*ke(e,n?.healthCheckConfig);case`health-ready`:return yield*Ae(e,n?.healthCheckConfig);case`health-components`:return yield*je(e,n?.healthCheckConfig);case`not-found`:return{status:404,headers:{"Content-Type":`application/json`},body:{error:`Not found`}};case`bad-request`:return{status:400,body:{error:`Bad request`,message:e.message}};case`method-not-allowed`:return{status:405,headers:{"Content-Type":`application/json`},body:{error:`Method not allowed`}};case`unsupported-content-type`:return{status:415,headers:{"Content-Type":`application/json`},body:{error:`Unsupported content type`}}}}),Le=async({flows:e,dataStore:c,kvStore:l,plugins:u=[],eventEmitter:f,eventBroadcaster:p=a.memoryEventBroadcaster,withTracing:m=!1,observabilityLayer:h,baseUrl:g=`uploadista`,generateId:v=i.GenerateIdLive,metricsLayer:ee,bufferedDataStore:te,adapter:x,authCacheConfig:S,circuitBreaker:C=!0,deadLetterQueue:w=!1,healthCheck:ne,usageHooks:re})=>{let T=f??(0,o.webSocketEventEmitter)(p),E=g.endsWith(`/`)?g.slice(0,-1):g,D=t.Layer.effect(n.FlowProvider,t.Effect.succeed({getFlow:(t,n)=>e(t,n)}));if(!T)throw Error(`eventEmitter is required. Provide an event emitter layer in the configuration.`);let O=y({kvStore:l,eventEmitter:T,dataStore:await(0,r.createDataStoreLayer)(c),bufferedDataStore:te,generateId:v}),k=b({kvStore:l,eventEmitter:T,flowProvider:D,uploadEngine:O}),A=d(S),j=ee??s.NoOpMetricsServiceLive,M=C?n.kvCircuitBreakerStoreLayer.pipe(t.Layer.provide(l)):null,N=w?n.deadLetterQueueService.pipe(t.Layer.provide(r.deadLetterQueueKvStore),t.Layer.provide(l)):null,P=K(re),F=t.Layer.effect(n.FlowLifecycleHook,t.Effect.gen(function*(){let e=yield*G;return{onComplete:t=>e.onFlowComplete({clientId:t.clientId??``,operation:`flow`,metadata:{jobId:t.jobId,flowId:t.flowId,status:t.status===`completed`?`success`:`failed`}})}})).pipe(t.Layer.provide(P)),I=t.Layer.mergeAll(O,k,j,A,P,F,...u,...M?[M]:[],...N?[N]:[]),L=m?h??s.NodeSdkLive:null,R=I,z=L?t.Layer.merge(R,L):R,B=t.ManagedRuntime.make(z);return{handler:async e=>{let r=t.Effect.gen(function*(){let r=yield*x.extractRequest(e,{baseUrl:E}),i=null;if(x.runAuthMiddleware){let n=yield*x.runAuthMiddleware(e).pipe(t.Effect.timeout(`5 seconds`),t.Effect.catchAll(()=>(console.error(`Auth middleware timeout exceeded (5 seconds)`),t.Effect.succeed({_tag:`TimeoutError`}))),t.Effect.catchAllCause(e=>(console.error(`Auth middleware error:`,e),t.Effect.succeed({_tag:`AuthError`,error:e}))));if(n&&typeof n==`object`&&`_tag`in n&&n._tag===`TimeoutError`)return yield*x.sendResponse({status:503,headers:{"Content-Type":`application/json`},body:{error:`Authentication service unavailable`,message:`Authentication took too long to respond. Please try again.`}},e);if(n&&typeof n==`object`&&`_tag`in n&&n._tag===`AuthError`)return yield*x.sendResponse({status:500,headers:{"Content-Type":`application/json`},body:{error:`Internal Server Error`,message:`An error occurred during authentication`}},e);if(n===null)return yield*x.sendResponse({status:401,headers:{"Content-Type":`application/json`},body:{error:`Unauthorized`,message:`Invalid credentials`}},e);i=n}let a=H(i,{bypassAuth:!x.runAuthMiddleware}),o=[];if(x.extractWaitUntil){let r=x.extractWaitUntil(e);r&&o.push(t.Layer.succeed(n.FlowWaitUntil,r))}let s=t.Layer.mergeAll(a,A,j,P,...u,...o),c=M?t.Layer.merge(s,M):s,l=N?t.Layer.merge(c,N):c;if(r.type===`not-found`)return yield*x.sendResponse({type:`not-found`,status:404,headers:{"Content-Type":`application/json`},body:{error:`Not found`}},e);let d=yield*Ie(r,{healthCheckConfig:ne}).pipe(t.Effect.provide(l));return yield*x.sendResponse(d,e)}).pipe(t.Effect.catchAll(t=>{let n=_(t),r={code:n.code,message:n.message};n.details!==void 0&&(r.details=n.details);let i={status:n.status,headers:{"Content-Type":`application/json`},body:r};return x.sendResponse(i,e)}));return B.runPromise(r)},websocketHandler:await B.runPromise(x.webSocketHandler({baseUrl:E})),baseUrl:E,dispose:()=>B.dispose()}};async function Re(e){return Le(e)}function ze(e){return e}function Be(e){return e}const Ve={ImagePlugin:{packageName:`@uploadista/flow-images-sharp`,variableName:`sharpImagePlugin`},ImageAiPlugin:{packageName:`@uploadista/flow-images-replicate`,variableName:`replicateImagePlugin`},ZipPlugin:{packageName:`@uploadista/flow-utility-zipjs`,variableName:`zipPlugin`},CredentialProvider:{packageName:`@uploadista/core`,variableName:`credentialProviderLayer`}};function He(e){try{let t=e;if(t._tag)return t._tag;if(t.constructor?.name)return t.constructor.name;if(t.context?.services){let e=Array.from(t.context.services.keys());if(e.length>0){let t=e[0];if(t.key)return t.key}}return null}catch{return null}}function Ue(e){return e.map(e=>He(e)).filter(e=>e!==null)}function Q(e){let{plugins:t,expectedServices:n=[]}=e,r=Ue(t),i=n.filter(e=>!r.includes(e));return i.length===0?{success:!0}:{success:!1,required:n,provided:r,missing:i,suggestions:i.map(e=>{let t=Ve[e];return t?{name:e,packageName:t.packageName,importStatement:`import { ${t.variableName} } from '${t.packageName}';`}:null}).filter(e=>e!==null)}}function $(e){let t=[`Server initialization failed: Missing required plugins`,``,`Required: ${e.required.join(`, `)}`,`Provided: ${e.provided.length>0?e.provided.join(`, `):`(none)`}`,`Missing: ${e.missing.join(`, `)}`,``];if(e.suggestions.length>0){t.push(`Add the missing plugins to your configuration:`),t.push(``);for(let n of e.suggestions)t.push(` ${n.importStatement}`);t.push(``),t.push(` const server = await createUploadistaServer({`),t.push(` plugins: [${[...e.provided,...e.missing.map(e=>Ve[e]?.variableName||e)].join(`, `)}],`),t.push(` // ...`),t.push(` });`)}else t.push(`Note: Could not determine package names for missing plugins.`),t.push(`Please ensure all required plugin layers are provided.`);return t.join(`
2
- `)}function We(e){return t.Effect.sync(()=>{let t=Q(e);if(!t.success){let e=$(t);throw Error(e)}})}function Ge(e){let t=Q(e);if(!t.success){let e=$(t);throw Error(e)}}const Ke=(e,n,r)=>t.Effect.gen(function*(){if(!n){yield*t.Effect.sync(()=>{r.send(JSON.stringify({type:`error`,message:`Job ID is required for flow event subscription`,code:`MISSING_JOB_ID`}))});return}yield*e.subscribeToFlowEvents(n,r)}),qe=(e,n)=>t.Effect.gen(function*(){n&&(yield*e.unsubscribeFromFlowEvents(n))}),Je=(e,n,r)=>t.Effect.gen(function*(){if(!n){yield*t.Effect.sync(()=>{r.send(JSON.stringify({type:`error`,message:`Upload ID is required for upload event subscription`,code:`MISSING_UPLOAD_ID`}))});return}yield*e.subscribeToUploadEvents(n,r)}),Ye=(e,n)=>t.Effect.gen(function*(){n&&(yield*e.unsubscribeFromUploadEvents(n))}),Xe=(e,n,r)=>{let{connection:i,isFlowRoute:a,isUploadRoute:o,jobId:s,uploadId:c,eventId:u}=e;return t.Effect.gen(function*(){a&&(yield*Ke(r,s,i)),o&&(yield*Je(n,c,i)),i.send(JSON.stringify({type:`connection`,message:`Uploadista WebSocket connected`,id:u,jobId:s,uploadId:c,timestamp:new Date().toISOString()}))}).pipe(t.Effect.catchAll(e=>t.Effect.sync(()=>{console.error(`Error subscribing to events:`,e);let t=e instanceof l.UploadistaError?e.body:`Failed to subscribe to events`;i.send(JSON.stringify({type:`error`,message:t,code:e instanceof l.UploadistaError?e.code:`SUBSCRIPTION_ERROR`}))})))},Ze=(e,n)=>t.Effect.sync(()=>{try{JSON.parse(e).type===`ping`&&n.send(JSON.stringify({type:`pong`,timestamp:new Date().toISOString()}))}catch(e){console.error(`Error handling WebSocket message:`,e),n.send(JSON.stringify({type:`error`,message:`Invalid message format`}))}}),Qe=(e,n,r)=>{let{isFlowRoute:i,isUploadRoute:a,jobId:o,uploadId:s}=e;return t.Effect.gen(function*(){i&&(yield*qe(r,o)),a&&(yield*Ye(n,s))}).pipe(t.Effect.catchAll(e=>t.Effect.sync(()=>{console.error(`Error unsubscribing from events:`,e instanceof l.UploadistaError?e.body:e)})))},$e=(e,n)=>t.Effect.sync(()=>{console.error(`WebSocket error for event ${n}:`,e)});exports.AdapterError=x,exports.AuthCacheService=u,exports.AuthCacheServiceLive=d,exports.AuthContextService=V,exports.AuthContextServiceLive=H,exports.AuthenticationRequiredError=D,exports.AuthorizationError=E,exports.BadRequestError=w,exports.DEFAULT_USAGE_HOOK_TIMEOUT=W,exports.ENGINE_PERMISSIONS=j,exports.FLOW_PERMISSIONS=M,exports.NoAuthCacheServiceLive=f,exports.NoAuthContextServiceLive=ae,exports.NoUsageHookServiceLive=se,exports.NotFoundError=C,exports.OrganizationMismatchError=O,exports.PERMISSIONS=P,exports.PERMISSION_HIERARCHY=I,exports.PERMISSION_SETS=F,exports.QuotaExceededError=k,exports.UPLOAD_PERMISSIONS=N,exports.UsageHookService=G,exports.UsageHookServiceLive=K,exports.ValidationError=S,exports.abortResult=oe,exports.continueResult=U,exports.createAuthorizationErrorResponseBody=A,exports.createErrorResponseBody=ne,exports.createFlowEngineLayer=b,exports.createGenericErrorResponseBody=T,exports.createTypeSafeServer=Re,exports.createUploadEngineLayer=y,exports.createUploadistaErrorResponseBody=re,exports.createUploadistaServer=Le,exports.defineFlow=ze,exports.defineSimpleFlow=Be,exports.expandPermission=ie,exports.extractFlowAndStorageId=te,exports.extractJobAndNodeId=ee,exports.extractJobIdFromStatus=v,exports.extractServiceIdentifiers=Ue,exports.formatPluginValidationError=$,exports.getAuthCredentials=e.getAuthCredentials,exports.getLastSegment=m,exports.getRouteSegments=g,exports.handleFlowError=_,exports.handleWebSocketClose=Qe,exports.handleWebSocketError=$e,exports.handleWebSocketMessage=Ze,exports.handleWebSocketOpen=Xe,exports.hasAllPermissions=B,exports.hasAnyPermission=z,exports.hasBasePath=h,exports.hasPermission=R,exports.matchesPermission=L,exports.parseUrlSegments=p,exports.validatePluginRequirements=Q,exports.validatePluginRequirementsEffect=We,exports.validatePluginsOrThrow=Ge;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./auth/index.cjs`);let t=require(`effect`),n=require(`@uploadista/core/flow`),r=require(`@uploadista/core/types`),i=require(`@uploadista/core/utils`),a=require(`@uploadista/event-broadcaster-memory`),o=require(`@uploadista/event-emitter-websocket`),s=require(`@uploadista/observability`),c=require(`@uploadista/core/upload`),l=require(`@uploadista/core/errors`);var u=class extends t.Context.Tag(`AuthCacheService`)(){};const d=(e={})=>{let n=e.maxSize??1e4,r=e.ttl??36e5,i=new Map,a=()=>{let e=Date.now();for(let[t,n]of i.entries())e-n.timestamp>r&&i.delete(t)},o=()=>{if(i.size<=n)return;let e=null,t=1/0;for(let[n,r]of i.entries())r.timestamp<t&&(t=r.timestamp,e=n);e&&i.delete(e)};return t.Layer.succeed(u,{set:(e,n)=>t.Effect.sync(()=>{i.size%100==0&&a(),i.set(e,{authContext:n,timestamp:Date.now()}),o()}),get:e=>t.Effect.sync(()=>{let t=i.get(e);return t?Date.now()-t.timestamp>r?(i.delete(e),null):t.authContext:null}),delete:e=>t.Effect.sync(()=>{i.delete(e)}),clear:()=>t.Effect.sync(()=>{i.clear()}),size:()=>t.Effect.sync(()=>i.size)})},f=t.Layer.succeed(u,{set:()=>t.Effect.void,get:()=>t.Effect.succeed(null),delete:()=>t.Effect.void,clear:()=>t.Effect.void,size:()=>t.Effect.succeed(0)}),p=e=>e.split(`/`).filter(Boolean),m=e=>{let t=p(e);return t[t.length-1]},h=(e,t)=>e.includes(`${t}/api/`),g=(e,t)=>e.replace(`${t}/api/`,``).split(`/`).filter(Boolean),ee=e=>{let t=500,n=`UNKNOWN_ERROR`,r=`Internal server error`,i;if(typeof e==`object`&&e){let a=e;if(`code`in a&&typeof a.code==`string`&&(n=a.code),`message`in a&&typeof a.message==`string`?r=a.message:`body`in a&&typeof a.body==`string`&&(r=a.body),`details`in a&&(i=a.details),`status`in a&&typeof a.status==`number`)t=a.status;else if(`code`in a)switch(a.code){case`FILE_NOT_FOUND`:case`FLOW_JOB_NOT_FOUND`:case`UPLOAD_ID_NOT_FOUND`:t=404;break;case`FLOW_JOB_ERROR`:case`VALIDATION_ERROR`:case`INVALID_METADATA`:case`INVALID_LENGTH`:case`ABORTED`:case`INVALID_TERMINATION`:t=400;break;case`INVALID_OFFSET`:t=409;break;case`ERR_SIZE_EXCEEDED`:case`ERR_MAX_SIZE_EXCEEDED`:t=413;break;case`FILE_NO_LONGER_EXISTS`:t=410;break;case`MISSING_OFFSET`:case`INVALID_CONTENT_TYPE`:t=403;break;default:t=500}`message`in a&&a.message===`Invalid JSON body`&&(t=400,n=`VALIDATION_ERROR`)}let a={status:t,code:n,message:r};return i!==void 0&&(a.details=i),a},_=e=>e[e.length-2],v=e=>({jobId:e[e.length-3],nodeId:e[e.length-1]}),te=e=>({storageId:e.pop(),flowId:e.pop()}),ne=({kvStore:e,eventEmitter:n,dataStore:i,bufferedDataStore:a,generateId:o})=>{let s=t.Layer.provide(r.uploadFileKvStore,e),l=t.Layer.provide(i,s),u=a?t.Layer.provide(a,s):t.Layer.empty,d=t.Layer.provide(r.uploadEventEmitter,n),f=t.Layer.mergeAll(l,s,d,...o?[o]:[],u);return t.Layer.provide(c.uploadEngine,f)},y=({kvStore:e,eventEmitter:i,flowProvider:a,uploadEngine:o})=>{let s=t.Layer.provide(r.flowJobKvStore,e),c=t.Layer.provide(r.flowEventEmitter,i),l=t.Layer.mergeAll(a,c,s,o);return t.Layer.provide(n.flowEngine,l)};var b=class extends Error{constructor(e,t=500,n=`INTERNAL_ERROR`){super(e),this.statusCode=t,this.errorCode=n,this.name=`AdapterError`}},x=class extends b{constructor(e){super(e,400,`VALIDATION_ERROR`),this.name=`ValidationError`}},S=class extends b{constructor(e){super(`${e} not found`,404,`NOT_FOUND`),this.name=`NotFoundError`}},C=class extends b{constructor(e){super(e,400,`BAD_REQUEST`),this.name=`BadRequestError`}};const w=e=>({error:e.message,code:e.errorCode,timestamp:new Date().toISOString()}),T=e=>{let t={error:e.body,code:e.code,timestamp:new Date().toISOString()};return e.details!==void 0&&(t.details=e.details),t},E=(e=`Internal server error`)=>({error:e,code:`INTERNAL_ERROR`,timestamp:new Date().toISOString()});var D=class extends b{requiredPermission;constructor(e,t){super(t??`Permission denied: ${e} required`,403,`PERMISSION_DENIED`),this.name=`AuthorizationError`,this.requiredPermission=e}},O=class extends b{constructor(e=`Authentication required`){super(e,401,`AUTHENTICATION_REQUIRED`),this.name=`AuthenticationRequiredError`}},k=class extends b{constructor(e=`Access denied: resource belongs to another organization`){super(e,403,`ORGANIZATION_MISMATCH`),this.name=`OrganizationMismatchError`}},A=class extends b{constructor(e=`Quota exceeded`,t=`QUOTA_EXCEEDED`){super(e,402,t),this.name=`QuotaExceededError`}};const j=e=>({error:e.message,code:e.errorCode,requiredPermission:e.requiredPermission,timestamp:new Date().toISOString()}),M={ALL:`engine:*`,HEALTH:`engine:health`,READINESS:`engine:readiness`,METRICS:`engine:metrics`,DLQ:`engine:dlq`,DLQ_READ:`engine:dlq:read`,DLQ_WRITE:`engine:dlq:write`},N={ALL:`flow:*`,EXECUTE:`flow:execute`,CANCEL:`flow:cancel`,STATUS:`flow:status`},P={ALL:`upload:*`,CREATE:`upload:create`,READ:`upload:read`,CANCEL:`upload:cancel`},F={ENGINE:M,FLOW:N,UPLOAD:P},I={ADMIN:[M.ALL],ORGANIZATION_OWNER:[N.ALL,P.ALL],ORGANIZATION_MEMBER:[N.ALL,P.ALL],API_KEY:[N.EXECUTE,P.CREATE]},L={[M.DLQ]:[M.DLQ_READ,M.DLQ_WRITE]},R=(e,t)=>{if(e===t)return!0;if(e.endsWith(`:*`)){let n=e.slice(0,-1);if(t.startsWith(n))return!0}return!!L[e]?.includes(t)},z=(e,t)=>e.some(e=>R(e,t)),B=(e,t)=>t.some(t=>z(e,t)),V=(e,t)=>t.every(t=>z(e,t)),re=e=>{let t=[e],n=L[e];return n&&t.push(...n),t};var H=class extends t.Context.Tag(`AuthContextService`)(){};const U=(e,n)=>{let r=e?.permissions??[],i=n?.bypassAuth??!1;return t.Layer.succeed(H,{getClientId:()=>t.Effect.succeed(e?.clientId??null),getMetadata:()=>t.Effect.succeed(e?.metadata??{}),hasPermission:e=>i?t.Effect.succeed(!0):t.Effect.succeed(z(r,e)),hasAnyPermission:e=>i?t.Effect.succeed(!0):t.Effect.succeed(B(r,e)),requirePermission:n=>t.Effect.gen(function*(){if(i){yield*t.Effect.logDebug(`[Auth] Bypass mode: permission '${n}' auto-granted`);return}if(!e)return yield*t.Effect.logDebug(`[Auth] Permission check failed: authentication required for '${n}'`),yield*t.Effect.fail(new O);if(!z(r,n))return yield*t.Effect.logDebug(`[Auth] Permission denied: '${n}' for client '${e.clientId}'`),yield*t.Effect.fail(new D(n));yield*t.Effect.logDebug(`[Auth] Permission granted: '${n}' for client '${e.clientId}'`)}),requireAuthentication:()=>e?t.Effect.succeed(e):t.Effect.fail(new O),getPermissions:()=>t.Effect.succeed(r),getAuthContext:()=>t.Effect.succeed(e)})},ie=U(null),W=()=>({action:`continue`}),ae=(e,t)=>({action:`abort`,reason:e,code:t}),G=5e3;var K=class extends t.Context.Tag(`UsageHookService`)(){};const q=e=>{let n=e?.hooks,r=e?.timeout??G;return t.Layer.succeed(K,{onUploadStart:e=>n?.onUploadStart?n.onUploadStart(e).pipe(t.Effect.timeout(r),t.Effect.map(e=>e??W()),t.Effect.catchAll(e=>t.Effect.gen(function*(){return yield*t.Effect.logWarning(`onUploadStart hook failed: ${e}. Proceeding with upload.`),W()}))):t.Effect.succeed(W()),onUploadComplete:e=>n?.onUploadComplete?n.onUploadComplete(e).pipe(t.Effect.timeout(r),t.Effect.asVoid,t.Effect.catchAll(e=>t.Effect.logWarning(`onUploadComplete hook failed: ${e}. Upload already completed.`))):t.Effect.void,onFlowStart:e=>n?.onFlowStart?n.onFlowStart(e).pipe(t.Effect.timeout(r),t.Effect.map(e=>e??W()),t.Effect.catchAll(e=>t.Effect.gen(function*(){return yield*t.Effect.logWarning(`onFlowStart hook failed: ${e}. Proceeding with flow.`),W()}))):t.Effect.succeed(W()),onFlowComplete:e=>n?.onFlowComplete?n.onFlowComplete(e).pipe(t.Effect.timeout(r),t.Effect.asVoid,t.Effect.catchAll(e=>t.Effect.logWarning(`onFlowComplete hook failed: ${e}. Flow already completed.`))):t.Effect.void})},oe=q(),se=e=>t.Effect.gen(function*(){yield*(yield*H).requirePermission(F.ENGINE.DLQ_READ);let t=yield*(yield*n.DeadLetterQueueService).list(e.options);return{type:`dlq-list`,status:200,headers:{"Content-Type":`application/json`},body:t}}),ce=e=>t.Effect.gen(function*(){yield*(yield*H).requirePermission(F.ENGINE.DLQ_READ);let t=yield*(yield*n.DeadLetterQueueService).get(e.itemId);return{type:`dlq-get`,status:200,headers:{"Content-Type":`application/json`},body:t}}),le=e=>t.Effect.gen(function*(){return yield*(yield*H).requirePermission(F.ENGINE.DLQ_WRITE),yield*(yield*n.DeadLetterQueueService).markRetrying(e.itemId),{type:`dlq-retry`,status:200,headers:{"Content-Type":`application/json`},body:{success:!0}}}),ue=e=>t.Effect.gen(function*(){yield*(yield*H).requirePermission(F.ENGINE.DLQ_WRITE);let r=yield*n.DeadLetterQueueService,{items:i}=yield*r.list({status:e.options?.status,flowId:e.options?.flowId}),a=0,o=0;for(let e of i)(yield*t.Effect.either(r.markRetrying(e.id)))._tag===`Right`?a++:o++;return{type:`dlq-retry-all`,status:200,headers:{"Content-Type":`application/json`},body:{retried:i.length,succeeded:a,failed:o}}}),de=e=>t.Effect.gen(function*(){return yield*(yield*H).requirePermission(F.ENGINE.DLQ_WRITE),yield*(yield*n.DeadLetterQueueService).delete(e.itemId),{type:`dlq-delete`,status:200,headers:{"Content-Type":`application/json`},body:{success:!0}}}),fe=e=>t.Effect.gen(function*(){yield*(yield*H).requirePermission(F.ENGINE.DLQ_WRITE);let t=yield*(yield*n.DeadLetterQueueService).markResolved(e.itemId);return{type:`dlq-resolve`,status:200,headers:{"Content-Type":`application/json`},body:t}}),pe=e=>t.Effect.gen(function*(){yield*(yield*H).requirePermission(F.ENGINE.DLQ_WRITE);let t=yield*(yield*n.DeadLetterQueueService).cleanup(e.options);return{type:`dlq-cleanup`,status:200,headers:{"Content-Type":`application/json`},body:t}}),me=e=>t.Effect.gen(function*(){yield*(yield*H).requirePermission(F.ENGINE.DLQ_READ);let e=yield*(yield*n.DeadLetterQueueService).getStats();return{type:`dlq-stats`,status:200,headers:{"Content-Type":`application/json`},body:e}}),he=({flowId:e})=>t.Effect.gen(function*(){let r=yield*n.FlowEngine,i=yield*H,a=yield*i.getClientId();return yield*i.requirePermission(F.FLOW.STATUS),a&&(yield*t.Effect.logInfo(`[Flow] Getting flow data: ${e}, client: ${a}`)),{status:200,body:yield*r.getFlowData(e,a)}}),ge=({flowId:e,storageId:r,inputs:i})=>t.Effect.gen(function*(){let a=yield*n.FlowEngine,o=yield*H,s=yield*u,c=yield*K,l=yield*o.getClientId();if(yield*o.requirePermission(F.FLOW.EXECUTE),l?(yield*t.Effect.logInfo(`[Flow] Executing flow: ${e}, storage: ${r}, client: ${l}`),yield*t.Effect.logInfo(JSON.stringify(i,null,2))):(yield*t.Effect.logInfo(`[Flow] Executing flow: ${e}, storage: ${r}`),yield*t.Effect.logInfo(`[Flow] Inputs: ${JSON.stringify(i,null,2)}`)),l){let n=yield*c.onFlowStart({clientId:l,operation:`flow`,metadata:{flowId:e}});if(n.action===`abort`)return yield*t.Effect.fail(new A(n.reason,n.code??`SUBSCRIPTION_REQUIRED`))}yield*t.Effect.logInfo(`[Flow] Calling flowServer.runFlow...`);let d=yield*a.runFlow({flowId:e,storageId:r,clientId:l,inputs:i}).pipe(t.Effect.tap(()=>t.Effect.logInfo(`[Flow] runFlow completed successfully`)),t.Effect.tapError(e=>t.Effect.logError(`[Flow] runFlow failed with error: ${e}`))),f=yield*o.getAuthContext();return f&&(yield*s.set(d.id,f)),yield*t.Effect.logInfo(`[Flow] Flow started with jobId: ${d.id}`),{status:200,body:d}}),_e=({jobId:e})=>t.Effect.gen(function*(){let r=yield*n.FlowEngine,i=yield*H,a=yield*u,o=yield*i.getClientId();if(yield*i.requirePermission(F.FLOW.STATUS),!e)throw Error(`No job id`);o&&(yield*t.Effect.logInfo(`[Flow] Getting job status: ${e}, client: ${o}`));let s=yield*r.getJobStatus(e);return(s.status===`completed`||s.status===`failed`)&&(yield*a.delete(e),o&&(yield*t.Effect.logInfo(`[Flow] Flow ${s.status}, cleared auth cache: ${e}`))),{status:200,body:s}}),ve=({jobId:e,nodeId:r,newData:i})=>t.Effect.gen(function*(){let a=yield*n.FlowEngine,o=yield*H,s=yield*u;yield*o.requirePermission(F.FLOW.EXECUTE);let c=yield*o.getClientId();if(c||=(yield*s.get(e))?.clientId??null,c&&(yield*t.Effect.logInfo(`[Flow] Continuing flow: jobId=${e}, nodeId=${r}, client: ${c}`)),i===void 0)throw Error(`Missing newData`);let l=yield*a.resumeFlow({jobId:e,nodeId:r,newData:i,clientId:c});return(l.status===`completed`||l.status===`failed`)&&(yield*s.delete(e),c&&(yield*t.Effect.logInfo(`[Flow] Flow ${l.status}, cleared auth cache: ${e}`))),{status:200,body:l}}),ye=({jobId:e})=>t.Effect.gen(function*(){let r=yield*n.FlowEngine,i=yield*H,a=yield*u;yield*i.requirePermission(F.FLOW.CANCEL);let o=yield*i.getClientId();o||=(yield*a.get(e))?.clientId??null,o&&(yield*t.Effect.logInfo(`[Flow] Pausing flow: jobId=${e}, client: ${o}`));let s=yield*r.pauseFlow(e,o);return o&&(yield*t.Effect.logInfo(`[Flow] Flow paused: ${e}, status: ${s.status}`)),{status:200,body:s}}),be=({jobId:e})=>t.Effect.gen(function*(){let r=yield*n.FlowEngine,i=yield*H,a=yield*u,o=yield*K;if(yield*i.requirePermission(F.FLOW.CANCEL),!e)throw Error(`No job id`);let s=yield*i.getClientId();s||=(yield*a.get(e))?.clientId??null,s&&(yield*t.Effect.logInfo(`[Flow] Cancelling flow: jobId=${e}, client: ${s}`));let c=yield*r.cancelFlow(e,s);return yield*a.delete(e),s&&(yield*t.Effect.logInfo(`[Flow] Flow cancelled, cleared auth cache: ${e}`),yield*t.Effect.forkDaemon(o.onFlowComplete({clientId:s,operation:`flow`,metadata:{jobId:e,status:`cancelled`}}))),{status:200,body:c}}),xe=Date.now();function J(){return Date.now()-xe}function Y(){return new Date().toISOString()}function Se(e){return{status:`healthy`,timestamp:Y(),version:e?.version,uptime:J()}}function X(e){let t=[];if(e.storage&&t.push(e.storage.status),e.kvStore&&t.push(e.kvStore.status),t.includes(`unhealthy`))return`unhealthy`;let n=[...t];return e.eventBroadcaster&&n.push(e.eventBroadcaster.status),e.circuitBreaker&&n.push(e.circuitBreaker.status),e.deadLetterQueue&&n.push(e.deadLetterQueue.status),n.includes(`degraded`)?`degraded`:`healthy`}function Ce(e){let n=Date.now();return t.Effect.succeed({status:`healthy`,latency:Date.now()-n,message:`Storage backend configured`,lastCheck:Y()})}function Z(e){let n=Date.now();return t.Effect.succeed({status:`healthy`,latency:Date.now()-n,message:`KV store configured`,lastCheck:Y()})}function we(e){let n=Date.now();return t.Effect.succeed({status:`healthy`,latency:Date.now()-n,message:`Event broadcaster configured`,lastCheck:Y()})}function Te(){return t.Effect.gen(function*(){let e=yield*t.Effect.serviceOption(r.CircuitBreakerStoreService);if(t.Option.isNone(e))return;let n=e.value,i=yield*t.Effect.either(n.getAllStats());if(i._tag===`Left`)return{status:`degraded`,openCircuits:0,totalCircuits:0};let a=i.right,o=Array.from(a.values()),s=o.filter(e=>e.state===`open`).length,c=o.length,l=`healthy`;return s>0&&(l=`degraded`),{status:l,openCircuits:s,totalCircuits:c,circuits:o.map(e=>({nodeType:e.nodeType,state:e.state,failureCount:e.failureCount,timeSinceLastStateChange:e.timeSinceLastStateChange}))}})}function Ee(){return t.Effect.gen(function*(){let e=yield*n.DeadLetterQueueService.optional;if(t.Option.isNone(e))return;let r=e.value,i=yield*t.Effect.either(r.getStats());if(i._tag===`Left`)return{status:`degraded`,pendingItems:0,exhaustedItems:0};let a=i.right,o=`healthy`;return a.byStatus.exhausted>0&&(o=`degraded`),{status:o,pendingItems:a.byStatus.pending,exhaustedItems:a.byStatus.exhausted,oldestItem:a.oldestItem?.toISOString()}})}function De(e={}){let n={...r.DEFAULT_HEALTH_CHECK_CONFIG,...e};return t.Effect.gen(function*(){let t={};return n.checkStorage&&(t.storage=yield*Ce(n)),n.checkKvStore&&(t.kvStore=yield*Z(n)),n.checkEventBroadcaster&&(t.eventBroadcaster=yield*we(n)),{status:X(t),timestamp:Y(),version:e.version,uptime:J(),components:t}})}function Oe(e={}){let n={...r.DEFAULT_HEALTH_CHECK_CONFIG,...e};return t.Effect.gen(function*(){let t={};n.checkStorage&&(t.storage=yield*Ce(n)),n.checkKvStore&&(t.kvStore=yield*Z(n)),n.checkEventBroadcaster&&(t.eventBroadcaster=yield*we(n));let r=yield*Te();r&&(t.circuitBreaker=r);let i=yield*Ee();return i&&(t.deadLetterQueue=i),{status:X(t),timestamp:Y(),version:e.version,uptime:J(),components:t}})}const ke=(e,n)=>t.Effect.sync(()=>{let t=Se(n);return(0,r.getHealthResponseFormat)(e.acceptHeader)===`text`?{type:`health`,status:200,headers:{"Content-Type":`text/plain`},body:(0,r.formatHealthAsText)(t.status)}:{type:`health`,status:200,headers:{"Content-Type":`application/json`},body:t}}),Ae=(e,n)=>t.Effect.gen(function*(){yield*(yield*H).requirePermission(F.ENGINE.READINESS);let t=yield*De(n),i=(0,r.getHealthResponseFormat)(e.acceptHeader),a=t.status===`unhealthy`?503:200;return i===`text`?{type:`health-ready`,status:a,headers:{"Content-Type":`text/plain`},body:(0,r.formatHealthAsText)(t.status)}:{type:`health-ready`,status:a,headers:{"Content-Type":`application/json`},body:t}}),je=(e,n)=>t.Effect.gen(function*(){yield*(yield*H).requirePermission(F.ENGINE.READINESS);let t=yield*Oe(n);return(0,r.getHealthResponseFormat)(e.acceptHeader)===`text`?{type:`health-components`,status:200,headers:{"Content-Type":`text/plain`},body:(0,r.formatHealthAsText)(t.status)}:{type:`health-components`,status:200,headers:{"Content-Type":`application/json`},body:t}}),Me=e=>t.Effect.gen(function*(){let n=yield*c.UploadEngine,a=yield*H,o=yield*u,s=yield*K,l=yield*a.getClientId();yield*a.requirePermission(F.UPLOAD.CREATE),l&&(yield*t.Effect.logInfo(`[Upload] Creating upload for client: ${l}`));let d=yield*t.Effect.sync(()=>r.inputFileSchema.safeParse(e.data));if(!d.success)return yield*t.Effect.fail(new x(`Invalid input file schema`));if(d.data.checksumAlgorithm&&!(0,i.isSupportedAlgorithm)(d.data.checksumAlgorithm))return yield*t.Effect.fail(new x(`Unsupported checksum algorithm: ${d.data.checksumAlgorithm}. Supported algorithms: sha256`));if(l){let e=yield*s.onUploadStart({clientId:l,operation:`upload`,metadata:{fileSize:d.data.size,mimeType:d.data.type,fileName:d.data.fileName}});if(e.action===`abort`)return yield*t.Effect.fail(new A(e.reason,e.code??`QUOTA_EXCEEDED`))}let f=yield*n.createUpload(d.data,l),p=yield*a.getAuthContext();return p&&(yield*o.set(f.id,p)),l&&(yield*t.Effect.logInfo(`[Upload] Upload created: ${f.id} for client: ${l}`)),{status:200,body:f}}),Ne=({storageId:e})=>t.Effect.gen(function*(){let t=yield*c.UploadEngine,n=yield*H,r=yield*n.getClientId();return yield*n.requirePermission(F.UPLOAD.READ),{status:200,body:{storageId:e,capabilities:yield*t.getCapabilities(e,r),timestamp:new Date().toISOString()}}}),Pe=({uploadId:e})=>t.Effect.gen(function*(){let t=yield*c.UploadEngine;return yield*(yield*H).requirePermission(F.UPLOAD.READ),{status:200,body:yield*t.getUpload(e)}}),Fe=e=>t.Effect.gen(function*(){let n=yield*c.UploadEngine,r=yield*H,i=yield*u,a=yield*s.MetricsService,o=yield*K,{uploadId:l,data:d}=e;yield*r.requirePermission(F.UPLOAD.CREATE);let f=yield*r.getClientId(),p=yield*r.getMetadata();if(!f){let e=yield*i.get(l);f=e?.clientId??null,p=e?.metadata??{}}f&&(yield*t.Effect.logInfo(`[Upload] Uploading chunk for upload: ${l}, client: ${f}`));let m=Date.now(),h=yield*n.uploadChunk(l,f,d);if(h.size&&h.offset>=h.size)if(yield*i.delete(l),f&&(yield*t.Effect.logInfo(`[Upload] Upload completed, cleared auth cache: ${l}`)),f&&h.size){yield*t.Effect.logInfo(`[Upload] Recording metrics for org: ${f}, size: ${h.size}`),yield*t.Effect.forkDaemon(a.recordUpload(f,h.size,p));let e=Date.now()-m;yield*t.Effect.forkDaemon(o.onUploadComplete({clientId:f,operation:`upload`,metadata:{uploadId:l,fileSize:h.size,duration:e,storageId:h.storage?.id,url:h.url,fileName:h.metadata?.fileName,flowContext:h.flow?{flowId:h.flow.flowId,jobId:h.flow.jobId}:void 0}}))}else yield*t.Effect.logWarning(`[Upload] Cannot record metrics - missing organizationId or size`);return f&&(yield*t.Effect.logInfo(`[Upload] Chunk uploaded for upload: ${l}, client: ${f}`)),{status:200,body:h}}),Ie=(e,n)=>t.Effect.gen(function*(){switch(e.type){case`create-upload`:return yield*Me(e);case`get-capabilities`:return yield*Ne(e);case`get-upload`:return yield*Pe(e);case`upload-chunk`:return yield*Fe(e);case`get-flow`:return yield*he(e);case`run-flow`:return yield*ge(e);case`job-status`:return yield*_e(e);case`resume-flow`:return yield*ve(e);case`pause-flow`:return yield*ye(e);case`cancel-flow`:return yield*be(e);case`dlq-list`:return yield*se(e);case`dlq-get`:return yield*ce(e);case`dlq-retry`:return yield*le(e);case`dlq-retry-all`:return yield*ue(e);case`dlq-delete`:return yield*de(e);case`dlq-resolve`:return yield*fe(e);case`dlq-cleanup`:return yield*pe(e);case`dlq-stats`:return yield*me(e);case`health`:return yield*ke(e,n?.healthCheckConfig);case`health-ready`:return yield*Ae(e,n?.healthCheckConfig);case`health-components`:return yield*je(e,n?.healthCheckConfig);case`not-found`:return{status:404,headers:{"Content-Type":`application/json`},body:{error:`Not found`}};case`bad-request`:return{status:400,body:{error:`Bad request`,message:e.message}};case`method-not-allowed`:return{status:405,headers:{"Content-Type":`application/json`},body:{error:`Method not allowed`}};case`unsupported-content-type`:return{status:415,headers:{"Content-Type":`application/json`},body:{error:`Unsupported content type`}}}}),Le=async({flows:e,dataStore:c,kvStore:l,plugins:u=[],eventEmitter:f,eventBroadcaster:p=a.memoryEventBroadcaster,withTracing:m=!1,observabilityLayer:h,baseUrl:g=`uploadista`,generateId:_=i.GenerateIdLive,metricsLayer:v,bufferedDataStore:te,adapter:b,authCacheConfig:x,circuitBreaker:S=!0,deadLetterQueue:C=!1,flowQueue:w,healthCheck:T,usageHooks:E})=>{let D=f??(0,o.webSocketEventEmitter)(p),O=g.endsWith(`/`)?g.slice(0,-1):g,k=t.Layer.effect(n.FlowProvider,t.Effect.succeed({getFlow:(t,n)=>e(t,n)}));if(!D)throw Error(`eventEmitter is required. Provide an event emitter layer in the configuration.`);let A=ne({kvStore:l,eventEmitter:D,dataStore:await(0,r.createDataStoreLayer)(c),bufferedDataStore:te,generateId:_}),j=y({kvStore:l,eventEmitter:D,flowProvider:k,uploadEngine:A}),M=d(x),N=v??s.NoOpMetricsServiceLive,P=S?n.kvCircuitBreakerStoreLayer.pipe(t.Layer.provide(l)):null,F=C?n.deadLetterQueueService.pipe(t.Layer.provide(r.deadLetterQueueKvStore),t.Layer.provide(l)):null,I=w?(()=>{let e=w===!0?{}:w.config??{},r=w===!0?void 0:w.store;return r?n.FlowQueueService.make(e,r).pipe(t.Layer.provide(j)):n.FlowQueueService.fromBaseKvStore(e).pipe(t.Layer.provide(j),t.Layer.provide(l))})():null,L=q(E),R=t.Layer.effect(n.FlowLifecycleHook,t.Effect.gen(function*(){let e=yield*K;return{onComplete:t=>e.onFlowComplete({clientId:t.clientId??``,operation:`flow`,metadata:{jobId:t.jobId,flowId:t.flowId,status:t.status===`completed`?`success`:`failed`}})}})).pipe(t.Layer.provide(L)),z=t.Layer.mergeAll(A,j,N,M,L,R,...u,...P?[P]:[],...F?[F]:[],...I?[I]:[]),B=m?h??s.NodeSdkLive:null,V=z,re=B?t.Layer.merge(V,B):V,H=t.ManagedRuntime.make(re);return{handler:async e=>{let r=t.Effect.gen(function*(){let r=yield*b.extractRequest(e,{baseUrl:O}),i=null;if(b.runAuthMiddleware){let n=yield*b.runAuthMiddleware(e).pipe(t.Effect.timeout(`5 seconds`),t.Effect.catchAll(()=>(console.error(`Auth middleware timeout exceeded (5 seconds)`),t.Effect.succeed({_tag:`TimeoutError`}))),t.Effect.catchAllCause(e=>(console.error(`Auth middleware error:`,e),t.Effect.succeed({_tag:`AuthError`,error:e}))));if(n&&typeof n==`object`&&`_tag`in n&&n._tag===`TimeoutError`)return yield*b.sendResponse({status:503,headers:{"Content-Type":`application/json`},body:{error:`Authentication service unavailable`,message:`Authentication took too long to respond. Please try again.`}},e);if(n&&typeof n==`object`&&`_tag`in n&&n._tag===`AuthError`)return yield*b.sendResponse({status:500,headers:{"Content-Type":`application/json`},body:{error:`Internal Server Error`,message:`An error occurred during authentication`}},e);if(n===null)return yield*b.sendResponse({status:401,headers:{"Content-Type":`application/json`},body:{error:`Unauthorized`,message:`Invalid credentials`}},e);i=n}let a=U(i,{bypassAuth:!b.runAuthMiddleware}),o=[];if(b.extractWaitUntil){let r=b.extractWaitUntil(e);r&&o.push(t.Layer.succeed(n.FlowWaitUntil,r))}let s=t.Layer.mergeAll(a,M,N,L,...u,...o),c=P?t.Layer.merge(s,P):s,l=F?t.Layer.merge(c,F):c,d=I?t.Layer.merge(l,I):l;if(r.type===`not-found`)return yield*b.sendResponse({type:`not-found`,status:404,headers:{"Content-Type":`application/json`},body:{error:`Not found`}},e);let f=yield*Ie(r,{healthCheckConfig:T}).pipe(t.Effect.provide(d));return yield*b.sendResponse(f,e)}).pipe(t.Effect.catchAll(t=>{let n=ee(t),r={code:n.code,message:n.message};n.details!==void 0&&(r.details=n.details);let i={status:n.status,headers:{"Content-Type":`application/json`},body:r};return b.sendResponse(i,e)}));return H.runPromise(r)},websocketHandler:await H.runPromise(b.webSocketHandler({baseUrl:O})),baseUrl:O,dispose:()=>H.dispose()}};async function Re(e){return Le(e)}function ze(e){return e}function Be(e){return e}const Ve={ImagePlugin:{packageName:`@uploadista/flow-images-sharp`,variableName:`sharpImagePlugin`},ImageAiPlugin:{packageName:`@uploadista/flow-images-replicate`,variableName:`replicateImagePlugin`},ZipPlugin:{packageName:`@uploadista/flow-utility-zipjs`,variableName:`zipPlugin`},CredentialProvider:{packageName:`@uploadista/core`,variableName:`credentialProviderLayer`}};function He(e){try{let t=e;if(t._tag)return t._tag;if(t.constructor?.name)return t.constructor.name;if(t.context?.services){let e=Array.from(t.context.services.keys());if(e.length>0){let t=e[0];if(t.key)return t.key}}return null}catch{return null}}function Ue(e){return e.map(e=>He(e)).filter(e=>e!==null)}function Q(e){let{plugins:t,expectedServices:n=[]}=e,r=Ue(t),i=n.filter(e=>!r.includes(e));return i.length===0?{success:!0}:{success:!1,required:n,provided:r,missing:i,suggestions:i.map(e=>{let t=Ve[e];return t?{name:e,packageName:t.packageName,importStatement:`import { ${t.variableName} } from '${t.packageName}';`}:null}).filter(e=>e!==null)}}function $(e){let t=[`Server initialization failed: Missing required plugins`,``,`Required: ${e.required.join(`, `)}`,`Provided: ${e.provided.length>0?e.provided.join(`, `):`(none)`}`,`Missing: ${e.missing.join(`, `)}`,``];if(e.suggestions.length>0){t.push(`Add the missing plugins to your configuration:`),t.push(``);for(let n of e.suggestions)t.push(` ${n.importStatement}`);t.push(``),t.push(` const server = await createUploadistaServer({`),t.push(` plugins: [${[...e.provided,...e.missing.map(e=>Ve[e]?.variableName||e)].join(`, `)}],`),t.push(` // ...`),t.push(` });`)}else t.push(`Note: Could not determine package names for missing plugins.`),t.push(`Please ensure all required plugin layers are provided.`);return t.join(`
2
+ `)}function We(e){return t.Effect.sync(()=>{let t=Q(e);if(!t.success){let e=$(t);throw Error(e)}})}function Ge(e){let t=Q(e);if(!t.success){let e=$(t);throw Error(e)}}const Ke=(e,n,r)=>t.Effect.gen(function*(){if(!n){yield*t.Effect.sync(()=>{r.send(JSON.stringify({type:`error`,message:`Job ID is required for flow event subscription`,code:`MISSING_JOB_ID`}))});return}yield*e.subscribeToFlowEvents(n,r)}),qe=(e,n)=>t.Effect.gen(function*(){n&&(yield*e.unsubscribeFromFlowEvents(n))}),Je=(e,n,r)=>t.Effect.gen(function*(){if(!n){yield*t.Effect.sync(()=>{r.send(JSON.stringify({type:`error`,message:`Upload ID is required for upload event subscription`,code:`MISSING_UPLOAD_ID`}))});return}yield*e.subscribeToUploadEvents(n,r)}),Ye=(e,n)=>t.Effect.gen(function*(){n&&(yield*e.unsubscribeFromUploadEvents(n))}),Xe=(e,n,r)=>{let{connection:i,isFlowRoute:a,isUploadRoute:o,jobId:s,uploadId:c,eventId:u}=e;return t.Effect.gen(function*(){a&&(yield*Ke(r,s,i)),o&&(yield*Je(n,c,i)),i.send(JSON.stringify({type:`connection`,message:`Uploadista WebSocket connected`,id:u,jobId:s,uploadId:c,timestamp:new Date().toISOString()}))}).pipe(t.Effect.catchAll(e=>t.Effect.sync(()=>{console.error(`Error subscribing to events:`,e);let t=e instanceof l.UploadistaError?e.body:`Failed to subscribe to events`;i.send(JSON.stringify({type:`error`,message:t,code:e instanceof l.UploadistaError?e.code:`SUBSCRIPTION_ERROR`}))})))},Ze=(e,n)=>t.Effect.sync(()=>{try{JSON.parse(e).type===`ping`&&n.send(JSON.stringify({type:`pong`,timestamp:new Date().toISOString()}))}catch(e){console.error(`Error handling WebSocket message:`,e),n.send(JSON.stringify({type:`error`,message:`Invalid message format`}))}}),Qe=(e,n,r)=>{let{isFlowRoute:i,isUploadRoute:a,jobId:o,uploadId:s}=e;return t.Effect.gen(function*(){i&&(yield*qe(r,o)),a&&(yield*Ye(n,s))}).pipe(t.Effect.catchAll(e=>t.Effect.sync(()=>{console.error(`Error unsubscribing from events:`,e instanceof l.UploadistaError?e.body:e)})))},$e=(e,n)=>t.Effect.sync(()=>{console.error(`WebSocket error for event ${n}:`,e)});exports.AdapterError=b,exports.AuthCacheService=u,exports.AuthCacheServiceLive=d,exports.AuthContextService=H,exports.AuthContextServiceLive=U,exports.AuthenticationRequiredError=O,exports.AuthorizationError=D,exports.BadRequestError=C,exports.DEFAULT_USAGE_HOOK_TIMEOUT=G,exports.ENGINE_PERMISSIONS=M,exports.FLOW_PERMISSIONS=N,exports.NoAuthCacheServiceLive=f,exports.NoAuthContextServiceLive=ie,exports.NoUsageHookServiceLive=oe,exports.NotFoundError=S,exports.OrganizationMismatchError=k,exports.PERMISSIONS=F,exports.PERMISSION_HIERARCHY=L,exports.PERMISSION_SETS=I,exports.QuotaExceededError=A,exports.UPLOAD_PERMISSIONS=P,exports.UsageHookService=K,exports.UsageHookServiceLive=q,exports.ValidationError=x,exports.abortResult=ae,exports.continueResult=W,exports.createAuthorizationErrorResponseBody=j,exports.createErrorResponseBody=w,exports.createFlowEngineLayer=y,exports.createGenericErrorResponseBody=E,exports.createTypeSafeServer=Re,exports.createUploadEngineLayer=ne,exports.createUploadistaErrorResponseBody=T,exports.createUploadistaServer=Le,exports.defineFlow=ze,exports.defineSimpleFlow=Be,exports.expandPermission=re,exports.extractFlowAndStorageId=te,exports.extractJobAndNodeId=v,exports.extractJobIdFromStatus=_,exports.extractServiceIdentifiers=Ue,exports.formatPluginValidationError=$,exports.getAuthCredentials=e.getAuthCredentials,exports.getLastSegment=m,exports.getRouteSegments=g,exports.handleFlowError=ee,exports.handleWebSocketClose=Qe,exports.handleWebSocketError=$e,exports.handleWebSocketMessage=Ze,exports.handleWebSocketOpen=Xe,exports.hasAllPermissions=V,exports.hasAnyPermission=B,exports.hasBasePath=h,exports.hasPermission=z,exports.matchesPermission=R,exports.parseUrlSegments=p,exports.validatePluginRequirements=Q,exports.validatePluginRequirementsEffect=We,exports.validatePluginsOrThrow=Ge;
package/dist/index.d.cts CHANGED
@@ -2,7 +2,7 @@ import { AuthCredentialsResponse, getAuthCredentials } from "./auth/index.cjs";
2
2
  import * as _uploadista_core0 from "@uploadista/core";
3
3
  import { DataStoreCapabilities, DeadLetterCleanupOptions, DeadLetterCleanupResult, DeadLetterItem, DeadLetterItemStatus, DeadLetterListOptions, DeadLetterQueueStats, Flow, FlowData, FlowEngine, FlowJob, HealthResponse as HealthResponse$1, PluginLayer, UploadEngine, UploadEvent, UploadFile, UploadistaError, VideoPluginLayer } from "@uploadista/core";
4
4
  import { Context, Effect, Layer } from "effect";
5
- import { CredentialProviderLayer, ExtractLayerServices, Flow as Flow$1, FlowEngineShape, FlowProvider, ImageAiPluginLayer, ImagePluginLayer, ZipPluginLayer } from "@uploadista/core/flow";
5
+ import { CredentialProviderLayer, ExtractLayerServices, Flow as Flow$1, FlowEngineShape, FlowProvider, FlowQueueConfig, FlowQueueStore, ImageAiPluginLayer, ImagePluginLayer, ZipPluginLayer } from "@uploadista/core/flow";
6
6
  import z$1, { z } from "zod";
7
7
  import { BaseEventEmitterService, BaseKvStoreService, DataStoreConfig, EventBroadcasterService, HealthCheckConfig, UploadFileDataStore, UploadFileDataStores, UploadFileKVStore } from "@uploadista/core/types";
8
8
  import { GenerateId } from "@uploadista/core/utils";
@@ -1192,6 +1192,39 @@ interface UploadistaServerConfig<TRequest, TResponse, TWebSocket = unknown, TFlo
1192
1192
  * ```
1193
1193
  */
1194
1194
  healthCheck?: HealthCheckConfig;
1195
+ /**
1196
+ * Optional: Flow queue for bounded concurrent flow execution.
1197
+ *
1198
+ * When enabled, `FlowEngine.runFlow()` delegates to the queue instead of
1199
+ * forking immediately. The queue dispatches flows up to `maxConcurrency`
1200
+ * simultaneously, buffering the rest as `"pending"`.
1201
+ *
1202
+ * Set to `true` to use the default in-memory store (state lost on restart).
1203
+ * Provide a `store` to use a persistent backend such as `RedisFlowQueueStore`.
1204
+ *
1205
+ * When both `flowQueue` and `deadLetterQueue` are enabled, the queue
1206
+ * automatically retries DLQ items on a configurable interval.
1207
+ *
1208
+ * @default undefined (disabled — fire-and-forget behavior preserved)
1209
+ *
1210
+ * @example
1211
+ * ```typescript
1212
+ * // Simple in-memory queue
1213
+ * flowQueue: true
1214
+ *
1215
+ * // Persistent Redis-backed queue with custom concurrency
1216
+ * import { RedisFlowQueueStore } from "@uploadista/queue-store-redis";
1217
+ *
1218
+ * flowQueue: {
1219
+ * store: new RedisFlowQueueStore({ redis }),
1220
+ * config: { maxConcurrency: 8, dlqRetryIntervalMs: 60_000 },
1221
+ * }
1222
+ * ```
1223
+ */
1224
+ flowQueue?: boolean | {
1225
+ config?: FlowQueueConfig;
1226
+ store?: FlowQueueStore;
1227
+ };
1195
1228
  /**
1196
1229
  * Optional: Usage hooks for tracking and billing integration.
1197
1230
  *
@@ -1700,6 +1733,7 @@ declare const createUploadistaServer: <TContext, TResponse, TWebSocketHandler =
1700
1733
  authCacheConfig,
1701
1734
  circuitBreaker,
1702
1735
  deadLetterQueue,
1736
+ flowQueue,
1703
1737
  healthCheck,
1704
1738
  usageHooks
1705
1739
  }: UploadistaServerConfig<TContext, TResponse, TWebSocketHandler, TFlows, TPlugins>) => Promise<UploadistaServer<TContext, TResponse, TWebSocketHandler>>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/core/routes.ts","../src/types.ts","../src/adapter/types.ts","../src/cache.ts","../src/core/plugin-types.ts","../src/usage-hooks/types.ts","../src/core/types.ts","../src/core/create-type-safe-server.ts","../src/core/plugin-validation.ts","../src/core/server.ts","../src/core/websocket-routes.ts","../src/core/websocket-handlers/websocket-handlers.ts","../src/error-types.ts","../src/http-utils.ts","../src/layer-utils.ts","../src/permissions/errors.ts","../src/permissions/matcher.ts","../src/permissions/types.ts","../src/plugins-typing.ts","../src/service.ts","../src/usage-hooks/service.ts"],"mappings":";;;;;;;;;;;;;KAeY,mBAAA;AAAA,KA8BA,eAAA,WAA0B,mBAAA;EACpC,IAAA,EAAM,CAAA;AAAA;AAAA,KAGI,0BAAA,WACA,mBAAA,+CAGR,eAAA,CAAgB,CAAA;EAClB,MAAA,EAAQ,MAAA;EACR,OAAA;IAAW,cAAA;EAAA;EACX,IAAA,EAAM,YAAA;AAAA;AAAA,KAGI,eAAA,GAAkB,eAAA;AAAA,KAElB,gBAAA,GAAmB,0BAAA;EAE3B,KAAA;AAAA;AAAA,KAIQ,uBAAA,GAA0B,eAAA;AAAA,KAE1B,wBAAA,GAA2B,0BAAA;EAEnC,KAAA;AAAA;AAAA,KAIQ,iBAAA,GAAoB,eAAA;EAC9B,OAAA;AAAA;AAAA,KAGU,kBAAA,GAAqB,0BAAA;EAE7B,KAAA;EAAsB,OAAA;AAAA;AAAA,KAId,6BAAA,GACV,eAAA;AAAA,KAEU,8BAAA,GAAiC,0BAAA;EAEzC,KAAA;AAAA;AAAA,KAGQ,mBAAA,GAAsB,eAAA;EAChC,IAAA;AAAA;AAAA,KAEU,oBAAA,GAAuB,0BAAA,kBAEjC,UAAA;AAAA,KAEU,sBAAA,GAAyB,eAAA;EACnC,SAAA;AAAA;AAAA,KAEU,uBAAA,GAA0B,0BAAA;EAGlC,SAAA;EACA,YAAA,EAAc,qBAAA;EACd,SAAA;AAAA;AAAA,KAIQ,gBAAA,GAAmB,eAAA;EAC7B,QAAA;AAAA;AAAA,KAGU,iBAAA,GAAoB,0BAAA,eAE9B,UAAA;AAAA,KAGU,kBAAA,GAAqB,eAAA;EAC/B,QAAA;EACA,IAAA,EAAM,cAAA;AAAA;AAAA,KAGI,mBAAA,GAAsB,0BAAA,iBAEhC,UAAA;AAAA,KAGU,cAAA,GAAiB,eAAA;EAC3B,MAAA;AAAA;AAAA,KAEU,eAAA,GAAkB,0BAAA,aAAuC,QAAA;AAAA,KAEzD,cAAA,GAAiB,eAAA;EAC3B,MAAA;EACA,SAAA;EACA,MAAA,EAAQ,MAAA;AAAA;AAAA,KAEE,eAAA,GAAkB,0BAAA,aAAuC,OAAA;AAAA,KAEzD,mBAAA,GAAsB,eAAA;EAChC,KAAA;AAAA;AAAA,KAEU,oBAAA,GAAuB,0BAAA,eAEjC,OAAA;AAAA,KAGU,iBAAA,GAAoB,eAAA;EAC9B,KAAA;EACA,MAAA;EACA,OAAA;AAAA;AAAA,KAEU,kBAAA,GAAqB,0BAAA,gBAE/B,OAAA;AAAA,KAGU,gBAAA,GAAmB,eAAA;EAC7B,KAAA;AAAA;AAAA,KAEU,iBAAA,GAAoB,0BAAA,eAE9B,OAAA;AAAA,KAGU,iBAAA,GAAoB,eAAA;EAC9B,KAAA;AAAA;AAAA,KAEU,kBAAA,GAAqB,0BAAA,gBAE/B,OAAA;AAAA,KAOU,cAAA,GAAiB,eAAA;EAC3B,OAAA,GAAU,qBAAA;AAAA;AAAA,KAEA,eAAA,GAAkB,0BAAA;EAE1B,KAAA,EAAO,cAAA;EAAkB,KAAA;AAAA;AAAA,KAGjB,aAAA,GAAgB,eAAA;EAC1B,MAAA;AAAA;AAAA,KAEU,cAAA,GAAiB,0BAAA,YAE3B,cAAA;AAAA,KAGU,eAAA,GAAkB,eAAA;EAC5B,MAAA;AAAA;AAAA,KAEU,gBAAA,GAAmB,0BAAA;EAE3B,OAAA;EAAkB,QAAA;AAAA;AAAA,KAGV,kBAAA,GAAqB,eAAA;EAC/B,OAAA;IAAY,MAAA,GAAS,oBAAA;IAAsB,MAAA;EAAA;AAAA;AAAA,KAEjC,mBAAA,GAAsB,0BAAA;EAE9B,OAAA;EAAiB,SAAA;EAAmB,MAAA;AAAA;AAAA,KAG5B,gBAAA,GAAmB,eAAA;EAC7B,MAAA;AAAA;AAAA,KAEU,iBAAA,GAAoB,0BAAA;EAE5B,OAAA;AAAA;AAAA,KAGQ,iBAAA,GAAoB,eAAA;EAC9B,MAAA;AAAA;AAAA,KAEU,kBAAA,GAAqB,0BAAA,gBAE/B,cAAA;AAAA,KAGU,iBAAA,GAAoB,eAAA;EAC9B,OAAA,GAAU,wBAAA;AAAA;AAAA,KAEA,kBAAA,GAAqB,0BAAA,gBAE/B,uBAAA;AAAA,KAGU,eAAA,GAAkB,eAAA;AAAA,KAClB,gBAAA,GAAmB,0BAAA,cAE7B,oBAAA;;AA5HF;;KAsIK,sBAAA;EAtI2B,0DAwI9B,YAAA;AAAA;;;;KAMU,aAAA,GAAgB,eAAA,aAA4B,sBAAA;;;;;KAM5C,cAAA,GAAiB,eAAA;EAC3B,MAAA;EACA,OAAA;IAAW,cAAA;EAAA;EACX,IAAA,EAAM,gBAAA;AAAA;;;;KAMI,kBAAA,GAAqB,eAAA,mBAC/B,sBAAA;AA5IF;;;;AAAA,KAkJY,mBAAA,GAAsB,eAAA;EAChC,MAAA;EACA,OAAA;IAAW,cAAA;EAAA;EACX,IAAA,EAAM,gBAAA;AAAA;;;;KAMI,uBAAA,GAA0B,eAAA,wBACpC,sBAAA;;AArJF;;;KA2JY,wBAAA,GAA2B,eAAA;EACrC,MAAA;EACA,OAAA;IAAW,cAAA;EAAA;EACX,IAAA,EAAM,gBAAA;AAAA;AAAA,KAGI,iBAAA,GACR,mBAAA,GACA,sBAAA,GACA,gBAAA,GACA,kBAAA,GACA,cAAA,GACA,cAAA,GACA,mBAAA,GACA,iBAAA,GACA,gBAAA,GACA,iBAAA,GAEA,cAAA,GACA,aAAA,GACA,eAAA,GACA,kBAAA,GACA,gBAAA,GACA,iBAAA,GACA,iBAAA,GACA,eAAA,GAEA,aAAA,GACA,kBAAA,GACA,uBAAA,GAEA,eAAA,GACA,iBAAA,GACA,uBAAA,GACA,6BAAA;AAAA,KAEQ,kBAAA,GACR,oBAAA,GACA,uBAAA,GACA,iBAAA,GACA,mBAAA,GACA,eAAA,GACA,eAAA,GACA,oBAAA,GACA,kBAAA,GACA,iBAAA,GACA,kBAAA,GAEA,eAAA,GACA,cAAA,GACA,gBAAA,GACA,mBAAA,GACA,iBAAA,GACA,kBAAA,GACA,kBAAA,GACA,gBAAA,GAEA,cAAA,GACA,mBAAA,GACA,wBAAA,GAEA,gBAAA,GACA,kBAAA,GACA,wBAAA,GACA,8BAAA,GACA,gBAAA;;;;;;;;KCpWQ,WAAA;;;;;EAKV,QAAA;;;ADKF;;;;;AA8BA;;;;;;ECpBE,QAAA,GAAW,MAAA;EDqBL;;;AAGR;EClBE,WAAA;AAAA;;;;;;KAQU,UAAA,GAAa,WAAA;;;;;;;;;;;;ADxBzB;;;;;AA8BA;;;UEvBiB,eAAA;EFuBW;;;EEnB1B,MAAA;EFoBO;;AAGT;EElBE,GAAA,EAAK,GAAA;EFkB+B;;;EEbpC,OAAA,EAAS,MAAA;EFkBD;;;EEbR,IAAA;AAAA;;;;;;;;;;;;;;AFkBF;;UEAiB,gBAAA;EFAa;;AAE9B;EEEE,MAAA;;;;EAKA,OAAA,GAAU,MAAA;EFDuB;;;EEMjC,IAAA;AAAA;;;;;AFEF;;;;;AAIA;;;;;;UEYiB,gBAAA;EFVgB;;AAIjC;;;EEYE,SAAA,GAAY,OAAA;EFXG;AAEjB;;EEcE,OAAA;EFd2C;;AAK7C;;;EEgBE,OAAA,GAAU,KAAA,EAAO,KAAA;AAAA;AFbnB;;;;;AAIA;;;;;AAGA;;;;;;;;;;;AASA;;;;;AAIA;;;;;AAKA;;;AAzBA,UEkDiB,aAAA;EFzBgB;;;;;;AAKjC;;;EEkCE,cAAA,CACE,GAAA,EAAK,QAAA;IACH;EAAA;IAAa,OAAA;EAAA,IACd,MAAA,CAAO,MAAA,CAAO,iBAAA;EFhCO;;;;AAG1B;;;;;EEwCE,YAAA,CACE,QAAA,EAAU,kBAAA,EACV,OAAA,EAAS,QAAA,GACR,MAAA,CAAO,MAAA,CAAO,SAAA;EFzCO;;;;;;;;;;AAK1B;;;EEmDE,iBAAA,EAAmB,GAAA,EAAK,QAAA,GAAW,MAAA,CAAO,MAAA,CAAO,UAAA;EFnDyB;AAE5E;;;;;AAGA;;;;;EE2DE,gBAAA,CAAiB,OAAA;IACf,OAAA;EAAA,IACE,MAAA,CAAO,MAAA,CAAO,iBAAA,SAA0B,YAAA,GAAe,UAAA;EFxDd;;;;;;;AAK/C;;;;;AAKA;;;;EEgEE,gBAAA,IACE,GAAA,EAAK,QAAA,OACA,OAAA,EAAS,OAAA;AAAA;;;;;;KC7NN,eAAA;;;;;;EAMV,OAAA;;AHGF;;;;EGIE,GAAA;AAAA;AAAA,cACA,qBAAA;EHyByB;;;EAAA,eGoBrB,KAAA,UACA,WAAA,EAAa,WAAA,KACV,MAAA,CAAO,MAAA;EHrBd;;;;EAAA,eG2BiB,KAAA,aAAkB,MAAA,CAAO,MAAA,CAAO,WAAA;EHxBb;;;EAAA,kBG6BhB,KAAA,aAAkB,MAAA,CAAO,MAAA;EHzB3C;;;EAAA,sBG8BsB,MAAA,CAAO,MAAA;EH3Bb;;;EAAA,qBGgCK,MAAA,CAAO,MAAA;AAAA;;;;;;;;;;;AH7BhC;;;;;AAEA;;;;;AAMA;;;;;AAEA;;;cGXa,gBAAA,SAAyB,qBAAA;AHiBtC;;;;;AAIA;AAJA,cGuBa,oBAAA,GACX,MAAA,GAAQ,eAAA,KACP,KAAA,CAAM,KAAA,CAAM,gBAAA;;;;;;cAgGF,sBAAA,EAAwB,KAAA,CAAM,KAAA,CAAM,gBAAA;;;;;;;;;;;;KC/KrC,yBAAA,oBAES,KAAA,CAAM,KAAA,qBACvB,oBAAA,CAAqB,CAAA;;;;;KAMb,gBAAA,GACR,gBAAA,GACA,gBAAA,GACA,kBAAA,GACA,uBAAA,GACA,cAAA;;;;;KAMQ,WAAA,YAAuB,gBAAA;;;;;AJQnC;;;;;;;;KIMY,cAAA,kBAAgC,WAAA,IAC1C,oBAAA,CAAqB,QAAA;;;;;;;;;;;;;;;;KAiBX,oBAAA,2BACV,MAAA,UACA,QAAA,oBACG,MAAA,CAAO,MAAA,CACV,MAAA,CAAK,CAAA,CAAE,SAAA,WAAoB,CAAA,CAAE,SAAA,WAAoB,aAAA,GACjD,eAAA,EACA,aAAA;;;;;AJlBF;;;;;AAMA;;;;;AAEA;;;;;AAMA;;;;;AAIA;;;KI8BY,eAAA,kBACO,WAAA,mBAEf,aAAA,wBAEA,aAAA,SAAsB,cAAA,CAAe,QAAA;EAAA,SAGxB,OAAA;EAAA,SACA,SAAA;EAAA,SACA,UAAA,EAAY,aAAA;EAAA,SACZ,UAAA,EAAY,cAAA,CAAe,QAAA;EAAA,SAC3B,SAAA,EAAW,OAAA,CAAQ,aAAA,EAAe,cAAA,CAAe,QAAA;EAAA,SACjD,MAAA;AAAA;;;;AJlCjB;;;;;AAKA;;;;;AAGA;;;;;AAIA;;;;;AAGA;;;;;;KImDY,oBAAA,kBACO,WAAA,uBAEf,eAAA,CAAgB,QAAA,EAAU,iBAAA;EAExB,OAAA,EAAS,QAAA;EACT,KAAA,EAAO,oBAAA,CAAqB,iBAAA;AAAA,IAE9B,eAAA,CAAgB,QAAA,EAAU,iBAAA;;AJlD9B;;;;;AAIA;;;;;AAKA;;;;;;;;KI8DY,6BAAA,kBAER,MAAA,UACA,QAAA,oBACG,MAAA,CAAO,MAAA,+BAEZ,UAAA,CAAW,OAAA,UAAiB,MAAA,CAAO,MAAA,kCAE/B,KAAA,SAAc,MAAA,kCACZ,OAAA,CAAQ,aAAA;;AJlEhB;;;;;AAKA;;;;KI2EY,qBAAA,MACV,CAAA,SAAU,oBAAA,YAAgC,CAAA;AJzE5C;;;;AAAA,KI+EY,mBAAA,WAA8B,WAAA,kBAC5B,CAAA,GAAI,CAAA,CAAE,CAAA,UAAW,KAAA,CAAM,KAAA,8BAC/B,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,CAAA,EAAG,CAAA;;;;;;;KCtMZ,eAAA;EAAA,SACG,MAAA;AAAA;EAAA,SAEA,MAAA;EAAA,SACA,MAAA;EAAA,SACA,IAAA;AAAA;ALuBf;;;AAAA,cKjBa,cAAA,QAAqB,eAAA;;;;cAKrB,WAAA,GACX,MAAA,UACA,IAAA,cACC,eAAA;;;ALaH;UKAiB,iBAAA;ELAqB;EKEpC,QAAA;ELEkB;EKAlB,QAAA;ELCQ;EKCR,QAAA;AAAA;;;;UAMe,mBAAA,SAA4B,iBAAA;ELT3C;EKWA,QAAA;ELVkB;EKYlB,QAAA;ELXQ;EKaR,SAAA;ELZW;EKcX,GAAA;ELbM;EKeN,WAAA;IACE,MAAA;IACA,KAAA;EAAA;AAAA;;;ALZJ;UKmBiB,iBAAA,SAA0B,iBAAA;;EAEzC,MAAA;ELnBO;EKqBP,KAAA;ELjBiC;EKmBjC,SAAA;ELnBoC;EKqBpC,aAAA;ELnBU;EKqBV,UAAA;;EAEA,aAAA;ELrBO;EKuBP,QAAA;ELnB2B;EKqB3B,MAAA;AAAA;;ALjBF;;UKuBiB,YAAA,mBACG,iBAAA,GAAoB,iBAAA;ELxBmB;EK2BzD,QAAA;ELzBE;EK2BF,SAAA;EL3B+B;EK6B/B,QAAA,EAAU,SAAA;AAAA;;;;KAMA,kBAAA,GAAqB,YAAA,CAAa,mBAAA;AL5B9C;;;AAAA,KKiCY,gBAAA,GAAmB,YAAA,CAAa,iBAAA;;AL5B5C;;;KKsCY,iBAAA,IACV,GAAA,EAAK,kBAAA,KACF,MAAA,CAAO,MAAA,CAAO,eAAA;;ALrCnB;;;KK2CY,oBAAA,IACV,GAAA,EAAK,kBAAA,KACF,MAAA,CAAO,MAAA;;ALzCZ;;;KK+CY,eAAA,IACV,GAAA,EAAK,gBAAA,KACF,MAAA,CAAO,MAAA,CAAO,eAAA;;AL9CnB;;;KKoDY,kBAAA,IAAsB,GAAA,EAAK,gBAAA,KAAqB,MAAA,CAAO,MAAA;;;;;;;;AL3CnE;;;;;AAIA;;;;;AAKA;;;UK4DiB,UAAA;EL5DgB;;;;EKiE/B,aAAA,GAAgB,iBAAA;EL/DI;AAGtB;;;EKkEE,gBAAA,GAAmB,oBAAA;ELhET;AAGZ;;;EKmEE,WAAA,GAAc,eAAA;ELlER;AAER;;;EKsEE,cAAA,GAAiB,kBAAA;AAAA;ALpEnB;;;AAAA,UK0EiB,eAAA;EL1EY;;;EK8E3B,KAAA,GAAQ,UAAA;EL3EA;;;AAEV;;EKgFE,OAAA;AAAA;;AL9EF;;cKoFa,0BAAA;;;;;;ALpNb;;;;;AA8BA;;;;;;;;;;AAIA;;;;;;KMNY,aAAA,IACV,MAAA,UACA,QAAA,oBACG,MAAA,CAAO,MAAA,CACV,MAAA,CAAK,CAAA,CAAE,SAAA,WAAoB,CAAA,CAAE,SAAA,qBAC7B,eAAA;;;;;;;;;;;;;;;;;;ANWF;;;;;AAEA;;;;;AAMA;;;;;AAEA;;;UMkBiB,sBAAA,4DAKb,MAAA,UACA,QAAA,oBACG,MAAA,CAAO,MAAA,CAEV,MAAA,CAAK,CAAA,CAAE,SAAA,WAAoB,CAAA,CAAE,SAAA,iBAC7B,eAAA,wCAKwB,WAAA,cAAyB,WAAA;EN/B5C;AAIT;;;;;AAIA;;;;;;EMqCE,KAAA,EAAO,MAAA;ENnCwB;;AAIjC;;;;;AAGA;;;;;AAKA;;;;;EM0CE,SAAA,EAAW,eAAA;ENvCmB;;;;AAIhC;;;;;AAGA;;;;EM+CE,OAAA,EAAS,KAAA,CAAM,KAAA,CAAM,kBAAA;EN5CnB;;;;;;AAMJ;;;;;EMmDE,OAAA,GAAU,QAAA;EN/CiB;;;;AAK7B;;;;;;;;;EMyDE,YAAA,GAAe,KAAA,CAAM,KAAA,CAAM,uBAAA;ENpDjB;;;;;AAKZ;;;;;AAGA;;;EM2DE,gBAAA,GAAmB,KAAA,CAAM,KAAA,CAAM,uBAAA;EN3D4C;AAE7E;;;;;;;;;EMqEE,OAAA;ENlEc;AAEhB;;;;;AAEA;;;;;AAGA;;EM0EE,UAAA,GAAa,KAAA,CAAM,KAAA,CAAM,UAAA;EN1EQ;;AAKnC;;;;;;EM+EE,WAAA;EN5EA;;;AAEF;;;;;AAKA;;;;;AAGA;;;;;AAKA;;;;;AAGA;;;;;AASA;;;;;EMqFE,kBAAA,GAAqB,KAAA,CAAM,KAAA;ENpFjB;;;AAEZ;;;;;;;;;;EMiGE,YAAA,GAAe,KAAA,CAAM,KAAA,CAAM,cAAA;EN5FJ;;;;AAGzB;;;;;AAKA;;;;EMmGE,iBAAA,GAAoB,KAAA,CAAM,KAAA,CACxB,mBAAA,SAEA,iBAAA;ENnGQ;;;;;;;;;AAKZ;;;;;;;EMiHE,OAAA,EAAS,aAAA,CAAc,QAAA,EAAU,SAAA,EAAW,UAAA;ENhHD;;;AAE7C;;;;;;;;;;AAKA;EMyHE,eAAA,GAAkB,eAAA;;;;ANtHpB;;;;;AAKA;;;;;AAGA;;;;;AAKA;;;;;;;;EMqIE,cAAA;ENlIU;;;;;AAKZ;;;;;AACA;;;;;AAGE;;;;;AAiBF;;;;;AAMA;EM8HE,eAAA;;;;;;;;;;;ANrHF;;;;;AAOA;;;;;EMoIE,WAAA,GAAc,iBAAA;ENlId;;;;;;AAOF;;;;;AAOA;;;;;;;;;;;;AAMA;;;;;;;;;EMgJE,UAAA,GAAa,eAAA;AAAA;;;;;;;;;;UAYE,gBAAA;ENvIb;;;EM+IF,OAAA,GAAU,GAAA,EAAK,QAAA,KAAa,OAAA,CAAQ,SAAA;EN1IlC;;;EM+IF,gBAAA,EAAkB,iBAAA;EN7Ia;;;EMkJ/B,OAAA;EN1KE;;;;;EMiLF,OAAA,QAAe,OAAA;AAAA;;;;;;;;;;;;;;ANpdjB;KOMY,oBAAA,mDAIO,WAAA,sBACG,cAAA,CAAe,QAAA,KACjC,IAAA,CACF,sBAAA,CAAuB,QAAA,EAAU,SAAA,EAAW,UAAA;;;;APiB9C;EOVE,OAAA,EAAS,QAAA;EPUgB;;;;EOJzB,KAAA,EAAO,oBAAA,CAAqB,iBAAA;EPKtB;;;AAGR;EOFE,UAAA,GAAa,eAAA,CAAgB,QAAA,EAAU,iBAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;APYzC;;;;;AAEA;;;;;AAMA;;;;;AAEA;;;;;AAMA;;;;;AAIA;;;;;;;;;AAMA;;;;;AAGA;;;;;AAKA;;;;;AAGA;;;;;AAIA;;;iBO4BsB,oBAAA,6DAIH,WAAA,GAAc,WAAA,sBACX,cAAA,CAAe,QAAA,EAAA,CAEnC,MAAA,EAAQ,oBAAA,CACN,QAAA,EACA,SAAA,EACA,UAAA,EACA,QAAA,EACA,iBAAA,KAGC,eAAA,CAAgB,QAAA,EAAU,iBAAA,0BAEvB,eAAA,CAAgB,QAAA,EAAU,iBAAA,KAC/B,OAAA,CAAQ,gBAAA,CAAiB,QAAA,EAAU,SAAA,EAAW,UAAA;;AP3CjD;;;;;;;;;;;AASA;;;;;AAIA;;;;;AAKA;;iBOqDgB,UAAA,uBAAA,CACd,EAAA,EAAI,oBAAA,CAAqB,aAAA,IACxB,oBAAA,CAAqB,aAAA;;;;;;;;APlDxB;;;;;AAKA;;;;;AAGA;;iBOiEgB,gBAAA,CACd,EAAA,EAAI,oBAAA,UACH,oBAAA;;;;AP1LH;;KQEY,sBAAA;EAEN,OAAA;AAAA;EAGA,OAAA;EACA,QAAA;EACA,QAAA;EACA,OAAA;EACA,WAAA,EAAa,KAAA;IACX,IAAA;IACA,WAAA;IACA,eAAA;EAAA;AAAA;ARoBR;;;;;;AAAA,iBQkEgB,yBAAA,CACd,OAAA,WAAkB,WAAA;;;;;;;;;;;;;;;;;;ARzDpB;;;;;AAEA;;;;;iBQyFgB,0BAAA,CAA2B,MAAA;EACzC,OAAA,WAAkB,WAAA;EAClB,gBAAA;AAAA,IACE,sBAAA;;ARpFJ;;;;;AAMA;;;;;AAIA;;;;;;;;;AAMA;;iBQkIgB,2BAAA,CACd,MAAA,EAAQ,OAAA,CAAQ,sBAAA;EAA0B,OAAA;AAAA;ARhI5C;;;;;AAKA;;;;;AAGA;;;;;AAIA;;;;;AAGA;AAfA,iBQqLgB,gCAAA,CAAiC,MAAA;EAC/C,OAAA,WAAkB,WAAA;EAClB,gBAAA;AAAA,IACE,MAAA,CAAO,MAAA,OAAa,KAAA;;;;;;;ARhKxB;;;;;AAIA;;;;;AAKA;;;;;;;iBQyLgB,sBAAA,CAAuB,MAAA;EACrC,OAAA,WAAkB,WAAA;EAClB,gBAAA;AAAA;;;;;;;;;;;ARrSF;;;;;AA8BA;;;;;;;;;;AAIA;;;;;;;;;;;;;;;;;;;;;;;;AAUA;;;;;AAEA;;;;;AAMA;;;;;AAEA;;;;;AAMA;;;;;AAIA;;;;;;;;;AAMA;;;;;AAGA;;;;;AAKA;;;;;AAGA;;;;;AAIA;;;;;AAGA;;;;;;;;;;;AASA;;;;;AAIA;;;;;AAKA;;;;;;;;;;AAKA;cS6Ca,sBAAA,qEAKT,MAAA,UACA,QAAA,oBACG,MAAA,CAAO,MAAA,CAEV,MAAA,CAAK,CAAA,CAAE,SAAA,WAAoB,CAAA,CAAE,SAAA,iBAC7B,eAAA,wCAKwB,WAAA,cAAyB,WAAA;EACnD,KAAA;EAAA,SAAA;EAAA,OAAA;EAAA,OAAA;EAAA,YAAA;EAAA,gBAAA;EAAA,WAAA;EAAA,kBAAA;EAAA,OAAA,EAAA,aAAA;EAAA,UAAA;EAAA,YAAA;EAAA,iBAAA;EAAA,OAAA;EAAA,eAAA;EAAA,cAAA;EAAA,eAAA;EAAA,WAAA;EAAA;AAAA,GAoBC,sBAAA,CACD,QAAA,EACA,SAAA,EACA,iBAAA,EACA,MAAA,EACA,QAAA,MACE,OAAA,CAAQ,gBAAA,CAAiB,QAAA,EAAU,SAAA,EAAW,iBAAA;;;;;;;KC/MtC,mBAAA;EACV,EAAA;EACA,IAAA,GAAO,IAAA;EACP,KAAA,GAAQ,IAAA,WAAe,MAAA;EACvB,UAAA;AAAA;;;AVKF;KUCY,kBAAA;;;;KAgBA,cAAA,WAAyB,kBAAA;EACnC,IAAA,EAAM,CAAA;AAAA;;;;KAOI,oBAAA,GAAuB,cAAA;EACjC,QAAA;AAAA;AAAA,KAGU,kBAAA,GAAqB,cAAA;EAC/B,KAAA;AAAA;AAAA,KAGU,sBAAA,GAAyB,cAAA;EACnC,QAAA;AAAA;AAAA,KAGU,oBAAA,GAAuB,cAAA;EACjC,KAAA;AAAA;AAAA,KAGU,SAAA,GAAY,cAAA;AAAA,KAEZ,sBAAA,GACR,oBAAA,GACA,kBAAA,GACA,sBAAA,GACA,oBAAA,GACA,SAAA;;;;KAMQ,eAAA,GAAkB,cAAA;EAC5B,OAAA;EACA,EAAA;EACA,KAAA;EACA,QAAA;EACA,SAAA;AAAA;AAAA,KAGU,kBAAA,GAAqB,cAAA;EAC/B,QAAA;EACA,KAAA,EAAO,WAAA;EACP,SAAA;AAAA;AAAA,KAGU,gBAAA,GAAmB,cAAA;EAC7B,KAAA;EACA,KAAA;EACA,SAAA;AAAA;AAAA,KAGU,UAAA,GAAa,cAAA;EACvB,OAAA;EACA,IAAA;AAAA;AAAA,KAGU,gBAAA,GAAmB,cAAA;EAC7B,OAAA;EACA,cAAA;AAAA;AAAA,KAGU,eAAA,GAAkB,cAAA;EAC5B,OAAA;EACA,UAAA;AAAA;AAAA,KAGU,sBAAA,GACR,eAAA,GACA,kBAAA,GACA,gBAAA,GACA,UAAA,GACA,gBAAA,GACA,eAAA;;AVnCJ;;;KUyCY,0BAAA;EVxCH,gDU0CP,OAAA,UVvC4B;EUyC5B,QAAA,UVzCyD;EU2CzD,aAAA,YVzCE;EU2CF,aAAA,WV3C+B;EU6C/B,WAAA,WVzCU;EU2CV,KAAA;EAEA,QAAA,WV5Ce;EU8Cf,OAAA,WV5CwC;EU8CxC,UAAA,EAAY,mBAAA;AAAA;;;;;;;cC5GD,mBAAA,GACX,OAAA,EAAS,0BAAA,EACT,YAAA,EAAc,iBAAA,EACd,UAAA,EAAY,eAAA,KAAe,MAAA,CAAA,MAAA;;;;AXd7B;cWoEa,sBAAA,GACX,OAAA,UACA,UAAA,EAAY,mBAAA,KAAmB,MAAA,CAAA,MAAA;;;;AXxCjC;cWqEa,oBAAA,GACX,OAAA,EAAS,0BAAA,EACT,YAAA,EAAc,iBAAA,EACd,UAAA,EAAY,eAAA,KAAe,MAAA,CAAA,MAAA;;;;cA6BhB,oBAAA,GAAwB,KAAA,WAAgB,OAAA,cAAgB,MAAA,CAAA,MAAA;;;;;;;;;;;;cCvIxD,YAAA,SAAqB,KAAA;EAAA,SAGd,UAAA;EAAA,SACA,SAAA;cAFhB,OAAA,UACgB,UAAA,WACA,SAAA;AAAA;;;;AZ8BpB;;;;;;;;cYZa,eAAA,SAAwB,YAAA;cACvB,OAAA;AAAA;;;;;;;;;;;;cAiBD,aAAA,SAAsB,YAAA;cACrB,QAAA;AAAA;;;;;;;;;;AZOd;;;;;cYaa,eAAA,SAAwB,YAAA;cACvB,OAAA;AAAA;;;AZNd;;;;;AAEA;;;;;AAMA;;;;;AAIA;;cYmBa,uBAAA,GAA2B,KAAA,EAAO,YAAA;;;;;;;AZb/C;;;;;AAGA;;;;;AAKA;;;;;AAGA;;;;cY6Ba,iCAAA,GAAqC,KAAA,EAAO,iBAAA;;;;;;AZtBzD;;;;;;;;;;;AASA;;;;;AAIA;;;;;AAbA,cY8Da,8BAAA,GACX,OAAA;;;;;;;;;;;;;;;;;;;;AZvJF;;;;;AA8BA;cazBa,gBAAA,GAAoB,QAAA;;;;;;;;;Ab6BjC;;;;caba,cAAA,GAAkB,QAAA;;;;;;;;;;;;;;;cAmBlB,WAAA,GAAe,QAAA,UAAkB,QAAA;;;;;AbI9C;;;;;AAEA;;;;;caYa,gBAAA,GACX,QAAA,UACA,QAAA;;;;;AbNF;;;;;AAMA;;;;;AAIA;;;;;;;casBa,eAAA,GACX,KAAA;EACG,MAAA;EAAgB,IAAA;EAAc,OAAA;EAAiB,OAAA;AAAA;;AbfpD;;;;;AAKA;;;;;AAGA;;ca8Ga,sBAAA,GACX,WAAA;;;Ab3GF;;;;;AAGA;;;;;;;;;;;ca+Ha,mBAAA,GACX,WAAA;EACG,KAAA;EAA2B,MAAA;AAAA;;AbpHhC;;;;;AAKA;;;;;;;;;;AAKA;cakIa,uBAAA,GACX,WAAA;EACG,MAAA;EAA4B,SAAA;AAAA;;;;;;;;;;;AbnPjC;;;;;AA8BA;;;;;;;;UcPiB,uBAAA;EACf,OAAA,EAAS,KAAA,CAAM,KAAA,CAAM,kBAAA;EACrB,YAAA,EAAc,KAAA,CAAM,KAAA,CAAM,uBAAA;EAC1B,SAAA,EAAW,KAAA,CAAM,KAAA,CAAM,oBAAA,SAA6B,iBAAA;EACpD,iBAAA,GAAoB,KAAA,CAAM,KAAA,CACxB,mBAAA,SAEA,iBAAA;EAEF,UAAA,GAAa,KAAA,CAAM,KAAA,CAAM,UAAA;AAAA;;;;;;;;;;;;;;;;;;;;AdY3B;;UcYiB,qBAAA;EACf,OAAA,EAAS,KAAA,CAAM,KAAA,CAAM,kBAAA;EACrB,YAAA,EAAc,KAAA,CAAM,KAAA,CAAM,uBAAA;EAC1B,YAAA,EAAc,KAAA,CAAM,KAAA,CAAM,YAAA;EAC1B,YAAA,EAAc,KAAA,CAAM,KAAA,CAAM,cAAA;AAAA;;;AdR5B;;;;;AAEA;;;;;AAMA;;;;;AAIA;;;;;;;;;AAMA;;;ccsBa,uBAAA;EAA2B,OAAA;EAAA,YAAA;EAAA,SAAA;EAAA,iBAAA;EAAA;AAAA,GAMrC,uBAAA,KAAuB,KAAA,CAAA,KAAA,CAAA,cAAA;;AdzB1B;;;;;AAKA;;;;;AAGA;;;;;AAIA;;;;;AAGA;;;;;;;;cc8Da,qBAAA;EAAyB,OAAA;EAAA,YAAA;EAAA,YAAA;EAAA;AAAA,GAKnC,qBAAA,KAAqB,KAAA,CAAA,KAAA,CAAA,iBAAA,CAAA,UAAA;;;;;;;;;;Ad3JxB;;;;ceIa,kBAAA,SAA2B,YAAA;Ef0B5B;;;EAAA,SetBM,kBAAA;cAEJ,kBAAA,UAA4B,OAAA;AAAA;;;;;AfwB1C;;;;;;;ceFa,2BAAA,SAAoC,YAAA;cACnC,OAAA;AAAA;;;;;;;;;;;;cAiBD,yBAAA,SAAkC,YAAA;cAE3C,OAAA;AAAA;AfRJ;;;;;AAEA;;;;;AAMA;AARA,ce0Ba,kBAAA,SAA2B,YAAA;cAC1B,OAAA,WAA4B,IAAA;AAAA;;AfjB1C;;;;;AAMA;cewBa,oCAAA,GACX,KAAA,EAAO,kBAAA;;;;;;;;;;;;;;;;;;;;;AfrFT;;;;;AA8BA;;;;;cgBnBa,iBAAA,GACX,OAAA,UACA,QAAA;;;;;AhBqBF;;;;;;;;;cgBgBa,aAAA,GACX,kBAAA,qBACA,QAAA;;;;;;;;;;;;;;cAoBW,gBAAA,GACX,kBAAA,qBACA,mBAAA;AhB9BF;;;;;AAEA;;;;;AAMA;;;AARA,cgBkDa,iBAAA,GACX,kBAAA,qBACA,mBAAA;;AhB1CF;;;;;AAMA;;;;;AAIA;;cgBoDa,gBAAA,GAAoB,UAAA;;;;;;;;;;;;;cCpHpB,kBAAA;6EjBAD;EAAA;0CAAmB;EAAA,oCA8BJ;EAAA,4BAClB;EAAA,sCAD6B;EAAA;;;;AAItC;ciBVa,gBAAA;EjBUyB,iEAIlB;EAAA,kCACV;EAAA,gCAEU;EAAA;;;;;ciBCP,kBAAA;EjBJO,qEACV;EAAA,kCACG;EAAA,8BACL;EAAA;;AAGR;;;;;AAEA;;;;;AAMA;AARA,ciBwBa,WAAA;EAAA;IjBhBwC,2EAEzC;IAAA,kCAA2B;IAAA,wCAE9B;IAAA,oCAIoB;IAAA,4BAC3B;IAAA,sCAGU;IAAA;;;IAAqB,iEAEP;IAAA,kCAAO;IAAA,gCAIQ;IAAA;;;IAG7B,qEAAiC;IAAA,kCAEpC;IAAA,8BAGsB;IAAA;;;AAG/B;AAAA,KiBFY,gBAAA,WACF,kBAAA,eAAiC,kBAAA;;KAG/B,cAAA,WACF,gBAAA,eAA+B,gBAAA;;KAG7B,gBAAA,WACF,kBAAA,eAAiC,kBAAA;;;;;KAM/B,UAAA,GACR,gBAAA,GACA,cAAA,GACA,gBAAA;;;;cAMS,eAAA;EjBZT,0GACc;EAAA,8DACL;EAAA,+DAID;EAAA;;;;AAIZ;;ciBoBa,oBAAA,EAAsB,MAAA;;;;;;;;;;;;AjBvFnC;;;;;;;KkBZY,iBAAA,yBAEc,KAAA,CAAM,KAAA,yBAC5B,oBAAA,CAAqB,MAAA;;;;;;KAOb,WAAA,iBAER,MAAA,UACA,QAAA,oBACG,MAAA,CAAO,MAAA,+BAEZ,UAAA,CAAW,MAAA,UAAgB,MAAA,CAAO,MAAA,oCAC9B,OAAA;;;;;;;;;;;AlBKN;;;;;AAEA;KkBYY,kBAAA,iBAER,MAAA,UACA,QAAA,oBACG,MAAA,CAAO,MAAA,+BAEZ,WAAA,CAAY,MAAA,UAAgB,IAAA,CAC1B,GAAA,CAAE,SAAA,WACF,GAAA,CAAE,SAAA,sBAGA,OAAA,CAAQ,CAAA,EAAG,YAAA;;;;AlBjBjB;;;;;AAEA;;;;;AAMA;;;KkB4BY,iBAAA,iBAER,MAAA,UACA,QAAA,oBACG,MAAA,CAAO,MAAA,+BACV,OAAA,CAAQ,kBAAA,CAAmB,MAAA,GAAS,YAAA;;AlB7BxC;;;;;;;;;AAMA;;;;;AAGA;;KkBuCY,eAAA,iBAER,MAAA,UACA,QAAA,oBACG,MAAA,CAAO,MAAA,uDAEc,KAAA,CAAM,KAAA,yBAC9B,OAAA,CACF,iBAAA,CAAkB,MAAA,GAClB,iBAAA,CAAkB,QAAA;EAId,gBAAA,EAAkB,OAAA,CAChB,iBAAA,CAAkB,MAAA,GAClB,iBAAA,CAAkB,QAAA;AAAA;;;cCrIiB,uBAAA;;;;;8BA8BX,MAAA,CAAO,MAAA;;;;;8BAMP,MAAA,CAAO,MAAA,CAAO,MAAA;EnB9Bf;;;;AA8B/B;;;;;;;;;;AAIA;;;EAlC+B,yBmBiDF,UAAA,aAAuB,MAAA,CAAO,MAAA;EnBXvC;;;;EAAA,4BmBkBd,WAAA,wBACG,MAAA,CAAO,MAAA;EnBhBI;;;;;;;;;;;;;;;AAGpB;;EAHoB,6BmBoCd,UAAA,aACG,MAAA,CAAO,MAAA,OAAa,kBAAA,GAAqB,2BAAA;EnBlCpB;;AAE9B;;;EAF8B,sCmByCY,MAAA,CAAO,MAAA,CAC3C,WAAA,EACA,2BAAA;EnBvCG;AAIT;;;EAJS,+BmB8C0B,MAAA,CAAO,MAAA;EnB1CW;AAErD;;;EAFqD,+BmBgDlB,MAAA,CAAO,MAAA,CAAO,WAAA;AAAA;AnBxCjD;;;;;AAIA;;;;;;;;;AAMA;;;;;AAGA;;AAbA,cmB3Ca,kBAAA,SAA2B,uBAAA;;AnB6DxC;;UmB6BiB,yBAAA;EnB7BiB;;AAGlC;;;EmBgCE,UAAA;AAAA;AnB5BF;;;;;AAGA;;;AAHA,cmBuCa,sBAAA,GACX,WAAA,EAAa,WAAA,SACb,OAAA,GAAU,yBAAA,KACT,KAAA,CAAM,KAAA,CAAM,kBAAA;;;;;;cA+DF,wBAAA,EAA0B,KAAA,CAAM,KAAA,CAAM,kBAAA;;;cCjMlC,qBAAA;;;;;2BAiBX,GAAA,EAAK,kBAAA,KACF,MAAA,CAAO,MAAA,CAAO,eAAA;EpBfX;;;;EAAA,4BoBqBoB,GAAA,EAAK,kBAAA,KAAuB,MAAA,CAAO,MAAA;EpBSvD;;;;EAAA,uBoBFN,GAAA,EAAK,gBAAA,KACF,MAAA,CAAO,MAAA,CAAO,eAAA;EpBCe;;;;EAAA,0BoBKR,GAAA,EAAK,gBAAA,KAAqB,MAAA,CAAO,MAAA;AAAA;;;;;;;cA7BlD,gBAAA,SAAyB,qBAAA;;;;;;;cAuCzB,oBAAA,GACX,MAAA,GAAS,eAAA,KACR,KAAA,CAAM,KAAA,CAAM,gBAAA;;;;;;cA0FF,sBAAA,EAAwB,KAAA,CAAM,KAAA,CAAM,gBAAA"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/core/routes.ts","../src/types.ts","../src/adapter/types.ts","../src/cache.ts","../src/core/plugin-types.ts","../src/usage-hooks/types.ts","../src/core/types.ts","../src/core/create-type-safe-server.ts","../src/core/plugin-validation.ts","../src/core/server.ts","../src/core/websocket-routes.ts","../src/core/websocket-handlers/websocket-handlers.ts","../src/error-types.ts","../src/http-utils.ts","../src/layer-utils.ts","../src/permissions/errors.ts","../src/permissions/matcher.ts","../src/permissions/types.ts","../src/plugins-typing.ts","../src/service.ts","../src/usage-hooks/service.ts"],"mappings":"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"}
package/dist/index.d.mts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { AuthCredentialsResponse, getAuthCredentials } from "./auth/index.mjs";
2
2
  import { Context, Effect, Layer } from "effect";
3
- import { CredentialProviderLayer, ExtractLayerServices, Flow, FlowEngineShape, FlowProvider, ImageAiPluginLayer, ImagePluginLayer, ZipPluginLayer } from "@uploadista/core/flow";
3
+ import { CredentialProviderLayer, ExtractLayerServices, Flow, FlowEngineShape, FlowProvider, FlowQueueConfig, FlowQueueStore, ImageAiPluginLayer, ImagePluginLayer, ZipPluginLayer } from "@uploadista/core/flow";
4
4
  import { BaseEventEmitterService, BaseKvStoreService, DataStoreConfig, EventBroadcasterService, HealthCheckConfig, UploadFileDataStore, UploadFileDataStores, UploadFileKVStore } from "@uploadista/core/types";
5
5
  import { GenerateId } from "@uploadista/core/utils";
6
6
  import { MetricsService } from "@uploadista/observability";
@@ -1192,6 +1192,39 @@ interface UploadistaServerConfig<TRequest, TResponse, TWebSocket = unknown, TFlo
1192
1192
  * ```
1193
1193
  */
1194
1194
  healthCheck?: HealthCheckConfig;
1195
+ /**
1196
+ * Optional: Flow queue for bounded concurrent flow execution.
1197
+ *
1198
+ * When enabled, `FlowEngine.runFlow()` delegates to the queue instead of
1199
+ * forking immediately. The queue dispatches flows up to `maxConcurrency`
1200
+ * simultaneously, buffering the rest as `"pending"`.
1201
+ *
1202
+ * Set to `true` to use the default in-memory store (state lost on restart).
1203
+ * Provide a `store` to use a persistent backend such as `RedisFlowQueueStore`.
1204
+ *
1205
+ * When both `flowQueue` and `deadLetterQueue` are enabled, the queue
1206
+ * automatically retries DLQ items on a configurable interval.
1207
+ *
1208
+ * @default undefined (disabled — fire-and-forget behavior preserved)
1209
+ *
1210
+ * @example
1211
+ * ```typescript
1212
+ * // Simple in-memory queue
1213
+ * flowQueue: true
1214
+ *
1215
+ * // Persistent Redis-backed queue with custom concurrency
1216
+ * import { RedisFlowQueueStore } from "@uploadista/queue-store-redis";
1217
+ *
1218
+ * flowQueue: {
1219
+ * store: new RedisFlowQueueStore({ redis }),
1220
+ * config: { maxConcurrency: 8, dlqRetryIntervalMs: 60_000 },
1221
+ * }
1222
+ * ```
1223
+ */
1224
+ flowQueue?: boolean | {
1225
+ config?: FlowQueueConfig;
1226
+ store?: FlowQueueStore;
1227
+ };
1195
1228
  /**
1196
1229
  * Optional: Usage hooks for tracking and billing integration.
1197
1230
  *
@@ -1700,6 +1733,7 @@ declare const createUploadistaServer: <TContext, TResponse, TWebSocketHandler =
1700
1733
  authCacheConfig,
1701
1734
  circuitBreaker,
1702
1735
  deadLetterQueue,
1736
+ flowQueue,
1703
1737
  healthCheck,
1704
1738
  usageHooks
1705
1739
  }: UploadistaServerConfig<TContext, TResponse, TWebSocketHandler, TFlows, TPlugins>) => Promise<UploadistaServer<TContext, TResponse, TWebSocketHandler>>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/core/routes.ts","../src/types.ts","../src/adapter/types.ts","../src/cache.ts","../src/core/plugin-types.ts","../src/usage-hooks/types.ts","../src/core/types.ts","../src/core/create-type-safe-server.ts","../src/core/plugin-validation.ts","../src/core/server.ts","../src/core/websocket-routes.ts","../src/core/websocket-handlers/websocket-handlers.ts","../src/error-types.ts","../src/http-utils.ts","../src/layer-utils.ts","../src/permissions/errors.ts","../src/permissions/matcher.ts","../src/permissions/types.ts","../src/plugins-typing.ts","../src/service.ts","../src/usage-hooks/service.ts"],"mappings":";;;;;;;;;;;;;KAeY,mBAAA;AAAA,KA8BA,eAAA,WAA0B,mBAAA;EACpC,IAAA,EAAM,CAAA;AAAA;AAAA,KAGI,0BAAA,WACA,mBAAA,+CAGR,eAAA,CAAgB,CAAA;EAClB,MAAA,EAAQ,MAAA;EACR,OAAA;IAAW,cAAA;EAAA;EACX,IAAA,EAAM,YAAA;AAAA;AAAA,KAGI,eAAA,GAAkB,eAAA;AAAA,KAElB,gBAAA,GAAmB,0BAAA;EAE3B,KAAA;AAAA;AAAA,KAIQ,uBAAA,GAA0B,eAAA;AAAA,KAE1B,wBAAA,GAA2B,0BAAA;EAEnC,KAAA;AAAA;AAAA,KAIQ,iBAAA,GAAoB,eAAA;EAC9B,OAAA;AAAA;AAAA,KAGU,kBAAA,GAAqB,0BAAA;EAE7B,KAAA;EAAsB,OAAA;AAAA;AAAA,KAId,6BAAA,GACV,eAAA;AAAA,KAEU,8BAAA,GAAiC,0BAAA;EAEzC,KAAA;AAAA;AAAA,KAGQ,mBAAA,GAAsB,eAAA;EAChC,IAAA;AAAA;AAAA,KAEU,oBAAA,GAAuB,0BAAA,kBAEjC,UAAA;AAAA,KAEU,sBAAA,GAAyB,eAAA;EACnC,SAAA;AAAA;AAAA,KAEU,uBAAA,GAA0B,0BAAA;EAGlC,SAAA;EACA,YAAA,EAAc,qBAAA;EACd,SAAA;AAAA;AAAA,KAIQ,gBAAA,GAAmB,eAAA;EAC7B,QAAA;AAAA;AAAA,KAGU,iBAAA,GAAoB,0BAAA,eAE9B,UAAA;AAAA,KAGU,kBAAA,GAAqB,eAAA;EAC/B,QAAA;EACA,IAAA,EAAM,cAAA;AAAA;AAAA,KAGI,mBAAA,GAAsB,0BAAA,iBAEhC,UAAA;AAAA,KAGU,cAAA,GAAiB,eAAA;EAC3B,MAAA;AAAA;AAAA,KAEU,eAAA,GAAkB,0BAAA,aAAuC,QAAA;AAAA,KAEzD,cAAA,GAAiB,eAAA;EAC3B,MAAA;EACA,SAAA;EACA,MAAA,EAAQ,MAAA;AAAA;AAAA,KAEE,eAAA,GAAkB,0BAAA,aAAuC,OAAA;AAAA,KAEzD,mBAAA,GAAsB,eAAA;EAChC,KAAA;AAAA;AAAA,KAEU,oBAAA,GAAuB,0BAAA,eAEjC,OAAA;AAAA,KAGU,iBAAA,GAAoB,eAAA;EAC9B,KAAA;EACA,MAAA;EACA,OAAA;AAAA;AAAA,KAEU,kBAAA,GAAqB,0BAAA,gBAE/B,OAAA;AAAA,KAGU,gBAAA,GAAmB,eAAA;EAC7B,KAAA;AAAA;AAAA,KAEU,iBAAA,GAAoB,0BAAA,eAE9B,OAAA;AAAA,KAGU,iBAAA,GAAoB,eAAA;EAC9B,KAAA;AAAA;AAAA,KAEU,kBAAA,GAAqB,0BAAA,gBAE/B,OAAA;AAAA,KAOU,cAAA,GAAiB,eAAA;EAC3B,OAAA,GAAU,qBAAA;AAAA;AAAA,KAEA,eAAA,GAAkB,0BAAA;EAE1B,KAAA,EAAO,cAAA;EAAkB,KAAA;AAAA;AAAA,KAGjB,aAAA,GAAgB,eAAA;EAC1B,MAAA;AAAA;AAAA,KAEU,cAAA,GAAiB,0BAAA,YAE3B,cAAA;AAAA,KAGU,eAAA,GAAkB,eAAA;EAC5B,MAAA;AAAA;AAAA,KAEU,gBAAA,GAAmB,0BAAA;EAE3B,OAAA;EAAkB,QAAA;AAAA;AAAA,KAGV,kBAAA,GAAqB,eAAA;EAC/B,OAAA;IAAY,MAAA,GAAS,oBAAA;IAAsB,MAAA;EAAA;AAAA;AAAA,KAEjC,mBAAA,GAAsB,0BAAA;EAE9B,OAAA;EAAiB,SAAA;EAAmB,MAAA;AAAA;AAAA,KAG5B,gBAAA,GAAmB,eAAA;EAC7B,MAAA;AAAA;AAAA,KAEU,iBAAA,GAAoB,0BAAA;EAE5B,OAAA;AAAA;AAAA,KAGQ,iBAAA,GAAoB,eAAA;EAC9B,MAAA;AAAA;AAAA,KAEU,kBAAA,GAAqB,0BAAA,gBAE/B,cAAA;AAAA,KAGU,iBAAA,GAAoB,eAAA;EAC9B,OAAA,GAAU,wBAAA;AAAA;AAAA,KAEA,kBAAA,GAAqB,0BAAA,gBAE/B,uBAAA;AAAA,KAGU,eAAA,GAAkB,eAAA;AAAA,KAClB,gBAAA,GAAmB,0BAAA,cAE7B,oBAAA;;AA5HF;;KAsIK,sBAAA;EAtI2B,0DAwI9B,YAAA;AAAA;;;;KAMU,aAAA,GAAgB,eAAA,aAA4B,sBAAA;;;;;KAM5C,cAAA,GAAiB,eAAA;EAC3B,MAAA;EACA,OAAA;IAAW,cAAA;EAAA;EACX,IAAA,EAAM,gBAAA;AAAA;;;;KAMI,kBAAA,GAAqB,eAAA,mBAC/B,sBAAA;AA5IF;;;;AAAA,KAkJY,mBAAA,GAAsB,eAAA;EAChC,MAAA;EACA,OAAA;IAAW,cAAA;EAAA;EACX,IAAA,EAAM,gBAAA;AAAA;;;;KAMI,uBAAA,GAA0B,eAAA,wBACpC,sBAAA;;AArJF;;;KA2JY,wBAAA,GAA2B,eAAA;EACrC,MAAA;EACA,OAAA;IAAW,cAAA;EAAA;EACX,IAAA,EAAM,gBAAA;AAAA;AAAA,KAGI,iBAAA,GACR,mBAAA,GACA,sBAAA,GACA,gBAAA,GACA,kBAAA,GACA,cAAA,GACA,cAAA,GACA,mBAAA,GACA,iBAAA,GACA,gBAAA,GACA,iBAAA,GAEA,cAAA,GACA,aAAA,GACA,eAAA,GACA,kBAAA,GACA,gBAAA,GACA,iBAAA,GACA,iBAAA,GACA,eAAA,GAEA,aAAA,GACA,kBAAA,GACA,uBAAA,GAEA,eAAA,GACA,iBAAA,GACA,uBAAA,GACA,6BAAA;AAAA,KAEQ,kBAAA,GACR,oBAAA,GACA,uBAAA,GACA,iBAAA,GACA,mBAAA,GACA,eAAA,GACA,eAAA,GACA,oBAAA,GACA,kBAAA,GACA,iBAAA,GACA,kBAAA,GAEA,eAAA,GACA,cAAA,GACA,gBAAA,GACA,mBAAA,GACA,iBAAA,GACA,kBAAA,GACA,kBAAA,GACA,gBAAA,GAEA,cAAA,GACA,mBAAA,GACA,wBAAA,GAEA,gBAAA,GACA,kBAAA,GACA,wBAAA,GACA,8BAAA,GACA,gBAAA;;;;;;;;KCpWQ,WAAA;;;;;EAKV,QAAA;;;ADKF;;;;;AA8BA;;;;;;ECpBE,QAAA,GAAW,MAAA;EDqBL;;;AAGR;EClBE,WAAA;AAAA;;;;;;KAQU,UAAA,GAAa,WAAA;;;;;;;;;;;;ADxBzB;;;;;AA8BA;;;UEvBiB,eAAA;EFuBW;;;EEnB1B,MAAA;EFoBO;;AAGT;EElBE,GAAA,EAAK,GAAA;EFkB+B;;;EEbpC,OAAA,EAAS,MAAA;EFkBD;;;EEbR,IAAA;AAAA;;;;;;;;;;;;;;AFkBF;;UEAiB,gBAAA;EFAa;;AAE9B;EEEE,MAAA;;;;EAKA,OAAA,GAAU,MAAA;EFDuB;;;EEMjC,IAAA;AAAA;;;;;AFEF;;;;;AAIA;;;;;;UEYiB,gBAAA;EFVgB;;AAIjC;;;EEYE,SAAA,GAAY,OAAA;EFXG;AAEjB;;EEcE,OAAA;EFd2C;;AAK7C;;;EEgBE,OAAA,GAAU,KAAA,EAAO,KAAA;AAAA;AFbnB;;;;;AAIA;;;;;AAGA;;;;;;;;;;;AASA;;;;;AAIA;;;;;AAKA;;;AAzBA,UEkDiB,aAAA;EFzBgB;;;;;;AAKjC;;;EEkCE,cAAA,CACE,GAAA,EAAK,QAAA;IACH;EAAA;IAAa,OAAA;EAAA,IACd,MAAA,CAAO,MAAA,CAAO,iBAAA;EFhCO;;;;AAG1B;;;;;EEwCE,YAAA,CACE,QAAA,EAAU,kBAAA,EACV,OAAA,EAAS,QAAA,GACR,MAAA,CAAO,MAAA,CAAO,SAAA;EFzCO;;;;;;;;;;AAK1B;;;EEmDE,iBAAA,EAAmB,GAAA,EAAK,QAAA,GAAW,MAAA,CAAO,MAAA,CAAO,UAAA;EFnDyB;AAE5E;;;;;AAGA;;;;;EE2DE,gBAAA,CAAiB,OAAA;IACf,OAAA;EAAA,IACE,MAAA,CAAO,MAAA,CAAO,iBAAA,SAA0B,cAAA,GAAe,YAAA;EFxDd;;;;;;;AAK/C;;;;;AAKA;;;;EEgEE,gBAAA,IACE,GAAA,EAAK,QAAA,OACA,OAAA,EAAS,OAAA;AAAA;;;;;;KC7NN,eAAA;;;;;;EAMV,OAAA;;AHGF;;;;EGIE,GAAA;AAAA;AAAA,cACA,qBAAA;EHyByB;;;EAAA,eGoBrB,KAAA,UACA,WAAA,EAAa,WAAA,KACV,MAAA,CAAO,MAAA;EHrBd;;;;EAAA,eG2BiB,KAAA,aAAkB,MAAA,CAAO,MAAA,CAAO,WAAA;EHxBb;;;EAAA,kBG6BhB,KAAA,aAAkB,MAAA,CAAO,MAAA;EHzB3C;;;EAAA,sBG8BsB,MAAA,CAAO,MAAA;EH3Bb;;;EAAA,qBGgCK,MAAA,CAAO,MAAA;AAAA;;;;;;;;;;;AH7BhC;;;;;AAEA;;;;;AAMA;;;;;AAEA;;;cGXa,gBAAA,SAAyB,qBAAA;AHiBtC;;;;;AAIA;AAJA,cGuBa,oBAAA,GACX,MAAA,GAAQ,eAAA,KACP,KAAA,CAAM,KAAA,CAAM,gBAAA;;;;;;cAgGF,sBAAA,EAAwB,KAAA,CAAM,KAAA,CAAM,gBAAA;;;;;;;;;;;;KC/KrC,yBAAA,oBAES,KAAA,CAAM,KAAA,qBACvB,oBAAA,CAAqB,CAAA;;;;;KAMb,gBAAA,GACR,gBAAA,GACA,gBAAA,GACA,kBAAA,GACA,uBAAA,GACA,cAAA;;;;;KAMQ,WAAA,YAAuB,gBAAA;;;;;AJQnC;;;;;;;;KIMY,cAAA,kBAAgC,WAAA,IAC1C,oBAAA,CAAqB,QAAA;;;;;;;;;;;;;;;;KAiBX,oBAAA,2BACV,MAAA,UACA,QAAA,oBACG,MAAA,CAAO,MAAA,CACV,IAAA,CAAK,CAAA,CAAE,SAAA,WAAoB,CAAA,CAAE,SAAA,WAAoB,aAAA,GACjD,iBAAA,EACA,aAAA;;;;;AJlBF;;;;;AAMA;;;;;AAEA;;;;;AAMA;;;;;AAIA;;;KI8BY,eAAA,kBACO,WAAA,mBAEf,aAAA,wBAEA,aAAA,SAAsB,cAAA,CAAe,QAAA;EAAA,SAGxB,OAAA;EAAA,SACA,SAAA;EAAA,SACA,UAAA,EAAY,aAAA;EAAA,SACZ,UAAA,EAAY,cAAA,CAAe,QAAA;EAAA,SAC3B,SAAA,EAAW,OAAA,CAAQ,aAAA,EAAe,cAAA,CAAe,QAAA;EAAA,SACjD,MAAA;AAAA;;;;AJlCjB;;;;;AAKA;;;;;AAGA;;;;;AAIA;;;;;AAGA;;;;;;KImDY,oBAAA,kBACO,WAAA,uBAEf,eAAA,CAAgB,QAAA,EAAU,iBAAA;EAExB,OAAA,EAAS,QAAA;EACT,KAAA,EAAO,oBAAA,CAAqB,iBAAA;AAAA,IAE9B,eAAA,CAAgB,QAAA,EAAU,iBAAA;;AJlD9B;;;;;AAIA;;;;;AAKA;;;;;;;;KI8DY,6BAAA,kBAER,MAAA,UACA,QAAA,oBACG,MAAA,CAAO,MAAA,+BAEZ,UAAA,CAAW,OAAA,UAAiB,MAAA,CAAO,MAAA,kCAE/B,KAAA,SAAc,IAAA,kCACZ,OAAA,CAAQ,aAAA;;AJlEhB;;;;;AAKA;;;;KI2EY,qBAAA,MACV,CAAA,SAAU,oBAAA,YAAgC,CAAA;AJzE5C;;;;AAAA,KI+EY,mBAAA,WAA8B,WAAA,kBAC5B,CAAA,GAAI,CAAA,CAAE,CAAA,UAAW,KAAA,CAAM,KAAA,8BAC/B,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,CAAA,EAAG,CAAA;;;;;;;KCtMZ,eAAA;EAAA,SACG,MAAA;AAAA;EAAA,SAEA,MAAA;EAAA,SACA,MAAA;EAAA,SACA,IAAA;AAAA;ALuBf;;;AAAA,cKjBa,cAAA,QAAqB,eAAA;;;;cAKrB,WAAA,GACX,MAAA,UACA,IAAA,cACC,eAAA;;;ALaH;UKAiB,iBAAA;ELAqB;EKEpC,QAAA;ELEkB;EKAlB,QAAA;ELCQ;EKCR,QAAA;AAAA;;;;UAMe,mBAAA,SAA4B,iBAAA;ELT3C;EKWA,QAAA;ELVkB;EKYlB,QAAA;ELXQ;EKaR,SAAA;ELZW;EKcX,GAAA;ELbM;EKeN,WAAA;IACE,MAAA;IACA,KAAA;EAAA;AAAA;;;ALZJ;UKmBiB,iBAAA,SAA0B,iBAAA;;EAEzC,MAAA;ELnBO;EKqBP,KAAA;ELjBiC;EKmBjC,SAAA;ELnBoC;EKqBpC,aAAA;ELnBU;EKqBV,UAAA;;EAEA,aAAA;ELrBO;EKuBP,QAAA;ELnB2B;EKqB3B,MAAA;AAAA;;ALjBF;;UKuBiB,YAAA,mBACG,iBAAA,GAAoB,iBAAA;ELxBmB;EK2BzD,QAAA;ELzBE;EK2BF,SAAA;EL3B+B;EK6B/B,QAAA,EAAU,SAAA;AAAA;;;;KAMA,kBAAA,GAAqB,YAAA,CAAa,mBAAA;AL5B9C;;;AAAA,KKiCY,gBAAA,GAAmB,YAAA,CAAa,iBAAA;;AL5B5C;;;KKsCY,iBAAA,IACV,GAAA,EAAK,kBAAA,KACF,MAAA,CAAO,MAAA,CAAO,eAAA;;ALrCnB;;;KK2CY,oBAAA,IACV,GAAA,EAAK,kBAAA,KACF,MAAA,CAAO,MAAA;;ALzCZ;;;KK+CY,eAAA,IACV,GAAA,EAAK,gBAAA,KACF,MAAA,CAAO,MAAA,CAAO,eAAA;;AL9CnB;;;KKoDY,kBAAA,IAAsB,GAAA,EAAK,gBAAA,KAAqB,MAAA,CAAO,MAAA;;;;;;;;AL3CnE;;;;;AAIA;;;;;AAKA;;;UK4DiB,UAAA;EL5DgB;;;;EKiE/B,aAAA,GAAgB,iBAAA;EL/DI;AAGtB;;;EKkEE,gBAAA,GAAmB,oBAAA;ELhET;AAGZ;;;EKmEE,WAAA,GAAc,eAAA;ELlER;AAER;;;EKsEE,cAAA,GAAiB,kBAAA;AAAA;ALpEnB;;;AAAA,UK0EiB,eAAA;EL1EY;;;EK8E3B,KAAA,GAAQ,UAAA;EL3EA;;;AAEV;;EKgFE,OAAA;AAAA;;AL9EF;;cKoFa,0BAAA;;;;;;ALpNb;;;;;AA8BA;;;;;;;;;;AAIA;;;;;;KMNY,aAAA,IACV,MAAA,UACA,QAAA,oBACG,MAAA,CAAO,MAAA,CACV,IAAA,CAAK,CAAA,CAAE,SAAA,WAAoB,CAAA,CAAE,SAAA,qBAC7B,iBAAA;;;;;;;;;;;;;;;;;;ANWF;;;;;AAEA;;;;;AAMA;;;;;AAEA;;;UMkBiB,sBAAA,4DAKb,MAAA,UACA,QAAA,oBACG,MAAA,CAAO,MAAA,CAEV,IAAA,CAAK,CAAA,CAAE,SAAA,WAAoB,CAAA,CAAE,SAAA,iBAC7B,iBAAA,wCAKwB,WAAA,cAAyB,WAAA;EN/B5C;AAIT;;;;;AAIA;;;;;;EMqCE,KAAA,EAAO,MAAA;ENnCwB;;AAIjC;;;;;AAGA;;;;;AAKA;;;;;EM0CE,SAAA,EAAW,eAAA;ENvCmB;;;;AAIhC;;;;;AAGA;;;;EM+CE,OAAA,EAAS,KAAA,CAAM,KAAA,CAAM,kBAAA;EN5CnB;;;;;;AAMJ;;;;;EMmDE,OAAA,GAAU,QAAA;EN/CiB;;;;AAK7B;;;;;;;;;EMyDE,YAAA,GAAe,KAAA,CAAM,KAAA,CAAM,uBAAA;ENpDjB;;;;;AAKZ;;;;;AAGA;;;EM2DE,gBAAA,GAAmB,KAAA,CAAM,KAAA,CAAM,uBAAA;EN3D4C;AAE7E;;;;;;;;;EMqEE,OAAA;ENlEc;AAEhB;;;;;AAEA;;;;;AAGA;;EM0EE,UAAA,GAAa,KAAA,CAAM,KAAA,CAAM,UAAA;EN1EQ;;AAKnC;;;;;;EM+EE,WAAA;EN5EA;;;AAEF;;;;;AAKA;;;;;AAGA;;;;;AAKA;;;;;AAGA;;;;;AASA;;;;;EMqFE,kBAAA,GAAqB,KAAA,CAAM,KAAA;ENpFjB;;;AAEZ;;;;;;;;;;EMiGE,YAAA,GAAe,KAAA,CAAM,KAAA,CAAM,cAAA;EN5FJ;;;;AAGzB;;;;;AAKA;;;;EMmGE,iBAAA,GAAoB,KAAA,CAAM,KAAA,CACxB,mBAAA,SAEA,iBAAA;ENnGQ;;;;;;;;;AAKZ;;;;;;;EMiHE,OAAA,EAAS,aAAA,CAAc,QAAA,EAAU,SAAA,EAAW,UAAA;ENhHD;;;AAE7C;;;;;;;;;;AAKA;EMyHE,eAAA,GAAkB,eAAA;;;;ANtHpB;;;;;AAKA;;;;;AAGA;;;;;AAKA;;;;;;;;EMqIE,cAAA;ENlIU;;;;;AAKZ;;;;;AACA;;;;;AAGE;;;;;AAiBF;;;;;AAMA;EM8HE,eAAA;;;;;;;;;;;ANrHF;;;;;AAOA;;;;;EMoIE,WAAA,GAAc,iBAAA;ENlId;;;;;;AAOF;;;;;AAOA;;;;;;;;;;;;AAMA;;;;;;;;;EMgJE,UAAA,GAAa,eAAA;AAAA;;;;;;;;;;UAYE,gBAAA;ENvIb;;;EM+IF,OAAA,GAAU,GAAA,EAAK,QAAA,KAAa,OAAA,CAAQ,SAAA;EN1IlC;;;EM+IF,gBAAA,EAAkB,iBAAA;EN7Ia;;;EMkJ/B,OAAA;EN1KE;;;;;EMiLF,OAAA,QAAe,OAAA;AAAA;;;;;;;;;;;;;;ANpdjB;KOMY,oBAAA,mDAIO,WAAA,sBACG,cAAA,CAAe,QAAA,KACjC,IAAA,CACF,sBAAA,CAAuB,QAAA,EAAU,SAAA,EAAW,UAAA;;;;APiB9C;EOVE,OAAA,EAAS,QAAA;EPUgB;;;;EOJzB,KAAA,EAAO,oBAAA,CAAqB,iBAAA;EPKtB;;;AAGR;EOFE,UAAA,GAAa,eAAA,CAAgB,QAAA,EAAU,iBAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;APYzC;;;;;AAEA;;;;;AAMA;;;;;AAEA;;;;;AAMA;;;;;AAIA;;;;;;;;;AAMA;;;;;AAGA;;;;;AAKA;;;;;AAGA;;;;;AAIA;;;iBO4BsB,oBAAA,6DAIH,WAAA,GAAc,WAAA,sBACX,cAAA,CAAe,QAAA,EAAA,CAEnC,MAAA,EAAQ,oBAAA,CACN,QAAA,EACA,SAAA,EACA,UAAA,EACA,QAAA,EACA,iBAAA,KAGC,eAAA,CAAgB,QAAA,EAAU,iBAAA,0BAEvB,eAAA,CAAgB,QAAA,EAAU,iBAAA,KAC/B,OAAA,CAAQ,gBAAA,CAAiB,QAAA,EAAU,SAAA,EAAW,UAAA;;AP3CjD;;;;;;;;;;;AASA;;;;;AAIA;;;;;AAKA;;iBOqDgB,UAAA,uBAAA,CACd,EAAA,EAAI,oBAAA,CAAqB,aAAA,IACxB,oBAAA,CAAqB,aAAA;;;;;;;;APlDxB;;;;;AAKA;;;;;AAGA;;iBOiEgB,gBAAA,CACd,EAAA,EAAI,oBAAA,UACH,oBAAA;;;;AP1LH;;KQEY,sBAAA;EAEN,OAAA;AAAA;EAGA,OAAA;EACA,QAAA;EACA,QAAA;EACA,OAAA;EACA,WAAA,EAAa,KAAA;IACX,IAAA;IACA,WAAA;IACA,eAAA;EAAA;AAAA;ARoBR;;;;;;AAAA,iBQkEgB,yBAAA,CACd,OAAA,WAAkB,WAAA;;;;;;;;;;;;;;;;;;ARzDpB;;;;;AAEA;;;;;iBQyFgB,0BAAA,CAA2B,MAAA;EACzC,OAAA,WAAkB,WAAA;EAClB,gBAAA;AAAA,IACE,sBAAA;;ARpFJ;;;;;AAMA;;;;;AAIA;;;;;;;;;AAMA;;iBQkIgB,2BAAA,CACd,MAAA,EAAQ,OAAA,CAAQ,sBAAA;EAA0B,OAAA;AAAA;ARhI5C;;;;;AAKA;;;;;AAGA;;;;;AAIA;;;;;AAGA;AAfA,iBQqLgB,gCAAA,CAAiC,MAAA;EAC/C,OAAA,WAAkB,WAAA;EAClB,gBAAA;AAAA,IACE,MAAA,CAAO,MAAA,OAAa,KAAA;;;;;;;ARhKxB;;;;;AAIA;;;;;AAKA;;;;;;;iBQyLgB,sBAAA,CAAuB,MAAA;EACrC,OAAA,WAAkB,WAAA;EAClB,gBAAA;AAAA;;;;;;;;;;;ARrSF;;;;;AA8BA;;;;;;;;;;AAIA;;;;;;;;;;;;;;;;;;;;;;;;AAUA;;;;;AAEA;;;;;AAMA;;;;;AAEA;;;;;AAMA;;;;;AAIA;;;;;;;;;AAMA;;;;;AAGA;;;;;AAKA;;;;;AAGA;;;;;AAIA;;;;;AAGA;;;;;;;;;;;AASA;;;;;AAIA;;;;;AAKA;;;;;;;;;;AAKA;cS6Ca,sBAAA,qEAKT,MAAA,UACA,QAAA,oBACG,MAAA,CAAO,MAAA,CAEV,IAAA,CAAK,CAAA,CAAE,SAAA,WAAoB,CAAA,CAAE,SAAA,iBAC7B,iBAAA,wCAKwB,WAAA,cAAyB,WAAA;EACnD,KAAA;EAAA,SAAA;EAAA,OAAA;EAAA,OAAA;EAAA,YAAA;EAAA,gBAAA;EAAA,WAAA;EAAA,kBAAA;EAAA,OAAA,EAAA,aAAA;EAAA,UAAA;EAAA,YAAA;EAAA,iBAAA;EAAA,OAAA;EAAA,eAAA;EAAA,cAAA;EAAA,eAAA;EAAA,WAAA;EAAA;AAAA,GAoBC,sBAAA,CACD,QAAA,EACA,SAAA,EACA,iBAAA,EACA,MAAA,EACA,QAAA,MACE,OAAA,CAAQ,gBAAA,CAAiB,QAAA,EAAU,SAAA,EAAW,iBAAA;;;;;;;KC/MtC,mBAAA;EACV,EAAA;EACA,IAAA,GAAO,IAAA;EACP,KAAA,GAAQ,IAAA,WAAe,MAAA;EACvB,UAAA;AAAA;;;AVKF;KUCY,kBAAA;;;;KAgBA,cAAA,WAAyB,kBAAA;EACnC,IAAA,EAAM,CAAA;AAAA;;;;KAOI,oBAAA,GAAuB,cAAA;EACjC,QAAA;AAAA;AAAA,KAGU,kBAAA,GAAqB,cAAA;EAC/B,KAAA;AAAA;AAAA,KAGU,sBAAA,GAAyB,cAAA;EACnC,QAAA;AAAA;AAAA,KAGU,oBAAA,GAAuB,cAAA;EACjC,KAAA;AAAA;AAAA,KAGU,SAAA,GAAY,cAAA;AAAA,KAEZ,sBAAA,GACR,oBAAA,GACA,kBAAA,GACA,sBAAA,GACA,oBAAA,GACA,SAAA;;;;KAMQ,eAAA,GAAkB,cAAA;EAC5B,OAAA;EACA,EAAA;EACA,KAAA;EACA,QAAA;EACA,SAAA;AAAA;AAAA,KAGU,kBAAA,GAAqB,cAAA;EAC/B,QAAA;EACA,KAAA,EAAO,WAAA;EACP,SAAA;AAAA;AAAA,KAGU,gBAAA,GAAmB,cAAA;EAC7B,KAAA;EACA,KAAA;EACA,SAAA;AAAA;AAAA,KAGU,UAAA,GAAa,cAAA;EACvB,OAAA;EACA,IAAA;AAAA;AAAA,KAGU,gBAAA,GAAmB,cAAA;EAC7B,OAAA;EACA,cAAA;AAAA;AAAA,KAGU,eAAA,GAAkB,cAAA;EAC5B,OAAA;EACA,UAAA;AAAA;AAAA,KAGU,sBAAA,GACR,eAAA,GACA,kBAAA,GACA,gBAAA,GACA,UAAA,GACA,gBAAA,GACA,eAAA;;AVnCJ;;;KUyCY,0BAAA;EVxCH,gDU0CP,OAAA,UVvC4B;EUyC5B,QAAA,UVzCyD;EU2CzD,aAAA,YVzCE;EU2CF,aAAA,WV3C+B;EU6C/B,WAAA,WVzCU;EU2CV,KAAA;EAEA,QAAA,WV5Ce;EU8Cf,OAAA,WV5CwC;EU8CxC,UAAA,EAAY,mBAAA;AAAA;;;;;;;cC5GD,mBAAA,GACX,OAAA,EAAS,0BAAA,EACT,YAAA,EAAc,iBAAA,EACd,UAAA,EAAY,eAAA,KAAe,MAAA,CAAA,MAAA;;;;AXd7B;cWoEa,sBAAA,GACX,OAAA,UACA,UAAA,EAAY,mBAAA,KAAmB,MAAA,CAAA,MAAA;;;;AXxCjC;cWqEa,oBAAA,GACX,OAAA,EAAS,0BAAA,EACT,YAAA,EAAc,iBAAA,EACd,UAAA,EAAY,eAAA,KAAe,MAAA,CAAA,MAAA;;;;cA6BhB,oBAAA,GAAwB,KAAA,WAAgB,OAAA,cAAgB,MAAA,CAAA,MAAA;;;;;;;;;;;;cCvIxD,YAAA,SAAqB,KAAA;EAAA,SAGd,UAAA;EAAA,SACA,SAAA;cAFhB,OAAA,UACgB,UAAA,WACA,SAAA;AAAA;;;;AZ8BpB;;;;;;;;cYZa,eAAA,SAAwB,YAAA;cACvB,OAAA;AAAA;;;;;;;;;;;;cAiBD,aAAA,SAAsB,YAAA;cACrB,QAAA;AAAA;;;;;;;;;;AZOd;;;;;cYaa,eAAA,SAAwB,YAAA;cACvB,OAAA;AAAA;;;AZNd;;;;;AAEA;;;;;AAMA;;;;;AAIA;;cYmBa,uBAAA,GAA2B,KAAA,EAAO,YAAA;;;;;;;AZb/C;;;;;AAGA;;;;;AAKA;;;;;AAGA;;;;cY6Ba,iCAAA,GAAqC,KAAA,EAAO,eAAA;;;;;;AZtBzD;;;;;;;;;;;AASA;;;;;AAIA;;;;;AAbA,cY8Da,8BAAA,GACX,OAAA;;;;;;;;;;;;;;;;;;;;AZvJF;;;;;AA8BA;cazBa,gBAAA,GAAoB,QAAA;;;;;;;;;Ab6BjC;;;;caba,cAAA,GAAkB,QAAA;;;;;;;;;;;;;;;cAmBlB,WAAA,GAAe,QAAA,UAAkB,QAAA;;;;;AbI9C;;;;;AAEA;;;;;caYa,gBAAA,GACX,QAAA,UACA,QAAA;;;;;AbNF;;;;;AAMA;;;;;AAIA;;;;;;;casBa,eAAA,GACX,KAAA;EACG,MAAA;EAAgB,IAAA;EAAc,OAAA;EAAiB,OAAA;AAAA;;AbfpD;;;;;AAKA;;;;;AAGA;;ca8Ga,sBAAA,GACX,WAAA;;;Ab3GF;;;;;AAGA;;;;;;;;;;;ca+Ha,mBAAA,GACX,WAAA;EACG,KAAA;EAA2B,MAAA;AAAA;;AbpHhC;;;;;AAKA;;;;;;;;;;AAKA;cakIa,uBAAA,GACX,WAAA;EACG,MAAA;EAA4B,SAAA;AAAA;;;;;;;;;;;AbnPjC;;;;;AA8BA;;;;;;;;UcPiB,uBAAA;EACf,OAAA,EAAS,KAAA,CAAM,KAAA,CAAM,kBAAA;EACrB,YAAA,EAAc,KAAA,CAAM,KAAA,CAAM,uBAAA;EAC1B,SAAA,EAAW,KAAA,CAAM,KAAA,CAAM,oBAAA,SAA6B,iBAAA;EACpD,iBAAA,GAAoB,KAAA,CAAM,KAAA,CACxB,mBAAA,SAEA,iBAAA;EAEF,UAAA,GAAa,KAAA,CAAM,KAAA,CAAM,UAAA;AAAA;;;;;;;;;;;;;;;;;;;;AdY3B;;UcYiB,qBAAA;EACf,OAAA,EAAS,KAAA,CAAM,KAAA,CAAM,kBAAA;EACrB,YAAA,EAAc,KAAA,CAAM,KAAA,CAAM,uBAAA;EAC1B,YAAA,EAAc,KAAA,CAAM,KAAA,CAAM,YAAA;EAC1B,YAAA,EAAc,KAAA,CAAM,KAAA,CAAM,YAAA;AAAA;;;AdR5B;;;;;AAEA;;;;;AAMA;;;;;AAIA;;;;;;;;;AAMA;;;ccsBa,uBAAA;EAA2B,OAAA;EAAA,YAAA;EAAA,SAAA;EAAA,iBAAA;EAAA;AAAA,GAMrC,uBAAA,KAAuB,KAAA,CAAA,KAAA,CAAA,YAAA;;AdzB1B;;;;;AAKA;;;;;AAGA;;;;;AAIA;;;;;AAGA;;;;;;;;cc8Da,qBAAA;EAAyB,OAAA;EAAA,YAAA;EAAA,YAAA;EAAA;AAAA,GAKnC,qBAAA,KAAqB,KAAA,CAAA,KAAA,CAAA,iBAAA,CAAA,UAAA;;;;;;;;;;Ad3JxB;;;;ceIa,kBAAA,SAA2B,YAAA;Ef0B5B;;;EAAA,SetBM,kBAAA;cAEJ,kBAAA,UAA4B,OAAA;AAAA;;;;;AfwB1C;;;;;;;ceFa,2BAAA,SAAoC,YAAA;cACnC,OAAA;AAAA;;;;;;;;;;;;cAiBD,yBAAA,SAAkC,YAAA;cAE3C,OAAA;AAAA;AfRJ;;;;;AAEA;;;;;AAMA;AARA,ce0Ba,kBAAA,SAA2B,YAAA;cAC1B,OAAA,WAA4B,IAAA;AAAA;;AfjB1C;;;;;AAMA;cewBa,oCAAA,GACX,KAAA,EAAO,kBAAA;;;;;;;;;;;;;;;;;;;;;AfrFT;;;;;AA8BA;;;;;cgBnBa,iBAAA,GACX,OAAA,UACA,QAAA;;;;;AhBqBF;;;;;;;;;cgBgBa,aAAA,GACX,kBAAA,qBACA,QAAA;;;;;;;;;;;;;;cAoBW,gBAAA,GACX,kBAAA,qBACA,mBAAA;AhB9BF;;;;;AAEA;;;;;AAMA;;;AARA,cgBkDa,iBAAA,GACX,kBAAA,qBACA,mBAAA;;AhB1CF;;;;;AAMA;;;;;AAIA;;cgBoDa,gBAAA,GAAoB,UAAA;;;;;;;;;;;;;cCpHpB,kBAAA;6EjBAD;EAAA;0CAAmB;EAAA,oCA8BJ;EAAA,4BAClB;EAAA,sCAD6B;EAAA;;;;AAItC;ciBVa,gBAAA;EjBUyB,iEAIlB;EAAA,kCACV;EAAA,gCAEU;EAAA;;;;;ciBCP,kBAAA;EjBJO,qEACV;EAAA,kCACG;EAAA,8BACL;EAAA;;AAGR;;;;;AAEA;;;;;AAMA;AARA,ciBwBa,WAAA;EAAA;IjBhBwC,2EAEzC;IAAA,kCAA2B;IAAA,wCAE9B;IAAA,oCAIoB;IAAA,4BAC3B;IAAA,sCAGU;IAAA;;;IAAqB,iEAEP;IAAA,kCAAO;IAAA,gCAIQ;IAAA;;;IAG7B,qEAAiC;IAAA,kCAEpC;IAAA,8BAGsB;IAAA;;;AAG/B;AAAA,KiBFY,gBAAA,WACF,kBAAA,eAAiC,kBAAA;;KAG/B,cAAA,WACF,gBAAA,eAA+B,gBAAA;;KAG7B,gBAAA,WACF,kBAAA,eAAiC,kBAAA;;;;;KAM/B,UAAA,GACR,gBAAA,GACA,cAAA,GACA,gBAAA;;;;cAMS,eAAA;EjBZT,0GACc;EAAA,8DACL;EAAA,+DAID;EAAA;;;;AAIZ;;ciBoBa,oBAAA,EAAsB,MAAA;;;;;;;;;;;;AjBvFnC;;;;;;;KkBZY,iBAAA,yBAEc,KAAA,CAAM,KAAA,yBAC5B,oBAAA,CAAqB,MAAA;;;;;;KAOb,WAAA,iBAER,MAAA,UACA,QAAA,oBACG,MAAA,CAAO,MAAA,+BAEZ,UAAA,CAAW,MAAA,UAAgB,MAAA,CAAO,MAAA,oCAC9B,OAAA;;;;;;;;;;;AlBKN;;;;;AAEA;KkBYY,kBAAA,iBAER,MAAA,UACA,QAAA,oBACG,MAAA,CAAO,MAAA,+BAEZ,WAAA,CAAY,MAAA,UAAgB,MAAA,CAC1B,GAAA,CAAE,SAAA,WACF,GAAA,CAAE,SAAA,sBAGA,OAAA,CAAQ,CAAA,EAAG,cAAA;;;;AlBjBjB;;;;;AAEA;;;;;AAMA;;;KkB4BY,iBAAA,iBAER,MAAA,UACA,QAAA,oBACG,MAAA,CAAO,MAAA,+BACV,OAAA,CAAQ,kBAAA,CAAmB,MAAA,GAAS,cAAA;;AlB7BxC;;;;;;;;;AAMA;;;;;AAGA;;KkBuCY,eAAA,iBAER,MAAA,UACA,QAAA,oBACG,MAAA,CAAO,MAAA,uDAEc,KAAA,CAAM,KAAA,yBAC9B,OAAA,CACF,iBAAA,CAAkB,MAAA,GAClB,iBAAA,CAAkB,QAAA;EAId,gBAAA,EAAkB,OAAA,CAChB,iBAAA,CAAkB,MAAA,GAClB,iBAAA,CAAkB,QAAA;AAAA;;;cCrIiB,uBAAA;;;;;8BA8BX,MAAA,CAAO,MAAA;;;;;8BAMP,MAAA,CAAO,MAAA,CAAO,MAAA;EnB9Bf;;;;AA8B/B;;;;;;;;;;AAIA;;;EAlC+B,yBmBiDF,UAAA,aAAuB,MAAA,CAAO,MAAA;EnBXvC;;;;EAAA,4BmBkBd,WAAA,wBACG,MAAA,CAAO,MAAA;EnBhBI;;;;;;;;;;;;;;;AAGpB;;EAHoB,6BmBoCd,UAAA,aACG,MAAA,CAAO,MAAA,OAAa,kBAAA,GAAqB,2BAAA;EnBlCpB;;AAE9B;;;EAF8B,sCmByCY,MAAA,CAAO,MAAA,CAC3C,WAAA,EACA,2BAAA;EnBvCG;AAIT;;;EAJS,+BmB8C0B,MAAA,CAAO,MAAA;EnB1CW;AAErD;;;EAFqD,+BmBgDlB,MAAA,CAAO,MAAA,CAAO,WAAA;AAAA;AnBxCjD;;;;;AAIA;;;;;;;;;AAMA;;;;;AAGA;;AAbA,cmB3Ca,kBAAA,SAA2B,uBAAA;;AnB6DxC;;UmB6BiB,yBAAA;EnB7BiB;;AAGlC;;;EmBgCE,UAAA;AAAA;AnB5BF;;;;;AAGA;;;AAHA,cmBuCa,sBAAA,GACX,WAAA,EAAa,WAAA,SACb,OAAA,GAAU,yBAAA,KACT,KAAA,CAAM,KAAA,CAAM,kBAAA;;;;;;cA+DF,wBAAA,EAA0B,KAAA,CAAM,KAAA,CAAM,kBAAA;;;cCjMlC,qBAAA;;;;;2BAiBX,GAAA,EAAK,kBAAA,KACF,MAAA,CAAO,MAAA,CAAO,eAAA;EpBfX;;;;EAAA,4BoBqBoB,GAAA,EAAK,kBAAA,KAAuB,MAAA,CAAO,MAAA;EpBSvD;;;;EAAA,uBoBFN,GAAA,EAAK,gBAAA,KACF,MAAA,CAAO,MAAA,CAAO,eAAA;EpBCe;;;;EAAA,0BoBKR,GAAA,EAAK,gBAAA,KAAqB,MAAA,CAAO,MAAA;AAAA;;;;;;;cA7BlD,gBAAA,SAAyB,qBAAA;;;;;;;cAuCzB,oBAAA,GACX,MAAA,GAAS,eAAA,KACR,KAAA,CAAM,KAAA,CAAM,gBAAA;;;;;;cA0FF,sBAAA,EAAwB,KAAA,CAAM,KAAA,CAAM,gBAAA"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/core/routes.ts","../src/types.ts","../src/adapter/types.ts","../src/cache.ts","../src/core/plugin-types.ts","../src/usage-hooks/types.ts","../src/core/types.ts","../src/core/create-type-safe-server.ts","../src/core/plugin-validation.ts","../src/core/server.ts","../src/core/websocket-routes.ts","../src/core/websocket-handlers/websocket-handlers.ts","../src/error-types.ts","../src/http-utils.ts","../src/layer-utils.ts","../src/permissions/errors.ts","../src/permissions/matcher.ts","../src/permissions/types.ts","../src/plugins-typing.ts","../src/service.ts","../src/usage-hooks/service.ts"],"mappings":";;;;;;;;;;;;;KAeY,mBAAA;AAAA,KA8BA,eAAA,WAA0B,mBAAA;EACpC,IAAA,EAAM,CAAA;AAAA;AAAA,KAGI,0BAAA,WACA,mBAAA,+CAGR,eAAA,CAAgB,CAAA;EAClB,MAAA,EAAQ,MAAA;EACR,OAAA;IAAW,cAAA;EAAA;EACX,IAAA,EAAM,YAAA;AAAA;AAAA,KAGI,eAAA,GAAkB,eAAA;AAAA,KAElB,gBAAA,GAAmB,0BAAA;EAE3B,KAAA;AAAA;AAAA,KAIQ,uBAAA,GAA0B,eAAA;AAAA,KAE1B,wBAAA,GAA2B,0BAAA;EAEnC,KAAA;AAAA;AAAA,KAIQ,iBAAA,GAAoB,eAAA;EAC9B,OAAA;AAAA;AAAA,KAGU,kBAAA,GAAqB,0BAAA;EAE7B,KAAA;EAAsB,OAAA;AAAA;AAAA,KAId,6BAAA,GACV,eAAA;AAAA,KAEU,8BAAA,GAAiC,0BAAA;EAEzC,KAAA;AAAA;AAAA,KAGQ,mBAAA,GAAsB,eAAA;EAChC,IAAA;AAAA;AAAA,KAEU,oBAAA,GAAuB,0BAAA,kBAEjC,UAAA;AAAA,KAEU,sBAAA,GAAyB,eAAA;EACnC,SAAA;AAAA;AAAA,KAEU,uBAAA,GAA0B,0BAAA;EAGlC,SAAA;EACA,YAAA,EAAc,qBAAA;EACd,SAAA;AAAA;AAAA,KAIQ,gBAAA,GAAmB,eAAA;EAC7B,QAAA;AAAA;AAAA,KAGU,iBAAA,GAAoB,0BAAA,eAE9B,UAAA;AAAA,KAGU,kBAAA,GAAqB,eAAA;EAC/B,QAAA;EACA,IAAA,EAAM,cAAA;AAAA;AAAA,KAGI,mBAAA,GAAsB,0BAAA,iBAEhC,UAAA;AAAA,KAGU,cAAA,GAAiB,eAAA;EAC3B,MAAA;AAAA;AAAA,KAEU,eAAA,GAAkB,0BAAA,aAAuC,QAAA;AAAA,KAEzD,cAAA,GAAiB,eAAA;EAC3B,MAAA;EACA,SAAA;EACA,MAAA,EAAQ,MAAA;AAAA;AAAA,KAEE,eAAA,GAAkB,0BAAA,aAAuC,OAAA;AAAA,KAEzD,mBAAA,GAAsB,eAAA;EAChC,KAAA;AAAA;AAAA,KAEU,oBAAA,GAAuB,0BAAA,eAEjC,OAAA;AAAA,KAGU,iBAAA,GAAoB,eAAA;EAC9B,KAAA;EACA,MAAA;EACA,OAAA;AAAA;AAAA,KAEU,kBAAA,GAAqB,0BAAA,gBAE/B,OAAA;AAAA,KAGU,gBAAA,GAAmB,eAAA;EAC7B,KAAA;AAAA;AAAA,KAEU,iBAAA,GAAoB,0BAAA,eAE9B,OAAA;AAAA,KAGU,iBAAA,GAAoB,eAAA;EAC9B,KAAA;AAAA;AAAA,KAEU,kBAAA,GAAqB,0BAAA,gBAE/B,OAAA;AAAA,KAOU,cAAA,GAAiB,eAAA;EAC3B,OAAA,GAAU,qBAAA;AAAA;AAAA,KAEA,eAAA,GAAkB,0BAAA;EAE1B,KAAA,EAAO,cAAA;EAAkB,KAAA;AAAA;AAAA,KAGjB,aAAA,GAAgB,eAAA;EAC1B,MAAA;AAAA;AAAA,KAEU,cAAA,GAAiB,0BAAA,YAE3B,cAAA;AAAA,KAGU,eAAA,GAAkB,eAAA;EAC5B,MAAA;AAAA;AAAA,KAEU,gBAAA,GAAmB,0BAAA;EAE3B,OAAA;EAAkB,QAAA;AAAA;AAAA,KAGV,kBAAA,GAAqB,eAAA;EAC/B,OAAA;IAAY,MAAA,GAAS,oBAAA;IAAsB,MAAA;EAAA;AAAA;AAAA,KAEjC,mBAAA,GAAsB,0BAAA;EAE9B,OAAA;EAAiB,SAAA;EAAmB,MAAA;AAAA;AAAA,KAG5B,gBAAA,GAAmB,eAAA;EAC7B,MAAA;AAAA;AAAA,KAEU,iBAAA,GAAoB,0BAAA;EAE5B,OAAA;AAAA;AAAA,KAGQ,iBAAA,GAAoB,eAAA;EAC9B,MAAA;AAAA;AAAA,KAEU,kBAAA,GAAqB,0BAAA,gBAE/B,cAAA;AAAA,KAGU,iBAAA,GAAoB,eAAA;EAC9B,OAAA,GAAU,wBAAA;AAAA;AAAA,KAEA,kBAAA,GAAqB,0BAAA,gBAE/B,uBAAA;AAAA,KAGU,eAAA,GAAkB,eAAA;AAAA,KAClB,gBAAA,GAAmB,0BAAA,cAE7B,oBAAA;;AA5HF;;KAsIK,sBAAA;EAtI2B,0DAwI9B,YAAA;AAAA;;;;KAMU,aAAA,GAAgB,eAAA,aAA4B,sBAAA;;;;;KAM5C,cAAA,GAAiB,eAAA;EAC3B,MAAA;EACA,OAAA;IAAW,cAAA;EAAA;EACX,IAAA,EAAM,gBAAA;AAAA;;;;KAMI,kBAAA,GAAqB,eAAA,mBAC/B,sBAAA;AA5IF;;;;AAAA,KAkJY,mBAAA,GAAsB,eAAA;EAChC,MAAA;EACA,OAAA;IAAW,cAAA;EAAA;EACX,IAAA,EAAM,gBAAA;AAAA;;;;KAMI,uBAAA,GAA0B,eAAA,wBACpC,sBAAA;;AArJF;;;KA2JY,wBAAA,GAA2B,eAAA;EACrC,MAAA;EACA,OAAA;IAAW,cAAA;EAAA;EACX,IAAA,EAAM,gBAAA;AAAA;AAAA,KAGI,iBAAA,GACR,mBAAA,GACA,sBAAA,GACA,gBAAA,GACA,kBAAA,GACA,cAAA,GACA,cAAA,GACA,mBAAA,GACA,iBAAA,GACA,gBAAA,GACA,iBAAA,GAEA,cAAA,GACA,aAAA,GACA,eAAA,GACA,kBAAA,GACA,gBAAA,GACA,iBAAA,GACA,iBAAA,GACA,eAAA,GAEA,aAAA,GACA,kBAAA,GACA,uBAAA,GAEA,eAAA,GACA,iBAAA,GACA,uBAAA,GACA,6BAAA;AAAA,KAEQ,kBAAA,GACR,oBAAA,GACA,uBAAA,GACA,iBAAA,GACA,mBAAA,GACA,eAAA,GACA,eAAA,GACA,oBAAA,GACA,kBAAA,GACA,iBAAA,GACA,kBAAA,GAEA,eAAA,GACA,cAAA,GACA,gBAAA,GACA,mBAAA,GACA,iBAAA,GACA,kBAAA,GACA,kBAAA,GACA,gBAAA,GAEA,cAAA,GACA,mBAAA,GACA,wBAAA,GAEA,gBAAA,GACA,kBAAA,GACA,wBAAA,GACA,8BAAA,GACA,gBAAA;;;;;;;;KCpWQ,WAAA;;;;;EAKV,QAAA;;;ADKF;;;;;AA8BA;;;;;;ECpBE,QAAA,GAAW,MAAA;EDqBL;;;AAGR;EClBE,WAAA;AAAA;;;;;;KAQU,UAAA,GAAa,WAAA;;;;;;;;;;;;ADxBzB;;;;;AA8BA;;;UEvBiB,eAAA;EFuBW;;;EEnB1B,MAAA;EFoBO;;AAGT;EElBE,GAAA,EAAK,GAAA;EFkB+B;;;EEbpC,OAAA,EAAS,MAAA;EFkBD;;;EEbR,IAAA;AAAA;;;;;;;;;;;;;;AFkBF;;UEAiB,gBAAA;EFAa;;AAE9B;EEEE,MAAA;;;;EAKA,OAAA,GAAU,MAAA;EFDuB;;;EEMjC,IAAA;AAAA;;;;;AFEF;;;;;AAIA;;;;;;UEYiB,gBAAA;EFVgB;;AAIjC;;;EEYE,SAAA,GAAY,OAAA;EFXG;AAEjB;;EEcE,OAAA;EFd2C;;AAK7C;;;EEgBE,OAAA,GAAU,KAAA,EAAO,KAAA;AAAA;AFbnB;;;;;AAIA;;;;;AAGA;;;;;;;;;;;AASA;;;;;AAIA;;;;;AAKA;;;AAzBA,UEkDiB,aAAA;EFzBgB;;;;;;AAKjC;;;EEkCE,cAAA,CACE,GAAA,EAAK,QAAA;IACH;EAAA;IAAa,OAAA;EAAA,IACd,MAAA,CAAO,MAAA,CAAO,iBAAA;EFhCO;;;;AAG1B;;;;;EEwCE,YAAA,CACE,QAAA,EAAU,kBAAA,EACV,OAAA,EAAS,QAAA,GACR,MAAA,CAAO,MAAA,CAAO,SAAA;EFzCO;;;;;;;;;;AAK1B;;;EEmDE,iBAAA,EAAmB,GAAA,EAAK,QAAA,GAAW,MAAA,CAAO,MAAA,CAAO,UAAA;EFnDyB;AAE5E;;;;;AAGA;;;;;EE2DE,gBAAA,CAAiB,OAAA;IACf,OAAA;EAAA,IACE,MAAA,CAAO,MAAA,CAAO,iBAAA,SAA0B,cAAA,GAAe,YAAA;EFxDd;;;;;;;AAK/C;;;;;AAKA;;;;EEgEE,gBAAA,IACE,GAAA,EAAK,QAAA,OACA,OAAA,EAAS,OAAA;AAAA;;;;;;KC7NN,eAAA;;;;;;EAMV,OAAA;;AHGF;;;;EGIE,GAAA;AAAA;AAAA,cACA,qBAAA;EHyByB;;;EAAA,eGoBrB,KAAA,UACA,WAAA,EAAa,WAAA,KACV,MAAA,CAAO,MAAA;EHrBd;;;;EAAA,eG2BiB,KAAA,aAAkB,MAAA,CAAO,MAAA,CAAO,WAAA;EHxBb;;;EAAA,kBG6BhB,KAAA,aAAkB,MAAA,CAAO,MAAA;EHzB3C;;;EAAA,sBG8BsB,MAAA,CAAO,MAAA;EH3Bb;;;EAAA,qBGgCK,MAAA,CAAO,MAAA;AAAA;;;;;;;;;;;AH7BhC;;;;;AAEA;;;;;AAMA;;;;;AAEA;;;cGXa,gBAAA,SAAyB,qBAAA;AHiBtC;;;;;AAIA;AAJA,cGuBa,oBAAA,GACX,MAAA,GAAQ,eAAA,KACP,KAAA,CAAM,KAAA,CAAM,gBAAA;;;;;;cAgGF,sBAAA,EAAwB,KAAA,CAAM,KAAA,CAAM,gBAAA;;;;;;;;;;;;KC/KrC,yBAAA,oBAES,KAAA,CAAM,KAAA,qBACvB,oBAAA,CAAqB,CAAA;;;;;KAMb,gBAAA,GACR,gBAAA,GACA,gBAAA,GACA,kBAAA,GACA,uBAAA,GACA,cAAA;;;;;KAMQ,WAAA,YAAuB,gBAAA;;;;;AJQnC;;;;;;;;KIMY,cAAA,kBAAgC,WAAA,IAC1C,oBAAA,CAAqB,QAAA;;;;;;;;;;;;;;;;KAiBX,oBAAA,2BACV,MAAA,UACA,QAAA,oBACG,MAAA,CAAO,MAAA,CACV,IAAA,CAAK,CAAA,CAAE,SAAA,WAAoB,CAAA,CAAE,SAAA,WAAoB,aAAA,GACjD,iBAAA,EACA,aAAA;;;;;AJlBF;;;;;AAMA;;;;;AAEA;;;;;AAMA;;;;;AAIA;;;KI8BY,eAAA,kBACO,WAAA,mBAEf,aAAA,wBAEA,aAAA,SAAsB,cAAA,CAAe,QAAA;EAAA,SAGxB,OAAA;EAAA,SACA,SAAA;EAAA,SACA,UAAA,EAAY,aAAA;EAAA,SACZ,UAAA,EAAY,cAAA,CAAe,QAAA;EAAA,SAC3B,SAAA,EAAW,OAAA,CAAQ,aAAA,EAAe,cAAA,CAAe,QAAA;EAAA,SACjD,MAAA;AAAA;;;;AJlCjB;;;;;AAKA;;;;;AAGA;;;;;AAIA;;;;;AAGA;;;;;;KImDY,oBAAA,kBACO,WAAA,uBAEf,eAAA,CAAgB,QAAA,EAAU,iBAAA;EAExB,OAAA,EAAS,QAAA;EACT,KAAA,EAAO,oBAAA,CAAqB,iBAAA;AAAA,IAE9B,eAAA,CAAgB,QAAA,EAAU,iBAAA;;AJlD9B;;;;;AAIA;;;;;AAKA;;;;;;;;KI8DY,6BAAA,kBAER,MAAA,UACA,QAAA,oBACG,MAAA,CAAO,MAAA,+BAEZ,UAAA,CAAW,OAAA,UAAiB,MAAA,CAAO,MAAA,kCAE/B,KAAA,SAAc,IAAA,kCACZ,OAAA,CAAQ,aAAA;;AJlEhB;;;;;AAKA;;;;KI2EY,qBAAA,MACV,CAAA,SAAU,oBAAA,YAAgC,CAAA;AJzE5C;;;;AAAA,KI+EY,mBAAA,WAA8B,WAAA,kBAC5B,CAAA,GAAI,CAAA,CAAE,CAAA,UAAW,KAAA,CAAM,KAAA,8BAC/B,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,CAAA,EAAG,CAAA;;;;;;;KCtMZ,eAAA;EAAA,SACG,MAAA;AAAA;EAAA,SAEA,MAAA;EAAA,SACA,MAAA;EAAA,SACA,IAAA;AAAA;ALuBf;;;AAAA,cKjBa,cAAA,QAAqB,eAAA;;;;cAKrB,WAAA,GACX,MAAA,UACA,IAAA,cACC,eAAA;;;ALaH;UKAiB,iBAAA;ELAqB;EKEpC,QAAA;ELEkB;EKAlB,QAAA;ELCQ;EKCR,QAAA;AAAA;;;;UAMe,mBAAA,SAA4B,iBAAA;ELT3C;EKWA,QAAA;ELVkB;EKYlB,QAAA;ELXQ;EKaR,SAAA;ELZW;EKcX,GAAA;ELbM;EKeN,WAAA;IACE,MAAA;IACA,KAAA;EAAA;AAAA;;;ALZJ;UKmBiB,iBAAA,SAA0B,iBAAA;;EAEzC,MAAA;ELnBO;EKqBP,KAAA;ELjBiC;EKmBjC,SAAA;ELnBoC;EKqBpC,aAAA;ELnBU;EKqBV,UAAA;;EAEA,aAAA;ELrBO;EKuBP,QAAA;ELnB2B;EKqB3B,MAAA;AAAA;;ALjBF;;UKuBiB,YAAA,mBACG,iBAAA,GAAoB,iBAAA;ELxBmB;EK2BzD,QAAA;ELzBE;EK2BF,SAAA;EL3B+B;EK6B/B,QAAA,EAAU,SAAA;AAAA;;;;KAMA,kBAAA,GAAqB,YAAA,CAAa,mBAAA;AL5B9C;;;AAAA,KKiCY,gBAAA,GAAmB,YAAA,CAAa,iBAAA;;AL5B5C;;;KKsCY,iBAAA,IACV,GAAA,EAAK,kBAAA,KACF,MAAA,CAAO,MAAA,CAAO,eAAA;;ALrCnB;;;KK2CY,oBAAA,IACV,GAAA,EAAK,kBAAA,KACF,MAAA,CAAO,MAAA;;ALzCZ;;;KK+CY,eAAA,IACV,GAAA,EAAK,gBAAA,KACF,MAAA,CAAO,MAAA,CAAO,eAAA;;AL9CnB;;;KKoDY,kBAAA,IAAsB,GAAA,EAAK,gBAAA,KAAqB,MAAA,CAAO,MAAA;;;;;;;;AL3CnE;;;;;AAIA;;;;;AAKA;;;UK4DiB,UAAA;EL5DgB;;;;EKiE/B,aAAA,GAAgB,iBAAA;EL/DI;AAGtB;;;EKkEE,gBAAA,GAAmB,oBAAA;ELhET;AAGZ;;;EKmEE,WAAA,GAAc,eAAA;ELlER;AAER;;;EKsEE,cAAA,GAAiB,kBAAA;AAAA;ALpEnB;;;AAAA,UK0EiB,eAAA;EL1EY;;;EK8E3B,KAAA,GAAQ,UAAA;EL3EA;;;AAEV;;EKgFE,OAAA;AAAA;;AL9EF;;cKoFa,0BAAA;;;;;ALpNb;;;;;AA8BA;;;;;;;;;;AAIA;;;;;;;KMLY,aAAA,IACV,MAAA,UACA,QAAA,oBACG,MAAA,CAAO,MAAA,CACV,IAAA,CAAK,CAAA,CAAE,SAAA,WAAoB,CAAA,CAAE,SAAA,qBAC7B,iBAAA;;;;;;;;;;;;;;;;;ANUF;;;;;AAEA;;;;;AAMA;;;;;AAEA;;;;UMmBiB,sBAAA,4DAKb,MAAA,UACA,QAAA,oBACG,MAAA,CAAO,MAAA,CAEV,IAAA,CAAK,CAAA,CAAE,SAAA,WAAoB,CAAA,CAAE,SAAA,iBAC7B,iBAAA,wCAKwB,WAAA,cAAyB,WAAA;EN5BzC;;;;;AAIZ;;;;;;;EMsCE,KAAA,EAAO,MAAA;ENpCwB;AAIjC;;;;;AAGA;;;;;AAKA;;;;;AAGA;EMwCE,SAAA,EAAW,eAAA;;;;ANpCb;;;;;AAGA;;;;;EMgDE,OAAA,EAAS,KAAA,CAAM,KAAA,CAAM,kBAAA;EN5CnB;;;;;AAKJ;;;;;AAIA;EMgDE,OAAA,GAAU,QAAA;;;;AN3CZ;;;;;;;;;;EM0DE,YAAA,GAAe,KAAA,CAAM,KAAA,CAAM,uBAAA;ENrDE;;;;AAK/B;;;;;AAGA;;;;EM4DE,gBAAA,GAAmB,KAAA,CAAM,KAAA,CAAM,uBAAA;EN1DrB;;;;;;;;;;EMsEV,OAAA;ENjEU;;;;;AAEZ;;;;;AAGA;;;EM2EE,UAAA,GAAa,KAAA,CAAM,KAAA,CAAM,UAAA;ENzElB;AAGT;;;;;;;EMgFE,WAAA;EN7EO;;AAET;;;;;AAKA;;;;;AAGA;;;;;AAKA;;;;;AAGA;;;;;AASA;;;;;;EMsFE,kBAAA,GAAqB,KAAA,CAAM,KAAA;ENrFI;;AAEjC;;;;;;;;;;AAKA;EM6FE,YAAA,GAAe,KAAA,CAAM,KAAA,CAAM,cAAA;;;;AN1F7B;;;;;AAKA;;;;;EMoGE,iBAAA,GAAoB,KAAA,CAAM,KAAA,CACxB,mBAAA,SAEA,iBAAA;ENpGwB;;;;;;;;AAK5B;;;;;;;;EMkHE,OAAA,EAAS,aAAA,CAAc,QAAA,EAAU,SAAA,EAAW,UAAA;ENjHK;;AAEnD;;;;;;;;;;AAKA;;EM0HE,eAAA,GAAkB,eAAA;EN1HW;;AAG/B;;;;;AAKA;;;;;AAGA;;;;;AAKA;;;;;;;;;EMsIE,cAAA;ENnI4B;;;;AAK9B;;;;;AACA;;;;;AAGE;;;;;AAiBF;;;;;AAMA;;EM+HE,eAAA;EN5HwB;;;;;;;;;AAM1B;;;;;AAOA;;;;;;EMqIE,WAAA,GAAc,iBAAA;ENnIH;;;;;AAOb;;;;;AAOA;;;;;;;;;;;;AAMA;;;;;;;EM8IE,SAAA;IAAwB,MAAA,GAAS,eAAA;IAAiB,KAAA,GAAQ,cAAA;EAAA;ENrIxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EMuKF,UAAA,GAAa,eAAA;AAAA;;;;;;;;;;UAYE,gBAAA;ENhKgB;;AAEjC;EMsKE,OAAA,GAAU,GAAA,EAAK,QAAA,KAAa,OAAA,CAAQ,SAAA;;;;EAKpC,gBAAA,EAAkB,iBAAA;ENvKhB;;;EM4KF,OAAA;ENxKE;;;;;EM+KF,OAAA,QAAe,OAAA;AAAA;;;;;;;;;;;;;;ANpfjB;KOMY,oBAAA,mDAIO,WAAA,sBACG,cAAA,CAAe,QAAA,KACjC,IAAA,CACF,sBAAA,CAAuB,QAAA,EAAU,SAAA,EAAW,UAAA;;;;APiB9C;EOVE,OAAA,EAAS,QAAA;EPUgB;;;;EOJzB,KAAA,EAAO,oBAAA,CAAqB,iBAAA;EPKtB;;;AAGR;EOFE,UAAA,GAAa,eAAA,CAAgB,QAAA,EAAU,iBAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;APYzC;;;;;AAEA;;;;;AAMA;;;;;AAEA;;;;;AAMA;;;;;AAIA;;;;;;;;;AAMA;;;;;AAGA;;;;;AAKA;;;;;AAGA;;;;;AAIA;;;iBO4BsB,oBAAA,6DAIH,WAAA,GAAc,WAAA,sBACX,cAAA,CAAe,QAAA,EAAA,CAEnC,MAAA,EAAQ,oBAAA,CACN,QAAA,EACA,SAAA,EACA,UAAA,EACA,QAAA,EACA,iBAAA,KAGC,eAAA,CAAgB,QAAA,EAAU,iBAAA,0BAEvB,eAAA,CAAgB,QAAA,EAAU,iBAAA,KAC/B,OAAA,CAAQ,gBAAA,CAAiB,QAAA,EAAU,SAAA,EAAW,UAAA;;AP3CjD;;;;;;;;;;;AASA;;;;;AAIA;;;;;AAKA;;iBOqDgB,UAAA,uBAAA,CACd,EAAA,EAAI,oBAAA,CAAqB,aAAA,IACxB,oBAAA,CAAqB,aAAA;;;;;;;;APlDxB;;;;;AAKA;;;;;AAGA;;iBOiEgB,gBAAA,CACd,EAAA,EAAI,oBAAA,UACH,oBAAA;;;;AP1LH;;KQEY,sBAAA;EAEN,OAAA;AAAA;EAGA,OAAA;EACA,QAAA;EACA,QAAA;EACA,OAAA;EACA,WAAA,EAAa,KAAA;IACX,IAAA;IACA,WAAA;IACA,eAAA;EAAA;AAAA;ARoBR;;;;;;AAAA,iBQkEgB,yBAAA,CACd,OAAA,WAAkB,WAAA;;;;;;;;;;;;;;;;;;ARzDpB;;;;;AAEA;;;;;iBQyFgB,0BAAA,CAA2B,MAAA;EACzC,OAAA,WAAkB,WAAA;EAClB,gBAAA;AAAA,IACE,sBAAA;;ARpFJ;;;;;AAMA;;;;;AAIA;;;;;;;;;AAMA;;iBQkIgB,2BAAA,CACd,MAAA,EAAQ,OAAA,CAAQ,sBAAA;EAA0B,OAAA;AAAA;ARhI5C;;;;;AAKA;;;;;AAGA;;;;;AAIA;;;;;AAGA;AAfA,iBQqLgB,gCAAA,CAAiC,MAAA;EAC/C,OAAA,WAAkB,WAAA;EAClB,gBAAA;AAAA,IACE,MAAA,CAAO,MAAA,OAAa,KAAA;;;;;;;ARhKxB;;;;;AAIA;;;;;AAKA;;;;;;;iBQyLgB,sBAAA,CAAuB,MAAA;EACrC,OAAA,WAAkB,WAAA;EAClB,gBAAA;AAAA;;;;;;;;;;;ARrSF;;;;;AA8BA;;;;;;;;;;AAIA;;;;;;;;;;;;;;;;;;;;;;;;AAUA;;;;;AAEA;;;;;AAMA;;;;;AAEA;;;;;AAMA;;;;;AAIA;;;;;;;;;AAMA;;;;;AAGA;;;;;AAKA;;;;;AAGA;;;;;AAIA;;;;;AAGA;;;;;;;;;;;AASA;;;;;AAIA;;;;;AAKA;;;;;;;;;;AAKA;cS8Ca,sBAAA,qEAKT,MAAA,UACA,QAAA,oBACG,MAAA,CAAO,MAAA,CAEV,IAAA,CAAK,CAAA,CAAE,SAAA,WAAoB,CAAA,CAAE,SAAA,iBAC7B,iBAAA,wCAKwB,WAAA,cAAyB,WAAA;EACnD,KAAA;EAAA,SAAA;EAAA,OAAA;EAAA,OAAA;EAAA,YAAA;EAAA,gBAAA;EAAA,WAAA;EAAA,kBAAA;EAAA,OAAA,EAAA,aAAA;EAAA,UAAA;EAAA,YAAA;EAAA,iBAAA;EAAA,OAAA;EAAA,eAAA;EAAA,cAAA;EAAA,eAAA;EAAA,SAAA;EAAA,WAAA;EAAA;AAAA,GAqBC,sBAAA,CACD,QAAA,EACA,SAAA,EACA,iBAAA,EACA,MAAA,EACA,QAAA,MACE,OAAA,CAAQ,gBAAA,CAAiB,QAAA,EAAU,SAAA,EAAW,iBAAA;;;;;;;KCjNtC,mBAAA;EACV,EAAA;EACA,IAAA,GAAO,IAAA;EACP,KAAA,GAAQ,IAAA,WAAe,MAAA;EACvB,UAAA;AAAA;;;AVKF;KUCY,kBAAA;;;;KAgBA,cAAA,WAAyB,kBAAA;EACnC,IAAA,EAAM,CAAA;AAAA;;;;KAOI,oBAAA,GAAuB,cAAA;EACjC,QAAA;AAAA;AAAA,KAGU,kBAAA,GAAqB,cAAA;EAC/B,KAAA;AAAA;AAAA,KAGU,sBAAA,GAAyB,cAAA;EACnC,QAAA;AAAA;AAAA,KAGU,oBAAA,GAAuB,cAAA;EACjC,KAAA;AAAA;AAAA,KAGU,SAAA,GAAY,cAAA;AAAA,KAEZ,sBAAA,GACR,oBAAA,GACA,kBAAA,GACA,sBAAA,GACA,oBAAA,GACA,SAAA;;;;KAMQ,eAAA,GAAkB,cAAA;EAC5B,OAAA;EACA,EAAA;EACA,KAAA;EACA,QAAA;EACA,SAAA;AAAA;AAAA,KAGU,kBAAA,GAAqB,cAAA;EAC/B,QAAA;EACA,KAAA,EAAO,WAAA;EACP,SAAA;AAAA;AAAA,KAGU,gBAAA,GAAmB,cAAA;EAC7B,KAAA;EACA,KAAA;EACA,SAAA;AAAA;AAAA,KAGU,UAAA,GAAa,cAAA;EACvB,OAAA;EACA,IAAA;AAAA;AAAA,KAGU,gBAAA,GAAmB,cAAA;EAC7B,OAAA;EACA,cAAA;AAAA;AAAA,KAGU,eAAA,GAAkB,cAAA;EAC5B,OAAA;EACA,UAAA;AAAA;AAAA,KAGU,sBAAA,GACR,eAAA,GACA,kBAAA,GACA,gBAAA,GACA,UAAA,GACA,gBAAA,GACA,eAAA;;AVnCJ;;;KUyCY,0BAAA;EVxCH,gDU0CP,OAAA,UVvC4B;EUyC5B,QAAA,UVzCyD;EU2CzD,aAAA,YVzCE;EU2CF,aAAA,WV3C+B;EU6C/B,WAAA,WVzCU;EU2CV,KAAA;EAEA,QAAA,WV5Ce;EU8Cf,OAAA,WV5CwC;EU8CxC,UAAA,EAAY,mBAAA;AAAA;;;;;;;cC5GD,mBAAA,GACX,OAAA,EAAS,0BAAA,EACT,YAAA,EAAc,iBAAA,EACd,UAAA,EAAY,eAAA,KAAe,MAAA,CAAA,MAAA;;;;AXd7B;cWoEa,sBAAA,GACX,OAAA,UACA,UAAA,EAAY,mBAAA,KAAmB,MAAA,CAAA,MAAA;;;;AXxCjC;cWqEa,oBAAA,GACX,OAAA,EAAS,0BAAA,EACT,YAAA,EAAc,iBAAA,EACd,UAAA,EAAY,eAAA,KAAe,MAAA,CAAA,MAAA;;;;cA6BhB,oBAAA,GAAwB,KAAA,WAAgB,OAAA,cAAgB,MAAA,CAAA,MAAA;;;;;;;;;;;;cCvIxD,YAAA,SAAqB,KAAA;EAAA,SAGd,UAAA;EAAA,SACA,SAAA;cAFhB,OAAA,UACgB,UAAA,WACA,SAAA;AAAA;;;;AZ8BpB;;;;;;;;cYZa,eAAA,SAAwB,YAAA;cACvB,OAAA;AAAA;;;;;;;;;;;;cAiBD,aAAA,SAAsB,YAAA;cACrB,QAAA;AAAA;;;;;;;;;;AZOd;;;;;cYaa,eAAA,SAAwB,YAAA;cACvB,OAAA;AAAA;;;AZNd;;;;;AAEA;;;;;AAMA;;;;;AAIA;;cYmBa,uBAAA,GAA2B,KAAA,EAAO,YAAA;;;;;;;AZb/C;;;;;AAGA;;;;;AAKA;;;;;AAGA;;;;cY6Ba,iCAAA,GAAqC,KAAA,EAAO,eAAA;;;;;;AZtBzD;;;;;;;;;;;AASA;;;;;AAIA;;;;;AAbA,cY8Da,8BAAA,GACX,OAAA;;;;;;;;;;;;;;;;;;;;AZvJF;;;;;AA8BA;cazBa,gBAAA,GAAoB,QAAA;;;;;;;;;Ab6BjC;;;;caba,cAAA,GAAkB,QAAA;;;;;;;;;;;;;;;cAmBlB,WAAA,GAAe,QAAA,UAAkB,QAAA;;;;;AbI9C;;;;;AAEA;;;;;caYa,gBAAA,GACX,QAAA,UACA,QAAA;;;;;AbNF;;;;;AAMA;;;;;AAIA;;;;;;;casBa,eAAA,GACX,KAAA;EACG,MAAA;EAAgB,IAAA;EAAc,OAAA;EAAiB,OAAA;AAAA;;AbfpD;;;;;AAKA;;;;;AAGA;;ca8Ga,sBAAA,GACX,WAAA;;;Ab3GF;;;;;AAGA;;;;;;;;;;;ca+Ha,mBAAA,GACX,WAAA;EACG,KAAA;EAA2B,MAAA;AAAA;;AbpHhC;;;;;AAKA;;;;;;;;;;AAKA;cakIa,uBAAA,GACX,WAAA;EACG,MAAA;EAA4B,SAAA;AAAA;;;;;;;;;;;AbnPjC;;;;;AA8BA;;;;;;;;UcPiB,uBAAA;EACf,OAAA,EAAS,KAAA,CAAM,KAAA,CAAM,kBAAA;EACrB,YAAA,EAAc,KAAA,CAAM,KAAA,CAAM,uBAAA;EAC1B,SAAA,EAAW,KAAA,CAAM,KAAA,CAAM,oBAAA,SAA6B,iBAAA;EACpD,iBAAA,GAAoB,KAAA,CAAM,KAAA,CACxB,mBAAA,SAEA,iBAAA;EAEF,UAAA,GAAa,KAAA,CAAM,KAAA,CAAM,UAAA;AAAA;;;;;;;;;;;;;;;;;;;;AdY3B;;UcYiB,qBAAA;EACf,OAAA,EAAS,KAAA,CAAM,KAAA,CAAM,kBAAA;EACrB,YAAA,EAAc,KAAA,CAAM,KAAA,CAAM,uBAAA;EAC1B,YAAA,EAAc,KAAA,CAAM,KAAA,CAAM,YAAA;EAC1B,YAAA,EAAc,KAAA,CAAM,KAAA,CAAM,YAAA;AAAA;;;AdR5B;;;;;AAEA;;;;;AAMA;;;;;AAIA;;;;;;;;;AAMA;;;ccsBa,uBAAA;EAA2B,OAAA;EAAA,YAAA;EAAA,SAAA;EAAA,iBAAA;EAAA;AAAA,GAMrC,uBAAA,KAAuB,KAAA,CAAA,KAAA,CAAA,YAAA;;AdzB1B;;;;;AAKA;;;;;AAGA;;;;;AAIA;;;;;AAGA;;;;;;;;cc8Da,qBAAA;EAAyB,OAAA;EAAA,YAAA;EAAA,YAAA;EAAA;AAAA,GAKnC,qBAAA,KAAqB,KAAA,CAAA,KAAA,CAAA,iBAAA,CAAA,UAAA;;;;;;;;;;Ad3JxB;;;;ceIa,kBAAA,SAA2B,YAAA;Ef0B5B;;;EAAA,SetBM,kBAAA;cAEJ,kBAAA,UAA4B,OAAA;AAAA;;;;;AfwB1C;;;;;;;ceFa,2BAAA,SAAoC,YAAA;cACnC,OAAA;AAAA;;;;;;;;;;;;cAiBD,yBAAA,SAAkC,YAAA;cAE3C,OAAA;AAAA;AfRJ;;;;;AAEA;;;;;AAMA;AARA,ce0Ba,kBAAA,SAA2B,YAAA;cAC1B,OAAA,WAA4B,IAAA;AAAA;;AfjB1C;;;;;AAMA;cewBa,oCAAA,GACX,KAAA,EAAO,kBAAA;;;;;;;;;;;;;;;;;;;;;AfrFT;;;;;AA8BA;;;;;cgBnBa,iBAAA,GACX,OAAA,UACA,QAAA;;;;;AhBqBF;;;;;;;;;cgBgBa,aAAA,GACX,kBAAA,qBACA,QAAA;;;;;;;;;;;;;;cAoBW,gBAAA,GACX,kBAAA,qBACA,mBAAA;AhB9BF;;;;;AAEA;;;;;AAMA;;;AARA,cgBkDa,iBAAA,GACX,kBAAA,qBACA,mBAAA;;AhB1CF;;;;;AAMA;;;;;AAIA;;cgBoDa,gBAAA,GAAoB,UAAA;;;;;;;;;;;;;cCpHpB,kBAAA;6EjBAD;EAAA;0CAAmB;EAAA,oCA8BJ;EAAA,4BAClB;EAAA,sCAD6B;EAAA;;;;AAItC;ciBVa,gBAAA;EjBUyB,iEAIlB;EAAA,kCACV;EAAA,gCAEU;EAAA;;;;;ciBCP,kBAAA;EjBJO,qEACV;EAAA,kCACG;EAAA,8BACL;EAAA;;AAGR;;;;;AAEA;;;;;AAMA;AARA,ciBwBa,WAAA;EAAA;IjBhBwC,2EAEzC;IAAA,kCAA2B;IAAA,wCAE9B;IAAA,oCAIoB;IAAA,4BAC3B;IAAA,sCAGU;IAAA;;;IAAqB,iEAEP;IAAA,kCAAO;IAAA,gCAIQ;IAAA;;;IAG7B,qEAAiC;IAAA,kCAEpC;IAAA,8BAGsB;IAAA;;;AAG/B;AAAA,KiBFY,gBAAA,WACF,kBAAA,eAAiC,kBAAA;;KAG/B,cAAA,WACF,gBAAA,eAA+B,gBAAA;;KAG7B,gBAAA,WACF,kBAAA,eAAiC,kBAAA;;;;;KAM/B,UAAA,GACR,gBAAA,GACA,cAAA,GACA,gBAAA;;;;cAMS,eAAA;EjBZT,0GACc;EAAA,8DACL;EAAA,+DAID;EAAA;;;;AAIZ;;ciBoBa,oBAAA,EAAsB,MAAA;;;;;;;;;;;;AjBvFnC;;;;;;;KkBZY,iBAAA,yBAEc,KAAA,CAAM,KAAA,yBAC5B,oBAAA,CAAqB,MAAA;;;;;;KAOb,WAAA,iBAER,MAAA,UACA,QAAA,oBACG,MAAA,CAAO,MAAA,+BAEZ,UAAA,CAAW,MAAA,UAAgB,MAAA,CAAO,MAAA,oCAC9B,OAAA;;;;;;;;;;;AlBKN;;;;;AAEA;KkBYY,kBAAA,iBAER,MAAA,UACA,QAAA,oBACG,MAAA,CAAO,MAAA,+BAEZ,WAAA,CAAY,MAAA,UAAgB,MAAA,CAC1B,GAAA,CAAE,SAAA,WACF,GAAA,CAAE,SAAA,sBAGA,OAAA,CAAQ,CAAA,EAAG,cAAA;;;;AlBjBjB;;;;;AAEA;;;;;AAMA;;;KkB4BY,iBAAA,iBAER,MAAA,UACA,QAAA,oBACG,MAAA,CAAO,MAAA,+BACV,OAAA,CAAQ,kBAAA,CAAmB,MAAA,GAAS,cAAA;;AlB7BxC;;;;;;;;;AAMA;;;;;AAGA;;KkBuCY,eAAA,iBAER,MAAA,UACA,QAAA,oBACG,MAAA,CAAO,MAAA,uDAEc,KAAA,CAAM,KAAA,yBAC9B,OAAA,CACF,iBAAA,CAAkB,MAAA,GAClB,iBAAA,CAAkB,QAAA;EAId,gBAAA,EAAkB,OAAA,CAChB,iBAAA,CAAkB,MAAA,GAClB,iBAAA,CAAkB,QAAA;AAAA;;;cCrIiB,uBAAA;;;;;8BA8BX,MAAA,CAAO,MAAA;;;;;8BAMP,MAAA,CAAO,MAAA,CAAO,MAAA;EnB9Bf;;;;AA8B/B;;;;;;;;;;AAIA;;;EAlC+B,yBmBiDF,UAAA,aAAuB,MAAA,CAAO,MAAA;EnBXvC;;;;EAAA,4BmBkBd,WAAA,wBACG,MAAA,CAAO,MAAA;EnBhBI;;;;;;;;;;;;;;;AAGpB;;EAHoB,6BmBoCd,UAAA,aACG,MAAA,CAAO,MAAA,OAAa,kBAAA,GAAqB,2BAAA;EnBlCpB;;AAE9B;;;EAF8B,sCmByCY,MAAA,CAAO,MAAA,CAC3C,WAAA,EACA,2BAAA;EnBvCG;AAIT;;;EAJS,+BmB8C0B,MAAA,CAAO,MAAA;EnB1CW;AAErD;;;EAFqD,+BmBgDlB,MAAA,CAAO,MAAA,CAAO,WAAA;AAAA;AnBxCjD;;;;;AAIA;;;;;;;;;AAMA;;;;;AAGA;;AAbA,cmB3Ca,kBAAA,SAA2B,uBAAA;;AnB6DxC;;UmB6BiB,yBAAA;EnB7BiB;;AAGlC;;;EmBgCE,UAAA;AAAA;AnB5BF;;;;;AAGA;;;AAHA,cmBuCa,sBAAA,GACX,WAAA,EAAa,WAAA,SACb,OAAA,GAAU,yBAAA,KACT,KAAA,CAAM,KAAA,CAAM,kBAAA;;;;;;cA+DF,wBAAA,EAA0B,KAAA,CAAM,KAAA,CAAM,kBAAA;;;cCjMlC,qBAAA;;;;;2BAiBX,GAAA,EAAK,kBAAA,KACF,MAAA,CAAO,MAAA,CAAO,eAAA;EpBfX;;;;EAAA,4BoBqBoB,GAAA,EAAK,kBAAA,KAAuB,MAAA,CAAO,MAAA;EpBSvD;;;;EAAA,uBoBFN,GAAA,EAAK,gBAAA,KACF,MAAA,CAAO,MAAA,CAAO,eAAA;EpBCe;;;;EAAA,0BoBKR,GAAA,EAAK,gBAAA,KAAqB,MAAA,CAAO,MAAA;AAAA;;;;;;;cA7BlD,gBAAA,SAAyB,qBAAA;;;;;;;cAuCzB,oBAAA,GACX,MAAA,GAAS,eAAA,KACR,KAAA,CAAM,KAAA,CAAM,gBAAA;;;;;;cA0FF,sBAAA,EAAwB,KAAA,CAAM,KAAA,CAAM,gBAAA"}
package/dist/index.mjs CHANGED
@@ -1,3 +1,3 @@
1
- import{getAuthCredentials as e}from"./auth/index.mjs";import{Context as t,Effect as n,Layer as r,ManagedRuntime as i,Option as a}from"effect";import{DeadLetterQueueService as o,FlowEngine as s,FlowLifecycleHook as c,FlowProvider as l,FlowWaitUntil as u,deadLetterQueueService as d,flowEngine as f,kvCircuitBreakerStoreLayer as ee}from"@uploadista/core/flow";import{CircuitBreakerStoreService as te,DEFAULT_HEALTH_CHECK_CONFIG as p,createDataStoreLayer as ne,deadLetterQueueKvStore as re,flowEventEmitter as m,flowJobKvStore as ie,formatHealthAsText as h,getHealthResponseFormat as g,inputFileSchema as _,uploadEventEmitter as v,uploadFileKvStore as ae}from"@uploadista/core/types";import{GenerateIdLive as oe,isSupportedAlgorithm as se}from"@uploadista/core/utils";import{memoryEventBroadcaster as ce}from"@uploadista/event-broadcaster-memory";import{webSocketEventEmitter as le}from"@uploadista/event-emitter-websocket";import{MetricsService as y,NoOpMetricsServiceLive as ue,NodeSdkLive as de}from"@uploadista/observability";import{UploadEngine as b,uploadEngine as x}from"@uploadista/core/upload";import{UploadistaError as S}from"@uploadista/core/errors";var C=class extends t.Tag(`AuthCacheService`)(){};const fe=(e={})=>{let t=e.maxSize??1e4,i=e.ttl??36e5,a=new Map,o=()=>{let e=Date.now();for(let[t,n]of a.entries())e-n.timestamp>i&&a.delete(t)},s=()=>{if(a.size<=t)return;let e=null,n=1/0;for(let[t,r]of a.entries())r.timestamp<n&&(n=r.timestamp,e=t);e&&a.delete(e)};return r.succeed(C,{set:(e,t)=>n.sync(()=>{a.size%100==0&&o(),a.set(e,{authContext:t,timestamp:Date.now()}),s()}),get:e=>n.sync(()=>{let t=a.get(e);return t?Date.now()-t.timestamp>i?(a.delete(e),null):t.authContext:null}),delete:e=>n.sync(()=>{a.delete(e)}),clear:()=>n.sync(()=>{a.clear()}),size:()=>n.sync(()=>a.size)})},w=r.succeed(C,{set:()=>n.void,get:()=>n.succeed(null),delete:()=>n.void,clear:()=>n.void,size:()=>n.succeed(0)}),T=e=>e.split(`/`).filter(Boolean),E=e=>{let t=T(e);return t[t.length-1]},D=(e,t)=>e.includes(`${t}/api/`),O=(e,t)=>e.replace(`${t}/api/`,``).split(`/`).filter(Boolean),pe=e=>{let t=500,n=`UNKNOWN_ERROR`,r=`Internal server error`,i;if(typeof e==`object`&&e){let a=e;if(`code`in a&&typeof a.code==`string`&&(n=a.code),`message`in a&&typeof a.message==`string`?r=a.message:`body`in a&&typeof a.body==`string`&&(r=a.body),`details`in a&&(i=a.details),`status`in a&&typeof a.status==`number`)t=a.status;else if(`code`in a)switch(a.code){case`FILE_NOT_FOUND`:case`FLOW_JOB_NOT_FOUND`:case`UPLOAD_ID_NOT_FOUND`:t=404;break;case`FLOW_JOB_ERROR`:case`VALIDATION_ERROR`:case`INVALID_METADATA`:case`INVALID_LENGTH`:case`ABORTED`:case`INVALID_TERMINATION`:t=400;break;case`INVALID_OFFSET`:t=409;break;case`ERR_SIZE_EXCEEDED`:case`ERR_MAX_SIZE_EXCEEDED`:t=413;break;case`FILE_NO_LONGER_EXISTS`:t=410;break;case`MISSING_OFFSET`:case`INVALID_CONTENT_TYPE`:t=403;break;default:t=500}`message`in a&&a.message===`Invalid JSON body`&&(t=400,n=`VALIDATION_ERROR`)}let a={status:t,code:n,message:r};return i!==void 0&&(a.details=i),a},k=e=>e[e.length-2],A=e=>({jobId:e[e.length-3],nodeId:e[e.length-1]}),j=e=>({storageId:e.pop(),flowId:e.pop()}),me=({kvStore:e,eventEmitter:t,dataStore:n,bufferedDataStore:i,generateId:a})=>{let o=r.provide(ae,e),s=r.provide(n,o),c=i?r.provide(i,o):r.empty,l=r.provide(v,t),u=r.mergeAll(s,o,l,...a?[a]:[],c);return r.provide(x,u)},he=({kvStore:e,eventEmitter:t,flowProvider:n,uploadEngine:i})=>{let a=r.provide(ie,e),o=r.provide(m,t),s=r.mergeAll(n,o,a,i);return r.provide(f,s)};var M=class extends Error{constructor(e,t=500,n=`INTERNAL_ERROR`){super(e),this.statusCode=t,this.errorCode=n,this.name=`AdapterError`}},N=class extends M{constructor(e){super(e,400,`VALIDATION_ERROR`),this.name=`ValidationError`}},P=class extends M{constructor(e){super(`${e} not found`,404,`NOT_FOUND`),this.name=`NotFoundError`}},ge=class extends M{constructor(e){super(e,400,`BAD_REQUEST`),this.name=`BadRequestError`}};const F=e=>({error:e.message,code:e.errorCode,timestamp:new Date().toISOString()}),_e=e=>{let t={error:e.body,code:e.code,timestamp:new Date().toISOString()};return e.details!==void 0&&(t.details=e.details),t},ve=(e=`Internal server error`)=>({error:e,code:`INTERNAL_ERROR`,timestamp:new Date().toISOString()});var ye=class extends M{requiredPermission;constructor(e,t){super(t??`Permission denied: ${e} required`,403,`PERMISSION_DENIED`),this.name=`AuthorizationError`,this.requiredPermission=e}},I=class extends M{constructor(e=`Authentication required`){super(e,401,`AUTHENTICATION_REQUIRED`),this.name=`AuthenticationRequiredError`}},be=class extends M{constructor(e=`Access denied: resource belongs to another organization`){super(e,403,`ORGANIZATION_MISMATCH`),this.name=`OrganizationMismatchError`}},L=class extends M{constructor(e=`Quota exceeded`,t=`QUOTA_EXCEEDED`){super(e,402,t),this.name=`QuotaExceededError`}};const xe=e=>({error:e.message,code:e.errorCode,requiredPermission:e.requiredPermission,timestamp:new Date().toISOString()}),R={ALL:`engine:*`,HEALTH:`engine:health`,READINESS:`engine:readiness`,METRICS:`engine:metrics`,DLQ:`engine:dlq`,DLQ_READ:`engine:dlq:read`,DLQ_WRITE:`engine:dlq:write`},z={ALL:`flow:*`,EXECUTE:`flow:execute`,CANCEL:`flow:cancel`,STATUS:`flow:status`},B={ALL:`upload:*`,CREATE:`upload:create`,READ:`upload:read`,CANCEL:`upload:cancel`},V={ENGINE:R,FLOW:z,UPLOAD:B},Se={ADMIN:[R.ALL],ORGANIZATION_OWNER:[z.ALL,B.ALL],ORGANIZATION_MEMBER:[z.ALL,B.ALL],API_KEY:[z.EXECUTE,B.CREATE]},H={[R.DLQ]:[R.DLQ_READ,R.DLQ_WRITE]},Ce=(e,t)=>{if(e===t)return!0;if(e.endsWith(`:*`)){let n=e.slice(0,-1);if(t.startsWith(n))return!0}return!!H[e]?.includes(t)},U=(e,t)=>e.some(e=>Ce(e,t)),we=(e,t)=>t.some(t=>U(e,t)),Te=(e,t)=>t.every(t=>U(e,t)),Ee=e=>{let t=[e],n=H[e];return n&&t.push(...n),t};var W=class extends t.Tag(`AuthContextService`)(){};const G=(e,t)=>{let i=e?.permissions??[],a=t?.bypassAuth??!1;return r.succeed(W,{getClientId:()=>n.succeed(e?.clientId??null),getMetadata:()=>n.succeed(e?.metadata??{}),hasPermission:e=>a?n.succeed(!0):n.succeed(U(i,e)),hasAnyPermission:e=>a?n.succeed(!0):n.succeed(we(i,e)),requirePermission:t=>n.gen(function*(){if(a){yield*n.logDebug(`[Auth] Bypass mode: permission '${t}' auto-granted`);return}if(!e)return yield*n.logDebug(`[Auth] Permission check failed: authentication required for '${t}'`),yield*n.fail(new I);if(!U(i,t))return yield*n.logDebug(`[Auth] Permission denied: '${t}' for client '${e.clientId}'`),yield*n.fail(new ye(t));yield*n.logDebug(`[Auth] Permission granted: '${t}' for client '${e.clientId}'`)}),requireAuthentication:()=>e?n.succeed(e):n.fail(new I),getPermissions:()=>n.succeed(i),getAuthContext:()=>n.succeed(e)})},De=G(null),K=()=>({action:`continue`}),Oe=(e,t)=>({action:`abort`,reason:e,code:t}),ke=5e3;var q=class extends t.Tag(`UsageHookService`)(){};const J=e=>{let t=e?.hooks,i=e?.timeout??ke;return r.succeed(q,{onUploadStart:e=>t?.onUploadStart?t.onUploadStart(e).pipe(n.timeout(i),n.map(e=>e??K()),n.catchAll(e=>n.gen(function*(){return yield*n.logWarning(`onUploadStart hook failed: ${e}. Proceeding with upload.`),K()}))):n.succeed(K()),onUploadComplete:e=>t?.onUploadComplete?t.onUploadComplete(e).pipe(n.timeout(i),n.asVoid,n.catchAll(e=>n.logWarning(`onUploadComplete hook failed: ${e}. Upload already completed.`))):n.void,onFlowStart:e=>t?.onFlowStart?t.onFlowStart(e).pipe(n.timeout(i),n.map(e=>e??K()),n.catchAll(e=>n.gen(function*(){return yield*n.logWarning(`onFlowStart hook failed: ${e}. Proceeding with flow.`),K()}))):n.succeed(K()),onFlowComplete:e=>t?.onFlowComplete?t.onFlowComplete(e).pipe(n.timeout(i),n.asVoid,n.catchAll(e=>n.logWarning(`onFlowComplete hook failed: ${e}. Flow already completed.`))):n.void})},Ae=J(),je=e=>n.gen(function*(){yield*(yield*W).requirePermission(V.ENGINE.DLQ_READ);let t=yield*(yield*o).list(e.options);return{type:`dlq-list`,status:200,headers:{"Content-Type":`application/json`},body:t}}),Me=e=>n.gen(function*(){yield*(yield*W).requirePermission(V.ENGINE.DLQ_READ);let t=yield*(yield*o).get(e.itemId);return{type:`dlq-get`,status:200,headers:{"Content-Type":`application/json`},body:t}}),Ne=e=>n.gen(function*(){return yield*(yield*W).requirePermission(V.ENGINE.DLQ_WRITE),yield*(yield*o).markRetrying(e.itemId),{type:`dlq-retry`,status:200,headers:{"Content-Type":`application/json`},body:{success:!0}}}),Pe=e=>n.gen(function*(){yield*(yield*W).requirePermission(V.ENGINE.DLQ_WRITE);let t=yield*o,{items:r}=yield*t.list({status:e.options?.status,flowId:e.options?.flowId}),i=0,a=0;for(let e of r)(yield*n.either(t.markRetrying(e.id)))._tag===`Right`?i++:a++;return{type:`dlq-retry-all`,status:200,headers:{"Content-Type":`application/json`},body:{retried:r.length,succeeded:i,failed:a}}}),Fe=e=>n.gen(function*(){return yield*(yield*W).requirePermission(V.ENGINE.DLQ_WRITE),yield*(yield*o).delete(e.itemId),{type:`dlq-delete`,status:200,headers:{"Content-Type":`application/json`},body:{success:!0}}}),Ie=e=>n.gen(function*(){yield*(yield*W).requirePermission(V.ENGINE.DLQ_WRITE);let t=yield*(yield*o).markResolved(e.itemId);return{type:`dlq-resolve`,status:200,headers:{"Content-Type":`application/json`},body:t}}),Le=e=>n.gen(function*(){yield*(yield*W).requirePermission(V.ENGINE.DLQ_WRITE);let t=yield*(yield*o).cleanup(e.options);return{type:`dlq-cleanup`,status:200,headers:{"Content-Type":`application/json`},body:t}}),Re=e=>n.gen(function*(){yield*(yield*W).requirePermission(V.ENGINE.DLQ_READ);let e=yield*(yield*o).getStats();return{type:`dlq-stats`,status:200,headers:{"Content-Type":`application/json`},body:e}}),ze=({flowId:e})=>n.gen(function*(){let t=yield*s,r=yield*W,i=yield*r.getClientId();return yield*r.requirePermission(V.FLOW.STATUS),i&&(yield*n.logInfo(`[Flow] Getting flow data: ${e}, client: ${i}`)),{status:200,body:yield*t.getFlowData(e,i)}}),Be=({flowId:e,storageId:t,inputs:r})=>n.gen(function*(){let i=yield*s,a=yield*W,o=yield*C,c=yield*q,l=yield*a.getClientId();if(yield*a.requirePermission(V.FLOW.EXECUTE),l?(yield*n.logInfo(`[Flow] Executing flow: ${e}, storage: ${t}, client: ${l}`),yield*n.logInfo(JSON.stringify(r,null,2))):(yield*n.logInfo(`[Flow] Executing flow: ${e}, storage: ${t}`),yield*n.logInfo(`[Flow] Inputs: ${JSON.stringify(r,null,2)}`)),l){let t=yield*c.onFlowStart({clientId:l,operation:`flow`,metadata:{flowId:e}});if(t.action===`abort`)return yield*n.fail(new L(t.reason,t.code??`SUBSCRIPTION_REQUIRED`))}yield*n.logInfo(`[Flow] Calling flowServer.runFlow...`);let u=yield*i.runFlow({flowId:e,storageId:t,clientId:l,inputs:r}).pipe(n.tap(()=>n.logInfo(`[Flow] runFlow completed successfully`)),n.tapError(e=>n.logError(`[Flow] runFlow failed with error: ${e}`))),d=yield*a.getAuthContext();return d&&(yield*o.set(u.id,d)),yield*n.logInfo(`[Flow] Flow started with jobId: ${u.id}`),{status:200,body:u}}),Ve=({jobId:e})=>n.gen(function*(){let t=yield*s,r=yield*W,i=yield*C,a=yield*r.getClientId();if(yield*r.requirePermission(V.FLOW.STATUS),!e)throw Error(`No job id`);a&&(yield*n.logInfo(`[Flow] Getting job status: ${e}, client: ${a}`));let o=yield*t.getJobStatus(e);return(o.status===`completed`||o.status===`failed`)&&(yield*i.delete(e),a&&(yield*n.logInfo(`[Flow] Flow ${o.status}, cleared auth cache: ${e}`))),{status:200,body:o}}),He=({jobId:e,nodeId:t,newData:r})=>n.gen(function*(){let i=yield*s,a=yield*W,o=yield*C;yield*a.requirePermission(V.FLOW.EXECUTE);let c=yield*a.getClientId();if(c||=(yield*o.get(e))?.clientId??null,c&&(yield*n.logInfo(`[Flow] Continuing flow: jobId=${e}, nodeId=${t}, client: ${c}`)),r===void 0)throw Error(`Missing newData`);let l=yield*i.resumeFlow({jobId:e,nodeId:t,newData:r,clientId:c});return(l.status===`completed`||l.status===`failed`)&&(yield*o.delete(e),c&&(yield*n.logInfo(`[Flow] Flow ${l.status}, cleared auth cache: ${e}`))),{status:200,body:l}}),Ue=({jobId:e})=>n.gen(function*(){let t=yield*s,r=yield*W,i=yield*C;yield*r.requirePermission(V.FLOW.CANCEL);let a=yield*r.getClientId();a||=(yield*i.get(e))?.clientId??null,a&&(yield*n.logInfo(`[Flow] Pausing flow: jobId=${e}, client: ${a}`));let o=yield*t.pauseFlow(e,a);return a&&(yield*n.logInfo(`[Flow] Flow paused: ${e}, status: ${o.status}`)),{status:200,body:o}}),We=({jobId:e})=>n.gen(function*(){let t=yield*s,r=yield*W,i=yield*C,a=yield*q;if(yield*r.requirePermission(V.FLOW.CANCEL),!e)throw Error(`No job id`);let o=yield*r.getClientId();o||=(yield*i.get(e))?.clientId??null,o&&(yield*n.logInfo(`[Flow] Cancelling flow: jobId=${e}, client: ${o}`));let c=yield*t.cancelFlow(e,o);return yield*i.delete(e),o&&(yield*n.logInfo(`[Flow] Flow cancelled, cleared auth cache: ${e}`),yield*n.forkDaemon(a.onFlowComplete({clientId:o,operation:`flow`,metadata:{jobId:e,status:`cancelled`}}))),{status:200,body:c}}),Ge=Date.now();function Y(){return Date.now()-Ge}function X(){return new Date().toISOString()}function Ke(e){return{status:`healthy`,timestamp:X(),version:e?.version,uptime:Y()}}function qe(e){let t=[];if(e.storage&&t.push(e.storage.status),e.kvStore&&t.push(e.kvStore.status),t.includes(`unhealthy`))return`unhealthy`;let n=[...t];return e.eventBroadcaster&&n.push(e.eventBroadcaster.status),e.circuitBreaker&&n.push(e.circuitBreaker.status),e.deadLetterQueue&&n.push(e.deadLetterQueue.status),n.includes(`degraded`)?`degraded`:`healthy`}function Je(e){let t=Date.now();return n.succeed({status:`healthy`,latency:Date.now()-t,message:`Storage backend configured`,lastCheck:X()})}function Z(e){let t=Date.now();return n.succeed({status:`healthy`,latency:Date.now()-t,message:`KV store configured`,lastCheck:X()})}function Ye(e){let t=Date.now();return n.succeed({status:`healthy`,latency:Date.now()-t,message:`Event broadcaster configured`,lastCheck:X()})}function Xe(){return n.gen(function*(){let e=yield*n.serviceOption(te);if(a.isNone(e))return;let t=e.value,r=yield*n.either(t.getAllStats());if(r._tag===`Left`)return{status:`degraded`,openCircuits:0,totalCircuits:0};let i=r.right,o=Array.from(i.values()),s=o.filter(e=>e.state===`open`).length,c=o.length,l=`healthy`;return s>0&&(l=`degraded`),{status:l,openCircuits:s,totalCircuits:c,circuits:o.map(e=>({nodeType:e.nodeType,state:e.state,failureCount:e.failureCount,timeSinceLastStateChange:e.timeSinceLastStateChange}))}})}function Ze(){return n.gen(function*(){let e=yield*o.optional;if(a.isNone(e))return;let t=e.value,r=yield*n.either(t.getStats());if(r._tag===`Left`)return{status:`degraded`,pendingItems:0,exhaustedItems:0};let i=r.right,s=`healthy`;return i.byStatus.exhausted>0&&(s=`degraded`),{status:s,pendingItems:i.byStatus.pending,exhaustedItems:i.byStatus.exhausted,oldestItem:i.oldestItem?.toISOString()}})}function Qe(e={}){let t={...p,...e};return n.gen(function*(){let n={};return t.checkStorage&&(n.storage=yield*Je(t)),t.checkKvStore&&(n.kvStore=yield*Z(t)),t.checkEventBroadcaster&&(n.eventBroadcaster=yield*Ye(t)),{status:qe(n),timestamp:X(),version:e.version,uptime:Y(),components:n}})}function $e(e={}){let t={...p,...e};return n.gen(function*(){let n={};t.checkStorage&&(n.storage=yield*Je(t)),t.checkKvStore&&(n.kvStore=yield*Z(t)),t.checkEventBroadcaster&&(n.eventBroadcaster=yield*Ye(t));let r=yield*Xe();r&&(n.circuitBreaker=r);let i=yield*Ze();return i&&(n.deadLetterQueue=i),{status:qe(n),timestamp:X(),version:e.version,uptime:Y(),components:n}})}const et=(e,t)=>n.sync(()=>{let n=Ke(t);return g(e.acceptHeader)===`text`?{type:`health`,status:200,headers:{"Content-Type":`text/plain`},body:h(n.status)}:{type:`health`,status:200,headers:{"Content-Type":`application/json`},body:n}}),tt=(e,t)=>n.gen(function*(){yield*(yield*W).requirePermission(V.ENGINE.READINESS);let n=yield*Qe(t),r=g(e.acceptHeader),i=n.status===`unhealthy`?503:200;return r===`text`?{type:`health-ready`,status:i,headers:{"Content-Type":`text/plain`},body:h(n.status)}:{type:`health-ready`,status:i,headers:{"Content-Type":`application/json`},body:n}}),nt=(e,t)=>n.gen(function*(){yield*(yield*W).requirePermission(V.ENGINE.READINESS);let n=yield*$e(t);return g(e.acceptHeader)===`text`?{type:`health-components`,status:200,headers:{"Content-Type":`text/plain`},body:h(n.status)}:{type:`health-components`,status:200,headers:{"Content-Type":`application/json`},body:n}}),rt=e=>n.gen(function*(){let t=yield*b,r=yield*W,i=yield*C,a=yield*q,o=yield*r.getClientId();yield*r.requirePermission(V.UPLOAD.CREATE),o&&(yield*n.logInfo(`[Upload] Creating upload for client: ${o}`));let s=yield*n.sync(()=>_.safeParse(e.data));if(!s.success)return yield*n.fail(new N(`Invalid input file schema`));if(s.data.checksumAlgorithm&&!se(s.data.checksumAlgorithm))return yield*n.fail(new N(`Unsupported checksum algorithm: ${s.data.checksumAlgorithm}. Supported algorithms: sha256`));if(o){let e=yield*a.onUploadStart({clientId:o,operation:`upload`,metadata:{fileSize:s.data.size,mimeType:s.data.type,fileName:s.data.fileName}});if(e.action===`abort`)return yield*n.fail(new L(e.reason,e.code??`QUOTA_EXCEEDED`))}let c=yield*t.createUpload(s.data,o),l=yield*r.getAuthContext();return l&&(yield*i.set(c.id,l)),o&&(yield*n.logInfo(`[Upload] Upload created: ${c.id} for client: ${o}`)),{status:200,body:c}}),it=({storageId:e})=>n.gen(function*(){let t=yield*b,n=yield*W,r=yield*n.getClientId();return yield*n.requirePermission(V.UPLOAD.READ),{status:200,body:{storageId:e,capabilities:yield*t.getCapabilities(e,r),timestamp:new Date().toISOString()}}}),at=({uploadId:e})=>n.gen(function*(){let t=yield*b;return yield*(yield*W).requirePermission(V.UPLOAD.READ),{status:200,body:yield*t.getUpload(e)}}),ot=e=>n.gen(function*(){let t=yield*b,r=yield*W,i=yield*C,a=yield*y,o=yield*q,{uploadId:s,data:c}=e;yield*r.requirePermission(V.UPLOAD.CREATE);let l=yield*r.getClientId(),u=yield*r.getMetadata();if(!l){let e=yield*i.get(s);l=e?.clientId??null,u=e?.metadata??{}}l&&(yield*n.logInfo(`[Upload] Uploading chunk for upload: ${s}, client: ${l}`));let d=Date.now(),f=yield*t.uploadChunk(s,l,c);if(f.size&&f.offset>=f.size)if(yield*i.delete(s),l&&(yield*n.logInfo(`[Upload] Upload completed, cleared auth cache: ${s}`)),l&&f.size){yield*n.logInfo(`[Upload] Recording metrics for org: ${l}, size: ${f.size}`),yield*n.forkDaemon(a.recordUpload(l,f.size,u));let e=Date.now()-d;yield*n.forkDaemon(o.onUploadComplete({clientId:l,operation:`upload`,metadata:{uploadId:s,fileSize:f.size,duration:e,storageId:f.storage?.id,url:f.url,fileName:f.metadata?.fileName,flowContext:f.flow?{flowId:f.flow.flowId,jobId:f.flow.jobId}:void 0}}))}else yield*n.logWarning(`[Upload] Cannot record metrics - missing organizationId or size`);return l&&(yield*n.logInfo(`[Upload] Chunk uploaded for upload: ${s}, client: ${l}`)),{status:200,body:f}}),st=(e,t)=>n.gen(function*(){switch(e.type){case`create-upload`:return yield*rt(e);case`get-capabilities`:return yield*it(e);case`get-upload`:return yield*at(e);case`upload-chunk`:return yield*ot(e);case`get-flow`:return yield*ze(e);case`run-flow`:return yield*Be(e);case`job-status`:return yield*Ve(e);case`resume-flow`:return yield*He(e);case`pause-flow`:return yield*Ue(e);case`cancel-flow`:return yield*We(e);case`dlq-list`:return yield*je(e);case`dlq-get`:return yield*Me(e);case`dlq-retry`:return yield*Ne(e);case`dlq-retry-all`:return yield*Pe(e);case`dlq-delete`:return yield*Fe(e);case`dlq-resolve`:return yield*Ie(e);case`dlq-cleanup`:return yield*Le(e);case`dlq-stats`:return yield*Re(e);case`health`:return yield*et(e,t?.healthCheckConfig);case`health-ready`:return yield*tt(e,t?.healthCheckConfig);case`health-components`:return yield*nt(e,t?.healthCheckConfig);case`not-found`:return{status:404,headers:{"Content-Type":`application/json`},body:{error:`Not found`}};case`bad-request`:return{status:400,body:{error:`Bad request`,message:e.message}};case`method-not-allowed`:return{status:405,headers:{"Content-Type":`application/json`},body:{error:`Method not allowed`}};case`unsupported-content-type`:return{status:415,headers:{"Content-Type":`application/json`},body:{error:`Unsupported content type`}}}}),ct=async({flows:e,dataStore:t,kvStore:a,plugins:o=[],eventEmitter:s,eventBroadcaster:f=ce,withTracing:te=!1,observabilityLayer:p,baseUrl:m=`uploadista`,generateId:ie=oe,metricsLayer:h,bufferedDataStore:g,adapter:_,authCacheConfig:v,circuitBreaker:ae=!0,deadLetterQueue:se=!1,healthCheck:y,usageHooks:b})=>{let x=s??le(f),S=m.endsWith(`/`)?m.slice(0,-1):m,C=r.effect(l,n.succeed({getFlow:(t,n)=>e(t,n)}));if(!x)throw Error(`eventEmitter is required. Provide an event emitter layer in the configuration.`);let w=me({kvStore:a,eventEmitter:x,dataStore:await ne(t),bufferedDataStore:g,generateId:ie}),T=he({kvStore:a,eventEmitter:x,flowProvider:C,uploadEngine:w}),E=fe(v),D=h??ue,O=ae?ee.pipe(r.provide(a)):null,k=se?d.pipe(r.provide(re),r.provide(a)):null,A=J(b),j=r.effect(c,n.gen(function*(){let e=yield*q;return{onComplete:t=>e.onFlowComplete({clientId:t.clientId??``,operation:`flow`,metadata:{jobId:t.jobId,flowId:t.flowId,status:t.status===`completed`?`success`:`failed`}})}})).pipe(r.provide(A)),M=r.mergeAll(w,T,D,E,A,j,...o,...O?[O]:[],...k?[k]:[]),N=te?p??de:null,P=M,ge=N?r.merge(P,N):P,F=i.make(ge);return{handler:async e=>{let t=n.gen(function*(){let t=yield*_.extractRequest(e,{baseUrl:S}),i=null;if(_.runAuthMiddleware){let t=yield*_.runAuthMiddleware(e).pipe(n.timeout(`5 seconds`),n.catchAll(()=>(console.error(`Auth middleware timeout exceeded (5 seconds)`),n.succeed({_tag:`TimeoutError`}))),n.catchAllCause(e=>(console.error(`Auth middleware error:`,e),n.succeed({_tag:`AuthError`,error:e}))));if(t&&typeof t==`object`&&`_tag`in t&&t._tag===`TimeoutError`)return yield*_.sendResponse({status:503,headers:{"Content-Type":`application/json`},body:{error:`Authentication service unavailable`,message:`Authentication took too long to respond. Please try again.`}},e);if(t&&typeof t==`object`&&`_tag`in t&&t._tag===`AuthError`)return yield*_.sendResponse({status:500,headers:{"Content-Type":`application/json`},body:{error:`Internal Server Error`,message:`An error occurred during authentication`}},e);if(t===null)return yield*_.sendResponse({status:401,headers:{"Content-Type":`application/json`},body:{error:`Unauthorized`,message:`Invalid credentials`}},e);i=t}let a=G(i,{bypassAuth:!_.runAuthMiddleware}),s=[];if(_.extractWaitUntil){let t=_.extractWaitUntil(e);t&&s.push(r.succeed(u,t))}let c=r.mergeAll(a,E,D,A,...o,...s),l=O?r.merge(c,O):c,d=k?r.merge(l,k):l;if(t.type===`not-found`)return yield*_.sendResponse({type:`not-found`,status:404,headers:{"Content-Type":`application/json`},body:{error:`Not found`}},e);let f=yield*st(t,{healthCheckConfig:y}).pipe(n.provide(d));return yield*_.sendResponse(f,e)}).pipe(n.catchAll(t=>{let n=pe(t),r={code:n.code,message:n.message};n.details!==void 0&&(r.details=n.details);let i={status:n.status,headers:{"Content-Type":`application/json`},body:r};return _.sendResponse(i,e)}));return F.runPromise(t)},websocketHandler:await F.runPromise(_.webSocketHandler({baseUrl:S})),baseUrl:S,dispose:()=>F.dispose()}};async function lt(e){return ct(e)}function ut(e){return e}function dt(e){return e}const ft={ImagePlugin:{packageName:`@uploadista/flow-images-sharp`,variableName:`sharpImagePlugin`},ImageAiPlugin:{packageName:`@uploadista/flow-images-replicate`,variableName:`replicateImagePlugin`},ZipPlugin:{packageName:`@uploadista/flow-utility-zipjs`,variableName:`zipPlugin`},CredentialProvider:{packageName:`@uploadista/core`,variableName:`credentialProviderLayer`}};function pt(e){try{let t=e;if(t._tag)return t._tag;if(t.constructor?.name)return t.constructor.name;if(t.context?.services){let e=Array.from(t.context.services.keys());if(e.length>0){let t=e[0];if(t.key)return t.key}}return null}catch{return null}}function mt(e){return e.map(e=>pt(e)).filter(e=>e!==null)}function Q(e){let{plugins:t,expectedServices:n=[]}=e,r=mt(t),i=n.filter(e=>!r.includes(e));return i.length===0?{success:!0}:{success:!1,required:n,provided:r,missing:i,suggestions:i.map(e=>{let t=ft[e];return t?{name:e,packageName:t.packageName,importStatement:`import { ${t.variableName} } from '${t.packageName}';`}:null}).filter(e=>e!==null)}}function $(e){let t=[`Server initialization failed: Missing required plugins`,``,`Required: ${e.required.join(`, `)}`,`Provided: ${e.provided.length>0?e.provided.join(`, `):`(none)`}`,`Missing: ${e.missing.join(`, `)}`,``];if(e.suggestions.length>0){t.push(`Add the missing plugins to your configuration:`),t.push(``);for(let n of e.suggestions)t.push(` ${n.importStatement}`);t.push(``),t.push(` const server = await createUploadistaServer({`),t.push(` plugins: [${[...e.provided,...e.missing.map(e=>ft[e]?.variableName||e)].join(`, `)}],`),t.push(` // ...`),t.push(` });`)}else t.push(`Note: Could not determine package names for missing plugins.`),t.push(`Please ensure all required plugin layers are provided.`);return t.join(`
2
- `)}function ht(e){return n.sync(()=>{let t=Q(e);if(!t.success){let e=$(t);throw Error(e)}})}function gt(e){let t=Q(e);if(!t.success){let e=$(t);throw Error(e)}}const _t=(e,t,r)=>n.gen(function*(){if(!t){yield*n.sync(()=>{r.send(JSON.stringify({type:`error`,message:`Job ID is required for flow event subscription`,code:`MISSING_JOB_ID`}))});return}yield*e.subscribeToFlowEvents(t,r)}),vt=(e,t)=>n.gen(function*(){t&&(yield*e.unsubscribeFromFlowEvents(t))}),yt=(e,t,r)=>n.gen(function*(){if(!t){yield*n.sync(()=>{r.send(JSON.stringify({type:`error`,message:`Upload ID is required for upload event subscription`,code:`MISSING_UPLOAD_ID`}))});return}yield*e.subscribeToUploadEvents(t,r)}),bt=(e,t)=>n.gen(function*(){t&&(yield*e.unsubscribeFromUploadEvents(t))}),xt=(e,t,r)=>{let{connection:i,isFlowRoute:a,isUploadRoute:o,jobId:s,uploadId:c,eventId:l}=e;return n.gen(function*(){a&&(yield*_t(r,s,i)),o&&(yield*yt(t,c,i)),i.send(JSON.stringify({type:`connection`,message:`Uploadista WebSocket connected`,id:l,jobId:s,uploadId:c,timestamp:new Date().toISOString()}))}).pipe(n.catchAll(e=>n.sync(()=>{console.error(`Error subscribing to events:`,e);let t=e instanceof S?e.body:`Failed to subscribe to events`;i.send(JSON.stringify({type:`error`,message:t,code:e instanceof S?e.code:`SUBSCRIPTION_ERROR`}))})))},St=(e,t)=>n.sync(()=>{try{JSON.parse(e).type===`ping`&&t.send(JSON.stringify({type:`pong`,timestamp:new Date().toISOString()}))}catch(e){console.error(`Error handling WebSocket message:`,e),t.send(JSON.stringify({type:`error`,message:`Invalid message format`}))}}),Ct=(e,t,r)=>{let{isFlowRoute:i,isUploadRoute:a,jobId:o,uploadId:s}=e;return n.gen(function*(){i&&(yield*vt(r,o)),a&&(yield*bt(t,s))}).pipe(n.catchAll(e=>n.sync(()=>{console.error(`Error unsubscribing from events:`,e instanceof S?e.body:e)})))},wt=(e,t)=>n.sync(()=>{console.error(`WebSocket error for event ${t}:`,e)});export{M as AdapterError,C as AuthCacheService,fe as AuthCacheServiceLive,W as AuthContextService,G as AuthContextServiceLive,I as AuthenticationRequiredError,ye as AuthorizationError,ge as BadRequestError,ke as DEFAULT_USAGE_HOOK_TIMEOUT,R as ENGINE_PERMISSIONS,z as FLOW_PERMISSIONS,w as NoAuthCacheServiceLive,De as NoAuthContextServiceLive,Ae as NoUsageHookServiceLive,P as NotFoundError,be as OrganizationMismatchError,V as PERMISSIONS,H as PERMISSION_HIERARCHY,Se as PERMISSION_SETS,L as QuotaExceededError,B as UPLOAD_PERMISSIONS,q as UsageHookService,J as UsageHookServiceLive,N as ValidationError,Oe as abortResult,K as continueResult,xe as createAuthorizationErrorResponseBody,F as createErrorResponseBody,he as createFlowEngineLayer,ve as createGenericErrorResponseBody,lt as createTypeSafeServer,me as createUploadEngineLayer,_e as createUploadistaErrorResponseBody,ct as createUploadistaServer,ut as defineFlow,dt as defineSimpleFlow,Ee as expandPermission,j as extractFlowAndStorageId,A as extractJobAndNodeId,k as extractJobIdFromStatus,mt as extractServiceIdentifiers,$ as formatPluginValidationError,e as getAuthCredentials,E as getLastSegment,O as getRouteSegments,pe as handleFlowError,Ct as handleWebSocketClose,wt as handleWebSocketError,St as handleWebSocketMessage,xt as handleWebSocketOpen,Te as hasAllPermissions,we as hasAnyPermission,D as hasBasePath,U as hasPermission,Ce as matchesPermission,T as parseUrlSegments,Q as validatePluginRequirements,ht as validatePluginRequirementsEffect,gt as validatePluginsOrThrow};
1
+ import{getAuthCredentials as e}from"./auth/index.mjs";import{Context as t,Effect as n,Layer as r,ManagedRuntime as i,Option as a}from"effect";import{DeadLetterQueueService as o,FlowEngine as s,FlowLifecycleHook as c,FlowProvider as l,FlowQueueService as u,FlowWaitUntil as d,deadLetterQueueService as f,flowEngine as p,kvCircuitBreakerStoreLayer as ee}from"@uploadista/core/flow";import{CircuitBreakerStoreService as te,DEFAULT_HEALTH_CHECK_CONFIG as m,createDataStoreLayer as ne,deadLetterQueueKvStore as re,flowEventEmitter as h,flowJobKvStore as ie,formatHealthAsText as g,getHealthResponseFormat as _,inputFileSchema as v,uploadEventEmitter as ae,uploadFileKvStore as y}from"@uploadista/core/types";import{GenerateIdLive as oe,isSupportedAlgorithm as se}from"@uploadista/core/utils";import{memoryEventBroadcaster as ce}from"@uploadista/event-broadcaster-memory";import{webSocketEventEmitter as le}from"@uploadista/event-emitter-websocket";import{MetricsService as b,NoOpMetricsServiceLive as ue,NodeSdkLive as de}from"@uploadista/observability";import{UploadEngine as x,uploadEngine as fe}from"@uploadista/core/upload";import{UploadistaError as S}from"@uploadista/core/errors";var C=class extends t.Tag(`AuthCacheService`)(){};const pe=(e={})=>{let t=e.maxSize??1e4,i=e.ttl??36e5,a=new Map,o=()=>{let e=Date.now();for(let[t,n]of a.entries())e-n.timestamp>i&&a.delete(t)},s=()=>{if(a.size<=t)return;let e=null,n=1/0;for(let[t,r]of a.entries())r.timestamp<n&&(n=r.timestamp,e=t);e&&a.delete(e)};return r.succeed(C,{set:(e,t)=>n.sync(()=>{a.size%100==0&&o(),a.set(e,{authContext:t,timestamp:Date.now()}),s()}),get:e=>n.sync(()=>{let t=a.get(e);return t?Date.now()-t.timestamp>i?(a.delete(e),null):t.authContext:null}),delete:e=>n.sync(()=>{a.delete(e)}),clear:()=>n.sync(()=>{a.clear()}),size:()=>n.sync(()=>a.size)})},me=r.succeed(C,{set:()=>n.void,get:()=>n.succeed(null),delete:()=>n.void,clear:()=>n.void,size:()=>n.succeed(0)}),w=e=>e.split(`/`).filter(Boolean),T=e=>{let t=w(e);return t[t.length-1]},E=(e,t)=>e.includes(`${t}/api/`),D=(e,t)=>e.replace(`${t}/api/`,``).split(`/`).filter(Boolean),he=e=>{let t=500,n=`UNKNOWN_ERROR`,r=`Internal server error`,i;if(typeof e==`object`&&e){let a=e;if(`code`in a&&typeof a.code==`string`&&(n=a.code),`message`in a&&typeof a.message==`string`?r=a.message:`body`in a&&typeof a.body==`string`&&(r=a.body),`details`in a&&(i=a.details),`status`in a&&typeof a.status==`number`)t=a.status;else if(`code`in a)switch(a.code){case`FILE_NOT_FOUND`:case`FLOW_JOB_NOT_FOUND`:case`UPLOAD_ID_NOT_FOUND`:t=404;break;case`FLOW_JOB_ERROR`:case`VALIDATION_ERROR`:case`INVALID_METADATA`:case`INVALID_LENGTH`:case`ABORTED`:case`INVALID_TERMINATION`:t=400;break;case`INVALID_OFFSET`:t=409;break;case`ERR_SIZE_EXCEEDED`:case`ERR_MAX_SIZE_EXCEEDED`:t=413;break;case`FILE_NO_LONGER_EXISTS`:t=410;break;case`MISSING_OFFSET`:case`INVALID_CONTENT_TYPE`:t=403;break;default:t=500}`message`in a&&a.message===`Invalid JSON body`&&(t=400,n=`VALIDATION_ERROR`)}let a={status:t,code:n,message:r};return i!==void 0&&(a.details=i),a},O=e=>e[e.length-2],k=e=>({jobId:e[e.length-3],nodeId:e[e.length-1]}),A=e=>({storageId:e.pop(),flowId:e.pop()}),ge=({kvStore:e,eventEmitter:t,dataStore:n,bufferedDataStore:i,generateId:a})=>{let o=r.provide(y,e),s=r.provide(n,o),c=i?r.provide(i,o):r.empty,l=r.provide(ae,t),u=r.mergeAll(s,o,l,...a?[a]:[],c);return r.provide(fe,u)},_e=({kvStore:e,eventEmitter:t,flowProvider:n,uploadEngine:i})=>{let a=r.provide(ie,e),o=r.provide(h,t),s=r.mergeAll(n,o,a,i);return r.provide(p,s)};var j=class extends Error{constructor(e,t=500,n=`INTERNAL_ERROR`){super(e),this.statusCode=t,this.errorCode=n,this.name=`AdapterError`}},M=class extends j{constructor(e){super(e,400,`VALIDATION_ERROR`),this.name=`ValidationError`}},ve=class extends j{constructor(e){super(`${e} not found`,404,`NOT_FOUND`),this.name=`NotFoundError`}},N=class extends j{constructor(e){super(e,400,`BAD_REQUEST`),this.name=`BadRequestError`}};const P=e=>({error:e.message,code:e.errorCode,timestamp:new Date().toISOString()}),ye=e=>{let t={error:e.body,code:e.code,timestamp:new Date().toISOString()};return e.details!==void 0&&(t.details=e.details),t},F=(e=`Internal server error`)=>({error:e,code:`INTERNAL_ERROR`,timestamp:new Date().toISOString()});var I=class extends j{requiredPermission;constructor(e,t){super(t??`Permission denied: ${e} required`,403,`PERMISSION_DENIED`),this.name=`AuthorizationError`,this.requiredPermission=e}},L=class extends j{constructor(e=`Authentication required`){super(e,401,`AUTHENTICATION_REQUIRED`),this.name=`AuthenticationRequiredError`}},be=class extends j{constructor(e=`Access denied: resource belongs to another organization`){super(e,403,`ORGANIZATION_MISMATCH`),this.name=`OrganizationMismatchError`}},R=class extends j{constructor(e=`Quota exceeded`,t=`QUOTA_EXCEEDED`){super(e,402,t),this.name=`QuotaExceededError`}};const xe=e=>({error:e.message,code:e.errorCode,requiredPermission:e.requiredPermission,timestamp:new Date().toISOString()}),z={ALL:`engine:*`,HEALTH:`engine:health`,READINESS:`engine:readiness`,METRICS:`engine:metrics`,DLQ:`engine:dlq`,DLQ_READ:`engine:dlq:read`,DLQ_WRITE:`engine:dlq:write`},B={ALL:`flow:*`,EXECUTE:`flow:execute`,CANCEL:`flow:cancel`,STATUS:`flow:status`},V={ALL:`upload:*`,CREATE:`upload:create`,READ:`upload:read`,CANCEL:`upload:cancel`},H={ENGINE:z,FLOW:B,UPLOAD:V},Se={ADMIN:[z.ALL],ORGANIZATION_OWNER:[B.ALL,V.ALL],ORGANIZATION_MEMBER:[B.ALL,V.ALL],API_KEY:[B.EXECUTE,V.CREATE]},U={[z.DLQ]:[z.DLQ_READ,z.DLQ_WRITE]},Ce=(e,t)=>{if(e===t)return!0;if(e.endsWith(`:*`)){let n=e.slice(0,-1);if(t.startsWith(n))return!0}return!!U[e]?.includes(t)},W=(e,t)=>e.some(e=>Ce(e,t)),we=(e,t)=>t.some(t=>W(e,t)),Te=(e,t)=>t.every(t=>W(e,t)),Ee=e=>{let t=[e],n=U[e];return n&&t.push(...n),t};var G=class extends t.Tag(`AuthContextService`)(){};const K=(e,t)=>{let i=e?.permissions??[],a=t?.bypassAuth??!1;return r.succeed(G,{getClientId:()=>n.succeed(e?.clientId??null),getMetadata:()=>n.succeed(e?.metadata??{}),hasPermission:e=>a?n.succeed(!0):n.succeed(W(i,e)),hasAnyPermission:e=>a?n.succeed(!0):n.succeed(we(i,e)),requirePermission:t=>n.gen(function*(){if(a){yield*n.logDebug(`[Auth] Bypass mode: permission '${t}' auto-granted`);return}if(!e)return yield*n.logDebug(`[Auth] Permission check failed: authentication required for '${t}'`),yield*n.fail(new L);if(!W(i,t))return yield*n.logDebug(`[Auth] Permission denied: '${t}' for client '${e.clientId}'`),yield*n.fail(new I(t));yield*n.logDebug(`[Auth] Permission granted: '${t}' for client '${e.clientId}'`)}),requireAuthentication:()=>e?n.succeed(e):n.fail(new L),getPermissions:()=>n.succeed(i),getAuthContext:()=>n.succeed(e)})},De=K(null),q=()=>({action:`continue`}),Oe=(e,t)=>({action:`abort`,reason:e,code:t}),ke=5e3;var J=class extends t.Tag(`UsageHookService`)(){};const Y=e=>{let t=e?.hooks,i=e?.timeout??ke;return r.succeed(J,{onUploadStart:e=>t?.onUploadStart?t.onUploadStart(e).pipe(n.timeout(i),n.map(e=>e??q()),n.catchAll(e=>n.gen(function*(){return yield*n.logWarning(`onUploadStart hook failed: ${e}. Proceeding with upload.`),q()}))):n.succeed(q()),onUploadComplete:e=>t?.onUploadComplete?t.onUploadComplete(e).pipe(n.timeout(i),n.asVoid,n.catchAll(e=>n.logWarning(`onUploadComplete hook failed: ${e}. Upload already completed.`))):n.void,onFlowStart:e=>t?.onFlowStart?t.onFlowStart(e).pipe(n.timeout(i),n.map(e=>e??q()),n.catchAll(e=>n.gen(function*(){return yield*n.logWarning(`onFlowStart hook failed: ${e}. Proceeding with flow.`),q()}))):n.succeed(q()),onFlowComplete:e=>t?.onFlowComplete?t.onFlowComplete(e).pipe(n.timeout(i),n.asVoid,n.catchAll(e=>n.logWarning(`onFlowComplete hook failed: ${e}. Flow already completed.`))):n.void})},Ae=Y(),je=e=>n.gen(function*(){yield*(yield*G).requirePermission(H.ENGINE.DLQ_READ);let t=yield*(yield*o).list(e.options);return{type:`dlq-list`,status:200,headers:{"Content-Type":`application/json`},body:t}}),Me=e=>n.gen(function*(){yield*(yield*G).requirePermission(H.ENGINE.DLQ_READ);let t=yield*(yield*o).get(e.itemId);return{type:`dlq-get`,status:200,headers:{"Content-Type":`application/json`},body:t}}),Ne=e=>n.gen(function*(){return yield*(yield*G).requirePermission(H.ENGINE.DLQ_WRITE),yield*(yield*o).markRetrying(e.itemId),{type:`dlq-retry`,status:200,headers:{"Content-Type":`application/json`},body:{success:!0}}}),Pe=e=>n.gen(function*(){yield*(yield*G).requirePermission(H.ENGINE.DLQ_WRITE);let t=yield*o,{items:r}=yield*t.list({status:e.options?.status,flowId:e.options?.flowId}),i=0,a=0;for(let e of r)(yield*n.either(t.markRetrying(e.id)))._tag===`Right`?i++:a++;return{type:`dlq-retry-all`,status:200,headers:{"Content-Type":`application/json`},body:{retried:r.length,succeeded:i,failed:a}}}),Fe=e=>n.gen(function*(){return yield*(yield*G).requirePermission(H.ENGINE.DLQ_WRITE),yield*(yield*o).delete(e.itemId),{type:`dlq-delete`,status:200,headers:{"Content-Type":`application/json`},body:{success:!0}}}),Ie=e=>n.gen(function*(){yield*(yield*G).requirePermission(H.ENGINE.DLQ_WRITE);let t=yield*(yield*o).markResolved(e.itemId);return{type:`dlq-resolve`,status:200,headers:{"Content-Type":`application/json`},body:t}}),Le=e=>n.gen(function*(){yield*(yield*G).requirePermission(H.ENGINE.DLQ_WRITE);let t=yield*(yield*o).cleanup(e.options);return{type:`dlq-cleanup`,status:200,headers:{"Content-Type":`application/json`},body:t}}),Re=e=>n.gen(function*(){yield*(yield*G).requirePermission(H.ENGINE.DLQ_READ);let e=yield*(yield*o).getStats();return{type:`dlq-stats`,status:200,headers:{"Content-Type":`application/json`},body:e}}),ze=({flowId:e})=>n.gen(function*(){let t=yield*s,r=yield*G,i=yield*r.getClientId();return yield*r.requirePermission(H.FLOW.STATUS),i&&(yield*n.logInfo(`[Flow] Getting flow data: ${e}, client: ${i}`)),{status:200,body:yield*t.getFlowData(e,i)}}),Be=({flowId:e,storageId:t,inputs:r})=>n.gen(function*(){let i=yield*s,a=yield*G,o=yield*C,c=yield*J,l=yield*a.getClientId();if(yield*a.requirePermission(H.FLOW.EXECUTE),l?(yield*n.logInfo(`[Flow] Executing flow: ${e}, storage: ${t}, client: ${l}`),yield*n.logInfo(JSON.stringify(r,null,2))):(yield*n.logInfo(`[Flow] Executing flow: ${e}, storage: ${t}`),yield*n.logInfo(`[Flow] Inputs: ${JSON.stringify(r,null,2)}`)),l){let t=yield*c.onFlowStart({clientId:l,operation:`flow`,metadata:{flowId:e}});if(t.action===`abort`)return yield*n.fail(new R(t.reason,t.code??`SUBSCRIPTION_REQUIRED`))}yield*n.logInfo(`[Flow] Calling flowServer.runFlow...`);let u=yield*i.runFlow({flowId:e,storageId:t,clientId:l,inputs:r}).pipe(n.tap(()=>n.logInfo(`[Flow] runFlow completed successfully`)),n.tapError(e=>n.logError(`[Flow] runFlow failed with error: ${e}`))),d=yield*a.getAuthContext();return d&&(yield*o.set(u.id,d)),yield*n.logInfo(`[Flow] Flow started with jobId: ${u.id}`),{status:200,body:u}}),Ve=({jobId:e})=>n.gen(function*(){let t=yield*s,r=yield*G,i=yield*C,a=yield*r.getClientId();if(yield*r.requirePermission(H.FLOW.STATUS),!e)throw Error(`No job id`);a&&(yield*n.logInfo(`[Flow] Getting job status: ${e}, client: ${a}`));let o=yield*t.getJobStatus(e);return(o.status===`completed`||o.status===`failed`)&&(yield*i.delete(e),a&&(yield*n.logInfo(`[Flow] Flow ${o.status}, cleared auth cache: ${e}`))),{status:200,body:o}}),He=({jobId:e,nodeId:t,newData:r})=>n.gen(function*(){let i=yield*s,a=yield*G,o=yield*C;yield*a.requirePermission(H.FLOW.EXECUTE);let c=yield*a.getClientId();if(c||=(yield*o.get(e))?.clientId??null,c&&(yield*n.logInfo(`[Flow] Continuing flow: jobId=${e}, nodeId=${t}, client: ${c}`)),r===void 0)throw Error(`Missing newData`);let l=yield*i.resumeFlow({jobId:e,nodeId:t,newData:r,clientId:c});return(l.status===`completed`||l.status===`failed`)&&(yield*o.delete(e),c&&(yield*n.logInfo(`[Flow] Flow ${l.status}, cleared auth cache: ${e}`))),{status:200,body:l}}),Ue=({jobId:e})=>n.gen(function*(){let t=yield*s,r=yield*G,i=yield*C;yield*r.requirePermission(H.FLOW.CANCEL);let a=yield*r.getClientId();a||=(yield*i.get(e))?.clientId??null,a&&(yield*n.logInfo(`[Flow] Pausing flow: jobId=${e}, client: ${a}`));let o=yield*t.pauseFlow(e,a);return a&&(yield*n.logInfo(`[Flow] Flow paused: ${e}, status: ${o.status}`)),{status:200,body:o}}),We=({jobId:e})=>n.gen(function*(){let t=yield*s,r=yield*G,i=yield*C,a=yield*J;if(yield*r.requirePermission(H.FLOW.CANCEL),!e)throw Error(`No job id`);let o=yield*r.getClientId();o||=(yield*i.get(e))?.clientId??null,o&&(yield*n.logInfo(`[Flow] Cancelling flow: jobId=${e}, client: ${o}`));let c=yield*t.cancelFlow(e,o);return yield*i.delete(e),o&&(yield*n.logInfo(`[Flow] Flow cancelled, cleared auth cache: ${e}`),yield*n.forkDaemon(a.onFlowComplete({clientId:o,operation:`flow`,metadata:{jobId:e,status:`cancelled`}}))),{status:200,body:c}}),Ge=Date.now();function X(){return Date.now()-Ge}function Z(){return new Date().toISOString()}function Ke(e){return{status:`healthy`,timestamp:Z(),version:e?.version,uptime:X()}}function qe(e){let t=[];if(e.storage&&t.push(e.storage.status),e.kvStore&&t.push(e.kvStore.status),t.includes(`unhealthy`))return`unhealthy`;let n=[...t];return e.eventBroadcaster&&n.push(e.eventBroadcaster.status),e.circuitBreaker&&n.push(e.circuitBreaker.status),e.deadLetterQueue&&n.push(e.deadLetterQueue.status),n.includes(`degraded`)?`degraded`:`healthy`}function Je(e){let t=Date.now();return n.succeed({status:`healthy`,latency:Date.now()-t,message:`Storage backend configured`,lastCheck:Z()})}function Ye(e){let t=Date.now();return n.succeed({status:`healthy`,latency:Date.now()-t,message:`KV store configured`,lastCheck:Z()})}function Xe(e){let t=Date.now();return n.succeed({status:`healthy`,latency:Date.now()-t,message:`Event broadcaster configured`,lastCheck:Z()})}function Ze(){return n.gen(function*(){let e=yield*n.serviceOption(te);if(a.isNone(e))return;let t=e.value,r=yield*n.either(t.getAllStats());if(r._tag===`Left`)return{status:`degraded`,openCircuits:0,totalCircuits:0};let i=r.right,o=Array.from(i.values()),s=o.filter(e=>e.state===`open`).length,c=o.length,l=`healthy`;return s>0&&(l=`degraded`),{status:l,openCircuits:s,totalCircuits:c,circuits:o.map(e=>({nodeType:e.nodeType,state:e.state,failureCount:e.failureCount,timeSinceLastStateChange:e.timeSinceLastStateChange}))}})}function Qe(){return n.gen(function*(){let e=yield*o.optional;if(a.isNone(e))return;let t=e.value,r=yield*n.either(t.getStats());if(r._tag===`Left`)return{status:`degraded`,pendingItems:0,exhaustedItems:0};let i=r.right,s=`healthy`;return i.byStatus.exhausted>0&&(s=`degraded`),{status:s,pendingItems:i.byStatus.pending,exhaustedItems:i.byStatus.exhausted,oldestItem:i.oldestItem?.toISOString()}})}function $e(e={}){let t={...m,...e};return n.gen(function*(){let n={};return t.checkStorage&&(n.storage=yield*Je(t)),t.checkKvStore&&(n.kvStore=yield*Ye(t)),t.checkEventBroadcaster&&(n.eventBroadcaster=yield*Xe(t)),{status:qe(n),timestamp:Z(),version:e.version,uptime:X(),components:n}})}function et(e={}){let t={...m,...e};return n.gen(function*(){let n={};t.checkStorage&&(n.storage=yield*Je(t)),t.checkKvStore&&(n.kvStore=yield*Ye(t)),t.checkEventBroadcaster&&(n.eventBroadcaster=yield*Xe(t));let r=yield*Ze();r&&(n.circuitBreaker=r);let i=yield*Qe();return i&&(n.deadLetterQueue=i),{status:qe(n),timestamp:Z(),version:e.version,uptime:X(),components:n}})}const tt=(e,t)=>n.sync(()=>{let n=Ke(t);return _(e.acceptHeader)===`text`?{type:`health`,status:200,headers:{"Content-Type":`text/plain`},body:g(n.status)}:{type:`health`,status:200,headers:{"Content-Type":`application/json`},body:n}}),nt=(e,t)=>n.gen(function*(){yield*(yield*G).requirePermission(H.ENGINE.READINESS);let n=yield*$e(t),r=_(e.acceptHeader),i=n.status===`unhealthy`?503:200;return r===`text`?{type:`health-ready`,status:i,headers:{"Content-Type":`text/plain`},body:g(n.status)}:{type:`health-ready`,status:i,headers:{"Content-Type":`application/json`},body:n}}),rt=(e,t)=>n.gen(function*(){yield*(yield*G).requirePermission(H.ENGINE.READINESS);let n=yield*et(t);return _(e.acceptHeader)===`text`?{type:`health-components`,status:200,headers:{"Content-Type":`text/plain`},body:g(n.status)}:{type:`health-components`,status:200,headers:{"Content-Type":`application/json`},body:n}}),it=e=>n.gen(function*(){let t=yield*x,r=yield*G,i=yield*C,a=yield*J,o=yield*r.getClientId();yield*r.requirePermission(H.UPLOAD.CREATE),o&&(yield*n.logInfo(`[Upload] Creating upload for client: ${o}`));let s=yield*n.sync(()=>v.safeParse(e.data));if(!s.success)return yield*n.fail(new M(`Invalid input file schema`));if(s.data.checksumAlgorithm&&!se(s.data.checksumAlgorithm))return yield*n.fail(new M(`Unsupported checksum algorithm: ${s.data.checksumAlgorithm}. Supported algorithms: sha256`));if(o){let e=yield*a.onUploadStart({clientId:o,operation:`upload`,metadata:{fileSize:s.data.size,mimeType:s.data.type,fileName:s.data.fileName}});if(e.action===`abort`)return yield*n.fail(new R(e.reason,e.code??`QUOTA_EXCEEDED`))}let c=yield*t.createUpload(s.data,o),l=yield*r.getAuthContext();return l&&(yield*i.set(c.id,l)),o&&(yield*n.logInfo(`[Upload] Upload created: ${c.id} for client: ${o}`)),{status:200,body:c}}),at=({storageId:e})=>n.gen(function*(){let t=yield*x,n=yield*G,r=yield*n.getClientId();return yield*n.requirePermission(H.UPLOAD.READ),{status:200,body:{storageId:e,capabilities:yield*t.getCapabilities(e,r),timestamp:new Date().toISOString()}}}),ot=({uploadId:e})=>n.gen(function*(){let t=yield*x;return yield*(yield*G).requirePermission(H.UPLOAD.READ),{status:200,body:yield*t.getUpload(e)}}),st=e=>n.gen(function*(){let t=yield*x,r=yield*G,i=yield*C,a=yield*b,o=yield*J,{uploadId:s,data:c}=e;yield*r.requirePermission(H.UPLOAD.CREATE);let l=yield*r.getClientId(),u=yield*r.getMetadata();if(!l){let e=yield*i.get(s);l=e?.clientId??null,u=e?.metadata??{}}l&&(yield*n.logInfo(`[Upload] Uploading chunk for upload: ${s}, client: ${l}`));let d=Date.now(),f=yield*t.uploadChunk(s,l,c);if(f.size&&f.offset>=f.size)if(yield*i.delete(s),l&&(yield*n.logInfo(`[Upload] Upload completed, cleared auth cache: ${s}`)),l&&f.size){yield*n.logInfo(`[Upload] Recording metrics for org: ${l}, size: ${f.size}`),yield*n.forkDaemon(a.recordUpload(l,f.size,u));let e=Date.now()-d;yield*n.forkDaemon(o.onUploadComplete({clientId:l,operation:`upload`,metadata:{uploadId:s,fileSize:f.size,duration:e,storageId:f.storage?.id,url:f.url,fileName:f.metadata?.fileName,flowContext:f.flow?{flowId:f.flow.flowId,jobId:f.flow.jobId}:void 0}}))}else yield*n.logWarning(`[Upload] Cannot record metrics - missing organizationId or size`);return l&&(yield*n.logInfo(`[Upload] Chunk uploaded for upload: ${s}, client: ${l}`)),{status:200,body:f}}),ct=(e,t)=>n.gen(function*(){switch(e.type){case`create-upload`:return yield*it(e);case`get-capabilities`:return yield*at(e);case`get-upload`:return yield*ot(e);case`upload-chunk`:return yield*st(e);case`get-flow`:return yield*ze(e);case`run-flow`:return yield*Be(e);case`job-status`:return yield*Ve(e);case`resume-flow`:return yield*He(e);case`pause-flow`:return yield*Ue(e);case`cancel-flow`:return yield*We(e);case`dlq-list`:return yield*je(e);case`dlq-get`:return yield*Me(e);case`dlq-retry`:return yield*Ne(e);case`dlq-retry-all`:return yield*Pe(e);case`dlq-delete`:return yield*Fe(e);case`dlq-resolve`:return yield*Ie(e);case`dlq-cleanup`:return yield*Le(e);case`dlq-stats`:return yield*Re(e);case`health`:return yield*tt(e,t?.healthCheckConfig);case`health-ready`:return yield*nt(e,t?.healthCheckConfig);case`health-components`:return yield*rt(e,t?.healthCheckConfig);case`not-found`:return{status:404,headers:{"Content-Type":`application/json`},body:{error:`Not found`}};case`bad-request`:return{status:400,body:{error:`Bad request`,message:e.message}};case`method-not-allowed`:return{status:405,headers:{"Content-Type":`application/json`},body:{error:`Method not allowed`}};case`unsupported-content-type`:return{status:415,headers:{"Content-Type":`application/json`},body:{error:`Unsupported content type`}}}}),lt=async({flows:e,dataStore:t,kvStore:a,plugins:o=[],eventEmitter:s,eventBroadcaster:p=ce,withTracing:te=!1,observabilityLayer:m,baseUrl:h=`uploadista`,generateId:ie=oe,metricsLayer:g,bufferedDataStore:_,adapter:v,authCacheConfig:ae,circuitBreaker:y=!0,deadLetterQueue:se=!1,flowQueue:b,healthCheck:x,usageHooks:fe})=>{let S=s??le(p),C=h.endsWith(`/`)?h.slice(0,-1):h,me=r.effect(l,n.succeed({getFlow:(t,n)=>e(t,n)}));if(!S)throw Error(`eventEmitter is required. Provide an event emitter layer in the configuration.`);let w=ge({kvStore:a,eventEmitter:S,dataStore:await ne(t),bufferedDataStore:_,generateId:ie}),T=_e({kvStore:a,eventEmitter:S,flowProvider:me,uploadEngine:w}),E=pe(ae),D=g??ue,O=y?ee.pipe(r.provide(a)):null,k=se?f.pipe(r.provide(re),r.provide(a)):null,A=b?(()=>{let e=b===!0?{}:b.config??{},t=b===!0?void 0:b.store;return t?u.make(e,t).pipe(r.provide(T)):u.fromBaseKvStore(e).pipe(r.provide(T),r.provide(a))})():null,j=Y(fe),M=r.effect(c,n.gen(function*(){let e=yield*J;return{onComplete:t=>e.onFlowComplete({clientId:t.clientId??``,operation:`flow`,metadata:{jobId:t.jobId,flowId:t.flowId,status:t.status===`completed`?`success`:`failed`}})}})).pipe(r.provide(j)),ve=r.mergeAll(w,T,D,E,j,M,...o,...O?[O]:[],...k?[k]:[],...A?[A]:[]),N=te?m??de:null,P=ve,ye=N?r.merge(P,N):P,F=i.make(ye);return{handler:async e=>{let t=n.gen(function*(){let t=yield*v.extractRequest(e,{baseUrl:C}),i=null;if(v.runAuthMiddleware){let t=yield*v.runAuthMiddleware(e).pipe(n.timeout(`5 seconds`),n.catchAll(()=>(console.error(`Auth middleware timeout exceeded (5 seconds)`),n.succeed({_tag:`TimeoutError`}))),n.catchAllCause(e=>(console.error(`Auth middleware error:`,e),n.succeed({_tag:`AuthError`,error:e}))));if(t&&typeof t==`object`&&`_tag`in t&&t._tag===`TimeoutError`)return yield*v.sendResponse({status:503,headers:{"Content-Type":`application/json`},body:{error:`Authentication service unavailable`,message:`Authentication took too long to respond. Please try again.`}},e);if(t&&typeof t==`object`&&`_tag`in t&&t._tag===`AuthError`)return yield*v.sendResponse({status:500,headers:{"Content-Type":`application/json`},body:{error:`Internal Server Error`,message:`An error occurred during authentication`}},e);if(t===null)return yield*v.sendResponse({status:401,headers:{"Content-Type":`application/json`},body:{error:`Unauthorized`,message:`Invalid credentials`}},e);i=t}let a=K(i,{bypassAuth:!v.runAuthMiddleware}),s=[];if(v.extractWaitUntil){let t=v.extractWaitUntil(e);t&&s.push(r.succeed(d,t))}let c=r.mergeAll(a,E,D,j,...o,...s),l=O?r.merge(c,O):c,u=k?r.merge(l,k):l,f=A?r.merge(u,A):u;if(t.type===`not-found`)return yield*v.sendResponse({type:`not-found`,status:404,headers:{"Content-Type":`application/json`},body:{error:`Not found`}},e);let p=yield*ct(t,{healthCheckConfig:x}).pipe(n.provide(f));return yield*v.sendResponse(p,e)}).pipe(n.catchAll(t=>{let n=he(t),r={code:n.code,message:n.message};n.details!==void 0&&(r.details=n.details);let i={status:n.status,headers:{"Content-Type":`application/json`},body:r};return v.sendResponse(i,e)}));return F.runPromise(t)},websocketHandler:await F.runPromise(v.webSocketHandler({baseUrl:C})),baseUrl:C,dispose:()=>F.dispose()}};async function ut(e){return lt(e)}function dt(e){return e}function ft(e){return e}const pt={ImagePlugin:{packageName:`@uploadista/flow-images-sharp`,variableName:`sharpImagePlugin`},ImageAiPlugin:{packageName:`@uploadista/flow-images-replicate`,variableName:`replicateImagePlugin`},ZipPlugin:{packageName:`@uploadista/flow-utility-zipjs`,variableName:`zipPlugin`},CredentialProvider:{packageName:`@uploadista/core`,variableName:`credentialProviderLayer`}};function mt(e){try{let t=e;if(t._tag)return t._tag;if(t.constructor?.name)return t.constructor.name;if(t.context?.services){let e=Array.from(t.context.services.keys());if(e.length>0){let t=e[0];if(t.key)return t.key}}return null}catch{return null}}function ht(e){return e.map(e=>mt(e)).filter(e=>e!==null)}function Q(e){let{plugins:t,expectedServices:n=[]}=e,r=ht(t),i=n.filter(e=>!r.includes(e));return i.length===0?{success:!0}:{success:!1,required:n,provided:r,missing:i,suggestions:i.map(e=>{let t=pt[e];return t?{name:e,packageName:t.packageName,importStatement:`import { ${t.variableName} } from '${t.packageName}';`}:null}).filter(e=>e!==null)}}function $(e){let t=[`Server initialization failed: Missing required plugins`,``,`Required: ${e.required.join(`, `)}`,`Provided: ${e.provided.length>0?e.provided.join(`, `):`(none)`}`,`Missing: ${e.missing.join(`, `)}`,``];if(e.suggestions.length>0){t.push(`Add the missing plugins to your configuration:`),t.push(``);for(let n of e.suggestions)t.push(` ${n.importStatement}`);t.push(``),t.push(` const server = await createUploadistaServer({`),t.push(` plugins: [${[...e.provided,...e.missing.map(e=>pt[e]?.variableName||e)].join(`, `)}],`),t.push(` // ...`),t.push(` });`)}else t.push(`Note: Could not determine package names for missing plugins.`),t.push(`Please ensure all required plugin layers are provided.`);return t.join(`
2
+ `)}function gt(e){return n.sync(()=>{let t=Q(e);if(!t.success){let e=$(t);throw Error(e)}})}function _t(e){let t=Q(e);if(!t.success){let e=$(t);throw Error(e)}}const vt=(e,t,r)=>n.gen(function*(){if(!t){yield*n.sync(()=>{r.send(JSON.stringify({type:`error`,message:`Job ID is required for flow event subscription`,code:`MISSING_JOB_ID`}))});return}yield*e.subscribeToFlowEvents(t,r)}),yt=(e,t)=>n.gen(function*(){t&&(yield*e.unsubscribeFromFlowEvents(t))}),bt=(e,t,r)=>n.gen(function*(){if(!t){yield*n.sync(()=>{r.send(JSON.stringify({type:`error`,message:`Upload ID is required for upload event subscription`,code:`MISSING_UPLOAD_ID`}))});return}yield*e.subscribeToUploadEvents(t,r)}),xt=(e,t)=>n.gen(function*(){t&&(yield*e.unsubscribeFromUploadEvents(t))}),St=(e,t,r)=>{let{connection:i,isFlowRoute:a,isUploadRoute:o,jobId:s,uploadId:c,eventId:l}=e;return n.gen(function*(){a&&(yield*vt(r,s,i)),o&&(yield*bt(t,c,i)),i.send(JSON.stringify({type:`connection`,message:`Uploadista WebSocket connected`,id:l,jobId:s,uploadId:c,timestamp:new Date().toISOString()}))}).pipe(n.catchAll(e=>n.sync(()=>{console.error(`Error subscribing to events:`,e);let t=e instanceof S?e.body:`Failed to subscribe to events`;i.send(JSON.stringify({type:`error`,message:t,code:e instanceof S?e.code:`SUBSCRIPTION_ERROR`}))})))},Ct=(e,t)=>n.sync(()=>{try{JSON.parse(e).type===`ping`&&t.send(JSON.stringify({type:`pong`,timestamp:new Date().toISOString()}))}catch(e){console.error(`Error handling WebSocket message:`,e),t.send(JSON.stringify({type:`error`,message:`Invalid message format`}))}}),wt=(e,t,r)=>{let{isFlowRoute:i,isUploadRoute:a,jobId:o,uploadId:s}=e;return n.gen(function*(){i&&(yield*yt(r,o)),a&&(yield*xt(t,s))}).pipe(n.catchAll(e=>n.sync(()=>{console.error(`Error unsubscribing from events:`,e instanceof S?e.body:e)})))},Tt=(e,t)=>n.sync(()=>{console.error(`WebSocket error for event ${t}:`,e)});export{j as AdapterError,C as AuthCacheService,pe as AuthCacheServiceLive,G as AuthContextService,K as AuthContextServiceLive,L as AuthenticationRequiredError,I as AuthorizationError,N as BadRequestError,ke as DEFAULT_USAGE_HOOK_TIMEOUT,z as ENGINE_PERMISSIONS,B as FLOW_PERMISSIONS,me as NoAuthCacheServiceLive,De as NoAuthContextServiceLive,Ae as NoUsageHookServiceLive,ve as NotFoundError,be as OrganizationMismatchError,H as PERMISSIONS,U as PERMISSION_HIERARCHY,Se as PERMISSION_SETS,R as QuotaExceededError,V as UPLOAD_PERMISSIONS,J as UsageHookService,Y as UsageHookServiceLive,M as ValidationError,Oe as abortResult,q as continueResult,xe as createAuthorizationErrorResponseBody,P as createErrorResponseBody,_e as createFlowEngineLayer,F as createGenericErrorResponseBody,ut as createTypeSafeServer,ge as createUploadEngineLayer,ye as createUploadistaErrorResponseBody,lt as createUploadistaServer,dt as defineFlow,ft as defineSimpleFlow,Ee as expandPermission,A as extractFlowAndStorageId,k as extractJobAndNodeId,O as extractJobIdFromStatus,ht as extractServiceIdentifiers,$ as formatPluginValidationError,e as getAuthCredentials,T as getLastSegment,D as getRouteSegments,he as handleFlowError,wt as handleWebSocketClose,Tt as handleWebSocketError,Ct as handleWebSocketMessage,St as handleWebSocketOpen,Te as hasAllPermissions,we as hasAnyPermission,E as hasBasePath,W as hasPermission,Ce as matchesPermission,w as parseUrlSegments,Q as validatePluginRequirements,gt as validatePluginRequirementsEffect,_t as validatePluginsOrThrow};
3
3
  //# sourceMappingURL=index.mjs.map