jumpy-lion 0.0.28 → 0.0.30

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.
Files changed (30) hide show
  1. package/dist/browser-controller.d.ts +1 -0
  2. package/dist/browser-controller.d.ts.map +1 -1
  3. package/dist/browser-controller.js +15 -16
  4. package/dist/browser-controller.js.map +1 -1
  5. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-16ff15da.js +7 -1
  6. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-1a1456ec.js +18 -1
  7. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-3a7b59dd.js +1258 -1
  8. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-7ce85519.js +76 -1
  9. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-aaea1190.js +15 -1
  10. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-b4410958.js +77 -1
  11. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-dfed3562.js +19 -1
  12. package/dist/page.d.ts +1 -0
  13. package/dist/page.d.ts.map +1 -1
  14. package/dist/page.js +67 -44
  15. package/dist/page.js.map +1 -1
  16. package/dist/tsconfig.build.tsbuildinfo +1 -1
  17. package/package.json +3 -5
  18. package/dist/fingerprinting/all-fingerprint-defender/_locales/en/messages.json +0 -95
  19. package/dist/fingerprinting/all-fingerprint-defender/assets/debounce-09920c81.css +0 -1
  20. package/dist/fingerprinting/all-fingerprint-defender/assets/options-fe2fb5aa.css +0 -1
  21. package/dist/fingerprinting/all-fingerprint-defender/assets/popup-1886d2ef.css +0 -1
  22. package/dist/fingerprinting/all-fingerprint-defender/img/icon-128.png +0 -0
  23. package/dist/fingerprinting/all-fingerprint-defender/img/icon-16.png +0 -0
  24. package/dist/fingerprinting/all-fingerprint-defender/img/icon-24.png +0 -0
  25. package/dist/fingerprinting/all-fingerprint-defender/img/icon-32-disabled.png +0 -0
  26. package/dist/fingerprinting/all-fingerprint-defender/img/icon-32.png +0 -0
  27. package/dist/fingerprinting/all-fingerprint-defender/img/icon-48.png +0 -0
  28. package/dist/fingerprinting/all-fingerprint-defender/manifest.json +0 -83
  29. package/dist/fingerprinting/all-fingerprint-defender/options.html +0 -17
  30. package/dist/fingerprinting/all-fingerprint-defender/popup.html +0 -23
