UNPKG

socaity

Version:

SDK for Generative AI. Build AI-powered applications with ease

17 lines 83.5 kB
(function(h,v){typeof exports=="object"&&typeof module<"u"?v(exports):typeof define=="function"&&define.amd?define(["exports"],v):(h=typeof globalThis<"u"?globalThis:h||self,v(h.socaity={}))})(this,function(h){"use strict";var Ue=Object.defineProperty;var Me=(h,v,C)=>v in h?Ue(h,v,{enumerable:!0,configurable:!0,writable:!0,value:C}):h[v]=C;var x=(h,v,C)=>Me(h,typeof v!="symbol"?v+"":v,C);class v extends Error{constructor(e="Invalid API key format. API keys should start with 'sk_' and be 67 characters long."){super(e),this.name="ApiKeyError",Error.captureStackTrace&&Error.captureStackTrace(this,v)}}const U=class U{constructor(e={}){x(this,"apiKey");x(this,"baseUrl");x(this,"pollInterval");x(this,"maxRetries");this.apiKey=e.apiKey,this.baseUrl=e.baseUrl||"https://api.socaity.ai/v1",this.pollInterval=e.pollInterval||5e3,this.maxRetries=e.maxRetries||3}static getInstance(){return U.instance||(U.instance=new U),U.instance}static update(e){if(e.apiKey!==void 0){if(!e.apiKey.startsWith("sk_")&&!e.apiKey.startsWith("tk_")&&!e.apiKey.startsWith("ey"))throw new v("Invalid authentication token. Use either a Socaity API key from https://www.socaity.ai or a valid JWT token.");if(e.apiKey.startsWith("sk_")&&!e.apiKey.startsWith("tk_")&&e.apiKey.length!==67)throw new v("Invalid API key format. API keys should be 67 characters long. Get your API key from https://www.socaity.ai")}const t=U.getInstance();Object.assign(t,e)}};x(U,"instance");let C=U;var y=(i=>(i.CREATED="CREATED",i.QUEUED="QUEUED",i.PROCESSING="PROCESSING",i.COMPLETED="COMPLETED",i.FAILED="FAILED",i.UNKNOWN="UNKNOWN",i))(y||{}),w=(i=>(i.INITIALIZING="INITIALIZING",i.PREPARING="PREPARING",i.SENDING="SENDING",i.TRACKING="TRACKING",i.PROCESSING_RESULT="PROCESSING_RESULT",i.COMPLETED="COMPLETED",i.FAILED="FAILED",i))(w||{});class he{async parse(e){if(e==null)return this.createErrorJob("No response received");if(typeof e=="string")try{const t=JSON.parse(e);return this.parseObject(t)}catch{return{id:"",status:y.COMPLETED,progress:{progress:1,message:null},result:e,createdAt:new Date,updatedAt:new Date}}return this.parseObject(e)}async parseObject(e){if(typeof e!="object"||e===null)return this.createErrorJob("Invalid response format");console.log("raw_response",e);const t=e,s=typeof t.id=="string"?t.id:"",n=this.parseStatus(t.status),o=this.parseProgress(t,n),a=typeof t.error=="string"?t.error:null,r=typeof t.refresh_job_url=="string"?t.refresh_job_url:void 0,l=this.parseDate(t.createdAt),m=this.parseDate(t.updatedAt);return{id:s,status:n,progress:o,result:t.result,error:a,createdAt:l,updatedAt:m,refresh_job_url:r}}createErrorJob(e){const t=new Date;return{id:"",status:y.FAILED,progress:{progress:0,message:e},result:null,error:e,createdAt:t,updatedAt:t}}parseDate(e){if(e instanceof Date)return e;if(typeof e=="string"||typeof e=="number"){const t=new Date(e);if(!isNaN(t.getTime()))return t}return new Date}parseStatus(e){if(typeof e!="string"||!e)return y.UNKNOWN;const t=e.toUpperCase();return{COMPLETED:y.COMPLETED,SUCCEEDED:y.COMPLETED,FINISHED:y.COMPLETED,CREATED:y.CREATED,FAILED:y.FAILED,ERROR:y.FAILED,IN_PROGRESS:y.PROCESSING,PROCESSING:y.PROCESSING,RUNNING:y.PROCESSING,BOOTING:y.PROCESSING,QUEUED:y.QUEUED,PENDING:y.QUEUED,IN_QUEUE:y.QUEUED,STARTING:y.QUEUED}[t]||y.UNKNOWN}parseProgress(e,t){let s=0,n=null;const o=e.progress;if(typeof o=="number")s=o;else if(typeof o=="string")try{s=parseFloat(o)}catch{s=0}else if(o&&typeof o=="object"){const a=o;if(typeof a.progress=="number")s=a.progress;else if(typeof a.progress=="string")try{s=parseFloat(a.progress)}catch{s=0}n=typeof a.message=="string"?a.message:null}return isNaN(s)&&(s=0),s=Math.max(0,Math.min(1,s)),t===y.COMPLETED&&(s=1),!n&&typeof e.message=="string"&&(n=e.message),{progress:s,message:n}}}var ge=Object.defineProperty,ye=(i,e,t)=>e in i?ge(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,F=(i,e,t)=>ye(i,typeof e!="symbol"?e+"":e,t);const M={wav:"audio/wav",mp3:"audio/mpeg",ogg:"audio/ogg",flac:"audio/flac",aac:"audio/aac",m4a:"audio/mp4",wma:"audio/x-ms-wma",opus:"audio/opus",aiff:"audio/aiff",webm:"audio/webm"},k={mp4:"video/mp4",avi:"video/x-msvideo",mov:"video/quicktime",mkv:"video/x-matroska",webm:"video/webm",flv:"video/x-flv",wmv:"video/x-ms-wmv","3gp":"video/3gpp",ogv:"video/ogg",m4v:"video/x-m4v"},I={jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",gif:"image/gif",bmp:"image/bmp",tiff:"image/tiff",tif:"image/tiff",jfif:"image/jpeg",ico:"image/x-icon",webp:"image/webp",avif:"image/avif",heic:"image/heic",heif:"image/heif",svg:"image/svg+xml"},A={obj:"model/obj",glb:"model/gltf-binary",gltf:"model/gltf+json",dae:"model/vnd.collada+xml",fbx:"application/octet-stream","3ds":"application/x-3ds",ply:"application/x-ply",stl:"model/stl",step:"application/step",iges:"model/iges",x3d:"model/x3d+xml",blend:"application/x-blender"},we={pdf:"application/pdf",txt:"text/plain",html:"text/html",htm:"text/html",json:"application/json",js:"application/javascript",css:"text/css",xml:"application/xml",csv:"text/csv",zip:"application/zip","7z":"application/x-7z-compressed",tar:"application/x-tar",gz:"application/gzip",npy:"application/x-npy",npz:"application/x-npz",pkl:"application/x-pickle",pickle:"application/x-pickle"},ne={...M,...k,...I,...A,...we},be={"image/jfif":"image/jpeg","image/jpg":"image/jpeg","audio/mp3":"audio/mpeg","audio/x-mp3":"audio/mpeg","video/x-mp4":"video/mp4","audio/x-m4a":"audio/mp4","image/x-png":"image/png","image/x-jpeg":"image/jpeg"};function Fe(i){const e=[];switch(i){case"audio":e.push(...Object.values(M)),e.push(...Object.keys(M).map(t=>`.${t}`));break;case"video":e.push(...Object.values(k)),e.push(...Object.keys(k).map(t=>`.${t}`));break;case"image":e.push(...Object.values(I)),e.push(...Object.keys(I).map(t=>`.${t}`));break;case"asset_3d":e.push(...Object.values(A)),e.push(...Object.keys(A).map(t=>`.${t}`));break;case"file":default:return["*/*"]}return e}function ve(i){return{audio:"Audio",video:"Video",image:"Images",asset_3d:"Asset3D",file:"Files"}[i]||i}function _e(i){const e=be[i]||i;return Object.values(M).includes(e)?"audio":Object.values(k).includes(e)?"video":Object.values(I).includes(e)?"image":Object.values(A).includes(e)?"asset_3d":null}function V(i){const e=(i.startsWith(".")?i.slice(1):i).toLowerCase();return e in ne?ne[e]:null}const _=typeof window>"u";async function oe(i){if(i==null)return null;if(Array.isArray(i)){const e=i.map(t=>oe(t));return Promise.all(e)}if(K(i))try{return await new u().fromDict(i)}catch{return i}return i}var ae={},re={},O={},le;function de(){if(le)return O;le=1,Object.defineProperty(O,"__esModule",{value:!0}),O.fromHex=O.toHex=void 0;const i=s=>new Number(s).toString(16).toLowerCase(),e=s=>`0x${i(s).length===1?"0"+i(s):i(s)}`;O.toHex=e;const t=s=>new Number(s);return O.fromHex=t,O}var ce={},xe;function Ee(){return xe||(xe=1,function(i){Object.defineProperty(i,"__esModule",{value:!0}),i.createComplexNode=i.createNode=i.merge=void 0;const e=a=>({typename:a.typename,mime:a.info.mime,extension:a.info.extension}),t=(a,r)=>a&&r.length===0,s=(a,r)=>{if(a.bytes.length===0)return r;const[l,...m]=a.bytes,c=r.bytes[l];if(t(c,m)){const d=r.bytes[l];return r.bytes[l]={...d,matches:[...d.matches??[],e(a)]},r}return r.bytes[l]?r.bytes[l]=i.merge(i.createNode(a.typename,m,a.info),r.bytes[l]):r.bytes[l]=i.createComplexNode(a.typename,m,a.info),r};i.merge=s;const n=(a,r,l)=>({typename:a,bytes:r,info:l||{}});i.createNode=n;const o=(a,r,l)=>{let m={bytes:{},matches:void 0};const[c,...d]=r;return r.length===0?{matches:[e({typename:a,info:l?{extension:l.extension,mime:l.mime}:{}})],bytes:{}}:(m.bytes[c]=i.createComplexNode(a,d,l),m)};i.createComplexNode=o}(ce)),ce}var me;function Ae(){return me||(me=1,function(i){Object.defineProperty(i,"__esModule",{value:!0}),i.createTree=i.add=void 0;const e=de(),t=Ee();let s={noOffset:null,offset:{}};const n=(a,r,l,m)=>{if(m){const c=s.offset[e.toHex(m)];if(!c)s.offset[e.toHex(m)]=t.createComplexNode(a,r.map(d=>d.toLowerCase()),l);else{const d=t.merge(t.createNode(a,r.map(p=>p.toLowerCase()),l),{...c});s.offset[e.toHex(m)]=d}}else s.noOffset===null?s.noOffset=t.createComplexNode(a,r.map(c=>c.toLowerCase()),l):s.noOffset=t.merge(t.createNode(a,r.map(c=>c.toLowerCase()),l),s.noOffset)};i.add=n,i.add("gif",["0x47","0x49","0x46","0x38","0x37","0x61"],{mime:"image/gif",extension:"gif"}),i.add("gif",["0x47","0x49","0x46","0x38","0x39","0x61"],{mime:"image/gif",extension:"gif"}),i.add("jpg",["0xFF","0xD8","0xFF"],{mime:"image/jpeg",extension:"jpeg"}),i.add("webp",["0x52","0x49","0x46","0x46","?","?","?","?","0x57","0x45","0x42","0x50"],{mime:"image/webp",extension:"webp"}),i.add("heif",["0x66","0x74","0x79","0x70","0x6D","0x69","0x66","0x31"],{mime:"image/heif",extension:"heif"},4),i.add("heif",["0x66","0x74","0x79","0x70","0x68","0x65","0x69","0x63"],{mime:"image/heif",extension:"heic"},4),i.add("rpm",["0xed","0xab","0xee","0xdb"]),i.add("bin",["0x53","0x50","0x30","0x31"],{mime:"application/octet-stream",extension:"bin"}),i.add("pic",["0x00"]),i.add("pif",["0x00"]),i.add("sea",["0x00"]),i.add("ytr",["0x00"]),i.add("mp4",["0x66","0x74","0x79","0x70"],{mime:"video/mp4",extension:"mp4"},4),i.add("ttf",["0x00","0x01","0x00","0x00","0x00"],{mime:"font/ttf",extension:"ttf"}),i.add("otf",["0x4F","0x54","0x54","0x4F"],{mime:"font/otf",extension:"otf"}),i.add("eot",["0x50","0x4C"],{mime:"application/vnd.ms-fontobject",extension:"eot"}),i.add("woff",["0x77","0x4F","0x46","0x46"],{mime:"font/woff",extension:"woff"}),i.add("woff2",["0x77","0x4F","0x46","0x32"],{mime:"font/woff2",extension:"woff2"}),i.add("pdb",["0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x00"]),i.add("dba",["0xBE","0xBA","0xFE","0xCA"]),i.add("dba2",["0x00","0x01","0x42","0x44"]),i.add("tda",["0x00","0x01","0x44","0x54"]),i.add("tda2",["0x00","0x01","0x00","0x00"]),i.add("ico",["0x00","0x00","0x01","0x00"],{mime:"image/x-icon",extension:"ico"}),i.add("3gp",["0x66","0x74","0x79","0x70","0x33","0x67"]),i.add("z",["0x1F","0x9D"]),i.add("tar.z",["0x1F","0xA0"]),i.add("bac",["0x42","0x41","0x43","0x4B","0x4D","0x49","0x4B","0x45","0x44","0x49","0x53","0x4B"]),i.add("bz2",["0x42","0x5A","0x68"],{mime:"application/x-bzip2",extension:"bz2"}),i.add("tif",["0x49","0x49","0x2A","0x00"],{mime:"image/tiff",extension:"tif"}),i.add("tiff",["0x4D","0x4D","0x00","0x2A"],{mime:"image/tiff",extension:"tiff"}),i.add("cr2",["0x49","0x49","0x2A","0x00","0x10","0x00","0x00","0x00","0x43","0x52"]),i.add("cin",["0x80","0x2A","0x5F","0xD7"]),i.add("cin1",["0x52","0x4E","0x43","0x01"]),i.add("cin2",["0x52","0x4E","0x43","0x02"]),i.add("dpx",["0x53","0x44","0x50","0x58"]),i.add("dpx2",["0x58","0x50","0x44","0x53"]),i.add("exr",["0x76","0x2F","0x31","0x01"]),i.add("bpg",["0x42","0x50","0x47","0xFB"]),i.add("ilbm",["0x46","0x4F","0x52","0x4D","?","?","?","?","0x49","0x4C","0x42","0x4D"]),i.add("8svx",["0x46","0x4F","0x52","0x4D","?","?","?","?","0x38","0x53","0x56","0x58"]),i.add("acbm",["0x46","0x4F","0x52","0x4D","?","?","?","?","0x41","0x43","0x42","0x4D"]),i.add("anbm",["0x46","0x4F","0x52","0x4D","?","?","?","?","0x41","0x4E","0x42","0x4D"]),i.add("anim",["0x46","0x4F","0x52","0x4D","?","?","?","?","0x41","0x4E","0x49","0x4D"]),i.add("faxx",["0x46","0x4F","0x52","0x4D","?","?","?","?","0x46","0x41","0x58","0x58"]),i.add("ftxt",["0x46","0x4F","0x52","0x4D","?","?","?","?","0x46","0x54","0x58","0x54"]),i.add("smus",["0x46","0x4F","0x52","0x4D","?","?","?","?","0x53","0x4D","0x55","0x53"]),i.add("cmus",["0x46","0x4F","0x52","0x4D","?","?","?","?","0x43","0x4D","0x55","0x53"]),i.add("yuvn",["0x46","0x4F","0x52","0x4D","?","?","?","?","0x59","0x55","0x56","0x4E"]),i.add("iff",["0x46","0x4F","0x52","0x4D","?","?","?","?","0x46","0x41","0x4E","0x54"]),i.add("aiff",["0x46","0x4F","0x52","0x4D","?","?","?","?","0x41","0x49","0x46","0x46"],{mime:"audio/x-aiff",extension:"aiff"}),i.add("idx",["0x49","0x4E","0x44","0x58"]),i.add("lz",["0x4C","0x5A","0x49","0x50"]),i.add("exe",["0x4D","0x5A"]),i.add("zip",["0x50","0x4B","0x03","0x04"],{mime:"application/zip",extension:"zip"}),i.add("zip",["0x50","0x4B","0x05","0x06"],{mime:"application/zip",extension:"zip"}),i.add("zip",["0x50","0x4B","0x07","0x08"],{mime:"application/zip",extension:"zip"}),i.add("jar",["0x50","0x4B","0x03","0x04"],{mime:"application/java-archive",extension:"jar"}),i.add("jar",["0x50","0x4B","0x05","0x06"],{mime:"application/java-archive",extension:"jar"}),i.add("jar",["0x50","0x4B","0x07","0x08"],{mime:"application/java-archive",extension:"jar"}),i.add("odt",["0x50","0x4B","0x03","0x04"],{mime:"application/vnd.oasis.opendocument.text",extension:"odt"}),i.add("odt",["0x50","0x4B","0x05","0x06"],{mime:"application/vnd.oasis.opendocument.text",extension:"odt"}),i.add("odt",["0x50","0x4B","0x07","0x08"],{mime:"application/vnd.oasis.opendocument.text",extension:"odt"}),i.add("ods",["0x50","0x4B","0x03","0x04"],{mime:"application/vnd.oasis.opendocument.spreadsheet",extension:"ods"}),i.add("ods",["0x50","0x4B","0x05","0x06"],{mime:"application/vnd.oasis.opendocument.spreadsheet",extension:"ods"}),i.add("ods",["0x50","0x4B","0x07","0x08"],{mime:"application/vnd.oasis.opendocument.spreadsheet",extension:"ods"}),i.add("odp",["0x50","0x4B","0x03","0x04"],{mime:"application/vnd.oasis.opendocument.presentation",extension:"odp"}),i.add("odp",["0x50","0x4B","0x05","0x06"],{mime:"application/vnd.oasis.opendocument.presentation",extension:"odp"}),i.add("odp",["0x50","0x4B","0x07","0x08"],{mime:"application/vnd.oasis.opendocument.presentation",extension:"odp"}),i.add("docx",["0x50","0x4B","0x03","0x04"],{mime:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",extension:"docx"}),i.add("docx",["0x50","0x4B","0x05","0x06"],{mime:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",extension:"docx"}),i.add("docx",["0x50","0x4B","0x07","0x08"],{mime:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",extension:"docx"}),i.add("xlsx",["0x50","0x4B","0x03","0x04"],{mime:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",extension:"xlsx"}),i.add("xlsx",["0x50","0x4B","0x05","0x06"],{mime:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",extension:"xlsx"}),i.add("xlsx",["0x50","0x4B","0x07","0x08"],{mime:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",extension:"xlsx"}),i.add("pptx",["0x50","0x4B","0x03","0x04"],{mime:"application/vnd.openxmlformats-officedocument.presentationml.presentation",extension:"pptx"}),i.add("pptx",["0x50","0x4B","0x05","0x06"],{mime:"application/vnd.openxmlformats-officedocument.presentationml.presentation",extension:"pptx"}),i.add("pptx",["0x50","0x4B","0x07","0x08"],{mime:"application/vnd.openxmlformats-officedocument.presentationml.presentation",extension:"pptx"}),i.add("vsdx",["0x50","0x4B","0x03","0x04"],{mime:"application/vnd.ms-visio.drawing",extension:"vsdx"}),i.add("vsdx",["0x50","0x4B","0x05","0x06"],{mime:"application/vnd.ms-visio.drawing",extension:"vsdx"}),i.add("vsdx",["0x50","0x4B","0x07","0x08"],{mime:"application/vnd.ms-visio.drawing",extension:"vsdx"}),i.add("apk",["0x50","0x4B","0x03","0x04"],{mime:"application/vnd.android.package-archive",extension:"apk"}),i.add("apk",["0x50","0x4B","0x05","0x06"],{mime:"application/vnd.android.package-archive",extension:"apk"}),i.add("apk",["0x50","0x4B","0x07","0x08"],{mime:"application/vnd.android.package-archive",extension:"apk"}),i.add("aar",["0x50","0x4B","0x03","0x04"],{mime:"application/vnd.android.package-archive",extension:"aar"}),i.add("aar",["0x50","0x4B","0x05","0x06"],{mime:"application/vnd.android.package-archive",extension:"aar"}),i.add("aar",["0x50","0x4B","0x07","0x08"],{mime:"application/vnd.android.package-archive",extension:"aar"}),i.add("rar",["0x52","0x61","0x72","0x21","0x1A","0x07","0x00"],{mime:"application/vnd.rar",extension:"rar"}),i.add("rar",["0x52","0x61","0x72","0x21","0x1A","0x07","0x01","0x00"],{mime:"application/vnd.rar",extension:"rar"}),i.add("rar",["0x7F","0x45","0x4C","0x46"],{mime:"application/vnd.rar",extension:"rar"}),i.add("png",["0x89","0x50","0x4E","0x47","0x0D","0x0A","0x1A","0x0A"],{mime:"image/png",extension:"png"}),i.add("apng",["0x89","0x50","0x4E","0x47","0x0D","0x0A","0x1A","0x0A"],{mime:"image/apng",extension:"apng"}),i.add("class",["0xCA","0xFE","0xBA","0xBE"]),i.add("class",["0xEF","0xBB","0xBF"]),i.add("class",["0xFE","0xed","0xFA","0xCE"],void 0,4096),i.add("class",["0xFE","0xed","0xFA","0xCF"],void 0,4096),i.add("class",["0xCE","0xFA","0xed","0xFE"]),i.add("class",["0xCF","0xFA","0xed","0xFE"]),i.add("class",["0xFF","0xFE"]),i.add("class",["0xFF","0xFE"]),i.add("class",["0xFF","0xFE","0x00","0x00"]),i.add("ps",["0x25","0x21","0x50","0x53"],{mime:"application/postscript",extension:".ps"}),i.add("pdf",["0x25","0x50","0x44","0x46"],{mime:"application/pdf",extension:"pdf"}),i.add("asf",["0x30","0x26","0xB2","0x75","0x8E","0x66","0xCF","0x11","0xA6","0xD9","0x00","0xAA","0x00","0x62","0xCE","0x6C"]),i.add("wma",["0x30","0x26","0xB2","0x75","0x8E","0x66","0xCF","0x11","0xA6","0xD9","0x00","0xAA","0x00","0x62","0xCE","0x6C"]),i.add("wmv",["0x30","0x26","0xB2","0x75","0x8E","0x66","0xCF","0x11","0xA6","0xD9","0x00","0xAA","0x00","0x62","0xCE","0x6C"]),i.add("deploymentimage",["0x24","0x53","0x44","0x49","0x30","0x30","0x30","0x31"]),i.add("ogv",["0x4F","0x67","0x67","0x53","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","0x80","0x74","0x68","0x65","0x6F","0x72","0x61"],{mime:"video/ogg",extension:"ogv"}),i.add("ogm",["0x4F","0x67","0x67","0x53","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","0x01","0x76","0x69","0x64","0x65","0x6F","0x00"],{mime:"video/ogg",extension:"ogm"}),i.add("oga",["0x4F","0x67","0x67","0x53","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","0x7F","0x46","0x4C","0x41","0x43"],{mime:"audio/ogg",extension:"oga"}),i.add("spx",["0x4F","0x67","0x67","0x53","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","0x53","0x70","0x65","0x65","0x78","0x20","0x20"],{mime:"audio/ogg",extension:"spx"}),i.add("ogg",["0x4F","0x67","0x67","0x53","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","0x01","0x76","0x6F","0x72","0x62","0x69","0x73"],{mime:"audio/ogg",extension:"ogg"}),i.add("ogx",["0x4F","0x67","0x67","0x53"],{mime:"application/ogg",extension:"ogx"}),i.add("psd",["0x38","0x42","0x50","0x53"],{mime:"application/x-photoshop",extension:"psd"}),i.add("clip",["0x43","0x53","0x46","0x43","0x48","0x55","0x4e","0x4b"]),i.add("wav",["0x52","0x49","0x46","0x46","?","?","?","?","0x57","0x41","0x56","0x45"],{mime:"audio/x-wav",extension:"wav"}),i.add("avi",["0x52","0x49","0x46","0x46","?","?","?","?","0x41","0x56","0x49","0x20"],{mime:"video/x-msvideo",extension:"avi"}),i.add("mp3",["0xFF","0xFB"],{mime:"audio/mpeg",extension:"mp3"}),i.add("mp3",["0xFF","0xF3"],{mime:"audio/mpeg",extension:"mp3"}),i.add("mp3",["0xFF","0xF2"],{mime:"audio/mpeg",extension:"mp3"}),i.add("mp3",["0x49","0x44","0x33"],{mime:"audio/mpeg",extension:"mp3"}),i.add("bmp",["0x42","0x4D"],{mime:"image/bmp",extension:"bmp"}),i.add("iso",["0x43","0x44","0x30","0x30","0x31"]),i.add("flac",["0x66","0x4C","0x61","0x43"]),i.add("mid",["0x4D","0x54","0x68","0x64"],{mime:"audio/midi",extension:"mid"}),i.add("midi",["0x4D","0x54","0x68","0x64"],{mime:"audio/midi",extension:"midi"}),i.add("doc",["0xD0","0xCF","0x11","0xE0","0xA1","0xB1","0x1A","0xE1"],{mime:"application/msword",extension:"doc"}),i.add("xls",["0xD0","0xCF","0x11","0xE0","0xA1","0xB1","0x1A","0xE1"],{mime:"application/vnd.ms-excel",extension:"xls"}),i.add("ppt",["0xD0","0xCF","0x11","0xE0","0xA1","0xB1","0x1A","0xE1"],{mime:"application/vnd.ms-powerpoint",extension:"ppt"}),i.add("msg",["0xD0","0xCF","0x11","0xE0","0xA1","0xB1","0x1A","0xE1"]),i.add("dex",["0x64","0x65","0x78","0x0A","0x30","0x33","0x35","0x00"]),i.add("vmdk",["0x4B","0x44","0x4D"]),i.add("crx",["0x43","0x72","0x32","0x34"]),i.add("fh8",["0x41","0x47","0x44","0x33"]),i.add("cwk",["0x05","0x07","0x00","0x00","0x42","0x4F","0x42","0x4F","0x05","0x07","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x01"]),i.add("cwk",["0x06","0x07","0xE1","0x00","0x42","0x4F","0x42","0x4F","0x06","0x07","0xE1","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x00","0x01"]),i.add("toast",["0x45","0x52","0x02","0x00","0x00","0x00"]),i.add("toast",["0x8B","0x45","0x52","0x02","0x00","0x00","0x00"]),i.add("dmg",["0x78","0x01","0x73","0x0D","0x62","0x62","0x60"]),i.add("xar",["0x78","0x61","0x72","0x21"]),i.add("dat",["0x50","0x4D","0x4F","0x43","0x43","0x4D","0x4F","0x43"]),i.add("nes",["0x4E","0x45","0x53","0x1A"]),i.add("tar",["0x75","0x73","0x74","0x61","0x72","0x00","0x30","0x30"],{mime:"application/x-tar",extension:"tar"},257),i.add("tar",["0x75","0x73","0x74","0x61","0x72","0x20","0x20","0x00"],{mime:"application/x-tar",extension:"tar"},257),i.add("tox",["0x74","0x6F","0x78","0x33"]),i.add("mlv",["0x4D","0x4C","0x56","0x49"]),i.add("windowsupdate",["0x44","0x43","0x4D","0x01","0x50","0x41","0x33","0x30"]),i.add("7z",["0x37","0x7A","0xBC","0xAF","0x27","0x1C"],{mime:"application/x-7z-compressed",extension:"7z"}),i.add("gz",["0x1F","0x8B"],{mime:"application/gzip",extension:"gz"}),i.add("tar.gz",["0x1F","0x8B"],{mime:"application/gzip",extension:"tar.gz"}),i.add("xz",["0xFD","0x37","0x7A","0x58","0x5A","0x00","0x00"],{mime:"application/gzip",extension:"xz"}),i.add("tar.xz",["0xFD","0x37","0x7A","0x58","0x5A","0x00","0x00"],{mime:"application/gzip",extension:"tar.xz"}),i.add("lz2",["0x04","0x22","0x4D","0x18"]),i.add("cab",["0x4D","0x53","0x43","0x46"]),i.add("mkv",["0x1A","0x45","0xDF","0xA3"],{mime:"video/x-matroska",extension:"mkv"}),i.add("mka",["0x1A","0x45","0xDF","0xA3"],{mime:"audio/x-matroska",extension:"mka"}),i.add("mks",["0x1A","0x45","0xDF","0xA3"],{mime:"video/x-matroska",extension:"mks"}),i.add("mk3d",["0x1A","0x45","0xDF","0xA3"]),i.add("webm",["0x1A","0x45","0xDF","0xA3"],{mime:"audio/webm",extension:"webm"}),i.add("dcm",["0x44","0x49","0x43","0x4D"],void 0,128),i.add("xml",["0x3C","0x3f","0x78","0x6d","0x6C","0x20"],{mime:"application/xml",extension:"xml"}),i.add("wasm",["0x00","0x61","0x73","0x6d"],{mime:"application/wasm",extension:"wasm"}),i.add("lep",["0xCF","0x84","0x01"]),i.add("swf",["0x43","0x57","0x53"],{mime:"application/x-shockwave-flash",extension:"swf"}),i.add("swf",["0x46","0x57","0x53"],{mime:"application/x-shockwave-flash",extension:"swf"}),i.add("deb",["0x21","0x3C","0x61","0x72","0x63","0x68","0x3E"]),i.add("rtf",["0x7B","0x5C","0x72","0x74","0x66","0x31"],{mime:"application/rtf",extension:"rtf"}),i.add("m2p",["0x00","0x00","0x01","0xBA"]),i.add("vob",["0x00","0x00","0x01","0xBA"]),i.add("mpg",["0x00","0x00","0x01","0xBA"],{mime:"video/mpeg",extension:"mpg"}),i.add("mpeg",["0x00","0x00","0x01","0xBA"],{mime:"video/mpeg",extension:"mpeg"}),i.add("mpeg",["0x47"],{mime:"video/mpeg",extension:"mpeg"}),i.add("mpeg",["0x00","0x00","0x01","0xB3"],{mime:"video/mpeg",extension:"mpeg"}),i.add("mov",["0x66","0x72","0x65","0x65"],{mime:"video/quicktime",extension:"mov"},4),i.add("mov",["0x6D","0x64","0x61","0x74"],{mime:"video/quicktime",extension:"mov"},4),i.add("mov",["0x6D","0x6F","0x6F","0x76"],{mime:"video/quicktime",extension:"mov"},4),i.add("mov",["0x77","0x69","0x64","0x65"],{mime:"video/quicktime",extension:"mov"},4),i.add("mov",["0x66","0x74","0x79","0x70","0x71","0x74"],{mime:"video/quicktime",extension:"mov"},4),i.add("hl2demo",["0x48","0x4C","0x32","0x44","0x45","0x4D","0x4F"]),i.add("txt",["0xEF","0xBB","0xBF"],{mime:"text/plain; charset=UTF-8",extension:"txt"}),i.add("txt",["0xFF","0xFE"],{mime:"text/plain; charset=UTF-16LE",extension:"txt"}),i.add("txt",["0xFE","0xFF"],{mime:"text/plain; charset=UTF-16BE",extension:"txt"}),i.add("txt",["0xFF","0xFE","0x00","0x00"],{mime:"text/plain; charset=UTF-32LE",extension:"txt"}),i.add("txt",["0x00","0x00","0xFE","0xFF"],{mime:"text/plain; charset=UTF-32BE",extension:"txt"}),i.add("SubRip",["0x31","0x0D","0x0A","0x30","0x30","0x3A"],{mime:"application/x-subrip",extension:"srt"}),i.add("WebVTT",["0xEF","0xBB","0xBF","0x57","0x45","0x42","0x56","0x54","0x54","0x0A"],{mime:"text/vtt",extension:"vtt"}),i.add("WebVTT",["0xEF","0xBB","0xBF","0x57","0x45","0x42","0x56","0x54","0x54","0x0D"],{mime:"text/vtt",extension:"vtt"}),i.add("WebVTT",["0xEF","0xBB","0xBF","0x57","0x45","0x42","0x56","0x54","0x54","0x20"],{mime:"text/vtt",extension:"vtt"}),i.add("WebVTT",["0xEF","0xBB","0xBF","0x57","0x45","0x42","0x56","0x54","0x54","0x09"],{mime:"text/vtt",extension:"vtt"}),i.add("WebVTT",["0x57","0x45","0x42","0x56","0x54","0x54","0x0A"],{mime:"text/vtt",extension:"vtt"}),i.add("WebVTT",["0x57","0x45","0x42","0x56","0x54","0x54","0x0D"],{mime:"text/vtt",extension:"vtt"}),i.add("WebVTT",["0x57","0x45","0x42","0x56","0x54","0x54","0x20"],{mime:"text/vtt",extension:"vtt"}),i.add("WebVTT",["0x57","0x45","0x42","0x56","0x54","0x54","0x09"],{mime:"text/vtt",extension:"vtt"}),i.add("Json",["0x7B"],{mime:"application/json",extension:".json"}),i.add("Json",["0x5B"],{mime:"application/json",extension:".json"}),i.add("ELF",["0x7F","0x45","0x4C","0x46"],{mime:"application/x-executable",extension:".elf"}),i.add("Mach-O",["0xFE","0xED","0xFA","0xC"],{mime:"application/x-mach-binary",extension:".o"}),i.add("Mach-O",["0xFE","0xED","0xFA","0xCF"],{mime:"application/x-executable",extension:"elf"}),i.add("EML",["0x52","0x65","0x63","0x65","0x69","0x76","0x65","0x64","0x3A"],{mime:"message/rfc822",extension:".eml"}),i.add("SVG",["0x3c","0x73","0x76","0x67"],{mime:"image/svg+xml",extension:"svg"}),i.add("avif",["0x66","0x74","0x79","0x70","0x61","0x76","0x69","0x66"],{mime:"image/avif",extension:"avif"},4);const o=()=>s;i.createTree=o,i.default=()=>s}(re)),re}var pe;function Ce(){return pe||(pe=1,function(i){Object.defineProperty(i,"__esModule",{value:!0}),i.register=i.filetypeextension=i.filetypemime=i.filetypename=i.filetypeinfo=void 0;const e=Ae(),t=de(),s=e.createTree(),n=c=>{let d=s;for(const p of Object.keys(d.offset)){const f=t.fromHex(p);if(f>=c.length)continue;const g=s.offset[p],b=o(f,c,g);if(b.length>0)return b}return d.noOffset===null?[]:o(0,c,d.noOffset)};i.filetypeinfo=n;const o=(c,d,p)=>{let f=p,g=[];for(;;){const b=t.toHex(d[c]);if(f.bytes["?"]&&!f.bytes[b]?f=f.bytes["?"]:f=f.bytes[b],!f)return g;f&&f.matches&&(g=f.matches.slice(0)),c+=1}};i.default=i.filetypeinfo;const a=c=>i.filetypeinfo(c).map(d=>d.typename);i.filetypename=a;const r=c=>i.filetypeinfo(c).map(d=>d.mime?d.mime:null).filter(d=>d!==null);i.filetypemime=r;const l=c=>i.filetypeinfo(c).map(d=>d.extension?d.extension:null).filter(d=>d!==null);i.filetypeextension=l;const m=(c,d,p,f)=>{e.add(c,d,p,f)};i.register=m}(ae)),ae}var Be=Ce();class R{static detectMime(e){if(!e||e.byteLength<4)return null;const t=Be.filetypeinfo(new Uint8Array(e));return t.length>0&&t[0].mime?t[0].mime:this.detectSvg(e)||this.detect3DModel(e)}static detectImageFormat(e){const t=this.detectMime(e);return t!=null&&t.startsWith("image/")?t:null}static detectVideoFormat(e){const t=this.detectMime(e);return t!=null&&t.startsWith("video/")?t:null}static detectAudioFormat(e){const t=this.detectMime(e);return t!=null&&t.startsWith("audio/")?t:null}static detect3DModel(e){const t=new Uint8Array(e).slice(0,128),s=new TextDecoder().decode(t);return t[0]===103&&t[1]===108&&t[2]===84&&t[3]===70?A.glb:s.startsWith("solid ")?A.stl:s.includes('"asset"')||s.includes('"scene"')?A.gltf:s.includes("Kaydara FBX")?A.fbx:s.startsWith("ply")?A.ply:s.includes("<COLLADA")?A.dae:t[0]===77&&t[1]===77?A["3ds"]:s.includes("v ")||s.includes("f ")?A.obj:null}static detect3DModelFormatName(e){const t=this.detect3DModel(e);return t?{"model/obj":"Wavefront OBJ","model/gltf-binary":"GL Transmission Format Binary","model/gltf+json":"GL Transmission Format","application/x-fbx":"Autodesk FBX","model/stl":"STereoLithography","model/ply":"Polygon File Format","model/vnd.collada+xml":"COLLADA","application/x-3ds":"3D Studio","model/step":"STEP","model/iges":"IGES","model/x3d+xml":"X3D","application/x-blender":"Blender"}[t]||"Unknown 3D Format":null}static detectSvg(e){return new TextDecoder().decode(e.slice(0,200)).includes("<svg")?I.svg:null}}async function Pe(i){var e;if(i instanceof u)return i.getContentType();if(K(i))return i.content_type;if(ee(i))return i.type;if(typeof i=="string"&&$(i)){const t=(e=new URL(i).pathname.split(".").pop())==null?void 0:e.toLowerCase();if(t){const s=V(t);if(s)return s}try{const s=await fetch(i,{method:"HEAD",headers:{"User-Agent":"MediaFile/1.0.0"}});if(s.ok){const n=s.headers.get("content-type");if(n)return n}}catch{}}if(typeof i=="string"&&i.startsWith("data:")){const t=i.match(/^data:([^;,]+)/);if(t&&t[1])return t[1]}if(typeof i=="string"&&typeof window>"u")try{const t=await import("fs/promises"),s=await import("path");await t.access(i);const n=s.extname(i).slice(1).toLowerCase();if(n){const o=V(n);if(o)return o}}catch{}if(typeof Blob<"u"&&i instanceof Blob){if(!i.type||i.type==="application/octet-stream")try{const t=await i.slice(0,1024).arrayBuffer(),s=R.detectMime(t);if(s)return s}catch{}return i.type}if(i instanceof ArrayBuffer||i instanceof Uint8Array){let t;return i instanceof Uint8Array?typeof SharedArrayBuffer<"u"&&i.buffer instanceof SharedArrayBuffer?(t=new ArrayBuffer(i.byteLength),new Uint8Array(t).set(i)):t=i.buffer.slice(i.byteOffset,i.byteOffset+i.byteLength):t=i,R.detectMime(t)}return null}function $(i){try{const e=new URL(i);return e.protocol==="http:"||e.protocol==="https:"}catch{return!1}}function De(i){if(typeof i!="string"||!$(i))return null;try{const e=((new URL(i).pathname||"").split("/").pop()||"").split("?")[0].split("#")[0].split("."),t=e.length>1?e.pop().toLowerCase():"";return t?V(t):null}catch{return null}}function je(i){return i.startsWith("data:")||Se(i)}function Se(i){return/^[A-Za-z0-9+/=]+$/.test(i)&&i.length%4===0}async function Y(i){if(!_)return!1;try{return(await(await import("fs/promises")).stat(i)).isFile()}catch{return!1}}function ee(i){return i&&typeof i=="object"&&typeof i.data=="string"&&typeof i.type=="string"&&typeof i.name=="string"}function K(i){return i&&typeof i=="object"&&"file_name"in i&&"content_type"in i&&"content"in i}class S{static async create(e){if(e==null)throw new Error("Cannot create MediaFile from null or undefined data");const t=await Pe(e);let s=j.default;return t&&t.startsWith("image/")?s=j.image:t&&t.startsWith("audio/")?s=j.audio:t&&t.startsWith("video/")?s=j.video:t&&(t.startsWith("model/")||t==="application/x-blender")&&(s=j.asset_3d),new s().fromAny(e)}}class u{constructor(e="file",t="application/octet-stream"){F(this,"content_type"),F(this,"file_name"),F(this,"_content",null),this.content_type=t,this.file_name=e}static async create(e){return S.create(e)}async fromAny(e){if(e==null)throw new Error("Cannot create MediaFile from null or undefined data");if(e instanceof u)return e;if(ee(e)){if(this.file_name=e.name||"file",this.content_type=e.type,typeof e.data=="string")return this.fromBase64(e.data);throw new Error("Invalid data format in FileReader object")}if(_&&this._isBuffer(e))return this.fromBytes(e);if(typeof File<"u"&&e instanceof File){this.file_name=e.name,this.content_type=e.type||"application/octet-stream";const t=await e.arrayBuffer();return this.fromBytes(t)}if(typeof Blob<"u"&&e instanceof Blob){const t=await e.arrayBuffer();return this.fromBytes(t)}if(e instanceof ArrayBuffer||e instanceof Uint8Array)return this.fromBytes(e);if(typeof e=="string"){if($(e))return await this.fromUrl(e);if(je(e))return this.fromBase64(e);if(await Y(e))return await this.fromFile(e);throw typeof e=="string"?new Error("Invalid data type for MediaFile "+e):new Error("Invalid data type for MediaFile")}return K(e)?await this.fromDict(e):this}async fromFile(e){if(!_)throw new Error("Loading from file path is only supported in Node.js environment");try{const t=await(await import("fs/promises")).readFile(e),s=await import("path");return this.file_name=s.basename(e),this._content=this._bufferToArrayBuffer(t),this._setContentTypeFromFileName(),this}catch(t){throw new Error(`Failed to load file from path: ${e}. ${t.message}`)}}async fromUrl(e,t){const s=async(n,o)=>{const a={};return o&&Object.keys(o).length>0?a.headers=o:_&&(a.headers={"User-Agent":"MediaFile/1.0.0"}),await fetch(n,a)};try{let n=await s(e,t);if(!n.ok){if(n.status===401||n.status===403){const r=new URL(e);r.search="",n=await s(r.toString(),t)}if(!n.ok)throw new Error(`HTTP error! Status: ${n.status}`)}const o=n.headers.get("content-type");this.content_type=o?o.split(";")[0].trim():"application/octet-stream";const a=n.headers.get("content-disposition");if(a){const r=a.match(/filename=(?:['"]?)([^'";\n]+)/i);r&&r[1]&&(this.file_name=r[1])}if(!this.file_name||this.file_name==="file"){const r=new URL(e).pathname.split("/"),l=r[r.length-1];l&&l.trim()!==""?this.file_name=decodeURIComponent(l):this.file_name="downloaded_file"}return(!this.content_type||this.content_type==="application/octet-stream")&&this._setContentTypeFromFileName(),this._content=await n.arrayBuffer(),this}catch(n){throw new Error(`Failed to load file from URL: ${e}. ${n.message}`)}}fromBase64(e){const{data:t,mediaType:s}=this._parseBase64Uri(e);s&&(this.content_type=s);try{return this._content=_?this._decodeBase64NodeJs(t):this._decodeBase64Browser(t),this}catch(n){throw new Error(`Failed to decode base64 data: ${n.message}`)}}fromBytes(e){if(typeof SharedArrayBuffer<"u"&&e instanceof SharedArrayBuffer){const n=new Uint8Array(e),o=new ArrayBuffer(n.byteLength);return new Uint8Array(o).set(n),this._content=o,this}if(e instanceof Uint8Array){if(typeof SharedArrayBuffer<"u"&&e.buffer instanceof SharedArrayBuffer){const n=new ArrayBuffer(e.byteLength);new Uint8Array(n).set(e),this._content=n}else this._content=e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength);return this}if(_&&this._isBuffer(e)){const n=e;if(typeof SharedArrayBuffer<"u"&&n.buffer instanceof SharedArrayBuffer){const o=new ArrayBuffer(n.byteLength);new Uint8Array(o).set(n),this._content=o}else this._content=n.buffer.slice(n.byteOffset,n.byteOffset+n.byteLength);return this}const t=new Uint8Array(e),s=new ArrayBuffer(t.byteLength);return new Uint8Array(s).set(t),this._content=s,this}async fromDict(e){if(!e.content)throw new Error("Invalid FileResult object: missing content");return this.file_name=e.file_name,this.content_type=e.content_type,await this.fromAny(e.content)}toBlob(){if(this._ensureContent(),typeof Blob>"u")throw new Error("Blob is not available in this environment");return new Blob([new Uint8Array(this._content)],{type:this.content_type})}toArrayBuffer(){return this._ensureContent(),this._content}toUint8Array(){return this._ensureContent(),new Uint8Array(this._content)}toBuffer(){if(this._ensureContent(),!_)throw new Error("Buffer is only available in Node.js environment");return Buffer.from(this._content)}toBase64(e=!0){this._ensureContent();let t;if(_)t=Buffer.from(this._content).toString("base64");else{const s=new Uint8Array(this._content);let n="";const o=10240;for(let a=0;a<s.length;a+=o){const r=s.subarray(a,Math.min(a+o,s.length));n+=String.fromCharCode.apply(null,Array.from(r))}t=btoa(n)}return e?`data:${this.content_type};base64,${t}`:t}toJson(){return{file_name:this.file_name,content_type:this.content_type,content:this.toBase64()}}async save(e){this._ensureContent();const t=e||this.file_name;if(_)try{const s=await import("fs/promises").then(a=>a.default||a),n=await import("path").then(a=>a.default||a);if(!n||typeof n.dirname!="function")throw new Error("Failed to load 'path' module.");const o=n.dirname(t);o!=="."&&await s.mkdir(o,{recursive:!0}).catch(()=>{}),await s.writeFile(t,Buffer.from(this._content))}catch(s){throw new Error(`Failed to save file: ${s.message}`)}else{const s=this.toBlob(),n=URL.createObjectURL(s),o=document.createElement("a");o.href=n,o.download=t,document.body.appendChild(o),o.click(),setTimeout(()=>{document.body.removeChild(o),URL.revokeObjectURL(n)},100)}}fileSize(e="bytes"){if(!this._content)return 0;const t=this._content.byteLength;switch(e){case"kb":return t/1024;case"mb":return t/(1024*1024);case"gb":return t/(1024*1024*1024);default:return t}}get extension(){var e;if(this.content_type&&this.content_type!=="application/octet-stream"){const t={"image/jpeg":"jpg","image/png":"png","image/gif":"gif","image/webp":"webp","image/svg+xml":"svg","audio/mpeg":"mp3","audio/wav":"wav","audio/ogg":"ogg","video/mp4":"mp4","video/quicktime":"mov","application/pdf":"pdf","text/plain":"txt","text/html":"html","application/json":"json"};if(this.content_type in t)return t[this.content_type];if(_)try{const s=require("mime-types").extension(this.content_type);if(s)return s}catch{}}return this.file_name&&this.file_name.includes(".")&&((e=this.file_name.split(".").pop())==null?void 0:e.toLowerCase())||null}getFileName(){return this.file_name}setFileName(e){this.file_name=e}getContentType(){return this.content_type}setContentType(e){this.content_type=e}read(){return this._ensureContent(),this._content}isEmpty(){return!this._content||this._content.byteLength===0}getInfo(){return{fileName:this.file_name,contentType:this.content_type,size:this.fileSize(),extension:this.extension}}_setContentTypeFromFileName(){var e;if(!this.file_name)return;const t=(e=this.file_name.split(".").pop())==null?void 0:e.toLowerCase();if(!t)return;if(_)try{const n=require("mime-types").lookup(this.file_name);if(n){this.content_type=n;return}}catch{}const s={jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",gif:"image/gif",webp:"image/webp",svg:"image/svg+xml",mp3:"audio/mpeg",wav:"audio/wav",ogg:"audio/ogg",mp4:"video/mp4",mov:"video/quicktime",pdf:"application/pdf",txt:"text/plain",html:"text/html",htm:"text/html",json:"application/json",js:"application/javascript",css:"text/css",xml:"application/xml",zip:"application/zip"};t in s&&(this.content_type=s[t])}_parseBase64Uri(e){if(e.startsWith("data:")){const[t,s]=e.split(",",2),n=t.match(/^data:([^;,]+)/),o=n?n[1]:null;return{data:s,mediaType:o}}return{data:e,mediaType:null}}_ensureContent(){if(!this._content)throw new Error("No content available. Load content first using fromFile, fromUrl, etc.")}_isBuffer(e){return _&&Buffer.isBuffer(e)}_decodeBase64NodeJs(e){const t=Buffer.from(e,"base64");return this._bufferToArrayBuffer(t)}_decodeBase64Browser(e){const t=atob(e),s=new Uint8Array(t.length);for(let n=0;n<t.length;n++)s[n]=t.charCodeAt(n);return s.buffer}_bufferToArrayBuffer(e){if(typeof SharedArrayBuffer<"u"&&e.buffer instanceof SharedArrayBuffer){const t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(new Uint8Array(e)),t}else return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}}class z extends u{constructor(e="image",t="image/png"){super(e,t)}static async create(e){if(e==null)throw new Error("Cannot create ImageFile from null or undefined data");return new z().fromAny(e)}async fromAny(e){if(e instanceof z)return e;if(e instanceof u&&!(e instanceof z)){if(e.isEmpty())throw new Error("Cannot create ImageFile from empty MediaFile");return this.file_name=e.getFileName()||"image",this.content_type=e.getContentType(),this._content=e.read(),this._validateImageContentType(),this}const t=await super.fromAny(e);return t.file_name=t.file_name||"image",t._validateImageContentType(),t}toImageElement(e={}){if(typeof window>"u")throw new Error("Image elements are only available in browser environments");this._ensureContent();const t=this.toBase64(),{width:s,height:n,alt:o="",className:a=""}=e,r=s?` width="${s}"`:"",l=n?` height="${n}"`:"",m=a?` class="${a}"`:"";return`<img src="${t}" alt="${o}"${r}${l}${m}>`}toDOMImageElement(e={}){if(typeof window>"u")throw new Error("DOM Image elements are only available in browser environments");this._ensureContent();const t=this.toBlob(),s=URL.createObjectURL(t),n=new Image;return e.width&&(n.width=e.width),e.height&&(n.height=e.height),e.alt&&(n.alt=e.alt),e.className&&(n.className=e.className),n.src=s,n.addEventListener("load",()=>{setTimeout(()=>URL.revokeObjectURL(s),1e3)}),n}async getDimensions(){if(typeof window>"u")throw new Error("Getting image dimensions is only available in browser environments");return new Promise((e,t)=>{const s=new Image;s.onload=()=>{e({width:s.naturalWidth,height:s.naturalHeight})},s.onerror=()=>{t(new Error("Failed to load image for dimension calculation"))};const n=this.toBlob(),o=URL.createObjectURL(n);s.src=o,s.addEventListener("load",()=>{URL.revokeObjectURL(o)},{once:!0})})}_validateImageContentType(){var e;if(this.content_type.startsWith("image/"))return;const t=(e=this.extension)==null?void 0:e.toLowerCase();if(t&&t in I){this.content_type=I[t];return}if(this._content){const s=R.detectImageFormat(this._content);if(s){this.content_type=s;return}}this.content_type=I.png}}class T extends u{constructor(e="audio",t="audio/wav"){super(e,t)}static async create(e){if(e==null)throw new Error("Cannot create AudioFile from null or undefined data");return new T().fromAny(e)}async fromAny(e){if(e instanceof T)return e;if(e instanceof u&&!(e instanceof T)){if(e.isEmpty())throw new Error("Cannot create AudioFile from empty MediaFile");return this.file_name=e.getFileName()||"audio",this.content_type=e.getContentType(),this._content=e.read(),this._validateAudioContentType(),this}const t=await super.fromAny(e);return t.file_name=t.file_name||"audio",t._validateAudioContentType(),t}toAudioElement(){if(typeof window>"u")throw new Error("Audio elements are only available in browser environments");this._ensureContent();const e=this.toBlob(),t=URL.createObjectURL(e),s=new Audio(t);return s.addEventListener("canplaythrough",()=>{setTimeout(()=>URL.revokeObjectURL(t),1e3)}),s}async play(){if(typeof window>"u")throw new Error("Audio playback is only available in browser environments");const e=this.toAudioElement();return new Promise((t,s)=>{e.addEventListener("play",()=>t()),e.addEventListener("error",n=>s(new Error(`Audio playback error: ${n}`))),e.play().catch(s)})}async getDuration(){if(typeof window>"u")throw new Error("Getting audio duration is only available in browser environments");const e=this.toAudioElement();return new Promise(t=>{if(e.duration&&!isNaN(e.duration)){t(e.duration);return}e.addEventListener("loadedmetadata",()=>{t(e.duration)})})}toHTMLPlayer(e={}){const t=this.toBase64(),{controls:s=!0,autoplay:n=!1,loop:o=!1}=e;return`<audio src="${t}" ${s?"controls":""} ${n?"autoplay":""} ${o?"loop":""}> Your browser does not support the audio element. </audio>`}_validateAudioContentType(){var e;if(this.content_type.startsWith("audio/"))return;const t=(e=this.extension)==null?void 0:e.toLowerCase();if(t&&t in M){this.content_type=M[t];return}if(this._content){const s=R.detectAudioFormat(this._content);if(s){this.content_type=s;return}}this.content_type=M.mp3}}class L extends u{constructor(e="video",t="video/mp4"){super(e,t)}static async create(e){if(e==null)throw new Error("Cannot create VideoFile from null or undefined data");return new L().fromAny(e)}async fromAny(e){if(e instanceof L)return e;if(e instanceof u&&!(e instanceof L)){if(e.isEmpty())throw new Error("Cannot create VideoFile from empty MediaFile");return this.file_name=e.getFileName()||"video",this.content_type=e.getContentType(),this._content=e.read(),this._validateVideoContentType(),this}const t=await super.fromAny(e);return t.file_name=t.file_name||"video",t._validateVideoContentType(),t}toVideoElement(){if(typeof window>"u")throw new Error("Video elements are only available in browser environments");this._ensureContent();const e=this.toBlob(),t=URL.createObjectURL(e),s=document.createElement("video");return s.src=t,s.addEventListener("loadedmetadata",()=>{setTimeout(()=>URL.revokeObjectURL(t),1e3)}),s}async play(){if(typeof window>"u")throw new Error("Video playback is only available in browser environments");const e=this.toVideoElement();return new Promise((t,s)=>{e.addEventListener("play",()=>t()),e.addEventListener("error",n=>s(new Error(`Video playback error: ${n}`))),e.play().catch(s)})}async getDuration(){if(typeof window>"u")throw new Error("Getting video duration is only available in browser environments");const e=this.toVideoElement();return new Promise(t=>{if(e.duration&&!isNaN(e.duration)){t(e.duration);return}e.addEventListener("loadedmetadata",()=>{t(e.duration)})})}async getDimensions(){if(typeof window>"u")throw new Error("Getting video dimensions is only available in browser environments");const e=this.toVideoElement();return new Promise(t=>{if(e.videoWidth&&e.videoHeight){t({width:e.videoWidth,height:e.videoHeight});return}e.addEventListener("loadedmetadata",()=>{t({width:e.videoWidth,height:e.videoHeight})})})}async createThumbnail(e=0){if(typeof window>"u")throw new Error("Creating thumbnails is only available in browser environments");const t=this.toVideoElement();return new Promise((s,n)=>{t.addEventListener("loadedmetadata",async()=>{try{t.currentTime=e,await new Promise(r=>{const l=()=>{t.removeEventListener("seeked",l),r()};t.addEventListener("seeked",l)});const o=document.createElement("canvas");o.width=t.videoWidth,o.height=t.videoHeight;const a=o.getContext("2d");if(!a)throw new Error("Failed to get canvas context");a.drawImage(t,0,0,o.width,o.height),o.toBlob(r=>{r?s(r):n(new Error("Failed to create thumbnail blob"))},"image/jpeg",.95)}catch(o){n(o)}}),t.addEventListener("error",o=>{n(new Error(`Video loading error: ${o}`))})})}toHtmlPlayer(e={}){const t=this.toBase64(),{controls:s=!0,autoplay:n=!1,loop:o=!1,muted:a=!1,width:r,height:l,poster:m}=e;return`<video src="${t}" ${s?"controls":""} ${n?"autoplay":""} ${o?"loop":""} ${a?"muted":""} ${r?`width="${r}"`:""} ${l?`height="${l}"`:""} ${m?`poster="${m}"`:""}> Your browser does not support the video element. </video>`}_validateVideoContentType(){var e;if(this.content_type.startsWith("video/"))return;const t=(e=this.extension)==null?void 0:e.toLowerCase();if(t&&t in k){this.content_type=k[t];return}if(this._content){const s=R.detectVideoFormat(this._content);if(s){this.content_type=s;return}}this.content_type=k.mp4}}class N extends u{constructor(e="model",t="model/obj"){super(e,t)}static async create(e){if(e==null)throw new Error("Cannot create Model3DFile from null or undefined data");return new N().fromAny(e)}async fromAny(e){if(e instanceof N)return e;if(e instanceof u&&!(e instanceof N)){if(e.isEmpty())throw new Error("Cannot create Model3DFile from empty MediaFile");return this.file_name=e.getFileName()||"model",this.content_type=e.getContentType(),this._content=e.read(),this._validateModel3DContentType(),this}const t=await super.fromAny(e);return t.file_name=t.file_name||"model",t._validateModel3DContentType(),t}getModelInfo(){this._ensureContent();const e={format:R.detect3DModelFormatName(this._content)||this.getModelFormat()};if(e.estimatedSize=this.fileSize(),this._content){const t=new TextDecoder().decode(this._content.slice(0,Math.min(1024,this._content.byteLength)));e.hasTextures=t.includes(".jpg")||t.includes(".png")||t.includes(".tga")||t.includes("material")||t.includes("texture")}return e}getModelFormat(){var e;const t=(e=this.extension)==null?void 0:e.toLowerCase();return{obj:"Wavefront OBJ",glb:"GL Transmission Format Binary",gltf:"GL Transmission Format",dae:"COLLADA",fbx:"Autodesk FBX","3ds":"3D Studio",ply:"Polygon File Format",stl:"STereoLithography",step:"STEP",iges:"IGES",x3d:"X3D",blend:"Blender"}[t||""]||"Unknown 3D Format"}_validateModel3DContentType(){var e;if(this.content_type.startsWith("model/")||this.content_type==="application/x-blender")return;const t=(e=this.extension)==null?void 0:e.toLowerCase();if(t&&t in A){this.content_type=A[t];return}if(this._content){const s=R.detect3DModel(this._content);if(s){this.content_type=s;return}}this.content_type=A.obj}}class E{constructor(e={}){F(this,"_mediaFiles",[]),F(this,"_urlFiles",[]),F(this,"_nonProcessableFiles",[]),F(this,"_mediaContainers",[]),F(this,"downloadFiles"),F(this,"readSystemFiles"),F(this,"fileName"),this.fileName=e.fileName||"MediaList",this.downloadFiles=e.downloadFiles!==void 0?e.downloadFiles:!0,this.readSystemFiles=e.readSystemFiles!==void 0?e.readSystemFiles:!0,e.files&&this._initializeFiles(e.files)}_initializeFiles(e){for(const t of e)t instanceof u?this._addMediaFile(t):this._nonProcessableFiles.push(t)}async fromAny(e){if(!e||!Array.isArray(e))return this;for(const t of e)await this._processFile(t);return this}async _processFile(e){if(e instanceof u)return this._addMediaFile(e),e;if(e==null||typeof e=="string"&&e.length===0)return this._nonProcessableFiles.push(e),e;if(typeof e=="string"){if($(e)){if(!this.downloadFiles)return this._urlFiles.push(e),e;try{const t=await S.create(e);return this._addMediaFile(t),t}catch{return this._nonProcessableFiles.push(e),e}}if(await Y(e)){if(!this.readSystemFiles)return this._nonProcessableFiles.push(e),e;try{const t=await S.create(e);return this._addMediaFile(t),t}catch{return this._nonProcessableFiles.push(e),e}}}try{const t=await S.create(e);return this._addMediaFile(t),t}catch{return this._nonProcessableFiles.push(e),e}}_addMediaFile(e){this._mediaFiles.push(e),this._isMediaContainer(e)&&this._mediaContainers.push(e)}_isMediaContainer(e){return e&&typeof e=="object"&&"getProcessableFiles"in e&&"getLeafFiles"in e}get _allItems(){return[...this._mediaFiles,...this._urlFiles,...this._nonProcessableFiles]}getLeafFiles(){const e=[],t=[];for(let s=0;s<this._mediaFiles.length;s++){const n=this._mediaFiles[s];this._mediaContainers.includes(n)||(e.push(n),t.push(s))}return{files:e,indices:t}}getMediaContainers(){const e=[],t=[];for(const s of this._mediaContainers){const n=this._mediaFiles.indexOf(s);n!==-1&&(e.push(s),t.push(n))}retu