@thumbmarkjs/thumbmarkjs 0.14.0 → 0.14.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -5
- package/dist/thumbmark.cjs.js +1 -1
- package/dist/thumbmark.esm.d.ts +26 -0
- package/dist/thumbmark.esm.js +1 -1
- package/dist/thumbmark.umd.js +1 -1
- package/package.json +6 -6
- package/dist/types/components/audio/audio.d.ts +0 -1
- package/dist/types/components/canvas/canvas.d.ts +0 -2
- package/dist/types/components/fonts/fonts.d.ts +0 -2
- package/dist/types/components/hardware/hardware.d.ts +0 -1
- package/dist/types/components/index.d.ts +0 -16
- package/dist/types/components/locales/locales.d.ts +0 -1
- package/dist/types/components/math/math.d.ts +0 -1
- package/dist/types/components/permissions/permissions.d.ts +0 -2
- package/dist/types/components/plugins/plugins.d.ts +0 -2
- package/dist/types/components/screen/screen.d.ts +0 -1
- package/dist/types/components/system/browser.d.ts +0 -6
- package/dist/types/components/system/system.d.ts +0 -1
- package/dist/types/components/webgl/webgl.d.ts +0 -1
- package/dist/types/factory.d.ts +0 -30
- package/dist/types/fingerprint/functions.d.ts +0 -6
- package/dist/types/fingerprint/options.d.ts +0 -8
- package/dist/types/index.d.ts +0 -5
- package/dist/types/utils/commonPixels.d.ts +0 -1
- package/dist/types/utils/ephemeralIFrame.d.ts +0 -4
- package/dist/types/utils/getMostFrequent.d.ts +0 -5
- package/dist/types/utils/hash.d.ts +0 -1
- package/dist/types/utils/imageDataToDataURL.d.ts +0 -1
- package/dist/types/utils/raceAll.d.ts +0 -9
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@ ThumbmarkJS is the world's second best browser fingerprinting JavaScript library
|
|
|
6
6
|
|
|
7
7
|
ThumbmarkJS is open source (MIT).
|
|
8
8
|
|
|
9
|
-
🙏 Please don't do evil. ThumbmarkJS is meant to be used for good.
|
|
9
|
+
🙏 Please don't do evil. ThumbmarkJS is meant to be used for good. Use this to prevent scammers and spammers for example. If you see this library being used for evil, contact me.
|
|
10
10
|
|
|
11
11
|
## Demo page
|
|
12
12
|
|
|
@@ -19,16 +19,14 @@ The library works very well to distinguish common browsers.
|
|
|
19
19
|
Transpiled bundles are available now on [JSDelivr](https://www.jsdelivr.com/).
|
|
20
20
|
|
|
21
21
|
Supported module formats:
|
|
22
|
-
- IIFE (use this in browser): https://cdn.jsdelivr.net/npm/@thumbmarkjs/thumbmarkjs/dist/thumbmark.iife.js
|
|
23
22
|
- UMD: https://cdn.jsdelivr.net/npm/@thumbmarkjs/thumbmarkjs/dist/thumbmark.umd.js
|
|
24
23
|
- CommonJS: https://cdn.jsdelivr.net/npm/@thumbmarkjs/thumbmarkjs/dist/thumbmark.cjs.js
|
|
25
24
|
- ESM: https://cdn.jsdelivr.net/npm/@thumbmarkjs/thumbmarkjs/dist/thumbmark.esm.js
|
|
26
|
-
- AMD: https://cdn.jsdelivr.net/npm/@thumbmarkjs/thumbmarkjs/dist/thumbmark.amd.js
|
|
27
25
|
|
|
28
26
|
### And on the web page:
|
|
29
27
|
|
|
30
28
|
```javascript
|
|
31
|
-
<script src="https://cdn.jsdelivr.net/npm/@thumbmarkjs/thumbmarkjs/dist/thumbmark.
|
|
29
|
+
<script src="https://cdn.jsdelivr.net/npm/@thumbmarkjs/thumbmarkjs/dist/thumbmark.umd.js"></script>
|
|
32
30
|
<script>
|
|
33
31
|
ThumbmarkJS.getFingerprint().then(
|
|
34
32
|
function(fp) {
|
|
@@ -40,7 +38,7 @@ ThumbmarkJS.getFingerprint().then(
|
|
|
40
38
|
<!-- or -->
|
|
41
39
|
|
|
42
40
|
<script>
|
|
43
|
-
import('https://cdn.jsdelivr.net/npm/@thumbmarkjs/thumbmarkjs/dist/thumbmark.
|
|
41
|
+
import('https://cdn.jsdelivr.net/npm/@thumbmarkjs/thumbmarkjs/dist/thumbmark.umd.js')
|
|
44
42
|
.then(() => {
|
|
45
43
|
ThumbmarkJS.getFingerprint().then((fp) => { console.log(fp)})
|
|
46
44
|
})
|
|
@@ -52,6 +50,19 @@ You can also call `ThumbmarkJS.getFingerprintData()` to get a full JSON object w
|
|
|
52
50
|
You can also get any previous version from the CDN by replacing `latest` with the version number. Currently the URL would be
|
|
53
51
|
`https://cdn.thumbmarkjs.com/0.13.0/Thumbmark.js`
|
|
54
52
|
|
|
53
|
+
## Options
|
|
54
|
+
|
|
55
|
+
You can use the `setOption` method to change the behavior of the library. Currently it takes only one option.
|
|
56
|
+
|
|
57
|
+
| option | type | example | what it does |
|
|
58
|
+
| - | - | - | - |
|
|
59
|
+
| exclude | string[] | ['webgl', 'system.browser.version'] | removes components from the fingerprint hash. An excluded top-level component improves performance. |
|
|
60
|
+
|
|
61
|
+
example usage:
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
ThumbmarkJS.setOption('exclude', ['webgl', 'system.browser.version])
|
|
65
|
+
```
|
|
55
66
|
|
|
56
67
|
## Install with NPM
|
|
57
68
|
|
package/dist/thumbmark.cjs.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";function e(e,r,n,t){return new(n||(n=Promise))((function(o,a){function i(e){try{u(t.next(e))}catch(e){a(e)}}function c(e){try{u(t.throw(e))}catch(e){a(e)}}function u(e){var r;e.done?o(e.value):(r=e.value,r instanceof n?r:new n((function(e){e(r)}))).then(i,c)}u((t=t.apply(e,r||[])).next())}))}function r(e,r){var n,t,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function c(c){return function(u){return function(c){if(n)throw new TypeError("Generator is already executing.");for(;a&&(a=0,c[0]&&(i=0)),i;)try{if(n=1,t&&(o=2&c[0]?t.return:c[0]?t.throw||((o=t.return)&&o.call(t),0):t.next)&&!(o=o.call(t,c[1])).done)return o;switch(t=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return i.label++,{value:c[1],done:!1};case 5:i.label++,t=c[1],c=[0];continue;case 7:c=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==c[0]&&2!==c[0])){i=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){i.label=c[1];break}if(6===c[0]&&i.label<o[1]){i.label=o[1],o=c;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(c);break}o[2]&&i.ops.pop(),i.trys.pop();continue}c=r.call(e,i)}catch(e){c=[6,e],t=0}finally{n=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,u])}}}"function"==typeof SuppressedError&&SuppressedError;var n={exclude:[]};var t={},o={timeout:"true"},a=function(e,r){"undefined"!=typeof window&&(t[e]=r)},i=function(){return Object.fromEntries(Object.entries(t).filter((function(e){var r,t=e[0];return!(null===(r=null==n?void 0:n.exclude)||void 0===r?void 0:r.includes(t))})).map((function(e){return[e[0],(0,e[1])()]})))},c=3432918353,u=461845907,s=3864292196,l=2246822507,d=3266489909;function f(e,r){return e<<r|e>>>32-r}function h(e,r){void 0===r&&(r=0);for(var n=r,t=0,o=3&e.length,a=e.length-o,i=0;i<a;)t=255&e.charCodeAt(i)|(255&e.charCodeAt(++i))<<8|(255&e.charCodeAt(++i))<<16|(255&e.charCodeAt(++i))<<24,++i,t=f(t=Math.imul(t,c),15),n=f(n^=t=Math.imul(t,u),13),n=Math.imul(n,5)+s;switch(t=0,o){case 3:t^=(255&e.charCodeAt(i+2))<<16;case 2:t^=(255&e.charCodeAt(i+1))<<8;case 1:t^=255&e.charCodeAt(i),t=f(t=Math.imul(t,c),15),n^=t=Math.imul(t,u)}return((n=function(e){return e^=e>>>16,e=Math.imul(e,l),e^=e>>>13,e=Math.imul(e,d),e^e>>>16}(n^=e.length))>>>0).toString(36)}function m(e,r){return new Promise((function(n){setTimeout((function(){return n(r)}),e)}))}function v(e,r,n){return Promise.all(e.map((function(e){var t=performance.now();return Promise.race([e.then((function(e){return{value:e,elapsed:performance.now()-t}})),m(r,n).then((function(e){return{value:e,elapsed:performance.now()-t}}))])})))}function p(e,r,n){return Promise.all(e.map((function(e){return Promise.race([e,m(r,n)])})))}var g=1e3;function w(){return e(this,void 0,void 0,(function(){var e,t,a,c,u;return r(this,(function(r){switch(r.label){case 0:return r.trys.push([0,3,,4]),[4,i()];case 1:return e=r.sent(),t=Object.keys(e),[4,p(Object.values(e),g,o)];case 2:return a=r.sent(),c=a.filter((function(e){return void 0!==e})),u={},c.forEach((function(e,r){u[t[r]]=e})),[2,S(u,n.exclude||[])];case 3:throw r.sent();case 4:return[2]}}))}))}function S(e,r){var n={},t=function(t){if(e.hasOwnProperty(t)){var o=e[t];if("object"!=typeof o||Array.isArray(o))r.includes(t)||(n[t]=o);else{var a=S(o,r.map((function(e){return e.startsWith(t+".")?e.slice(t.length+1):e})));Object.keys(a).length>0&&(n[t]=a)}}};for(var o in e)t(o);return n}function y(e){for(var r=0,n=0;n<e.length;++n)r+=Math.abs(e[n]);return r}function b(e,r,n){for(var t=[],o=0;o<e[0].data.length;o++){for(var a=[],i=0;i<e.length;i++)a.push(e[i].data[o]);t.push(P(a))}var c=new Uint8ClampedArray(t);return new ImageData(c,r,n)}function P(e){if(0===e.length)return 0;for(var r={},n=0,t=e;n<t.length;n++){r[a=t[n]]=(r[a]||0)+1}var o=e[0];for(var a in r)r[a]>r[o]&&(o=parseInt(a,10));return o}function E(){if("undefined"==typeof navigator)return{name:"unknown",version:"unknown"};for(var e=navigator.userAgent,r={Edg:"Edge",OPR:"Opera"},n=0,t=[/(?<name>Edge|Edg)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>(?:Chrome|Chromium|OPR|Opera|Vivaldi|Brave))\/(?<version>\d+(?:\.\d+)?)/,/(?<name>(?:Firefox|Waterfox|Iceweasel|IceCat))\/(?<version>\d+(?:\.\d+)?)/,/(?<name>Safari)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>MSIE|Trident|IEMobile).+?(?<version>\d+(?:\.\d+)?)/,/(?<name>[A-Za-z]+)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>SamsungBrowser)\/(?<version>\d+(?:\.\d+)?)/];n<t.length;n++){var o=t[n],a=e.match(o);if(a&&a.groups)return{name:r[a.groups.name]||a.groups.name,version:a.groups.version}}return{name:"unknown",version:"unknown"}}a("audio",(function(){return e(this,void 0,void 0,(function(){return r(this,(function(e){return[2,new Promise((function(e,r){try{var n=new(window.OfflineAudioContext||window.webkitOfflineAudioContext)(1,5e3,44100),t=n.createBufferSource(),o=n.createOscillator();o.frequency.value=1e3;var a,i=n.createDynamicsCompressor();i.threshold.value=-50,i.knee.value=40,i.ratio.value=12,i.attack.value=0,i.release.value=.2,o.connect(i),i.connect(n.destination),o.start(),n.oncomplete=function(r){a=r.renderedBuffer.getChannelData(0),e({sampleHash:y(a),oscillator:o.type,maxChannels:n.destination.maxChannelCount,channelCountMode:t.channelCountMode})},n.startRendering()}catch(e){console.error("Error creating audio fingerprint:",e),r(e)}}))]}))}))}));var M="SamsungBrowser"!==E().name?1:3,C=280,A=20;"Firefox"!=E().name&&a("canvas",(function(){return document.createElement("canvas").getContext("2d"),new Promise((function(e){var r=Array.from({length:M},(function(){return function(){var e=document.createElement("canvas"),r=e.getContext("2d");if(!r)return new ImageData(1,1);e.width=C,e.height=A;var n=r.createLinearGradient(0,0,e.width,e.height);n.addColorStop(0,"red"),n.addColorStop(1/6,"orange"),n.addColorStop(2/6,"yellow"),n.addColorStop(.5,"green"),n.addColorStop(4/6,"blue"),n.addColorStop(5/6,"indigo"),n.addColorStop(1,"violet"),r.fillStyle=n,r.fillRect(0,0,e.width,e.height);var t="Random Text WMwmil10Oo";r.font="23.123px Arial",r.fillStyle="black",r.fillText(t,-5,15),r.fillStyle="rgba(0, 0, 255, 0.5)",r.fillText(t,-3.3,17.7),r.beginPath(),r.moveTo(0,0),r.lineTo(2*e.width/7,e.height),r.strokeStyle="white",r.lineWidth=2,r.stroke();var o=r.getImageData(0,0,e.width,e.height);return o}()}));e({commonImageDataHash:h(b(r,C,A).data.toString()).toString()})}))}));var x=["Arial","Arial Black","Arial Narrow","Arial Rounded MT","Arimo","Archivo","Barlow","Bebas Neue","Bitter","Bookman","Calibri","Cabin","Candara","Century","Century Gothic","Comic Sans MS","Constantia","Courier","Courier New","Crimson Text","DM Mono","DM Sans","DM Serif Display","DM Serif Text","Dosis","Droid Sans","Exo","Fira Code","Fira Sans","Franklin Gothic Medium","Garamond","Geneva","Georgia","Gill Sans","Helvetica","Impact","Inconsolata","Indie Flower","Inter","Josefin Sans","Karla","Lato","Lexend","Lucida Bright","Lucida Console","Lucida Sans Unicode","Manrope","Merriweather","Merriweather Sans","Montserrat","Myriad","Noto Sans","Nunito","Nunito Sans","Open Sans","Optima","Orbitron","Oswald","Pacifico","Palatino","Perpetua","PT Sans","PT Serif","Poppins","Prompt","Public Sans","Quicksand","Rajdhani","Recursive","Roboto","Roboto Condensed","Rockwell","Rubik","Segoe Print","Segoe Script","Segoe UI","Sora","Source Sans Pro","Space Mono","Tahoma","Taviraj","Times","Times New Roman","Titillium Web","Trebuchet MS","Ubuntu","Varela Round","Verdana","Work Sans"],T=["monospace","sans-serif","serif"];function I(e,r){if(!e)throw new Error("Canvas context not supported");return e.font,e.font="72px ".concat(r),e.measureText("WwMmLli0Oo").width}function k(){var e,r=document.createElement("canvas"),n=null!==(e=r.getContext("webgl"))&&void 0!==e?e:r.getContext("experimental-webgl");return n&&"getParameter"in n?{vendor:(n.getParameter(n.VENDOR)||"").toString(),renderer:(n.getParameter(n.RENDERER)||"").toString(),version:(n.getParameter(n.VERSION)||"").toString(),shadingLanguageVersion:(n.getParameter(n.SHADING_LANGUAGE_VERSION)||"").toString()}:"undefined"}function R(){var e=new Float32Array(1),r=new Uint8Array(e.buffer);return e[0]=1/0,e[0]=e[0]-e[0],r[3]}function O(e,r){var n={};return r.forEach((function(r){var t=function(e){if(0===e.length)return null;var r={};e.forEach((function(e){var n=String(e);r[n]=(r[n]||0)+1}));var n=e[0],t=1;return Object.keys(r).forEach((function(e){r[e]>t&&(n=e,t=r[e])})),n}(e.map((function(e){return r in e?e[r]:void 0})).filter((function(e){return void 0!==e})));t&&(n[r]=t)})),n}"Firefox"!=E().name&&a("fonts",(function(){var n=this;return new Promise((function(t,o){try{!function(n){var t;e(this,void 0,void 0,(function(){var e,o,a;return r(this,(function(r){switch(r.label){case 0:return document.body?[3,2]:[4,(i=50,new Promise((function(e){return setTimeout(e,i,c)})))];case 1:return r.sent(),[3,0];case 2:if(e=document.createElement("iframe"),(o=e.style).setProperty("display","block","important"),o.setProperty("visibility","visible"),e.src="about:blank",document.body.appendChild(e),!(a=e.contentDocument||(null===(t=e.contentWindow)||void 0===t?void 0:t.document)))throw new Error("Iframe document is not accessible");return n({iframe:a}),setTimeout((function(){document.body.removeChild(e)}),0),[2]}var i,c}))}))}((function(o){var a=o.iframe;return e(n,void 0,void 0,(function(){var e,n,o,i;return r(this,(function(r){return"Hello, world!",e=a.createElement("canvas"),n=e.getContext("2d"),o=T.map((function(e){return I(n,e)})),i={},x.forEach((function(e){var r=I(n,e);o.includes(r)||(i[e]=r)})),t(i),[2]}))}))}))}catch(e){o({error:"unsupported"})}}))})),a("hardware",(function(){return new Promise((function(e,r){var n=void 0!==navigator.deviceMemory?navigator.deviceMemory:0,t=window.performance&&window.performance.memory?window.performance.memory:0;e({videocard:k(),architecture:R(),deviceMemory:n.toString()||"undefined",jsHeapSizeLimit:t.jsHeapSizeLimit||"undefined"})}))})),a("locales",(function(){return new Promise((function(e){e({languages:navigator.language,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone})}))}));var D=["accelerometer","accessibility","accessibility-events","ambient-light-sensor","background-fetch","background-sync","bluetooth","camera","clipboard-read","clipboard-write","device-info","display-capture","gyroscope","geolocation","local-fonts","magnetometer","microphone","midi","nfc","notifications","payment-handler","persistent-storage","push","speaker","storage-access","top-level-storage-access","window-management","query"];function F(){var e=[],r={"prefers-contrast":["high","more","low","less","forced","no-preference"],"any-hover":["hover","none"],"any-pointer":["none","coarse","fine"],pointer:["none","coarse","fine"],hover:["hover","none"],update:["fast","slow"],color:["8","16","256"],"inverted-colors":["inverted","none"],"prefers-reduced-motion":["reduce","no-preference"],"prefers-reduced-transparency":["reduce","no-preference"],scripting:["none","initial-only","enabled"],"forced-colors":["active","none"],"prefers-color-scheme":["dark","light","no-preference"]};return Object.keys(r).forEach((function(n){r[n].forEach((function(r){matchMedia("(".concat(n,": ").concat(r,")")).matches&&e.push("".concat(n,": ").concat(r))}))})),e}function B(){if("https:"===window.location.protocol&&"function"==typeof window.ApplePaySession)try{for(var e=window.ApplePaySession.supportsVersion,r=15;r>0;r--)if(e(r))return r}catch(e){return 0}return 0}a("permissions",(function(){return e(this,void 0,void 0,(function(){var n;return r(this,(function(t){return n=Array.from({length:3},(function(){return function(){return e(this,void 0,void 0,(function(){var e,n,t,o,a;return r(this,(function(r){switch(r.label){case 0:e={},n=0,t=D,r.label=1;case 1:if(!(n<t.length))return[3,6];o=t[n],r.label=2;case 2:return r.trys.push([2,4,,5]),[4,navigator.permissions.query({name:o})];case 3:return a=r.sent(),e[o]=a.state.toString(),[3,5];case 4:return r.sent(),[3,5];case 5:return n++,[3,1];case 6:return[2,e]}}))}))}()})),[2,Promise.all(n).then((function(e){return O(e,D)}))]}))}))})),a("plugins",(function(){var e=[];if(navigator.plugins)for(var r=0;r<navigator.plugins.length;r++){var n=navigator.plugins[r];e.push([n.name,n.filename,n.description].join("|"))}return new Promise((function(r){r({plugins:e})}))})),a("screen",(function(){return new Promise((function(e){e({is_touchscreen:navigator.maxTouchPoints>0,maxTouchPoints:navigator.maxTouchPoints,colorDepth:screen.colorDepth,mediaMatches:F()})}))})),a("system",(function(){return new Promise((function(e){var r=E();e({platform:window.navigator.platform,cookieEnabled:window.navigator.cookieEnabled,productSub:navigator.productSub,product:navigator.product,useragent:navigator.userAgent,browser:{name:r.name,version:r.version},applePayVersion:B()})}))}));var L,N="SamsungBrowser"!==E().name?1:3,_=null;"undefined"!=typeof document&&((L=document.createElement("canvas")).width=200,L.height=100,_=L.getContext("webgl")),a("webgl",(function(){return e(this,void 0,void 0,(function(){var e;return r(this,(function(r){try{if(!_)throw new Error("WebGL not supported");return e=Array.from({length:N},(function(){return function(){try{if(!_)throw new Error("WebGL not supported");var e="\n attribute vec2 position;\n void main() {\n gl_Position = vec4(position, 0.0, 1.0);\n }\n ",r="\n precision mediump float;\n void main() {\n gl_FragColor = vec4(0.812, 0.195, 0.553, 0.921); // Set line color\n }\n ",n=_.createShader(_.VERTEX_SHADER),t=_.createShader(_.FRAGMENT_SHADER);if(!n||!t)throw new Error("Failed to create shaders");if(_.shaderSource(n,e),_.shaderSource(t,r),_.compileShader(n),!_.getShaderParameter(n,_.COMPILE_STATUS))throw new Error("Vertex shader compilation failed: "+_.getShaderInfoLog(n));if(_.compileShader(t),!_.getShaderParameter(t,_.COMPILE_STATUS))throw new Error("Fragment shader compilation failed: "+_.getShaderInfoLog(t));var o=_.createProgram();if(!o)throw new Error("Failed to create shader program");if(_.attachShader(o,n),_.attachShader(o,t),_.linkProgram(o),!_.getProgramParameter(o,_.LINK_STATUS))throw new Error("Shader program linking failed: "+_.getProgramInfoLog(o));_.useProgram(o);for(var a=137,i=new Float32Array(4*a),c=2*Math.PI/a,u=0;u<a;u++){var s=u*c;i[4*u]=0,i[4*u+1]=0,i[4*u+2]=Math.cos(s)*(L.width/2),i[4*u+3]=Math.sin(s)*(L.height/2)}var l=_.createBuffer();_.bindBuffer(_.ARRAY_BUFFER,l),_.bufferData(_.ARRAY_BUFFER,i,_.STATIC_DRAW);var d=_.getAttribLocation(o,"position");_.enableVertexAttribArray(d),_.vertexAttribPointer(d,2,_.FLOAT,!1,0,0),_.viewport(0,0,L.width,L.height),_.clearColor(0,0,0,1),_.clear(_.COLOR_BUFFER_BIT),_.drawArrays(_.LINES,0,2*a);var f=new Uint8ClampedArray(L.width*L.height*4);return _.readPixels(0,0,L.width,L.height,_.RGBA,_.UNSIGNED_BYTE,f),new ImageData(f,L.width,L.height)}catch(e){return console.error(e),new ImageData(1,1)}finally{_&&(_.bindBuffer(_.ARRAY_BUFFER,null),_.useProgram(null),_.viewport(0,0,_.drawingBufferWidth,_.drawingBufferHeight),_.clearColor(0,0,0,0))}}()})),[2,{commonImageHash:h(b(e,L.width,L.height).data.toString()).toString()}]}catch(e){return[2,{webgl:"unsupported"}]}return[2]}))}))}));var G=function(e,r,n,t){for(var o=(n-r)/t,a=0,i=0;i<t;i++){a+=e(r+(i+.5)*o)}return a*o};a("math",(function(){return e(void 0,void 0,void 0,(function(){return r(this,(function(e){return[2,{acos:Math.acos(.5),asin:G(Math.asin,-1,1,97),atan:G(Math.atan,-1,1,97),cos:G(Math.cos,0,Math.PI,97),cosh:Math.cosh(9/7),e:Math.E,largeCos:Math.cos(1e20),largeSin:Math.sin(1e20),largeTan:Math.tan(1e20),log:Math.log(1e3),pi:Math.PI,sin:G(Math.sin,-Math.PI,Math.PI,97),sinh:G(Math.sinh,-9/7,7/9,97),sqrt:Math.sqrt(2),tan:G(Math.tan,0,2*Math.PI,97),tanh:G(Math.tanh,-9/7,7/9,97)}]}))}))})),exports.getFingerprint=function(){return e(this,void 0,void 0,(function(){var e;return r(this,(function(r){switch(r.label){case 0:return r.trys.push([0,2,,3]),[4,w()];case 1:return e=r.sent(),[2,h(JSON.stringify(e)).toString()];case 2:throw r.sent();case 3:return[2]}}))}))},exports.getFingerprintData=w,exports.getFingerprintPerformance=function(){return e(this,void 0,void 0,(function(){var e,n,t,a;return r(this,(function(r){switch(r.label){case 0:return r.trys.push([0,2,,3]),e=i(),n=Object.keys(e),[4,v(Object.values(e),g,o)];case 1:return t=r.sent(),a={elapsed:{}},t.forEach((function(e,r){a[n[r]]=e.value,a.elapsed[n[r]]=e.elapsed})),[2,a];case 2:throw r.sent();case 3:return[2]}}))}))},exports.getVersion=function(){return"0.14.0"},exports.setOption=function(e,r){if(!["exclude"].includes(e))throw new Error("Unknown option "+e);if(["exclude"].includes(e)&&(!Array.isArray(r)||!r.every((function(e){return"string"==typeof e}))))throw new Error("The value of the exclude must be an array of strings");n[e]=r};
|
|
1
|
+
"use strict";function e(e,r,n,t){return new(n||(n=Promise))((function(o,a){function i(e){try{u(t.next(e))}catch(e){a(e)}}function c(e){try{u(t.throw(e))}catch(e){a(e)}}function u(e){var r;e.done?o(e.value):(r=e.value,r instanceof n?r:new n((function(e){e(r)}))).then(i,c)}u((t=t.apply(e,r||[])).next())}))}function r(e,r){var n,t,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function c(c){return function(u){return function(c){if(n)throw new TypeError("Generator is already executing.");for(;a&&(a=0,c[0]&&(i=0)),i;)try{if(n=1,t&&(o=2&c[0]?t.return:c[0]?t.throw||((o=t.return)&&o.call(t),0):t.next)&&!(o=o.call(t,c[1])).done)return o;switch(t=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return i.label++,{value:c[1],done:!1};case 5:i.label++,t=c[1],c=[0];continue;case 7:c=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==c[0]&&2!==c[0])){i=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){i.label=c[1];break}if(6===c[0]&&i.label<o[1]){i.label=o[1],o=c;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(c);break}o[2]&&i.ops.pop(),i.trys.pop();continue}c=r.call(e,i)}catch(e){c=[6,e],t=0}finally{n=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,u])}}}"function"==typeof SuppressedError&&SuppressedError;var n={exclude:[]};var t={},o={timeout:"true"},a=function(e,r){"undefined"!=typeof window&&(t[e]=r)},i=function(){return Object.fromEntries(Object.entries(t).filter((function(e){var r,t=e[0];return!(null===(r=null==n?void 0:n.exclude)||void 0===r?void 0:r.includes(t))})).map((function(e){return[e[0],(0,e[1])()]})))},c=3432918353,u=461845907,s=3864292196,l=2246822507,d=3266489909;function f(e,r){return e<<r|e>>>32-r}function h(e,r){void 0===r&&(r=0);for(var n=r,t=0,o=3&e.length,a=e.length-o,i=0;i<a;)t=255&e.charCodeAt(i)|(255&e.charCodeAt(++i))<<8|(255&e.charCodeAt(++i))<<16|(255&e.charCodeAt(++i))<<24,++i,t=f(t=Math.imul(t,c),15),n=f(n^=t=Math.imul(t,u),13),n=Math.imul(n,5)+s;switch(t=0,o){case 3:t^=(255&e.charCodeAt(i+2))<<16;case 2:t^=(255&e.charCodeAt(i+1))<<8;case 1:t^=255&e.charCodeAt(i),t=f(t=Math.imul(t,c),15),n^=t=Math.imul(t,u)}return((n=function(e){return e^=e>>>16,e=Math.imul(e,l),e^=e>>>13,e=Math.imul(e,d),e^e>>>16}(n^=e.length))>>>0).toString(36)}function m(e,r){return new Promise((function(n){setTimeout((function(){return n(r)}),e)}))}function v(e,r,n){return Promise.all(e.map((function(e){var t=performance.now();return Promise.race([e.then((function(e){return{value:e,elapsed:performance.now()-t}})),m(r,n).then((function(e){return{value:e,elapsed:performance.now()-t}}))])})))}function p(e,r,n){return Promise.all(e.map((function(e){return Promise.race([e,m(r,n)])})))}var g=1e3;function w(){return e(this,void 0,void 0,(function(){var e,t,a,c,u;return r(this,(function(r){switch(r.label){case 0:return r.trys.push([0,3,,4]),[4,i()];case 1:return e=r.sent(),t=Object.keys(e),[4,p(Object.values(e),g,o)];case 2:return a=r.sent(),c=a.filter((function(e){return void 0!==e})),u={},c.forEach((function(e,r){u[t[r]]=e})),[2,S(u,n.exclude||[])];case 3:throw r.sent();case 4:return[2]}}))}))}function S(e,r){var n={},t=function(t){if(e.hasOwnProperty(t)){var o=e[t];if("object"!=typeof o||Array.isArray(o))r.includes(t)||(n[t]=o);else{var a=S(o,r.map((function(e){return e.startsWith(t+".")?e.slice(t.length+1):e})));Object.keys(a).length>0&&(n[t]=a)}}};for(var o in e)t(o);return n}function y(e){for(var r=0,n=0;n<e.length;++n)r+=Math.abs(e[n]);return r}function b(e,r,n){for(var t=[],o=0;o<e[0].data.length;o++){for(var a=[],i=0;i<e.length;i++)a.push(e[i].data[o]);t.push(P(a))}var c=new Uint8ClampedArray(t);return new ImageData(c,r,n)}function P(e){if(0===e.length)return 0;for(var r={},n=0,t=e;n<t.length;n++){r[a=t[n]]=(r[a]||0)+1}var o=e[0];for(var a in r)r[a]>r[o]&&(o=parseInt(a,10));return o}function E(){if("undefined"==typeof navigator)return{name:"unknown",version:"unknown"};for(var e=navigator.userAgent,r={Edg:"Edge",OPR:"Opera"},n=0,t=[/(?<name>Edge|Edg)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>(?:Chrome|Chromium|OPR|Opera|Vivaldi|Brave))\/(?<version>\d+(?:\.\d+)?)/,/(?<name>(?:Firefox|Waterfox|Iceweasel|IceCat))\/(?<version>\d+(?:\.\d+)?)/,/(?<name>Safari)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>MSIE|Trident|IEMobile).+?(?<version>\d+(?:\.\d+)?)/,/(?<name>[A-Za-z]+)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>SamsungBrowser)\/(?<version>\d+(?:\.\d+)?)/];n<t.length;n++){var o=t[n],a=e.match(o);if(a&&a.groups)return{name:r[a.groups.name]||a.groups.name,version:a.groups.version}}return{name:"unknown",version:"unknown"}}a("audio",(function(){return e(this,void 0,void 0,(function(){return r(this,(function(e){return[2,new Promise((function(e,r){try{var n=new(window.OfflineAudioContext||window.webkitOfflineAudioContext)(1,5e3,44100),t=n.createBufferSource(),o=n.createOscillator();o.frequency.value=1e3;var a,i=n.createDynamicsCompressor();i.threshold.value=-50,i.knee.value=40,i.ratio.value=12,i.attack.value=0,i.release.value=.2,o.connect(i),i.connect(n.destination),o.start(),n.oncomplete=function(r){a=r.renderedBuffer.getChannelData(0),e({sampleHash:y(a),oscillator:o.type,maxChannels:n.destination.maxChannelCount,channelCountMode:t.channelCountMode})},n.startRendering()}catch(e){console.error("Error creating audio fingerprint:",e),r(e)}}))]}))}))}));var M="SamsungBrowser"!==E().name?1:3,C=280,A=20;"Firefox"!=E().name&&a("canvas",(function(){return document.createElement("canvas").getContext("2d"),new Promise((function(e){var r=Array.from({length:M},(function(){return function(){var e=document.createElement("canvas"),r=e.getContext("2d");if(!r)return new ImageData(1,1);e.width=C,e.height=A;var n=r.createLinearGradient(0,0,e.width,e.height);n.addColorStop(0,"red"),n.addColorStop(1/6,"orange"),n.addColorStop(2/6,"yellow"),n.addColorStop(.5,"green"),n.addColorStop(4/6,"blue"),n.addColorStop(5/6,"indigo"),n.addColorStop(1,"violet"),r.fillStyle=n,r.fillRect(0,0,e.width,e.height);var t="Random Text WMwmil10Oo";r.font="23.123px Arial",r.fillStyle="black",r.fillText(t,-5,15),r.fillStyle="rgba(0, 0, 255, 0.5)",r.fillText(t,-3.3,17.7),r.beginPath(),r.moveTo(0,0),r.lineTo(2*e.width/7,e.height),r.strokeStyle="white",r.lineWidth=2,r.stroke();var o=r.getImageData(0,0,e.width,e.height);return o}()}));e({commonImageDataHash:h(b(r,C,A).data.toString()).toString()})}))}));var x=["Arial","Arial Black","Arial Narrow","Arial Rounded MT","Arimo","Archivo","Barlow","Bebas Neue","Bitter","Bookman","Calibri","Cabin","Candara","Century","Century Gothic","Comic Sans MS","Constantia","Courier","Courier New","Crimson Text","DM Mono","DM Sans","DM Serif Display","DM Serif Text","Dosis","Droid Sans","Exo","Fira Code","Fira Sans","Franklin Gothic Medium","Garamond","Geneva","Georgia","Gill Sans","Helvetica","Impact","Inconsolata","Indie Flower","Inter","Josefin Sans","Karla","Lato","Lexend","Lucida Bright","Lucida Console","Lucida Sans Unicode","Manrope","Merriweather","Merriweather Sans","Montserrat","Myriad","Noto Sans","Nunito","Nunito Sans","Open Sans","Optima","Orbitron","Oswald","Pacifico","Palatino","Perpetua","PT Sans","PT Serif","Poppins","Prompt","Public Sans","Quicksand","Rajdhani","Recursive","Roboto","Roboto Condensed","Rockwell","Rubik","Segoe Print","Segoe Script","Segoe UI","Sora","Source Sans Pro","Space Mono","Tahoma","Taviraj","Times","Times New Roman","Titillium Web","Trebuchet MS","Ubuntu","Varela Round","Verdana","Work Sans"],T=["monospace","sans-serif","serif"];function I(e,r){if(!e)throw new Error("Canvas context not supported");return e.font,e.font="72px ".concat(r),e.measureText("WwMmLli0Oo").width}function k(){var e,r=document.createElement("canvas"),n=null!==(e=r.getContext("webgl"))&&void 0!==e?e:r.getContext("experimental-webgl");return n&&"getParameter"in n?{vendor:(n.getParameter(n.VENDOR)||"").toString(),renderer:(n.getParameter(n.RENDERER)||"").toString(),version:(n.getParameter(n.VERSION)||"").toString(),shadingLanguageVersion:(n.getParameter(n.SHADING_LANGUAGE_VERSION)||"").toString()}:"undefined"}function R(){var e=new Float32Array(1),r=new Uint8Array(e.buffer);return e[0]=1/0,e[0]=e[0]-e[0],r[3]}function O(e,r){var n={};return r.forEach((function(r){var t=function(e){if(0===e.length)return null;var r={};e.forEach((function(e){var n=String(e);r[n]=(r[n]||0)+1}));var n=e[0],t=1;return Object.keys(r).forEach((function(e){r[e]>t&&(n=e,t=r[e])})),n}(e.map((function(e){return r in e?e[r]:void 0})).filter((function(e){return void 0!==e})));t&&(n[r]=t)})),n}"Firefox"!=E().name&&a("fonts",(function(){var n=this;return new Promise((function(t,o){try{!function(n){var t;e(this,void 0,void 0,(function(){var e,o,a;return r(this,(function(r){switch(r.label){case 0:return document.body?[3,2]:[4,(i=50,new Promise((function(e){return setTimeout(e,i,c)})))];case 1:return r.sent(),[3,0];case 2:if(e=document.createElement("iframe"),(o=e.style).setProperty("display","block","important"),o.setProperty("visibility","visible"),e.src="about:blank",document.body.appendChild(e),!(a=e.contentDocument||(null===(t=e.contentWindow)||void 0===t?void 0:t.document)))throw new Error("Iframe document is not accessible");return n({iframe:a}),setTimeout((function(){document.body.removeChild(e)}),0),[2]}var i,c}))}))}((function(o){var a=o.iframe;return e(n,void 0,void 0,(function(){var e,n,o,i;return r(this,(function(r){return"Hello, world!",e=a.createElement("canvas"),n=e.getContext("2d"),o=T.map((function(e){return I(n,e)})),i={},x.forEach((function(e){var r=I(n,e);o.includes(r)||(i[e]=r)})),t(i),[2]}))}))}))}catch(e){o({error:"unsupported"})}}))})),a("hardware",(function(){return new Promise((function(e,r){var n=void 0!==navigator.deviceMemory?navigator.deviceMemory:0,t=window.performance&&window.performance.memory?window.performance.memory:0;e({videocard:k(),architecture:R(),deviceMemory:n.toString()||"undefined",jsHeapSizeLimit:t.jsHeapSizeLimit||"undefined"})}))})),a("locales",(function(){return new Promise((function(e){e({languages:navigator.language,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone})}))}));var D=["accelerometer","accessibility","accessibility-events","ambient-light-sensor","background-fetch","background-sync","bluetooth","camera","clipboard-read","clipboard-write","device-info","display-capture","gyroscope","geolocation","local-fonts","magnetometer","microphone","midi","nfc","notifications","payment-handler","persistent-storage","push","speaker","storage-access","top-level-storage-access","window-management","query"];function F(){var e=[],r={"prefers-contrast":["high","more","low","less","forced","no-preference"],"any-hover":["hover","none"],"any-pointer":["none","coarse","fine"],pointer:["none","coarse","fine"],hover:["hover","none"],update:["fast","slow"],color:["8","16","256"],"inverted-colors":["inverted","none"],"prefers-reduced-motion":["reduce","no-preference"],"prefers-reduced-transparency":["reduce","no-preference"],scripting:["none","initial-only","enabled"],"forced-colors":["active","none"],"prefers-color-scheme":["dark","light","no-preference"]};return Object.keys(r).forEach((function(n){r[n].forEach((function(r){matchMedia("(".concat(n,": ").concat(r,")")).matches&&e.push("".concat(n,": ").concat(r))}))})),e}function B(){if("https:"===window.location.protocol&&"function"==typeof window.ApplePaySession)try{for(var e=window.ApplePaySession.supportsVersion,r=15;r>0;r--)if(e(r))return r}catch(e){return 0}return 0}a("permissions",(function(){return e(this,void 0,void 0,(function(){var n;return r(this,(function(t){return n=Array.from({length:3},(function(){return function(){return e(this,void 0,void 0,(function(){var e,n,t,o,a;return r(this,(function(r){switch(r.label){case 0:e={},n=0,t=D,r.label=1;case 1:if(!(n<t.length))return[3,6];o=t[n],r.label=2;case 2:return r.trys.push([2,4,,5]),[4,navigator.permissions.query({name:o})];case 3:return a=r.sent(),e[o]=a.state.toString(),[3,5];case 4:return r.sent(),[3,5];case 5:return n++,[3,1];case 6:return[2,e]}}))}))}()})),[2,Promise.all(n).then((function(e){return O(e,D)}))]}))}))})),a("plugins",(function(){var e=[];if(navigator.plugins)for(var r=0;r<navigator.plugins.length;r++){var n=navigator.plugins[r];e.push([n.name,n.filename,n.description].join("|"))}return new Promise((function(r){r({plugins:e})}))})),a("screen",(function(){return new Promise((function(e){e({is_touchscreen:navigator.maxTouchPoints>0,maxTouchPoints:navigator.maxTouchPoints,colorDepth:screen.colorDepth,mediaMatches:F()})}))})),a("system",(function(){return new Promise((function(e){var r=E();e({platform:window.navigator.platform,cookieEnabled:window.navigator.cookieEnabled,productSub:navigator.productSub,product:navigator.product,useragent:navigator.userAgent,browser:{name:r.name,version:r.version},applePayVersion:B()})}))}));var L,N="SamsungBrowser"!==E().name?1:3,_=null;"undefined"!=typeof document&&((L=document.createElement("canvas")).width=200,L.height=100,_=L.getContext("webgl")),a("webgl",(function(){return e(this,void 0,void 0,(function(){var e;return r(this,(function(r){try{if(!_)throw new Error("WebGL not supported");return e=Array.from({length:N},(function(){return function(){try{if(!_)throw new Error("WebGL not supported");var e="\n attribute vec2 position;\n void main() {\n gl_Position = vec4(position, 0.0, 1.0);\n }\n ",r="\n precision mediump float;\n void main() {\n gl_FragColor = vec4(0.812, 0.195, 0.553, 0.921); // Set line color\n }\n ",n=_.createShader(_.VERTEX_SHADER),t=_.createShader(_.FRAGMENT_SHADER);if(!n||!t)throw new Error("Failed to create shaders");if(_.shaderSource(n,e),_.shaderSource(t,r),_.compileShader(n),!_.getShaderParameter(n,_.COMPILE_STATUS))throw new Error("Vertex shader compilation failed: "+_.getShaderInfoLog(n));if(_.compileShader(t),!_.getShaderParameter(t,_.COMPILE_STATUS))throw new Error("Fragment shader compilation failed: "+_.getShaderInfoLog(t));var o=_.createProgram();if(!o)throw new Error("Failed to create shader program");if(_.attachShader(o,n),_.attachShader(o,t),_.linkProgram(o),!_.getProgramParameter(o,_.LINK_STATUS))throw new Error("Shader program linking failed: "+_.getProgramInfoLog(o));_.useProgram(o);for(var a=137,i=new Float32Array(4*a),c=2*Math.PI/a,u=0;u<a;u++){var s=u*c;i[4*u]=0,i[4*u+1]=0,i[4*u+2]=Math.cos(s)*(L.width/2),i[4*u+3]=Math.sin(s)*(L.height/2)}var l=_.createBuffer();_.bindBuffer(_.ARRAY_BUFFER,l),_.bufferData(_.ARRAY_BUFFER,i,_.STATIC_DRAW);var d=_.getAttribLocation(o,"position");_.enableVertexAttribArray(d),_.vertexAttribPointer(d,2,_.FLOAT,!1,0,0),_.viewport(0,0,L.width,L.height),_.clearColor(0,0,0,1),_.clear(_.COLOR_BUFFER_BIT),_.drawArrays(_.LINES,0,2*a);var f=new Uint8ClampedArray(L.width*L.height*4);return _.readPixels(0,0,L.width,L.height,_.RGBA,_.UNSIGNED_BYTE,f),new ImageData(f,L.width,L.height)}catch(e){return console.error(e),new ImageData(1,1)}finally{_&&(_.bindBuffer(_.ARRAY_BUFFER,null),_.useProgram(null),_.viewport(0,0,_.drawingBufferWidth,_.drawingBufferHeight),_.clearColor(0,0,0,0))}}()})),[2,{commonImageHash:h(b(e,L.width,L.height).data.toString()).toString()}]}catch(e){return[2,{webgl:"unsupported"}]}return[2]}))}))}));var G=function(e,r,n,t){for(var o=(n-r)/t,a=0,i=0;i<t;i++){a+=e(r+(i+.5)*o)}return a*o};a("math",(function(){return e(void 0,void 0,void 0,(function(){return r(this,(function(e){return[2,{acos:Math.acos(.5),asin:G(Math.asin,-1,1,97),atan:G(Math.atan,-1,1,97),cos:G(Math.cos,0,Math.PI,97),cosh:Math.cosh(9/7),e:Math.E,largeCos:Math.cos(1e20),largeSin:Math.sin(1e20),largeTan:Math.tan(1e20),log:Math.log(1e3),pi:Math.PI,sin:G(Math.sin,-Math.PI,Math.PI,97),sinh:G(Math.sinh,-9/7,7/9,97),sqrt:Math.sqrt(2),tan:G(Math.tan,0,2*Math.PI,97),tanh:G(Math.tanh,-9/7,7/9,97)}]}))}))})),exports.getFingerprint=function(){return e(this,void 0,void 0,(function(){var e;return r(this,(function(r){switch(r.label){case 0:return r.trys.push([0,2,,3]),[4,w()];case 1:return e=r.sent(),[2,h(JSON.stringify(e)).toString()];case 2:throw r.sent();case 3:return[2]}}))}))},exports.getFingerprintData=w,exports.getFingerprintPerformance=function(){return e(this,void 0,void 0,(function(){var e,n,t,a;return r(this,(function(r){switch(r.label){case 0:return r.trys.push([0,2,,3]),e=i(),n=Object.keys(e),[4,v(Object.values(e),g,o)];case 1:return t=r.sent(),a={elapsed:{}},t.forEach((function(e,r){a[n[r]]=e.value,a.elapsed[n[r]]=e.elapsed})),[2,a];case 2:throw r.sent();case 3:return[2]}}))}))},exports.getVersion=function(){return"0.14.1"},exports.setOption=function(e,r){if(!["exclude"].includes(e))throw new Error("Unknown option "+e);if(["exclude"].includes(e)&&(!Array.isArray(r)||!r.every((function(e){return"string"==typeof e}))))throw new Error("The value of the exclude must be an array of strings");n[e]=r};
|
|
2
2
|
//# sourceMappingURL=thumbmark.cjs.js.map
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is used to create the includeComponent function as well as the interfaces each of the
|
|
3
|
+
* fingerprint components must implement.
|
|
4
|
+
*
|
|
5
|
+
*/
|
|
6
|
+
interface componentInterface {
|
|
7
|
+
[key: string]: string | string[] | number | boolean | componentInterface;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
declare function getFingerprintData(): Promise<componentInterface>;
|
|
11
|
+
declare function getFingerprint(): Promise<string>;
|
|
12
|
+
declare function getFingerprintPerformance(): Promise<{
|
|
13
|
+
[key: string]: any;
|
|
14
|
+
}>;
|
|
15
|
+
|
|
16
|
+
interface optionsInterface {
|
|
17
|
+
exclude?: string[];
|
|
18
|
+
include?: string[];
|
|
19
|
+
webgl_runs?: number;
|
|
20
|
+
canvas_runs?: number;
|
|
21
|
+
}
|
|
22
|
+
declare function setOption<K extends keyof optionsInterface>(key: K, value: optionsInterface[K]): void;
|
|
23
|
+
|
|
24
|
+
declare function getVersion(): string;
|
|
25
|
+
|
|
26
|
+
export { getFingerprint, getFingerprintData, getFingerprintPerformance, getVersion, setOption };
|
package/dist/thumbmark.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
function e(e,r,n,t){return new(n||(n=Promise))((function(o,a){function i(e){try{u(t.next(e))}catch(e){a(e)}}function c(e){try{u(t.throw(e))}catch(e){a(e)}}function u(e){var r;e.done?o(e.value):(r=e.value,r instanceof n?r:new n((function(e){e(r)}))).then(i,c)}u((t=t.apply(e,r||[])).next())}))}function r(e,r){var n,t,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function c(c){return function(u){return function(c){if(n)throw new TypeError("Generator is already executing.");for(;a&&(a=0,c[0]&&(i=0)),i;)try{if(n=1,t&&(o=2&c[0]?t.return:c[0]?t.throw||((o=t.return)&&o.call(t),0):t.next)&&!(o=o.call(t,c[1])).done)return o;switch(t=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return i.label++,{value:c[1],done:!1};case 5:i.label++,t=c[1],c=[0];continue;case 7:c=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==c[0]&&2!==c[0])){i=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){i.label=c[1];break}if(6===c[0]&&i.label<o[1]){i.label=o[1],o=c;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(c);break}o[2]&&i.ops.pop(),i.trys.pop();continue}c=r.call(e,i)}catch(e){c=[6,e],t=0}finally{n=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,u])}}}"function"==typeof SuppressedError&&SuppressedError;var n={exclude:[]};function t(e,r){if(!["exclude"].includes(e))throw new Error("Unknown option "+e);if(["exclude"].includes(e)&&(!Array.isArray(r)||!r.every((function(e){return"string"==typeof e}))))throw new Error("The value of the exclude must be an array of strings");n[e]=r}var o={},a={timeout:"true"},i=function(e,r){"undefined"!=typeof window&&(o[e]=r)},c=function(){return Object.fromEntries(Object.entries(o).filter((function(e){var r,t=e[0];return!(null===(r=null==n?void 0:n.exclude)||void 0===r?void 0:r.includes(t))})).map((function(e){return[e[0],(0,e[1])()]})))},u=3432918353,s=461845907,l=3864292196,d=2246822507,f=3266489909;function h(e,r){return e<<r|e>>>32-r}function m(e,r){void 0===r&&(r=0);for(var n=r,t=0,o=3&e.length,a=e.length-o,i=0;i<a;)t=255&e.charCodeAt(i)|(255&e.charCodeAt(++i))<<8|(255&e.charCodeAt(++i))<<16|(255&e.charCodeAt(++i))<<24,++i,t=h(t=Math.imul(t,u),15),n=h(n^=t=Math.imul(t,s),13),n=Math.imul(n,5)+l;switch(t=0,o){case 3:t^=(255&e.charCodeAt(i+2))<<16;case 2:t^=(255&e.charCodeAt(i+1))<<8;case 1:t^=255&e.charCodeAt(i),t=h(t=Math.imul(t,u),15),n^=t=Math.imul(t,s)}return((n=function(e){return e^=e>>>16,e=Math.imul(e,d),e^=e>>>13,e=Math.imul(e,f),e^e>>>16}(n^=e.length))>>>0).toString(36)}function v(e,r){return new Promise((function(n){setTimeout((function(){return n(r)}),e)}))}function p(e,r,n){return Promise.all(e.map((function(e){var t=performance.now();return Promise.race([e.then((function(e){return{value:e,elapsed:performance.now()-t}})),v(r,n).then((function(e){return{value:e,elapsed:performance.now()-t}}))])})))}function g(e,r,n){return Promise.all(e.map((function(e){return Promise.race([e,v(r,n)])})))}var w=1e3;function S(){return e(this,void 0,void 0,(function(){var e,t,o,i,u;return r(this,(function(r){switch(r.label){case 0:return r.trys.push([0,3,,4]),[4,c()];case 1:return e=r.sent(),t=Object.keys(e),[4,g(Object.values(e),w,a)];case 2:return o=r.sent(),i=o.filter((function(e){return void 0!==e})),u={},i.forEach((function(e,r){u[t[r]]=e})),[2,y(u,n.exclude||[])];case 3:throw r.sent();case 4:return[2]}}))}))}function y(e,r){var n={},t=function(t){if(e.hasOwnProperty(t)){var o=e[t];if("object"!=typeof o||Array.isArray(o))r.includes(t)||(n[t]=o);else{var a=y(o,r.map((function(e){return e.startsWith(t+".")?e.slice(t.length+1):e})));Object.keys(a).length>0&&(n[t]=a)}}};for(var o in e)t(o);return n}function b(){return e(this,void 0,void 0,(function(){var e;return r(this,(function(r){switch(r.label){case 0:return r.trys.push([0,2,,3]),[4,S()];case 1:return e=r.sent(),[2,m(JSON.stringify(e)).toString()];case 2:throw r.sent();case 3:return[2]}}))}))}function P(){return e(this,void 0,void 0,(function(){var e,n,t,o;return r(this,(function(r){switch(r.label){case 0:return r.trys.push([0,2,,3]),e=c(),n=Object.keys(e),[4,p(Object.values(e),w,a)];case 1:return t=r.sent(),o={elapsed:{}},t.forEach((function(e,r){o[n[r]]=e.value,o.elapsed[n[r]]=e.elapsed})),[2,o];case 2:throw r.sent();case 3:return[2]}}))}))}function E(e){for(var r=0,n=0;n<e.length;++n)r+=Math.abs(e[n]);return r}function M(e,r,n){for(var t=[],o=0;o<e[0].data.length;o++){for(var a=[],i=0;i<e.length;i++)a.push(e[i].data[o]);t.push(C(a))}var c=new Uint8ClampedArray(t);return new ImageData(c,r,n)}function C(e){if(0===e.length)return 0;for(var r={},n=0,t=e;n<t.length;n++){r[a=t[n]]=(r[a]||0)+1}var o=e[0];for(var a in r)r[a]>r[o]&&(o=parseInt(a,10));return o}function A(){if("undefined"==typeof navigator)return{name:"unknown",version:"unknown"};for(var e=navigator.userAgent,r={Edg:"Edge",OPR:"Opera"},n=0,t=[/(?<name>Edge|Edg)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>(?:Chrome|Chromium|OPR|Opera|Vivaldi|Brave))\/(?<version>\d+(?:\.\d+)?)/,/(?<name>(?:Firefox|Waterfox|Iceweasel|IceCat))\/(?<version>\d+(?:\.\d+)?)/,/(?<name>Safari)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>MSIE|Trident|IEMobile).+?(?<version>\d+(?:\.\d+)?)/,/(?<name>[A-Za-z]+)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>SamsungBrowser)\/(?<version>\d+(?:\.\d+)?)/];n<t.length;n++){var o=t[n],a=e.match(o);if(a&&a.groups)return{name:r[a.groups.name]||a.groups.name,version:a.groups.version}}return{name:"unknown",version:"unknown"}}i("audio",(function(){return e(this,void 0,void 0,(function(){return r(this,(function(e){return[2,new Promise((function(e,r){try{var n=new(window.OfflineAudioContext||window.webkitOfflineAudioContext)(1,5e3,44100),t=n.createBufferSource(),o=n.createOscillator();o.frequency.value=1e3;var a,i=n.createDynamicsCompressor();i.threshold.value=-50,i.knee.value=40,i.ratio.value=12,i.attack.value=0,i.release.value=.2,o.connect(i),i.connect(n.destination),o.start(),n.oncomplete=function(r){a=r.renderedBuffer.getChannelData(0),e({sampleHash:E(a),oscillator:o.type,maxChannels:n.destination.maxChannelCount,channelCountMode:t.channelCountMode})},n.startRendering()}catch(e){console.error("Error creating audio fingerprint:",e),r(e)}}))]}))}))}));var x="SamsungBrowser"!==A().name?1:3,T=280,I=20;"Firefox"!=A().name&&i("canvas",(function(){return document.createElement("canvas").getContext("2d"),new Promise((function(e){var r=Array.from({length:x},(function(){return function(){var e=document.createElement("canvas"),r=e.getContext("2d");if(!r)return new ImageData(1,1);e.width=T,e.height=I;var n=r.createLinearGradient(0,0,e.width,e.height);n.addColorStop(0,"red"),n.addColorStop(1/6,"orange"),n.addColorStop(2/6,"yellow"),n.addColorStop(.5,"green"),n.addColorStop(4/6,"blue"),n.addColorStop(5/6,"indigo"),n.addColorStop(1,"violet"),r.fillStyle=n,r.fillRect(0,0,e.width,e.height);var t="Random Text WMwmil10Oo";r.font="23.123px Arial",r.fillStyle="black",r.fillText(t,-5,15),r.fillStyle="rgba(0, 0, 255, 0.5)",r.fillText(t,-3.3,17.7),r.beginPath(),r.moveTo(0,0),r.lineTo(2*e.width/7,e.height),r.strokeStyle="white",r.lineWidth=2,r.stroke();var o=r.getImageData(0,0,e.width,e.height);return o}()}));e({commonImageDataHash:m(M(r,T,I).data.toString()).toString()})}))}));var k=["Arial","Arial Black","Arial Narrow","Arial Rounded MT","Arimo","Archivo","Barlow","Bebas Neue","Bitter","Bookman","Calibri","Cabin","Candara","Century","Century Gothic","Comic Sans MS","Constantia","Courier","Courier New","Crimson Text","DM Mono","DM Sans","DM Serif Display","DM Serif Text","Dosis","Droid Sans","Exo","Fira Code","Fira Sans","Franklin Gothic Medium","Garamond","Geneva","Georgia","Gill Sans","Helvetica","Impact","Inconsolata","Indie Flower","Inter","Josefin Sans","Karla","Lato","Lexend","Lucida Bright","Lucida Console","Lucida Sans Unicode","Manrope","Merriweather","Merriweather Sans","Montserrat","Myriad","Noto Sans","Nunito","Nunito Sans","Open Sans","Optima","Orbitron","Oswald","Pacifico","Palatino","Perpetua","PT Sans","PT Serif","Poppins","Prompt","Public Sans","Quicksand","Rajdhani","Recursive","Roboto","Roboto Condensed","Rockwell","Rubik","Segoe Print","Segoe Script","Segoe UI","Sora","Source Sans Pro","Space Mono","Tahoma","Taviraj","Times","Times New Roman","Titillium Web","Trebuchet MS","Ubuntu","Varela Round","Verdana","Work Sans"],R=["monospace","sans-serif","serif"];function O(e,r){if(!e)throw new Error("Canvas context not supported");return e.font,e.font="72px ".concat(r),e.measureText("WwMmLli0Oo").width}function D(){var e,r=document.createElement("canvas"),n=null!==(e=r.getContext("webgl"))&&void 0!==e?e:r.getContext("experimental-webgl");return n&&"getParameter"in n?{vendor:(n.getParameter(n.VENDOR)||"").toString(),renderer:(n.getParameter(n.RENDERER)||"").toString(),version:(n.getParameter(n.VERSION)||"").toString(),shadingLanguageVersion:(n.getParameter(n.SHADING_LANGUAGE_VERSION)||"").toString()}:"undefined"}function B(){var e=new Float32Array(1),r=new Uint8Array(e.buffer);return e[0]=1/0,e[0]=e[0]-e[0],r[3]}function F(e,r){var n={};return r.forEach((function(r){var t=function(e){if(0===e.length)return null;var r={};e.forEach((function(e){var n=String(e);r[n]=(r[n]||0)+1}));var n=e[0],t=1;return Object.keys(r).forEach((function(e){r[e]>t&&(n=e,t=r[e])})),n}(e.map((function(e){return r in e?e[r]:void 0})).filter((function(e){return void 0!==e})));t&&(n[r]=t)})),n}"Firefox"!=A().name&&i("fonts",(function(){var n=this;return new Promise((function(t,o){try{!function(n){var t;e(this,void 0,void 0,(function(){var e,o,a;return r(this,(function(r){switch(r.label){case 0:return document.body?[3,2]:[4,(i=50,new Promise((function(e){return setTimeout(e,i,c)})))];case 1:return r.sent(),[3,0];case 2:if(e=document.createElement("iframe"),(o=e.style).setProperty("display","block","important"),o.setProperty("visibility","visible"),e.src="about:blank",document.body.appendChild(e),!(a=e.contentDocument||(null===(t=e.contentWindow)||void 0===t?void 0:t.document)))throw new Error("Iframe document is not accessible");return n({iframe:a}),setTimeout((function(){document.body.removeChild(e)}),0),[2]}var i,c}))}))}((function(o){var a=o.iframe;return e(n,void 0,void 0,(function(){var e,n,o,i;return r(this,(function(r){return"Hello, world!",e=a.createElement("canvas"),n=e.getContext("2d"),o=R.map((function(e){return O(n,e)})),i={},k.forEach((function(e){var r=O(n,e);o.includes(r)||(i[e]=r)})),t(i),[2]}))}))}))}catch(e){o({error:"unsupported"})}}))})),i("hardware",(function(){return new Promise((function(e,r){var n=void 0!==navigator.deviceMemory?navigator.deviceMemory:0,t=window.performance&&window.performance.memory?window.performance.memory:0;e({videocard:D(),architecture:B(),deviceMemory:n.toString()||"undefined",jsHeapSizeLimit:t.jsHeapSizeLimit||"undefined"})}))})),i("locales",(function(){return new Promise((function(e){e({languages:navigator.language,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone})}))}));var L=["accelerometer","accessibility","accessibility-events","ambient-light-sensor","background-fetch","background-sync","bluetooth","camera","clipboard-read","clipboard-write","device-info","display-capture","gyroscope","geolocation","local-fonts","magnetometer","microphone","midi","nfc","notifications","payment-handler","persistent-storage","push","speaker","storage-access","top-level-storage-access","window-management","query"];function N(){var e=[],r={"prefers-contrast":["high","more","low","less","forced","no-preference"],"any-hover":["hover","none"],"any-pointer":["none","coarse","fine"],pointer:["none","coarse","fine"],hover:["hover","none"],update:["fast","slow"],color:["8","16","256"],"inverted-colors":["inverted","none"],"prefers-reduced-motion":["reduce","no-preference"],"prefers-reduced-transparency":["reduce","no-preference"],scripting:["none","initial-only","enabled"],"forced-colors":["active","none"],"prefers-color-scheme":["dark","light","no-preference"]};return Object.keys(r).forEach((function(n){r[n].forEach((function(r){matchMedia("(".concat(n,": ").concat(r,")")).matches&&e.push("".concat(n,": ").concat(r))}))})),e}function _(){if("https:"===window.location.protocol&&"function"==typeof window.ApplePaySession)try{for(var e=window.ApplePaySession.supportsVersion,r=15;r>0;r--)if(e(r))return r}catch(e){return 0}return 0}i("permissions",(function(){return e(this,void 0,void 0,(function(){var n;return r(this,(function(t){return n=Array.from({length:3},(function(){return function(){return e(this,void 0,void 0,(function(){var e,n,t,o,a;return r(this,(function(r){switch(r.label){case 0:e={},n=0,t=L,r.label=1;case 1:if(!(n<t.length))return[3,6];o=t[n],r.label=2;case 2:return r.trys.push([2,4,,5]),[4,navigator.permissions.query({name:o})];case 3:return a=r.sent(),e[o]=a.state.toString(),[3,5];case 4:return r.sent(),[3,5];case 5:return n++,[3,1];case 6:return[2,e]}}))}))}()})),[2,Promise.all(n).then((function(e){return F(e,L)}))]}))}))})),i("plugins",(function(){var e=[];if(navigator.plugins)for(var r=0;r<navigator.plugins.length;r++){var n=navigator.plugins[r];e.push([n.name,n.filename,n.description].join("|"))}return new Promise((function(r){r({plugins:e})}))})),i("screen",(function(){return new Promise((function(e){e({is_touchscreen:navigator.maxTouchPoints>0,maxTouchPoints:navigator.maxTouchPoints,colorDepth:screen.colorDepth,mediaMatches:N()})}))})),i("system",(function(){return new Promise((function(e){var r=A();e({platform:window.navigator.platform,cookieEnabled:window.navigator.cookieEnabled,productSub:navigator.productSub,product:navigator.product,useragent:navigator.userAgent,browser:{name:r.name,version:r.version},applePayVersion:_()})}))}));var G,U="SamsungBrowser"!==A().name?1:3,j=null;"undefined"!=typeof document&&((G=document.createElement("canvas")).width=200,G.height=100,j=G.getContext("webgl")),i("webgl",(function(){return e(this,void 0,void 0,(function(){var e;return r(this,(function(r){try{if(!j)throw new Error("WebGL not supported");return e=Array.from({length:U},(function(){return function(){try{if(!j)throw new Error("WebGL not supported");var e="\n attribute vec2 position;\n void main() {\n gl_Position = vec4(position, 0.0, 1.0);\n }\n ",r="\n precision mediump float;\n void main() {\n gl_FragColor = vec4(0.812, 0.195, 0.553, 0.921); // Set line color\n }\n ",n=j.createShader(j.VERTEX_SHADER),t=j.createShader(j.FRAGMENT_SHADER);if(!n||!t)throw new Error("Failed to create shaders");if(j.shaderSource(n,e),j.shaderSource(t,r),j.compileShader(n),!j.getShaderParameter(n,j.COMPILE_STATUS))throw new Error("Vertex shader compilation failed: "+j.getShaderInfoLog(n));if(j.compileShader(t),!j.getShaderParameter(t,j.COMPILE_STATUS))throw new Error("Fragment shader compilation failed: "+j.getShaderInfoLog(t));var o=j.createProgram();if(!o)throw new Error("Failed to create shader program");if(j.attachShader(o,n),j.attachShader(o,t),j.linkProgram(o),!j.getProgramParameter(o,j.LINK_STATUS))throw new Error("Shader program linking failed: "+j.getProgramInfoLog(o));j.useProgram(o);for(var a=137,i=new Float32Array(4*a),c=2*Math.PI/a,u=0;u<a;u++){var s=u*c;i[4*u]=0,i[4*u+1]=0,i[4*u+2]=Math.cos(s)*(G.width/2),i[4*u+3]=Math.sin(s)*(G.height/2)}var l=j.createBuffer();j.bindBuffer(j.ARRAY_BUFFER,l),j.bufferData(j.ARRAY_BUFFER,i,j.STATIC_DRAW);var d=j.getAttribLocation(o,"position");j.enableVertexAttribArray(d),j.vertexAttribPointer(d,2,j.FLOAT,!1,0,0),j.viewport(0,0,G.width,G.height),j.clearColor(0,0,0,1),j.clear(j.COLOR_BUFFER_BIT),j.drawArrays(j.LINES,0,2*a);var f=new Uint8ClampedArray(G.width*G.height*4);return j.readPixels(0,0,G.width,G.height,j.RGBA,j.UNSIGNED_BYTE,f),new ImageData(f,G.width,G.height)}catch(e){return console.error(e),new ImageData(1,1)}finally{j&&(j.bindBuffer(j.ARRAY_BUFFER,null),j.useProgram(null),j.viewport(0,0,j.drawingBufferWidth,j.drawingBufferHeight),j.clearColor(0,0,0,0))}}()})),[2,{commonImageHash:m(M(e,G.width,G.height).data.toString()).toString()}]}catch(e){return[2,{webgl:"unsupported"}]}return[2]}))}))}));var V=function(e,r,n,t){for(var o=(n-r)/t,a=0,i=0;i<t;i++){a+=e(r+(i+.5)*o)}return a*o};function W(){return"0.14.0"}i("math",(function(){return e(void 0,void 0,void 0,(function(){return r(this,(function(e){return[2,{acos:Math.acos(.5),asin:V(Math.asin,-1,1,97),atan:V(Math.atan,-1,1,97),cos:V(Math.cos,0,Math.PI,97),cosh:Math.cosh(9/7),e:Math.E,largeCos:Math.cos(1e20),largeSin:Math.sin(1e20),largeTan:Math.tan(1e20),log:Math.log(1e3),pi:Math.PI,sin:V(Math.sin,-Math.PI,Math.PI,97),sinh:V(Math.sinh,-9/7,7/9,97),sqrt:Math.sqrt(2),tan:V(Math.tan,0,2*Math.PI,97),tanh:V(Math.tanh,-9/7,7/9,97)}]}))}))}));export{b as getFingerprint,S as getFingerprintData,P as getFingerprintPerformance,W as getVersion,t as setOption};
|
|
1
|
+
function e(e,r,n,t){return new(n||(n=Promise))((function(o,a){function i(e){try{u(t.next(e))}catch(e){a(e)}}function c(e){try{u(t.throw(e))}catch(e){a(e)}}function u(e){var r;e.done?o(e.value):(r=e.value,r instanceof n?r:new n((function(e){e(r)}))).then(i,c)}u((t=t.apply(e,r||[])).next())}))}function r(e,r){var n,t,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function c(c){return function(u){return function(c){if(n)throw new TypeError("Generator is already executing.");for(;a&&(a=0,c[0]&&(i=0)),i;)try{if(n=1,t&&(o=2&c[0]?t.return:c[0]?t.throw||((o=t.return)&&o.call(t),0):t.next)&&!(o=o.call(t,c[1])).done)return o;switch(t=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return i.label++,{value:c[1],done:!1};case 5:i.label++,t=c[1],c=[0];continue;case 7:c=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==c[0]&&2!==c[0])){i=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){i.label=c[1];break}if(6===c[0]&&i.label<o[1]){i.label=o[1],o=c;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(c);break}o[2]&&i.ops.pop(),i.trys.pop();continue}c=r.call(e,i)}catch(e){c=[6,e],t=0}finally{n=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,u])}}}"function"==typeof SuppressedError&&SuppressedError;var n={exclude:[]};function t(e,r){if(!["exclude"].includes(e))throw new Error("Unknown option "+e);if(["exclude"].includes(e)&&(!Array.isArray(r)||!r.every((function(e){return"string"==typeof e}))))throw new Error("The value of the exclude must be an array of strings");n[e]=r}var o={},a={timeout:"true"},i=function(e,r){"undefined"!=typeof window&&(o[e]=r)},c=function(){return Object.fromEntries(Object.entries(o).filter((function(e){var r,t=e[0];return!(null===(r=null==n?void 0:n.exclude)||void 0===r?void 0:r.includes(t))})).map((function(e){return[e[0],(0,e[1])()]})))},u=3432918353,s=461845907,l=3864292196,d=2246822507,f=3266489909;function h(e,r){return e<<r|e>>>32-r}function m(e,r){void 0===r&&(r=0);for(var n=r,t=0,o=3&e.length,a=e.length-o,i=0;i<a;)t=255&e.charCodeAt(i)|(255&e.charCodeAt(++i))<<8|(255&e.charCodeAt(++i))<<16|(255&e.charCodeAt(++i))<<24,++i,t=h(t=Math.imul(t,u),15),n=h(n^=t=Math.imul(t,s),13),n=Math.imul(n,5)+l;switch(t=0,o){case 3:t^=(255&e.charCodeAt(i+2))<<16;case 2:t^=(255&e.charCodeAt(i+1))<<8;case 1:t^=255&e.charCodeAt(i),t=h(t=Math.imul(t,u),15),n^=t=Math.imul(t,s)}return((n=function(e){return e^=e>>>16,e=Math.imul(e,d),e^=e>>>13,e=Math.imul(e,f),e^e>>>16}(n^=e.length))>>>0).toString(36)}function v(e,r){return new Promise((function(n){setTimeout((function(){return n(r)}),e)}))}function p(e,r,n){return Promise.all(e.map((function(e){var t=performance.now();return Promise.race([e.then((function(e){return{value:e,elapsed:performance.now()-t}})),v(r,n).then((function(e){return{value:e,elapsed:performance.now()-t}}))])})))}function g(e,r,n){return Promise.all(e.map((function(e){return Promise.race([e,v(r,n)])})))}var w=1e3;function S(){return e(this,void 0,void 0,(function(){var e,t,o,i,u;return r(this,(function(r){switch(r.label){case 0:return r.trys.push([0,3,,4]),[4,c()];case 1:return e=r.sent(),t=Object.keys(e),[4,g(Object.values(e),w,a)];case 2:return o=r.sent(),i=o.filter((function(e){return void 0!==e})),u={},i.forEach((function(e,r){u[t[r]]=e})),[2,y(u,n.exclude||[])];case 3:throw r.sent();case 4:return[2]}}))}))}function y(e,r){var n={},t=function(t){if(e.hasOwnProperty(t)){var o=e[t];if("object"!=typeof o||Array.isArray(o))r.includes(t)||(n[t]=o);else{var a=y(o,r.map((function(e){return e.startsWith(t+".")?e.slice(t.length+1):e})));Object.keys(a).length>0&&(n[t]=a)}}};for(var o in e)t(o);return n}function b(){return e(this,void 0,void 0,(function(){var e;return r(this,(function(r){switch(r.label){case 0:return r.trys.push([0,2,,3]),[4,S()];case 1:return e=r.sent(),[2,m(JSON.stringify(e)).toString()];case 2:throw r.sent();case 3:return[2]}}))}))}function P(){return e(this,void 0,void 0,(function(){var e,n,t,o;return r(this,(function(r){switch(r.label){case 0:return r.trys.push([0,2,,3]),e=c(),n=Object.keys(e),[4,p(Object.values(e),w,a)];case 1:return t=r.sent(),o={elapsed:{}},t.forEach((function(e,r){o[n[r]]=e.value,o.elapsed[n[r]]=e.elapsed})),[2,o];case 2:throw r.sent();case 3:return[2]}}))}))}function E(e){for(var r=0,n=0;n<e.length;++n)r+=Math.abs(e[n]);return r}function M(e,r,n){for(var t=[],o=0;o<e[0].data.length;o++){for(var a=[],i=0;i<e.length;i++)a.push(e[i].data[o]);t.push(C(a))}var c=new Uint8ClampedArray(t);return new ImageData(c,r,n)}function C(e){if(0===e.length)return 0;for(var r={},n=0,t=e;n<t.length;n++){r[a=t[n]]=(r[a]||0)+1}var o=e[0];for(var a in r)r[a]>r[o]&&(o=parseInt(a,10));return o}function A(){if("undefined"==typeof navigator)return{name:"unknown",version:"unknown"};for(var e=navigator.userAgent,r={Edg:"Edge",OPR:"Opera"},n=0,t=[/(?<name>Edge|Edg)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>(?:Chrome|Chromium|OPR|Opera|Vivaldi|Brave))\/(?<version>\d+(?:\.\d+)?)/,/(?<name>(?:Firefox|Waterfox|Iceweasel|IceCat))\/(?<version>\d+(?:\.\d+)?)/,/(?<name>Safari)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>MSIE|Trident|IEMobile).+?(?<version>\d+(?:\.\d+)?)/,/(?<name>[A-Za-z]+)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>SamsungBrowser)\/(?<version>\d+(?:\.\d+)?)/];n<t.length;n++){var o=t[n],a=e.match(o);if(a&&a.groups)return{name:r[a.groups.name]||a.groups.name,version:a.groups.version}}return{name:"unknown",version:"unknown"}}i("audio",(function(){return e(this,void 0,void 0,(function(){return r(this,(function(e){return[2,new Promise((function(e,r){try{var n=new(window.OfflineAudioContext||window.webkitOfflineAudioContext)(1,5e3,44100),t=n.createBufferSource(),o=n.createOscillator();o.frequency.value=1e3;var a,i=n.createDynamicsCompressor();i.threshold.value=-50,i.knee.value=40,i.ratio.value=12,i.attack.value=0,i.release.value=.2,o.connect(i),i.connect(n.destination),o.start(),n.oncomplete=function(r){a=r.renderedBuffer.getChannelData(0),e({sampleHash:E(a),oscillator:o.type,maxChannels:n.destination.maxChannelCount,channelCountMode:t.channelCountMode})},n.startRendering()}catch(e){console.error("Error creating audio fingerprint:",e),r(e)}}))]}))}))}));var x="SamsungBrowser"!==A().name?1:3,T=280,I=20;"Firefox"!=A().name&&i("canvas",(function(){return document.createElement("canvas").getContext("2d"),new Promise((function(e){var r=Array.from({length:x},(function(){return function(){var e=document.createElement("canvas"),r=e.getContext("2d");if(!r)return new ImageData(1,1);e.width=T,e.height=I;var n=r.createLinearGradient(0,0,e.width,e.height);n.addColorStop(0,"red"),n.addColorStop(1/6,"orange"),n.addColorStop(2/6,"yellow"),n.addColorStop(.5,"green"),n.addColorStop(4/6,"blue"),n.addColorStop(5/6,"indigo"),n.addColorStop(1,"violet"),r.fillStyle=n,r.fillRect(0,0,e.width,e.height);var t="Random Text WMwmil10Oo";r.font="23.123px Arial",r.fillStyle="black",r.fillText(t,-5,15),r.fillStyle="rgba(0, 0, 255, 0.5)",r.fillText(t,-3.3,17.7),r.beginPath(),r.moveTo(0,0),r.lineTo(2*e.width/7,e.height),r.strokeStyle="white",r.lineWidth=2,r.stroke();var o=r.getImageData(0,0,e.width,e.height);return o}()}));e({commonImageDataHash:m(M(r,T,I).data.toString()).toString()})}))}));var k=["Arial","Arial Black","Arial Narrow","Arial Rounded MT","Arimo","Archivo","Barlow","Bebas Neue","Bitter","Bookman","Calibri","Cabin","Candara","Century","Century Gothic","Comic Sans MS","Constantia","Courier","Courier New","Crimson Text","DM Mono","DM Sans","DM Serif Display","DM Serif Text","Dosis","Droid Sans","Exo","Fira Code","Fira Sans","Franklin Gothic Medium","Garamond","Geneva","Georgia","Gill Sans","Helvetica","Impact","Inconsolata","Indie Flower","Inter","Josefin Sans","Karla","Lato","Lexend","Lucida Bright","Lucida Console","Lucida Sans Unicode","Manrope","Merriweather","Merriweather Sans","Montserrat","Myriad","Noto Sans","Nunito","Nunito Sans","Open Sans","Optima","Orbitron","Oswald","Pacifico","Palatino","Perpetua","PT Sans","PT Serif","Poppins","Prompt","Public Sans","Quicksand","Rajdhani","Recursive","Roboto","Roboto Condensed","Rockwell","Rubik","Segoe Print","Segoe Script","Segoe UI","Sora","Source Sans Pro","Space Mono","Tahoma","Taviraj","Times","Times New Roman","Titillium Web","Trebuchet MS","Ubuntu","Varela Round","Verdana","Work Sans"],R=["monospace","sans-serif","serif"];function O(e,r){if(!e)throw new Error("Canvas context not supported");return e.font,e.font="72px ".concat(r),e.measureText("WwMmLli0Oo").width}function D(){var e,r=document.createElement("canvas"),n=null!==(e=r.getContext("webgl"))&&void 0!==e?e:r.getContext("experimental-webgl");return n&&"getParameter"in n?{vendor:(n.getParameter(n.VENDOR)||"").toString(),renderer:(n.getParameter(n.RENDERER)||"").toString(),version:(n.getParameter(n.VERSION)||"").toString(),shadingLanguageVersion:(n.getParameter(n.SHADING_LANGUAGE_VERSION)||"").toString()}:"undefined"}function B(){var e=new Float32Array(1),r=new Uint8Array(e.buffer);return e[0]=1/0,e[0]=e[0]-e[0],r[3]}function F(e,r){var n={};return r.forEach((function(r){var t=function(e){if(0===e.length)return null;var r={};e.forEach((function(e){var n=String(e);r[n]=(r[n]||0)+1}));var n=e[0],t=1;return Object.keys(r).forEach((function(e){r[e]>t&&(n=e,t=r[e])})),n}(e.map((function(e){return r in e?e[r]:void 0})).filter((function(e){return void 0!==e})));t&&(n[r]=t)})),n}"Firefox"!=A().name&&i("fonts",(function(){var n=this;return new Promise((function(t,o){try{!function(n){var t;e(this,void 0,void 0,(function(){var e,o,a;return r(this,(function(r){switch(r.label){case 0:return document.body?[3,2]:[4,(i=50,new Promise((function(e){return setTimeout(e,i,c)})))];case 1:return r.sent(),[3,0];case 2:if(e=document.createElement("iframe"),(o=e.style).setProperty("display","block","important"),o.setProperty("visibility","visible"),e.src="about:blank",document.body.appendChild(e),!(a=e.contentDocument||(null===(t=e.contentWindow)||void 0===t?void 0:t.document)))throw new Error("Iframe document is not accessible");return n({iframe:a}),setTimeout((function(){document.body.removeChild(e)}),0),[2]}var i,c}))}))}((function(o){var a=o.iframe;return e(n,void 0,void 0,(function(){var e,n,o,i;return r(this,(function(r){return"Hello, world!",e=a.createElement("canvas"),n=e.getContext("2d"),o=R.map((function(e){return O(n,e)})),i={},k.forEach((function(e){var r=O(n,e);o.includes(r)||(i[e]=r)})),t(i),[2]}))}))}))}catch(e){o({error:"unsupported"})}}))})),i("hardware",(function(){return new Promise((function(e,r){var n=void 0!==navigator.deviceMemory?navigator.deviceMemory:0,t=window.performance&&window.performance.memory?window.performance.memory:0;e({videocard:D(),architecture:B(),deviceMemory:n.toString()||"undefined",jsHeapSizeLimit:t.jsHeapSizeLimit||"undefined"})}))})),i("locales",(function(){return new Promise((function(e){e({languages:navigator.language,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone})}))}));var L=["accelerometer","accessibility","accessibility-events","ambient-light-sensor","background-fetch","background-sync","bluetooth","camera","clipboard-read","clipboard-write","device-info","display-capture","gyroscope","geolocation","local-fonts","magnetometer","microphone","midi","nfc","notifications","payment-handler","persistent-storage","push","speaker","storage-access","top-level-storage-access","window-management","query"];function N(){var e=[],r={"prefers-contrast":["high","more","low","less","forced","no-preference"],"any-hover":["hover","none"],"any-pointer":["none","coarse","fine"],pointer:["none","coarse","fine"],hover:["hover","none"],update:["fast","slow"],color:["8","16","256"],"inverted-colors":["inverted","none"],"prefers-reduced-motion":["reduce","no-preference"],"prefers-reduced-transparency":["reduce","no-preference"],scripting:["none","initial-only","enabled"],"forced-colors":["active","none"],"prefers-color-scheme":["dark","light","no-preference"]};return Object.keys(r).forEach((function(n){r[n].forEach((function(r){matchMedia("(".concat(n,": ").concat(r,")")).matches&&e.push("".concat(n,": ").concat(r))}))})),e}function _(){if("https:"===window.location.protocol&&"function"==typeof window.ApplePaySession)try{for(var e=window.ApplePaySession.supportsVersion,r=15;r>0;r--)if(e(r))return r}catch(e){return 0}return 0}i("permissions",(function(){return e(this,void 0,void 0,(function(){var n;return r(this,(function(t){return n=Array.from({length:3},(function(){return function(){return e(this,void 0,void 0,(function(){var e,n,t,o,a;return r(this,(function(r){switch(r.label){case 0:e={},n=0,t=L,r.label=1;case 1:if(!(n<t.length))return[3,6];o=t[n],r.label=2;case 2:return r.trys.push([2,4,,5]),[4,navigator.permissions.query({name:o})];case 3:return a=r.sent(),e[o]=a.state.toString(),[3,5];case 4:return r.sent(),[3,5];case 5:return n++,[3,1];case 6:return[2,e]}}))}))}()})),[2,Promise.all(n).then((function(e){return F(e,L)}))]}))}))})),i("plugins",(function(){var e=[];if(navigator.plugins)for(var r=0;r<navigator.plugins.length;r++){var n=navigator.plugins[r];e.push([n.name,n.filename,n.description].join("|"))}return new Promise((function(r){r({plugins:e})}))})),i("screen",(function(){return new Promise((function(e){e({is_touchscreen:navigator.maxTouchPoints>0,maxTouchPoints:navigator.maxTouchPoints,colorDepth:screen.colorDepth,mediaMatches:N()})}))})),i("system",(function(){return new Promise((function(e){var r=A();e({platform:window.navigator.platform,cookieEnabled:window.navigator.cookieEnabled,productSub:navigator.productSub,product:navigator.product,useragent:navigator.userAgent,browser:{name:r.name,version:r.version},applePayVersion:_()})}))}));var G,U="SamsungBrowser"!==A().name?1:3,j=null;"undefined"!=typeof document&&((G=document.createElement("canvas")).width=200,G.height=100,j=G.getContext("webgl")),i("webgl",(function(){return e(this,void 0,void 0,(function(){var e;return r(this,(function(r){try{if(!j)throw new Error("WebGL not supported");return e=Array.from({length:U},(function(){return function(){try{if(!j)throw new Error("WebGL not supported");var e="\n attribute vec2 position;\n void main() {\n gl_Position = vec4(position, 0.0, 1.0);\n }\n ",r="\n precision mediump float;\n void main() {\n gl_FragColor = vec4(0.812, 0.195, 0.553, 0.921); // Set line color\n }\n ",n=j.createShader(j.VERTEX_SHADER),t=j.createShader(j.FRAGMENT_SHADER);if(!n||!t)throw new Error("Failed to create shaders");if(j.shaderSource(n,e),j.shaderSource(t,r),j.compileShader(n),!j.getShaderParameter(n,j.COMPILE_STATUS))throw new Error("Vertex shader compilation failed: "+j.getShaderInfoLog(n));if(j.compileShader(t),!j.getShaderParameter(t,j.COMPILE_STATUS))throw new Error("Fragment shader compilation failed: "+j.getShaderInfoLog(t));var o=j.createProgram();if(!o)throw new Error("Failed to create shader program");if(j.attachShader(o,n),j.attachShader(o,t),j.linkProgram(o),!j.getProgramParameter(o,j.LINK_STATUS))throw new Error("Shader program linking failed: "+j.getProgramInfoLog(o));j.useProgram(o);for(var a=137,i=new Float32Array(4*a),c=2*Math.PI/a,u=0;u<a;u++){var s=u*c;i[4*u]=0,i[4*u+1]=0,i[4*u+2]=Math.cos(s)*(G.width/2),i[4*u+3]=Math.sin(s)*(G.height/2)}var l=j.createBuffer();j.bindBuffer(j.ARRAY_BUFFER,l),j.bufferData(j.ARRAY_BUFFER,i,j.STATIC_DRAW);var d=j.getAttribLocation(o,"position");j.enableVertexAttribArray(d),j.vertexAttribPointer(d,2,j.FLOAT,!1,0,0),j.viewport(0,0,G.width,G.height),j.clearColor(0,0,0,1),j.clear(j.COLOR_BUFFER_BIT),j.drawArrays(j.LINES,0,2*a);var f=new Uint8ClampedArray(G.width*G.height*4);return j.readPixels(0,0,G.width,G.height,j.RGBA,j.UNSIGNED_BYTE,f),new ImageData(f,G.width,G.height)}catch(e){return console.error(e),new ImageData(1,1)}finally{j&&(j.bindBuffer(j.ARRAY_BUFFER,null),j.useProgram(null),j.viewport(0,0,j.drawingBufferWidth,j.drawingBufferHeight),j.clearColor(0,0,0,0))}}()})),[2,{commonImageHash:m(M(e,G.width,G.height).data.toString()).toString()}]}catch(e){return[2,{webgl:"unsupported"}]}return[2]}))}))}));var V=function(e,r,n,t){for(var o=(n-r)/t,a=0,i=0;i<t;i++){a+=e(r+(i+.5)*o)}return a*o};function W(){return"0.14.1"}i("math",(function(){return e(void 0,void 0,void 0,(function(){return r(this,(function(e){return[2,{acos:Math.acos(.5),asin:V(Math.asin,-1,1,97),atan:V(Math.atan,-1,1,97),cos:V(Math.cos,0,Math.PI,97),cosh:Math.cosh(9/7),e:Math.E,largeCos:Math.cos(1e20),largeSin:Math.sin(1e20),largeTan:Math.tan(1e20),log:Math.log(1e3),pi:Math.PI,sin:V(Math.sin,-Math.PI,Math.PI,97),sinh:V(Math.sinh,-9/7,7/9,97),sqrt:Math.sqrt(2),tan:V(Math.tan,0,2*Math.PI,97),tanh:V(Math.tanh,-9/7,7/9,97)}]}))}))}));export{b as getFingerprint,S as getFingerprintData,P as getFingerprintPerformance,W as getVersion,t as setOption};
|
|
2
2
|
//# sourceMappingURL=thumbmark.esm.js.map
|
package/dist/thumbmark.umd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self).ThumbmarkJS={})}(this,(function(e){"use strict";function n(e,n,r,t){return new(r||(r=Promise))((function(o,a){function i(e){try{u(t.next(e))}catch(e){a(e)}}function c(e){try{u(t.throw(e))}catch(e){a(e)}}function u(e){var n;e.done?o(e.value):(n=e.value,n instanceof r?n:new r((function(e){e(n)}))).then(i,c)}u((t=t.apply(e,n||[])).next())}))}function r(e,n){var r,t,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function c(c){return function(u){return function(c){if(r)throw new TypeError("Generator is already executing.");for(;a&&(a=0,c[0]&&(i=0)),i;)try{if(r=1,t&&(o=2&c[0]?t.return:c[0]?t.throw||((o=t.return)&&o.call(t),0):t.next)&&!(o=o.call(t,c[1])).done)return o;switch(t=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return i.label++,{value:c[1],done:!1};case 5:i.label++,t=c[1],c=[0];continue;case 7:c=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==c[0]&&2!==c[0])){i=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){i.label=c[1];break}if(6===c[0]&&i.label<o[1]){i.label=o[1],o=c;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(c);break}o[2]&&i.ops.pop(),i.trys.pop();continue}c=n.call(e,i)}catch(e){c=[6,e],t=0}finally{r=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,u])}}}"function"==typeof SuppressedError&&SuppressedError;var t={exclude:[]};var o={},a={timeout:"true"},i=function(e,n){"undefined"!=typeof window&&(o[e]=n)},c=function(){return Object.fromEntries(Object.entries(o).filter((function(e){var n,r=e[0];return!(null===(n=null==t?void 0:t.exclude)||void 0===n?void 0:n.includes(r))})).map((function(e){return[e[0],(0,e[1])()]})))},u=3432918353,s=461845907,l=3864292196,f=2246822507,d=3266489909;function h(e,n){return e<<n|e>>>32-n}function m(e,n){void 0===n&&(n=0);for(var r=n,t=0,o=3&e.length,a=e.length-o,i=0;i<a;)t=255&e.charCodeAt(i)|(255&e.charCodeAt(++i))<<8|(255&e.charCodeAt(++i))<<16|(255&e.charCodeAt(++i))<<24,++i,t=h(t=Math.imul(t,u),15),r=h(r^=t=Math.imul(t,s),13),r=Math.imul(r,5)+l;switch(t=0,o){case 3:t^=(255&e.charCodeAt(i+2))<<16;case 2:t^=(255&e.charCodeAt(i+1))<<8;case 1:t^=255&e.charCodeAt(i),t=h(t=Math.imul(t,u),15),r^=t=Math.imul(t,s)}return((r=function(e){return e^=e>>>16,e=Math.imul(e,f),e^=e>>>13,e=Math.imul(e,d),e^e>>>16}(r^=e.length))>>>0).toString(36)}function v(e,n){return new Promise((function(r){setTimeout((function(){return r(n)}),e)}))}function p(e,n,r){return Promise.all(e.map((function(e){var t=performance.now();return Promise.race([e.then((function(e){return{value:e,elapsed:performance.now()-t}})),v(n,r).then((function(e){return{value:e,elapsed:performance.now()-t}}))])})))}function g(e,n,r){return Promise.all(e.map((function(e){return Promise.race([e,v(n,r)])})))}var w=1e3;function y(){return n(this,void 0,void 0,(function(){var e,n,o,i,u;return r(this,(function(r){switch(r.label){case 0:return r.trys.push([0,3,,4]),[4,c()];case 1:return e=r.sent(),n=Object.keys(e),[4,g(Object.values(e),w,a)];case 2:return o=r.sent(),i=o.filter((function(e){return void 0!==e})),u={},i.forEach((function(e,r){u[n[r]]=e})),[2,S(u,t.exclude||[])];case 3:throw r.sent();case 4:return[2]}}))}))}function S(e,n){var r={},t=function(t){if(e.hasOwnProperty(t)){var o=e[t];if("object"!=typeof o||Array.isArray(o))n.includes(t)||(r[t]=o);else{var a=S(o,n.map((function(e){return e.startsWith(t+".")?e.slice(t.length+1):e})));Object.keys(a).length>0&&(r[t]=a)}}};for(var o in e)t(o);return r}function b(e){for(var n=0,r=0;r<e.length;++r)n+=Math.abs(e[r]);return n}function P(e,n,r){for(var t=[],o=0;o<e[0].data.length;o++){for(var a=[],i=0;i<e.length;i++)a.push(e[i].data[o]);t.push(E(a))}var c=new Uint8ClampedArray(t);return new ImageData(c,n,r)}function E(e){if(0===e.length)return 0;for(var n={},r=0,t=e;r<t.length;r++){n[a=t[r]]=(n[a]||0)+1}var o=e[0];for(var a in n)n[a]>n[o]&&(o=parseInt(a,10));return o}function M(){if("undefined"==typeof navigator)return{name:"unknown",version:"unknown"};for(var e=navigator.userAgent,n={Edg:"Edge",OPR:"Opera"},r=0,t=[/(?<name>Edge|Edg)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>(?:Chrome|Chromium|OPR|Opera|Vivaldi|Brave))\/(?<version>\d+(?:\.\d+)?)/,/(?<name>(?:Firefox|Waterfox|Iceweasel|IceCat))\/(?<version>\d+(?:\.\d+)?)/,/(?<name>Safari)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>MSIE|Trident|IEMobile).+?(?<version>\d+(?:\.\d+)?)/,/(?<name>[A-Za-z]+)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>SamsungBrowser)\/(?<version>\d+(?:\.\d+)?)/];r<t.length;r++){var o=t[r],a=e.match(o);if(a&&a.groups)return{name:n[a.groups.name]||a.groups.name,version:a.groups.version}}return{name:"unknown",version:"unknown"}}i("audio",(function(){return n(this,void 0,void 0,(function(){return r(this,(function(e){return[2,new Promise((function(e,n){try{var r=new(window.OfflineAudioContext||window.webkitOfflineAudioContext)(1,5e3,44100),t=r.createBufferSource(),o=r.createOscillator();o.frequency.value=1e3;var a,i=r.createDynamicsCompressor();i.threshold.value=-50,i.knee.value=40,i.ratio.value=12,i.attack.value=0,i.release.value=.2,o.connect(i),i.connect(r.destination),o.start(),r.oncomplete=function(n){a=n.renderedBuffer.getChannelData(0),e({sampleHash:b(a),oscillator:o.type,maxChannels:r.destination.maxChannelCount,channelCountMode:t.channelCountMode})},r.startRendering()}catch(e){console.error("Error creating audio fingerprint:",e),n(e)}}))]}))}))}));var C="SamsungBrowser"!==M().name?1:3,A=280,x=20;"Firefox"!=M().name&&i("canvas",(function(){return document.createElement("canvas").getContext("2d"),new Promise((function(e){var n=Array.from({length:C},(function(){return function(){var e=document.createElement("canvas"),n=e.getContext("2d");if(!n)return new ImageData(1,1);e.width=A,e.height=x;var r=n.createLinearGradient(0,0,e.width,e.height);r.addColorStop(0,"red"),r.addColorStop(1/6,"orange"),r.addColorStop(2/6,"yellow"),r.addColorStop(.5,"green"),r.addColorStop(4/6,"blue"),r.addColorStop(5/6,"indigo"),r.addColorStop(1,"violet"),n.fillStyle=r,n.fillRect(0,0,e.width,e.height);var t="Random Text WMwmil10Oo";n.font="23.123px Arial",n.fillStyle="black",n.fillText(t,-5,15),n.fillStyle="rgba(0, 0, 255, 0.5)",n.fillText(t,-3.3,17.7),n.beginPath(),n.moveTo(0,0),n.lineTo(2*e.width/7,e.height),n.strokeStyle="white",n.lineWidth=2,n.stroke();var o=n.getImageData(0,0,e.width,e.height);return o}()}));e({commonImageDataHash:m(P(n,A,x).data.toString()).toString()})}))}));var T=["Arial","Arial Black","Arial Narrow","Arial Rounded MT","Arimo","Archivo","Barlow","Bebas Neue","Bitter","Bookman","Calibri","Cabin","Candara","Century","Century Gothic","Comic Sans MS","Constantia","Courier","Courier New","Crimson Text","DM Mono","DM Sans","DM Serif Display","DM Serif Text","Dosis","Droid Sans","Exo","Fira Code","Fira Sans","Franklin Gothic Medium","Garamond","Geneva","Georgia","Gill Sans","Helvetica","Impact","Inconsolata","Indie Flower","Inter","Josefin Sans","Karla","Lato","Lexend","Lucida Bright","Lucida Console","Lucida Sans Unicode","Manrope","Merriweather","Merriweather Sans","Montserrat","Myriad","Noto Sans","Nunito","Nunito Sans","Open Sans","Optima","Orbitron","Oswald","Pacifico","Palatino","Perpetua","PT Sans","PT Serif","Poppins","Prompt","Public Sans","Quicksand","Rajdhani","Recursive","Roboto","Roboto Condensed","Rockwell","Rubik","Segoe Print","Segoe Script","Segoe UI","Sora","Source Sans Pro","Space Mono","Tahoma","Taviraj","Times","Times New Roman","Titillium Web","Trebuchet MS","Ubuntu","Varela Round","Verdana","Work Sans"],k=["monospace","sans-serif","serif"];function I(e,n){if(!e)throw new Error("Canvas context not supported");return e.font,e.font="72px ".concat(n),e.measureText("WwMmLli0Oo").width}function R(){var e,n=document.createElement("canvas"),r=null!==(e=n.getContext("webgl"))&&void 0!==e?e:n.getContext("experimental-webgl");return r&&"getParameter"in r?{vendor:(r.getParameter(r.VENDOR)||"").toString(),renderer:(r.getParameter(r.RENDERER)||"").toString(),version:(r.getParameter(r.VERSION)||"").toString(),shadingLanguageVersion:(r.getParameter(r.SHADING_LANGUAGE_VERSION)||"").toString()}:"undefined"}function O(){var e=new Float32Array(1),n=new Uint8Array(e.buffer);return e[0]=1/0,e[0]=e[0]-e[0],n[3]}function D(e,n){var r={};return n.forEach((function(n){var t=function(e){if(0===e.length)return null;var n={};e.forEach((function(e){var r=String(e);n[r]=(n[r]||0)+1}));var r=e[0],t=1;return Object.keys(n).forEach((function(e){n[e]>t&&(r=e,t=n[e])})),r}(e.map((function(e){return n in e?e[n]:void 0})).filter((function(e){return void 0!==e})));t&&(r[n]=t)})),r}"Firefox"!=M().name&&i("fonts",(function(){var e=this;return new Promise((function(t,o){try{!function(e){var t;n(this,void 0,void 0,(function(){var n,o,a;return r(this,(function(r){switch(r.label){case 0:return document.body?[3,2]:[4,(i=50,new Promise((function(e){return setTimeout(e,i,c)})))];case 1:return r.sent(),[3,0];case 2:if(n=document.createElement("iframe"),(o=n.style).setProperty("display","block","important"),o.setProperty("visibility","visible"),n.src="about:blank",document.body.appendChild(n),!(a=n.contentDocument||(null===(t=n.contentWindow)||void 0===t?void 0:t.document)))throw new Error("Iframe document is not accessible");return e({iframe:a}),setTimeout((function(){document.body.removeChild(n)}),0),[2]}var i,c}))}))}((function(o){var a=o.iframe;return n(e,void 0,void 0,(function(){var e,n,o,i;return r(this,(function(r){return"Hello, world!",e=a.createElement("canvas"),n=e.getContext("2d"),o=k.map((function(e){return I(n,e)})),i={},T.forEach((function(e){var r=I(n,e);o.includes(r)||(i[e]=r)})),t(i),[2]}))}))}))}catch(e){o({error:"unsupported"})}}))})),i("hardware",(function(){return new Promise((function(e,n){var r=void 0!==navigator.deviceMemory?navigator.deviceMemory:0,t=window.performance&&window.performance.memory?window.performance.memory:0;e({videocard:R(),architecture:O(),deviceMemory:r.toString()||"undefined",jsHeapSizeLimit:t.jsHeapSizeLimit||"undefined"})}))})),i("locales",(function(){return new Promise((function(e){e({languages:navigator.language,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone})}))}));var F=["accelerometer","accessibility","accessibility-events","ambient-light-sensor","background-fetch","background-sync","bluetooth","camera","clipboard-read","clipboard-write","device-info","display-capture","gyroscope","geolocation","local-fonts","magnetometer","microphone","midi","nfc","notifications","payment-handler","persistent-storage","push","speaker","storage-access","top-level-storage-access","window-management","query"];function B(){var e=[],n={"prefers-contrast":["high","more","low","less","forced","no-preference"],"any-hover":["hover","none"],"any-pointer":["none","coarse","fine"],pointer:["none","coarse","fine"],hover:["hover","none"],update:["fast","slow"],color:["8","16","256"],"inverted-colors":["inverted","none"],"prefers-reduced-motion":["reduce","no-preference"],"prefers-reduced-transparency":["reduce","no-preference"],scripting:["none","initial-only","enabled"],"forced-colors":["active","none"],"prefers-color-scheme":["dark","light","no-preference"]};return Object.keys(n).forEach((function(r){n[r].forEach((function(n){matchMedia("(".concat(r,": ").concat(n,")")).matches&&e.push("".concat(r,": ").concat(n))}))})),e}function L(){if("https:"===window.location.protocol&&"function"==typeof window.ApplePaySession)try{for(var e=window.ApplePaySession.supportsVersion,n=15;n>0;n--)if(e(n))return n}catch(e){return 0}return 0}i("permissions",(function(){return n(this,void 0,void 0,(function(){var e;return r(this,(function(t){return e=Array.from({length:3},(function(){return function(){return n(this,void 0,void 0,(function(){var e,n,t,o,a;return r(this,(function(r){switch(r.label){case 0:e={},n=0,t=F,r.label=1;case 1:if(!(n<t.length))return[3,6];o=t[n],r.label=2;case 2:return r.trys.push([2,4,,5]),[4,navigator.permissions.query({name:o})];case 3:return a=r.sent(),e[o]=a.state.toString(),[3,5];case 4:return r.sent(),[3,5];case 5:return n++,[3,1];case 6:return[2,e]}}))}))}()})),[2,Promise.all(e).then((function(e){return D(e,F)}))]}))}))})),i("plugins",(function(){var e=[];if(navigator.plugins)for(var n=0;n<navigator.plugins.length;n++){var r=navigator.plugins[n];e.push([r.name,r.filename,r.description].join("|"))}return new Promise((function(n){n({plugins:e})}))})),i("screen",(function(){return new Promise((function(e){e({is_touchscreen:navigator.maxTouchPoints>0,maxTouchPoints:navigator.maxTouchPoints,colorDepth:screen.colorDepth,mediaMatches:B()})}))})),i("system",(function(){return new Promise((function(e){var n=M();e({platform:window.navigator.platform,cookieEnabled:window.navigator.cookieEnabled,productSub:navigator.productSub,product:navigator.product,useragent:navigator.userAgent,browser:{name:n.name,version:n.version},applePayVersion:L()})}))}));var N,_="SamsungBrowser"!==M().name?1:3,j=null;"undefined"!=typeof document&&((N=document.createElement("canvas")).width=200,N.height=100,j=N.getContext("webgl")),i("webgl",(function(){return n(this,void 0,void 0,(function(){var e;return r(this,(function(n){try{if(!j)throw new Error("WebGL not supported");return e=Array.from({length:_},(function(){return function(){try{if(!j)throw new Error("WebGL not supported");var e="\n attribute vec2 position;\n void main() {\n gl_Position = vec4(position, 0.0, 1.0);\n }\n ",n="\n precision mediump float;\n void main() {\n gl_FragColor = vec4(0.812, 0.195, 0.553, 0.921); // Set line color\n }\n ",r=j.createShader(j.VERTEX_SHADER),t=j.createShader(j.FRAGMENT_SHADER);if(!r||!t)throw new Error("Failed to create shaders");if(j.shaderSource(r,e),j.shaderSource(t,n),j.compileShader(r),!j.getShaderParameter(r,j.COMPILE_STATUS))throw new Error("Vertex shader compilation failed: "+j.getShaderInfoLog(r));if(j.compileShader(t),!j.getShaderParameter(t,j.COMPILE_STATUS))throw new Error("Fragment shader compilation failed: "+j.getShaderInfoLog(t));var o=j.createProgram();if(!o)throw new Error("Failed to create shader program");if(j.attachShader(o,r),j.attachShader(o,t),j.linkProgram(o),!j.getProgramParameter(o,j.LINK_STATUS))throw new Error("Shader program linking failed: "+j.getProgramInfoLog(o));j.useProgram(o);for(var a=137,i=new Float32Array(4*a),c=2*Math.PI/a,u=0;u<a;u++){var s=u*c;i[4*u]=0,i[4*u+1]=0,i[4*u+2]=Math.cos(s)*(N.width/2),i[4*u+3]=Math.sin(s)*(N.height/2)}var l=j.createBuffer();j.bindBuffer(j.ARRAY_BUFFER,l),j.bufferData(j.ARRAY_BUFFER,i,j.STATIC_DRAW);var f=j.getAttribLocation(o,"position");j.enableVertexAttribArray(f),j.vertexAttribPointer(f,2,j.FLOAT,!1,0,0),j.viewport(0,0,N.width,N.height),j.clearColor(0,0,0,1),j.clear(j.COLOR_BUFFER_BIT),j.drawArrays(j.LINES,0,2*a);var d=new Uint8ClampedArray(N.width*N.height*4);return j.readPixels(0,0,N.width,N.height,j.RGBA,j.UNSIGNED_BYTE,d),new ImageData(d,N.width,N.height)}catch(e){return console.error(e),new ImageData(1,1)}finally{j&&(j.bindBuffer(j.ARRAY_BUFFER,null),j.useProgram(null),j.viewport(0,0,j.drawingBufferWidth,j.drawingBufferHeight),j.clearColor(0,0,0,0))}}()})),[2,{commonImageHash:m(P(e,N.width,N.height).data.toString()).toString()}]}catch(e){return[2,{webgl:"unsupported"}]}return[2]}))}))}));var G=function(e,n,r,t){for(var o=(r-n)/t,a=0,i=0;i<t;i++){a+=e(n+(i+.5)*o)}return a*o};i("math",(function(){return n(void 0,void 0,void 0,(function(){return r(this,(function(e){return[2,{acos:Math.acos(.5),asin:G(Math.asin,-1,1,97),atan:G(Math.atan,-1,1,97),cos:G(Math.cos,0,Math.PI,97),cosh:Math.cosh(9/7),e:Math.E,largeCos:Math.cos(1e20),largeSin:Math.sin(1e20),largeTan:Math.tan(1e20),log:Math.log(1e3),pi:Math.PI,sin:G(Math.sin,-Math.PI,Math.PI,97),sinh:G(Math.sinh,-9/7,7/9,97),sqrt:Math.sqrt(2),tan:G(Math.tan,0,2*Math.PI,97),tanh:G(Math.tanh,-9/7,7/9,97)}]}))}))})),e.getFingerprint=function(){return n(this,void 0,void 0,(function(){var e;return r(this,(function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,y()];case 1:return e=n.sent(),[2,m(JSON.stringify(e)).toString()];case 2:throw n.sent();case 3:return[2]}}))}))},e.getFingerprintData=y,e.getFingerprintPerformance=function(){return n(this,void 0,void 0,(function(){var e,n,t,o;return r(this,(function(r){switch(r.label){case 0:return r.trys.push([0,2,,3]),e=c(),n=Object.keys(e),[4,p(Object.values(e),w,a)];case 1:return t=r.sent(),o={elapsed:{}},t.forEach((function(e,r){o[n[r]]=e.value,o.elapsed[n[r]]=e.elapsed})),[2,o];case 2:throw r.sent();case 3:return[2]}}))}))},e.getVersion=function(){return"0.14.0"},e.setOption=function(e,n){if(!["exclude"].includes(e))throw new Error("Unknown option "+e);if(["exclude"].includes(e)&&(!Array.isArray(n)||!n.every((function(e){return"string"==typeof e}))))throw new Error("The value of the exclude must be an array of strings");t[e]=n}}));
|
|
1
|
+
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self).ThumbmarkJS={})}(this,(function(e){"use strict";function n(e,n,r,t){return new(r||(r=Promise))((function(o,a){function i(e){try{u(t.next(e))}catch(e){a(e)}}function c(e){try{u(t.throw(e))}catch(e){a(e)}}function u(e){var n;e.done?o(e.value):(n=e.value,n instanceof r?n:new r((function(e){e(n)}))).then(i,c)}u((t=t.apply(e,n||[])).next())}))}function r(e,n){var r,t,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function c(c){return function(u){return function(c){if(r)throw new TypeError("Generator is already executing.");for(;a&&(a=0,c[0]&&(i=0)),i;)try{if(r=1,t&&(o=2&c[0]?t.return:c[0]?t.throw||((o=t.return)&&o.call(t),0):t.next)&&!(o=o.call(t,c[1])).done)return o;switch(t=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return i.label++,{value:c[1],done:!1};case 5:i.label++,t=c[1],c=[0];continue;case 7:c=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==c[0]&&2!==c[0])){i=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){i.label=c[1];break}if(6===c[0]&&i.label<o[1]){i.label=o[1],o=c;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(c);break}o[2]&&i.ops.pop(),i.trys.pop();continue}c=n.call(e,i)}catch(e){c=[6,e],t=0}finally{r=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,u])}}}"function"==typeof SuppressedError&&SuppressedError;var t={exclude:[]};var o={},a={timeout:"true"},i=function(e,n){"undefined"!=typeof window&&(o[e]=n)},c=function(){return Object.fromEntries(Object.entries(o).filter((function(e){var n,r=e[0];return!(null===(n=null==t?void 0:t.exclude)||void 0===n?void 0:n.includes(r))})).map((function(e){return[e[0],(0,e[1])()]})))},u=3432918353,s=461845907,l=3864292196,f=2246822507,d=3266489909;function h(e,n){return e<<n|e>>>32-n}function m(e,n){void 0===n&&(n=0);for(var r=n,t=0,o=3&e.length,a=e.length-o,i=0;i<a;)t=255&e.charCodeAt(i)|(255&e.charCodeAt(++i))<<8|(255&e.charCodeAt(++i))<<16|(255&e.charCodeAt(++i))<<24,++i,t=h(t=Math.imul(t,u),15),r=h(r^=t=Math.imul(t,s),13),r=Math.imul(r,5)+l;switch(t=0,o){case 3:t^=(255&e.charCodeAt(i+2))<<16;case 2:t^=(255&e.charCodeAt(i+1))<<8;case 1:t^=255&e.charCodeAt(i),t=h(t=Math.imul(t,u),15),r^=t=Math.imul(t,s)}return((r=function(e){return e^=e>>>16,e=Math.imul(e,f),e^=e>>>13,e=Math.imul(e,d),e^e>>>16}(r^=e.length))>>>0).toString(36)}function v(e,n){return new Promise((function(r){setTimeout((function(){return r(n)}),e)}))}function p(e,n,r){return Promise.all(e.map((function(e){var t=performance.now();return Promise.race([e.then((function(e){return{value:e,elapsed:performance.now()-t}})),v(n,r).then((function(e){return{value:e,elapsed:performance.now()-t}}))])})))}function g(e,n,r){return Promise.all(e.map((function(e){return Promise.race([e,v(n,r)])})))}var w=1e3;function y(){return n(this,void 0,void 0,(function(){var e,n,o,i,u;return r(this,(function(r){switch(r.label){case 0:return r.trys.push([0,3,,4]),[4,c()];case 1:return e=r.sent(),n=Object.keys(e),[4,g(Object.values(e),w,a)];case 2:return o=r.sent(),i=o.filter((function(e){return void 0!==e})),u={},i.forEach((function(e,r){u[n[r]]=e})),[2,S(u,t.exclude||[])];case 3:throw r.sent();case 4:return[2]}}))}))}function S(e,n){var r={},t=function(t){if(e.hasOwnProperty(t)){var o=e[t];if("object"!=typeof o||Array.isArray(o))n.includes(t)||(r[t]=o);else{var a=S(o,n.map((function(e){return e.startsWith(t+".")?e.slice(t.length+1):e})));Object.keys(a).length>0&&(r[t]=a)}}};for(var o in e)t(o);return r}function b(e){for(var n=0,r=0;r<e.length;++r)n+=Math.abs(e[r]);return n}function P(e,n,r){for(var t=[],o=0;o<e[0].data.length;o++){for(var a=[],i=0;i<e.length;i++)a.push(e[i].data[o]);t.push(E(a))}var c=new Uint8ClampedArray(t);return new ImageData(c,n,r)}function E(e){if(0===e.length)return 0;for(var n={},r=0,t=e;r<t.length;r++){n[a=t[r]]=(n[a]||0)+1}var o=e[0];for(var a in n)n[a]>n[o]&&(o=parseInt(a,10));return o}function M(){if("undefined"==typeof navigator)return{name:"unknown",version:"unknown"};for(var e=navigator.userAgent,n={Edg:"Edge",OPR:"Opera"},r=0,t=[/(?<name>Edge|Edg)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>(?:Chrome|Chromium|OPR|Opera|Vivaldi|Brave))\/(?<version>\d+(?:\.\d+)?)/,/(?<name>(?:Firefox|Waterfox|Iceweasel|IceCat))\/(?<version>\d+(?:\.\d+)?)/,/(?<name>Safari)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>MSIE|Trident|IEMobile).+?(?<version>\d+(?:\.\d+)?)/,/(?<name>[A-Za-z]+)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>SamsungBrowser)\/(?<version>\d+(?:\.\d+)?)/];r<t.length;r++){var o=t[r],a=e.match(o);if(a&&a.groups)return{name:n[a.groups.name]||a.groups.name,version:a.groups.version}}return{name:"unknown",version:"unknown"}}i("audio",(function(){return n(this,void 0,void 0,(function(){return r(this,(function(e){return[2,new Promise((function(e,n){try{var r=new(window.OfflineAudioContext||window.webkitOfflineAudioContext)(1,5e3,44100),t=r.createBufferSource(),o=r.createOscillator();o.frequency.value=1e3;var a,i=r.createDynamicsCompressor();i.threshold.value=-50,i.knee.value=40,i.ratio.value=12,i.attack.value=0,i.release.value=.2,o.connect(i),i.connect(r.destination),o.start(),r.oncomplete=function(n){a=n.renderedBuffer.getChannelData(0),e({sampleHash:b(a),oscillator:o.type,maxChannels:r.destination.maxChannelCount,channelCountMode:t.channelCountMode})},r.startRendering()}catch(e){console.error("Error creating audio fingerprint:",e),n(e)}}))]}))}))}));var C="SamsungBrowser"!==M().name?1:3,A=280,x=20;"Firefox"!=M().name&&i("canvas",(function(){return document.createElement("canvas").getContext("2d"),new Promise((function(e){var n=Array.from({length:C},(function(){return function(){var e=document.createElement("canvas"),n=e.getContext("2d");if(!n)return new ImageData(1,1);e.width=A,e.height=x;var r=n.createLinearGradient(0,0,e.width,e.height);r.addColorStop(0,"red"),r.addColorStop(1/6,"orange"),r.addColorStop(2/6,"yellow"),r.addColorStop(.5,"green"),r.addColorStop(4/6,"blue"),r.addColorStop(5/6,"indigo"),r.addColorStop(1,"violet"),n.fillStyle=r,n.fillRect(0,0,e.width,e.height);var t="Random Text WMwmil10Oo";n.font="23.123px Arial",n.fillStyle="black",n.fillText(t,-5,15),n.fillStyle="rgba(0, 0, 255, 0.5)",n.fillText(t,-3.3,17.7),n.beginPath(),n.moveTo(0,0),n.lineTo(2*e.width/7,e.height),n.strokeStyle="white",n.lineWidth=2,n.stroke();var o=n.getImageData(0,0,e.width,e.height);return o}()}));e({commonImageDataHash:m(P(n,A,x).data.toString()).toString()})}))}));var T=["Arial","Arial Black","Arial Narrow","Arial Rounded MT","Arimo","Archivo","Barlow","Bebas Neue","Bitter","Bookman","Calibri","Cabin","Candara","Century","Century Gothic","Comic Sans MS","Constantia","Courier","Courier New","Crimson Text","DM Mono","DM Sans","DM Serif Display","DM Serif Text","Dosis","Droid Sans","Exo","Fira Code","Fira Sans","Franklin Gothic Medium","Garamond","Geneva","Georgia","Gill Sans","Helvetica","Impact","Inconsolata","Indie Flower","Inter","Josefin Sans","Karla","Lato","Lexend","Lucida Bright","Lucida Console","Lucida Sans Unicode","Manrope","Merriweather","Merriweather Sans","Montserrat","Myriad","Noto Sans","Nunito","Nunito Sans","Open Sans","Optima","Orbitron","Oswald","Pacifico","Palatino","Perpetua","PT Sans","PT Serif","Poppins","Prompt","Public Sans","Quicksand","Rajdhani","Recursive","Roboto","Roboto Condensed","Rockwell","Rubik","Segoe Print","Segoe Script","Segoe UI","Sora","Source Sans Pro","Space Mono","Tahoma","Taviraj","Times","Times New Roman","Titillium Web","Trebuchet MS","Ubuntu","Varela Round","Verdana","Work Sans"],k=["monospace","sans-serif","serif"];function I(e,n){if(!e)throw new Error("Canvas context not supported");return e.font,e.font="72px ".concat(n),e.measureText("WwMmLli0Oo").width}function R(){var e,n=document.createElement("canvas"),r=null!==(e=n.getContext("webgl"))&&void 0!==e?e:n.getContext("experimental-webgl");return r&&"getParameter"in r?{vendor:(r.getParameter(r.VENDOR)||"").toString(),renderer:(r.getParameter(r.RENDERER)||"").toString(),version:(r.getParameter(r.VERSION)||"").toString(),shadingLanguageVersion:(r.getParameter(r.SHADING_LANGUAGE_VERSION)||"").toString()}:"undefined"}function O(){var e=new Float32Array(1),n=new Uint8Array(e.buffer);return e[0]=1/0,e[0]=e[0]-e[0],n[3]}function D(e,n){var r={};return n.forEach((function(n){var t=function(e){if(0===e.length)return null;var n={};e.forEach((function(e){var r=String(e);n[r]=(n[r]||0)+1}));var r=e[0],t=1;return Object.keys(n).forEach((function(e){n[e]>t&&(r=e,t=n[e])})),r}(e.map((function(e){return n in e?e[n]:void 0})).filter((function(e){return void 0!==e})));t&&(r[n]=t)})),r}"Firefox"!=M().name&&i("fonts",(function(){var e=this;return new Promise((function(t,o){try{!function(e){var t;n(this,void 0,void 0,(function(){var n,o,a;return r(this,(function(r){switch(r.label){case 0:return document.body?[3,2]:[4,(i=50,new Promise((function(e){return setTimeout(e,i,c)})))];case 1:return r.sent(),[3,0];case 2:if(n=document.createElement("iframe"),(o=n.style).setProperty("display","block","important"),o.setProperty("visibility","visible"),n.src="about:blank",document.body.appendChild(n),!(a=n.contentDocument||(null===(t=n.contentWindow)||void 0===t?void 0:t.document)))throw new Error("Iframe document is not accessible");return e({iframe:a}),setTimeout((function(){document.body.removeChild(n)}),0),[2]}var i,c}))}))}((function(o){var a=o.iframe;return n(e,void 0,void 0,(function(){var e,n,o,i;return r(this,(function(r){return"Hello, world!",e=a.createElement("canvas"),n=e.getContext("2d"),o=k.map((function(e){return I(n,e)})),i={},T.forEach((function(e){var r=I(n,e);o.includes(r)||(i[e]=r)})),t(i),[2]}))}))}))}catch(e){o({error:"unsupported"})}}))})),i("hardware",(function(){return new Promise((function(e,n){var r=void 0!==navigator.deviceMemory?navigator.deviceMemory:0,t=window.performance&&window.performance.memory?window.performance.memory:0;e({videocard:R(),architecture:O(),deviceMemory:r.toString()||"undefined",jsHeapSizeLimit:t.jsHeapSizeLimit||"undefined"})}))})),i("locales",(function(){return new Promise((function(e){e({languages:navigator.language,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone})}))}));var F=["accelerometer","accessibility","accessibility-events","ambient-light-sensor","background-fetch","background-sync","bluetooth","camera","clipboard-read","clipboard-write","device-info","display-capture","gyroscope","geolocation","local-fonts","magnetometer","microphone","midi","nfc","notifications","payment-handler","persistent-storage","push","speaker","storage-access","top-level-storage-access","window-management","query"];function B(){var e=[],n={"prefers-contrast":["high","more","low","less","forced","no-preference"],"any-hover":["hover","none"],"any-pointer":["none","coarse","fine"],pointer:["none","coarse","fine"],hover:["hover","none"],update:["fast","slow"],color:["8","16","256"],"inverted-colors":["inverted","none"],"prefers-reduced-motion":["reduce","no-preference"],"prefers-reduced-transparency":["reduce","no-preference"],scripting:["none","initial-only","enabled"],"forced-colors":["active","none"],"prefers-color-scheme":["dark","light","no-preference"]};return Object.keys(n).forEach((function(r){n[r].forEach((function(n){matchMedia("(".concat(r,": ").concat(n,")")).matches&&e.push("".concat(r,": ").concat(n))}))})),e}function L(){if("https:"===window.location.protocol&&"function"==typeof window.ApplePaySession)try{for(var e=window.ApplePaySession.supportsVersion,n=15;n>0;n--)if(e(n))return n}catch(e){return 0}return 0}i("permissions",(function(){return n(this,void 0,void 0,(function(){var e;return r(this,(function(t){return e=Array.from({length:3},(function(){return function(){return n(this,void 0,void 0,(function(){var e,n,t,o,a;return r(this,(function(r){switch(r.label){case 0:e={},n=0,t=F,r.label=1;case 1:if(!(n<t.length))return[3,6];o=t[n],r.label=2;case 2:return r.trys.push([2,4,,5]),[4,navigator.permissions.query({name:o})];case 3:return a=r.sent(),e[o]=a.state.toString(),[3,5];case 4:return r.sent(),[3,5];case 5:return n++,[3,1];case 6:return[2,e]}}))}))}()})),[2,Promise.all(e).then((function(e){return D(e,F)}))]}))}))})),i("plugins",(function(){var e=[];if(navigator.plugins)for(var n=0;n<navigator.plugins.length;n++){var r=navigator.plugins[n];e.push([r.name,r.filename,r.description].join("|"))}return new Promise((function(n){n({plugins:e})}))})),i("screen",(function(){return new Promise((function(e){e({is_touchscreen:navigator.maxTouchPoints>0,maxTouchPoints:navigator.maxTouchPoints,colorDepth:screen.colorDepth,mediaMatches:B()})}))})),i("system",(function(){return new Promise((function(e){var n=M();e({platform:window.navigator.platform,cookieEnabled:window.navigator.cookieEnabled,productSub:navigator.productSub,product:navigator.product,useragent:navigator.userAgent,browser:{name:n.name,version:n.version},applePayVersion:L()})}))}));var N,_="SamsungBrowser"!==M().name?1:3,j=null;"undefined"!=typeof document&&((N=document.createElement("canvas")).width=200,N.height=100,j=N.getContext("webgl")),i("webgl",(function(){return n(this,void 0,void 0,(function(){var e;return r(this,(function(n){try{if(!j)throw new Error("WebGL not supported");return e=Array.from({length:_},(function(){return function(){try{if(!j)throw new Error("WebGL not supported");var e="\n attribute vec2 position;\n void main() {\n gl_Position = vec4(position, 0.0, 1.0);\n }\n ",n="\n precision mediump float;\n void main() {\n gl_FragColor = vec4(0.812, 0.195, 0.553, 0.921); // Set line color\n }\n ",r=j.createShader(j.VERTEX_SHADER),t=j.createShader(j.FRAGMENT_SHADER);if(!r||!t)throw new Error("Failed to create shaders");if(j.shaderSource(r,e),j.shaderSource(t,n),j.compileShader(r),!j.getShaderParameter(r,j.COMPILE_STATUS))throw new Error("Vertex shader compilation failed: "+j.getShaderInfoLog(r));if(j.compileShader(t),!j.getShaderParameter(t,j.COMPILE_STATUS))throw new Error("Fragment shader compilation failed: "+j.getShaderInfoLog(t));var o=j.createProgram();if(!o)throw new Error("Failed to create shader program");if(j.attachShader(o,r),j.attachShader(o,t),j.linkProgram(o),!j.getProgramParameter(o,j.LINK_STATUS))throw new Error("Shader program linking failed: "+j.getProgramInfoLog(o));j.useProgram(o);for(var a=137,i=new Float32Array(4*a),c=2*Math.PI/a,u=0;u<a;u++){var s=u*c;i[4*u]=0,i[4*u+1]=0,i[4*u+2]=Math.cos(s)*(N.width/2),i[4*u+3]=Math.sin(s)*(N.height/2)}var l=j.createBuffer();j.bindBuffer(j.ARRAY_BUFFER,l),j.bufferData(j.ARRAY_BUFFER,i,j.STATIC_DRAW);var f=j.getAttribLocation(o,"position");j.enableVertexAttribArray(f),j.vertexAttribPointer(f,2,j.FLOAT,!1,0,0),j.viewport(0,0,N.width,N.height),j.clearColor(0,0,0,1),j.clear(j.COLOR_BUFFER_BIT),j.drawArrays(j.LINES,0,2*a);var d=new Uint8ClampedArray(N.width*N.height*4);return j.readPixels(0,0,N.width,N.height,j.RGBA,j.UNSIGNED_BYTE,d),new ImageData(d,N.width,N.height)}catch(e){return console.error(e),new ImageData(1,1)}finally{j&&(j.bindBuffer(j.ARRAY_BUFFER,null),j.useProgram(null),j.viewport(0,0,j.drawingBufferWidth,j.drawingBufferHeight),j.clearColor(0,0,0,0))}}()})),[2,{commonImageHash:m(P(e,N.width,N.height).data.toString()).toString()}]}catch(e){return[2,{webgl:"unsupported"}]}return[2]}))}))}));var G=function(e,n,r,t){for(var o=(r-n)/t,a=0,i=0;i<t;i++){a+=e(n+(i+.5)*o)}return a*o};i("math",(function(){return n(void 0,void 0,void 0,(function(){return r(this,(function(e){return[2,{acos:Math.acos(.5),asin:G(Math.asin,-1,1,97),atan:G(Math.atan,-1,1,97),cos:G(Math.cos,0,Math.PI,97),cosh:Math.cosh(9/7),e:Math.E,largeCos:Math.cos(1e20),largeSin:Math.sin(1e20),largeTan:Math.tan(1e20),log:Math.log(1e3),pi:Math.PI,sin:G(Math.sin,-Math.PI,Math.PI,97),sinh:G(Math.sinh,-9/7,7/9,97),sqrt:Math.sqrt(2),tan:G(Math.tan,0,2*Math.PI,97),tanh:G(Math.tanh,-9/7,7/9,97)}]}))}))})),e.getFingerprint=function(){return n(this,void 0,void 0,(function(){var e;return r(this,(function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,y()];case 1:return e=n.sent(),[2,m(JSON.stringify(e)).toString()];case 2:throw n.sent();case 3:return[2]}}))}))},e.getFingerprintData=y,e.getFingerprintPerformance=function(){return n(this,void 0,void 0,(function(){var e,n,t,o;return r(this,(function(r){switch(r.label){case 0:return r.trys.push([0,2,,3]),e=c(),n=Object.keys(e),[4,p(Object.values(e),w,a)];case 1:return t=r.sent(),o={elapsed:{}},t.forEach((function(e,r){o[n[r]]=e.value,o.elapsed[n[r]]=e.elapsed})),[2,o];case 2:throw r.sent();case 3:return[2]}}))}))},e.getVersion=function(){return"0.14.1"},e.setOption=function(e,n){if(!["exclude"].includes(e))throw new Error("Unknown option "+e);if(["exclude"].includes(e)&&(!Array.isArray(n)||!n.every((function(e){return"string"==typeof e}))))throw new Error("The value of the exclude must be an array of strings");t[e]=n}}));
|
|
2
2
|
//# sourceMappingURL=thumbmark.umd.js.map
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thumbmarkjs/thumbmarkjs",
|
|
3
|
-
"version": "0.14.
|
|
3
|
+
"version": "0.14.2",
|
|
4
4
|
"description": "",
|
|
5
|
-
"main": "dist/thumbmark.cjs.js",
|
|
6
|
-
"module": "dist/thumbmark.esm.js",
|
|
7
|
-
"types": "dist/types/
|
|
5
|
+
"main": "./dist/thumbmark.cjs.js",
|
|
6
|
+
"module": "./dist/thumbmark.esm.js",
|
|
7
|
+
"types": "./dist/types/thumbmark.esm.d.ts",
|
|
8
8
|
"exports": {
|
|
9
9
|
".": {
|
|
10
10
|
"import": "./dist/thumbmark.esm.js",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
],
|
|
18
18
|
"scripts": {
|
|
19
19
|
"test": "jest",
|
|
20
|
-
"build": "rm -rf dist/* && rollup -c"
|
|
20
|
+
"build": "rm -rf dist/* && rm -rf types/* && rollup -c"
|
|
21
21
|
},
|
|
22
22
|
"keywords": [
|
|
23
23
|
"fingerprint",
|
|
@@ -33,12 +33,12 @@
|
|
|
33
33
|
"license": "MIT",
|
|
34
34
|
"unpkg": "dist/thumbmark.umd.js",
|
|
35
35
|
"devDependencies": {
|
|
36
|
-
"@testing-library/jest-dom": "^6.1.6",
|
|
37
36
|
"@rollup/plugin-commonjs": "^25.0.7",
|
|
38
37
|
"@rollup/plugin-json": "^6.1.0",
|
|
39
38
|
"@rollup/plugin-node-resolve": "^15.2.3",
|
|
40
39
|
"@rollup/plugin-terser": "^0.4.4",
|
|
41
40
|
"@rollup/plugin-typescript": "^11.1.6",
|
|
41
|
+
"@testing-library/jest-dom": "^6.1.6",
|
|
42
42
|
"@types/jest": "^29.5.11",
|
|
43
43
|
"@types/jsdom": "^21.1.6",
|
|
44
44
|
"@types/node": "^20.10.6",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Does anyone have a cleaner way of doing this?
|
|
3
|
-
* I want to import all the components in this folder
|
|
4
|
-
* Feels a little dumb I'm doing this manually.
|
|
5
|
-
*/
|
|
6
|
-
import './audio/audio';
|
|
7
|
-
import './canvas/canvas';
|
|
8
|
-
import './fonts/fonts';
|
|
9
|
-
import './hardware/hardware';
|
|
10
|
-
import './locales/locales';
|
|
11
|
-
import './permissions/permissions';
|
|
12
|
-
import './plugins/plugins';
|
|
13
|
-
import './screen/screen';
|
|
14
|
-
import './system/system';
|
|
15
|
-
import './webgl/webgl';
|
|
16
|
-
import './math/math';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/types/factory.d.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This file is used to create the includeComponent function as well as the interfaces each of the
|
|
3
|
-
* fingerprint components must implement.
|
|
4
|
-
*
|
|
5
|
-
*/
|
|
6
|
-
export interface componentInterface {
|
|
7
|
-
[key: string]: string | string[] | number | boolean | componentInterface;
|
|
8
|
-
}
|
|
9
|
-
export interface componentFunctionInterface {
|
|
10
|
-
(): Promise<componentInterface>;
|
|
11
|
-
}
|
|
12
|
-
export declare const components: {
|
|
13
|
-
[name: string]: componentFunctionInterface;
|
|
14
|
-
};
|
|
15
|
-
export declare const timeoutInstance: componentInterface;
|
|
16
|
-
/**
|
|
17
|
-
* includeComponent is the function each component function needs to call in order for the component to be included
|
|
18
|
-
* in the fingerprint.
|
|
19
|
-
* @param {string} name - the name identifier of the component
|
|
20
|
-
* @param {componentFunctionInterface} creationFunction - the function that implements the component
|
|
21
|
-
* @returns
|
|
22
|
-
*/
|
|
23
|
-
export declare const includeComponent: (name: string, creationFunction: componentFunctionInterface) => void;
|
|
24
|
-
/**
|
|
25
|
-
* The function turns the map of component functions to a map of Promises when called
|
|
26
|
-
* @returns {[name: string]: <Promise>componentInterface}
|
|
27
|
-
*/
|
|
28
|
-
export declare const getComponentPromises: () => {
|
|
29
|
-
[k: string]: Promise<componentInterface>;
|
|
30
|
-
};
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { componentInterface } from '../factory';
|
|
2
|
-
export declare function getFingerprintData(): Promise<componentInterface>;
|
|
3
|
-
export declare function getFingerprint(): Promise<string>;
|
|
4
|
-
export declare function getFingerprintPerformance(): Promise<{
|
|
5
|
-
[key: string]: any;
|
|
6
|
-
}>;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export interface optionsInterface {
|
|
2
|
-
exclude?: string[];
|
|
3
|
-
include?: string[];
|
|
4
|
-
webgl_runs?: number;
|
|
5
|
-
canvas_runs?: number;
|
|
6
|
-
}
|
|
7
|
-
export declare let options: optionsInterface;
|
|
8
|
-
export declare function setOption<K extends keyof optionsInterface>(key: K, value: optionsInterface[K]): void;
|
package/dist/types/index.d.ts
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { getFingerprint, getFingerprintData, getFingerprintPerformance } from './fingerprint/functions';
|
|
2
|
-
import { setOption } from './fingerprint/options';
|
|
3
|
-
import './components';
|
|
4
|
-
declare function getVersion(): string;
|
|
5
|
-
export { setOption, getVersion, getFingerprint, getFingerprintData, getFingerprintPerformance };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function getCommonPixels(images: ImageData[], width: number, height: number): ImageData;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function hash(key: string, seed?: number): string;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function imageDataToDataURL(imageData: ImageData): string;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
type DelayedPromise<T> = Promise<T>;
|
|
2
|
-
export declare function delay<T>(t: number, val: T): DelayedPromise<T>;
|
|
3
|
-
export interface RaceResult<T> {
|
|
4
|
-
value: T;
|
|
5
|
-
elapsed?: number;
|
|
6
|
-
}
|
|
7
|
-
export declare function raceAllPerformance<T>(promises: Promise<T>[], timeoutTime: number, timeoutVal: T): Promise<RaceResult<T>[]>;
|
|
8
|
-
export declare function raceAll<T>(promises: Promise<T>[], timeoutTime: number, timeoutVal: T): Promise<(T | undefined)[]>;
|
|
9
|
-
export {};
|