@sekyro/web 0.1.0-rc.6 → 0.1.0-rc.8
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/CHANGELOG.md +114 -0
- package/LICENSE +25 -16
- package/README.md +6 -8
- package/THIRD-PARTY-NOTICES.txt +154 -0
- package/dist/background-monitor-A7FKJOAG.js +1 -0
- package/dist/capture-session-doc-YBE3UMJJ.js +1 -0
- package/dist/{capture-session-v3-Okq0EQHG.d.ts → capture-session-v3-CQK-G-qX.d.ts} +72 -3
- package/dist/{capture-session-v3-UQU_WjO2.d.cts → capture-session-v3-Dvob-uH2.d.cts} +72 -3
- package/dist/chunk-4RS2YIL4.js +1 -0
- package/dist/chunk-7V2M6Y2W.js +1 -0
- package/dist/chunk-7ZCZY3ZP.js +1 -0
- package/dist/chunk-A3FUGHAH.js +2 -0
- package/dist/chunk-BPE5NSQ2.js +1 -0
- package/dist/chunk-CJHMFPL6.js +1 -0
- package/dist/chunk-DFTCAWMP.js +1 -0
- package/dist/chunk-DK5YPBDQ.js +1 -0
- package/dist/chunk-DQWW4OCK.js +1 -0
- package/dist/chunk-FHJ7HO3M.js +1 -0
- package/dist/chunk-FPXL63KZ.js +1 -0
- package/dist/chunk-G6LKLN4U.js +1 -0
- package/dist/chunk-GI3UFGRQ.js +1 -0
- package/dist/chunk-LQ7C44JG.js +1 -0
- package/dist/chunk-M43ET4NJ.js +1 -0
- package/dist/chunk-MXWLCDFX.js +1 -0
- package/dist/chunk-MY6EXEL2.js +1 -0
- package/dist/chunk-O5WKNZ2C.js +1 -0
- package/dist/chunk-OKWG3PVH.js +1 -0
- package/dist/chunk-POIQGEZM.js +1 -0
- package/dist/chunk-RI3E7GBN.js +1 -0
- package/dist/chunk-RNRFHUJA.js +1 -0
- package/dist/chunk-RVHAKRAI.js +1 -0
- package/dist/chunk-SMKCBUJL.js +1 -0
- package/dist/chunk-SXZCL5NO.js +1 -0
- package/dist/chunk-TDLIXFDT.js +1 -0
- package/dist/chunk-XLN5OT25.js +1 -0
- package/dist/chunk-YDQBVWXG.js +1 -0
- package/dist/chunk-YPG7CB4O.js +1 -0
- package/dist/client/index.cjs +1 -357
- package/dist/client/index.d.cts +13 -3
- package/dist/client/index.d.ts +13 -3
- package/dist/client/index.js +1 -15
- package/dist/core/index.cjs +1 -1639
- package/dist/core/index.d.cts +3 -3
- package/dist/core/index.d.ts +3 -3
- package/dist/core/index.js +1 -139
- package/dist/core/ocr/worker.bundle.js +42 -0
- package/dist/core/ocr/worker.cjs +42 -0
- package/dist/core/ocr/worker.d.cts +84 -0
- package/dist/core/ocr/worker.d.ts +84 -0
- package/dist/core/ocr/worker.js +41 -0
- package/dist/core/v3/detect-worker.cjs +1 -392
- package/dist/core/v3/detect-worker.d.cts +1 -1
- package/dist/core/v3/detect-worker.d.ts +1 -1
- package/dist/core/v3/detect-worker.js +1 -13
- package/dist/create-document-capture-T4APHJMY.js +1 -0
- package/dist/create-portrait-capture-B57GE5FU.js +1 -0
- package/dist/create-verification-C0AVIcVW.d.ts +2787 -0
- package/dist/create-verification-DoFpgzok.d.cts +2787 -0
- package/dist/{detect-worker-CKXHlXx9.d.cts → detect-worker-DclNxkZT.d.cts} +6 -0
- package/dist/{detect-worker-CKXHlXx9.d.ts → detect-worker-DclNxkZT.d.ts} +6 -0
- package/dist/detector-scanic-YCDNLCGV.js +1 -0
- package/dist/icao-gate-D8qm1O2t.d.cts +1655 -0
- package/dist/icao-gate-D8qm1O2t.d.ts +1655 -0
- package/dist/icao-gate-PWBMKRGC.js +1 -0
- package/dist/icao-tuning-4GGVX6B4.js +1 -0
- package/dist/index.cjs +1 -3030
- package/dist/index.d.cts +52 -6
- package/dist/index.d.ts +52 -6
- package/dist/index.js +1 -85
- package/dist/internal/index.cjs +1 -4439
- package/dist/internal/index.d.cts +352 -312
- package/dist/internal/index.d.ts +352 -312
- package/dist/internal/index.js +1 -657
- package/dist/keyframe-rank-YAJLYJYF.js +1 -0
- package/dist/landmarker-KB7LVXAU.js +1 -0
- package/dist/mrz-band-VYHOTDHY.js +1 -0
- package/dist/plan-runner-UBK4B4CG.js +1 -0
- package/dist/popup/index.cjs +1 -76
- package/dist/popup/index.js +1 -11
- package/dist/scanic-ml-stub-KW7IZHUT.js +1 -0
- package/dist/segmenter-USLNBX65.js +1 -0
- package/dist/turnstile-FATNZ4AG.js +1 -0
- package/package.json +25 -10
- package/sbom.cdx.json +195 -0
- package/dist/chunk-MWNFSNMP.js +0 -52
- package/dist/chunk-MWNFSNMP.js.map +0 -1
- package/dist/chunk-NILNKLK6.js +0 -50
- package/dist/chunk-NILNKLK6.js.map +0 -1
- package/dist/chunk-NWF46H7K.js +0 -359
- package/dist/chunk-NWF46H7K.js.map +0 -1
- package/dist/chunk-R3SJQHYU.js +0 -1173
- package/dist/chunk-R3SJQHYU.js.map +0 -1
- package/dist/chunk-TG5IE552.js +0 -1128
- package/dist/chunk-TG5IE552.js.map +0 -1
- package/dist/chunk-WY6U7AIK.js +0 -193
- package/dist/chunk-WY6U7AIK.js.map +0 -1
- package/dist/chunk-YVFF4Q4G.js +0 -327
- package/dist/chunk-YVFF4Q4G.js.map +0 -1
- package/dist/client/index.cjs.map +0 -1
- package/dist/client/index.js.map +0 -1
- package/dist/core/index.cjs.map +0 -1
- package/dist/core/index.js.map +0 -1
- package/dist/core/v3/detect-worker.cjs.map +0 -1
- package/dist/core/v3/detect-worker.js.map +0 -1
- package/dist/create-verification-BKc9NFQj.d.cts +0 -455
- package/dist/create-verification-DjcMZHAQ.d.ts +0 -455
- package/dist/detector-scanic-4C6IEW2K.js +0 -787
- package/dist/detector-scanic-4C6IEW2K.js.map +0 -1
- package/dist/hosted-client-DJXq_CB9.d.cts +0 -449
- package/dist/hosted-client-DJXq_CB9.d.ts +0 -449
- package/dist/index.cjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/internal/index.cjs.map +0 -1
- package/dist/internal/index.js.map +0 -1
- package/dist/popup/index.cjs.map +0 -1
- package/dist/popup/index.js.map +0 -1
- package/dist/scanic-ml-stub-S2OZ6HEF.js +0 -10
- package/dist/scanic-ml-stub-S2OZ6HEF.js.map +0 -1
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import{a as Ee,b as Ne,c as _e,d as Se}from"../../chunk-A3FUGHAH.js";import"../../chunk-DFTCAWMP.js";import{c as Ce}from"../../chunk-DK5YPBDQ.js";var C=class extends Error{constructor(n){super(n),this.name="OcrFailure",this.code=n}};function Oe(e){return[...e.split(`
|
|
2
|
+
`)," "]}function Le(e,n,t,r,s){if(t<2||e.length===0||e.length!==n.length||r.length<t-1)throw new C("OCR_INFERENCE_FAILED");let o="",i=-1,u=0,a=0;for(let g=0;g<e.length;g++){let f=e[g];if(!Number.isInteger(f)||f<0||f>=t)throw new C("OCR_INFERENCE_FAILED");f!==0&&f!==i&&(o+=r[f-1],u+=Math.fround(n[g]),a++),i=f}return{text:s?Array.from(o).reverse().join(""):o,score:a===0?0:u/a}}var Te=e=>e.reduce((n,t)=>n+t,0)/e.length;function we(e){let n=e.filter(s=>s.score>=.5);if(n.length===0)return[];if(n.some(s=>s.box.length!==4||!Number.isFinite(s.score)||s.box.some(o=>!Number.isFinite(o.x)||!Number.isFinite(o.y))))throw new C("OCR_INFERENCE_FAILED");let t=Te(n.map(s=>s.box[2].y-s.box[0].y)),r=[];for(let s of n){let o=(s.box[0].y+s.box[2].y)/2,i=r.find(u=>Math.abs((u[0].box[0].y+u[0].box[2].y)/2-o)<t/2);i===void 0?r.push([s]):i.push(s)}for(let s of r)s.sort((o,i)=>o.box[0].x-i.box[0].x);return r.sort((s,o)=>s[0].box[0].y-o[0].box[0].y),r.map(s=>{let o=s[0].box,i=s[s.length-1].box,u=[o[0],i[1],i[2],o[3]];return{text:s.map(a=>a.text).join(" "),x:Math.min(...u.map(a=>a.x)),y:Math.min(...u.map(a=>a.y)),x2:Math.max(...u.map(a=>a.x)),y2:Math.max(...u.map(a=>a.y)),score:Te(s.map(a=>a.score))}})}var $={of(e,n,t){return!Number.isInteger(e)||!Number.isInteger(n)||!Number.isInteger(t)||n<1||n>12||t<1||t>new Date(Date.UTC(e,n,0)).getUTCDate()?null:{year:e,month:n,day:t}},iso(e){return`${String(e.year).padStart(4,"0")}-${String(e.month).padStart(2,"0")}-${String(e.day).padStart(2,"0")}`},parse(e){let[n,t,r]=e.split("-").map(Number);return{year:n,month:t,day:r}},today(){let e=new Date;return{year:e.getFullYear(),month:e.getMonth()+1,day:e.getDate()}}},ke=30,Pe=36,Ue=44,me="MRT",ln=[7,3,1],cn=/^[0-9]{6}$/,ge=/^[0-9]{10}$/,ve=e=>e!==void 0&&e.length===1&&e>="0"&&e<="9";function dn(e){return e>="0"&&e<="9"?e.charCodeAt(0)-48:e>="A"&&e<="Z"?e.charCodeAt(0)-55:0}function ue(e){let n=0;for(let t=0;t<e.length;t++)n+=dn(e[t])*ln[t%3];return String(n%10)}function D(e,n){return n==="<"?null:ve(n)?ue(e)===n:!1}function ae(e){return e.trim().toUpperCase().replaceAll(" ","")}function mn(e,n){return(ae(e)+"<".repeat(n)).slice(0,n)}function B(e){return e.replace(/^<+|<+$/g,"")}var fn=new Set(`ABW AFG AGO AIA ALA ALB AND ARE ARG ARM ASM ATA ATF ATG AUS AUT AZE BDI BEL BEN BES BFA BGD BGR BHR
|
|
3
|
+
BHS BIH BLM BLR BLZ BMU BOL BRA BRB BRN BTN BVT BWA CAF CAN CCK CHE CHL CHN CIV CMR COD COG COK COL
|
|
4
|
+
COM CPV CRI CUB CUW CXR CYM CYP CZE DEU DJI DMA DNK DOM DZA ECU EGY ERI ESH ESP EST ETH FIN FJI FLK
|
|
5
|
+
FRA FRO FSM GAB GBR GEO GGY GHA GIB GIN GLP GMB GNB GNQ GRC GRD GRL GTM GUF GUM GUY HKG HMD HND HRV
|
|
6
|
+
HTI HUN IDN IMN IND IOT IRL IRN IRQ ISL ISR ITA JAM JEY JOR JPN KAZ KEN KGZ KHM KIR KNA KOR KWT LAO
|
|
7
|
+
LBN LBR LBY LCA LIE LKA LSO LTU LUX LVA MAC MAF MAR MCO MDA MDG MDV MEX MHL MKD MLI MLT MMR MNE MNG
|
|
8
|
+
MNP MOZ MRT MSR MTQ MUS MWI MYS MYT NAM NCL NER NFK NGA NIC NIU NLD NOR NPL NRU NZL OMN PAK PAN PCN
|
|
9
|
+
PER PHL PLW PNG POL PRI PRK PRT PRY PSE PYF QAT REU ROU RUS RWA SAU SDN SEN SGP SGS SHN SJM SLB SLE
|
|
10
|
+
SLV SMR SOM SPM SRB SSD STP SUR SVK SVN SWE SWZ SXM SYC SYR TCA TCD TGO THA TJK TKL TKM TLS TON TTO
|
|
11
|
+
TUN TUR TUV TWN TZA UGA UKR UMI URY USA UZB VAT VCT VEN VGB VIR VNM VUT WLF WSM XKK YEM ZAF ZMB ZWE`.trim().split(/\s+/)),gn=new Set(`D GBD GBN GBO GBP GBS RKS UNK UNO UNA EUE XBA XIM XCC XCE XCO XDC XEC XES XMP XOM XPO XXA XXB XXC
|
|
12
|
+
XXX ANT NTZ UTO`.trim().split(/\s+/));function pn(e){return fn.has(e)||gn.has(e)}var bn="012568",yn="OIZSGB",An="OQDILZSGB",hn="000112568";function fe(e){let n=bn.indexOf(e);return e.length!==1||n<0?e:yn[n]}function xn(e){let n=An.indexOf(e);return e.length!==1||n<0?e:hn[n]}var Mn=[["\xAB","<<"],["\u2039","<"],["\uFF1C","<"],["\u3008","<"],["\xD7","X"]],Ge=[`aaccc${"x".repeat(9)}n${"x".repeat(15)}`,`${"n".repeat(7)}x${"n".repeat(7)}ccc${"x".repeat(11)}n`,"a".repeat(30)],Fe=[`aaccc${"a".repeat(31)}`,`${"x".repeat(9)}nccc${"n".repeat(7)}x${"n".repeat(7)}${"x".repeat(7)}n`],Ke=[`aaccc${"a".repeat(39)}`,`${"x".repeat(9)}nccc${"n".repeat(7)}x${"n".repeat(7)}${"x".repeat(14)}nn`];function Rn(e,n){let t="",r=0;for(;r<n.length;){let s=n[r];if(s==="c"){let i=e.substring(r,r+3),u=Array.from(i,fe).join("");t+=u!==i&&pn(u.replaceAll("<",""))?u:i,r+=3;continue}let o=e[r];t+=s==="a"?fe(o):s==="n"?xn(o):o,r++}return t}function j(e,n,t){return t.slice(0,e.length).map((r,s)=>{let o=Mn.reduce((i,[u,a])=>i.replaceAll(u,a),ae(e[s]));return Rn(mn(o,n),r)})}function He(e,n){let t=e.filter(r=>r.trim().length>0);return n==="TD1"?j(t.slice(0,3),ke,Ge):n==="TD2"?j(t.slice(0,2),Pe,Fe):j(t.slice(0,2),Ue,Ke)}function pe(e){let n=`${e.toUpperCase()}<<`.slice(0,2);return n==="AC"?"unknown":n==="IR"||n==="AR"||n[0]==="A"||n[0]==="C"?"residence_permit":n[0]==="P"?"passport":n[0]==="I"?"carte_identite":"unknown"}function In(e){return ge.test(e)&&Number(e)%97===1}function Cn(e,n,t){if(!cn.test(e))return null;let r=Number(e.slice(0,2)),s=n?2e3+r:r>t.year%100?1900+r:2e3+r;return $.of(s,Number(e.slice(2,4)),Number(e.slice(4,6)))}function q(e,n,t){let r=Cn(e,n,t);return r?$.iso(r):""}function be(e){let n=e.split("<<").filter(t=>B(t).length>0);return[(n[0]??"").replaceAll("<"," ").trim(),(n[1]??"").replaceAll("<"," ").trim()]}var ye=e=>e==="M"||e==="F"?e:"",En=e=>e.substring(0,2).replaceAll("<",""),re=e=>e.substring(2,5).replaceAll("<","");function We(e,n,t){if(n==="<"&&B(t).length>0){let r=t.indexOf("<"),s=r<0?t:t.slice(0,r);if(s.length>=2){let o=e+s.slice(0,-1);if(D(o,s[s.length-1])===!0)return{value:B(o),ok:!0,warn:null}}return{value:B(e),ok:!1,warn:"docnum_cd_mismatch"}}return{value:B(e),ok:D(e,n),warn:null}}var F=(e,n)=>({success:!1,error:e,fields:{},checkDigits:{},hardCdFail:!1,warns:[],...n===void 0?{}:{linesCount:n}});function Ae(e,n,t,r,s,o,i){return{success:!0,documentType:e,format:n,documentCode:En(t),fields:r,checkDigits:s,hardCdFail:o,warns:i}}function Nn(e,n){if(e.length<3)return F("mrz_incomplete");let[t,r,s]=j(e.slice(0,3),ke,Ge),o=re(t)===me||r.substring(15,18)===me||In(t.substring(15,25)),i=[],u={},a,m,g=!1;if(o){a=B(t.substring(5,14));let h=t[14];ve(h)?(m=ue(t.substring(5,14))===h,m||i.push("td1_docnum_cd_mismatch")):m=null}else{let h=We(t.substring(5,14),t[14],t.substring(15,30));if(h.ok===null)return F("mrz_incomplete");a=h.value,m=h.ok,g=h.ok===!1&&h.warn===null,h.warn!==null&&i.push(h.warn)}u.document_number=m;let f=D(r.substring(0,6),r[6]),y=D(r.substring(8,14),r[14]);if(u.birth_date=f,u.expiry_date=y,f===null||y===null)return F("mrz_incomplete");let b=D(t.substring(5,30)+r.substring(0,7)+r.substring(8,15)+r.substring(18,29),r[29]);u.composite=b,b===!1&&i.push("composite_cd_mismatch");let d=o?t.substring(15,25):"",[c,R]=be(s),I=f===!1||y===!1||g;return Ae(pe(t.substring(0,2)),"TD1",t,{issuing_state:re(t),document_number:a,nni:ge.test(d)?d:"",birth_date:q(r.substring(0,6),!1,n),expiry_date:q(r.substring(8,14),!0,n),sex:ye(r[7]),nationality:B(r.substring(15,18)),surname:c,given_names:R},u,I,i)}function _n(e,n){if(e.length<2)return F("mrz_incomplete");let[t,r]=j(e.slice(0,2),Pe,Fe),s=[],o=We(r.substring(0,9),r[9],r.substring(28,35));o.warn!==null&&s.push(o.warn);let i=D(r.substring(13,19),r[19]),u=D(r.substring(21,27),r[27]),a={document_number:o.ok,birth_date:i,expiry_date:u};if(o.ok===null||i===null||u===null)return F("mrz_incomplete");let m=D(r.substring(0,10)+r.substring(13,20)+r.substring(21,35),r[35]);a.composite=m,m===!1&&s.push("composite_cd_mismatch");let[g,f]=be(t.substring(5,36)),y=o.ok===!1&&o.warn===null||i===!1||u===!1;return Ae(pe(t.substring(0,2)),"TD2",t,{issuing_state:re(t),document_number:o.value,nni:"",birth_date:q(r.substring(13,19),!1,n),expiry_date:q(r.substring(21,27),!0,n),sex:ye(r[20]),nationality:B(r.substring(10,13)),surname:g,given_names:f},a,y,s)}function De(e,n){if(e.length<2)return F("mrz_incomplete");let[t,r]=j(e.slice(0,2),Ue,Ke),s=re(t)===me,o=[],i={},u=r.substring(0,9),a=D(u,r[9]),m=D(r.substring(13,19),r[19]),g=D(r.substring(21,27),r[27]);if(i.document_number=a,i.birth_date=m,i.expiry_date=g,a===null||m===null||g===null)return F("mrz_incomplete");let f=r.substring(28,42),y="";if(B(f).length>0){let I=D(f,r[42]);i.personal_number=I;let h=B(f);s&&I!==!1&&ge.test(h)&&(y=h)}let b=D(r.substring(0,10)+r.substring(13,20)+r.substring(21,43),r[43]);i.composite=b,b===!1&&o.push("composite_cd_mismatch");let[d,c]=be(t.substring(5,44)),R=a===!1||m===!1||g===!1;return Ae(pe(t.substring(0,2)),"TD3",t,{issuing_state:re(t),document_number:B(u),nni_candidate:y,birth_date:q(r.substring(13,19),!1,n),expiry_date:q(r.substring(21,27),!0,n),sex:ye(r[20]),nationality:B(r.substring(10,13)),surname:d,given_names:c},i,R,o)}var Be=new Set(["A","C","I"]);function ze(e,n=$.today()){let t=e.filter(s=>s.trim().length>0);if(t.length===0)return F("mrz_unrecognized",0);let r=Array.from(ae(t[0]).slice(0,1),fe).join("");return t.length===3&&Be.has(r)?Nn(t,n):t.length===2&&r==="P"?De(t,n):t.length===2&&Be.has(r)?Math.max(...t.map(s=>ae(s).length))>40?De(t,n):_n(t,n):F("mrz_unrecognized",t.length)}var Sn=new Map([...(`ABWAW AFGAF AGOAO AIAAI ALAAX ALBAL ANDAD AREAE ARGAR ARMAM ASMAS ATAAQ
|
|
13
|
+
ATFTF ATGAG AUSAU AUTAT AZEAZ BDIBI BELBE BENBJ BESBQ BFABF BGDBD BGRBG
|
|
14
|
+
BHRBH BHSBS BIHBA BLMBL BLRBY BLZBZ BMUBM BOLBO BRABR BRBBB BRNBN BTNBT
|
|
15
|
+
BVTBV BWABW CAFCF CANCA CCKCC CHECH CHLCL CHNCN CIVCI CMRCM CODCD COGCG
|
|
16
|
+
COKCK COLCO COMKM CPVCV CRICR CUBCU CUWCW CXRCX CYMKY CYPCY CZECZ DEUDE
|
|
17
|
+
DJIDJ DMADM DNKDK DOMDO DZADZ ECUEC EGYEG ERIER ESHEH ESPES ESTEE ETHET
|
|
18
|
+
FINFI FJIFJ FLKFK FRAFR FROFO FSMFM GABGA GBRGB GEOGE GGYGG GHAGH GIBGI
|
|
19
|
+
GINGN GLPGP GMBGM GNBGW GNQGQ GRCGR GRDGD GRLGL GTMGT GUFGF GUMGU GUYGY
|
|
20
|
+
HKGHK HMDHM HNDHN HRVHR HTIHT HUNHU IDNID IMNIM INDIN IOTIO IRLIE IRNIR
|
|
21
|
+
IRQIQ ISLIS ISRIL ITAIT JAMJM JEYJE JORJO JPNJP KAZKZ KENKE KGZKG KHMKH
|
|
22
|
+
KIRKI KNAKN KORKR KWTKW LAOLA LBNLB LBRLR LBYLY LCALC LIELI LKALK LSOLS
|
|
23
|
+
LTULT LUXLU LVALV MACMO MAFMF MARMA MCOMC MDAMD MDGMG MDVMV MEXMX MHLMH
|
|
24
|
+
MKDMK MLIML MLTMT MMRMM MNEME MNGMN MNPMP MOZMZ MRTMR MSRMS MTQMQ MUSMU
|
|
25
|
+
MWIMW MYSMY MYTYT NAMNA NCLNC NERNE NFKNF NGANG NICNI NIUNU NLDNL NORNO
|
|
26
|
+
NPLNP NRUNR NZLNZ OMNOM PAKPK PANPA PCNPN PERPE PHLPH PLWPW PNGPG POLPL
|
|
27
|
+
PRIPR PRKKP PRTPT PRYPY PSEPS PYFPF QATQA REURE ROURO RUSRU RWARW SAUSA
|
|
28
|
+
SDNSD SENSN SGPSG SGSGS SHNSH SJMSJ SLBSB SLESL SLVSV SMRSM SOMSO SPMPM
|
|
29
|
+
SRBRS SSDSS STPST SURSR SVKSK SVNSI SWESE SWZSZ SXMSX SYCSC SYRSY TCATC
|
|
30
|
+
TCDTD TGOTG THATH TJKTJ TKLTK TKMTM TLSTL TONTO TTOTT TUNTN TURTR TUVTV
|
|
31
|
+
TWNTW TZATZ UGAUG UKRUA UMIUM URYUY USAUS UZBUZ VATVA VCTVC VENVE VGBVG
|
|
32
|
+
VIRVI VNMVN VUTVU WLFWF WSMWS YEMYE ZAFZA ZMBZM ZWEZW`.match(/[A-Z]{5}/g)??[]).map(e=>[e.slice(0,3),e.slice(3)]),["D","DE"]]),Ve={of(e){return Sn.get(e.replaceAll("<",""))??null}};var xe=e=>ue(e);function Qe(e){return e.slice(0,5e4).split(/\r?\n/).slice(0,200).map(n=>n.toUpperCase().replace(/[«‹〈]/g,"<").replace(/[^A-Z0-9<]/g,"")).filter(n=>n.length>0)}var Ze=e=>e.replace(/[OQ]/g,"0").replace(/[IL]/g,"1").replaceAll("Z","2").replaceAll("S","5").replaceAll("B","8");function Ye(e,n){let t=Ze(e),r=Ze(n);if(!/^\d{6}$/.test(t)||xe(t)!==r)return null;let s=2e3+Number(t.slice(0,2)),o=Number(t.slice(2,4)),i=Number(t.slice(4,6));return o>=1&&o<=12&&i>=1&&i<=new Date(Date.UTC(s,o,0)).getUTCDate()?t:null}function he(e,n){let t=e.replace(/<+$/,"");return/^[A-Z0-9]+$/.test(t)&&xe(e)===n?t:null}function On(e){if(e.length<15)return null;if(e[14]!=="<")return he(e.substring(5,14),e[14]);let n=/^([A-Z0-9]+)</.exec(e.substring(15,Math.min(30,e.length)))?.[1];return n===void 0||n.length<2?null:he(e.substring(5,14)+n.slice(0,-1),n[n.length-1])}var x=(e,n,t)=>n>=e.length?"":e.substring(n,Math.min(t,e.length)),V=(e,n)=>n<e.length?e[n]:"",Xe=/^[IAC][A-Z<][A-Z<]{3}/,Ln=/^P[A-Z<][A-Z<]{3}/,je=/^[PIAC][A-Z<][A-Z<]{3}/;function Tn(e){let n=Qe(e),t=[],r=[];for(let o=0;o<n.length;o++){let i="",u=0;for(;u<6&&o+u<n.length&&(i+=n[o+u],!(i.length>300));)r.push(i),u++}let s=(o,i,u)=>{if(i.length<(u?15:28))return;let a=new Map,m=u?On(o):he(x(i,0,9),V(i,9)),g=Ye(u?x(i,0,6):x(i,13,19),u?V(i,6):V(i,19)),f=Ye(u?x(i,8,14):x(i,21,27),u?V(i,14):V(i,27));m!==null&&a.set("docNumber",m),g!==null&&a.set("dob6",g),f!==null&&a.set("expiry6",f),a.size>0&&t.push({fields:a,country:Ve.of(x(o,2,5))})};for(let o of r)Xe.test(o)&&(o.length>=45&&s(o.substring(0,30),o.substring(30),!0),o.length>=64&&s(o.substring(0,36),o.substring(36),!1)),Ln.test(o)&&o.length>=72&&s(o.substring(0,44),o.substring(44),!1);for(let o=0;o<n.length-1;o++){let i=n[o],u=n[o+1];Xe.test(i)&&i.length>=15&&i.length<=30&&s(i,u,!0),je.test(i)&&i.length>=5&&i.length<=44&&s(i,u,!1)}return t}function wn(e){let n=Tn(e);if(n.length===0)return{};let t=Math.max(...n.map(o=>o.fields.size)),r=n.filter(o=>o.fields.size===t),s={};for(let o of["docNumber","dob6","expiry6"]){let i=new Set(r.map(u=>u.fields.get(o)).filter(u=>u!==void 0));i.size===1&&r.every(u=>u.fields.has(o))&&(s[o]=[...i][0])}return s}function Dn(e){let n=wn(e),t=n.docNumber,r=n.dob6,s=n.expiry6;return t!==void 0&&r!==void 0&&s!==void 0?{docNumber:t,dob6:r,expiry6:s}:null}function qe(e){let n=kn(e);return n.length===1?n[0]:null}var Bn=e=>JSON.stringify([e.documentNumber,e.nationality,e.dob,e.sex,e.expiry,e.primaryIdentifier,e.secondaryIdentifier,e.optional]);function kn(e){let n=Qe(e),t=[];for(let s=0;s<n.length;s++){let o=n[s];if(!je.test(o))continue;let i=o.startsWith("P")?[44]:[30,36];for(let u of i){let a=u===30?3:2,m=n.slice(s,Math.min(n.length,s+a));m.length===a&&m.every(y=>y.length<=u)&&t.push(m.map(y=>y.padEnd(u,"<")).join(`
|
|
33
|
+
`));let g="",f=0;for(;f<6&&s+f<n.length&&(g+=n[s+f],g.length===u*a&&t.push(g),!(g.length>=u*a));)f++}}let r=new Map;for(let s of t){let o=Dn(s);if(o===null)continue;let i=s.includes(`
|
|
34
|
+
`)?s.split(`
|
|
35
|
+
`):s.match(s.length===90?/.{30}/g:s.length===88?/.{44}/g:/.{36}/g)??[],u=i[0]??"",a=i[1]??"",m=i.length===3,g=m?x(u,5,30)+x(a,0,7)+x(a,8,15)+x(a,18,29):x(a,0,10)+x(a,13,20)+x(a,21,a.length-1),f=m?V(a,29):V(a,a.length-1);if(!/^[0-9]$/.test(f)||xe(g)!==f)continue;let y=Pn(s);if(y===null||y.primaryIdentifier.length===0&&y.secondaryIdentifier.length===0||!/^[MFX]?$/.test(y.sex))continue;let b={...y,documentNumber:o.docNumber,dob:o.dob6,expiry:o.expiry6};r.set(Bn(b),{fields:b,mrzLines:i})}return[...r.values()]}var U=e=>e.replaceAll("<"," ").replace(/\s+/g," ").trim();function $e(e){let n=e.split("<<");return[U(n[0]??""),U(n.slice(1).join("<<"))]}var Je=e=>e.length===0?null:e;function Pn(e){let n=e.split(/\r?\n/).map(r=>r.replace(/\s+$/,"")).filter(r=>r.length>0),t=e.replace(/[\r\n]/g,"");if(n.length===1&&(t.length===90?n=[t.substring(0,30),t.substring(30,60),t.substring(60,90)]:t.length===72?n=[t.substring(0,36),t.substring(36,72)]:t.length===88&&(n=[t.substring(0,44),t.substring(44,88)])),n.length===3){let[r,s,o]=n,i=V(r,14)==="<"?/^([A-Z0-9]+)</.exec(x(r,15,30))?.[1]:void 0,u=U(x(r,5,14)+(i!==void 0&&i.length>1?i.slice(0,-1):"")),[a,m]=$e(o),g=U(`${x(r,15,30)}<${x(s,18,29)}`);return{documentNumber:u,nationality:U(x(s,15,18)),dob:x(s,0,6),sex:U(x(s,7,8)),expiry:x(s,8,14),primaryIdentifier:a,secondaryIdentifier:m,optional:Je(g)}}if(n.length===2){let[r,s]=n,o=r.length>=44,[i,u]=$e(x(r,5,o?44:36));return{documentNumber:U(x(s,0,9)),nationality:U(x(s,10,13)),dob:x(s,13,19),sex:U(x(s,20,21)),expiry:x(s,21,27),primaryIdentifier:i,secondaryIdentifier:u,optional:Je(U(o?x(s,28,42):x(s,28,35)))}}return null}function en(e,n=$.today()){let t=ze(e,n),r=t.format??null,s=r==="TD1"||r==="TD2"||r==="TD3"?He(e,r):[...e];return{format:r,documentCode:t.documentCode??null,lines:s,valid:t.success&&!t.hardCdFail}}var Un=/^[A-Z0-9<]{25,}$/;function vn(e){return e.toUpperCase().replaceAll(" ","").replaceAll("\xAB","<").replaceAll("\u2039","<")}var Me=(e,n,t)=>e.length>=n&&e.length<=t;function nn(e){let n=e.map(vn).filter(t=>Un.test(t));for(let t=0;t+3<=n.length;t++){let r=n.slice(t,t+3);if(r.every(s=>Me(s,28,32))&&"IAC".includes(r[0][0]))return r}for(let t=0;t+2<=n.length;t++){let r=n.slice(t,t+2);if(r.every(s=>Me(s,40,46))&&r[0].startsWith("P")||r.every(s=>Me(s,34,38))&&"IACPV".includes(r[0][0]))return r}return[]}var ee={SIZE:80,SCRIPT:64,OFFSET:68,STEPS:72},T={DETECTOR:0,LATIN:1,ARABIC:2},v={NONE:0,LATIN:1,ARABIC:2,BOTH:3},le=3;var Z=e=>Math.round(Math.min(1,Math.max(0,e))*1e4)/1e4;async function Re(e,n,t,r,s){let o=s.now??(()=>performance.now()),i=o(),a=e.read(n,t,r,s.region??[0,0,1,1],1,le,v.LATIN,s.detectorLimit).map(c=>({text:c.latin.text,score:c.latin.score,box:[0,1,2,3].map(R=>({x:c.box[2*R],y:c.box[2*R+1]}))})),m=we([...a].reverse()),g=m.map(c=>c.text),f=[...qe(g.join(`
|
|
36
|
+
`))?.mrzLines??nn(g)],y=m.map(c=>[Z(c.x/t),Z(c.y/r),Z((c.x2-c.x)/t),Z((c.y2-c.y)/r)]),b={kind:"band",ms:0,lineBoxes:y,lineCount:f.length,valid:!1},d=Fn(m.map(c=>c.text),y,f);if(d!==null&&(b.mrzBox=d),f.length>0){let c=en(f,s.today??$.today());c.format&&(b.format=c.format),c.documentCode&&/^[A-Z<]{1,2}$/.test(c.documentCode)&&(b.documentCode=c.documentCode),c.valid&&(b.valid=!0,b.digest=await Ee(s.salt,c.lines))}return b.ms=Math.round(o()-i),b}var tn=e=>e.toUpperCase().replace(/\s+/g,"");function Gn(e,n){let t=Math.max(e.length,n.length);if(t===0)return 0;let r=0;for(let s=0;s<Math.min(e.length,n.length);s++)e[s]===n[s]&&r++;return r/t}function Fn(e,n,t){if(t.length===0||e.length===0)return null;let r=new Set,s=[];for(let m of t){let g=-1,f=.5;if(e.forEach((y,b)=>{let d=r.has(b)?0:Gn(tn(y),tn(m));d>f&&(f=d,g=b)}),g<0)return null;r.add(g),s.push(n[g])}let o=Math.min(...s.map(m=>m[0])),i=Math.min(...s.map(m=>m[1])),u=Math.max(...s.map(m=>m[0]+m[2])),a=Math.max(...s.map(m=>m[1]+m[3]));return[Z(o),Z(i),Z(u-o),Z(a-i)]}async function Kn(e={}){var n,t=e,r=import.meta.url,s="",o,i;try{s=new URL(".",r).href}catch{}i=l=>{var A=new XMLHttpRequest;return A.open("GET",l,!1),A.responseType="arraybuffer",A.send(null),new Uint8Array(A.response)},o=async l=>{if(l=await fetch(l,{credentials:"same-origin"}),l.ok)return l.arrayBuffer();throw Error(l.status+" : "+l.url)};var u=console.log.bind(console),a=console.error.bind(console),m=!1,g,f,y,b,d,c=!1;function R(){var l=oe.buffer;new Int8Array(l),new Int16Array(l),t.HEAPU8=y=new Uint8Array(l),new Uint16Array(l),new Int32Array(l),b=new Uint32Array(l),new Float32Array(l),new Float64Array(l),d=new BigInt64Array(l),new BigUint64Array(l)}function I(l){throw l="Aborted("+l+")",a(l),m=!0,l+=". Build with -sASSERTIONS for more info.",c&&J(),l=new WebAssembly.RuntimeError(l),f?.(l),l}var h;async function w(l){try{var A=await o(l);return new Uint8Array(A)}catch{}if(i)l=i(l);else throw"both async and sync fetching of the wasm failed";return l}async function k(l,A){try{var p=await w(l);return await WebAssembly.instantiate(p,A)}catch(E){a(`failed to asynchronously prepare wasm: ${E}`),I(E)}}async function K(l){var A=h;try{var p=fetch(A,{credentials:"same-origin"});return await WebAssembly.instantiateStreaming(p,l)}catch(E){a(`wasm streaming compile failed: ${E}`),a("falling back to ArrayBuffer instantiation")}return k(A,l)}var H={},W=()=>{if(!Y){var l={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8",_:"./this.program"},A;for(A in H)H[A]===void 0?delete l[A]:l[A]=H[A];var p=[];for(A in l)p.push(`${A}=${l[A]}`);Y=p}return Y},Y,X=[null,[],[]],se=globalThis.TextDecoder&&new TextDecoder,J,oe,un={i:()=>I(""),b:function(l,A,p){return 0<=l&&3>=l?(d[p>>3]=BigInt(Math.round(1e6*(l===0?Date.now():performance.now()))),0):28},d:()=>1073741824,c:l=>{var A=y.length;if(l>>>=0,1073741824<l)return!1;for(var p=1;4>=p;p*=2){var E=A*(1+.2/p);E=Math.min(E,l+100663296);e:{E=(Math.min(1073741824,65536*Math.ceil(Math.max(l,E)/65536))-oe.buffer.byteLength+65535)/65536|0;try{oe.grow(E),R();var S=1;break e}catch{}S=void 0}if(S)return!0}return!1},f:(l,A)=>{var p=0,E=0,S;for(S of W()){var M=A+p;b[l+E>>2]=M;for(var Q=S,L=y,ne=M,G=M+1/0-1,N=0;N<Q.length;++N){var _=Q.codePointAt(N);if(127>=_){if(M>=G)break;L[M++]=_}else if(2047>=_){if(M+1>=G)break;L[M++]=192|_>>6,L[M++]=128|_&63}else if(65535>=_){if(M+2>=G)break;L[M++]=224|_>>12,L[M++]=128|_>>6&63,L[M++]=128|_&63}else{if(M+3>=G)break;L[M++]=240|_>>18,L[M++]=128|_>>12&63,L[M++]=128|_>>6&63,L[M++]=128|_&63,N++}}L[M]=0,Q=M-ne,p+=Q+1,E+=4}return 0},g:(l,A)=>{var p=W();b[l>>2]=p.length,l=0;for(var E of p){for(var S=p=0;S<E.length;++S){var M=E.charCodeAt(S);127>=M?p++:2047>=M?p+=2:55296<=M&&57343>=M?(p+=4,++S):p+=3}l+=p+1}return b[A>>2]=l,0},j:()=>52,h:()=>52,e:function(){return 70},a:(l,A,p,E)=>{for(var S=0,M=0;M<p;M++){var Q=b[A>>2],L=b[A+4>>2];A+=8;for(var ne=0;ne<L;ne++){var G=l,N=y[Q+ne],_=X[G];if(N===0||N===10){G=G===1?u:a,N=_;for(var z=0,te=N,P=z,O=P+void 0;te[P]&&!(P>=O);)++P;if(te=P,16<te-z&&N.buffer&&se)N=se.decode(N.subarray(z,te));else{for(P="";z<te;)if(O=N[z++],O&128){var de=N[z++]&63;if((O&224)==192)P+=String.fromCharCode((O&31)<<6|de);else{var Ie=N[z++]&63;O=(O&240)==224?(O&15)<<12|de<<6|Ie:(O&7)<<18|de<<12|Ie<<6|N[z++]&63,65536>O?P+=String.fromCharCode(O):(O-=65536,P+=String.fromCharCode(55296|O>>10,56320|O&1023))}}else P+=String.fromCharCode(O);N=P}G(N),_.length=0}else _.push(N)}S+=L}return b[E>>2]=S,0}},ie;return ie=await(async function(){function l(p){return p=ie=p.exports,t._skw_engine_id=p.m,t._skw_load=p.n,t._skw_unload=p.o,t._skw_set_detector_limit=p.p,t._skw_read=p.q,t._skw_line_count=p.r,t._skw_lines=p.s,t._skw_best=p.t,t._skw_values=p.u,t._skw_sharpness=p.v,t._free=p.w,t._malloc=p.x,J=p.y,oe=p.k,R(),ie}var A={a:un};return t.instantiateWasm?new Promise(p=>{t.instantiateWasm(A,(E,S)=>{p(l(E,S))})}):(h??(h=t.locateFile?t.locateFile?t.locateFile("sekyro-ocr.wasm",s):s+"sekyro-ocr.wasm":new URL("sekyro-ocr.wasm",import.meta.url).href),l((await K(A)).instance))})(),t.calledRun=!0,m||(c=!0,ie.l(),g?.(t)),c?n=t:n=new Promise((l,A)=>{g=l,f=A}),n}var rn=Kn;function sn(e){return e===1||e===5?new C("OCR_IMAGE_INVALID"):e===2?new C("OCR_ASSET_INVALID"):e===4?new C("OCR_CANCELLED"):e===6?new C("OCR_BUSY"):e===7?new C("OCR_UNAVAILABLE"):new C("OCR_INFERENCE_FAILED")}var ce=class{constructor(n){this.m=n;this.px=0;this.pxBytes=0;this.dicts=[null,null,null];this.classes=[0,0,0];this.held=[[],[],[]];this.latinKind="latin"}engineId(){let n=this.m._skw_engine_id(),t="";for(let r=n;this.m.HEAPU8[r]!==0&&r<n+64;r++)t+=String.fromCharCode(this.m.HEAPU8[r]);return t}put(n){let t=this.m._malloc(n.length);if(!t)throw new C("OCR_UNAVAILABLE");return this.m.HEAPU8.set(n,t),t}load(n,t,r,s,o={}){this.unload(n);let i=new Uint8Array(t),u=new Uint8Array(i.byteLength+1);u.set(i);let a=s===void 0?null:Oe(s),m=s===void 0?0:on(s);if(o.mrz===!0){if(n!==T.LATIN||s===void 0||!zn(s))throw new C("OCR_ASSET_INVALID")}else if(n===T.LATIN&&(s===void 0||s.endsWith(`
|
|
37
|
+
`)||m!==6625))throw new C("OCR_ASSET_INVALID");if(n===T.ARABIC&&(s===void 0||!s.endsWith(`
|
|
38
|
+
`)||m!==163||a[161]!==""))throw new C("OCR_ASSET_INVALID");let g=new Uint8Array(r),f=this.put(u),y=this.put(g);this.held[n]=[f,y];let b=this.m._skw_load(n,f,u.length,y,g.byteLength,m);if(b!==0)throw this.unload(n),sn(b);this.dicts[n]=a,this.classes[n]=m,n===T.LATIN&&(this.latinKind=o.mrz===!0?"mrz":"latin")}recognizer(){return this.loaded(T.LATIN)?this.latinKind:null}unload(n){this.held[n].length&&this.m._skw_unload(n);for(let t of this.held[n])this.m._free(t);this.held[n]=[],this.dicts[n]=null}loaded(n){return this.held[n].length>0}pixels(n){if(n.length>this.pxBytes){if(this.px&&this.m._free(this.px),this.px=this.m._malloc(n.length),!this.px)throw new C("OCR_UNAVAILABLE");this.pxBytes=n.length}return this.m.HEAPU8.set(n,this.px),this.px}sharpness(n,t,r){let s=this.m._skw_sharpness(this.pixels(n),t,r);return s>=0&&Number.isFinite(s)?s:null}read(n,t,r,s,o,i,u,a){if(!Hn(u))throw new C("OCR_IMAGE_INVALID");if(u&v.LATIN&&!this.dicts[T.LATIN]||u&v.ARABIC&&!this.dicts[T.ARABIC]||!this.loaded(0))throw new C("OCR_UNAVAILABLE");let m=this.pixels(n);this.m._skw_set_detector_limit(a);let g=this.m._skw_read(m,t,r,s[0],s[1],s[2],s[3],o,i,u);if(g!==0)throw sn(g);let f=this.m._skw_line_count(),y=this.m.HEAPU8.buffer,b=new DataView(y,this.m._skw_lines(),f*ee.SIZE),d=new Int32Array(y,this.m._skw_best()),c=new Float32Array(y,this.m._skw_values()),R=[];for(let I=0;I<f;I++){let h=I*ee.SIZE,w=b.getInt32(h+ee.SCRIPT,!0),k=b.getInt32(h+ee.OFFSET,!0),K=b.getInt32(h+ee.STEPS,!0);if(u===v.NONE){R.push({box:Array.from({length:8},(se,J)=>b.getFloat64(h+8*J,!0))});continue}let H=this.dicts[w];if(!H)throw new C("OCR_INFERENCE_FAILED");let W=Le(d.subarray(k,k+K),c.subarray(k,k+K),this.classes[w],H,w===T.ARABIC),Y=Array.from({length:8},(se,J)=>b.getFloat64(h+8*J,!0)),X=R[R.length-1];w===T.ARABIC&&X&&X.arabic===void 0&&X.latin!==void 0&&Wn(X.box,Y)?X.arabic=W:R.push(w===T.ARABIC?{box:Y,arabic:W}:{box:Y,latin:W})}return R}heapBytes(){return this.m.HEAPU8.length}dispose(){for(let n of[0,1,2])this.unload(n);this.px&&this.m._free(this.px),this.px=0,this.pxBytes=0}};function on(e){return(e.endsWith(`
|
|
39
|
+
`)?e.slice(0,-1):e).split(`
|
|
40
|
+
`).length+2}var Hn=e=>Number.isInteger(e)&&e>=v.NONE&&e<=v.BOTH,Wn=(e,n)=>e.every((t,r)=>t===n[r]);function zn(e){let n=e.split(`
|
|
41
|
+
`);return n.length===37&&new Set(n).size===37&&n.every(t=>/^[0-9A-Z<]$/.test(t))&&on(e)===39}async function an(e){let n=await rn({instantiateWasm:(t,r)=>(WebAssembly.instantiate(e,t).then(s=>r(s,e)),{})});return new ce(n)}function Vn(){let e=null,n=null;return(t,r)=>{if(typeof OffscreenCanvas!="function"||(e||(e=new OffscreenCanvas(t,r),n=e.getContext("2d",{willReadFrequently:!0})),!n))return null;(e.width!==t||e.height!==r)&&(e.width=t,e.height=r);let s=n;return{draw(o){return s.clearRect(0,0,t,r),s.drawImage(o,0,0),s.getImageData(0,0,t,r).data}}}}function Zn(){return{fetch:(...e)=>fetch(...e),now:()=>performance.now(),canvas:Vn(),instantiate:an}}function Yn(e,n=Zn()){let t=null,r="",s=960,o=0,i=!1,u=Promise.resolve(),a=d=>e.postMessage(d);async function m(d){if(n.canvas(1,1)===null)return a({id:d.id,kind:"failed",reason:"unsupported"});r=d.salt,s=d.detectorLimit;try{let c=await Se(d.baseUrl,_e,d.maxDownloadMs,n.fetch,n.now);o=c.downloadMs,i=c.cached;let R=await WebAssembly.compile(c.files.get("sekyro-ocr.wasm")),I=await n.instantiate(R),h=new TextDecoder("utf-8",{fatal:!0}).decode(c.files.get("mrz_dict.txt"));I.load(T.DETECTOR,c.files.get("det.param"),c.files.get("det.bin")),I.load(T.LATIN,c.files.get("mrz-rec.param"),c.files.get("mrz-rec.bin"),h,{mrz:!0}),c.files.clear(),t=I,a({id:d.id,kind:"ready",warmupMs:0,downloadMs:o,cached:i})}catch(c){a({id:d.id,kind:"failed",reason:c instanceof Ne?c.reason:"error"})}}async function g(d,c,R,I){if(!t)return c.close(),a({id:d,kind:"error",code:"not_ready"});let h=c.width,w=c.height,k=n.canvas(h,w);if(!k)return c.close(),a({id:d,kind:"failed",reason:"unsupported"});let K=k.draw(c);c.close();try{a({id:d,...await Re(t,K,h,w,{detectorLimit:I,salt:r,region:R,now:n.now})})}catch{a({id:d,kind:"error",code:"OCR_INFERENCE_FAILED"})}}async function f(d,c,R){if(!t)return c.close(),a({id:d,kind:"error",code:"not_ready"});let I=c.width,h=c.height,w=n.canvas(I,h);if(!w)return c.close(),a({id:d,kind:"failed",reason:"unsupported"});let k=w.draw(c);c.close();try{let K=n.now(),H=t.read(k,I,h,[0,0,1,1],1,le,v.NONE,R);a({id:d,kind:"layout",ms:Math.round(n.now()-K),lineBoxes:Ce(H.map(W=>W.box),I,h)})}catch{a({id:d,kind:"error",code:"OCR_INFERENCE_FAILED"})}}async function y(d){if(!t)return a({id:d,kind:"error",code:"not_ready"});let c=n.now(),R=960,I=200,h=new Uint8Array(R*I*4).fill(255);try{await Re(t,h,R,I,{detectorLimit:s,salt:r,now:n.now})}catch{return a({id:d,kind:"error",code:"OCR_INFERENCE_FAILED"})}a({id:d,kind:"ready",warmupMs:Math.round(n.now()-c),downloadMs:o,cached:i})}async function b(d){switch(d.kind){case"init":return m(d);case"warmup":return y(d.id);case"band":return g(d.id,d.bitmap,void 0,d.detectorLimit);case"still":return g(d.id,d.bitmap,d.region,d.detectorLimit);case"layout":return f(d.id,d.bitmap,d.detectorLimit);case"dispose":t?.dispose(),t=null,e.close();return}}e.onmessage=d=>{let c=d.data;u=u.then(()=>b(c)).catch(()=>a({id:c.id,kind:"error",code:"OCR_INFERENCE_FAILED"}))}}typeof WorkerGlobalScope<"u"&&typeof self<"u"&&self instanceof WorkerGlobalScope&&Yn(self);export{Zn as defaultDeps,Yn as installOcrWorkerHost};
|
|
@@ -1,392 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __export = (target, all) => {
|
|
9
|
-
for (var name in all)
|
|
10
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
-
};
|
|
12
|
-
var __copyProps = (to, from, except, desc) => {
|
|
13
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
-
for (let key of __getOwnPropNames(from))
|
|
15
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
-
}
|
|
18
|
-
return to;
|
|
19
|
-
};
|
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
-
mod
|
|
27
|
-
));
|
|
28
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
|
|
30
|
-
// src/core/v3/detect-worker.ts
|
|
31
|
-
var detect_worker_exports = {};
|
|
32
|
-
__export(detect_worker_exports, {
|
|
33
|
-
WORKER_PROTOCOL_VERSION: () => WORKER_PROTOCOL_VERSION,
|
|
34
|
-
WorkerDetectorProxy: () => WorkerDetectorProxy,
|
|
35
|
-
installWorkerDetectorHost: () => installWorkerDetectorHost,
|
|
36
|
-
workerOffloadSupported: () => workerOffloadSupported
|
|
37
|
-
});
|
|
38
|
-
module.exports = __toCommonJS(detect_worker_exports);
|
|
39
|
-
|
|
40
|
-
// src/core/v3/detector-blaze.ts
|
|
41
|
-
var BLAZE_INIT_TIMEOUT_MS = 1e4;
|
|
42
|
-
var BlazeDetector = class _BlazeDetector {
|
|
43
|
-
constructor(inner, fallbackReason) {
|
|
44
|
-
this.tier = "blaze";
|
|
45
|
-
this.inner = inner;
|
|
46
|
-
if (fallbackReason !== void 0) this.fallbackReason = fallbackReason;
|
|
47
|
-
}
|
|
48
|
-
static async create(assetBaseUrl, fallbackReason) {
|
|
49
|
-
const vision = await import("@mediapipe/tasks-vision");
|
|
50
|
-
const fileset = await vision.FilesetResolver.forVisionTasks(assetBaseUrl);
|
|
51
|
-
const inner = await vision.FaceDetector.createFromOptions(fileset, {
|
|
52
|
-
baseOptions: {
|
|
53
|
-
modelAssetPath: `${assetBaseUrl}/blaze_face_short_range.tflite`,
|
|
54
|
-
// CPU delegate — the iOS-Safari-safe path (see header). NEVER 'GPU'.
|
|
55
|
-
delegate: "CPU"
|
|
56
|
-
},
|
|
57
|
-
runningMode: "IMAGE"
|
|
58
|
-
});
|
|
59
|
-
return new _BlazeDetector(inner, fallbackReason);
|
|
60
|
-
}
|
|
61
|
-
async detect(source, sourceWidth, sourceHeight) {
|
|
62
|
-
let detections;
|
|
63
|
-
try {
|
|
64
|
-
detections = this.inner.detect(source).detections;
|
|
65
|
-
} catch {
|
|
66
|
-
return null;
|
|
67
|
-
}
|
|
68
|
-
const best = pickMostConfident(detections);
|
|
69
|
-
if (best?.boundingBox === void 0) return null;
|
|
70
|
-
const size = intrinsicSize(source);
|
|
71
|
-
const eyes = extractEyes(best.keypoints, size);
|
|
72
|
-
const observation = {
|
|
73
|
-
box: {
|
|
74
|
-
x: best.boundingBox.originX,
|
|
75
|
-
y: best.boundingBox.originY,
|
|
76
|
-
width: best.boundingBox.width,
|
|
77
|
-
height: best.boundingBox.height
|
|
78
|
-
},
|
|
79
|
-
...eyes !== void 0 ? { eyes } : {},
|
|
80
|
-
score: best.categories[0]?.score ?? 0
|
|
81
|
-
};
|
|
82
|
-
return toStreamPixels(observation, source, sourceWidth, sourceHeight);
|
|
83
|
-
}
|
|
84
|
-
destroy() {
|
|
85
|
-
try {
|
|
86
|
-
this.inner.close();
|
|
87
|
-
} catch {
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
};
|
|
91
|
-
function pickMostConfident(detections) {
|
|
92
|
-
let best;
|
|
93
|
-
let bestScore = -1;
|
|
94
|
-
for (const detection of detections) {
|
|
95
|
-
const score = detection.categories[0]?.score ?? 0;
|
|
96
|
-
if (score > bestScore) {
|
|
97
|
-
best = detection;
|
|
98
|
-
bestScore = score;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
return best;
|
|
102
|
-
}
|
|
103
|
-
function extractEyes(keypoints, size) {
|
|
104
|
-
const a = keypoints?.[0];
|
|
105
|
-
const b = keypoints?.[1];
|
|
106
|
-
if (a === void 0 || b === void 0) return void 0;
|
|
107
|
-
const toSource = (p) => ({ x: p.x * size.width, y: p.y * size.height });
|
|
108
|
-
const [pa, pb] = [toSource(a), toSource(b)];
|
|
109
|
-
return pa.x <= pb.x ? { left: pa, right: pb } : { left: pb, right: pa };
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
// src/core/v3/detector-native.ts
|
|
113
|
-
function smokeSource() {
|
|
114
|
-
if (typeof OffscreenCanvas === "function") return new OffscreenCanvas(2, 2);
|
|
115
|
-
const canvas = document.createElement("canvas");
|
|
116
|
-
canvas.width = 2;
|
|
117
|
-
canvas.height = 2;
|
|
118
|
-
return canvas;
|
|
119
|
-
}
|
|
120
|
-
async function probeNativeDetector() {
|
|
121
|
-
const ctor = globalThis.FaceDetector;
|
|
122
|
-
if (typeof ctor !== "function") return { ok: false, reason: "unsupported" };
|
|
123
|
-
try {
|
|
124
|
-
const instance = new ctor({ fastMode: true, maxDetectedFaces: 1 });
|
|
125
|
-
await instance.detect(smokeSource());
|
|
126
|
-
return { ok: true, instance };
|
|
127
|
-
} catch (err) {
|
|
128
|
-
return { ok: false, reason: `smoke_failed:${err instanceof Error ? err.message : String(err)}` };
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
var NativeDetector = class {
|
|
132
|
-
constructor(inner, fallbackReason) {
|
|
133
|
-
this.tier = "native";
|
|
134
|
-
this.inner = inner;
|
|
135
|
-
if (fallbackReason !== void 0) this.fallbackReason = fallbackReason;
|
|
136
|
-
}
|
|
137
|
-
async detect(source, sourceWidth, sourceHeight) {
|
|
138
|
-
let faces;
|
|
139
|
-
try {
|
|
140
|
-
faces = await this.inner.detect(source);
|
|
141
|
-
} catch {
|
|
142
|
-
return null;
|
|
143
|
-
}
|
|
144
|
-
const face = faces[0];
|
|
145
|
-
if (face === void 0) return null;
|
|
146
|
-
const eyes = extractEyes2(face.landmarks);
|
|
147
|
-
const observation = {
|
|
148
|
-
box: {
|
|
149
|
-
x: face.boundingBox.x,
|
|
150
|
-
y: face.boundingBox.y,
|
|
151
|
-
width: face.boundingBox.width,
|
|
152
|
-
height: face.boundingBox.height
|
|
153
|
-
},
|
|
154
|
-
...eyes !== void 0 ? { eyes } : {},
|
|
155
|
-
// The Shape Detection API exposes no confidence — the smoke-tested
|
|
156
|
-
// native tier treats any detection as confident.
|
|
157
|
-
score: 1
|
|
158
|
-
};
|
|
159
|
-
return toStreamPixels(observation, source, sourceWidth, sourceHeight);
|
|
160
|
-
}
|
|
161
|
-
destroy() {
|
|
162
|
-
}
|
|
163
|
-
};
|
|
164
|
-
function extractEyes2(landmarks) {
|
|
165
|
-
if (landmarks === void 0) return void 0;
|
|
166
|
-
const eyePoints = landmarks.filter((landmark) => landmark.type === "eye").map((landmark) => landmark.locations[0]).filter((point) => point !== void 0);
|
|
167
|
-
const [a, b] = eyePoints;
|
|
168
|
-
if (a === void 0 || b === void 0) return void 0;
|
|
169
|
-
return a.x <= b.x ? { left: a, right: b } : { left: b, right: a };
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
// src/core/v3/detector.ts
|
|
173
|
-
var DEFAULT_V3_ASSET_BASE_URL = "/models-v3";
|
|
174
|
-
var DEFAULT_TIER_ORDER = ["native", "blaze"];
|
|
175
|
-
var DetectorLadderError = class extends Error {
|
|
176
|
-
constructor(fallbackReason) {
|
|
177
|
-
super(`no detector tier available (${fallbackReason})`);
|
|
178
|
-
this.name = "DetectorLadderError";
|
|
179
|
-
this.fallbackReason = fallbackReason;
|
|
180
|
-
}
|
|
181
|
-
};
|
|
182
|
-
function intrinsicSize(source) {
|
|
183
|
-
const candidate = source;
|
|
184
|
-
if (typeof candidate.videoWidth === "number" && candidate.videoWidth > 0) {
|
|
185
|
-
return { width: candidate.videoWidth, height: candidate.videoHeight ?? 0 };
|
|
186
|
-
}
|
|
187
|
-
if (typeof candidate.naturalWidth === "number" && candidate.naturalWidth > 0) {
|
|
188
|
-
return { width: candidate.naturalWidth, height: candidate.naturalHeight ?? 0 };
|
|
189
|
-
}
|
|
190
|
-
const width = typeof candidate.width === "number" ? candidate.width : 0;
|
|
191
|
-
const height = typeof candidate.height === "number" ? candidate.height : 0;
|
|
192
|
-
return { width, height };
|
|
193
|
-
}
|
|
194
|
-
function toStreamPixels(observation, source, streamWidth, streamHeight) {
|
|
195
|
-
const size = intrinsicSize(source);
|
|
196
|
-
const scaleX = size.width > 0 ? streamWidth / size.width : 1;
|
|
197
|
-
const scaleY = size.height > 0 ? streamHeight / size.height : 1;
|
|
198
|
-
const scalePoint = (p) => ({ x: p.x * scaleX, y: p.y * scaleY });
|
|
199
|
-
return {
|
|
200
|
-
box: {
|
|
201
|
-
x: observation.box.x * scaleX,
|
|
202
|
-
y: observation.box.y * scaleY,
|
|
203
|
-
width: observation.box.width * scaleX,
|
|
204
|
-
height: observation.box.height * scaleY
|
|
205
|
-
},
|
|
206
|
-
...observation.eyes !== void 0 ? { eyes: { left: scalePoint(observation.eyes.left), right: scalePoint(observation.eyes.right) } } : {},
|
|
207
|
-
score: observation.score
|
|
208
|
-
};
|
|
209
|
-
}
|
|
210
|
-
function describeError(err) {
|
|
211
|
-
return err instanceof Error ? err.message : String(err);
|
|
212
|
-
}
|
|
213
|
-
async function createDetector(options) {
|
|
214
|
-
const order = options.preferred ?? DEFAULT_TIER_ORDER;
|
|
215
|
-
const reasons = [];
|
|
216
|
-
for (const tier of order) {
|
|
217
|
-
if (tier === "native") {
|
|
218
|
-
const probed = await probeNativeDetector();
|
|
219
|
-
if (probed.ok) {
|
|
220
|
-
return new NativeDetector(probed.instance, reasonOf(reasons));
|
|
221
|
-
}
|
|
222
|
-
reasons.push(`native:${probed.reason}`);
|
|
223
|
-
continue;
|
|
224
|
-
}
|
|
225
|
-
try {
|
|
226
|
-
return await withTimeout(
|
|
227
|
-
BlazeDetector.create(
|
|
228
|
-
options.v3AssetBaseUrl ?? DEFAULT_V3_ASSET_BASE_URL,
|
|
229
|
-
reasonOf(reasons)
|
|
230
|
-
),
|
|
231
|
-
options.blazeInitTimeoutMs ?? BLAZE_INIT_TIMEOUT_MS
|
|
232
|
-
);
|
|
233
|
-
} catch (err) {
|
|
234
|
-
reasons.push(
|
|
235
|
-
err instanceof InitTimeoutError ? "blaze:blaze_init_timeout" : `blaze:${describeError(err)}`
|
|
236
|
-
);
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
throw new DetectorLadderError(reasonOf(reasons) ?? "no_tier_available");
|
|
240
|
-
}
|
|
241
|
-
function reasonOf(reasons) {
|
|
242
|
-
return reasons.length > 0 ? reasons.join("; ") : void 0;
|
|
243
|
-
}
|
|
244
|
-
var InitTimeoutError = class extends Error {
|
|
245
|
-
};
|
|
246
|
-
function withTimeout(promise, deadlineMs) {
|
|
247
|
-
return new Promise((resolvePromise, rejectPromise) => {
|
|
248
|
-
const timer = setTimeout(() => {
|
|
249
|
-
rejectPromise(new InitTimeoutError(`init exceeded ${deadlineMs}ms`));
|
|
250
|
-
promise.then(
|
|
251
|
-
(value) => value.destroy(),
|
|
252
|
-
() => void 0
|
|
253
|
-
);
|
|
254
|
-
}, deadlineMs);
|
|
255
|
-
promise.then(
|
|
256
|
-
(value) => {
|
|
257
|
-
clearTimeout(timer);
|
|
258
|
-
resolvePromise(value);
|
|
259
|
-
},
|
|
260
|
-
(err) => {
|
|
261
|
-
clearTimeout(timer);
|
|
262
|
-
rejectPromise(err);
|
|
263
|
-
}
|
|
264
|
-
);
|
|
265
|
-
});
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
// src/core/v3/detect-worker.ts
|
|
269
|
-
var WORKER_PROTOCOL_VERSION = 1;
|
|
270
|
-
function workerOffloadSupported() {
|
|
271
|
-
return typeof OffscreenCanvas === "function" && typeof createImageBitmap === "function" && typeof Worker === "function";
|
|
272
|
-
}
|
|
273
|
-
function installWorkerDetectorHost(scope, deps = {}) {
|
|
274
|
-
const create = deps.createDetector ?? createDetector;
|
|
275
|
-
let detector = null;
|
|
276
|
-
scope.onmessage = (event) => {
|
|
277
|
-
const message = event.data;
|
|
278
|
-
if (message.v !== WORKER_PROTOCOL_VERSION) {
|
|
279
|
-
message.bitmap?.close?.();
|
|
280
|
-
return;
|
|
281
|
-
}
|
|
282
|
-
if (message.type === "init") {
|
|
283
|
-
void create(message.options).then((created) => {
|
|
284
|
-
detector = created;
|
|
285
|
-
const ready = {
|
|
286
|
-
v: WORKER_PROTOCOL_VERSION,
|
|
287
|
-
type: "ready",
|
|
288
|
-
tier: created.tier,
|
|
289
|
-
...created.fallbackReason !== void 0 ? { fallbackReason: created.fallbackReason } : {}
|
|
290
|
-
};
|
|
291
|
-
scope.postMessage(ready);
|
|
292
|
-
});
|
|
293
|
-
return;
|
|
294
|
-
}
|
|
295
|
-
if (message.type === "detect") {
|
|
296
|
-
const respond = (observation) => {
|
|
297
|
-
const result = {
|
|
298
|
-
v: WORKER_PROTOCOL_VERSION,
|
|
299
|
-
type: "result",
|
|
300
|
-
id: message.id,
|
|
301
|
-
observation
|
|
302
|
-
};
|
|
303
|
-
scope.postMessage(result);
|
|
304
|
-
message.bitmap.close?.();
|
|
305
|
-
};
|
|
306
|
-
if (detector === null) {
|
|
307
|
-
respond(null);
|
|
308
|
-
return;
|
|
309
|
-
}
|
|
310
|
-
void detector.detect(message.bitmap, message.streamWidth, message.streamHeight).then(respond, () => respond(null));
|
|
311
|
-
}
|
|
312
|
-
};
|
|
313
|
-
}
|
|
314
|
-
if (typeof self !== "undefined" && typeof self.importScripts === "function") {
|
|
315
|
-
installWorkerDetectorHost(self);
|
|
316
|
-
}
|
|
317
|
-
var WorkerDetectorProxy = class _WorkerDetectorProxy {
|
|
318
|
-
constructor(worker, ready) {
|
|
319
|
-
this.pending = /* @__PURE__ */ new Map();
|
|
320
|
-
this.nextId = 1;
|
|
321
|
-
this.worker = worker;
|
|
322
|
-
this.tier = ready.tier;
|
|
323
|
-
if (ready.fallbackReason !== void 0) this.fallbackReason = ready.fallbackReason;
|
|
324
|
-
worker.addEventListener("message", (event) => {
|
|
325
|
-
const message = event.data;
|
|
326
|
-
if (message.v !== WORKER_PROTOCOL_VERSION || message.type !== "result") return;
|
|
327
|
-
const resolve = this.pending.get(message.id);
|
|
328
|
-
this.pending.delete(message.id);
|
|
329
|
-
resolve?.(message.observation);
|
|
330
|
-
});
|
|
331
|
-
}
|
|
332
|
-
static create(worker, options, readyTimeoutMs = 1e4) {
|
|
333
|
-
return new Promise((resolve, reject) => {
|
|
334
|
-
const timer = setTimeout(() => {
|
|
335
|
-
worker.removeEventListener("message", onReady);
|
|
336
|
-
worker.terminate();
|
|
337
|
-
reject(new Error(`worker detector not ready within ${readyTimeoutMs}ms`));
|
|
338
|
-
}, readyTimeoutMs);
|
|
339
|
-
const onReady = (event) => {
|
|
340
|
-
const message = event.data;
|
|
341
|
-
if (message.v !== WORKER_PROTOCOL_VERSION || message.type !== "ready") return;
|
|
342
|
-
clearTimeout(timer);
|
|
343
|
-
worker.removeEventListener("message", onReady);
|
|
344
|
-
resolve(new _WorkerDetectorProxy(worker, message));
|
|
345
|
-
};
|
|
346
|
-
worker.addEventListener("message", onReady);
|
|
347
|
-
const init = { v: WORKER_PROTOCOL_VERSION, type: "init", options };
|
|
348
|
-
worker.postMessage(init);
|
|
349
|
-
});
|
|
350
|
-
}
|
|
351
|
-
async detect(source, sourceWidth, sourceHeight) {
|
|
352
|
-
let bitmap;
|
|
353
|
-
try {
|
|
354
|
-
if (typeof ImageBitmap !== "undefined" && source instanceof ImageBitmap) {
|
|
355
|
-
bitmap = source;
|
|
356
|
-
} else if (typeof createImageBitmap === "function") {
|
|
357
|
-
bitmap = await createImageBitmap(source);
|
|
358
|
-
} else {
|
|
359
|
-
bitmap = source;
|
|
360
|
-
}
|
|
361
|
-
} catch {
|
|
362
|
-
return null;
|
|
363
|
-
}
|
|
364
|
-
const id = this.nextId;
|
|
365
|
-
this.nextId += 1;
|
|
366
|
-
return new Promise((resolve) => {
|
|
367
|
-
this.pending.set(id, resolve);
|
|
368
|
-
const message = {
|
|
369
|
-
v: WORKER_PROTOCOL_VERSION,
|
|
370
|
-
type: "detect",
|
|
371
|
-
id,
|
|
372
|
-
bitmap,
|
|
373
|
-
streamWidth: sourceWidth,
|
|
374
|
-
streamHeight: sourceHeight
|
|
375
|
-
};
|
|
376
|
-
this.worker.postMessage(message, [bitmap]);
|
|
377
|
-
});
|
|
378
|
-
}
|
|
379
|
-
destroy() {
|
|
380
|
-
for (const resolve of this.pending.values()) resolve(null);
|
|
381
|
-
this.pending.clear();
|
|
382
|
-
this.worker.terminate();
|
|
383
|
-
}
|
|
384
|
-
};
|
|
385
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
386
|
-
0 && (module.exports = {
|
|
387
|
-
WORKER_PROTOCOL_VERSION,
|
|
388
|
-
WorkerDetectorProxy,
|
|
389
|
-
installWorkerDetectorHost,
|
|
390
|
-
workerOffloadSupported
|
|
391
|
-
});
|
|
392
|
-
//# sourceMappingURL=detect-worker.cjs.map
|
|
1
|
+
"use strict";var T=Object.create;var u=Object.defineProperty;var F=Object.getOwnPropertyDescriptor;var I=Object.getOwnPropertyNames;var E=Object.getPrototypeOf,S=Object.prototype.hasOwnProperty;var M=(t,e)=>{for(var r in e)u(t,r,{get:e[r],enumerable:!0})},k=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of I(e))!S.call(t,n)&&n!==r&&u(t,n,{get:()=>e[n],enumerable:!(o=F(e,n))||o.enumerable});return t};var L=(t,e,r)=>(r=t!=null?T(E(t)):{},k(e||!t||!t.__esModule?u(r,"default",{value:t,enumerable:!0}):r,t)),_=t=>k(u({},"__esModule",{value:!0}),t);var U={};M(U,{WORKER_PROTOCOL_VERSION:()=>d,WorkerDetectorProxy:()=>x,installWorkerDetectorHost:()=>R,workerOffloadSupported:()=>H});module.exports=_(U);var D=1e4,l=class t{constructor(e,r){this.tier="blaze";this.inner=e,r!==void 0&&(this.fallbackReason=r)}static async create(e,r){let o=await import("@mediapipe/tasks-vision"),n=await o.FilesetResolver.forVisionTasks(e),i=await o.FaceDetector.createFromOptions(n,{baseOptions:{modelAssetPath:`${e}/blaze_face_short_range.tflite`,delegate:"CPU"},runningMode:"IMAGE"});return new t(i,r)}async detect(e,r,o){let n;try{n=this.inner.detect(e).detections}catch{return null}let i=W(n);if(i?.boundingBox===void 0)return null;let a=h(e),s=P(i.keypoints,a),c=i.keypoints?.[2],p={box:{x:i.boundingBox.originX,y:i.boundingBox.originY,width:i.boundingBox.width,height:i.boundingBox.height},...s!==void 0?{eyes:s}:{},...c!==void 0?{nose:{x:c.x*a.width,y:c.y*a.height}}:{},score:i.categories[0]?.score??0};return m(p,e,r,o)}destroy(){try{this.inner.close()}catch{}}};function W(t){let e,r=-1;for(let o of t){let n=o.categories[0]?.score??0;n>r&&(e=o,r=n)}return e}function P(t,e){let r=t?.[0],o=t?.[1];if(r===void 0||o===void 0)return;let n=s=>({x:s.x*e.width,y:s.y*e.height}),[i,a]=[n(r),n(o)];return i.x<=a.x?{left:i,right:a}:{left:a,right:i}}function B(){if(typeof OffscreenCanvas=="function")return new OffscreenCanvas(2,2);let t=document.createElement("canvas");return t.width=2,t.height=2,t}async function O(){let t=globalThis.FaceDetector;if(typeof t!="function")return{ok:!1,reason:"unsupported"};try{let e=new t({fastMode:!0,maxDetectedFaces:1});return await e.detect(B()),{ok:!0,instance:e}}catch(e){return{ok:!1,reason:`smoke_failed:${e instanceof Error?e.message:String(e)}`}}}var f=class{constructor(e,r){this.tier="native";this.inner=e,r!==void 0&&(this.fallbackReason=r)}async detect(e,r,o){let n;try{n=await this.inner.detect(e)}catch{return null}let i=n[0];if(i===void 0)return null;let a=C(i.landmarks),s={box:{x:i.boundingBox.x,y:i.boundingBox.y,width:i.boundingBox.width,height:i.boundingBox.height},...a!==void 0?{eyes:a}:{},score:1};return m(s,e,r,o)}destroy(){}};function C(t){if(t===void 0)return;let e=t.filter(n=>n.type==="eye").map(n=>n.locations[0]).filter(n=>n!==void 0),[r,o]=e;if(!(r===void 0||o===void 0))return r.x<=o.x?{left:r,right:o}:{left:o,right:r}}var N="/models-v3",V=["native","blaze"],v=class extends Error{constructor(e){super(`no detector tier available (${e})`),this.name="DetectorLadderError",this.fallbackReason=e}};function h(t){let e=t;if(typeof e.videoWidth=="number"&&e.videoWidth>0)return{width:e.videoWidth,height:e.videoHeight??0};if(typeof e.naturalWidth=="number"&&e.naturalWidth>0)return{width:e.naturalWidth,height:e.naturalHeight??0};let r=typeof e.width=="number"?e.width:0,o=typeof e.height=="number"?e.height:0;return{width:r,height:o}}function m(t,e,r,o){let n=h(e),i=n.width>0?r/n.width:1,a=n.height>0?o/n.height:1,s=c=>({x:c.x*i,y:c.y*a});return{box:{x:t.box.x*i,y:t.box.y*a,width:t.box.width*i,height:t.box.height*a},...t.eyes!==void 0?{eyes:{left:s(t.eyes.left),right:s(t.eyes.right)}}:{},...t.nose!==void 0?{nose:s(t.nose)}:{},score:t.score}}function A(t){return t instanceof Error?t.message:String(t)}async function w(t){let e=t.preferred??V,r=[];for(let o of e){if(o==="native"){let n=await O();if(n.ok)return new f(n.instance,y(r));r.push(`native:${n.reason}`);continue}try{return await z(l.create(t.v3AssetBaseUrl??N,y(r)),t.blazeInitTimeoutMs??D)}catch(n){r.push(n instanceof b?"blaze:blaze_init_timeout":`blaze:${A(n)}`)}}throw new v(y(r)??"no_tier_available")}function y(t){return t.length>0?t.join("; "):void 0}var b=class extends Error{};function z(t,e){return new Promise((r,o)=>{let n=setTimeout(()=>{o(new b(`init exceeded ${e}ms`)),t.then(i=>i.destroy(),()=>{})},e);t.then(i=>{clearTimeout(n),r(i)},i=>{clearTimeout(n),o(i)})})}var d=1;function H(){return typeof OffscreenCanvas=="function"&&typeof createImageBitmap=="function"&&typeof Worker=="function"}function R(t,e={}){let r=e.createDetector??w,o=null;t.onmessage=n=>{let i=n.data;if(i.v!==d){i.bitmap?.close?.();return}if(i.type==="init"){r(i.options).then(a=>{o=a;let s={v:d,type:"ready",tier:a.tier,...a.fallbackReason!==void 0?{fallbackReason:a.fallbackReason}:{}};t.postMessage(s)});return}if(i.type==="detect"){let a=s=>{let c={v:d,type:"result",id:i.id,observation:s};t.postMessage(c),i.bitmap.close?.()};if(o===null){a(null);return}o.detect(i.bitmap,i.streamWidth,i.streamHeight).then(a,()=>a(null))}}}typeof self<"u"&&typeof self.importScripts=="function"&&R(self);var x=class t{constructor(e,r){this.pending=new Map;this.nextId=1;this.worker=e,this.tier=r.tier,r.fallbackReason!==void 0&&(this.fallbackReason=r.fallbackReason),e.addEventListener("message",o=>{let n=o.data;if(n.v!==d||n.type!=="result")return;let i=this.pending.get(n.id);this.pending.delete(n.id),i?.(n.observation)})}static create(e,r,o=1e4){return new Promise((n,i)=>{let a=setTimeout(()=>{e.removeEventListener("message",s),e.terminate(),i(new Error(`worker detector not ready within ${o}ms`))},o),s=p=>{let g=p.data;g.v!==d||g.type!=="ready"||(clearTimeout(a),e.removeEventListener("message",s),n(new t(e,g)))};e.addEventListener("message",s);let c={v:d,type:"init",options:r};e.postMessage(c)})}async detect(e,r,o){let n;try{typeof ImageBitmap<"u"&&e instanceof ImageBitmap?n=e:typeof createImageBitmap=="function"?n=await createImageBitmap(e):n=e}catch{return null}let i=this.nextId;return this.nextId+=1,new Promise(a=>{this.pending.set(i,a);let s={v:d,type:"detect",id:i,bitmap:n,streamWidth:r,streamHeight:o};this.worker.postMessage(s,[n])})}destroy(){for(let e of this.pending.values())e(null);this.pending.clear(),this.worker.terminate()}};0&&(module.exports={WORKER_PROTOCOL_VERSION,WorkerDetectorProxy,installWorkerDetectorHost,workerOffloadSupported});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { e as WORKER_PROTOCOL_VERSION, f as WorkerDetectorProxy, W as WorkerLike, g as WorkerScopeLike, h as installWorkerDetectorHost, w as workerOffloadSupported } from '../../detect-worker-
|
|
1
|
+
export { e as WORKER_PROTOCOL_VERSION, f as WorkerDetectorProxy, W as WorkerLike, g as WorkerScopeLike, h as installWorkerDetectorHost, w as workerOffloadSupported } from '../../detect-worker-DclNxkZT.cjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { e as WORKER_PROTOCOL_VERSION, f as WorkerDetectorProxy, W as WorkerLike, g as WorkerScopeLike, h as installWorkerDetectorHost, w as workerOffloadSupported } from '../../detect-worker-
|
|
1
|
+
export { e as WORKER_PROTOCOL_VERSION, f as WorkerDetectorProxy, W as WorkerLike, g as WorkerScopeLike, h as installWorkerDetectorHost, w as workerOffloadSupported } from '../../detect-worker-DclNxkZT.js';
|
|
@@ -1,13 +1 @@
|
|
|
1
|
-
import {
|
|
2
|
-
WORKER_PROTOCOL_VERSION,
|
|
3
|
-
WorkerDetectorProxy,
|
|
4
|
-
installWorkerDetectorHost,
|
|
5
|
-
workerOffloadSupported
|
|
6
|
-
} from "../../chunk-NWF46H7K.js";
|
|
7
|
-
export {
|
|
8
|
-
WORKER_PROTOCOL_VERSION,
|
|
9
|
-
WorkerDetectorProxy,
|
|
10
|
-
installWorkerDetectorHost,
|
|
11
|
-
workerOffloadSupported
|
|
12
|
-
};
|
|
13
|
-
//# sourceMappingURL=detect-worker.js.map
|
|
1
|
+
import{g as a,h as b,i as c,j as d}from"../../chunk-OKWG3PVH.js";export{a as WORKER_PROTOCOL_VERSION,d as WorkerDetectorProxy,c as installWorkerDetectorHost,b as workerOffloadSupported};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{u as a,v as b,w as c,x as d}from"./chunk-RNRFHUJA.js";import"./chunk-G6LKLN4U.js";import"./chunk-TDLIXFDT.js";import"./chunk-RVHAKRAI.js";import"./chunk-7V2M6Y2W.js";import"./chunk-DQWW4OCK.js";import"./chunk-POIQGEZM.js";import"./chunk-FHJ7HO3M.js";import"./chunk-FPXL63KZ.js";import"./chunk-LQ7C44JG.js";import"./chunk-OKWG3PVH.js";import"./chunk-DK5YPBDQ.js";export{a as SAME_FACE_MAX_DROPS,c as createDocumentCapture,d as createDocumentCaptureInternal,b as warmDocumentCapture};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as a,k as b,l as c,m as d,n as e,o as f,p as g}from"./chunk-M43ET4NJ.js";import"./chunk-CJHMFPL6.js";import"./chunk-RI3E7GBN.js";import"./chunk-7ZCZY3ZP.js";import"./chunk-BPE5NSQ2.js";import"./chunk-GI3UFGRQ.js";import"./chunk-7V2M6Y2W.js";import"./chunk-FHJ7HO3M.js";export{a as ANALYSIS_LONG_EDGE,c as PORTRAIT_JPEG_QUALITY,b as STILL_MAX_HEIGHT,f as createPortraitCaptureInternal,d as defaultGrabber,e as observe,g as warmPortraitCapture};
|