jumpy-lion 0.0.30 → 0.0.32

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 (33) hide show
  1. package/dist/browser-process/browser.d.ts.map +1 -1
  2. package/dist/browser-process/browser.js +0 -2
  3. package/dist/browser-process/browser.js.map +1 -1
  4. package/dist/fingerprinting/all-fingerprint-defender/_locales/en/messages.json +95 -0
  5. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-16ff15da.js +1 -7
  6. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-1a1456ec.js +1 -18
  7. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-3a7b59dd.js +1 -1258
  8. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-7ce85519.js +1 -76
  9. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-aaea1190.js +1 -15
  10. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-b4410958.js +1 -77
  11. package/dist/fingerprinting/all-fingerprint-defender/assets/chunk-dfed3562.js +1 -19
  12. package/dist/fingerprinting/all-fingerprint-defender/assets/debounce-09920c81.css +1 -0
  13. package/dist/fingerprinting/all-fingerprint-defender/assets/options-fe2fb5aa.css +1 -0
  14. package/dist/fingerprinting/all-fingerprint-defender/assets/popup-1886d2ef.css +1 -0
  15. package/dist/fingerprinting/all-fingerprint-defender/img/icon-128.png +0 -0
  16. package/dist/fingerprinting/all-fingerprint-defender/img/icon-16.png +0 -0
  17. package/dist/fingerprinting/all-fingerprint-defender/img/icon-24.png +0 -0
  18. package/dist/fingerprinting/all-fingerprint-defender/img/icon-32-disabled.png +0 -0
  19. package/dist/fingerprinting/all-fingerprint-defender/img/icon-32.png +0 -0
  20. package/dist/fingerprinting/all-fingerprint-defender/img/icon-48.png +0 -0
  21. package/dist/fingerprinting/all-fingerprint-defender/manifest.json +83 -0
  22. package/dist/fingerprinting/all-fingerprint-defender/options.html +17 -0
  23. package/dist/fingerprinting/all-fingerprint-defender/popup.html +23 -0
  24. package/dist/index.d.ts +3 -0
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +2 -0
  27. package/dist/index.js.map +1 -1
  28. package/dist/page.d.ts +18 -0
  29. package/dist/page.d.ts.map +1 -1
  30. package/dist/page.js +56 -1
  31. package/dist/page.js.map +1 -1
  32. package/dist/tsconfig.build.tsbuildinfo +1 -1
  33. package/package.json +5 -3
