1import{oW as $,oX as P,ac as d,oY as D,oZ as Y,o_ as v,o$ as x,ad as q,aX as O}from"./index-CvtoAcCz.js";const K=1e4,W=10*1024*1024,X=25*1024*1024,V=t=>{if(!Number.isFinite(t)||t<=0)return P;const r=[P,W,X];for(const o of r)if(Math.ceil(t/o)<=K)return o;return Math.ceil(t/K)},Z=(t,r=P)=>{const o=(t==null?void 0:t.size)||0;if(!o)return[];const c=[];let a=0,e=1;for(;a<o;){const i=Math.min(a+r,o);c.push({partNumber:e,blob:t.slice(a,i),size:i-a}),a=i,e+=1}return c},j=t=>new Promise(r=>{setTimeout(r,t)}),L=t=>d.isCancel(t)||(t==null?void 0:t.code)==="ERR_CANCELED"||(t==null?void 0:t.name)==="CanceledError"||(t==null?void 0:t.name)==="AbortError",G=t=>t===408||t===429||t>=500&&t<=599,J=t=>{var o;if(L(t))return!1;const r=(o=t==null?void 0:t.response)==null?void 0:o.status;return r===void 0?!0:G(r)},Q=async({presignedUrl:t,blob:r,signal:o,onChunkProgress:c,contentType:a,maxRetries:e=D})=>{let i=0;for(;;){if(o!=null&&o.aborted)throw new d.Cancel("Upload aborted");try{const n=await d({method:"put",url:t,data:r,headers:a?{"Content-Type":a}:void 0,signal:o,onUploadProgress:c,transformRequest:[l=>l],isFromS3ChunkUpload:!0}),s=(n==null?void 0:n.headers)||{},u=s.etag||s.ETag||s.Etag;if(!u)throw new Error("Missing ETag in S3 part response. Verify bucket CORS exposes the ETag header.");return u.replace(/"/g,"")}catch(n){if(L(n)||i>=e||!J(n))throw n;const s=1e3*2**i;i+=1,await j(s)}}},tt=async(t,r=$)=>{const o=t.length,c=new Array(o);let a=0,e=null;const i=async()=>{for(;e==null;){const u=a;if(a+=1,u>=o)return;try{c[u]=await t[u]()}catch(l){e==null&&(e=l);return}}},n=Math.min(Math.max(1,r),o),s=[];for(let u=0;u<n;u+=1)s.push(i());if(await Promise.all(s),e)throw e;return c},R=(t="Failed to authorize upload. Please try again.")=>{const r=new Error(t);return r.response={data:{message:t}},r},B=({eventUrl:t,uploadBaseUrl:r,isAnonymous:o})=>({baseUrl:r||`${q}host/event/${encodeURIComponent(t)}/upload`,headers:o?void 0:{Authorization:O("token")}}),et=async t=>{var b;const{attributeId:r,attributeSource:o,eventRequestFormId:c,file:a,signal:e,onUploadProgress:i}=t,{baseUrl:n,headers:s}=B(t),u=await v(a);if(e!=null&&e.aborted)throw new d.Cancel("Upload aborted before initiate");const l=await d({method:"post",url:`${n}/initiate-secure-file-upload`,data:{filename:x(a.name),size:a.size,mimeType:a.type,magicBytesHex:u,attributeId:r,...o?{attributeSource:o}:{},...c?{eventRequestFormId:c}:{}},headers:s,signal:e}),{s3Key:p,presignedUrl:h,uploadToken:f,contentType:C}=(l==null?void 0:l.data)||{};if(!p||!h||!f)throw R();await d({method:"put",url:h,data:a,headers:{"Content-Type":C||a.type},signal:e,onUploadProgress:i,transformRequest:[U=>U],isFromS3ChunkUpload:!0});const m=await d({method:"post",url:`${n}/complete-secure-file-upload`,data:{s3Key:p,attributeId:r,size:a.size,uploadToken:f},headers:s,signal:e});return{data:{data:((b=m==null?void 0:m.data)==null?void 0:b.s3Key)||p}}},ot=async t=>{var I;const{attributeId:r,attributeSource:o,eventRequestFormId:c,file:a,signal:e,onUploadProgress:i}=t,{baseUrl:n,headers:s}=B(t),u=await v(a);if(e!=null&&e.aborted)throw new d.Cancel("Upload aborted before initiate");const l=await d({method:"post",url:`${n}/initiate-multipart-upload`,data:{filename:x(a.name),size:a.size,mimeType:a.type,magicBytesHex:u,attributeId:r,...o?{attributeSource:o}:{},...c?{eventRequestFormId:c}:{}},headers:s,signal:e}),{s3Key:p,uploadId:h,uploadToken:f}=(l==null?void 0:l.data)||{};if(!p||!h||!f)throw R();const C=V(a.size),m=Z(a,C),_=a.size,b=new Array(m.length).fill(0),U=()=>{if(typeof i!="function")return;const w=b.reduce((z,y)=>z+y,0);i({loaded:w,total:_})};let S=!1;const k=async()=>{if(!S){S=!0;try{await d({method:"post",url:`${n}/abort-multipart-upload`,data:{s3Key:p,uploadId:h,uploadToken:f},headers:s})}catch{}}},A=()=>{k()};e&&e.addEventListener("abort",A);try{const w=m.map((T,N)=>async()=>{var H;if(e!=null&&e.aborted)throw new d.Cancel("Upload aborted");const M=await d({method:"post",url:`${n}/sign-multipart-part`,data:{s3Key:p,uploadId:h,uploadToken:f,partNumber:T.partNumber},headers:s,signal:e}),F=(H=M==null?void 0:M.data)==null?void 0:H.presignedUrl;if(!F)throw R();const g=await Q({presignedUrl:F,blob:T.blob,signal:e,contentType:a.type,onChunkProgress:E=>{typeof(E==null?void 0:E.loaded)=="number"&&(b[N]=Math.min(E.loaded,T.size),U())}});return b[N]=T.size,U(),{partNumber:T.partNumber,etag:g}}),z=await tt(w,$);
1if(e!=null&&e.aborted)throw new d.Cancel("Upload aborted");const y=await d({method:"post",url:`${n}/complete-multipart-upload`,data:{s3Key:p,uploadId:h,uploadToken:f,attributeId:r,size:a.size,parts:z},headers:s,signal:e});return{data:{data:((I=y==null?void 0:y.data)==null?void 0:I.s3Key)||p}}}catch(w){throw k(),w}finally{e&&e.removeEventListener("abort",A)}},nt=async t=>{var o;return(((o=t==null?void 0:t.file)==null?void 0:o.size)||0)>=Y?ot(t):et(t)};export{nt as a,R as u};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.