@privateid/ultrapass-web-sdk 1.6.1 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/application/modules/internal/feature-flag/feature-flag.domain.d.ts +1 -0
- package/dist/application/modules/internal/feature-flag/feature-flag.domain.js +1 -0
- package/dist/application/modules/internal/feature-flag/feature-flag.domain.js.map +1 -1
- package/dist/application/modules/internal/shared/shared.utils.js +3 -0
- package/dist/application/modules/internal/shared/shared.utils.js.map +1 -1
- package/dist/application/modules/internal/wasm-orchestrator/WasmOrchestratorService.d.ts +11 -1
- package/dist/application/modules/internal/wasm-orchestrator/WasmOrchestratorService.js +148 -3
- package/dist/application/modules/internal/wasm-orchestrator/WasmOrchestratorService.js.map +1 -1
- package/dist/application/modules/internal/wasm-orchestrator/wasm-orchestrator.domain.d.ts +17 -1
- package/dist/application/modules/internal/wasm-orchestrator/wasm-orchestrator.types.d.ts +21 -1
- package/dist/application/modules/support/camera/services/DesktopCameraService.js +21 -3
- package/dist/application/modules/support/camera/services/DesktopCameraService.js.map +1 -1
- package/dist/application/modules/support/camera/services/FirefoxCameraService.js +97 -25
- package/dist/application/modules/support/camera/services/FirefoxCameraService.js.map +1 -1
- package/dist/application/modules/support/engine/EngineService.d.ts +5 -1
- package/dist/application/modules/support/engine/EngineService.js +48 -0
- package/dist/application/modules/support/engine/EngineService.js.map +1 -1
- package/dist/application/modules/support/engine/engine.domain.d.ts +17 -1
- package/dist/application/modules/support/engine/engine.types.d.ts +21 -1
- package/dist/application/modules/support/engine/index.d.ts +1 -1
- package/dist/application/workers/wasm/WasmWorkerService.d.ts +13 -3
- package/dist/application/workers/wasm/WasmWorkerService.js +93 -38
- package/dist/application/workers/wasm/WasmWorkerService.js.map +1 -1
- package/dist/application/workers/wasm/wasm-worker.domain.d.ts +5 -3
- package/dist/application/workers/wasm/wasm-worker.types.d.ts +27 -1
- package/dist/application/workers/wasm/wasm-worker.utils.d.ts +2 -1
- package/dist/application/workers/wasm/wasm-worker.utils.js +36 -11
- package/dist/application/workers/wasm/wasm-worker.utils.js.map +1 -1
- package/dist/main.d.ts +6 -1
- package/dist/main.js +12 -0
- package/dist/main.js.map +1 -1
- package/package.json +3 -1
- package/wasm/ultra/manifest.json +23 -0
- package/wasm/ultra/nosimd/26.02.13-24c4552-prod/privid_fhe_ultra.js +18 -0
- package/wasm/ultra/nosimd/{26.01.29-ad4fa18 → 26.02.13-24c4552-prod}/privid_fhe_ultra.wasm +0 -0
- package/wasm/ultra/nosimd/version.json +1 -1
- package/wasm/ultra/simd/26.02.13-24c4552-prod/privid_fhe_ultra.js +18 -0
- package/wasm/ultra/simd/{26.01.29-ad4fa18 → 26.02.13-24c4552-prod}/privid_fhe_ultra.wasm +0 -0
- package/wasm/ultra/simd/version.json +1 -1
- package/wasm/{ultra/nosimd/26.01.29-ad4fa18 → ultra-dev/nosimd/26.02.13-24c4552-dev}/privid_fhe_ultra.js +1 -1
- package/wasm/ultra-dev/nosimd/26.02.13-24c4552-dev/privid_fhe_ultra.wasm +0 -0
- package/wasm/ultra-dev/nosimd/version.json +3 -0
- package/wasm/{ultra/simd/26.01.29-ad4fa18 → ultra-dev/simd/26.02.13-24c4552-dev}/privid_fhe_ultra.js +1 -1
- package/wasm/ultra-dev/simd/26.02.13-24c4552-dev/privid_fhe_ultra.wasm +0 -0
- package/wasm/ultra-dev/simd/version.json +3 -0
- package/workers/wasm-new.worker.js +1 -1
- package/workers/wasm-new.worker.js.map +3 -3
|
Binary file
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(()=>{var $=Symbol("Comlink.proxy"),ie=Symbol("Comlink.endpoint"),ne=Symbol("Comlink.releaseProxy"),U=Symbol("Comlink.finalizer"),W=Symbol("Comlink.thrown"),Y=r=>typeof r=="object"&&r!==null||typeof r=="function",se={canHandle:r=>Y(r)&&r[$],serialize(r){let{port1:e,port2:t}=new MessageChannel;return _(r,e),[t,[t]]},deserialize(r){return r.start(),le(r)}},oe={canHandle:r=>Y(r)&&W in r,serialize({value:r}){let e;return r instanceof Error?e={isError:!0,value:{message:r.message,name:r.name,stack:r.stack}}:e={isError:!1,value:r},[e,[]]},deserialize(r){throw r.isError?Object.assign(new Error(r.value.message),r.value):r.value}},j=new Map([["proxy",se],["throw",oe]]);function ae(r,e){for(let t of r)if(e===t||t==="*"||t instanceof RegExp&&t.test(e))return!0;return!1}function _(r,e=globalThis,t=["*"]){e.addEventListener("message",function n(i){if(!i||!i.data)return;if(!ae(t,i.origin)){console.warn(`Invalid origin '${i.origin}' for comlink proxy`);return}let{id:o,type:l,path:c}=Object.assign({path:[]},i.data),a=(i.data.argumentList||[]).map(w),u;try{let d=c.slice(0,-1).reduce((g,f)=>g[f],r),m=c.reduce((g,f)=>g[f],r);switch(l){case"GET":u=m;break;case"SET":d[c.slice(-1)[0]]=w(i.data.value),u=!0;break;case"APPLY":u=m.apply(d,a);break;case"CONSTRUCT":{let g=new m(...a);u=fe(g)}break;case"ENDPOINT":{let{port1:g,port2:f}=new MessageChannel;_(r,f),u=ge(g,[g])}break;case"RELEASE":u=void 0;break;default:return}}catch(d){u={value:d,[W]:0}}Promise.resolve(u).catch(d=>({value:d,[W]:0})).then(d=>{let[m,g]=k(d);e.postMessage(Object.assign(Object.assign({},m),{id:o}),g),l==="RELEASE"&&(e.removeEventListener("message",n),H(e),U in r&&typeof r[U]=="function"&&r[U]())}).catch(d=>{let[m,g]=k({value:new TypeError("Unserializable return value"),[W]:0});e.postMessage(Object.assign(Object.assign({},m),{id:o}),g)})}),e.start&&e.start()}function ce(r){return r.constructor.name==="MessagePort"}function H(r){ce(r)&&r.close()}function le(r,e){let t=new Map;return r.addEventListener("message",function(i){let{data:o}=i;if(!o||!o.id)return;let l=t.get(o.id);if(l)try{l(o)}finally{t.delete(o.id)}}),B(r,t,[],e)}function R(r){if(r)throw new Error("Proxy has been released and is not useable")}function V(r){return b(r,new Map,{type:"RELEASE"}).then(()=>{H(r)})}var A=new WeakMap,M="FinalizationRegistry"in globalThis&&new FinalizationRegistry(r=>{let e=(A.get(r)||0)-1;A.set(r,e),e===0&&V(r)});function ue(r,e){let t=(A.get(e)||0)+1;A.set(e,t),M&&M.register(r,e,r)}function de(r){M&&M.unregister(r)}function B(r,e,t=[],n=function(){}){let i=!1,o=new Proxy(n,{get(l,c){if(R(i),c===ne)return()=>{de(o),V(r),e.clear(),i=!0};if(c==="then"){if(t.length===0)return{then:()=>o};let a=b(r,e,{type:"GET",path:t.map(u=>u.toString())}).then(w);return a.then.bind(a)}return B(r,e,[...t,c])},set(l,c,a){R(i);let[u,d]=k(a);return b(r,e,{type:"SET",path:[...t,c].map(m=>m.toString()),value:u},d).then(w)},apply(l,c,a){R(i);let u=t[t.length-1];if(u===ie)return b(r,e,{type:"ENDPOINT"}).then(w);if(u==="bind")return B(r,e,t.slice(0,-1));let[d,m]=z(a);return b(r,e,{type:"APPLY",path:t.map(g=>g.toString()),argumentList:d},m).then(w)},construct(l,c){R(i);let[a,u]=z(c);return b(r,e,{type:"CONSTRUCT",path:t.map(d=>d.toString()),argumentList:a},u).then(w)}});return ue(o,r),o}function me(r){return Array.prototype.concat.apply([],r)}function z(r){let e=r.map(k);return[e.map(t=>t[0]),me(e.map(t=>t[1]))]}var K=new WeakMap;function ge(r,e){return K.set(r,e),r}function fe(r){return Object.assign(r,{[$]:!0})}function k(r){for(let[e,t]of j)if(t.canHandle(r)){let[n,i]=t.serialize(r);return[{type:"HANDLER",name:e,value:n},i]}return[{type:"RAW",value:r},K.get(r)||[]]}function w(r){switch(r.type){case"HANDLER":return j.get(r.name).deserialize(r.value);case"RAW":return r.value}}function b(r,e,t,n){return new Promise(i=>{let o=he();e.set(o,i),r.start&&r.start(),r.postMessage(Object.assign({id:o},t),n)})}function he(){return new Array(4).fill(0).map(()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16)).join("-")}var D={FaceServiceWebWorker:"face-service-web-worker",DocumentServiceWebWorker:"document-service-web-worker",EngineServiceWebWorker:"engine-service-web-worker",DebugType:"debug-type"};var Ee=null,x=null;function X(r){x=r}function ye(){if(x!==null)return x;try{let e=new URLSearchParams(window.location.search).get("debug_type");return e||(pe()!=="prod"?"3":Ee?.evaluateFlag(D.DebugType)?.toString()||"0")}catch{return"0"}}function s(r,e,t="LOG"){let n=["1","2","3","901","902","903"],i=["2","3","902","903"],o=["3","903","904"],l=ye();t==="ERROR"&&n.includes(l)?console.error("DEBUG_SDK",r,e):t==="WARN"&&i.includes(l)?console.warn("DEBUG_SDK",r,e):t==="LOG"&&o.includes(l)&&console.log("DEBUG_SDK",r,e)}var G;var pe=()=>G||null;var y="ultra";var C="/privid-wasm",p="/privid-wasm";function T(r){return new Promise((e,t)=>{r.onsuccess=()=>e(r.result),r.onerror=()=>t(r.error)})}async function Q(r){if(!indexedDB)throw new Error("IndexedDB not available");let e=indexedDB.open(C,21);e.onupgradeneeded=()=>{let n=e.result;n.objectStoreNames.contains(p)||n.createObjectStore(p)};let t=await T(e);try{let i=t.transaction(p,"readonly").objectStore(p);return await T(i.get(r))}catch(n){throw s("[WasmWorkerService] Error reading from IndexedDB:",n),n}finally{t.close()}}async function J(r,e,t,n){if(!indexedDB)throw new Error("IndexedDB not available");let i=indexedDB.open(C,21);i.onupgradeneeded=()=>{let l=i.result;l.objectStoreNames.contains(p)||l.createObjectStore(p)};let o=await T(i);try{let c=o.transaction(p,"readwrite").objectStore(p),a={cachedWasm:e,cachedScript:t,version:n};return await T(c.put(a,r)),"saved"}finally{o.close()}}async function L(r,e){try{if(e){s("[WasmWorkerService] fetchResource from cdnUrl",r.cdn);let n=await fetch(r.cdn);return s("Response: ",n),n}return s("[WasmWorkerService] fetchResource from localUrl",r.local),await fetch(r.local)}catch(t){return console.error(`[WasmWorkerService] Error fetching resource from CDN. Falling back to local url. Error: ${t}`),await fetch(r.local)}}function Z(r,e){try{let t=r?.version,n=e?.version;s("[WasmWorkerService] checkCacheAndCurrentAreSameVersion cachedVersion vs currentVersion: ",`${t} vs ${n}`);let i=typeof t=="string"?t:t.toString(),o=typeof n=="string"?n:n.toString();return i===o}catch{return!1}}async function ee(r){return(await fetch(`../../../../wasm/${y}/${r}/version.json`)).json()}function O(r){let e=r.reduce((i,o)=>i+o.data.length,0),t=new Uint8Array(e),n=0;for(let i of r)t.set(i.data,n),n+=i.data.length;return t}function re(r){return r.split("").filter(e=>e.codePointAt(0)).join("")}var h={result:null,error:null,progress:null,wasmCropping:null};globalThis.privid_wasm_result=(r,e,t)=>{if(h.result)try{s("[WasmWorkerService] privid_wasm_result called with operation:",r),s("[WasmWorkerService] privid_wasm_result called with id:",e),s("[WasmWorkerService] privid_wasm_result called with response_str:",t),h.result(r,e,t)}catch(n){s("[WasmWorkerService] Error in result callback:",n,"ERROR")}else s("[WasmWorkerService] No result callback registered","","WARN")};globalThis.privid_wasm_error=(r,e,t)=>{if(s("[WasmWorkerService] privid_wasm_error called:",{operation:r,id:e,error_str:t},"ERROR"),h.error)try{h.error(r,e,t)}catch(n){s("[WasmWorkerService] Error in error callback:",n,"ERROR")}else s("[WasmWorkerService] No error callback registered","","WARN")};globalThis.privid_wasm_progress=(r,e,t)=>{if(s("[WasmWorkerService] privid_wasm_progress called:",{progress_type:r,message:e,progress_value:t}),h.progress)try{h.progress(r,e,t)}catch(n){s("[WasmWorkerService] Error in progress callback:",n,"ERROR")}};globalThis.privid_wasm_cropping=r=>{if(s("[WasmWorkerService] privid_wasm_cropping called",r),h.wasmCropping)try{h.wasmCropping(r)}catch(e){s("[WasmWorkerService] Error in wasmCropping callback:",e,"ERROR")}};var F=class{constructor(){this.wasmPrividModules=null;this.apiUrl=null;this.sessionToken=null;this.publicKey=null;this.debugType=null;this.proxiedResultCallback=null;this.proxiedErrorCallback=null;this.proxiedProgressCallback=null;this.wasmSession=null;this.setCache=!0;this.checkWasmLoaded=!1;this.cdnUrl="https://ultra-wasm.devel.privateid.com";this.useCdnLink=!0;this.isSimd=null;this.moduleInitializationLock=null;this.isModuleInitializing=!1;this.customWasmUrl=null}async loadModules(e,t,n){try{if(s("[WasmWorkerService] loadModules called with params:",e),this.moduleInitializationLock)try{return s("[WasmWorkerService] loadModules waiting for existing initialization to complete",""),await this.moduleInitializationLock,"Already loaded"}catch(o){return s("[WasmWorkerService] Previous initialization failed, retrying...",o,"WARN"),"Retrying initialization"}return s("[WasmWorkerService] loadModules starting new initialization",""),this.isModuleInitializing=!0,this.moduleInitializationLock=this.loadModulesInternal(e,t,n),await this.moduleInitializationLock}catch(i){throw s("[WasmWorkerService] loadModules error during initialization:",i,"ERROR"),i}finally{this.isModuleInitializing=!1,this.moduleInitializationLock=null}}async loadModulesInternal(e,t,n){this.proxiedErrorCallback=t,h.error=t,this.proxiedProgressCallback=n,h.progress=n,this.apiUrl=e.apiUrl,this.sessionToken=e.sessionToken,this.publicKey=e.publicKey,this.useCdnLink=e.useCdn,this.setCache=e.cacheConfig,this.isSimd=e.simd,this.customWasmUrl=e.customWasmUrl||null,e.debugType&&(this.debugType=e.debugType,X(e.debugType)),s("[WasmWorkerService] isLoad params: ",e);let i=e.simd?"simd":"nosimd",o="privid_fhe_ultra",l=await Q(y),c=await ee(i);if(this.customWasmUrl){if(s("[WasmWorkerService] Custom WASM URL detected, bypassing cache",this.customWasmUrl),await this.loadFromPackage(c.version,i,o,e.usageScenario,e.cacheContent),!this.wasmPrividModules||!this.wasmSession){let a="WASM modules loaded but session not initialized";throw s(`[WasmWorkerService] ERROR: ${a}`,"","ERROR"),new Error(a)}return"Loaded from custom URL"}if(Z(l,c)){if(s("[WasmWorkerService] same version confirmed",""),s("[WasmWorkerService] PRIVMODULES LOADED?: ",this.wasmPrividModules),this.wasmPrividModules)if(this.wasmPrividModules&&e.shouldRegenerateSession){s("[WasmWorkerService] Regenerating session as requested","");let a=await this.initializeWasmSession(e.usageScenario,e.cacheContent);if(!a)throw s("[WasmWorkerService] ERROR: Failed to regenerate session","","ERROR"),new Error("Session regeneration failed");this.wasmSession=a}else return await this.loadFromPackage(c.version,i,o,e.usageScenario,e.cacheContent),"Loaded";else{let{cachedWasm:a,cachedScript:u}=l;if(a&&u){let d=new Blob([u],{type:"application/javascript"}),m=URL.createObjectURL(d);try{return importScripts(m),typeof createTFLiteModule>"u"?(s("[WasmWorkerService] createTFLiteModule not defined, falling back to package","","WARN"),await this.loadFromPackage(c.version,i,o,e.usageScenario,e.cacheContent),"Loaded from package (cache invalid)"):(this.wasmPrividModules=await createTFLiteModule({wasmBinary:a}),s("[WasmWorkerService] ULTRA MODULES ",this.wasmPrividModules),this.checkWasmLoaded||(await this.initializeWasmSession(e.usageScenario,e.cacheContent),this.checkWasmLoaded=!0),s("[WasmWorkerService] WASM MODULES: ",this.wasmPrividModules),"Loaded from cache (wasm and script)")}catch(g){return s("[WasmWorkerService] Error loading from cache:",g,"ERROR"),await this.loadFromPackage(c.version,i,o,e.usageScenario,e.cacheContent),"Loaded from package (cache error)"}finally{URL.revokeObjectURL(m)}}}if(!this.wasmPrividModules||!this.wasmSession){let a="WASM modules loaded but session not initialized";throw s(`[WasmWorkerService] ERROR: ${a}`,"","ERROR"),new Error(a)}return"Cache Loaded"}if(await this.loadFromPackage(c.version,i,o,e.usageScenario,e.cacheContent),!this.wasmPrividModules||!this.wasmSession){let a="WASM modules loaded but session not initialized";throw s(`[WasmWorkerService] ERROR: ${a}`,"","ERROR"),new Error(a)}return"Loaded"}async loadFromPackage(e,t,n,i,o){return s("[WasmWorkerService loadFromPackage wasmVersion: ",e),this.wasmPrividModules=await this.loadWasmModule(t,n,!0,e),this.checkWasmLoaded||(await this.initializeWasmSession(i,o),this.checkWasmLoaded=!0),!0}async loadWasmModule(e,t,n,i){if(this.customWasmUrl){s("[WasmWorkerService] Using custom WASM URL:",this.customWasmUrl);let f={cdn:`${this.cdnUrl}/${y}/${e}/${i}/${t}.js`,local:`../wasm/${y}/${e}/${i}/${t}.js`},E=await fetch(this.customWasmUrl);if(!E.ok)throw new Error(`Failed to fetch custom WASM from ${this.customWasmUrl}: ${E.status}`);let P=await(await L(f,this.useCdnLink)).text(),v=await E.arrayBuffer();s("[WasmWorkerService] loadWasmModule script and buffer from custom URL': ",{scriptBuffer:P,buffer:v});let te=new Blob([P],{type:"application/javascript"}),N=URL.createObjectURL(te);try{if(importScripts(N),typeof createTFLiteModule>"u")throw new Error("createTFLiteModule not defined after loading script");let S=await createTFLiteModule({wasmBinary:v});return s("[WasmWorkerService] loadWasmModule module from custom URL: ",S),S}catch(S){throw s("[WasmWorkerService] Error loading WASM module from custom URL:",S,"ERROR"),S}finally{URL.revokeObjectURL(N)}}let o={cdn:`${this.cdnUrl}/${y}/${e}/${i}/${t}.wasm`,local:`../wasm/${y}/${e}/${i}/${t}.wasm`},l={cdn:`${this.cdnUrl}/${y}/${e}/${i}/${t}.js`,local:`../wasm/${y}/${e}/${i}/${t}.js`},c=await L(o,this.useCdnLink),u=await(await L(l,this.useCdnLink)).text(),d=await c.arrayBuffer();s("[WasmWorkerService] loadWasmModule script and buffer': ",{scriptBuffer:u,buffer:d});let m=new Blob([u],{type:"application/javascript"}),g=URL.createObjectURL(m);try{if(importScripts(g),typeof createTFLiteModule>"u")throw new Error("createTFLiteModule not defined after loading script");let f=await createTFLiteModule({wasmBinary:d});if(s("[WasmWorkerService] loadWasmModule module: ",f),n){let E=f.UTF8ToString(f._privid_get_version());await J(y,d,u,E)}return f}catch(f){throw s("[WasmWorkerService] Error loading WASM module:",f,"ERROR"),f}finally{URL.revokeObjectURL(g)}}async initializeWasmSession(e="",t=""){if(this.wasmSession)return this.wasmSession;let n={...this.apiUrl,session_token:this.sessionToken,public_key:this.publicKey,debug_level:this.debugType,custom_settings:{usage_scenario:e,cache_content:t}};s("[WasmWorkerService] initializeWasmSession settings:",n);let i=this.createWasmResultPointers(),o=this.createStringBuffer(JSON.stringify(n)),l=this.wasmPrividModules._privid_initialize_session(...o.getArgs(),i.getOuterPointer());if(s("[WasmWorkerService] initializeWasmSession isSessionInitialized: ",l),o.free(),!l)return s("[WasmWorkerService] ERROR: privid_initialize_session failed","","ERROR"),s("[WasmWorkerService] Settings were:",n,"ERROR"),null;let c=i.getInnerPointer();return this.wasmSession=c,s("[WasmWorkerService] initializeWasmSession wasmSessionPointer: ",c),c}async ultraEnroll(e,t){if(h.result=t,!await this.ensureModulesAreReady())return!1;let n=e.imageData.data.length*e.imageData.data.BYTES_PER_ELEMENT,i=this.allocatePointer(n);this.wasmPrividModules.HEAPU8.set(new Uint8Array(e.imageData.data),i);let o=this.allocatePointer(Int32Array.BYTES_PER_ELEMENT),l=this.allocatePointer(Int32Array.BYTES_PER_ELEMENT),a=new TextEncoder().encode(`${e.config}`),u=a.length,d=this.allocatePointer(u);this.wasmPrividModules.HEAP8.set(a,d/a.BYTES_PER_ELEMENT),s("[WasmWorkerService] ultraEnroll config: ",e.config);try{return this.wasmPrividModules._privid_user_enroll(this.wasmSession,d,u,i,e.imageData.width,e.imageData.height,o,l),!0}catch(m){return s("[WasmWorkerService] ultraEnroll error: ",m,"ERROR"),!1}finally{this.releasePointers(i,o,l,d)}}async ultraPredict(e,t,n){if(h.result=t,n&&(h.progress=n),!await this.ensureModulesAreReady())return!1;let i=O(e.originalImages),l=new TextEncoder().encode(e.config),c=l.length,a=this.allocatePointer(c);this.wasmPrividModules.HEAP8.set(l,a/l.BYTES_PER_ELEMENT);let u=i.length*i.BYTES_PER_ELEMENT,d=this.allocatePointer(u);this.wasmPrividModules.HEAPU8.set(new Uint8Array(i),d);let m=this.allocatePointer(Int32Array.BYTES_PER_ELEMENT),g=this.allocatePointer(Int32Array.BYTES_PER_ELEMENT);s("[WasmWorkerService] ultraPredict config: ",e.config);try{return this.wasmPrividModules._privid_user_predict(this.wasmSession,a,c,d,e.originalImages[0].width,e.originalImages[0].height,m,g),!0}catch(f){return s("[WasmWorkerService] ultraPredict error:",f,"ERROR"),!1}finally{this.releasePointers(d,m,g,a)}}async ultraAgeEstimate(e,t,n,i){if(h.result=t,n&&(h.progress=n),i&&(h.wasmCropping=i),!await this.ensureModulesAreReady())return!1;let o=O(e.originalImages),c=new TextEncoder().encode(e.config),a=c.length,u=this.allocatePointer(a);this.wasmPrividModules.HEAP8.set(c,u/c.BYTES_PER_ELEMENT);let d=o.length*o.BYTES_PER_ELEMENT,m=this.allocatePointer(d);this.wasmPrividModules.HEAPU8.set(new Uint8Array(o),m);let g=this.allocatePointer(Int32Array.BYTES_PER_ELEMENT),f=this.allocatePointer(Int32Array.BYTES_PER_ELEMENT);s("[WasmWorkerService] ultraAgeEstimate config: ",e.config);try{return this.wasmPrividModules._privid_estimate_age(this.wasmSession,u,a,m,e.originalImages[0].width,e.originalImages[0].height,g,f),!0}catch(E){return s("[WasmWorkerService] ultraAgeEstimate error: ",E,"ERROR"),!1}finally{this.releasePointers(m,g,f,u)}}async ultraCompareEmbeddings(e,t){if(h.result=t,!await this.ensureModulesAreReady())return!1;let n=new TextEncoder,i=n.encode(e.config),o=i.length,l=this.allocatePointer(o);this.wasmPrividModules.HEAP8.set(i,l/i.BYTES_PER_ELEMENT);let c=n.encode(`${e.encryptedEmbeddingsA}`),a=c.length,u=this.allocatePointer(a);this.wasmPrividModules.HEAPU8.set(new Uint8Array(c),u);let d=n.encode(`${e.encryptedEmbeddingsB}`),m=d.length,g=this.allocatePointer(m);this.wasmPrividModules.HEAPU8.set(new Uint8Array(d),g);let f=this.allocatePointer(Int32Array.BYTES_PER_ELEMENT),E=this.allocatePointer(Int32Array.BYTES_PER_ELEMENT);s("[WasmWorkerService] ultraCompareEmbeddings config: ",e.config);try{return this.wasmPrividModules._privid_compare_embeddings(this.wasmSession,l,o,u,a,g,m,f,E),!0}catch(I){return s("[WasmWorkerService] ultraCompareEmbeddings error:",I,"ERROR"),!1}finally{this.releasePointers(u,g,f,E,l)}}pkiEncrypt(e){if(!this.wasmPrividModules||!this.wasmSession)return{error:!0};let t=new TextEncoder,n=t.encode(e.payload),i=n.length,o=this.allocatePointer(i),l=this.allocatePointer(Int32Array.BYTES_PER_ELEMENT),c=this.allocatePointer(Int32Array.BYTES_PER_ELEMENT);this.wasmPrividModules.HEAP8.set(n,o/n.BYTES_PER_ELEMENT);let a=t.encode(e.config),u=a.length,d=this.allocatePointer(u);this.wasmPrividModules.HEAP8.set(a,d/a.BYTES_PER_ELEMENT),s("[WasmWorkerService] pkiEncrypt params: ",e);try{this.wasmPrividModules._privid_encrypt_payload(this.wasmSession,d,u,o,i,l,c);let[m]=new Uint32Array(this.wasmPrividModules.HEAPU8.buffer,c,1);if(m>0){let g=new Uint32Array(this.wasmPrividModules.HEAPU8.buffer,c,1)[0],f=new Uint32Array(this.wasmPrividModules.HEAPU8.buffer,l,1)[0],E=new Uint8Array(this.wasmPrividModules.HEAPU8.buffer,f,g),P=new TextDecoder("utf-8").decode(E);P.replace(/\0/g,""),P.replace(" ","");let v=re(P);return s("[WasmWorkerService] pkiEncrypt result: ",v),v}return{error:!0}}catch(m){return s("[WasmWorkerService] pkiEncrypt error:",m,"ERROR"),{error:!0}}finally{this.releasePointers(o,l,c,d)}}async ultraScanBackDocument(e,t){if(h.result=t,!await this.ensureModulesAreReady())return!1;let i=new TextEncoder().encode(e.config),o=i.length,l=this.allocatePointer(o);this.wasmPrividModules.HEAP8.set(i,l/i.BYTES_PER_ELEMENT);let c=e.imageInput.data.length*e.imageInput.data.BYTES_PER_ELEMENT,a=this.allocatePointer(c);this.wasmPrividModules.HEAPU8.set(new Uint8Array(e.imageInput.data),a);let u=this.allocatePointer(Int32Array.BYTES_PER_ELEMENT),d=this.allocatePointer(Int32Array.BYTES_PER_ELEMENT);s("[WasmWorkerService] ultraScanBackDocument config: ",e.config);try{return this.wasmPrividModules._privid_doc_scan_back(this.wasmSession,l,o,a,e.imageInput.width,e.imageInput.height,u,d),!0}catch(m){return s("[WasmWorkerService] ultraScanBackDocument error:",m,"ERROR"),!1}finally{this.releasePointers(a,u,d,l)}}async ultraScanFrontDocument(e,t){if(h.result=t,!await this.ensureModulesAreReady())return!1;let i=new TextEncoder().encode(e.config),o=i.length,l=this.allocatePointer(o);this.wasmPrividModules.HEAP8.set(i,l/i.BYTES_PER_ELEMENT);let c=e.imageInput.data.length*e.imageInput.data.BYTES_PER_ELEMENT,a=this.allocatePointer(c);this.wasmPrividModules.HEAPU8.set(new Uint8Array(e.imageInput.data),a);let u=this.allocatePointer(Int32Array.BYTES_PER_ELEMENT),d=this.allocatePointer(Int32Array.BYTES_PER_ELEMENT);s("[WasmWorkerService] ultraScanFrontDocument config: ",e.config);try{return this.wasmPrividModules._privid_doc_scan_front(this.wasmSession,l,o,a,e.imageInput.width,e.imageInput.height,u,d),!0}catch(m){return s("[WasmWorkerService] ultraScanFrontDocument error:",m,"ERROR"),!1}finally{this.releasePointers(a,u,d,l)}}async ultraDocumentOcr(e,t){if(h.result=t,!await this.ensureModulesAreReady())return!1;let n=new TextEncoder,i=n.encode(e.config),o=n.encode(`${e.imageInput}`),l=i.length,c=this.allocatePointer(l);this.wasmPrividModules.HEAP8.set(i,c/i.BYTES_PER_ELEMENT);let a=o.length,u=this.allocatePointer(a);this.wasmPrividModules.HEAPU8.set(new Uint8Array(o),u);let d=this.allocatePointer(Int32Array.BYTES_PER_ELEMENT),m=this.allocatePointer(Int32Array.BYTES_PER_ELEMENT);s("[WasmWorkerService] ultraDocumentOcr config: ",e.config);try{return this.wasmPrividModules._privid_doc_ocr_front_enc(this.wasmSession,c,l,u,a,d,m),!0}catch(g){return s("[WasmWorkerService] ultraDocumentOcr error:",g,"ERROR"),!1}finally{this.releasePointers(u,d,m,c)}}async checkModelsAreLoaded(){try{return await this.ensureModulesAreReady()?this.wasmPrividModules._privid_check_models():!1}catch(e){return s("[WasmWorkerService] checkModelsAreLoaded error",e,"ERROR"),!1}}async freeMemory(){try{return await this.ensureModulesAreReady()?this.wasmPrividModules._privid_free_memory():!1}catch(e){return s("[WasmWorkerService] freeMemory error: ",e,"ERROR"),!1}}createWasmResultPointers(){let e=null,t=null;return{getOuterPointer:()=>(e||(e=this.wasmPrividModules._malloc(Int32Array.BYTES_PER_ELEMENT)),e),getInnerPointer:()=>e?t||([t]=new Uint32Array(this.wasmPrividModules.HEAPU8.buffer,e,1),t):null}}createStringBuffer(e){let t=null,n=0,i=null;return{getArgs:()=>{if(i!==null)return i;if(e==null||typeof e=="number"&&Number.isNaN(e))return i=[0,0],i;try{let o=String(e),c=new TextEncoder().encode(o);if(n=c.length*c.BYTES_PER_ELEMENT,t=this.wasmPrividModules._malloc(n),t===0)throw new Error("WASM memory allocation failed");return this.wasmPrividModules.HEAP8.set(c,t/c.BYTES_PER_ELEMENT),i=[t,n],i}catch(o){return s("[WasmWorkerService] createStringBuffer error:",o,"ERROR"),i=[0,0],i}},free:()=>{if(t!==null&&t!==0){try{this.wasmPrividModules._free(t)}catch(o){s("[WasmWorkerService] free buffer error:",o,"ERROR")}t=null,n=0,i=null}},isAllocated:()=>t!==null&&t!==0}}releasePointers(...e){e.forEach(t=>{if(t!==null&&t!==0)try{this.wasmPrividModules._free(t)}catch(n){s("[WasmWorkerService] releasePointers error:",n,"ERROR")}})}allocatePointer(e){try{return this.wasmPrividModules._malloc(e)}catch(t){return s("[WasmWorkerService] allocatePointer error:",t,"ERROR"),0}}async ensureModulesAreReady(){if(this.isModuleInitializing&&this.moduleInitializationLock){s("[WasmWorkerService] Waiting for ongoing module initialization...","","INFO");try{await this.moduleInitializationLock}catch(e){return s("[WasmWorkerService] Module initialization failed",e,"ERROR"),!1}}if(!this.wasmPrividModules){if(!this.apiUrl||!this.sessionToken||!this.publicKey)return s("[WasmWorkerService] ensureModulesInitialized: Missing required initialization parameters",{apiUrl:!!this.apiUrl,sessionToken:!!this.sessionToken,publicKey:!!this.publicKey},"ERROR"),!1;try{await this.loadModules({simd:this.isSimd,apiUrl:this.apiUrl,sessionToken:this.sessionToken,publicKey:this.publicKey,debugType:this.debugType||"",cacheConfig:this.setCache},this.proxiedErrorCallback)}catch(e){return s("[WasmWorkerService] ensureModulesInitialized: loadModules failed",e,"ERROR"),!1}}return!this.wasmPrividModules||!this.wasmSession?(s("[WasmWorkerService] ensureModulesInitialized: WASM not fully initialized",{hasModules:!!this.wasmPrividModules,hasSession:!!this.wasmSession},"ERROR"),!1):!0}},we=new F;_(we);})();
|
|
1
|
+
(()=>{var $=Symbol("Comlink.proxy"),ie=Symbol("Comlink.endpoint"),ne=Symbol("Comlink.releaseProxy"),U=Symbol("Comlink.finalizer"),R=Symbol("Comlink.thrown"),V=r=>typeof r=="object"&&r!==null||typeof r=="function",oe={canHandle:r=>V(r)&&r[$],serialize(r){let{port1:e,port2:t}=new MessageChannel;return _(r,e),[t,[t]]},deserialize(r){return r.start(),ue(r)}},ae={canHandle:r=>V(r)&&R in r,serialize({value:r}){let e;return r instanceof Error?e={isError:!0,value:{message:r.message,name:r.name,stack:r.stack}}:e={isError:!1,value:r},[e,[]]},deserialize(r){throw r.isError?Object.assign(new Error(r.value.message),r.value):r.value}},Y=new Map([["proxy",oe],["throw",ae]]);function le(r,e){for(let t of r)if(e===t||t==="*"||t instanceof RegExp&&t.test(e))return!0;return!1}function _(r,e=globalThis,t=["*"]){e.addEventListener("message",function i(s){if(!s||!s.data)return;if(!le(t,s.origin)){console.warn(`Invalid origin '${s.origin}' for comlink proxy`);return}let{id:o,type:c,path:a}=Object.assign({path:[]},s.data),l=(s.data.argumentList||[]).map(p),u;try{let d=a.slice(0,-1).reduce((g,h)=>g[h],r),m=a.reduce((g,h)=>g[h],r);switch(c){case"GET":u=m;break;case"SET":d[a.slice(-1)[0]]=p(s.data.value),u=!0;break;case"APPLY":u=m.apply(d,l);break;case"CONSTRUCT":{let g=new m(...l);u=fe(g)}break;case"ENDPOINT":{let{port1:g,port2:h}=new MessageChannel;_(r,h),u=he(g,[g])}break;case"RELEASE":u=void 0;break;default:return}}catch(d){u={value:d,[R]:0}}Promise.resolve(u).catch(d=>({value:d,[R]:0})).then(d=>{let[m,g]=k(d);e.postMessage(Object.assign(Object.assign({},m),{id:o}),g),c==="RELEASE"&&(e.removeEventListener("message",i),j(e),U in r&&typeof r[U]=="function"&&r[U]())}).catch(d=>{let[m,g]=k({value:new TypeError("Unserializable return value"),[R]:0});e.postMessage(Object.assign(Object.assign({},m),{id:o}),g)})}),e.start&&e.start()}function ce(r){return r.constructor.name==="MessagePort"}function j(r){ce(r)&&r.close()}function ue(r,e){let t=new Map;return r.addEventListener("message",function(s){let{data:o}=s;if(!o||!o.id)return;let c=t.get(o.id);if(c)try{c(o)}finally{t.delete(o.id)}}),B(r,t,[],e)}function W(r){if(r)throw new Error("Proxy has been released and is not useable")}function H(r){return S(r,new Map,{type:"RELEASE"}).then(()=>{j(r)})}var A=new WeakMap,M="FinalizationRegistry"in globalThis&&new FinalizationRegistry(r=>{let e=(A.get(r)||0)-1;A.set(r,e),e===0&&H(r)});function de(r,e){let t=(A.get(e)||0)+1;A.set(e,t),M&&M.register(r,e,r)}function me(r){M&&M.unregister(r)}function B(r,e,t=[],i=function(){}){let s=!1,o=new Proxy(i,{get(c,a){if(W(s),a===ne)return()=>{me(o),H(r),e.clear(),s=!0};if(a==="then"){if(t.length===0)return{then:()=>o};let l=S(r,e,{type:"GET",path:t.map(u=>u.toString())}).then(p);return l.then.bind(l)}return B(r,e,[...t,a])},set(c,a,l){W(s);let[u,d]=k(l);return S(r,e,{type:"SET",path:[...t,a].map(m=>m.toString()),value:u},d).then(p)},apply(c,a,l){W(s);let u=t[t.length-1];if(u===ie)return S(r,e,{type:"ENDPOINT"}).then(p);if(u==="bind")return B(r,e,t.slice(0,-1));let[d,m]=z(l);return S(r,e,{type:"APPLY",path:t.map(g=>g.toString()),argumentList:d},m).then(p)},construct(c,a){W(s);let[l,u]=z(a);return S(r,e,{type:"CONSTRUCT",path:t.map(d=>d.toString()),argumentList:l},u).then(p)}});return de(o,r),o}function ge(r){return Array.prototype.concat.apply([],r)}function z(r){let e=r.map(k);return[e.map(t=>t[0]),ge(e.map(t=>t[1]))]}var K=new WeakMap;function he(r,e){return K.set(r,e),r}function fe(r){return Object.assign(r,{[$]:!0})}function k(r){for(let[e,t]of Y)if(t.canHandle(r)){let[i,s]=t.serialize(r);return[{type:"HANDLER",name:e,value:i},s]}return[{type:"RAW",value:r},K.get(r)||[]]}function p(r){switch(r.type){case"HANDLER":return Y.get(r.name).deserialize(r.value);case"RAW":return r.value}}function S(r,e,t,i){return new Promise(s=>{let o=Ee();e.set(o,s),r.start&&r.start(),r.postMessage(Object.assign({id:o},t),i)})}function Ee(){return new Array(4).fill(0).map(()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16)).join("-")}var D={FaceServiceWebWorker:"face-service-web-worker",DocumentServiceWebWorker:"document-service-web-worker",EngineServiceWebWorker:"engine-service-web-worker",DebugType:"debug-type",WasmBuildType:"sdk-wasm-build"};var ye=null,C=null;function X(r){C=r}function we(){if(C!==null)return C;try{let e=new URLSearchParams(window.location.search).get("debug_type");return e||(pe()!=="prod"?"3":ye?.evaluateFlag(D.DebugType)?.toString()||"0")}catch{return"0"}}function n(r,e,t="LOG"){let i=["1","2","3","901","902","903"],s=["2","3","902","903"],o=["3","903","904"],c=we();t==="ERROR"&&i.includes(c)?console.error("DEBUG_SDK",r,e):t==="WARN"&&s.includes(c)?console.warn("DEBUG_SDK",r,e):(t==="DEBUG"&&o.includes(c)||t==="LOG"&&o.includes(c))&&console.log("DEBUG_SDK",r,e)}var G;var pe=()=>G||null;var y="ultra";var x="/privid-wasm",w="/privid-wasm";function L(r){return new Promise((e,t)=>{r.onsuccess=()=>e(r.result),r.onerror=()=>t(r.error)})}async function Q(r){if(!indexedDB)throw new Error("IndexedDB not available");let e=indexedDB.open(x,21);e.onupgradeneeded=()=>{let i=e.result;i.objectStoreNames.contains(w)||i.createObjectStore(w)};let t=await L(e);try{let s=t.transaction(w,"readonly").objectStore(w);return await L(s.get(r))}catch(i){throw n("[WasmWorkerService] Error reading from IndexedDB:",i),i}finally{t.close()}}async function J(r,e,t,i){if(!indexedDB)throw new Error("IndexedDB not available");let s=indexedDB.open(x,21);s.onupgradeneeded=()=>{let c=s.result;c.objectStoreNames.contains(w)||c.createObjectStore(w)};let o=await L(s);try{let a=o.transaction(w,"readwrite").objectStore(w),l={cachedWasm:e,cachedScript:t,version:i};return await L(a.put(l,r)),"saved"}finally{o.close()}}async function T(r,e){if(e)try{n("[WasmWorkerService] fetchResource from cdnUrl",r.cdn);let i=await fetch(r.cdn);if(!i.ok)throw new Error(`CDN response not ok: ${i.status}`);return n("Response: ",i),i}catch(i){console.error(`[WasmWorkerService] CDN fetch failed, trying local. Error: ${i}`)}n("[WasmWorkerService] fetchResource from localUrl",r.local);let t=await fetch(r.local);if(!t.ok)throw new Error(`Local fetch failed: ${t.status} for ${r.local}`);return t}function Z(r,e){try{let t=r?.version,i=e?.version;n("[WasmWorkerService] checkCacheAndCurrentAreSameVersion cachedVersion vs currentVersion: ",`${t} vs ${i}`);let s=typeof t=="string"?t:t.toString(),o=typeof i=="string"?i:i.toString();return s===o}catch{return!1}}async function ee(r,e,t=y){let i=e?`${e}/wasm/${t}/${r}/version.json`:`../wasm/${t}/${r}/version.json`;return(await fetch(i)).json()}function F(r){let e=r.reduce((s,o)=>s+o.data.length,0),t=new Uint8Array(e),i=0;for(let s of r)t.set(s.data,i),i+=s.data.length;return t}function re(r){return r.split("").filter(e=>e.codePointAt(0)).join("")}async function te(r){try{n("[wasm-worker.utils] Validating custom WASM URL:",r);let t=(await fetch(r,{method:"HEAD"})).ok;return n("[wasm-worker.utils] Custom WASM URL validation result:",t),t}catch(e){return n("[wasm-worker.utils] Custom WASM URL validation failed:",e,"ERROR"),!1}}var f={result:null,error:null,progress:null,wasmCropping:null};globalThis.privid_wasm_result=(r,e,t)=>{if(f.result)try{n("[WasmWorkerService] privid_wasm_result called with operation:",r),n("[WasmWorkerService] privid_wasm_result called with id:",e),n("[WasmWorkerService] privid_wasm_result called with response_str:",t),f.result(r,e,t)}catch(i){n("[WasmWorkerService] Error in result callback:",i,"ERROR")}else n("[WasmWorkerService] No result callback registered","","WARN")};globalThis.privid_wasm_error=(r,e,t)=>{if(n("[WasmWorkerService] privid_wasm_error called:",{operation:r,id:e,error_str:t},"ERROR"),f.error)try{f.error(r,e,t)}catch(i){n("[WasmWorkerService] Error in error callback:",i,"ERROR")}else n("[WasmWorkerService] No error callback registered","","WARN")};globalThis.privid_wasm_progress=(r,e,t)=>{if(n("[WasmWorkerService] privid_wasm_progress called:",{progress_type:r,message:e,progress_value:t}),f.progress)try{f.progress(r,e,t)}catch(i){n("[WasmWorkerService] Error in progress callback:",i,"ERROR")}};globalThis.privid_wasm_cropping=r=>{if(n("[WasmWorkerService] privid_wasm_cropping called",r),f.wasmCropping)try{f.wasmCropping(r)}catch(e){n("[WasmWorkerService] Error in wasmCropping callback:",e,"ERROR")}};var O=class{constructor(){this.wasmPrividModules=null;this.apiUrl=null;this.sessionToken=null;this.publicKey=null;this.debugType=null;this.proxiedResultCallback=null;this.proxiedErrorCallback=null;this.proxiedProgressCallback=null;this.wasmSession=null;this.setCache=!0;this.checkWasmLoaded=!1;this.cdnUrl="https://ultra-wasm.devel.privateid.com";this.useCdnLink=!0;this.isSimd=null;this.moduleInitializationLock=null;this.isModuleInitializing=!1;this.customWasm=null;this.wasmBaseUrl=null;this.lastLoadStatus=null;this.currentWasmVersion=null;this.wasmFolderName=y}getWasmFolderName(){return this.wasmFolderName}async loadModules(e,t,i){try{if(this.wasmPrividModules&&this.wasmSession)return{message:"Already initialized",status:this.lastLoadStatus};if(this.moduleInitializationLock)try{return await this.moduleInitializationLock,{message:"Already loaded",status:this.lastLoadStatus}}catch{return{message:"Retrying initialization",status:null}}return this.isModuleInitializing=!0,this.moduleInitializationLock=this.loadModulesInternal(e,t,i),await this.moduleInitializationLock}catch(s){throw n("[WasmWorkerService] loadModules error",s,"ERROR"),s}finally{this.isModuleInitializing=!1,this.moduleInitializationLock=null}}async loadModulesInternal(e,t,i){this.proxiedErrorCallback=t,f.error=t,this.proxiedProgressCallback=i,f.progress=i,this.apiUrl=e.apiUrl,this.sessionToken=e.sessionToken,this.publicKey=e.publicKey,this.useCdnLink=e.useCdn,this.setCache=e.cacheConfig,this.isSimd=e.simd,this.customWasm=e.customWasm||null,this.wasmBaseUrl=e.wasmBaseUrl||null,e.debugType&&(this.debugType=e.debugType,X(e.debugType)),e.wasmFolderName&&(this.wasmFolderName=e.wasmFolderName),n("[WasmWorkerService] isLoad params: ",e);let s=e.simd?"simd":"nosimd",o="privid_fhe_ultra",c=await Q(y),a=await ee(s,this.wasmBaseUrl,this.getWasmFolderName());if(this.currentWasmVersion=a.version,n("[WasmWorkerService] currentModuleVersionJSON: ",a.version),this.customWasm)if(n("[WasmWorkerService] Custom WASM detected, validating...",this.customWasm),await te(this.customWasm.url)){let u=a.version,d=this.customWasm.version;if(d!==u)n("[WasmWorkerService] Version mismatch detected, falling back to CDN",{expected:u,provided:d},"WARN"),this.customWasm=null,this.lastLoadStatus={source:"custom-fallback",versionMatch:!1};else{if(n("[WasmWorkerService] Version match confirmed",{version:d}),n("[WasmWorkerService] Custom WASM URL is valid, loading...",this.customWasm.url),await this.loadFromPackage(a.version,s,o,e.usageScenario,e.cacheContent),!this.wasmPrividModules||!this.wasmSession){let m="WASM modules loaded but session not initialized";throw n(`[WasmWorkerService] ERROR: ${m}`,"","ERROR"),new Error(m)}return this.lastLoadStatus={source:"custom",versionMatch:!0},{message:"Loaded from custom URL",status:this.lastLoadStatus}}}else n("[WasmWorkerService] Custom WASM URL validation failed, falling back to CDN","","WARN"),this.customWasm=null,this.lastLoadStatus={source:"custom-fallback",versionMatch:!1};if(Z(c,a)){if(n("[WasmWorkerService] same version confirmed",""),n("[WasmWorkerService] PRIVMODULES LOADED?: ",this.wasmPrividModules),this.wasmPrividModules)if(this.wasmPrividModules&&e.shouldRegenerateSession){n("[WasmWorkerService] Regenerating session as requested","");let l=await this.initializeWasmSession(e.usageScenario,e.cacheContent);if(!l)throw n("[WasmWorkerService] ERROR: Failed to regenerate session","","ERROR"),new Error("Session regeneration failed");this.wasmSession=l}else return await this.loadFromPackage(a.version,s,o,e.usageScenario,e.cacheContent),{message:"Loaded",status:this.lastLoadStatus};else{let{cachedWasm:l,cachedScript:u}=c;if(l&&u){let d=new Blob([u],{type:"application/javascript"}),m=URL.createObjectURL(d);try{return importScripts(m),typeof createTFLiteModule>"u"?(n("[WasmWorkerService] createTFLiteModule not defined, falling back to package","","WARN"),await this.loadFromPackage(a.version,s,o,e.usageScenario,e.cacheContent),{message:"Loaded from package (cache invalid)",status:this.lastLoadStatus}):(this.wasmPrividModules=await createTFLiteModule({wasmBinary:l}),n("[WasmWorkerService] ULTRA MODULES ",this.wasmPrividModules),this.checkWasmLoaded||(await this.initializeWasmSession(e.usageScenario,e.cacheContent),this.checkWasmLoaded=!0),n("[WasmWorkerService] WASM MODULES: ",this.wasmPrividModules),this.lastLoadStatus||(this.lastLoadStatus={source:"cache",versionMatch:!0}),{message:"Loaded from cache (wasm and script)",status:this.lastLoadStatus})}catch(g){return n("[WasmWorkerService] Error loading from cache:",g,"ERROR"),await this.loadFromPackage(a.version,s,o,e.usageScenario,e.cacheContent),{message:"Loaded from package (cache error)",status:this.lastLoadStatus}}finally{URL.revokeObjectURL(m)}}}if(!this.wasmPrividModules||!this.wasmSession){let l="WASM modules loaded but session not initialized";throw n(`[WasmWorkerService] ERROR: ${l}`,"","ERROR"),new Error(l)}return this.lastLoadStatus||(this.lastLoadStatus={source:"cache",versionMatch:!0}),{message:"Cache Loaded",status:this.lastLoadStatus}}if(await this.loadFromPackage(a.version,s,o,e.usageScenario,e.cacheContent),!this.wasmPrividModules||!this.wasmSession){let l="WASM modules loaded but session not initialized";throw n(`[WasmWorkerService] ERROR: ${l}`,"","ERROR"),new Error(l)}return this.lastLoadStatus||(this.lastLoadStatus={source:"cdn",versionMatch:!0}),{message:"Loaded",status:this.lastLoadStatus}}async loadFromPackage(e,t,i,s,o){return n("[WasmWorkerService loadFromPackage wasmVersion: ",e),this.wasmPrividModules=await this.loadWasmModule(t,i,!0,e),this.checkWasmLoaded||(await this.initializeWasmSession(s,o),this.checkWasmLoaded=!0),!0}getLocalWasmUrl(e){return this.wasmBaseUrl?`${this.wasmBaseUrl}/wasm/${e}`:`../wasm/${e}`}async loadWasmModule(e,t,i,s){if(this.customWasm){n("[WasmWorkerService] Using custom WASM URL:",this.customWasm.url);let h={cdn:`${this.cdnUrl}/${y}/${e}/${s}/${t}.js`,local:this.getLocalWasmUrl(`${this.getWasmFolderName()}/${e}/${s}/${t}.js`)},E=await fetch(this.customWasm.url);if(!E.ok)throw new Error(`Failed to fetch custom WASM from ${this.customWasm.url}: ${E.status}`);let v=await(await T(h,this.useCdnLink)).text(),P=await E.arrayBuffer();n("[WasmWorkerService] loadWasmModule script and buffer from custom URL': ",{scriptBuffer:v,buffer:P});let se=new Blob([v],{type:"application/javascript"}),N=URL.createObjectURL(se);try{if(importScripts(N),typeof createTFLiteModule>"u")throw new Error("createTFLiteModule not defined after loading script");let b=await createTFLiteModule({wasmBinary:P});return n("[WasmWorkerService] loadWasmModule module from custom URL: ",b),b}catch(b){throw n("[WasmWorkerService] Error loading WASM module from custom URL:",b,"ERROR"),b}finally{URL.revokeObjectURL(N)}}let o={cdn:`${this.cdnUrl}/${y}/${e}/${s}/${t}.wasm`,local:this.getLocalWasmUrl(`${this.getWasmFolderName()}/${e}/${s}/${t}.wasm`)},c={cdn:`${this.cdnUrl}/${y}/${e}/${s}/${t}.js`,local:this.getLocalWasmUrl(`${this.getWasmFolderName()}/${e}/${s}/${t}.js`)},a=await T(o,this.useCdnLink),u=await(await T(c,this.useCdnLink)).text(),d=await a.arrayBuffer();n("[WasmWorkerService] loadWasmModule script and buffer': ",{scriptBuffer:u,buffer:d});let m=new Blob([u],{type:"application/javascript"}),g=URL.createObjectURL(m);try{if(importScripts(g),typeof createTFLiteModule>"u")throw new Error("createTFLiteModule not defined after loading script");let h=await createTFLiteModule({wasmBinary:d});if(n("[WasmWorkerService] loadWasmModule module: ",h),i){let E=h.UTF8ToString(h._privid_get_version());await J(y,d,u,E)}return h}catch(h){throw n("[WasmWorkerService] Error loading WASM module:",h,"ERROR"),h}finally{URL.revokeObjectURL(g)}}async initializeWasmSession(e="",t=""){if(this.wasmSession)return this.wasmSession;let i={...this.apiUrl,session_token:this.sessionToken,public_key:this.publicKey,debug_level:this.debugType,custom_settings:{usage_scenario:e,cache_content:t}};n("[WasmWorkerService] initializeWasmSession settings:",i);let s=this.createWasmResultPointers(),o=this.createStringBuffer(JSON.stringify(i)),c=this.wasmPrividModules._privid_initialize_session(...o.getArgs(),s.getOuterPointer());if(n("[WasmWorkerService] initializeWasmSession isSessionInitialized: ",c),o.free(),!c)return n("[WasmWorkerService] ERROR: privid_initialize_session failed","","ERROR"),n("[WasmWorkerService] Settings were:",i,"ERROR"),null;let a=s.getInnerPointer();return this.wasmSession=a,n("[WasmWorkerService] initializeWasmSession wasmSessionPointer: ",a),a}async ultraEnroll(e,t){if(f.result=t,!await this.ensureModulesAreReady())return!1;let i=e.imageData.data.length*e.imageData.data.BYTES_PER_ELEMENT,s=this.allocatePointer(i);this.wasmPrividModules.HEAPU8.set(new Uint8Array(e.imageData.data),s);let o=this.allocatePointer(Int32Array.BYTES_PER_ELEMENT),c=this.allocatePointer(Int32Array.BYTES_PER_ELEMENT),l=new TextEncoder().encode(`${e.config}`),u=l.length,d=this.allocatePointer(u);this.wasmPrividModules.HEAP8.set(l,d/l.BYTES_PER_ELEMENT),n("[WasmWorkerService] ultraEnroll config: ",e.config);try{return this.wasmPrividModules._privid_user_enroll(this.wasmSession,d,u,s,e.imageData.width,e.imageData.height,o,c),!0}catch(m){return n("[WasmWorkerService] ultraEnroll error: ",m,"ERROR"),!1}finally{this.releasePointers(s,o,c,d)}}async ultraPredict(e,t,i){if(f.result=t,i&&(f.progress=i),!await this.ensureModulesAreReady())return!1;let s=F(e.originalImages),c=new TextEncoder().encode(e.config),a=c.length,l=this.allocatePointer(a);this.wasmPrividModules.HEAP8.set(c,l/c.BYTES_PER_ELEMENT);let u=s.length*s.BYTES_PER_ELEMENT,d=this.allocatePointer(u);this.wasmPrividModules.HEAPU8.set(new Uint8Array(s),d);let m=this.allocatePointer(Int32Array.BYTES_PER_ELEMENT),g=this.allocatePointer(Int32Array.BYTES_PER_ELEMENT);n("[WasmWorkerService] ultraPredict config: ",e.config);try{return this.wasmPrividModules._privid_user_predict(this.wasmSession,l,a,d,e.originalImages[0].width,e.originalImages[0].height,m,g),!0}catch(h){return n("[WasmWorkerService] ultraPredict error:",h,"ERROR"),!1}finally{this.releasePointers(d,m,g,l)}}async ultraAgeEstimate(e,t,i,s){if(f.result=t,i&&(f.progress=i),s&&(f.wasmCropping=s),!await this.ensureModulesAreReady())return!1;let o=F(e.originalImages),a=new TextEncoder().encode(e.config),l=a.length,u=this.allocatePointer(l);this.wasmPrividModules.HEAP8.set(a,u/a.BYTES_PER_ELEMENT);let d=o.length*o.BYTES_PER_ELEMENT,m=this.allocatePointer(d);this.wasmPrividModules.HEAPU8.set(new Uint8Array(o),m);let g=this.allocatePointer(Int32Array.BYTES_PER_ELEMENT),h=this.allocatePointer(Int32Array.BYTES_PER_ELEMENT);n("[WasmWorkerService] ultraAgeEstimate config: ",e.config);try{return this.wasmPrividModules._privid_estimate_age(this.wasmSession,u,l,m,e.originalImages[0].width,e.originalImages[0].height,g,h),!0}catch(E){return n("[WasmWorkerService] ultraAgeEstimate error: ",E,"ERROR"),!1}finally{this.releasePointers(m,g,h,u)}}async ultraCompareEmbeddings(e,t){if(f.result=t,!await this.ensureModulesAreReady())return!1;let i=new TextEncoder,s=i.encode(e.config),o=s.length,c=this.allocatePointer(o);this.wasmPrividModules.HEAP8.set(s,c/s.BYTES_PER_ELEMENT);let a=i.encode(`${e.encryptedEmbeddingsA}`),l=a.length,u=this.allocatePointer(l);this.wasmPrividModules.HEAPU8.set(new Uint8Array(a),u);let d=i.encode(`${e.encryptedEmbeddingsB}`),m=d.length,g=this.allocatePointer(m);this.wasmPrividModules.HEAPU8.set(new Uint8Array(d),g);let h=this.allocatePointer(Int32Array.BYTES_PER_ELEMENT),E=this.allocatePointer(Int32Array.BYTES_PER_ELEMENT);n("[WasmWorkerService] ultraCompareEmbeddings config: ",e.config);try{return this.wasmPrividModules._privid_compare_embeddings(this.wasmSession,c,o,u,l,g,m,h,E),!0}catch(I){return n("[WasmWorkerService] ultraCompareEmbeddings error:",I,"ERROR"),!1}finally{this.releasePointers(u,g,h,E,c)}}pkiEncrypt(e){if(!this.wasmPrividModules||!this.wasmSession)return{error:!0};let t=new TextEncoder,i=t.encode(e.payload),s=i.length,o=this.allocatePointer(s),c=this.allocatePointer(Int32Array.BYTES_PER_ELEMENT),a=this.allocatePointer(Int32Array.BYTES_PER_ELEMENT);this.wasmPrividModules.HEAP8.set(i,o/i.BYTES_PER_ELEMENT);let l=t.encode(e.config),u=l.length,d=this.allocatePointer(u);this.wasmPrividModules.HEAP8.set(l,d/l.BYTES_PER_ELEMENT),n("[WasmWorkerService] pkiEncrypt params: ",e);try{this.wasmPrividModules._privid_encrypt_payload(this.wasmSession,d,u,o,s,c,a);let[m]=new Uint32Array(this.wasmPrividModules.HEAPU8.buffer,a,1);if(m>0){let g=new Uint32Array(this.wasmPrividModules.HEAPU8.buffer,a,1)[0],h=new Uint32Array(this.wasmPrividModules.HEAPU8.buffer,c,1)[0],E=new Uint8Array(this.wasmPrividModules.HEAPU8.buffer,h,g),v=new TextDecoder("utf-8").decode(E);v.replace(/\0/g,""),v.replace(" ","");let P=re(v);return n("[WasmWorkerService] pkiEncrypt result: ",P),P}return{error:!0}}catch(m){return n("[WasmWorkerService] pkiEncrypt error:",m,"ERROR"),{error:!0}}finally{this.releasePointers(o,c,a,d)}}async ultraScanBackDocument(e,t){if(f.result=t,!await this.ensureModulesAreReady())return!1;let s=new TextEncoder().encode(e.config),o=s.length,c=this.allocatePointer(o);this.wasmPrividModules.HEAP8.set(s,c/s.BYTES_PER_ELEMENT);let a=e.imageInput.data.length*e.imageInput.data.BYTES_PER_ELEMENT,l=this.allocatePointer(a);this.wasmPrividModules.HEAPU8.set(new Uint8Array(e.imageInput.data),l);let u=this.allocatePointer(Int32Array.BYTES_PER_ELEMENT),d=this.allocatePointer(Int32Array.BYTES_PER_ELEMENT);n("[WasmWorkerService] ultraScanBackDocument config: ",e.config);try{return this.wasmPrividModules._privid_doc_scan_back(this.wasmSession,c,o,l,e.imageInput.width,e.imageInput.height,u,d),!0}catch(m){return n("[WasmWorkerService] ultraScanBackDocument error:",m,"ERROR"),!1}finally{this.releasePointers(l,u,d,c)}}async ultraScanFrontDocument(e,t){if(f.result=t,!await this.ensureModulesAreReady())return!1;let s=new TextEncoder().encode(e.config),o=s.length,c=this.allocatePointer(o);this.wasmPrividModules.HEAP8.set(s,c/s.BYTES_PER_ELEMENT);let a=e.imageInput.data.length*e.imageInput.data.BYTES_PER_ELEMENT,l=this.allocatePointer(a);this.wasmPrividModules.HEAPU8.set(new Uint8Array(e.imageInput.data),l);let u=this.allocatePointer(Int32Array.BYTES_PER_ELEMENT),d=this.allocatePointer(Int32Array.BYTES_PER_ELEMENT);n("[WasmWorkerService] ultraScanFrontDocument config: ",e.config);try{return this.wasmPrividModules._privid_doc_scan_front(this.wasmSession,c,o,l,e.imageInput.width,e.imageInput.height,u,d),!0}catch(m){return n("[WasmWorkerService] ultraScanFrontDocument error:",m,"ERROR"),!1}finally{this.releasePointers(l,u,d,c)}}async ultraDocumentOcr(e,t){if(f.result=t,!await this.ensureModulesAreReady())return!1;let i=new TextEncoder,s=i.encode(e.config),o=i.encode(`${e.imageInput}`),c=s.length,a=this.allocatePointer(c);this.wasmPrividModules.HEAP8.set(s,a/s.BYTES_PER_ELEMENT);let l=o.length,u=this.allocatePointer(l);this.wasmPrividModules.HEAPU8.set(new Uint8Array(o),u);let d=this.allocatePointer(Int32Array.BYTES_PER_ELEMENT),m=this.allocatePointer(Int32Array.BYTES_PER_ELEMENT);n("[WasmWorkerService] ultraDocumentOcr config: ",e.config);try{return this.wasmPrividModules._privid_doc_ocr_front_enc(this.wasmSession,a,c,u,l,d,m),!0}catch(g){return n("[WasmWorkerService] ultraDocumentOcr error:",g,"ERROR"),!1}finally{this.releasePointers(u,d,m,a)}}async checkModelsAreLoaded(){try{return await this.ensureModulesAreReady()?this.wasmPrividModules._privid_check_models():!1}catch(e){return n("[WasmWorkerService] checkModelsAreLoaded error",e,"ERROR"),!1}}async freeMemory(){try{return await this.ensureModulesAreReady()?this.wasmPrividModules._privid_free_memory():!1}catch(e){return n("[WasmWorkerService] freeMemory error: ",e,"ERROR"),!1}}createWasmResultPointers(){let e=null,t=null;return{getOuterPointer:()=>(e||(e=this.wasmPrividModules._malloc(Int32Array.BYTES_PER_ELEMENT)),e),getInnerPointer:()=>e?t||([t]=new Uint32Array(this.wasmPrividModules.HEAPU8.buffer,e,1),t):null}}createStringBuffer(e){let t=null,i=0,s=null;return{getArgs:()=>{if(s!==null)return s;if(e==null||typeof e=="number"&&Number.isNaN(e))return s=[0,0],s;try{let o=String(e),a=new TextEncoder().encode(o);if(i=a.length*a.BYTES_PER_ELEMENT,t=this.wasmPrividModules._malloc(i),t===0)throw new Error("WASM memory allocation failed");return this.wasmPrividModules.HEAP8.set(a,t/a.BYTES_PER_ELEMENT),s=[t,i],s}catch(o){return n("[WasmWorkerService] createStringBuffer error:",o,"ERROR"),s=[0,0],s}},free:()=>{if(t!==null&&t!==0){try{this.wasmPrividModules._free(t)}catch(o){n("[WasmWorkerService] free buffer error:",o,"ERROR")}t=null,i=0,s=null}},isAllocated:()=>t!==null&&t!==0}}releasePointers(...e){e.forEach(t=>{if(t!==null&&t!==0)try{this.wasmPrividModules._free(t)}catch(i){n("[WasmWorkerService] releasePointers error:",i,"ERROR")}})}allocatePointer(e){try{return this.wasmPrividModules._malloc(e)}catch(t){return n("[WasmWorkerService] allocatePointer error:",t,"ERROR"),0}}async ensureModulesAreReady(){if(this.isModuleInitializing&&this.moduleInitializationLock)try{await this.moduleInitializationLock}catch{return!1}if(!this.wasmPrividModules){if(!this.apiUrl||!this.sessionToken||!this.publicKey)return n("[WasmWorkerService] ensureModulesInitialized: Missing required initialization parameters",{apiUrl:!!this.apiUrl,sessionToken:!!this.sessionToken,publicKey:!!this.publicKey},"ERROR"),!1;try{await this.loadModules({simd:this.isSimd,apiUrl:this.apiUrl,sessionToken:this.sessionToken,publicKey:this.publicKey,debugType:this.debugType||"",cacheConfig:this.setCache},this.proxiedErrorCallback)}catch{return!1}}return!this.wasmPrividModules||!this.wasmSession?(n("[WasmWorkerService] ensureModulesInitialized: WASM not fully initialized",{hasModules:!!this.wasmPrividModules,hasSession:!!this.wasmSession},"ERROR"),!1):!0}},ve=new O;_(ve);})();
|
|
2
2
|
/*! Bundled license information:
|
|
3
3
|
|
|
4
4
|
comlink/dist/esm/comlink.mjs:
|