@@ -1,76 +1 @@
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
+ 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,15 +1 @@
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
+ 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,77 +1 @@
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
+ 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,19 +1 @@
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
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");
@@ -0,0 +1 @@
1
+ :root{--main-font: "Roboto", system-ui, sans-serif;--main-font-size: 13px;--main-font-weight: 400;--main-bold-font-weight: 600;--button-font-weight: 500}@media (prefers-color-scheme: dark){:root{--primary-color: rgb(232, 234, 237);--inactive-primary-color: rgb(175, 176, 178);--primary-background-color: rgb(32, 33, 36);--body-background-color: rgb(32, 33, 36);--none-interactive-background-color: rgba(51, 52, 56, .5);--active-background-color: rgb(72, 72, 76);--inactive-background-color: rgb(48, 48, 48);--link-color: rgb(138, 180, 248);--border-color: rgb(95, 99, 104);--light-border-color: rgb(95, 99, 104, .5);--button-color: rgb(138, 180, 248);--hover-background-color: rgba(138, 180, 248, .08);--hover-border-color: rgb(95, 99, 104);--card-background-color: rgb(51, 52, 56);--card-shadow: rgba(0, 0, 0, .3) 0px 1px 2px 0px, rgba(0, 0, 0, .15) 0px 2px 6px 2px;--color-red: #ff3d3d}}@media (prefers-color-scheme: light){:root{--primary-color: rgb(32, 33, 36);--inactive-primary-color: rgb(90, 93, 101);--primary-background-color: rgb(255, 255, 255);--body-background-color: rgb(233, 233, 233);--none-interactive-background-color: rgba(224, 224, 224, .5);--active-background-color: rgb(227 240 255);--inactive-background-color: rgba(224, 224, 224, .7);--link-color: rgb(25, 103, 210);--border-color: rgb(218, 220, 224);--light-border-color: rgb(218, 220, 224, .5);--button-color: rgb(26, 115, 232);--hover-background-color: rgba(66, 133, 244, .04);--hover-border-color: rgb(210, 227, 252);--card-background-color: rgb(255, 255, 255);--card-shadow: rgba(60, 64, 67, .3) 0px 1px 2px 0px, rgba(60, 64, 67, .15) 0px 2px 6px 2px;--color-red: #db3434}}:root,body{font-family:var(--main-font);font-size:var(--main-font-size);font-weight:var(--main-font-weight);color:var(--primary-color);background-color:var(--body-background-color);white-space:nowrap}a{color:var(--link-color);font-family:var(--main-font)}a:hover{filter:brightness(120%)}@media (prefers-color-scheme: dark){:root{--scroll-bar-color: rgb(70, 70, 70)}}@media (prefers-color-scheme: light){:root{--scroll-bar-color: rgb(200, 200, 200)}}*{scrollbar-width:thin;scrollbar-color:transparent transparent}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background-color:var(--scroll-bar-color);border-radius:20px}.stars[data-v-8900eb09]{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:2px;text-shadow:0 0 2px #f3e2a2;user-select:none;-webkit-user-select:none}.stars>*[data-v-8900eb09]{cursor:pointer;color:#f1c40f;opacity:1;padding:2px;margin:-2px}.stars>*[data-v-8900eb09] :hover{color:#f1c40f}.donate-btn[data-v-8e466c1c]{background-image:linear-gradient(115deg,#4fcf70,#fad648,#a767e5,#12bcfe,#44ce7b);border-radius:5px;color:#fff;overflow:hidden;text-decoration:none;box-shadow:0 3px 3px var(--primary-color)}.donate-btn span[data-v-8e466c1c]{background:#000;border-radius:3px;display:block;font-family:Arial,sans-serif;font-weight:700;line-height:20px;margin:3px;padding:0 5px}.donate-btn[data-v-8e466c1c]:hover{animation:play-8e466c1c .5s ease-in infinite}@keyframes play-8e466c1c{0%{background-position:0px}20%{background-position:-12.4px}40%{background-position:-24.8px}60%{background-position:-37.2px}80%{background-position:-49.6px}to{background-position:-62px}}
@@ -0,0 +1 @@
1
+ body{width:100vw;height:100vh;display:block;overflow:hidden;padding:0;margin:0}@media (prefers-color-scheme: dark){:root{--scroll-bar-color: rgb(70, 70, 70)}}@media (prefers-color-scheme: light){:root{--scroll-bar-color: rgb(200, 200, 200)}}*{scrollbar-width:thin;scrollbar-color:transparent transparent}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background-color:var(--scroll-bar-color);border-radius:20px}.modal[data-v-e3ce65c1]{position:fixed;top:0;left:0;z-index:999;width:100%;height:100%;background-color:#00000080}.modal-content[data-v-e3ce65c1]{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background-color:var(--card-background-color);box-shadow:var(--card-shadow);padding:1rem;border-radius:.5rem}.modal-body[data-v-40977f35]{max-height:75vh;width:436px;display:flex;flex-direction:column}.modal-body .section-title[data-v-40977f35]{font-size:1.3rem;margin:20px 0 10px}.modal-body .prevented-fingerprints[data-v-40977f35]{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap}.modal-body .stat-number[data-v-40977f35]{min-width:56px;padding:4px;border:1px solid var(--border-color);border-radius:10px;box-shadow:var(--card-shadow);background-color:var(--card-background-color);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px}.modal-body .stat-number .number[data-v-40977f35]{font-size:1.4rem;font-weight:700;color:var(--color-red)}.modal-body .history[data-v-40977f35]{flex:1;overflow:auto;border:1px solid var(--border-color);display:block}.modal-body .history-row[data-v-40977f35]{display:flex;flex-direction:column;align-items:center;padding:10px 0;font-weight:600;box-shadow:var(--card-shadow)}.modal-body .history-row .info[data-v-40977f35]{width:100%;padding:4px 10px;display:flex;box-sizing:border-box;justify-content:space-between}.modal-body .canvas[data-v-40977f35]{margin-top:8px;cursor:pointer;max-width:400px;max-height:300px;border:1px solid var(--border-color);background-color:#fff;image-rendering:pixelated}.modal-title[data-v-40977f35]{display:flex;flex-direction:row;align-items:center}.modal-title .title[data-v-40977f35]{flex-grow:1;display:flex;flex-direction:row;align-items:center;gap:8px;font-size:1.2rem;justify-content:flex-start}.modal-title .title a[data-v-40977f35]{max-width:320px;text-overflow:ellipsis;overflow:hidden}.modal-title .close[data-v-40977f35]{line-height:21px;width:24px}.white-list-col[data-v-40977f35]{width:65px;text-align:center;display:flex;align-items:center;justify-content:center}.delete-col[data-v-40977f35]{width:50px;text-align:center;display:flex;align-items:center;justify-content:center}.show[data-v-40977f35]{display:flex}.hide[data-v-40977f35]{display:none}.tabs[data-v-40977f35]{display:flex;flex-direction:row;align-items:center;justify-content:center;width:100%;box-shadow:var(--card-shadow);border-top-left-radius:10px;border-top-right-radius:10px}.tabs .tab-item[data-v-40977f35]:nth-child(1){border-top-left-radius:10px}.tabs .tab-item[data-v-40977f35]:nth-last-child(1){border-top-right-radius:10px}.tab-item[data-v-40977f35]{flex:1;cursor:pointer;user-select:none;-webkit-user-select:none;padding:0;font-size:1.2em;font-weight:700;display:flex;align-content:center;justify-content:center;line-height:40px;box-sizing:border-box;border-bottom:2px solid transparent}.tab-item[data-v-40977f35]:hover{background-color:var(--hover-background-color)}.tab-item.active[data-v-40977f35]{border-bottom:2px solid var(--button-color);background-color:var(--active-background-color);color:var(--primary-color)}.tab-item.inactive[data-v-40977f35]{border-bottom:2px solid transparent;background-color:var(--inactive-background-color);color:var(--inactive-primary-color)}.layout[data-v-40977f35]{box-sizing:border-box;padding:20px;margin:auto;max-width:800px;height:100vh;display:flex;flex-direction:column;white-space:nowrap;font-family:var(--main-font);font-size:var(--main-font-size)}.header[data-v-40977f35]{display:flex;flex-direction:row;padding:0;margin:0 0 20px;width:100%;justify-content:space-between;align-items:center;white-space:nowrap;gap:10px}@media screen and (max-width: 660px){.header[data-v-40977f35]{flex-direction:column;margin-bottom:10px}}.header>div[data-v-40977f35]:first-child{display:flex;align-items:center;justify-content:center;flex-direction:row}.header>div:first-child .description[data-v-40977f35]{display:flex;flex-direction:column;margin:0 20px;gap:4px}.header>div:first-child .description>span[data-v-40977f35]{font-size:1.6rem;font-weight:var(--main-font-weight-bold);padding:0;text-shadow:0 0 4px var(--none-interactive-background-color)}.header>div:first-child .description a[data-v-40977f35]{font-size:1rem;font-weight:var(--main-font-weight);padding:0}.header>div[data-v-40977f35]:last-child{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:8px}.top-content[data-v-40977f35]{font-family:var(--main-font);display:flex;justify-content:center;align-items:center;font-size:1.2em;width:100%;margin-bottom:20px;gap:10px;flex-direction:row;box-sizing:border-box}@media screen and (max-width: 660px){.top-content[data-v-40977f35]{flex-direction:column;gap:4px;padding:0 20px}}.top-content-col[data-v-40977f35]{background-color:var(--card-background-color);box-shadow:var(--card-shadow);border-radius:8px;padding:20px 30px;gap:10px;display:flex;flex-direction:column;align-items:center;justify-content:space-between;margin:0;flex:1}@media screen and (max-width: 660px){.top-content-col[data-v-40977f35]{flex-direction:row;justify-content:space-between;padding:10px 20px;width:100%}}.card-title[data-v-40977f35]{margin:0;padding:0;text-align:center;box-sizing:border-box}.total-number[data-v-40977f35]{font-size:2em;font-weight:var(--main-bold-font-weight);margin:0;padding:0;text-align:center;box-sizing:border-box;color:var(--color-red)}.body[data-v-40977f35]{overflow:hidden;border-bottom-left-radius:10px;border-bottom-right-radius:10px;padding:10px;box-sizing:border-box;flex-direction:column;align-items:center;box-shadow:var(--card-shadow);background-color:var(--card-background-color)}.table-header[data-v-40977f35]{display:flex;flex-direction:row;width:100%;margin:0;border-bottom:1px solid var(--border-color);font-weight:var(--main-bold-font-weight);font-size:1.1rem;padding:10px 20px 10px 10px;box-sizing:border-box}.table-header .header-host[data-v-40977f35]{flex-grow:1}.table-header .header-count[data-v-40977f35]{text-align:center}.table-header .header[data-v-40977f35]{text-align:center;width:155px}.updated-at-col[data-v-40977f35]{width:150px;text-align:center}.table-body>.updated-at-col[data-v-40977f35]{font-family:Courier New,Courier,monospace;letter-spacing:-1px;font-size:1rem}@media screen and (max-width: 660px){.hidden-small[data-v-40977f35]{display:none}}.table-body[data-v-40977f35]{overflow-x:hidden;overflow-y:scroll;width:100%;margin:0;padding:0;box-sizing:border-box}.row[data-v-40977f35]{display:flex;flex-direction:row;align-items:center;justify-content:space-between;width:100%;margin:0;box-sizing:border-box;gap:10px}.row[data-v-40977f35]:hover{background-color:var(--active-background-color)}.clickable[data-v-40977f35]{cursor:pointer}.clickable[data-v-40977f35]:hover{text-decoration:underline;color:var(--link-color)}.host-img[data-v-40977f35]{border-radius:10%;border:1px solid var(--light-border-color)}.row-host[data-v-40977f35]{flex-grow:1;display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:8px;text-decoration:none;text-overflow:ellipsis;overflow:hidden}.row-host span[data-v-40977f35]{text-overflow:ellipsis;overflow:hidden}.data-row[data-v-40977f35]{padding:8px}.btn[data-v-40977f35]{width:30px;height:24px;line-height:23px;cursor:pointer;user-select:none;-webkit-user-select:none;padding:0;border-radius:.3rem;font-size:1em;font-weight:700;display:flex;align-content:center;justify-content:center;box-sizing:border-box;border:1px solid var(--border-color);color:var(--button-color);background-color:var(--button-background-color)}.btn[data-v-40977f35]:hover{border:1px solid var(--hover-border-color);background-color:var(--hover-background-color)}.add-btn[data-v-40977f35]{font-weight:400;padding:0 20px;color:var(--primary-color)}.delete-btn[data-v-40977f35]:hover{color:red!important}.shadow-text[data-v-40977f35]{text-shadow:0 0 1px var(--none-interactive-background-color)}
@@ -0,0 +1 @@
1
+ .toggle-button[data-v-ee74a099]{width:33.4px;height:20px;background-color:var(--border-color);border-radius:15px;position:relative;cursor:pointer}.toggle-button[data-v-ee74a099]:hover{background-color:var(--hover-border-color)}.toggle-button .circle[data-v-ee74a099]{width:20px;height:20px;border-radius:50%;position:absolute;transition:all .3s ease}.toggle-button .on[data-v-ee74a099]{top:0;right:0;background-color:var(--button-color)}.toggle-button .off[data-v-ee74a099]{background-color:var(--primary-color);top:0;left:0}main[data-v-053380fd]{padding:20px 10px;margin:0;display:flex;flex-direction:column;gap:20px}.content[data-v-053380fd]{gap:30px;display:flex;flex-direction:column}.sub-content[data-v-053380fd]{display:flex;flex-direction:column}.detected-list[data-v-053380fd]{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:10px;margin:10px 0;padding:0 10px}.detected-list .tag[data-v-053380fd]{padding:.25em .4em 3.5px;border-radius:.25rem;font-weight:600;font-size:1rem;width:60px;text-align:center}.detected-list .d-audio[data-v-053380fd],.detected-list .d-webgl[data-v-053380fd],.detected-list .d-font[data-v-053380fd]{background-color:#ffe081;color:#343a40}.detected-list .d-canvas[data-v-053380fd]{background-color:#db4a58;color:#fff}.btn[data-v-053380fd]{font-weight:var(--button-font-weight);font-family:var(--main-font);display:flex;flex-direction:row;align-items:center;justify-content:center;padding:8px;cursor:pointer;border-radius:4px;color:var(--button-color);border:1px solid var(--border-color);background-color:var(--primary-background-color)}.btn[data-v-053380fd]:hover{border:1px solid var(--hover-border-color);background-color:var(--hover-background-color)}.option-icon[data-v-053380fd]{font-size:2rem;margin-right:4px;padding-bottom:4px;line-height:12px}.reload-btn[data-v-053380fd]{width:50px;height:35px;display:flex;justify-content:center;align-items:flex-end}.reload-btn span[data-v-053380fd]{font-size:3rem;vertical-align:text-top;line-height:26px}.line-title[data-v-053380fd]{font-size:1.2rem;font-weight:600;font-variant:small-caps}.canvas[data-v-053380fd]{cursor:pointer;max-width:300px;max-height:200px;border:1px solid var(--border-color);background-color:#fff;image-rendering:pixelated}.line[data-v-053380fd]{display:flex;flex:1;width:100%;align-items:center;gap:10px;padding:2px}.line.interactive[data-v-053380fd]:hover{background-color:var(--hover-background-color)}.space-between[data-v-053380fd]{justify-content:space-between}.host-line[data-v-053380fd]{padding:10px;box-sizing:border-box}.site-icon[data-v-053380fd]{font-size:1rem;font-weight:600;border-radius:10%;width:16px;min-height:16px;text-align:center;margin-right:4px;box-shadow:0 0 0 1px var(--light-border-color)}.site-icon.detected[data-v-053380fd]{background-color:red}.site-domain[data-v-053380fd]{font-size:1.1rem;word-wrap:break-word;white-space:normal;flex:1;display:flex;flex-direction:row;align-items:center;justify-content:flex-start}.site-domain span[data-v-053380fd]{overflow:auto;max-width:215px}.header[data-v-053380fd]{display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:0;margin:0}.header .title[data-v-053380fd]{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;margin-left:10px;flex:1}.header .description[data-v-053380fd]{white-space:nowrap;font-size:1.3rem;font-weight:600;margin-bottom:4px;min-width:180px}.header .description2[data-v-053380fd]{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:10px}.refresh-btn[data-v-053380fd]{margin:10px 0;padding:20px}.zoom-in-effect[data-v-053380fd]{animation:zoom-in-053380fd .3s ease-in-out}@keyframes zoom-in-053380fd{0%{transform:scale(.8)}70%{transform:scale(1.1)}to{transform:scale(1)}}.total-detected[data-v-053380fd]{font-size:2rem;font-weight:600;margin:10px;padding:10px;border-radius:4px;border:1px solid var(--border-color);background-color:var(--primary-background-color);text-align:center;box-sizing:border-box;color:var(--color-red)}.canvas-list[data-v-053380fd]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:15px;margin:10px 0;padding:0 10px}.canvas-item[data-v-053380fd]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0 10px;gap:10px}.canvas-desc[data-v-053380fd]{font-weight:400;width:300px;display:flex;flex-direction:row;align-items:center;justify-content:space-between}
@@ -0,0 +1,83 @@
1
+ {
2
+ "update_url": "https://clients2.google.com/service/update2/crx",
3
+
4
+ "name": "__MSG_ExtensionName__",
5
+ "description": "__MSG_ExtensionDescription__",
6
+ "version": "1.0.5",
7
+ "manifest_version": 3,
8
+ "icons": {
9
+ "16": "img/icon-16.png",
10
+ "32": "img/icon-32.png",
11
+ "48": "img/icon-48.png",
12
+ "128": "img/icon-128.png"
13
+ },
14
+ "action": {
15
+ "default_popup": "popup.html",
16
+ "default_icon": "img/icon-24.png"
17
+ },
18
+ "options_page": "options.html",
19
+ "background": {
20
+ "service_worker": "./assets/chunk-b4410958.js",
21
+ "type": "module"
22
+ },
23
+ "content_scripts": [
24
+ {
25
+ "js": [
26
+ "assets/chunk-16ff15da.js"
27
+ ],
28
+ "all_frames": true,
29
+ "match_about_blank": true,
30
+ "match_origin_as_fallback": true,
31
+ "world": "ISOLATED",
32
+ "matches": [
33
+ "<all_urls>"
34
+ ],
35
+ "run_at": "document_start"
36
+ },
37
+ {
38
+ "js": [
39
+ "assets/chunk-7ce85519.js"
40
+ ],
41
+ "all_frames": true,
42
+ "match_about_blank": true,
43
+ "match_origin_as_fallback": true,
44
+ "world": "MAIN",
45
+ "matches": [
46
+ "<all_urls>"
47
+ ],
48
+ "run_at": "document_start"
49
+ },
50
+ {
51
+ "js": [
52
+ "assets/chunk-aaea1190.js"
53
+ ],
54
+ "all_frames": true,
55
+ "match_about_blank": true,
56
+ "match_origin_as_fallback": true,
57
+ "world": "ISOLATED",
58
+ "matches": [
59
+ "<all_urls>"
60
+ ],
61
+ "run_at": "document_start"
62
+ }
63
+ ],
64
+ "permissions": [
65
+ "storage",
66
+ "activeTab",
67
+ "tabs"
68
+ ],
69
+ "default_locale": "en",
70
+ "web_accessible_resources": [
71
+ {
72
+ "matches": [
73
+ "<all_urls>"
74
+ ],
75
+ "resources": [
76
+ "assets/chunk-16ff15da.js",
77
+ "assets/chunk-7ce85519.js",
78
+ "assets/chunk-aaea1190.js"
79
+ ],
80
+ "use_dynamic_url": true
81
+ }
82
+ ]
83
+ }
@@ -0,0 +1,17 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <link rel="icon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAShSURBVHgBrVc7aBRRFL2IRQqLBS0ttrCwjGBpkcLCwmILCwshKSwsLLawsBCyhaBgMYla2MgoCpZrYT9gY6GwikUE0VlI8INgouI/8Lznft7OvNnNRs2Dx2Zm3rx77jnn3nkh2uYIRC2eXZ4Fz3WeJc/5CWsynm3aiYGNeOY8Q5ibC2FxMYSiCCHLAoAka/thdlbXYb2CnaN/HfzyYgyMoNWR5xIkWR/CYKDPyzKEhQUHkv8VI5Z1EdrtemD8jU1bLdn4O9HF6ntfiR7JO7dujd6pA+luN3gpVK6vjwIzC7+JvgyJ7j4kOvGE6Aiv6/BcsN9ZvrdvjfX/RvS2AaTXa0g2LnhLgnc6oxe7XUG/SrRkQTMzYZAgPjVD3M957bGXnG0E0u8LAE5gdRqAXF7wzDXr1SeaYRb9gA19TXW4RKb7B6LDK0Q3wBzma6JTWwVfEG2hmWWO4BtER4WV1A9YByAwI37dfE3ds54acM+07EspMdML9IFKuT8/3/ADNseaT0QvhWqXpKo7QKk85ZblKNljoaNnJpi+M7GuMQCAswKV8EPBG74jOsnOP41fXNd0rwJBYsrG4iQAhbgUg4NIOTkol4SBmB+ORD9AMrABkNZ4+PlBAJRryODv41fZ6KXB27LYF/KmkXroa5LU/DCuMSWNB8Z9DwarbCwtCcgUQCfSf/++6GqBdFNM/hs010oUkoA1XKNUm5mWkPEN0QXIJqA5uc9El1IAS3FT3ugn0YPaPWbhF9HzmiTmEwb6GI1HMk0px7dCO2YGf2AdWOGQu1MA/ai/urv3g+h6pJmDsiRnZR0CYPC9V7yGwd6x5gPtO41WXGFj4rdADAhtDABcDSNBc2SFTXnZjGyCejdJADR2OdP+C9G92IrBYKWnGIjZqQBAtT2a4dlyyiYC8P6A+1oN0P5KZMMblIIo0vi7eG7QxoZetVpkQTF+2LdhPy6YkTV69oyJbMs6vt67ORyu0aFDRLdv6/3BgPPP2vuIzm0SPV0bDpfl+fKyx2s1GBC9XVtFmVvGmWUqDYRpPRerBUzwfYZ9qWQmhHJk36yEAa+5jG7JrAzQQ8ZJ0I3dTg8ZpWWu9MGICqIjvgBIDDOoUy6VANe7nAChkpZs4gOUut8HDCcBoCWmZnZU3O1uVpMNUE5S09W6R7kxEFQEgMTnPvAd2aoKMJjClcSIOU470WSYmm3+gMEJE2m5Wbac0OkoiRt0GghxtMswifJKTaMr1j48zoZ9dABemlcTxCCMMyKOUkKdZ2R1C9PIfW9UlSB+8ona+7t6Wg5s7ms1EJhapvlYFj4Sna9Rrov7oFwyTb9s6ot1VIe8C1AO1E7MMJ+w6FVmLXzS2WC3NA//BowoL/hYdVyywbV7xQNZvzdvKFtWpjA4piSA++Yl7pgnaFJFxMUOYtTdzozVfQQ0v8lnQDwHEHwrfN9YPXqKWoHkNGnExanummkfB80hH81rlI+oRa9HC2+c/65yRy2U+hmaNjwTKa2m7qIhGEkpBzjaqQEDRYdX2ai0awBFiwXYF8l/STs1ZnAWiLrDgPwL11fWoMVOp/V/geBohWxx4NzJgH8AW8e0N1HAJD0AAAAASUVORK5CYII=" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
+ <title></title>
8
+ <script type="module" crossorigin src="/assets/chunk-dfed3562.js"></script>
9
+ <link rel="modulepreload" crossorigin href="/assets/chunk-3a7b59dd.js">
10
+ <link rel="stylesheet" href="/assets/debounce-09920c81.css">
11
+ <link rel="stylesheet" href="/assets/options-fe2fb5aa.css">
12
+ </head>
13
+ <body>
14
+ <div id="app"></div>
15
+
16
+ </body>
17
+ </html>
@@ -0,0 +1,23 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <style>
7
+ body {
8
+ width: 340px;
9
+ height: 220px;
10
+ padding: 10px;
11
+ margin: 0;
12
+ }
13
+ </style>
14
+ <script type="module" crossorigin src="/assets/chunk-1a1456ec.js"></script>
15
+ <link rel="modulepreload" crossorigin href="/assets/chunk-3a7b59dd.js">
16
+ <link rel="stylesheet" href="/assets/debounce-09920c81.css">
17
+ <link rel="stylesheet" href="/assets/popup-1886d2ef.css">
18
+ </head>
19
+ <body>
20
+ <div id="app"></div>
21
+
22
+ </body>
23
+ </html>
package/dist/index.d.ts CHANGED
@@ -1,4 +1,7 @@
1
1
  import CDPCrawler from "./crawler.js";
2
+ import CdpPage from "./page.js";
2
3
  export default CDPCrawler;
3
4
  export { createCDPRouter } from "./crawler.js";
5
+ export { GotoOptions } from "./page.js";
6
+ export { CdpPage };
4
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,cAAc,CAAC;AAEtC,eAAe,UAAU,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,eAAe,UAAU,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,6 @@
1
1
  import CDPCrawler from "./crawler.js";
2
+ import CdpPage from "./page.js";
2
3
  export default CDPCrawler;
3
4
  export { createCDPRouter } from "./crawler.js";
5
+ export { CdpPage };
4
6
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,cAAc,CAAC;AAEtC,eAAe,UAAU,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,eAAe,UAAU,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,OAAO,EAAE,CAAC"}
package/dist/page.d.ts CHANGED
@@ -45,11 +45,21 @@ export default class CdpPage extends EventEmitter {
45
45
  private initialize;
46
46
  url(): Promise<string>;
47
47
  goto(url: string, options?: GotoOptions): Promise<void>;
48
+ /**
49
+ * Reloads the current page.
50
+ * @param options - Options for waiting and timeout, similar to goto.
51
+ */
52
+ reload(options?: GotoOptions): Promise<void>;
48
53
  evaluate<T>(pageFunction: Function | string, ...args: any[]): Promise<T>;
49
54
  click(selector: string): Promise<void>;
50
55
  type(selector: string, text: string, options?: {
51
56
  delay?: number;
52
57
  }): Promise<void>;
58
+ /**
59
+ * Deletes (clears) the value of an input field specified by selector.
60
+ * @param selector - The CSS selector for the input element.
61
+ */
62
+ deleteInput(selector: string): Promise<void>;
53
63
  setViewport(viewport: Viewport): Promise<void>;
54
64
  setUserAgent(userAgent: string): Promise<void>;
55
65
  setExtraHTTPHeaders(headers: Record<string, string>): Promise<void>;
@@ -60,6 +70,7 @@ export default class CdpPage extends EventEmitter {
60
70
  screenshot(options?: {
61
71
  path?: string;
62
72
  fullPage?: boolean;
73
+ format?: 'png' | 'jpeg';
63
74
  }): Promise<Buffer>;
64
75
  content(): Promise<string>;
65
76
  toCheerio(): Promise<cheerio.CheerioAPI>;
@@ -98,5 +109,12 @@ export default class CdpPage extends EventEmitter {
98
109
  */
99
110
  private _enableDomain;
100
111
  reconnectSession(retries?: number): Promise<void>;
112
+ /**
113
+ * Checks if the element specified by selector is visible (not display:none and not visibility:hidden).
114
+ * The selector should be the root item which can be hidden, otherwise this function could return a false positive.
115
+ * @param selector - The CSS selector for the element.
116
+ * @returns true if the element is visible, false otherwise.
117
+ */
118
+ isVisible(selector: string): Promise<boolean>;
101
119
  }
102
120
  //# sourceMappingURL=page.d.ts.map
@@ -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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"}