@@ -1 +1,76 @@
1
- document.documentElement.setAttribute("randFingerprintInjected","true");if(!(ignoredSites=["https://www.google.com/maps","https://accounts.google.com","www.figma.com","www.canva.com","designer.microsoft.com","create.vista.com","console.aws.amazon.com","www.coze.com"].some(h=>window.location.href.startsWith(h)||window.location.host.endsWith(h)))){let h=function(n){window.dispatchEvent(new CustomEvent("chrome.runtime.sendMessage",{detail:n}))},y=function(n){var t;const e=[];for(let o=0;o<window.location.ancestorOrigins.length;o++){const a=(t=window.location.ancestorOrigins[o].match(/^https?:\/\/([^\/]+)/))==null?void 0:t[1];a&&e.push(a)}if(n.type!=="CANVAS"){const o=C[n.type]||0;if(Date.now()-o<1e3)return}C[n.type]=Date.now(),h({action:"setDetected",src:window.location.href,origins:e,detection:n})},m=function(n){const e=window[n];if(!e)return;const t=new Proxy(e,{get:function(o,a){const r=o[a];return typeof r=="function"?function(){return r.apply(o,arguments)}:r}});Object.defineProperty(window,n,{get(){return t}})},l=function(n,e,t){const o="function "+n+"() { [native code] }",a=e[n];e.constructor.name,e[n]=new Proxy(a,{get:function(r,i){if(i==="toString")return o;const f=r[i];return typeof f=="function"?function(){return f.apply(r,arguments)}:f},apply:t})},E=function(n,e,t){const o=n.apply(e,t);return s?o:t[0]===37445||t[0]===37446?o+" #"+P:o},D=function(n,e,t){if(s||!!e.parentElement&&e.parentElement.offsetHeight>1&&e.parentElement.offsetWidth>1&&e.offsetHeight>0&&e.offsetWidth>0&&e.style.display!=="none"&&e.style.visibility!=="hidden"&&e.style.opacity!=="0")return n.apply(e,t);if(t.length==0||t[0]==="image/png"){const i=e.width,f=e.height,d=e.getContext("2d",{willReadFrequently:!0});if(d!==null){const c=d.getImageData(0,0,i,f),u=Math.max(1,Math.floor(f/7)),w=Math.max(1,Math.floor(i/7));for(let v=0;v<f;v+=u)for(let b=0;b<i;b+=w){const p=(v+Math.floor(Math.random()*u))*(i*4)+(b+Math.floor(Math.random()*w))*4;p<c.data.length&&(c.data[p+0]=c.data[p+0]+M.r,c.data[p+1]=c.data[p+1]+M.g,c.data[p+2]=c.data[p+2]+M.b)}d.putImageData(c,0,0)}}else t.length===1?t.push(.5+g):t[1]>.9?t[1]=t[1]-g:t[1]=t[1]+g;const r=n.apply(e,t);return y({type:"CANVAS",occurredAt:Date.now(),canvas:r,canvasSize:e.width+"x"+e.height}),r},s=!!document.documentElement.getAttribute("data-afd-disabled");s&&document.documentElement.removeAttribute("data-afd-disabled"),window.addEventListener("afd-disabled",function(){document.documentElement.removeAttribute("data-afd-disabled"),s=!0},{once:!0}),h({action:"resetDetection",host:window.location.host});const A=(()=>{const n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";return function(e){let t="";const o=n.length;for(let a=0;a<e;a++)t+=n.charAt(Math.floor(Math.random()*o));return t}})(),C={};(function(){const n=window.screen.availWidth,e=window.screen.availHeight+Math.floor(Math.random()*(n/80)-n/80/2),t=window.screen,o=new Proxy(t,{get:function(a,r){if(!s){if(r==="availWidth")return n;if(r==="availHeight")return e}const i=a[r];return typeof i=="function"?function(){return i.apply(a,arguments)}:i}});Object.defineProperty(window,"screen",{get(){return o}})})(),m("navigator"),m("speechSynthesis"),m("Notification");const P=A(10);l("getParameter",WebGLRenderingContext.prototype,E),l("getParameter",WebGL2RenderingContext.prototype,E),l("getContext",HTMLCanvasElement.prototype,function(n,e,t){return n.apply(e,t)});const g=Math.random()*.05,M={r:Math.floor(Math.random()*10),g:Math.floor(Math.random()*10),b:Math.floor(Math.random()*10)};l("toDataURL",HTMLCanvasElement.prototype,D),window.addEventListener("message",function(n){if(n.data&&n.data==="injectFrameFingerprint"&&(n.preventDefault(),n.stopPropagation(),n.source)){const e=n.source;e.HTMLCanvasElement&&l("toDataURL",e.HTMLCanvasElement.prototype,D)}},!1);const x=function(n,e,t){if(s)return n.apply(e,t);const o=e.canvas;if(o instanceof HTMLCanvasElement&&!!o.parentElement&&o.parentElement.offsetHeight>1&&o.parentElement.offsetWidth>1&&o.offsetHeight>0&&o.offsetWidth>0&&o.style.display!=="none"&&o.style.visibility!=="hidden"&&o.style.opacity!=="0")return n.apply(e,t);let r=-1;if(t.length>0&&(t[0].length?r=0:t.length>1&&t[1].length&&(r=1)),r>=0){let i=0;for(let f=0;f<4;f++){for(;i<t[r].length&&t[r][i]===0;i++);if(i>t[r].length)break;const d=t[r].constructor;let c=0;if(d==Float32Array)c=(Math.random()*.05+.1)*(Math.random()>.5?1:-1);else if(d==Int16Array||d==Int32Array||d==Uint16Array||d==Uint32Array){const u=Math.min(...t[r]),w=Math.max(...t[r]);c=Math.floor(Math.random()*(w-u+1))+u}t[r][i]+=c,i++}}return y({type:"WEBGL",occurredAt:Date.now()}),n.apply(e,t)};l("bufferData",WebGLRenderingContext.prototype,x),l("bufferData",WebGL2RenderingContext.prototype,x);{let n=function(a){return t?!0:(o.add(a),o.size>300?(t=!0,o.clear(),y({type:"FONT",occurredAt:Date.now()}),!0):!1)},e=function(a,r,i){try{return r===HTMLElement.prototype?void 0:s?Reflect.apply(a,r,i):r.tagName!=="IMG"&&r.childElementCount===0&&n(r.style.fontFamily)?Reflect.apply(a,r,i)+Math.random()*.1-.05:Reflect.apply(a,r,i)}catch{}},t=!1,o=new Set;Object.defineProperty(HTMLElement.prototype,"offsetHeight",{get:new Proxy(Object.getOwnPropertyDescriptor(HTMLElement.prototype,"offsetHeight").get,{apply(a,r,i){return e(a,r,i)}})}),Object.defineProperty(HTMLElement.prototype,"offsetWidth",{get:new Proxy(Object.getOwnPropertyDescriptor(HTMLElement.prototype,"offsetWidth").get,{apply(a,r,i){return e(a,r,i)}})})}l("getChannelData",AudioBuffer.prototype,function(n,e,t){const o=n.apply(e,t);if(s)return o;y({type:"AUDIO",occurredAt:Date.now()});for(let a=0;a<o.length;a+=o.length/10)a+=Math.floor(Math.random()*o.length/10),a>=o.length&&(a=o.length-1),o[a]+=Math.random()*1e-7-5e-8;return o})}
1
+ document.documentElement.setAttribute("randFingerprintInjected", "true");
2
+ if (!(ignoredSites = ["https://www.google.com/maps", "https://accounts.google.com", "www.figma.com", "www.canva.com", "designer.microsoft.com", "create.vista.com", "console.aws.amazon.com", "www.coze.com"].some(h => window.location.href.startsWith(h) || window.location.host.endsWith(h)))) {
3
+ let h = function (n) { window.dispatchEvent(new CustomEvent("chrome.runtime.sendMessage", { detail: n })); }, y = function (n) { var t; const e = []; for (let o = 0; o < window.location.ancestorOrigins.length; o++) {
4
+ const a = (t = window.location.ancestorOrigins[o].match(/^https?:\/\/([^\/]+)/)) == null ? void 0 : t[1];
5
+ a && e.push(a);
6
+ } if (n.type !== "CANVAS") {
7
+ const o = C[n.type] || 0;
8
+ if (Date.now() - o < 1e3)
9
+ return;
10
+ } C[n.type] = Date.now(), h({ action: "setDetected", src: window.location.href, origins: e, detection: n }); }, m = function (n) { const e = window[n]; if (!e)
11
+ return; const t = new Proxy(e, { get: function (o, a) { const r = o[a]; return typeof r == "function" ? function () { return r.apply(o, arguments); } : r; } }); Object.defineProperty(window, n, { get() { return t; } }); }, l = function (n, e, t) { const o = "function " + n + "() { [native code] }", a = e[n]; e.constructor.name, e[n] = new Proxy(a, { get: function (r, i) { if (i === "toString")
12
+ return o; const f = r[i]; return typeof f == "function" ? function () { return f.apply(r, arguments); } : f; }, apply: t }); }, E = function (n, e, t) { const o = n.apply(e, t); return s ? o : t[0] === 37445 || t[0] === 37446 ? o + " #" + P : o; }, D = function (n, e, t) { if (s || !!e.parentElement && e.parentElement.offsetHeight > 1 && e.parentElement.offsetWidth > 1 && e.offsetHeight > 0 && e.offsetWidth > 0 && e.style.display !== "none" && e.style.visibility !== "hidden" && e.style.opacity !== "0")
13
+ return n.apply(e, t); if (t.length == 0 || t[0] === "image/png") {
14
+ const i = e.width, f = e.height, d = e.getContext("2d", { willReadFrequently: !0 });
15
+ if (d !== null) {
16
+ const c = d.getImageData(0, 0, i, f), u = Math.max(1, Math.floor(f / 7)), w = Math.max(1, Math.floor(i / 7));
17
+ for (let v = 0; v < f; v += u)
18
+ for (let b = 0; b < i; b += w) {
19
+ const p = (v + Math.floor(Math.random() * u)) * (i * 4) + (b + Math.floor(Math.random() * w)) * 4;
20
+ p < c.data.length && (c.data[p + 0] = c.data[p + 0] + M.r, c.data[p + 1] = c.data[p + 1] + M.g, c.data[p + 2] = c.data[p + 2] + M.b);
21
+ }
22
+ d.putImageData(c, 0, 0);
23
+ }
24
+ }
25
+ else
26
+ t.length === 1 ? t.push(.5 + g) : t[1] > .9 ? t[1] = t[1] - g : t[1] = t[1] + g; const r = n.apply(e, t); return y({ type: "CANVAS", occurredAt: Date.now(), canvas: r, canvasSize: e.width + "x" + e.height }), r; }, s = !!document.documentElement.getAttribute("data-afd-disabled");
27
+ s && document.documentElement.removeAttribute("data-afd-disabled"), window.addEventListener("afd-disabled", function () { document.documentElement.removeAttribute("data-afd-disabled"), s = !0; }, { once: !0 }), h({ action: "resetDetection", host: window.location.host });
28
+ const A = (() => { const n = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; return function (e) { let t = ""; const o = n.length; for (let a = 0; a < e; a++)
29
+ t += n.charAt(Math.floor(Math.random() * o)); return t; }; })(), C = {};
30
+ (function () { const n = window.screen.availWidth, e = window.screen.availHeight + Math.floor(Math.random() * (n / 80) - n / 80 / 2), t = window.screen, o = new Proxy(t, { get: function (a, r) { if (!s) {
31
+ if (r === "availWidth")
32
+ return n;
33
+ if (r === "availHeight")
34
+ return e;
35
+ } const i = a[r]; return typeof i == "function" ? function () { return i.apply(a, arguments); } : i; } }); Object.defineProperty(window, "screen", { get() { return o; } }); })(), m("navigator"), m("speechSynthesis"), m("Notification");
36
+ const P = A(10);
37
+ l("getParameter", WebGLRenderingContext.prototype, E), l("getParameter", WebGL2RenderingContext.prototype, E), l("getContext", HTMLCanvasElement.prototype, function (n, e, t) { return n.apply(e, t); });
38
+ const g = Math.random() * .05, M = { r: Math.floor(Math.random() * 10), g: Math.floor(Math.random() * 10), b: Math.floor(Math.random() * 10) };
39
+ l("toDataURL", HTMLCanvasElement.prototype, D), window.addEventListener("message", function (n) { if (n.data && n.data === "injectFrameFingerprint" && (n.preventDefault(), n.stopPropagation(), n.source)) {
40
+ const e = n.source;
41
+ e.HTMLCanvasElement && l("toDataURL", e.HTMLCanvasElement.prototype, D);
42
+ } }, !1);
43
+ const x = function (n, e, t) { if (s)
44
+ return n.apply(e, t); const o = e.canvas; if (o instanceof HTMLCanvasElement && !!o.parentElement && o.parentElement.offsetHeight > 1 && o.parentElement.offsetWidth > 1 && o.offsetHeight > 0 && o.offsetWidth > 0 && o.style.display !== "none" && o.style.visibility !== "hidden" && o.style.opacity !== "0")
45
+ return n.apply(e, t); let r = -1; if (t.length > 0 && (t[0].length ? r = 0 : t.length > 1 && t[1].length && (r = 1)), r >= 0) {
46
+ let i = 0;
47
+ for (let f = 0; f < 4; f++) {
48
+ for (; i < t[r].length && t[r][i] === 0; i++)
49
+ ;
50
+ if (i > t[r].length)
51
+ break;
52
+ const d = t[r].constructor;
53
+ let c = 0;
54
+ if (d == Float32Array)
55
+ c = (Math.random() * .05 + .1) * (Math.random() > .5 ? 1 : -1);
56
+ else if (d == Int16Array || d == Int32Array || d == Uint16Array || d == Uint32Array) {
57
+ const u = Math.min(...t[r]), w = Math.max(...t[r]);
58
+ c = Math.floor(Math.random() * (w - u + 1)) + u;
59
+ }
60
+ t[r][i] += c, i++;
61
+ }
62
+ } return y({ type: "WEBGL", occurredAt: Date.now() }), n.apply(e, t); };
63
+ l("bufferData", WebGLRenderingContext.prototype, x), l("bufferData", WebGL2RenderingContext.prototype, x);
64
+ {
65
+ let n = function (a) { return t ? !0 : (o.add(a), o.size > 300 ? (t = !0, o.clear(), y({ type: "FONT", occurredAt: Date.now() }), !0) : !1); }, e = function (a, r, i) { try {
66
+ return r === HTMLElement.prototype ? void 0 : s ? Reflect.apply(a, r, i) : r.tagName !== "IMG" && r.childElementCount === 0 && n(r.style.fontFamily) ? Reflect.apply(a, r, i) + Math.random() * .1 - .05 : Reflect.apply(a, r, i);
67
+ }
68
+ catch { } }, t = !1, o = new Set;
69
+ Object.defineProperty(HTMLElement.prototype, "offsetHeight", { get: new Proxy(Object.getOwnPropertyDescriptor(HTMLElement.prototype, "offsetHeight").get, { apply(a, r, i) { return e(a, r, i); } }) }), Object.defineProperty(HTMLElement.prototype, "offsetWidth", { get: new Proxy(Object.getOwnPropertyDescriptor(HTMLElement.prototype, "offsetWidth").get, { apply(a, r, i) { return e(a, r, i); } }) });
70
+ }
71
+ l("getChannelData", AudioBuffer.prototype, function (n, e, t) { const o = n.apply(e, t); if (s)
72
+ return o; y({ type: "AUDIO", occurredAt: Date.now() }); for (let a = 0; a < o.length; a += o.length / 10)
73
+ a += Math.floor(Math.random() * o.length / 10), a >= o.length && (a = o.length - 1), o[a] += Math.random() * 1e-7 - 5e-8; return o; });
74
+ }
75
+ export {};
76
+ //# sourceMappingURL=chunk-7ce85519.js.map
@@ -1 +1,15 @@
1
- var t;if(ignoredSites=["https://www.google.com/maps","https://accounts.google.com","www.figma.com","www.canva.com","designer.microsoft.com","create.vista.com","console.aws.amazon.com","www.coze.com"].some(e=>window.location.href.startsWith(e)||window.location.host.endsWith(e)))chrome.runtime.sendMessage({action:"resetDetection"},function(){});else if(document.documentElement.getAttribute("randFingerprintInjected")===null){chrome.runtime.sendMessage({action:"resetDetection"},function(){});try{(t=window.top)==null||t.postMessage("injectFrameFingerprint","*")}catch{}}else document.documentElement.removeAttribute("randFingerprintInjected");window.location.host&&chrome.runtime.sendMessage({action:"scriptLoaded",host:window.location.host},function(){});
1
+ var t;
2
+ if (ignoredSites = ["https://www.google.com/maps", "https://accounts.google.com", "www.figma.com", "www.canva.com", "designer.microsoft.com", "create.vista.com", "console.aws.amazon.com", "www.coze.com"].some(e => window.location.href.startsWith(e) || window.location.host.endsWith(e)))
3
+ chrome.runtime.sendMessage({ action: "resetDetection" }, function () { });
4
+ else if (document.documentElement.getAttribute("randFingerprintInjected") === null) {
5
+ chrome.runtime.sendMessage({ action: "resetDetection" }, function () { });
6
+ try {
7
+ (t = window.top) == null || t.postMessage("injectFrameFingerprint", "*");
8
+ }
9
+ catch { }
10
+ }
11
+ else
12
+ document.documentElement.removeAttribute("randFingerprintInjected");
13
+ window.location.host && chrome.runtime.sendMessage({ action: "scriptLoaded", host: window.location.host }, function () { });
14
+ export {};
15
+ //# sourceMappingURL=chunk-aaea1190.js.map
@@ -1 +1,77 @@
1
- const D={enable:chrome.runtime.getURL("img/icon-32.png"),disable:chrome.runtime.getURL("img/icon-32-disabled.png")};async function m(){var e;const t=await chrome.tabs.query({active:!0,currentWindow:!0}),o=t==null?void 0:t[0];if(!o)return;if(!o.url||!o.url.match(/^https?:\/\//)){chrome.action.setIcon({path:D.disable,tabId:o.id});return}const n=(e=o.url.match(/^https?:\/\/([^\/]+)/))==null?void 0:e[1];if(!n){chrome.action.setIcon({path:D.disable,tabId:o.id});return}const i="disabled:"+n;if((await chrome.storage.sync.get([i]))[i]){chrome.action.setIcon({path:D.disable,tabId:o.id});return}chrome.action.setIcon({path:D.enable,tabId:o.id})}let u=null,f=null,I=!1;function g(t){if(I)return;I=!0;const o=new Promise((i,r)=>{const e=indexedDB.open("db",4);e.onupgradeneeded=function(){if(!e.result.objectStoreNames.contains("detections")){let c=e.result.createObjectStore("detections",{keyPath:"key"});c.createIndex("tabId",["tab.id","updatedAt"],{unique:!1}),c.createIndex("host",["host","updatedAt"],{unique:!1}),c.createIndex("updatedAt","updatedAt",{unique:!1})}},e.onsuccess=function(){u=e.result,i(null)}}),n=new Promise((i,r)=>{const e=indexedDB.open("stats",2);e.onupgradeneeded=function(){e.result.objectStoreNames.contains("stats")||e.result.createObjectStore("stats",{keyPath:"host"}).createIndex("updatedAt","updatedAt",{unique:!1})},e.onsuccess=function(){f=e.result,i(null)}});Promise.all([o,n]).then(()=>{I=!1,A(),setInterval(A,1e3*60*60*1),t&&t()})}function A(){if(!u)return;const t=u.transaction("detections","readwrite"),o=t.objectStore("detections").index("updatedAt").openCursor(null,"next");o.onsuccess=function(n){const i=o.result;i&&i.value.updatedAt<Date.now()-1e3*60*60*24*30?(i.delete(),i.continue()):t.commit()},o.onerror=function(n){t.abort()}}function S(t,o,n,i,r){if(!u||!f)return;const e=t+"@"+o,c=o==null?void 0:o.split("/")[2],s=u.transaction("detections","readwrite"),a=s.objectStore("detections"),h=a.get(e);h.onsuccess=function(y){let d=h.result;d?(d.detections.push(i),d.updatedAt=Date.now()):d={key:e,url:o,host:c,origins:n,tab:{id:r.id,favIconUrl:r.favIconUrl,title:r.title},detections:[i],updatedAt:Date.now()};const b=a.put(d);b.onsuccess=function(){s.commit()},b.onerror=function(B){s.abort()}},h.onerror=function(y){s.abort()};const l=f.transaction("stats","readwrite"),w=l.objectStore("stats"),p=w.get(c);p.onsuccess=function(y){let d=p.result;d?(d.count++,d.countByType[i.type]++,d.updatedAt=Date.now()):d={host:c,count:1,countByType:{CANVAS:i.type==="CANVAS"?1:0,WEBGL:i.type==="WEBGL"?1:0,FONT:i.type==="FONT"?1:0,AUDIO:i.type==="AUDIO"?1:0},updatedAt:Date.now()};const b=w.put(d);b.onsuccess=function(){l.commit()},b.onerror=function(B){l.abort()}},p.onerror=function(y){l.abort()}}function v(t,o,n,i,r){if(r.incognito){chrome.storage.session.get(["detections:"+r.id],function(e){const c=e["detections:"+r.id]||[];let s=!1;for(let a=0;a<c.length;a++)if(c[a].key===t+"@"+o){c[a].detections.push(i),c[a].updatedAt=Date.now(),s=!0;break}if(!s){const a={key:t+"@"+o,url:o,host:o==null?void 0:o.split("/")[2],origins:n,tab:{id:r.id,favIconUrl:r.favIconUrl,title:r.title},detections:[i],updatedAt:Date.now()};c.push(a)}chrome.storage.session.set({["detections:"+r.id]:c})});return}u?S(t,o,n,i,r):g(()=>{S(t,o,n,i,r)})}async function x(t,o=!1){return o?new Promise(n=>{chrome.storage.session.get(["detections:"+t],function(i){if(i){const r=i["detections:"+t]||[];n(r)}else n([])})}):new Promise(n=>{chrome.storage.session.get(["tab-started:"+t],function(i){const r=i["tab-started:"+t];if(!r){n([]);return}const e=function(){if(!u)return;const c=u.transaction("detections","readonly"),s=c.objectStore("detections").index("tabId").openCursor(IDBKeyRange.bound([t,r],[t,Date.now()]),"prev"),a=[];s.onsuccess=function(h){const l=s.result;l?(a.push(l.value),l.continue()):(c.abort(),n(a))},s.onerror=function(h){c.abort(),n([])}};u?e():g(()=>{e()})})})}async function j(t,o=Date.now()){return new Promise(n=>{const i=function(){if(!u)return;const r=u.transaction("detections","readonly"),e=r.objectStore("detections").index("host").openCursor(IDBKeyRange.bound([t,0],[t,o]),"prev"),c=[];e.onsuccess=function(s){const a=e.result;if(a){if(c.push(a.value),c.length>=5){r.abort(),n(c);return}a.continue()}else r.abort(),n(c)},e.onerror=function(s){r.abort(),n([])}};u?i():g(()=>{i()})})}async function k(t){if(!f||!u)return;const o=f.transaction("stats","readwrite"),i=o.objectStore("stats").delete(t);i.onsuccess=function(s){o.commit()},i.onerror=function(s){o.abort()};const r=u.transaction("detections","readwrite"),c=r.objectStore("detections").index("host").openCursor(t);c.onsuccess=function(s){const a=c.result;a?(a.delete(),a.continue()):r.commit()},c.onerror=function(s){r.abort()}}async function L(){return new Promise(t=>{f?o():g(()=>{o()});function o(){if(!f)return;const n=f.transaction("stats","readonly"),i=n.objectStore("stats").index("updatedAt").openCursor(null,"prev"),r=[];i.onsuccess=function(e){const c=i.result;c?(r.push(c.value),c.continue()):(n.abort(),t(r))},i.onerror=function(e){n.abort(),t([])}}})}chrome.runtime.onStartup.addListener(function(){g(),m(),chrome.storage.local.get(["reload"],function(t){t.reload&&chrome.storage.local.remove(["reload"]).then(()=>{chrome.tabs.query({active:!0,currentWindow:!0}).then(o=>{o.forEach(n=>{chrome.tabs.reload(n.id)})})})})});chrome.tabs.onActivated.addListener(function(){m()});const P=function(t,o,n){var i,r;if(!t||!t.action)return n({result:"no action"}),!0;if(t.action==="setDisabled"){const e="disabled:"+t.host;return t.disabled?(chrome.storage.sync.set({[e]:t.disabled},()=>{m().then(()=>{n({result:"ok"})}).catch(c=>{n({result:"error"})})}),!0):(chrome.storage.sync.remove(e,()=>{m().then(()=>{n({result:"ok"})}).catch(c=>{n({result:"error"})})}),!0)}if(t.action==="getDisabled"){const e="disabled:"+t.host;return chrome.storage.sync.get([e],function(c){n({disabled:c[e]})}),!0}if(t.action==="getWhiteList")return chrome.storage.sync.get(null,function(e){const c=[];Object.keys(e).sort().forEach(s=>{s.startsWith("disabled:")&&c.push(s.replace("disabled:",""))}),n({whiteList:c})}),!0;if(t.action==="scriptLoaded"){const e=(i=o.tab)==null?void 0:i.id;return e&&chrome.storage.session.get(["hosts:"+e],function(c){const s=c["hosts:"+e]||[];s.includes(t.host)||(s.push(t.host),chrome.storage.session.set({["hosts:"+e]:s}).then(()=>{}))}),!0}if(t.action==="getHosts"){const e=t.tabID;return e&&chrome.storage.session.get(["hosts:"+e],function(c){const s=c["hosts:"+e]||[];n({hosts:s})}),!0}return t.action==="resetDetection"?o.frameId?(n({result:"ok"}),!0):(o.tab&&o.tab.id&&(chrome.storage.session.remove(["hosts:"+o.tab.id]).then(()=>{}),chrome.storage.session.set({["tab-started:"+o.tab.id]:Date.now()}),o.tab.incognito&&chrome.storage.session.remove("detections:"+o.tab.id)),m().then(()=>{var e;chrome.action.setBadgeText({text:"",tabId:(e=o.tab)==null?void 0:e.id}),n({result:"ok"})}).catch(e=>{n({result:"error"})}),!0):t.action==="setDetected"?o.tab?(o.tab,chrome.action.setBadgeText({text:"!",tabId:o.tab.id}),chrome.action.setBadgeBackgroundColor({color:"#FF0000",tabId:(r=o.tab)==null?void 0:r.id}),v(o.documentId,t.src,t.origins,t.detection,o.tab),chrome.storage.sync.get("totalDetected",function(e){const c=e.totalDetected||0;chrome.storage.sync.set({totalDetected:c+1})}),n({result:"ok"}),!0):!1:t.action==="getTabDetection"?(x(t.tabId,t.isIncognito).then(e=>{n(e)}).catch(e=>{n([])}),!0):t.action==="getHostDetection"?(j(t.host,t.upBound).then(e=>{n(e)}).catch(e=>{n([])}),!0):t.action==="removeHostStats"?(k(t.host).finally(()=>{n()}),!0):t.action==="getHostStats"?(L().then(e=>{n(e)}).catch(e=>{n([])}),!0):!1};chrome.runtime.onMessage.hasListeners()||chrome.runtime.onMessage.addListener(P);
1
+ const D = { enable: chrome.runtime.getURL("img/icon-32.png"), disable: chrome.runtime.getURL("img/icon-32-disabled.png") };
2
+ async function m() { var e; const t = await chrome.tabs.query({ active: !0, currentWindow: !0 }), o = t == null ? void 0 : t[0]; if (!o)
3
+ return; if (!o.url || !o.url.match(/^https?:\/\//)) {
4
+ chrome.action.setIcon({ path: D.disable, tabId: o.id });
5
+ return;
6
+ } const n = (e = o.url.match(/^https?:\/\/([^\/]+)/)) == null ? void 0 : e[1]; if (!n) {
7
+ chrome.action.setIcon({ path: D.disable, tabId: o.id });
8
+ return;
9
+ } const i = "disabled:" + n; if ((await chrome.storage.sync.get([i]))[i]) {
10
+ chrome.action.setIcon({ path: D.disable, tabId: o.id });
11
+ return;
12
+ } chrome.action.setIcon({ path: D.enable, tabId: o.id }); }
13
+ let u = null, f = null, I = !1;
14
+ function g(t) { if (I)
15
+ return; I = !0; const o = new Promise((i, r) => { const e = indexedDB.open("db", 4); e.onupgradeneeded = function () { if (!e.result.objectStoreNames.contains("detections")) {
16
+ let c = e.result.createObjectStore("detections", { keyPath: "key" });
17
+ c.createIndex("tabId", ["tab.id", "updatedAt"], { unique: !1 }), c.createIndex("host", ["host", "updatedAt"], { unique: !1 }), c.createIndex("updatedAt", "updatedAt", { unique: !1 });
18
+ } }, e.onsuccess = function () { u = e.result, i(null); }; }), n = new Promise((i, r) => { const e = indexedDB.open("stats", 2); e.onupgradeneeded = function () { e.result.objectStoreNames.contains("stats") || e.result.createObjectStore("stats", { keyPath: "host" }).createIndex("updatedAt", "updatedAt", { unique: !1 }); }, e.onsuccess = function () { f = e.result, i(null); }; }); Promise.all([o, n]).then(() => { I = !1, A(), setInterval(A, 1e3 * 60 * 60 * 1), t && t(); }); }
19
+ function A() { if (!u)
20
+ return; const t = u.transaction("detections", "readwrite"), o = t.objectStore("detections").index("updatedAt").openCursor(null, "next"); o.onsuccess = function (n) { const i = o.result; i && i.value.updatedAt < Date.now() - 1e3 * 60 * 60 * 24 * 30 ? (i.delete(), i.continue()) : t.commit(); }, o.onerror = function (n) { t.abort(); }; }
21
+ function S(t, o, n, i, r) { if (!u || !f)
22
+ return; const e = t + "@" + o, c = o == null ? void 0 : o.split("/")[2], s = u.transaction("detections", "readwrite"), a = s.objectStore("detections"), h = a.get(e); h.onsuccess = function (y) { let d = h.result; d ? (d.detections.push(i), d.updatedAt = Date.now()) : d = { key: e, url: o, host: c, origins: n, tab: { id: r.id, favIconUrl: r.favIconUrl, title: r.title }, detections: [i], updatedAt: Date.now() }; const b = a.put(d); b.onsuccess = function () { s.commit(); }, b.onerror = function (B) { s.abort(); }; }, h.onerror = function (y) { s.abort(); }; const l = f.transaction("stats", "readwrite"), w = l.objectStore("stats"), p = w.get(c); p.onsuccess = function (y) { let d = p.result; d ? (d.count++, d.countByType[i.type]++, d.updatedAt = Date.now()) : d = { host: c, count: 1, countByType: { CANVAS: i.type === "CANVAS" ? 1 : 0, WEBGL: i.type === "WEBGL" ? 1 : 0, FONT: i.type === "FONT" ? 1 : 0, AUDIO: i.type === "AUDIO" ? 1 : 0 }, updatedAt: Date.now() }; const b = w.put(d); b.onsuccess = function () { l.commit(); }, b.onerror = function (B) { l.abort(); }; }, p.onerror = function (y) { l.abort(); }; }
23
+ function v(t, o, n, i, r) { if (r.incognito) {
24
+ chrome.storage.session.get(["detections:" + r.id], function (e) { const c = e["detections:" + r.id] || []; let s = !1; for (let a = 0; a < c.length; a++)
25
+ if (c[a].key === t + "@" + o) {
26
+ c[a].detections.push(i), c[a].updatedAt = Date.now(), s = !0;
27
+ break;
28
+ } if (!s) {
29
+ const a = { key: t + "@" + o, url: o, host: o == null ? void 0 : o.split("/")[2], origins: n, tab: { id: r.id, favIconUrl: r.favIconUrl, title: r.title }, detections: [i], updatedAt: Date.now() };
30
+ c.push(a);
31
+ } chrome.storage.session.set({ ["detections:" + r.id]: c }); });
32
+ return;
33
+ } u ? S(t, o, n, i, r) : g(() => { S(t, o, n, i, r); }); }
34
+ async function x(t, o = !1) { return o ? new Promise(n => { chrome.storage.session.get(["detections:" + t], function (i) { if (i) {
35
+ const r = i["detections:" + t] || [];
36
+ n(r);
37
+ }
38
+ else
39
+ n([]); }); }) : new Promise(n => { chrome.storage.session.get(["tab-started:" + t], function (i) { const r = i["tab-started:" + t]; if (!r) {
40
+ n([]);
41
+ return;
42
+ } const e = function () { if (!u)
43
+ return; const c = u.transaction("detections", "readonly"), s = c.objectStore("detections").index("tabId").openCursor(IDBKeyRange.bound([t, r], [t, Date.now()]), "prev"), a = []; s.onsuccess = function (h) { const l = s.result; l ? (a.push(l.value), l.continue()) : (c.abort(), n(a)); }, s.onerror = function (h) { c.abort(), n([]); }; }; u ? e() : g(() => { e(); }); }); }); }
44
+ async function j(t, o = Date.now()) { return new Promise(n => { const i = function () { if (!u)
45
+ return; const r = u.transaction("detections", "readonly"), e = r.objectStore("detections").index("host").openCursor(IDBKeyRange.bound([t, 0], [t, o]), "prev"), c = []; e.onsuccess = function (s) { const a = e.result; if (a) {
46
+ if (c.push(a.value), c.length >= 5) {
47
+ r.abort(), n(c);
48
+ return;
49
+ }
50
+ a.continue();
51
+ }
52
+ else
53
+ r.abort(), n(c); }, e.onerror = function (s) { r.abort(), n([]); }; }; u ? i() : g(() => { i(); }); }); }
54
+ async function k(t) { if (!f || !u)
55
+ return; const o = f.transaction("stats", "readwrite"), i = o.objectStore("stats").delete(t); i.onsuccess = function (s) { o.commit(); }, i.onerror = function (s) { o.abort(); }; const r = u.transaction("detections", "readwrite"), c = r.objectStore("detections").index("host").openCursor(t); c.onsuccess = function (s) { const a = c.result; a ? (a.delete(), a.continue()) : r.commit(); }, c.onerror = function (s) { r.abort(); }; }
56
+ async function L() { return new Promise(t => { f ? o() : g(() => { o(); }); function o() { if (!f)
57
+ return; const n = f.transaction("stats", "readonly"), i = n.objectStore("stats").index("updatedAt").openCursor(null, "prev"), r = []; i.onsuccess = function (e) { const c = i.result; c ? (r.push(c.value), c.continue()) : (n.abort(), t(r)); }, i.onerror = function (e) { n.abort(), t([]); }; } }); }
58
+ chrome.runtime.onStartup.addListener(function () { g(), m(), chrome.storage.local.get(["reload"], function (t) { t.reload && chrome.storage.local.remove(["reload"]).then(() => { chrome.tabs.query({ active: !0, currentWindow: !0 }).then(o => { o.forEach(n => { chrome.tabs.reload(n.id); }); }); }); }); });
59
+ chrome.tabs.onActivated.addListener(function () { m(); });
60
+ const P = function (t, o, n) { var i, r; if (!t || !t.action)
61
+ return n({ result: "no action" }), !0; if (t.action === "setDisabled") {
62
+ const e = "disabled:" + t.host;
63
+ return t.disabled ? (chrome.storage.sync.set({ [e]: t.disabled }, () => { m().then(() => { n({ result: "ok" }); }).catch(c => { n({ result: "error" }); }); }), !0) : (chrome.storage.sync.remove(e, () => { m().then(() => { n({ result: "ok" }); }).catch(c => { n({ result: "error" }); }); }), !0);
64
+ } if (t.action === "getDisabled") {
65
+ const e = "disabled:" + t.host;
66
+ return chrome.storage.sync.get([e], function (c) { n({ disabled: c[e] }); }), !0;
67
+ } if (t.action === "getWhiteList")
68
+ return chrome.storage.sync.get(null, function (e) { const c = []; Object.keys(e).sort().forEach(s => { s.startsWith("disabled:") && c.push(s.replace("disabled:", "")); }), n({ whiteList: c }); }), !0; if (t.action === "scriptLoaded") {
69
+ const e = (i = o.tab) == null ? void 0 : i.id;
70
+ return e && chrome.storage.session.get(["hosts:" + e], function (c) { const s = c["hosts:" + e] || []; s.includes(t.host) || (s.push(t.host), chrome.storage.session.set({ ["hosts:" + e]: s }).then(() => { })); }), !0;
71
+ } if (t.action === "getHosts") {
72
+ const e = t.tabID;
73
+ return e && chrome.storage.session.get(["hosts:" + e], function (c) { const s = c["hosts:" + e] || []; n({ hosts: s }); }), !0;
74
+ } return t.action === "resetDetection" ? o.frameId ? (n({ result: "ok" }), !0) : (o.tab && o.tab.id && (chrome.storage.session.remove(["hosts:" + o.tab.id]).then(() => { }), chrome.storage.session.set({ ["tab-started:" + o.tab.id]: Date.now() }), o.tab.incognito && chrome.storage.session.remove("detections:" + o.tab.id)), m().then(() => { var e; chrome.action.setBadgeText({ text: "", tabId: (e = o.tab) == null ? void 0 : e.id }), n({ result: "ok" }); }).catch(e => { n({ result: "error" }); }), !0) : t.action === "setDetected" ? o.tab ? (o.tab, chrome.action.setBadgeText({ text: "!", tabId: o.tab.id }), chrome.action.setBadgeBackgroundColor({ color: "#FF0000", tabId: (r = o.tab) == null ? void 0 : r.id }), v(o.documentId, t.src, t.origins, t.detection, o.tab), chrome.storage.sync.get("totalDetected", function (e) { const c = e.totalDetected || 0; chrome.storage.sync.set({ totalDetected: c + 1 }); }), n({ result: "ok" }), !0) : !1 : t.action === "getTabDetection" ? (x(t.tabId, t.isIncognito).then(e => { n(e); }).catch(e => { n([]); }), !0) : t.action === "getHostDetection" ? (j(t.host, t.upBound).then(e => { n(e); }).catch(e => { n([]); }), !0) : t.action === "removeHostStats" ? (k(t.host).finally(() => { n(); }), !0) : t.action === "getHostStats" ? (L().then(e => { n(e); }).catch(e => { n([]); }), !0) : !1; };
75
+ chrome.runtime.onMessage.hasListeners() || chrome.runtime.onMessage.addListener(P);
76
+ export {};
77
+ //# sourceMappingURL=chunk-b4410958.js.map
@@ -1 +1,19 @@
1
- import{d as N,o as c,c as d,a as e,r as j,b as _,_ as W,e as v,g as O,f as R,h as $,i as w,w as q,j as P,t,u as n,S as J,D as K,n as M,F as C,k as L,m as Q,l as S,p as H,q as X,s as Y,v as Z}from"./chunk-3a7b59dd.js";const ee=N({__name:"Modal",props:{show:{type:Boolean,default:!1}},emits:["close"],setup(T){return(a,h)=>T.show?(c(),d("div",{key:0,class:"modal",onClick:h[1]||(h[1]=b=>a.$emit("close"))},[e("div",{class:"modal-content",onClick:h[0]||(h[0]=b=>b.stopPropagation())},[j(a.$slots,"default",{},void 0,!0)])])):_("",!0)}});const te=W(ee,[["__scopeId","data-v-e3ce65c1"]]),se={key:0,class:"modal-body"},oe={class:"modal-title"},ae={class:"title"},ne=["src"],ie=["href"],le={class:"section-title"},ce={class:"prevented-fingerprints"},de={key:0,class:"stat-number"},ue={class:"label"},re={class:"number"},_e={key:1,class:"stat-number"},ve={class:"label"},he={class:"number"},ge={key:2,class:"stat-number"},pe={class:"label"},me={class:"number"},be={key:3,class:"stat-number"},ye={class:"label"},fe={class:"number"},ke={key:4,class:"stat-number"},we={class:"label"},Me={class:"number"},Ce={key:0,class:"section-title"},Le={class:"info"},Se={key:0},Te=["src"],Be={class:"layout"},De={class:"header"},Ae={class:"description"},Oe=["href"],$e={class:"shadow-text"},He={class:"top-content"},Ne={class:"top-content-col"},We={class:"card-title"},Fe={class:"total-number"},xe={class:"top-content-col"},ze={class:"card-title"},Ve={class:"total-number"},Ie={class:"tabs"},Ue={class:"table-header row"},Ee={class:"header-host"},Ge={class:"header-count"},je={class:"updated-at-col"},Re={class:"hidden-small white-list-col"},qe={class:"delete-col"},Pe={class:"table-body"},Je=["onClick"],Ke=["src"],Qe={class:"updated-at-col"},Xe={class:"hidden-small white-list-col"},Ye=["onClick","title"],Ze={key:1},et={class:"delete-col"},tt=["onClick"],st={class:"table-header row"},ot={class:"header-host"},at={class:"delete-col"},nt={class:"table-body"},it={class:"row-host"},lt=["src"],ct={class:"delete-col"},dt=["onClick"],ut=N({__name:"Options",setup(T){const a=window.chrome,h=a.i18n.getMessage("ExtensionName");document.title=h;const b=v(0),y=v([]),g=v([]);function F(s){a.runtime.sendMessage({action:"setDisabled",host:s,disabled:!1},()=>{})}let x=Q(300);a.storage.sync.onChanged.addListener(s=>{for(const i in s)if(i.startsWith("disabled:")){const o=i.slice(9);if(s[i].newValue){const u=g.value.concat(o);g.value=u.sort()}else g.value=g.value.filter(u=>u!==o)}else i==="totalDetected"&&x(()=>{b.value=s.totalDetected.newValue||0,O().then(o=>{var r;y.value=o||[],k.value&&o.length&&o[0].host===((r=l.value)==null?void 0:r.host)&&D(o[0])})})}),R(async()=>{a.storage.sync.get("totalDetected",s=>{b.value=s.totalDetected||0}),a.runtime.sendMessage({action:"getWhiteList"},s=>{s&&(g.value=s.whiteList)}),a.storage.session.get("activeTab",s=>{s.activeTab&&(p.value=s.activeTab)}),O().then(s=>{y.value=s})});const p=v("stats"),B=s=>{s!==p.value&&(a.storage.session.set({activeTab:s}),p.value=s)};function z(s){Y(s),y.value=y.value.filter(i=>i.host!==s)}function V(s){a.runtime.sendMessage({action:"setDisabled",host:s,disabled:!0},()=>{})}const k=v(!1),l=v(null),m=v([]),f=v(0);function D(s){l.value=s,$(s.host).then(i=>{const o=[];for(const r of i)o.push(...r.detections);i.length?f.value=i[i.length-1].updatedAt-1:f.value=0,m.value=o}),k.value=!0}function I(){k.value=!1,l.value=null,m.value=[],f.value=0}function U(s){const i=s.target;i.scrollTop+i.clientHeight>=i.scrollHeight&&E()}function E(){!l.value||!l.value.host||!f.value||$(l.value.host,f.value-1).then(s=>{const i=[];for(const o of s)i.push(...o.detections),f.value=o.updatedAt;m.value=m.value.concat(i)})}const G=s=>{const i=s.target;window.open("about:blank").document.write("<img src='"+i.src+"' alt='from canvas'/>")};return(s,i)=>(c(),d(C,null,[w(te,{show:k.value,onClose:I},{default:q(()=>{var o,r;return[l.value?(c(),d("div",se,[e("div",oe,[e("div",ae,[e("img",{class:"host-img",loading:"lazy",src:n(S)(l.value.host,32),width:"32",height:"32"},null,8,ne),e("a",{href:"https://"+l.value.host,target:"_blank",rel:"noopener noreferrer"},t(l.value.host)+" ⧉ ",9,ie)]),e("button",{class:"btn close",onClick:i[0]||(i[0]=u=>k.value=!1)},"x")]),e("div",le,t(n(a).i18n.getMessage("NumberOfFingerprints")),1),e("div",ce,[Object.keys(l.value.countByType).filter(u=>{var A;return(A=l.value)==null?void 0:A.countByType[u]}).length>1?(c(),d("div",de,[e("div",ue,t(n(a).i18n.getMessage("Total")),1),e("div",re,t(l.value.count.toLocaleString()),1)])):_("",!0),l.value.countByType.AUDIO?(c(),d("div",_e,[e("div",ve,t(n(a).i18n.getMessage("Audio")),1),e("div",he,t(l.value.countByType.AUDIO.toLocaleString()),1)])):_("",!0),l.value.countByType.CANVAS?(c(),d("div",ge,[e("div",pe,t(n(a).i18n.getMessage("Canvas")),1),e("div",me,t(l.value.countByType.CANVAS.toLocaleString()),1)])):_("",!0),l.value.countByType.FONT?(c(),d("div",be,[e("div",ye,t(n(a).i18n.getMessage("Font")),1),e("div",fe,t(l.value.countByType.FONT.toLocaleString()),1)])):_("",!0),l.value.countByType.WEBGL?(c(),d("div",ke,[e("div",we,t(n(a).i18n.getMessage("WebGL")),1),e("div",Me,t(l.value.countByType.WEBGL.toLocaleString()),1)])):_("",!0)]),(o=m.value)!=null&&o.length?(c(),d("div",Ce,t(n(a).i18n.getMessage("History"))+" ("+t(n(a).i18n.getMessage("Last30Days"))+") ",1)):_("",!0),(r=m.value)!=null&&r.length?(c(),d("div",{key:1,onScroll:U,class:"history"},[(c(!0),d(C,null,L(m.value,u=>(c(),d("div",{class:"history-row",key:u.occurredAt},[e("div",Le,[e("span",null,t(n(H)(u.occurredAt)),1),u.canvasSize?(c(),d("span",Se,"("+t(u.canvasSize)+")",1)):_("",!0),e("span",null,t(u.type),1)]),u.canvas?(c(),d("img",{key:0,class:"canvas",onClick:G,src:u.canvas},null,8,Te)):_("",!0)]))),128))],32)):_("",!0)])):_("",!0)]}),_:1},8,["show"]),e("main",Be,[e("div",De,[e("div",null,[w(P,{width:48}),e("div",Ae,[e("span",null,t(n(h)),1),e("a",{target:"_blank",href:n(X)},t(n(a).i18n.getMessage("MakeBy")),9,Oe)])]),e("div",null,[e("span",$e,t(n(a).i18n.getMessage("RateUs")),1),w(J,{"font-size":"1.4rem"}),w(K)])]),e("div",He,[e("div",Ne,[e("div",We,t(n(a).i18n.getMessage("NumberOfFingerprints")),1),e("div",Fe,t(b.value.toLocaleString()),1)]),e("div",xe,[e("div",ze,t(n(a).i18n.getMessage("NumberOfHosts")),1),e("div",Ve,t(y.value.length.toLocaleString()),1)])]),e("div",Ie,[e("div",{class:M(["tab-item",p.value=="stats"?"active":"inactive"]),onClick:i[1]||(i[1]=o=>B("stats"))}," Statistics ",2),e("div",{class:M(["tab-item",p.value=="white-list"?"active":"inactive"]),onClick:i[2]||(i[2]=o=>B("white-list"))}," White list ",2)]),e("div",{class:M(["body",p.value=="stats"?"show":"hide"])},[e("div",Ue,[e("div",Ee,t(n(a).i18n.getMessage("Host")),1),e("div",Ge,t(n(a).i18n.getMessage("Count")),1),e("div",je,t(n(a).i18n.getMessage("UpdatedAt")),1),e("div",Re,t(n(a).i18n.getMessage("WhiteList")),1),e("div",qe,t(n(a).i18n.getMessage("Delete")),1)]),e("div",Pe,[(c(!0),d(C,null,L(y.value,o=>(c(),d("div",{key:o.host,class:"row data-row"},[e("div",{class:"row-host clickable",onClick:r=>D(o)},[e("img",{class:"host-img",loading:"lazy",src:n(S)(o.host,24),width:"24",height:"24"},null,8,Ke),e("span",null,t(o.host),1)],8,Je),e("div",null,t(o.count.toLocaleString()),1),e("div",Qe,t(n(H)(o.updatedAt).slice(0,19)),1),e("div",Xe,[g.value.includes(o.host)?(c(),d("span",Ze,t(n(a).i18n.getMessage("Added")),1)):(c(),d("button",{key:0,class:"btn add-btn",onClick:r=>V(o.host),title:n(a).i18n.getMessage("AddToWhiteList")},t(n(a).i18n.getMessage("Add")),9,Ye))]),e("div",et,[e("button",{class:"btn delete-btn",onClick:r=>z(o.host)},"✖",8,tt)])]))),128))])],2),e("div",{class:M(["body",p.value=="white-list"?"show":"hide"])},[e("div",st,[e("div",ot,t(n(a).i18n.getMessage("Host")),1),e("div",at,t(n(a).i18n.getMessage("Delete")),1)]),e("div",nt,[(c(!0),d(C,null,L(g.value,o=>(c(),d("div",{key:o,class:"row data-row"},[e("div",it,[e("img",{class:"host-img",loading:"lazy",src:n(S)(o,24),width:"24",height:"24"},null,8,lt),e("span",null,t(o),1)]),e("div",ct,[e("button",{class:"btn delete-btn",onClick:r=>F(o)},"✖",8,dt)])]))),128))])],2)])],64))}});const rt=W(ut,[["__scopeId","data-v-40977f35"]]);Z(rt).mount("#app");
1
+ import { d as N, o as c, c as d, a as e, r as j, b as _, _ as W, e as v, g as O, f as R, h as $, i as w, w as q, j as P, t, u as n, S as J, D as K, n as M, F as C, k as L, m as Q, l as S, p as H, q as X, s as Y, v as Z } from "./chunk-3a7b59dd.js";
2
+ const ee = N({ __name: "Modal", props: { show: { type: Boolean, default: !1 } }, emits: ["close"], setup(T) { return (a, h) => T.show ? (c(), d("div", { key: 0, class: "modal", onClick: h[1] || (h[1] = b => a.$emit("close")) }, [e("div", { class: "modal-content", onClick: h[0] || (h[0] = b => b.stopPropagation()) }, [j(a.$slots, "default", {}, void 0, !0)])])) : _("", !0); } });
3
+ const te = W(ee, [["__scopeId", "data-v-e3ce65c1"]]), se = { key: 0, class: "modal-body" }, oe = { class: "modal-title" }, ae = { class: "title" }, ne = ["src"], ie = ["href"], le = { class: "section-title" }, ce = { class: "prevented-fingerprints" }, de = { key: 0, class: "stat-number" }, ue = { class: "label" }, re = { class: "number" }, _e = { key: 1, class: "stat-number" }, ve = { class: "label" }, he = { class: "number" }, ge = { key: 2, class: "stat-number" }, pe = { class: "label" }, me = { class: "number" }, be = { key: 3, class: "stat-number" }, ye = { class: "label" }, fe = { class: "number" }, ke = { key: 4, class: "stat-number" }, we = { class: "label" }, Me = { class: "number" }, Ce = { key: 0, class: "section-title" }, Le = { class: "info" }, Se = { key: 0 }, Te = ["src"], Be = { class: "layout" }, De = { class: "header" }, Ae = { class: "description" }, Oe = ["href"], $e = { class: "shadow-text" }, He = { class: "top-content" }, Ne = { class: "top-content-col" }, We = { class: "card-title" }, Fe = { class: "total-number" }, xe = { class: "top-content-col" }, ze = { class: "card-title" }, Ve = { class: "total-number" }, Ie = { class: "tabs" }, Ue = { class: "table-header row" }, Ee = { class: "header-host" }, Ge = { class: "header-count" }, je = { class: "updated-at-col" }, Re = { class: "hidden-small white-list-col" }, qe = { class: "delete-col" }, Pe = { class: "table-body" }, Je = ["onClick"], Ke = ["src"], Qe = { class: "updated-at-col" }, Xe = { class: "hidden-small white-list-col" }, Ye = ["onClick", "title"], Ze = { key: 1 }, et = { class: "delete-col" }, tt = ["onClick"], st = { class: "table-header row" }, ot = { class: "header-host" }, at = { class: "delete-col" }, nt = { class: "table-body" }, it = { class: "row-host" }, lt = ["src"], ct = { class: "delete-col" }, dt = ["onClick"], ut = N({ __name: "Options", setup(T) { const a = window.chrome, h = a.i18n.getMessage("ExtensionName"); document.title = h; const b = v(0), y = v([]), g = v([]); function F(s) { a.runtime.sendMessage({ action: "setDisabled", host: s, disabled: !1 }, () => { }); } let x = Q(300); a.storage.sync.onChanged.addListener(s => { for (const i in s)
4
+ if (i.startsWith("disabled:")) {
5
+ const o = i.slice(9);
6
+ if (s[i].newValue) {
7
+ const u = g.value.concat(o);
8
+ g.value = u.sort();
9
+ }
10
+ else
11
+ g.value = g.value.filter(u => u !== o);
12
+ }
13
+ else
14
+ i === "totalDetected" && x(() => { b.value = s.totalDetected.newValue || 0, O().then(o => { var r; y.value = o || [], k.value && o.length && o[0].host === ((r = l.value) == null ? void 0 : r.host) && D(o[0]); }); }); }), R(async () => { a.storage.sync.get("totalDetected", s => { b.value = s.totalDetected || 0; }), a.runtime.sendMessage({ action: "getWhiteList" }, s => { s && (g.value = s.whiteList); }), a.storage.session.get("activeTab", s => { s.activeTab && (p.value = s.activeTab); }), O().then(s => { y.value = s; }); }); const p = v("stats"), B = s => { s !== p.value && (a.storage.session.set({ activeTab: s }), p.value = s); }; function z(s) { Y(s), y.value = y.value.filter(i => i.host !== s); } function V(s) { a.runtime.sendMessage({ action: "setDisabled", host: s, disabled: !0 }, () => { }); } const k = v(!1), l = v(null), m = v([]), f = v(0); function D(s) { l.value = s, $(s.host).then(i => { const o = []; for (const r of i)
15
+ o.push(...r.detections); i.length ? f.value = i[i.length - 1].updatedAt - 1 : f.value = 0, m.value = o; }), k.value = !0; } function I() { k.value = !1, l.value = null, m.value = [], f.value = 0; } function U(s) { const i = s.target; i.scrollTop + i.clientHeight >= i.scrollHeight && E(); } function E() { !l.value || !l.value.host || !f.value || $(l.value.host, f.value - 1).then(s => { const i = []; for (const o of s)
16
+ i.push(...o.detections), f.value = o.updatedAt; m.value = m.value.concat(i); }); } const G = s => { const i = s.target; window.open("about:blank").document.write("<img src='" + i.src + "' alt='from canvas'/>"); }; return (s, i) => (c(), d(C, null, [w(te, { show: k.value, onClose: I }, { default: q(() => { var o, r; return [l.value ? (c(), d("div", se, [e("div", oe, [e("div", ae, [e("img", { class: "host-img", loading: "lazy", src: n(S)(l.value.host, 32), width: "32", height: "32" }, null, 8, ne), e("a", { href: "https://" + l.value.host, target: "_blank", rel: "noopener noreferrer" }, t(l.value.host) + " ⧉ ", 9, ie)]), e("button", { class: "btn close", onClick: i[0] || (i[0] = u => k.value = !1) }, "x")]), e("div", le, t(n(a).i18n.getMessage("NumberOfFingerprints")), 1), e("div", ce, [Object.keys(l.value.countByType).filter(u => { var A; return (A = l.value) == null ? void 0 : A.countByType[u]; }).length > 1 ? (c(), d("div", de, [e("div", ue, t(n(a).i18n.getMessage("Total")), 1), e("div", re, t(l.value.count.toLocaleString()), 1)])) : _("", !0), l.value.countByType.AUDIO ? (c(), d("div", _e, [e("div", ve, t(n(a).i18n.getMessage("Audio")), 1), e("div", he, t(l.value.countByType.AUDIO.toLocaleString()), 1)])) : _("", !0), l.value.countByType.CANVAS ? (c(), d("div", ge, [e("div", pe, t(n(a).i18n.getMessage("Canvas")), 1), e("div", me, t(l.value.countByType.CANVAS.toLocaleString()), 1)])) : _("", !0), l.value.countByType.FONT ? (c(), d("div", be, [e("div", ye, t(n(a).i18n.getMessage("Font")), 1), e("div", fe, t(l.value.countByType.FONT.toLocaleString()), 1)])) : _("", !0), l.value.countByType.WEBGL ? (c(), d("div", ke, [e("div", we, t(n(a).i18n.getMessage("WebGL")), 1), e("div", Me, t(l.value.countByType.WEBGL.toLocaleString()), 1)])) : _("", !0)]), (o = m.value) != null && o.length ? (c(), d("div", Ce, t(n(a).i18n.getMessage("History")) + " (" + t(n(a).i18n.getMessage("Last30Days")) + ") ", 1)) : _("", !0), (r = m.value) != null && r.length ? (c(), d("div", { key: 1, onScroll: U, class: "history" }, [(c(!0), d(C, null, L(m.value, u => (c(), d("div", { class: "history-row", key: u.occurredAt }, [e("div", Le, [e("span", null, t(n(H)(u.occurredAt)), 1), u.canvasSize ? (c(), d("span", Se, "(" + t(u.canvasSize) + ")", 1)) : _("", !0), e("span", null, t(u.type), 1)]), u.canvas ? (c(), d("img", { key: 0, class: "canvas", onClick: G, src: u.canvas }, null, 8, Te)) : _("", !0)]))), 128))], 32)) : _("", !0)])) : _("", !0)]; }), _: 1 }, 8, ["show"]), e("main", Be, [e("div", De, [e("div", null, [w(P, { width: 48 }), e("div", Ae, [e("span", null, t(n(h)), 1), e("a", { target: "_blank", href: n(X) }, t(n(a).i18n.getMessage("MakeBy")), 9, Oe)])]), e("div", null, [e("span", $e, t(n(a).i18n.getMessage("RateUs")), 1), w(J, { "font-size": "1.4rem" }), w(K)])]), e("div", He, [e("div", Ne, [e("div", We, t(n(a).i18n.getMessage("NumberOfFingerprints")), 1), e("div", Fe, t(b.value.toLocaleString()), 1)]), e("div", xe, [e("div", ze, t(n(a).i18n.getMessage("NumberOfHosts")), 1), e("div", Ve, t(y.value.length.toLocaleString()), 1)])]), e("div", Ie, [e("div", { class: M(["tab-item", p.value == "stats" ? "active" : "inactive"]), onClick: i[1] || (i[1] = o => B("stats")) }, " Statistics ", 2), e("div", { class: M(["tab-item", p.value == "white-list" ? "active" : "inactive"]), onClick: i[2] || (i[2] = o => B("white-list")) }, " White list ", 2)]), e("div", { class: M(["body", p.value == "stats" ? "show" : "hide"]) }, [e("div", Ue, [e("div", Ee, t(n(a).i18n.getMessage("Host")), 1), e("div", Ge, t(n(a).i18n.getMessage("Count")), 1), e("div", je, t(n(a).i18n.getMessage("UpdatedAt")), 1), e("div", Re, t(n(a).i18n.getMessage("WhiteList")), 1), e("div", qe, t(n(a).i18n.getMessage("Delete")), 1)]), e("div", Pe, [(c(!0), d(C, null, L(y.value, o => (c(), d("div", { key: o.host, class: "row data-row" }, [e("div", { class: "row-host clickable", onClick: r => D(o) }, [e("img", { class: "host-img", loading: "lazy", src: n(S)(o.host, 24), width: "24", height: "24" }, null, 8, Ke), e("span", null, t(o.host), 1)], 8, Je), e("div", null, t(o.count.toLocaleString()), 1), e("div", Qe, t(n(H)(o.updatedAt).slice(0, 19)), 1), e("div", Xe, [g.value.includes(o.host) ? (c(), d("span", Ze, t(n(a).i18n.getMessage("Added")), 1)) : (c(), d("button", { key: 0, class: "btn add-btn", onClick: r => V(o.host), title: n(a).i18n.getMessage("AddToWhiteList") }, t(n(a).i18n.getMessage("Add")), 9, Ye))]), e("div", et, [e("button", { class: "btn delete-btn", onClick: r => z(o.host) }, "✖", 8, tt)])]))), 128))])], 2), e("div", { class: M(["body", p.value == "white-list" ? "show" : "hide"]) }, [e("div", st, [e("div", ot, t(n(a).i18n.getMessage("Host")), 1), e("div", at, t(n(a).i18n.getMessage("Delete")), 1)]), e("div", nt, [(c(!0), d(C, null, L(g.value, o => (c(), d("div", { key: o, class: "row data-row" }, [e("div", it, [e("img", { class: "host-img", loading: "lazy", src: n(S)(o, 24), width: "24", height: "24" }, null, 8, lt), e("span", null, t(o), 1)]), e("div", ct, [e("button", { class: "btn delete-btn", onClick: r => F(o) }, "✖", 8, dt)])]))), 128))])], 2)])], 64)); } });
17
+ const rt = W(ut, [["__scopeId", "data-v-40977f35"]]);
18
+ Z(rt).mount("#app");
19
+ //# sourceMappingURL=chunk-dfed3562.js.map
package/dist/page.d.ts CHANGED
@@ -38,6 +38,7 @@ export default class CdpPage extends EventEmitter {
38
38
  isReconnecting: boolean;
39
39
  private enabledDomains;
40
40
  private connectionMonitor?;
41
+ private isClosed;
41
42
  constructor(client: CDP.Client);
42
43
  private _attachConnectionMonitor;
43
44
  static create(client: CDP.Client): Promise<CdpPage>;
@@ -1 +1 @@
1
- {"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../src/page.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../src/page.ts"],"names":[],"mappings":"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"}
package/dist/page.js CHANGED
@@ -5,8 +5,9 @@ import { log } from 'crawlee';
5
5
  import { PAGE_CLOSED, PAGE_CREATED } from './events.js';
6
6
  /**
7
7
  * Creates a proxy that wraps CdpPage methods with reconnection logic
8
+
8
9
  */
9
- // @ts-expect-error This is not used
10
+ // @ts-expect-error not used now
10
11
  function createReconnectingPageProxy(page) {
11
12
  const MAX_RETRIES = 3;
12
13
  const INITIAL_BACKOFF = 1000;
@@ -37,20 +38,18 @@ function createReconnectingPageProxy(page) {
37
38
  return await operation();
38
39
  }
39
40
  catch (error) {
40
- if (error instanceof Error) {
41
- lastError = error;
42
- if (error.message?.includes('WebSocket is not open')) {
43
- const backoff = INITIAL_BACKOFF * 2 ** attempt;
44
- log.info(`WebSocket error during ${methodName}, attempting to reconnect... (attempt ${attempt + 1}/${MAX_RETRIES})`);
45
- try {
46
- await page.reconnectSession();
47
- await new Promise(resolve => setTimeout(resolve, backoff));
48
- continue;
49
- }
50
- catch (reconnectError) {
51
- const reconnectErr = reconnectError instanceof Error ? reconnectError : new Error(String(reconnectError));
52
- log.error('Reconnection failed:', { error: reconnectErr });
53
- }
41
+ lastError = error instanceof Error ? error : new Error(String(error));
42
+ if (error instanceof Error && error.message?.includes('WebSocket is not open')) {
43
+ const backoff = INITIAL_BACKOFF * 2 ** attempt;
44
+ log.info(`WebSocket error during ${methodName}, attempting to reconnect... (attempt ${attempt + 1}/${MAX_RETRIES})`);
45
+ try {
46
+ await page.reconnectSession();
47
+ await new Promise(resolve => setTimeout(resolve, backoff));
48
+ continue;
49
+ }
50
+ catch (reconnectError) {
51
+ const reconnectErr = reconnectError instanceof Error ? reconnectError : new Error(String(reconnectError));
52
+ log.error('Reconnection failed:', { error: reconnectErr });
54
53
  }
55
54
  }
56
55
  throw error;
@@ -62,6 +61,10 @@ function createReconnectingPageProxy(page) {
62
61
  get(target, property) {
63
62
  const original = target[property];
64
63
  const propertyName = String(property);
64
+ // Special handling for close method
65
+ if (propertyName === 'close') {
66
+ return original;
67
+ }
65
68
  // Only proxy public methods that return promises
66
69
  if (typeof original === 'function' &&
67
70
  !propertyName.startsWith('_') &&
@@ -70,6 +73,11 @@ function createReconnectingPageProxy(page) {
70
73
  propertyName !== 'addListener' &&
71
74
  propertyName !== 'removeListener') {
72
75
  return async (...args) => {
76
+ // @ts-expect-error Accessing private property
77
+ if (target.isClosed) {
78
+ log.debug(`Operation '${propertyName}' skipped - page is closed`);
79
+ return;
80
+ }
73
81
  return executeWithRetries(() => original.apply(target, args), propertyName);
74
82
  };
75
83
  }
@@ -116,10 +124,16 @@ export default class CdpPage extends EventEmitter {
116
124
  writable: true,
117
125
  value: void 0
118
126
  });
127
+ Object.defineProperty(this, "isClosed", {
128
+ enumerable: true,
129
+ configurable: true,
130
+ writable: true,
131
+ value: false
132
+ });
119
133
  this._rawClient = client;
120
134
  this.client = client;
121
135
  this.emit(PAGE_CREATED);
122
- this._attachConnectionMonitor();
136
+ // this._attachConnectionMonitor();
123
137
  }
124
138
  _attachConnectionMonitor() {
125
139
  if (this.connectionMonitor) {
@@ -370,6 +384,7 @@ export default class CdpPage extends EventEmitter {
370
384
  // Close method
371
385
  async close() {
372
386
  const { Page } = this.client;
387
+ this.isClosed = true;
373
388
  await Page.close();
374
389
  this.emit(PAGE_CLOSED);
375
390
  }
@@ -490,7 +505,11 @@ export default class CdpPage extends EventEmitter {
490
505
  }
491
506
  async reconnectSession(retries = 3) {
492
507
  if (this.isReconnecting) {
493
- log.debug('Reconnection already in progress, skipping...');
508
+ log.debug('Reconnection skipped - already in progress');
509
+ return;
510
+ }
511
+ if (this.isClosed) {
512
+ log.debug('Reconnection skipped - page is closed');
494
513
  return;
495
514
  }
496
515
  let attempt = 0;
@@ -509,42 +528,46 @@ export default class CdpPage extends EventEmitter {
509
528
  port: this._rawClient.port,
510
529
  local: true,
511
530
  });
512
- // Get available targets
513
- const { targetInfos } = await newSession.Target.getTargets();
514
- const pageTarget = targetInfos.find(t => t.type === 'page' && !t.url.includes('chrome://'));
515
- if (!pageTarget) {
516
- throw new Error('No valid page target found');
531
+ try {
532
+ // Get available targets
533
+ const { targetInfos } = await newSession.Target.getTargets();
534
+ const pageTarget = targetInfos.find(t => t.type === 'page' && !t.url.includes('chrome://'));
535
+ if (!pageTarget) {
536
+ log.debug('No valid page target found, stopping reconnection');
537
+ return;
538
+ }
539
+ // Connect to the specific page target
540
+ const pageSession = await CDP({
541
+ target: pageTarget.targetId,
542
+ port: this._rawClient.port,
543
+ local: true,
544
+ });
545
+ // Re-enable only the domains that were previously enabled
546
+ const enablePromises = Array.from(this.enabledDomains).map(domain => pageSession[domain].enable());
547
+ await Promise.all(enablePromises);
548
+ // Update references
549
+ this._rawClient = pageSession;
550
+ this.client = pageSession;
551
+ this._attachConnectionMonitor();
552
+ log.info(`Page session reconnected successfully on attempt ${attempt + 1}`);
553
+ return;
554
+ }
555
+ catch (error) {
556
+ // Clean up the session if anything fails
557
+ await newSession.close().catch(() => { });
558
+ throw error;
517
559
  }
518
- // Connect to the specific page target
519
- const pageSession = await CDP({
520
- target: pageTarget.targetId,
521
- port: this._rawClient.port,
522
- local: true,
523
- });
524
- // Re-enable only the domains that were previously enabled
525
- const enablePromises = Array.from(this.enabledDomains).map(domain => pageSession[domain].enable());
526
- await Promise.all(enablePromises);
527
- // Update references
528
- this._rawClient = pageSession;
529
- this.client = pageSession;
530
- this._attachConnectionMonitor();
531
- log.info(`Page session reconnected successfully on attempt ${attempt + 1}`);
532
- return;
533
560
  }
534
561
  catch (error) {
535
562
  attempt++;
536
563
  if (attempt === retries) {
537
- throw error;
564
+ log.debug('Reconnection stopped - max retries reached');
565
+ return;
538
566
  }
539
- log.error('Failed to reconnect page session after all attempts', { error });
567
+ log.error('Failed to reconnect page session', { error });
540
568
  }
541
569
  }
542
570
  }
543
- catch (error) {
544
- const err = error instanceof Error ? error : new Error(String(error));
545
- log.error('Failed to reconnect page session after all attempts', { error: err });
546
- throw err;
547
- }
548
571
  finally {
549
572
  this.isReconnecting = false;
550
573
  }
package/dist/page.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"page.js","sourceRoot":"","sources":["../src/page.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"page.js","sourceRoot":"","sources":["../src/page.ts"],"names":[],"mappings":"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"}