@thumbmarkjs/thumbmarkjs 1.5.1 → 1.6.1
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 +4 -4
- package/dist/thumbmark.cjs.js +1 -1
- package/dist/thumbmark.cjs.js.map +1 -1
- package/dist/thumbmark.esm.d.ts +19 -2
- package/dist/thumbmark.esm.js +1 -1
- package/dist/thumbmark.esm.js.map +1 -1
- package/dist/thumbmark.umd.js +1 -1
- package/dist/thumbmark.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/functions/api.test.ts +71 -0
- package/src/functions/api.ts +49 -5
- package/src/functions/index.ts +2 -3
- package/src/options.test.ts +10 -0
- package/src/options.ts +30 -4
- package/src/utils/cache.test.ts +94 -0
- package/src/utils/cache.ts +59 -0
- package/src/utils/visitorId.test.ts +12 -3
- package/src/utils/visitorId.ts +31 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thumbmark.umd.js","sources":["../src/options.ts","../src/components/audio/index.ts","../src/utils/commonPixels.ts","../src/utils/hash.ts","../src/components/canvas/index.ts","../src/utils/ephemeralIFrame.ts","../src/components/fonts/index.ts","../src/components/hardware/index.ts","../src/components/math/index.ts","../src/utils/getMostFrequent.ts","../src/components/permissions/index.ts","../src/components/system/browser.ts","../src/components/screen/index.ts","../src/components/system/index.ts","../src/components/webgl/index.ts","../src/utils/stableStringify.ts","../src/components/mathml/index.ts","../src/factory.ts","../src/components/locales/index.ts","../src/components/plugins/index.ts","../src/components/webrtc/index.ts","../src/components/speech/index.ts","../src/utils/version.ts","../src/functions/filterComponents.ts","../src/utils/visitorId.ts","../src/functions/api.ts","../src/functions/index.ts","../src/utils/log.ts","../src/utils/raceAll.ts","../src/thumbmark.ts","../src/functions/legacy_functions.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["DEFAULT_API_ENDPOINT","defaultOptions","exclude","include","stabilize","logging","timeout","cache_api_call","performance","experimental","options","stabilizationExclusionRules","private","browsers","iframe","vpn","calculateHash","samples","hash","i","length","Math","abs","getCommonPixels","images","width","height","finalData","data","indice","u","push","getMostFrequent","pixelArray","Uint8ClampedArray","ImageData","arr","frequencyMap","num","mostFrequent","parseInt","fmix","input","imul","C","Uint32Array","rotl","m","n","key","seed","text","TextEncoder","encode","buffer","ArrayBuffer","TypeError","blocks","byteLength","view32","k","subarray","body","reminder","tail","Uint8Array","finalize","byteArray","Array","from","map","byte","toString","padStart","join","_WIDTH","async","ephemeralIFrame","callback","document","wait","createElement","setAttribute","style","setProperty","src","appendChild","iframeDocument","contentDocument","_a","contentWindow","undefined","Error","setTimeout","removeChild","durationMs","resolveWith","Promise","resolve","availableFonts","baseFonts","measureSingleFont","ctx","font","measureText","getVideoCard","canvas","gl","getContext","vendor","getParameter","VENDOR","renderer","RENDERER","result","version","VERSION","shadingLanguageVersion","SHADING_LANGUAGE_VERSION","debugInfo","getExtension","vendorUnmasked","UNMASKED_VENDOR_WEBGL","rendererUnmasked","UNMASKED_RENDERER_WEBGL","error","getArchitecture","f","Float32Array","u8","Infinity","integrate","a","b","h","sum","mostFrequentValuesInArrayOfDictionaries","keys","forEach","mostFrequentValueForKey","element","String","highestFrequency","Object","mostFrequentValue","obj","filter","val","defaultPermissionKeys","getBrowser","navigator","name","ua","userAgent","regexes","browserNameMap","edg","edga","edgios","opr","opx","crios","fxios","samsung","vivaldi","brave","regex","match","groups","_b","_c","version1","_d","version2","_e","_f","source","includes","toLowerCase","isMobileUserAgent","test","matchMedias","results","mediaQueries","pointer","hover","update","scripting","value","matchMedia","matches","getApplePayVersion","window","location","protocol","ApplePaySession","versionCheck","supportsVersion","_RUNS","stableStringify","seen","stringify","node","toJSON","isFinite","JSON","out","isArray","indexOf","seenIndex","sort","splice","BLACKBOARD_BOLD","GREEK_SYMBOLS","createMathML","content","createComplexNestedStructure","nestedContent","bbSymbol","bbIndex","startIdx","greekSet","slice","createSymbolStructures","structures","tm_component_promises","audio","reject","sampleRate","numSamples","audioContext","OfflineAudioContext","webkitOfflineAudioContext","audioBuffer","createBufferSource","oscillator","createOscillator","frequency","compressor","createDynamicsCompressor","threshold","knee","ratio","attack","release","connect","destination","start","oncomplete","event","renderedBuffer","getChannelData","sampleHash","maxChannels","maxChannelCount","channelCountMode","startRendering","console","createAudioFingerprint","imageDatas","gradient","createLinearGradient","addColorStop","fillStyle","fillRect","randomText","fillText","beginPath","moveTo","lineTo","strokeStyle","lineWidth","stroke","imageData","getImageData","generateCanvasImageData","commonPixelsHash","fonts","defaultWidths","fontWidth","hardware","deviceMemory","memoryInfo","memory","videocard","architecture","jsHeapSizeLimit","locales","languages","language","timezone","Intl","DateTimeFormat","resolvedOptions","timeZone","math","acos","asin","cos","PI","largeCos","largeSin","sin","largeTan","tan","permissions","permission_keys","permissions_to_check","all","permissionStatus","feature","status","query","state","getBrowserPermissionsOnce","plugins","plugin","filename","description","screen","is_touchscreen","maxTouchPoints","colorDepth","mediaMatches","w","longer","max","shorter","min","screenResolution","system","browser","platform","productSub","product","useragent","hardwareConcurrency","mobile","applePayVersion","cookieEnabled","webgl","vertexShaderSource","fragmentShaderSource","vertexShader","createShader","VERTEX_SHADER","fragmentShader","FRAGMENT_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","useProgram","numSpokes","vertices","angleIncrement","angle","vertexBuffer","createBuffer","bindBuffer","ARRAY_BUFFER","bufferData","STATIC_DRAW","positionAttribute","getAttribLocation","enableVertexAttribArray","vertexAttribPointer","FLOAT","viewport","clearColor","clear","COLOR_BUFFER_BIT","drawArrays","LINES","pixelData","readPixels","RGBA","UNSIGNED_BYTE","drawingBufferWidth","drawingBufferHeight","createWebGLImageData","tm_experimental_component_promises","webrtc","RTCPeerConnection","webkitRTCPeerConnection","mozRTCPeerConnection","supported","connection","iceCandidatePoolSize","iceServers","createDataChannel","offerOptions","offerToReceiveAudio","offerToReceiveVideo","offer","createOffer","setLocalDescription","sdp","extensions","Set","x","replace","getDescriptors","mediaType","RegExp","split","constructDescriptions","descriptors","descriptor","matcher","matchAll","_","type","parts","mimeType","clockRate","channels","feedbackSupport","sdpFmtpLine","Boolean","audioCodecs","videoCodecs","compressedData","count","video","extensionsHash","resolveResult","removeEventListener","onIceCandidate","close","candidateObj","candidate","clearTimeout","candidateType","addEventListener","details","message","processOffer","mathml","testElement","innerHTML","position","visibility","rect","getBoundingClientRect","isMathMLSupported","dimensionsArray","fontStyleHash","struct","measurement","mathElement","whiteSpace","top","computedStyle","defaultView","getComputedStyle","measurements","dimensions","fontInfo","fontFamily","fontSize","fontWeight","fontStyle","lineHeight","fontVariant","fontStretch","fontSizeAdjust","textRendering","fontFeatureSettings","fontVariantNumeric","fontKerning","measureMathMLStructure","speech","speechSynthesis","getVoices","voicesResolved","timeoutHandle","processVoices","voices","voiceSignatures","voice","escapeValue","voiceURI","lang","localService","default","voiceCount","voicesHash","onVoicesChanged","customComponents","timeoutInstance","includeComponent","creationFunction","getVersion","filterThumbmarkData","browserInfo","browserComponent","ver","majorVer","excludeList","stabilizationOptions","includeList","option","rules","rule","appliesToAllBrowsers","browserMatch","some","browserRule","ruleName","ruleVersionStr","ruleVersion","performFilter","currentObj","path","entries","currentPath","isExcluded","exclusion","startsWith","isIncluded","inclusion","filtered","DEFAULT_STORAGE_PROPERTY_NAME","currentApiPromise","apiPromiseResult","getApiPromise","components","endpoint","api_endpoint","visitorId","_options","storagePropertyName","storage_property_name","localStorage","getItem","getVisitorId","requestBody","clientHash","fetchPromise","fetch","method","headers","api_key","Authorization","then","response","ok","json","setItem","setVisitorId","catch","timeoutMs","timeoutPromise","info","timed_out","race","getThumbmark","shouldLog","sessionStorage","random","allComponents","elapsed","resolvedComponents","clientComponentsResult","resolveClientComponents","experimentalComponents","experimentalElapsed","expElapsed","apiPromise","apiResult","thumbmark","allElapsed","maybeElapsed","apiComponents","uniqueness","score","log","thisHash","thumbmarkData","experimentalData","url","payload","pathname","logThumbmarkData","comps","opts","e","promises","fn","resolvedValues","timeoutTime","timeoutVal","p","startTime","now","t","raceAllPerformance","resolvedComponentsRaw","index","constructor","this","get","overrideOptions","globalIncludeComponent","includeData"],"mappings":"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AAA3E,EAAO4E,qBAAeC,IAAAF,OAAAE,EAAAF,EAAAV,UACvE,IAAKQ,EACH,MAAM,IAAIK,MAAM,qCAIlBd,EAAS,CAAEhE,OAAQyE,IAGnBM,YAAW,KACTd,SAASjB,KAAKgC,YAAYhF,EAAO,GAChC,EACL,CAEgB,SAAAkE,EAAee,EAAoBC,GACjD,OAAO,IAAIC,SAASC,GAAYL,WAAWK,EAASH,EAAYC,IAClE,CC5BF,MAAMG,EAAiB,CACnB,QACA,cACA,eACA,mBACA,QACA,UACA,SACA,aACA,SACA,UACA,UACA,QACA,UACA,UACA,iBACA,gBACA,aACA,UACA,cACA,eACA,UACA,UACA,mBACA,gBACA,QACA,aACA,MACA,YACA,YACA,yBACA,WACA,SACA,UACA,YACA,YACA,SACA,cACA,eACA,QACA,eACA,QACA,OACA,SACA,gBACA,iBACA,sBACA,UACA,eACA,oBACA,aACA,SACA,YACA,SACA,cACA,YACA,SACA,WACA,SACA,WACA,WACA,WACA,UACA,WACA,UACA,SACA,cACA,YACA,WACA,YACA,SACA,mBACA,WACA,QACA,cACA,eACA,WACA,OACA,kBACA,aACA,SACA,UACA,QACA,kBACA,gBACA,eACA,SACA,eACA,UACA,aAGIC,EAAY,CAAC,YAAa,aAAc,SAsChD,SAASC,EAAkBC,EAAsCC,GAC7D,IAAKD,EACD,MAAM,IAAIV,MAAM,gCAIpB,OADAU,EAAIC,KAAO,QAAQA,IACZD,EAAIE,YAFU,cAEQ/E,KACjC,CC9HA,SAASgF,UACL,MAAMC,EAAS3B,SAASE,cAAc,UAChC0B,EAA+B,QAA1BlB,EAAAiB,EAAOE,WAAW,gBAAQjB,IAAAF,EAAAA,EAAIiB,EAAOE,WAAW,sBAE3D,GAAID,GAAM,iBAAkBA,EACxB,IAEI,MAAME,GAAUF,EAAGG,aAAaH,EAAGI,SAAW,IAAIvC,WAC5CwC,GAAYL,EAAGG,aAAaH,EAAGM,WAAa,IAAIzC,WAEtD,IAAI0C,EAA6B,CAC7BL,OAAQA,EACRG,SAAUA,EACVG,SAAUR,EAAGG,aAAaH,EAAGS,UAAY,IAAI5C,WAC7C6C,w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"}
|
|
1
|
+
{"version":3,"file":"thumbmark.umd.js","sources":["../src/options.ts","../src/components/audio/index.ts","../src/utils/commonPixels.ts","../src/utils/hash.ts","../src/components/canvas/index.ts","../src/utils/ephemeralIFrame.ts","../src/components/fonts/index.ts","../src/components/hardware/index.ts","../src/components/math/index.ts","../src/utils/getMostFrequent.ts","../src/components/permissions/index.ts","../src/components/system/browser.ts","../src/components/screen/index.ts","../src/components/system/index.ts","../src/components/webgl/index.ts","../src/utils/stableStringify.ts","../src/components/mathml/index.ts","../src/factory.ts","../src/components/locales/index.ts","../src/components/plugins/index.ts","../src/components/webrtc/index.ts","../src/components/speech/index.ts","../src/utils/version.ts","../src/functions/filterComponents.ts","../src/utils/visitorId.ts","../src/utils/cache.ts","../src/functions/api.ts","../src/functions/index.ts","../src/utils/log.ts","../src/utils/raceAll.ts","../src/thumbmark.ts","../src/functions/legacy_functions.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["MAXIMUM_CACHE_LIFETIME","DEFAULT_STORAGE_PREFIX","DEFAULT_API_ENDPOINT","defaultOptions","exclude","include","stabilize","logging","timeout","cache_api_call","cache_lifetime_in_ms","performance","experimental","property_name_factory","name","options","stabilizationExclusionRules","private","browsers","iframe","vpn","calculateHash","samples","hash","i","length","Math","abs","getCommonPixels","images","width","height","finalData","data","indice","u","push","getMostFrequent","pixelArray","Uint8ClampedArray","ImageData","arr","frequencyMap","num","mostFrequent","parseInt","fmix","input","imul","C","Uint32Array","rotl","m","n","key","seed","text","TextEncoder","encode","buffer","ArrayBuffer","TypeError","blocks","byteLength","view32","k","subarray","body","reminder","tail","Uint8Array","finalize","byteArray","Array","from","map","byte","toString","padStart","join","_WIDTH","async","ephemeralIFrame","callback","document","wait","createElement","setAttribute","style","setProperty","src","appendChild","iframeDocument","contentDocument","_a","contentWindow","undefined","Error","setTimeout","removeChild","durationMs","resolveWith","Promise","resolve","availableFonts","baseFonts","measureSingleFont","ctx","font","measureText","getVideoCard","canvas","gl","getContext","vendor","getParameter","VENDOR","renderer","RENDERER","result","version","VERSION","shadingLanguageVersion","SHADING_LANGUAGE_VERSION","debugInfo","getExtension","vendorUnmasked","UNMASKED_VENDOR_WEBGL","rendererUnmasked","UNMASKED_RENDERER_WEBGL","error","getArchitecture","f","Float32Array","u8","Infinity","integrate","a","b","h","sum","mostFrequentValuesInArrayOfDictionaries","keys","forEach","mostFrequentValueForKey","element","String","highestFrequency","Object","mostFrequentValue","obj","filter","val","defaultPermissionKeys","getBrowser","navigator","ua","userAgent","regexes","browserNameMap","edg","edga","edgios","opr","opx","crios","fxios","samsung","vivaldi","brave","regex","match","groups","_b","_c","version1","_d","version2","_e","_f","source","includes","toLowerCase","isMobileUserAgent","test","matchMedias","results","mediaQueries","pointer","hover","update","scripting","value","matchMedia","matches","getApplePayVersion","window","location","protocol","ApplePaySession","versionCheck","supportsVersion","_RUNS","stableStringify","seen","stringify","node","toJSON","isFinite","JSON","out","isArray","indexOf","seenIndex","sort","splice","BLACKBOARD_BOLD","GREEK_SYMBOLS","createMathML","content","createComplexNestedStructure","nestedContent","bbSymbol","bbIndex","startIdx","greekSet","slice","createSymbolStructures","structures","tm_component_promises","audio","reject","sampleRate","numSamples","audioContext","OfflineAudioContext","webkitOfflineAudioContext","audioBuffer","createBufferSource","oscillator","createOscillator","frequency","compressor","createDynamicsCompressor","threshold","knee","ratio","attack","release","connect","destination","start","oncomplete","event","renderedBuffer","getChannelData","sampleHash","maxChannels","maxChannelCount","channelCountMode","startRendering","console","createAudioFingerprint","imageDatas","gradient","createLinearGradient","addColorStop","fillStyle","fillRect","randomText","fillText","beginPath","moveTo","lineTo","strokeStyle","lineWidth","stroke","imageData","getImageData","generateCanvasImageData","commonPixelsHash","fonts","defaultWidths","fontWidth","hardware","deviceMemory","memoryInfo","memory","videocard","architecture","jsHeapSizeLimit","locales","languages","language","timezone","Intl","DateTimeFormat","resolvedOptions","timeZone","math","acos","asin","cos","PI","largeCos","largeSin","sin","largeTan","tan","permissions","permission_keys","permissions_to_check","all","permissionStatus","feature","status","query","state","getBrowserPermissionsOnce","plugins","plugin","filename","description","screen","is_touchscreen","maxTouchPoints","colorDepth","mediaMatches","w","longer","max","shorter","min","screenResolution","system","browser","platform","productSub","product","useragent","hardwareConcurrency","mobile","applePayVersion","cookieEnabled","webgl","vertexShaderSource","fragmentShaderSource","vertexShader","createShader","VERTEX_SHADER","fragmentShader","FRAGMENT_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","shaderProgram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","useProgram","numSpokes","vertices","angleIncrement","angle","vertexBuffer","createBuffer","bindBuffer","ARRAY_BUFFER","bufferData","STATIC_DRAW","positionAttribute","getAttribLocation","enableVertexAttribArray","vertexAttribPointer","FLOAT","viewport","clearColor","clear","COLOR_BUFFER_BIT","drawArrays","LINES","pixelData","readPixels","RGBA","UNSIGNED_BYTE","drawingBufferWidth","drawingBufferHeight","createWebGLImageData","tm_experimental_component_promises","webrtc","RTCPeerConnection","webkitRTCPeerConnection","mozRTCPeerConnection","supported","connection","iceCandidatePoolSize","iceServers","createDataChannel","offerOptions","offerToReceiveAudio","offerToReceiveVideo","offer","createOffer","setLocalDescription","sdp","extensions","Set","x","replace","getDescriptors","mediaType","RegExp","split","constructDescriptions","descriptors","descriptor","matcher","matchAll","_","type","parts","mimeType","clockRate","channels","feedbackSupport","sdpFmtpLine","Boolean","audioCodecs","videoCodecs","compressedData","count","video","extensionsHash","resolveResult","removeEventListener","onIceCandidate","close","candidateObj","candidate","clearTimeout","candidateType","addEventListener","details","message","processOffer","mathml","testElement","innerHTML","position","visibility","rect","getBoundingClientRect","isMathMLSupported","dimensionsArray","fontStyleHash","struct","measurement","mathElement","whiteSpace","top","computedStyle","defaultView","getComputedStyle","measurements","dimensions","fontInfo","fontFamily","fontSize","fontWeight","fontStyle","lineHeight","fontVariant","fontStretch","fontSizeAdjust","textRendering","fontFeatureSettings","fontVariantNumeric","fontKerning","measureMathMLStructure","speech","speechSynthesis","getVoices","voicesResolved","timeoutHandle","processVoices","voices","voiceSignatures","voice","escapeValue","voiceURI","lang","localService","default","voiceCount","voicesHash","onVoicesChanged","customComponents","timeoutInstance","includeComponent","creationFunction","getVersion","filterThumbmarkData","browserInfo","browserComponent","ver","majorVer","excludeList","stabilizationOptions","includeList","option","rules","rule","appliesToAllBrowsers","browserMatch","some","browserRule","ruleName","ruleVersionStr","ruleVersion","performFilter","currentObj","path","entries","currentPath","isExcluded","exclusion","startsWith","isIncluded","inclusion","filtered","DEFAULT_STORAGE_PROPERTY_NAME","getVisitorIdPropertyName","_options","storage_property_name","DEFAULT_VISITOR_ID_NAME","setVisitorId","visitorId","localStorage","setItem","CACHE_KEY","getCache","rawCache","getItem","jsonCache","parse","getApiResponseExpiry","Date","now","currentApiPromise","apiPromiseResult","getApiPromise","components","cached","cache","apiResponse","apiResponseExpiry","getCachedApiResponse","endpoint","api_endpoint","propertyName","getVisitorId","requestBody","clientHash","fetchPromise","fetch","method","headers","api_key","Authorization","then","response","ok","json","values","newValues","setCache","setCachedApiResponse","catch","timeoutMs","timeoutPromise","info","timed_out","race","getThumbmark","shouldLog","sessionStorage","random","allComponents","elapsed","resolvedComponents","clientComponentsResult","resolveClientComponents","experimentalComponents","experimentalElapsed","expElapsed","apiPromise","apiResult","thumbmark","allElapsed","maybeElapsed","apiComponents","uniqueness","score","thisHash","thumbmarkData","experimentalData","url","payload","pathname","logThumbmarkData","comps","opts","e","promises","fn","resolvedValues","timeoutTime","timeoutVal","p","startTime","t","raceAllPerformance","resolvedComponentsRaw","index","constructor","this","get","overrideOptions","globalIncludeComponent","includeData"],"mappings":"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AOuE,IAAM,cACbN,SAASjB,KAAKwB,YAAYxE,GAE1B,MAAMyE,EAAiBzE,EAAO0E,kBAAyC,QAAtBC,EAAA3E,EAAO4E,qBAAeC,IAAAF,OAAAE,EAAAF,EAAAV,UACvE,IAAKQ,EACH,MAAM,IAAIK,MAAM,qCAIlBd,EAAS,CAAEhE,OAAQyE,IAGnBM,YAAW,KACTd,SAASjB,KAAKgC,YAAYhF,EAAO,GAChC,EACL,CAEgB,SAAAkE,EAAee,EAAoBC,GACjD,OAAO,IAAIC,SAASC,GAAYL,WAAWK,EAASH,EAAYC,IAClE,CC5BF,MAAMG,EAAiB,CACnB,QACA,cACA,eACA,mBACA,QACA,UACA,SACA,aACA,SACA,UACA,UACA,QACA,UACA,UACA,iBACA,gBACA,aACA,UACA,cACA,eACA,UACA,UACA,mBACA,gBACA,QACA,aACA,MACA,YACA,YACA,yBACA,WACA,SACA,UACA,YACA,YACA,SACA,cACA,eACA,QACA,eACA,QACA,OACA,SACA,gBACA,iBACA,sBACA,UACA,eACA,oBACA,aACA,SACA,YACA,SACA,cACA,YACA,SACA,WACA,SACA,WACA,WACA,WACA,UACA,WACA,UACA,SACA,cACA,YACA,WACA,YACA,SACA,mBACA,WACA,QACA,cACA,eACA,WACA,OACA,kBACA,aACA,SACA,UACA,QACA,kBACA,gBACA,eACA,SACA,eACA,UACA,aAGIC,EAAY,CAAC,YAAa,aAAc,SAsChD,SAASC,EAAkBC,EAAsCC,GAC7D,IAAKD,EACD,MAAM,IAAIV,MAAM,gCAIpB,OADAU,EAAIC,KAAO,QAAQA,IACZD,EAAIE,YAFU,cAEQ/E,KACjC,CC9HA,SAASgF,UACL,MAAMC,EAAS3B,SAASE,cAAc,UAChC0B,EAA+B,QAA1BlB,EAAAiB,EAAOE,WAAW,gBAAQjB,IAAAF,EAAAA,EAAIiB,EAAOE,WAAW,sBAE3D,GAAID,GAAM,iBAAkBA,EACxB,IAEI,MAAME,GAAUF,EAAGG,aAAaH,EAAGI,SAAW,IAAIvC,WAC5CwC,GAAYL,EAAGG,aAAaH,EAAGM,WAAa,IAAIzC,WAEtD,IAAI0C,EA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"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import {apiResponse, getCachedApiResponse, setCachedApiResponse} from "./api";
|
|
2
|
+
import { defaultOptions } from "../options";
|
|
3
|
+
import {getCache, setCache} from "../utils/cache";
|
|
4
|
+
|
|
5
|
+
const options = {
|
|
6
|
+
...defaultOptions,
|
|
7
|
+
cache_lifetime_in_ms: 100,
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const apiResponse = {
|
|
11
|
+
identifier: 'test'
|
|
12
|
+
} as apiResponse;
|
|
13
|
+
|
|
14
|
+
describe('setCachedApiResponse', () => {
|
|
15
|
+
beforeEach(() => {
|
|
16
|
+
localStorage.clear();
|
|
17
|
+
})
|
|
18
|
+
|
|
19
|
+
test('it should write the apiResponse to the cache if options allow that', () => {
|
|
20
|
+
setCachedApiResponse(options, apiResponse);
|
|
21
|
+
expect(getCache(options).apiResponse).toEqual(apiResponse);
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
test('it should not write if cache if off', () => {
|
|
25
|
+
setCachedApiResponse({
|
|
26
|
+
...options,
|
|
27
|
+
cache_api_call: false,
|
|
28
|
+
}, apiResponse);
|
|
29
|
+
|
|
30
|
+
expect(getCache(options).apiResponse).not.toBeDefined();
|
|
31
|
+
expect(getCache(options).apiResponseExpiry).not.toBeDefined();
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
test('it should not write if lifetime is 0', () => {
|
|
35
|
+
setCachedApiResponse({
|
|
36
|
+
...options,
|
|
37
|
+
cache_lifetime_in_ms: 0
|
|
38
|
+
}, apiResponse);
|
|
39
|
+
|
|
40
|
+
expect(getCache(options).apiResponse).not.toBeDefined();
|
|
41
|
+
expect(getCache(options).apiResponseExpiry).not.toBeDefined();
|
|
42
|
+
});
|
|
43
|
+
})
|
|
44
|
+
|
|
45
|
+
describe('getCachedApiResponse', () => {
|
|
46
|
+
beforeEach(() => {
|
|
47
|
+
localStorage.clear();
|
|
48
|
+
})
|
|
49
|
+
|
|
50
|
+
test('it should get from the cache if a value exists there', () => {
|
|
51
|
+
setCache(options, {
|
|
52
|
+
apiResponseExpiry: Date.now() + 2000000,
|
|
53
|
+
apiResponse,
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
const cached = getCachedApiResponse(options);
|
|
57
|
+
expect(cached).toBeDefined();
|
|
58
|
+
expect(cached).toEqual(apiResponse);
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
test('it should not return an expiried cache', () => {
|
|
62
|
+
setCache(options, {
|
|
63
|
+
apiResponseExpiry: Date.now() - 2000,
|
|
64
|
+
apiResponse,
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
const cached = getCachedApiResponse(options);
|
|
68
|
+
expect(cached).not.toBeDefined();
|
|
69
|
+
})
|
|
70
|
+
|
|
71
|
+
})
|
package/src/functions/api.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { optionsInterface, DEFAULT_API_ENDPOINT } from '../options';
|
|
1
|
+
import { optionsInterface, DEFAULT_API_ENDPOINT, OptionsAfterDefaults} from '../options';
|
|
2
2
|
import { componentInterface } from '../factory';
|
|
3
3
|
import { getVisitorId, setVisitorId } from '../utils/visitorId';
|
|
4
4
|
import { getVersion } from "../utils/version";
|
|
5
5
|
import { hash } from '../utils/hash';
|
|
6
6
|
import { stableStringify } from '../utils/stableStringify';
|
|
7
|
+
import { getCache, getApiResponseExpiry, setCache } from "../utils/cache";
|
|
7
8
|
|
|
8
9
|
// ===================== Types & Interfaces =====================
|
|
9
10
|
|
|
@@ -33,7 +34,7 @@ export interface infoInterface {
|
|
|
33
34
|
/**
|
|
34
35
|
* API response structure
|
|
35
36
|
*/
|
|
36
|
-
interface apiResponse {
|
|
37
|
+
export interface apiResponse {
|
|
37
38
|
info?: infoInterface;
|
|
38
39
|
version?: string;
|
|
39
40
|
components?: componentInterface;
|
|
@@ -51,12 +52,21 @@ let apiPromiseResult: apiResponse | null = null;
|
|
|
51
52
|
* Returns a promise for the API response or null on error.
|
|
52
53
|
*/
|
|
53
54
|
export const getApiPromise = (
|
|
54
|
-
options:
|
|
55
|
+
options: OptionsAfterDefaults,
|
|
55
56
|
components: componentInterface
|
|
56
57
|
): Promise<apiResponse | null> => {
|
|
57
58
|
// 1. If a result is already cached and caching is enabled, return it.
|
|
58
|
-
if (options.cache_api_call
|
|
59
|
-
|
|
59
|
+
if (options.cache_api_call) {
|
|
60
|
+
// Check the in-memory cache
|
|
61
|
+
if(apiPromiseResult) {
|
|
62
|
+
return Promise.resolve(apiPromiseResult);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Check the localStorage cache
|
|
66
|
+
const cached = getCachedApiResponse(options);
|
|
67
|
+
if(cached) {
|
|
68
|
+
return Promise.resolve(cached);
|
|
69
|
+
}
|
|
60
70
|
}
|
|
61
71
|
|
|
62
72
|
// 2. If a request is already in flight, return that promise to prevent duplicate calls.
|
|
@@ -103,6 +113,7 @@ export const getApiPromise = (
|
|
|
103
113
|
setVisitorId(data.visitorId, options);
|
|
104
114
|
}
|
|
105
115
|
apiPromiseResult = data; // Cache the successful result
|
|
116
|
+
setCachedApiResponse(options, data); // Cache to localStorage according to options
|
|
106
117
|
currentApiPromise = null; // Clear the in-flight promise
|
|
107
118
|
return data;
|
|
108
119
|
})
|
|
@@ -131,3 +142,36 @@ export const getApiPromise = (
|
|
|
131
142
|
currentApiPromise = Promise.race([fetchPromise, timeoutPromise]);
|
|
132
143
|
return currentApiPromise;
|
|
133
144
|
};
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* If a valid cached api response exists, returns it
|
|
148
|
+
* @param options
|
|
149
|
+
*/
|
|
150
|
+
export function getCachedApiResponse(
|
|
151
|
+
options: Pick<OptionsAfterDefaults, 'property_name_factory'>,
|
|
152
|
+
): apiResponse | undefined {
|
|
153
|
+
const cache = getCache(options);
|
|
154
|
+
if (cache && cache.apiResponse && cache.apiResponseExpiry && Date.now() <= cache.apiResponseExpiry) {
|
|
155
|
+
return cache.apiResponse;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Writes the api response to the cache according to the options
|
|
163
|
+
* @param options
|
|
164
|
+
* @param response
|
|
165
|
+
*/
|
|
166
|
+
export function setCachedApiResponse(
|
|
167
|
+
options: Pick<OptionsAfterDefaults, 'cache_api_call' | 'cache_lifetime_in_ms' | 'property_name_factory'>, response: apiResponse
|
|
168
|
+
): void {
|
|
169
|
+
if(!options.cache_api_call || !options.cache_lifetime_in_ms) {
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
setCache(options, {
|
|
174
|
+
apiResponseExpiry: getApiResponseExpiry(options),
|
|
175
|
+
apiResponse: response,
|
|
176
|
+
});
|
|
177
|
+
}
|
package/src/functions/index.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import {
|
|
9
|
+
import {defaultOptions, OptionsAfterDefaults, optionsInterface} from "../options";
|
|
10
10
|
import {
|
|
11
11
|
timeoutInstance,
|
|
12
12
|
componentInterface,
|
|
@@ -45,7 +45,7 @@ interface thumbmarkResponse {
|
|
|
45
45
|
* @returns thumbmarkResponse (elapsed is present only if options.performance is true)
|
|
46
46
|
*/
|
|
47
47
|
export async function getThumbmark(options?: optionsInterface): Promise<thumbmarkResponse> {
|
|
48
|
-
const _options = { ...defaultOptions, ...options };
|
|
48
|
+
const _options = { ...defaultOptions, ...options } as OptionsAfterDefaults;
|
|
49
49
|
|
|
50
50
|
// Early logging decision
|
|
51
51
|
const shouldLog = (_options.logging && !sessionStorage.getItem("_tmjs_l") && Math.random() < 0.0001);
|
|
@@ -92,7 +92,6 @@ export async function getThumbmark(options?: optionsInterface): Promise<thumbmar
|
|
|
92
92
|
const info: infoInterface = apiResult?.info || { uniqueness: { score: 'api only' } };
|
|
93
93
|
|
|
94
94
|
// Use API thumbmark if available to ensure API/client sync, otherwise calculate locally
|
|
95
|
-
console.log(apiResult);
|
|
96
95
|
const thumbmark = apiResult?.thumbmark ?? hash(stableStringify(components));
|
|
97
96
|
const version = getVersion();
|
|
98
97
|
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { DEFAULT_STORAGE_PREFIX, defaultOptions } from "./options";
|
|
2
|
+
|
|
3
|
+
describe('property_name_factory', () => {
|
|
4
|
+
test('it should default to the default value', () => {
|
|
5
|
+
const name = 'mykey';
|
|
6
|
+
expect(
|
|
7
|
+
defaultOptions.property_name_factory(name)
|
|
8
|
+
).toEqual(`${DEFAULT_STORAGE_PREFIX}_${name}`);
|
|
9
|
+
})
|
|
10
|
+
})
|
package/src/options.ts
CHANGED
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
export interface
|
|
1
|
+
export interface OptionsAfterDefaults {
|
|
2
|
+
/**
|
|
3
|
+
* A function to customise localStorage names used by thumbmark
|
|
4
|
+
* @param name Original name of the storage property eg. visitor_id
|
|
5
|
+
* @returns The name under which the storage property should be saved eg. myprefix_visitor_id
|
|
6
|
+
*/
|
|
7
|
+
property_name_factory: (name: string) => string,
|
|
8
|
+
/**
|
|
9
|
+
* @deprecated use property_name_factory
|
|
10
|
+
*/
|
|
2
11
|
storage_property_name?: string,
|
|
3
12
|
exclude?: string[],
|
|
4
13
|
include?: string[],
|
|
@@ -7,32 +16,49 @@ export interface optionsInterface {
|
|
|
7
16
|
logging?: boolean,
|
|
8
17
|
api_key?: string,
|
|
9
18
|
api_endpoint?: string,
|
|
19
|
+
/**
|
|
20
|
+
* @deprecated This will be removed in Thumbmarkjs 2.0, use cache_lifetime_in_ms instead
|
|
21
|
+
*/
|
|
10
22
|
cache_api_call?: boolean,
|
|
23
|
+
/**
|
|
24
|
+
* How long the cache will be valid for, maximum is 72h (259_200_000)
|
|
25
|
+
*/
|
|
26
|
+
cache_lifetime_in_ms: number,
|
|
11
27
|
performance?: boolean,
|
|
12
28
|
stabilize?: string[],
|
|
13
29
|
experimental?: boolean,
|
|
14
30
|
}
|
|
15
31
|
|
|
32
|
+
export type optionsInterface = Partial<OptionsAfterDefaults>;
|
|
33
|
+
|
|
34
|
+
// Default to zero to avoid breaking existing integrations
|
|
35
|
+
export const DEFAULT_CACHE_LIFETIME = 0;
|
|
36
|
+
export const MAXIMUM_CACHE_LIFETIME = 259_200_000;
|
|
37
|
+
export const DEFAULT_STORAGE_PREFIX = 'thumbmark';
|
|
16
38
|
export const DEFAULT_API_ENDPOINT = 'https://api.thumbmarkjs.com';
|
|
17
39
|
|
|
18
|
-
export const defaultOptions:
|
|
40
|
+
export const defaultOptions: OptionsAfterDefaults = {
|
|
19
41
|
exclude: [],
|
|
20
42
|
include: [],
|
|
21
43
|
stabilize: ['private', 'iframe'],
|
|
22
44
|
logging: true,
|
|
23
45
|
timeout: 5000,
|
|
24
46
|
cache_api_call: true,
|
|
47
|
+
cache_lifetime_in_ms: DEFAULT_CACHE_LIFETIME,
|
|
25
48
|
performance: false,
|
|
26
49
|
experimental: false,
|
|
50
|
+
property_name_factory: (name: string) => {
|
|
51
|
+
return `${DEFAULT_STORAGE_PREFIX}_${name}`;
|
|
52
|
+
},
|
|
27
53
|
};
|
|
28
54
|
|
|
29
|
-
export let options = { ...defaultOptions };
|
|
55
|
+
export let options: OptionsAfterDefaults = { ...defaultOptions };
|
|
30
56
|
/**
|
|
31
57
|
*
|
|
32
58
|
* @param key @deprecated this function will be removed
|
|
33
59
|
* @param value
|
|
34
60
|
*/
|
|
35
|
-
export function setOption<K extends keyof optionsInterface>(key: K, value:
|
|
61
|
+
export function setOption<K extends keyof optionsInterface>(key: K, value: OptionsAfterDefaults[K]) {
|
|
36
62
|
options[key] = value;
|
|
37
63
|
}
|
|
38
64
|
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { Cache, getCache, setCache, getApiResponseExpiry, CACHE_KEY } from "./cache";
|
|
2
|
+
import { DEFAULT_STORAGE_PREFIX, defaultOptions, MAXIMUM_CACHE_LIFETIME } from "../options";
|
|
3
|
+
|
|
4
|
+
const _options = {
|
|
5
|
+
property_name_factory: (name: string) => {
|
|
6
|
+
return `${name}-mypostfix`;
|
|
7
|
+
},
|
|
8
|
+
cache_lifetime_in_ms: 0,
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
const values: Cache = {
|
|
12
|
+
apiResponseExpiry: 100,
|
|
13
|
+
apiResponse: {
|
|
14
|
+
version: '1.2.3',
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
const cacheProperty = defaultOptions.property_name_factory(CACHE_KEY);
|
|
19
|
+
const customCacheProperty = _options.property_name_factory(CACHE_KEY);
|
|
20
|
+
|
|
21
|
+
describe('getCache', () => {
|
|
22
|
+
beforeEach(() => {
|
|
23
|
+
localStorage.clear();
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
test('it should return all values from cache', () => {
|
|
27
|
+
localStorage.setItem(cacheProperty, JSON.stringify(values));
|
|
28
|
+
const fromStorage = getCache(defaultOptions);
|
|
29
|
+
|
|
30
|
+
expect(fromStorage).toEqual(values);
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
test('it should return an empty object in case of nothing cached', () => {
|
|
34
|
+
expect(getCache(defaultOptions)).toEqual({});
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
test('it should return an empty object in case non-json content', () => {
|
|
38
|
+
localStorage.setItem(cacheProperty, 'abc123');
|
|
39
|
+
expect(getCache(defaultOptions)).toEqual({});
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
test('it should return from the correct property', () => {
|
|
43
|
+
localStorage.setItem(cacheProperty, JSON.stringify(values));
|
|
44
|
+
|
|
45
|
+
expect(getCache(_options)).toEqual({});
|
|
46
|
+
expect(getCache(defaultOptions)).toEqual(values);
|
|
47
|
+
});
|
|
48
|
+
})
|
|
49
|
+
|
|
50
|
+
describe('setCache', () => {
|
|
51
|
+
beforeEach(() => {
|
|
52
|
+
localStorage.clear();
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
test('it should write given values', () => {
|
|
56
|
+
setCache(defaultOptions, values);
|
|
57
|
+
expect(JSON.parse(localStorage.getItem(cacheProperty)!))
|
|
58
|
+
.toEqual(values);
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
test('it should not touch values that are not provided', () => {
|
|
62
|
+
setCache(_options, values);
|
|
63
|
+
setCache(_options, {
|
|
64
|
+
apiResponseExpiry: 200
|
|
65
|
+
});
|
|
66
|
+
const fromStorage = JSON.parse(localStorage.getItem(customCacheProperty)!) as Cache;
|
|
67
|
+
expect(fromStorage.apiResponseExpiry).toEqual(200);
|
|
68
|
+
expect(fromStorage.apiResponse!.version).toEqual(values.apiResponse!.version);
|
|
69
|
+
})
|
|
70
|
+
})
|
|
71
|
+
|
|
72
|
+
describe('getApiResponseExpiry', () => {
|
|
73
|
+
const systemTime = 1000;
|
|
74
|
+
beforeAll(() => {
|
|
75
|
+
jest.useFakeTimers().setSystemTime(systemTime);
|
|
76
|
+
localStorage.clear();
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
test('it should return a value based on options', () => {
|
|
80
|
+
expect(getApiResponseExpiry({
|
|
81
|
+
cache_lifetime_in_ms: 100,
|
|
82
|
+
})).toBe(systemTime + 100);
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
test('it should not go over maximum cache lifetime', () => {
|
|
86
|
+
expect(getApiResponseExpiry({
|
|
87
|
+
cache_lifetime_in_ms: MAXIMUM_CACHE_LIFETIME + 200,
|
|
88
|
+
})).toBe(systemTime + MAXIMUM_CACHE_LIFETIME);
|
|
89
|
+
})
|
|
90
|
+
|
|
91
|
+
afterAll(() => {
|
|
92
|
+
jest.useRealTimers()
|
|
93
|
+
})
|
|
94
|
+
})
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { apiResponse } from "../functions/api";
|
|
2
|
+
import { MAXIMUM_CACHE_LIFETIME, OptionsAfterDefaults } from "../options";
|
|
3
|
+
|
|
4
|
+
export const CACHE_KEY = 'cache';
|
|
5
|
+
|
|
6
|
+
export interface Cache {
|
|
7
|
+
apiResponse?: apiResponse
|
|
8
|
+
apiResponseExpiry?: number;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Get all values from cache
|
|
13
|
+
* @param _options
|
|
14
|
+
*/
|
|
15
|
+
export function getCache(_options: Pick<OptionsAfterDefaults, 'property_name_factory'>): Cache {
|
|
16
|
+
try {
|
|
17
|
+
const rawCache = localStorage.getItem(_options.property_name_factory(CACHE_KEY));
|
|
18
|
+
const jsonCache = JSON.parse(rawCache!);
|
|
19
|
+
if(!jsonCache) {
|
|
20
|
+
return {};
|
|
21
|
+
} else {
|
|
22
|
+
return jsonCache as Cache;
|
|
23
|
+
}
|
|
24
|
+
} catch {
|
|
25
|
+
// Ignore storage errors
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return {};
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Write given values to cache
|
|
33
|
+
* @param _options
|
|
34
|
+
* @param values
|
|
35
|
+
*/
|
|
36
|
+
export function setCache(_options: OptionsAfterDefaults, values: Partial<Cache>): void {
|
|
37
|
+
const newValues: Cache = {
|
|
38
|
+
...getCache(_options),
|
|
39
|
+
...values
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
try {
|
|
43
|
+
localStorage.setItem(_options.property_name_factory(CACHE_KEY), JSON.stringify(newValues));
|
|
44
|
+
} catch {
|
|
45
|
+
// Ignore storage errors
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Returns the expiry time for cache
|
|
51
|
+
* @param _options
|
|
52
|
+
*/
|
|
53
|
+
export function getApiResponseExpiry(_options: Pick<OptionsAfterDefaults, 'cache_lifetime_in_ms'>): number {
|
|
54
|
+
if(_options.cache_lifetime_in_ms > MAXIMUM_CACHE_LIFETIME) {
|
|
55
|
+
return Date.now() + MAXIMUM_CACHE_LIFETIME;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return Date.now() + _options.cache_lifetime_in_ms;
|
|
59
|
+
}
|