iom-sdk 0.2.4 → 0.2.5

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.esm.js CHANGED
@@ -3,5 +3,5 @@ import*as e from"https";import t from"axios";import{z as i}from"zod";var r,n;!fu
3
3
  * hash-wasm (https://www.npmjs.com/package/hash-wasm)
4
4
  * (c) Dani Biro
5
5
  * @license MIT
6
- */function _(e,t,i,r){return new(i||(i=Promise))((function(t,n){function o(e){try{a(r.next(e))}catch(e){n(e)}}function s(e){try{a(r.throw(e))}catch(e){n(e)}}function a(e){var r;e.done?t(e.value):(r=e.value,r instanceof i?r:new i((function(e){e(r)}))).then(o,s)}a((r=r.apply(e,[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;class Z{constructor(){this.mutex=Promise.resolve()}lock(){let e=()=>{};return this.mutex=this.mutex.then((()=>new Promise(e))),new Promise((t=>{e=t}))}dispatch(e){return _(this,0,void 0,(function*(){const t=yield this.lock();try{return yield Promise.resolve(e())}finally{t()}}))}}var V;const Y="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,W=null!==(V=Y.Buffer)&&void 0!==V?V:null,$=Y.TextEncoder?new Y.TextEncoder:null;function ee(e,t){return(15&e)+(e>>6|e>>3&8)<<4|(15&t)+(t>>6|t>>3&8)}const te="a".charCodeAt(0)-10,ie="0".charCodeAt(0);function re(e,t,i){let r=0;for(let n=0;n<i;n++){let i=t[n]>>>4;e[r++]=i>9?i+te:i+ie,i=15&t[n],e[r++]=i>9?i+te:i+ie}return String.fromCharCode.apply(null,e)}const ne=null!==W?e=>{if("string"==typeof e){const t=W.from(e,"utf8");return new Uint8Array(t.buffer,t.byteOffset,t.length)}if(W.isBuffer(e))return new Uint8Array(e.buffer,e.byteOffset,e.length);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);throw new Error("Invalid data type!")}:e=>{if("string"==typeof e)return $.encode(e);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);throw new Error("Invalid data type!")},oe="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",se=new Uint8Array(256);for(let e=0;e<64;e++)se[oe.charCodeAt(e)]=e;function ae(e){const t=function(e){let t=Math.floor(.75*e.length);const i=e.length;return"="===e[i-1]&&(t-=1,"="===e[i-2]&&(t-=1)),t}(e),i=e.length,r=new Uint8Array(t);let n=0;for(let t=0;t<i;t+=4){const i=se[e.charCodeAt(t)],o=se[e.charCodeAt(t+1)],s=se[e.charCodeAt(t+2)],a=se[e.charCodeAt(t+3)];r[n]=i<<2|o>>4,n+=1,r[n]=(15&o)<<4|s>>2,n+=1,r[n]=(3&s)<<6|63&a,n+=1}return r}const Ae=16384,de=new Z,ce=new Map;function le(e,t){return _(this,0,void 0,(function*(){let i=null,r=null,n=!1;if("undefined"==typeof WebAssembly)throw new Error("WebAssembly is not supported in this environment!");const o=()=>new DataView(i.exports.memory.buffer).getUint32(i.exports.STATE_SIZE,!0),s=de.dispatch((()=>_(this,0,void 0,(function*(){if(!ce.has(e.name)){const t=ae(e.data),i=WebAssembly.compile(t);ce.set(e.name,i)}const t=yield ce.get(e.name);i=yield WebAssembly.instantiate(t,{})})))),a=(e=null)=>{n=!0,i.exports.Hash_Init(e)},A=e=>{if(!n)throw new Error("update() called before init()");(e=>{let t=0;for(;t<e.length;){const n=e.subarray(t,t+Ae);t+=n.length,r.set(n),i.exports.Hash_Update(n.length)}})(ne(e))},d=new Uint8Array(2*t),c=(e,o=null)=>{if(!n)throw new Error("digest() called before init()");return n=!1,i.exports.Hash_Final(o),"binary"===e?r.slice(0,t):re(d,r,t)},l=e=>"string"==typeof e?e.length<4096:e.byteLength<Ae;let g=l;switch(e.name){case"argon2":case"scrypt":g=()=>!0;break;case"blake2b":case"blake2s":g=(e,t)=>t<=512&&l(e);break;case"blake3":g=(e,t)=>0===t&&l(e);break;case"xxhash64":case"xxhash3":case"xxhash128":case"crc64":g=()=>!1}return yield(()=>_(this,0,void 0,(function*(){i||(yield s);const e=i.exports.Hash_GetBuffer(),t=i.exports.memory.buffer;r=new Uint8Array(t,e,Ae)})))(),{getMemory:()=>r,writeMemory:(e,t=0)=>{r.set(e,t)},getExports:()=>i.exports,setMemorySize:e=>{i.exports.Hash_SetMemorySize(e);const t=i.exports.Hash_GetBuffer(),n=i.exports.memory.buffer;r=new Uint8Array(n,t,e)},init:a,update:A,digest:c,save:()=>{if(!n)throw new Error("save() can only be called after init() and before digest()");const t=i.exports.Hash_GetState(),r=o(),s=i.exports.memory.buffer,a=new Uint8Array(s,t,r),A=new Uint8Array(4+r);return function(e,t){const i=t.length>>1;for(let r=0;r<i;r++){const i=r<<1;e[r]=ee(t.charCodeAt(i),t.charCodeAt(i+1))}}(A,e.hash),A.set(a,4),A},load:t=>{if(!(t instanceof Uint8Array))throw new Error("load() expects an Uint8Array generated by save()");const r=i.exports.Hash_GetState(),s=o(),a=4+s,A=i.exports.memory.buffer;if(t.length!==a)throw new Error(`Bad state length (expected ${a} bytes, got ${t.length})`);if(!function(e,t){if(e.length!==2*t.length)return!1;for(let i=0;i<t.length;i++){const r=i<<1;if(t[i]!==ee(e.charCodeAt(r),e.charCodeAt(r+1)))return!1}return!0}(e.hash,t.subarray(0,4)))throw new Error("This state was written by an incompatible hash implementation");const d=t.subarray(4);new Uint8Array(A,r,s).set(d),n=!0},calculate:(e,n=null,o=null)=>{if(!g(e,n))return a(n),A(e),c("hex",o);const s=ne(e);return r.set(s),i.exports.Hash_Calculate(s.length,n,o),re(d,r,t)},hashLength:t}}))}new Z,new Z,new Z,new Z,new Z,new Z,new Z,new Z,new Z,new Z,new Z;var ge={name:"sha256",data:"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c2pBx6KerX1qIhkgASADcyACcSABIANxcyABQR53IAFBE3dzIAFBCndzaiAaaiICaiIJIBMgEnNxIBJzaiAJQRp3IAlBFXdzIAlBB3dzakHRxqk2aiIaIAIgAXMgA3EgAiABcXMgAkEedyACQRN3cyACQQp3c2ogGGoiA2oiESAJIBNzcSATc2ogEUEadyARQRV3cyARQQd3c2pB59KkoQFqIhggAyACcyABcSADIAJxcyADQR53IANBE3dzIANBCndzaiAUaiIBaiISIBEgCXNxIAlzaiASQRp3IBJBFXdzIBJBB3dzakGFldy9AmoiFCABIANzIAJxIAEgA3FzIAFBHncgAUETd3MgAUEKd3NqIBdqIgJqIhMgI2ogJiASaiAiIBFqICUgCWogEyASIBFzcSARc2ogE0EadyATQRV3cyATQQd3c2pBuMLs8AJqIhcgAiABcyADcSACIAFxcyACQR53IAJBE3dzIAJBCndzaiAZaiIDaiIJIBMgEnNxIBJzaiAJQRp3IAlBFXdzIAlBB3dzakH827HpBGoiGSADIAJzIAFxIAMgAnFzIANBHncgA0ETd3MgA0EKd3NqIBpqIgFqIhEgCSATc3EgE3NqIBFBGncgEUEVd3MgEUEHd3NqQZOa4JkFaiIaIAEgA3MgAnEgASADcXMgAUEedyABQRN3cyABQQp3c2ogGGoiAmoiEiARIAlzcSAJc2ogEkEadyASQRV3cyASQQd3c2pB1OapqAZqIhggAiABcyADcSACIAFxcyACQR53IAJBE3dzIAJBCndzaiAUaiIDaiITaiAoIBJqICQgEWogJyAJaiATIBIgEXNxIBFzaiATQRp3IBNBFXdzIBNBB3dzakG7laizB2oiFCADIAJzIAFxIAMgAnFzIANBHncgA0ETd3MgA0EKd3NqIBdqIgFqIgkgEyASc3EgEnNqIAlBGncgCUEVd3MgCUEHd3NqQa6Si454aiIXIAEgA3MgAnEgASADcXMgAUEedyABQRN3cyABQQp3c2ogGWoiAmoiESAJIBNzcSATc2ogEUEadyARQRV3cyARQQd3c2pBhdnIk3lqIhkgAiABcyADcSACIAFxcyACQR53IAJBE3dzIAJBCndzaiAaaiIDaiISIBEgCXNxIAlzaiASQRp3IBJBFXdzIBJBB3dzakGh0f+VemoiGiADIAJz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",hash:"8c18dd94"};new Z,new Z,new Z,new Z,new Z,new Z,new Z,new Z,new Z,new Z,new Z;const ue=1048576;function Ie(e,t){return I(this,void 0,void 0,(function*(){return function(e){if(e.length%2!=0)throw new Error(`hexToBase64: odd-length hex string (len=${e.length})`);const t=new Uint8Array(e.length/2);for(let i=0;i<e.length;i+=2)t[i/2]=parseInt(e.substring(i,i+2),16);let i="";for(let e=0;e<t.length;e++)i+=String.fromCharCode(t[e]);return"undefined"!=typeof btoa?btoa(i):Buffer.from(t).toString("base64")}(yield he(e,"hex",null==t?void 0:t.signal))}))}function he(e,t,i){return I(this,void 0,void 0,(function*(){if(null==i?void 0:i.aborted)throw new DOMException("Aborted","AbortError");const t=yield le(ge,32).then((e=>{e.init(256);const t={init:()=>(e.init(256),t),update:i=>(e.update(i),t),digest:t=>e.digest(t),save:()=>e.save(),load:i=>(e.load(i),t),blockSize:64,digestSize:32};return t}));t.init();const r=e.size;for(let n=0;n<r;n+=ue){if(null==i?void 0:i.aborted)throw new DOMException("Aborted","AbortError");const o=Math.min(n+ue,r),s=e.slice(n,o),a=new Uint8Array(yield s.arrayBuffer());t.update(a)}return t.digest("hex")}))}class Ee{hashFullFile(e,t){return function(e,t){return I(this,void 0,void 0,(function*(){return he(e,0,null==t?void 0:t.signal)}))}(e,{signal:t})}hashPart(e,t){return Ie(e,{signal:t})}dispose(){}}function Be(){return new Ee}class ye{constructor(e,t,i,r=Be){this.axios=i,this.hasherFactory=r}initUpload(e,t){return I(this,void 0,void 0,(function*(){return(yield this.axios.post("/api/FileStorage/init",e,{signal:null==t?void 0:t.signal})).data}))}refreshUploadUrls(e,t,i){return I(this,void 0,void 0,(function*(){const r=(null==t?void 0:t.length)?{partNumbers:t}:{},n=yield this.axios.post((e=>`/api/FileStorage/${encodeURIComponent(e)}/refresh`)(e),r,{signal:null==i?void 0:i.signal});return n.data}))}completeUpload(e,t,i){return I(this,void 0,void 0,(function*(){const r={parts:t},n=yield this.axios.post((e=>`/api/FileStorage/${encodeURIComponent(e)}/complete`)(e),r,{signal:null==i?void 0:i.signal});return n.data}))}abortUpload(e){return I(this,void 0,void 0,(function*(){try{const t=new AbortController,i=setTimeout((()=>t.abort()),2e3);try{yield this.axios.delete((e=>`/api/FileStorage/${encodeURIComponent(e)}`)(e),{signal:t.signal})}finally{clearTimeout(i)}}catch(e){}}))}getMetadata(e,t){return I(this,void 0,void 0,(function*(){const i=yield this.axios.get((e=>`/api/FileStorage/${encodeURIComponent(e)}`)(e),{signal:null==t?void 0:t.signal});return i.data}))}softDelete(e,t){return I(this,void 0,void 0,(function*(){yield this.axios.delete((e=>`/api/FileStorage/${encodeURIComponent(e)}/delete`)(e),{signal:null==t?void 0:t.signal})}))}getPreviewUrl(e,t){return I(this,void 0,void 0,(function*(){const i=yield this.axios.get((e=>`/api/FileStorage/${encodeURIComponent(e)}/preview-url`)(e),{signal:null==t?void 0:t.signal});return i.data}))}getDownloadUrl(e,t){return I(this,void 0,void 0,(function*(){const i=yield this.axios.get((e=>`/api/FileStorage/${encodeURIComponent(e)}/download`)(e),{signal:null==t?void 0:t.signal});return i.data}))}uploadFile(e){return I(this,void 0,void 0,(function*(){const{file:t,fileName:i,contentType:r,onProgress:n,signal:s,concurrency:a}=e;Ce(s);const A=Math.min(8,Math.max(1,null!=a?a:6)),d=null!=i?i:t instanceof File?t.name:"file",c=null!=r?r:t instanceof File?t.type:"application/octet-stream",l=this.hasherFactory(),g=function(e,t){if(!t)return{set:(e,t)=>{},flush:()=>{}};const i=new Map;let r=0,n=0,o=!1;const s=()=>{o=!1,n=Date.now();let s=0;for(const e of i.values())s+=e;const a=Math.max(r,Math.min(e,s));r=a,t(a,e)};return{set(e,t){i.set(e,t);const r=Date.now();r-n>=100?s():o||(o=!0,setTimeout(s,100-(r-n)))},flush(){s()}}}(t.size,n);let u;try{const e=yield l.hashFullFile(t,s),i=yield this.initUpload({fileName:d,mimeType:c,size:t.size,sha256:e},{signal:s});if(u=i.uploadId,0===i.urls.length)throw new o("InvalidRequest","init returned no presigned URLs");if(1===i.urls.length&&null===i.partSize){const e=i.checksumValidation?yield l.hashPart(t,s):void 0,r=yield pe({url:i.urls[0],body:t,contentType:c,checksumSHA256:e,signal:s,onProgress:e=>g.set(1,e)});g.flush();const n=e?{partNumber:1,etag:r,checksumSHA256:e}:{partNumber:1,etag:r};return this.completeUpload(i.uploadId,[n],{signal:s})}if(null===i.partSize)throw new o("InvalidRequest","multipart init returned null partSize");const r=yield this.runMultipart({init:i,file:t,contentType:c,concurrency:A,hasher:l,onPartLoaded:(e,t)=>g.set(e,t),signal:s});return g.flush(),this.completeUpload(i.uploadId,r,{signal:s})}catch(e){const t=function(e){if(e instanceof o)return e;if(e instanceof DOMException&&"AbortError"===e.name)return new o("Aborted",e.message,{cause:e});return e}(e);throw u&&this.abortUpload(u),t}finally{l.dispose()}}))}runMultipart(e){return I(this,void 0,void 0,(function*(){const{init:t,file:i,contentType:r,concurrency:n,hasher:s,onPartLoaded:a,signal:A}=e,d=!0===t.checksumValidation,c=t.urls.length,l=new Map;for(let e=1;e<=c;e++)l.set(e,t.urls[e-1]);let g=Date.parse(t.expiresAt);const u=e=>I(this,void 0,void 0,(function*(){if(!l.get(e)){const i=yield this.refreshUploadUrls(t.uploadId,[e],{signal:A});return l.set(e,i.urls[0]),g=Date.parse(i.expiresAt),i.urls[0]}if(Number.isFinite(g)&&g-Date.now()<6e4){const e=[];for(let t=1;t<=c;t++)h.has(t)||e.push(t);if(e.length>0){const i=yield this.refreshUploadUrls(t.uploadId,e,{signal:A});for(let t=0;t<e.length;t++)l.set(e[t],i.urls[t]);g=Date.parse(i.expiresAt)}}return l.get(e)})),h=new Map,E=new Set,B=[];for(let e=1;e<=c;e++)B.push(e);const y=e=>I(this,void 0,void 0,(function*(){const n=(e-1)*t.partSize,c=Math.min(n+t.partSize,i.size),g=i.slice(n,c),I=d?yield s.hashPart(g,A):void 0;let E=0;for(;;){Ce(A);const t=yield u(e);try{const i=yield pe({url:t,body:g,contentType:r,checksumSHA256:I,signal:A,onProgress:t=>a(e,t)});a(e,g.size);const n=I?{partNumber:e,etag:i,checksumSHA256:I}:{partNumber:e,etag:i};return void h.set(e,n)}catch(t){if(t instanceof o&&"Expired"===t.kind){l.delete(e);continue}if(t instanceof o&&("Aborted"===t.kind||"Forbidden"===t.kind))throw t;if(E>=3)throw t;E+=1;const i=Qe(E,t);yield ve(i,A)}}}));return new Promise(((e,t)=>{let i=!1;const r=r=>{if(!i)if(i=!0,r)t(r);else{const i=[];for(let e=1;e<=c;e++){const r=h.get(e);if(!r)return void t(new Error(`Missing completed part ${e}`));i.push(r)}e(i)}},o=()=>{if(!i)for(;E.size<n&&B.length>0;){const e=B.shift();E.add(e),y(e).then((()=>{E.delete(e),0===B.length&&0===E.size?r():o()}),(t=>{E.delete(e),r(t)}))}};o()}))}))}}function pe(e){return Ce(e.signal),"undefined"!=typeof XMLHttpRequest?function(e){const{url:t,body:i,contentType:r,checksumSHA256:n,signal:s,onProgress:a}=e;return new Promise(((e,A)=>{if(null==s?void 0:s.aborted)return void A(new o("Aborted","Upload aborted"));null==a||a(0);const d=new XMLHttpRequest;d.open("PUT",t,!0),d.setRequestHeader("Content-Type",r),n&&d.setRequestHeader("x-amz-checksum-sha256",n);const c=()=>d.abort();null==s||s.addEventListener("abort",c,{once:!0});const l=()=>null==s?void 0:s.removeEventListener("abort",c);d.upload.onprogress=e=>{e.lengthComputable&&(null==a||a(e.loaded))},d.onload=()=>{var t;if(l(),d.status>=200&&d.status<300){const r=null!==(t=d.getResponseHeader("ETag"))&&void 0!==t?t:d.getResponseHeader("etag");return r?(null==a||a(i.size),void e(r.replace(/^"|"$/g,""))):void A(new o("CorsOrNetwork","S3 PUT succeeded but ETag was not readable — bucket must set Access-Control-Expose-Headers: ETag"))}A(fe(d.status,d.responseText,d.getResponseHeader("retry-after")))},d.onerror=()=>{l(),A((null==s?void 0:s.aborted)?new o("Aborted","Upload aborted"):new o("CorsOrNetwork","Network or CORS failure during S3 PUT — verify bucket CORS allows PUT + exposes ETag"))},d.onabort=()=>{l(),A(new o("Aborted","Upload aborted"))},d.send(i)}))}(e):function(e){return I(this,void 0,void 0,(function*(){var t;const{url:i,body:r,contentType:n,checksumSHA256:s,signal:a,onProgress:A}=e;null==A||A(0);const d={"Content-Type":n};let c;s&&(d["x-amz-checksum-sha256"]=s);try{c=yield fetch(i,{method:"PUT",body:r,headers:d,signal:a})}catch(e){if(null==a?void 0:a.aborted)throw new o("Aborted","Upload aborted",{cause:e});throw new o("CorsOrNetwork","Network or CORS failure during S3 PUT — verify bucket CORS allows PUT + exposes ETag",{cause:e})}if(!c.ok)throw yield function(e){return I(this,void 0,void 0,(function*(){let t="";try{t=yield e.text()}catch(e){}return fe(e.status,t,e.headers.get("retry-after"))}))}(c);const l=null!==(t=c.headers.get("ETag"))&&void 0!==t?t:c.headers.get("etag");if(!l)throw new o("CorsOrNetwork","S3 PUT succeeded but ETag was not readable — bucket must set Access-Control-Expose-Headers: ETag");return null==A||A(r.size),l.replace(/^"|"$/g,"")}))}(e)}function fe(e,t,i){const r=t.match(/<Code>([^<]+)<\/Code>/),n=null==r?void 0:r[1];if(403===e)return"AccessDenied"===n||"ExpiredToken"===n||/expired/i.test(t)?new o("Expired",`S3 403: ${null!=n?n:"expired"}`):new o("Forbidden",`S3 403: ${null!=n?n:"forbidden"}`);if(400===e)return"BadDigest"===n?new o("BadDigest","S3 reported BadDigest"):new o("InvalidRequest",`S3 400: ${null!=n?n:"invalid"}`);if(404===e)return new o("NotFound","S3 404");if(429===e||e>=500&&e<600){const t=function(e){if(!e)return;const t=Number(e);if(Number.isFinite(t))return t;const i=Date.parse(e);return Number.isFinite(i)?Math.max(0,Math.ceil((i-Date.now())/1e3)):void 0}(i);return new o(429===e?"Throttled":"CorsOrNetwork",`S3 ${e}: ${null!=n?n:"transient"}`,{retryAfter:t})}return new o("InvalidRequest",`S3 ${e}: ${null!=n?n:"unknown"}`)}function Qe(e,t){if(t instanceof o&&void 0!==t.retryAfter)return Math.min(1e3*t.retryAfter,3e4);const i=Math.min(500*Math.pow(2,e-1),8e3),r=i*(.5*Math.random()-.25);return Math.max(50,Math.round(i+r))}function ve(e,t){return new Promise(((i,r)=>{const n=setTimeout((()=>{i()}),e),s=()=>{clearTimeout(n),r(new o("Aborted","Aborted while backing off"))};if(t){if(t.aborted)return clearTimeout(n),void r(new o("Aborted","Aborted while backing off"));t.addEventListener("abort",s,{once:!0})}}))}function Ce(e){if(null==e?void 0:e.aborted)throw new o("Aborted","Upload aborted")}class Ue{constructor(e){this.token=null,this.refreshToken=null,this.authUser=null,this.listeners=new Set,this.refreshPromise=null,this.isRefreshing=!1,this.STORAGE_KEY="iom-auth-state",this.cleanupCrossTabSync=null,l(e),this.config=e;const t=d(e);this.storage=S(e.tokenStorage,this.STORAGE_KEY),this.loadState(),this.initCrossTabSync(),this.auth=new Q(t.certAuth,e.errorHandling||{},e.certificate),this.registry=new v(t.registry,e.errorHandling||{},this.createServiceAxiosInstance(t.registry.baseUrl)),this.node=new R(t.node,e.errorHandling||{},this.createServiceAxiosInstance(t.node.baseUrl),this.registry),this.up=new L(t.auth,e.errorHandling||{}),this.user=new K(t.user,e.errorHandling||{},this.createServiceAxiosInstance(t.user.baseUrl)),this.fileStorage=new ye(t.fileStorage,e.errorHandling||{},this.createServiceAxiosInstance(t.fileStorage.baseUrl)),this.axiosInstance=this.node.getAxios(),this.ready=this.refreshIfNeededOnStartup()}isAuthenticated(){return!!this.refreshToken}getUser(){return this.authUser}getToken(){return this.token}isAccessTokenExpired(){if(!this.token)return!0;try{const e=1e3*JSON.parse(atob(this.token.split(".")[1])).exp;return Date.now()>=e-6e4}catch(e){return p("Parse access token",e),!0}}getValidToken(){return I(this,void 0,void 0,(function*(){if(!this.token&&!this.refreshToken)return null;if(!this.isAccessTokenExpired())return this.token;if(this.refreshPromise)try{return yield this.refreshPromise}catch(e){return p("In-flight refresh failed",e),null}if(this.refreshToken)try{return yield this.attemptTokenRefresh()}catch(e){return p("Token refresh failed",e),null}return this.logout(),null}))}refreshIfNeededOnStartup(){return I(this,void 0,void 0,(function*(){if(this.refreshToken&&this.isAccessTokenExpired())if(this.refreshPromise)yield this.refreshPromise;else try{yield this.attemptTokenRefresh()}catch(e){p("Startup refresh failed",null),this.logout()}}))}attemptTokenRefresh(){return I(this,void 0,void 0,(function*(){if(this.refreshPromise)return this.refreshPromise;if(!this.refreshToken)throw this.logout(),new Error("No refresh token");return this.isRefreshing=!0,this.notifyListeners(),this.refreshPromise=(()=>I(this,void 0,void 0,(function*(){var e;try{const e=yield this.auth.refreshToken(this.refreshToken);if(!e.accessToken||!e.refreshToken)throw p("Invalid refresh token response",e),new Error("Invalid refresh token response");return this.token=e.accessToken,this.refreshToken=e.refreshToken,this.saveState(),e.accessToken}catch(t){if(403===(null===(e=t.response)||void 0===e?void 0:e.status))throw p("Refresh token expired",null),this.logout(),new Error("Refresh token expired");throw p("Refresh failed",t),t}finally{this.isRefreshing=!1,this.refreshPromise=null,this.notifyListeners()}})))(),this.refreshPromise}))}createServiceAxiosInstance(i){const r=t.create({baseURL:i,timeout:3e4});return r.interceptors.request.use((e=>I(this,void 0,void 0,(function*(){const t=yield this.getValidToken();return t&&(e.headers.Authorization=`Bearer ${t}`),e})))),r.interceptors.response.use((e=>e),(e=>I(this,void 0,void 0,(function*(){var t,i,n,o,s,a,A,d,c,l,g,u;const I=e.config;if(p("Axios response error",{url:null==I?void 0:I.url,status:null===(t=e.response)||void 0===t?void 0:t.status}),401===(null===(i=e.response)||void 0===i?void 0:i.status)&&!I._retry&&!(null===(n=I.url)||void 0===n?void 0:n.includes("/refreshToken"))){I._retry=!0;try{const e=yield this.attemptTokenRefresh();return I.headers.Authorization=`Bearer ${e}`,r(I)}catch(e){p("Axios 401 refresh failed",e),this.logout()}}const h=I._retryCount||0,E=null!==(a=null===(s=null===(o=this.config.errorHandling)||void 0===o?void 0:o.autoRetryNetwork)||void 0===s?void 0:s.maxRetries)&&void 0!==a?a:0;if(E>0&&h<E&&!I._retry&&(!e.response||e.response.status>=500)){I._retryCount=h+1;const e=null!==(c=null===(d=null===(A=this.config.errorHandling)||void 0===A?void 0:A.autoRetryNetwork)||void 0===d?void 0:d.delay)&&void 0!==c?c:1e3,t="exponential"===(null!==(u=null===(g=null===(l=this.config.errorHandling)||void 0===l?void 0:l.autoRetryNetwork)||void 0===g?void 0:g.backoff)&&void 0!==u?u:"exponential")?e*Math.pow(2,h):e*(h+1);return y(`Retrying request (${h+1}/${E}) after ${t}ms`),yield new Promise((e=>setTimeout(e,t))),r(I)}return Promise.reject(e)})))),"undefined"==typeof window&&this.config.certificate&&(r.defaults.httpsAgent=new e.Agent({cert:this.config.certificate.cert,key:this.config.certificate.key,rejectUnauthorized:!0})),r}login(){return I(this,void 0,void 0,(function*(){try{const e=yield this.auth.login();return this.token=e.token,this.refreshToken=e.refreshToken,this.authUser=e.user||null,this.saveState(),y("Login successful"),{success:!0,user:this.authUser||void 0}}catch(e){return p("Login failed",e),{success:!1}}}))}loginWithEmailPassword(e){return I(this,void 0,void 0,(function*(){try{const t=yield this.up.login(e);return this.token=t.token,this.refreshToken=t.refreshToken,this.authUser=t.user||null,this.saveState(),y("Email/password login successful"),{success:!0,user:this.authUser||void 0}}catch(e){return p("Email/password login failed",e),{success:!1}}}))}register(e){return I(this,void 0,void 0,(function*(){try{const t=yield this.up.register(e);return y("Registration successful"),{success:!0,message:t}}catch(e){return p("Registration failed",e),{success:!1}}}))}logout(){y("Logout triggered"),this.token=null,this.refreshToken=null,this.authUser=null,this.refreshPromise=null,this.isRefreshing=!1,this.saveState()}loadState(){const e=this.storage.get();e&&(this.token=e.token,this.refreshToken=e.refreshToken,this.authUser=e.user)}saveState(){const e={token:this.token,refreshToken:this.refreshToken,user:this.authUser};this.storage.set(e),this.notifyListeners()}initCrossTabSync(){"sessionStorage"!==this.config.tokenStorage&&"memory"!==this.config.tokenStorage&&(this.cleanupCrossTabSync=function(e,t){if("undefined"==typeof window)return()=>{};const i=i=>{if(i.key===e){if(!i.newValue)return y("Cross-tab: auth state cleared in another tab"),void t(null);try{const e=JSON.parse(i.newValue);y("Cross-tab: auth state updated in another tab"),t(e)}catch(e){p("Cross-tab: failed to parse storage event",e)}}};return window.addEventListener("storage",i),()=>window.removeEventListener("storage",i)}(this.STORAGE_KEY,(e=>{e?(this.token=e.token,this.refreshToken=e.refreshToken,this.authUser=e.user,this.notifyListeners()):(this.token=null,this.refreshToken=null,this.authUser=null,this.refreshPromise=null,this.isRefreshing=!1,this.notifyListeners())})))}destroy(){var e;null===(e=this.cleanupCrossTabSync)||void 0===e||e.call(this),this.cleanupCrossTabSync=null}notifyListeners(){const e={isAuthenticated:this.isAuthenticated(),user:this.authUser,isRefreshing:this.isRefreshing};this.listeners.forEach((t=>t(e)))}onAuthStateChange(e){return this.listeners.add(e),e({isAuthenticated:this.isAuthenticated(),user:this.authUser,isRefreshing:this.isRefreshing}),()=>this.listeners.delete(e)}getAxios(){return this.axiosInstance}}function Ne(e){return new Ue(e)}const Se=Ne;export{Q as AuthServiceClient,Ue as Client,a as DEFAULT_CERT_PORT,s as DEFAULT_SERVICE_PATHS,o as FileStorageError,n as GroupPermission,C as LocalStorageTokenStorage,N as MemoryTokenStorage,R as NodeServiceClient,r as Predicate,v as RegistryServiceClient,U as SessionStorageTokenStorage,L as UpAuthServiceClient,K as UserServiceClient,A as buildCertAuthBaseUrl,E as configureLogger,Se as createClient,u as createDefaultErrorHandling,g as createDefaultServiceConfig,S as createTokenStorage,Ne as initClient,d as resolveServiceConfigs,l as validateSDKConfig,c as validateServiceConfig};
6
+ */function _(e,t,i,r){return new(i||(i=Promise))((function(t,n){function o(e){try{a(r.next(e))}catch(e){n(e)}}function s(e){try{a(r.throw(e))}catch(e){n(e)}}function a(e){var r;e.done?t(e.value):(r=e.value,r instanceof i?r:new i((function(e){e(r)}))).then(o,s)}a((r=r.apply(e,[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;class Z{constructor(){this.mutex=Promise.resolve()}lock(){let e=()=>{};return this.mutex=this.mutex.then((()=>new Promise(e))),new Promise((t=>{e=t}))}dispatch(e){return _(this,0,void 0,(function*(){const t=yield this.lock();try{return yield Promise.resolve(e())}finally{t()}}))}}var V;const Y="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,W=null!==(V=Y.Buffer)&&void 0!==V?V:null,$=Y.TextEncoder?new Y.TextEncoder:null;function ee(e,t){return(15&e)+(e>>6|e>>3&8)<<4|(15&t)+(t>>6|t>>3&8)}const te="a".charCodeAt(0)-10,ie="0".charCodeAt(0);function re(e,t,i){let r=0;for(let n=0;n<i;n++){let i=t[n]>>>4;e[r++]=i>9?i+te:i+ie,i=15&t[n],e[r++]=i>9?i+te:i+ie}return String.fromCharCode.apply(null,e)}const ne=null!==W?e=>{if("string"==typeof e){const t=W.from(e,"utf8");return new Uint8Array(t.buffer,t.byteOffset,t.length)}if(W.isBuffer(e))return new Uint8Array(e.buffer,e.byteOffset,e.length);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);throw new Error("Invalid data type!")}:e=>{if("string"==typeof e)return $.encode(e);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);throw new Error("Invalid data type!")},oe="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",se=new Uint8Array(256);for(let e=0;e<64;e++)se[oe.charCodeAt(e)]=e;function ae(e){const t=function(e){let t=Math.floor(.75*e.length);const i=e.length;return"="===e[i-1]&&(t-=1,"="===e[i-2]&&(t-=1)),t}(e),i=e.length,r=new Uint8Array(t);let n=0;for(let t=0;t<i;t+=4){const i=se[e.charCodeAt(t)],o=se[e.charCodeAt(t+1)],s=se[e.charCodeAt(t+2)],a=se[e.charCodeAt(t+3)];r[n]=i<<2|o>>4,n+=1,r[n]=(15&o)<<4|s>>2,n+=1,r[n]=(3&s)<<6|63&a,n+=1}return r}const Ae=16384,de=new Z,ce=new Map;function le(e,t){return _(this,0,void 0,(function*(){let i=null,r=null,n=!1;if("undefined"==typeof WebAssembly)throw new Error("WebAssembly is not supported in this environment!");const o=()=>new DataView(i.exports.memory.buffer).getUint32(i.exports.STATE_SIZE,!0),s=de.dispatch((()=>_(this,0,void 0,(function*(){if(!ce.has(e.name)){const t=ae(e.data),i=WebAssembly.compile(t);ce.set(e.name,i)}const t=yield ce.get(e.name);i=yield WebAssembly.instantiate(t,{})})))),a=(e=null)=>{n=!0,i.exports.Hash_Init(e)},A=e=>{if(!n)throw new Error("update() called before init()");(e=>{let t=0;for(;t<e.length;){const n=e.subarray(t,t+Ae);t+=n.length,r.set(n),i.exports.Hash_Update(n.length)}})(ne(e))},d=new Uint8Array(2*t),c=(e,o=null)=>{if(!n)throw new Error("digest() called before init()");return n=!1,i.exports.Hash_Final(o),"binary"===e?r.slice(0,t):re(d,r,t)},l=e=>"string"==typeof e?e.length<4096:e.byteLength<Ae;let g=l;switch(e.name){case"argon2":case"scrypt":g=()=>!0;break;case"blake2b":case"blake2s":g=(e,t)=>t<=512&&l(e);break;case"blake3":g=(e,t)=>0===t&&l(e);break;case"xxhash64":case"xxhash3":case"xxhash128":case"crc64":g=()=>!1}return yield(()=>_(this,0,void 0,(function*(){i||(yield s);const e=i.exports.Hash_GetBuffer(),t=i.exports.memory.buffer;r=new Uint8Array(t,e,Ae)})))(),{getMemory:()=>r,writeMemory:(e,t=0)=>{r.set(e,t)},getExports:()=>i.exports,setMemorySize:e=>{i.exports.Hash_SetMemorySize(e);const t=i.exports.Hash_GetBuffer(),n=i.exports.memory.buffer;r=new Uint8Array(n,t,e)},init:a,update:A,digest:c,save:()=>{if(!n)throw new Error("save() can only be called after init() and before digest()");const t=i.exports.Hash_GetState(),r=o(),s=i.exports.memory.buffer,a=new Uint8Array(s,t,r),A=new Uint8Array(4+r);return function(e,t){const i=t.length>>1;for(let r=0;r<i;r++){const i=r<<1;e[r]=ee(t.charCodeAt(i),t.charCodeAt(i+1))}}(A,e.hash),A.set(a,4),A},load:t=>{if(!(t instanceof Uint8Array))throw new Error("load() expects an Uint8Array generated by save()");const r=i.exports.Hash_GetState(),s=o(),a=4+s,A=i.exports.memory.buffer;if(t.length!==a)throw new Error(`Bad state length (expected ${a} bytes, got ${t.length})`);if(!function(e,t){if(e.length!==2*t.length)return!1;for(let i=0;i<t.length;i++){const r=i<<1;if(t[i]!==ee(e.charCodeAt(r),e.charCodeAt(r+1)))return!1}return!0}(e.hash,t.subarray(0,4)))throw new Error("This state was written by an incompatible hash implementation");const d=t.subarray(4);new Uint8Array(A,r,s).set(d),n=!0},calculate:(e,n=null,o=null)=>{if(!g(e,n))return a(n),A(e),c("hex",o);const s=ne(e);return r.set(s),i.exports.Hash_Calculate(s.length,n,o),re(d,r,t)},hashLength:t}}))}new Z,new Z,new Z,new Z,new Z,new Z,new Z,new Z,new Z,new Z,new Z;var ge={name:"sha256",data:"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c2pBx6KerX1qIhkgASADcyACcSABIANxcyABQR53IAFBE3dzIAFBCndzaiAaaiICaiIJIBMgEnNxIBJzaiAJQRp3IAlBFXdzIAlBB3dzakHRxqk2aiIaIAIgAXMgA3EgAiABcXMgAkEedyACQRN3cyACQQp3c2ogGGoiA2oiESAJIBNzcSATc2ogEUEadyARQRV3cyARQQd3c2pB59KkoQFqIhggAyACcyABcSADIAJxcyADQR53IANBE3dzIANBCndzaiAUaiIBaiISIBEgCXNxIAlzaiASQRp3IBJBFXdzIBJBB3dzakGFldy9AmoiFCABIANzIAJxIAEgA3FzIAFBHncgAUETd3MgAUEKd3NqIBdqIgJqIhMgI2ogJiASaiAiIBFqICUgCWogEyASIBFzcSARc2ogE0EadyATQRV3cyATQQd3c2pBuMLs8AJqIhcgAiABcyADcSACIAFxcyACQR53IAJBE3dzIAJBCndzaiAZaiIDaiIJIBMgEnNxIBJzaiAJQRp3IAlBFXdzIAlBB3dzakH827HpBGoiGSADIAJzIAFxIAMgAnFzIANBHncgA0ETd3MgA0EKd3NqIBpqIgFqIhEgCSATc3EgE3NqIBFBGncgEUEVd3MgEUEHd3NqQZOa4JkFaiIaIAEgA3MgAnEgASADcXMgAUEedyABQRN3cyABQQp3c2ogGGoiAmoiEiARIAlzcSAJc2ogEkEadyASQRV3cyASQQd3c2pB1OapqAZqIhggAiABcyADcSACIAFxcyACQR53IAJBE3dzIAJBCndzaiAUaiIDaiITaiAoIBJqICQgEWogJyAJaiATIBIgEXNxIBFzaiATQRp3IBNBFXdzIBNBB3dzakG7laizB2oiFCADIAJzIAFxIAMgAnFzIANBHncgA0ETd3MgA0EKd3NqIBdqIgFqIgkgEyASc3EgEnNqIAlBGncgCUEVd3MgCUEHd3NqQa6Si454aiIXIAEgA3MgAnEgASADcXMgAUEedyABQRN3cyABQQp3c2ogGWoiAmoiESAJIBNzcSATc2ogEUEadyARQRV3cyARQQd3c2pBhdnIk3lqIhkgAiABcyADcSACIAFxcyACQR53IAJBE3dzIAJBCndzaiAaaiIDaiISIBEgCXNxIAlzaiASQRp3IBJBFXdzIBJBB3dzakGh0f+VemoiGiADIAJz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",hash:"8c18dd94"};new Z,new Z,new Z,new Z,new Z,new Z,new Z,new Z,new Z,new Z,new Z;const ue=1048576;function Ie(e,t){return I(this,void 0,void 0,(function*(){return function(e){if(e.length%2!=0)throw new Error(`hexToBase64: odd-length hex string (len=${e.length})`);const t=new Uint8Array(e.length/2);for(let i=0;i<e.length;i+=2)t[i/2]=parseInt(e.substring(i,i+2),16);let i="";for(let e=0;e<t.length;e++)i+=String.fromCharCode(t[e]);return"undefined"!=typeof btoa?btoa(i):Buffer.from(t).toString("base64")}(yield he(e,"hex",null==t?void 0:t.signal))}))}function he(e,t,i){return I(this,void 0,void 0,(function*(){if(null==i?void 0:i.aborted)throw new DOMException("Aborted","AbortError");const t=yield le(ge,32).then((e=>{e.init(256);const t={init:()=>(e.init(256),t),update:i=>(e.update(i),t),digest:t=>e.digest(t),save:()=>e.save(),load:i=>(e.load(i),t),blockSize:64,digestSize:32};return t}));t.init();const r=e.size;for(let n=0;n<r;n+=ue){if(null==i?void 0:i.aborted)throw new DOMException("Aborted","AbortError");const o=Math.min(n+ue,r),s=e.slice(n,o),a=new Uint8Array(yield s.arrayBuffer());t.update(a)}return t.digest("hex")}))}class Ee{hashFullFile(e,t){return function(e,t){return I(this,void 0,void 0,(function*(){return he(e,0,null==t?void 0:t.signal)}))}(e,{signal:t})}hashPart(e,t){return Ie(e,{signal:t})}dispose(){}}function Be(){return new Ee}class ye{constructor(e,t,i,r=Be){this.axios=i,this.hasherFactory=r}initUpload(e,t){return I(this,void 0,void 0,(function*(){return(yield this.axios.post("/api/FileStorage/init",e,{signal:null==t?void 0:t.signal})).data}))}refreshUploadUrls(e,t,i){return I(this,void 0,void 0,(function*(){const r=(null==t?void 0:t.length)?{partNumbers:t}:{},n=yield this.axios.post((e=>`/api/FileStorage/${encodeURIComponent(e)}/refresh`)(e),r,{signal:null==i?void 0:i.signal});return n.data}))}completeUpload(e,t,i){return I(this,void 0,void 0,(function*(){const r={parts:t},n=yield this.axios.post((e=>`/api/FileStorage/${encodeURIComponent(e)}/complete`)(e),r,{signal:null==i?void 0:i.signal});return n.data}))}abortUpload(e){return I(this,void 0,void 0,(function*(){try{const t=new AbortController,i=setTimeout((()=>t.abort()),2e3);try{yield this.axios.delete((e=>`/api/FileStorage/${encodeURIComponent(e)}`)(e),{signal:t.signal})}finally{clearTimeout(i)}}catch(e){}}))}getMetadata(e,t){return I(this,void 0,void 0,(function*(){const i=yield this.axios.get((e=>`/api/FileStorage/${encodeURIComponent(e)}`)(e),{signal:null==t?void 0:t.signal});return i.data}))}softDelete(e,t){return I(this,void 0,void 0,(function*(){yield this.axios.delete((e=>`/api/FileStorage/${encodeURIComponent(e)}/delete`)(e),{signal:null==t?void 0:t.signal})}))}getPreviewUrl(e,t){return I(this,void 0,void 0,(function*(){const i=yield this.axios.get((e=>`/api/FileStorage/${encodeURIComponent(e)}/preview-url`)(e),{signal:null==t?void 0:t.signal});return i.data}))}getDownloadUrl(e,t){return I(this,void 0,void 0,(function*(){const i=yield this.axios.get((e=>`/api/FileStorage/${encodeURIComponent(e)}/download`)(e),{signal:null==t?void 0:t.signal});return i.data}))}uploadFile(e){return I(this,void 0,void 0,(function*(){const{file:t,fileName:i,contentType:r,onProgress:n,signal:s,concurrency:a}=e;Ce(s);const A=Math.min(8,Math.max(1,null!=a?a:6)),d=null!=i?i:t instanceof File?t.name:"file",c=r&&r.trim()||(t instanceof File?t.type.trim():"")||"application/octet-stream",l=this.hasherFactory(),g=function(e,t){if(!t)return{set:(e,t)=>{},flush:()=>{}};const i=new Map;let r=0,n=0,o=!1;const s=()=>{o=!1,n=Date.now();let s=0;for(const e of i.values())s+=e;const a=Math.max(r,Math.min(e,s));r=a,t(a,e)};return{set(e,t){i.set(e,t);const r=Date.now();r-n>=100?s():o||(o=!0,setTimeout(s,100-(r-n)))},flush(){s()}}}(t.size,n);let u;try{const e=yield l.hashFullFile(t,s),i=yield this.initUpload({fileName:d,mimeType:c,size:t.size,sha256:e},{signal:s});if(u=i.uploadId,0===i.urls.length)throw new o("InvalidRequest","init returned no presigned URLs");if(1===i.urls.length&&null===i.partSize){const e=i.checksumValidation?yield l.hashPart(t,s):void 0,r=yield pe({url:i.urls[0],body:t,contentType:c,checksumSHA256:e,signal:s,onProgress:e=>g.set(1,e)});g.flush();const n=e?{partNumber:1,etag:r,checksumSHA256:e}:{partNumber:1,etag:r};return this.completeUpload(i.uploadId,[n],{signal:s})}if(null===i.partSize)throw new o("InvalidRequest","multipart init returned null partSize");const r=yield this.runMultipart({init:i,file:t,contentType:c,concurrency:A,hasher:l,onPartLoaded:(e,t)=>g.set(e,t),signal:s});return g.flush(),this.completeUpload(i.uploadId,r,{signal:s})}catch(e){const t=function(e){if(e instanceof o)return e;if(e instanceof DOMException&&"AbortError"===e.name)return new o("Aborted",e.message,{cause:e});return e}(e);throw u&&this.abortUpload(u),t}finally{l.dispose()}}))}runMultipart(e){return I(this,void 0,void 0,(function*(){const{init:t,file:i,contentType:r,concurrency:n,hasher:s,onPartLoaded:a,signal:A}=e,d=!0===t.checksumValidation,c=t.urls.length,l=new Map;for(let e=1;e<=c;e++)l.set(e,t.urls[e-1]);let g=Date.parse(t.expiresAt);const u=e=>I(this,void 0,void 0,(function*(){if(!l.get(e)){const i=yield this.refreshUploadUrls(t.uploadId,[e],{signal:A});return l.set(e,i.urls[0]),g=Date.parse(i.expiresAt),i.urls[0]}if(Number.isFinite(g)&&g-Date.now()<6e4){const e=[];for(let t=1;t<=c;t++)h.has(t)||e.push(t);if(e.length>0){const i=yield this.refreshUploadUrls(t.uploadId,e,{signal:A});for(let t=0;t<e.length;t++)l.set(e[t],i.urls[t]);g=Date.parse(i.expiresAt)}}return l.get(e)})),h=new Map,E=new Set,B=[];for(let e=1;e<=c;e++)B.push(e);const y=e=>I(this,void 0,void 0,(function*(){const n=(e-1)*t.partSize,c=Math.min(n+t.partSize,i.size),g=i.slice(n,c),I=d?yield s.hashPart(g,A):void 0;let E=0;for(;;){Ce(A);const t=yield u(e);try{const i=yield pe({url:t,body:g,contentType:r,checksumSHA256:I,signal:A,onProgress:t=>a(e,t)});a(e,g.size);const n=I?{partNumber:e,etag:i,checksumSHA256:I}:{partNumber:e,etag:i};return void h.set(e,n)}catch(t){if(t instanceof o&&"Expired"===t.kind){l.delete(e);continue}if(t instanceof o&&("Aborted"===t.kind||"Forbidden"===t.kind))throw t;if(E>=3)throw t;E+=1;const i=Qe(E,t);yield ve(i,A)}}}));return new Promise(((e,t)=>{let i=!1;const r=r=>{if(!i)if(i=!0,r)t(r);else{const i=[];for(let e=1;e<=c;e++){const r=h.get(e);if(!r)return void t(new Error(`Missing completed part ${e}`));i.push(r)}e(i)}},o=()=>{if(!i)for(;E.size<n&&B.length>0;){const e=B.shift();E.add(e),y(e).then((()=>{E.delete(e),0===B.length&&0===E.size?r():o()}),(t=>{E.delete(e),r(t)}))}};o()}))}))}}function pe(e){return Ce(e.signal),"undefined"!=typeof XMLHttpRequest?function(e){const{url:t,body:i,contentType:r,checksumSHA256:n,signal:s,onProgress:a}=e;return new Promise(((e,A)=>{if(null==s?void 0:s.aborted)return void A(new o("Aborted","Upload aborted"));null==a||a(0);const d=new XMLHttpRequest;d.open("PUT",t,!0),d.setRequestHeader("Content-Type",r),n&&d.setRequestHeader("x-amz-checksum-sha256",n);const c=()=>d.abort();null==s||s.addEventListener("abort",c,{once:!0});const l=()=>null==s?void 0:s.removeEventListener("abort",c);d.upload.onprogress=e=>{e.lengthComputable&&(null==a||a(e.loaded))},d.onload=()=>{var t;if(l(),d.status>=200&&d.status<300){const r=null!==(t=d.getResponseHeader("ETag"))&&void 0!==t?t:d.getResponseHeader("etag");return r?(null==a||a(i.size),void e(r.replace(/^"|"$/g,""))):void A(new o("CorsOrNetwork","S3 PUT succeeded but ETag was not readable — bucket must set Access-Control-Expose-Headers: ETag"))}A(fe(d.status,d.responseText,d.getResponseHeader("retry-after")))},d.onerror=()=>{l(),A((null==s?void 0:s.aborted)?new o("Aborted","Upload aborted"):new o("CorsOrNetwork","Network or CORS failure during S3 PUT — verify bucket CORS allows PUT + exposes ETag"))},d.onabort=()=>{l(),A(new o("Aborted","Upload aborted"))},d.send(i)}))}(e):function(e){return I(this,void 0,void 0,(function*(){var t;const{url:i,body:r,contentType:n,checksumSHA256:s,signal:a,onProgress:A}=e;null==A||A(0);const d={"Content-Type":n};let c;s&&(d["x-amz-checksum-sha256"]=s);try{c=yield fetch(i,{method:"PUT",body:r,headers:d,signal:a})}catch(e){if(null==a?void 0:a.aborted)throw new o("Aborted","Upload aborted",{cause:e});throw new o("CorsOrNetwork","Network or CORS failure during S3 PUT — verify bucket CORS allows PUT + exposes ETag",{cause:e})}if(!c.ok)throw yield function(e){return I(this,void 0,void 0,(function*(){let t="";try{t=yield e.text()}catch(e){}return fe(e.status,t,e.headers.get("retry-after"))}))}(c);const l=null!==(t=c.headers.get("ETag"))&&void 0!==t?t:c.headers.get("etag");if(!l)throw new o("CorsOrNetwork","S3 PUT succeeded but ETag was not readable — bucket must set Access-Control-Expose-Headers: ETag");return null==A||A(r.size),l.replace(/^"|"$/g,"")}))}(e)}function fe(e,t,i){const r=t.match(/<Code>([^<]+)<\/Code>/),n=null==r?void 0:r[1];if(403===e)return"AccessDenied"===n||"ExpiredToken"===n||/expired/i.test(t)?new o("Expired",`S3 403: ${null!=n?n:"expired"}`):new o("Forbidden",`S3 403: ${null!=n?n:"forbidden"}`);if(400===e)return"BadDigest"===n?new o("BadDigest","S3 reported BadDigest"):new o("InvalidRequest",`S3 400: ${null!=n?n:"invalid"}`);if(404===e)return new o("NotFound","S3 404");if(429===e||e>=500&&e<600){const t=function(e){if(!e)return;const t=Number(e);if(Number.isFinite(t))return t;const i=Date.parse(e);return Number.isFinite(i)?Math.max(0,Math.ceil((i-Date.now())/1e3)):void 0}(i);return new o(429===e?"Throttled":"CorsOrNetwork",`S3 ${e}: ${null!=n?n:"transient"}`,{retryAfter:t})}return new o("InvalidRequest",`S3 ${e}: ${null!=n?n:"unknown"}`)}function Qe(e,t){if(t instanceof o&&void 0!==t.retryAfter)return Math.min(1e3*t.retryAfter,3e4);const i=Math.min(500*Math.pow(2,e-1),8e3),r=i*(.5*Math.random()-.25);return Math.max(50,Math.round(i+r))}function ve(e,t){return new Promise(((i,r)=>{const n=setTimeout((()=>{i()}),e),s=()=>{clearTimeout(n),r(new o("Aborted","Aborted while backing off"))};if(t){if(t.aborted)return clearTimeout(n),void r(new o("Aborted","Aborted while backing off"));t.addEventListener("abort",s,{once:!0})}}))}function Ce(e){if(null==e?void 0:e.aborted)throw new o("Aborted","Upload aborted")}class Ue{constructor(e){this.token=null,this.refreshToken=null,this.authUser=null,this.listeners=new Set,this.refreshPromise=null,this.isRefreshing=!1,this.STORAGE_KEY="iom-auth-state",this.cleanupCrossTabSync=null,l(e),this.config=e;const t=d(e);this.storage=S(e.tokenStorage,this.STORAGE_KEY),this.loadState(),this.initCrossTabSync(),this.auth=new Q(t.certAuth,e.errorHandling||{},e.certificate),this.registry=new v(t.registry,e.errorHandling||{},this.createServiceAxiosInstance(t.registry.baseUrl)),this.node=new R(t.node,e.errorHandling||{},this.createServiceAxiosInstance(t.node.baseUrl),this.registry),this.up=new L(t.auth,e.errorHandling||{}),this.user=new K(t.user,e.errorHandling||{},this.createServiceAxiosInstance(t.user.baseUrl)),this.fileStorage=new ye(t.fileStorage,e.errorHandling||{},this.createServiceAxiosInstance(t.fileStorage.baseUrl)),this.axiosInstance=this.node.getAxios(),this.ready=this.refreshIfNeededOnStartup()}isAuthenticated(){return!!this.refreshToken}getUser(){return this.authUser}getToken(){return this.token}isAccessTokenExpired(){if(!this.token)return!0;try{const e=1e3*JSON.parse(atob(this.token.split(".")[1])).exp;return Date.now()>=e-6e4}catch(e){return p("Parse access token",e),!0}}getValidToken(){return I(this,void 0,void 0,(function*(){if(!this.token&&!this.refreshToken)return null;if(!this.isAccessTokenExpired())return this.token;if(this.refreshPromise)try{return yield this.refreshPromise}catch(e){return p("In-flight refresh failed",e),null}if(this.refreshToken)try{return yield this.attemptTokenRefresh()}catch(e){return p("Token refresh failed",e),null}return this.logout(),null}))}refreshIfNeededOnStartup(){return I(this,void 0,void 0,(function*(){if(this.refreshToken&&this.isAccessTokenExpired())if(this.refreshPromise)yield this.refreshPromise;else try{yield this.attemptTokenRefresh()}catch(e){p("Startup refresh failed",null),this.logout()}}))}attemptTokenRefresh(){return I(this,void 0,void 0,(function*(){if(this.refreshPromise)return this.refreshPromise;if(!this.refreshToken)throw this.logout(),new Error("No refresh token");return this.isRefreshing=!0,this.notifyListeners(),this.refreshPromise=(()=>I(this,void 0,void 0,(function*(){var e;try{const e=yield this.auth.refreshToken(this.refreshToken);if(!e.accessToken||!e.refreshToken)throw p("Invalid refresh token response",e),new Error("Invalid refresh token response");return this.token=e.accessToken,this.refreshToken=e.refreshToken,this.saveState(),e.accessToken}catch(t){if(403===(null===(e=t.response)||void 0===e?void 0:e.status))throw p("Refresh token expired",null),this.logout(),new Error("Refresh token expired");throw p("Refresh failed",t),t}finally{this.isRefreshing=!1,this.refreshPromise=null,this.notifyListeners()}})))(),this.refreshPromise}))}createServiceAxiosInstance(i){const r=t.create({baseURL:i,timeout:3e4});return r.interceptors.request.use((e=>I(this,void 0,void 0,(function*(){const t=yield this.getValidToken();return t&&(e.headers.Authorization=`Bearer ${t}`),e})))),r.interceptors.response.use((e=>e),(e=>I(this,void 0,void 0,(function*(){var t,i,n,o,s,a,A,d,c,l,g,u;const I=e.config;if(p("Axios response error",{url:null==I?void 0:I.url,status:null===(t=e.response)||void 0===t?void 0:t.status}),401===(null===(i=e.response)||void 0===i?void 0:i.status)&&!I._retry&&!(null===(n=I.url)||void 0===n?void 0:n.includes("/refreshToken"))){I._retry=!0;try{const e=yield this.attemptTokenRefresh();return I.headers.Authorization=`Bearer ${e}`,r(I)}catch(e){p("Axios 401 refresh failed",e),this.logout()}}const h=I._retryCount||0,E=null!==(a=null===(s=null===(o=this.config.errorHandling)||void 0===o?void 0:o.autoRetryNetwork)||void 0===s?void 0:s.maxRetries)&&void 0!==a?a:0;if(E>0&&h<E&&!I._retry&&(!e.response||e.response.status>=500)){I._retryCount=h+1;const e=null!==(c=null===(d=null===(A=this.config.errorHandling)||void 0===A?void 0:A.autoRetryNetwork)||void 0===d?void 0:d.delay)&&void 0!==c?c:1e3,t="exponential"===(null!==(u=null===(g=null===(l=this.config.errorHandling)||void 0===l?void 0:l.autoRetryNetwork)||void 0===g?void 0:g.backoff)&&void 0!==u?u:"exponential")?e*Math.pow(2,h):e*(h+1);return y(`Retrying request (${h+1}/${E}) after ${t}ms`),yield new Promise((e=>setTimeout(e,t))),r(I)}return Promise.reject(e)})))),"undefined"==typeof window&&this.config.certificate&&(r.defaults.httpsAgent=new e.Agent({cert:this.config.certificate.cert,key:this.config.certificate.key,rejectUnauthorized:!0})),r}login(){return I(this,void 0,void 0,(function*(){try{const e=yield this.auth.login();return this.token=e.token,this.refreshToken=e.refreshToken,this.authUser=e.user||null,this.saveState(),y("Login successful"),{success:!0,user:this.authUser||void 0}}catch(e){return p("Login failed",e),{success:!1}}}))}loginWithEmailPassword(e){return I(this,void 0,void 0,(function*(){try{const t=yield this.up.login(e);return this.token=t.token,this.refreshToken=t.refreshToken,this.authUser=t.user||null,this.saveState(),y("Email/password login successful"),{success:!0,user:this.authUser||void 0}}catch(e){return p("Email/password login failed",e),{success:!1}}}))}register(e){return I(this,void 0,void 0,(function*(){try{const t=yield this.up.register(e);return y("Registration successful"),{success:!0,message:t}}catch(e){return p("Registration failed",e),{success:!1}}}))}logout(){y("Logout triggered"),this.token=null,this.refreshToken=null,this.authUser=null,this.refreshPromise=null,this.isRefreshing=!1,this.saveState()}loadState(){const e=this.storage.get();e&&(this.token=e.token,this.refreshToken=e.refreshToken,this.authUser=e.user)}saveState(){const e={token:this.token,refreshToken:this.refreshToken,user:this.authUser};this.storage.set(e),this.notifyListeners()}initCrossTabSync(){"sessionStorage"!==this.config.tokenStorage&&"memory"!==this.config.tokenStorage&&(this.cleanupCrossTabSync=function(e,t){if("undefined"==typeof window)return()=>{};const i=i=>{if(i.key===e){if(!i.newValue)return y("Cross-tab: auth state cleared in another tab"),void t(null);try{const e=JSON.parse(i.newValue);y("Cross-tab: auth state updated in another tab"),t(e)}catch(e){p("Cross-tab: failed to parse storage event",e)}}};return window.addEventListener("storage",i),()=>window.removeEventListener("storage",i)}(this.STORAGE_KEY,(e=>{e?(this.token=e.token,this.refreshToken=e.refreshToken,this.authUser=e.user,this.notifyListeners()):(this.token=null,this.refreshToken=null,this.authUser=null,this.refreshPromise=null,this.isRefreshing=!1,this.notifyListeners())})))}destroy(){var e;null===(e=this.cleanupCrossTabSync)||void 0===e||e.call(this),this.cleanupCrossTabSync=null}notifyListeners(){const e={isAuthenticated:this.isAuthenticated(),user:this.authUser,isRefreshing:this.isRefreshing};this.listeners.forEach((t=>t(e)))}onAuthStateChange(e){return this.listeners.add(e),e({isAuthenticated:this.isAuthenticated(),user:this.authUser,isRefreshing:this.isRefreshing}),()=>this.listeners.delete(e)}getAxios(){return this.axiosInstance}}function Ne(e){return new Ue(e)}const Se=Ne;export{Q as AuthServiceClient,Ue as Client,a as DEFAULT_CERT_PORT,s as DEFAULT_SERVICE_PATHS,o as FileStorageError,n as GroupPermission,C as LocalStorageTokenStorage,N as MemoryTokenStorage,R as NodeServiceClient,r as Predicate,v as RegistryServiceClient,U as SessionStorageTokenStorage,L as UpAuthServiceClient,K as UserServiceClient,A as buildCertAuthBaseUrl,E as configureLogger,Se as createClient,u as createDefaultErrorHandling,g as createDefaultServiceConfig,S as createTokenStorage,Ne as initClient,d as resolveServiceConfigs,l as validateSDKConfig,c as validateServiceConfig};
7
7
  //# sourceMappingURL=index.esm.js.map