@thumbmarkjs/thumbmarkjs 0.12.1 → 0.12.3
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 +2 -0
- package/dist/components/canvas/canvas.js +4 -2
- package/dist/components/canvas/canvas.js.map +1 -1
- package/dist/components/system/browser.js +12 -3
- package/dist/components/system/browser.js.map +1 -1
- package/dist/utils/imageDataToDataURL.d.ts +1 -0
- package/dist/utils/imageDataToDataURL.js +16 -0
- package/dist/utils/imageDataToDataURL.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -53,6 +53,8 @@ and in your code
|
|
|
53
53
|
import { getFingerprint } from '@thumbmarkjs/thumbmarkjs'
|
|
54
54
|
```
|
|
55
55
|
|
|
56
|
+
:warning: note, thumbmarkjs was published up to version 0.12.1 to NPM package `thumbmarkjs` and from v0.12.1 onwards will be published under `@thumbmarkjs/thumbmarkjs`. I'll occasionally update the old location, but please update your imports.
|
|
57
|
+
|
|
56
58
|
But bear in mind that the library is meant to be running in the browser. Let me know if the library fails on a server side import. However, `getFingerprint()` is not meant to be called server side.
|
|
57
59
|
|
|
58
60
|
## Build it yourself
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
var factory_1 = require("../../factory");
|
|
4
4
|
var hash_1 = require("../../utils/hash");
|
|
5
5
|
var commonPixels_1 = require("../../utils/commonPixels");
|
|
6
|
+
var browser_1 = require("../system/browser");
|
|
6
7
|
/**
|
|
7
8
|
* A simple canvas finger printing function
|
|
8
9
|
*
|
|
@@ -22,7 +23,7 @@ function generateCanvasFingerprint() {
|
|
|
22
23
|
var imageDatas = Array.from({ length: 3 }, function () { return generateCanvasImageData(); });
|
|
23
24
|
var commonImageData = (0, commonPixels_1.getCommonPixels)(imageDatas, _WIDTH, _HEIGHT);
|
|
24
25
|
resolve({
|
|
25
|
-
'commonImageDataHash': (0, hash_1.hash)(commonImageData.data.toString()).toString()
|
|
26
|
+
'commonImageDataHash': (0, hash_1.hash)(commonImageData.data.toString()).toString(),
|
|
26
27
|
});
|
|
27
28
|
});
|
|
28
29
|
}
|
|
@@ -67,5 +68,6 @@ function generateCanvasImageData() {
|
|
|
67
68
|
// Return data URL of the canvas
|
|
68
69
|
return imageData;
|
|
69
70
|
}
|
|
70
|
-
(0,
|
|
71
|
+
if ((0, browser_1.getBrowser)().name != 'Firefox')
|
|
72
|
+
(0, factory_1.includeComponent)('canvas', generateCanvasFingerprint);
|
|
71
73
|
//# sourceMappingURL=canvas.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvas.js","sourceRoot":"","sources":["../../../src/components/canvas/canvas.ts"],"names":[],"mappings":";;AAAA,yCAAoE;AACpE,yCAAuC;AACvC,yDAA2D;
|
|
1
|
+
{"version":3,"file":"canvas.js","sourceRoot":"","sources":["../../../src/components/canvas/canvas.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,8 +12,10 @@ function getBrowser() {
|
|
|
12
12
|
var ua = navigator.userAgent;
|
|
13
13
|
// Define some regular expressions to match different browsers and their versions
|
|
14
14
|
var regexes = [
|
|
15
|
-
//
|
|
16
|
-
/(?<name>
|
|
15
|
+
// Edge
|
|
16
|
+
/(?<name>Edge|Edg)\/(?<version>\d+(?:\.\d+)?)/,
|
|
17
|
+
// Chrome, Chromium, Opera, Vivaldi, Brave, etc.
|
|
18
|
+
/(?<name>(?:Chrome|Chromium|OPR|Opera|Vivaldi|Brave))\/(?<version>\d+(?:\.\d+)?)/,
|
|
17
19
|
// Firefox, Waterfox, etc.
|
|
18
20
|
/(?<name>(?:Firefox|Waterfox|Iceweasel|IceCat))\/(?<version>\d+(?:\.\d+)?)/,
|
|
19
21
|
// Safari, Mobile Safari, etc.
|
|
@@ -25,14 +27,21 @@ function getBrowser() {
|
|
|
25
27
|
// Samsung internet browser
|
|
26
28
|
/(?<name>SamsungBrowser)\/(?<version>\d+(?:\.\d+)?)/
|
|
27
29
|
];
|
|
30
|
+
// Define a map for browser name translations
|
|
31
|
+
var browserNameMap = {
|
|
32
|
+
'Edg': 'Edge',
|
|
33
|
+
'OPR': 'Opera'
|
|
34
|
+
};
|
|
28
35
|
// Loop through the regexes and try to find a match
|
|
29
36
|
for (var _i = 0, regexes_1 = regexes; _i < regexes_1.length; _i++) {
|
|
30
37
|
var regex = regexes_1[_i];
|
|
31
38
|
var match = ua.match(regex);
|
|
32
39
|
if (match && match.groups) {
|
|
40
|
+
// Translate the browser name if necessary
|
|
41
|
+
var name_1 = browserNameMap[match.groups.name] || match.groups.name;
|
|
33
42
|
// Return the browser name and version
|
|
34
43
|
return {
|
|
35
|
-
name:
|
|
44
|
+
name: name_1,
|
|
36
45
|
version: match.groups.version
|
|
37
46
|
};
|
|
38
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../src/components/system/browser.ts"],"names":[],"mappings":";;;AAME,2FAA2F;AAC7F,SAAgB,UAAU;IACxB,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE,CAAC;QACrC,OAAO;YACL,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,SAAS;SACnB,CAAA;IACH,CAAC;IACC,IAAM,EAAE,GAAG,SAAS,CAAC,SAAS,CAAA;IAC9B,iFAAiF;IACjF,IAAM,OAAO,GAAG;QACd,
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../src/components/system/browser.ts"],"names":[],"mappings":";;;AAME,2FAA2F;AAC7F,SAAgB,UAAU;IACxB,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE,CAAC;QACrC,OAAO;YACL,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,SAAS;SACnB,CAAA;IACH,CAAC;IACC,IAAM,EAAE,GAAG,SAAS,CAAC,SAAS,CAAA;IAC9B,iFAAiF;IACjF,IAAM,OAAO,GAAG;QACd,OAAO;QACP,8CAA8C;QAC9C,gDAAgD;QAChD,iFAAiF;QACjF,0BAA0B;QAC1B,2EAA2E;QAC3E,8BAA8B;QAC9B,4CAA4C;QAC5C,qCAAqC;QACrC,4DAA4D;QAC5D,2DAA2D;QAC3D,+CAA+C;QAC/C,2BAA2B;QAC3B,oDAAoD;KACrD,CAAC;IAEF,6CAA6C;IAC7C,IAAM,cAAc,GAA8B;QAChD,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,OAAO;KACf,CAAC;IAEF,mDAAmD;IACnD,KAAoB,UAAO,EAAP,mBAAO,EAAP,qBAAO,EAAP,IAAO,EAAE,CAAC;QAAzB,IAAM,KAAK,gBAAA;QACd,IAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YAC1B,0CAA0C;YAC1C,IAAM,MAAI,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;YACpE,sCAAsC;YACtC,OAAO;gBACL,IAAI,EAAE,MAAI;gBACV,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO;aAC9B,CAAC;QACJ,CAAC;IACH,CAAC;IAED,uCAAuC;IACvC,OAAO;QACL,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,SAAS;KACnB,CAAC;AACJ,CAAC;AAnDH,gCAmDG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function imageDataToDataURL(imageData: ImageData): string;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.imageDataToDataURL = void 0;
|
|
4
|
+
function imageDataToDataURL(imageData) {
|
|
5
|
+
var canvas = document.createElement('canvas');
|
|
6
|
+
var context = canvas.getContext('2d');
|
|
7
|
+
if (!context) {
|
|
8
|
+
throw new Error('Canvas context not supported');
|
|
9
|
+
}
|
|
10
|
+
canvas.width = imageData.width;
|
|
11
|
+
canvas.height = imageData.height;
|
|
12
|
+
context.putImageData(imageData, 0, 0);
|
|
13
|
+
return canvas.toDataURL();
|
|
14
|
+
}
|
|
15
|
+
exports.imageDataToDataURL = imageDataToDataURL;
|
|
16
|
+
//# sourceMappingURL=imageDataToDataURL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"imageDataToDataURL.js","sourceRoot":"","sources":["../../src/utils/imageDataToDataURL.ts"],"names":[],"mappings":";;;AAAA,SAAgB,kBAAkB,CAAC,SAAoB;IACnD,IAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChD,IAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAExC,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;IAC/B,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;IAEjC,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAEtC,OAAO,MAAM,CAAC,SAAS,EAAE,CAAC;AAC9B,CAAC;AAdD,gDAcC"}
|